{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///tomtom.min.js","webpack:///webpack/bootstrap 5dd0c35c42011c5627d1","webpack:///./services/utils.js","webpack:////home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/leaflet/dist/leaflet.js","webpack:///./services/validators.js","webpack:///./display/map.js","webpack:///./services/converters.js","webpack:///./security/apiKeySecurity.js","webpack:///./endpoints/endpoints.js","webpack:///./common/parameterApplications.js","webpack:///./services/chain.js","webpack:///./security/apiKeyNames.js","webpack:///./rest/request/requestFactory.js","webpack:///./requester/requester.js","webpack:///./requester/analytics.js","webpack:///./model/selector.js","webpack:///./display/layers/trafficRefresher.js","webpack:///./unitFormatConverter/unitFormatConverter.js","webpack:///./config/unit/unitTypes.js","webpack:///./services/search/search.js","webpack:////home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/build/mainConfig.js","webpack:///./model/objectModel.js","webpack:///./services/popupContentGenerator/wrapable.js","webpack:///./display/svgIcon.js","webpack:///./services/worldEdge.js","webpack:///./display/layers/vector/vectorLayer.js","webpack:///./display/layers/labelsLayerMixinFactory.js","webpack:///./services/reverseGeocode/reverseGeocode.js","webpack:////home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/lodash/core.js","webpack:///./display/layers/vector/mapboxProvider.js","webpack:///./rest/utils.js","webpack:///./rest/request/requestParamsFactory.js","webpack:///./config/language/globalLocaleService.js","webpack:///./config/language/localeService.js","webpack:///./config/language/locale.js","webpack:///./config/geopolView/globalGeopolViewService.js","webpack:///./config/geopolView/geopolViewService.js","webpack:///./config/geopolView/geopolView.js","webpack:////home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/t.js/t.js","webpack:///./display/layers/tileSetTransform.js","webpack:///./config/unit/globalUnitService.js","webpack:///./config/unit/unitService.js","webpack:///./services/routing/routing.js","webpack:///./rest/routing.js","webpack:///./services/postValidators.js","webpack:///./services/reverseGeocode/types.js","webpack:///./common/searchTypes.js","webpack:///./model/geocode/geocode.js","webpack:///./widgets/controls/foldable.js","webpack:///(webpack)/buildin/global.js","webpack:///./services/staticMapImage/staticMapImageFactory.js","webpack:///./services/staticMapImage/staticMapImage.js","webpack:///./requester/urlBuilder.js","webpack:///./requester/template.js","webpack:///./services/copyrights/copyrightCaption.js","webpack:///./rest/copyright.js","webpack:///./rest/request/contentTypeConfigurer.js","webpack:///./rest/request/asyncRedirectModeCallbackFactory.js","webpack:///./config/language/languageTypesMapping.js","webpack:///./config/language/validator.js","webpack:///./config/geopolView/geopolViewsMapping.js","webpack:///./services/copyrights/copyright.js","webpack:///./model/arrayMerge.js","webpack:///./display/messageBox.js","webpack:///./display/objectUtils.js","webpack:///./display/layers/trafficIncidentsLayer.js","webpack:///./services/trafficIncidents.js","webpack:///./display/layers/markers/incidentMarker.js","webpack:///./display/layers/animator.js","webpack:///./display/layers/optionsComplementor.js","webpack:///./display/layers/mapTheme.js","webpack:///./display/utils.js","webpack:///./display/layers/tileLayer.js","webpack:///./services/routing/routingContext.js","webpack:///./services/routing/matrixParameters.js","webpack:///./services/routing/routingParameters.js","webpack:///./services/routing/commonRoutingParameters.js","webpack:///./model/routing/routing.js","webpack:///./display/mapUtils.js","webpack:///./display/layers/defaultIconsMappingProvider.js","webpack:///./services/popupContentGenerator/pointHTMLContentGenerator.js","webpack:///./model/search/searchModel.js","webpack:///./model/search/addressModel.js","webpack:///./model/search/poiModel.js","webpack:///./model/search/entryPointModel.js","webpack:///./services/reverseGeocode/reverseGeocodeBase.js","webpack:///./model/reverseGeocode/reverseGeocode.js","webpack:///./services/reverseGeocode/reverseGeocodeParameters.js","webpack:///./services/popupContentGenerator/details/iconContent.js","webpack:///./services/popupContentGenerator/simpleSVGIcon.js","webpack:///./services/popupContentGenerator/details/addressContainer.js","webpack:///./services/popupContentGenerator/actions/actionButton.js","webpack:///./services/search/nearbySearch.js","webpack:///./model/search/search.js","webpack:///./rest/search.js","webpack:////home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/leaflet.markercluster/dist/leaflet.markercluster.js","webpack:///./model/geocode/batchGeocode.js","webpack:///./services/search/fuzzySearch.js","webpack:///./model/routing/reachableRange.js","webpack:///./widgets/controls/searchBox.js","webpack:///./widgets/controls/location.js","webpack:///./widgets/controls/distanceMeasurement/measurementRuler.js","webpack:////home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/whatwg-fetch/fetch.js","webpack:///./main.js","webpack:///./globals.js","webpack:///./polyfills.js","webpack:////home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/es6-promise/dist/es6-promise.min.js","webpack:////home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/process/browser.js","webpack:///(webpack)/buildin/module.js","webpack:///./display/imagePath.js","webpack:///./display/layers/vector/setStyleMethodModifier/mapboxSetStyleMethodModifier.js","webpack:///./requester/json.js","webpack:///./requester/errorHandlerFetch.js","webpack:///./requester/jsonp.js","webpack:////home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/aja/aja.min.js","webpack:///./requester/errorHandlerJsnop.js","webpack:///./display/layers/vector/stylesParser.js","webpack:///./display/layers/vector/setStyleMethodModifier/relativeToAbsolutePathConverter.js","webpack:////home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/mapbox-gl/dist/mapbox-gl.js","webpack:////home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/@mapbox/mapbox-gl-rtl-text/mapbox-gl-rtl-text.js.min","webpack:///./rest/request/batchRequestServiceFactory.js","webpack:///./rest/request/singleRequestServiceFactory.js","webpack:///./model/copyright/copyrightCaption.js","webpack:///./config/geopolView/validator.js","webpack:///./display/copyright.js","webpack:///./model/copyright/copyright.js","webpack:///./services/copyrights/copyrightsParameters.js","webpack:///./display/layers/trafficWithIncidents.js","webpack:///./services/trafficModelId.js","webpack:///./rest/trafficViewport.js","webpack:///./model/traffic/trafficModelId.js","webpack:///./display/layers/trafficLayer.js","webpack:///./rest/trafficIncidents.js","webpack:///./model/traffic/trafficIncidents.js","webpack:///./display/layers/markers/clusterIncidentMarker.js","webpack:///./config/unit/unit.js","webpack:///./display/layers/trafficFlowLayer.js","webpack:///./display/layers/vector/vectorTrafficFlowLayer.js","webpack:////home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/mapbox-gl-leaflet/leaflet-mapbox-gl.js","webpack:///./display/layers/vector/vectorTrafficWithIncidents.js","webpack:///./display/layers/vector/vectorTrafficIncidents.js","webpack:///./display/layers/labelsLayer.js","webpack:///./rest/request/matrixFactory.js","webpack:///./model/routing/helpers/getRouteFeature.js","webpack:///./model/routing/batchRouting.js","webpack:///./display/layerOptionsUpdater.js","webpack:///./display/layers/vector/vectorLabelsLayer.js","webpack:///./display/layers/markersLayer.js","webpack:///./display/layers/routeDrawer.js","webpack:///./model/search/modelFactory.js","webpack:///./model/search/addressRangesModel.js","webpack:///./rest/reverseGeocode.js","webpack:///./model/reverseGeocode/batchReverseGeocode.js","webpack:///./model/search/lowBandwidthSearchModel.js","webpack:///./services/popupContentGenerator/details/entryPointContent.js","webpack:///./services/popupContentGenerator/details/nameContent.js","webpack:///./services/popupContentGenerator/details/addressContent.js","webpack:///./services/popupContentGenerator/details/coordinatesContent.js","webpack:///./services/popupContentGenerator/actions/actionsGenerator.js","webpack:///./services/popupContentGenerator/actions/entryPointsButton.js","webpack:///./services/popupContentGenerator/actions/actionChooser.js","webpack:///./model/search/batchSearch.js","webpack:///./services/search/searchParameters.js","webpack:///./services/geocode/geocode.js","webpack:///./rest/geocode.js","webpack:///./services/geocode/geocodeParameters.js","webpack:///./services/structureGeocode/structuredGeocode.js","webpack:///./rest/structuredGeocode.js","webpack:///./services/structureGeocode/structureGeocodeParameters.js","webpack:///./services/reverseGeocode/crossStreetLookup.js","webpack:///./services/search/poiSearch.js","webpack:///./services/search/categorySearch.js","webpack:///./services/search/geometrySearch.js","webpack:///./services/search/lowBandwidthSearch.js","webpack:///./model/search/lowBandwidthSearch.js","webpack:///./services/search/alongRouteSearch.js","webpack:///./services/trafficFlowSegmentData.js","webpack:///./rest/flowSegmentData.js","webpack:///./services/search/additionalData.js","webpack:///./rest/additionalData.js","webpack:///./services/routing/reachableRange.js","webpack:///./model/routing/batchReachableRange.js","webpack:///./services/routing/reachableRangeParameters.js","webpack:///./services/routing/matrixRouting.js","webpack:///./model/routing/matrixRouting.js","webpack:///./widgets/controls/controlPanel.js","webpack:///./widgets/controls/languageSelector.js","webpack:///./widgets/controls/resultsList.js","webpack:///./widgets/controls/distanceMeasurement/distanceMeasurement.js","webpack:///./widgets/controls/distanceMeasurement/multiMeasurementRuler.js","webpack:///./widgets/controls/routeInputs.js","webpack:///./widgets/controls/routeInstructions.js","webpack:///./widgets/controls/unitSelector.js","webpack:///./widgets/controls/geopolViewSelector.js","webpack:///./widgets/views/markers.js","webpack:///./widgets/views/routeOnMap.js","webpack:///./widgets/views/routeSummary.js","webpack:///./widgets/views/miniMap.js","webpack:////home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/leaflet-minimap/dist/Control.MiniMap.min.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_typeof","Symbol","iterator","obj","constructor","undefined","_","isArray","isObject","val","isValidNumber","isFinite","isNonEmptyString","isString","length","numberIsNaN","isNaN","isValidValue","createInstanceChecker","classObject","cloneProperties","clonedObject","slice","getValueOrEmptyObject","value","addNewField","result","field","newFields","convertToLatLng","convertedValue","L","LatLng","latLng","lat","lon","lng","extend","src","key","isEqual","addFields","defaultFields","clone","encodeQuery","query","encodeURIComponent","encodeStringForRegex","replace","addDeprecatedProperty","sourceObj","deprecatedPropertyName","deprecatedPropertyReplacement","console","warn","pointRegex","circleRegex","debounce","context","func","wait","timeout","later","apply","arguments","clearTimeout","setTimeout","isValueNil","t","e","Array","bind","concat","_leaflet_id","ti","r","a","Math","pow","round","h","trim","u","split","options","Qt","push","toUpperCase","indexOf","join","ii","Error","window","Date","max","oi","f","si","g","ri","v","y","Mixin","ei","Events","stack","x","w","P","b","T","z","M","alt","C","Z","_a","_b","_c","_d","S","E","document","createElementNS","k","Xi","I","navigator","userAgent","toLowerCase","A","O","W","H","B","removeEventListener","Qi","te","ie","ee","pointerType","MSPOINTER_TYPE_MOUSE","ne","target","tagName","$","j","addEventListener","se","documentElement","R","D","N","oe","pointerId","re","touches","changedTouches","buttons","F","Ui","Pi","now","cancelBubble","type","ue","ae","he","U","V","G","q","K","le","event","Vi","Si","ot","Ti","st","attachEvent","detachEvent","Y","stopPropagation","originalEvent","_stopped","nt","X","J","et","preventDefault","returnValue","Q","tt","clientX","clientY","getBoundingClientRect","width","offsetWidth","height","offsetHeight","left","clientLeft","top","clientTop","it","wheelDeltaY","deltaY","deltaMode","ce","deltaX","deltaZ","wheelDelta","detail","abs","_e","relatedTarget","parentNode","timeStamp","pi","_simulatedClick","_simulated","rt","getElementById","at","style","currentStyle","defaultView","getComputedStyle","ht","createElement","className","appendChild","ut","removeChild","lt","firstChild","ct","lastChild","_t","insertBefore","dt","classList","contains","gt","RegExp","test","pt","add","ft","mt","remove","baseVal","vt","opacity","yt","filters","item","Enabled","Opacity","filter","xt","wt","pe","Oi","Lt","_leaflet_pos","Ni","Pt","bt","Tt","zt","tabIndex","Mt","ve","ye","outline","Ct","kt","St","Zt","sqrt","Rt","Uint8Array","Et","Ot","It","Se","Bt","At","min","Dt","Nt","jt","_code","Wt","geometry","coordinates","pointToLayer","coordsToLatLng","Ht","Xe","qe","Ft","tn","en","geometries","properties","Ut","Vt","qt","feature","Gt","Kt","nn","Yt","dn","Xt","Yi","fn","Jt","Ji","xn","$t","freeze","create","toString","ni","requestAnimationFrame","cancelAnimationFrame","ai","lastId","stamp","throttle","wrapNum","falseFn","formatNum","splitWords","setOptions","getParamString","template","emptyImageUrl","requestFn","cancelFn","requestAnimFrame","cancelAnimFrame","initialize","callInitHooks","__super__","statics","includes","_initHooks","_initHooksCalled","include","mergeOptions","addInitHook","hi","on","_on","off","_off","_events","ctx","_firingCount","splice","fire","listens","sourceTarget","_propagateEvent","_eventParents","once","addEventParent","removeEventParent","layer","propagatedFrom","clearAllEventListeners","addOneTimeEventListener","fireEvent","hasEventListeners","ui","li","trunc","floor","ceil","_add","subtract","_subtract","divideBy","_divideBy","multiplyBy","_multiplyBy","scaleBy","unscaleBy","_round","_floor","_ceil","_trunc","distanceTo","equals","getCenter","getBottomLeft","getTopRight","getTopLeft","getBottomRight","getSize","intersects","overlaps","isValid","_southWest","_northEast","pad","getSouthWest","getNorthEast","getNorthWest","getNorth","getWest","getSouthEast","getSouth","getEast","toBBoxString","_i","distance","wrap","wrapLatLng","toBounds","cos","PI","ci","latLngToPoint","projection","project","scale","transformation","_transform","pointToLatLng","untransform","unproject","zoom","log","LN2","getProjectedBounds","infinite","bounds","transform","wrapLng","wrapLat","wrapLatLngBounds","sin","atan2","di","MAX_LATITUDE","atan","exp","mi","fi","gi","vi","code","yi","xi","wi","Li","bi","zi","Mi","parseInt","exec","Ci","Zi","opera","Ei","ki","Ii","Ai","Bi","platform","Ri","WebKitCSSMatrix","Di","L_DISABLE_3D","ji","orientation","Wi","Hi","Fi","PointerEvent","MSPointerEvent","L_NO_TOUCH","DocumentTouch","qi","Gi","Ki","devicePixelRatio","screen","deviceXDPI","logicalXDPI","getContext","createSVGRect","innerHTML","behavior","adj","$i","ielt9","edge","webkit","android","android23","androidStock","chrome","gecko","safari","phantom","opera12","win","ie3d","webkit3d","gecko3d","any3d","mobile","mobileWebkit","mobileWebkit3d","msPointer","pointer","touch","mobileOpera","mobileGecko","retina","canvas","svg","vml","de","disableScrollPropagation","disableClickPropagation","stop","getMousePosition","getWheelDelta","fakeStop","skipped","isExternalTarget","addListener","removeListener","me","fe","ge","xe","TRANSFORM","TRANSITION","TRANSITION_END","getStyle","empty","toFront","toBack","hasClass","addClass","removeClass","setClass","getClass","setOpacity","testProp","setTransform","setPosition","getPosition","disableTextSelection","enableTextSelection","disableImageDrag","enableImageDrag","preventOutline","restoreOutline","we","run","_el","_inProgress","_duration","_easeOutPower","_startPos","_offset","_startTime","_animate","_step","_complete","_animId","_runFrame","_easeOut","Le","crs","center","minZoom","maxZoom","layers","maxBounds","renderer","zoomAnimation","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","transform3DLimit","zoomSnap","zoomDelta","trackResize","_initContainer","_initLayout","_onResize","_initEvents","setMaxBounds","_zoom","_limitZoom","setView","reset","_handlers","_layers","_zoomBoundLayers","_sizeChanged","_zoomAnimated","_createAnimProxy","_proxy","_catchTransitionEnd","_addLayers","_limitCenter","_stop","_loaded","animate","pan","duration","_tryAnimatedZoom","_tryAnimatedPan","_sizeTimer","_resetView","setZoom","zoomIn","zoomOut","setZoomAround","getZoomScale","latLngToContainerPoint","containerPointToLatLng","_getBoundsCenterZoom","getBounds","paddingTopLeft","padding","paddingBottomRight","getBoundsZoom","fitBounds","fitWorld","panTo","panBy","getZoom","_panAnim","step","_onPanTransitionStep","end","_onPanTransitionEnd","noMoveStart","_mapPane","_getMapPanePos","easeLinearity","_rawPanBy","flyTo","_flyToFrame","_move","getScaleZoom","_moveEnd","_moveStart","flyToBounds","_panInsideMaxBounds","setMinZoom","setMaxZoom","panInsideBounds","_enforcingBounds","invalidateSize","_lastCenter","debounceMoveend","oldSize","newSize","locate","_locateOptions","watch","_handleGeolocationError","message","_handleGeolocationResponse","_locationWatchId","geolocation","watchPosition","getCurrentPosition","stopLocate","clearWatch","coords","latitude","longitude","accuracy","latlng","timestamp","addHandler","enable","_containerId","_container","_clearControlPos","_clearHandlers","_panes","_renderer","createPane","_checkIfLoaded","_moved","layerPointToLatLng","_getCenterLayerPoint","getPixelBounds","getMinZoom","_layersMinZoom","getMaxZoom","_layersMaxZoom","_size","clientWidth","clientHeight","_getTopLeftPoint","getPixelOrigin","_pixelOrigin","getPixelWorldBounds","getPane","getPanes","getContainer","latLngToLayerPoint","containerPointToLayerPoint","layerPointToContainerPoint","mouseEventToContainerPoint","mouseEventToLayerPoint","mouseEventToLatLng","_onScroll","_fadeAnimated","position","_initPanes","_initControlPos","_paneRenderers","markerPane","shadowPane","_getNewPixelOrigin","pinch","_getZoomSpan","_targets","_handleDOMEvent","_onMoveEnd","_resizeRequest","scrollTop","scrollLeft","_findEventTargets","srcElement","_draggableMoved","_fireDOMEvent","_mouseEvents","getLatLng","_radius","containerPoint","layerPoint","bubblingMouseEvents","dragging","enabled","moved","boxZoom","disable","whenReady","_latLngToNewLayerPoint","_latLngBoundsToNewLayerBounds","_getCenterOffset","_getBoundsOffset","_limitOffset","_rebound","mapPane","_animatingZoom","_onZoomTransitionEnd","_destroyAnimProxy","propertyName","_nothingToAnimate","getElementsByClassName","_animateZoom","_animateToCenter","_animateToZoom","noUpdate","Pe","_map","removeControl","addControl","addTo","onAdd","_controlCorners","onRemove","_refocusOnMap","screenX","screenY","focus","be","_controlContainer","Te","collapsed","autoZIndex","hideSingleBase","sortLayers","sortFunction","_layerControlInputs","_lastZIndex","_handlingClick","_addLayer","_update","_checkDisabledLayers","_onLayerChange","_expandIfNotCollapsed","addBaseLayer","addOverlay","removeLayer","_getLayer","expand","_form","offsetTop","collapse","setAttribute","mouseenter","mouseleave","_layersLink","href","title","_baseLayersList","_separator","_overlaysList","overlay","sort","setZIndex","_addItem","display","_createRadioElement","hasLayer","defaultChecked","layerId","_onInputClick","checked","addLayer","disabled","_expand","_collapse","ze","zoomInText","zoomInTitle","zoomOutText","zoomOutTitle","_zoomInButton","_createButton","_zoomIn","_zoomOutButton","_zoomOut","_updateDisabled","_disabled","shiftKey","zoomControl","Me","maxWidth","metric","imperial","_addScales","updateWhenIdle","_mScale","_iScale","_updateScales","_updateMetric","_updateImperial","_getRoundNum","_updateScale","Ce","prefix","_attributions","attributionControl","getAttribution","addAttribution","setPrefix","removeAttribution","Layers","Zoom","Scale","Attribution","attribution","Ze","_enabled","addHooks","removeHooks","Ee","ke","Ie","mousedown","touchstart","pointerdown","MSPointerDown","Ae","Be","clickTolerance","_element","_dragStartTarget","_preventOutline","_onDown","_dragging","finishDrag","which","button","_moving","_startPoint","_onMove","_onUp","body","_lastTarget","SVGElementInstance","correspondingUseElement","_newPos","_animRequest","_lastEvent","_updatePosition","Oe","simplify","pointToSegmentDistance","closestPointOnSegment","clipSegment","_getEdgeIntersection","_getBitCode","_sqClosestPointOnSegment","isFlat","_flat","Re","clipPolygon","De","Ne","R_MINOR","tan","je","LonLat","Mercator","SphericalMercator","We","He","Fe","Earth","EPSG3395","EPSG3857","EPSG900913","EPSG4326","Simple","Ue","pane","removeFrom","_mapToAdd","addInteractiveTarget","removeInteractiveTarget","_layerAdd","getEvents","beforeAdd","eachLayer","_addZoomLimit","_updateZoomLevels","_removeZoomLimit","Ve","getLayerId","clearLayers","invoke","getLayer","getLayers","setStyle","bringToFront","bringToBack","Ge","popupAnchor","tooltipAnchor","createIcon","_createIcon","createShadow","_getIconUrl","_createImg","_setIconStyles","shadowAnchor","iconAnchor","marginLeft","marginTop","Ke","iconUrl","iconRetinaUrl","shadowUrl","iconSize","shadowSize","imagePath","_detectIconPath","Ye","_marker","_icon","_draggable","dragstart","_onDragStart","predrag","_onPreDrag","drag","_onDrag","dragend","_onDragEnd","_adjustPan","autoPanSpeed","autoPanPadding","DomUtil","_panRequest","_oldLatLng","closePopup","autoPan","_shadow","_latlng","oldLatLng","icon","interactive","draggable","keyboard","zIndexOffset","riseOnHover","riseOffset","_initIcon","update","_removeIcon","_removeShadow","viewreset","setLatLng","setZIndexOffset","setIcon","_popup","bindPopup","getElement","_setPos","mouseover","_bringToFront","mouseout","_resetZIndex","_updateOpacity","_initInteraction","_zIndex","_updateZIndex","zIndex","_getPopupAnchor","_getTooltipAnchor","Je","stroke","color","weight","lineCap","lineJoin","dashArray","dashOffset","fill","fillColor","fillOpacity","fillRule","getRenderer","_initPath","_reset","_addPath","_removePath","redraw","_updatePath","_updateStyle","_bringToBack","_path","_project","_clickTolerance","tolerance","$e","radius","setRadius","getRadius","_point","_updateBounds","_radiusY","_pxBounds","_updateCircle","_empty","_bounds","_containsPoint","Qe","_mRadius","acos","smoothFactor","noClip","_setLatLngs","getLatLngs","_latlngs","setLatLngs","isEmpty","closestLayerPoint","_parts","_rings","addLatLng","_defaultShape","_convertLatLngs","_projectLatlngs","_clipPoints","_simplifyPoints","_updatePoly","pop","addData","features","defaultOptions","resetStyle","onEachFeature","_setLayerStyle","toGeoJSON","toMultiPoint","sn","rn","crossOrigin","errorOverlayUrl","_url","_image","_initImage","setUrl","setBounds","zoomanim","onselectstart","onmousemove","onload","onerror","_overlayOnError","an","autoplay","loop","onloadeddata","getElementsByTagName","hn","offset","_source","_removeTimeout","getContent","_content","setContent","visibility","_updateContent","_updateLayout","isOpen","_contentNode","hasChildNodes","_getAnchor","_containerBottom","_containerLeft","_containerWidth","bottom","un","minWidth","maxHeight","autoPanPaddingTopLeft","autoPanPaddingBottomRight","keepInView","closeButton","autoClose","closeOnEscapeKey","openOn","openPopup","popup","closeOnClick","closePopupOnClick","preclick","_close","moveend","_wrapper","_tipContainer","_tip","_closeButton","_onCloseButtonClick","whiteSpace","_popupHandlersAdded","click","_openPopup","keypress","_onKeyPress","move","_movePopup","unbindPopup","togglePopup","isPopupOpen","setPopupContent","getPopup","keyCode","ln","direction","permanent","sticky","tooltip","closeTooltip","_setPosition","openTooltip","bindTooltip","_tooltip","_initTooltipInteractions","unbindTooltip","_tooltipHandlersAdded","_moveTooltip","_openTooltip","mousemove","toggleTooltip","isTooltipOpen","setTooltipContent","getTooltip","cn","html","bgPos","backgroundPosition","Default","_n","tileSize","updateWhenZooming","updateInterval","maxNativeZoom","minNativeZoom","noWrap","keepBuffer","_levels","_tiles","_removeAllTiles","_tileZoom","_setAutoZIndex","isLoading","_loading","viewprereset","_invalidateAll","createTile","getTileSize","children","current","loaded","el","active","_onOpaqueTile","_noPrune","_pruneTiles","_fadeFrame","_updateLevels","_onUpdateLevel","_removeTilesAtZoom","_onRemoveLevel","origin","_setZoomTransform","_onCreateLevel","_level","retain","_retainParent","_retainChildren","_removeTile","_tileCoordsToKey","_setView","_clampZoom","_abortLoading","_resetGrid","_setZoomTransforms","_tileSize","_globalTileRange","_pxBoundsToTileRange","_wrapX","_wrapY","_getTiledPixelBounds","_isValidTile","createDocumentFragment","_addTile","_tileCoordsToBounds","_keyToBounds","_keyToTileCoords","_tileCoordsToNwSe","tile","_initTile","WebkitBackfaceVisibility","_getTilePos","_wrapCoords","_tileReady","error","_noTilesToLoad","subdomains","errorTileUrl","zoomOffset","tms","zoomReverse","detectRetina","_onTileRemove","_tileOnLoad","_tileOnError","getTileUrl","_getSubdomain","_getZoomForUrl","getAttribute","complete","pn","defaultWmsParams","service","request","styles","format","transparent","version","uppercase","wmsParams","_crs","_wmsVersion","parseFloat","TileLayer","setParams","WMS","wms","mn","_updatePaths","_destroyContainer","_onZoom","zoomend","_onZoomEnd","_onAnimZoom","_updateTransform","_center","_onViewPreReset","_postponeUpdatePaths","_draw","_onMouseMove","_onClick","_handleMouseOut","_ctx","_redrawBounds","_redraw","_drawnLayers","translate","_updateDashArray","_order","prev","_drawLast","next","_drawFirst","_requestRedraw","_extendRedrawBounds","Number","_dashArray","_redrawRequest","_clear","clearRect","save","beginPath","rect","clip","_drawing","restore","closePath","_fillStroke","arc","globalAlpha","fillStyle","setLineDash","lineWidth","strokeStyle","_fireEvent","moving","_handleMouseHover","_hoveredLayer","gn","namespaces","vn","coordsize","_stroke","_fill","stroked","filled","dashStyle","endcap","joinstyle","_setPath","yn","zoomstart","_onZoomStart","_rootGroup","_svgSize","removeAttribute","_getPaneRenderer","preferCanvas","wn","_boundsToLatLngs","pointsToPath","geometryToLayer","coordsToLatLngs","latLngToCoords","latLngsToCoords","getFeature","asFeature","Ln","_pane","overlayPane","_resetStateTimeout","_destroy","_onMouseDown","_resetState","_clearDeferredResetState","contextmenu","mouseup","_onMouseUp","keydown","_onKeyDown","_box","_finish","boxZoomBounds","doubleClickZoom","Pn","_onDoubleClick","inertia","inertiaDeceleration","inertiaMaxSpeed","worldCopyJump","maxBoundsViscosity","bn","_onPreDragLimit","_onPreDragWrap","_positions","_times","_offsetLimit","_viscosity","_lastTime","_lastPos","_absPos","_prunePositions","shift","_initialWorldOffset","_worldWidth","_viscousLimit","keyboardPanDelta","Tn","keyCodes","right","down","up","_setPanDelta","_setZoomDelta","_onFocus","blur","_onBlur","_addHooks","_removeHooks","_focused","scrollTo","_panKeys","_zoomKeys","altKey","ctrlKey","metaKey","scrollWheelZoom","wheelDebounceTime","wheelPxPerZoomLevel","zn","_onWheelScroll","_delta","_lastMousePos","_timer","_performZoom","tap","tapTolerance","Mn","_fireClick","_holdTimeout","_isTapValid","_simulateEvent","touchmove","touchend","createEvent","initMouseEvent","dispatchEvent","touchZoom","bounceAtZoomLimits","Cn","_onTouchStart","_zooming","_centerPoint","_startLatLng","_pinchStartLatLng","_startDist","_startZoom","_onTouchMove","_onTouchEnd","BoxZoom","DoubleClickZoom","Drag","Keyboard","ScrollWheelZoom","Tap","TouchZoom","Zn","noConflict","Control","control","Browser","Evented","Util","Class","Handler","DomEvent","PosAnimation","Draggable","LineUtil","PolyUtil","Point","point","Bounds","Transformation","Projection","LatLngBounds","latLngBounds","CRS","GeoJSON","geoJSON","geoJson","Layer","LayerGroup","layerGroup","FeatureGroup","featureGroup","ImageOverlay","imageOverlay","VideoOverlay","videoOverlay","DivOverlay","Popup","Tooltip","Icon","DivIcon","divIcon","Marker","marker","tileLayer","GridLayer","gridLayer","SVG","Renderer","Canvas","Path","CircleMarker","circleMarker","Circle","circle","Polyline","polyline","Polygon","polygon","Rectangle","rectangle","Map","map","localeValidator","GeopolViewService","utils","isDateRfc3339","dateString","validateAgainstSetOfValues","arrayOfValues","messageIfNotFound","TypeError","hasBoundingBoxFields","bbox","checkBBoxNormalized","maxLat","minLat","maxLon","minLon","isNumberInInterval","numValue","checkArray","array","throwTypeErrorWhen","condition","isPointValid","checkLongitude","checkLatitude","checkPointObjectOrArray","validateNumberInInterval","errorMsg","integerRequired","isInteger","validateIntInInterval","roadUseValues","routingGuidanceLanguageValues","trafficIncidentsLanguageValues","supportedLanguageCodes","bool","Boolean","number","naturalInteger","positiveInteger","integer","boundingBox","numberInInterval","integerInInterval","string","geometriesZoom","zoomLevel","functionType","fun","countryCode","languageCode","langCode","countrySet","stringValue","match","countrySetAlpha3","allowEmpty","fuzzinessLevel","limit","plainObject","arrayType","arrayOf","values","forEach","validator","required","objectOf","roadUse","elements","oneOfValue","paramName","departAt","parse","arriveAt","dateRfc3339","routingGuidanceLanguage","trafficIncidentsLanguage","routingLocations","routingLocation","source","geometryList","geoObject","locale","serviceType","geopolView","getSupportedViews","view","route","points","supportingPoints","svgIcon","mapboxProvider","security","copyrightCaption","copyright","trafficWithIncidents","trafficFlow","vectorTrafficFlow","vectorTrafficIncidents","labelsLayer","VectorLabelsLayer","VectorLayer","UnitService","globalUnitService","LocaleService","globalLocaleService","globalGeopolViewService","RoutingContext","mapUtils","roundZoom","removeInvalidSources","currentSource","allowedSources","sourceLenght","validSource","String","getSource","defaultSource","isOlderThanIE11","copyBasePathIfNeeded","basePath","initTrafficLayer","traffic","initTrafficFlowLayer","vectorLayerAdded","initLabelsLayers","layerInstance","vectorLabelsInstance","_ttLabelsLayers","noLabelsOnTop","registerEventHandlers","raster","isMapboxSet","vector","initZoomFix","handler","original","createWebGLErrorDiv","div","createTextNode","isWebGlSupported","webGlContext","WebGLRenderingContext","resolveMapboxSupport","allowedFallbacks","fallback","isMapboxSupported","getMapOptionsWithGeopolView","mapLayer","_geopolViewService","getCurrentGeopolView","getValueFor","recreateLayer","newLayer","currentLayer","_ttBaseLayers","TomTomLayer","findLayersByName","mapLocaleChangedHandler","language","mapGeopolViewChangedHandler","getCode","initBaseLayer","tryToSetMapbox","initZoomConfig","initRoutingContext","_routingContext","cleanUp","_localeService","cleanEvents","installUnitServiceSupport","_unitService","installLocaleServiceSupport","LOCALE_CHANGED","setCurrentLocale","getCurrentLocale","getLanguageCode","installGeopolViewServiceSupport","GEOPOL_VIEW_CHANGED","setCurrentGeopolView","initHook","originalAddAttribution","attributionMarkup","setKey","go","updateEventHandler","ATTRIBUTION_LOAD_END","data","err","EVENTS","setMapSource","baseLayers","requestedLayer","baseLayer","getBaseLayers","getLocaleService","getUnitService","getGeopolViewService","Locale","isFunction","isLatLon","latlon","or","first","second","signOfNumber","normalizeLatitude","numLatitude","normalizeLongitude","numLongitude","isXY","xy","isLatitudeLongitude","isLatLonFunction","castPoint","isLatLonBBox","isRightLeftTopBottomBBox","isWestEastNorthSouthBBox","castBoundingBox","sw","normalizeBoundingBox","circleFromString","castAndNormalizePoint","convertPointOrCircle","extractPointsFromPolygon","inputPoints","convertPointToLatitudeLongitude","splitPoint","prepareSupportingPoints","trafficIncidentsLanguageMapping","routingGuidanceLanguageMapping","ca","cs","da","es","fr","hu","nl","no","pl","sk","sv","tr","defaultValue","ar","af-ZA","bg-BG","zh-TW","cs-CZ","da-DK","nl-NL","en-GB","en-US","fi-FI","fr-FR","de-DE","el-GR","hu-HU","id-ID","it-IT","ko-KR","lt-LT","ms-MY","nb-NO","pl-PL","pt-BR","pt-PT","ru-RU","sk-SK","sl-SI","es-ES","es-MX","sv-SE","th-TH","tr-TR","dateTime","toISOString","figureName","figure","vertices","__serviceType","response","optionName","converter","arrayOfStrings","queryString","arrayOfPoints","constantSpeedConsumption","avoidAreas","rectangles","area","southWestCorner","northEastCorner","Utils","checkStringType","parameter","keys","_clearKeys","setKeyForName","getKey","mainConfig","require","copyrightsWorld","copyrightsBounds","caption","geocode","batchGeocodeQuery","structuredGeocode","batchStructuredGeocodeQuery","search","batchSearch","batchSyncSearch","batchSearchQuery","adp","reverseGeocode","batchReverseGeocodeQuery","trafficIncidents","trafficViewport","flowSegmentData","incidentRegions","trafficLayer","trafficFlowLayer","routing","reachableRange","batchRoutingQuery","batchRouting","batchSyncRouting","matrixRouting","matrixSyncRouting","batchReachableRangeQuery","POST","PATH","QUERY","OTHER","geopolViewValidator","GeopolView","parameterApplications","checkIsFunction","isUndefined","chain","checkRequired","fields","fieldName","runPostValidators","callValidator","that","postValidator","createFunction","setLanguageIfNeeded","setGeopolViewIfNeeded","supportedServices","getSupportedServices","goFunction","callback","fail","JSON","stringify","application","success","Promise","resolve","reject","visible","names","batchRequestServiceFactory","singleRequestServiceFactory","single","batch","json","jsonp","useJsonp","useHttp","use","protocol","post","escapeRegExp","input","productInfo","sdkInfo","headerName","ORIGIN_URL_PATTERN","isTomtomOrigin","url","getHeaderName","getHeaderContent","setProductInfo","productId","productVersion","prodVersion","getProductInfo","addAnalyticsHeader","req","header","getAnalyticsHeader","customCreateTile","done","tileUrl","xhr","XMLHttpRequest","onreadystatechange","readyState","DONE","status","URL","createObjectURL","open","responseType","setRequestHeader","send","filterArray","filterObject","filterPrepared","handleArray","path","pathElements","trafficModelId","onTrafficUpdateCallback","refreshRate","isNotNull","_noRefresher","noRefresh","refresh","setInterval","id","clearInterval","addRefresherWithModelId","trafficModelIdCallback","onUpdateCallback","trafficModelIdService","then","effectiveOptions","enforceLeadingZero","convertMetersToYards","distanceMeters","convertMetricToMiles","formatMetricAsImperialDistance","yards","miles","formatAsMetricDistance","convertYardsToMeters","distanceYards","formatTime","seconds","secondsNum","hours","minutes","secondsFormatted","minutesFormatted","formatHourAndMinute","dateInMs","date","getHours","getMinutes","formatDistance","unitsScheme","newUnit","setCurrentUnit","newScheme","getCurrentUnit","getLabel","restSearch","model","validators","converters","worldEdge","batchModel","searchTypes","searchParams","addBoundingBoxParameters","topLeft","btmRight","callbackBestResult","bestResult","Search","searchQuery","modifiedFields","modifyFields","searchConstructor","construct","TYPES","poi","category","nearby","lowBandwidth","TYPE","batchFields","batchItems","handleBatchChain","handleChain","modifyRequestOptions","results","mapboxgl.version","sdk.version","analytics.header.name","analytics.header.sdkName","endpoints.copyrightsWorld","endpoints.copyrightsBounds","endpoints.caption","endpoints.geocode","endpoints.batchGeocodeQuery","endpoints.structuredGeocode","endpoints.batchStructuredGeocodeQuery","endpoints.search","endpoints.batchSearch","endpoints.batchSyncSearch","endpoints.batchSearchQuery","endpoints.adp","endpoints.reverseGeocode","endpoints.batchReverseGeocodeQuery","endpoints.trafficIncidents","endpoints.trafficViewport","endpoints.flowSegmentData","endpoints.incidentRegions","endpoints.trafficLayer","endpoints.trafficFlowLayer","endpoints.tileLayer","endpoints.routing","endpoints.reachableRange","endpoints.batchRouting","endpoints.batchSyncRouting","endpoints.batchRoutingQuery","endpoints.batchReachableRangeQuery","endpoints.matrixRouting","endpoints.matrixSyncRouting","endpoints.staticMapImage","vector.glyphs","vector.sprites","ObjectModel","assign","Wrapable","htmlElement","wrapFunction","_htmlElement","_wrapFunction","getHtmlElement","setNodeIconAnchorStyle","node","anchor","setNodeStyleFromStyleOption","css","setNodeStyle","backgroundSize","textAlign","verticalAlign","lineHeight","extractBackgroundToPlainSVG","clonedNode","cloneNode","getPropertyValue","decodeURIComponent","backgroundImage","concatClassNames","classNames","createDiv","parent","additionalClassName","noPlainSVG","content","createImg","img","isFile","createNode","option","background","SVGIcon","container","contentContainer","calculateBoundingBox","bBox","splitOnEdgeOfTheWorld","responseCollector","numBoundingBoxes","responses","unwrapBbox","wrappedBbox","topLeftPoint","btmRightPoint","unwrapBboxInResponse","viewport","handleBboxUnwrapping","originalCallback","getBoundingBox","boundingBoxes","boundingBoxesLength","mapboxGLLeaflet","mapTheme","ApiKeyNames","ServiceUtils","analytics","mapboxStyleLoadedEventHandler","dataType","TomTomVectorLayer","STYLE_LOAD_END","mapErrorHandler","MAP_ERROR","_glMap","_mapboxStyleLoadedEventHandler","_mapErrorHandler","triggerRepaint","updateMaxZoom","_glContainer","compare","len","edgeZIndex","Infinity","_validateUrl","pattern","_getResourcesUrls","glyphs","glyphsUrl","sprite","spriteUrl","stylesheet","updateOptions","theme","getTheme","_initializeDefaultStyleOptions","defaultStyleUrls","main","basic","hybrid","labels","night","styleUrlMapping","vectorOptions","rendererOptions","resourceUrls","accessToken","securityKeyName","preSetStyleCallback","transformRequest","headers","tomTomVectorLayer","getFlagName","baseName","getFlag","flagName","shouldAddLayer","baseLayerName","mapUseBaseLayer","mapUseTraffic","mapUseTrafficFlow","mapUseVectorTrafficFlow","mapUseVectorIncidents","shouldRemoveLayer","addIfNecessary","_attached","removeIfNecessary","layerName","reverseGeocodeBase","reverseGeocodeParams","types","ReverseGeocode","ReverseGeocodeBasePrototype","global","arrayPush","baseFindIndex","predicate","fromIndex","fromRight","index","baseProperty","baseReduce","collection","iteratee","accumulator","initAccum","eachFunc","baseValues","props","baseMap","lodash","LodashWrapper","chainAll","__wrapped__","__actions__","__chain__","assignValue","objValue","eq","baseAssignValue","baseDelay","args","FUNC_ERROR_TEXT","baseEvery","baseEach","baseExtremum","comparator","computed","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseForOwn","baseFor","baseFunctions","baseGetTag","objectToString","baseGt","other","baseIsDate","isObjectLike","dateTag","baseIsEqual","bitmask","customizer","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","arrayTag","othTag","argsTag","objectTag","objIsObj","othIsObj","isSameTag","objStack","find","entry","othStack","equalArrays","equalByTag","COMPARE_PARTIAL_FLAG","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsRegExp","regexpTag","baseIteratee","identity","baseMatches","baseLt","isArrayLike","nativeKeys","COMPARE_UNORDERED_FLAG","basePick","reduce","baseRest","start","setToString","overRest","baseSlice","copyArray","baseSome","baseWrapperValue","actions","action","thisArg","compareAscending","valIsDefined","valIsNull","valIsReflexive","othIsDefined","othIsNull","othIsReflexive","copyObject","isNew","newValue","createAssigner","assigner","sources","createCtor","Ctor","thisBinding","baseCreate","createPartial","partials","wrapper","argsIndex","argsLength","leftIndex","leftLength","isBind","WRAP_BIND_FLAG","isPartial","arrLength","othLength","seen","arrValue","othValue","compared","othIndex","tag","boolTag","numberTag","errorTag","stringTag","objProps","objLength","skipCtor","objCtor","othCtor","isArguments","isIndex","MAX_SAFE_INTEGER","reIsUint","isIterateeCall","nativeKeysIn","nativeObjectToString","nativeMax","otherArgs","compact","findIndex","toInteger","flatten","flattenDeep","INFINITY","head","isReflexive","last","interceptor","thru","wrapperValue","every","guard","size","some","sortBy","criteria","before","negate","isLength","isBoolean","nativeIsFinite","funcTag","genTag","asyncTag","proxyTag","isNumber","isNull","toArray","has","escape","reHasUnescapedHtml","reUnescapedHtml","escapeHtmlChar","matches","mixin","methodNames","isFunc","methodName","oldDash","noop","uniqueId","idCounter","htmlEscapes","&","<",">","\"","'","freeGlobal","freeSelf","self","Function","freeExports","nodeType","arrayProto","objectProto","objectCreate","propertyIsEnumerable","arg","proto","iterable","keysFunc","baseIsArguments","findIndexFunc","defer","delay","toNumber","isDate","isRegExp","assignIn","defaults","keysIn","propsIndex","propsLength","pick","paths","each","VERSION","chainName","retUnwrapped","toJSON","valueOf","tryToGetMapbox","mapbox","rtlPlugin","objectURL","isRtlPluginSet","Blob","setRTLTextPlugin","mapboxSetStyleMethodModifier","modifySetStyle","mapboxgl","setMapbox","mapboxReference","getMapbox","supported","isQueryParameter","fieldEntry","isPathParam","isPostParam","isOtherParam","getFieldEntryName","toEntry","createParamsNames","paramsFilterFunction","createQueryParamsNames","createPathParamsNames","createPostParamsNames","createOtherParamsNames","createParams","createParamNamesFunction","requestOptions","params","createPathParams","pathParams","queryParams","postParams","otherParams","languageTypesMapping","createLocaleArrays","prop","langType","langsToIgnoreInAllSelector","isNative","localeCompare","localeChangedHandler","allLocales","trafficLocales","routingLocales","searchLocales","mapsLocales","currentLocale","getLocalesFor","localeService","isValidServiceType","validServiceTypes","_languageCode","label","geopolViewsMapping","getDefaultGeopolView","defaultGeopolViewCode","_enslaveTo","subType","supportedViews","viewMapping","geopolViewService","geopolCode","fallbackValue","serviceMapping","scrub","Option","text","get_value","vars","parts","render","fragment","blockregex","__","meta","inner","if_true","has_else","if_false","temp","_key","_val","valregex","fixTileScale","Unit","unitTypes","supportedUnits","UNIT_CHANGED","currentUnit","unit","getSupportedUnits","unitService","restRouting","routingModel","batchRoutingModel","getRoutingParameters","handleRouteChain","calculateRoute","LANGUAGE","AfrikaansSouthAfrica","Arabic","Bulgarian","ChineseTaiwan","Czech","Danish","Dutch","EnglishGB","EnglishUS","Finnish","French","German","Greek","Hungarian","Indonesian","Italian","Korean","Lithuanian","Malay","Norwegian","Polish","PortugueseBrazil","PortuguesePortugal","Russian","Slovak","Slovenian","Spanish","SpanishMexico","Swedish","Thai","Turkish","serviceFunction","matrixFactory","requestFactory","endpoints","routingKeyName","calculateReachableRange","batchSync","batchReachableRange","matrix","validateIfPointsGreaterOrEqual","speedsAndConsumptions","sortedKeys","keysLength","validateFloat","consumptionPairsValidator","arr","element","pair","checkIfCorrectEngineType","vehicleEngineType","engineType","any","efficiencyParameterRequired","accelerationEfficiency","decelerationEfficiency","uphillEfficiency","downhillEfficiency","hasEfficiencyParameterSet","validateDependantParameters","paramName1","paramName2","validateEfficiencyParameters","validateTravelMode","travelMode","hasConstantSpeedConsumption","constantSpeedConsumptionInLitersPerHundredkm","constantSpeedConsumptionInkWhPerHundredkm","combustion","electric","speedPairs","vehicleWeight","floatAndEngineType","fuelEnergyDensityInMJoulesPerLiter","efficiencyParameter","chargeParameter","budgetInRange","maxBudget","currentBudgetProvided","currentChargeInkWh","energyBudgetInkWh","currentFuelInLiters","fuelBudgetInLiters","requiredBudget","timeBudgetInSec","requiredWithSpecificEngineType","consumptionInLiters","consumptionInWatts","electricEngine","notCommon","forbiddenAvoids","forbiddenModes","avoid","firstParamCannotBeUsedWithSecond","paramNameUsed","paramNameToAvoid","requiresDependantParameter","parameterName","dependantParameter","crossStreetLookup","searchAlongRoute","selector","createContainer","createCloseButton","close","image","cssText","createShowButton","show","createTitle","createFooter","footer","classes","footerBody","HTMLElement","createContentContainer","contentBody","createDomElements","_header","_show","_contentHeader","contentHeader","_contentBody","_footer","footerContainer","clearElementContent","addContent","Foldable","closeOnMapClick","responsive","fold","unfold","_setContentBodyMaxHeightRef","_setContentBodyMaxHeight","_timeout","_isCollapsed","mapRect","mapHeight","clear","addContentHeader","parentElement","eval","StaticMapImage","Security","getConfigFromMapInstance","mapInstance","config","createFromMapInstance","getStaticMapUrl","checkIfLayerSupported","SUPPORTED_IMAGE_FORMATS_PER_LAYER","checkIfBBoxAndCenterSet","checkIfBBoxAndCenterNotSet","checkIfBBoxUsedWithHeightOrWidth","validateCombineProperties","convertBBoxToString","serializeToStringIfNecessary","propertyValue","splitCenter","latLngCenter","toUrl","querySegments","segments","encodeURI","baseUrl","initConfig","createKeyValueString","mapQueryParamToKeyValueString","queryParamValue","withQueryParams","urlTemplate","restCopyright","displayKeyname","setField","copiedFields","setValue","http","callbackParam","maps","ca-ES","nl-BE","en-AU","en-NZ","en-CA","et-EE","eu-ES","fr-CA","gl-ES","he-IL","hr-HR","kk-KZ","lv-LV","NGT","NGT-Latn","no-NO","ro-RO","ru-Cyrl-RU","ru-Latn-RU","sr-RS","es-419","uk-UA","vi-VN","zh-CN","Unified","IN","IL","MA","PK","AR","reverseGeocoder","copyrightsParameters","copyrightsQuery","defaultComparator","firstArray","secondArray","MessageBox","closeable","closeAfter","messageBox","hasProperty","clusterIncidentMarker","incidentMarker","trafficRefresher","getTrafficStyle","trafficStyles","TRAFFIC_INCIDENTS_RECEIVED","TomTomTrafficIncidentsLayer","imperialDistance","_defaultPointToLayer","clusterSize","createPopupForCluster","imperialUnits","_shouldUseImperialDistance","incidentsService","trafficService","trafficRefresherIntervalId","setTrafficModelId","_getIncidentsService","serviceCall","trafficModelID","_updateMarkers","newFeaturesDictionary","IncidentMarker","setFeature","_handleResponse","diff","_request","preconfiguredIncidentsService","tomTomTrafficIncidentsLayer","restTrafficIncidents","pathField","resultFields","incidentsDetailsQuery","incidentsDetails","buildHandleChain","preserveCluster","expandCluster","originalPosition","units","trafficIncidentMessage","info","isUsingImperialUnits","lengthMeters","time","delaySeconds","incidentSeverity","iconsMapping","incidentCategory","messageTemplate","getIconOptions","font-weight","font-size","Unknown","Accident","Fog","Dangerous Conditions","Rain","Ice","Jam","Lane Closed","Road Closed","Road Works","Wind","Flooding","Detour","Cluster","previousFeature","reverse","_updateIcon","_updatePopup","popupContent","loadAnimationFactory","back","_bgBuffer","_tileContainer","fillInTiles512Options","fillInSubdomainsOptions","getMap","validateStyleOrLayer","copyFromOptionsToTheme","optionsHierarchyArray","_originalMaxZoom","animator","optionsComplementor","tileSetTransform","tileSizeEstimator","reuseTiles","urlParams","_animated","tomTomLayer","isPointProperty","pointProperties","propertyHandlerInitializer","propValue","previousValue","currentValue","_calculateRouteIfPossible","PROPERTY_VALUE_CHANGED","otherProperties","startLocation","endLocation","locations","startPoint","endPoint","jsonRoute","latLonFieldDescription","origins","destinations","fieldsToSkip","commonRoutingParameters","postValidators","routingParameters","maxAlternatives","instructionsType","computeBestOrder","routeRepresentation","computeTravelTimeFor","vehicleHeading","minDeviationDistance","minDeviationTime","sectionType","alternativeType","routeType","hilliness","windingness","report","vehicleMaxSpeed","vehicleAxleWeight","vehicleLength","MAX_VALUE","vehicleWidth","vehicleHeight","vehicleCommercial","vehicleLoadType","auxiliaryPowerInLitersPerHour","maxChargeInkWh","auxiliaryPowerInkW","avoidVignette","allowVignette","getRouteFeature","newFeatureCollection","optimizedWaypoints","routes","getRect","querySelector","modifyBoundsForRect","horizontal","vertical","axis","modifyBoundsOptions","fitBoundsOptions","controls","topOrBottom","leftOrRight","MapUtils","matchingLayers","getPaddingOptions","components","popupRect","getOwnPropertyNames","setViewWithOffset","targetLatLng","targetZoom","offsetPoint","targetPoint","offsetLatLng","defaultIcons","ACCESS_GATEWAY","ADMINISTRATIVE_DIVISION","ADVENTURE_SPORTS_VENUE","AGRICULTURE","AIRPORT","AMUSEMENT_PARK","AUTOMOTIVE_DEALER","BANK","BEACH","BUILDING_POINT","BUSINESS_PARK","CAFE_PUB","CAMPING_GROUND","CAR_WASH","CASH_DISPENSER","CASINO","CINEMA","CITY_CENTER","CLUB_ASSOCIATION","COLLEGE_UNIVERSITY","COMMERCIAL_BUILDING","COMMUNITY_CENTER","COMPANY","COURTHOUSE","CULTURAL_CENTER","DENTIST","DEPARTMENT_STORE","DOCTOR","ELECTRIC_VEHICLE_STATION","EMBASSY","EMERGENCY_MEDICAL_SERVICE","ENTERTAINMENT","EXCHANGE","EXHIBITION_CONVENTION_CENTER","FERRY_TERMINAL","FIRE_STATION_BRIGADE","FRONTIER_CROSSING","FUEL_FACILITIES","GEOGRAPHIC_FEATURE","GOLF_COURSE","GOVERNMENT_OFFICE","HEALTH_CARE_SERVICE","HELIPAD_HELICOPTER_LANDING","HOLIDAY_RENTAL","HOSPITAL_POLYCLINIC","HOTEL_MOTEL","ICE_SKATING_RINK","IMPORTANT_TOURIST_ATTRACTION","INDUSTRIAL_BUILDING","LEISURE_CENTER","LIBRARY","MANUFACTURING_FACILITY","MARINA","MARKET","MEDIA_FACILITY","MILITARY_INSTALLATION","MOTORING_ORGANIZATION_OFFICE","MOUNTAIN_PASS","MUSEUM","NATIVE_RESERVATION","NIGHTLIFE","NON_GOVERNMENTAL_ORGANIZATION","OPEN_PARKING_AREA","PARKING_GARAGE","PARK_RECREATION_AREA","PETROL_STATION","PHARMACY","PLACE_OF_WORSHIP","POLICE_STATION","PORT_WAREHOUSE_FACILITY","POST_OFFICE","PRIMARY_RESOURCE_UTILITY","PRISON_CORRECTIONAL_FACILITY","PUBLIC_AMENITY","PUBLIC_TRANSPORT_STOP","RAILWAY_STATION","RENT_A_CAR_FACILITY","RENT_A_CAR_PARKING","REPAIR_FACILITY","RESEARCH_FACILITY","RESIDENTIAL_ACCOMMODATION","RESTAURANT","RESTAURANT_AREA","REST_AREA","SCENIC_PANORAMIC_VIEW","SCHOOL","SHOP","SHOPPING_CENTER","SPORTS_CENTER","STADIUM","SWIMMING_POOL","TENNIS_COURT","THEATER","TOURIST_INFORMATION_OFFICE","TRAFFIC_LIGHT","TRAFFIC_SERVICE_CENTER","TRAFFIC_SIGN","TRAIL_SYSTEM","TRANSPORT_AUTHORITY_VEHICLE_REGISTRATION","TRUCK_STOP","VETERINARIAN","WATER_SPORT","WEIGH_STATION","WELFARE_ORGANIZATION","WINERY","ZOOS_ARBORETA_BOTANICAL_GARDEN","singleColorIcons","modelFactory","entryPointContent","nameContent","addressContent","coordinatesContent","actionsGenerator","areaContentGenerator","AREAS","ENTRYPOINT","NAME","ADDRESS","COORDINATES","ContentGenerator","ordering","address","entryPoint","details","generate","additionalData","modeledData","AddressModel","PoiModel","AddressRangesModel","EntryPointModel","addSimpleProperties","SIMPLE_PROPERTIES","addAddress","addPosition","addPoi","addAdressRanges","addressRanges","setBoundingBox","setViewport","addEntryPoints","entryPoints","SearchModel","simplifier","getAddress","restReverseGeocode","ReverseGeocodeBase","reverseGeocodeConstructor","geocodeBaseFields","spatialKeys","heading","additionalGeocodeFields","allowFreeformNewline","returnSpeedLimit","returnRoadUse","returnMatchType","crossStreetLookupFields","simpleSVGIcon","defaultIconsMappingProvider","isSingleColorIcon","poiClassification","ICONS","poiData","classificationsExist","classifications","iconName","isSingleColor","getValueOrEmptyString","addressElement","streetElement","municipalityElement","streetName","streetNumber","postalCode","municipality","clickHandler","buttonContainer","iconContainer","textContainer","NearbySearch","SearchPrototype","typeahead","searchKeyName","MarkerClusterGroup","maxClusterRadius","iconCreateFunction","clusterPane","spiderfyOnMaxZoom","showCoverageOnHover","zoomToBoundsOnClick","singleMarkerMode","disableClusteringAtZoom","removeOutsideVisibleBounds","animateAddingMarkers","spiderfyDistanceMultiplier","spiderLegPolylineOptions","chunkedLoading","chunkInterval","chunkDelay","chunkProgress","polygonOptions","_defaultIconCreateFunction","_featureGroup","_nonPointGroup","_inZoomAnimation","_needsClustering","_needsRemoving","_currentShownBounds","_queue","_childMarkerEventHandlers","_childMarkerDragStart","_childMarkerMoved","_childMarkerDragEnd","_withAnimation","_noAnimation","_markerCluster","MarkerCluster","MarkerClusterNonAnimated","addLayers","_unspiderfy","_maxZoom","_topClusterLevel","_recalculateBounds","_refreshClustersIcons","__parent","_animationAddLayer","_animationAddLayerNonAnimated","removeLayers","_unspiderfyLayer","_removeLayer","clusterShow","_arraySplice","getTime","_extractNonGroupLayers","getChildCount","getAllChildMarkers","_recursivelyAddChildrenToMap","_gridClusters","_gridUnclustered","_noanimationUnspiderfy","_generateInitialClusters","_group","zoomToShowLayer","spiderfy","zoomToBounds","_maxLat","newlatlng","_getExpandedVisibleBounds","_zoomEnd","_spiderfierOnAdd","_bindEvents","_unbindEvents","_spiderfierOnRemove","_hideCoverage","getVisibleParent","_removeFromGridUnclustered","removeObject","__dragStart","_ignoreMove","_moveChild","_markers","_childCount","_boundsNeedUpdate","_cLatLng","addObject","_childClusters","_iconNeedsUpdate","_isOrIsParent","_zoomOrSpiderfy","_showCoverage","_shownPolygon","_spiderfied","getConvexHull","_mergeSplitClusters","_recursivelyRemoveChildrenFromMap","DistanceGrid","_overrideMarkerIcon","getNearObject","_addChild","_enqueue","_queueTimeout","_processQueue","_animationStart","_animationZoomIn","_animationZoomOut","_checkBoundsMaxLat","_mapBoundsInfinite","_addToMap","_recursively","_isSingleParent","clusterHide","_forceLayout","_recursivelyBecomeVisible","_recursivelyRestoreChildPositions","_animationEnd","_animationZoomOutSingle","_recursivelyAnimateChildrenInAndAddSelfToMap","markerClusterGroup","_iconObj","_setClusterCenter","_resetBounds","_wLatLng","_backupLatlng","_recursivelyAnimateChildrenIn","_restorePosition","_cellSize","_sqCellSize","_grid","_objectPoint","_getCoord","updateObject","eachObject","_sqDist","QuickHull","getDistant","findMostDistantPointFromBaseLine","maxPoint","newPoints","buildConvexHull","_2PI","_circleFootSeparation","_circleStartAngle","_spiralFootSeparation","_spiralLengthStart","_spiralLengthFactor","_circleSpiralSwitchover","_generatePointsSpiral","_generatePointsCircle","_animationSpiderfy","unspiderfy","_animationUnspiderfy","_preSpiderfyLatlng","_spiderLeg","cluster","markers","getTotalLength","strokeDasharray","strokeDashoffset","_unspiderfyWrapper","_unspiderfyZoomStart","_unspiderfyZoomAnim","refreshClusters","_flagParentsIconsNeedUpdate","_refreshSingleMarkerModeMarkers","refreshIconOptions","geocodeModel","batchItem","FuzzySearch","minFuzzyLevel","maxFuzzyLevel","idxSet","boundary","searchService","reverseGeocodeService","location","unitFormatConverter","searchBoxEvent","createNoResults","resultsContainer","ResultCreated","locationError","clearResults","LocationError","resolveResultText","resultData","freeformAddress","locationSuccess","serviceOptions","ResultClicked","locationIcon","createCurrentLocationButton","inputContainer","LocationFound","isResultsListOpen","onMapEndDrag","reRun","lastSearchText","searchOnDragEnd","highlightNextResult","selectedElement","resultsContainerElement","newlySelectedElement","rules","38","edgeCase","nextSibling","nextAfterEdgeCase","40","onResultSelect","stopSearch","clearResultsContainer","createOnKeyDownHandler","searchBoxControl","timerId","searchOnEnterLastTime","searchOnEnterLastValue","selectedResultIndex","currentTime","currentInputValue","throttleTimePrompt","deltaTimeToNextSearch","selectedResult","ENTER","_searchResponses","ARROWUP","ARROWDOWN","getOptionsForSearch","viewportBoundingBox","disablePOIs","handleResults","_redrawResults","ResultsFound","createOnInputChangeHandler","promptSearch","SearchInputChanged","withPrompt","minNumberCharsPrompt","idleTimeKeyPress","shouldListenForDragEnd","clearSearchBox","ClearButtonClicked","clearButton","setHandlers","collapsible","createDOMElements","containerClassname","placeholder","getWordsToHighlight","words","highlightWords","regex","createResultElement","nameWrapper","addressWrapper","distanceElement","useImperial","resultElement","countryCodeISO3","dist","createResult","handleUnitChange","handleLocaleChange","definedLanguage","updateSearch","handleGeopolViewChange","definedGeopolView","ResultsCleared","ResultsDrawn","SearchBox","geopolService","informNoResults","setResultData","searchBox","getLocation","addLocationIcon","removeLocationIcon","geopolViewCode","getClassName","imageSrc","setSizeStyle","Location","cursor","MeasurementRuler","markerColor","lineColor","rulerClassname","labelClassname","distanceOffset","unitScheme","useArc","latLngs","_labels","prevLatLng","getLast","segmentDistance","_redrawPolyline","_drawMarkerWithLabel","_redrawRuler","_buildMarker","_getRenderer","_buildLabelText","_buildLabel","distanceText","_clearAllMarkersAndLabels","_buildPolyline","_calculateGreatCircleArc","rulerPolyline","output","currentLatLng","curveSegmentPath","_polylineArc","_redrawAllMarkersAndLabels","from","to","gCinterpolate","fromLat","fromLng","toLat","toLng","latInterpol","lngInterpol","arcpoints","asin","npoints","coordPair","arrArcCoords","delta","normalizeName","normalizeValue","iteratorFor","items","support","Headers","append","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","readBlobAsText","readAsText","readArrayBufferAsText","buf","chars","fromCharCode","bufferClone","byteLength","set","buffer","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","formData","FormData","_bodyFormData","URLSearchParams","arrayBuffer","isDataView","_bodyArrayBuffer","ArrayBuffer","isArrayBufferView","rejected","decode","normalizeMethod","method","upcased","methods","Request","credentials","mode","referrer","form","bytes","parseHeaders","rawHeaders","line","Response","bodyInit","ok","statusText","fetch","viewClasses","DataView","isView","oldValue","entries","redirectStatuses","redirect","RangeError","init","getAllResponseHeaders","responseURL","responseText","ontimeout","withCredentials","polyfill","tomtom","requester","tomTomMarkersLayer","fuzzySearch","poiSearch","categorySearch","geometrySearch","nearbySearch","lowBandwidthSearch","alongRouteSearch","trafficFlowSegmentData","additionalDataProvider","controlPanel","foldable","languageSelector","resultsList","distanceMeasurement","routeInputs","routeInstructions","unitSelector","geopolViewSelector","markersView","routeOnMap","routeSummary","miniMap","mapsKey","vectorMapsKey","trafficKey","trafficFlowKey","searchKey","routingKey","staticMapImage","varArgs","nextSource","nextKey","process","_state","_result","_label","_onerror","_subscribers","_instanceConstructor","_remaining","_enumerate","cast","MutationObserver","WebKitMutationObserver","Uint8ClampedArray","importScripts","MessageChannel","nextTick","observe","characterData","port1","onmessage","port2","postMessage","runOnLoop","runOnContext","random","substring","_eachEntry","_settledAt","_willSettleAt","all","race","_setScheduler","_setAsap","_asap","catch","defaultSetTimout","defaultClearTimeout","runTimeout","cachedSetTimeout","runClearTimeout","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","Item","browser","env","argv","versions","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","webpackPolyfill","deprecate","getBasePath","scripts","stylesParser","relativeToAbsolutePathConverter","requestStyle","validateAndSetStyle","styleDefinition","apiKey","styleParserOptions","fallbackResourceUrlReqex","convert","originalSetStyle","setStyleDefinition","setStyleDefinitionFromUrl","styleUrl","retrievedStyle","isTomtomStyleObjectConfig","resolveTomtomStyleUrl","styleDefinitionOrUrl","previousOriginalSetStyleFunction","urlBuilder","errorHandler","ex","setHeader","headerValue","addObjectBodyParams","bodyParams","addBodyParams","bodyParameters","performFetchRequest","requestType","reason","pathParameters","contentType","queryParameters","errHandler","aja","callbackFunction","errorResponse","prepareOptions","addQueryParams","jsonPaddingName","sync","cache","auth","user","passwd","into","querySelectorAll","jsonPadding","trigger","_xhr","onprogress","lengthComputable","total","expiredAfter","abort","async","script","setQueryParamInUrl","sourceUrl","paramValue","qPrefix","setParamInUrl","token","parseSourceUrl","parseSourceUrls","tiles","urlStr","parseSources","sourceName","newSourcesObj","convertRelativePathToAbsolute","host","toAbsoluteUrl","chunk","shared","worker","workerBundleString","sharedChunk","workerUrl","cx","bx","ax","cy","by","ay","p1x","p1y","p2x","p2y","solve","setItem","removeItem","createTexture","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","isContextLost","deleteTexture","API_URL","authority","REQUIRE_ACCESS_TOKEN","ACCESS_TOKEN","atob","charCodeAt","WorkerGlobalScope","kind","itemType","eachChild","alpha","lhs","rhs","collator","hasUntypedArgument","evaluate","possibleOutputs","serialize","er","rr","expression","parameters","nr","interpolated","ir","sr","ur","default","lr","stops","hr","pr","base","colorSpace","interpolate","forward","cr","fromString","yr","dr","enum","boolean","formatted","typeAnnotation","errors","gr","vr","mr","br","xr","_r","valueSpec","objectElementValidators","styleSpec","Gr","objectKey","wr","arrayElementValidator","$version","function","arrayIndex","Ar","minimum","maximum","Sr","kr","expressionContext","_styleExpression","propertyKey","propertyType","zr","Ir","Er","Vr","Br","Pr","Cr","Fr","Mr","Tr","Lr","filter_operator","geometry_type","Or","layerType","transition","tokens","Dr","Ur","jr","ref","__line__","paint","lineMetrics","*","layout","qr","source_geojson","clusterProperties","source_video","source_image","Rr","light","Nr","Kr","Xr","Zr","$root","constants","Hr","Yr","cells","Int32Array","subarray","bboxes","insert","_insertReadonly","extent","uid","writeable","klass","omit","shallow","_classRegistryKey","$name","deserialize","Bopomofo","Hiragana","Kanbun","Katakana","Khmer","Nn","members","jn","BYTES_PER_ELEMENT","Kn","alignment","text-opacity","icon-opacity","text-color","icon-color","text-halo-color","icon-halo-color","text-halo-blur","icon-halo-blur","text-halo-width","icon-halo-width","line-gap-width","line-pattern","fill-pattern","fill-extrusion-pattern","composite","Yn","loadGeometry","emplaceBack","ea","pa","aa","ra","sa","na","la","ia","oa","distSqr","ua","sub","_mult","ha","programConfigurations","binders","maxValue","fa","ya","_rotate","ga","va","Float32Array","xa","ba","Sa","ka","Fa","Oa","Da","Ua","Na","qa","$a","Wa","steiner","uo","ao","oo","Qa","bo","vo","ho","co","so","prevZ","nextZ","ro","eo","io","lo","fo","yo","po","mo","xo","_o","wo","Ao","So","ko","zo","patternDependencies","isConstant","constantOr","Io","patterns","mid","To","Mo","Lo","Oo","jo","qo","Go","_pbf","_geometry","_keys","_values","readFields","Xo","readVarint","pos","Zo","Yo","_features","Jo","readString","readFloat","readDouble","readVarint64","readSVarint","readBoolean","$o","Ho","is","ts","rs","os","tileTotal","ns","vs","sections","toLocaleUpperCase","toLocaleLowerCase","An","applyArabicShaping","_s","layoutSize","Sn","zoomStops","zoomRange","sizeRange","Ss","ks","Ds","Js","$s","Bytes","Ws","Qs","realloc","tu","writeVarint","eu","writeSVarint","ru","writeFloat","nu","writeDouble","iu","writeBoolean","au","writeFixed32","ou","writeSFixed32","su","writeFixed64","uu","writeSFixed64","lu","pu","cu","fu","readMessage","yu","du","bitmap","advance","ja","metrics","readBytes","gu","_u","wu","Au","Su","ku","Pu","Du","minX","minY","maxX","maxY","Uu","Gu","Xu","Zu","badness","priorBreak","Hu","getSection","fontStack","getCharCode","Nu","Ku","Yu","horizontalAlign","Ju","glyph","sampleCurveX","sampleCurveY","sampleCurveDerivativeX","solveCurveX","_sub","multByPoint","_multByPoint","divByPoint","_divByPoint","mult","_div","rotate","rotateAround","_rotateAround","matMult","_matMult","_unit","perp","_perp","mag","angle","angleTo","angleWith","angleWithSep","performance","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","msCancelAnimationFrame","frame","cancel","getImageData","drawImage","resolveURL","hardwareConcurrency","EVENTS_URL","FEEDBACK_URL","MAX_PARALLEL_IMAGE_REQUESTS","testSupport","anonId","eventData","pendingRequest","getStorageKey","btoa","fetchEventData","localStorage","getItem","saveEventData","processRequests","postEvent","created","sdkIdentifier","sdkVersion","userId","Content-Type","queueRequest","__proto__","postMapLoadEvent","postTurnstileEvent","lastSuccess","tokenU","getDate","enabled.telemetry","Style","Source","Tile","Glyphs","SpriteImage","SpriteJSON","Image","pathname","AbortController","signal","actor","getResponseHeader","requestParameters","cancelled","webkitURL","revokeObjectURL","cacheControl","expires","_listeners","_oneTimeListeners","_eventedParent","_eventedParentData","setEventedParent","metadata","bearing","period","pitch","source_vector","scheme","xyz","minzoom","maxzoom","source_raster","source_raster_dem","raster-dem","encoding","terrarium","geojson","clusterRadius","clusterMaxZoom","generateId","video","urls","symbol","heatmap","fill-extrusion","hillshade","source-layer","layout_background","none","property-type","layout_fill","layout_circle","layout_heatmap","layout_fill-extrusion","layout_line","line-cap","butt","square","line-join","bevel","miter","line-miter-limit","requires","line-round-limit","layout_symbol","symbol-placement","line-center","symbol-spacing","symbol-avoid-edges","symbol-sort-key","symbol-z-order","auto","viewport-y","icon-allow-overlap","icon-ignore-placement","icon-optional","icon-rotation-alignment","icon-size","icon-text-fit","both","icon-text-fit-padding","icon-image","icon-rotate","icon-padding","icon-keep-upright","icon-offset","icon-anchor","top-left","top-right","bottom-left","bottom-right","icon-pitch-alignment","text-pitch-alignment","text-rotation-alignment","text-field","text-font","text-size","text-max-width","text-line-height","text-letter-spacing","text-justify","text-anchor","text-max-angle","text-rotate","text-padding","text-keep-upright","text-transform","lowercase","text-offset","text-allow-overlap","text-ignore-placement","text-optional","layout_raster","layout_hillshade","==","!=",">=","<=","in","!in","!has","LineString","exponential","interval","categorical","rgb","lab","hcl","function_stop","expression_name","let","group","var","literal","case","coalesce","interpolate-hcl","interpolate-lab","ln2","typeof","number-format","to-string","to-number","to-boolean","to-rgba","to-color","rgba","feature-state","geometry-type","heatmap-density","line-progress","accumulated","+","-","/","%","^","log10","log2","!","is-supported-script","upcase","downcase","resolved-locale","intensity","paint_fill","fill-antialias","fill-opacity","fill-color","fill-outline-color","fill-translate","fill-translate-anchor","paint_fill-extrusion","fill-extrusion-opacity","fill-extrusion-color","fill-extrusion-translate","fill-extrusion-translate-anchor","fill-extrusion-height","fill-extrusion-base","fill-extrusion-vertical-gradient","paint_line","line-opacity","line-color","line-translate","line-translate-anchor","line-width","line-offset","line-blur","line-dasharray","line-gradient","paint_circle","circle-radius","circle-color","circle-blur","circle-opacity","circle-translate","circle-translate-anchor","circle-pitch-scale","circle-pitch-alignment","circle-stroke-width","circle-stroke-color","circle-stroke-opacity","paint_heatmap","heatmap-radius","heatmap-weight","heatmap-intensity","heatmap-color","heatmap-opacity","paint_symbol","icon-translate","icon-translate-anchor","text-translate","text-translate-anchor","paint_raster","raster-opacity","raster-hue-rotate","raster-brightness-min","raster-brightness-max","raster-saturation","raster-contrast","raster-resampling","linear","nearest","raster-fade-duration","paint_hillshade","hillshade-illumination-direction","hillshade-illumination-anchor","hillshade-exaggeration","hillshade-shadow-color","hillshade-highlight-color","hillshade-accent-color","paint_background","background-color","background-pattern","background-opacity","data-driven","cross-faded","cross-faded-data-driven","color-ramp","data-constant","constant","identifier","bindings","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","parseCSSColor","substr","sensitivity","Intl","Collator","usage","resolvedLocale","resolvedOptions","expectedType","font","parseColor","globals","featureState","_parseColorCache","geometryType","_evaluate","definitions","overloads","registry","scope","checkSubtype","register","caseSensitive","diacriticSensitive","boundExpression","_parse","outputs","unshift","operator","interpolation","interpolationFactor","controlPoints","inputType","cases","otherwise","outputIndex$1","branches","currency","minFractionDigits","maxFractionDigits","NumberFormat","minimumFractionDigits","maximumFractionDigits","heatmapDensity","lineProgress","LN10","filter-==","filter-id-==","filter-type-==","filter-<","filter-id-<","filter->","filter-id->","filter-<=","filter-id-<=","filter->=","filter-id->=","filter-has","filter-has-id","filter-type-in","filter-id-in","filter-in-small","filter-in-large","isSupportedScript","_warningHistory","_evaluator","_defaultValue","_enumValues","evaluateWithoutErrorHandling","isStateDependent","_interpolationType","_parameters","_specification","paintProperty","layoutProperty","Jr","$r","Wr","Qr","_forEachCell","_insertCell","_queryCell","_convertToCellCoord","_convertFromCellCoord","toArrayBuffer","ImageData","lastIntegerZoom","lastIntegerZoomTime","lastZoom","lastFloorZoom","Latin-1 Supplement","Arabic Supplement","Arabic Extended-A","Hangul Jamo","Unified Canadian Aboriginal Syllabics","Unified Canadian Aboriginal Syllabics Extended","General Punctuation","Letterlike Symbols","Number Forms","Miscellaneous Technical","Control Pictures","Optical Character Recognition","Enclosed Alphanumerics","Geometric Shapes","Miscellaneous Symbols","Miscellaneous Symbols and Arrows","CJK Radicals Supplement","Kangxi Radicals","Ideographic Description Characters","CJK Symbols and Punctuation","Hangul Compatibility Jamo","Bopomofo Extended","CJK Strokes","Katakana Phonetic Extensions","Enclosed CJK Letters and Months","CJK Compatibility","CJK Unified Ideographs Extension A","Yijing Hexagram Symbols","CJK Unified Ideographs","Yi Syllables","Yi Radicals","Hangul Jamo Extended-A","Hangul Syllables","Hangul Jamo Extended-B","Private Use Area","CJK Compatibility Ideographs","Arabic Presentation Forms-A","Vertical Forms","CJK Compatibility Forms","Small Form Variants","Arabic Presentation Forms-B","Halfwidth and Fullwidth Forms","processBidirectionalText","processStyledBidirectionalText","isLoaded","fadeDuration","zoomHistory","crossFadingFactor","getCrossfadeParameters","fromScale","toScale","kn","specification","isDataDriven","possiblyEvaluate","transitioned","Bn","untransitioned","In","_properties","defaultTransitionablePropertyValues","getValue","getTransition","setTransition","En","begin","prior","defaultTransitioningPropertyValues","hasTransition","defaultPropertyValues","Vn","defaultPossiblyEvaluatedValues","Fn","_calculate","On","Dn","Un","_featureFilter","sourceLayer","_unevaluatedLayout","_transitionablePaint","setPaintProperty","validate","setLayoutProperty","_transitioningPaint","_crossfadeParameters","getLayoutProperty","_validate","getPaintProperty","_handleSpecialPaintPropertyUpdate","isHidden","updateTransitions","recalculate","hasOffscreenPass","resize","Int8","Int8Array","Uint8","Int16","Int16Array","Uint16","Uint16Array","Int32","Uint32","Uint32Array","Float32","qn","_structArray","_pos1","_pos2","_pos4","_pos8","Rn","isTransferred","capacity","_trim","bytesPerElement","_refreshViews","reserve","uint8","Gn","int16","emplace","Xn","Hn","uint16","Jn","$n","float32","Wn","uint32","Qn","anchorPointX","anchorPointY","x1","y1","x2","y2","featureIndex","sourceLayerIndex","bucketIndex","signedDistanceFromAnchor","anchorPoint","defineProperties","anchorX","anchorY","glyphStartIndex","numGlyphs","vertexStartIndex","lineStartIndex","lineLength","segment","lowerSize","upperSize","lineOffsetX","lineOffsetY","writingMode","hidden","horizontalPlacedTextSymbolIndex","verticalPlacedTextSymbolIndex","textBoxStartIndex","textBoxEndIndex","iconBoxStartIndex","iconBoxEndIndex","numGlyphVertices","numVerticalGlyphVertices","numIconVertices","crossTileID","offsetX","getoffsetX","tileUnitDistanceFromAnchor","getx","gety","gettileUnitDistanceFromAnchor","prepareSegment","MAX_VERTEX_ARRAY_LENGTH","vertexLength","sortKey","vertexOffset","primitiveOffset","primitiveLength","destroy","vaos","simpleSegment","ids","positions","indexed","getPositions","Float64Array","gl","uniform1i","uniform1f","uniform2f","uniform3f","uniform4f","uniformMatrix4fv","uniformNames","defines","setConstantPatternPositions","populatePaintArray","updatePaintArray","upload","setUniforms","getBinding","patternPositions","patternTo","patternFrom","tlbr","paintVertexAttributes","paintVertexArray","paintVertexBuffer","updateData","createVertexBuffer","useIntegerZoom","zoomInPaintVertexArray","zoomOutPaintVertexArray","tl","zoomInPaintVertexBuffer","zoomOutPaintVertexBuffer","cacheKey","_buffers","_featureMap","_bufferOffset","createDynamic","populatePaintArrays","updatePaintArrays","getPaintVertexBuffers","getUniforms","updatePatternPaintBuffers","layoutAttributes","needsUpload","ta","overscaling","layerIds","hasPattern","layoutVertexArray","indexArray","stateDependentLayerIds","populate","addFeature","stateDependentLayers","uploadPending","uploaded","layoutVertexBuffer","indexBuffer","createIndexBuffer","Ta","createBucket","queryRadius","queryIntersectsFeature","cameraToCenterDistance","La","copy","Ra","Ka","_updateColorRamp","colorRamp","colorRampTexture","heatmapFbo","Ga","Xa","Za","Ha","Ya","Ja","deviation","holes","dimensions","Bo","indexArray2","segments2","addFeatures","indexBuffer2","Eo","Po","Vo","Co","Fo","Do","Uo","viewportFrame","Ro","No","Ko","Wo","VectorTile","VectorTileFeature","VectorTileLayer","Qo","as","addLine","mapbox_clip_start","mapbox_clip_end","e1","e2","e3","addCurrentVertex","addPieSliceVertex","ss","us","ls","ps","_updateGradient","gradient","gradientTexture","hs","fs","ys","ds","ms","gs","#","(",")",",",".",":",";","=","?","@","[","\\","]","`","{","|","}","~","¢","£","¥","¦","¬","¯","–","—","‘","’","“","”","…","‧","₩","、","。","〈","〉","《","》","「","」","『","』","【","】","〔","〕","〖","〗","!","(",")",",","-",".",":",";","<",">","?","[","]","_","{","|","}","⦅","⦆","。","「","」","xs","ws","As","zs","dynamicLayoutVertexArray","opacityVertexArray","placedSymbolArray","dynamicLayoutVertexBuffer","opacityVertexBuffer","itemSize","Is","collisionVertexArray","collisionVertexBuffer","Bs","collisionBoxArray","pixelRatio","textSizeData","iconSizeData","sortFeaturesByKey","sortFeaturesByY","sourceID","createArrays","collisionBox","collisionCircle","glyphOffsetArray","lineVertexArray","symbolInstances","calculateGlyphDependencies","charAt","iconDependencies","glyphDependencies","getValueAndResolveTokens","addToLineVertexArray","addSymbols","bl","tex","glyphOffset","_addCollisionDebugVertex","addCollisionDebugVertices","addDebugCollisionBoxes","generateCollisionDebugBuffers","_deserializeCollisionBoxesForSymbol","textBox","textFeatureIndex","textCircles","iconBox","iconFeatureIndex","deserializeCollisionBoxes","collisionArrays","hasTextData","hasIconData","hasCollisionBoxData","hasCollisionCircleData","addIndicesForPlacedTextSymbol","sortFeatures","sortedAngle","featureSortOrder","MAX_GLYPHS","addDynamicAttributes","Es","Ps","Vs","Cs","Ms","Ts","Fs","Ls","implementation","prerender","renderingMode","painter","Os","Us","paddedRect","js","displaySize","qs","iconPositions","Rs","HTMLImageElement","Ns","HTMLCanvasElement","Ks","HTMLVideoElement","Gs","Xs","texture","useMipmap","pixelStoreUnpackFlipY","pixelStoreUnpack","pixelStoreUnpackPremultiplyAlpha","premultiply","texSubImage2D","isSizePowerOfTwo","generateMipmap","LINEAR_MIPMAP_NEAREST","LINEAR","texParameteri","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","Zs","NaN","Hs","Ys","Varint","Fixed64","Fixed32","skip","readFixed32","readSFixed32","readFixed64","readSFixed64","readPackedVarint","readPackedSVarint","readPackedBoolean","readPackedFloat","readPackedDouble","readPackedFixed32","readPackedSFixed32","readPackedFixed64","readPackedSFixed64","writeTag","finish","writeString","writeBytes","writeRawMessage","writeMessage","writePackedVarint","writePackedSVarint","writePackedBoolean","writePackedFloat","writePackedDouble","writePackedFixed32","writePackedSFixed32","writePackedFixed64","writePackedSFixed64","writeBytesField","writeFixed32Field","writeSFixed32Field","writeFixed64Field","writeSFixed64Field","writeVarintField","writeSVarintField","writeStringField","writeFloatField","writeDoubleField","writeBooleanField","mu","vu","mapId","callbacks","callbackID","receive","targetMapId","sourceMapId","getWorkerSource","xu","setSouthWest","setNorthEast","_ne","bu","_sw","zu","fromLngLat","toLngLat","toAltitude","Iu","getTilePoint","Bu","canonical","Eu","overscaledZ","scaledTo","isChildOf","isLessThan","wrapped","unwrapTo","overscaleFactor","toUnwrapped","Vu","dim","stride","_unpackTerrarium","_unpackMapbox","_idx","getPixels","backfillBorder","Cu","Mu","_stringToNumber","_numberToString","encode","Tu","_vectorTileFeature","_z","_x","_y","Fu","Lu","state","stateChanges","deletedStates","updateState","removeFeatureState","getState","initializeTileState","setFeatureState","coalesceChanges","Ou","tileID","grid","grid3D","featureIndexArray","loadVTLayers","vtLayers","rawTileData","sourceLayerCoder","queryGeometry","queryPadding","cameraQueryGeometry","loadMatchingFeature","pixelPosMatrix","bucketLayerIDs","intersectionZ","lookupSymbolFeatures","ju","uses","buckets","expirationTime","hasSymbolBuckets","expiredRequestCount","registerFadeDuration","timeAdded","fadeEndTime","wasRequested","loadVectorData","hasData","unloadVectorData","latestFeatureIndex","latestRawTileData","justReloaded","imageAtlas","glyphAtlasImage","imageAtlasTexture","glyphAtlasTexture","unloadDEMData","dem","neighboringTiles","getBucket","ALPHA","queryRenderedFeatures","querySourceFeatures","_geojsonTileLayer","clearMask","maskedBoundsBuffer","maskedIndexBuffer","setMask","mask","0","patternsLoaded","setExpiryData","getExpiryTimeout","holdingForFade","symbolFadeHoldUntil","symbolFadeFinished","clearFadeHold","setHoldDuration","qu","horizontalOnly","Ru","sectionIndex","fromFeature","verticalizePunctuation","getMaxScale","9","10","11","12","13","32","createCommonjsModule","getJSON","normalizeSpriteURL","ResourceType","getImage","RGBAImage","ImagePosition","Texture","potpack","normalizeGlyphsURL","getArrayBuffer","parseGlyphPBF","asyncAll","isChar","AlphaImage","Properties","DataConstantProperty","validateLight","endsWith","emitValidationErrors","validateStyle","sphericalToCartesian","Transitionable","warnOnce","Actor","normalizeSourceURL","canonicalizeTileset","LngLatBounds","mercatorXfromLng","mercatorYfromLat","Event","ErrorEvent","normalizeTileURL","OverscaledTileID","EXTENT","MercatorCoordinate","CanonicalTileID","StructArrayLayout4i8","rasterBoundsAttributes","SegmentVector","getVideo","muted","onloadstart","ValidationError","bindAll","multiply","Color","keysDifference","SourceFeatureState","refProperties","rotateZ","evaluateSizeForZoom","uSizeT","uSize","WritingMode","transformMat4","evaluateSizeForFeature","polygonIntersectsPolygon","isMapboxURL","normalizeStyleURL","createStyleLayer","validateCustomStyleLayer","mapObject","evented","makeRequest","registerForPluginAvailability","pluginURL","completionCallback","ZoomHistory","getReferrer","createLayout","UniformMatrix4f","Uniform3f","Uniform1f","Uniform1i","Uniform2f","Uniform4f","fromRotation","transformMat3","create$1","ortho","UniformColor","clamp","StructArrayLayout2i4","StructArrayLayout2ui4","ProgramConfiguration","StructArrayLayout1ui2","StructArrayLayout3ui6","create$2","LngLat","UnwrappedTileID","perspective","rotateX","mercatorZfromAltitude","invert","ease","bezier","webpSupported","EvaluationParameters","featureFilter","Anchor","GLYPH_PBF_BORDER","distToSegmentSquared","allowsLetterSpacing","shapeText","positionedGlyphs","allowsVerticalWritingMode","shapeIcon","classifyRings","SIZE_PACK_FACTOR","SymbolBucket","CollisionBoxArray","DictionaryCoder","FeatureIndex","ImageAtlas","LineBucket","FillBucket","FillExtrusionBucket","mvt","Protobuf","DEMData","vectorTile","Point$1","pbf","createExpression","plugin","angleDelta","SQRT2","tilePixelRatio","compareText","iconsNeedLinear","compositeTextSizes","compositeIconSizes","layoutTextSize","layoutIconSize","textMaxSize","sdfIcons","sdf","boxStartIndex","boxEndIndex","rawData","RADIUS","ring","rawGeometry","tags","keycache","valuecache","parentId","numPoints","cluster_id","point_count","point_count_abbreviated","promoteId","transformed","numSimplified","numFeatures","debug","tileCoords","timeEnd","indexMaxZoom","indexMaxPoints","stats","splitTile","_geoJSONIndex","getTile","byteOffset","_layerConfigs","familiesBySource","_addLineCollisionCircles","_down","_up","peek","murmur3","murmur2","showCollisionBoxes","collectResourceTiming","returnDependencies","glyphMap","iconMap","glyphPositions","stacks","icons","getEntriesByName","mark","measure","clearMarks","clearMeasures","_marks","Performance","layerIndex","loading","loadTile","resourceTiming","reloadTile","reloadCallback","abortTile","removeTile","rawImageData","FLATTENING","POLAR_RADIUS","_feature","fromVectorTileJs","fromGeojsonVt","GeoJSONWrapper","nodeSize","range","within","trees","load","_cluster","getClusters","getChildren","getLeaves","_appendLeaves","_addTileFeatures","getClusterExpansionZoom","loadGeoJSON","loadData","_pendingCallback","abandoned","_pendingLoadDataParams","_loadData","superclusterOptions","geojsonVtOptions","removeSource","clusterId","getClusterChildren","getClusterLeaves","layerIndexes","workerSourceTypes","workerSources","demWorkerSources","registerWorkerSource","registerRTLTextPlugin","setReferrer","setLayers","getLayerIndex","updateLayers","removedIds","loadDEMTile","getDEMWorkerSource","removeDEMTile","loadWorkerSource","loadRTLTextPlugin","fontSize","cutoff","fontFamily","fontWeight","textBaseline","gridOuter","gridInner","middle","vector_layers","vectorLayers","vectorLayerIds","calculatePosMatrix","maxPitchScaleFactor","tilesIn","wrappedTileID","queryResults","getFeatureState","Worker","command","addSource","setCenter","setBearing","setPitch","setSprite","setGlyphs","setLight","setGeoJSONSourceData","lastIndexOf","setFilter","setLayerZoomRange","setLayerProperty","signedDistanceFromCamera","useVertical","notEnoughRoom","needsFlipping","tileDistance","prevTileDistance","lastSegmentViewportDistance","placed","fragmentSource","vertexSource","tileZoom","u_image","u_texsize","u_scale","u_fade","u_pixel_coord_upper","u_pixel_coord_lower","translatePosMatrix","posMatrix","useProgram","draw","TRIANGLES","LINES","colorModeForRenderPass","depthModeForSublayer","ReadOnly","activeTexture","TEXTURE0","rotating","zooming","NEAREST","program","buffers","uniformValues","atlasTexture","atlasInterpolation","isSDF","hasHalo","CLAMP_TO_EDGE","u_is_halo","drawingBufferWidth","drawingBufferHeight","stencilModeForClipping","depthRboNeedsClear","setupOffscreenDepthRenderbuffer","createFramebuffer","colorAttachment","bindFramebuffer","framebuffer","depthAttachment","depthRbo","setStencilMode","setDepthMode","LEQUAL","ReadWrite","setColorMode","viewportBuffer","quadTriangleIndexBuffer","viewportSegments","fbo","rasterBoundsBuffer","rasterBoundsSegments","TEXTURE1","demTexture","getTileTexture","needsHillshadePrepare","coveringZoomLevel","refreshedUponExpiration","mix","LINE_STRIP","debugBuffer","tileBorderIndexBuffer","debugSegments","x0","y0","dx","dy","locationPoint","reduceRight","getPrototypeOf","isSealed","isFrozen","isExtensible","getOwnPropertyDescriptor","seal","preventExtensions","terminate","webGLContextAttributes","failIfMajorPerformanceCaveat","probablySupportsContext","supportsContext","antialias","stencil","createNS","disableDrag","enableDrag","capture","suppressClick","mousePos","touchPos","mouseButton","InstallTrigger","images","requestors","atlasImage","dirty","setLoaded","_notify","addImage","removeImage","listImages","getImages","getPixelSize","getPattern","bin","_updatePatternAtlas","fillText","requestTransform","localIdeographFontFamily","setURL","getGlyphs","requests","_tinySDF","loadGlyphRange","tinySDF","TinySDF","_transitionable","_transitioning","getLight","nextRow","getDash","addDash","REPEAT","workerPool","actors","currentActor","acquire","broadcast","release","validateBounds","dispatcher","reparseOverscaled","isTileClipped","_options","_collectResourceTiming","_tileJSONRequest","_transformRequest","tileBounds","_getMapId","sourceDataType","hasTile","aborted","_refreshExpiredTiles","workerID","unloadTile","extTextureFilterAnisotropic","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","extTextureFilterAnisotropicMax","saveTileTexture","coord","_getNeighboringTiles","backfilled","_removed","_data","_resourceTiming","workerOptions","_updateWorkerData","setData","_finishLoading","updateImage","setCoordinates","_boundsArray","boundsBuffer","prepare","boundsSegments","play","paused","_hasInvalidDimensions","_playing","pause","getCanvas","order","_getAndRemoveByKey","getAndRemove","setMaxSize","createBuffer","dynamicDraw","unbindVAO","bindElementBuffer","bufferData","ELEMENT_ARRAY_BUFFER","DYNAMIC_DRAW","STATIC_DRAW","bufferSubData","deleteBuffer","attributes","bindVertexBuffer","ARRAY_BUFFER","enableAttributes","enableVertexAttribArray","setVertexAttribPointers","vertexAttribPointer","getDefault","setDefault","clearColor","clearDepth","clearStencil","colorMask","depthMask","stencilMask","ALWAYS","stencilFunc","KEEP","stencilOp","STENCIL_TEST","depthRange","DEPTH_TEST","LESS","depthFunc","BLEND","ONE","ZERO","blendFunc","blendColor","FUNC_ADD","blendEquation","CULL_FACE","BACK","cullFace","CCW","frontFace","FRAMEBUFFER","bindRenderbuffer","RENDERBUFFER","bindBuffer","vao","extVertexArrayObject","bindVertexArrayOES","pixelStorei","UNPACK_ALIGNMENT","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_FLIP_Y_WEBGL","setDirty","framebufferTexture2D","COLOR_ATTACHMENT0","framebufferRenderbuffer","DEPTH_ATTACHMENT","deleteRenderbuffer","deleteFramebuffer","depthFail","pass","blendFunction","Replace","unblended","alphaBlended","backCCW","getExtension","stencilTest","depthTest","blend","cullFaceSide","getParameter","MAX_TEXTURE_MAX_ANISOTROPY_EXT","extTextureHalfFloat","createRenderbuffer","renderbufferStorage","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","setCullFace","_sourceLoaded","_paused","reload","_sourceErrored","_cache","_unloadTile","_timers","_cacheTimers","_maxTileCacheSize","_coveredTiles","resume","_shouldReloadOnResume","_loadTile","_abortTile","getIds","getRenderableIds","_isIdRenderable","hasRenderableParent","findLoadedParent","_reloadTile","_tileLoaded","_setTileReloadTimer","_backfillDEM","getTileByID","scaleZoom","_retainLoadedChildren","updateCacheSize","handleWrapJump","_prevLng","used","getVisibleUnwrappedCoordinates","coveringTiles","maxOverzooming","maxUnderzooming","_updateRetainedTiles","_fadeDuration","releaseSymbolFadeTiles","clearTiles","getCameraQueryGeometry","pointCoordinate","getVisibleCoordinates","workers","workerCount","boxCells","circleCells","xCellCount","yCellCount","circleKeys","boxKeys","circles","xScale","yScale","boxUid","circleUid","_insertBoxCell","insertCircle","_insertCircleCell","_query","hitTest","seenUids","box","_queryCircle","_queryCellCircle","hitTestCircle","_circleAndRectCollide","_circlesCollide","_convertToXCellCoord","_convertToYCellCoord","ignoredGrid","pitchfactor","_pitch","screenRightBoundary","screenBottomBoundary","gridRightBoundary","gridBottomBoundary","placeCollisionBox","projectAndGetPerspectiveRatio","perspectiveRatio","isInsideGrid","offscreen","isOffscreen","approximateTileDistance","placeCollisionCircles","projectAnchor","cameraDistance","projectPoint","queryRenderedSymbols","bucketInstanceId","insertCollisionBox","collisionGroupID","insertCollisionCircles","skipFade","crossSourceCollisions","maxGroupID","collisionGroups","ID","collisionIndex","placements","opacities","stale","commitTime","retainedQueryData","placeLayerTile","placeLayerBucket","commit","lastPlacementChangeTime","updateLayerOpacities","updateBucketOpacities","symbolFadeChange","hasTransitions","stillRecent","setStale","_currentTileIndex","_seenCrossTileIDs","continuePlacement","placement","_currentPlacementIndex","_forceFullPlacement","_showCollisionBoxes","_done","isDone","_inProgressLayer","indexedSymbolInstances","getScaledCoordinates","findMatches","maxCrossTileID","indexes","usedCrossTileIDs","addBucket","removeBucketCrossTileIDs","removeStaleBuckets","crossTileIDs","maxBucketInstanceId","bucketsInCurrentPlacement","pruneUnusedLayers","imageManager","glyphManager","lineAtlas","crossTileSymbolIndex","sourceCaches","_resetUpdates","_rtlTextPluginCallback","sourceId","_validateLayer","loadURL","_load","loadJSON","_spriteRequest","_serializeLayers","_updatedSources","_checkLoaded","_changed","_updatedLayers","_removedLayers","_updateWorkerLayers","_reloadSource","_clearSource","_updatedPaintProps","setState","isSourceLoaded","_layerOrderChanged","_updateLayer","moveLayer","getFilter","_flattenAndSortRenderedFeatures","addSourceType","getSourceType","setSourceType","workerSourceURL","_remove","_updateSources","_generateCollisionBoxes","_updatePlacement","pauseablePlacement","_releaseSymbolFadeTiles","getResource","prelude","backgroundPattern","clippingMask","heatmapTexture","fillOutline","fillOutlinePattern","fillPattern","fillExtrusion","fillExtrusionPattern","extrusionTexture","hillshadePrepare","lineGradient","linePattern","lineSDF","symbolIcon","symbolSDF","boundProgram","boundLayoutVertexBuffer","boundPaintVertexBuffers","boundIndexBuffer","boundVertexOffset","boundDynamicVertexBuffer","boundDynamicVertexBuffer2","freshBind","numAttributes","createVertexArrayOES","currentNumAttributes","disableVertexAttribArray","deleteVertexArrayOES","createProgram","toFixed","createShader","FRAGMENT_SHADER","shaderSource","compileShader","attachShader","VERTEX_SHADER","bindAttribLocation","linkProgram","getProgramParameter","ACTIVE_ATTRIBUTES","getActiveAttrib","getAttribLocation","ACTIVE_UNIFORMS","getActiveUniform","getUniformLocation","fixedUniforms","binderUniforms","drawElements","UNSIGNED_SHORT","u_matrix","u_lightpos","u_lightintensity","u_lightcolor","u_vertical_gradient","u_height_factor","u_world","u_opacity","pixelsToGLUnits","u_camera_to_center_distance","u_scale_with_map","u_pitch_with_map","u_extrude_scale","u_pixels_to_tile_units","u_overscale_factor","u_color","u_intensity","u_color_ramp","u_latrange","u_light","u_shadow","u_highlight","u_accent","u_dimension","u_zoom","u_maxzoom","u_ratio","u_gl_units_to_pixels","u_patternscale_a","u_patternscale_b","u_sdfgamma","u_tex_y_a","u_tex_y_b","u_mix","u_tl_parent","u_scale_parent","u_buffer_scale","u_fade_t","u_image0","u_image1","u_brightness_low","u_brightness_high","u_saturation_factor","u_contrast_factor","u_spin_weights","u_is_size_zoom_constant","u_is_size_feature_constant","u_size_t","u_size","u_pitch","u_rotate_symbol","u_aspect_ratio","u_fade_change","u_label_plane_matrix","u_gl_coord_matrix","u_is_text","u_texture","u_gamma_scale","u_pattern_tl_a","u_pattern_br_a","u_pattern_tl_b","u_pattern_br_b","u_pattern_size_a","u_pattern_size_b","u_scale_a","u_scale_b","u_tile_units_to_pixels"," ","1","2","3","4","5","6","7","8","renderPass","HALF_FLOAT_OES","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","isPatternMissing","tileExtentBuffer","tileExtentSegments","custom","setCustomLayerDefaults","customLayerMatrix","setBaseState","_tileTextures","setup","numSublayers","depthEpsilon","emptyProgramConfiguration","stencilClearMode","_renderTileClippingMasks","_tileClippingMaskIDs","REPLACE","EQUAL","_showOverdrawInspector","CONSTANT_COLOR","renderLayer","showOverdrawInspector","showTileBoundaries","DEPTH_COMPONENT16","maxValidLatitude","_renderWorldCopies","_minZoom","_fov","_unmodified","_posMatrixCache","_alignedPosMatrixCache","renderWorldCopies","worldSize","centerPoint","fov","unmodified","latRange","_calcMatrices","rotationMatrix","zoomScale","zoomFraction","_constrain","setLocationAtPoint","locationCoordinate","coordinateLocation","coordinatePoint","pointLocation","pixelMatrixInverse","pixelMatrix","getMaxBounds","lngRange","alignedProjMatrix","projMatrix","mercatorMatrix","_constraining","getCameraPoint","_updateHash","_updateHashUnthrottled","_onHashChange","getHashString","getBearing","getPitch","hash","jumpTo","history","replaceState","getCanvasContainer","lngLat","_defaultPrevented","defaultPrevented","lngLats","isEnabled","isActive","_active","isZooming","_aroundCenter","around","onWheel","WheelEvent","DOM_DELTA_LINE","_lastWheelEventTime","_type","_lastValue","_onTimeout","_lastWheelEvent","_start","_frameId","_cancelRenderFrame","_finishTimeout","_around","_aroundPoint","_requestRenderFrame","_onScrollFrame","_targetZoom","_easing","_smoothOutEasing","_prevEase","easing","onMouseDown","fitScreenCoordinates","_button","_bearingSnap","bearingSnap","_pitchWithRotate","pitchWithRotate","_unbind","_deactivate","_eventButton","_inertia","_lastMoveEvent","_onDragFrame","_drainInertiaBuffer","_normalizeBearing","_inertialRotate","resetNorth","rotateTo","onTouchStart","passive","_mouseDownPos","_inertialPan","delayEndEvents","easeTo","_tapped","onDblClick","zoomTo","disableRotation","_rotationDisabled","enableRotation","onStart","_startVec","_startAround","_gestureIntent","_onEnd","_getTouchEventData","vec","_lastTouchEvent","_onTouchFrame","_startScale","_startBearing","snapToNorth","scrollZoom","dragRotate","dragPan","touchZoomRotate","cameraForBounds","_cameraForBoxAndBearing","_fitInternal","_normalizeCenter","_rotating","_pitching","_prepareEase","_easeEndTimeoutID","_ease","_fireMoveEvents","_afterEase","speed","curve","screenSpeed","maxDuration","isEasing","_easeFrameId","_onEaseFrame","_onEaseEnd","_easeStart","_easeOptions","_renderFrameCallback","getDefaultPosition","_innerContainer","_updateAttributions","_updateEditLink","_updateData","_updateCompact","_editLink","styleOwner","styleId","_hash","customAttribution","owner","_updateLogo","_logoRequired","mapbox_logo","_id","_cleared","_currentlyRunning","preserveDrawingBuffer","refreshExpiredTiles","maxTileCacheSize","_interactive","_failIfMajorPerformanceCaveat","_preserveDrawingBuffer","_trackResize","_crossSourceCollisions","_crossFadingFactor","_renderTaskQueue","_controls","_mapId","_setupContainer","_setupPainter","_onWindowOnline","_onWindowResize","logoPosition","repaint","_controlPositions","_containerDimensions","_resizeCanvas","getRenderWorldCopies","setRenderWorldCopies","isMoving","isRotating","listener","delegates","_delegatedListeners","_diffStyle","_updateDiff","isStyleLoaded","areTilesLoaded","hasImage","loadImage","_canvasContainer","_canvas","_detectMissingCSS","_missingCSSCanary","_contextLost","_contextRestored","_frame","_styleDirty","_sourcesDirty","_render","_placementDirty","_repaint","loseContext","_showTileBoundaries","_vertices","showCompass","showZoom","_compass","_compassArrow","_rotateCompassArrow","_handler","_anchor","_color","_defaultMarker","setAttributeNS","rx","ry","setDraggable","_onMapClick","_addDragHandler","getLngLat","_lngLat","setLngLat","_pos","setPopup","getOffset","setOffset","_positionDelta","pointerEvents","isDraggable","positionOptions","enableHighAccuracy","maximumAge","trackUserLocation","showUserLocation","_setupUI","permissions","_geolocationWatchID","_userLocationDotMarker","_onSuccess","_lastKnownPosition","_watchState","_geolocateButton","_updateMarker","_updateCamera","_dotElement","geolocateSource","_onError","_clearWatch","_timeoutId","_setup","setUnit","_fullscreen","_fullscreenchange","_className","_checkFullscreenSupport","_changeIcon","fullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","webkitFullscreenEnabled","_fullscreenButton","_onClickFullscreen","_isFullscreen","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","toggle","exitFullscreen","mozCancelFullScreen","msExitFullscreen","webkitCancelFullScreen","requestFullscreen","mozRequestFullScreen","msRequestFullscreen","webkitRequestFullscreen","_onClickClose","setText","setDOMContent","setHTML","_createContent","NavigationControl","GeolocateControl","AttributionControl","ScaleControl","FullscreenControl","baseApiUrl","maxParallelImageRequests","createRequestParams","contentTypeConfigurer","asyncRedirectModeCallbackFactory","maxNoOfElementsInBatchRequest","batchEndpoints","rawBatchItems","endpoint","requestParams","redirectMode","httpOptions","eventHandler","messageBoxInstance","boundEventHandler","tomtomAttribution","arrayMerge","regions","country","ISO3","coordinateParameterDefinition","trafficIncidentsLayer","TomTomTrafficWithIncidentsLayer","_trafficModelIdCallback","incidentsLayer","trafficOptions","trafficLayerWithIncidents","tomTomTrafficWithIncidentsLayer","restTrafficViewport","handleSubdomains","loadAnimation","emptyTileUrl","TomTomTrafficLayer","_requestUrl","tomTomTrafficLayer","newFeature","featureCollection","setProperty","incidentCategories","incidentSeverities","cbl","ctr","clusterBounds","op","ic","ty","dl","cpoi","clusterCoordinates","tm","compareDelays","p1","p2","d1","compareSeverity","severity","is1","is2","featuresComparator","f1","f2","severities","severityComparisonResult","formatLength","lengthInMeters","toPrecision","clusterPopupTemplate","ClusterIncidentMarker","createPopup","featuresToShow","formattedLength","incidentsNo","getTrafficFlowStyle","trafficFlowStyles","TomTomTrafficFlowLayer","tomTomTrafficFlowLayer","labelsLayerMixinFactory","TomTomVectorTrafficFlowLayer","layerSourceName","refreshIntervalToken","validateOptions","layerOptions","getLayerOptions","startRefresh","stopRefresh","opts","absolute","relative","relative-delay","getSourceCache","tomTomVectorTrafficFlowLayer","MapboxGL","_getPane","_parentPane","tilePane","_setPane","_initGL","_transitionEnd","_pinchZoom","_zoomStart","_actualCanvas","_resize","mapboxGL","TomTomVectorTrafficWithIncidentsLayer","tomTomVectorTrafficWithIncidentsLayer","replaceTrafficModelIdInUrl","vectorTilesTraffic","elem","TomTomVectorIncidentsLayer","s1","s2","s3","tomTomVectorIncidentsLayer","layeraddHandler","usingRasterTiles","totalTileLayers","childElementCount","totalOverlayLayers","TomTomLabelsLayer","labelsOptions","_layerAddHandler","tomTomLabelsLayer","matrixParameters","getOptionalBodyParams","optionalBodyParamsNames","mainPostParamsName","getBodyParams","optionalBodyParams","summary","segmentSummary","getCoordinates","isMultiLineString","legs","guidance","pushToUpdatedLayers","alreadyUpdatedLayers","getTrafficLayersToSeekFor","layersToSeek","updateTrafficLayer","updateTrafficLayers","updateLayersOptions","TomTomVectorLabelsLayer","tomTomVectorLabelsLayer","SvgIcon","objectUtils","pointHTMLContentGenerator","RouteDrawer","shouldUseSingleColorIcon","classification","isLowBandwidth","a2","hasClassification","getClassification","cst","cd","getContentForMainMarkerWithEntryPoints","entryPointOptions","addCounterToMainPoint","getMarkerIconOptions","entryPointsOptions","iconOptions","getDefaultIcon","getMarkerPosition","latLngContainer","getMarkerPopupHoverContent","popupHoverContent","getMarkerPopupContent","popupGenerator","getColor","useBlackIcons","getMarkerIcon","getEntryPointMarkerIcon","getEntryPointPopupHoverContent","mainPoint","getEntryPointPopupContent","createSpiderLegLine","lineOptions","createMarkersForEntryPoints","entryPointMarkerLayer","drawSpiderLegLines","mainMarkerLayer","_markersWithEntryPointsFeatures","configureMarkerToShowEntryPointOnClickIfNeeded","markerLayer","markerRemoveHandler","_lastClickedMarkerWithEntries","_removeEntryPoints","entryPointsMarkers","_entryPointsPopupGenerator","isSimplePoint","createMarkerFromPoint","_regularPopupGenerator","_markersLayer","extendEntryPointsOptions","resizeEntryPointMarkerIcon","requestedEntryPoinMarkerPosition","entryPointMarkers","multiplier","updatedElement","entryPointMarker","routableClickHandlerFactory","routeContextGetter","routeContext","configureActionsForRegularMarkers","isRoutingEnabled","isSearchNearbyEnabled","resizeEntryPoints","actionsForRegularMarkers","routeFrom","routeTo","routeToEntryPoint","routeFromEntryPoint","onEntryPointMouseover","onEntryPointMouseout","onActionClick","_getRoutingContext","searchNearby","setMarkersData","addMarkers","configureActionsForEntryPointMarkers","actionsForEntryPointMarkers","getMarkerName","lowBandwidthName","nm","getPointId","TomTomMarkersLayer","enableRoutingActions","enableSearchActions","_points","pointId","_allPointsIds","noMarkerClustering","getMarkers","setMarkerOptions","setPopupOptions","_routeDrawer","updateRoutingContext","removedMarkerPosition","_startMarker","_endMarker","_route","_supportRoutes","_popupGenerator","isJsonRouteEmpty","getCoordinateFromJsonRoute","areLatLngEquals","latLng1","latLng2","removeArrayOfComponents","component","updateRoutingAssetsOnRoutingContextUpdate","propertyCurrentValue","pointToMarkerMapping","_drawRoute","_addAssetsToMap","startIcon","endIcon","routeOptions","supportRouteOptions","__getStartPointFromJsonRoute","__getEndPointFromGeoJson","routeStartPoint","routeEndPoint","_removeComponent","componentName","_createMarker","markerName","_setRoutingContext","_routingContextUpdatesListener","elementsPossibleToAdd","elementToAdd","currentPosition","routingContext","LowBandwidthSearchModel","createCorrectModel","tp","resultsArray","rangeLeftStart","rangeLeft","rangeLeftEnd","rangeRightStart","rangeRight","rangeRightEnd","keyName","reverseGeocodeModel","entityType","etp","phone","ph","categories","nameLocale","iconContent","parentPoiData","span","addressContainer","actionButton","entryPointsButton","actionsChooser","getActionsContainer","mainPanel","child","actionsContainer","wrapComponents","wrapableComponents","wrapableComponent","hideActions","actionsContainerVisible","toggleActionsVisibility","wrapUnwrapOnClickHandlerFactory","currentTarget","mainContainer","firstAction","lastAction","wrapActions","wrapUnwrapButton","routingOnActionClicked","onEntryPointClick","onEntryPointsUnfold","isEntryPointsListVisible","entryPointsPanelHidden","hideEntryPoints","entryPointsPanel","toggleEntryPointsVisibility","createEntryPointsList","entryPointClickHandler","entryPointMouseoverHandler","entryPointMouseoutHandler","addressPromises","hideEntryPointsBound","addressPoint","entryAddressPoints","entryAddressPoint","addressPointIndex","entryPosition","entryPointFirst","entryPointWithBorder","entryPointLast","entryPointsAnchorPanel","actionsButtonClickHandler","entryPointsAlreadyAdded","nonClickedText","changeButtonLabelWhenClicked","clicked","searchModel","extendedPostalCodesFor","restGeocode","geocodeParams","geocodeQuery","searchApiKeyname","storeResult","restStructuredGeocode","structureGeocodeParameters","checkBestResult","modifyRequestParams","crossStreet","municipalitySubdivision","countryTertiarySubdivision","countrySecondarySubdivision","countrySubdivision","CrossStreetLookup","PoiSearch","CategorySearch","GeometrySearch","searchPrototype","LowBandwidthSearch","searchType","maxDetourTime","restFlowSegmentData","thickness","openLr","restAdditionalData","batchReachableRangeModel","reachableRangeParameters","reachableRangeModel","matrixRoutingModel","opt","row","cell","cog","ControlPanel","onPropertyChange","selectedIndex","addOptions","select","selected","onchange","ResultsList","MultiMeasurementRuler","DistanceMeasurement","Activated","Deactivated","Started","Changed","Finished","Cancelled","Reset","Disabled","_classnames","mapContainer","containerActive","containerInProgress","onoffButton","onoffButtonEnabled","onoffButtonDisabled","actionsButtons","actionsButtonsVisible","finishButton","cancelButton","markerLabel","previewMarkerLabel","ruler","previewRuler","_layer","_isActivated","_isMeasurementInProgress","_previousStatusOfConflictiveFeatures","_activeRulerLayer","_previewRulerSegment","_rulerLayerStack","_supportedUnits","_activeOptions","_createControls","_attachDomEventHandlersToControls","toggleActivation","_finishMeasurement","_cancelOrResetMeasurement","_layerClickListenerOn","layerOrEvent","_mouseClickHandler","_layerClickListenerOff","_startListenClicks","_stopListenClicks","_onMapMeasurementUnitChanged","deactivate","redrawRulers","activeLatLngs","lastPreviewLatLng","_startActiveRuler","_redrawRulerPreviewSegment","newRuler","_createRuler","_rebuildCuratedOptionsSnapshot","_getUnitScheme","_addDrawingLayer","_removeDrawingLayer","activate","_disableConflictiveMapFeatures","_cancelMeasurement","_resetMeasurement","_restoreConflictiveMapFeatures","_storeCurrentStatusOfConflictiveMapFeatures","_equalLatLng","firstLatLon","secondLatLon","_translateLatLngToAchieveClosestPath","_onChangeMeasurement","_startMeasurement","times","lastLatLng","closestLastLatLng","getClosestLast","previewLatLng","rulerOptions","_mouseMoveHandler","newSegment","_stopMeasurement","_moveActiveRulerToStack","_rulers","_getLatLngWithLngOffset","_getLatLngsWithLngOffset","closerLatLng","lastsLatLngs","closerPoint","rulerLastLatLng","rulerLastPoint","getLocationsFromSearchBoxes","searchBoxes","selectedLocation","updateSearchBoxIcons","getIconClassName","updateLocationButton","locationIconIndex","LOCATION","Start","showDeleteSearchBoxButton","deleteIcon","removeInput","hideDeleteSearchBoxButton","setVisibilityForDeleteButton","updateDeleteSearchBoxButtons","enableSearchBoxesModifcation","showInsertSearchBoxButton","insertSearchBoxButton","addInput","hideInsertSearchBoxButton","updateInsertSearchBoxButton","routeInputConstructor","LocationsFound","LocationsCleared","End","WAYPOINT_PLACEMENT","Last","BeforeLast","RouteInputs","WaypointPlacement","waypointPlacement","searchOptions","searchBoxesContainer","createSearchBox","minimumBoxesAchieved","lastSearchBoxIndex","searchBoxInstance","needsLocationIcon","childNodes","addSearchBoxEventHandlers","removeSearchBox","searchBoxIndex","eventObject","onLocationChange","showLocationNotFoundMessageBox","nodeList","CSS_CLASS_NAME","clearDOMElements","createCollapseIconDiv","isInstructionGroupsCollapsed","collapseIconClass","createGroupMessageDiv","instructionGroup","groupMessageDiv","groupMessage","createSeparatorDiv","divToSeparate","instructionDistance","isImperialDistance","separatorCssClass","isInstructionGroup","separatorDistanceDiv","autoLengthSeparatorDiv","instructionSeparatorDiv","distanceDiv","getIconPathKey","instruction","iconKey","maneuver","turnAngleInDecimalDegrees","drivingSide","MANOUVERS_WITH_LEFT_DRIVING_SIDE_VERSIONS","createInstructionElement","messageDiv","instructionElementDiv","messageWithIconDiv","iconsMap","createEventObject","instructionPoints","instructionMessage","toggleCssClasses","cssClassesArray","deselectInstruction","selectedInstructionClass","selectedInstruction","InstructionClickedDeselect","registerHandlersForInstruction","instructionElement","InstructionHoverOn","InstructionHoverOff","InstructionClickedSelect","createInstructions","divForInstructions","instructionList","instructionNextToGroup","instructionIndex","currentInstruction","nextInstruction","separatorCssClassName","nextInstructionOffset","routeOffsetInMeters","registerHandlersForGroup","groupElementDiv","InstructionGroupHoverOn","groupedInstructionPoints","InstructionGroupHoverOff","separator","collapseIconDiv","groupedInstructionsDiv","InstructionGroupClickedExpand","InstructionGroupClickedCollapse","allInstructionsPoints","createInstructionsWithGroups","groupIndex","groupMessageWithIconDiv","instructionListForGroup","instructions","instructionGroups","instructionGroupsCollapsed","groupLengthInMeters","firstInstructionIndex","lastInstructionIndex","updateDOMElements","showInstructionGroups","guidanceData","ARRIVE","ARRIVE_LEFT","ARRIVE_RIGHT","DEPART","STRAIGHT","KEEP_RIGHT","BEAR_RIGHT","TURN_RIGHT","SHARP_RIGHT","KEEP_LEFT","BEAR_LEFT","TURN_LEFT","SHARP_LEFT","MAKE_UTURN","MAKE_UTURN_LEFT_DRIVING_SIDE","ENTER_MOTORWAY","ENTER_FREEWAY","ENTER_HIGHWAY","TAKE_EXIT","MOTORWAY_EXIT_LEFT","MOTORWAY_EXIT_RIGHT","TAKE_FERRY","ROUNDABOUT_CROSS","ROUNDABOUT_CROSS_45","ROUNDABOUT_RIGHT_135","ROUNDABOUT_CROSS_MINUS_45","ROUNDABOUT_LEFT_MINUS_135","ROUNDABOUT_RIGHT","ROUNDABOUT_LEFT","ROUNDABOUT_BACK","TRY_MAKE_UTURN","TRY_MAKE_UTURN_LEFT_DRIVING_SIDE","ROUNDABOUT_CROSS_LEFT_DRIVING_SIDE","ROUNDABOUT_CROSS_45_LEFT_DRIVING_SIDE","ROUNDABOUT_RIGHT_135_LEFT_DRIVING_SIDE","ROUNDABOUT_CROSS_MINUS_45_LEFT_DRIVING_SIDE","ROUNDABOUT_LEFT_MINUS_135_LEFT_DRIVING_SIDE","ROUNDABOUT_RIGHT_LEFT_DRIVING_SIDE","ROUNDABOUT_LEFT_LEFT_DRIVING_SIDE","ROUNDABOUT_BACK_LEFT_DRIVING_SIDE","FOLLOW","WAYPOINT_LEFT","WAYPOINT_RIGHT","WAYPOINT_REACHED","RouteInstructions","hide","updateGuidanceData","hideInstructionGroups","unitVal","geopolViewVal","hasDataArray","convertPoints","getFreeFormAddress","getTextContent","textContent","oneOf","third","getPoiName","getText","hadDataPosition","getObjectType","getPointGeometry","poiObject","poiCategories","poiClassifications","convertPoint","isEachIconAFunction","eachIcon","createMarker","MarkersLayer","_onMapUnload","_mapUnloads","routingService","createMarkerIcon","generalMarkerIcon","getRouteStyle","styleIndex","generalMarker","startMarker","endMarker","waypointMarker","onDragListener","getAllFilledLocations","filledLocations","isAtLeastPairOfPoints","MarkerDragEnd","Draw","RouteChanged","RouteNotFound","RouteOnMap","routeStyle","alternativeStyles","routingDelay","createMarkers","dragEndHandler","onDragEnd","dragHandler","onDrag","createRoute","routeGeoJson","drawRouteWithGeoJson","clearRoute","recalculateRoute","fitMapBoundsToRoute","markerIndex","clearMarkers","routeOnMapLayer","areaToBoundTo","drawRoute","initPanelResult","divPanelRouteResultWrapper","divPanelRouteResult","divPanelRouteDeparture","divPanelRouteCostModel","divPanelRouteTime","divPanelRouteTrafficDelay","createPanelArriveDistance","divPanelRouteArriveDistance","divPanelRouteArriveDistanceValue","createPanelArriveTime","divPanelRouteArriveTime","divPanelRouteArriveTimeValue","initPanelArrive","divPanelRouteArrive","divHeading","RouteSummary","_currentData","_currentDataShouldBeImperial","updateSummaryData","travelTimeInSeconds","trafficDelayInSeconds","arrivalTime","MiniMap","MAP_LAYER_DEFAULT_OPTIONS","CONTROL_DEFAULT_OPTIONS","toggleDisplay","autoToggleDisplay","zoomLevelOffset","TomTomMinimap","_miniMap","eventName","regexMatch","mapEventName","_getMinimapBaseLayer","mapOptions","dummyLayer","__WEBPACK_AMD_DEFINE_FACTORY__","minimap","zoomLevelFixed","centerFixed","minimized","collapsedWidth","collapsedHeight","aimingRectOptions","clickable","shadowRectOptions","strings","hideText","showText","_mainMap","_isZoomLevelFixed","_mainMapMoving","_miniMapMoving","_userToggledDisplay","_minimized","_addToggleButton","_aimingRect","_shadowRect","_onMainMapMoved","_onMainMapMoving","_onMiniMapMoveStarted","_onMiniMapMoving","_onMiniMapMoved","_decideZoom","_setDisplay","changeLayer","_toggleDisplayButton","_toggleButtonInitialTitleText","_toggleDisplayButtonClicked","link","_restore","_minimize","minimize","_onToggle","_decideMinimized","lastAimingRect","_lastAimingRectPosition","_isDefined","_isInteger","fromMaintoMini","toRet","currentDiff","proposedZoom","_lastMiniMapZoom","_fireToggleEvents","miniMapControl"],"mappings":"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","file":"tomtom.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"tomtom\"] = factory();\n\telse\n\t\troot[\"tomtom\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"tomtom\"] = factory();\n\telse\n\t\troot[\"tomtom\"] = factory();\n})(this, function() {\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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\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 = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 100);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(26)], __WEBPACK_AMD_DEFINE_RESULT__ = function (_) {\n 'use strict';\n\n function isArray(object) {\n return _.isArray(object);\n }\n\n /**\n * @ignore\n * Consider NULL as not an object.\n * @param {*} val\n * @return {Boolean}\n */\n function isObject(val) {\n return _.isObject(val);\n }\n\n /**\n * @ignore\n * Consider NaN and Infinite as not a number.\n * @param {*} val\n * @return {Boolean}\n */\n function isValidNumber(val) {\n return _.isFinite(val);\n }\n\n /**\n * @ignore\n * @param {*} val\n * @return {Boolean}\n */\n function isNonEmptyString(val) {\n return _.isString(val) && val.length > 0;\n }\n\n /**\n * @ignore\n * Used instead of Number.isNaN\n * @param {*} val\n * @return {Boolean}\n */\n function numberIsNaN(val) {\n return _.isNaN(val);\n }\n\n /**\n * @ignore\n * Returns TRUE is the value is not undefined, null or NaN.\n * @param {*} val\n * @return {Boolean}\n */\n function isValidValue(val) {\n return val !== undefined && val !== null && !numberIsNaN(val);\n }\n\n /**\n * @ignore\n * Returns an function that check if a value passed as argument is an instance of an specific class.\n * @param {Object} classObject\n * @return {Function}\n */\n function createInstanceChecker(classObject) {\n return function (val) {\n return val instanceof classObject;\n };\n }\n\n function cloneProperties(object, clonedObject) {\n var property;\n for (property in object) {\n if (object.hasOwnProperty(property)) {\n if (isArray(object[property])) {\n clonedObject[property] = object[property].slice(0);\n } else if (_typeof(object[property]) === 'object') {\n clonedObject[property] = {};\n cloneProperties(object[property], clonedObject[property]);\n } else {\n clonedObject[property] = object[property];\n }\n }\n }\n }\n\n function getValueOrEmptyObject(value) {\n return value === undefined ? {} : value;\n }\n\n function addNewField(result, field, newFields) {\n var property;\n result[field] = getValueOrEmptyObject(result[field]);\n for (property in newFields[field]) {\n if (newFields[field].hasOwnProperty(property)) {\n result[field][property] = newFields[field][property];\n }\n }\n }\n\n function convertToLatLng(value) {\n var convertedValue;\n if (value instanceof L.LatLng) {\n convertedValue = value;\n } else if (isArray(value)) {\n convertedValue = L.latLng(value);\n } else if (value && value.lat && value.lon) {\n convertedValue = L.latLng([value.lat, value.lon]);\n } else if (value && value.lat && value.lng) {\n convertedValue = L.latLng([value.lat, value.lng]);\n }\n return convertedValue;\n }\n\n function extend(obj, src) {\n var key;\n for (key in src) {\n if (src.hasOwnProperty(key)) {\n obj[key] = src[key];\n }\n }\n return obj;\n }\n\n return {\n isArray: isArray,\n isEqual: _.isEqual,\n isObject: isObject,\n isString: _.isString,\n isValidNumber: isValidNumber,\n isValidValue: isValidValue,\n isNonEmptyString: isNonEmptyString,\n createInstanceChecker: createInstanceChecker,\n convertToLatLng: convertToLatLng,\n\n addFields: function addFields(newFields, defaultFields) {\n var field;\n var result = defaultFields || this.defaultFields || {};\n for (field in newFields) {\n if (newFields.hasOwnProperty(field)) {\n addNewField(result, field, newFields);\n }\n }\n return result;\n },\n\n clone: function clone(object) {\n var clonedObject = {};\n cloneProperties(object, clonedObject);\n return clonedObject;\n },\n\n encodeQuery: function encodeQuery(query) {\n return encodeURIComponent(query);\n },\n\n encodeStringForRegex: function encodeStringForRegex(value) {\n return value.replace(/[-[\\]/{}()*+?.\\\\^$|]/g, '\\\\$&');\n },\n extend: extend,\n\n /**\n * @param {Object} sourceObj\n * @param {String} deprecatedPropertyName\n * @param {String} deprecatedPropertyReplacement\n */\n addDeprecatedProperty: function addDeprecatedProperty(sourceObj, deprecatedPropertyName, deprecatedPropertyReplacement) {\n Object.defineProperty(sourceObj, deprecatedPropertyName, {\n get: function get() {\n console.warn('Usage of ' + deprecatedPropertyName + ' property is deprecated. Please use ' + deprecatedPropertyReplacement + ' property.');\n return this[deprecatedPropertyReplacement];\n }\n });\n },\n\n pointRegex: /(-?\\d+(?:\\.\\d+)?)(?:\\s+|\\s*,\\s*)(-?\\d+(?:\\.\\d+)?)/,\n\n circleRegex: /circle\\((-?\\d+(?:\\.\\d+)?)\\s*,\\s*(-?\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+)\\)/,\n\n /**\n * @ignore\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds.\n * @param {Object} context\n * @param {Function} func\n * @param {Number} wait\n * @return {Function}\n */\n debounce: function debounce(context, func, wait) {\n var timeout;\n return function () {\n var later = function later() {\n timeout = null;\n func.apply(context, arguments);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n },\n\n isValueNil: function isValueNil(value) {\n return typeof value === 'undefined' || value === null;\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* @preserve\n * Leaflet 1.3.0, a JS library for interactive maps. http://leafletjs.com\n * (c) 2010-2017 Vladimir Agafonkin, (c) 2010-2011 CloudMade\n */\n!function(t,i){ true?i(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],i):i(t.L={})}(this,function(t){\"use strict\";function i(t){var i,e,n,o;for(e=1,n=arguments.length;e=0}function A(t,i,e,n){return\"touchstart\"===i?O(t,e,n):\"touchmove\"===i?W(t,e,n):\"touchend\"===i&&H(t,e,n),this}function B(t,i,e){var n=t[\"_leaflet_\"+i+e];return\"touchstart\"===i?t.removeEventListener(Qi,n,!1):\"touchmove\"===i?t.removeEventListener(te,n,!1):\"touchend\"===i&&(t.removeEventListener(ie,n,!1),t.removeEventListener(ee,n,!1)),this}function O(t,i,n){var o=e(function(t){if(\"mouse\"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(ne.indexOf(t.target.tagName)<0))return;$(t)}j(t,i)});t[\"_leaflet_touchstart\"+n]=o,t.addEventListener(Qi,o,!1),se||(document.documentElement.addEventListener(Qi,R,!0),document.documentElement.addEventListener(te,D,!0),document.documentElement.addEventListener(ie,N,!0),document.documentElement.addEventListener(ee,N,!0),se=!0)}function R(t){oe[t.pointerId]=t,re++}function D(t){oe[t.pointerId]&&(oe[t.pointerId]=t)}function N(t){delete oe[t.pointerId],re--}function j(t,i){t.touches=[];for(var e in oe)t.touches.push(oe[e]);t.changedTouches=[t],i(t)}function W(t,i,e){var n=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&\"mouse\"!==t.pointerType||0!==t.buttons)&&j(t,i)};t[\"_leaflet_touchmove\"+e]=n,t.addEventListener(te,n,!1)}function H(t,i,e){var n=function(t){j(t,i)};t[\"_leaflet_touchend\"+e]=n,t.addEventListener(ie,n,!1),t.addEventListener(ee,n,!1)}function F(t,i,e){function n(t){var i;if(Ui){if(!Pi||\"mouse\"===t.pointerType)return;i=re}else i=t.touches.length;if(!(i>1)){var e=Date.now(),n=e-(s||e);r=t.touches?t.touches[0]:t,a=n>0&&n<=h,s=e}}function o(t){if(a&&!r.cancelBubble){if(Ui){if(!Pi||\"mouse\"===t.pointerType)return;var e,n,o={};for(n in r)e=r[n],o[n]=e&&e.bind?e.bind(r):e;r=o}r.type=\"dblclick\",i(r),s=null}}var s,r,a=!1,h=250;return t[ue+ae+e]=n,t[ue+he+e]=o,t[ue+\"dblclick\"+e]=i,t.addEventListener(ae,n,!1),t.addEventListener(he,o,!1),t.addEventListener(\"dblclick\",i,!1),this}function U(t,i){var e=t[ue+ae+i],n=t[ue+he+i],o=t[ue+\"dblclick\"+i];return t.removeEventListener(ae,e,!1),t.removeEventListener(he,n,!1),Pi||t.removeEventListener(\"dblclick\",o,!1),this}function V(t,i,e,n){if(\"object\"==typeof i)for(var o in i)G(t,o,i[o],e);else for(var s=0,r=(i=u(i)).length;s100&&n<500||t.target._simulatedClick&&!t._simulated?Q(t):(pi=e,i(t))}function rt(t){return\"string\"==typeof t?document.getElementById(t):t}function at(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!e||\"auto\"===e)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);e=n?n[i]:null}return\"auto\"===e?null:e}function ht(t,i,e){var n=document.createElement(t);return n.className=i||\"\",e&&e.appendChild(n),n}function ut(t){var i=t.parentNode;i&&i.removeChild(t)}function lt(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function ct(t){var i=t.parentNode;i.lastChild!==t&&i.appendChild(t)}function _t(t){var i=t.parentNode;i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function dt(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=gt(t);return e.length>0&&new RegExp(\"(^|\\\\s)\"+i+\"(\\\\s|$)\").test(e)}function pt(t,i){if(void 0!==t.classList)for(var e=u(i),n=0,o=e.length;nh&&(s=r,h=a);h>e&&(i[s]=1,Et(t,i,e,n,s),Et(t,i,e,s,o))}function kt(t,i){for(var e=[t[0]],n=1,o=0,s=t.length;ni&&(e.push(t[n]),o=n);return oi.max.x&&(e|=2),t.yi.max.y&&(e|=8),e}function Ot(t,i){var e=i.x-t.x,n=i.y-t.y;return e*e+n*n}function Rt(t,i,e,n){var o,s=i.x,r=i.y,a=e.x-s,h=e.y-r,u=a*a+h*h;return u>0&&((o=((t.x-s)*a+(t.y-r)*h)/u)>1?(s=e.x,r=e.y):o>0&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new x(s,r)}function Dt(t){return!ei(t[0])||\"object\"!=typeof t[0][0]&&void 0!==t[0][0]}function Nt(t){return console.warn(\"Deprecated use of _flat, please use L.LineUtil.isFlat instead.\"),Dt(t)}function jt(t,i,e){var n,o,s,r,a,h,u,l,c,_=[1,4,2,8];for(o=0,u=t.length;o0?Math.floor(t):Math.ceil(t)};x.prototype={clone:function(){return new x(this.x,this.y)},add:function(t){return this.clone()._add(w(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(w(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new x(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new x(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=li(this.x),this.y=li(this.y),this},distanceTo:function(t){var i=(t=w(t)).x-this.x,e=t.y-this.y;return Math.sqrt(i*i+e*e)},equals:function(t){return(t=w(t)).x===this.x&&t.y===this.y},contains:function(t){return t=w(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return\"Point(\"+a(this.x)+\", \"+a(this.y)+\")\"}},P.prototype={extend:function(t){return t=w(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new x((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new x(this.min.x,this.max.y)},getTopRight:function(){return new x(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var i,e;return(t=\"number\"==typeof t[0]||t instanceof x?w(t):b(t))instanceof P?(i=t.min,e=t.max):i=e=t,i.x>=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>=i.x&&n.x<=e.x,r=o.y>=i.y&&n.y<=e.y;return s&&r},overlaps:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>i.x&&n.xi.y&&n.y=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=i.lat&&n.lat<=e.lat,r=o.lng>=i.lng&&n.lng<=e.lng;return s&&r},overlaps:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>i.lat&&n.lati.lng&&n.lng1,Yi=!!document.createElement(\"canvas\").getContext,Xi=!(!document.createElementNS||!E(\"svg\").createSVGRect),Ji=!Xi&&function(){try{var t=document.createElement(\"div\");t.innerHTML='';var i=t.firstChild;return i.style.behavior=\"url(#default#VML)\",i&&\"object\"==typeof i.adj}catch(t){return!1}}(),$i=(Object.freeze||Object)({ie:wi,ielt9:Li,edge:Pi,webkit:bi,android:Ti,android23:zi,androidStock:Ci,opera:Zi,chrome:Si,gecko:Ei,safari:ki,phantom:Ii,opera12:Ai,win:Bi,ie3d:Oi,webkit3d:Ri,gecko3d:Di,any3d:Ni,mobile:ji,mobileWebkit:Wi,mobileWebkit3d:Hi,msPointer:Fi,pointer:Ui,touch:Vi,mobileOpera:qi,mobileGecko:Gi,retina:Ki,canvas:Yi,svg:Xi,vml:Ji}),Qi=Fi?\"MSPointerDown\":\"pointerdown\",te=Fi?\"MSPointerMove\":\"pointermove\",ie=Fi?\"MSPointerUp\":\"pointerup\",ee=Fi?\"MSPointerCancel\":\"pointercancel\",ne=[\"INPUT\",\"SELECT\",\"OPTION\"],oe={},se=!1,re=0,ae=Fi?\"MSPointerDown\":Ui?\"pointerdown\":\"touchstart\",he=Fi?\"MSPointerUp\":Ui?\"pointerup\":\"touchend\",ue=\"_leaflet_\",le=\"_leaflet_events\",ce=Bi&&Si?2*window.devicePixelRatio:Ei?window.devicePixelRatio:1,_e={},de=(Object.freeze||Object)({on:V,off:q,stopPropagation:Y,disableScrollPropagation:X,disableClickPropagation:J,preventDefault:$,stop:Q,getMousePosition:tt,getWheelDelta:it,fakeStop:et,skipped:nt,isExternalTarget:ot,addListener:V,removeListener:q}),pe=xt([\"transform\",\"WebkitTransform\",\"OTransform\",\"MozTransform\",\"msTransform\"]),me=xt([\"webkitTransition\",\"transition\",\"OTransition\",\"MozTransition\",\"msTransition\"]),fe=\"webkitTransition\"===me||\"OTransition\"===me?me+\"End\":\"transitionend\";if(\"onselectstart\"in document)mi=function(){V(window,\"selectstart\",$)},fi=function(){q(window,\"selectstart\",$)};else{var ge=xt([\"userSelect\",\"WebkitUserSelect\",\"OUserSelect\",\"MozUserSelect\",\"msUserSelect\"]);mi=function(){if(ge){var t=document.documentElement.style;gi=t[ge],t[ge]=\"none\"}},fi=function(){ge&&(document.documentElement.style[ge]=gi,gi=void 0)}}var ve,ye,xe=(Object.freeze||Object)({TRANSFORM:pe,TRANSITION:me,TRANSITION_END:fe,get:rt,getStyle:at,create:ht,remove:ut,empty:lt,toFront:ct,toBack:_t,hasClass:dt,addClass:pt,removeClass:mt,setClass:ft,getClass:gt,setOpacity:vt,testProp:xt,setTransform:wt,setPosition:Lt,getPosition:Pt,disableTextSelection:mi,enableTextSelection:fi,disableImageDrag:bt,enableImageDrag:Tt,preventOutline:zt,restoreOutline:Mt}),we=ui.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=Pt(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire(\"start\"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=f(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;ithis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,z(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},invalidateSize:function(t){if(!this._loaded)return this;t=i({animate:!1,pan:!0},!0===t?{animate:!0}:t);var n=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var o=this.getSize(),s=n.divideBy(2).round(),r=o.divideBy(2).round(),a=s.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire(\"move\"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(e(this.fire,this,\"moveend\"),200)):this.fire(\"moveend\")),this.fire(\"resize\",{oldSize:n,newSize:o})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire(\"viewreset\"),this._stop()},locate:function(t){if(t=this._locateOptions=i({timeout:1e4,watch:!1},t),!(\"geolocation\"in navigator))return this._handleGeolocationError({code:0,message:\"Geolocation not supported.\"}),this;var n=e(this._handleGeolocationResponse,this),o=e(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(n,o,t):navigator.geolocation.getCurrentPosition(n,o,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var i=t.code,e=t.message||(1===i?\"permission denied\":2===i?\"position unavailable\":\"timeout\");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire(\"locationerror\",{code:i,message:\"Geolocation error: \"+e+\".\"})},_handleGeolocationResponse:function(t){var i=new M(t.coords.latitude,t.coords.longitude),e=i.toBounds(t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(e);this.setView(i,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:i,bounds:e,timestamp:t.timestamp};for(var r in t.coords)\"number\"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire(\"locationfound\",s)},addHandler:function(t,i){if(!i)return this;var e=this[t]=new i(this);return this._handlers.push(e),this.options[t]&&e.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error(\"Map container is being reused by another instance\");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),ut(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this._loaded&&this.fire(\"unload\");var t;for(t in this._layers)this._layers[t].remove();for(t in this._panes)ut(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var e=ht(\"div\",\"leaflet-pane\"+(t?\" leaflet-\"+t.replace(\"Pane\",\"\")+\"-pane\":\"\"),i||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new T(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,e){t=z(t),e=w(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(e),u=b(this.project(a,n),this.project(r,n)).getSize(),l=Ni?this.options.zoomSnap:1,c=h.x/u.x,_=h.y/u.y,d=i?Math.max(c,_):Math.min(c,_);return n=this.getScaleZoom(d,n),l&&(n=Math.round(n/(l/100))*(l/100),n=i?Math.ceil(n/l)*l:Math.floor(n/l)*l),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new x(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var e=this._getTopLeftPoint(t,i);return new P(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return\"string\"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs;i=void 0===i?this._zoom:i;var n=e.zoom(t*e.scale(i));return isNaN(n)?1/0:n},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(C(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(w(t),i)},layerPointToLatLng:function(t){var i=w(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){return this.project(C(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(C(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(z(t))},distance:function(t,i){return this.options.crs.distance(C(t),C(i))},containerPointToLayerPoint:function(t){return w(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return w(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(w(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(C(t)))},mouseEventToContainerPoint:function(t){return tt(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=rt(t);if(!i)throw new Error(\"Map container not found.\");if(i._leaflet_id)throw new Error(\"Map container is already initialized.\");V(i,\"scroll\",this._onScroll,this),this._containerId=n(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&Ni,pt(t,\"leaflet-container\"+(Vi?\" leaflet-touch\":\"\")+(Ki?\" leaflet-retina\":\"\")+(Li?\" leaflet-oldie\":\"\")+(ki?\" leaflet-safari\":\"\")+(this._fadeAnimated?\" leaflet-fade-anim\":\"\"));var i=at(t,\"position\");\"absolute\"!==i&&\"relative\"!==i&&\"fixed\"!==i&&(t.style.position=\"relative\"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane(\"mapPane\",this._container),Lt(this._mapPane,new x(0,0)),this.createPane(\"tilePane\"),this.createPane(\"shadowPane\"),this.createPane(\"overlayPane\"),this.createPane(\"markerPane\"),this.createPane(\"tooltipPane\"),this.createPane(\"popupPane\"),this.options.markerZoomAnimation||(pt(t.markerPane,\"leaflet-zoom-hide\"),pt(t.shadowPane,\"leaflet-zoom-hide\"))},_resetView:function(t,i){Lt(this._mapPane,new x(0,0));var e=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire(\"viewprereset\");var n=this._zoom!==i;this._moveStart(n,!1)._move(t,i)._moveEnd(n),this.fire(\"viewreset\"),e&&this.fire(\"load\")},_moveStart:function(t,i){return t&&this.fire(\"zoomstart\"),i||this.fire(\"movestart\"),this},_move:function(t,i,e){void 0===i&&(i=this._zoom);var n=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(n||e&&e.pinch)&&this.fire(\"zoom\",e),this.fire(\"move\",e)},_moveEnd:function(t){return t&&this.fire(\"zoomend\"),this.fire(\"moveend\")},_stop:function(){return g(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Lt(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error(\"Set map center and zoom first.\")},_initEvents:function(t){this._targets={},this._targets[n(this._container)]=this;var i=t?q:V;i(this._container,\"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress\",this._handleDOMEvent,this),this.options.trackResize&&i(window,\"resize\",this._onResize,this),Ni&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,\"moveend\",this._onMoveEnd)},_onResize:function(){g(this._resizeRequest),this._resizeRequest=f(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,o=[],s=\"mouseout\"===i||\"mouseover\"===i,r=t.target||t.srcElement,a=!1;r;){if((e=this._targets[n(r)])&&(\"click\"===i||\"preclick\"===i)&&!t._simulated&&this._draggableMoved(e)){a=!0;break}if(e&&e.listens(i,!0)){if(s&&!ot(r,t))break;if(o.push(e),s)break}if(r===this._container)break;r=r.parentNode}return o.length||a||s||!ot(r,t)||(o=[this]),o},_handleDOMEvent:function(t){if(this._loaded&&!nt(t)){var i=t.type;\"mousedown\"!==i&&\"keypress\"!==i||zt(t.target||t.srcElement),this._fireDOMEvent(t,i)}},_mouseEvents:[\"click\",\"dblclick\",\"mouseover\",\"mouseout\",\"contextmenu\"],_fireDOMEvent:function(t,e,n){if(\"click\"===t.type){var o=i({},t);o.type=\"preclick\",this._fireDOMEvent(o,o.type,n)}if(!t._stopped&&(n=(n||[]).concat(this._findEventTargets(t,e))).length){var s=n[0];\"contextmenu\"===e&&s.listens(e,!0)&&$(t);var r={originalEvent:t};if(\"keypress\"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var h=0;h0?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=Ni?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire(\"move\")},_onPanTransitionEnd:function(){mt(this._mapPane,\"leaflet-pan-anim\"),this.fire(\"moveend\")},_tryAnimatedPan:function(t,i){var e=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(e))&&(this.panBy(e,i),!0)},_createAnimProxy:function(){var t=this._proxy=ht(\"div\",\"leaflet-proxy leaflet-zoom-animated\");this._panes.mapPane.appendChild(t),this.on(\"zoomanim\",function(t){var i=pe,e=this._proxy.style[i];wt(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on(\"load moveend\",function(){var t=this.getCenter(),i=this.getZoom();wt(this._proxy,this.project(t,i),this.getZoomScale(i,1))},this),this._on(\"unload\",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){ut(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf(\"transform\")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName(\"leaflet-zoom-animated\").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(o))&&(f(function(){this._moveStart(!0,!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,n,o){this._mapPane&&(n&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,pt(this._mapPane,\"leaflet-zoom-anim\")),this.fire(\"zoomanim\",{center:t,zoom:i,noUpdate:o}),setTimeout(e(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&mt(this._mapPane,\"leaflet-zoom-anim\"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),f(function(){this._moveEnd(!0)},this))}}),Pe=v.extend({options:{position:\"topright\"},initialize:function(t){l(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),n=t._controlCorners[e];return pt(i,\"leaflet-control\"),-1!==e.indexOf(\"bottom\")?n.insertBefore(i,n.firstChild):n.appendChild(i),this},remove:function(){return this._map?(ut(this._container),this.onRemove&&this.onRemove(this._map),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),be=function(t){return new Pe(t)};Le.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){function t(t,o){var s=e+t+\" \"+e+o;i[t+o]=ht(\"div\",s,n)}var i=this._controlCorners={},e=\"leaflet-\",n=this._controlContainer=ht(\"div\",e+\"control-container\",this._container);t(\"top\",\"left\"),t(\"top\",\"right\"),t(\"bottom\",\"left\"),t(\"bottom\",\"right\")},_clearControlPos:function(){for(var t in this._controlCorners)ut(this._controlCorners[t]);ut(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Te=Pe.extend({options:{collapsed:!0,position:\"topright\",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e1,this._baseLayersList.style.display=t?\"\":\"none\"),this._separator.style.display=i&&t?\"\":\"none\",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(n(t.target)),e=i.overlay?\"add\"===t.type?\"overlayadd\":\"overlayremove\":\"add\"===t.type?\"baselayerchange\":null;e&&this._map.fire(e,i)},_createRadioElement:function(t,i){var e='\",n=document.createElement(\"div\");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement(\"label\"),o=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement(\"input\")).type=\"checkbox\",i.className=\"leaflet-control-layers-selector\",i.defaultChecked=o):i=this._createRadioElement(\"leaflet-base-layers\",o),this._layerControlInputs.push(i),i.layerId=n(t.layer),V(i,\"click\",this._onInputClick,this);var s=document.createElement(\"span\");s.innerHTML=\" \"+t.name;var r=document.createElement(\"div\");return e.appendChild(r),r.appendChild(i),r.appendChild(s),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;s>=0;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;s=0;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&ni.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),ze=Pe.extend({options:{position:\"topleft\",zoomInText:\"+\",zoomInTitle:\"Zoom in\",zoomOutText:\"−\",zoomOutTitle:\"Zoom out\"},onAdd:function(t){var i=\"leaflet-control-zoom\",e=ht(\"div\",i+\" leaflet-bar\"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+\"-in\",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+\"-out\",e,this._zoomOut),this._updateDisabled(),t.on(\"zoomend zoomlevelschange\",this._updateDisabled,this),e},onRemove:function(t){t.off(\"zoomend zoomlevelschange\",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){var s=ht(\"a\",e,n);return s.innerHTML=t,s.href=\"#\",s.title=i,s.setAttribute(\"role\",\"button\"),s.setAttribute(\"aria-label\",i),J(s),V(s,\"click\",Q),V(s,\"click\",o,this),V(s,\"click\",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i=\"leaflet-disabled\";mt(this._zoomInButton,i),mt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMinZoom())&&pt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMaxZoom())&&pt(this._zoomInButton,i)}});Le.mergeOptions({zoomControl:!0}),Le.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new ze,this.addControl(this.zoomControl))});var Me=Pe.extend({options:{position:\"bottomleft\",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i=ht(\"div\",\"leaflet-control-scale\"),e=this.options;return this._addScales(e,\"leaflet-control-scale-line\",i),t.on(e.updateWhenIdle?\"moveend\":\"move\",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?\"moveend\":\"move\",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=ht(\"div\",i,e)),t.imperial&&(this._iScale=ht(\"div\",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,e=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),e=i<1e3?i+\" m\":i/1e3+\" km\";this._updateScale(this._mScale,e,i/t)},_updateImperial:function(t){var i,e,n,o=3.2808399*t;o>5280?(i=o/5280,e=this._getRoundNum(i),this._updateScale(this._iScale,e+\" mi\",e/i)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+\" ft\",n/o))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+\"px\",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+\"\").length-1),e=t/i;return e=e>=10?10:e>=5?5:e>=3?3:e>=2?2:1,i*e}}),Ce=Pe.extend({options:{position:\"bottomright\",prefix:'Leaflet'},initialize:function(t){l(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=ht(\"div\",\"leaflet-control-attribution\"),J(this._container);for(var i in t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var e=[];this.options.prefix&&e.push(this.options.prefix),t.length&&e.push(t.join(\", \")),this._container.innerHTML=e.join(\" | \")}}});Le.mergeOptions({attributionControl:!0}),Le.addInitHook(function(){this.options.attributionControl&&(new Ce).addTo(this)});Pe.Layers=Te,Pe.Zoom=ze,Pe.Scale=Me,Pe.Attribution=Ce,be.layers=function(t,i,e){return new Te(t,i,e)},be.zoom=function(t){return new ze(t)},be.scale=function(t){return new Me(t)},be.attribution=function(t){return new Ce(t)};var Ze=v.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Ze.addTo=function(t,i){return t.addHandler(i,this),this};var Se,Ee={Events:hi},ke=Vi?\"touchstart mousedown\":\"mousedown\",Ie={mousedown:\"mouseup\",touchstart:\"touchend\",pointerdown:\"touchend\",MSPointerDown:\"touchend\"},Ae={mousedown:\"mousemove\",touchstart:\"touchmove\",pointerdown:\"touchmove\",MSPointerDown:\"touchmove\"},Be=ui.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){l(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(V(this._dragStartTarget,ke,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Be._dragging===this&&this.finishDrag(),q(this._dragStartTarget,ke,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!dt(this._element,\"leaflet-zoom-anim\")&&!(Be._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(Be._dragging=this,this._preventOutline&&zt(this._element),bt(),mi(),this._moving)))){this.fire(\"down\");var i=t.touches?t.touches[0]:t;this._startPoint=new x(i.clientX,i.clientY),V(document,Ae[t.type],this._onMove,this),V(document,Ie[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var i=t.touches&&1===t.touches.length?t.touches[0]:t,e=new x(i.clientX,i.clientY).subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)1e-7;h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=u=Math.PI/2-2*Math.atan(r*i)-a;return new M(a*e,t.x*e/n)}},je=(Object.freeze||Object)({LonLat:De,Mercator:Ne,SphericalMercator:di}),We=i({},_i,{code:\"EPSG:3395\",projection:Ne,transformation:function(){var t=.5/(Math.PI*Ne.R);return S(t,.5,-t,.5)}()}),He=i({},_i,{code:\"EPSG:4326\",projection:De,transformation:S(1/180,1,-1/180,.5)}),Fe=i({},ci,{projection:De,transformation:S(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,n=i.lat-t.lat;return Math.sqrt(e*e+n*n)},infinite:!0});ci.Earth=_i,ci.EPSG3395=We,ci.EPSG3857=vi,ci.EPSG900913=yi,ci.EPSG4326=He,ci.Simple=Fe;var Ue=ui.extend({options:{pane:\"overlayPane\",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[n(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[n(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var e=this.getEvents();i.on(e,this),this.once(\"remove\",function(){i.off(e,this)},this)}this.onAdd(i),this.getAttribution&&i.attributionControl&&i.attributionControl.addAttribution(this.getAttribution()),this.fire(\"add\"),i.fire(\"layeradd\",{layer:this})}}});Le.include({addLayer:function(t){if(!t._layerAdd)throw new Error(\"The provided object is not a Layer.\");var i=n(t);return this._layers[i]?this:(this._layers[i]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t),this)},removeLayer:function(t){var i=n(t);return this._layers[i]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[i],this._loaded&&(this.fire(\"layerremove\",{layer:t}),t.fire(\"remove\")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&n(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?ei(t)?t:[t]:[]).length;ithis._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()i)return r=(n-i)/e,this._map.layerPointToLatLng([s.x-r*(s.x-o.x),s.y-r*(s.y-o.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,i){return i=i||this._defaultShape(),t=C(t),i.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new T,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return Dt(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var i=[],e=Dt(t),n=0,o=t.length;n=2&&i[0]instanceof M&&i[0].equals(i[e-1])&&i.pop(),i},_setLatLngs:function(t){tn.prototype._setLatLngs.call(this,t),Dt(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return Dt(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,e=new x(i,i);if(t=new P(t.min.subtract(e),t.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;ot.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(u=!u);return u||tn.prototype._containsPoint.call(this,t,!0)}}),nn=qe.extend({initialize:function(t,i){l(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=ei(t)?t:t.features;if(o){for(i=0,e=o.length;i0?o:[i.src]}else{ei(this._url)||(this._url=[this._url]),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop;for(var a=0;ao?(i.height=o+\"px\",pt(t,\"leaflet-popup-scrolled\")):mt(t,\"leaflet-popup-scrolled\"),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),e=this._getAnchor();Lt(this._container,i.add(e))},_adjustPan:function(){if(!(!this.options.autoPan||this._map._panAnim&&this._map._panAnim._inProgress)){var t=this._map,i=parseInt(at(this._container,\"marginBottom\"),10)||0,e=this._container.offsetHeight+i,n=this._containerWidth,o=new x(this._containerLeft,-e-this._containerBottom);o._add(Pt(this._container));var s=t.layerPointToContainerPoint(o),r=w(this.options.autoPanPadding),a=w(this.options.autoPanPaddingTopLeft||r),h=w(this.options.autoPanPaddingBottomRight||r),u=t.getSize(),l=0,c=0;s.x+n+h.x>u.x&&(l=s.x+n-u.x+h.x),s.x-l-a.x<0&&(l=s.x-a.x),s.y+e+h.y>u.y&&(c=s.y+e-u.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(l||c)&&t.fire(\"autopanstart\").panBy([l,c])}},_onCloseButtonClick:function(t){this._close(),Q(t)},_getAnchor:function(){return w(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});Le.mergeOptions({closePopupOnClick:!0}),Le.include({openPopup:function(t,i,e){return t instanceof un||(t=new un(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),Ue.include({bindPopup:function(t,i){return t instanceof un?(l(t,i),this._popup=t,t._source=this):(this._popup&&!i||(this._popup=new un(i,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,i){if(t instanceof Ue||(i=t,t=this),t instanceof qe)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._popup&&this._map&&(this._popup._source=t,this._popup.update(),this._map.openPopup(this._popup,i)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var i=t.layer||t.target;this._popup&&this._map&&(Q(t),i instanceof Je?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===i?this.closePopup():this.openPopup(i,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var ln=hn.extend({options:{pane:\"tooltipPane\",offset:[0,0],direction:\"auto\",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){hn.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire(\"tooltipopen\",{tooltip:this}),this._source&&this._source.fire(\"tooltipopen\",{tooltip:this},!0)},onRemove:function(t){hn.prototype.onRemove.call(this,t),t.fire(\"tooltipclose\",{tooltip:this}),this._source&&this._source.fire(\"tooltipclose\",{tooltip:this},!0)},getEvents:function(){var t=hn.prototype.getEvents.call(this);return Vi&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t=\"leaflet-tooltip \"+(this.options.className||\"\")+\" leaflet-zoom-\"+(this._zoomAnimated?\"animated\":\"hide\");this._contentNode=this._container=ht(\"div\",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i=this._map,e=this._container,n=i.latLngToContainerPoint(i.getCenter()),o=i.layerPointToContainerPoint(t),s=this.options.direction,r=e.offsetWidth,a=e.offsetHeight,h=w(this.options.offset),u=this._getAnchor();\"top\"===s?t=t.add(w(-r/2+h.x,-a+h.y+u.y,!0)):\"bottom\"===s?t=t.subtract(w(r/2-h.x,-h.y,!0)):\"center\"===s?t=t.subtract(w(r/2+h.x,a/2-u.y+h.y,!0)):\"right\"===s||\"auto\"===s&&o.xthis.options.maxZoom||en&&this._retainParent(o,s,r,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new x(o,s);r.z=e+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),e+1this.options.maxZoom||void 0!==this.options.minZoom&&o1)this._setView(t,e);else{for(var c=o.min.y;c<=o.max.y;c++)for(var _=o.min.x;_<=o.max.x;_++){var d=new x(_,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:r.push(d)}}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire(\"loading\"));var m=document.createDocumentFragment();for(_=0;_e.max.x)||!i.wrapLat&&(t.ye.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return z(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),o=n.add(e);return[i.unproject(n,t.z),i.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),e=new T(i[0],i[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(t){return t.x+\":\"+t.y+\":\"+t.z},_keyToTileCoords:function(t){var i=t.split(\":\"),e=new x(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(Ci||i.el.setAttribute(\"src\",ni),ut(i.el),delete this._tiles[t],this.fire(\"tileunload\",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){pt(t,\"leaflet-tile\");var i=this.getTileSize();t.style.width=i.x+\"px\",t.style.height=i.y+\"px\",t.onselectstart=r,t.onmousemove=r,Li&&this.options.opacity<1&&vt(t,this.options.opacity),Ti&&!zi&&(t.style.WebkitBackfaceVisibility=\"hidden\")},_addTile:function(t,i){var n=this._getTilePos(t),o=this._tileCoordsToKey(t),s=this.createTile(this._wrapCoords(t),e(this._tileReady,this,t));this._initTile(s),this.createTile.length<2&&f(e(this._tileReady,this,t,null,s)),Lt(s,n),this._tiles[o]={el:s,coords:t,current:!0},i.appendChild(s),this.fire(\"tileloadstart\",{tile:s,coords:t})},_tileReady:function(t,i,n){if(this._map){i&&this.fire(\"tileerror\",{error:i,tile:n,coords:t});var o=this._tileCoordsToKey(t);(n=this._tiles[o])&&(n.loaded=+new Date,this._map._fadeAnimated?(vt(n.el,0),g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this)):(n.active=!0,this._pruneTiles()),i||(pt(n.el,\"leaflet-tile-loaded\"),this.fire(\"tileload\",{tile:n.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire(\"load\"),Li||!this._map._fadeAnimated?f(this._pruneTiles,this):setTimeout(e(this._pruneTiles,this),250)))}},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new x(this._wrapX?s(t.x,this._wrapX):t.x,this._wrapY?s(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new P(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}}),dn=_n.extend({options:{minZoom:0,maxZoom:18,subdomains:\"abc\",errorTileUrl:\"\",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,i){this._url=t,(i=l(this,i)).detectRetina&&Ki&&i.maxZoom>0&&(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom++):(i.zoomOffset++,i.maxZoom--),i.minZoom=Math.max(0,i.minZoom)),\"string\"==typeof i.subdomains&&(i.subdomains=i.subdomains.split(\"\")),Ti||this.on(\"tileunload\",this._onTileRemove)},setUrl:function(t,i){return this._url=t,i||this.redraw(),this},createTile:function(t,i){var n=document.createElement(\"img\");return V(n,\"load\",e(this._tileOnLoad,this,i,n)),V(n,\"error\",e(this._tileOnError,this,i,n)),this.options.crossOrigin&&(n.crossOrigin=\"\"),n.alt=\"\",n.setAttribute(\"role\",\"presentation\"),n.src=this.getTileUrl(t),n},getTileUrl:function(t){var e={r:Ki?\"@2x\":\"\",s:this._getSubdomain(t),x:t.x,y:t.y,z:t.z?t.z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var n=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=n),e[\"-y\"]=n}return _(this._url,i(e,this.options))},_tileOnLoad:function(t,i){Li?setTimeout(e(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute(\"src\")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom,e=this.options.zoomReverse,n=this.options.zoomOffset;return e&&(t=i-t),t+n},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((i=this._tiles[t].el).onload=r,i.onerror=r,i.complete||(i.src=ni,ut(i),delete this._tiles[t]))}}),pn=dn.extend({defaultWmsParams:{service:\"WMS\",request:\"GetMap\",layers:\"\",styles:\"\",format:\"image/jpeg\",transparent:!1,version:\"1.1.1\"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var n=i({},this.defaultWmsParams);for(var o in e)o in this.options||(n[o]=e[o]);var s=(e=l(this,e)).detectRetina&&Ki?2:1,r=this.getTileSize();n.width=r.x*s,n.height=r.y*s,this.wmsParams=n},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=this._wmsVersion>=1.3?\"crs\":\"srs\";this.wmsParams[i]=this._crs.code,dn.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,n=b(e.project(i[0]),e.project(i[1])),o=n.min,s=n.max,r=(this._wmsVersion>=1.3&&this._crs===He?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(\",\"),a=L.TileLayer.prototype.getTileUrl.call(this,t);return a+c(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?\"&BBOX=\":\"&bbox=\")+r},setParams:function(t,e){return i(this.wmsParams,t),e||this.redraw(),this}});dn.WMS=pn,Yt.wms=function(t,i){return new pn(t,i)};var mn=Ue.extend({options:{padding:.1,tolerance:0},initialize:function(t){l(this,t),n(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&pt(this._container,\"leaflet-zoom-animated\")),this.getPane().appendChild(this._container),this._update(),this.on(\"update\",this._updatePaths,this)},onRemove:function(){this.off(\"update\",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var e=this._map.getZoomScale(i,this._zoom),n=Pt(this._container),o=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,i),r=this._map.project(t,i).subtract(s),a=o.multiplyBy(-e).add(n).add(o).subtract(r);Ni?wt(this._container,a,e):Lt(this._container,a)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var t in this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new P(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),fn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){mn.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement(\"canvas\");V(t,\"mousemove\",o(this._onMouseMove,32,this),this),V(t,\"click dblclick mousedown mouseup contextmenu\",this._onClick,this),V(t,\"mouseout\",this._handleMouseOut,this),this._ctx=t.getContext(\"2d\")},_destroyContainer:function(){delete this._ctx,ut(this._container),q(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){this._redrawBounds=null;for(var t in this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){this._drawnLayers={},mn.prototype._update.call(this);var t=this._bounds,i=this._container,e=t.getSize(),n=Ki?2:1;Lt(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+\"px\",i.style.height=e.y+\"px\",Ki&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire(\"update\")}},_reset:function(){mn.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[n(t)]=t;var i=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,n=i.prev;e?e.prev=n:this._drawLast=n,n?n.next=e:this._drawFirst=e,delete t._order,delete this._layers[L.stamp(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if(t.options.dashArray){var i,e=t.options.dashArray.split(\",\"),n=[];for(i=0;i')}}catch(t){return function(t){return document.createElement(\"<\"+t+' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"lvml\">')}}}(),vn={_initContainer:function(){this._container=ht(\"div\",\"leaflet-vml-container\")},_update:function(){this._map._animatingZoom||(mn.prototype._update.call(this),this.fire(\"update\"))},_initPath:function(t){var i=t._container=gn(\"shape\");pt(i,\"leaflet-vml-shape \"+(this.options.className||\"\")),i.coordsize=\"1 1\",t._path=gn(\"path\"),i.appendChild(t._path),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;ut(i),t.removeInteractiveTarget(i),delete this._layers[n(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i||(i=t._stroke=gn(\"stroke\")),o.appendChild(i),i.weight=n.weight+\"px\",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=ei(n.dashArray)?n.dashArray.join(\" \"):n.dashArray.replace(/( *, *)/g,\" \"):i.dashStyle=\"\",i.endcap=n.lineCap.replace(\"butt\",\"flat\"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e||(e=t._fill=gn(\"fill\")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?\"M0 0\":\"AL \"+i.x+\",\"+i.y+\" \"+e+\",\"+n+\" 0,23592600\")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){ct(t._container)},_bringToBack:function(t){_t(t._container)}},yn=Ji?gn:E,xn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=yn(\"svg\"),this._container.setAttribute(\"pointer-events\",\"none\"),this._rootGroup=yn(\"g\"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){ut(this._container),q(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){mn.prototype._update.call(this);var t=this._bounds,i=t.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute(\"width\",i.x),e.setAttribute(\"height\",i.y)),Lt(e,t.min),e.setAttribute(\"viewBox\",[t.min.x,t.min.y,i.x,i.y].join(\" \")),this.fire(\"update\")}},_initPath:function(t){var i=t._path=yn(\"path\");t.options.className&&pt(i,t.options.className),t.options.interactive&&pt(i,\"leaflet-interactive\"),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ut(t._path),t.removeInteractiveTarget(t._path),delete this._layers[n(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,e=t.options;i&&(e.stroke?(i.setAttribute(\"stroke\",e.color),i.setAttribute(\"stroke-opacity\",e.opacity),i.setAttribute(\"stroke-width\",e.weight),i.setAttribute(\"stroke-linecap\",e.lineCap),i.setAttribute(\"stroke-linejoin\",e.lineJoin),e.dashArray?i.setAttribute(\"stroke-dasharray\",e.dashArray):i.removeAttribute(\"stroke-dasharray\"),e.dashOffset?i.setAttribute(\"stroke-dashoffset\",e.dashOffset):i.removeAttribute(\"stroke-dashoffset\")):i.setAttribute(\"stroke\",\"none\"),e.fill?(i.setAttribute(\"fill\",e.fillColor||e.color),i.setAttribute(\"fill-opacity\",e.fillOpacity),i.setAttribute(\"fill-rule\",e.fillRule||\"evenodd\")):i.setAttribute(\"fill\",\"none\"))},_updatePoly:function(t,i){this._setPath(t,k(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n=\"a\"+e+\",\"+(Math.max(Math.round(t._radiusY),1)||e)+\" 0 1,0 \",o=t._empty()?\"M0 0\":\"M\"+(i.x-e)+\",\"+i.y+n+2*e+\",0 \"+n+2*-e+\",0 \";this._setPath(t,o)},_setPath:function(t,i){t._path.setAttribute(\"d\",i)},_bringToFront:function(t){ct(t._path)},_bringToBack:function(t){_t(t._path)}});Ji&&xn.include(vn),Le.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this.options.preferCanvas&&Xt()||Jt()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if(\"overlayPane\"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=xn&&Jt({pane:t})||fn&&Xt({pane:t}),this._paneRenderers[t]=i),i}});var wn=en.extend({initialize:function(t,i){en.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=z(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});xn.create=yn,xn.pointsToPath=k,nn.geometryToLayer=Wt,nn.coordsToLatLng=Ht,nn.coordsToLatLngs=Ft,nn.latLngToCoords=Ut,nn.latLngsToCoords=Vt,nn.getFeature=qt,nn.asFeature=Gt,Le.mergeOptions({boxZoom:!0});var Ln=Ze.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on(\"unload\",this._destroy,this)},addHooks:function(){V(this._container,\"mousedown\",this._onMouseDown,this)},removeHooks:function(){q(this._container,\"mousedown\",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ut(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),mi(),bt(),this._startPoint=this._map.mouseEventToContainerPoint(t),V(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=ht(\"div\",\"leaflet-zoom-box\",this._container),pt(this._container,\"leaflet-crosshair\"),this._map.fire(\"boxzoomstart\")),this._point=this._map.mouseEventToContainerPoint(t);var i=new P(this._point,this._startPoint),e=i.getSize();Lt(this._box,i.min),this._box.style.width=e.x+\"px\",this._box.style.height=e.y+\"px\"},_finish:function(){this._moved&&(ut(this._box),mt(this._container,\"leaflet-crosshair\")),fi(),Tt(),q(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(e(this._resetState,this),0);var i=new T(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire(\"boxzoomend\",{boxZoomBounds:i})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});Le.addInitHook(\"addHandler\",\"boxZoom\",Ln),Le.mergeOptions({doubleClickZoom:!0});var Pn=Ze.extend({addHooks:function(){this._map.on(\"dblclick\",this._onDoubleClick,this)},removeHooks:function(){this._map.off(\"dblclick\",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,o=t.originalEvent.shiftKey?e-n:e+n;\"center\"===i.options.doubleClickZoom?i.setZoom(o):i.setZoomAround(t.containerPoint,o)}});Le.addInitHook(\"addHandler\",\"doubleClickZoom\",Pn),Le.mergeOptions({dragging:!0,inertia:!zi,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var bn=Ze.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new Be(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on(\"predrag\",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on(\"predrag\",this._onPreDragWrap,this),t.on(\"zoomend\",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}pt(this._map._container,\"leaflet-grab leaflet-touch-drag\"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){mt(this._map._container,\"leaflet-grab\"),mt(this._map._container,\"leaflet-touch-drag\"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=z(this._map.options.maxBounds);this._offsetLimit=b(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire(\"movestart\").fire(\"dragstart\"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(e),this._times.push(i),this._prunePositions(i)}this._map.fire(\"move\",t).fire(\"drag\",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.xi.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,s=(n+i+e)%t-i-e,r=Math.abs(o+e)0?s:-s))-i;this._delta=0,this._startTime=null,r&&(\"center\"===t.options.scrollWheelZoom?t.setZoom(i+r):t.setZoomAround(this._lastMousePos,i+r))}});Le.addInitHook(\"addHandler\",\"scrollWheelZoom\",zn),Le.mergeOptions({tap:!0,tapTolerance:15});var Mn=Ze.extend({addHooks:function(){V(this._map._container,\"touchstart\",this._onDown,this)},removeHooks:function(){q(this._map._container,\"touchstart\",this._onDown,this)},_onDown:function(t){if(t.touches){if($(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new x(i.clientX,i.clientY),n.tagName&&\"a\"===n.tagName.toLowerCase()&&pt(n,\"leaflet-active\"),this._holdTimeout=setTimeout(e(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent(\"contextmenu\",i))},this),1e3),this._simulateEvent(\"mousedown\",i),V(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),q(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],e=i.target;e&&e.tagName&&\"a\"===e.tagName.toLowerCase()&&mt(e,\"leaflet-active\"),this._simulateEvent(\"mouseup\",i),this._isTapValid()&&this._simulateEvent(\"click\",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var i=t.touches[0];this._newPos=new x(i.clientX,i.clientY),this._simulateEvent(\"mousemove\",i)},_simulateEvent:function(t,i){var e=document.createEvent(\"MouseEvents\");e._simulated=!0,i.target._simulatedClick=!0,e.initMouseEvent(t,!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),i.target.dispatchEvent(e)}});Vi&&!Ui&&Le.addInitHook(\"addHandler\",\"tap\",Mn),Le.mergeOptions({touchZoom:Vi&&!zi,bounceAtZoomLimits:!0});var Cn=Ze.extend({addHooks:function(){pt(this._map._container,\"leaflet-touch-zoom\"),V(this._map._container,\"touchstart\",this._onTouchStart,this)},removeHooks:function(){mt(this._map._container,\"leaflet-touch-zoom\"),q(this._map._container,\"touchstart\",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),\"center\"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(e.add(n)._divideBy(2))),this._startDist=e.distanceTo(n),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),V(document,\"touchmove\",this._onTouchMove,this),V(document,\"touchend\",this._onTouchEnd,this),$(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,n=i.mouseEventToContainerPoint(t.touches[0]),o=i.mouseEventToContainerPoint(t.touches[1]),s=n.distanceTo(o)/this._startDist;if(this._zoom=i.getScaleZoom(s,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoomi.getMaxZoom()&&s>1)&&(this._zoom=i._limitZoom(this._zoom)),\"center\"===i.options.touchZoom){if(this._center=this._startLatLng,1===s)return}else{var r=n._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===s&&0===r.x&&0===r.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),g(this._animRequest);var a=e(i._move,i,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=f(a,this,!0),$(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,g(this._animRequest),q(document,\"touchmove\",this._onTouchMove),q(document,\"touchend\",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});Le.addInitHook(\"addHandler\",\"touchZoom\",Cn),Le.BoxZoom=Ln,Le.DoubleClickZoom=Pn,Le.Drag=bn,Le.Keyboard=Tn,Le.ScrollWheelZoom=zn,Le.Tap=Mn,Le.TouchZoom=Cn;var Zn=window.L;window.L=t,Object.freeze=$t,t.version=\"1.3.0\",t.noConflict=function(){return window.L=Zn,this},t.Control=Pe,t.control=be,t.Browser=$i,t.Evented=ui,t.Mixin=Ee,t.Util=ai,t.Class=v,t.Handler=Ze,t.extend=i,t.bind=e,t.stamp=n,t.setOptions=l,t.DomEvent=de,t.DomUtil=xe,t.PosAnimation=we,t.Draggable=Be,t.LineUtil=Oe,t.PolyUtil=Re,t.Point=x,t.point=w,t.Bounds=P,t.bounds=b,t.Transformation=Z,t.transformation=S,t.Projection=je,t.LatLng=M,t.latLng=C,t.LatLngBounds=T,t.latLngBounds=z,t.CRS=ci,t.GeoJSON=nn,t.geoJSON=Kt,t.geoJson=sn,t.Layer=Ue,t.LayerGroup=Ve,t.layerGroup=function(t,i){return new Ve(t,i)},t.FeatureGroup=qe,t.featureGroup=function(t){return new qe(t)},t.ImageOverlay=rn,t.imageOverlay=function(t,i,e){return new rn(t,i,e)},t.VideoOverlay=an,t.videoOverlay=function(t,i,e){return new an(t,i,e)},t.DivOverlay=hn,t.Popup=un,t.popup=function(t,i){return new un(t,i)},t.Tooltip=ln,t.tooltip=function(t,i){return new ln(t,i)},t.Icon=Ge,t.icon=function(t){return new Ge(t)},t.DivIcon=cn,t.divIcon=function(t){return new cn(t)},t.Marker=Xe,t.marker=function(t,i){return new Xe(t,i)},t.TileLayer=dn,t.tileLayer=Yt,t.GridLayer=_n,t.gridLayer=function(t){return new _n(t)},t.SVG=xn,t.svg=Jt,t.Renderer=mn,t.Canvas=fn,t.canvas=Xt,t.Path=Je,t.CircleMarker=$e,t.circleMarker=function(t,i){return new $e(t,i)},t.Circle=Qe,t.circle=function(t,i,e){return new Qe(t,i,e)},t.Polyline=tn,t.polyline=function(t,i){return new tn(t,i)},t.Polygon=en,t.polygon=function(t,i){return new en(t,i)},t.Rectangle=wn,t.rectangle=function(t,i){return new wn(t,i)},t.Map=Le,t.map=function(t,i){return new Le(t,i)}});\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(57), __webpack_require__(34), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (localeValidator, GeopolViewService, utils) {\n 'use strict';\n\n var roadUseValues = ['LimitedAccess', 'Arterial', 'Terminal', 'Ramp', 'Rotary', 'LocalStreet'],\n routingGuidanceLanguageValues = ['ar', 'af-ZA', 'bg-BG', 'zh-TW', 'cs-CZ', 'da-DK', 'nl-NL', 'en-GB', 'en-US', 'fi-FI', 'fr-FR', 'de-DE', 'el-GR', 'hu-HU', 'id-ID', 'it-IT', 'ko-KR', 'lt-LT', 'ms-MY', 'nb-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sk-SK', 'sl-SI', 'es-ES', 'es-MX', 'sv-SE', 'th-TH', 'tr-TR'],\n trafficIncidentsLanguageValues = ['ca', 'cs', 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'nl', 'no', 'pl', 'pt', 'sk', 'sv', 'tr'],\n\n\n // Up-to-date list available on:\n // https://developer.tomtom.com/search-api/search-api-documentation/supported-languages\n supportedLanguageCodes = ['af-ZA', 'ar', 'bg-BG', 'ca-ES', 'zh-CN', 'zh-TW', 'cs-CZ', 'da-DK', 'nl-BE', 'nl-NL', 'en-AU', 'en-NZ', 'en-GB', 'en-US', 'et-EE', 'fi-FI', 'fr-CA', 'fr-FR', 'de-DE', 'el-GR', 'hr-HR', 'hu-HU', 'it-IT', 'lv-LV', 'lt-LT', 'ms-MY', 'no-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sk-SK', 'sl-SI', 'es-ES', 'es-419', 'sv-SE', 'tr-TR', 'eu-ES', 'gl-ES', 'he-IL', 'id-ID', 'kk-KZ', 'ro-RO', 'sr-RS', 'th-TH', 'uk-UA', 'vi-VN'];\n\n function isDateRfc3339(dateString) {\n return (/(\\d\\d\\d\\d)(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))/.test(dateString.toString())\n );\n }\n\n function validateAgainstSetOfValues(value, arrayOfValues, messageIfNotFound) {\n if (arrayOfValues.indexOf(value) === -1) {\n throw new TypeError(messageIfNotFound);\n }\n return value;\n }\n\n function hasBoundingBoxFields(bbox) {\n return bbox.hasOwnProperty('minLon') && bbox.hasOwnProperty('maxLon') && bbox.hasOwnProperty('minLat') && bbox.hasOwnProperty('maxLat');\n }\n\n function checkBBoxNormalized(bbox) {\n return parseFloat(bbox.maxLat) <= parseFloat(bbox.minLat) || parseFloat(bbox.maxLon) <= parseFloat(bbox.minLon);\n }\n\n function isNumberInInterval(numValue, min, max) {\n return isFinite(numValue) && numValue > min && numValue <= max;\n }\n\n function checkArray(array) {\n return array.constructor.toString().indexOf('Array') < 0;\n }\n\n function throwTypeErrorWhen(condition, message) {\n if (condition) {\n throw new TypeError(message);\n }\n }\n\n function isPointValid(point) {\n if (!utils.isString(point) || !utils.pointRegex.test(point)) {\n throw new TypeError('A point is expected, but ' + point + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n }\n return true;\n }\n\n function checkLongitude(value) {\n var numValue = parseFloat(value);\n if (!isNumberInInterval(numValue, -180, 180)) {\n throw new TypeError('an longitude <-180,180> is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n }\n return numValue;\n }\n\n function checkLatitude(value) {\n var numValue = parseFloat(value);\n if (!isNumberInInterval(numValue, -90, 90)) {\n throw new TypeError('an latitude <-90,90> is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n }\n return numValue;\n }\n\n function checkPointObjectOrArray(point) {\n var lat, lon;\n if (Array.isArray(point)) {\n if (!(point.length === 2 && point.filter(isFinite).length === 2)) {\n throw new TypeError('Ivalid point array in route points');\n }\n lat = point[0];\n lon = point[1];\n } else {\n if (!(isFinite(point.lat) && (isFinite(point.lon) || isFinite(point.lng)))) {\n throw new TypeError('Ivalid point object in route points');\n }\n lat = point.lat;\n lon = typeof point.lon !== 'undefined' ? point.lon : point.lng;\n }\n\n if (!(typeof lat === 'number' || lat instanceof Number) || !(typeof lon === 'number' || lon instanceof Number)) {\n throw new TypeError('Lat and lon components of point should be finite numbers');\n }\n\n checkLongitude(lon);\n checkLatitude(lat);\n }\n\n function validateNumberInInterval(min, max, errorMsg, integerRequired) {\n if (utils.isValueNil(min) || utils.isValueNil(max)) {\n throw new TypeError('Number in interval validator requires min and max value parameters');\n }\n\n return function (value) {\n var numValue = parseFloat(value);\n\n if (!isNumberInInterval(numValue, min, max) || integerRequired && !Number.isInteger(numValue)) {\n throw new TypeError(errorMsg + ', but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n }\n\n return numValue;\n };\n }\n\n function validateIntInInterval(min, max, errorMsg) {\n return validateNumberInInterval(min, max, errorMsg, true);\n }\n\n return {\n\n /**\n * @ignore\n * Casts to boolean\n * @param {*} value\n * @return {Boolean} casted value\n */\n bool: function bool(value) {\n return value === 'false' ? false : Boolean(value);\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a float number\n * @param {*} value The value\n * @return {Number} value\n * @throws {TypeError} for invalid parameter\n */\n number: function number(value) {\n var numValue = parseFloat(value);\n if (!isFinite(numValue)) {\n throw new TypeError('a number is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n }\n return numValue;\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a integer greater than or equal 0\n * @param {*} value The value\n * @return {Number} value\n * @throws {TypeError} for invalid parameter\n */\n naturalInteger: function naturalInteger(value) {\n var numValue = parseFloat(value);\n if (!Number.isInteger(numValue) || numValue < 0) {\n throw new TypeError('a natural integer (greater than or equal 0) is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n }\n return numValue;\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a integer greater than 0\n * @param {*} value The value\n * @return {Number} value\n * @throws {TypeError} for invalid parameter\n */\n positiveInteger: function positiveInteger(value) {\n var numValue = parseFloat(value);\n if (!Number.isInteger(numValue) || numValue <= 0) {\n throw new TypeError('a positive integer (greater than 0) is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n }\n return numValue;\n },\n\n integer: function integer(value) {\n var numValue = parseFloat(value);\n if (!Number.isInteger(numValue)) {\n throw new TypeError('an integer is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n }\n return numValue;\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a longitude and casts to proper interval <-180, 180>\n * @param {*} value\n * @return {Number} value\n * @throws {TypeError} for invalid parameter\n */\n longitude: checkLongitude,\n\n /**\n * @ignore\n * Check whether the given parameter is a latitude and casts to proper interval <-90, 90>\n * @param {*} value\n * @return {Number} value\n * @throws {TypeError} for invalid parameter\n */\n latitude: checkLatitude,\n\n /**\n * @ignore\n * Check whether the given parameter is a valid bounding box. Allows to contain whole world and a half on each\n * side.\n * @param {*} bbox The bounding box\n * @return {Object} bbox\n * @throws {TypeError} for invalid parameter\n */\n boundingBox: function boundingBox(bbox) {\n throwTypeErrorWhen(!hasBoundingBoxFields(bbox), 'a bounding box is expected, but ' + bbox + ' [' + (typeof bbox === 'undefined' ? 'undefined' : _typeof(bbox)) + '] given');\n\n throwTypeErrorWhen(!isNumberInInterval(bbox.minLat, -90, 90), 'a bounding box minimal latitude is expected ' + bbox.minLat + ' [' + _typeof(bbox.minLat) + '] given');\n\n throwTypeErrorWhen(!isNumberInInterval(bbox.maxLat, -90, 90), 'a bounding box maximal latitude is expected ' + bbox.maxLat + ' [' + _typeof(bbox.maxLat) + '] given');\n\n throwTypeErrorWhen(!isNumberInInterval(bbox.minLon, -270, 180), 'a bounding box minimal longitude is expected ' + bbox.minLon + ' [' + _typeof(bbox.minLon) + '] given');\n\n throwTypeErrorWhen(!isNumberInInterval(bbox.maxLon, -180, 270), 'a bounding box maximal longitude is expected ' + bbox.maxLon + ' [' + _typeof(bbox.maxLon) + '] given');\n\n throwTypeErrorWhen(checkBBoxNormalized(bbox), 'a bounding box expected but max <= min');\n\n return bbox;\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a float number in proper interval \n * @example\n * var numberBetweenMinusFiveAndFive = validators.numberInInterval(-5,5);\n * numberBetweenMinusFiveAndFive(-10); // false\n * numberBetweenMinusFiveAndFive(3); //true\n *\n * @param {Number} [min] The minimal value\n * @param {Number} [max] The maximal value\n * @return {Function} validator function that checks type and value range\n * @throws {TypeError} when missing min or max value\n */\n numberInInterval: function numberInInterval(min, max) {\n return validateNumberInInterval(min, max, 'a number in interval <' + min + ', ' + max + '> is expected');\n },\n\n /**\n * @ignore\n * Check whether the given parameter is an integer number in proper interval \n * @example\n * var numberBetweenMinusFiveAndFive = validators.numberInInterval(-5,5);\n * numberBetweenMinusFiveAndFive(-10); // false\n * numberBetweenMinusFiveAndFive(3); //true\n *\n * @param {Number} [min] The minimal value\n * @param {Number} [max] The maximal value\n * @return {Function} validator function that checks type and value range\n * @throws {TypeError} when missing min or max value\n */\n integerInInterval: function integerInInterval(min, max) {\n return validateIntInInterval(min, max, 'an integer in interval <' + (min + 1) + ', ' + max + '> is expected');\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a string\n * @param {String} string\n * @return {String} value\n * @throws {TypeError} for non strings\n */\n string: function string(_string) {\n if (!utils.isString(_string)) {\n throw new TypeError('a string is expected, but ' + _string + ' [' + (typeof _string === 'undefined' ? 'undefined' : _typeof(_string)) + '] given');\n }\n return _string;\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a geometries zoom value<0, 22>\n * @param {Number} geometriesZoom\n * @return {Number} value\n * @throws {TypeError} for non invalid parameter\n */\n geometriesZoom: function geometriesZoom(_geometriesZoom) {\n return validateNumberInInterval(0, 22, 'a geometries zoom value <0, 22> is expected')(_geometriesZoom);\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a zoom level value<0, 18>\n * @param {Number} zoomLevel\n * @return {Number} value\n * @throws {TypeError} for non invalid parameter\n */\n zoomLevel: function zoomLevel(_zoomLevel) {\n return validateIntInInterval(0, 18, 'zoom level <0, 18> is expected')(_zoomLevel);\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a function\n * @param {Function} fun\n * @return {Function} fun\n * @throws {TypeError} for non function\n */\n functionType: function functionType(fun) {\n if (typeof fun !== 'function') {\n throw new TypeError('a function is expected, but ' + fun + ' [' + (typeof fun === 'undefined' ? 'undefined' : _typeof(fun)) + '] given');\n }\n return fun;\n },\n\n /**\n * @ignore\n * Checks whether the given country name uses ISO 3166 alpha-3 or alpha-2 format.\n * @param {String} name\n * @return {String} name\n * @throws {TypeError} if the country name is not valid\n */\n countryCode: function countryCode(name) {\n if (!(utils.isString(name) && (name.length === 3 || name.length === 2))) {\n throw new TypeError('a 2 or 3-characters long country name is expected, but ' + name + ' [' + (typeof name === 'undefined' ? 'undefined' : _typeof(name)) + '] given');\n }\n return name;\n },\n\n /**\n * @ignore\n * Checks whether the given language code belongs to predefined set of supported language codes\n * which is a subset of the IETF language tags.\n * @param {String|undefined} langCode\n * @return {String}\n */\n languageCode: function languageCode(langCode) {\n if (!utils.isString(langCode) || supportedLanguageCodes.indexOf(langCode) < 0) {\n throw new TypeError('One of pre-defined language codes was expected: ' + supportedLanguageCodes + ', but ' + langCode + ' [' + (typeof langCode === 'undefined' ? 'undefined' : _typeof(langCode)) + '] given');\n }\n return langCode;\n },\n\n /**\n * @ignore\n * Checks whether the given country name's list use ISO 3166 alpha-3 or alpha-2 format.\n * @param {String|Array} value\n * @return {String} list\n * @throws {TypeError} if one of the country names is not valid\n */\n countrySet: function countrySet(value) {\n var stringValue;\n throwTypeErrorWhen(!utils.isString(value) && checkArray(value), 'An array of string country names or string (divided with commas) of country ' + 'names (two or three-characters long) is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n\n stringValue = utils.isString(value) ? value : value.join();\n throwTypeErrorWhen(!stringValue.match(/^([a-zA-z]{2,3},)*[a-zA-z]{2,3}$/), 'An array of string country names or string (divided with commas) of country ' + 'names (two or three-characters long) is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n\n return stringValue;\n },\n\n /**\n * @ignore\n * Checks whether the given country name's list use ISO 3166 alpha-3 or alpha-2 format.\n * @param {Boolean} allowEmpty Specifies that it allows empty array as a valid value\n * @param {String|Array} value\n * @return {String} list\n * @throws {TypeError} if one of the country names is not valid\n */\n countrySetAlpha3: function countrySetAlpha3(allowEmpty, value) {\n var stringValue;\n throwTypeErrorWhen(!utils.isString(value) && checkArray(value), 'An array of string country names or string (divided with commas) of country ' + 'names (three-characters long) is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n\n stringValue = utils.isString(value) ? value : value.join();\n if (allowEmpty && stringValue === '') {\n return value;\n }\n throwTypeErrorWhen(!stringValue.match(/^([a-zA-z]{3},)*[a-zA-z]{3}$/), 'An array of string country names or string (divided with commas) of country ' + 'names (three-characters long) is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n\n return value;\n },\n\n /**\n * @ignore\n * Checks whether the given point is in proper format\n * @param {String} value\n * @return {String} value\n * @throws {TypeError} if the given value is in not valid format\n */\n point: function point(value) {\n isPointValid(value);\n return value;\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a positive integer (greater than 0) and lower than 3\n * @param {Number} value The value\n * @return {Number} value\n * @throws {TypeError} for invalid parameter\n */\n fuzzinessLevel: function fuzzinessLevel(value) {\n return validateIntInInterval(0, 4, 'Fuzziness level value (a positive integer lower than 5) is expected')(value);\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a positive integer (greater than 0) and lower than 100\n * @param {Number} value The value\n * @return {Number} value\n * @throws {TypeError} for invalid parameter\n */\n limit: function limit(value) {\n return validateIntInInterval(0, 100, 'Limit value (a positive integer lower than 100) is expected')(value);\n },\n\n /**\n * @ignore\n * Check whether the given parameter is an offset - positive integer <0, 1900>\n * @param {Number} value The value\n * @return {Number} value\n * @throws {TypeError} for invalid parameter\n */\n offset: function offset(value) {\n return validateIntInInterval(-1, 1900, 'Offset an integer value <0, 1900> is expected')(value);\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a plain object (array and functions aren't accepted)\n * @param {Object} object\n * @return {Object} object\n * @throws {TypeError} for non object\n */\n plainObject: function plainObject(object) {\n if ((typeof object === 'undefined' ? 'undefined' : _typeof(object)) !== 'object' || object.constructor !== Object) {\n throw new TypeError('an object is expected, but ' + object + ' [' + (typeof object === 'undefined' ? 'undefined' : _typeof(object)) + '] given');\n }\n return object;\n },\n\n /**\n * @ignore\n * Check whether the given parameter is an array (objects and functions aren't accepted)\n * @param {Array} array\n * @return {Array} array\n * @throws {TypeError} for non array\n */\n arrayType: function arrayType(array) {\n if (checkArray(array)) {\n throw new TypeError('an array is expected, but ' + array + ' [' + (typeof array === 'undefined' ? 'undefined' : _typeof(array)) + '] given');\n }\n return array;\n },\n\n arrayOf: function arrayOf(options) {\n return function (values) {\n values.forEach(function (value) {\n var key;\n for (key in options) {\n if (options.hasOwnProperty(key)) {\n if (value.hasOwnProperty(key) && typeof options[key].validator === 'function') {\n value[key] = options[key].validator(value[key]);\n }\n\n if (options[key].required === true && !value.hasOwnProperty(key)) {\n throw new Error('Missing required ' + key);\n }\n }\n }\n });\n return values;\n };\n },\n\n objectOf: function objectOf(options) {\n return function (value) {\n var key;\n for (key in options) {\n if (options.hasOwnProperty(key)) {\n if (value.hasOwnProperty(key) && typeof options[key].validator === 'function') {\n value[key] = options[key].validator(value[key]);\n }\n if (options[key].required === true && !value.hasOwnProperty(key)) {\n throw new Error('Missing required ' + key);\n }\n }\n }\n return value;\n };\n },\n\n roadUse: function roadUse(value) {\n var elements, i;\n throwTypeErrorWhen(!utils.isString(value) || !value.match(/^\\[(\"\\w*\",?)+\\]$/), 'Road use is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n\n elements = value.replace(/[\"[\\]]/g, '').split(',');\n for (i = 0; i < elements.length; i += 1) {\n throwTypeErrorWhen(roadUseValues.indexOf(elements[i]) < 0, 'Road use (' + roadUseValues + ') is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n }\n return value;\n },\n\n oneOfValue: function oneOfValue(values, paramName) {\n return function (value) {\n var message = 'Supported ' + paramName + ' is expected (one of: ' + values + '), but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given';\n return validateAgainstSetOfValues(value, values, message);\n };\n },\n\n arrayOfValues: function arrayOfValues(values, paramName) {\n return function (value) {\n var i;\n var message = 'Supported ' + paramName + ' type is expected (array with one of: ' + values + '), but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given';\n if (checkArray(value)) {\n throw new TypeError('an array is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n }\n for (i = 0; i < value.length; i += 1) {\n validateAgainstSetOfValues(value[i], values, message);\n }\n return value;\n };\n },\n\n /**\n * @ignore\n * Checks whether the given departure time is now or in proper rfc3339 format ( 1996-12-19T16:39:57 or\n * 1996-12-19T16:39:57-08:00 ):\n * @param {String} value\n * @return {String} value\n * @throws {TypeError} if the given value is not valid\n */\n departAt: function departAt(value) {\n if (value === 'now' || isDateRfc3339(value) && Date.now() < Date.parse(value)) {\n return value;\n } else {\n throw new TypeError('Supported departAt is now or rfc3339 format and no earlier than now(), but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n }\n },\n\n /**\n * @ignore\n * Checks whether the given arrive time is in proper rfc3339 format ( 1996-12-19T16:39:57 or\n * 1996-12-19T16:39:57-08:00 ):\n * @param {String} value\n * @return {String} value\n * @throws {TypeError} if the given value is not valid\n */\n arriveAt: function arriveAt(value) {\n if (isDateRfc3339(value) && Date.now() < Date.parse(value)) {\n return value;\n } else {\n throw new TypeError('Supported arriveAt is rfc3339 format, but and no earlier than now() ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n }\n },\n\n dateRfc3339: function dateRfc3339(value) {\n if (isDateRfc3339(value)) {\n return value;\n } else {\n throw new TypeError('Expecting date in RFC3339 format, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n }\n },\n\n routingGuidanceLanguage: function routingGuidanceLanguage(value) {\n var message = 'Supported routing guidance language is expected to be one of: ' + routingGuidanceLanguageValues + '), but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given';\n return validateAgainstSetOfValues(value, routingGuidanceLanguageValues, message);\n },\n\n trafficIncidentsLanguage: function trafficIncidentsLanguage(value) {\n var message = 'Supported traffic incidents language is expected to be one of: ' + trafficIncidentsLanguageValues + '), but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given';\n return validateAgainstSetOfValues(value, trafficIncidentsLanguageValues, message);\n },\n\n /**\n * @ignore\n * Checks whether the given routing locations is in proper format:\n * circle A circle with a center point and a radius (in meters).\n * The radius must be a positive integer with the maximum value of 20050000. Note that larger integer values\n * will not be rejected but lowered to the maximum value. circle(52.37245,4.89406,10000) location A point or\n * a circle.\n * 52.37245,4.89406\n * circle(52.37245,4.89406,10000)\n * @param {String} value\n * @return {String} value\n * @throws {TypeError} if the given value is not valid\n */\n routingLocations: function routingLocations(value) {\n var point = utils.pointRegex,\n circle = utils.circleRegex,\n routingLocation;\n\n if (value.constructor.toString().indexOf('Array') > -1) {\n value = value.join(':');\n }\n\n routingLocation = new RegExp('^' + point.source + ':(?:(?:' + point.source + '|' + circle.source + '):)*' + point.source + '$');\n if (!value.match(routingLocation)) {\n throw new TypeError('Routing location is expected. But ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n }\n return value;\n },\n\n /**\n * @ignore\n * Checks whether the given input is in proper circle format:\n * circle A circle with a center point and a radius (in meters).\n * The radius must be a positive integer with the maximum value of 20050000. Note that larger integer values\n * will not be rejected but lowered to the maximum value. circle(52.37245,4.89406,10000)\n * @param {String} value\n * @return {String} value\n * @throws {TypeError} if the given value is not valid\n */\n circle: function circle(value) {\n var match;\n throwTypeErrorWhen(!utils.isString(value), 'Expecting circle but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n\n match = value.match(/circle\\(-?\\d*(?:\\.\\d*)?\\s*,\\s*-?\\d*(?:\\.\\d*)?\\s*,\\s*(\\d+)\\)/);\n throwTypeErrorWhen(!match || parseFloat(match[1]) > 20050000, 'Expecting circle but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n\n return value;\n },\n\n /**\n * @ignore\n * Checks whether the given input is in proper geometry list format.\n * Geometry list represents list of figures (polygons or circles) objects.\n * Circle contains properties like: type (\"CIRCLE\"), position (lat & lon) and radius.\n * Polygon contains properties like: type (\"POLYGON\") and vertices (as a list of points).\n *\n * @param {Array} value\n * @return {Array} value\n * @throws {TypeError} if the given value is not valid\n */\n geometryList: function geometryList(value) {\n var i, geoObject;\n throwTypeErrorWhen(checkArray(value), 'An array of geometry objects is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n\n if (value.length > 0) {\n for (i = 0; i < value.length; i += 1) {\n geoObject = value[i];\n throwTypeErrorWhen(!geoObject.hasOwnProperty('type') || !geoObject.hasOwnProperty('vertices') && (!geoObject.hasOwnProperty('position') || !geoObject.hasOwnProperty('radius')), 'An array of geometry objects is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n }\n } else {\n throw new TypeError('An array of geometry objects is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n }\n return value;\n },\n locale: function locale(serviceType) {\n /**\n * @ignore\n * Checks whether provided value is a valid language code for given serviceType\n * @param {String} value language code to be validated\n * @return {String} provided value if it's valid\n * @throws {TypeError} if the given value is not valid\n */\n return function (value) {\n throwTypeErrorWhen(!localeValidator(value, serviceType), 'Provided language code \"' + value + '\" is not valid for a given service type: \"' + serviceType + '\"');\n return value;\n };\n },\n geopolView: function geopolView(serviceType, name) {\n if (!serviceType) {\n throw new Error('Please specify a service type.');\n }\n\n return function (value) {\n var supportedGeopolViews = GeopolViewService.getSupportedViews(serviceType, 'all').map(function (view) {\n return view.code;\n });\n\n throwTypeErrorWhen(supportedGeopolViews.indexOf(value) === -1, name + ': Provided geopolitical view code \"' + value + '\" is not valid');\n return value;\n };\n },\n\n /**\n * @ignore\n *\n * Checks if the given value has a property 'route' which is an array of points.\n * By array of points we mean array of an array of { lat, lon }, { lat, lng }, [ num, num ],\n * L.LatLng objects or mixed.\n *\n * @param {Object} value\n *\n * @return {Object} value Stringified array of figures (JSON format).\n * @throws {TypeError} if the given value is not valid\n */\n route: function route(value) {\n var points;\n\n if (typeof value.points !== 'undefined') {\n points = value.points;\n } else {\n throw new TypeError('Invalid structure of the route object');\n }\n\n if (points && !(Array.isArray(points) && points.length > 2)) {\n throw new TypeError('Provided route array ' + points + ' is not valid. It should be an array with at least 2 points.');\n }\n points.forEach(checkPointObjectOrArray);\n return value;\n },\n\n supportingPoints: function supportingPoints(value) {\n if (!utils.isArray(value)) {\n throw new TypeError('Invalid structure of the supporting points');\n }\n\n if (!value.length || value.length < 2) {\n throw new TypeError('There should be at least two supporting points');\n }\n return value;\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * This module extends the Leaflet library in order to display a TomTom map.\n *\n * For a full reference of the Leaflet map API check the official\n * Leaflet's documentation.\n *\n * We are using leaflet's version ${leaflet.version}.\n *\n * If you want to use vector source in the map the basePath must be specified.\n * Keep this in mind when you switch from raster to vector source, for example when opening our examples in CodePen,\n * otherwise the map will not render properly.\n *\n * Example of how to create a basic map instance:\n *\n * ```html\n * \n *\n *
\n *\n * \n * ```\n *\n * @class Map\n * @extends L.Map (Leaflet's)\n * @module Map\n * @namespace L\n * @constructor\n * @param {HTMLElement|String} id The div element or its id in which the map will be initialized.\n * @param {Object} [options] It accepts all the options that\n * Leaflet's Map\n * class allows.\n * The additional options, which are TomTom specific, are described below.\n * @param {String} [options.key] API key that can be obtained from\n * TomTom's developer portal.\n * When the key is passed on the map's initialization, it is set globally for all the services. It can be\n * overwritten with the `tomtom.key()` method globally or per service with `tomtom..key()` functions.\n * It is also possible to pass a specific key while working with instances of the services.\n * @param {\"main\"|\"night\"} [options.style=\"main\"] The base map style to be used.\n * @param {\"basic\"|\"hybrid\"|\"labels\"} [options.layer=\"basic\"] The base map's layer to be used.\n * @param {\"Unified\"|\"IN\"} [options.geopolView] Define the geopolitical view for the new map instance.\n * @param {Boolean|Object} [options.traffic] Allows to easily add the\n * {{#crossLink \"L.TomTomTrafficLayer\"}}{{/crossLink}} and\n * {{#crossLink \"L.TomTomTrafficIncidentsLayer\"}}{{/crossLink}} layers to the map. A value of this parameter can\n * be set to an options object as described in the traffic layer documentation.\n * If traffic layers are added with this option, a mechanism for periodic refresh of the traffic data is provided\n * (using a proper traffic model id handling). If you pass source parameter set to vector, {{#crossLink \"L.TomTomVectorTrafficIncidentsLayer\"}}{{/crossLink}}\n * will be added as a source for incident tiles instead of raster one.\n * @param {Boolean} [options.traffic.noRefresh] Disables periodic updates of traffic layers.\n * @param {Number} [options.traffic.refresh=30000] The traffic incidents information changes and needs to be updated\n * periodically. By default, it is refreshed every 30 seconds. This parameter's value represents the time\n * in milliseconds between each update interval. The value must be 0 or greater.\n * @param {Boolean|Object} [options.trafficFlow] Allows to add {{#crossLink \"L.TomTomTrafficFlowLayer\"}}{{/crossLink}}\n * to the map. A value of this parameter can be set to the options object as described in the traffic flow layer\n * documentation. If you specify source set to vector as one of the parameters it will add\n * {{#crossLink \"L.TomTomVectorTrafficFlowLayer\"}}{{/crossLink}} instead.\n * @param {Boolean|Object} [options.vectorTrafficFlow] Allows to add {{#crossLink \"L.TomTomVectorTrafficFlowLayer\"}}\n * {{/crossLink}} to the map. A value of this parameter can be set to the options object as described in the traffic\n * flow layer documentation.\n * @param {Boolean} [options.noLabelsOnTop=false] If a traffic or traffic flow layer is overlayed on the map, then by\n * default, the labels layer is added on top of these layers. It prevents labels from being covered by the traffic\n * tubes or traffic flow. With this option, it is possible to disable this behaviour.\n * @param {String|String[]} [options.source=\"raster\"] Sets the initial source and determines which tiles types will be\n * displayed (raster, vector). If an array is given first item is used as a default source and next items are\n * initialized but not displayed. If MapboxGL JS dependency is not met vector layer will not initialize.\n * @param {String} [options.glyphsUrl] Glyphs are fonts in PBF required to display labels on vector maps. The Url must\n * contain the {fontstack} and {range} tokens. The SDK distributable already contains the glyphs required by the default\n * vector styles - you just need to provide a path to them on your server.\n * Example of a URL format for this property:\n * ```javascript\n * \"http://yourdomain/glyphs/{fontstack}/{range}.pbf\"\n * ```\n * @param {String} [options.basePath = '/sdk'] Base path for sdk. It will be used in relative paths - it is especially\n * important for maps with vector sources. E.g if you set this option to `\"/myPath\"`, default urls for styles will\n * be set to `/myPath/styles/basic_main.json`.\n * This property is used only if you do not provide custom mapping for given url mapping.\n * @param {Object} [options.styleUrlMapping] Overrides the default URLs for vector style files.\n * The default value is as follows:\n * ```javascript\n * {\n * main: {\n * basic: '/sdk/styles/basic_main.json',\n * hybrid: '/sdk/styles/hybrid_main.json',\n * labels: '/sdk/styles/labels_main.json'\n * },\n * night: {\n * basic: '/sdk/styles/basic_night.json',\n * hybrid: '/sdk/styles/hybrid_night.json',\n * labels: '/sdk/styles/labels_night.json'\n * }\n * }\n * ```\n * @param {String} [options.spriteUrl] Set the base URL for the sprite image and metadata. The extensions .png, .json\n * and scale factor will be appended at the end of URL automatically. The sprite URL is required to display icons\n * like road shields on vector maps.\n * Example of a URL format for this property:\n * ```javascript\n * \"http://yourdomain/sprite/sprite\"\n * ```\n * @param {Boolean} [options.zoomControl=true] Show a zoom control at the top left corner of the map.\n * @param {Boolean} [options.panControl=false] Enable the pan controls at the top left corner of the map.\n * @param {Boolean} [options.zoomsliderControl=false] Shows a vertical slider to control the zoom level.\n * It is recommended to disable the default zoom control option (`zoomControl=false`) when you use this feature.\n * @param {Boolean} [options.worldCopyJump=true]\n * @param {String} [options.language] Language to be used for map labels. Should be one of supported\n * IETF language tags described\n * here.\n * When data in specified language is not available for a specific label,\n * default language\n * is used.\n */\n/* eslint-enable max-len */\n\n/* This method is implemented in staticMapImageFactory.js but documented here due to a\n yuidoc's bug in the @for tag */\n/**\n * Returns an URL string to obtain an static image version of the current map's viewport.\n *\n * This method uses the {{#crossLink \"StaticMapImage\"}}{{/crossLink}} class to generate an URL to get static image\n * based on the configuration of the current map's instance.\n *\n * @method getStaticMapUrl\n * @return {String} An URL string to the image\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(21), __webpack_require__(109), __webpack_require__(27), __webpack_require__(5), __webpack_require__(52), __webpack_require__(124), __webpack_require__(127), __webpack_require__(136), __webpack_require__(137), __webpack_require__(139), __webpack_require__(141), __webpack_require__(146), __webpack_require__(70), __webpack_require__(23), __webpack_require__(39), __webpack_require__(38), __webpack_require__(31), __webpack_require__(30), __webpack_require__(34), __webpack_require__(33), __webpack_require__(71), __webpack_require__(0), __webpack_require__(76), __webpack_require__(145)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, svgIcon, imagePath, mapboxProvider, security, copyrightCaption, copyright, trafficWithIncidents, trafficFlow, vectorTrafficFlow, vectorTrafficIncidents, labelsLayer, VectorLabelsLayer, tileLayer, VectorLayer, UnitService, globalUnitService, LocaleService, globalLocaleService, GeopolViewService, globalGeopolViewService, RoutingContext, utils, mapUtils) {\n 'use strict';\n\n var EVENTS = {\n /**\n * Fired when attribution was fully loaded. Loaded attribution is passed as event data.\n * @event ATTRIBUTION_LOAD_END\n * @type String\n */\n ATTRIBUTION_LOAD_END: 'tomtom.attributionloadend'\n };\n\n function roundZoom(map, source) {\n if (source === 'raster') {\n map.setZoom(Math.floor(map.getZoom()));\n }\n }\n\n L.Map.Events = EVENTS;\n\n L.Map.mergeOptions({\n worldCopyJump: true\n });\n\n delete L.Map.prototype.options.minZoom;\n delete L.Map.prototype.options.maxZoom;\n\n /**\n * Method allows to change a source data for currently shown map. It should be one of sources provided\n * at creation as a property 'options.source'\n *\n * @method setMapSource\n * @param {\"raster\"|\"vector\"} source\n */\n L.Map.prototype.setMapSource = function (source) {\n var baseLayers, map, requestedLayer, baseLayer;\n map = this;\n baseLayers = map._ttBaseLayers;\n requestedLayer = baseLayers[source];\n if (!requestedLayer) {\n return;\n }\n\n for (baseLayer in baseLayers) {\n if (baseLayers.hasOwnProperty(baseLayer)) {\n this.removeLayer(baseLayers[baseLayer]);\n }\n }\n\n roundZoom(map, source);\n\n map.addLayer(requestedLayer);\n };\n\n /**\n * @method getBaseLayers\n * @return {Object} Returns base layers initialized on map\n */\n L.Map.prototype.getBaseLayers = function () {\n return this._ttBaseLayers;\n };\n\n /**\n * Returns localeService which is bound to this map instance. Please note\n * that if you change value in globalLocaleService this one will be updated\n * too, but not other way around.\n * @method getLocaleService\n * @return {LocaleService}\n */\n L.Map.prototype.getLocaleService = function () {\n return this._localeService;\n };\n\n /**\n * Returns unitService which is bound to this map instance. Please note\n * that if you change the unit of the global UnitService instance this one will be updated\n * too, but not way around.\n * @method getUnitService\n * @return {UnitService}\n */\n L.Map.prototype.getUnitService = function () {\n return this._unitService;\n };\n\n /**\n * Returns the GeopolViewService instance which is bound to the map instance.\n * Please note that if you change the geopolitical view of the\n * global L.GeopolViewService instance this one will be updated too\n * but not way around.\n * @method getGeopolViewService\n * @return {GeopolViewService}\n */\n L.Map.prototype.getGeopolViewService = function () {\n return this._geopolViewService;\n };\n\n L.Control.Attribution.prototype.options = {\n position: 'bottomleft',\n prefix: ''\n };\n\n L.Icon.Default = svgIcon;\n L.Icon.Default.imagePath = imagePath.get();\n L.Marker.mergeOptions({ icon: new L.Icon.Default() });\n\n function removeInvalidSources(source) {\n var allowedSources = /^(raster|vector)$/;\n var sourceLenght = source.length;\n var validSource = [];\n var currentSource, i;\n\n for (i = 0; i < sourceLenght; i++) {\n currentSource = String(source[i]).toLowerCase();\n if (allowedSources.test(source[i])) {\n validSource.push(currentSource);\n }\n }\n\n return validSource;\n }\n\n function getSource(map) {\n var source = map.options.source || ['raster'];\n var defaultSource = ['raster'];\n\n if (utils.isString(source)) {\n source = [source];\n }\n\n source = removeInvalidSources(source);\n\n return source.length > 0 ? source : defaultSource;\n }\n\n function isOlderThanIE11() {\n return window.navigator.userAgent.indexOf('MSIE ') > -1;\n }\n\n function copyBasePathIfNeeded(map, property) {\n if (!map.options[property].basePath) {\n map.options[property].basePath = map.options.basePath;\n }\n }\n\n function initTrafficLayer(map) {\n if (map.options.traffic) {\n if (map.options.traffic.source && map.options.traffic.source === 'vector') {\n copyBasePathIfNeeded(map, 'traffic');\n map.addLayer(vectorTrafficIncidents(map.options.traffic));\n } else {\n map.addLayer(trafficWithIncidents(map.options.traffic));\n }\n }\n }\n\n function initTrafficFlowLayer(map) {\n var vectorLayerAdded = false;\n if (map.options.trafficFlow) {\n if (map.options.trafficFlow.source && map.options.trafficFlow.source === 'vector') {\n copyBasePathIfNeeded(map, 'trafficFlow');\n map.addLayer(vectorTrafficFlow(map.options.trafficFlow));\n vectorLayerAdded = true;\n } else {\n map.addLayer(trafficFlow(map.options.trafficFlow));\n }\n }\n if (map.options.vectorTrafficFlow && !vectorLayerAdded) {\n copyBasePathIfNeeded(map, 'vectorTrafficFlow');\n map.addLayer(vectorTrafficFlow(map.options.vectorTrafficFlow));\n }\n }\n\n function initLabelsLayers(map) {\n var source = getSource(map);\n var layerInstance;\n var vectorLabelsInstance;\n map._ttLabelsLayers = {};\n\n if (source.indexOf('raster') !== -1 && !map.options.noLabelsOnTop && !isOlderThanIE11()) {\n //This will not work on IE < 11 due to not supported CSS: pointer-events: none;\n layerInstance = labelsLayer(map.options);\n layerInstance.registerEventHandlers(map);\n L.stamp(layerInstance);\n map._ttLabelsLayers.raster = layerInstance;\n }\n\n if (source.indexOf('vector') !== -1 && !map.options.noLabelsOnTop && mapboxProvider.isMapboxSet()) {\n vectorLabelsInstance = new VectorLabelsLayer(map.options);\n vectorLabelsInstance.registerEventHandlers(map);\n L.stamp(vectorLabelsInstance);\n map._ttLabelsLayers.vector = vectorLabelsInstance;\n }\n }\n\n function initZoomFix(map) {\n var mac = navigator.platform === 'MacIntel';\n if (!mac) {\n return;\n }\n map._handlers.filter(function (handler) {\n return '_performZoom' in handler;\n }).forEach(function (handler) {\n var original = handler._performZoom;\n handler._performZoom = function () {\n handler._delta *= 13.25;\n original.apply(handler);\n };\n });\n }\n\n function createWebGLErrorDiv(map) {\n var div = L.DomUtil.create('div', 'tomtom-webgl-error');\n div.appendChild(document.createTextNode('Unable to initialize vector layer - browser doesn\\'t support WebGL!'));\n if (map._controlContainer) {\n map._controlContainer.appendChild(div);\n }\n }\n\n function isWebGlSupported() {\n var canvas = document.createElement('canvas');\n var webGlContext = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\n\n if (webGlContext && webGlContext instanceof WebGLRenderingContext) {\n return true;\n }\n\n return false;\n }\n\n function resolveMapboxSupport(map) {\n var defaultFallback = 'error';\n var allowedFallbacks = /^(error|raster)$/;\n var source = getSource(map);\n var fallback = map.options.vector ? String(map.options.vector.fallback).toLowerCase() : '';\n fallback = allowedFallbacks.test(fallback) ? fallback : defaultFallback;\n\n if (source.indexOf('vector') === -1 || mapboxProvider.isMapboxSupported() && isWebGlSupported()) {\n return;\n }\n\n switch (fallback) {\n case 'raster':\n map.options.source = ['raster'];\n break;\n case 'error':\n if (isWebGlSupported()) {\n throw new Error('MapBox failed to load. Make sure you\\'re using vector library.');\n }\n\n createWebGLErrorDiv(map);\n throw new Error('Unable to initialize vector layer - browser doesn\\'t support WebGL!');\n default:\n throw new Error('Something went wrong with vectorFallback!');\n }\n }\n\n function getMapOptionsWithGeopolView(map, mapLayer) {\n var options;\n if (!map.options.geopolView) {\n return map.options;\n }\n options = utils.clone(map.options);\n options.geopolView = map._geopolViewService.getCurrentGeopolView().getValueFor('maps', mapLayer);\n return options;\n }\n\n function recreateLayer(layer) {\n var map = this,\n currentLayer = map._ttBaseLayers ? map._ttBaseLayers[layer] : undefined,\n newLayer;\n /**\n * @ignore\n * Even if we do not make layer active right now, we need to keep up-to-date reference of\n * vector/raster layer. There is a public method 'getBaseLayers()' which is used in map-style.html\n * example, which uses those references to change between vector and raster.\n * So, if we change language while raster is active, vector/raster should be updated too,\n * in case when user wants to add layer using those references\n */\n if (currentLayer) {\n newLayer = layer === 'vector' ? new VectorLayer(getMapOptionsWithGeopolView(map, 'vector')) : new L.TomTomLayer(getMapOptionsWithGeopolView(map, 'raster'));\n L.stamp(newLayer);\n map._ttBaseLayers[layer] = newLayer;\n if (mapUtils.findLayersByName(layer, map).length > 0) {\n map.addLayer(newLayer);\n map.removeLayer(currentLayer);\n }\n }\n }\n\n function mapLocaleChangedHandler(locale) {\n this.options.language = locale.getValueFor('maps');\n recreateLayer.call(this, 'vector');\n recreateLayer.call(this, 'raster');\n }\n\n function mapGeopolViewChangedHandler(geopolView) {\n this.options.geopolView = geopolView.getCode();\n recreateLayer.call(this, 'vector');\n recreateLayer.call(this, 'raster');\n }\n\n function initBaseLayer(map) {\n var source = getSource(map);\n var layers = [];\n var i;\n map._ttBaseLayers = {};\n\n if (source.indexOf('raster') !== -1) {\n map._ttBaseLayers.raster = tileLayer(getMapOptionsWithGeopolView(map, 'raster'));\n L.stamp(map._ttBaseLayers.raster);\n }\n\n if (mapboxProvider.tryToSetMapbox() && source.indexOf('vector') !== -1) {\n map._ttBaseLayers.vector = new VectorLayer(getMapOptionsWithGeopolView(map, 'vector'));\n L.stamp(map._ttBaseLayers.vector);\n }\n\n for (i = 0; i < map.options.layers.length; i++) {\n if (map.options.layers[i].wmsParams) {\n layers.push(L.tileLayer.wms(map.options.layers[i]._url, map.options.layers[i].wmsParams));\n }\n }\n\n if (!layers.length) {\n switch (source[0]) {\n case 'vector':\n if (map._ttBaseLayers.vector === undefined) {\n throw new Error('Can not add vector layer. Mapbox-gl-js dependency not met.');\n }\n layers = [map._ttBaseLayers.vector];\n break;\n case 'raster':\n layers = [map._ttBaseLayers.raster];\n break;\n default:\n throw new Error('Something went wrong with sources!');\n }\n }\n\n map.options.layers = layers;\n }\n\n /**\n * @ignore\n * This function ensures that the custom zoom configuration given by the user has the correct format.\n * It convert string numbers to numbers. That's all.\n * @param {L.Map} map\n */\n function initZoomConfig(map) {\n if (isFinite(map.options.zoomDelta)) {\n map.options.zoomDelta = parseFloat(map.options.zoomDelta);\n }\n if (isFinite(map.options.zoomSnap)) {\n map.options.zoomSnap = parseFloat(map.options.zoomSnap);\n }\n if (isFinite(map.options.wheelPxPerZoomLevel)) {\n map.options.wheelPxPerZoomLevel = parseInt(map.options.wheelPxPerZoomLevel, 10);\n }\n }\n\n function initRoutingContext(map) {\n map._routingContext = new RoutingContext();\n }\n\n function cleanUp(map) {\n map._localeService.cleanEvents();\n map._geopolViewService.cleanEvents();\n }\n\n function installUnitServiceSupport(map) {\n map._unitService = new UnitService(globalUnitService);\n }\n\n function installLocaleServiceSupport(map) {\n map._localeService = new LocaleService(globalLocaleService);\n map._localeService.on(L.LocaleService.Events.LOCALE_CHANGED, mapLocaleChangedHandler.bind(map));\n map._localeService.setCurrentLocale(map.options.language);\n map.options.language = map._localeService.getCurrentLocale().getLanguageCode();\n }\n\n function installGeopolViewServiceSupport(map) {\n map._geopolViewService = new GeopolViewService(globalGeopolViewService);\n map._geopolViewService.on(L.GeopolViewService.Events.GEOPOL_VIEW_CHANGED, mapGeopolViewChangedHandler.bind(map));\n if (map.options.geopolView) {\n map._geopolViewService.setCurrentGeopolView(map.options.geopolView);\n }\n }\n\n function initHook() {\n var map = this,\n attributionMarkup = '',\n originalAddAttribution;\n L.Icon.Default.imagePath = imagePath.get(this);\n installUnitServiceSupport(map);\n installLocaleServiceSupport(map);\n installGeopolViewServiceSupport(map);\n try {\n resolveMapboxSupport(map);\n security.setKey(map.options.key);\n initZoomConfig(map);\n initBaseLayer(map);\n initLabelsLayers(map);\n initTrafficFlowLayer(map);\n initTrafficLayer(map);\n initRoutingContext(map);\n initZoomFix(map);\n\n if (map.getZoom() === undefined) {\n map.setView([0, 0], 2);\n }\n if (!map.options.maxBounds) {\n map.setMaxBounds(L.latLngBounds([[-90, -18000], [90, 18000]]));\n }\n copyrightCaption().go(function (attribution) {\n if (map.attributionControl) {\n originalAddAttribution = map.attributionControl.addAttribution;\n map.attributionControl.addAttribution = function () {\n originalAddAttribution.apply(this, arguments);\n copyright.updateEventHandler(map);\n };\n\n attributionMarkup += '';\n attributionMarkup += attribution;\n attributionMarkup += '';\n map.attributionControl.addAttribution(attributionMarkup);\n map.fire(L.Map.Events.ATTRIBUTION_LOAD_END, { data: attributionMarkup });\n }\n });\n } catch (err) {\n console.error(err);\n cleanUp(map);\n throw err;\n }\n }\n\n L.Map.addInitHook(initHook);\n\n return L;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(0), __webpack_require__(32)], __WEBPACK_AMD_DEFINE_RESULT__ = function (utils, Locale) {\n 'use strict';\n\n var trafficIncidentsLanguageMapping, routingGuidanceLanguageMapping;\n\n function isFunction(fun) {\n return typeof fun === 'function';\n }\n\n function isArray(array) {\n if (!array) {\n return false;\n }\n return array.constructor.toString().indexOf('Array') > -1;\n }\n\n function isLatLon(latlon) {\n return latlon.hasOwnProperty('lat') && (latlon.hasOwnProperty('lon') || latlon.hasOwnProperty('lng'));\n }\n\n function or(first, second) {\n if (first === undefined) {\n return second;\n }\n return first;\n }\n\n function signOfNumber(val) {\n return val < 0 ? -1 : 1;\n }\n\n function throwTypeErrorWhen(condition, message) {\n if (condition) {\n throw new TypeError(message);\n }\n }\n\n function normalizeLatitude(latitude) {\n var numLatitude = parseFloat(latitude);\n var i;\n if (!isFinite(numLatitude)) {\n throw new TypeError('an number is expected, but ' + latitude + ' [' + (typeof latitude === 'undefined' ? 'undefined' : _typeof(latitude)) + '] given');\n }\n if (numLatitude < -90 || numLatitude > 90) {\n i = Math.ceil(Math.abs(numLatitude) / 180);\n return numLatitude - signOfNumber(numLatitude) * 180 * i;\n }\n return numLatitude;\n }\n\n function normalizeLongitude(longitude) {\n var numLongitude = parseFloat(longitude);\n var i;\n if (!isFinite(numLongitude)) {\n throw new TypeError('an number is expected, but ' + longitude + ' [' + (typeof longitude === 'undefined' ? 'undefined' : _typeof(longitude)) + '] given');\n }\n if (numLongitude < -180 || numLongitude > 180) {\n i = Math.ceil(Math.abs(numLongitude) / 360);\n return numLongitude - signOfNumber(numLongitude) * 360 * i;\n }\n return numLongitude;\n }\n\n function isXY(xy) {\n return xy.hasOwnProperty('x') && xy.hasOwnProperty('y');\n }\n\n function isLatitudeLongitude(value) {\n return value.hasOwnProperty('latitude') && value.hasOwnProperty('longitude');\n }\n\n function isLatLonFunction(value) {\n return isFunction(value.lat) && isFunction(value.lng);\n }\n\n function castPoint(value) {\n var match;\n if (isArray(value) && value.length === 2) {\n return value;\n }\n if (utils.isString(value)) {\n match = value.match(utils.pointRegex);\n throwTypeErrorWhen(!match || !match[1] || !match[2], 'A point is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n return [match[1], match[2]];\n }\n if (isLatLonFunction(value)) {\n return [value.lat(), value.lng()];\n }\n if (isLatLon(value)) {\n return [value.lat, or(value.lon, value.lng)];\n }\n if (isXY(value)) {\n return [value.y, value.x];\n }\n if (isLatitudeLongitude(value)) {\n return [value.latitude, value.longitude];\n }\n throw new TypeError('A point is expected, but ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] given');\n }\n\n function isLatLonBBox(bbox) {\n return bbox.hasOwnProperty('minLon') && bbox.hasOwnProperty('minLat') && bbox.hasOwnProperty('maxLon') && bbox.hasOwnProperty('maxLat');\n }\n\n function isRightLeftTopBottomBBox(bbox) {\n return bbox.hasOwnProperty('left') && bbox.hasOwnProperty('bottom') && bbox.hasOwnProperty('right') && bbox.hasOwnProperty('top');\n }\n\n function isWestEastNorthSouthBBox(bbox) {\n return isFunction(bbox.getWest) && isFunction(bbox.getEast) && isFunction(bbox.getSouth) && isFunction(bbox.getNorth);\n }\n\n function castBoundingBox(bbox) {\n var sw, ne;\n if (isLatLonBBox(bbox)) {\n return bbox;\n }\n if (isRightLeftTopBottomBBox(bbox)) {\n return { minLon: bbox.left, minLat: bbox.bottom, maxLon: bbox.right, maxLat: bbox.top };\n }\n if (isWestEastNorthSouthBBox(bbox)) {\n return { minLon: bbox.getWest(), minLat: bbox.getSouth(), maxLon: bbox.getEast(), maxLat: bbox.getNorth() };\n }\n if (isFunction(bbox.getNorthEast) && isFunction(bbox.getSouthWest)) {\n ne = castPoint(bbox.getNorthEast());\n sw = castPoint(bbox.getSouthWest());\n return { minLon: sw[1], minLat: sw[0], maxLon: ne[1], maxLat: ne[0] };\n }\n if (isArray(bbox) && bbox.length === 4) {\n return { minLon: bbox[0], minLat: bbox[1], maxLon: bbox[2], maxLat: bbox[3] };\n }\n if (isArray(bbox) && bbox.length === 2) {\n sw = castPoint(bbox[0]);\n ne = castPoint(bbox[1]);\n return { minLon: sw[1], minLat: sw[0], maxLon: ne[1], maxLat: ne[0] };\n }\n if (utils.isString(bbox)) {\n bbox = bbox.trim().split(/\\s*,\\s*/);\n if (bbox.length === 4) {\n return {\n minLon: parseFloat(bbox[0]),\n minLat: parseFloat(bbox[1]),\n maxLon: parseFloat(bbox[2]),\n maxLat: parseFloat(bbox[3])\n };\n }\n }\n throw new TypeError('Unable to cast ' + bbox + ' [' + (typeof bbox === 'undefined' ? 'undefined' : _typeof(bbox)) + '] to bounding box');\n }\n\n function normalizeBoundingBox(bbox) {\n var w = bbox.minLon,\n e = bbox.maxLon,\n s = bbox.minLat,\n n = bbox.maxLat,\n right,\n left;\n if (e - w > 360) {\n e = 180;\n w = -180;\n } else {\n if (e > 270) {\n right = Math.ceil(w / 360);\n e -= 360 * right;\n w -= 360 * right;\n }\n if (w < -270) {\n left = Math.ceil(-e / 360);\n e += 360 * left;\n w += 360 * left;\n }\n }\n s = s < -90 ? -90 : s;\n n = n > 90 ? 90 : n;\n return { minLon: w, minLat: s, maxLon: e, maxLat: n };\n }\n\n trafficIncidentsLanguageMapping = {\n 'ca': ['ca', 'cat', 'ca-fr', 'ca_fr', 'ca-es', 'ca_es', 'catalan'],\n 'cs': ['cs', 'cze', 'cs-cz', 'cs_cz', 'czech'],\n 'da': ['da', 'dan', 'da-dk', 'da_dk', 'danish'],\n 'de': ['de', 'ger', 'de-de', 'de_de', 'german'],\n 'en': ['en', 'eng', 'en-gb', 'en_gb', 'english', 'us', 'ame', 'en-us', 'en_us', 'english US', 'default'],\n 'es': ['es', 'spa', 'es-es', 'es_es', 'spanish', 'mx', 'spm', 'es-mx', 'es_mx', 'spanish MX'],\n 'fi': ['fi', 'fin', 'fi-fi', 'fi_fi', 'finnish'],\n 'fr': ['fr', 'fre', 'fr-fr', 'fr_fr', 'french'],\n 'hu': ['hu', 'hun', 'hu-hu', 'hu_hu', 'hungarian'],\n 'it': ['it', 'ita', 'it-it', 'it_it', 'italian'],\n 'nl': ['nl', 'dut', 'nl-nl', 'nl_nl', 'dutch'],\n 'no': ['no', 'nor', 'no-no', 'no_no', 'norwegian'],\n 'pl': ['pl', 'pol', 'pl-pl', 'pl_pl', 'polish'],\n 'pt': ['br', 'por', 'pt-br', 'pt_br', 'portuguese', 'pt', 'pob', 'pt-pt', 'pt_pt', 'portuguese BR'],\n 'sk': ['sk', 'slo', 'sk-sk', 'sk_sk', 'slovak'],\n 'sv': ['sv', 'swe', 'sv-se', 'sv_se', 'swedish'],\n 'tr': ['tr', 'tur', 'tr-tr', 'tr_tr', 'turkish'],\n 'defaultValue': 'en'\n };\n routingGuidanceLanguageMapping = {\n 'ar': ['ar', 'ara', 'ar-ar', 'ar_ar', 'arabic'],\n 'af-ZA': ['af', 'afr', 'af-za', 'af_za', 'afrikaans'],\n 'bg-BG': ['bg', 'bul', 'bg-bg', 'bg_bg', 'bulgarian'],\n 'zh-TW': ['zh', 'chi', 'zh-tw', 'zh_tw', 'chinese'],\n 'cs-CZ': ['cs', 'cz', 'cze', 'cs-cz', 'cs_cz', 'czech'],\n 'da-DK': ['da', 'dan', 'da-dk', 'da_dk', 'danish'],\n 'nl-NL': ['nl', 'dut', 'nl-nl', 'nl_nl', 'dutch'],\n 'en-GB': ['en', 'eng', 'en-gb', 'en_gb', 'english', 'default'],\n 'en-US': ['us', 'ame', 'en-us', 'en_us', 'english US'],\n 'fi-FI': ['fi', 'fin', 'fi-fi', 'fi_fi', 'finnish'],\n 'fr-FR': ['fr', 'fre', 'fr-fr', 'fr_fr', 'french'],\n 'de-DE': ['de', 'ger', 'de-de', 'de_de', 'german'],\n 'el-GR': ['el', 'gre', 'el-gr', 'el_gr', 'greek'],\n 'hu-HU': ['hu', 'hun', 'hu-hu', 'hu_hu', 'hungarian'],\n 'id-ID': ['id', 'ind', 'id-id', 'id_id', 'indonesian'],\n 'it-IT': ['it', 'ita', 'it-it', 'it_it', 'italian'],\n 'ko-KR': ['ko', 'kor', 'ko-kr', 'ko_kr', 'korean'],\n 'lt-LT': ['lt', 'lit', 'lt-lt', 'lt_lt', 'lithuanian'],\n 'ms-MY': ['ms', 'mal', 'ms-my', 'ms_my', 'malay'],\n 'nb-NO': ['nb', 'nor', 'nb-no', 'nb_no', 'norwegian'],\n 'pl-PL': ['pl', 'pol', 'pl-pl', 'pl_pl', 'polish'],\n 'pt-BR': ['br', 'por', 'pt-br', 'pt_br', 'portuguese'],\n 'pt-PT': ['pt', 'pob', 'pt-pt', 'pt_pt', 'portuguese BR'],\n 'ru-RU': ['ru', 'rus', 'ru-ru', 'ru_ru', 'russian'],\n 'sk-SK': ['sk', 'slo', 'sk-sk', 'sk_sk', 'slovak'],\n 'sl-SI': ['sl', 'slv', 'sl-si', 'sl_si', 'slovenian'],\n 'es-ES': ['es', 'spa', 'es-es', 'es_es', 'spanish'],\n 'es-MX': ['mx', 'spm', 'es-mx', 'es_mx', 'spanish MX'],\n 'sv-SE': ['sv', 'swe', 'sv-se', 'sv_se', 'swedish'],\n 'th-TH': ['th', 'tha', 'th-th', 'th_th', 'thai'],\n 'tr-TR': ['tr', 'tur', 'tr-tr', 'tr_tr', 'turkish'],\n 'defaultValue': 'en-GB'\n };\n\n function circleFromString(value) {\n var lat, lon, radius;\n var match = value.match(utils.circleRegex);\n throwTypeErrorWhen(!match || !match[1] || !match[2] || !match[3], 'Unable to cast ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] to circle');\n\n lat = parseFloat(match[1]);\n lon = parseFloat(match[2]);\n radius = parseFloat(match[3]);\n throwTypeErrorWhen(!isFinite(lat) || !isFinite(lon), 'Unable to cast ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] to circle');\n\n return 'circle(' + lat + ',' + lon + ',' + radius + ')';\n }\n\n function castAndNormalizePoint(value) {\n var point = castPoint(value);\n return normalizeLatitude(point[0]) + ',' + normalizeLongitude(point[1]);\n }\n\n function convertPointOrCircle(value) {\n if (utils.isString(value) && value.indexOf('circle') > -1) {\n return circleFromString(value);\n }\n if (isArray(value) && value.length === 3) {\n return 'circle(' + normalizeLatitude(value[0]) + ',' + normalizeLongitude(value[1]) + ',' + value[2] + ')';\n }\n return castAndNormalizePoint(value);\n }\n\n function extractPointsFromPolygon(inputPoints) {\n var points = [],\n point;\n for (point in inputPoints) {\n if (inputPoints.hasOwnProperty(point)) {\n points.push(castAndNormalizePoint(inputPoints[point]));\n }\n }\n return points;\n }\n\n function convertPointToLatitudeLongitude(point) {\n var splitPoint;\n\n if (typeof point !== 'string') {\n return point;\n }\n\n splitPoint = point.split(',');\n\n return {\n latitude: splitPoint[0],\n longitude: splitPoint[1]\n };\n }\n\n function prepareSupportingPoints(supportingPoints) {\n return supportingPoints.map(convertPointToLatitudeLongitude);\n }\n\n return {\n boundingBox: function boundingBox(value) {\n return normalizeBoundingBox(castBoundingBox(value));\n },\n\n longitude: function longitude(value) {\n return normalizeLongitude(value);\n },\n\n latitude: function latitude(value) {\n return normalizeLatitude(value);\n },\n\n point: function point(value) {\n return castAndNormalizePoint(value);\n },\n\n dateTime: function dateTime(value) {\n if (value && value instanceof Date) {\n return value.toISOString();\n }\n\n if (!value || !utils.isString(value)) {\n throw new TypeError('Unable to cast ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] to datetime value.');\n }\n if (value !== 'now') {\n value = value.replace(/([0-9]{2})-([0-9]{2})-([0-9]{2})/, '$1/$2/$3');\n value = value.replace(/([0-9])T([0-9])/, '$1 $2');\n value = new Date(value).toISOString();\n }\n return value;\n },\n\n geometryList: function geometryList(value) {\n var figureName, figure;\n throwTypeErrorWhen(!value || !isArray(value), 'Unable to cast ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] to geometry list (array)');\n\n for (figureName in value) {\n if (value.hasOwnProperty(figureName)) {\n figure = value[figureName];\n if (figure.type === 'POLYGON') {\n figure.vertices = extractPointsFromPolygon(figure.vertices);\n } else if (figure.type === 'CIRCLE') {\n figure.position = castAndNormalizePoint(figure.position);\n }\n }\n }\n return value;\n },\n\n language: function language(value, options) {\n var locale;\n if (options && options.data && options.data.__serviceType) {\n locale = new Locale(value);\n return locale.getValueFor(options.data.__serviceType);\n }\n return value;\n },\n\n routingGuidanceLanguage: function routingGuidanceLanguage(value) {\n var language;\n value = value.toLowerCase();\n for (language in routingGuidanceLanguageMapping) {\n // if language is found in one of properties array\n if (routingGuidanceLanguageMapping.hasOwnProperty(language) && routingGuidanceLanguageMapping[language].indexOf(value) > -1) {\n return language;\n }\n }\n return routingGuidanceLanguageMapping.defaultValue;\n },\n\n trafficIncidentsLanguage: function trafficIncidentsLanguage(value) {\n var language;\n value = value.toLowerCase();\n for (language in trafficIncidentsLanguageMapping) {\n // if language is found in one of properties array\n if (trafficIncidentsLanguageMapping.hasOwnProperty(language) && trafficIncidentsLanguageMapping[language].indexOf(value) > -1) {\n return language;\n }\n }\n return trafficIncidentsLanguageMapping.defaultValue;\n },\n\n routingLocations: function routingLocations(value) {\n var response = [],\n i;\n if (utils.isString(value)) {\n return value;\n }\n if (isArray(value)) {\n throwTypeErrorWhen(value.length < 2, 'Unable to cast ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] to routing locations string');\n\n // Convert first element to point\n response.push(castAndNormalizePoint(value[0]));\n\n // Convert elements from 1 to length-2 to point or circle\n for (i = 1; i < value.length - 1; i += 1) {\n response.push(convertPointOrCircle(value[i]));\n }\n\n // Convert last element (length-1) to point\n response.push(castAndNormalizePoint(value[value.length - 1]));\n\n // Join converted elements\n return response.join(':');\n }\n throw new TypeError('Unable to cast ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] to routing locations string');\n },\n\n roadUse: function roadUse(value) {\n var i;\n if (utils.isString(value)) {\n return '[\"' + value.replace(/[\"']|^\\s+|\\s+$/g, '').split(/[\\s,]+/).join('\",\"') + '\"]';\n }\n if (isArray(value)) {\n for (i = 0; i < value.length; i += 1) {\n value[i] = String(value[i]).replace(/[\"']|^\\s+|\\s+$/g, '');\n }\n return '[\"' + value.join('\",\"') + '\"]';\n }\n throw new TypeError('Unable to cast ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] to road use string');\n },\n\n arrayOf: function arrayOf(options) {\n return function (values) {\n var optionName,\n setDefaultValueHandler = function setDefaultValueHandler(key, defaultValue) {\n return function (object) {\n if (!object.hasOwnProperty(key)) {\n object[key] = defaultValue;\n }\n };\n };\n for (optionName in options) {\n if (options.hasOwnProperty(optionName) && options[optionName].hasOwnProperty('defaultValue')) {\n values.forEach(setDefaultValueHandler(optionName, options[optionName].defaultValue));\n }\n }\n\n values.forEach(function (value) {\n var key;\n for (key in value) {\n if (value.hasOwnProperty(key) && options.hasOwnProperty(key) && typeof options[key].converter === 'function') {\n\n value[key] = options[key].converter(value[key]);\n }\n }\n });\n return values;\n };\n },\n\n objectOf: function objectOf(options) {\n return function (value) {\n var key;\n for (key in value) {\n if (value.hasOwnProperty(key) && options.hasOwnProperty(key) && typeof options[key].converter === 'function') {\n\n value[key] = options[key].converter(value[key]);\n }\n }\n return value;\n };\n },\n\n arrayOfStrings: function arrayOfStrings(value) {\n if (!value) {\n return [];\n }\n if (utils.isString(value)) {\n value = value.trim().replace(/\\s*[,;]\\s*/g, ',');\n return value.split(/[,;]+/);\n }\n if (isArray(value)) {\n return value;\n }\n throw new TypeError('Unable to cast ' + value + ' [' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '] to array of strings');\n },\n\n route: function route(values) {\n return {\n points: values.map(castPoint).map(function (point) {\n return {\n lat: point[0],\n lon: point[1]\n };\n })\n };\n },\n\n queryString: function queryString(query) {\n return utils.encodeQuery(query);\n },\n integer: function integer(value) {\n return Math.round(Number(value));\n },\n\n supportingPoints: function supportingPoints(value) {\n var arrayOfPoints = [],\n i;\n if (utils.isString(value)) {\n value = value.split(':');\n }\n if (isArray(value)) {\n\n // Convert elements to points\n for (i = 0; i < value.length; i++) {\n arrayOfPoints.push(castAndNormalizePoint(value[i]));\n }\n } else {\n arrayOfPoints.push(castAndNormalizePoint(value));\n }\n return prepareSupportingPoints(arrayOfPoints);\n },\n constantSpeedConsumption: function constantSpeedConsumption(value) {\n if (typeof value === 'string') {\n return value;\n }\n\n if (!isArray(value)) {\n throw new TypeError('An array is required');\n }\n return value.join(':');\n },\n avoidAreas: function avoidAreas(value) {\n if (!isArray(value)) {\n throw new TypeError('An array is required');\n }\n return {\n rectangles: value.map(function (area) {\n return {\n southWestCorner: convertPointToLatitudeLongitude(castAndNormalizePoint(area.southWestCorner)),\n northEastCorner: convertPointToLatitudeLongitude(castAndNormalizePoint(area.northEastCorner))\n };\n })\n };\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (Utils) {\n 'use strict';\n /**\n * Name of the default key to be used.\n * @type {String}\n */\n\n var generalKey = '*';\n var keys = {};\n\n function checkStringType(parameter, message) {\n if (!Utils.isString(parameter)) {\n throw new TypeError(message);\n }\n }\n\n return {\n /**\n * Sets key from the 'config' object in security configuration file.\n * @example\n * security.setKey('keyValue'); // sets global key\n * security.setKey('service/traffic', 'keyValue'); // sets key for traffic service\n *\n * @method setKey\n * @param {String} name Name of the key to be set\n * @param {String} [value] Value of the key\n */\n setKey: function setKey(name, value) {\n if (arguments.length === 1) {\n value = name;\n name = generalKey;\n }\n if (!value) {\n return;\n }\n checkStringType(name, 'Module name needs to be of type string');\n checkStringType(value, 'API key needs to be of type string');\n keys[name] = value;\n },\n\n /**\n * Clears keys, this method is meant to be used internally and should not be exposed\n * @example\n * security._clearKeys();\n *\n * @method _clearKeys\n */\n _clearKeys: function _clearKeys() {\n keys = {};\n },\n\n /**\n * Returns function to sets key from the 'config' object in security configuration file with predefined module\n * name.\n * @example\n * var setKey = security.setKeyForName('service/traffic');\n * setKey('keyValue'); // sets key for traffic service\n *\n * @method setKeyForName\n * @param {String} name Name of the module\n * @return {Function} function that sets key for given module\n */\n setKeyForName: function setKeyForName(name) {\n checkStringType(name, 'Module name needs to be of type string');\n return function (value) {\n checkStringType(value, 'API key needs to be of type string');\n keys[name] = value;\n };\n },\n\n /**\n * Gets key's value from the \"config\" object in security configuration file.\n * Returns key value associated with type of given service - if exists - or generalKey otherwise.\n * @example\n * security.getKey(this); // when used within service context\n * security.getKey(\"generalKey\"); // when used in other context\n *\n * @method getKey\n * @param {String} name Module name means name of the key\n * @return {String}\n */\n getKey: function getKey(name) {\n if (name) {\n checkStringType(name, 'Module name needs to be of type string');\n }\n return keys[name] || keys[generalKey] || null;\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n\n\nvar mainConfig = __webpack_require__(18);\n\nmodule.exports = {\n //copyrights\n 'copyrightsWorld': mainConfig['endpoints.copyrightsWorld'],\n 'copyrightsBounds': mainConfig['endpoints.copyrightsBounds'],\n 'caption': mainConfig['endpoints.caption'],\n\n //search\n 'geocode': mainConfig['endpoints.geocode'],\n 'batchGeocodeQuery': mainConfig['endpoints.batchGeocodeQuery'],\n 'structuredGeocode': mainConfig['endpoints.structuredGeocode'],\n 'batchStructuredGeocodeQuery': mainConfig['endpoints.batchStructuredGeocodeQuery'],\n 'search': mainConfig['endpoints.search'],\n 'batchSearch': mainConfig['endpoints.batchSearch'],\n 'batchSyncSearch': mainConfig['endpoints.batchSyncSearch'],\n 'batchSearchQuery': mainConfig['endpoints.batchSearchQuery'],\n 'adp': mainConfig['endpoints.adp'],\n 'reverseGeocode': mainConfig['endpoints.reverseGeocode'],\n 'batchReverseGeocodeQuery': mainConfig['endpoints.batchReverseGeocodeQuery'],\n\n //traffic\n 'trafficIncidents': mainConfig['endpoints.trafficIncidents'],\n 'trafficViewport': mainConfig['endpoints.trafficViewport'],\n 'flowSegmentData': mainConfig['endpoints.flowSegmentData'],\n 'incidentRegions': mainConfig['endpoints.incidentRegions'],\n\n //layers\n 'trafficLayer': mainConfig['endpoints.trafficLayer'],\n 'trafficFlowLayer': mainConfig['endpoints.trafficFlowLayer'],\n 'tileLayer': mainConfig['endpoints.tileLayer'],\n\n //routing\n 'routing': mainConfig['endpoints.routing'],\n 'reachableRange': mainConfig['endpoints.reachableRange'],\n 'batchRoutingQuery': mainConfig['endpoints.batchRoutingQuery'],\n 'batchRouting': mainConfig['endpoints.batchRouting'],\n 'batchSyncRouting': mainConfig['endpoints.batchSyncRouting'],\n 'matrixRouting': mainConfig['endpoints.matrixRouting'],\n 'matrixSyncRouting': mainConfig['endpoints.matrixSyncRouting'],\n 'batchReachableRangeQuery': mainConfig['endpoints.batchReachableRangeQuery'],\n\n //origin\n 'origin': mainConfig.origin\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n return {\n POST: 'POST',\n PATH: 'PATH',\n QUERY: 'QUERY',\n OTHER: 'OTHER'\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This module has two utilities:\n *\n * This module create getters and setters for every property of the object passed as first argument and also\n * implement the \"go\" method which executed an arbitrary function passing all the property values.\n *\n * To create the getters and setters the first argument of the constructor should be an object with the\n * following accepted properties:\n *\n * - name: String Custom name of the property. If isn't define the name of the property will be used.\n * - validator: Function(value) If the value isn't valid this function should throw an Error,\n * otherwise it should return the value validated\n * - defaultValue: Function() This function have to return the default value\n * - converter: Function(value) The returned value of this function will be used\n *\n * This is an example of configurations this module could take:\n * @example\n * ```js\n * var properties = {\n * city: {\n * name: 'bestCity',\n * validator: function (name) {\n * if (typeof name !== 'string' || name.length === 0) throw new Error('City name is not valid');\n * return name;\n * },\n * converter: function (name) {\n * return name.toLowerCase();\n * },\n * defaultValue: function() {\n * return 'Lodz';\n * }\n * }\n * }\n * var config = require('chain')(properties);\n * config.city(); // prints \"lodz\"\n * config.city('Torun'); // prints \"torun\"\n * config.city(); // prints \"torun\"\n * ```\n *\n * Take notice the converter function is always executed, even for the default value.\n *\n * As second argument a function will be expected and this function will be executed using the \"go\" method\n * returned by this constructor.\n * The additional functions returned by this constructor are: \"go\", \"callback\" and \"fail\".\n *\n * The \"go\" function will execute the function passed as second argument of the constructor which should\n * implement the next signature: goFunction(properties, callback) .\n *\n * Is expected that the \"goFunction\" will call the callback function available in the second argument which is the same\n * function defined in fields.callback or the first argument passed to the \"go\" function.\n *\n * The \"go\" method can receive two callback arguments: \"success\" and \"fail\" which will override the initial callbacks\n * defined during the creation and will be continue to be used in the next execution of the \"go\" function.\n *\n * If a callback is not provided nor in the fields.callback or as first argument of the \"go\" call,\n * then the \"go\" function will return a Promise, otherwise this function will return undefined.\n *\n * @example\n * ```js\n * var properties = {\n * city: {},\n * country: {}\n * }\n * var defaults = {city: 'Lima', country: 'Peru'};\n * function sendToBackend(properties, callback) {\n * // Ajax call sending the properties\n * // ...\n * callback(\"OK\");\n * }\n * function onSuccess() {};\n * function onfail() {};\n *\n * var config = require('chain')(properties, sendToBackend, defaults);\n *\n * // Calling \"go\" passing callbacks\n * config.go(onSuccess, onfail);\n *\n * // Calling go and receive a Promise\n * config.go()\n * .then(onSuccess)\n * .catch(onFail);\n * ```\n *\n * Do you think this was difficult to read? Believe me, the most difficult was to write it.\n * @private\n * @class Chain\n * @module Services\n * @constructor\n * @param {Object} fields\n * @param {Function} fields.callback Default callback function to be executed by \"goFunction\" function\n * @param {Function} fields.fail Default fail function callback to be executed by \"goFunction\" function\n * @param {Function} [goFunction] Should have the signature: function(properties, callback): Promise|undefined\n * @param {Object} [options] Object with the initial values for the properties defined in the \"fields\" argument\n * @param {Function} [options.fail] Failsafe \"fail\" function to be executed by \"goFunction\" callback argument.\n * It will override \"fields.fail\" (yeah, don't ask me why)\n */\n\n/**\n * Executes a predefined asynchronous task using the current configuration and then execute one of\n * the callback functions based on the success of the result.\n *\n * It receives two optional arguments. The first one is a callback function that will be used when\n * the task is successfully completed. The second one is another callback function\n * that will be used only in case of failure.\n *\n * Both arguments are shortcuts for the callback and fail methods respectively.\n *\n * @example\n * All the ways of using this method:\n * ```js\n * // Defining callbacks as function arguments\n * tomtom.fuzzySearch()\n * .query(\"pizza\")\n * .go(successCallback, failureCallback);\n *\n * // Defining callbacks using setters methods\n * tomtom.fuzzySearch()\n * .query(\"pizza\")\n * .callback(successCallback)\n * .fail(failureCallback)\n * .go();\n *\n * // Using the returned Promise\n * tomtom.fuzzySearch()\n * .query(\"pizza\")\n * .go()\n * .then(successCallback)\n * .catch(failureCallback);\n * ```\n * The SDK provides a Promise polyfill for browsers (IE<9) without native ECMAScript 6 support.\n *\n * @method go\n * @param {Function} [success] The callback function to be called on case of success\n * @param {Function} [fail] The callback function to be called on case of failure.\n * If a success callback was not given this argument will be ignored. In that case the returned Promise\n * should be used to handle the failures.\n * @return {Promise|null} If the success callback is omitted (and wasn't defined one yet) this function\n * will return a Promise\n */\n\n/**\n * Sets or gets the value of the option `callback`.\n *\n * This callback function will be called only after the go method successfully complete its task.\n *\n * Its first and unique argument passed to the callback will be the result of the request.\n *\n * @example\n * ```js\n * function callbackFn(results) {\n * console.log(results);\n * }\n * tomtom.fuzzySearch()\n * .query(\"pizza\")\n * .callback(callbackFn)\n * .go();\n * ```\n *\n * @method callback\n * @chainable\n * @param {Function} [newValue] The new callback function\n * @throws {TypeError} If the given argument is not a function\n * @return {Function} The same service instance or the current callback function if no argument was given\n */\n\n/**\n * Sets or gets the value of the option `fail`.\n *\n * This function is called when an error occurs (e.g. invalid values or a communication error).\n *\n * The callback will receive just one argument which is the error description.\n *\n * This parameter will be ignored if the callback function is not defined and therefore the\n * go method will return a Promise that will be rejected if an error occurs.\n *\n * If you don't specificy a failure callback, the default behavior in case of encounter a problem is to\n * throw an error.\n *\n * @example\n * ```js\n * function successCallback(results) {\n * console.log(results);\n * }\n * function failureCallback(error) {\n * console.log(error);\n * }\n * tomtom.fuzzySearch()\n * .query(\"pizza\")\n * .callback(successCallback)\n * .fail(failureCallback)\n * .go();\n * ```\n *\n * @method fail\n * @chainable\n * @param {Function} [newValue] The new callback function\n * @throws {TypeError} If the given argument is not a function\n * @return {Function} The same service instance or the current callback function if no argument was given\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(0), __webpack_require__(30), __webpack_require__(57), __webpack_require__(33), __webpack_require__(123), __webpack_require__(35), __webpack_require__(7)], __WEBPACK_AMD_DEFINE_RESULT__ = function (utils, globalLocaleService, localeValidator, globalGeopolViewService, geopolViewValidator, GeopolView, parameterApplications) {\n 'use strict';\n\n function checkIsFunction(fun) {\n if (typeof fun !== 'function') {\n throw new TypeError('a function is expected, but ' + fun + ' [' + (typeof fun === 'undefined' ? 'undefined' : _typeof(fun)) + '] given');\n }\n return fun;\n }\n\n function isUndefined(value) {\n return value === undefined;\n }\n\n function isFunction(converter) {\n return typeof converter === 'function';\n }\n\n function chain(data, name, value, validator, converter) {\n var options = {\n data: data,\n name: name\n };\n\n if (isUndefined(value)) {\n return isUndefined(data[name]) ? null : data[name];\n }\n if (isFunction(converter)) {\n value = converter.call(this, value, options);\n }\n if (isFunction(validator)) {\n value = validator.call(this, value, options);\n }\n data[name] = value;\n return this;\n }\n\n function checkRequired(fields, data) {\n var field, fieldName;\n for (field in fields) {\n if (fields.hasOwnProperty(field)) {\n fieldName = fields[field].name || field;\n if (fields[field].required === true && !data.hasOwnProperty(fieldName)) {\n throw new Error('Missing required ' + field);\n }\n }\n }\n }\n\n function runPostValidators(fields, data) {\n var field;\n var that = this;\n function callValidator(validator) {\n validator.call(that, data[field], data, field);\n }\n for (field in fields) {\n if (fields.hasOwnProperty(field)) {\n if (utils.isArray(fields[field].postValidator)) {\n fields[field].postValidator.forEach(callValidator);\n } else if (!isUndefined(fields[field].postValidator)) {\n fields[field].postValidator.call(this, data[field], data, field);\n }\n }\n }\n }\n\n function createFunction(f, fields, data) {\n return function (value) {\n var fieldName = fields[f].name || f;\n return chain.call(this, data, fieldName, value, fields[f].validator, fields[f].converter);\n };\n }\n\n function setLanguageIfNeeded(data) {\n var serviceType = data.__serviceType;\n var locale;\n if (!serviceType || data.language && localeValidator(data.language, serviceType)) {\n return;\n }\n locale = globalLocaleService.getCurrentLocale();\n data.language = locale.getValueFor(serviceType);\n }\n\n function setGeopolViewIfNeeded(data) {\n var geopolView;\n var serviceType = data.__serviceType;\n var supportedServices = GeopolView.getSupportedServices();\n if (!serviceType || supportedServices.indexOf(serviceType) === -1 || data.view && geopolViewValidator(data.view, serviceType)) {\n return;\n }\n geopolView = globalGeopolViewService.getCurrentGeopolView();\n data.view = geopolView.getValueFor(serviceType);\n }\n\n return function (fields, goFunction, options) {\n var data = {},\n that = this,\n service,\n field;\n options = options || {};\n data.__serviceType = options.__serviceType;\n setLanguageIfNeeded(options);\n setGeopolViewIfNeeded(options);\n fields.callback = {\n validator: checkIsFunction\n };\n fields.fail = {\n validator: checkIsFunction,\n defaultValue: function defaultValue(e) {\n if (utils.isObject(e)) {\n e = JSON.stringify(e);\n }\n console.error(e || 'Unknown Error');\n throw new Error(e || 'Unknown Error');\n },\n application: parameterApplications.OTHER\n };\n\n service = {\n go: function go(success, fail) {\n var callback;\n if (success) {\n data.callback = checkIsFunction(success);\n }\n if (fail) {\n data.fail = checkIsFunction(fail);\n }\n checkRequired(fields, data);\n runPostValidators(fields, data);\n if (data.callback) {\n callback = data.callback;\n delete data.callback;\n goFunction.call(that, utils.clone(data), callback);\n return undefined;\n } else {\n return new Promise(function (resolve, reject) {\n data.fail = function (error) {\n reject(error);\n };\n goFunction.call(that, utils.clone(data), function (response) {\n resolve(response);\n });\n });\n }\n }\n };\n\n for (field in fields) {\n if (fields.hasOwnProperty(field)) {\n service[field] = createFunction(field, fields, data);\n if (!isUndefined(fields[field].defaultValue)) {\n service[field].call(this, fields[field].defaultValue);\n }\n // if options were passed initialize the data\n if (options && options.hasOwnProperty(field)) {\n service[field].call(this, options[field]);\n }\n\n if (fields[field].visible === false) {\n delete service[field];\n }\n }\n }\n if (options && options.fail) {\n data.fail = options.fail;\n }\n return service;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n var names = {\n display: 'services/display',\n vector: 'services/display/vector',\n trafficFlow: 'services/trafficFlow',\n traffic: 'services/traffic',\n search: 'services/search',\n routing: 'services/routing'\n };\n /**\n * Immutable object with the names of the different API keys.\n */\n return Object.freeze(names);\n}.call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(120), __webpack_require__(121)], __WEBPACK_AMD_DEFINE_RESULT__ = function (batchRequestServiceFactory, singleRequestServiceFactory) {\n return {\n single: singleRequestServiceFactory,\n batch: batchRequestServiceFactory\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(111), __webpack_require__(113)], __WEBPACK_AMD_DEFINE_RESULT__ = function (json, jsonp) {\n 'use strict';\n\n var _useJsonp = false;\n var _useHttp = false;\n\n return {\n useJsonp: function useJsonp(use) {\n _useJsonp = use;\n },\n\n useHttp: function useHttp(use) {\n _useHttp = use;\n },\n\n protocol: function protocol() {\n return _useHttp ? 'http' : 'https';\n },\n\n get: function get(options) {\n options.protocol = options.protocol || this.protocol();\n return _useJsonp ? jsonp.get(options) : json.get(options);\n },\n\n post: function post(options) {\n if (_useJsonp) {\n console.warn('Jsonp is not supported, using json request.');\n }\n options.protocol = options.protocol || this.protocol();\n return json.post(options);\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n\nfunction escapeRegExp(input) {\n return input.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&').replace(/\\\\\\{.+?\\\\\\}/g, '.+');\n}\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(18)], __WEBPACK_AMD_DEFINE_RESULT__ = function (mainConfig) {\n var productInfo;\n var sdkInfo = mainConfig['analytics.header.sdkName'] + '/' + mainConfig['sdk.version'];\n var headerName = mainConfig['analytics.header.name'];\n var ORIGIN_URL_PATTERN = new RegExp(escapeRegExp(mainConfig.origin));\n\n return {\n isTomtomOrigin: function isTomtomOrigin(url) {\n return ORIGIN_URL_PATTERN.test(url);\n },\n getHeaderName: function getHeaderName() {\n return headerName;\n },\n getHeaderContent: function getHeaderContent() {\n var prodInfo = productInfo !== undefined ? ' ' + productInfo : '';\n return sdkInfo + prodInfo;\n },\n\n setProductInfo: function setProductInfo(productId, productVersion) {\n var prodVersion;\n if (!productId) {\n throw new Error('ProductId needs to be set');\n }\n prodVersion = productVersion || productVersion === 0 ? '/' + productVersion : '';\n productInfo = productId + prodVersion;\n },\n getProductInfo: function getProductInfo() {\n return productInfo;\n },\n addAnalyticsHeader: function addAnalyticsHeader(req) {\n req.header(headerName, this.getHeaderContent());\n return req;\n },\n getAnalyticsHeader: function getAnalyticsHeader() {\n var header = {};\n header[headerName] = this.getHeaderContent();\n return header;\n },\n customCreateTile: function customCreateTile(coords, done, layer) {\n var tile = document.createElement('img');\n var tileUrl = layer.getTileUrl(coords);\n var errorTileUrl = layer.options && layer.options.errorTileUrl;\n\n var xhr = new XMLHttpRequest();\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n if (xhr.status === 200) {\n tile.src = URL.createObjectURL(xhr.response); //create with src set to the blob\n } else if (errorTileUrl) {\n tile.src = errorTileUrl;\n }\n done(null, tile);\n }\n };\n xhr.open('GET', tileUrl, true);\n // don't set responseType before calling open(), this will cause an invalid state error under IE11\n xhr.responseType = 'blob'; //so you can access the response like a normal URL\n xhr.setRequestHeader(this.getHeaderName(), this.getHeaderContent());\n xhr.send();\n if (layer.options.crossOrigin) {\n tile.crossOrigin = '';\n }\n\n /*\n Alt tag is set to empty string to keep screen readers from reading URL and for compliance reasons\n http://www.w3.org/TR/WCAG20-TECHS/H67\n */\n tile.alt = '';\n tile.setAttribute('original-src', tileUrl);\n /*\n Set role=\"presentation\" to force screen readers to ignore this\n https://www.w3.org/TR/wai-aria/roles#textalternativecomputation\n */\n tile.setAttribute('role', 'presentation');\n return tile;\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n function isArray(a) {\n return a !== undefined && a.constructor.toString().indexOf('Array') > -1;\n }\n\n function filterArray(result, fields) {\n var i;\n for (i = 0; i < result.length; i += 1) {\n filter(result[i], fields); //eslint-disable-line\n }\n }\n\n function filterObject(result, fields) {\n var key;\n var filterPrepared = '*' + fields.trim().split(/\\s*,\\s*/).join('*') + '*';\n for (key in result) {\n if (result.hasOwnProperty(key) && filterPrepared.indexOf('*' + key + '*') < 0) {\n delete result[key];\n }\n }\n }\n\n function filter(result, fields) {\n if (!fields) {\n return result;\n }\n if (isArray(result)) {\n filterArray(result, fields);\n } else {\n filterObject(result, fields);\n }\n return result;\n }\n\n function handleArray(array, key) {\n var j;\n var result = [];\n for (j = 0; j < array.length; j += 1) {\n if (array[j][key]) {\n result.push(array[j][key]);\n }\n }\n return result;\n }\n\n return function (json, path, fields) {\n var i;\n var result = json;\n var pathElements = path.trim().split('.');\n for (i = 0; i < pathElements.length; i += 1) {\n if (!result) {\n return null;\n }\n if (isArray(result)) {\n result = handleArray(result, pathElements[i]);\n } else {\n result = result[pathElements[i]];\n }\n }\n return filter(result, fields);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(62), __webpack_require__(128), __webpack_require__(5)], __WEBPACK_AMD_DEFINE_RESULT__ = function (utils, trafficModelId, security) {\n var DEFAULT_REFRESH_RATE = 30000;\n return {\n add: function add(options, onTrafficUpdateCallback) {\n var refreshRate = DEFAULT_REFRESH_RATE;\n\n if (utils.isNotNull(options)) {\n if (options._noRefresher) {\n //This property ensures that the refresher doesn't start, it is used by trafficWithIncidentsLayer\n //which has it's own timers and we don't want sub-layers to start its own timers\n return undefined;\n } else if (options.noRefresh) {\n onTrafficUpdateCallback();\n return undefined;\n }\n //this ensures that minimal refresh time is 30 seconds\n refreshRate = options.refresh >= DEFAULT_REFRESH_RATE && isFinite(options.refresh) ? options.refresh : DEFAULT_REFRESH_RATE;\n }\n return setInterval(onTrafficUpdateCallback, refreshRate);\n },\n remove: function remove(id) {\n if (id) {\n clearInterval(id);\n }\n },\n addRefresherWithModelId: function addRefresherWithModelId(options, trafficModelIdCallback, context) {\n var effectiveOptions = options ? options : context.options;\n var trafficModelIdService = trafficModelId({ key: security.getKey('services/traffic') });\n function onUpdateCallback() {\n trafficModelIdService.go().then(function (trafficModelId) {\n trafficModelIdCallback.call(context, trafficModelId);\n });\n }\n\n if (!effectiveOptions) {\n throw new Error('\"options\" should be provided');\n }\n\n if (effectiveOptions._noRefresher) {\n return null;\n }\n\n onUpdateCallback();\n return this.add(effectiveOptions, onUpdateCallback);\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Static class with util methods to format and convert values from metric to imperial systems.\n *\n * @class UnitFormatConverter\n * @extends L.Evented\n * @module Services\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(38)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, globalUnitService) {\n 'use strict';\n\n var UnitFormatConverter;\n\n /**\n * Event fired when the global measurement unit is changed using the method\n * {{#crossLink \"UnitFormatConverter/unitsScheme:method\"}}{{/crossLink}}.\n *\n * @event change\n * @param {\"metric\"|\"imperial\"} newMeasurementUnit\n */\n\n /**\n * @ignore\n * @param {String} value Numeric value\n * @return {String}\n */\n function enforceLeadingZero(value) {\n return value < 10 ? '0' + value : value;\n }\n\n /**\n * Convert a distance in meters to yards.\n * @method convertMetersToYards\n * @param {Number} distanceMeters\n * @return {Number}\n */\n function convertMetersToYards(distanceMeters) {\n return 1.0936133 * distanceMeters;\n }\n\n /**\n * @ignore\n * @param {Number} distanceMeters\n * @return {Number}\n */\n function convertMetricToMiles(distanceMeters) {\n return 0.000621371192 * distanceMeters;\n }\n\n /**\n * @ignore\n * @param {Number} distanceMeters\n * @return {String} Distance in miles or yards\n */\n function formatMetricAsImperialDistance(distanceMeters) {\n var yards = convertMetersToYards(distanceMeters),\n miles = convertMetricToMiles(distanceMeters);\n return miles < 1 ? Math.round(yards) + ' yd' : Math.round(miles * 10) / 10 + ' mi';\n }\n\n /**\n * @ignore\n * @param {Number} distanceMeters\n * @return {String} Distance in kilometers or meters\n */\n function formatAsMetricDistance(distanceMeters) {\n var distance = Math.round(distanceMeters);\n if (distance >= 1000) {\n return Math.round(distance / 100) / 10 + ' km';\n }\n return distance + ' m';\n }\n\n UnitFormatConverter = L.Evented.extend({\n /**\n * Convert a distance in yards to meters.\n * @method convertYardsToMeters\n * @param {Number} distanceYards Distance in yards\n * @return {Number}\n */\n convertYardsToMeters: function convertYardsToMeters(distanceYards) {\n return Math.round(distanceYards / 1.0936133);\n },\n\n convertMetersToYards: convertMetersToYards,\n\n /**\n * Converts the given time in seconds to a string with the the format of 'HH h MM min' or 'MM min SS s'.\n *\n * HH - hours MM - minutes SS - seconds.\n *\n * @method formatTime\n * @param {Number} [seconds] Number of seconds\n * @return {String|undefined} Formatted time\n *\n * @example\n * ```javascript\n * tomtom.unitFormatConverter.formatTime(3600); / returns 1 h 0 min\n * ```\n */\n formatTime: function formatTime(seconds) {\n var secondsNum, hours, minutes, secondsFormatted, minutesFormatted;\n if (seconds === undefined) {\n return undefined;\n }\n secondsNum = parseInt(seconds, 10);\n hours = Math.floor(secondsNum / 3600);\n minutes = Math.floor((secondsNum - hours * 3600) / 60);\n if (secondsNum < 60) {\n return secondsNum + ' s';\n }\n secondsNum %= 60;\n secondsFormatted = enforceLeadingZero(secondsNum);\n minutes %= 60;\n minutesFormatted = enforceLeadingZero(minutes);\n if (hours > 0) {\n return hours + ':' + minutesFormatted + ' h';\n }\n return minutes + ':' + secondsFormatted + ' min';\n },\n\n /**\n * Converts a date in the machine format to a more human readable form.\n *\n * Returns a formatted string created from the given date in UTC format.\n *\n * @method formatHourAndMinute\n * @param {String} [dateInMs] Date and time specified in the RFC-3339 format with an optional time zone offset\n * @return {String} Formatted time in hours and minutes\n *\n * @example\n * ```javascript\n * tomtom.unitFormatConverter.formatHourAndMinute('2016-03-01T15:45:58+01:00') // gives '3:45'\n * ```\n */\n formatHourAndMinute: function formatHourAndMinute(dateInMs) {\n var date = new Date(dateInMs);\n var hour = date.getHours(),\n minute = date.getMinutes();\n return hour + ':' + enforceLeadingZero(minute);\n },\n\n /**\n * Converts distance in meters to a proper display format in SI or imperial units.\n *\n * @method formatDistance\n * @param {Number} distanceMeters Distance in meters\n * @param {Boolean} [imperial=false] Use imperial units\n * @return {String} Aformatted distance\n */\n formatDistance: function formatDistance(distanceMeters, imperial) {\n if (distanceMeters === undefined) {\n return undefined;\n }\n if (imperial) {\n return formatMetricAsImperialDistance(distanceMeters);\n }\n return formatAsMetricDistance(distanceMeters);\n },\n\n /**\n * Gets ore sets the default units scheme for new widgets and services.\n *\n * @method unitsScheme\n * @param {\"imperial\"|\"metric\"} [newUnit] If isn't provided then\n * this method will only return then current units scheme\n * @return {String} Current units scheme\n * @deprecated Please use \n * tomtom.globalUnitService() instead.\n */\n unitsScheme: function unitsScheme(newUnit) {\n console.warn('Deprecated. Please use unitService class.');\n if (!newUnit) {\n return globalUnitService.getCurrentUnit().getLabel();\n }\n\n globalUnitService.setCurrentUnit(newUnit);\n this.fire('change', { newScheme: newUnit });\n return newUnit;\n }\n });\n\n return new UnitFormatConverter();\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n var unitTypes = {\n metric: 'metric',\n imperial: 'imperial'\n };\n return unitTypes;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Base class for all the Search services.\n *\n * @private\n * @class Search\n * @module Services\n * @uses Chain\n * @uses ProtocolMixin\n * @uses KeyMixin\n * @uses LimitMixin\n * @uses LanguageMixin\n * @uses UnwrapMixin\n *\n * @constructor\n * @param {Object} [options] Options to be passed to the search call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.unwrapBbox=false] Changes the bounding box coordinates allowing longitudes that\n * exceeds 180 degrees when is necessary. {{#crossLink \"Search/unwrapBbox:method\"}}More{{/crossLink}}\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {String} [options.language=null] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(92), __webpack_require__(91), __webpack_require__(8), __webpack_require__(2), __webpack_require__(4), __webpack_require__(22), __webpack_require__(0), __webpack_require__(161), __webpack_require__(44), __webpack_require__(162)], __WEBPACK_AMD_DEFINE_RESULT__ = function (restSearch, model, chain, validators, converters, worldEdge, utils, batchModel, searchTypes, searchParams) {\n 'use strict';\n\n var TYPES = {\n search: searchTypes.search,\n poi: searchTypes.poi,\n category: searchTypes.category,\n geometry: searchTypes.geometry,\n nearby: searchTypes.nearby,\n lowBandwidth: searchTypes.lowBandwidth\n },\n fields = searchParams.create();\n\n var search = restSearch();\n\n function addBoundingBoxParameters(data, boundingBox) {\n data.topLeft = [boundingBox.maxLat, boundingBox.minLon];\n data.btmRight = [boundingBox.minLat, boundingBox.maxLon];\n return data;\n }\n\n function callbackBestResult(bestResult, callback) {\n return function (response) {\n callback(bestResult ? response[0] : response);\n };\n }\n\n function Search(options) {\n this.options = options;\n this.defaultFields = utils.clone(fields);\n this.fields = {};\n }\n\n Search.prototype.TYPE = TYPES;\n Search.prototype.model = model;\n Search.prototype.construct = function () {\n this.fields = utils.addFields.call(this, this.fields);\n // eslint-disable-next-line vars-on-top\n var batchFields = {\n batchItems: {\n validator: validators.arrayOf(this.fields),\n converter: converters.arrayOf(this.fields)\n }\n };\n this.options = this.options || {};\n this.options.__serviceType = 'search';\n\n if (Array.isArray(this.options)) {\n return chain.call(this, batchFields, this.handleBatchChain, {\n batchItems: this.options\n });\n } else {\n return chain.call(this, this.fields, this.handleChain, this.options);\n }\n };\n\n Search.prototype.handleBatchChain = function (data, callback) {\n data.batchItems.forEach(searchParams.modifyRequestOptions);\n search.batch(searchParams.modifyFields(this.fields), data, function (results) {\n callback.call(this, batchModel(results));\n });\n };\n\n function searchQuery(fields) {\n var modifiedFields = searchParams.modifyFields(fields);\n return function (options, callback) {\n return search.search(modifiedFields, options, callback);\n };\n }\n\n Search.prototype.handleChain = function (data, callback) {\n searchParams.modifyRequestOptions(data);\n worldEdge(searchQuery(this.fields), this.model, data, callbackBestResult(Boolean(data.bestResult), callback), addBoundingBoxParameters);\n };\n //TODO We should think how to refactor this, code below does some WEIRD trick.\n //Take a look in fuzzySearch.js how it is called - they call just constructor function\n function searchConstructor(options) {\n return new Search(options).construct();\n }\n\n searchConstructor.prototype.constructor = Search;\n\n return searchConstructor;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable max-len */\n\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n var origin = 'api.tomtom.com';\n return {\n 'mapboxgl.version': '0.53.0',\n 'sdk.version': '4.47.6',\n 'analytics.header.name': 'TomTom-User-Agent',\n 'analytics.header.sdkName': 'MapsWebSDK',\n 'origin': origin,\n\n // copyrights\n 'endpoints.copyrightsWorld': origin + '/map/1/copyrights.{contentType}',\n 'endpoints.copyrightsBounds': origin + '/map/1/copyrights/{minLon}/{minLat}/{maxLon}/{maxLat}.{contentType}',\n 'endpoints.caption': origin + '/map/1/copyrights/caption.{contentType}',\n\n // search\n 'endpoints.geocode': origin + '/search/2/geocode/{query}.{contentType}',\n 'endpoints.batchGeocodeQuery': '/geocode/{query}.{contentType}',\n 'endpoints.structuredGeocode': origin + '/search/2/structuredGeocode.{contentType}',\n 'endpoints.batchStructuredGeocodeQuery': '/structuredGeocode.{contentType}',\n 'endpoints.search': origin + '/search/2/{type}/{query}.{contentType}',\n 'endpoints.batchSearch': origin + '/search/2/batch.{contentType}',\n 'endpoints.batchSyncSearch': origin + '/search/2/batch/sync.{contentType}',\n 'endpoints.batchSearchQuery': '/{type}/{query}.{contentType}',\n 'endpoints.adp': origin + '/search/2/additionalData.{contentType}',\n 'endpoints.reverseGeocode': origin + '/search/2/{type}/{position}.{contentType}',\n 'endpoints.batchReverseGeocodeQuery': '/{type}/{position}.{contentType}',\n\n // traffic\n 'endpoints.trafficIncidents': origin + '/traffic/services/4/incidentDetails/{style}/{minLat},{minLon},{maxLat},{maxLon}/{zoom}/{trafficModelID}/{contentType}',\n 'endpoints.trafficViewport': origin + '/traffic/services/4/incidentViewport/0,0,.1,.1/0/0,0,.1,.1/0/false/{contentType}',\n 'endpoints.flowSegmentData': origin + '/traffic/services/4/flowSegmentData/{style}/{zoom}/{contentType}',\n 'endpoints.incidentRegions': origin + '/traffic/services/4/incidentRegions/{contentType}',\n\n // layers\n 'endpoints.trafficLayer': '{s}.' + origin + '/traffic/map/4/tile/incidents/{style}/{z}/{x}/{y}.png',\n 'endpoints.trafficFlowLayer': '{s}.' + origin + '/traffic/map/4/tile/flow/{style}/{z}/{x}/{y}.png',\n 'endpoints.tileLayer': '{s}.' + origin + '/map/1/tile/{layer}/{style}/{z}/{x}/{y}.png',\n\n // routing\n 'endpoints.routing': origin + '/routing/1/calculateRoute/{locations}/{contentType}',\n 'endpoints.reachableRange': origin + '/routing/1/calculateReachableRange/{origin}/{contentType}',\n 'endpoints.batchRouting': origin + '/routing/1/batch/{contentType}',\n 'endpoints.batchSyncRouting': origin + '/routing/1/batch/sync/{contentType}',\n 'endpoints.batchRoutingQuery': '/calculateRoute/{locations}/{contentType}',\n 'endpoints.batchReachableRangeQuery': '/calculateReachableRange/{origin}/{contentType}',\n 'endpoints.matrixRouting': origin + '/routing/1/matrix/{contentType}',\n 'endpoints.matrixSyncRouting': origin + '/routing/1/matrix/sync/{contentType}',\n\n //static map image\n 'endpoints.staticMapImage': 'https://' + origin + '/map/1/staticimage',\n\n 'vector.glyphs': 'https://' + origin + '/maps-sdk-js/4.47.6/glyphs/{fontstack}/{range}.pbf',\n 'vector.sprites': 'https://' + origin + '/maps-sdk-js/4.47.6/sprites/sprite'\n };\n}.call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n var ObjectModel = function ObjectModel() {//eslint-disable-line\n };\n\n ObjectModel.prototype.simplify = function () {\n return Object.assign({}, this);\n };\n\n return ObjectModel;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * @ignore\n * Objects of this class represent Html elements with folding/wraping functionality\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n function Wrapable(htmlElement, wrapFunction) {\n this._htmlElement = htmlElement;\n this._wrapFunction = wrapFunction;\n }\n\n /**\n * @ignore\n * @return {HtmlElement}\n */\n Wrapable.prototype.getHtmlElement = function () {\n return this._htmlElement;\n };\n\n /**\n * @ignore\n * Wraps/folds element\n */\n Wrapable.prototype.wrap = function () {\n this._wrapFunction(this._htmlElement);\n };\n\n return Wrapable;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Utility class for creating map markers.\n *\n * @class SVGIcon\n * @namespace L\n * @extends L.Icon\n * @module Map\n * @constructor\n * @param {Object} [options]\n * @param {Object} [options.background]\n * @param {Number[]} [options.background.iconSize=[30, 36]]\n * @param {Number[]} [options.background.iconAnchor=[15, 36]]\n * @param {String} [options.background.icon=\"icon-marker-black\"]\n * @param {Boolean} [options.background.noPlainSVG=false]\n * @param {Object} [options.icon]\n * @param {Number[]} [options.icon.iconSize=[30, 30]]\n * @param {Number[]} [options.icon.iconAnchor=[0, 0]]\n * @param {String} [options.icon.icon=\"icon-flag-white\"]\n * @param {Boolean} [options.icon.noPlainSVG=false]\n * @param {Number[]} [options.popupAnchor=[0, -30]]\n * @param {Number} [options.opacity=0.8]\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, Utils) {\n 'use strict';\n\n var defaultOptions;\n\n function setNodeIconAnchorStyle(options, node) {\n var anchor;\n if (options.iconAnchor) {\n anchor = L.point(options.iconAnchor);\n node.style.marginLeft = -anchor.x + 'px';\n node.style.marginTop = -anchor.y + 'px';\n }\n }\n\n function setNodeStyleFromStyleOption(options, node) {\n var css;\n for (css in options.style) {\n if (options.style.hasOwnProperty(css)) {\n node.style[css] = options.style[css];\n }\n }\n }\n // TODO: A CSS class name should be used to apply this CSS rules instead of doing it programmatically\n function setNodeStyle(node, options) {\n node.style.width = options.iconSize[0] + 'px';\n node.style.height = options.iconSize[1] + 'px';\n node.style.backgroundSize = options.iconSize[0] + 'px ' + options.iconSize[1] + 'px';\n setNodeIconAnchorStyle(options, node);\n node.style.position = 'absolute';\n node.style.textAlign = 'center';\n node.style.verticalAlign = 'middle';\n node.style.lineHeight = options.iconSize[1] + 'px';\n if (options.style) {\n setNodeStyleFromStyleOption(options, node);\n }\n }\n\n function extractBackgroundToPlainSVG(node, options) {\n var clonedNode, match, svg;\n clonedNode = node.cloneNode();\n clonedNode.style.display = 'none';\n document.body.appendChild(clonedNode);\n svg = window.getComputedStyle(clonedNode).getPropertyValue('background-image');\n document.body.removeChild(clonedNode);\n\n if (!svg) {\n return;\n }\n match = svg.match(/(%3Csvg[^\"']+%3C%2Fsvg%3E)/i);\n if (!match) {\n return;\n }\n svg = decodeURIComponent(match[1]);\n node.innerHTML = svg;\n node.firstChild.setAttribute('width', options.iconSize[0] + 'px');\n node.firstChild.setAttribute('height', options.iconSize[1] + 'px');\n node.firstChild.setAttribute('style', 'display: block; position: absolute;');\n node.style.backgroundImage = 'none';\n }\n\n /**\n * @ignore\n * Receive class names as arguments and returns a string with the valid ones.\n * @param {String[]} classNames Following jsdoc spec: http://usejsdoc.org/tags-param.html\n * @return {String} String with class names\n */\n function concatClassNames(classNames) {\n // eslint-disable-line no-unused-vars\n return classNames.filter(function (className) {\n return Utils.isNonEmptyString(className);\n }).join(' ');\n }\n\n function createDiv(options, parent, additionalClassName) {\n var classNames = concatClassNames(['icon', options.icon || 'content', additionalClassName]),\n node = L.DomUtil.create('div', classNames, parent);\n setNodeStyle(node, options);\n if (options.icon && !options.noPlainSVG) {\n extractBackgroundToPlainSVG(node, options, options.icon);\n }\n if (options.content) {\n node.innerHTML = options.content;\n }\n return node;\n }\n\n function createImg(options, parent) {\n var node = L.DomUtil.create('div', 'icon-image', parent),\n img = L.DomUtil.create('img', 'icon-image-img', node);\n img.style.width = options.iconSize[0] + 'px';\n img.style.height = options.iconSize[1] + 'px';\n if (/^http/i.test(options.icon)) {\n img.src = options.icon;\n } else {\n img.src = L.Icon.Default.imagePath + '/' + options.icon;\n }\n setNodeStyle(node, options);\n return node;\n }\n\n function isFile(name) {\n return (/\\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(name)\n );\n }\n\n function createNode(options, parent, additionalClassName) {\n if (L.Browser.svg && !isFile(options.icon)) {\n return createDiv(options, parent, additionalClassName);\n }\n return createImg(options, parent);\n }\n\n defaultOptions = {\n background: {\n iconSize: [30, 36],\n iconAnchor: [15, 36],\n icon: 'icon-marker-black',\n noPlainSVG: false\n },\n icon: {\n iconSize: [30, 30],\n iconAnchor: [0, 0],\n icon: 'icon-flag-white',\n noPlainSVG: false\n },\n popupAnchor: [0, -30],\n opacity: 0.8\n };\n\n function mergeOptions(result, source, option) {\n if (source.hasOwnProperty(option)) {\n result[option] = source[option] ? L.extend({}, defaultOptions[option], source[option]) : null;\n }\n }\n\n /**\n * @ignore\n * options: {\n * background: {\n * iconSize: L.Browser.retina ? [50, 60] : [30, 36],\n * iconAnchor: L.Browser.retina ? [25, 60] : [15, 36],\n * icon: 'marker',\n * noPlainSVG: false\n * },\n * icon: {\n * iconSize: L.Browser.retina ? [50, 50] : [30, 30],\n * iconAnchor: [0, 0],\n * icon: 'flag-white',\n * noPlainSVG: false\n * },\n * content: {\n * iconSize: [30, 30],\n * iconAnchor: [0, 0],\n * content: '',\n * noPlainSVG: true,\n * style: {\n * 'color': '#fff',\n * 'font-weight': 'bold',\n * 'font-size': '20px'\n * }\n * }\n * popupAnchor: L.Browser.retina ? [0, -50] : [0, -30],\n * opacity: 0.8\n */\n\n L.SVGIcon = L.Icon.extend({\n initialize: function initialize(options) {\n this.options = L.Util.extend({}, defaultOptions, options);\n if (!options) {\n return;\n }\n mergeOptions(this.options, options, 'background');\n mergeOptions(this.options, options, 'icon');\n },\n\n createIcon: function createIcon() {\n var options = this.options;\n this.container = createNode(options.background || options.icon, null, 'icon-marker');\n if (options.background && options.icon && options.icon.icon) {\n createNode(options.icon, this.container, null);\n }\n if (options.content) {\n this.contentContainer = createDiv(options.content, this.container, null);\n }\n L.DomUtil.setOpacity(this.container, options.opacity);\n return this.container;\n },\n\n /**\n * Sets the HTML content of the marker.\n * @method setContent\n * @param {String} content Valid HTML string\n */\n setContent: function setContent(content) {\n if (this.contentContainer) {\n this.contentContainer.innerHTML = content;\n }\n },\n\n /**\n * Changes the opacity of the marker.\n * @method setOpacity\n * @param {Number} opacity Number between 0 and 1\n */\n setOpacity: function setOpacity(opacity) {\n this.options.opacity = opacity;\n L.DomUtil.setOpacity(this.container, opacity);\n }\n });\n\n L.svgIcon = function (options) {\n return new L.SVGIcon(options);\n };\n\n return L.SVGIcon;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This module do HTTP requests modifying the request's data to handle bounding box fixes when the are\n * crosses the antimeridian line.\n * @ignore\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (utils) {\n 'use strict';\n\n function calculateBoundingBox(bBox) {\n if (bBox.minLon < -180) {\n return [{ minLon: -180, minLat: bBox.minLat, maxLon: bBox.maxLon, maxLat: bBox.maxLat }, { minLon: 360 + bBox.minLon, minLat: bBox.minLat, maxLon: 180, maxLat: bBox.maxLat }];\n }\n\n if (bBox.maxLon > 180) {\n return [{ minLon: bBox.minLon, minLat: bBox.minLat, maxLon: 180, maxLat: bBox.maxLat }, { minLon: -180, minLat: bBox.minLat, maxLon: bBox.maxLon - 360, maxLat: bBox.maxLat }];\n }\n\n return [bBox];\n }\n\n function splitOnEdgeOfTheWorld(bBox) {\n if (!bBox) {\n return [];\n }\n return calculateBoundingBox(bBox);\n }\n\n function responseCollector(numBoundingBoxes, responses, callback, model) {\n return function (response) {\n responses.push(response);\n if (responses.length === numBoundingBoxes) {\n responses = responses.length === 1 ? responses[0] : responses;\n callback(model(responses));\n }\n };\n }\n\n /**\n * @ignore\n * @param {Object} bbox\n * @param {Object} bbox.topLeftPoint\n * @param {Object} bbox.btmRightPoint\n * @return {LatLngBounds}\n */\n function unwrapBbox(bbox) {\n var wrappedBbox = {\n topLeftPoint: L.latLng(bbox.topLeftPoint.lat, bbox.topLeftPoint.lon).wrap(),\n btmRightPoint: L.latLng(bbox.btmRightPoint.lat, bbox.btmRightPoint.lon).wrap()\n };\n if (wrappedBbox.topLeftPoint.lng > 0 && wrappedBbox.btmRightPoint.lng < 0) {\n return {\n topLeftPoint: {\n lat: wrappedBbox.topLeftPoint.lat,\n lon: wrappedBbox.topLeftPoint.lng\n },\n btmRightPoint: {\n lat: wrappedBbox.btmRightPoint.lat,\n lon: wrappedBbox.btmRightPoint.lng + 360\n }\n };\n }\n return bbox;\n }\n\n /**\n * @ignore\n * @param {Object[]} results\n * @return {Object[]}\n */\n function unwrapBboxInResponse(results) {\n return results.map(function (result) {\n if (result.boundingBox) {\n result.boundingBox = unwrapBbox(result.boundingBox);\n }\n if (result.viewport) {\n result.viewport = unwrapBbox(result.viewport);\n }\n return result;\n });\n }\n\n /**\n * @ignore\n * It returns a new callback function that will handle the unwrapping of bbox values.\n * @param {Object} data\n * @param {Function} originalCallback\n * @return {Function}\n */\n function handleBboxUnwrapping(data, originalCallback) {\n if (data.unwrapBbox) {\n return function (results) {\n originalCallback(unwrapBboxInResponse(results));\n };\n }\n delete data.unwrapBbox;\n return originalCallback;\n }\n\n function getBoundingBox(data) {\n if (data.boundingBox) {\n return data.boundingBox;\n } else if (utils.isValidValue(data.minLat) && utils.isValidValue(data.minLon) && utils.isValidValue(data.maxLat) && utils.isValidValue(data.maxLon)) {\n return {\n minLat: data.minLat,\n minLon: data.minLon,\n maxLat: data.maxLat,\n maxLon: data.maxLon\n };\n }\n\n return null;\n }\n\n return function (service, model, data, callback, addBoundingBoxParameters) {\n var boundingBoxes = splitOnEdgeOfTheWorld(getBoundingBox(data)),\n boundingBoxesLength = boundingBoxes.length || 1,\n responses = [],\n i;\n delete data.boundingBox;\n\n callback = handleBboxUnwrapping(data, callback);\n\n for (i = 0; i < boundingBoxesLength; i += 1) {\n data = boundingBoxes[i] ? addBoundingBoxParameters(data, boundingBoxes[i]) : data;\n service(data, responseCollector(boundingBoxesLength, responses, callback, model));\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Tile layer for Leaflet that use the\n * [Maps API - Vector](https://developer.tomtom.com/maps-api/maps-api-documentation/vector)\n * from TomTom.\n *\n * The current vector renderer implementation is based on the\n * [Mapbox GL JS library](https://www.mapbox.com/mapbox-gl-js/api/).\n *\n * The recommended way to use vector maps is by using the \"source\" option of {{#crossLink \"L.Map\"}}{{/crossLink}} which\n * will create an instance of this class and immediately attach it to the newly created map instance.\n *\n * @example\n * ```js\n * // Vector layer instance with factory vector styles\n * var vectorLayer = new L.TomTomVectorLayer({\n * vector: {\n * key: \"\"\n * }\n * });\n * ```\n *\n * @class TomTomVectorLayer\n * @namespace L\n * @module Map\n * @extends L.Class\n * @constructor\n * @param {Object} [options] It accepts all the options that\n * Leaflet's TileLayer\n * allows.\n * The additional options, which are TomTom specific, are described below.\n * @param {\"main\"|\"night\"} [options.style=\"main\"] The base map style to use\n * @param {\"basic\"|\"hybrid\"|\"labels\"} [options.layer=\"basic\"] The base map's layer to use\n * @param {Object} [options.vector] Options specific for vector layer\n * @param {String} [options.vector.key] API key that can be obtained from\n * [TomTom's developer portal](https://developer.tomtom.com).\n * When the key is passed on the map's initialization, it is set globally for all the services.\n * It can be overwritten with the `tomtom.key()` method globally or per service\n * with `tomtom..key()` functions.\n * It is also possible to pass a specific key while working with instances of the services.\n * @param {Object} [options.vector.renderer] Mapbox GL JS Map options as described in the\n * Mapbox API Docs\n * @param {\"error\"|\"raster\"} [options.vector.fallback=\"error\"] Defines the action when the browser doesn't have\n * support for WebGL (needed by the vector layer).\n * The possible values are:\n * - `\"error\"` will throw a javascript Error informing about the problem.\n * - `\"raster\"` will automatically switch to the raster layer.\n * @param {String} [options.language] Language to be used for map labels. Should be one of supported\n * IETF language tags described\n * [here](https://developer.tomtom.com/maps-api/maps-api-documentation-raster/raster-tile#listOfSupportedLanguages).\n * When data in specified language is not available for a specific label,\n * default language\n * is used.\n */\n/* eslint-enable max-len */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(5), __webpack_require__(138), __webpack_require__(68), __webpack_require__(9), __webpack_require__(69), __webpack_require__(0), __webpack_require__(12)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, security, mapboxGLLeaflet, mapTheme, ApiKeyNames, Utils, ServiceUtils, analytics) {\n 'use strict';\n\n var EVENTS = {\n /**\n * Fired immediately after the style was fully loaded.\n * @event STYLE_LOAD_END\n * @type String\n */\n STYLE_LOAD_END: 'tomtom.styleloadend',\n\n /**\n * Fired when an error occurs during the initialization of the vector layer.\n * @event MAP_ERROR\n * @type String\n */\n MAP_ERROR: 'tomtom.error'\n };\n\n function mapboxStyleLoadedEventHandler(e) {\n if (e.dataType !== 'style') {\n return;\n }\n this.fire(L.TomTomVectorLayer.Events.STYLE_LOAD_END);\n }\n\n function mapErrorHandler(event) {\n this.fire(L.TomTomVectorLayer.Events.MAP_ERROR, event);\n }\n\n function toFront(el) {\n var parent = el.parentNode;\n if (parent.lastChild !== el) {\n parent.appendChild(el);\n }\n }\n\n function toBack(el) {\n var parent = el.parentNode;\n if (parent.firstChild !== el) {\n parent.insertBefore(el, parent.firstChild);\n }\n }\n\n L.TomTomVectorLayer = mapboxGLLeaflet.extend({\n\n Events: EVENTS,\n\n statics: {\n Events: EVENTS\n },\n\n /**\n * Name of vector layer. It can be used to differentiate layers.\n * @property name\n * @default \"vector\"\n * @type String\n */\n name: 'vector',\n\n onAdd: function onAdd(map) {\n var that = this;\n mapboxGLLeaflet.prototype.onAdd.call(this, map);\n this.bringToBack();\n this._glMap.on('data', this._mapboxStyleLoadedEventHandler);\n this._glMap.on('error', this._mapErrorHandler);\n this._glMap.on('zoomstart', function () {\n that._glMap.once('idle', function () {\n that._glMap.triggerRepaint();\n });\n });\n Utils.updateMaxZoom(map, this.name);\n },\n\n onRemove: function onRemove(map) {\n this._glMap.off('data', this._mapboxStyleLoadedEventHandler);\n this._glMap.off('error', this._mapErrorHandler);\n mapboxGLLeaflet.prototype.onRemove.call(this, map);\n },\n\n _updateZIndex: function _updateZIndex() {\n if (this._glContainer && this.options.zIndex !== undefined && this.options.zIndex !== null) {\n this._glContainer.style.zIndex = this.options.zIndex;\n }\n },\n\n _setAutoZIndex: function _setAutoZIndex(compare) {\n // go through all other layers of the same pane, set zIndex to max + 1 (front) or min - 1 (back)\n var i,\n len,\n zIndex,\n layers = this.getPane().children,\n edgeZIndex = -compare(-Infinity, Infinity); // -Infinity for max, Infinity for min\n for (i = 0, len = layers.length, zIndex; i < len; i++) {\n zIndex = layers[i].style.zIndex;\n if (layers[i] !== this._glContainer && zIndex) {\n edgeZIndex = compare(edgeZIndex, Number(zIndex));\n }\n }\n if (isFinite(edgeZIndex)) {\n this.options.zIndex = edgeZIndex + compare(-1, 1);\n this._updateZIndex();\n }\n },\n\n bringToBack: function bringToBack() {\n if (this._map && this._glContainer) {\n toBack(this._glContainer);\n this._setAutoZIndex(Math.min);\n }\n return this;\n },\n\n bringToFront: function bringToFront() {\n if (this._map && this._glContainer) {\n toFront(this._glContainer);\n this._setAutoZIndex(Math.max);\n }\n return this;\n },\n\n _validateUrl: function _validateUrl(url) {\n var pattern = /(http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-/]))?/;\n\n return Boolean(ServiceUtils.isString(url) && pattern.test(url));\n },\n\n _getResourcesUrls: function _getResourcesUrls(options) {\n return {\n glyphs: this._validateUrl(options.glyphsUrl) ? options.glyphsUrl : options.basePath + '/glyphs/{fontstack}/{range}.pbf',\n sprite: this._validateUrl(options.spriteUrl) ? options.spriteUrl : options.basePath + '/sprites/sprite'\n };\n },\n /**\n * Returns the vector style object currently applied to the vector layer.\n *\n * @method getStyle\n * @return {Object} A object with the current style or undefined if no style was applied yet.\n */\n getStyle: function getStyle() {\n return this._glMap.style.stylesheet;\n },\n /**\n * Sets the style for the vector layer.\n *\n * It expects an object formatted in compliance with the\n * [Mapbox style specification](https://www.mapbox.com/mapbox-gl-js/style-spec/).\n *\n * @method setStyle\n * @param {Object} style object which will be applied to vectorLayer\n */\n setStyle: function setStyle(style) {\n if (this._glMap) {\n this._glMap.setStyle(style);\n }\n },\n\n updateOptions: function updateOptions(options) {\n var theme = mapTheme.getTheme([this.options, options], this.name);\n this.options.layer = theme.layer;\n this.options.style = theme.style;\n this.options.renderer.style.theme = theme;\n if (this._glMap) {\n this._glMap.setStyle(this.options.renderer.style);\n }\n },\n\n _initializeDefaultStyleOptions: function _initializeDefaultStyleOptions(options) {\n var defaultStyleUrls;\n options.basePath = options.basePath !== undefined ? options.basePath : '/sdk';\n defaultStyleUrls = {\n main: {\n basic: options.basePath + '/styles/basic_main.json',\n hybrid: options.basePath + '/styles/hybrid_main.json',\n labels: options.basePath + '/styles/labels_main.json'\n },\n night: {\n basic: options.basePath + '/styles/basic_night.json',\n hybrid: options.basePath + '/styles/hybrid_night.json',\n labels: options.basePath + '/styles/labels_night.json'\n }\n };\n\n options.styleUrlMapping = L.Util.extend(defaultStyleUrls, options.styleUrlMapping);\n return options;\n },\n\n initialize: function initialize(options) {\n var theme, vectorOptions, rendererOptions, resourceUrls;\n options = L.extend({}, options);\n this._initializeDefaultStyleOptions(options);\n theme = mapTheme.getTheme([options, options.vector], this.name);\n vectorOptions = L.extend({}, options.vector);\n vectorOptions.renderer = vectorOptions.renderer || {};\n security.setKey(ApiKeyNames.vector, vectorOptions.key);\n resourceUrls = this._getResourcesUrls(options);\n rendererOptions = {\n accessToken: 'no-token',\n style: {\n resourceUrls: resourceUrls,\n styleUrlMapping: options.styleUrlMapping,\n theme: theme,\n language: options.language,\n geopolView: options.geopolView,\n securityKeyName: options.securityKeyName || ApiKeyNames.vector,\n preSetStyleCallback: options.preSetStyleCallback\n },\n transformRequest: function transformRequest(url) {\n var headers = {};\n\n if (analytics.isTomtomOrigin(url)) {\n headers[analytics.getHeaderName()] = analytics.getHeaderContent();\n }\n\n return {\n url: url,\n headers: headers\n };\n }\n };\n vectorOptions.renderer = L.extend(rendererOptions, vectorOptions.renderer);\n vectorOptions.minZoom = 2;\n vectorOptions.maxZoom = 22;\n vectorOptions.style = theme.style;\n vectorOptions.layer = theme.layer;\n L.setOptions(this, vectorOptions);\n this._mapboxStyleLoadedEventHandler = mapboxStyleLoadedEventHandler.bind(this);\n this._mapErrorHandler = mapErrorHandler.bind(this);\n mapboxGLLeaflet.prototype.initialize.call(this, vectorOptions);\n }\n });\n\n ServiceUtils.addDeprecatedProperty(L.TomTomVectorLayer, 'EVENTS', 'Events');\n\n L.tomTomVectorLayer = function (options) {\n return new L.TomTomVectorLayer(options);\n };\n\n return L.TomTomVectorLayer;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * @ignore\n * This module returns a function that returns a mixin object with helper functions to start listen on layers' events.\n * This module has a soft dependency to the traffic and trafficFlow modules.\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n /**\n * @ignore\n * @param {String} baseName\n * @return {String} Name of the property in the layer instance\n */\n\n function getFlagName(baseName) {\n return '_' + baseName + 'Added';\n }\n\n /**\n * @ignore\n * @param {L.Layer} source Layer instance that could be added to or removed from the map if is necessary\n * @param {String} flagName\n * @return {String} Value of the property in the layer instance\n */\n function getFlag(source, flagName) {\n return source[getFlagName(flagName)];\n }\n\n /**\n * @ignore\n * @param {L.Layer} source Layer instance\n * @param {String} baseLayerName\n * @return {Boolean}\n */\n function shouldAddLayer(source, baseLayerName) {\n var mapUseBaseLayer, mapUseTraffic, mapUseTrafficFlow, mapUseVectorTrafficFlow, mapUseVectorIncidents;\n mapUseBaseLayer = Boolean(getFlag(source, baseLayerName));\n mapUseTraffic = Boolean(getFlag(source, 'traffic'));\n mapUseTrafficFlow = Boolean(getFlag(source, 'trafficFlow'));\n mapUseVectorTrafficFlow = Boolean(getFlag(source, 'vectorTrafficFlow'));\n mapUseVectorIncidents = Boolean(getFlag(source, 'vectorTrafficIncidents'));\n return mapUseBaseLayer && (mapUseTraffic || mapUseTrafficFlow || mapUseVectorTrafficFlow || mapUseVectorIncidents);\n }\n\n /**\n * @ignore\n * @param {L.Layer} source Layer instance\n * @param {String} baseLayerName\n * @return {Boolean}\n */\n function shouldRemoveLayer(source, baseLayerName) {\n return !shouldAddLayer(source, baseLayerName);\n }\n\n /**\n * @ignore\n * @param {L.Layer} source Layer instance that could be added to the map if is necessary\n * @param {L.Map} map\n * @param {String} baseLayerName\n */\n function addIfNecessary(source, map, baseLayerName) {\n if (source._attached) {\n return;\n }\n if (shouldAddLayer(source, baseLayerName)) {\n map.addLayer(source);\n source._attached = true;\n }\n }\n\n /**\n * @ignore\n * @param {L.Layer} source Layer instance that could be removed from the map if is necessary\n * @param {L.Map} map\n * @param {String} baseLayerName\n */\n function removeIfNecessary(source, map, baseLayerName) {\n if (!source._attached) {\n return;\n }\n if (shouldRemoveLayer(source, baseLayerName)) {\n map.removeLayer(source);\n source._attached = false;\n }\n }\n\n return function (baseLayerName) {\n return {\n /**\n * @ignore\n * Install listeners to add or remove the current Layer instance (of the\n * class that use this mixin functions) if specific Layer types are added to the map.\n * @param {L.Map} map\n */\n registerEventHandlers: function registerEventHandlers(map) {\n var that = this;\n\n map.on('layeradd', function (event) {\n var layerName = event.layer.name;\n if (!layerName) {\n return;\n }\n that[getFlagName(layerName)] = true;\n addIfNecessary(that, map, baseLayerName);\n });\n map.on('layerremove', function (event) {\n var layerName = event.layer.name;\n if (!layerName) {\n return;\n }\n that[getFlagName(layerName)] = false;\n removeIfNecessary(that, map, baseLayerName);\n });\n }\n };\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Reverse geocode service implementation.\n *\n * It allows to convert geographical coordinates into textual address representation using the TomTom's\n * [Search API - Reverse Geocode](https://developer.tomtom.com/search-api/search-api-documentation-reverse-geocoding/reverse-geocode).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"ReverseGeocode/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"ReverseGeocode/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * The final response from service is a JSON object with the following structure:\n *\n* ```js\n * {\n * \"summary\": {\n * \"queryTime\": 172,\n * \"numResults\": 1\n * },\n * \"addresses\": [\n * {\n * \"address\": { // Structured Address for the result\n * \"buildingNumber\": \"2515\",\n * \"streetNumber\": \"2515\",\n * \"routeNumbers\": [],\n * \"street\": \"Soquel Dr\",\n * \"streetName\": \"Soquel Dr\",\n * \"streetNameAndNumber\": \"2515 Soquel Dr\",\n * \"countryCode\": \"US\",\n * \"countrySubdivision\": \"CA\",\n * \"countrySubdivisionName\": \"California\",\n * \"municipality\": \"Santa Cruz\",\n * \"sideOfStreet\": \"R\",\n * \"offsetPosition\": \"36.988240,-121.974790\",\n * \"country\": \"United States of America\",\n * \"countryCodeISO3\": \"USA\",\n * \"freeformAddress\": \"2515 Soquel Dr\\nSanta Cruz CA 95065\",\n * \"boundingBox\": {\n * \"northEast\": \"36.99265,-121.96917\",\n * \"southWest\": \"36.98365,-121.98043\",\n * \"entity\": \"position\"\n * },\n * },\n * \"position\": \"36.98815,-121.97480\",\n * \"matchType\": \"HouseNumberRange\",\n * \"roadUse\": [\n * \"LocalStreet\"\n * ]\n * }\n * ],\n * \"spatialKeys\": []\n * }\n * ```\n *\n * @example\n * ```js\n * function callbackFn(response) {\n * console.log(response);\n * }\n * tomtom.reverseGeocode()\n * .position(\"51.759,19.449\")\n * .go()\n * .then(callbackFn);\n * ```\n *\n * @class ReverseGeocode\n * @module Services\n * @uses Chain\n * @uses KeyMixin\n * @uses ProtocolMixin\n * @uses RadiusMixin\n * @uses PositionMixin\n * @uses SpatialKeysMixin\n * @uses LanguageMixin\n * @uses ViewMixin\n * @uses HeadingMixin\n * @uses AllowFreeformNewlineMixin\n *\n * @constructor\n * @param {Object} [options] Options to be passed to the reverse geocode call,\n * or Array of such options objects to perform batch request.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n *\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n *\n * @param {String|Array|Object} options.position Specific longitude and latitude of the location where the address\n * is supposed to be found.\n * The possible formats are explained in more detail in the\n * {{#crossLink \"ReverseGeocode/position:method\"}}{{/crossLink}} method.\n * This option is required to make the call.\n * @param {String} [options.key] API Key valid for requested service.\n * @param {Boolean} [options.spatialKeys=false] DEPRECATED! If is enable the response will also contain a proprietary geo-spatial\n * key information for a specified location\n * @param {Boolean} [options.returnSpeedLimit=false] To enable return of the posted speed limit (where\n * available).\n * @param {Number} [options.heading] The directional heading of the vehicle in degrees, for travel along a\n * segment of roadway.\n * `0` is North, `90` is East and so on, values range from `-360` to `360`.\n * The precision can include up to one decimal place.\n * @param {Number} [options.radius=10000] The maximum distance in meters from the specified position to consider\n * @param {String} [options.number] If a street number is sent in along with the request, the response\n * may include the side of the street (Left/Right) and also an offset position for that street number.\n * @param {Boolean} [options.returnRoadUse=false] Requires to include a road use array for reversegeocodes at street level\n * @param {String[]|String} [options.roadUse] To restrict the result to one or a group of the following road uses:\n * `LimitedAccess`, `Arterial`, `Terminal`, `Ramp`, `Rotary`, `LocalStreet`.\n * @param {String} [options.language] Preferred language and script in which search results (including place names) are returned.\n * If language is not specified, the default official name will be returned in response. Supported languages are listed in the\n * documentation of the service. If requested language is not supported, a special error code will be returned.\n * @param {Boolean} [options.returnMatchType] Include information on the type of match the geocoder achieved in the response.\n * @param {Boolean} [options.allowFreeformNewline=false] Format of newlines in the formatted address.\n * If true, the address will contain newlines.\n * If false, newlines will be converted to commas.\n * @param {String} [options.view=Unified] The geopolitical view used in subsequent calls\n */\n/* eslint-enable */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(83), __webpack_require__(85), __webpack_require__(43)], __WEBPACK_AMD_DEFINE_RESULT__ = function (reverseGeocodeBase, reverseGeocodeParams, types) {\n 'use strict';\n\n var ReverseGeocodeBasePrototype = reverseGeocodeBase.prototype.constructor;\n\n function ReverseGeocode(options) {\n ReverseGeocodeBasePrototype.call(this, options);\n this.fields = reverseGeocodeParams(types.reverseGeocode);\n }\n\n ReverseGeocode.prototype = new ReverseGeocodeBasePrototype();\n ReverseGeocode.prototype.constructor = ReverseGeocode;\n\n return function (options) {\n return new ReverseGeocode(options).construct();\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, module) {var __WEBPACK_AMD_DEFINE_RESULT__;/**\n * @license\n * Lodash (Custom Build) \n * Build: `lodash core -o ./dist/lodash.core.js`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.5';\n\n /** Error message constants. */\n var FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_PARTIAL_FLAG = 32;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n /** `Object#toString` result references. */\n var 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 numberTag = '[object Number]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n /** Used to match HTML entities and HTML characters. */\n var reUnescapedHtml = /[&<>\"']/g,\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n array.push.apply(array, values);\n return array;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\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 */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\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 */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection 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 or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return baseMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\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 */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /*--------------------------------------------------------------------------*/\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n objectProto = Object.prototype;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\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 */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Built-in value references. */\n var objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeIsFinite = root.isFinite,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n return value instanceof LodashWrapper\n ? value\n : new LodashWrapper(value);\n }\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 */\n var 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 * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n }\n\n LodashWrapper.prototype = baseCreate(lodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\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 */\n function 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 * 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 */\n function baseAssignValue(object, key, value) {\n object[key] = value;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !false)\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\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 */\n var 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 */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return baseFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\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 */\n function baseGetTag(value) {\n return objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\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 */\n var baseIsArguments = noop;\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\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 {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, 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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : baseGetTag(object),\n othTag = othIsArr ? arrayTag : baseGetTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n stack || (stack = []);\n var objStack = find(stack, function(entry) {\n return entry[0] == object;\n });\n var othStack = find(stack, function(entry) {\n return entry[0] == other;\n });\n if (objStack && othStack) {\n return objStack[1] == other;\n }\n stack.push([object, other]);\n stack.push([other, object]);\n if (isSameTag && !objIsObj) {\n var result = (objIsArr)\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n stack.pop();\n return result;\n }\n if (!(bitmask & COMPARE_PARTIAL_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 var result = equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n stack.pop();\n return result;\n }\n }\n if (!isSameTag) {\n return false;\n }\n var result = equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n stack.pop();\n return result;\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\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 */\n function baseIteratee(func) {\n if (typeof func == 'function') {\n return func;\n }\n if (func == null) {\n return identity;\n }\n return (typeof func == 'object' ? baseMatches : baseProperty)(func);\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\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 */\n function baseMatches(source) {\n var props = nativeKeys(source);\n return function(object) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length];\n if (!(key in object &&\n baseIsEqual(source[key], object[key], COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG)\n )) {\n return false;\n }\n }\n return true;\n };\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, props) {\n object = Object(object);\n return reduce(props, function(result, key) {\n if (key in object) {\n result[key] = object[key];\n }\n return result;\n }, {});\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 */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\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 */\n function copyArray(source) {\n return baseSlice(source, 0, source.length);\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection 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 */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n return reduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = false;\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = false;\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\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 */\n function 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 */\n function 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\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\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 `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\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 */\n function 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 * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return fn.apply(isBind ? thisArg : this, args);\n }\n return wrapper;\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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? [] : undefined;\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n var compared;\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 (!baseSome(other, function(othValue, othIndex) {\n if (!indexOf(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\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 }\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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_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 var result = true;\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n var compared;\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, 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 return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value);\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 */\n function 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 */\n function 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 * 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 */\n function 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 */\n function 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 */\n function 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 func.apply(this, otherArgs);\n };\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 */\n var setToString = identity;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n return baseFilter(array, Boolean);\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (typeof fromIndex == 'number') {\n fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;\n } else {\n fromIndex = 0;\n }\n var index = (fromIndex || 0) - 1,\n isReflexive = value === value;\n\n while (++index < length) {\n var other = array[index];\n if ((isReflexive ? other === value : other !== other)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n start = start == null ? 0 : +start;\n end = end === undefined ? length : +end;\n return length ? baseSlice(array, start, end) : [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n predicate = guard ? undefined : predicate;\n return baseEvery(collection, baseIteratee(predicate));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n return baseFilter(collection, baseIteratee(predicate));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n return baseEach(collection, baseIteratee(iteratee));\n }\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n return baseMap(collection, baseIteratee(iteratee));\n }\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n return baseReduce(collection, baseIteratee(iteratee), accumulator, arguments.length < 3, baseEach);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n collection = isArrayLike(collection) ? collection : nativeKeys(collection);\n return collection.length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n predicate = guard ? undefined : predicate;\n return baseSome(collection, baseIteratee(predicate));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n function sortBy(collection, iteratee) {\n var index = 0;\n iteratee = baseIteratee(iteratee);\n\n return baseMap(baseMap(collection, function(value, key, collection) {\n return { 'value': value, 'index': index++, 'criteria': iteratee(value, key, collection) };\n }).sort(function(object, other) {\n return compareAscending(object.criteria, other.criteria) || (object.index - other.index);\n }), baseProperty('value'));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n return createPartial(func, WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG, thisArg, partials);\n });\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n if (!isObject(value)) {\n return value;\n }\n return isArray(value) ? copyArray(value) : copyObject(value, nativeKeys(value));\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 */\n function 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 */\n var 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 */\n var 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 */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or 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 boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is classified as a `Date` 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 date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = baseIsDate;\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\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 empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (isArrayLike(value) &&\n (isArray(value) || isString(value) ||\n isFunction(value.splice) || isArguments(value))) {\n return !value.length;\n }\n return !nativeKeys(value).length;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.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 * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(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 */\n function 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 */\n function 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 */\n function 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 */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is `null`.\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 `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\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 number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` 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 regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = baseIsRegExp;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!isArrayLike(value)) {\n return values(value);\n }\n return value.length ? copyArray(value) : [];\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n var toInteger = Number;\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 */\n var toNumber = Number;\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 convert.\n * @returns {string} Returns the converted 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 */\n function toString(value) {\n if (typeof value == 'string') {\n return value;\n }\n return value == null ? '' : (value + '');\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n copyObject(source, nativeKeys(source), object);\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, nativeKeysIn(source), object);\n });\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : assign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\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 = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasOwnProperty.call(object, path);\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 */\n var keys = nativeKeys;\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 */\n var keysIn = nativeKeysIn;\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n var value = object == null ? undefined : object[path];\n if (value === undefined) {\n value = defaultValue;\n }\n return isFunction(value) ? value.call(object) : value;\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\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 values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\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 */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n var iteratee = baseIteratee;\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(assign({}, source));\n }\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n baseEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.assignIn = assignIn;\n lodash.before = before;\n lodash.bind = bind;\n lodash.chain = chain;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.create = create;\n lodash.defaults = defaults;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.filter = filter;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.iteratee = iteratee;\n lodash.keys = keys;\n lodash.map = map;\n lodash.matches = matches;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.once = once;\n lodash.pick = pick;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.tap = tap;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.values = values;\n\n // Add aliases.\n lodash.extend = assignIn;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.clone = clone;\n lodash.escape = escape;\n lodash.every = every;\n lodash.find = find;\n lodash.forEach = forEach;\n lodash.has = has;\n lodash.head = head;\n lodash.identity = identity;\n lodash.indexOf = indexOf;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isBoolean = isBoolean;\n lodash.isDate = isDate;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isNaN = isNaN;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isRegExp = isRegExp;\n lodash.isString = isString;\n lodash.isUndefined = isUndefined;\n lodash.last = last;\n lodash.max = max;\n lodash.min = min;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.reduce = reduce;\n lodash.result = result;\n lodash.size = size;\n lodash.some = some;\n lodash.uniqueId = uniqueId;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Add `Array` methods to `lodash.prototype`.\n baseEach(['pop', 'join', 'replace', 'reverse', 'split', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = (/^(?:replace|split)$/.test(methodName) ? String.prototype : arrayProto)[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|join|replace|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n /*--------------------------------------------------------------------------*/\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (true) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = lodash;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n !(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n return lodash;\n }.call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = lodash)._ = lodash;\n // Export for CommonJS support.\n freeExports._ = lodash;\n }\n else {\n // Export to the global object.\n root._ = lodash;\n }\n}.call(this));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(47), __webpack_require__(108)(module)))\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function (require) {\n 'use strict';\n\n var mapboxSetStyleMethodModifier = __webpack_require__(110);\n var mainConfig = __webpack_require__(18);\n\n var mapboxgl;\n var isRtlPluginSet = false;\n\n function tryToGetMapbox() {\n var mapbox, rtlPlugin, objectURL;\n try {\n mapbox = __webpack_require__(118);\n\n //This flag is necessary, because setRTLTextPlugin throws error\n //setRTLTextPlugin cannot be called multiple times\n if (!isRtlPluginSet) {\n rtlPlugin = __webpack_require__(119);\n objectURL = window.URL.createObjectURL(new window.Blob([rtlPlugin], { type: 'text/javascript' }));\n //setRTLTextPlugin expects objectURL\n mapbox.setRTLTextPlugin(objectURL);\n isRtlPluginSet = true;\n }\n mapboxSetStyleMethodModifier.modifySetStyle(mapbox);\n return mapbox;\n } catch (e) {\n /**\n * hack to have optional dependency of mapboxgl\n * If you have some problems with mapbox support uncomment line below.\n * We are swallowing some errors here.\n */\n //console.error(e, e.stack);\n return null;\n }\n }\n\n mapboxgl = tryToGetMapbox();\n\n return {\n setMapbox: function setMapbox(mapboxReference) {\n if (mapboxReference && mapboxReference.version !== mainConfig['mapboxgl.version']) {\n console.warn('TomTom Maps SDK for Web expects mapboxgl \"' + mainConfig['mapboxgl.version'] + '\" version.');\n }\n mapboxgl = mapboxReference;\n mapboxSetStyleMethodModifier.modifySetStyle(mapboxgl);\n },\n tryToSetMapbox: function tryToSetMapbox() {\n if (!this.isMapboxSet()) {\n mapboxgl = tryToGetMapbox();\n }\n return this.isMapboxSet();\n },\n getMapbox: function getMapbox() {\n if (!this.isMapboxSet()) {\n throw new Error('You should provide Mapbox GL JS reference first.');\n }\n return mapboxgl;\n },\n isMapboxSet: function isMapboxSet() {\n return Boolean(mapboxgl);\n },\n isMapboxSupported: function isMapboxSupported() {\n return this.tryToSetMapbox() && mapboxgl.supported();\n }\n };\n}.call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n return {\n or: function or(value, defaultValue) {\n return value || defaultValue;\n },\n\n required: function required(value, error) {\n if (value === undefined || value === null) {\n throw new TypeError(error);\n }\n return value;\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(7)], __WEBPACK_AMD_DEFINE_RESULT__ = function (parameterApplications) {\n\n function isQueryParameter(fieldEntry) {\n var field = fieldEntry[1];\n return !field.application || field.application === parameterApplications.QUERY;\n }\n\n function isPathParam(fieldEntry) {\n var field = fieldEntry[1];\n return field.application === parameterApplications.PATH;\n }\n\n function isPostParam(fieldEntry) {\n var field = fieldEntry[1];\n return field.application === parameterApplications.POST;\n }\n\n function isOtherParam(fieldEntry) {\n var field = fieldEntry[1];\n return field.application === parameterApplications.OTHER;\n }\n\n function getFieldEntryName(fieldEntry) {\n return fieldEntry[0];\n }\n\n function toEntry(source) {\n return function (fieldName) {\n var name = source[fieldName] && source[fieldName].name || fieldName;\n return [name, source[fieldName]];\n };\n }\n\n function createParamsNames(fields, paramsFilterFunction) {\n return Object.keys(fields).map(toEntry(fields)).filter(paramsFilterFunction).map(getFieldEntryName);\n }\n\n function createQueryParamsNames(fields) {\n return createParamsNames(fields, isQueryParameter);\n }\n\n function createPathParamsNames(fields) {\n return createParamsNames(fields, isPathParam);\n }\n\n function createPostParamsNames(fields) {\n return createParamsNames(fields, isPostParam);\n }\n\n function createOtherParamsNames(fields) {\n return createParamsNames(fields, isOtherParam);\n }\n\n function createParams(fields, createParamNamesFunction, requestOptions) {\n var params = {};\n createParamNamesFunction(fields).forEach(function (paramName) {\n if (paramName in requestOptions) {\n params[paramName] = requestOptions[paramName];\n }\n });\n\n return params;\n }\n\n function createPathParams(fields, requestOptions) {\n return createParams(fields, createPathParamsNames, requestOptions);\n }\n\n return function (fields, requestOptions) {\n return {\n pathParams: createPathParams(fields, requestOptions),\n queryParams: createParams(fields, createQueryParamsNames, requestOptions),\n postParams: createParams(fields, createPostParamsNames, requestOptions),\n otherParams: createParams(fields, createOtherParamsNames, requestOptions)\n };\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(31)], __WEBPACK_AMD_DEFINE_RESULT__ = function (LocaleService) {\n 'use strict';\n\n return new LocaleService();\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Service for store and retrieve an specific locale setting.\n *\n * This service is used by map instances, widgets and services to store their locale\n * configuration.\n *\n * If its constructor receive a LocaleService instance as argument it will start listen changes in the\n * given instance and apply the same change in its own. That behavior allows the instances of this class to\n * be updated in cascade.\n *\n * @example\n * ```js\n * // Will use the global LocaleService\n * // You can obtain the global LocaleService calling tomtom.globalLocaleService()\n * tomtom.nearbySearch()\n * .go()\n *\n * // Will ignore the global LocaleService and use the provided language\n * tomtom.nearbySearch()\n * .language('pl-PL')\n * .go();\n *\n * // Example how to use locales which are set per map instance\n * var mapLanguage = mapInstance.getLocaleService().getCurrentLocale();\n * tomtom.nearbySearch()\n * .language(mapLanguage)\n * .go();\n * ```\n *\n * @class LocaleService\n * @module Services\n * @extends L.Evented\n * @constructor\n * @param {LocaleService} [parent] If is defined makes the new instance a \"slave\" of the given instance\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(32), __webpack_require__(1), __webpack_require__(56), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (Locale, L, languageTypesMapping, Utils) {\n 'use strict';\n\n var allLocales, trafficLocales, routingLocales, searchLocales, mapsLocales, LocaleService, EVENTS;\n var langsToIgnoreInAllSelector = ['NGT', 'NGT-Latn'];\n\n function createLocaleArrays(serviceType) {\n var prop, langType;\n var result = [];\n for (prop in languageTypesMapping) {\n if (languageTypesMapping.hasOwnProperty(prop)) {\n langType = languageTypesMapping[prop];\n\n if (!serviceType && langsToIgnoreInAllSelector.indexOf(prop) === -1 || langType[serviceType] && langType[serviceType].isNative === true) {\n\n result.push(new Locale(prop));\n }\n }\n }\n return result.sort(function (a, b) {\n return a.getLabel().localeCompare(b.getLabel());\n });\n }\n\n allLocales = createLocaleArrays(null);\n trafficLocales = createLocaleArrays('traffic');\n routingLocales = createLocaleArrays('routing');\n searchLocales = createLocaleArrays('search');\n mapsLocales = createLocaleArrays('maps');\n\n EVENTS = {\n /**\n * Fired after the locale was changed.\n * @event LOCALE_CHANGED\n * @type String\n *\n * @example\n * ```javascript\n * var localeService = new LocaleService();\n * localeService.on(L.LocaleService.Events.LOCALE_CHANGED, function(eventData) {\n * console.log(eventData);\n * });\n * ```\n */\n 'LOCALE_CHANGED': 'config.locale.changed'\n };\n\n function localeChangedHandler(locale) {\n this.setCurrentLocale(locale.getLanguageCode());\n }\n\n LocaleService = L.Evented.extend({\n\n Events: EVENTS,\n\n initialize: function initialize(parent) {\n if (parent instanceof LocaleService) {\n this.currentLocale = new Locale(parent.getCurrentLocale().getLanguageCode());\n this.parent = parent;\n parent.on(EVENTS.LOCALE_CHANGED, localeChangedHandler, this);\n } else {\n this.currentLocale = new Locale('en-GB');\n }\n },\n\n /**\n * Sets locale used by a service instance.\n *\n * Fires the event {{#crossLink \"LocaleService/LOCALE_CHANGED:event\"}}{{/crossLink}}.\n *\n * @method setCurrentLocale\n * @param {String|Locale} [locale=\"en-GB\"] String (with language code) or Locale instance\n */\n setCurrentLocale: function setCurrentLocale(locale) {\n if (!(locale instanceof Locale)) {\n this.currentLocale = new Locale(locale);\n } else {\n this.currentLocale = locale;\n }\n this.fire(EVENTS.LOCALE_CHANGED, this.currentLocale);\n },\n\n /**\n * Returns the current locale.\n *\n * @method getCurrentLocale\n * @return {Locale}\n */\n getCurrentLocale: function getCurrentLocale() {\n return this.currentLocale;\n },\n\n cleanEvents: function cleanEvents() {\n this.parent.off(EVENTS.LOCALE_CHANGED, localeChangedHandler, this);\n this.off();\n }\n });\n\n LocaleService.Events = EVENTS;\n Utils.addDeprecatedProperty(LocaleService.prototype, 'EVENTS', 'Events');\n\n /**\n * Static method that returns an array with the supported locales which are supported by given\n * service type.\n *\n * @static\n * @method LocaleService.getLocalesFor\n * @param {\"traffic\"|\"routing\"|\"search\"|\"maps\"|\"reverseGeocoder\"} [serviceType=null]\n * @return {Locale[]}\n */\n LocaleService.getLocalesFor = function (serviceType) {\n switch (serviceType) {\n case 'traffic':\n return trafficLocales;\n case 'routing':\n return routingLocales;\n case 'search':\n case 'reverseGeocoder':\n return searchLocales;\n case 'maps':\n return mapsLocales;\n default:\n return allLocales;\n }\n };\n\n L.LocaleService = LocaleService;\n\n L.localeService = function (parent) {\n return new LocaleService(parent);\n };\n return L.localeService;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Represent a locale configuration.\n *\n * @class Locale\n * @module Models\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(56)], __WEBPACK_AMD_DEFINE_RESULT__ = function (languageTypesMapping) {\n 'use strict';\n\n var validServiceTypes = ['routing', 'search', 'traffic', 'maps', 'reverseGeocoder'];\n\n function isValidServiceType(serviceType) {\n return validServiceTypes.indexOf(serviceType) > -1;\n }\n\n function Locale(languageCode) {\n if (!languageTypesMapping.hasOwnProperty(languageCode)) {\n console.warn('Incorrect language code passed to Locale constructor. Defaulting to en-GB');\n languageCode = 'en-GB';\n }\n this._languageCode = languageCode;\n }\n\n /**\n * Returns the label of the locale.\n * @method getLabel\n * @return {String}\n */\n Locale.prototype.getLabel = function () {\n return languageTypesMapping[this._languageCode].label;\n };\n\n /**\n * Returns the language's code of the locale.\n * @method getLanguageCode\n * @return {String}\n */\n Locale.prototype.getLanguageCode = function () {\n return this._languageCode;\n };\n\n /**\n * Returns the language's code for the given service type.\n *\n * @method getValueFor\n * @param {\"routing\"|\"search\"|\"traffic\"|\"maps\"} [serviceType] The service code.\n * But we aware of these cases:\n * - If an invalid code is given the language's code for the service \"search\" will be return.\n * - If no value is given it will return the same value as the method\n * {{#crossLink \"Locale/getLanguageCode:method\"}}{{/crossLink}}.\n * @return {String}\n */\n Locale.prototype.getValueFor = function (serviceType) {\n var value;\n if (!serviceType) {\n return this._languageCode;\n }\n if (!isValidServiceType(serviceType)) {\n console.warn('Unsupported type passed to getValueFor function in Locale.' + 'Expecting: ' + validServiceTypes.join(', ') + '. Defaulting to search');\n serviceType = 'search';\n }\n\n // Reverse geocoder supports the same set of languages as search\n if (serviceType === 'reverseGeocoder') {\n serviceType = 'search';\n }\n\n value = languageTypesMapping[this._languageCode][serviceType].fallback;\n return value !== undefined ? value : this._languageCode;\n };\n\n return Locale;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(34)], __WEBPACK_AMD_DEFINE_RESULT__ = function (GeopolViewService) {\n 'use strict';\n\n return new GeopolViewService();\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Service for store and retrieve an specific geopolitical view.\n *\n * This service is used by map instances, widgets and services to store their geopolitical\n * view configuration.\n *\n * If its constructor receive a GeopolViewService instance as argument it will start listen changes in the\n * given instance and apply the same change in its own. That behavior allows the instances of this class to\n * be updated in cascade.\n *\n * @class GeopolViewService\n * @module Services\n * @extends L.Evented\n * @constructor\n * @param {GeopolViewService} [parent] If is defined makes the new instance a \"slave\" of the given instance\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(35), __webpack_require__(1), __webpack_require__(58), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (GeopolView, L, geopolViewsMapping, Utils) {\n 'use strict';\n\n var GeopolViewService;\n var defaultGeopolViewCode = 'Unified';\n var EVENTS = {\n /**\n * Fired after the view was changed.\n * @event GEOPOL_VIEW_CHANGED\n * @type String\n *\n * @example\n * ```javascript\n * var geopolViewService = new GeopolViewService();\n * geopolViewService.on(L.GeopolViewService.Events.GEOPOL_VIEW_CHANGED, function(eventData) {\n * console.log(eventData);\n * });\n * ```\n */\n 'GEOPOL_VIEW_CHANGED': 'config.geopolView.changed'\n };\n /**\n * @ignore\n * @return {GeopolView}\n */\n function getDefaultGeopolView() {\n return new GeopolView(defaultGeopolViewCode);\n }\n\n GeopolViewService = L.Evented.extend({\n\n Events: EVENTS,\n\n initialize: function initialize(parent) {\n if (parent instanceof GeopolViewService) {\n this.current = new GeopolView(parent.getCurrentGeopolView().getCode());\n this._enslaveTo(parent);\n } else {\n this.current = getDefaultGeopolView();\n }\n },\n\n /**\n * Sets the current geopolitical view.\n *\n * It also fires the event\n * {{#crossLink \"GeopolViewService/GEOPOL_VIEW_CHANGED:event\"}}{{/crossLink}}.\n *\n * @method setCurrentGeopolView\n * @param {String|GeopolView} [geopolView='Unified'] view code or a GeopolView instance\n */\n setCurrentGeopolView: function setCurrentGeopolView(geopolView) {\n if (Utils.isString(geopolView)) {\n geopolView = new GeopolView(geopolView);\n }\n if (this.current.getCode() !== geopolView.getCode()) {\n this.current = new GeopolView(geopolView.getCode());\n this.fire(EVENTS.GEOPOL_VIEW_CHANGED, this.current);\n }\n },\n\n /**\n * Returns the current geopolitical view stored in the instance.\n *\n * @method getCurrentGeopolView\n * @return {GeopolView}\n */\n getCurrentGeopolView: function getCurrentGeopolView() {\n return this.current;\n },\n\n cleanEvents: function cleanEvents() {\n if (this.parent) {\n this.parent.off(EVENTS.GEOPOL_VIEW_CHANGED, this.setCurrentGeopolView, this);\n this.parent = undefined;\n }\n this.off();\n },\n\n /**\n * Make this instance a slave of another GeopolViewService instance.\n * What it basically means is that this instance will copy the current\n * geopolitical view of the parent instance when it changes.\n *\n * @ignore\n * @param {GeopolViewService} parent\n */\n _enslaveTo: function _enslaveTo(parent) {\n this.parent = parent;\n parent.on(EVENTS.GEOPOL_VIEW_CHANGED, this.setCurrentGeopolView, this);\n }\n });\n\n /**\n * Static method that returns an array with the supported geopolitical views for the given service.\n *\n * Note: If no arguments are passed to this function it will return ALL the geopolitical views available\n * whether they are supported by a particular service or not. This was kept for backward compatibility.\n *\n * @static\n * @method GeopolViewService.getSupportedViews\n * @param {\"search\"|\"maps\"|\"reverseGeocoder\"} serviceType\n * @param {\"raster\"|\"vector\"|\"all\"} [subType] Only available for maps - Used to specify the subType of a\n * service, for example 'maps - raster' (If you pass 'all' it returns all the geopol views for the given\n * serviceType)\n * @return {GeopolView[]}\n */\n GeopolViewService.getSupportedViews = function (serviceType, subType) {\n var supportedServices = GeopolView.getSupportedServices();\n var supportedViews = [];\n subType = subType || 'all';\n\n // we keep this for backward compatibility\n if (arguments.length === 0) {\n return Object.keys(geopolViewsMapping).map(function (view) {\n return new GeopolView(view);\n });\n }\n\n if (supportedServices.indexOf(serviceType) === -1) {\n console.warn(serviceType + ' is not supported. Supported services: ' + supportedServices.join(', '));\n return [];\n }\n\n if (serviceType !== 'maps' && subType !== 'all' || serviceType === 'maps' && ['raster', 'vector', 'all'].indexOf(subType) === -1) {\n console.warn('Please specify a valid subType for this service. ' + 'Expecting: raster, vector or all (for the full list). Returning undefined.');\n return [];\n }\n\n Object.keys(geopolViewsMapping).forEach(function (view) {\n var viewMapping = geopolViewsMapping[view][serviceType];\n\n if (viewMapping && subType !== 'all') {\n viewMapping = viewMapping[subType];\n }\n\n if (viewMapping && viewMapping.fallback) {\n return;\n }\n\n supportedViews.push(new GeopolView(view));\n });\n\n return supportedViews;\n };\n\n GeopolViewService.Events = EVENTS;\n\n Utils.addDeprecatedProperty(GeopolViewService.prototype, 'EVENTS', 'Events');\n\n /**\n * Leaflet factory of this service.\n *\n * @param {GeopolViewService} parent\n * @return {GeopolViewService}\n */\n L.geopolViewService = function (parent) {\n return new GeopolViewService(parent);\n };\n\n L.GeopolViewService = GeopolViewService;\n\n return L.GeopolViewService;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * GeopolView class.\n *\n * @class GeopolView\n * @module Models\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(58)], __WEBPACK_AMD_DEFINE_RESULT__ = function (geopolViewsMapping) {\n 'use strict';\n\n var validServiceTypes = ['search', 'maps', 'reverseGeocoder'];\n\n function isValidServiceType(serviceType) {\n return validServiceTypes.indexOf(serviceType) > -1;\n }\n\n /**\n * @ignore\n * @param {String} geopolCode\n */\n function GeopolView(geopolCode) {\n if (!geopolViewsMapping.hasOwnProperty(geopolCode)) {\n geopolCode = 'Unified';\n console.warn('Incorrect geopolitical view code passed to GeopolViewService.', 'Defaulting to \"' + geopolCode + '\".');\n }\n this.code = geopolCode;\n }\n\n /**\n * Returns the code of the geopolitical view.\n * @method getCode\n * @return {String}\n */\n GeopolView.prototype.getCode = function () {\n return this.code;\n };\n\n /**\n * Returns the label of the geopolitical view.\n * @method getLabel\n * @return {String}\n */\n GeopolView.prototype.getLabel = function () {\n return geopolViewsMapping[this.code].label;\n };\n\n /**\n * Returns the geopolitical view code for the given service type.\n *\n * @method getValueFor\n * @param {\"search\"|\"maps\"} [serviceType] The service code.\n * But we aware of these cases:\n * - If serviceType is not supported undefined will be returned;\n * - If no value is given it will return the same value as the method\n * {{#crossLink \"GeopolView/getCode:method\"}}{{/crossLink}}.\n * - If a view is not supported for the given service it may fallback to Unified.\n * @param {\"raster\"|\"vector\"} [subType] Used to specify the subType of a service,\n * for example 'maps - raster' (Only available for maps);\n * @return {String}\n */\n GeopolView.prototype.getValueFor = function (serviceType, subType) {\n var fallbackValue, serviceMapping;\n if (!serviceType) {\n return this.code;\n }\n if (!isValidServiceType(serviceType)) {\n console.warn('Unsupported service type passed to getValueFor function in geopolView. ' + 'Expecting: ' + validServiceTypes.join(', ') + '. Returning undefined.');\n return undefined;\n }\n\n if (serviceType !== 'maps' && subType || serviceType === 'maps' && ['raster', 'vector'].indexOf(subType) === -1) {\n console.warn('Please specify a valid subType for this service. ' + 'Expecting: raster or vector. Returning undefined.');\n return undefined;\n }\n\n serviceMapping = geopolViewsMapping[this.code][serviceType];\n\n if (serviceMapping && subType) {\n serviceMapping = serviceMapping[subType];\n }\n\n if (serviceMapping && serviceMapping.fallback) {\n fallbackValue = serviceMapping.fallback;\n console.warn(this.code + ' is not supported by the service \"' + serviceType + (subType ? ' - ' + subType : '') + '\". Falling back to ' + fallbackValue + '.');\n return fallbackValue;\n }\n\n return this.code;\n };\n\n /**\n * Returns supported service types by geopolView\n *\n * @method getSupportedServices\n * @return {Array}\n */\n GeopolView.getSupportedServices = function () {\n return validServiceTypes;\n };\n\n Object.defineProperty(GeopolView.prototype, 'toString', {\n enumerable: false,\n value: function value() {\n return this.getCode();\n }\n });\n\n return GeopolView;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n\t\t _ _\n\t\t| | (_)\n\t\t| |_ _ ___\n\t\t| __| | / __|\n\t\t| |_ _| \\__ \\\n\t\t \\__(_) |___/\n\t\t _/ |\n\t\t |__/\n\n\tt.js\n\ta micro-templating framework in ~400 bytes gzipped\n\n\t@author Jason Mooberry \n\t@license MIT\n\t@version 0.1.0\n\n*/\n(function() {\n\n\tvar blockregex = /\\{\\{(([@!]?)(.+?))\\}\\}(([\\s\\S]+?)(\\{\\{:\\1\\}\\}([\\s\\S]+?))?)\\{\\{\\/\\1\\}\\}/g,\n\t\tvalregex = /\\{\\{([=%])(.+?)\\}\\}/g;\n\n\tfunction t(template) {\n\t\tthis.t = template;\n\t}\n\n\tfunction scrub(val) {\n\t\treturn new Option(val).text.replace(/\"/g,\""\");\n\t}\n\n\tfunction get_value(vars, key) {\n\t\tvar parts = key.split('.');\n\t\twhile (parts.length) {\n\t\t\tif (!(parts[0] in vars)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvars = vars[parts.shift()];\n\t\t}\n\t\treturn vars;\n\t}\n\n\tfunction render(fragment, vars) {\n\t\treturn fragment\n\t\t\t.replace(blockregex, function(_, __, meta, key, inner, if_true, has_else, if_false) {\n\n\t\t\t\tvar val = get_value(vars,key), temp = \"\", i;\n\n\t\t\t\tif (!val) {\n\n\t\t\t\t\t// handle if not\n\t\t\t\t\tif (meta == '!') {\n\t\t\t\t\t\treturn render(inner, vars);\n\t\t\t\t\t}\n\t\t\t\t\t// check for else\n\t\t\t\t\tif (has_else) {\n\t\t\t\t\t\treturn render(if_false, vars);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn \"\";\n\t\t\t\t}\n\n\t\t\t\t// regular if\n\t\t\t\tif (!meta) {\n\t\t\t\t\treturn render(if_true, vars);\n\t\t\t\t}\n\n\t\t\t\t// process array/obj iteration\n\t\t\t\tif (meta == '@') {\n\t\t\t\t\t// store any previous vars\n\t\t\t\t\t// reuse existing vars\n\t\t\t\t\t_ = vars._key;\n\t\t\t\t\t__ = vars._val;\n\t\t\t\t\tfor (i in val) {\n\t\t\t\t\t\tif (val.hasOwnProperty(i)) {\n\t\t\t\t\t\t\tvars._key = i;\n\t\t\t\t\t\t\tvars._val = val[i];\n\t\t\t\t\t\t\ttemp += render(inner, vars);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvars._key = _;\n\t\t\t\t\tvars._val = __;\n\t\t\t\t\treturn temp;\n\t\t\t\t}\n\n\t\t\t})\n\t\t\t.replace(valregex, function(_, meta, key) {\n\t\t\t\tvar val = get_value(vars,key);\n\n\t\t\t\tif (val || val === 0) {\n\t\t\t\t\treturn meta == '%' ? scrub(val) : val;\n\t\t\t\t}\n\t\t\t\treturn \"\";\n\t\t\t});\n\t}\n\n\tt.prototype.render = function (vars) {\n\t\treturn render(this.t, vars);\n\t};\n\n\t//AMD, CommonJs, then globals\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n return t;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof exports === 'object') {\n module.exports = t;\n } else {\n window.t = window.t || t;\n }\n}());\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n return {\n /**\n * This method tries to mitigate a bug causing background bleeding near tiles edges.\n * More info can be found here: LNS-9557\n * When this issue is fixed in Leaflet itself this method may be removed.\n */\n fixTileScale: function fixTileScale() {\n this.on('tileloadstart', function (event) {\n event.tile.style.transform += ' scale(1.002)';\n });\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(39)], __WEBPACK_AMD_DEFINE_RESULT__ = function (UnitService) {\n 'use strict';\n\n return new UnitService();\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Service for store and retrieve an specific unit measurement.\n *\n * This service is used by map instances, widgets and services to store their unit measurement configuration.\n *\n * If its constructor receive a UnitService instance as argument it will start listen changes in the\n * given instance and apply the same change in its own. That behavior allows the instances of this class to\n * be updated in cascade.\n *\n * @class UnitService\n * @module Services\n * @extends L.Evented\n * @constructor\n * @param {UnitService} [parent] If is defined makes the new instance a \"slave\" of the given instance\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(135), __webpack_require__(1), __webpack_require__(16), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (Unit, L, unitTypes, Utils) {\n 'use strict';\n\n var UnitService, supportedUnits;\n\n var EVENTS = {\n /**\n * Fired after the unit is set.\n *\n * @event UNIT_CHANGED\n * @type String\n *\n * @example\n * ```javascript\n * var unitService = new UnitService();\n * unitService.on(L.UnitService.Events.UNIT_CHANGED, function(eventData) {\n * console.log(eventData); \n * });\n * ```\n */\n 'UNIT_CHANGED': 'config.unit.changed'\n };\n\n function createUnitsArray() {\n return Object.keys(unitTypes).map(function (key) {\n return new Unit(key);\n });\n }\n\n supportedUnits = createUnitsArray();\n\n UnitService = L.Evented.extend({\n\n Events: EVENTS,\n\n initialize: function initialize(parent) {\n if (parent instanceof UnitService) {\n this.currentUnit = new Unit(parent.getCurrentUnit().getLabel());\n this.parent = parent;\n parent.on(EVENTS.UNIT_CHANGED, function (unit) {\n this.setCurrentUnit(unit.getLabel());\n }, this);\n } else {\n this.currentUnit = new Unit('metric');\n }\n },\n /**\n * Sets a new measurement unit.\n *\n * Fires the event {{#crossLink \"UnitService/UNIT_CHANGED:event\"}}{{/crossLink}}.\n *\n * @method setCurrentUnit\n * @param {String|Unit} [unit=\"metric\"] accepts a string (`metric`, `imperial`) or a Unit instance\n */\n setCurrentUnit: function setCurrentUnit(unit) {\n if (!(unit instanceof Unit)) {\n unit = new Unit(unit);\n }\n this.currentUnit = unit;\n this.fire(EVENTS.UNIT_CHANGED, this.currentUnit);\n },\n\n /**\n * Gets currently setted unit.\n *\n * @method getCurrentUnit\n * @return {Unit}\n */\n getCurrentUnit: function getCurrentUnit() {\n return this.currentUnit;\n }\n });\n\n /**\n * Static method that returns an array with the supported units.\n * @static\n * @method UnitService.getSupportedUnits\n * @return {Unit[]}\n */\n UnitService.getSupportedUnits = function () {\n return supportedUnits;\n };\n\n L.unitService = function (parent) {\n return new UnitService(parent);\n };\n\n L.UnitService = UnitService;\n\n UnitService.Events = EVENTS;\n Utils.addDeprecatedProperty(UnitService.prototype, 'EVENTS', 'Events');\n\n return L.unitService;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * It allows to calculate a route between two locations using the TomTom's\n * [Routing API - Calculate Route](https://developer.tomtom.com/routing-api/routing-api-documentation-routing/calculate-route);\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method go performs the actual call.\n *\n * The call is asynchronous therefore the user has two options to receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * go method to handle the response.\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * ### The types used in routing service\n * - point - latitude, longitude pair (in EPSG4326 projection), with the following constraints:\n * - Latitude values must be in the range -90..+90 inclusive.\n * - Longitude values must be in the range -180..+180 inclusive.\n * - Example: 52.37245,4.89406\n *\n * - circle - A circle with a center point and a radius (in meters).\n * - The radius must be a positive integer with the maximum value of 20050000.\n * - Note that larger integer values will not be rejected but lowered to the maximum value.\n * - Example: circle(52.37245,4.89406,10000)\n *\n * - location - A point or a circle.\n * - Example: 52.37245,4.89406 circle(52.37245,4.89406,10000)\n *\n * - dateTime - A date and time specified in RFC-3339 format with an optional time zone offset.\n * - Example: 1996-12-19T16:39:57 1996-12-19T16:39:57-08:00\n *\n * @class Routing\n * @module Services\n * @uses Chain\n * @uses CommonRoutingParameters\n * @constructor\n *\n * @param {Object} [options] Options to be passed to the routing call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key=global API key] The API key to be used.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n * @param {Number} [options.accelerationEfficiency] Specifies the efficiency of converting chemical energy stored in\n * fuel to kinetic energy when the vehicle accelerates (i.e. KineticEnergyGained/ChemicalEnergyConsumed).\n * @param {Array} [options.allowVignette] List of 3-character ISO 3166-1 alpha-3 country codes of countries in which toll roads with vignettes are allowed.\n * @param {String} [options.alternativeType] Specifies the alternative type of the calculated alternatives compared to the reference route.\n * @param {String} [options.arriveAt] The date and time of arrival at the destination point\n * @param {Number} [options.auxiliaryPowerInkW] Specifies the amount of power consumed for sustaining auxiliary systems, in kilowatts (kW).\n * @param {Number} [options.auxiliaryPowerInLitersPerHour] Specifies the amount of fuel consumed for sustaining\n * auxiliary systems of the vehicle, in liters per hour. It can be used to specify consumption due to devices\n * and systems such as AC systems, radio, heating, etc.\n * @param {String} [options.avoid] Specifies something that the route calculation should try to avoid when\n * determining the route.\n * @param {Array} [options.avoidAreas] A list of shapes to avoid for planning routes. See more\n * @param {Array} [options.avoidVignette] List of 3-character ISO 3166-1 alpha-3 country codes of countries in which all toll roads with vignettes are to be avoided.\n * @param {Boolean} [options.computeBestOrder] Re-order the route waypoints to reduce the route length\n * @param {String} [options.computeTravelTimeFor] Setting this to _all_ provides additional information regards travel times.\n * @param {Array} [options.constantSpeedConsumptionInLitersPerHundredkm] Colon-delimited list of\n * CombustionConstantSpeedConsumptionPairs, e.g. array of such pairs \"60,7\".\n * @param {Array} [options.constantSpeedConsumptionInkWhPerHundredkm] Colon-delimited list of\n * ElectricConstantSpeedConsumptionPairs, e.g. array of such pairs \"60,7\".\n * @param {Number} [options.currentChargeInkWh] Specifies the current electric energy supply in kilowatt hours (kWh).\n * @param {Number} [options.currentFuelInLiters] Current supply of fuel in liters.\n * @param {Number} [options.decelerationEfficiency] Specifies the efficiency of converting kinetic energy to saved\n * (not consumed) fuel when the vehicle decelerates (i.e. ChemicalEnergySaved/KineticEnergyLost).\n * @param {String} [options.departAt] The date and time of departure from the origin point\n * @param {Number} [options.downhillEfficiency] Specifies the efficiency of converting potential energy to\n * saved (not consumed) fuel when the vehicle loses elevation (i.e. ChemicalEnergySaved/PotentialEnergyLost).\n * @param {Number} [options.fuelEnergyDensityInMJoulesPerLiter] Specifies the amount of chemical energy stored\n * in one liter of fuel in megajoules (MJ). It is used in conjunction with the Efficiency parameters for\n * conversions between saved or consumed energy and fuel.\n * @param {String} [options.hilliness] Degree of hilliness for thrilling route\n * @param {String} [options.instructionsType] If specified, guidance instructions will be returned (if\n * available)\n * @param {String} [options.language] The language parameter determines the language of the guidance messages\n * @param {String|Array} [options.locations] Locations through which the route is calculated\n * @param {Number} [options.maxAlternatives] Number of desired alternative routes to be calculated\n * @param {Number} [options.maxChargeInkWh] Specifies the maximum electric energy supply in kilowatt hours (kWh)\n * that may be stored in the vehicle's battery.\n * @param {Number} [options.minDeviationDistance=0] At least how far **in meters** the alternative\n * routes have to follow the reference route\n * @param {Number} [options.minDeviationTime=0] At least how far **in time (seconds)** the alternative\n * routes have to follow the reference route\n * @param {String} [options.protocol] Protocol's type, one of \"http\" or \"https\".\n\n * @param {String} [options.report] Specifies which data should be reported for diagnosis purposes. Possible values:\n * * effectiveSettings reports the effective parameters or data used when calling the API. In the case of defaulted\n * parameters the default will be reflected where the parameter was not specified by the caller.\n * @param {String} [options.routeRepresentation] Specifies the representation of the set of routes provided as response\n * @param {String} [options.routeType] The type of route requested.\n * @param {String[]} [options.sectionType=\"travelMode\"] Specifies which section types are reported in the route response. See more\n * @param {Array} [options.supportingPoints] Array of supporting points used for constructing the route. See more\n * @param {Boolean} [options.traffic] Determines if traffic data should be used to calculate the route\n * @param {String} [options.travelMode] The travel mode for the requested route\n * @param {Number} [options.uphillEfficiency] Specifies the efficiency of converting chemical energy stored in\n * fuel to potential energy when the vehicle gains elevation (i.e. PotentialEnergyGained/ChemicalEnergyConsumed).\n * @param {Number} [options.vehicleAxleWeight] The vehicle axle weight in kg.\n * @param {Boolean} [options.vehicleCommercial] True if vehicle is used for commercial purposes.\n * @param {String} [options.vehicleEngineType] The vehicle engine type.\n * @param {Number} [options.vehicleHeight] The vehicle height in m.\n * @param {Number} [options.vehicleLength] The vehicle length in meters.\n * @param {Array|String} [options.vehicleLoadType] The array of truck cargo classification.\n * @param {Number} [options.vehicleMaxSpeed] The maximal allowed vehicle speed in km/h.\n * @param {Number} [options.vehicleWeight] The vehicle weight in kg.\n * @param {Number} [options.vehicleWidth] The vehicle width in m.\n * @param {String} [options.windingness] Level of turns for thrilling route.\n *\n * @example\n * ```js\n * tomtom.routing()\n * .locations('52.3,4.8:52.37,4.87')\n * .go()\n * .then(function(routeGeoJson) {\n * console.log(routeGeoJson);\n * });\n * ```\n */\n/* eslint-enable max-len */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(41), __webpack_require__(75), __webpack_require__(144), __webpack_require__(8), __webpack_require__(2), __webpack_require__(4), __webpack_require__(73)], __WEBPACK_AMD_DEFINE_RESULT__ = function (restRouting, routingModel, batchRoutingModel, chain, validators, converters, getRoutingParameters) {\n 'use strict';\n\n var LANGUAGE = {\n AfrikaansSouthAfrica: 'ar-ZA',\n Arabic: 'ar',\n Bulgarian: 'bg-BG',\n ChineseTaiwan: 'zh-TW',\n Czech: 'cs-CZ',\n Danish: 'da-DK',\n Dutch: 'nl-NL',\n EnglishGB: 'en-GB',\n EnglishUS: 'en-US',\n Finnish: 'fi-FI',\n French: 'fr-FR',\n German: 'de-DE',\n Greek: 'el-GR',\n Hungarian: 'hu-HU',\n Indonesian: 'id-ID',\n Italian: 'it-IT',\n Korean: 'ko-KR',\n Lithuanian: 'lt-LT',\n Malay: 'ms-MY',\n Norwegian: 'nb-NO',\n Polish: 'pl-PL',\n PortugueseBrazil: 'pt-BR',\n PortuguesePortugal: 'pt-PT',\n Russian: 'ru-RU',\n Slovak: 'sk-SK',\n Slovenian: 'sl-SI',\n Spanish: 'es-ES',\n SpanishMexico: 'es-MX',\n Swedish: 'sv-SE',\n Thai: 'th-TH',\n Turkish: 'tr-TR'\n };\n\n var fields = getRoutingParameters();\n\n var batchFields = {\n batchItems: {\n validator: validators.arrayOf(fields),\n converter: converters.arrayOf(fields)\n }\n };\n\n var routing = restRouting();\n\n function handleRouteChain(data, callback) {\n routing.calculateRoute(fields, data, function (response) {\n callback.call(this, routingModel(response));\n });\n }\n\n function handleBatchChain(data, callback) {\n routing.batch(fields, data, function (response) {\n callback.call(this, batchRoutingModel(response));\n });\n }\n\n return function (options) {\n var serviceFunction;\n options = options || {};\n options.__serviceType = 'routing';\n\n if (options instanceof Array) {\n serviceFunction = chain(batchFields, handleBatchChain, {\n batchItems: options\n });\n } else {\n serviceFunction = chain(fields, handleRouteChain, options);\n }\n serviceFunction.LANGUAGE = LANGUAGE;\n return serviceFunction;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(142), __webpack_require__(10), __webpack_require__(6), __webpack_require__(9)], __WEBPACK_AMD_DEFINE_RESULT__ = function (matrixFactory, requestFactory, endpoints, ApiKeyNames) {\n 'use strict';\n\n var maxNoOfElementsInBatchRequest = 100,\n routingKeyName = ApiKeyNames.routing;\n\n return function () {\n return {\n calculateRoute: requestFactory.single(endpoints.routing, routingKeyName),\n\n calculateReachableRange: requestFactory.single(endpoints.reachableRange, routingKeyName),\n\n batch: requestFactory.batch(maxNoOfElementsInBatchRequest, {\n batchSync: endpoints.batchSyncRouting,\n batch: endpoints.batchRouting,\n single: endpoints.batchRoutingQuery\n }, routingKeyName),\n\n batchReachableRange: requestFactory.batch(maxNoOfElementsInBatchRequest, {\n batchSync: endpoints.batchSyncRouting,\n batch: endpoints.batchRouting,\n single: endpoints.batchReachableRangeQuery\n }, routingKeyName),\n\n matrix: matrixFactory(maxNoOfElementsInBatchRequest)\n };\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (utils) {\n var engineType = {\n combustion: 'combustion',\n electric: 'electric',\n any: 'any'\n };\n\n function validateIfPointsGreaterOrEqual(speedsAndConsumptions) {\n var sortedKeys = Object.keys(speedsAndConsumptions).sort(function (x, y) {\n return parseFloat(x) > parseFloat(y);\n });\n var keysLength = sortedKeys.length;\n if (speedsAndConsumptions[sortedKeys[0]] > speedsAndConsumptions[sortedKeys[1]]) {\n throw new Error('Consumption for two lowest speeds should be increasing');\n }\n if (speedsAndConsumptions[sortedKeys[keysLength - 2]] > speedsAndConsumptions[sortedKeys[keysLength - 1]]) {\n throw new Error('Consumption for two highest speeds should be increasing');\n }\n }\n\n function validateFloat(val) {\n if (isNaN(parseFloat(val)) || !isFinite(val)) {\n throw new Error('Expecting float, got: ' + val);\n }\n }\n\n /**\n * @param {String[]} arr\n */\n function consumptionPairsValidator(arr) {\n var speedsAndConsumptions = {};\n arr.forEach(function (element) {\n var pair = element.split(',');\n if (pair.length !== 2) {\n throw new Error('Invalid number of parameters in the pair around ' + element);\n }\n validateFloat(pair[0]);\n validateFloat(pair[1]);\n if (speedsAndConsumptions.hasOwnProperty(parseFloat(pair[0]))) {\n throw new Error('Duplicate speed: ' + pair[0]);\n } else {\n speedsAndConsumptions[parseFloat(pair[0])] = parseFloat(pair[1]);\n }\n });\n if (Object.keys(speedsAndConsumptions).length > 1) {\n validateIfPointsGreaterOrEqual(speedsAndConsumptions);\n }\n }\n\n function checkIfCorrectEngineType(obj, type) {\n if (obj.vehicleEngineType && obj.vehicleEngineType !== type && type !== engineType.any) {\n throw new Error('Expecting vehicleEngineType set to ' + type);\n }\n }\n\n function efficiencyParameterRequired(obj, paramName) {\n if (!(utils.isValidValue(obj.accelerationEfficiency) && utils.isValidValue(obj.decelerationEfficiency) && utils.isValidValue(obj.uphillEfficiency) && utils.isValidValue(obj.downhillEfficiency))) {\n throw new Error('Efficiency parameters are required when using ' + paramName);\n }\n }\n\n function hasEfficiencyParameterSet(obj) {\n return obj.accelerationEfficiency || obj.decelerationEfficiency || obj.uphillEfficiency || obj.downhillEfficiency;\n }\n\n function validateDependantParameters(obj, paramName1, paramName2) {\n if (!(obj[paramName1] && obj[paramName2])) {\n throw new Error('Missing dependant parameter. Expecting both defined: ' + paramName1 + ', ' + paramName2);\n }\n }\n\n function validateEfficiencyParameters(obj, paramName1, paramName2) {\n if (obj[paramName1] * obj[paramName2] > 1) {\n throw new Error('Product of ' + paramName1 + ' and ' + paramName2 + ' cannot exceed 1');\n }\n }\n\n /**\n * @ignore\n * Consumption Model cannot be used with travelMode values bicycle and pedestrian.\n * @param {Object} obj\n */\n function validateTravelMode(obj) {\n if (obj.travelMode === 'bicycle' || obj.travelMode === 'pedestrian') {\n throw new Error('Consumption model parameters cannot be set if travelMode is set to bicycle or pedestrian');\n }\n }\n\n /**\n * @ignore\n * All parameters require constantSpeedConsumption* to be specified by the user. It is an\n * error to specify any other consumption model parameter (with the exception of vehicleWeight)\n * if constantSpeedConsumption* is not specified.\n * @param {Object} obj\n */\n function hasConstantSpeedConsumption(obj) {\n if (!obj.constantSpeedConsumptionInLitersPerHundredkm && !obj.constantSpeedConsumptionInkWhPerHundredkm) {\n throw new Error('Consumption model cannot be used without setting constant speed consumption parameter');\n }\n }\n\n return {\n /**\n * @ignore\n * The list must contain between 1 and 25 points (inclusive), and may not contain\n * duplicate points for the same speed. If it only contains a single point, then the\n * consumption rate of that point is used without further processing.\n * Consumption specified for the largest speed must be greater than or equal to\n * that of the penultimate largest speed. This ensures that extrapolation does not\n * lead to negative consumption rates. Similarly, consumption values specified for the\n * two smallest speeds in the list cannot lead to a negative consumption rate for any smaller speed.\n * The minimum and maximum values described here refer to the valid range for the consumption\n * values (expressed in l/100km.\n * @param {Number} engineType\n * @param {Object} obj\n * @return {Function} function\n */\n constantSpeedConsumption: function constantSpeedConsumption(engineType) {\n return function (value, obj) {\n var speedPairs;\n if (value === undefined || value === null) {\n return;\n }\n validateTravelMode(obj);\n checkIfCorrectEngineType(obj, engineType);\n if (typeof value !== 'string') {\n throw new TypeError('Expecting a String like \"15.2,12.2:8.0,9.0\"');\n }\n speedPairs = value.split(':');\n if (speedPairs.length < 1 || speedPairs.length > 25) {\n throw new Error('Incorrect amount of speed-consumption pairs provided. Expecting 1-25, but got ' + value.length);\n }\n consumptionPairsValidator(speedPairs);\n };\n },\n vehicleWeight: function vehicleWeight(value, obj) {\n if (hasEfficiencyParameterSet(obj) && value === undefined) {\n throw new Error('vehicleWeight parameter must be set if any efficiency parameters is present');\n }\n },\n floatAndEngineType: function floatAndEngineType(engineType, paramName) {\n return function (value, obj) {\n if (!value) {\n return;\n }\n validateTravelMode(obj);\n hasConstantSpeedConsumption(obj);\n checkIfCorrectEngineType(obj, engineType);\n validateFloat(value);\n if (value < 0) {\n throw new Error(paramName + ': Expecting positive value');\n }\n };\n },\n fuelEnergyDensityInMJoulesPerLiter: function fuelEnergyDensityInMJoulesPerLiter(value, obj) {\n if (!value) {\n return;\n }\n validateTravelMode(obj);\n validateFloat(value);\n hasConstantSpeedConsumption(obj);\n checkIfCorrectEngineType(obj, 'combustion');\n efficiencyParameterRequired(obj, 'fuelEnergyDensityInMJoulesPerLiter');\n },\n /**\n * @ignore\n * accelerationEfficiency and decelerationEfficiency must always be specified as a pair (i.e. both or none).\n * uphillEfficiency and downhillEfficiency must always be specified as a pair (i.e. both or none).\n * If accelerationEfficiency and decelerationEfficiency are specified,\n * product of their values must not be greater than 1 (to prevent perpetual motion).\n * If uphillEfficiency and downhillEfficiency are specified, product of their\n * values must not be greater than 1 (to prevent perpetual motion).\n * @param {Number} paramName1\n * @param {Number} paramName2\n * @return {undefined} undefined\n */\n efficiencyParameter: function efficiencyParameter(paramName1, paramName2) {\n return function (value, obj) {\n if (!value) {\n return;\n }\n validateTravelMode(obj);\n hasConstantSpeedConsumption(obj);\n checkIfCorrectEngineType(obj, engineType.any);\n validateDependantParameters(obj, paramName1, paramName2);\n /**\n * @ignore\n * If *Efficiency parameters are specified by the user, then vehicleWeight must also be specified.\n */\n validateDependantParameters(obj, paramName1, 'vehicleWeight');\n /**\n * @ignore\n * When vehicleEngineType is combustion, fuelEnergyDensityInMJoulesPerLiter must be specified as well.\n */\n if (obj.vehicleEngineType === engineType.combustion) {\n validateDependantParameters(obj, paramName1, 'fuelEnergyDensityInMJoulesPerLiter');\n }\n validateEfficiencyParameters(obj, paramName1, paramName2);\n validateFloat(value);\n };\n },\n chargeParameter: function chargeParameter(paramName1, paramName2) {\n return function (value, obj) {\n if (!value) {\n return;\n }\n validateTravelMode(obj);\n hasConstantSpeedConsumption(obj);\n checkIfCorrectEngineType(obj, engineType.electric);\n validateDependantParameters(obj, paramName1, paramName2);\n validateFloat(value);\n };\n },\n budgetInRange: function budgetInRange(value, data) {\n // eslint-disable-line no-unused-vars\n var maxBudget;\n var currentBudgetProvided;\n var electricEngine = data.vehicleEngineType === 'electric';\n if (electricEngine) {\n maxBudget = data.currentChargeInkWh;\n currentBudgetProvided = data.energyBudgetInkWh;\n if (currentBudgetProvided > maxBudget) {\n throw new Error('Energy budget may not be greater than current energy.');\n }\n } else {\n maxBudget = data.currentFuelInLiters;\n currentBudgetProvided = data.fuelBudgetInLiters;\n if (currentBudgetProvided > maxBudget) {\n throw new Error('Fuel budget may not be greater than current fuel.');\n }\n }\n if (currentBudgetProvided < 0) {\n throw new Error('Budget may not be negative.');\n }\n },\n requiredBudget: function requiredBudget(value, data) {\n // eslint-disable-line no-unused-vars\n var liters = data.fuelBudgetInLiters;\n var watts = data.energyBudgetInkWh;\n var time = data.timeBudgetInSec;\n if ([liters, watts, time].filter(function (n) {\n return n !== undefined;\n }).length > 1) {\n // both true or false -> logical xor\n throw new Error('Exactly one of fuelBudgetInLiters and energyBudgetInkWh and timeBudgetInSec must be set.'); // eslint-disable-line\n }\n },\n requiredWithSpecificEngineType: function requiredWithSpecificEngineType(value, data, key) {\n var consumptionInLiters = 'constantSpeedConsumptionInLitersPerHundredkm' in data;\n var consumptionInWatts = 'constantSpeedConsumptionInkWhPerHundredkm' in data;\n var electricEngine = data.vehicleEngineType === 'electric';\n\n if (key === 'energyBudgetInkWh' && value) {\n if (!electricEngine) {\n throw new Error('Engine type should be \"electric\" when energyBudgetInkWh is set');\n }\n if (!consumptionInWatts) {\n throw new Error('Missing constant speed consumption for electric engine.');\n }\n } else if (key === 'fuelBudgetInLiters' && value) {\n if (electricEngine) {\n throw new Error('Engine type should be \"combustion\" or undefined when fuelBudgetInLiters is set');\n }\n if (!consumptionInLiters) {\n throw new Error('Missing constant speed consumption for combustion engine.');\n }\n }\n },\n notCommon: function notCommon(value, data, key) {\n // eslint-disable-line no-unused-vars\n var forbiddenAvoids = ['alreadyUsedRoads'];\n var forbiddenModes = ['bicycle', 'pedestrian'];\n if ('arriveAt' in data || 'avoid' in data && forbiddenAvoids.indexOf(data.avoid) >= 0 || 'travelMode' in data && forbiddenModes.indexOf(data.travelMode) >= 0) {\n throw new Error(key + ' parameter is not allowed in Calculate Reachable Route request');\n }\n },\n firstParamCannotBeUsedWithSecond: function firstParamCannotBeUsedWithSecond(paramNameUsed, paramNameToAvoid) {\n return function (value, obj) {\n if (!value) {\n return;\n }\n if (obj.hasOwnProperty(paramNameToAvoid) && utils.isValidValue(obj[paramNameToAvoid])) {\n throw new Error(paramNameUsed + ' parameter cannot be used in conjunction with ' + paramNameToAvoid);\n }\n };\n },\n requiresDependantParameter: function requiresDependantParameter(parameterName, dependantParameter) {\n return function (value, obj) {\n if (!value) {\n return;\n }\n if (!obj.hasOwnProperty(dependantParameter)) {\n throw new Error(dependantParameter + ' must be specified when using with ' + parameterName);\n }\n };\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n return {\n reverseGeocode: 'reverseGeocode',\n crossStreetLookup: 'reverseGeocode/crossStreet'\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n return {\n search: 'search',\n poi: 'poiSearch',\n category: 'categorySearch',\n geometry: 'geometrySearch',\n nearby: 'nearbySearch',\n lowBandwidth: 's',\n searchAlongRoute: 'searchAlongRoute'\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(13)], __WEBPACK_AMD_DEFINE_RESULT__ = function (selector) {\n 'use strict';\n\n return function (json) {\n return selector(json, 'results', 'address, dist, position, score, entryPoints,' + ' type, addressRanges, boundingBox, viewport, id, info, dataSources, entityType') || {};\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This widget allows to create a foldable widget over the map.\n *\n * @class Foldable\n * @namespace L\n * @extends L.Control\n * @module Widgets\n * @constructor\n * @method foldable\n * @param {Object} [options] Options to be passed to the foldable control\n * @param {String} [options.className=\"\"] Class prefix that will be added to container\n * @param {String} [options.title=\"\"] Title of the container. If it's null the title will be hidden.\n * @param {Object} [options.close=null] If is an object the Close button will be appear\n * @param {String} [options.close.text] Text displayed in the Close button\n * @param {String} [options.close.image] Image of the Close button\n * @param {Object} [options.show=null] If is an object the Show button will be appear\n * @param {String} [options.show.text] Text displayed in the Show button\n * @param {String} [options.show.image] Image of the Show button\n * @param {Boolean} [options.closeOnClick=false] Should component collapse when clicked\n * @param {Boolean} [options.closeOnMapClick=true] Should component collapse when map is clicked\n * @param {\"topright\"|\"topleft\"|\"bottomright\"|\"bottomleft\"} [options.position=\"topright\"] Position on a map\n * @param {String} [options.content=null] Initial content of the widget. Should be a string with valid HTML syntax.\n * @param {Boolean} [options.collapsed=false] Initial state of the foldable widget\n * @param {Boolean} [options.responsive=false] Listens to window resize events and adjusts the content height to \n * fit the map, when the map size changes.\n *\n * @example\n * ```javascript\n * var widget = new L.Foldable({\n * title: 'Foldable widget',\n * closeOnClick: true,\n * show: {\n * text: 'show'\n * }\n * });\n * widget.addTo(map);\n * ```\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, Utils) {\n 'use strict';\n\n var zIndex = 1001;\n\n var classes = {\n contentContainer: 'tomtom-foldable__content',\n contentHeader: 'tomtom-foldable__content-header',\n contentBody: 'tomtom-foldable__content-body',\n collapsed: 'tomtom-foldable--collapsed',\n footerContainer: 'tomtom-foldable__footer',\n footerBody: 'tomtom-foldable__footer-body'\n };\n\n function createContainer(options) {\n var prefix = Utils.isString(options.className) ? options.className : '';\n var className = (prefix + ' tomtom-foldable leaflet-popup-content-wrapper').trim();\n return L.DomUtil.create('div', className);\n }\n\n function createCloseButton(container, options) {\n var button;\n if (!options.close) {\n return null;\n }\n button = L.DomUtil.create('button', 'tomtom-foldable__close tomtom-foldable--clickable', container);\n if (options.close.text) {\n button.innerHTML = options.close.text;\n } else if (options.close.image) {\n button.style.cssText = 'background-image: url(' + options.close.image + '); ';\n }\n return button;\n }\n\n function createShowButton(container, options) {\n var button;\n if (!options.show) {\n return null;\n }\n button = L.DomUtil.create('button', 'tomtom-foldable__show tomtom-foldable--clickable', container);\n if (options.show.text) {\n button.innerHTML = options.show.text;\n } else if (options.show.image) {\n button.style.cssText = 'background-image: url(' + options.show.image + '); ';\n }\n return button;\n }\n\n function createTitle(container, options) {\n var title = null;\n title = L.DomUtil.create('h4', 'tomtom-foldable__title', container);\n if (Utils.isString(options.title)) {\n title.innerHTML = options.title;\n }\n return title;\n }\n\n function createFooter(container, options) {\n var footer = L.DomUtil.create('div', classes.footerBody, container);\n if (options.footer instanceof HTMLElement) {\n footer.appendChild(options.footer);\n }\n return footer;\n }\n\n function createContentContainer(container, options) {\n var content = L.DomUtil.create('div', classes.contentBody, container);\n if (options.content) {\n content.innerHTML = options.content;\n }\n return content;\n }\n\n function createDomElements() {\n this.container = createContainer(this.options);\n\n this._header = L.DomUtil.create('div', 'tomtom-foldable__header', this.container);\n createTitle(this._header, this.options);\n this._close = createCloseButton(this._header, this.options);\n this._show = createShowButton(this._header, this.options);\n this._content = L.DomUtil.create('div', classes.contentContainer, this.container);\n this._contentHeader = L.DomUtil.create('div', classes.contentHeader, this._content);\n this._contentBody = createContentContainer(this._content, this.options);\n if (this.options.footer) {\n this._footer = L.DomUtil.create('div', classes.footerContainer, this.container);\n createFooter(this._footer, this.options);\n }\n return this.container;\n }\n\n function clearElementContent(element) {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n }\n\n function _addContent(content, parent) {\n var element;\n\n if (typeof content === 'undefined') {\n return;\n }\n\n if (content instanceof HTMLElement) {\n element = content;\n } else {\n element = document.createTextNode(content);\n }\n\n parent.appendChild(element);\n }\n\n L.Foldable = L.Control.extend({\n\n options: {\n title: '',\n close: null,\n closeOnClick: false,\n closeOnMapClick: true,\n show: null,\n position: 'topright',\n collapsed: false,\n content: null,\n responsive: false\n },\n\n initialize: function initialize(options) {\n L.setOptions(this, options);\n },\n\n /**\n * Binds handlers to events and creates HTML elements used by the\n * component. Called when added control to a map.\n *\n * @ignore\n * @method onAdd\n * @param {Object} map Leaflet map to add control to.\n * @example\n * ```javascript\n * var widget = new L.Foldable();\n * widget.addTo(map);\n * ```\n * @return {HTMLElement}\n */\n onAdd: function onAdd(map) {\n this._map = map;\n\n if (this.options.closeOnMapClick) {\n this._map.on('preclick', this.fold, this);\n }\n\n createDomElements.call(this);\n\n L.DomEvent.disableScrollPropagation(this.container);\n L.DomEvent.disableClickPropagation(this.container);\n\n L.DomEvent.on(this.container, 'click', this._bringToFront, this);\n\n if (this.options.closeOnClick) {\n L.DomEvent.on(this._content, 'click', this.fold, this);\n }\n\n if (this._close) {\n L.DomEvent.on(this._close, 'click', this.fold, this);\n }\n\n if (this._show) {\n L.DomEvent.on(this._show, 'click', this.unfold, this);\n }\n\n if (this.options.collapsed) {\n this.fold();\n } else {\n this.unfold();\n }\n\n if (this.options.responsive) {\n this._setContentBodyMaxHeightRef = Utils.debounce(this, this._setContentBodyMaxHeight, 250);\n window.addEventListener('resize', this._setContentBodyMaxHeightRef);\n }\n\n return this.container;\n },\n\n /**\n * Removes event listeners added by onAdd method.\n * Called on foldable.remove()\n *\n * @ignore\n * @method onRemove\n * @param {Object} map Leaflet map to remove control from.\n * @example\n * ```javascript\n * var widget = new L.Foldable();\n * widget.addTo(map);\n * // some code here...\n * widget.remove();\n * ```\n */\n onRemove: function onRemove(map) {\n map.off('preclick', this.fold, this);\n if (this.options.closeOnClick) {\n L.DomEvent.off(this._content, 'click', this.fold, this);\n }\n if (this._close) {\n L.DomEvent.off(this._close, 'click', this.fold, this);\n }\n if (this._show) {\n L.DomEvent.off(this._show, 'click', this.unfold, this);\n }\n L.DomEvent.off(this.container, 'click', this._bringToFront, this);\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n if (this.options.responsive) {\n window.removeEventListener('resize', this._setContentBodyMaxHeightRef);\n }\n },\n\n /**\n * Folds the content and shows the show button (to unfold it again later).\n *\n * This method is executed automatically when the widget loose focus (e.g. the user starts interacting\n * with another widget or the map).\n *\n * @method fold\n * @chainable\n * @example\n * ```javascript\n * var widget = new L.Foldable({collapsed: false});\n * widget.addTo(map);\n * widget.setContent('No data');\n * widget.fold();\n * ```\n * @return {L.Foldable}\n */\n fold: function fold() {\n this.container.classList.add(classes.collapsed);\n this._content.style.maxHeight = 0;\n return this;\n },\n\n _isCollapsed: function _isCollapsed() {\n return this.container.classList.contains(classes.collapsed);\n },\n\n _setContentBodyMaxHeight: function _setContentBodyMaxHeight() {\n //This hardcoded offset is used to not cover copyrights\n var additionalOffset = 60;\n var mapRect = this._map.getContainer().getBoundingClientRect();\n var mapHeight = mapRect.height;\n var offset = this.container.offsetTop;\n\n if (this._footer) {\n offset = Math.abs(offset + this._footer.getBoundingClientRect().height);\n }\n if (this._header) {\n offset = Math.abs(offset + this._header.getBoundingClientRect().height);\n }\n\n this._content.style.maxHeight = Math.floor(mapHeight - offset - additionalOffset) + 'px';\n },\n\n /**\n * Unfolds component's content.\n *\n * This method is executed when the user presses the show button.\n *\n * @method unfold\n * @chainable\n * @example\n * ```javascript\n * var widget = new L.Foldable();\n * widget.addTo(map);\n * widget.unfold();\n * ```\n * @return {L.Foldable}\n */\n unfold: function unfold() {\n this.container.classList.remove(classes.collapsed);\n this._setContentBodyMaxHeight();\n return this;\n },\n\n /**\n * Clears all the widget's content.\n *\n * @method clear\n * @chainable\n * @example\n * ```javascript\n * var widget = new L.Foldable();\n * widget.addTo(map);\n * // some time later\n * widget.clear();\n * ```\n * @return {L.Foldable}\n */\n clear: function clear() {\n clearElementContent(this._contentBody);\n clearElementContent(this._contentHeader);\n return this;\n },\n\n /**\n * It appends content into the results list.\n *\n * @method addContent\n * @chainable\n * @param {String|HTMLElement} content content to append\n * @example\n * ```javascript\n * var results = [1, 2, 3];\n * var widget = new L.Foldable();\n * widget.addTo(map);\n * widget.setContent('Length: ');\n * widget.addContent(results.length);\n * ```\n * @return {L.Foldable}\n */\n addContent: function addContent(content) {\n _addContent(content, this._contentBody);\n if (!this._isCollapsed()) {\n this._setContentBodyMaxHeight();\n }\n\n return this;\n },\n\n /**\n * It appends content into the results list header.\n *\n * @method addContentHeader\n * @chainable\n * @param {String|HTMLElement} content content to append\n * @example\n * ```javascript\n * var widget = new L.Foldable();\n * widget.addTo(map);\n * widget.addContentHeader('This is a header');\n * ```\n * @return {L.Foldable}\n */\n addContentHeader: function addContentHeader(content) {\n _addContent(content, this._contentHeader);\n if (!this._isCollapsed()) {\n this._setContentBodyMaxHeight();\n }\n\n return this;\n },\n\n /**\n * Sets (and replaces) all the content of the results list.\n *\n * @method setContent\n * @param {String|HTMLElement} content new content\n * @chainable\n * @example\n * ```javascript\n * var widget = new L.Foldable();\n * widget.addTo(map);\n * widget.setContent('Initial content');\n * widget.setContent('New content');\n * ```\n * @return {L.Foldable}\n */\n setContent: function setContent(content) {\n return this.clear().addContent(content);\n },\n\n _bringToFront: function _bringToFront() {\n zIndex += 1;\n this.container.parentElement.style.zIndex = zIndex;\n }\n\n });\n\n return function (options) {\n return new L.Foldable(options);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Helper module to create {{#crossLink \"StaticMapImage\"}}{{/crossLink}} instances from\n * already existing {{#crossLink \"L.Map\"}}{{/crossLink}} instances.\n *\n * @private\n * @class StaticMapImageFactory\n * @module Services\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(49), __webpack_require__(5), __webpack_require__(3)], __WEBPACK_AMD_DEFINE_RESULT__ = function (StaticMapImage, Security, L) {\n 'use strict';\n\n /**\n * @ignore\n * Given a L.Map instance it returns a generic object with the necessary configuration to create a valid\n * {{#crossLink \"StaticMapImage\"}}{{/crossLink}} instance.\n *\n * @param {L.Map} mapInstance\n * @return {Object} StaticMapImage configuration\n */\n\n function getConfigFromMapInstance(mapInstance) {\n var config = {};\n if (mapInstance.options.layer) {\n config.layer = mapInstance.options.layer;\n }\n if (mapInstance.options.style) {\n config.style = mapInstance.options.style;\n }\n config.key = Security.getKey('services/display');\n config.center = mapInstance.getCenter().wrap();\n config.zoom = mapInstance.getZoom();\n config.width = mapInstance.getSize().x;\n config.height = mapInstance.getSize().y;\n config.language = mapInstance.getLocaleService().getCurrentLocale().getLanguageCode();\n return config;\n }\n\n /**\n * Returns a configured {{#crossLink \"StaticMapImage\"}}{{/crossLink}} instance based in the current state of the\n * given {{#crossLink \"L.Map\"}}{{/crossLink}} instance.\n * @method createFromMapInstance\n * @param {L.Map} mapInstance\n * @return {StaticMapImage}\n */\n function createFromMapInstance(mapInstance) {\n var config = getConfigFromMapInstance(mapInstance);\n return new StaticMapImage(config);\n }\n\n L.Map.include({\n /* This method is documented directly in map.js due to a yuidoc's bug in the @for tag */\n getStaticMapUrl: function getStaticMapUrl() {\n var result = null;\n createFromMapInstance(this).go(function (url) {\n result = url;\n });\n return result;\n }\n });\n\n return {\n createFromMapInstance: createFromMapInstance,\n getConfigFromMapInstance: getConfigFromMapInstance\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This class makes it easy to generate URL string to request a static map image using the TomTom's\n * [Maps API - Static Image](https://developer.tomtom.com/maps-api/maps-api-documentation-raster/static-image).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"StaticMapImage/go:method\"}}{{/crossLink}} generates the URL string.\n *\n * @example\n * ```js\n * // Using chainable methods\n * function callbackFn(urlString) {\n * console.log(urlString);\n * }\n * var sMap = tomtom.staticMapImage();\n * sMap.key('abdcef123456')\n * .zoom(15)\n * .center(L.latLng(50.5, 30.5))\n * .width(600)\n * .height(400)\n * .format('jpg')\n * .go()\n * .then(callbackFn);\n * ```\n *\n * @example\n * ```js\n * // Passing a object with all the configuration\n * function callbackFn(urlString) {\n * console.log(urlString);\n * }\n * tomtom.staticMapImage({\n * key: 'abdcef123456',\n * zoom: 15,\n * bbox: L.latLngBounds([\n * [40.712, -74.227],\n * [40.774, -74.125]\n * ]),\n * }).go(callbackFn);\n * ```\n *\n * @class StaticMapImage\n * @uses Chain\n * @uses ViewMixin\n * @module Services\n * @constructor\n * @param {Object} [options]\n * @param {\"basic\"|\"hybrid\"|\"labels\"} [options.layer=\"basic\"] The base map's layer to be used\n * @param {\"main\"|\"night\"} [options.style=\"main\"] The base map style to be used.\n * @param {\"png\"|\"jpg\"|\"jpeg\"} [options.format=\"png\"] The format of the image to be requested\n * @param {String} [options.key] API key that can be obtained from\n * TomTom's developer portal.\n * @param {Number} [options.zoom=12] Positive integer between 0 and 20\n * @param {L.LatLng} [options.center] Coordinates to the center of the view\n * @param {Number} [options.width] Width of the image in pixels\n * @param {Number} [options.height] Height of the image in pixels\n * @param {L.LatLngBounds} [options.bbox] Bounding box\n * @param {String} [options.view=\"Unified\"] Geopolitical view\n * @param {String} [options.language=\"NGT\"] Language to use for the labels.\n * You can found the list of supported languages\n * \n * here.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(0), __webpack_require__(8), __webpack_require__(2), __webpack_require__(4), __webpack_require__(18)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, Utils, chain, validators, converters, mainConfig) {\n 'use strict';\n\n /**\n * @ignore\n * Static Map API endpoint.\n */\n\n var baseUrl = mainConfig['endpoints.staticMapImage'];\n var MAX_WIDTH = 8192;\n var MAX_HEIGHT = 8192;\n var SUPPORTED_IMAGE_FORMATS_PER_LAYER = {\n 'basic': ['jpg', 'jpeg', 'png'],\n 'hybrid': ['png'],\n 'labels': ['png']\n };\n\n /**\n * Getter and setter for the option `layer`.\n * @method layer\n * @chainable\n * @param {\"basic\"|\"hybrid\"|\"labels\"} [newValue] New value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `style`.\n * @method style\n * @chainable\n * @param {\"main\"|\"night\"} [newValue] New value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `format`.\n * @method format\n * @chainable\n * @param {\"png\"|\"jpg\"|\"jpeg\"} [newValue] New value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `key`.\n * @method key\n * @chainable\n * @param {String} [newValue] New value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `zoom`.\n * @method zoom\n * @chainable\n * @param {Number} [newValue] New integer value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `center`.\n * @method center\n * @chainable\n * @param {L.LatLng} [newValue] New value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `width`.\n * @method width\n * @chainable\n * @param {Number} [newValue] New integer value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `height`.\n * @method height\n * @chainable\n * @param {Number} [newValue] New integer value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `bbox`.\n * @method bbox\n * @chainable\n * @param {L.LatLngBounds} [newValue] New value to be set\n * @return {Object} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `language`.\n * @method language\n * @chainable\n * @param {String} [newValue] New value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n var fields = {\n layer: { validator: validators.oneOfValue(['basic', 'hybrid', 'labels'], 'layers'), defaultValue: 'basic' },\n style: { validator: validators.oneOfValue(['main', 'night'], 'styles'), defaultValue: 'main' },\n format: { validator: validators.oneOfValue(['png', 'jpg', 'jpeg'], 'formats'), defaultValue: 'png' },\n key: { validator: validators.string, required: true },\n zoom: { validator: validators.integerInInterval(-1, 20), converter: converters.integer },\n center: { converter: converters.point, validator: validators.point },\n width: { validator: validators.integerInInterval(0, MAX_WIDTH) },\n height: { validator: validators.integerInInterval(0, MAX_HEIGHT) },\n bbox: { validator: validators.boundingBox, converter: converters.boundingBox },\n view: { validator: validators.geopolView('maps', 'view') },\n language: { validator: validators.locale('maps') }\n };\n\n function checkIfLayerSupported(data) {\n if (!SUPPORTED_IMAGE_FORMATS_PER_LAYER[data.layer] || SUPPORTED_IMAGE_FORMATS_PER_LAYER[data.layer].indexOf(data.format) === -1) {\n throw new Error('Unsupported layer. Please change to PNG or use basic layer.');\n }\n }\n\n function checkIfBBoxAndCenterSet(data) {\n if (data.bbox && data.center) {\n // If both are used - service will return a HTTP 400 response.\n throw new Error('The bbox and center properties cannot be used together');\n }\n }\n\n function checkIfBBoxAndCenterNotSet(data) {\n if (!data.bbox && !data.center) {\n throw new Error('Either bbox or center property must be provided');\n }\n }\n\n function checkIfBBoxUsedWithHeightOrWidth(data) {\n if (data.bbox && (Utils.isValidNumber(data.width) || Utils.isValidNumber(data.height))) {\n // If both are used - service will return a HTTP 400 response.\n throw new Error('The bbox, width and height properties cannot be used together');\n }\n }\n\n /**\n * @ignore\n * Validate combination of properties. Done here because chain.js does not support such behaviour\n * @throws Error\n * @param {Object} data\n */\n function validateCombineProperties(data) {\n\n // Executing additional more complex validations\n checkIfLayerSupported(data);\n checkIfBBoxAndCenterSet(data);\n checkIfBBoxAndCenterNotSet(data);\n checkIfBBoxUsedWithHeightOrWidth(data);\n }\n\n function convertBBoxToString(bbox) {\n return bbox.minLon + ',' + bbox.minLat + ',' + bbox.maxLon + ',' + bbox.maxLat;\n }\n\n function serializeToStringIfNecessary(propertyName, propertyValue) {\n var splitCenter, latLngCenter;\n if (propertyName === 'bbox') {\n propertyValue = convertBBoxToString(propertyValue);\n } else if (propertyName === 'zoom') {\n return String(parseInt(propertyValue, 10) - 1);\n } else if (propertyName === 'center') {\n splitCenter = propertyValue.split(',');\n latLngCenter = L.latLng(parseFloat(splitCenter[0]), splitCenter[1]);\n return latLngCenter.lng + ',' + latLngCenter.lat;\n }\n return propertyValue;\n }\n\n /**\n * @ignore\n * Build the Url string using the configuration available.\n * @param {Object} data\n * @return {String}\n */\n function toUrl(data) {\n var querySegments = Object.keys(fields).reduce(function (segments, propertyName) {\n var propertyValue = data[propertyName];\n if (propertyValue !== undefined) {\n propertyValue = serializeToStringIfNecessary(propertyName, propertyValue);\n segments.push(propertyName + '=' + encodeURI(propertyValue));\n }\n return segments;\n }, []);\n return baseUrl + '?' + querySegments.join('&');\n }\n\n function handleChain(data, callback) {\n validateCombineProperties(data);\n if (callback) {\n callback(toUrl(data));\n }\n }\n\n function StaticMapImage(initConfig) {\n return chain.call(this, Utils.clone(fields), handleChain, initConfig);\n }\n\n return StaticMapImage;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(51)], __WEBPACK_AMD_DEFINE_RESULT__ = function (template) {\n\n function createKeyValueString(key, value) {\n return encodeURIComponent(key) + '=' + encodeURIComponent(value);\n }\n\n function mapQueryParamToKeyValueString(key, queryParams) {\n var queryParamValue = queryParams[key];\n var result = '';\n if (Array.isArray(queryParamValue)) {\n result = queryParamValue.map(function (value) {\n return createKeyValueString(key, value);\n }).join('&');\n } else {\n result = createKeyValueString(key, queryParams[key]);\n }\n return result;\n }\n\n function withQueryParams(url, queryParams) {\n var queryString;\n if (!queryParams) {\n return url;\n }\n\n queryString = Object.keys(queryParams).map(function (key) {\n return mapQueryParamToKeyValueString(key, queryParams);\n }).join('&');\n return url + '?' + queryString;\n }\n\n return function (urlTemplate, pathParams, queryParams) {\n var url = template(urlTemplate, pathParams);\n return withQueryParams(url, queryParams);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n function isUndefined(value) {\n return value === undefined;\n }\n\n function isFunction(value) {\n return typeof value === 'function';\n }\n\n return function (template, values) {\n return template.replace(/\\{ *([\\w_]+) *\\}/g, function (match, key) {\n //eslint-disable-line\n var value = values[key];\n if (isUndefined(value)) {\n return '{' + key + '}';\n } else if (isFunction(value)) {\n return value(key);\n }\n return value;\n });\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * The copyright caption service implementation. Provides a caption that is supposed to be display on link providing to\n * full copyright notice. The response is not changed often.\n *\n * This service is supposed to be called once when user have the map displayed for the first time.\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"CopyrightCaption/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"CopyrightCaption/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * @example\n * ```js\n * tomtom.copyrightCaption()\n * .go()\n * .then(function(response) {\n * console.log(response);\n * });\n * ```\n *\n * @class CopyrightCaption\n * @module Services\n * @uses Chain\n * @constructor\n * @uses KeyMixin\n * @uses ProtocolMixin\n *\n * @param {Object} [options]\n * @param {String} [options.key] This is optional if a key was already defined globally\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53), __webpack_require__(122), __webpack_require__(8), __webpack_require__(2)], __WEBPACK_AMD_DEFINE_RESULT__ = function (restCopyright, model, chain, validators) {\n 'use strict';\n\n var fields = {\n key: { validator: validators.string },\n protocol: { validator: validators.oneOfValue(['http', 'https'], 'protocol') }\n };\n\n var copyright = restCopyright();\n\n /**\n * Perform the actual call to the web service.\n *\n * It receives two optional arguments. The first one is a callback function that will be used when a\n * successful response if received by the web service. The second one is another callback function\n * that will be used only in case of failure.\n *\n * Both arguments are shortcuts for the callback and fail methods respectively.\n *\n * The final response from service is a string containing the caption i.e.:\n * © 1992 - 2016 TomTom.\n *\n * This text have to be displayed as a copyright prompt when using TomTom services. The caption should be\n * clickable. User should be presented with full copyright notice when caption is clicked. For further\n * documentation please check the caption class.\n *\n * The SDK provides a Promise polyfill for browsers (IE<9) without native ECMAScript 6 support.\n *\n * @method go\n * @param {Function} [success] The callback function to be called on case of success.\n * @param {Function} [fail] The callback function to be called on case of failure.\n * If a success callback is not given this argument will be ignored. In that case the returned Promise\n * should be used to handle the failures.\n * @return {Promise|null} If the success callback is omitted (and wasn't defined one yet) this function\n * will return a Promise\n */\n\n function handleChain(data, callback) {\n copyright.caption(fields, data, function (response) {\n callback.call(this, model(response));\n });\n }\n\n return function (options) {\n return chain(fields, handleChain, options);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(6), __webpack_require__(10), __webpack_require__(9)], __WEBPACK_AMD_DEFINE_RESULT__ = function (endpoints, requestFactory, ApiKeyNames) {\n 'use strict';\n\n var displayKeyname = ApiKeyNames.display;\n\n return function () {\n return {\n copyrightsWorld: requestFactory.single(endpoints.copyrightsWorld, displayKeyname),\n copyrightsBounds: requestFactory.single(endpoints.copyrightsBounds, displayKeyname),\n\n caption: requestFactory.single(endpoints.caption, displayKeyname)\n };\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(7)], __WEBPACK_AMD_DEFINE_RESULT__ = function (parameterApplications) {\n var fieldName = 'contentType';\n\n return {\n setField: function setField(fields) {\n var copiedFields = Object.assign({}, fields);\n copiedFields[fieldName] = {\n application: parameterApplications.PATH\n };\n return copiedFields;\n },\n\n setValue: function setValue(requestOptions) {\n requestOptions[fieldName] = 'json';\n return requestOptions;\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(11), __webpack_require__(6)], __WEBPACK_AMD_DEFINE_RESULT__ = function (http, endpoints) {\n return function (originalCallback, options) {\n return function (result) {\n http.get({\n url: '{protocol}://' + endpoints.origin + result,\n callbackParam: 'callback',\n fail: options.fail,\n callback: originalCallback\n });\n };\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n /**\n * @ignore\n * This map contains:\n * * Identifier: 'pl-PL' - by this identifier we search in the map for locale\n * * Label: 'Polish' - label, which will be returned by getLabel function in Locale prototype\n * * Service specific options (routing, search, traffic):\n * * - fallback - identifies to which language code should be used, because for different services\n * * different language codes are used. For example pl-PL is correct one for search, but pl is used by\n * * routing. This field is also used by the method getLocaleFor in locale prototype\n * * - isNative - describes if this language is supported by service. For example 'en-AU' is supported by search\n * * but it is not supported by routing, so it will be defaulted to 'en-GB' for it. Also language list\n * for service is determined by this field. If you call localeService.getLocalesFor('routing')\n * only languages with routing.isNative === true will be returned.\n */\n\n var map = {\n 'af-ZA': {\n label: 'Afrikaans',\n routing: {\n fallback: 'af-ZA',\n isNative: true\n },\n search: {\n fallback: 'af-ZA',\n isNative: true\n },\n traffic: {\n fallback: 'en', //fallback to en\n isNative: false\n },\n maps: {\n fallback: 'en-GB', //fallback\n isNative: false\n }\n },\n 'ar': {\n label: 'Arabic',\n routing: {\n fallback: 'ar',\n isNative: true\n },\n search: {\n fallback: 'ar',\n isNative: true\n },\n traffic: {\n fallback: 'en', //fallback to en\n isNative: false\n },\n maps: {\n fallback: 'ar',\n isNative: true\n }\n },\n 'bg-BG': {\n label: 'Bulgarian',\n routing: {\n fallback: 'bg-BG',\n isNative: true\n },\n search: {\n fallback: 'bg-BG',\n isNative: true\n },\n traffic: {\n fallback: 'en', //fallback to en\n isNative: false\n },\n maps: {\n fallback: 'bg-BG',\n isNative: true\n }\n },\n 'ca-ES': {\n label: 'Spanish (Catalan)',\n routing: {\n fallback: 'es-ES', //fallback to spanish\n isNative: false\n },\n search: {\n fallback: 'ca-ES',\n isNative: true\n },\n traffic: {\n fallback: 'ca',\n isNative: true\n },\n maps: {\n fallback: 'es-ES', //fallback\n isNative: false\n }\n },\n 'cs-CZ': {\n label: 'Czech',\n routing: {\n fallback: 'cs-CZ',\n isNative: true\n },\n search: {\n fallback: 'cs-CZ',\n isNative: true\n },\n traffic: {\n fallback: 'cs',\n isNative: true\n },\n maps: {\n fallback: 'cs-CZ',\n isNative: true\n }\n },\n 'da-DK': {\n label: 'Danish',\n routing: {\n fallback: 'da-DK',\n isNative: true\n },\n search: {\n fallback: 'da-DK',\n isNative: true\n },\n traffic: {\n fallback: 'da',\n isNative: true\n },\n maps: {\n fallback: 'da-DK',\n isNative: true\n }\n },\n 'nl-BE': {\n label: 'Dutch (Belgium)',\n routing: {\n fallback: 'nl-NL', //fallback to nl-NL\n isNative: false\n },\n search: {\n fallback: 'nl-BE',\n isNative: true\n },\n traffic: {\n fallback: 'nl',\n isNative: false\n },\n maps: {\n fallback: 'nl-NL', //fallback\n isNative: false\n }\n },\n 'nl-NL': {\n label: 'Dutch',\n routing: {\n fallback: 'nl-NL',\n isNative: true\n },\n search: {\n fallback: 'nl-NL',\n isNative: true\n },\n traffic: {\n fallback: 'nl',\n isNative: true\n },\n maps: {\n fallback: 'nl-NL',\n isNative: true\n }\n },\n 'en-AU': {\n label: 'English (Australia)',\n routing: {\n fallback: 'en-GB', //falback to en-gb\n isNative: false\n },\n search: {\n fallback: 'en-AU',\n isNative: true\n },\n traffic: {\n fallback: 'en', //fallback to en\n isNative: false\n },\n maps: {\n fallback: 'en-AU',\n isNative: true\n }\n },\n 'en-NZ': {\n label: 'English (New Zealand)',\n routing: {\n fallback: 'en-GB', //falback to en-gb\n isNative: false\n },\n search: {\n fallback: 'en-NZ',\n isNative: true\n },\n traffic: {\n fallback: 'en', //fallback to en\n isNative: false\n },\n maps: {\n fallback: 'en-NZ',\n isNative: true\n }\n },\n 'en-GB': {\n label: 'English (Great Britain)',\n routing: {\n fallback: 'en-GB',\n isNative: true\n },\n search: {\n fallback: 'en-GB',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: true\n },\n maps: {\n fallback: 'en-GB',\n isNative: true\n }\n },\n 'en-US': {\n label: 'English (USA)',\n routing: {\n fallback: 'en-US',\n isNative: true\n },\n search: {\n fallback: 'en-US',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'en-US',\n isNative: true\n }\n },\n 'en-CA': {\n label: 'English (Canada)',\n routing: {\n fallback: 'en-US', //fallback\n isNative: false\n },\n search: {\n fallback: 'en-US', //fallback\n isNative: false\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'en-CA',\n isNative: true\n }\n },\n 'et-EE': {\n label: 'Estonian',\n routing: {\n fallback: 'en-GB', //falback to en-gb\n isNative: false\n },\n search: {\n fallback: 'et-EE',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'en-GB', //fallback\n isNative: false\n }\n },\n 'eu-ES': {\n label: 'Basque (Spain)',\n routing: {\n fallback: 'es-ES',\n isNative: false\n },\n search: {\n fallback: 'eu-ES',\n isNative: true\n },\n traffic: {\n fallback: 'es',\n isNative: false\n },\n maps: {\n fallback: 'es-ES',\n isNative: false\n }\n },\n 'fi-FI': {\n label: 'Finnish',\n routing: {\n fallback: 'fi-FI',\n isNative: true\n },\n search: {\n fallback: 'fi-FI',\n isNative: true\n },\n traffic: {\n fallback: 'fi',\n isNative: true\n },\n maps: {\n fallback: 'fi-FI',\n isNative: true\n }\n },\n 'fr-CA': {\n label: 'French (Canada)',\n routing: {\n fallback: 'fr-FR',\n isNative: false //fallback to fr-FR\n },\n search: {\n fallback: 'fr-CA',\n isNative: true\n },\n traffic: {\n fallback: 'fr',\n isNative: false //fallback to fr\n },\n maps: {\n fallback: 'fr-FR', //fallback\n isNative: false\n }\n },\n 'fr-FR': {\n label: 'French',\n routing: {\n fallback: 'fr-FR',\n isNative: true\n },\n search: {\n fallback: 'fr-FR',\n isNative: true\n },\n traffic: {\n fallback: 'fr',\n isNative: true\n },\n maps: {\n fallback: 'fr-FR',\n isNative: true\n }\n },\n 'de-DE': {\n label: 'German',\n routing: {\n fallback: 'de-DE',\n isNative: true\n },\n search: {\n fallback: 'de-DE',\n isNative: true\n },\n traffic: {\n fallback: 'de',\n isNative: true\n },\n maps: {\n fallback: 'de-DE',\n isNative: true\n }\n },\n 'el-GR': {\n label: 'Greek',\n routing: {\n fallback: 'el-GR',\n isNative: true\n },\n search: {\n fallback: 'el-GR',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'el-GR',\n isNative: true\n }\n },\n 'gl-ES': {\n label: 'Galician (Spain)',\n routing: {\n fallback: 'es-ES',\n isNative: false\n },\n search: {\n fallback: 'gl-ES',\n isNative: true\n },\n traffic: {\n fallback: 'es',\n isNative: false\n },\n maps: {\n fallback: 'es-ES',\n isNative: false\n }\n },\n 'he-IL': {\n label: 'Hebrew (Israel)',\n routing: {\n fallback: 'en-GB',\n isNative: false\n },\n search: {\n fallback: 'he-IL',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false\n },\n maps: {\n fallback: 'en-GB',\n isNative: false\n }\n },\n 'hr-HR': {\n label: 'Croatian',\n routing: {\n fallback: 'en-GB',\n isNative: false //fallback to en-GB\n },\n search: {\n fallback: 'hr-HR',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'en-GB', //fallback\n isNative: false\n }\n },\n 'hu-HU': {\n label: 'Hungarian',\n routing: {\n fallback: 'hu-HU',\n isNative: true\n },\n search: {\n fallback: 'hu-HU',\n isNative: true\n },\n traffic: {\n fallback: 'hu',\n isNative: true\n },\n maps: {\n fallback: 'hu-HU',\n isNative: true\n }\n },\n 'id-ID': {\n label: 'Indonesian',\n routing: {\n fallback: 'id-ID',\n isNative: true\n },\n search: {\n fallback: 'id-ID',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'id-ID',\n isNative: true\n }\n },\n 'it-IT': {\n label: 'Italian',\n routing: {\n fallback: 'it-IT',\n isNative: true\n },\n search: {\n fallback: 'it-IT',\n isNative: true\n },\n traffic: {\n fallback: 'it',\n isNative: true\n },\n maps: {\n fallback: 'it-IT',\n isNative: true\n }\n },\n 'kk-KZ': {\n label: 'Kazakh (Kazakhstan)',\n routing: {\n fallback: 'en-GB',\n isNative: false\n },\n search: {\n fallback: 'kk-KZ',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false\n },\n maps: {\n fallback: 'en-GB',\n isNative: false\n }\n },\n 'ko-KR': {\n label: 'Korean',\n routing: {\n fallback: 'ko-KR',\n isNative: true\n },\n search: {\n fallback: 'en-GB',\n isNative: false //fallback to en-GB\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'ko-KR',\n isNative: true\n }\n },\n 'lv-LV': {\n label: 'Latvian',\n routing: {\n fallback: 'en-GB', //fallback to en-GB\n isNative: false\n },\n search: {\n fallback: 'lv-LV',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'en-GB', //fallback\n isNative: false\n }\n },\n 'lt-LT': {\n label: 'Lithuanian',\n routing: {\n fallback: 'lt-LT',\n isNative: true\n },\n search: {\n fallback: 'lt-LT',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'lt-LT',\n isNative: true\n }\n },\n 'ms-MY': {\n label: 'Malay',\n routing: {\n fallback: 'ms-MY',\n isNative: true\n },\n search: {\n fallback: 'ms-MY',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'ms-MY',\n isNative: true\n }\n },\n 'NGT': {\n label: 'Neutral Ground Truth',\n routing: {\n fallback: 'en-GB', //fallback to en-gb\n isNative: false\n },\n search: {\n fallback: 'en-GB', //fallback to en-gb\n isNative: false\n },\n traffic: {\n fallback: 'en', //fallback to en\n isNative: false\n },\n maps: {\n fallback: 'NGT',\n isNative: true\n }\n },\n 'NGT-Latn': {\n label: 'Neutral Ground Truth (Latin)',\n routing: {\n fallback: 'en-GB', //fallback to en-gb\n isNative: false\n },\n search: {\n fallback: 'en-GB', //fallback to en-gb\n isNative: false\n },\n traffic: {\n fallback: 'en', //fallback to en\n isNative: false\n },\n maps: {\n fallback: 'NGT-Latn',\n isNative: true\n }\n },\n 'no-NO': {\n label: 'Norwegian',\n routing: {\n fallback: 'nb-NO',\n isNative: false\n },\n search: {\n fallback: 'no-NO',\n isNative: true\n },\n traffic: {\n fallback: 'no',\n isNative: true\n },\n maps: {\n fallback: 'nb-NO',\n isNative: false\n }\n },\n 'nb-NO': {\n label: 'Norwegian',\n routing: {\n fallback: 'nb-NO',\n isNative: true\n },\n search: {\n fallback: 'no-NO',\n isNative: false\n },\n traffic: {\n fallback: 'no',\n isNative: false\n },\n maps: {\n fallback: 'nb-NO',\n isNative: true\n }\n },\n 'pl-PL': {\n label: 'Polish',\n routing: {\n fallback: 'pl-PL',\n isNative: true\n },\n search: {\n fallback: 'pl-PL',\n isNative: true\n },\n traffic: {\n fallback: 'pl',\n isNative: true\n },\n maps: {\n fallback: 'pl-PL',\n isNative: true\n }\n },\n 'pt-BR': {\n label: 'Portuguese (Brazil)',\n routing: {\n fallback: 'pt-BR',\n isNative: true\n },\n search: {\n fallback: 'pt-BR',\n isNative: true\n },\n traffic: {\n fallback: 'pt',\n isNative: false //fallback to pt\n },\n maps: {\n fallback: 'pt-BR',\n isNative: true\n }\n },\n 'pt-PT': {\n label: 'Portuguese (Portugal)',\n routing: {\n fallback: 'pt-PT',\n isNative: true\n },\n search: {\n fallback: 'pt-PT',\n isNative: true\n },\n traffic: {\n fallback: 'pt',\n isNative: true\n },\n maps: {\n fallback: 'pt-PT',\n isNative: true\n }\n },\n 'ro-RO': {\n label: 'Romanian (Romania)',\n routing: {\n fallback: 'en-GB',\n isNative: false\n },\n search: {\n fallback: 'ro-RO',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false\n },\n maps: {\n fallback: 'en-GB',\n isNative: false\n }\n },\n 'ru-Cyrl-RU': {\n label: 'Russian (Cyrillic)',\n routing: {\n fallback: 'ru-RU',\n isNative: false\n },\n search: {\n fallback: 'ru-RU',\n isNative: false\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'ru-Cyrl-RU',\n isNative: true\n }\n },\n 'ru-Latn-RU': {\n label: 'Russian (Latin)',\n routing: {\n fallback: 'ru-RU',\n isNative: false\n },\n search: {\n fallback: 'ru-RU',\n isNative: false\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'ru-Latn-RU',\n isNative: true\n }\n },\n 'ru-RU': {\n label: 'Russian',\n routing: {\n fallback: 'ru-RU',\n isNative: true\n },\n search: {\n fallback: 'ru-RU',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'ru-RU',\n isNative: true\n }\n },\n 'sk-SK': {\n label: 'Slovak',\n routing: {\n fallback: 'sk-SK',\n isNative: true\n },\n search: {\n fallback: 'sk-SK',\n isNative: true\n },\n traffic: {\n fallback: 'sk',\n isNative: true\n },\n maps: {\n fallback: 'sk-SK',\n isNative: true\n }\n },\n 'sl-SI': {\n label: 'Slovenian',\n routing: {\n fallback: 'sl-SI',\n isNative: true\n },\n search: {\n fallback: 'sl-SI',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'sl-SI',\n isNative: true\n }\n },\n 'sr-RS': {\n label: 'Serbian',\n routing: {\n fallback: 'en-GB',\n isNative: false\n },\n search: {\n fallback: 'sr-RS',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false\n },\n maps: {\n fallback: 'en-GB',\n isNative: false\n }\n },\n 'es-ES': {\n label: 'Spanish (Castilian)',\n routing: {\n fallback: 'es-ES',\n isNative: true\n },\n search: {\n fallback: 'es-ES',\n isNative: true\n },\n traffic: {\n fallback: 'es',\n isNative: true\n },\n maps: {\n fallback: 'es-ES',\n isNative: true\n }\n },\n 'es-419': {\n label: 'Spanish (Latin American)',\n routing: {\n fallback: 'es-ES',\n isNative: false //fallback to es-ES\n },\n search: {\n fallback: 'es-419',\n isNative: true\n },\n traffic: {\n fallback: 'es',\n isNative: false //fallback to es\n },\n maps: {\n fallback: 'es-ES', //fallback\n isNative: false\n }\n },\n 'es-MX': {\n label: 'Spanish (Mexico)',\n routing: {\n fallback: 'es-MX',\n isNative: true\n },\n search: {\n fallback: 'es-ES', //fallback to es-ES\n isNative: false\n },\n traffic: {\n fallback: 'es',\n isNative: false //falback to es\n },\n maps: {\n fallback: 'es-MX',\n isNative: true\n }\n },\n 'sv-SE': {\n label: 'Swedish',\n routing: {\n fallback: 'sv-SE',\n isNative: true\n },\n search: {\n fallback: 'sv-SE',\n isNative: true\n },\n traffic: {\n fallback: 'sv',\n isNative: true\n },\n maps: {\n fallback: 'sv-SE',\n isNative: true\n }\n },\n 'th-TH': {\n label: 'Thai',\n routing: {\n fallback: 'th-TH',\n isNative: true\n },\n search: {\n fallback: 'th-TH',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'th-TH',\n isNative: true\n }\n },\n 'tr-TR': {\n label: 'Turkish',\n routing: {\n fallback: 'tr-TR',\n isNative: true\n },\n search: {\n fallback: 'tr-TR',\n isNative: true\n },\n traffic: {\n fallback: 'tr',\n isNative: true\n },\n maps: {\n fallback: 'tr-TR',\n isNative: true\n }\n },\n 'uk-UA': {\n label: 'Ukrainian',\n routing: {\n fallback: 'en-GB',\n isNative: false\n },\n search: {\n fallback: 'uk-UA',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false\n },\n maps: {\n fallback: 'en-GB',\n isNative: false\n }\n },\n 'vi-VN': {\n label: 'Vietnamese (Viet Nam)',\n routing: {\n fallback: 'en-GB',\n isNative: false\n },\n search: {\n fallback: 'vi-VN',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false\n },\n maps: {\n fallback: 'en-GB',\n isNative: false\n }\n },\n 'zh-CN': {\n label: 'Chinese (PRC)',\n routing: {\n fallback: 'zh-TW', //fallback to taiwan\n isNative: false\n },\n search: {\n fallback: 'zh-CN',\n isNative: true\n },\n traffic: {\n fallback: 'en', //falback to english\n isNative: false\n },\n maps: {\n fallback: 'zh-TW', //fallback\n isNative: false\n }\n },\n 'zh-TW': {\n label: 'Chinese (Taiwan)',\n routing: {\n fallback: 'zh-TW',\n isNative: true\n },\n search: {\n fallback: 'zh-TW',\n isNative: true\n },\n traffic: {\n fallback: 'en', //falback to english\n isNative: false\n },\n maps: {\n fallback: 'zh-TW',\n isNative: true\n }\n }\n };\n\n return map;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(32)], __WEBPACK_AMD_DEFINE_RESULT__ = function (Locale) {\n 'use strict';\n\n return function (languageCode, serviceType) {\n var locale = new Locale(languageCode);\n return locale.getValueFor(serviceType) === languageCode;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * @ignore\n * Store the list of geopolitical views available as key-value pairs.\n *\n * By default, all the entries listed here are supported by the supported services defined in the geopolView class.\n * If a view is NOT supported by a service it needs to be added as a fallback here.\n *\n * Note: maps service have subTypes. If a view is not supported by a service + subType (ex: maps - raster), we need to\n * add its fallback here.\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n return {\n Unified: {\n label: 'Unified'\n },\n IN: {\n label: 'India'\n },\n IL: {\n label: 'Israel'\n },\n MA: {\n label: 'Morocco'\n },\n PK: {\n label: 'Pakistan'\n },\n AR: {\n label: 'Argentina',\n search: {\n fallback: 'Unified'\n }\n },\n Arabic: {\n label: 'Arabic',\n search: {\n fallback: 'Unified'\n },\n reverseGeocoder: {\n fallback: 'Unified'\n }\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * The copyright service implementation provides a full copyrights notice in an HTML format that can be displayed to\n * the user when the copyrights link is clicked.\n *\n * The copyrights API can take as argument area which the copyrights concerns. If this argument is omitted the whole\n * world is considered.\n *\n * The API handles the \"edge of the world\" issue. Allowing to properly handle bounding box that is outside of world\n * extends (-180, -90, 180, 90).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"Copyright/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the {{#crossLink \"Copyright/go:method\"}}{{/crossLink}}\n * method to handle the response.\n *\n * @class Copyright\n * @module Services\n * @uses Chain\n * @constructor\n * @uses KeyMixin\n * @uses BoundingBoxMixin\n * @uses ProtocolMixin\n *\n * @param {Object} [options]\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n *\n * @param {String} [options.key] This is optional if a key was already defined globally\n * @param {Object|Array|String} [options.boundingBox] An area to extract the copyrights information for.\n * If omitted, the whole world will be taken into consideration.\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @example\n * ```js\n * tomtom.copyright()\n * .go()\n * .then(function(response) {\n * console.log(response);\n * });\n * ```\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53), __webpack_require__(125), __webpack_require__(8), __webpack_require__(22), __webpack_require__(126)], __WEBPACK_AMD_DEFINE_RESULT__ = function (restCopyright, model, chain, worldEdge, copyrightsParameters) {\n 'use strict';\n\n var fields = copyrightsParameters.create();\n var copyright = restCopyright();\n\n /**\n * Perform the actual call to the web service.\n *\n * It receives two optional arguments. The first one is a callback function that will be used when a\n * successful response if received by the web service. The second one is another callback function\n * that will be used only in case of failure.\n *\n * Both arguments are shortcuts for the callback and fail methods respectively.\n *\n * The final response from the service is an HTML string with the copyright information that have to\n * be displayed.\n * The whole respose is wrapped into a `div` element with the id `copyrightMessage`. Country names are\n * enclosed within `h4` elements and the copyrights information per each supplier is enclose in `p`\n * elements. This makes styling with CSS fairly easy. An example response may look like this:\n *```html\n *

General Copyrights:

\n *

© 1992 – 2016 TomTom. All rights reserved. This\n * material is proprietary and the subject of\n * copyright protection, database right protection\n * and other intellectual property rights owned\n * by TomTom or its suppliers. The use of\n * this material is subject to the terms of a license\n * agreement. Any unauthorized copying or disclosure\n * of this material will lead to criminal and civil\n * liabilities.

\n *

Data Source © 2016 TomTom

\n *
\n * ```\n *\n * The SDK provides a Promise polyfill for browsers (IE<9) without native ECMAScript 6 support.\n *\n * @method go\n * @param {Function} [success] The callback function to be called on case of success.\n * @param {Function} [fail] The callback function to be called on case of failure.\n * If a success callback is not given this argument will be ignored. In that case the returned Promise\n * should be used to handle the failures.\n * @return {Promise|null} If the success callback is omitted (and wasn't defined one yet) this function\n * will return a Promise\n */\n\n function addBoundingBoxParameters(data, boundingBox) {\n data.minLon = boundingBox.minLon;\n data.maxLon = boundingBox.maxLon;\n data.minLat = boundingBox.minLat;\n data.maxLat = boundingBox.maxLat;\n return data;\n }\n\n function copyrightsQuery(fields) {\n var modifiedFields = copyrightsParameters.modifyFields(fields);\n return function (options, callback) {\n if (options.minLon !== undefined && options.minLat !== undefined && options.maxLon !== undefined && options.maxLat !== undefined) {\n return copyright.copyrightsBounds(modifiedFields, options, callback);\n } else {\n return copyright.copyrightsWorld(modifiedFields, options, callback);\n }\n };\n }\n\n function handleChain(data, callback) {\n copyrightsParameters.modifyRequestOptions(data);\n worldEdge(copyrightsQuery(fields), model, data, callback, addBoundingBoxParameters);\n }\n\n return function (options) {\n return chain(fields, handleChain, options);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n function defaultComparator(first, second) {\n return first === second;\n }\n\n return function (firstArray, secondArray, comparator) {\n var result, i, j;\n if (!comparator) {\n comparator = defaultComparator;\n }\n\n result = firstArray.concat(secondArray);\n for (i = 0; i < firstArray.length; i += 1) {\n for (j = firstArray.length; j < result.length; j += 1) {\n if (comparator(result[i], result[j])) {\n result.splice(j, 1);\n j -= 1;\n }\n }\n }\n return result;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Makes it easy to display a message notification over a map.\n *\n * @example\n * ```javascript\n * var mBox = new L.MessageBox({\n * content:'Hello world',\n * closeAfter: 1000\n * });\n * mBox.addTo(map);\n * ```\n *\n * @class MessageBox\n * @namespace L\n * @extends L.Layer\n * @module Widgets\n * @constructor\n * @param {Object} [options]\n * @param {Boolean} [options.closeable=true] Show the close button\n * @param {Number} [options.closeAfter=0] Number of milliseconds after which the control will be automatically\n * closed. If value is `0` it will not be closed automatically, which is the default behaviour.\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, Utils) {\n 'use strict';\n\n L.MessageBox = L.Layer.extend({\n options: {\n closeable: true,\n closeAfter: 0\n },\n\n initialize: function initialize(options) {\n L.Util.setOptions(this, options);\n },\n\n onAdd: function onAdd(map) {\n var that;\n this._map = map;\n this._container = this.container = L.DomUtil.create('div', 'leaflet-messageBox tomtom-copyrights');\n this.contentContainer = L.DomUtil.create('div', 'leaflet-messageBox-content', this.container);\n if (this.options.closeable) {\n this.closeButton = L.DomUtil.create('div', 'leaflet-messageBox-close-button', this.container);\n this.closeButton.innerHTML = '×';\n L.DomEvent.on(this.closeButton, 'click', this.onRemove, this);\n }\n that = this;\n if (this.options.closeAfter && parseInt(this.options.closeAfter, 10) === this.options.closeAfter) {\n setTimeout(function () {\n that.close();\n }, this.options.closeAfter);\n }\n L.DomEvent.disableClickPropagation(this.container);\n L.DomEvent.disableScrollPropagation(this.container);\n\n if (this.options.content) {\n this.setContent(this.options.content);\n }\n\n map._container.appendChild(this.container);\n return this.container;\n },\n addTo: function addTo(map) {\n map.addLayer(this);\n return this;\n },\n onRemove: function onRemove() {\n if (this._map._container.contains(this.container)) {\n this._map._container.removeChild(this.container);\n }\n return this;\n },\n /**\n * Sets the HTML content of the message box.\n *\n * @chainable\n * @method setContent\n * @param {String|HTMLElement} content The text or {{#crossLink \"HTMLElement\"}}{{/crossLink}} to be a content\n * of the message box\n * @return {L.MessageBox}\n */\n setContent: function setContent(content) {\n if (!this.contentContainer) {\n this.options.content = content;\n return this;\n }\n if (Utils.isString(content)) {\n this.contentContainer.innerHTML = content || '';\n return this;\n }\n while (this.contentContainer.firstChild) {\n this.contentContainer.lastChild.remove();\n }\n this.contentContainer.appendChild(content);\n return this;\n },\n close: function close() {\n return this.onRemove();\n },\n openOn: function openOn(map) {\n return this.addTo(map);\n }\n });\n\n L.messageBox = function (options) {\n return new L.MessageBox(options);\n };\n\n return L.messageBox;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n return {\n hasProperty: function hasProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n },\n isNotNull: function isNotNull(val) {\n if (val === null) {\n return false;\n }\n return typeof val === 'function' || (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object';\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This is an extension to Leaflet allowing to display the TomTom traffic incidents layer.\n *\n * It uses the tomtom.trafficIncidents service in order to retrieve incidents details.\n *\n * A look and feel, together with a clustering behaviour, can be modified by passing the pointToLayer function.\n *\n * @class TomTomTrafficIncidentsLayer\n * @extends L.GeoJSON\n * @namespace L\n * @module Map\n * @constructor\n * @param {Object} [options] It accepts all the options that\n * Leaflet's GeoJSON\n * class allows.\n * The additional options, which are TomTom specific, are described below.\n * @param {String} [options.key] API key that can be obtained from\n * [TomTom's developer portal](https://developer.tomtom.com).\n * This is a key for the traffic services.\n * @param {Function} [options.pointToLayer=default] This function is used to convert vector traffic\n * incidents into a layer of markers on the map. It takes the GeoJSON feature as the first parameter and the latlng\n * object as the second one. It returns a layer that will be added to the map. If this is omitted, the default\n * implementation is used.\n * @param {Boolean} [options.imperialDistance=null] Set this option if you want to use a specific unit measurement\n * system for the new instance of the layer instead of use the default unit\n * @param {Boolean} [options.createPopupForCluster=false] Set this to true if you want popup for clusters to be\n * generated\n * @param {Boolean} [options.diff=false] If false, force a 'full' update on traffic markers.\n * @param {Boolean} [options.noRefresh] Disables periodic updates of traffic layers.\n * @param {Number} [options.refresh=30000] The traffic incidents information changes and needs to be updated\n * periodically. By default, it is refreshed every 30 seconds. This parameter's value represents the time\n * in milliseconds between each update interval. The value must be 0 or greater.\n */\n/* jshint nomen:false */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(5), __webpack_require__(64), __webpack_require__(134), __webpack_require__(65), __webpack_require__(16), __webpack_require__(14), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, security, trafficIncidents, clusterIncidentMarker, incidentMarker, unitTypes, trafficRefresher, Utils) {\n\n var trafficStyles = ['s1', 's2', 's3', 'night'];\n\n //mix and max zoom of the incidents layer have been defined as constants because they should not be overwritten;\n //also the service does not allow values greater than 18\n var INCIDENTS_LAYER_MIN_ZOOM = 7;\n var INCIDENTS_LAYER_MAX_ZOOM = 18;\n\n var EVENTS = {\n /**\n * Fired when new incidents data is received.\n *\n * @event TRAFFIC_INCIDENTS_RECEIVED\n * @param {Object} data GeoJson data\n * @param {L.Marker[]} layers Array of markers created to display the incidents\n */\n TRAFFIC_INCIDENTS_RECEIVED: 'tomtom.trafficincidentsreceived'\n };\n\n function getTrafficStyle(trafficLayer) {\n var style = 'night',\n i;\n if (Utils.isString(trafficLayer)) {\n for (i = 0; i < trafficStyles.length; i += 1) {\n if (trafficStyles[i] === trafficLayer.toLowerCase()) {\n return trafficStyles[i];\n }\n }\n }\n return style;\n }\n\n L.TomTomTrafficIncidentsLayer = L.GeoJSON.extend({\n options: {\n imperialDistance: null,\n trafficModelId: '-1',\n minZoom: INCIDENTS_LAYER_MIN_ZOOM\n },\n /**\n * Name of traffic incidents layer. It can be used to differentiate layers.\n * @property name\n * @default \"TomTomTrafficIncidentsLayer\"\n * @type String\n */\n name: 'trafficIncidents',\n Events: EVENTS,\n statics: {\n Events: EVENTS\n },\n _defaultPointToLayer: function _defaultPointToLayer(feature, latlng) {\n var marker;\n\n if (feature.properties.clusterSize) {\n marker = clusterIncidentMarker;\n } else {\n marker = incidentMarker;\n }\n\n return marker(feature, latlng, {\n createPopupForCluster: this.options.createPopupForCluster,\n imperialUnits: this._shouldUseImperialDistance()\n });\n },\n /**\n * @ignore\n * First check the configuration for this instance and then the global configuration.\n * The instance configuration has priority.\n *\n * @return {Boolean}\n */\n _shouldUseImperialDistance: function _shouldUseImperialDistance() {\n if (typeof this.options.imperialDistance === 'boolean') {\n return this.options.imperialDistance;\n }\n return this.unitService.getCurrentUnit().getLabel() === unitTypes.imperial;\n },\n initialize: function initialize(options) {\n this.options.pointToLayer = this._defaultPointToLayer.bind(this);\n L.Util.setOptions(this, options);\n this._layers = {};\n security.setKey('services/traffic', options.key);\n this.incidentsService = trafficIncidents(options.trafficService).key(security.getKey('services/traffic')).style(getTrafficStyle(options.style));\n },\n onAdd: function onAdd(map) {\n this._map = map;\n this.unitService = map.getUnitService();\n this.localeService = map.getLocaleService();\n map.on({ 'viewreset': this.redraw, 'moveend': this.update }, this);\n this.unitService.on(L.UnitService.Events.UNIT_CHANGED, this.redraw, this);\n this.localeService.on(L.LocaleService.Events.LOCALE_CHANGED, this.redraw, this);\n this.trafficRefresherIntervalId = trafficRefresher.addRefresherWithModelId(undefined, this.setTrafficModelId, this);\n },\n onRemove: function onRemove(map) {\n this.unitService.off(L.UnitService.Events.UNIT_CHANGED, this.redraw, this);\n map.off({ 'viewreset': this.redraw, 'moveend': this.update }, this);\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n this.clearLayers();\n },\n _getIncidentsService: function _getIncidentsService(trafficModelId) {\n var map = this._map,\n zoom,\n serviceCall;\n if (!map) {\n return null;\n }\n // although the vector map zoom in levels can go into great detail, the incidents layer\n // only supports up to zoom level 18\n zoom = map.getZoom() <= INCIDENTS_LAYER_MAX_ZOOM ? map.getZoom() : INCIDENTS_LAYER_MAX_ZOOM;\n\n if (zoom < INCIDENTS_LAYER_MIN_ZOOM) {\n this.clearLayers();\n return null;\n }\n serviceCall = this.incidentsService.boundingBox(map.getBounds()).zoomLevel(zoom).language(this.localeService.getCurrentLocale().getValueFor('traffic'));\n if (typeof trafficModelId !== 'undefined') {\n serviceCall = serviceCall.trafficModelID(trafficModelId);\n }\n return serviceCall;\n },\n // In this method we have to do few things:\n // 1. find layers (markers) that should be removed, because they are not present in the new response\n // 2. find layers that can stay and update them (IF NECESSARY)\n _updateMarkers: function _updateMarkers(geoJSON) {\n // In this object we are storing ids as keys (to speed up the searching process), that are pointing\n // to corresponding object in the geoJSON response from the API.\n var newFeaturesDictionary = geoJSON.features.reduce(function (result, feature) {\n var current = {};\n current[feature.properties.id] = feature;\n return Object.assign(result, current);\n }, Object.create(null));\n\n // eachLayer is iterating over old, already existing markers from the prev response\n this.eachLayer(function (layer) {\n // layer.feature.properites has the same structure as new markers in geoJSON, we are are using this\n // object as a reference to the original feature from the previous response.\n var properties = layer.feature.properties;\n\n // if we can find current marker in the new response it stays\n if (!(properties.id in newFeaturesDictionary)) {\n this.removeLayer(layer);\n return;\n }\n\n // From time to time markers with the same id have some useless props (like `time: undefined`) and we\n // could ignore them, BUT what if something else will change? We're doing deep equal and update\n // icon and popup data.\n if (layer instanceof L.Marker.IncidentMarker) {\n layer.setFeature(newFeaturesDictionary[properties.id]);\n }\n\n // We already have a layer for this feature, let's keep it on the map\n delete newFeaturesDictionary[properties.id];\n }, this);\n\n // Here we use Object.assign because we don't want to assume that we know geoJSON structure, it's safer\n // to just update features property and keep the rest as it was. And we are doing that because outside\n // of this method we need to have original geoJSON with every feature we've got from the API.\n return Object.assign({}, geoJSON, {\n features: Object.keys(newFeaturesDictionary).map(function (key) {\n return newFeaturesDictionary[key];\n })\n });\n },\n _handleResponse: function _handleResponse(geoJSON) {\n var data = geoJSON;\n if (this.options.diff) {\n data = this._updateMarkers(geoJSON);\n } else {\n this.clearLayers();\n }\n this.addData(data).fire(L.TomTomTrafficIncidentsLayer.Events.TRAFFIC_INCIDENTS_RECEIVED, {\n data: geoJSON,\n layers: this.getLayers()\n });\n },\n _request: function _request(trafficModelId) {\n var preconfiguredIncidentsService = this._getIncidentsService(trafficModelId);\n if (!preconfiguredIncidentsService) {\n return null;\n }\n return preconfiguredIncidentsService.go().then(this._handleResponse.bind(this));\n },\n redraw: function redraw() {\n return this._request(this.options.trafficModelId);\n },\n update: function update() {\n return this._request(this.options.trafficModelId);\n },\n setTrafficModelId: function setTrafficModelId(trafficModelId) {\n if (this.options.trafficModelId !== trafficModelId) {\n this.options.trafficModelId = trafficModelId;\n this.redraw();\n }\n },\n updateOptions: function updateOptions(options) {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n this.trafficRefresherIntervalId = trafficRefresher.addRefresherWithModelId(options, this.setTrafficModelId, this);\n L.setOptions(this, options);\n }\n });\n\n L.tomTomTrafficIncidentsLayer = function (options) {\n return new L.TomTomTrafficIncidentsLayer(options);\n };\n\n return L.tomTomTrafficIncidentsLayer;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Provides current traffic incidents in given region, on given zoom level with given style using the TomTom's\n * [Traffic API - Traffic Incidents Details](https://developer.tomtom.com/traffic-api/traffic-api-documentation-traffic-incidents/traffic-incident-details)\n *\n * The current road situation is updated every minute. Please use the\n * {{#crossLink \"TrafficModelId\"}}{{/crossLink}} service in conjunction with your request to get traffic\n * incidents aligned with other services.\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"TrafficIncidents/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"TrafficIncidents/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * The final response from this service is a GeoJSON object.\n *\n * @class TrafficIncidents\n * @uses Chain\n * @module Services\n * @uses KeyMixin\n * @uses BoundingBoxMixin\n * @uses ProtocolMixin\n * @constructor\n * @param {Object} [options]\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {Number} [options.zoomLevel] A zoom level of the current map view `<0, 18>`. This option **is required**.\n * @param {Object|Array|String} [options.boundingBox] The area to extract incidents from. Conversion objects\n * are described in the {{#crossLink \"TrafficIncidents/boundingBox:method\"}}{{/crossLink}} function.\n * @param {String} [options.style] Style name, **needs to be** one of `\"s1\"`, `\"s2\"`, `\"s3\"`, `\"night\"`.\n * This needs to match the style of your raster traffic tiles to match traffic tubes with traffic icons.\n * @param {String} [options.language=\"en\"] ISO 639-1 language code of the incidentCause and description\n * @param {Number} [options.trafficModelID=-1] Valid, not older than two minutes, traffic model ID.\n * @param {Boolean} [options.expandCluster=false] Should service include details of incidents that are\n * clustered\n * @param {Boolean} [options.originalPosition=false] Should service include original incidents' position\n * @param {\"http\"|\"https\"} [options.protocol] Protocol's type\n * @param {Boolean} [options.preserveCluster=false] Determines if clusters should be preserved\n * when requesting for details of all the incidents\n *\n * @example\n * ```javascript\n * function callbackFn(response) {\n * console.log(response);\n * }\n * tomtom.trafficIncidents()\n * .key(\"\")\n * .boundingBox(\"0,0,1,1\")\n * .style(\"s1\")\n * .zoomLevel(12)\n * .go(callbackFn);\n * ```\n */\n/* eslint-enable max-len */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(132), __webpack_require__(133), __webpack_require__(8), __webpack_require__(2), __webpack_require__(4), __webpack_require__(22), __webpack_require__(7)], __WEBPACK_AMD_DEFINE_RESULT__ = function (restTrafficIncidents, model, chain, validators, converters, worldEdge, parameterApplications) {\n 'use strict';\n\n var fields = {\n key: { validator: validators.string },\n\n /**\n * Sets or returns the value of the `zoomLevel` option.\n *\n * The zoom level of currently displayed map.\n * It is needed as the style (visibility, clustering, etc...) depends on current zoom level.\n * @method zoomLevel\n * @chainable\n * @param {Number} [newValue] Zoom level from `0` to `18`\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Number} The same service instance or the current option value if no argument was given\n */\n zoomLevel: { validator: validators.zoomLevel, required: true, application: parameterApplications.PATH,\n name: 'zoom' },\n boundingBox: { converter: converters.boundingBox, validator: validators.boundingBox, required: true },\n\n /**\n * Sets or returns the value of the `style` option.\n *\n * The style that will be used to render the\n * traffic tile in the Maps API. This will have an effect on the coordinates of traffic incidents in the\n * reply.\n *\n * @method style\n * @chainable\n * @param {String} [newValue] Style name, needs to be on of _'s1', 's2', 's3', 'night'_. This needs to match\n * style of your raster traffic tiles to match traffic tubes with traffic icons.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n style: { validator: validators.oneOfValue(['s1', 's2', 's3', 'night'], 'traffic style'), required: true,\n application: parameterApplications.PATH },\n\n /**\n * Sets or returns the value of the `language` option.\n *\n * Expects an ISO 639-1 language code for the `incidentCause` and `description` fields in the response.\n * English is the default language.\n *\n * The supported languages are: `ca`, `cs`, `da`, `de`, `en`, `es`, `fi`, `fr`, `hu`,\n * `it`, `nl`, `no`, `pl`, `pt`, `sk`, `sv`, `tr`.\n *\n * There is a conversion mechanism in place that will (ignoring the case) try to match the user input\n * with a valid language.\n *\n * For example: for the French language the following options are possible: \"fr\", \"fre\", \"fr-fr\", \"fr_fr\",\n * \"french\".\n *\n * @method language\n * @chainable\n * @param {String} [newValue] Language code, a conversion mechanism will be applied.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n language: { converter: converters.trafficIncidentsLanguage, validator: validators.trafficIncidentsLanguage },\n\n /**\n * Sets or returns the value of the `trafficModelID` option.\n *\n * Number referencing the traffic model to use.\n * This can be obtained from the the {{#crossLink \"TrafficModelId\"}}{{/crossLink}} service.\n *\n * It is updated every minute, and is valid for two minutes before it times out.\n *\n * If a wrong Traffic Model ID is specified, the correct one will be returned by the interface.\n *\n * The default value of `-1` will always invoke the most recent traffic model. Nevertheless it is\n * a good practice to use the value obtained from the service as this will guarantee an alignment\n * with the raster traffic layer.\n *\n * @method trafficModelID\n * @chainable\n * @param {Number} [newValue] Valid, not older than two minutes, traffic model ID.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Number} The same service instance or the current option value if no argument was given\n */\n trafficModelID: { validator: validators.string, defaultValue: '-1', application: parameterApplications.PATH },\n\n geometries: { validator: validators.oneOfValue(['shifted', 'original'], 'traffic geometries') },\n\n /**\n * Sets or returns the value of the `expandCluster` option.\n *\n * Tells the service to list all traffic incidents in a cluster separately.\n *\n * When is enabled the clusters in the response will be represented as geometry collections\n * and the cluster coordinates will appear as clusterCoordinates parameters.\n *\n * Enabling this feature is useful when the user wants to obtain details of the incidents\n * that are being clustered or wants to perform a client-side clustering.\n *\n * @method expandCluster\n * @chainable\n * @param {Boolean} [newValue] Should service include details of incidents that are clustered\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Boolean} The same service instance or the current option value if no argument was given\n */\n expandCluster: { validator: validators.bool, defaultValue: false },\n\n /**\n * Sets or returns the value of the `preserveCluster` option.\n *\n * Tells the service to keep all traffic incidents clustered when receiving a list of all traffic\n * incidents in a cluster separately.\n *\n * This allows to get all the incidents details while remaining in clusters.\n *\n * @method preserveCluster\n * @chainable\n * @param {Boolean} [newValue] Should service keep clusters data\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Boolean} The same service instance or the current option value if no argument was given\n */\n preserveCluster: { validator: validators.bool, defaultValue: false },\n\n /**\n * Sets or returns the value of the `originalPosition` option.\n *\n * Return the original position of the incident (`originalPosition` attribute) as well as the one\n * shifted to the beginning of the traffic tube.\n *\n * @method originalPosition\n * @chainable\n * @param {Boolean} [newValue] Should service include original incidents' position\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Boolean} The same service instance or the current option value if no argument was given\n */\n originalPosition: { validator: validators.bool, defaultValue: false },\n\n protocol: { validator: validators.oneOfValue(['http', 'https'], 'protocol') },\n\n projection: {\n defaultValue: 'EPSG4326'\n }\n };\n\n var trafficIncidents = restTrafficIncidents();\n\n function addBoundingBoxParameters(data, boundingBox) {\n data.minLon = boundingBox.minLon;\n data.maxLon = boundingBox.maxLon;\n data.minLat = boundingBox.minLat;\n data.maxLat = boundingBox.maxLat;\n return data;\n }\n\n /*\n * At this moment it's impossible to map one field to two and more output fields but we need to do this, e.g.\n * bounding box needs to be mapped to topLeft and btmRight. That's why this method tries to fix this\n */\n function modifyFields(fields) {\n var pathField = {\n application: parameterApplications.PATH\n };\n var resultFields = Object.assign({}, fields);\n\n if (resultFields.boundingBox) {\n resultFields.minLon = pathField;\n resultFields.maxLon = pathField;\n resultFields.minLat = pathField;\n resultFields.maxLat = pathField;\n delete resultFields.boundingBox;\n }\n\n return resultFields;\n }\n\n function incidentsDetailsQuery(options, callback) {\n return trafficIncidents.incidentsDetails(modifyFields(fields), options, callback);\n }\n\n function buildHandleChain(preserveCluster) {\n return function (data, callback) {\n worldEdge(incidentsDetailsQuery, model(preserveCluster), data, callback, addBoundingBoxParameters);\n };\n }\n\n return function (options) {\n options = options || {};\n options.__serviceType = 'traffic';\n return chain(fields, buildHandleChain(options && options.preserveCluster), options);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(36), __webpack_require__(15), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, T, units, Utils) {\n 'use strict';\n\n var iconsMapping = {\n 'Unknown': 'danger',\n 'Accident': 'accident',\n 'Fog': 'danger',\n 'Dangerous Conditions': 'danger',\n 'Rain': 'danger',\n 'Ice': 'ice',\n 'Jam': 'incident',\n 'Lane Closed': 'laneclosed',\n 'Road Closed': 'roadclosed',\n 'Road Works': 'roadwork',\n 'Wind': 'danger',\n 'Flooding': 'danger',\n 'Detour': 'danger',\n 'Cluster': ''\n };\n var messageTemplate = new T('
' + '
' + '
' + '
' + '
' + '
' + ' {{roadNumber}}' + '
{{=roadNumber}}
' + ' {{/roadNumber}}' + '
' + '
{{=incidentCategory}}
' + ' ' + ' {{delaySeconds}}' + '
{{=time}}
' + ' {{/delaySeconds}}' + ' {{lengthMeters}}' + '
{{=distance}}
' + ' {{/lengthMeters}}' + '
' + '
' + '');\n\n function trafficIncidentMessage(info, isUsingImperialUnits) {\n info.distance = units.formatDistance(info.lengthMeters, isUsingImperialUnits);\n info.time = units.formatTime(info.delaySeconds);\n info.incidentSeverity = info.incidentSeverity || 'unknown';\n info.icon = iconsMapping[info.incidentCategory];\n return messageTemplate.render(info);\n }\n\n function getIconOptions(feature) {\n var severity = feature.properties.incidentSeverity || 'unknown';\n\n return {\n popupAnchor: [0, -5],\n background: { iconSize: [20, 20], iconAnchor: [10, 10], icon: 'icon-circle-' + severity },\n icon: {\n iconSize: [20, 20],\n iconAnchor: [0, 0],\n icon: 'icon-' + iconsMapping[feature.properties.incidentCategory] + '-white'\n },\n content: {\n content: null,\n iconSize: [20, 20],\n iconAnchor: [0, 0],\n style: { 'color': '#fff', 'font-weight': 'bold', 'font-size': '11px' }\n }\n };\n }\n\n L.Marker.IncidentMarker = L.Marker.extend({\n options: {\n imperialUnits: false\n },\n iconsMapping: iconsMapping,\n initialize: function initialize(feature, latlng, options) {\n L.Util.setOptions(this, options);\n L.Marker.prototype.initialize.call(this, latlng, options);\n this.setFeature(feature);\n },\n setFeature: function setFeature(feature) {\n var previousFeature = this.feature || {};\n this.feature = feature;\n this.setLatLng(this.feature.geometry.coordinates.reverse());\n if (!Utils.isEqual(this.feature.properties, previousFeature.properties)) {\n this._updateIcon();\n this._updatePopup();\n }\n },\n\n _updateIcon: function _updateIcon() {\n this.setIcon(L.svgIcon(getIconOptions(this.feature)));\n },\n _updatePopup: function _updatePopup() {\n var popupContent = trafficIncidentMessage(this.feature.properties, this.options.imperialUnits);\n if (this.getPopup()) {\n this.setPopupContent(popupContent);\n } else {\n this.bindPopup(popupContent, { className: 'incidents-popup' });\n }\n }\n });\n\n return function (feature, latlng, options) {\n if (!feature || !feature.properties) {\n return null;\n }\n\n return new L.Marker.IncidentMarker(feature, latlng, {\n imperialUnits: (options || {}).imperialUnits\n });\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L) {\n 'use strict';\n\n return {\n loadAnimationFactory: function loadAnimationFactory(layer) {\n return function () {\n var opacity = 'opacity',\n back = layer._bgBuffer;\n back.style[L.DomUtil.TRANSITION] = opacity + ' 10';\n back.style[opacity] = 0.1;\n layer._tileContainer.style[opacity] = layer.options.opacity;\n };\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (Utils) {\n 'use strict';\n\n return {\n fillInTiles512Options: function fillInTiles512Options(options) {\n if (options.tileSize === 512) {\n options.zoomOffset -= 1;\n options.minZoom = options.minZoom > 0 ? options.minZoom - 1 : 0;\n }\n },\n fillInSubdomainsOptions: function fillInSubdomainsOptions(options) {\n if (Utils.isString(options.subdomains)) {\n options.subdomains = options.subdomains.split('');\n }\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n var defaultStylesIndex = 0,\n defaultLayersIndex = 0;\n\n function getMap(type) {\n switch (type) {\n case 'vectorTrafficFlow':\n return {\n style: ['vectorTrafficFlow'],\n layer: ['absolute', 'relative', 'relative-delay']\n };\n case 'vectorTrafficIncidents':\n return {\n style: ['vectorTrafficIncidents'],\n layer: ['s1', 's2', 's3', 'night']\n };\n case 'vector':\n default:\n {\n return {\n style: ['main', 'night'],\n layer: ['basic', 'hybrid', 'labels']\n };\n }\n }\n }\n\n function validateStyleOrLayer(map, options, key) {\n if (!options || !options[key]) {\n return false;\n }\n return map[key].indexOf(options[key]) !== -1;\n }\n\n function copyFromOptionsToTheme(map, options, theme, key) {\n if (validateStyleOrLayer(map, options, key)) {\n theme[key] = options[key];\n }\n }\n\n return {\n getTheme: function getTheme(optionsHierarchyArray, type) {\n var i,\n map = getMap(type),\n options,\n theme = {\n style: map.style[defaultStylesIndex],\n layer: map.layer[defaultLayersIndex]\n },\n length = optionsHierarchyArray ? optionsHierarchyArray.length : 0;\n for (i = 0; i < length; ++i) {\n options = optionsHierarchyArray[i];\n copyFromOptionsToTheme(map, options, theme, 'style');\n copyFromOptionsToTheme(map, options, theme, 'layer');\n }\n return theme;\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n var MAX_VECTOR_ZOOM = 22;\n var MAX_RASTER_ZOOM = 20;\n\n return {\n /**\n * Updates the max zoom property based on given source name.\n * This method takes into account max zoom given in map.options property.\n * @method updateMaxZoom\n * @param {Map} map Map instance\n * @param {String} source one of 'vector' or 'raster'\n */\n updateMaxZoom: function updateMaxZoom(map, source) {\n var max;\n\n switch (source) {\n case 'raster':\n {\n max = MAX_RASTER_ZOOM;\n break;\n }\n case 'vector':\n {\n max = MAX_VECTOR_ZOOM;\n break;\n }\n default:\n return;\n }\n\n if (typeof map.options.maxZoom === 'undefined') {\n map._originalMaxZoom = Infinity;\n } else if (map._originalMaxZoom !== Infinity) {\n map._originalMaxZoom = map.options.maxZoom;\n }\n\n if (typeof map.options.maxZoom === 'number') {\n max = Math.min(max, map._originalMaxZoom);\n }\n\n map.setMaxZoom(max);\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Tile layer for Leaflet that use the\n * [Maps API - Raster](https://developer.tomtom.com/maps-api/maps-api-documentation/raster)\n * from TomTom.\n *\n * @example\n * ```js\n * var tomtomLayer = new L.TomTomLayer({key: \"\"});\n * ```\n *\n * @class TomTomLayer\n * @module Map\n * @namespace L\n * @extends L.TileLayer\n * @constructor\n * @param {Object} [options] It accepts all the options that\n * Leaflet's TileLayer\n * allows.\n * The additional options, which are TomTom specific, are described below.\n * @param {String} [options.key] API key that can be obtained from\n * [TomTom's developer portal](https://developer.tomtom.com).\n * When the key is passed on the map's initialization, it is set globally for all the services. It can be\n * overwritten with the `tomtom.key()` method globally or per service with `tomtom..key()`\n * functions. It is also possible to pass a specific key while working with instances of the services.\n * @param {\"main\"|\"night\"} [options.style=\"main\"] The base map style to use\n * @param {\"basic\"|\"hybrid\"|\"labels\"} [options.layer=\"basic\"] The base map's layer to use\n * @param {String} [options.language] Language to be used for map labels. Should be one of supported\n * IETF language tags described\n * [here](https://developer.tomtom.com/maps-api/maps-api-documentation-raster/raster-tile#listOfSupportedLanguages).\n * When data in specified language is not available for a specific label,\n * [default language](https://developer.tomtom.com/maps-api/maps-api-documentation-raster/raster-tile#defaultLanguageAlgorithm)\n * is used.\n */\n/* eslint-enable max-len */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(5), __webpack_require__(11), __webpack_require__(6), __webpack_require__(68), __webpack_require__(66), __webpack_require__(67), __webpack_require__(69), __webpack_require__(12), __webpack_require__(37)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, security, http, endpoints, mapTheme, animator, optionsComplementor, Utils, analytics, tileSetTransform) {\n 'use strict';\n\n function tileSizeEstimator(options) {\n return options.detectRetina && L.Browser.retina ? 512 : 256;\n }\n\n L.TomTomLayer = L.TileLayer.extend({\n options: {\n attribution: '',\n minZoom: 2,\n maxZoom: 20,\n subdomains: 'abcd',\n reuseTiles: true,\n detectRetina: true\n },\n /**\n * Name of raster layer. It can be used to differentiate layers.\n * @property name\n * @default \"raster\"\n * @type String\n */\n name: 'raster',\n initialize: function initialize(options) {\n var key, theme, urlParams;\n options = L.setOptions(this, options);\n if (options.bounds) {\n options.bounds = L.latLngBounds(options.bounds);\n }\n security.setKey(options.key);\n key = security.getKey('services/display');\n options.accessToken = key;\n urlParams = (key ? 'key={accessToken}' : '') + (options.geopolView ? '&view={geopolView}' : '') + (options.language ? '&language={language}' : '') + '&tileSize=' + tileSizeEstimator(options);\n this._url = http.protocol() + '://' + endpoints.tileLayer + (urlParams ? '?' + urlParams : '');\n theme = mapTheme.getTheme([options]);\n options.style = theme.style;\n options.layer = theme.layer;\n optionsComplementor.fillInSubdomainsOptions(options);\n\n tileSetTransform.fixTileScale.call(this);\n },\n onAdd: function onAdd(map) {\n this._map = map;\n L.TileLayer.prototype.onAdd.call(this, map);\n if (this._animated) {\n this.on('load', animator.loadAnimationFactory(this));\n }\n this._updateOpacity();\n this.bringToBack();\n Utils.updateMaxZoom(map, this.name);\n },\n updateOptions: function updateOptions(options) {\n var theme = mapTheme.getTheme([this.options, options]);\n this.options.style = theme.style;\n this.options.layer = theme.layer;\n this.redraw();\n },\n createTile: function createTile(coords, done) {\n return analytics.customCreateTile(coords, done, this);\n }\n });\n\n L.tomTomLayer = function (options) {\n return new L.TomTomLayer(options);\n };\n\n return L.tomTomLayer;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * @ignore\n * Objects of this class should contain shared routing information. Currently this information consists of start and\n * end points but it might be extended in the future by waypoints. Instances of this class should be created for each\n * map.\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(0), __webpack_require__(40)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, utils, routing) {\n 'use strict';\n\n var pointProperties = ['startPoint', 'endPoint'];\n var otherProperties = ['jsonRoute'];\n var properties = pointProperties.concat(otherProperties);\n var EVENTS = {\n PROPERTY_VALUE_CHANGED: 'tomtom.propertyvaluechange'\n };\n var RoutingContext;\n\n function isPointProperty(property) {\n return pointProperties.indexOf(property) !== -1;\n }\n\n function propertyHandlerInitializer(property) {\n this[property] = function (propValue) {\n var previousValue, currentValue;\n if (propValue !== undefined) {\n previousValue = this['_' + property];\n currentValue = isPointProperty(property) ? utils.convertToLatLng(propValue) : propValue;\n this['_' + property] = currentValue;\n if (isPointProperty(property)) {\n this._calculateRouteIfPossible();\n }\n\n this.fire(EVENTS.PROPERTY_VALUE_CHANGED, { name: property, currentValue: currentValue, previousValue: previousValue });\n return previousValue;\n } else {\n return this['_' + property];\n }\n };\n }\n\n RoutingContext = L.Evented.extend({\n initialize: function initialize() {\n properties.forEach(propertyHandlerInitializer, this);\n },\n _calculateRouteIfPossible: function _calculateRouteIfPossible() {\n var start, end, startLocation, endLocation, locations;\n\n start = this.startPoint();\n end = this.endPoint();\n if (!start || !end) {\n return;\n }\n\n startLocation = start.lat + ',' + start.lng;\n endLocation = end.lat + ',' + end.lng;\n locations = startLocation + ':' + endLocation;\n\n routing().locations(locations).go().then(this.jsonRoute.bind(this));\n }\n });\n\n RoutingContext.Events = EVENTS;\n\n return RoutingContext;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(4), __webpack_require__(2), __webpack_require__(73), __webpack_require__(0), __webpack_require__(7)], __WEBPACK_AMD_DEFINE_RESULT__ = function (converters, validators, getRoutingParameters, utils, parameterApplications) {\n /**\n * A setter and getter for `routeType` attribute.\n *\n * Represent the type of route requested.\n *\n * Notes on specific values:\n * - `fastest` returns the fastest route.\n * - `shortest` returns the shortest route by distance.\n * - `eco` routes balance economy and speed.\n * - thrilling routes include interesting or challenging roads and use as few motorways as possible. You can\n * choose the level of turns included and also the degree of hilliness. See the hilliness and windingness\n * parameters for how to set this. There is a limit of 900 km on routes planned with routeType=thrilling\n * Default value is fastest\n *\n * @method routeType\n * @chainable\n * @param {String} [routeType] Route type to be used during route calculation.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or route type value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'traffic' attribute.\n * Possible values:\n * true (do consider all available traffic information during routing)\n * false (ignore current traffic data during routing). Note that although the current traffic data is\n * ignored during routing, the effect of historic traffic on effective road speeds is still incorporated.\n * Default is true\n *\n * @method traffic\n * @chainable\n * @param {String|Boolean} [traffic] Boolean flag determine if traffic data should be used to calculate the\n * route.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Boolean} Method returns the service instance allowing chaining or traffic value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for `avoid` attribute.\n *\n * Specifies something that the route calculation should try to avoid when determining the route.\n * Can be specified multiple times. Possible values:\n * - `tollRoads` avoids toll roads.\n * - `motorways` avoids motorways.\n * - `ferries` avoids ferries.\n * - `unpavedRoads` avoids unpaved roads.\n * - `carpools` avoids routes that require use of carpool (HOV/ High Occupancy Vehicle) lanes.\n * - `alreadyUsedRoads` avoids using the same road multiple times.\n *\n * Most useful in conjunction with `routeType=thrilling`.\n *\n * @method avoid\n * @chainable\n * @param {Array|String} [avoid] Specifies something that the route calculation should try to avoid when\n * determining the route\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Array} Method returns the service instance allowing chaining or street number value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'departAt' attribute.\n * The date and time of departure from the origin point.\n * Departure times apart from now must be specified as a dateTime.\n * When a time zone offset is not specified, it will be assumed to be that of the origin point.\n * The departAt value must be in the future. The departAt parameter cannot be used in conjunction with\n * arriveAt.\n *\n * @method departAt\n * @chainable\n * @param {String} [departAt] The properly formatted date with time or 'now' value. Date cannot be in the\n * past.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n\n /**\n * A setter and getter for 'arriveAt' attribute.\n * The date and time of arrival at the destination point.\n * It must be specified as a dateTime.\n * When a time zone offset is not specified it will be assumed to be that of the destination point.\n * The arriveAt value must be in the future. The arriveAt parameter cannot be used in conjunction with\n * departAt.\n *\n * @method arriveAt\n * @chainable\n * @param {String} [arriveAt] The properly formatted date with time value. Date cannot be in the past.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n\n /**\n * A setter and getter for 'travelMode' attribute.\n * The mode of travel for the requested route. Possible values: _car, truck, taxi, bus, van, motorcycle,\n * bicycle, pedestrian_ Note that the requested travelMode may not be available for the entire route. Where\n * the requested travelMode is not available for a particular section, the element of the\n * response for that section will be other.\n *\n * @method travelMode\n * @chainable\n * @param {String} [travelMode] The primary mean of transportation to be used while routing.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n\n /**\n * A setter and getter for 'hilliness' attribute.\n * Degree of hilliness for thrilling route. Possible values: low, normal, high\n * This parameter can only be used in conjunction with routeType thrilling.\n *\n * @method hilliness\n * @chainable\n * @param {String} [hilliness] The level of hilliness on a thrilling route.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n\n /**\n * A setter and getter for 'windingness' attribute.\n * Level of turns for thrilling route. Possible values: low, normal, high\n * This parameter can only be used in conjunction with routeType thrilling.\n *\n * @method windingness\n * @chainable\n * @param {String} [windingness] The level of windingness on a thrilling route.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n\n /**\n * A setter and getter for 'computeTravelTimeFor' attribute.\n * Specifies whether to return additional travel times using different types of traffic information (none,\n * historic, live) as well as the default best-estimate travel time. Possible values:\n * * none - do not compute additional travel times,\n * * all - compute travel times for all types of traffic information. Specifying all results in the fields\n * noTrafficTravelTimeInSeconds, historicTrafficTravelTimeInSeconds and\n * liveTrafficIncidentsTravelTimeInSeconds being included in the summaries in the route response.\n *\n * @method computeTravelTimeFor\n * @chainable\n * @param {String} [computeTravelTimeFor] Setting _all_ provides additional information regards travel\n * times.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleEngineType' attribute.\n * Engine type of the vehicle. This parameter is currently only considered for travelMode truck. Valid\n * options are: _combustion, electric_\n *\n * @method vehicleEngineType\n * @chainable\n * @param {String} [vehicleEngineType] The vehicle engine type.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleMaxSpeed' attribute.\n * Maximum speed of the vehicle in km/hour. A value of 0 means that an appropriate value for the vehicle\n * will be determined and applied during route planning. A non-zero value may be overridden during route\n * planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleMaxSpeed\n * @chainable\n * @param {Number} [vehicleMaxSpeed] The maximal allowed vehicle speed in km/h.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleWeight' attribute.\n * Weight of the vehicle in kg. A value of 0 means that weight restrictions are not considered during route\n * planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleWeight\n * @chainable\n * @param {Number} [vehicleWeight] The vehicle weight in kg.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleAxleWeight' attribute.\n * Weight per axle of the vehicle in kg. A value of 0 means that weight restrictions per axle are not\n * considered during route planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleAxleWeight\n * @chainable\n * @param {Number} [vehicleAxleWeight] The vehicle axle wight in kg.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleLength' attribute.\n * Length of the vehicle in meters. A value of 0 means that length restrictions are not considered during\n * route planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleLength\n * @chainable\n * @param {Number} [vehicleLength] The vehicle length in m.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleWidth' attribute.\n * Width of the vehicle in meters. A value of 0 means that width restrictions are not considered during\n * route planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleWidth\n * @chainable\n * @param {Number} [vehicleWidth] The vehicle width in m.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleHeight' attribute.\n * Height of the vehicle in meters. A value of 0 means that height restrictions are not considered\n * during route planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleHeight\n * @chainable\n * @param {Number} [vehicleHeight] The vehicle height in m.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleCommercial' attribute.\n * Vehicle is used for commercial purposes and thus may not be allowed to drive on some roads. This\n * parameter is currently only considered for travelMode truck.\n *\n * @method vehicleCommercial\n * @chainable\n * @param {Boolean} [vehicleCommercial] True if vehicle is used for commercial purposes.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleLoadType' attribute.\n * Types of cargo that may be classified as hazardous materials and restricted from some roads. Available\n * vehicleLoadType values are US Hazmat classes 1 through 9, plus generic classifications for use in other\n * countries.\n *\n * __Use these for routing in US__\n * * USHazmatClass1 Explosives\n * * USHazmatClass2 Compressed gas\n * * USHazmatClass3 Flammable liquids\n * * USHazmatClass4 Flammable solids\n * * USHazmatClass5 Oxidizers\n * * USHazmatClass6 Poisons\n * * USHazmatClass7 Radioactive\n * * USHazmatclass8 Corrosives\n * * USHazmatClass9 Miscellaneous\n *\n * __Use these for routing in all other countries__\n * * otherHazmatExplosive Explosives\n * * otherHazmatGeneral Miscellaneous\n * * otherHazmatHarmfulToWater Harmful to water\n *\n * This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleLoadType\n * @chainable\n * @param {Array|String} [vehicleLoadType] The array of truck cargo classification.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Array} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n var fields = getRoutingParameters(['locations', 'maxAlternatives', 'instructionsType', 'language', 'computeBestOrder', 'routeRepresentation', 'vehicleHeading', 'report', 'callback', 'minDeviationTime', 'minDeviationDistance', 'alternativeType']);\n\n var latLonFieldDescription = {\n validator: validators.arrayOf({\n point: {\n validator: validators.objectOf({\n latitude: {\n validator: validators.latitude,\n required: true\n },\n longitude: {\n validator: validators.longitude,\n required: true\n }\n })\n }\n }),\n converter: converters.arrayOf({\n point: {\n converter: converters.objectOf({\n latitude: {\n converter: converters.latitude,\n required: true\n },\n longitude: {\n converter: converters.longitude,\n required: true\n }\n })\n }\n }),\n required: true,\n application: parameterApplications.POST\n };\n\n /**\n * A setter and getter for 'origins' attribute.\n * A set of origin locations represented by points (lat,lon). At least one origin is required.\n *\n * @method origins\n * @chainable\n * @param {Array} [origins] A set of origin locations represented by points (lat,lon).\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n fields.origins = latLonFieldDescription;\n\n /**\n * A setter and getter for 'destinations' attribute.\n * A set of destination locations represented by points (lat,lon). At least one destination is required.\n *\n * @method destinations\n * @chainable\n * @param {Array} [destinations] A set of origin locations represented by points (lat,lon).\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n fields.destinations = latLonFieldDescription;\n\n return function (fieldsToSkip) {\n var result = utils.clone(fields);\n if (fieldsToSkip instanceof Array) {\n fieldsToSkip.forEach(function (field) {\n delete result[field];\n });\n }\n\n return result;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(74), __webpack_require__(0), __webpack_require__(2), __webpack_require__(42), __webpack_require__(4), __webpack_require__(7)], __WEBPACK_AMD_DEFINE_RESULT__ = function (commonRoutingParameters, utils, validators, postValidators, converters, parameterApplications) {\n /**\n * @class Routing\n * @module Services\n */\n\n var routingParameters = {\n\n /**\n * A setter and getter for 'locations' attribute.\n *\n * Locations through which the route is calculated. The\n * following constraints apply:\n * * At least two locations must be provided.\n * * The first location in the sequence defines the origin and must be of type point.\n * * The last location in the sequence defines the destination and must be of type point.\n * * One or more optional intermediate locations (known as waypoints) may be provided:\n * * The maximum allowed number of waypoints is 50, reduced to 20 when computeBestOrder is true.\n * * A point waypoint results in an extra leg in the response, a circle waypoint does not.\n * * Circle waypoints cannot be used when computeBestOrder is true.\n *\n * The points or circles that will be used to calculate the route. Following input types are allowed:\n * 1. string with Colon-delimited locations. For example: '52.50931,13.42936:52.50274,13.43872'.\n * 2. array containing locations\n * location can be defined as string,object or array\n *\n * @method locations\n * @chainable\n * @param {String|Array} [locations] This is the specified locations for route calculation.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or converted locations\n * value if argument is omitted.\n */\n locations: {\n validator: validators.routingLocations,\n converter: converters.routingLocations,\n required: true,\n application: parameterApplications.PATH\n },\n /**\n * A setter and getter for 'maxAlternatives' attribute.\n *\n * Number of desired alternative routes to be calculated. The value provided:\n * must be an integer in the range 0-5\n * using a value greater than 0 in conjunction with computeBestOrder set to true is not allowed\n * fewer alternative routes may be returned if either fewer alternatives exist or the requested number of\n * alternatives is larger than the service can calculate Default value is 0, Maximum value is 5\n *\n * @method maxAlternatives\n * @chainable\n * @param {Number} [maxAlternatives] To restrict maximum alternative routes to be calculated.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or maxAlternatives value\n * if argument is omitted.\n */\n maxAlternatives: {\n validator: validators.numberInInterval(0, 5)\n },\n\n /**\n * A setter and getter for 'instructionsType' attribute.\n *\n * If specified, guidance instructions will be returned (if available).\n *\n * Possible values:\n * * _coded_ : returns raw instruction data without human-readable messages.\n * * _text_ : returns raw instructions data with human-readable messages in plain text.\n * * _tagged_ : returns raw instruction data with tagged human-readable messages to permit formatting.\n *\n * Note that the instructionsType parameter cannot be used in conjunction with routeRepresentation=none.\n * If alternative routes are requested, instructions will be generated for each route returned.\n *\n * @method instructionsType\n * @chainable\n * @param {String} [instructionsType] If a street number is sent in along with the request, the response\n * may include the side of the street (Left/Right) and also an offset position for that street number.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or street number value if\n * argument is omitted.\n */\n instructionsType: {\n validator: validators.oneOfValue(['coded', 'text', 'tagged'], 'instructions type')\n },\n /* eslint-disable max-len */\n /**\n * A setter and getter for 'language' attribute.\n *\n * The language parameter determines the language of the guidance messages. It does not affect proper nouns\n * (the names of streets, plazas, etc.) It has no effect when instructionsType=coded. Allowed values are (a\n * subset of) the IETF language tags described here. The currently supported languages are listed in the\n * supported languages section:\n *\n * https://developer.tomtom.com/routing-api/routing-api-documentation-routing/calculate-route#supportedlanguages\n *\n * @method language\n * @chainable\n * @param {String} [language] The language value\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n /* eslint-enable max-len*/\n language: {\n validator: validators.routingGuidanceLanguage,\n converter: converters.routingGuidanceLanguage\n },\n /**\n * A setter and getter for 'computeBestOrder' attribute.\n *\n * Allows to reorder the route waypoints to reduce\n * the route length. Yields best results when used in conjunction with routeType shortest. Possible values:\n * * true (compute a better order, if possible; not allowed to be used in conjunction with\n * maxAlternatives value greater than 0; not allowed to be used in conjunction with circle waypoints).\n * The response will include the optimized waypoint indices. This feature can be used with a maximum of\n * 20 route waypoints.\n * * false (use the locations in the given order). Not allowed to be used in conjunction with\n * routeRepresentation none.\n *\n * @method computeBestOrder\n * @chainable\n * @param {Boolean} [computeBestOrder] Flag to reorder the route waypoints to reduce the route length\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Boolean} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n computeBestOrder: {\n validator: validators.bool\n },\n\n /**\n * A setter and getter for 'routeRepresentation' attribute.\n *\n * Specifies the representation of the set of routes provided as response. Possible values:\n * * _polyline_ includes routes in the response.\n * * _none_ includes only the optimized waypoint indices but does not include the routes in the response.\n * * _summaryOnly_ includes only route summary in the response\n *\n * This parameter value _none_ can only be used in conjunction with computeBestOrder true.\n *\n * @method routeRepresentation\n * @chainable\n * @param {String} [routeRepresentation] Allows the routing response to omit the actual route and give only\n * the best ordered waypoints.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n routeRepresentation: {\n validator: validators.oneOfValue(['polyline', 'none', 'summaryOnly'], 'route representation')\n },\n\n /**\n * A setter and getter for 'computeTravelTimeFor' attribute.\n *\n * Specifies whether to return additional travel times using different types of traffic information (none,\n * historic, live) as well as the default best-estimate travel time. Possible values:\n * * none - do not compute additional travel times,\n * * all - compute travel times for all types of traffic information. Specifying all results in the fields\n * noTrafficTravelTimeInSeconds, historicTrafficTravelTimeInSeconds and\n * liveTrafficIncidentsTravelTimeInSeconds being included in the summaries in the route response.\n *\n * @method computeTravelTimeFor\n * @chainable\n * @param {String} [computeTravelTimeFor] Setting to _all_ provides additional information regards\n * travel times.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n computeTravelTimeFor: {\n validator: validators.oneOfValue(['none', 'all'], 'compute travel time for')\n },\n\n /**\n * A setter and getter for 'vehicleHeading' attribute.\n *\n * The directional heading of the vehicle in degrees starting at true North and continuing in clockwise\n * direction. North is 0 degrees, east is 90 degrees, south is 180 degrees, west is 270 degrees. Possible\n * values 0-359.\n *\n * @method vehicleHeading\n * @chainable\n * @param {Number} [vehicleHeading] The angle in which the vehicle is heading.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleHeading: {\n validator: validators.integerInInterval(-1, 359)\n },\n\n /**\n * Sets or gets the value of the minDeviationDistance option.\n *\n * Defines at least how far **in meters** the alternative routes have to follow the reference route.\n *\n * This option cannot be used in conjunction with {{#crossLink \"Routing/arriveAt:method\"}}{{/crossLink}}.\n *\n * @method minDeviationDistance\n * @chainable\n * @param {Number} [newValue] Meters represented as a positive integer number\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Number} The same service instance or the current option value if no argument was given\n */\n minDeviationDistance: {\n validator: validators.naturalInteger,\n postValidator: [postValidators.firstParamCannotBeUsedWithSecond('minDeviationDistance', 'arriveAt'), postValidators.requiresDependantParameter('minDeviationDistance', 'supportingPoints')]\n },\n\n /**\n * Sets or gets the value of the minDeviationTime option.\n *\n * Defines at least how far **in time (seconds)** the alternative routes have to follow reference route.\n *\n * This option cannot be used in conjunction with {{#crossLink \"Routing/arriveAt:method\"}}{{/crossLink}}.\n *\n * @method minDeviationTime\n * @chainable\n * @param {Number} [newValue] Seconds represented as a positive integer number\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Number} The same service instance or the current option value if no argument was given\n */\n minDeviationTime: {\n validator: validators.naturalInteger,\n postValidator: [postValidators.firstParamCannotBeUsedWithSecond('minDeviationTime', 'arriveAt'), postValidators.requiresDependantParameter('minDeviationTime', 'supportingPoints')]\n\n },\n\n /* eslint-disable max-len */\n /**\n * A getter and setter for the 'supportingPoints' attribute.\n *\n * Can be used to set supporting points for constructing (or reconstructing) a route and for\n * calculating alternative routes to a base route. The provided sequence of supporting points\n * is used as input for route reconstruction.\n *\n * Pseudo examples:\n * * If the base route is A > B and we include a supporting point C, the result will be A > C > B;\n * * Supporting points can be used to reconstruct entirely a route you previously had:\n * Let's illustrate the problem. To go from A > B you received A > C > D > E > B. If later, you try to generate\n * the same route (A > B) you might get different middle points, so if you need to generate the exact same route\n * you previously had you can do something like routing().locations(A, B).supportingPoints(C, D, E)\n *\n * You can use one of the following input formats to define the supporting points:\n * * String: '52.3,4.8' or '52.3,4.8:52.37,4.87'\n * * String[]: ['52.3,4.8:52.37,4.87', '52.3,4.8:52.37,4.87']\n * * Object: {lat: 52.3, lon: 4.8} or {lat: 53.3, lng: 5.8} or {x: 53.3, y: 5.8} or {latitude: 53.3, longitude: 5.8}\n * * Object[]: [{lat: 52.3, lon: 4.8}] or [{lat: 53.3, lng: 5.8}]\n *\n * How 'Supporting Points' differ from 'Waypoints?' - Waypoints are points where the calculated route will go through, but\n * the resulting route might be different from search to search, the waypoints order might not be necessarilly respected\n * when calculating the best route, and finally, there is a limit to the number of waypoints you can use in a route calculation.\n * Supporting points can be used to contruct a previous route entirely, or parts of it, using the previous generated points,\n * meaning that there is no limit to the number of points, and the order of these points will be respected.\n *\n * For more information please refer to the [Routing API Docs](https://developer.tomtom.com/routing-api/routing-api-documentation-routing/calculate-route)\n *\n * @method supportingPoints\n * @chainable\n * @param {String|String[]|Object|Object[]} [locations] Supporting points for route calculation.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or converted locations\n * value if argument is omitted.\n *\n * @example\n * ```js\n * tomtom.routing()\n * .locations('52.3,4.8:52.37,4.87')\n * .supportingPoints('52.33357,4.852')\n * .go()\n * .then(function(routeGeoJson) {\n * console.log(routeGeoJson);\n * });\n * ```\n */\n /* eslint-enable max-len */\n supportingPoints: {\n converter: converters.supportingPoints,\n application: parameterApplications.POST\n },\n\n /**\n * A getter and setter for the 'sectionType' attribute.\n *\n * Specifies which of the section types is reported in the route response.\n *\n * Possible values:\n * - carTrain: car or train sections in the route\n * - ferry: ferry sections\n * - tunnel: tunnel sections\n * - motorway: motorway sections\n * - tollRoad: payed toll sections\n * - pedestrian: sections which are suited for pedestrians only\n * - tollVignette: sections which require a toll vignette to be present\n * - country: returns country sub sections in the route\n * - travelMode: sections in relation to the request parameter travelMode\n * - traffic: returns traffic sub sections in the route, values include: JAM, ROAD_WORK,\n * ROAD_CLOSURE and OTHER\n *\n * Default value is travelMode.\n * @method sectionType\n * @chainable\n * @param {String[]} [sectionType] Array of section types\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String[]} The same service instance or the current option value if no argument was given\n */\n sectionType: {\n validator: validators.arrayOfValues(['carTrain', 'country', 'ferry', 'motorway', 'pedestrian', 'tollRoad', 'tollVignette', 'travelMode', 'tunnel', 'traffic'], 'sectionType'),\n converter: converters.arrayOfStrings\n },\n\n /**\n * A setter and getter for 'alternativeType' attribute.\n *\n * Specifies the alternative type of the calculated alternatives compared to the reference route.\n * Possible values are:\n *\n * * anyRoute: allow any alternative route to be returned regardless of how it compares to the reference\n * route in terms of optimality.\n * * betterRoute: returns an alternative route only if it is better than the reference route according\n * to the given planning criteria.\n *\n * Can only be used when reconstructing a route.\n *\n * @method alternativeType\n * @chainable\n * @param {String} [alternativeType] anyRoute or betterRoute value.\n * @throws {TypeError} if the given argument is not one of the accepted values described above\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n alternativeType: {\n validator: validators.oneOfValue(['anyRoute', 'betterRoute'], 'alternativeType'),\n postValidator: postValidators.requiresDependantParameter('alternativeType', 'supportingPoints')\n }\n };\n\n routingParameters = utils.extend(routingParameters, commonRoutingParameters);\n\n return function (fieldsToSkip) {\n var result = utils.clone(routingParameters);\n if (fieldsToSkip instanceof Array) {\n fieldsToSkip.forEach(function (field) {\n delete result[field];\n });\n }\n\n return result;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(4), __webpack_require__(42), __webpack_require__(7)], __WEBPACK_AMD_DEFINE_RESULT__ = function (validators, converters, postValidators, parameterApplications) {\n\n var fields = {\n key: {\n validator: validators.string\n },\n\n /**\n * A setter and getter for 'routeType' attribute.\n * The type of route requested. Notes on specific values:\n * * fastest returns the fastest route.\n * * shortest returns the shortest route by distance.\n * * eco routes balance economy and speed.\n * * thrilling routes include interesting or challenging roads and use as few motorways as possible.\n * You can choose the level of turns included and also the degree of hilliness. See the hilliness and\n * windingness parameters for how to set this. There is a limit of 900 km on routes planned with\n * routeType=thrilling\n *\n * Default value is fastest\n *\n * @method routeType\n * @chainable\n * @param {String} [routeType] Route type to be used during route calculation.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or route type value if\n * argument is omitted.\n */\n routeType: {\n validator: validators.oneOfValue(['fastest', 'shortest', 'eco', 'thrilling'], 'route type')\n },\n\n /**\n * A setter and getter for 'traffic' attribute.\n * \n * Possible values:\n * - true (just considers all available traffic information during routing)\n * - false (ignores current traffic data during routing). Note that although the current traffic data is\n * ignored during routing, the effect of historic traffic on effective road speeds is still incorporated.\n * \n * Default is true\n *\n * @method traffic\n * @chainable\n * @param {Boolean} [traffic] Boolean flag determines if traffic data should be used to calculate the\n * route.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Boolean} Method returns the service instance allowing chaining or traffic value if\n * argument is omitted.\n */\n traffic: {\n validator: validators.bool\n },\n\n /**\n * A setter and getter for 'avoid' attribute.\n * \n * Specifies something that the route calculation should try to avoid when determining the route. Can be\n * specified multiple times. Possible values:\n * * tollRoads: avoids toll roads.\n * * motorways: avoids motorways.\n * * ferries: avoids ferries.\n * * unpavedRoads: avoids unpaved roads.\n * * carpools: avoids routes that require use of carpool (HOV/ High Occupancy Vehicle) lanes.\n * * alreadyUsedRoads: avoids using the same road multiple times.\n *\n * Most useful in conjunction with routeType=thrilling.\n *\n * @method avoid\n * @chainable\n * @param {Array|String} [avoid] Specifies something that the route calculation should try to avoid when\n * determining the route\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Array} Method returns the service instance allowing chaining or street number value if\n * argument is omitted.\n */\n avoid: {\n validator: validators.arrayOfValues(['tollRoads', 'motorways', 'ferries', 'unpavedRoads', 'carpools', 'alreadyUsedRoads'], 'avoid'),\n converter: converters.arrayOfStrings\n },\n\n /**\n * A setter and getter for 'departAt' attribute.\n * \n * The date and time of departure from the origin point.\n * Departure times apart from now must be specified as a dateTime.\n * When a time zone offset is not specified, it will be assumed to be that of the origin point.\n * The departAt value must be in the future. The departAt parameter cannot be used in conjunction with\n * arriveAt.\n *\n * @method departAt\n * @chainable\n * @param {String} [departAt] The properly formatted date with time or 'now' value. Date cannot be in the\n * past.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n departAt: {\n validator: validators.departAt,\n converter: converters.dateTime\n },\n\n /**\n * A setter and getter for 'arriveAt' attribute.\n * \n * The date and time of arrival at the destination point.\n * It must be specified as a dateTime.\n * When a time zone offset is not specified it will be assumed to be that of the destination point.\n * The arriveAt value must be in the future. The arriveAt parameter cannot be used in conjunction with\n * departAt.\n *\n * @method arriveAt\n * @chainable\n * @param {String} [arriveAt] The properly formatted date with time value. Date cannot be in the past.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n arriveAt: {\n validator: validators.arriveAt,\n converter: converters.dateTime\n },\n\n /**\n * A setter and getter for 'travelMode' attribute.\n * \n * The travel mode for the requested route. \n * \n * Possible values: _car, truck, taxi, bus, van, motorcycle, bicycle, pedestrian_ \n * \n * Note that the requested travelMode may not be available for the entire route. Where\n * the requested travelMode is not available for a particular section, the element of the\n * response for that section will be other.\n *\n * @method travelMode\n * @chainable\n * @param {String} [travelMode] The primary mean of transportation to be used while routing.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n travelMode: {\n validator: validators.oneOfValue(['car', 'truck', 'taxi', 'bus', 'van', 'motorcycle', 'bicycle', 'pedestrian'], 'travel mode')\n },\n\n /**\n * A setter and getter for 'hilliness' attribute.\n * \n * Degree of hilliness for thrilling route. Possible values: low, normal, high\n * This parameter can only be used in conjunction with routeType thrilling.\n *\n * @method hilliness\n * @chainable\n * @param {String} [hilliness] The level of hilliness on a thrilling route.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n hilliness: {\n validator: validators.oneOfValue(['low', 'normal', 'high'], 'hilliness')\n },\n\n /**\n * A setter and getter for 'windingness' attribute.\n * \n * Level of turns for thrilling route. Possible values: low, normal, high\n * This parameter can only be used in conjunction with routeType thrilling.\n *\n * @method windingness\n * @chainable\n * @param {String} [windingness] The level of windingness on a thrilling route.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n windingness: {\n validator: validators.oneOfValue(['low', 'normal', 'high'], 'windingness')\n },\n\n /**\n * A setter and getter for 'report' attribute.\n * \n * Specifies which data should be reported for diagnosis purposes. \n * \n * Possible values: _effectiveSettings_ \n * Reports the effective parameters or data used when calling the API.\n * \n * In the case of defaulted parameters the default will be reflected where the parameter was not specified\n * by the caller.\n *\n * @method report\n * @chainable\n * @param {String} [report] Level of verbose answer from service, useful for debugging purposes.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n report: {\n validator: validators.oneOfValue(['effectiveSettings'], 'report')\n },\n\n /**\n * A setter and getter for 'vehicleEngineType' attribute.\n * \n * Engine type of the vehicle. This parameter is currently only considered for travelMode truck. Valid\n * options are: _combustion, electric_\n *\n * @method vehicleEngineType\n * @chainable\n * @param {String} [vehicleEngineType] The vehicle engine type.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleEngineType: {\n validator: validators.oneOfValue(['combustion', 'electric'], 'vehicle engine type')\n },\n\n /**\n * A setter and getter for 'vehicleMaxSpeed' attribute.\n * \n * Maximum speed of the vehicle in km/hour. A value of 0 means that an appropriate value for the vehicle\n * will be determined and applied during route planning. A non-zero value may be overridden during route\n * planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleMaxSpeed\n * @chainable\n * @param {Number} [vehicleMaxSpeed] The maximal allowed vehicle speed in km/h.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleMaxSpeed: {\n validator: validators.naturalInteger\n },\n\n /**\n * A setter and getter for 'vehicleWeight' attribute.\n * \n * Weight of the vehicle in kg. A value of 0 means that weight restrictions are not considered during route\n * planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleWeight\n * @chainable\n * @param {Number} [vehicleWeight] The vehicle weight in kg.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleWeight: {\n validator: validators.naturalInteger,\n postValidator: postValidators.vehicleWeight\n },\n\n /**\n * A setter and getter for 'vehicleAxleWeight' attribute.\n * \n * Weight per axle of the vehicle in kg. A value of 0 means that weight restrictions per axle are not\n * considered during route planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleAxleWeight\n * @chainable\n * @param {Number} [vehicleAxleWeight] The vehicle axle weight in kg.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleAxleWeight: {\n validator: validators.naturalInteger\n },\n\n /**\n * A setter and getter for 'vehicleLength' attribute.\n * \n * Length of the vehicle in meters. A value of 0 means that length restrictions are not considered during\n * route planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleLength\n * @chainable\n * @param {Number} [vehicleLength] The vehicle length in m.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleLength: {\n validator: validators.numberInInterval(0, Number.MAX_VALUE)\n },\n\n /**\n * A setter and getter for 'vehicleWidth' attribute.\n * \n * Width of the vehicle in meters. A value of 0 means that width restrictions are not considered during\n * route planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleWidth\n * @chainable\n * @param {Number} [vehicleWidth] The vehicle width in m.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleWidth: {\n validator: validators.numberInInterval(0, Number.MAX_VALUE)\n },\n\n /**\n * A setter and getter for 'vehicleHeight' attribute.\n * \n * Height of the vehicle in meters. A value of 0 means that height restrictions are not considered\n * during route planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleHeight\n * @chainable\n * @param {Number} [vehicleHeight] The vehicle height in m.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleHeight: {\n validator: validators.numberInInterval(0, Number.MAX_VALUE)\n },\n\n /**\n * A setter and getter for 'vehicleCommercial' attribute.\n * \n * Vehicle is used for commercial purposes and thus may not be allowed to drive on some roads. This\n * parameter is currently only considered for travelMode truck.\n *\n * @method vehicleCommercial\n * @chainable\n * @param {Boolean} [vehicleCommercial] True if vehicle is used for commercial purposes.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleCommercial: {\n validator: validators.bool\n },\n\n /**\n * A setter and getter for 'vehicleLoadType' attribute.\n * \n * Types of cargo that may be classified as hazardous materials and restricted from some roads. Available\n * vehicleLoadType values are US Hazmat classes 1 through 9, plus generic classifications for use in other\n * countries.\n *\n * __Use these for routing in US__\n * * USHazmatClass1 Explosives\n * * USHazmatClass2 Compressed gas\n * * USHazmatClass3 Flammable liquids\n * * USHazmatClass4 Flammable solids\n * * USHazmatClass5 Oxidizers\n * * USHazmatClass6 Poisons\n * * USHazmatClass7 Radioactive\n * * USHazmatclass8 Corrosives\n * * USHazmatClass9 Miscellaneous\n *\n * __Use these for routing in all other countries__\n * * otherHazmatExplosive Explosives\n * * otherHazmatGeneral Miscellaneous\n * * otherHazmatHarmfulToWater Harmful to water\n *\n * This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleLoadType\n * @chainable\n * @param {Array|String} [vehicleLoadType] The array of truck cargo classification.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Array} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleLoadType: {\n validator: validators.arrayOfValues(['USHazmatClass1', 'USHazmatClass2', 'USHazmatClass3', 'USHazmatClass4', 'USHazmatClass5', 'USHazmatClass6', 'USHazmatClass7', 'USHazmatClass8', 'USHazmatClass9', 'otherHazmatExplosive', 'otherHazmatGeneral', 'otherHazmatHarmfulToWater'], 'vehicle load type'),\n converter: converters.arrayOfStrings\n },\n /**\n * A setter and getter for 'constantSpeedConsumptionInLitersPerHundredkm' attribute.\n * \n * Specifies the speed-dependent component of consumption.\n * Provided as an unordered list of speed/consumption-rate pairs. The list defines points on a\n * consumption curve.\n * Consumption rates for speeds not in the list are found as follows:\n * * by linear interpolation, if the given speed lies in between two speeds in the list\n * * by linear extrapolation otherwise, assuming a constant (ΔConsumption/ΔSpeed) determined by\n * the nearest two points in the list.\n *\n * The list must contain between 1 and 25 points (inclusive), and may not\n * contain duplicate points for the same speed. If it only contains a single point,\n * then the consumption rate of that point is used without further processing.\n * Consumption specified for the largest speed must be greater than or equal to that of the\n * penultimate largest speed. This ensures that extrapolation does not lead to negative consumption rates.\n * Similarly, consumption values specified for the two smallest speeds in the list cannot lead to a\n * negative consumption rate for any smaller speed.\n * The minimum and maximum values described here refer to the valid range for the consumption values\n * (expressed in l/100km).\n * @method constantSpeedConsumptionInLitersPerHundredkm\n * @chainable\n * @param {Array} [constantSpeedConsumptionInLitersPerHundredkm] Colon-delimited list of\n * CombustionConstantSpeedConsumptionPairs, e.g. array of such pairs \"60,7\".\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Array} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n constantSpeedConsumptionInLitersPerHundredkm: {\n postValidator: postValidators.constantSpeedConsumption('combustion'),\n converter: converters.constantSpeedConsumption\n },\n /**\n * A setter and getter for 'currentFuelInLiters' attribute.\n * \n * Specifies the current supply of fuel in liters.\n * @method currentFuelInLiters\n * @chainable\n * @param {Number} [currentFuelInLiters]\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n currentFuelInLiters: {\n postValidators: postValidators.floatAndEngineType('combustion', 'currentFuelInLiters')\n },\n /**\n * A setter and getter for 'auxiliaryPowerInLitersPerHour' attribute.\n * \n * Specifies the amount of fuel consumed for sustaining auxiliary systems of the vehicle, in liters\n * per hour. It can be used to specify consumption due to devices and systems such as AC systems, radio,\n * heating, etc.\n * @method auxiliaryPowerInLitersPerHour\n * @chainable\n * @param {Number} [auxiliaryPowerInLitersPerHour]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n auxiliaryPowerInLitersPerHour: {\n postValidators: postValidators.floatAndEngineType('combustion', 'auxiliaryPowerInLitersPerHour')\n },\n /**\n * A setter and getter for 'fuelEnergyDensityInMJoulesPerLiter' attribute.\n * \n * Specifies the amount of chemical energy stored in one liter of fuel in megajoules (MJ).\n * It is used in conjunction with the *Efficiency parameters for conversions between saved\n * or consumed energy and fuel.\n * For example, energy density is 34.2 MJ/l for gasoline, and 35.8 MJ/l for Diesel fuel.\n * @method fuelEnergyDensityInMJoulesPerLiter\n * @chainable\n * @param {Number} [fuelEnergyDensityInMJoulesPerLiter]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n fuelEnergyDensityInMJoulesPerLiter: {\n postValidator: postValidators.fuelEnergyDensityInMJoulesPerLiter\n },\n /**\n * A setter and getter for 'accelerationEfficiency' attribute.\n * \n * Specifies the efficiency of converting chemical energy stored in fuel to kinetic energy when the\n * vehicle accelerates (i.e. KineticEnergyGained/ChemicalEnergyConsumed).\n * ChemicalEnergyConsumed is obtained by converting consumed fuel to chemical energy using\n * fuelEnergyDensityInMJoulesPerLiter.\n * @method accelerationEfficiency\n * @chainable\n * @param {Number} [accelerationEfficiency]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n accelerationEfficiency: {\n postValidator: postValidators.efficiencyParameter('accelerationEfficiency', 'decelerationEfficiency')\n },\n /**\n * A setter and getter for 'decelerationEfficiency' attribute.\n * \n * Specifies the efficiency of converting kinetic energy to saved (not consumed) fuel when the\n * vehicle decelerates (i.e. ChemicalEnergySaved/KineticEnergyLost).\n * ChemicalEnergySaved is obtained by converting saved (not consumed) fuel to energy using\n * fuelEnergyDensityInMJoulesPerLiter.\n * @method decelerationEfficiency\n * @chainable\n * @param {Number} [decelerationEfficiency]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n decelerationEfficiency: {\n postValidator: postValidators.efficiencyParameter('decelerationEfficiency', 'accelerationEfficiency')\n },\n /**\n * A setter and getter for 'uphillEfficiency' attribute.\n * \n * Specifies the efficiency of converting chemical energy stored in fuel to potential energy\n * when the vehicle gains elevation (i.e. PotentialEnergyGained/ChemicalEnergyConsumed).\n * ChemicalEnergyConsumed is obtained by converting consumed fuel to chemical energy using\n * fuelEnergyDensityInMJoulesPerLiter.\n * @method uphillEfficiency\n * @chainable\n * @param {Number} [uphillEfficiency]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n uphillEfficiency: {\n postValidator: postValidators.efficiencyParameter('uphillEfficiency', 'downhillEfficiency')\n },\n /**\n * A setter and getter for 'downhillEfficiency' attribute.\n * \n * Specifies the efficiency of converting potential energy to saved (not consumed) fuel when the\n * vehicle loses elevation (i.e. ChemicalEnergySaved/PotentialEnergyLost).\n * ChemicalEnergySaved is obtained by converting saved (not consumed) fuel to energy using\n * fuelEnergyDensityInMJoulesPerLiter.\n * @method downhillEfficiency\n * @chainable\n * @param {Number} [downhillEfficiency]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n downhillEfficiency: {\n postValidator: postValidators.efficiencyParameter('downhillEfficiency', 'uphillEfficiency')\n },\n /**\n * A setter and getter for 'constantSpeedConsumptionInkWhPerHundredkm' attribute.\n * \n * Specifies the speed-dependent component of consumption.\n * Provided as an unordered list of speed/consumption-rate pairs. The list defines points\n * on a consumption curve.\n * Consumption rates for speeds not in the list are found as follows:\n * * by linear interpolation, if the given speed lies in between two speeds in the list\n * * by linear extrapolation otherwise, assuming a constant (ΔConsumption/ΔSpeed) determined by\n * the nearest two points in the list\n *\n * The list must contain between 1 and 25 points (inclusive), and may not contain duplicate points\n * for the same speed. If it only contains a single point, then the consumption rate of that point\n * is used without further processing. Consumption specified for the largest speed must be greater\n * than or equal to that of the penultimate largest speed.\n * This ensures that extrapolation does not lead to negative consumption rates.\n * Similarly, consumption values specified for the two smallest speeds in the list cannot lead to a\n * negative consumption rate for any smaller speed.\n * The minimum and maximum values described here refer to the valid range for the consumption values\n * (expressed in kWh/100km).\n * @method constantSpeedConsumptionInkWhPerHundredkm\n * @chainable\n * @param {Array} [constantSpeedConsumptionInkWhPerHundredkm] Colon-delimited list of\n * ElectricConstantSpeedConsumptionPairs, e.g. array of such pairs \"60,7\".\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Array} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n constantSpeedConsumptionInkWhPerHundredkm: {\n postValidator: postValidators.constantSpeedConsumption('electric'),\n converter: converters.constantSpeedConsumption\n },\n /**\n * A setter and getter for 'currentChargeInkWh' attribute.\n * \n * Specifies the current electric energy supply in kilowatt hours (kWh).\n * @method currentChargeInkWh\n * @chainable\n * @param {Number} [currentChargeInkWh]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n currentChargeInkWh: {\n postValidator: postValidators.chargeParameter('currentChargeInkWh', 'maxChargeInkWh')\n },\n /**\n * A setter and getter for 'maxChargeInkWh' attribute.\n * \n * Specifies the maximum electric energy supply in kilowatt hours (kWh) that may be stored in t\n * he vehicle's battery.\n * @method maxChargeInkWh\n * @chainable\n * @param {Number} [maxChargeInkWh]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n maxChargeInkWh: {\n postValidator: postValidators.chargeParameter('maxChargeInkWh', 'currentChargeInkWh')\n },\n /**\n * A setter and getter for 'auxiliaryPowerInkW' attribute.\n * \n * Specifies the amount of power consumed for sustaining auxiliary systems, in kilowatts (kW).\n * It can be used to specify consumption due to devices and systems such as AC systems, radio, heating, etc.\n * @method auxiliaryPowerInkW\n * @chainable\n * @param {Number} [auxiliaryPowerInkW]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n auxiliaryPowerInkW: {\n postValidator: postValidators.floatAndEngineType('electric', 'auxiliaryPowerInkW')\n },\n\n /**\n * A setter and getter for _'protocol'_ attribute. \n * \n * Represents type of protocol used to perform service call.\n *\n * @method protocol\n * @chainable\n * @param {String} [protocol] Protocol type, one of _http_ or _https_.\n * @throws {TypeError} If the given argument cannot be converted to a valid value.\n * @return {String} Method returns the service instance allowing chaining or _protocol_\n * value if argument is omitted.\n */\n protocol: {\n validator: validators.oneOfValue(['http', 'https'], 'protocol')\n },\n\n /**\n * A getter and setter for the 'avoidAreas' attribute.\n *\n * A list of shapes to avoid for planning routes. Supported shapes include rectangles.\n * Can contain one of each supported shapes element.\n * @example\n * ```js\n * tomtom.routing().locations('52.37173,4.91015:52.36357,4.898046255')\n * .avoidAreas([{\n * southWestCorner: {latitude: 52.36391, longitude:4.90106},\n * northEastCorner: {latitude: 52.36554, longitude:4.90767}\n * }]);\n * ```\n * Supported point formats:\n * - 'lat,lon'\n * - {lat:111, lon:111}\n * - {lat:111, lng:111}\n * - {latitude:111, longitude:111}\n * - {x:111, y:111}\n * - {lat: function(), lng:function()}\n *\n * @method avoidAreas\n * @chainable\n * @param {Object[]} [areas] A list of shapes to avoid for planning routes.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or converted locations\n * value if argument is omitted.\n */\n avoidAreas: {\n converter: converters.avoidAreas,\n application: parameterApplications.POST\n },\n\n /**\n * A getter and setter for the 'avoidVignette' attribute.\n *\n * List of 3-character ISO 3166-1 alpha-3 country codes of countries in which\n * all toll roads with vignettes are to be avoided.\n * Toll roads with vignettes in countries not in the list are unaffected.\n * It is an error to specify both avoidVignette and allowVignette.\n * @method avoidVignette\n * @chainable\n * @param {String|String[]} [newValue] Array of country codes\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String|String[]} The same service instance or the current option value if no argument was given\n */\n avoidVignette: {\n validator: validators.countrySetAlpha3.bind(this, false),\n postValidator: postValidators.firstParamCannotBeUsedWithSecond('avoidVignette', 'allowVignette'),\n converter: converters.arrayOfStrings,\n application: parameterApplications.POST\n },\n\n /**\n * A getter and setter for the 'allowVignette' attribute.\n *\n * List of 3-character ISO 3166-1 alpha-3 country codes of countries in which\n * toll roads with vignettes are allowed.\n * Specifying allowVignette with some countries X is equivalent to specifying\n * avoidVignette with all countries but X.\n * Specifying allowVignette with an empty list is the same as avoiding all toll roads with vignettes.\n * It is an error to specify both avoidVignette and allowVignette.\n * @method allowVignette\n * @chainable\n * @param {String|String[]} [newValue] Array of country codes\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String|String[]} The same service instance or the current option value if no argument was given\n */\n allowVignette: {\n validator: validators.countrySetAlpha3.bind(this, true),\n postValidator: postValidators.firstParamCannotBeUsedWithSecond('allowVignette', 'avoidVignette'),\n converter: converters.arrayOfStrings,\n application: parameterApplications.POST\n }\n };\n return fields;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(0), __webpack_require__(143)], __WEBPACK_AMD_DEFINE_RESULT__ = function (Utils, getRouteFeature) {\n 'use strict';\n\n function newFeatureCollection() {\n return {\n type: 'FeatureCollection',\n features: []\n };\n }\n\n return function (data) {\n var result, i;\n if (Utils.isString(data)) {\n try {\n data = JSON.parse(data); // aja js has problems and response is not always parsed as it should\n } catch (e) {\n return null;\n }\n }\n if (data.error) {\n return { error: data.error };\n } else {\n result = newFeatureCollection();\n result.optimizedWaypoints = data.optimizedWaypoints;\n if (!data || !data.routes) {\n return result;\n }\n for (i = 0; i < data.routes.length; i += 1) {\n result.features.push(getRouteFeature(data.routes[i]));\n }\n return result;\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L) {\n\n /**\n * @ignore\n * @param {String | HTMLElement} element Get rect from this element or query for it and then get its rects.\n * @returns {DOMRect | null} Rectangle of given element or null if something bad happens\n */\n function getRect(element) {\n try {\n if (typeof element === 'string') {\n return document.querySelector(element).getBoundingClientRect();\n }\n return element.getBoundingClientRect();\n } catch (err) {\n return null;\n }\n }\n\n /**\n * Helper method used to update bounding options. Used once for every control container.\n *\n * @ignore\n * @param {Object} bounds Object containing options for padding points. This object will be modified.\n * @param {Object} bounds.paddingTopLeft Object that will be passed as a top-left point of the fitBounds padding\n * @param {Number} bounds.paddingTopLeft.x Horizontal value of the top-left padding\n * @param {Number} bounds.paddingTopLeft.y Vertical value of the top-left padding\n * @param {Object} bounds.paddingBottomRight Object that will be passed as a bottom-right point of the fitBounds\n * padding\n * @param {Number} bounds.paddingBottomRight.x Horizontal value of the bottom-right padding\n * @param {Number} bounds.paddingBottomRight.y Vertical value of the bottom-right padding\n * @param {'left' | 'right'} horizontal Parameter describing which controls are measured\n * @param {'top' | 'bottom'} vertical Parameter describing which controls are measured\n * @param {'width' | 'height' | 'both'} axis Which axis is taken into account when measuing controls\n * @param {DOMRect} rect Object containing dimensions of measured controls\n */\n function modifyBoundsForRect(bounds, horizontal, vertical, axis, rect) {\n /*__*/if (vertical === 'top' && horizontal === 'left' && axis === 'width') {\n bounds.paddingTopLeft.x += rect[axis];\n } else if (vertical === 'top' && horizontal === 'left' && axis === 'height') {\n bounds.paddingTopLeft.y += rect[axis];\n } else if (vertical === 'top' && horizontal === 'left' && axis === 'both') {\n bounds.paddingTopLeft.x += rect.width;\n bounds.paddingTopLeft.y += rect.height;\n } else if (vertical === 'top' && horizontal === 'right' && axis === 'width') {\n bounds.paddingBottomRight.x += rect[axis];\n } else if (vertical === 'top' && horizontal === 'right' && axis === 'height') {\n bounds.paddingTopLeft.y += rect[axis];\n } else if (vertical === 'top' && horizontal === 'right' && axis === 'both') {\n bounds.paddingBottomRight.x += rect.width;\n bounds.paddingTopLeft.y += rect.height;\n } else if (vertical === 'bottom' && horizontal === 'left' && axis === 'width') {\n bounds.paddingTopLeft.x += rect[axis];\n } else if (vertical === 'bottom' && horizontal === 'left' && axis === 'height') {\n bounds.paddingBottomRight.y += rect[axis];\n } else if (vertical === 'bottom' && horizontal === 'left' && axis === 'both') {\n bounds.paddingTopLeft.x += rect.width;\n bounds.paddingBottomRight.y += rect.height;\n } else if (vertical === 'bottom' && horizontal === 'right' && axis === 'width') {\n bounds.paddingBottomRight.x += rect[axis];\n } else if (vertical === 'bottom' && horizontal === 'right' && axis === 'height') {\n bounds.paddingBottomRight.y += rect[axis];\n } else if (vertical === 'bottom' && horizontal === 'right' && axis === 'both') {\n bounds.paddingBottomRight.x += rect.width;\n bounds.paddingBottomRight.y += rect.height;\n }\n }\n\n // eslint-disable-next-line\n /**\n * Helper method used to modify bounding options. This function measures every control container and sums their\n * dimensions.\n *\n * @ignore\n * @param {Object} fitBoundsOptions Object containing options for padding points. This object will be modified.\n * @param {Object} fitBoundsOptions.paddingTopLeft Object that will be passed as a top-left point of the fitBounds\n * padding\n * @param {Number} fitBoundsOptions.paddingTopLeft.x Horizontal value of the top-left padding\n * @param {Number} fitBoundsOptions.paddingTopLeft.y Vertical value of the top-left padding\n * @param {Object} fitBoundsOptions.paddingBottomRight Object that will be passed as a bottom-right point of the\n * fitBounds padding\n * @param {Number} fitBoundsOptions.paddingBottomRight.x Horizontal value of the bottom-right padding\n * @param {Number} fitBoundsOptions.paddingBottomRight.y Vertical value of the bottom-right padding\n * @param {Object} controls Object describing how control container is measured\n * @param {'width' | 'height' | 'both'} [controls['top-left']] Object describing how control container is measured\n * @param {'width' | 'height' | 'both'} [controls['top-right']] Object describing how control container is measured\n * @param {'width' | 'height' | 'both'} [controls['bottom-left']] Object describing how control container is\n * measured\n * @param {'width' | 'height' | 'both'} [controls['bottom-right']] Object describing how control container is\n * measured\n * @param {'top-left' | 'top-right' | 'bottom-right' | 'bottom-left' } position Position of the measured container\n */\n function modifyBoundsOptions(fitBoundsOptions, controls, position) {\n var topOrBottom, leftOrRight, direction, selector, rect;\n var split = position.split('-');\n if (!(split && split.length === 2)) {\n return;\n }\n topOrBottom = split[0];\n leftOrRight = split[1];\n direction = controls[position]; // width or height or both\n\n selector = '.leaflet-' + topOrBottom + '.leaflet-' + leftOrRight;\n rect = getRect(selector);\n if (!rect) {\n return;\n }\n\n modifyBoundsForRect(fitBoundsOptions, leftOrRight, topOrBottom, direction, rect);\n }\n\n /**\n * @class MapUtils\n * @extends L\n * @module Map\n * @namespace L\n */\n L.MapUtils = {\n /**\n * This method looks over all layers in the map instance and returns an array\n * of matching layers. If layers are not found, returns empty array.\n * @method findLayersByName\n * @param {String} layerName Name of the layers you are looking for\n * @param {Map} map Map instance\n * @returns {Array} Returns an array of matching layers, if no element was found,\n * returns empty array.\n */\n findLayersByName: function findLayersByName(layerName, map) {\n var matchingLayers = [];\n map.eachLayer(function (layer) {\n if (layer.name === layerName) {\n matchingLayers.push(layer);\n }\n });\n return matchingLayers;\n },\n\n /**\n * @method getPaddingOptions\n * @example\n * ```javascript\n * var popup = marker.openPopup().getPopup();\n * var popupElement = popup.getElement();\n * var bounds = L.MapUtils.getPaddingOptions({\n * popup: popupElement,\n * controls: {\n * 'top-left': 'width', // only width will be taken into account\n * 'bottom-right': 'both'\n * }\n * });\n * ```\n * @param {Object} components Object describing how paddings should be calculated\n * @param {HTMLElement} [components.popup] Popup element which dimensions will be calculated\n * @param {Object} [components.controls] Object which values describes which control panel is measured and how.\n * possible keys are `'top-left'`, `'top-right'`, `'bottom-left'`, `'bottom-right'` and values:\n * `'width'`, `'height'`, `'both'`.\n * @returns {Object} Returns an object reflecting measurements on control containers\n */\n getPaddingOptions: function getPaddingOptions(components) {\n var popupRect;\n var controls = components.controls;\n var popup = components.popup;\n var fitBoundsOptions = {\n paddingTopLeft: { x: 0, y: 0 },\n paddingBottomRight: { x: 0, y: 0 }\n };\n if (controls) {\n try {\n Object.getOwnPropertyNames(controls).forEach(modifyBoundsOptions.bind(null, fitBoundsOptions, controls));\n } catch (err) {\n //\n }\n }\n if (popup) {\n try {\n popupRect = getRect(popup);\n fitBoundsOptions.paddingTopLeft.x += popupRect.width / 2;\n fitBoundsOptions.paddingBottomRight.x += popupRect.width / 2;\n fitBoundsOptions.paddingTopLeft.y += popupRect.height;\n } catch (err) {\n //\n }\n }\n return fitBoundsOptions;\n },\n\n /**\n * @method setViewWithOffset\n * @param {Map} map Map object that is associated with setView method\n * @param {LatLng} targetLatLng Point that is the original center of the transformation\n * @param {number} targetZoom Zoom level that is going to be applied to setView\n * @param {Object} options Pan and zoom options\n * @param {Point} offsetPoint Point that represents the shift of the original center point\n */\n setViewWithOffset: function setViewWithOffset(map, targetLatLng, targetZoom, options, offsetPoint) {\n var targetPoint = map.project(targetLatLng, targetZoom).subtract(offsetPoint);\n var offsetLatLng = map.unproject(targetPoint, targetZoom);\n map.setView(offsetLatLng, targetZoom, options);\n }\n\n };\n\n return L.MapUtils;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n /*this mapping is used to map category_codes => filename\n https://developer.tomtom.com/search-api/search-api-documentation/supported-category-codes\n keep in mind that files in the filesystem are named like that: RESTAURANT.colors-black-white.svg\n colors-black-white is used during compilation to generate white and black icons\n icons are converted to css and included in map.css\n */\n\n var availableIcons = {\n fallback: 'flag',\n ACCESS_GATEWAY: 'ic_map_poi_110',\n ADMINISTRATIVE_DIVISION: 'ic_map_poi_133',\n ADVENTURE_SPORTS_VENUE: 'ic_map_poi_122',\n AGRICULTURE: 'ic_map_poi_107',\n AIRPORT: 'ic_map_poi_007',\n AMUSEMENT_PARK: 'ic_map_poi_051',\n AUTOMOTIVE_DEALER: 'ic_map_poi_008',\n BANK: 'ic_map_poi_077',\n BEACH: 'ic_map_poi_043',\n BUILDING_POINT: 'ic_map_poi_132',\n BUSINESS_PARK: 'ic_map_poi_102',\n CAFE_PUB: 'ic_map_poi_120',\n CAMPING_GROUND: 'ic_map_poi_058',\n CAR_WASH: 'ic_map_poi_067',\n CASH_DISPENSER: 'ic_map_poi_042',\n CASINO: 'ic_map_poi_009',\n CINEMA: 'ic_map_poi_011',\n CITY_CENTER: 'ic_map_poi_012',\n CLUB_ASSOCIATION: 'ic_map_poi_131',\n COLLEGE_UNIVERSITY: 'ic_map_poi_041',\n COMMERCIAL_BUILDING: 'ic_map_poi_098',\n COMMUNITY_CENTER: 'ic_map_poi_081',\n COMPANY: 'ic_map_poi_013',\n COURTHOUSE: 'ic_map_poi_015',\n CULTURAL_CENTER: 'ic_map_poi_016',\n DENTIST: 'ic_map_poi_048',\n DEPARTMENT_STORE: 'ic_map_poi_104',\n DOCTOR: 'ic_map_poi_047',\n ELECTRIC_VEHICLE_STATION: 'ic_map_poi_073',\n EMBASSY: 'ic_map_poi_040',\n EMERGENCY_MEDICAL_SERVICE: 'ic_map_poi_115',\n ENTERTAINMENT: 'ic_map_poi_035',\n EXCHANGE: 'ic_map_poi_096',\n EXHIBITION_CONVENTION_CENTER: 'ic_map_poi_017',\n FERRY_TERMINAL: 'ic_map_poi_018',\n FIRE_STATION_BRIGADE: 'ic_map_poi_068',\n FRONTIER_CROSSING: 'ic_map_poi_019',\n FUEL_FACILITIES: 'ic_map_poi_004',\n GEOGRAPHIC_FEATURE: 'ic_map_poi_127',\n GOLF_COURSE: 'ic_map_poi_020',\n GOVERNMENT_OFFICE: 'ic_map_poi_000',\n HEALTH_CARE_SERVICE: 'ic_map_poi_116',\n HELIPAD_HELICOPTER_LANDING: 'ic_map_poi_123',\n HOLIDAY_RENTAL: 'ic_map_poi_130',\n HOSPITAL_POLYCLINIC: 'ic_map_poi_021',\n HOTEL_MOTEL: 'ic_map_poi_022',\n ICE_SKATING_RINK: 'ic_map_poi_044',\n IMPORTANT_TOURIST_ATTRACTION: 'ic_map_poi_023',\n INDUSTRIAL_BUILDING: 'ic_map_poi_095',\n LEISURE_CENTER: 'ic_map_poi_061',\n LIBRARY: 'ic_map_poi_052',\n MANUFACTURING_FACILITY: 'ic_map_poi_099',\n MARINA: 'ic_map_poi_062',\n MARKET: 'ic_map_poi_118',\n MEDIA_FACILITY: 'ic_map_poi_101',\n MILITARY_INSTALLATION: 'ic_map_poi_106',\n MOTORING_ORGANIZATION_OFFICE: 'ic_map_poi_076',\n MOUNTAIN_PASS: 'ic_map_poi_024',\n MUSEUM: 'ic_map_poi_025',\n NATIVE_RESERVATION: 'ic_map_poi_125',\n NIGHTLIFE: 'ic_map_poi_050',\n NON_GOVERNMENTAL_ORGANIZATION: 'ic_map_poi_134',\n OPEN_PARKING_AREA: 'ic_map_poi_002',\n OTHER: 'flag',\n PARKING_GARAGE: 'ic_map_poi_003',\n PARK_RECREATION_AREA: 'ic_map_poi_059',\n PETROL_STATION: 'ic_map_poi_004',\n PHARMACY: 'ic_map_poi_054',\n PLACE_OF_WORSHIP: 'ic_map_poi_027',\n POLICE_STATION: 'ic_map_poi_039',\n PORT_WAREHOUSE_FACILITY: 'ic_map_poi_105',\n POST_OFFICE: 'ic_map_poi_028',\n PRIMARY_RESOURCE_UTILITY: 'ic_map_poi_108',\n PRISON_CORRECTIONAL_FACILITY: 'ic_map_poi_094',\n PUBLIC_AMENITY: 'ic_map_poi_097',\n PUBLIC_TRANSPORT_STOP: 'ic_map_poi_069',\n RAILWAY_STATION: 'ic_map_poi_005',\n RENT_A_CAR_FACILITY: 'ic_map_poi_029',\n RENT_A_CAR_PARKING: 'ic_map_poi_030',\n REPAIR_FACILITY: 'ic_map_poi_053',\n RESEARCH_FACILITY: 'ic_map_poi_100',\n RESIDENTIAL_ACCOMMODATION: 'ic_map_poi_075',\n RESTAURANT: 'ic_map_poi_031',\n RESTAURANT_AREA: 'ic_map_poi_031',\n REST_AREA: 'ic_map_poi_006',\n SCENIC_PANORAMIC_VIEW: 'ic_map_poi_055',\n SCHOOL: 'ic_map_poi_070',\n SHOP: 'ic_map_poi_032',\n SHOPPING_CENTER: 'ic_map_poi_033',\n SPORTS_CENTER: 'ic_map_poi_038',\n STADIUM: 'ic_map_poi_034',\n SWIMMING_POOL: 'ic_map_poi_046',\n TENNIS_COURT: 'ic_map_poi_045',\n THEATER: 'ic_map_poi_035',\n TOURIST_INFORMATION_OFFICE: 'ic_map_poi_023',\n TRAFFIC_LIGHT: 'ic_map_poi_129',\n TRAFFIC_SERVICE_CENTER: 'ic_map_poi_126',\n TRAFFIC_SIGN: 'ic_map_poi_128',\n TRAIL_SYSTEM: 'ic_map_poi_124',\n TRANSPORT_AUTHORITY_VEHICLE_REGISTRATION: 'ic_map_poi_113',\n TRUCK_STOP: 'ic_map_poi_071',\n VETERINARIAN: 'ic_map_poi_049',\n WATER_SPORT: 'ic_map_poi_046',\n WEIGH_STATION: 'ic_map_poi_111',\n WELFARE_ORGANIZATION: 'ic_map_poi_117',\n WINERY: 'ic_map_poi_057',\n ZOOS_ARBORETA_BOTANICAL_GARDEN: 'ic_map_poi_037'\n };\n\n /*\n This map contains icons which are single color - means they are not in black and white version\n */\n var singleColorIcons = {\n OPEN_PARKING_AREA: '',\n PARKING_GARAGE: '',\n RENT_A_CAR_PARKING: '',\n TRUCK_STOP: ''\n };\n\n return {\n defaultIcons: availableIcons,\n singleColorIcons: singleColorIcons\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * @ignore\n * This component generates HTML content based on provided options and data. Currently supported data type is search\n * result (either main result or entry point associated with POI result).\n * Content generated is split into following sections which visibility is configurable:\n * * 'name' - prints POI name with associated icon\n * * 'address' - prints address information\n * * 'coordinates' - prints coordinates (lat,lng) information\n * * 'entryPoint' - prints parent POI name and entry point type\n *\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(149), __webpack_require__(154), __webpack_require__(155), __webpack_require__(156), __webpack_require__(157), __webpack_require__(158), __webpack_require__(20)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, modelFactory, entryPointContent, nameContent, addressContent, coordinatesContent, actionsGenerator, Wrapable) {\n 'use strict';\n\n var AREAS = {\n ENTRYPOINT: 'entryPoint',\n NAME: 'name',\n ADDRESS: 'address',\n COORDINATES: 'coordinates'\n };\n var ordering = Object.keys(AREAS).map(function (item) {\n return AREAS[item];\n });\n\n var defaultOptions = {\n name: true,\n address: true,\n coordinates: true,\n entryPoint: false\n };\n\n var classes = {\n content: 'tomtom-point-content',\n details: 'tomtom-point-content__details'\n };\n var ContentGenerator;\n\n function areaContentGenerator(area, data) {\n switch (area) {\n case AREAS.ENTRYPOINT:\n return entryPointContent(data.parent.poi, data.type);\n case AREAS.NAME:\n return data.poi ? nameContent(data.poi) : L.DomUtil.create('span');\n case AREAS.ADDRESS:\n return addressContent(data);\n case AREAS.COORDINATES:\n return coordinatesContent(data.position);\n default:\n return L.DomUtil.create('span');\n }\n }\n\n ContentGenerator = function ContentGenerator(options) {\n this.options = options || defaultOptions;\n };\n\n /**\n * @ignore\n * @param {Object} data Either search result or entry point\n * @param {Object }additionalData Parent POI if 'data' param is entry point. If not, it's ignored.\n * @return {Wrapable}\n */\n ContentGenerator.prototype.generate = function (data, additionalData) {\n var result = L.DomUtil.create('div', classes.content),\n details = L.DomUtil.create('div', classes.details),\n modeledData = modelFactory(data, additionalData),\n actions;\n\n ordering.reduce(function (accumulator, area) {\n if (this.options[area]) {\n accumulator.appendChild(areaContentGenerator(area, modeledData));\n }\n return accumulator;\n }.bind(this), details);\n\n if (details.children.length) {\n result.appendChild(details);\n }\n\n if (this.options.actions) {\n actions = actionsGenerator(modeledData, this.options.actions);\n result.appendChild(actions.getHtmlElement());\n }\n\n return new Wrapable(result, function () {\n if (actions) {\n actions.wrap();\n }\n });\n };\n\n /**\n * @ignore\n * @param {Object} options\n * @param {Boolean} [options.name=true] A flag specifying if name area is printed\n * @param {Boolean} [options.coordinates=true] A flag specifying if coordinates area is printed\n * @param {Boolean} [options.address=true] A flag specifying if address area is printed\n * @param {Boolean} [options.entryPoint=false] A flag specifying if entry point area is printed\n * @param {Object} [options.actions] An object describing what type of actions should be created\n * @param {Object} [options.actions.routing] An object grouping routing actions configuration\n * @param {Boolean} [options.actions.routing.routeTo] A flag specifying if 'Route to' action should be generated.\n * Coordinates for this action are taken from 'position' field associated with provided data object.\n * @param {Boolean} [options.actions.routing.routeFrom] A flag specifying if 'Route from' action should be\n * generated. Coordinates for this action are taken from 'position' field associated with provided data object.\n * @param {Boolean} [options.actions.routing.routeToEntryPoint] A flag specifying if 'Route to' action for entry\n * points should be generated. Coordinates for this action are taken from 'position' field associated with given\n * entry point. If no entry point is available this action will not be generated.\n * @param {Boolean} [options.actions.routing.routeFromEntryPoint] A flag specifying if 'Route from' action entry\n * points should be generated. Coordinates for this action are taken from 'position' field associated with given\n * entry point. If no entry point is available this action will not be generated.\n * @param {Function} [options.actions.routing.onActionClick] 'click' event handler for all route actions. Most\n * probably used for generating a route.\n * @param {Object} [options.actions.search] An object grouping search actions configuration\n * @param {Boolean} [options.actions.search.searchNearby] A flag specifying if 'NearBy' search action should be\n * generated.\n * @param {Function} [options.actions.search.onActionClick] 'click' event handler for all search actions.\n * @param {Object} [options.actions.remove] An object specifying if 'Remove' action is generated.\n * @param {Function} [options.actions.remove.onActionClick] 'click' event handler for all 'Remove' action.\n *\n * @return {Wrapable}\n */\n\n return function (options) {\n var result = new ContentGenerator(options);\n return result.generate.bind(result);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(80), __webpack_require__(81), __webpack_require__(150), __webpack_require__(82), __webpack_require__(19), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, AddressModel, PoiModel, AddressRangesModel, EntryPointModel, ObjectModel, utils) {\n 'use strict';\n\n var SIMPLE_PROPERTIES = ['dist', 'score', 'type', 'entityType'];\n var SearchModel;\n\n /**\n * For future readers: these functions were added to satisfy tics cyclomatic complexity score\n */\n\n function addSimpleProperties(json) {\n SIMPLE_PROPERTIES.forEach(function (property) {\n if (typeof json[property] !== 'undefined') {\n this[property] = json[property];\n }\n }, this);\n }\n\n function addAddress(json) {\n if (typeof json.address !== 'undefined') {\n this.address = new AddressModel(json.address);\n }\n }\n\n function addPosition(json) {\n if (typeof json.position !== 'undefined') {\n this.position = utils.convertToLatLng(json.position);\n }\n }\n\n function addPoi(json) {\n if (typeof json.poi !== 'undefined') {\n this.poi = new PoiModel(json.poi);\n }\n }\n\n function addAdressRanges(json) {\n if (typeof json.addressRanges !== 'undefined') {\n this.addressRanges = new AddressRangesModel(json.addressRanges);\n }\n }\n\n function setBoundingBox(json) {\n if (typeof json.boundingBox !== 'undefined') {\n this.boundingBox = L.latLngBounds(utils.convertToLatLng(json.boundingBox.btmRightPoint), utils.convertToLatLng(json.boundingBox.topLeftPoint));\n }\n }\n\n function setViewport(json) {\n if (typeof json.viewport !== 'undefined') {\n this.viewport = L.latLngBounds(utils.convertToLatLng(json.viewport.btmRightPoint), utils.convertToLatLng(json.viewport.topLeftPoint));\n }\n }\n\n function addEntryPoints(json) {\n if (typeof json.entryPoints !== 'undefined') {\n this.entryPoints = json.entryPoints.map(function (entry) {\n return new EntryPointModel(entry);\n });\n }\n }\n\n SearchModel = function SearchModel(json) {\n addSimpleProperties.call(this, json);\n addAddress.call(this, json);\n addPosition.call(this, json);\n addPoi.call(this, json);\n addAdressRanges.call(this, json);\n setBoundingBox.call(this, json);\n setViewport.call(this, json);\n addEntryPoints.call(this, json);\n return this;\n };\n SearchModel.prototype = Object.create(ObjectModel.prototype);\n SearchModel.prototype.constructor = SearchModel;\n\n SearchModel.prototype.simplify = function () {\n var result = {},\n key;\n var simplifier = function simplifier(item) {\n return item.simplify();\n };\n\n for (key in this) {\n if (this.hasOwnProperty(key)) {\n if (this[key] instanceof Array && this[key].length > 0 && this[key][0].simplify) {\n result[key] = this[key].map(simplifier);\n } else if (_typeof(this[key]) === 'object' && this[key].simplify) {\n result[key] = this[key].simplify();\n } else if (this[key] instanceof L.LatLng) {\n result[key] = { lat: this[key].lat, lon: this[key].lng };\n } else if (this[key] instanceof L.LatLngBounds) {\n result[key] = {\n topLeftPoint: { lat: this[key].getSouthWest().lat, lon: this[key].getSouthWest().lng },\n btmRightPoint: { lat: this[key].getNorthEast().lat, lon: this[key].getNorthEast().lng }\n };\n } else {\n result[key] = this[key];\n }\n }\n }\n return result;\n };\n\n return SearchModel;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(19)], __WEBPACK_AMD_DEFINE_RESULT__ = function (ObjectModel) {\n 'use strict';\n\n var SIMPLE_PROPERTIES = ['country', 'countryCode', 'countryCodeISO3', 'countrySecondarySubdivision', 'countryTertiarySubdivision', 'countrySubdivision', 'countrySubdivisionName', 'freeformAddress', 'municipality', 'municipalitySubdivision', 'postalCode', 'extendedPostalCode', 'streetName', 'streetNumber'];\n\n var AddressModel = function AddressModel(json) {\n SIMPLE_PROPERTIES.forEach(function (property) {\n if (typeof json[property] !== 'undefined') {\n this[property] = json[property];\n }\n }, this);\n return this;\n };\n AddressModel.prototype = Object.create(ObjectModel.prototype);\n AddressModel.prototype.constructor = AddressModel;\n\n return AddressModel;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(19)], __WEBPACK_AMD_DEFINE_RESULT__ = function (ObjectModel) {\n 'use strict';\n\n var SIMPLE_PROPERTIES = ['categories', 'classifications', 'name', 'phone', 'url'];\n\n var PoiModel = function PoiModel(json) {\n SIMPLE_PROPERTIES.forEach(function (property) {\n if (typeof json[property] !== 'undefined') {\n this[property] = json[property];\n }\n }, this);\n\n return this;\n };\n PoiModel.prototype = Object.create(ObjectModel.prototype);\n PoiModel.prototype.constructor = PoiModel;\n\n return PoiModel;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(19), __webpack_require__(25), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (ObjectModel, reverseGeocode, utils) {\n 'use strict';\n\n var EntryPointModel = function EntryPointModel(json, parent) {\n this.position = utils.convertToLatLng(json.position);\n this.type = json.type;\n this.parent = parent;\n\n return this;\n };\n\n EntryPointModel.prototype = Object.create(ObjectModel.prototype);\n EntryPointModel.prototype.constructor = EntryPointModel;\n\n EntryPointModel.prototype.simplify = function () {\n return {\n position: { lat: this.position.lat, lon: this.position.lng },\n type: this.type\n };\n };\n\n EntryPointModel.prototype.getAddress = function () {\n return reverseGeocode().position({ lat: this.position.lat, lon: this.position.lng }).go();\n };\n return EntryPointModel;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(151), __webpack_require__(84), __webpack_require__(8), __webpack_require__(2), __webpack_require__(4), __webpack_require__(0), __webpack_require__(152)], __WEBPACK_AMD_DEFINE_RESULT__ = function (restReverseGeocode, model, chain, validators, converters, utils, batchModel) {\n 'use strict';\n\n var TYPES = {\n reverseGeocode: 'reverseGeocode',\n crossStreetLookup: 'reverseGeocode/crossStreet'\n };\n\n var reverseGeocode = restReverseGeocode();\n\n function ReverseGeocodeBase(options) {\n this.options = options || {};\n this.options.__serviceType = 'reverseGeocoder';\n this.fields = {};\n }\n\n ReverseGeocodeBase.prototype.TYPE = TYPES;\n ReverseGeocodeBase.prototype.construct = function () {\n var batchFields;\n this.fields = utils.addFields.call(this, this.fields);\n batchFields = {\n batchItems: {\n validator: validators.arrayOf(this.fields),\n converter: converters.arrayOf(this.fields)\n },\n type: {\n validator: validators.string\n }\n };\n\n if (Array.isArray(this.options)) {\n return chain.call(this, batchFields, this.handleBatchChain, {\n batchItems: this.options,\n type: this.fields.type.defaultValue\n });\n } else {\n return chain.call(this, this.fields, this.handleChain, this.options);\n }\n };\n\n ReverseGeocodeBase.prototype.handleBatchChain = function (data, callback) {\n reverseGeocode.batch(this.fields, data, function (response) {\n callback.call(this, batchModel(response));\n });\n };\n\n ReverseGeocodeBase.prototype.handleChain = function (data, callback) {\n reverseGeocode.reverseGeocode(this.fields, data, function (response) {\n callback.call(this, model(response)[0]);\n });\n };\n\n function reverseGeocodeConstructor(options) {\n return new ReverseGeocodeBase(options).construct();\n }\n\n reverseGeocodeConstructor.prototype.constructor = ReverseGeocodeBase;\n\n return reverseGeocodeConstructor;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(13)], __WEBPACK_AMD_DEFINE_RESULT__ = function (selector) {\n 'use strict';\n\n return function (json) {\n return selector(json, 'addresses');\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(4), __webpack_require__(43), __webpack_require__(7)], __WEBPACK_AMD_DEFINE_RESULT__ = function (validators, converters, types, parameterApplications) {\n var geocodeBaseFields = {\n key: {\n validator: validators.string\n },\n position: {\n converter: converters.point,\n validator: validators.point,\n required: true,\n application: parameterApplications.PATH\n },\n spatialKeys: {\n validator: validators.bool\n },\n heading: {\n validator: validators.number\n },\n radius: { validator: validators.naturalInteger },\n protocol: { validator: validators.oneOfValue(['http', 'https'], 'protocol') }\n };\n\n var additionalGeocodeFields = {\n type: {\n defaultValue: types.reverseGeocode,\n visible: false,\n application: parameterApplications.PATH\n },\n\n allowFreeformNewline: {\n validator: validators.bool\n },\n\n /**\n * @class ReverseGeocode\n * @module Services\n */\n\n /**\n * Sets or gets the value of the option `returnSpeedLimit`.\n *\n * Allows, if possible, to receive the speed limit information at the given location.\n *\n * @method returnSpeedLimit\n * @chainable\n * @param {Boolean} [newValue] Enable or disable the feature\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Boolean} The same service instance or the current option value if no argument was given\n */\n returnSpeedLimit: {\n validator: validators.bool\n },\n\n /**\n * Sets or gets the value of the option `number`.\n *\n * If a street number is sent in along with the request, the response may\n * include the side of the street (Left/Right) and also an offset position for that street number.\n *\n * @method number\n * @chainable\n * @param {String} [newValue] Street number as a string\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n number: {\n validator: validators.string\n },\n\n /**\n * Sets or gets the value of the option `returnRoadUse`.\n *\n * Requires to include a road use array for reversegeocodes at street level.\n *\n * @method returnRoadUse\n * @chainable\n * @param {Boolean} [newValue] Enable or disable the feature\n * @throws {TypeError} if the given argument cannot be converted into a valid value\n * @return {Boolean} The same service instance or the current option value if no argument was given\n */\n returnRoadUse: {\n validator: validators.bool\n },\n\n /**\n * Sets or gets the value of the option `returnMatchType`.\n *\n * If set, response will contain additional field with one of the values:\n * * AddressPoint (exact house number location)\n * * HouseNumberRange (interpolated house number location)\n * * Street (street location without house number)\n *\n * @method returnMatchType\n * @chainable\n * @param {Boolean} [newValue] Enable or disable the feature\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Boolean} The same service instance or the current option value if no argument was given\n */\n returnMatchType: {\n validator: validators.bool\n },\n\n /**\n * Sets or gets the value of the option `roadUse`.\n *\n * Use this option if you want to restrict the result to one or a group of the following road uses:\n * - `\"LimitedAccess\"`\n * - `\"Arterial\"`\n * - `\"Terminal\"`\n * - `\"Ramp\"`\n * - `\"Rotary\"`\n * - `\"LocalStreet\"`\n *\n * @method roadUse\n * @chainable\n * @param {String[]|String} [newValue] An array of strings or just one string with comma separated values\n * @throws {TypeError} if the given argument cannot be converted into a valid value\n * @return {String[]|String} The same service instance or the current option value if no argument was given\n */\n roadUse: {\n converter: converters.roadUse,\n validator: validators.roadUse\n },\n\n language: {\n validator: validators.languageCode, converter: converters.language\n },\n\n view: { validator: validators.geopolView('reverseGeocoder', 'view') }\n };\n\n var crossStreetLookupFields = {\n type: {\n defaultValue: types.crossStreetLookup,\n visible: false,\n application: parameterApplications.PATH\n },\n\n limit: {\n validator: validators.limit\n },\n\n language: {\n validator: validators.languageCode\n }\n };\n\n return function (type) {\n if (type === types.reverseGeocode) {\n return Object.assign({}, geocodeBaseFields, additionalGeocodeFields);\n } else if (type === types.crossStreetLookup) {\n return Object.assign({}, geocodeBaseFields, crossStreetLookupFields);\n }\n throw new Error('Unsupported geocode type: ' + type);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(87), __webpack_require__(77)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, simpleSVGIcon, defaultIconsMappingProvider) {\n 'use strict';\n\n var ICONS = defaultIconsMappingProvider.defaultIcons;\n\n function isSingleColorIcon(poiClassification) {\n return poiClassification && poiClassification[0] && defaultIconsMappingProvider.singleColorIcons[poiClassification[0].code] !== undefined;\n }\n\n return function (poiData) {\n var div,\n classificationsExist = poiData.classifications && poiData.classifications.length > 0,\n iconName = classificationsExist ? ICONS[poiData.classifications[0].code] : 'flag',\n isSingleColor = isSingleColorIcon(poiData.classifications),\n icon = simpleSVGIcon('icon-' + iconName + (isSingleColor ? '' : '-black'));\n\n div = L.DomUtil.create('div', 'tomtom-point-content__icon');\n div.appendChild(icon);\n return div;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * @ignore\n * Preconfigured svg icon\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(21)], __WEBPACK_AMD_DEFINE_RESULT__ = function (SVGIcon) {\n 'use strict';\n\n return function buildSimpleSVGIcon(iconName) {\n var options = {\n background: undefined,\n icon: {\n iconSize: [30, 30],\n iconAnchor: [0, 0],\n icon: iconName,\n noPlainSVG: false\n }\n };\n return new SVGIcon(options).createIcon();\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L) {\n 'use strict';\n\n function getValueOrEmptyString(value) {\n return value || '';\n }\n\n return function (address) {\n var addressElement = L.DomUtil.create('div'),\n streetElement = L.DomUtil.create('div', null, addressElement),\n municipalityElement = L.DomUtil.create('div', null, addressElement);\n\n streetElement.innerHTML = getValueOrEmptyString(address.streetName) + ' ' + getValueOrEmptyString(address.streetNumber);\n municipalityElement.innerHTML = getValueOrEmptyString(address.postalCode) + ' ' + getValueOrEmptyString(address.municipality);\n\n return addressElement;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * @ignore\n * A clickable button with associated text, icon and click event handler.\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(87)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, simpleSVGIcon) {\n 'use strict';\n\n var classes = {\n action: 'tomtom-point-content__action',\n icon: 'tomtom-point-content__icon',\n text: 'tomtom-point-content__text'\n };\n\n return function (icon, text, clickHandler) {\n var buttonContainer = L.DomUtil.create('div', classes.action),\n iconContainer = L.DomUtil.create('div', classes.icon, buttonContainer),\n textContainer = L.DomUtil.create('span', classes.text, buttonContainer);\n\n if (icon) {\n iconContainer.appendChild(simpleSVGIcon(icon));\n }\n\n textContainer.innerHTML = text;\n\n if (clickHandler) {\n buttonContainer.addEventListener('click', clickHandler);\n }\n\n return buttonContainer;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n\n/**\n * Sets or returns the value of the `boundingBox` option.\n *\n * The bounding box is an area within the search results needs to limit to. If it is omitted then the\n * whole world will be taken into consideration.\n *\n * In case the area specified exceeds the world boundaries the following actions will be taken\n * depending of which side was exceeded:\n * - Latitudes: the exceeded values will be replaced with their maximun.\n * - Longitudes: The service will split the area into two (or more) valid bounding boxes and will\n * execute a search request for each one and them merge the responses into a single result.\n *\n * This method is able to convert a number of popular formats into the bounding box.\n *\n * The supported formats are listed below:\n * - `{minLon: 0, minLat: 0, maxLon: 1, maxLat: 1}` Plain object with the keys minLon, minLat, maxLon, maxLat.\n * - `L.LatLngBounds` Leaflet's L.LatLngBounds object.\n * - `[0, 0, 1, 1]` An array of numbers describing the bounding box following the order: minLon, minLat,\n * maxLon, maxLat.\n * - `ol.Extent` Open Layers extent object.\n * - `[ol.Coordinate, ol.Coordinate]` An array of two open layers coordinate objects with the order:\n * southWest, northEast.\n * - `[[0, 0], [1, 1]]` A two-dimensional array with two indexes [southWest, northEast], each one with\n * latitude and longitude values.\n * - `\"0,0,1,1\"` Comma separated string with numbers in the order: minLon, minLat, maxLon, maxLat.\n * - `[{lon: 0, lat: 0},{lon: 1, lat: 1}]` A one-dimensional array with two objects in the order: southWest,\n * northEast and each object with a `lat` and `lon` keys.\n * - `[{lng: 0, lat: 0},{lng: 1, lat: 1}]` A one-dimensional array with two objects in the order: southWest,\n * northEast and each object with a `lat` and `lon` keys.\n * - `[L.LatLng, L.LatLng]` A one-dimensional array with two L.LatLng instances in the order: southWest\n * and northEast.\n * - `google.maps.LatLngBounds` Google Maps bounds object.\n * - `google.maps.LatLngBoundsLiteral` Google Maps bounds object.\n * - `[LatLng, LatLng]` array of two google.maps.LatLng.\n * - `[LatLngLiteral, LatLngLiteral]` array of two google.maps.LatLngLiteral.\n *\n * @method boundingBox\n * @deprecated\n * @chainable\n * @param {Object|Number[]|Object[]|String} [newValue] Bounding box area in one of the supported formats\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Object|Number[]|Object[]|String} The same service instance or the current option value if no\n * argument was given\n */\n\n/**\n * Allows to make search request using the TomTom's\n * [Search API - Nearby Search API](https://developer.tomtom.com/search-api/search-api-documentation-search/nearby-search).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"NearbySearch/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"NearbySearch/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * @example\n * ```js\n * function callbackFn(result) {\n * console.log(result);\n * };\n *\n * // Using a callback function\n * tomtom.nearbySearch()\n * .key() // this is optional if you defined a global key earlier\n * .center([0,0])\n * .radius(1000)\n * .callback(callbackFn)\n * .go();\n *\n * // Or using a Promise\n * tomtom.nearbySearch()\n * .key() // this is optional if you defined a global key earlier\n * .center([0,0])\n * .radius(1000)\n * .go()\n * .then(callbackFn);\n * ```\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * @class NearbySearch\n * @extends Search\n * @uses ExtendedPostalCodesForMixin\n * @uses CenterMixin\n * @uses RadiusMixin\n * @uses CountrySetMixin\n * @uses OffsetMixin\n * @uses ViewMixin\n * @uses BestResultMixin\n * @uses TypeaheadMixin\n * @constructor\n * @module Services\n *\n * @param {Object} [options] Options to be passed to the nearby search call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.unwrapBbox=false] Changes the bounding box coordinates allowing longitudes that\n * exceeds 180 degrees when is necessary. {{#crossLink \"Search/unwrapBbox:method\"}}More{{/crossLink}}\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {String} [options.view=\"Unified\"] Geopolitical view\n * @param {String} [options.language=null] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n *\n * @param {Boolean} [options.bestResult=false] Return only one result, the best match result.\n * @param {Number[]|String|L.LatLng|Object} options.center Location where results should be biased.\n * This parameter is required to be defined either in the options passed to the constructor or using the\n * **center()** method.\n * @param {Number} [options.radius=10000] The search radius in meters using the coordinates given to the **center**\n * option as origin.\n * It expects a value between 1 and 50000, if none is set defaults to 10000.\n * @param {Number} [options.offset=0] Starting offset of the returned results within the full result set\n * @param {String} [options.countrySet] List of country codes for limit the search request to those specific\n * political limits\n * @param {Object|Number[]|Object[]|String} [options.boundingBox] DEPRECATED! The bounding box is an area within the\n * search results needs to limit to. If it is omitted then the whole world will be taken into consideration.\n * @param {String} [options.extendedPostalCodesFor] Represent the indexes for which extended postal codes should\n * be included in the results\n * @param {Boolean} [options.typeahead=false] Enables of disables the option.\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(17), __webpack_require__(2)], __WEBPACK_AMD_DEFINE_RESULT__ = function (search, validators) {\n 'use strict';\n\n var SearchPrototype = search.prototype.constructor;\n\n function NearbySearch(options) {\n SearchPrototype.call(this, options);\n\n this.fields.type = {\n defaultValue: this.TYPE.nearby,\n visible: false\n };\n this.fields.query = {\n required: false,\n visible: false,\n defaultValue: ''\n };\n this.fields.center = {\n required: true\n };\n this.fields.radius = {\n required: true,\n validator: validators.integerInInterval(0, 50000),\n defaultValue: 10000\n };\n this.fields.typeahead = {\n visible: false\n };\n }\n\n NearbySearch.prototype = new SearchPrototype();\n NearbySearch.prototype.constructor = NearbySearch;\n\n return function (options) {\n return new NearbySearch(options).construct();\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(13)], __WEBPACK_AMD_DEFINE_RESULT__ = function (selector) {\n 'use strict';\n\n var properties = ['address', 'dist', 'entryPoints', 'position', 'score', 'poi', 'type', 'addressRanges', 'boundingBox', 'entityType', 'viewport', 'dataSources'].join(', ');\n return function (json) {\n return selector(json, 'results', properties);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(6), __webpack_require__(10), __webpack_require__(9)], __WEBPACK_AMD_DEFINE_RESULT__ = function (endpoints, requestFactory, ApiKeyNames) {\n 'use strict';\n\n var searchKeyName = ApiKeyNames.search;\n\n return function () {\n return {\n search: requestFactory.single(endpoints.search, searchKeyName),\n batch: requestFactory.batch(100, {\n single: endpoints.batchSearchQuery,\n batchSync: endpoints.batchSyncSearch,\n batch: endpoints.batchSearch\n }, searchKeyName)\n };\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\n!function(e,t){ true?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e.Leaflet=e.Leaflet||{},e.Leaflet.markercluster=e.Leaflet.markercluster||{}))}(this,function(e){\"use strict\";var t=L.MarkerClusterGroup=L.FeatureGroup.extend({options:{maxClusterRadius:80,iconCreateFunction:null,clusterPane:L.Marker.prototype.options.pane,spiderfyOnMaxZoom:!0,showCoverageOnHover:!0,zoomToBoundsOnClick:!0,singleMarkerMode:!1,disableClusteringAtZoom:null,removeOutsideVisibleBounds:!0,animate:!0,animateAddingMarkers:!1,spiderfyDistanceMultiplier:1,spiderLegPolylineOptions:{weight:1.5,color:\"#222\",opacity:.5},chunkedLoading:!1,chunkInterval:200,chunkDelay:50,chunkProgress:null,polygonOptions:{}},initialize:function(e){L.Util.setOptions(this,e),this.options.iconCreateFunction||(this.options.iconCreateFunction=this._defaultIconCreateFunction),this._featureGroup=L.featureGroup(),this._featureGroup.addEventParent(this),this._nonPointGroup=L.featureGroup(),this._nonPointGroup.addEventParent(this),this._inZoomAnimation=0,this._needsClustering=[],this._needsRemoving=[],this._currentShownBounds=null,this._queue=[],this._childMarkerEventHandlers={dragstart:this._childMarkerDragStart,move:this._childMarkerMoved,dragend:this._childMarkerDragEnd};var t=L.DomUtil.TRANSITION&&this.options.animate;L.extend(this,t?this._withAnimation:this._noAnimation),this._markerCluster=t?L.MarkerCluster:L.MarkerClusterNonAnimated},addLayer:function(e){if(e instanceof L.LayerGroup)return this.addLayers([e]);if(!e.getLatLng)return this._nonPointGroup.addLayer(e),this.fire(\"layeradd\",{layer:e}),this;if(!this._map)return this._needsClustering.push(e),this.fire(\"layeradd\",{layer:e}),this;if(this.hasLayer(e))return this;this._unspiderfy&&this._unspiderfy(),this._addLayer(e,this._maxZoom),this.fire(\"layeradd\",{layer:e}),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons();var t=e,i=this._zoom;if(e.__parent)for(;t.__parent._zoom>=i;)t=t.__parent;return this._currentShownBounds.contains(t.getLatLng())&&(this.options.animateAddingMarkers?this._animationAddLayer(e,t):this._animationAddLayerNonAnimated(e,t)),this},removeLayer:function(e){return e instanceof L.LayerGroup?this.removeLayers([e]):e.getLatLng?this._map?e.__parent?(this._unspiderfy&&(this._unspiderfy(),this._unspiderfyLayer(e)),this._removeLayer(e,!0),this.fire(\"layerremove\",{layer:e}),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),e.off(this._childMarkerEventHandlers,this),this._featureGroup.hasLayer(e)&&(this._featureGroup.removeLayer(e),e.clusterShow&&e.clusterShow()),this):this:(!this._arraySplice(this._needsClustering,e)&&this.hasLayer(e)&&this._needsRemoving.push({layer:e,latlng:e._latlng}),this.fire(\"layerremove\",{layer:e}),this):(this._nonPointGroup.removeLayer(e),this.fire(\"layerremove\",{layer:e}),this)},addLayers:function(e,t){if(!L.Util.isArray(e))return this.addLayer(e);var i,n=this._featureGroup,r=this._nonPointGroup,s=this.options.chunkedLoading,o=this.options.chunkInterval,a=this.options.chunkProgress,h=e.length,l=0,u=!0;if(this._map){var _=(new Date).getTime(),d=L.bind(function(){for(var c=(new Date).getTime();h>l;l++){if(s&&0===l%200){var p=(new Date).getTime()-c;if(p>o)break}if(i=e[l],i instanceof L.LayerGroup)u&&(e=e.slice(),u=!1),this._extractNonGroupLayers(i,e),h=e.length;else if(i.getLatLng){if(!this.hasLayer(i)&&(this._addLayer(i,this._maxZoom),t||this.fire(\"layeradd\",{layer:i}),i.__parent&&2===i.__parent.getChildCount())){var f=i.__parent.getAllChildMarkers(),m=f[0]===i?f[1]:f[0];n.removeLayer(m)}}else r.addLayer(i),t||this.fire(\"layeradd\",{layer:i})}a&&a(l,h,(new Date).getTime()-_),l===h?(this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds)):setTimeout(d,this.options.chunkDelay)},this);d()}else for(var c=this._needsClustering;h>l;l++)i=e[l],i instanceof L.LayerGroup?(u&&(e=e.slice(),u=!1),this._extractNonGroupLayers(i,e),h=e.length):i.getLatLng?this.hasLayer(i)||c.push(i):r.addLayer(i);return this},removeLayers:function(e){var t,i,n=e.length,r=this._featureGroup,s=this._nonPointGroup,o=!0;if(!this._map){for(t=0;n>t;t++)i=e[t],i instanceof L.LayerGroup?(o&&(e=e.slice(),o=!1),this._extractNonGroupLayers(i,e),n=e.length):(this._arraySplice(this._needsClustering,i),s.removeLayer(i),this.hasLayer(i)&&this._needsRemoving.push({layer:i,latlng:i._latlng}),this.fire(\"layerremove\",{layer:i}));return this}if(this._unspiderfy){this._unspiderfy();var a=e.slice(),h=n;for(t=0;h>t;t++)i=a[t],i instanceof L.LayerGroup?(this._extractNonGroupLayers(i,a),h=a.length):this._unspiderfyLayer(i)}for(t=0;n>t;t++)i=e[t],i instanceof L.LayerGroup?(o&&(e=e.slice(),o=!1),this._extractNonGroupLayers(i,e),n=e.length):i.__parent?(this._removeLayer(i,!0,!0),this.fire(\"layerremove\",{layer:i}),r.hasLayer(i)&&(r.removeLayer(i),i.clusterShow&&i.clusterShow())):(s.removeLayer(i),this.fire(\"layerremove\",{layer:i}));return this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds),this},clearLayers:function(){return this._map||(this._needsClustering=[],this._needsRemoving=[],delete this._gridClusters,delete this._gridUnclustered),this._noanimationUnspiderfy&&this._noanimationUnspiderfy(),this._featureGroup.clearLayers(),this._nonPointGroup.clearLayers(),this.eachLayer(function(e){e.off(this._childMarkerEventHandlers,this),delete e.__parent},this),this._map&&this._generateInitialClusters(),this},getBounds:function(){var e=new L.LatLngBounds;this._topClusterLevel&&e.extend(this._topClusterLevel._bounds);for(var t=this._needsClustering.length-1;t>=0;t--)e.extend(this._needsClustering[t].getLatLng());return e.extend(this._nonPointGroup.getBounds()),e},eachLayer:function(e,t){var i,n,r,s=this._needsClustering.slice(),o=this._needsRemoving;for(this._topClusterLevel&&this._topClusterLevel.getAllChildMarkers(s),n=s.length-1;n>=0;n--){for(i=!0,r=o.length-1;r>=0;r--)if(o[r].layer===s[n]){i=!1;break}i&&e.call(t,s[n])}this._nonPointGroup.eachLayer(e,t)},getLayers:function(){var e=[];return this.eachLayer(function(t){e.push(t)}),e},getLayer:function(e){var t=null;return e=parseInt(e,10),this.eachLayer(function(i){L.stamp(i)===e&&(t=i)}),t},hasLayer:function(e){if(!e)return!1;var t,i=this._needsClustering;for(t=i.length-1;t>=0;t--)if(i[t]===e)return!0;for(i=this._needsRemoving,t=i.length-1;t>=0;t--)if(i[t].layer===e)return!1;return!(!e.__parent||e.__parent._group!==this)||this._nonPointGroup.hasLayer(e)},zoomToShowLayer:function(e,t){\"function\"!=typeof t&&(t=function(){});var i=function(){!e._icon&&!e.__parent._icon||this._inZoomAnimation||(this._map.off(\"moveend\",i,this),this.off(\"animationend\",i,this),e._icon?t():e.__parent._icon&&(this.once(\"spiderfied\",t,this),e.__parent.spiderfy()))};e._icon&&this._map.getBounds().contains(e.getLatLng())?t():e.__parent._zoomt;t++)n=this._needsRemoving[t],n.newlatlng=n.layer._latlng,n.layer._latlng=n.latlng;for(t=0,i=this._needsRemoving.length;i>t;t++)n=this._needsRemoving[t],this._removeLayer(n.layer,!0),n.layer._latlng=n.newlatlng;this._needsRemoving=[],this._zoom=Math.round(this._map._zoom),this._currentShownBounds=this._getExpandedVisibleBounds(),this._map.on(\"zoomend\",this._zoomEnd,this),this._map.on(\"moveend\",this._moveEnd,this),this._spiderfierOnAdd&&this._spiderfierOnAdd(),this._bindEvents(),i=this._needsClustering,this._needsClustering=[],this.addLayers(i,!0)},onRemove:function(e){e.off(\"zoomend\",this._zoomEnd,this),e.off(\"moveend\",this._moveEnd,this),this._unbindEvents(),this._map._mapPane.className=this._map._mapPane.className.replace(\" leaflet-cluster-anim\",\"\"),this._spiderfierOnRemove&&this._spiderfierOnRemove(),delete this._maxLat,this._hideCoverage(),this._featureGroup.remove(),this._nonPointGroup.remove(),this._featureGroup.clearLayers(),this._map=null},getVisibleParent:function(e){for(var t=e;t&&!t._icon;)t=t.__parent;return t||null},_arraySplice:function(e,t){for(var i=e.length-1;i>=0;i--)if(e[i]===t)return e.splice(i,1),!0},_removeFromGridUnclustered:function(e,t){for(var i=this._map,n=this._gridUnclustered,r=Math.floor(this._map.getMinZoom());t>=r&&n[t].removeObject(e,i.project(e.getLatLng(),t));t--);},_childMarkerDragStart:function(e){e.target.__dragStart=e.target._latlng},_childMarkerMoved:function(e){if(!this._ignoreMove&&!e.target.__dragStart){var t=e.target._popup&&e.target._popup.isOpen();this._moveChild(e.target,e.oldLatLng,e.latlng),t&&e.target.openPopup()}},_moveChild:function(e,t,i){e._latlng=t,this.removeLayer(e),e._latlng=i,this.addLayer(e)},_childMarkerDragEnd:function(e){var t=e.target.__dragStart;delete e.target.__dragStart,t&&this._moveChild(e.target,t,e.target._latlng)},_removeLayer:function(e,t,i){var n=this._gridClusters,r=this._gridUnclustered,s=this._featureGroup,o=this._map,a=Math.floor(this._map.getMinZoom());t&&this._removeFromGridUnclustered(e,this._maxZoom);var h,l=e.__parent,u=l._markers;for(this._arraySplice(u,e);l&&(l._childCount--,l._boundsNeedUpdate=!0,!(l._zoomt?\"small\":100>t?\"medium\":\"large\",new L.DivIcon({html:\"
\"+t+\"
\",className:\"marker-cluster\"+i,iconSize:new L.Point(40,40)})},_bindEvents:function(){var e=this._map,t=this.options.spiderfyOnMaxZoom,i=this.options.showCoverageOnHover,n=this.options.zoomToBoundsOnClick;(t||n)&&this.on(\"clusterclick\",this._zoomOrSpiderfy,this),i&&(this.on(\"clustermouseover\",this._showCoverage,this),this.on(\"clustermouseout\",this._hideCoverage,this),e.on(\"zoomend\",this._hideCoverage,this))},_zoomOrSpiderfy:function(e){for(var t=e.layer,i=t;1===i._childClusters.length;)i=i._childClusters[0];i._zoom===this._maxZoom&&i._childCount===t._childCount&&this.options.spiderfyOnMaxZoom?t.spiderfy():this.options.zoomToBoundsOnClick&&t.zoomToBounds(),e.originalEvent&&13===e.originalEvent.keyCode&&this._map._container.focus()},_showCoverage:function(e){var t=this._map;this._inZoomAnimation||(this._shownPolygon&&t.removeLayer(this._shownPolygon),e.layer.getChildCount()>2&&e.layer!==this._spiderfied&&(this._shownPolygon=new L.Polygon(e.layer.getConvexHull(),this.options.polygonOptions),t.addLayer(this._shownPolygon)))},_hideCoverage:function(){this._shownPolygon&&(this._map.removeLayer(this._shownPolygon),this._shownPolygon=null)},_unbindEvents:function(){var e=this.options.spiderfyOnMaxZoom,t=this.options.showCoverageOnHover,i=this.options.zoomToBoundsOnClick,n=this._map;(e||i)&&this.off(\"clusterclick\",this._zoomOrSpiderfy,this),t&&(this.off(\"clustermouseover\",this._showCoverage,this),this.off(\"clustermouseout\",this._hideCoverage,this),n.off(\"zoomend\",this._hideCoverage,this))},_zoomEnd:function(){this._map&&(this._mergeSplitClusters(),this._zoom=Math.round(this._map._zoom),this._currentShownBounds=this._getExpandedVisibleBounds())},_moveEnd:function(){if(!this._inZoomAnimation){var e=this._getExpandedVisibleBounds();this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),this._zoom,e),this._topClusterLevel._recursivelyAddChildrenToMap(null,Math.round(this._map._zoom),e),this._currentShownBounds=e}},_generateInitialClusters:function(){var e=Math.ceil(this._map.getMaxZoom()),t=Math.floor(this._map.getMinZoom()),i=this.options.maxClusterRadius,n=i;\"function\"!=typeof i&&(n=function(){return i}),null!==this.options.disableClusteringAtZoom&&(e=this.options.disableClusteringAtZoom-1),this._maxZoom=e,this._gridClusters={},this._gridUnclustered={};for(var r=e;r>=t;r--)this._gridClusters[r]=new L.DistanceGrid(n(r)),this._gridUnclustered[r]=new L.DistanceGrid(n(r));this._topClusterLevel=new this._markerCluster(this,t-1)},_addLayer:function(e,t){var i,n,r=this._gridClusters,s=this._gridUnclustered,o=Math.floor(this._map.getMinZoom());for(this.options.singleMarkerMode&&this._overrideMarkerIcon(e),e.on(this._childMarkerEventHandlers,this);t>=o;t--){i=this._map.project(e.getLatLng(),t);var a=r[t].getNearObject(i);if(a)return a._addChild(e),e.__parent=a,void 0;if(a=s[t].getNearObject(i)){var h=a.__parent;h&&this._removeLayer(a,!1);var l=new this._markerCluster(this,t,a,e);r[t].addObject(l,this._map.project(l._cLatLng,t)),a.__parent=l,e.__parent=l;var u=l;for(n=t-1;n>h._zoom;n--)u=new this._markerCluster(this,n,u),r[n].addObject(u,this._map.project(a.getLatLng(),n));return h._addChild(u),this._removeFromGridUnclustered(a,t),void 0}s[t].addObject(e,i)}this._topClusterLevel._addChild(e),e.__parent=this._topClusterLevel},_refreshClustersIcons:function(){this._featureGroup.eachLayer(function(e){e instanceof L.MarkerCluster&&e._iconNeedsUpdate&&e._updateIcon()})},_enqueue:function(e){this._queue.push(e),this._queueTimeout||(this._queueTimeout=setTimeout(L.bind(this._processQueue,this),300))},_processQueue:function(){for(var e=0;ee?(this._animationStart(),this._animationZoomOut(this._zoom,e)):this._moveEnd()},_getExpandedVisibleBounds:function(){return this.options.removeOutsideVisibleBounds?L.Browser.mobile?this._checkBoundsMaxLat(this._map.getBounds()):this._checkBoundsMaxLat(this._map.getBounds().pad(1)):this._mapBoundsInfinite},_checkBoundsMaxLat:function(e){var t=this._maxLat;return void 0!==t&&(e.getNorth()>=t&&(e._northEast.lat=1/0),e.getSouth()<=-t&&(e._southWest.lat=-1/0)),e},_animationAddLayerNonAnimated:function(e,t){if(t===e)this._featureGroup.addLayer(e);else if(2===t._childCount){t._addToMap();var i=t.getAllChildMarkers();this._featureGroup.removeLayer(i[0]),this._featureGroup.removeLayer(i[1])}else t._updateIcon()},_extractNonGroupLayers:function(e,t){var i,n=e.getLayers(),r=0;for(t=t||[];r=0;i--)o=h[i],n.contains(o._latlng)||r.removeLayer(o)}),this._forceLayout(),this._topClusterLevel._recursivelyBecomeVisible(n,t),r.eachLayer(function(e){e instanceof L.MarkerCluster||!e._icon||e.clusterShow()}),this._topClusterLevel._recursively(n,e,t,function(e){e._recursivelyRestoreChildPositions(t)}),this._ignoreMove=!1,this._enqueue(function(){this._topClusterLevel._recursively(n,e,s,function(e){r.removeLayer(e),e.clusterShow()}),this._animationEnd()})},_animationZoomOut:function(e,t){this._animationZoomOutSingle(this._topClusterLevel,e-1,t),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),e,this._getExpandedVisibleBounds())},_animationAddLayer:function(e,t){var i=this,n=this._featureGroup;n.addLayer(e),t!==e&&(t._childCount>2?(t._updateIcon(),this._forceLayout(),this._animationStart(),e._setPos(this._map.latLngToLayerPoint(t.getLatLng())),e.clusterHide(),this._enqueue(function(){n.removeLayer(e),e.clusterShow(),i._animationEnd()})):(this._forceLayout(),i._animationStart(),i._animationZoomOutSingle(t,this._map.getMaxZoom(),this._zoom)))}},_animationZoomOutSingle:function(e,t,i){var n=this._getExpandedVisibleBounds(),r=Math.floor(this._map.getMinZoom());e._recursivelyAnimateChildrenInAndAddSelfToMap(n,r,t+1,i);var s=this;this._forceLayout(),e._recursivelyBecomeVisible(n,i),this._enqueue(function(){if(1===e._childCount){var o=e._markers[0];this._ignoreMove=!0,o.setLatLng(o.getLatLng()),this._ignoreMove=!1,o.clusterShow&&o.clusterShow()}else e._recursively(n,i,r,function(e){e._recursivelyRemoveChildrenFromMap(n,r,t+1)});s._animationEnd()})},_animationEnd:function(){this._map&&(this._map._mapPane.className=this._map._mapPane.className.replace(\" leaflet-cluster-anim\",\"\")),this._inZoomAnimation--,this.fire(\"animationend\")},_forceLayout:function(){L.Util.falseFn(document.body.offsetWidth)}}),L.markerClusterGroup=function(e){return new L.MarkerClusterGroup(e)};var i=L.MarkerCluster=L.Marker.extend({options:L.Icon.prototype.options,initialize:function(e,t,i,n){L.Marker.prototype.initialize.call(this,i?i._cLatLng||i.getLatLng():new L.LatLng(0,0),{icon:this,pane:e.options.clusterPane}),this._group=e,this._zoom=t,this._markers=[],this._childClusters=[],this._childCount=0,this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._bounds=new L.LatLngBounds,i&&this._addChild(i),n&&this._addChild(n)},getAllChildMarkers:function(e,t){e=e||[];for(var i=this._childClusters.length-1;i>=0;i--)this._childClusters[i].getAllChildMarkers(e);for(var n=this._markers.length-1;n>=0;n--)t&&this._markers[n].__dragStart||e.push(this._markers[n]);return e},getChildCount:function(){return this._childCount},zoomToBounds:function(e){for(var t,i=this._childClusters.slice(),n=this._group._map,r=n.getBoundsZoom(this._bounds),s=this._zoom+1,o=n.getZoom();i.length>0&&r>s;){s++;var a=[];for(t=0;ts?this._group._map.setView(this._latlng,s):o>=r?this._group._map.setView(this._latlng,o+1):this._group._map.fitBounds(this._bounds,e)},getBounds:function(){var e=new L.LatLngBounds;return e.extend(this._bounds),e},_updateIcon:function(){this._iconNeedsUpdate=!0,this._icon&&this.setIcon(this)},createIcon:function(){return this._iconNeedsUpdate&&(this._iconObj=this._group.options.iconCreateFunction(this),this._iconNeedsUpdate=!1),this._iconObj.createIcon()},createShadow:function(){return this._iconObj.createShadow()},_addChild:function(e,t){this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._setClusterCenter(e),e instanceof L.MarkerCluster?(t||(this._childClusters.push(e),e.__parent=this),this._childCount+=e._childCount):(t||this._markers.push(e),this._childCount++),this.__parent&&this.__parent._addChild(e,!0)},_setClusterCenter:function(e){this._cLatLng||(this._cLatLng=e._cLatLng||e._latlng)},_resetBounds:function(){var e=this._bounds;e._southWest&&(e._southWest.lat=1/0,e._southWest.lng=1/0),e._northEast&&(e._northEast.lat=-1/0,e._northEast.lng=-1/0)},_recalculateBounds:function(){var e,t,i,n,r=this._markers,s=this._childClusters,o=0,a=0,h=this._childCount;if(0!==h){for(this._resetBounds(),e=0;e=0;i--)n=r[i],n._icon&&(n._setPos(t),n.clusterHide())},function(e){var i,n,r=e._childClusters;for(i=r.length-1;i>=0;i--)n=r[i],n._icon&&(n._setPos(t),n.clusterHide())})},_recursivelyAnimateChildrenInAndAddSelfToMap:function(e,t,i,n){this._recursively(e,n,t,function(r){r._recursivelyAnimateChildrenIn(e,r._group._map.latLngToLayerPoint(r.getLatLng()).round(),i),r._isSingleParent()&&i-1===n?(r.clusterShow(),r._recursivelyRemoveChildrenFromMap(e,t,i)):r.clusterHide(),r._addToMap()})},_recursivelyBecomeVisible:function(e,t){this._recursively(e,this._group._map.getMinZoom(),t,null,function(e){e.clusterShow()})},_recursivelyAddChildrenToMap:function(e,t,i){this._recursively(i,this._group._map.getMinZoom()-1,t,function(n){if(t!==n._zoom)for(var r=n._markers.length-1;r>=0;r--){var s=n._markers[r];i.contains(s._latlng)&&(e&&(s._backupLatlng=s.getLatLng(),s.setLatLng(e),s.clusterHide&&s.clusterHide()),n._group._featureGroup.addLayer(s))}},function(t){t._addToMap(e)})},_recursivelyRestoreChildPositions:function(e){for(var t=this._markers.length-1;t>=0;t--){var i=this._markers[t];i._backupLatlng&&(i.setLatLng(i._backupLatlng),delete i._backupLatlng)}if(e-1===this._zoom)for(var n=this._childClusters.length-1;n>=0;n--)this._childClusters[n]._restorePosition();else for(var r=this._childClusters.length-1;r>=0;r--)this._childClusters[r]._recursivelyRestoreChildPositions(e)},_restorePosition:function(){this._backupLatlng&&(this.setLatLng(this._backupLatlng),delete this._backupLatlng)},_recursivelyRemoveChildrenFromMap:function(e,t,i,n){var r,s;this._recursively(e,t-1,i-1,function(e){for(s=e._markers.length-1;s>=0;s--)r=e._markers[s],n&&n.contains(r._latlng)||(e._group._featureGroup.removeLayer(r),r.clusterShow&&r.clusterShow())},function(e){for(s=e._childClusters.length-1;s>=0;s--)r=e._childClusters[s],n&&n.contains(r._latlng)||(e._group._featureGroup.removeLayer(r),r.clusterShow&&r.clusterShow())})},_recursively:function(e,t,i,n,r){var s,o,a=this._childClusters,h=this._zoom;if(h>=t&&(n&&n(this),r&&h===i&&r(this)),t>h||i>h)for(s=a.length-1;s>=0;s--)o=a[s],o._boundsNeedUpdate&&o._recalculateBounds(),e.intersects(o._bounds)&&o._recursively(e,t,i,n,r)},_isSingleParent:function(){return this._childClusters.length>0&&this._childClusters[0]._childCount===this._childCount}});L.Marker.include({clusterHide:function(){var e=this.options.opacity;return this.setOpacity(0),this.options.opacity=e,this},clusterShow:function(){return this.setOpacity(this.options.opacity)}}),L.DistanceGrid=function(e){this._cellSize=e,this._sqCellSize=e*e,this._grid={},this._objectPoint={}},L.DistanceGrid.prototype={addObject:function(e,t){var i=this._getCoord(t.x),n=this._getCoord(t.y),r=this._grid,s=r[n]=r[n]||{},o=s[i]=s[i]||[],a=L.Util.stamp(e);this._objectPoint[a]=t,o.push(e)},updateObject:function(e,t){this.removeObject(e),this.addObject(e,t)},removeObject:function(e,t){var i,n,r=this._getCoord(t.x),s=this._getCoord(t.y),o=this._grid,a=o[s]=o[s]||{},h=a[r]=a[r]||[];for(delete this._objectPoint[L.Util.stamp(e)],i=0,n=h.length;n>i;i++)if(h[i]===e)return h.splice(i,1),1===n&&delete a[r],!0},eachObject:function(e,t){var i,n,r,s,o,a,h,l=this._grid;for(i in l){o=l[i];for(n in o)for(a=o[n],r=0,s=a.length;s>r;r++)h=e.call(t,a[r]),h&&(r--,s--)}},getNearObject:function(e){var t,i,n,r,s,o,a,h,l=this._getCoord(e.x),u=this._getCoord(e.y),_=this._objectPoint,d=this._sqCellSize,c=null;for(t=u-1;u+1>=t;t++)if(r=this._grid[t])for(i=l-1;l+1>=i;i++)if(s=r[i])for(n=0,o=s.length;o>n;n++)a=s[n],h=this._sqDist(_[L.Util.stamp(a)],e),(d>h||d>=h&&null===c)&&(d=h,c=a);return c},_getCoord:function(e){var t=Math.floor(e/this._cellSize);return isFinite(t)?t:e},_sqDist:function(e,t){var i=t.x-e.x,n=t.y-e.y;return i*i+n*n}},function(){L.QuickHull={getDistant:function(e,t){var i=t[1].lat-t[0].lat,n=t[0].lng-t[1].lng;return n*(e.lat-t[0].lat)+i*(e.lng-t[0].lng)},findMostDistantPointFromBaseLine:function(e,t){var i,n,r,s=0,o=null,a=[];for(i=t.length-1;i>=0;i--)n=t[i],r=this.getDistant(n,e),r>0&&(a.push(n),r>s&&(s=r,o=n));return{maxPoint:o,newPoints:a}},buildConvexHull:function(e,t){var i=[],n=this.findMostDistantPointFromBaseLine(e,t);return n.maxPoint?(i=i.concat(this.buildConvexHull([e[0],n.maxPoint],n.newPoints)),i=i.concat(this.buildConvexHull([n.maxPoint,e[1]],n.newPoints))):[e[0]]},getConvexHull:function(e){var t,i=!1,n=!1,r=!1,s=!1,o=null,a=null,h=null,l=null,u=null,_=null;for(t=e.length-1;t>=0;t--){var d=e[t];(i===!1||d.lat>i)&&(o=d,i=d.lat),(n===!1||d.latr)&&(h=d,r=d.lng),(s===!1||d.lng=0;t--)e=i[t].getLatLng(),n.push(e);return L.QuickHull.getConvexHull(n)}}),L.MarkerCluster.include({_2PI:2*Math.PI,_circleFootSeparation:25,_circleStartAngle:0,_spiralFootSeparation:28,_spiralLengthStart:11,_spiralLengthFactor:5,_circleSpiralSwitchover:9,spiderfy:function(){if(this._group._spiderfied!==this&&!this._group._inZoomAnimation){var e,t=this.getAllChildMarkers(null,!0),i=this._group,n=i._map,r=n.latLngToLayerPoint(this._latlng);this._group._unspiderfy(),this._group._spiderfied=this,t.length>=this._circleSpiralSwitchover?e=this._generatePointsSpiral(t.length,r):(r.y+=10,e=this._generatePointsCircle(t.length,r)),this._animationSpiderfy(t,e)}},unspiderfy:function(e){this._group._inZoomAnimation||(this._animationUnspiderfy(e),this._group._spiderfied=null)},_generatePointsCircle:function(e,t){var i,n,r=this._group.options.spiderfyDistanceMultiplier*this._circleFootSeparation*(2+e),s=r/this._2PI,o=this._2PI/e,a=[];for(s=Math.max(s,35),a.length=e,i=0;e>i;i++)n=this._circleStartAngle+i*o,a[i]=new L.Point(t.x+s*Math.cos(n),t.y+s*Math.sin(n))._round();return a},_generatePointsSpiral:function(e,t){var i,n=this._group.options.spiderfyDistanceMultiplier,r=n*this._spiralLengthStart,s=n*this._spiralFootSeparation,o=n*this._spiralLengthFactor*this._2PI,a=0,h=[];for(h.length=e,i=e;i>=0;i--)e>i&&(h[i]=new L.Point(t.x+r*Math.cos(a),t.y+r*Math.sin(a))._round()),a+=s/r+5e-4*i,r+=o/a;return h},_noanimationUnspiderfy:function(){var e,t,i=this._group,n=i._map,r=i._featureGroup,s=this.getAllChildMarkers(null,!0);for(i._ignoreMove=!0,this.setOpacity(1),t=s.length-1;t>=0;t--)e=s[t],r.removeLayer(e),e._preSpiderfyLatlng&&(e.setLatLng(e._preSpiderfyLatlng),delete e._preSpiderfyLatlng),e.setZIndexOffset&&e.setZIndexOffset(0),e._spiderLeg&&(n.removeLayer(e._spiderLeg),delete e._spiderLeg);i.fire(\"unspiderfied\",{cluster:this,markers:s}),i._ignoreMove=!1,i._spiderfied=null}}),L.MarkerClusterNonAnimated=L.MarkerCluster.extend({_animationSpiderfy:function(e,t){var i,n,r,s,o=this._group,a=o._map,h=o._featureGroup,l=this._group.options.spiderLegPolylineOptions;for(o._ignoreMove=!0,i=0;i=0;i--)a=u.layerPointToLatLng(t[i]),n=e[i],n._preSpiderfyLatlng=n._latlng,n.setLatLng(a),n.clusterShow&&n.clusterShow(),p&&(r=n._spiderLeg,s=r._path,s.style.strokeDashoffset=0,r.setStyle({opacity:m}));this.setOpacity(.3),l._ignoreMove=!1,setTimeout(function(){l._animationEnd(),l.fire(\"spiderfied\",{cluster:h,markers:e})},200)},_animationUnspiderfy:function(e){var t,i,n,r,s,o,a=this,h=this._group,l=h._map,u=h._featureGroup,_=e?l._latLngToNewLayerPoint(this._latlng,e.zoom,e.center):l.latLngToLayerPoint(this._latlng),d=this.getAllChildMarkers(null,!0),c=L.Path.SVG;for(h._ignoreMove=!0,h._animationStart(),this.setOpacity(1),i=d.length-1;i>=0;i--)t=d[i],t._preSpiderfyLatlng&&(t.closePopup(),t.setLatLng(t._preSpiderfyLatlng),delete t._preSpiderfyLatlng,o=!0,t._setPos&&(t._setPos(_),o=!1),t.clusterHide&&(t.clusterHide(),o=!1),o&&u.removeLayer(t),c&&(n=t._spiderLeg,r=n._path,s=r.getTotalLength()+.1,r.style.strokeDashoffset=s,n.setStyle({opacity:0})));h._ignoreMove=!1,setTimeout(function(){var e=0;for(i=d.length-1;i>=0;i--)t=d[i],t._spiderLeg&&e++;for(i=d.length-1;i>=0;i--)t=d[i],t._spiderLeg&&(t.clusterShow&&t.clusterShow(),t.setZIndexOffset&&t.setZIndexOffset(0),e>1&&u.removeLayer(t),l.removeLayer(t._spiderLeg),delete t._spiderLeg);h._animationEnd(),h.fire(\"unspiderfied\",{cluster:a,markers:d})},200)}}),L.MarkerClusterGroup.include({_spiderfied:null,unspiderfy:function(){this._unspiderfy.apply(this,arguments)},_spiderfierOnAdd:function(){this._map.on(\"click\",this._unspiderfyWrapper,this),this._map.options.zoomAnimation&&this._map.on(\"zoomstart\",this._unspiderfyZoomStart,this),this._map.on(\"zoomend\",this._noanimationUnspiderfy,this),L.Browser.touch||this._map.getRenderer(this)},_spiderfierOnRemove:function(){this._map.off(\"click\",this._unspiderfyWrapper,this),this._map.off(\"zoomstart\",this._unspiderfyZoomStart,this),this._map.off(\"zoomanim\",this._unspiderfyZoomAnim,this),this._map.off(\"zoomend\",this._noanimationUnspiderfy,this),this._noanimationUnspiderfy()\n},_unspiderfyZoomStart:function(){this._map&&this._map.on(\"zoomanim\",this._unspiderfyZoomAnim,this)},_unspiderfyZoomAnim:function(e){L.DomUtil.hasClass(this._map._mapPane,\"leaflet-touching\")||(this._map.off(\"zoomanim\",this._unspiderfyZoomAnim,this),this._unspiderfy(e))},_unspiderfyWrapper:function(){this._unspiderfy()},_unspiderfy:function(e){this._spiderfied&&this._spiderfied.unspiderfy(e)},_noanimationUnspiderfy:function(){this._spiderfied&&this._spiderfied._noanimationUnspiderfy()},_unspiderfyLayer:function(e){e._spiderLeg&&(this._featureGroup.removeLayer(e),e.clusterShow&&e.clusterShow(),e.setZIndexOffset&&e.setZIndexOffset(0),this._map.removeLayer(e._spiderLeg),delete e._spiderLeg)}}),L.MarkerClusterGroup.include({refreshClusters:function(e){return e?e instanceof L.MarkerClusterGroup?e=e._topClusterLevel.getAllChildMarkers():e instanceof L.LayerGroup?e=e._layers:e instanceof L.MarkerCluster?e=e.getAllChildMarkers():e instanceof L.Marker&&(e=[e]):e=this._topClusterLevel.getAllChildMarkers(),this._flagParentsIconsNeedUpdate(e),this._refreshClustersIcons(),this.options.singleMarkerMode&&this._refreshSingleMarkerModeMarkers(e),this},_flagParentsIconsNeedUpdate:function(e){var t,i;for(t in e)for(i=e[t].__parent;i;)i._iconNeedsUpdate=!0,i=i.__parent},_refreshSingleMarkerModeMarkers:function(e){var t,i;for(t in e)i=e[t],this.hasLayer(i)&&i.setIcon(this._overrideMarkerIcon(i))}}),L.Marker.include({refreshIconOptions:function(e,t){var i=this.options.icon;return L.setOptions(i,e),this.setIcon(i),t&&this.__parent&&this.__parent._group.refreshClusters(this),this}}),e.MarkerClusterGroup=t,e.MarkerCluster=i});\n//# sourceMappingURL=leaflet.markercluster.js.map\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(45)], __WEBPACK_AMD_DEFINE_RESULT__ = function (geocodeModel) {\n 'use strict';\n\n return function (data) {\n if (!(data.batchItems instanceof Array)) {\n return null;\n }\n return data.batchItems.map(function (batchItem) {\n if (batchItem.response.error) {\n return { error: batchItem.response.error };\n } else {\n return geocodeModel(batchItem.response);\n }\n });\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Allows to make search request using the TomTom's\n * [Search API - Fuzzy Search](https://developer.tomtom.com/search-api/search-api-documentation-search/fuzzy-search).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"FuzzySearch/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"FuzzySearch/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * The list of all supported category codes are available\n * [here](https://developer.tomtom.com/search-api/search-api-documentation/supported-category-codes).\n *\n * @example\n * ```js\n * function callbackFn(result) {\n * console.log(result);\n * };\n *\n * // Using a callback function\n * tomtom.fuzzySearch()\n * .key() // this is optional if you defined a global key earlier\n * .query(\"Amsterdam\")\n * .callback(callbackFn)\n * .go();\n *\n * // Or using a Promise\n * tomtom.fuzzySearch()\n * .key() // this is optional if you defined a global key earlier\n * .query(\"Amsterdam\")\n * .go()\n * .then(callbackFn);\n * ```\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * @class FuzzySearch\n * @extends Search\n * @uses ExtendedPostalCodesForMixin\n * @uses CenterMixin\n * @uses RadiusMixin\n * @uses BoundingBoxMixin\n * @uses CountrySetMixin\n * @uses OffsetMixin\n * @uses BestResultMixin\n * @uses ViewMixin\n * @uses QueryMixin\n * @uses TypeaheadMixin\n * @constructor\n * @module Services\n *\n * @param {Object} [options] Options to be passed to the fuzzy search call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.unwrapBbox=false] Changes the bounding box coordinates allowing longitudes that\n * exceeds 180 degrees when is necessary. {{#crossLink \"Search/unwrapBbox:method\"}}More{{/crossLink}}\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {String} [options.view=\"Unified\"] Geopolitical view\n * @param {String} [options.language=null] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n *\n * @param {String} [options.query] Text that will be searched\n * This parameter is required to be defined either in the options passed to the constructor or using the\n * **query()** method.\n * @param {Boolean} [options.typeahead=false] If is enabled the query will be interpreted as a\n * partial input and the **predictive** mode will be used\n * @param {Boolean} [options.bestResult=false] Return only one result, the best match result.\n * @param {Number[]|String|L.LatLng|Object} [options.center] Location where results should be biased\n * @param {Number} [options.radius=0] The search radius in meters using the coordinates given to the **center**\n * option as origin.\n * If the radius is zero the results will not be constrained.\n * @param {Number} [options.offset=0] Starting offset of the returned results within the full result set\n * @param {String} [options.countrySet] List of country codes for limit the search request to those specific\n * political limits\n * @param {Object|Number[]|Object[]|String} [options.boundingBox] The bounding box is an area within the search\n * results needs to limit to. If it is omitted then the whole world will be taken into consideration.\n * @param {String} [options.extendedPostalCodesFor] Represent the indexes for which extended postal codes should\n * be included in the results\n * @param {String} [options.idxSet] Specify which indexes to utilize for the search\n * @param {Number} [options.maxFuzzyLevel=2] Maximum fuzzyness level to be used\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(17), __webpack_require__(2)], __WEBPACK_AMD_DEFINE_RESULT__ = function (search, validators) {\n 'use strict';\n\n var SearchPrototype = search.prototype.constructor;\n\n function FuzzySearch(options) {\n SearchPrototype.call(this, options);\n\n this.fields.type = {\n defaultValue: this.TYPE.search,\n visible: false\n };\n\n /**\n * Sets or gets the current value of the option \"minFuzzyLevel\".\n *\n * The maximum allowed value is 4.\n *\n * @method minFuzzyLevel\n * @chainable\n * @param {Number} [newValue] The possible values are the integers 1, 2, 3 and 4\n * @throws {TypeError} If the given argument cannot be converted to a valid value\n * @return {Number} The same service instance or the current option value if no argument was given\n */\n this.fields.minFuzzyLevel = {\n validator: validators.fuzzinessLevel,\n defaultValue: 1\n };\n\n /**\n * Sets or gets the current value of the option \"maxFuzzyLevel\".\n *\n * The maximum allowed value is 4.\n *\n * @method maxFuzzyLevel\n * @chainable\n * @param {Number} [newValue] The possible values are the integers 1, 2, 3 and 4\n * @throws {TypeError} If the given argument cannot be converted to a valid value\n * @return {Number} The same service instance or the current option value if no argument was given\n */\n this.fields.maxFuzzyLevel = {\n validator: validators.fuzzinessLevel,\n defaultValue: 2\n };\n\n this.fields.idxSet = {\n validator: validators.string\n };\n }\n\n FuzzySearch.prototype = new SearchPrototype();\n FuzzySearch.prototype.constructor = FuzzySearch;\n\n return function (options) {\n return new FuzzySearch(options).construct();\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n return function (data) {\n var coordinates = [];\n if (data.error) {\n throw new Error(data.error);\n }\n if (data.reachableRange && data.reachableRange.boundary && Array.isArray(data.reachableRange.boundary)) {\n coordinates = data.reachableRange.boundary.map(function (coordinates) {\n return [coordinates.longitude, coordinates.latitude];\n });\n }\n return {\n type: 'Feature',\n geometry: {\n type: 'Polygon',\n coordinates: [coordinates]\n }\n };\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This widget displays a search input control over the map capable of executing\n * search requests and displaying the results in a dropdown under the input.\n *\n * By default the widget collapses when is empty and loses focus.\n *\n * This widget uses the fuzzy search implementation to execute search requests.\n *\n * @example\n * ```javascript\n * // SearchBox with location button and Polish language\n * var widget = new L.SearchBox({\n * location: true,\n * language: 'pl-PL',\n * view: 'IN'\n * });\n * widget.addTo(map);\n *\n * // some time later...\n * widget.language('de-DE');\n * widget.view('IN');\n * ```\n *\n * @class SearchBox\n * @namespace L\n * @extends L.Control\n * @uses L.Evented\n * @module Widgets\n * @constructor\n * @param {Object} [options] Options to be passed to the searchBox control\n * @param {String} [options.placeholder=\"Search for place...\"] The placeholder text to be displayed inside\n * searchBox\n * @param {String} [options.id] Id of a searchBox's DOM element\n * @param {Boolean} [options.collapsed=false] Flag if checkbox is collapsed on initialization\n * @param {Boolean} [options.collapsible=true] Flag if searchBox can be collapsed\n * @param {Boolean} [options.location=false] Display location button to search for current location\n * @param {String} [options.icon=\"icon-search\"] Determines icon of the searchBox\n * @param {Boolean} [options.disablePOIs=false] Determines whether search results should not contain POIs\n * @param {Boolean} [options.viewportBoundingBox=false] Enables or disables searching on a currently visible\n * map area. If unset, search service will use current map center.\n * @param {Boolean} [options.withPrompt=true] Should widget show user prompts while typing, the call will be\n * throttled according to the following settings: `minNumberCharsPrompt`, `throttleTimePrompt`, `idleTimeKeyPress`\n * @param {String|Boolean} [options.searchOnDragEnd=\"always\"] This option defines what the widget should do after\n * the user finish dragging the map (and therefore changing the maps's viewport).\n * There are five possible values:\n * - `\"always\"`: The widget will repeat the last search everytime the map's viewport changes.\n * - `\"open\"`: The last search will be repeated only if the list of results was being displayed\n * when the map's dragging occurs.\n * - `\"never\"`: No action will be taken when the user change the map's viewport.\n * - `true`: Alias of `\"always\"`.\n * - `false`: Alias of `\"never\"`.\n * @param {Number} [options.minNumberCharsPrompt=3] Sets the minimal required number of characters that are\n * required to perform search\n * @param {Number} [options.throttleTimePrompt=1000] Sets the minimal time between the following search\n * service calls when user types text into the input\n * @param {Number} [options.idleTimeKeyPress=200] Sets the time between following key press events to assume\n * the user finished typing the query\n * @param {String} [options.language] Language code, for example 'en-GB', 'en-US', 'de-DE'. Full list is available\n * here.\n * @param {String} [options.view] Sets the geopolitical view used in the search service. Accepted values:\n * 'AR', 'IL', 'MA', 'IN', 'PK' and 'Unified'. Full list is available\n * here.\n * @param {Object} [options.serviceOptions] Options to be passed to service. See search service options\n * @param {Boolean} [options.imperialDistance=null] Set this option if you want to use a specific unit measurement\n * system for the new instance of the widget instead of use the default unit\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(95), __webpack_require__(25), __webpack_require__(98), __webpack_require__(0), __webpack_require__(15), __webpack_require__(16)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, searchService, reverseGeocodeService, location, utils, unitFormatConverter, unitTypes) {\n 'use strict';\n\n var ENTER = 13,\n ARROWUP = 38,\n ARROWDOWN = 40,\n EVENTS = {\n ResultCreated: 'resultCreated',\n ResultClicked: 'resultClicked',\n ClearButtonClicked: 'clearButtonClicked',\n ResultsCleared: 'resultsCleared',\n ResultsFound: 'resultsFound',\n ResultsDrawn: 'resultsDrawn',\n SearchInputChanged: 'searchInputChanged',\n LocationError: 'locationError'\n };\n\n /**\n * @param {HTMLElement} element\n * @param {Object} [data]\n * @param {String} [text]\n * @return {Object}\n */\n function searchBoxEvent(element, data, text) {\n return {\n element: element,\n data: data,\n text: text\n };\n }\n\n function createNoResults(control) {\n var result = L.DomUtil.create('div', 'leaflet-control-search-result', control.resultsContainer);\n result.innerHTML = 'No results found.';\n control.resultsContainer.style.height = 'auto';\n\n control.fire(control.Events.ResultCreated);\n }\n\n function locationError(control) {\n return function (error) {\n control.input.value = '';\n control.input.focus();\n control.clearResults();\n createNoResults(control);\n control.fire(control.Events.LocationError, searchBoxEvent(control.input, error, error.message));\n console.error(error);\n };\n }\n\n function resolveResultText(resultData) {\n if (!resultData || !resultData.address) {\n return resultData;\n }\n\n return resultData.poi ? resultData.poi.name + ', ' + resultData.address.freeformAddress : resultData.address.freeformAddress;\n }\n\n function locationSuccess(control) {\n return function (location) {\n var options = utils.clone(control.options.serviceOptions);\n reverseGeocodeService(options).position(location.latlng).go(function (result) {\n result.position = location.latlng.lng ? {\n lat: location.latlng.lat,\n lon: location.latlng.lng\n } : location.latlng;\n\n control.clearResults();\n control.input.value = resolveResultText(result);\n control.input.focus();\n control.fire(control.Events.ResultClicked, searchBoxEvent(control.locationIcon, result, control.input.value));\n });\n };\n }\n\n function createCurrentLocationButton(control) {\n control.location = location({\n size: null\n });\n control.locationIcon = control.location.onAdd(control._map);\n control.inputContainer.appendChild(control.locationIcon);\n control.location.on(control.location.Events.LocationFound, locationSuccess(control));\n control.location.on(control.location.Events.LocationError, locationError(control));\n }\n\n function isResultsListOpen(control) {\n return control.resultsContainer.hasChildNodes();\n }\n\n function onMapEndDrag() {\n var control = this,\n options = control.options,\n reRun = false;\n if (control.lastSearchText.trim().length === 0) {\n return;\n }\n if (options.searchOnDragEnd === 'open' && isResultsListOpen(control)) {\n reRun = true;\n } else if (['always', true].indexOf(options.searchOnDragEnd) !== -1) {\n reRun = true;\n }\n if (reRun) {\n control.search(control.input.value);\n }\n }\n\n function highlightNextResult(keyCode, selectedElement, resultsContainerElement) {\n var highlightClass = 'highlight',\n rules = {\n 38: {\n edgeCase: 'firstChild',\n nextSibling: 'previousElementSibling',\n nextAfterEdgeCase: 'lastChild'\n },\n 40: {\n edgeCase: 'lastChild',\n nextSibling: 'nextElementSibling',\n nextAfterEdgeCase: 'firstChild'\n }\n },\n newlySelectedElement;\n if (selectedElement) {\n selectedElement.className = selectedElement.className.replace(highlightClass, '');\n }\n\n if (!selectedElement || selectedElement === resultsContainerElement[rules[keyCode].edgeCase]) {\n newlySelectedElement = resultsContainerElement[rules[keyCode].nextAfterEdgeCase];\n } else {\n newlySelectedElement = selectedElement[rules[keyCode].nextSibling];\n }\n\n newlySelectedElement.className += ' ' + highlightClass;\n }\n\n function onResultSelect(resultData) {\n if (!resultData) {\n return;\n }\n this.stopSearch = true;\n this.input.value = resolveResultText(resultData);\n this.clearResultsContainer();\n this.input.blur();\n this.fire(this.Events.ResultClicked, searchBoxEvent(this.input, resultData, this.input.value));\n }\n\n function createOnKeyDownHandler(searchBoxControl) {\n var searchOnEnterLastTime = 0,\n searchOnEnterLastValue = '',\n timerId;\n\n return function (event) {\n var code = event.keyCode || event.which,\n selectedResult = this.resultsContainer.getElementsByClassName('highlight')[0],\n selectedResultIndex,\n currentTime,\n currentInputValue,\n throttleTimePrompt,\n deltaTimeToNextSearch;\n\n if (code === ENTER && searchBoxControl.input.value) {\n if (selectedResult) {\n selectedResultIndex = [].indexOf.call(this.resultsContainer.children, selectedResult);\n onResultSelect.call(this, this._searchResponses[selectedResultIndex]);\n } else {\n if (timerId) {\n clearTimeout(timerId);\n }\n\n currentTime = new Date().getTime();\n currentInputValue = searchBoxControl.input.value;\n throttleTimePrompt = searchBoxControl.options.throttleTimePrompt || 1000;\n deltaTimeToNextSearch = throttleTimePrompt - (currentTime - searchOnEnterLastTime);\n\n if (deltaTimeToNextSearch <= 0 || searchOnEnterLastValue !== currentInputValue) {\n searchOnEnterLastTime = currentTime;\n searchOnEnterLastValue = currentInputValue;\n searchBoxControl.search(currentInputValue);\n } else {\n timerId = setTimeout(function () {\n searchOnEnterLastTime = new Date().getTime();\n searchOnEnterLastValue = searchBoxControl.input.value;\n searchBoxControl.search(searchBoxControl.input.value);\n }, deltaTimeToNextSearch);\n }\n }\n }\n\n if (this.resultsContainer.hasChildNodes()) {\n if (code === ARROWUP || code === ARROWDOWN) {\n this.stopSearch = true;\n highlightNextResult.call(this, code, selectedResult, this.resultsContainer);\n }\n }\n };\n }\n\n function getOptionsForSearch(control) {\n var options = utils.clone(control.options.serviceOptions);\n options.query = control.input.value;\n if (control.options.viewportBoundingBox) {\n options.boundingBox = control._map.getBounds();\n } else {\n options.center = control._map.getCenter();\n }\n if (control.options.disablePOIs) {\n options.idxSet = 'PAD,Str,Xstr,Geo,Addr';\n }\n if (typeof options.typeahead !== 'boolean') {\n options.typeahead = true;\n }\n if (control.options.view) {\n options.view = control.options.view;\n }\n if (!utils.isString(options.language)) {\n options.language = control.options.language;\n }\n return options;\n }\n function handleResults(results) {\n this.expand();\n this._searchResponses = results;\n this._redrawResults(true);\n this.fire(this.Events.ResultsFound, searchBoxEvent(this.resultsContainer, results));\n }\n\n function createOnInputChangeHandler(control) {\n var timerId;\n\n function promptSearch() {\n if (control.input.value.length === 0 || control.lastSearchText === control.input.value || control.stopSearch) {\n return;\n }\n\n control.lastSearchText = control.input.value;\n\n searchService(getOptionsForSearch(control)).go(function (result) {\n if (!control.stopSearch) {\n handleResults.call(control, result);\n }\n });\n }\n\n return function () {\n this.fire(this.Events.SearchInputChanged, searchBoxEvent(this.input, this.input.value, this.input.value));\n control.stopSearch = false;\n\n if (timerId) {\n clearTimeout(timerId);\n }\n\n if (this.options.withPrompt && this.input.value.length >= this.options.minNumberCharsPrompt) {\n if (control.options.idleTimeKeyPress === 0) {\n promptSearch();\n } else {\n timerId = setTimeout(promptSearch, control.options.idleTimeKeyPress);\n }\n }\n };\n }\n\n function shouldListenForDragEnd(control) {\n return ['always', 'open', true].indexOf(control.options.searchOnDragEnd) !== -1;\n }\n\n function clearSearchBox() {\n this.input.focus();\n this.input.value = '';\n this.lastSearchText = '';\n this.clearResults();\n this.fire(this.Events.ClearButtonClicked, searchBoxEvent(this.clearButton));\n }\n\n function setHandlers(control, container) {\n L.DomEvent.disableClickPropagation(container);\n L.DomEvent.disableScrollPropagation(container);\n L.DomEvent.on(container, 'drag', L.DomEvent.stopPropagation);\n L.DomEvent.on(container, 'keydown', createOnKeyDownHandler(control), control);\n L.DomEvent.on(container, 'input', createOnInputChangeHandler(control), control);\n\n if (shouldListenForDragEnd(control)) {\n L.DomEvent.on(control._map, 'dragend', onMapEndDrag, control);\n }\n\n L.DomEvent.on(control.clearButton, 'click', clearSearchBox, control);\n if (control.options.collapsible) {\n L.DomEvent.on(control.input, 'focus', control.expand, control);\n L.DomEvent.on(control.input, 'blur', control.collapse, control);\n }\n }\n\n function createDOMElements(control) {\n var container,\n containerClassname = 'leaflet-control-search';\n if (control.options.collapsible && control.options.collapsed) {\n containerClassname += ' collapsed';\n }\n container = L.DomUtil.create('div', containerClassname);\n control.inputContainer = L.DomUtil.create('div', 'leaflet-control-search-input-container', container);\n control.input = L.DomUtil.create('input', control.options.icon + ' leaflet-control-search-input', control.inputContainer);\n control.input.required = true;\n control.clearButton = L.DomUtil.create('div', 'leaflet-control-search-input-close-icon icon-close-gray', control.inputContainer);\n control.resultsContainer = L.DomUtil.create('div', 'leaflet-control-search-results-container', container);\n if (control.options.location) {\n createCurrentLocationButton(control);\n }\n if (control.options.id) {\n control.input.id = control.options.id;\n }\n setHandlers(control, container);\n control.input.setAttribute('placeholder', control.options.placeholder);\n return container;\n }\n\n function getWordsToHighlight(words) {\n var i;\n words = words.split(/[- ,]+/) || [];\n\n for (i = 0; i < words.length; i += 1) {\n words[i] = utils.encodeStringForRegex(words[i]);\n }\n\n return words;\n }\n\n function highlightWords(control, text) {\n var words = getWordsToHighlight(control.input.value);\n var regex = new RegExp('(' + words.join('|') + ')', 'ig');\n\n return text.replace(regex, '$1');\n }\n\n function createResultElement(control, result) {\n var useImperial = control._shouldUseImperialDistance();\n var nameWrapper, addressWrapper, address, distanceElement;\n var resultElement = L.DomUtil.create('div', 'geoResponse-result');\n\n if (typeof result.poi !== 'undefined' && typeof result.poi.name !== 'undefined') {\n nameWrapper = L.DomUtil.create('div', 'geoResponse-result-name');\n nameWrapper.innerHTML = highlightWords(control, result.poi.name);\n resultElement.appendChild(nameWrapper);\n }\n\n if (typeof result.address !== 'undefined') {\n addressWrapper = L.DomUtil.create('div', 'geoResponse-result-address');\n address = [];\n\n if (typeof result.address.freeformAddress !== 'undefined') {\n address.push(result.address.freeformAddress);\n }\n\n if (typeof result.address.countryCodeISO3 !== 'undefined') {\n address.push(result.address.countryCodeISO3);\n }\n\n addressWrapper.innerHTML = highlightWords(control, address.join(', '));\n resultElement.appendChild(addressWrapper);\n }\n\n if (typeof result.dist !== 'undefined') {\n distanceElement = L.DomUtil.create('div', 'geoResponse-result-distance');\n distanceElement.innerHTML = unitFormatConverter.formatDistance(result.dist, useImperial);\n resultElement.appendChild(distanceElement);\n }\n\n return resultElement;\n }\n\n function createResult(control, resultData) {\n var result = L.DomUtil.create('div', 'leaflet-control-search-result', control.resultsContainer);\n result.appendChild(createResultElement(control, resultData));\n control.resultsContainer.style.height = 'auto';\n control.fire(control.Events.ResultCreated, searchBoxEvent(result, resultData));\n\n L.DomEvent.on(result, 'click', function () {\n onResultSelect.call(control, resultData);\n }, control);\n\n L.DomEvent.on(result, 'mouseover', function () {\n this.stopSearch = true;\n }, control);\n }\n\n function handleUnitChange(event) {\n this.options.imperialDistance = event.unit === 'imperial';\n if (isResultsListOpen(this)) {\n this._redrawResults(true);\n }\n }\n\n function handleLocaleChange(event) {\n if (this.definedLanguage) {\n return;\n }\n this.language(event.getValueFor('search'));\n if (this.lastSearchText && isResultsListOpen(this)) {\n this.search(this.lastSearchText);\n }\n }\n\n function updateSearch() {\n if (this.lastSearchText && isResultsListOpen(this)) {\n this.search(this.lastSearchText);\n }\n }\n\n function handleGeopolViewChange(event) {\n if (this.definedGeopolView) {\n return;\n }\n this.options.view = event.code;\n updateSearch.call(this);\n }\n\n L.SearchBox = L.Control.extend({\n includes: L.Evented.prototype,\n\n options: {\n placeholder: 'Search for a place...',\n id: false,\n collapsible: true,\n collapsed: false,\n location: false,\n icon: 'icon-search',\n disablePOIs: false,\n viewportBoundingBox: false,\n minNumberCharsPrompt: 3,\n throttleTimePrompt: 1000,\n idleTimeKeyPress: 200,\n serviceOptions: {},\n position: 'topleft',\n withPrompt: true,\n imperialDistance: null,\n searchOnDragEnd: 'always'\n },\n\n statics: {\n Events: EVENTS\n },\n\n /**\n * @ignore\n * @type {HtmlElement}\n */\n resultsContainer: null,\n\n /**\n * @ignore\n * @type {HtmlElement}\n */\n input: null,\n\n /**\n * @ignore\n * @type {HtmlElement}\n */\n location: undefined,\n\n /**\n * @ignore\n * @type {HtmlElement}\n */\n locationIcon: null,\n\n /**\n * @ignore\n * Store the last search results received.\n * @type {Object[]}\n */\n _searchResponses: [],\n\n /**\n * @ignore\n * @type {String}\n */\n lastSearchText: '',\n\n initialize: function initialize(options) {\n L.Util.setOptions(this, options);\n if (options) {\n this.definedGeopolView = options.view;\n this.definedLanguage = options.language;\n }\n },\n\n onAdd: function onAdd(map) {\n this.unitService = map.getUnitService();\n this.unitService.on(L.UnitService.Events.UNIT_CHANGED, handleUnitChange, this);\n this.localeService = map.getLocaleService();\n this.localeService.on(L.LocaleService.Events.LOCALE_CHANGED, handleLocaleChange, this);\n this.geopolService = map.getGeopolViewService();\n this.geopolService.on(L.GeopolViewService.Events.GEOPOL_VIEW_CHANGED, handleGeopolViewChange, this);\n return createDOMElements(this);\n },\n\n onRemove: function onRemove() {\n this.unitService.off(L.UnitService.Events.UNIT_CHANGED, handleUnitChange, this);\n this.localeService.off(L.LocaleService.Events.LOCALE_CHANGED, handleLocaleChange, this);\n this.geopolService.off(L.GeopolViewService.Events.GEOPOL_VIEW_CHANGED, handleGeopolViewChange, this);\n if (shouldListenForDragEnd(this)) {\n L.DomEvent.off(this._map, 'dragend', onMapEndDrag, this);\n }\n },\n\n /**\n * @ignore\n * First check the configuration for this instance and then the global configuration.\n * The instance configuration has priority.\n *\n * @return {Boolean}\n */\n _shouldUseImperialDistance: function _shouldUseImperialDistance() {\n if (typeof this.options.imperialDistance === 'boolean') {\n return this.options.imperialDistance;\n }\n return this.unitService.getCurrentUnit().getLabel() === unitTypes.imperial;\n },\n\n /**\n * @ignore\n * Show the list of results under the widget.\n * @param {Boolean} [informNoResults=false] If is TRUE shows a notification saying\n * there's no results no show\n */\n _redrawResults: function _redrawResults(informNoResults) {\n var i,\n results = this._searchResponses;\n\n this.clearResultsContainer();\n\n if (!results || results.length === 0) {\n if (informNoResults === true) {\n createNoResults(this);\n }\n return;\n }\n\n for (i = 0; i < results.length; i += 1) {\n createResult(this, results[i]);\n }\n\n this.resultsContainer.style.height = 'auto';\n this.fire(this.Events.ResultsDrawn, searchBoxEvent(this.resultsContainer, results));\n },\n\n /**\n * Method used to clear the DOM elements from the search results container.\n *\n * This method just remove the DOM elements but leave the cache with the previous results inside the widget.\n *\n * @method clearResultsContainer\n */\n clearResultsContainer: function clearResultsContainer() {\n if (this.resultsContainer.hasChildNodes()) {\n this.resultsContainer.style.height = '0px';\n this.resultsContainer.innerHTML = '';\n this.fire(this.Events.ResultsCleared, searchBoxEvent(this.resultsContainer));\n }\n },\n\n /**\n * Method used to clear all the previous search results from the widget.\n *\n * @method clearResults\n */\n clearResults: function clearResults() {\n this.clearResultsContainer();\n this._searchResponses = [];\n },\n\n /**\n * Method used to feed the searchBox instance with one search result element.\n *\n * @method setResultData\n * @param {Object} resultData Result data given from search service. Must contain address and/or POI\n * information.\n *\n * @example\n * ```javascript\n * var widget = (new L.SearchBox()).addTo(map);\n * var resultData = {\n * address: {freeformAddress: \"Amsterdam\"},\n * poi: { name: \"TomTom, Oosterdoksstraat, Amsterdam, The Netherlands\" }\n * }\n * widget.setResultData(resultData);\n * ```\n */\n setResultData: function setResultData(resultData) {\n if (resultData) {\n this.input.value = resolveResultText(resultData);\n this.clearResults();\n this.input.blur();\n }\n },\n\n /**\n * Start a search using a query string.\n * This method update the content of the input control and also handle the search request.\n *\n * @method search\n * @param {Object|String} text String, Object or reverse geocoding object (with the `query` key) as a search\n * query\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.search(\"Amsterdam\");\n *\n * var reversedGeocodeResponse = {query: \"Amsterdam\"}\n * widget.search(reversedGeocodeResponse);\n * ```\n */\n search: function search(text) {\n var searchBox = this;\n if ((typeof text === 'undefined' ? 'undefined' : _typeof(text)) === 'object' && text.hasOwnProperty('query')) {\n text = text.query;\n }\n if (!utils.isString(text) || text.length === 0) {\n return;\n }\n this.input.focus();\n this.input.value = text;\n this.lastSearchText = text;\n\n searchService(getOptionsForSearch(searchBox)).go(function (results) {\n handleResults.call(searchBox, results);\n });\n },\n /**\n * Method used to collapse search. Collapsing is possible only if search is empty.\n *\n * @method collapse\n */\n collapse: function collapse() {\n if (!this.input.value) {\n this._container.className += ' collapsed';\n this.clearResultsContainer();\n } else {\n this.expand();\n }\n },\n /**\n * Method used to expand collapsed search.\n *\n * @method expand\n */\n expand: function expand() {\n this._container.className = this._container.className.replace(/\\b collapsed\\b/, '');\n },\n\n /**\n * Method used to get embedded location widget (if set and added).\n *\n * @method getLocation\n * @return {L.Location}\n */\n getLocation: function getLocation() {\n return this.location;\n },\n\n /**\n * Sets the icon by styling search box input.\n *\n * @method setIcon\n * @param {String|undefined} className Name of the CSS class that sets\n * `background-image` property for search box input\n */\n setIcon: function setIcon(className) {\n if (utils.isString(className)) {\n this.input.className = this.input.className.replace(/(icon)((-)(\\w+))*/, className);\n }\n },\n\n /**\n * Adds the location icon.\n *\n * @method addLocationIcon\n */\n addLocationIcon: function addLocationIcon() {\n if (this.location === undefined) {\n this.options.location = true;\n createCurrentLocationButton(this);\n }\n },\n\n /**\n * Removes the location icon.\n *\n * @method removeLocationIcon\n */\n removeLocationIcon: function removeLocationIcon() {\n if (this.location !== undefined) {\n this.options.location = false;\n this.locationIcon.parentNode.removeChild(this.locationIcon);\n this.location.clearAllEventListeners();\n this.location = undefined;\n }\n },\n\n /**\n * A setter for the _'language'_ option.\n *\n * The whitelist can be found\n * [here](https://developer.tomtom.com/search-api/search-api-documentation/supported-languages).\n *\n * @method language\n * @param {String} [languageCode] Language code, for example 'en-GB', 'en-US', 'de-DE'. Full list is available\n * here\n * .\n */\n language: function language(languageCode) {\n if (null === languageCode || '' === languageCode) {\n delete this.options.language;\n delete this.definedLanguage;\n } else {\n this.options.language = languageCode;\n this.definedLanguage = languageCode;\n }\n },\n\n /**\n * A setter for the 'view' option.\n *\n * Use this setter to set a geopolitical view.\n * When this parameter is used the search service will return values\n * taking in consideration the Geopolitical view used.\n *\n * Accepted values: 'AR', 'IL', 'MA', 'IN', 'PK' and 'Unified'\n *\n * @method view\n * @param {String} [geopolViewCode] Geopotical view code. Full list is available at\n * here\n * .\n */\n view: function view(geopolViewCode) {\n if (geopolViewCode === null || geopolViewCode === '') {\n delete this.options.view;\n delete this.definedGeopolView;\n } else {\n this.options.view = geopolViewCode;\n this.definedGeopolView = geopolViewCode;\n }\n updateSearch.call(this);\n },\n\n /**\n * Whenever the input within the search box is changed by the user this event is triggered.\n *\n * @event SearchInputChanged\n * @param {Object} data The current text entered by the user\n * @param {String} text Same as data\n * @param {String} [type=\"searchInputChanged\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.on(L.SearchBox.Events.SearchInputChanged, function(eventObject) {\n * console.log(eventObject.text);\n * });\n * ```\n */\n /**\n * This event appears when response from search service is being processed. For each result which is being\n * rendered on the prompt list such event is fired.\n *\n * @event ResultCreated\n * @param {Object} data The result from search service response that is being processed\n * @param {String} [type=\"resultCreated\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.on(L.SearchBox.Events.ResultCreated, function(eventObject) {\n * console.log(eventObject.data);\n * });\n * ```\n */\n /**\n * Event that is fired when user selects the result from list or when current location is identified.\n *\n * @event ResultClicked\n * @param {Object} data Selected result object from search service response\n * @param {String} text The human readable string representation of selected result\n * @param {String} [type=\"resultClicked\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.on(L.SearchBox.Events.ResultClicked, function(eventObject) {\n * console.log(eventObject.text);\n * console.log(eventObject.data);\n * });\n * ```\n */\n /**\n * Event that is fired when the response from search service is already processed and rendered in a form\n * of list of possible results.\n *\n * @event ResultsDrawn\n * @param {Array} data Array of search service results. Each result has, among other parameters, its\n * `type`, `address` and `position`.\n * @param {String} [type=\"resultsDrawn\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.on(L.SearchBox.Events.ResultsDrawn, function(eventObject) {\n * console.log(eventObject.data);\n * });\n * ```\n */\n /**\n * Event that is fired when the response from search service appears for both normal and prompt query.\n *\n * @event ResultsFound\n * @param {Array} data Array of search service results. Each result has, among other parameters, its\n * `type`, `address` and `position`.\n * @param {String} [type=\"resultsFound\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.on(L.SearchBox.Events.ResultsFound, function(eventObject) {\n * console.log(eventObject.data);\n * });\n * ```\n */\n /**\n * Event that is fired when user clicks the clear search box input button.\n *\n * @event ClearButtonClicked\n * @param {String} [type=\"clearButtonClicked\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.on(L.SearchBox.Events.ClearButtonClicked, function() {\n * console.log(\"User clicked the clear button\");\n * });\n * ```\n */\n /**\n * Event that is fired when prompt results list is being cleared.\n *\n * @event ResultsCleared\n * @param {String} [type=\"resultsCleared\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.on(L.SearchBox.Events.LocationsCleared, function() {\n * console.log(\"Results were cleared\");\n * });\n * ```\n */\n /**\n * Event that is fired when obtaining user's current location fails.\n *\n * @event LocationError\n * @param {Object} eventObject All failure information\n * @param {String} [type=\"locationError\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.on(L.SearchBox.Events.LocationError, function(eventObject) {\n * console.log(eventObject);\n * });\n * ```\n */\n Events: EVENTS\n });\n\n return function (options) {\n var searchBox = new L.SearchBox(options);\n utils.addDeprecatedProperty(searchBox, 'Event', 'Events');\n return searchBox;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Shows a button that provides location capabilities.\n *\n * @example\n * ```javascript\n * var widget = (new L.Location()).addTo(map);\n *\n * widget.on(L.Location.Events.LocationFound, function (event) {\n * console.log('LocationFound');\n * console.log(event);\n * });\n *\n * widget.on(L.Location.Events.LocationError, function (event) {\n * console.log('LocationError');\n * console.log(event);\n * });\n *\n * @class Location\n * @namespace L\n * @extends L.Control\n * @uses L.Evented\n * @module Widgets\n * @constructor\n * @param {Object} [options]\n * @param {String} [options.imageSrc=null] The image path for locate button. If this option is passed the button would\n * be created as an `` tag.\n * @param {Number[]} [options.size=[34,34]] Its an array of two integers (width, height).\n * The default size of the icon will be double if the user's device has a screen with Retina display capability.\n * Allows to change size of the image, a useful option for SVG images.\n * @param {String} [options.className=\"\"] The class name of the container element.\n * With this option an external icon library (i.e. Font Awesome) could be used for widget's button.\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, Utils) {\n 'use strict';\n\n var EVENTS = {\n LocationFound: 'locationFound',\n LocationError: 'locationError'\n };\n\n function getClassName(options) {\n return options.className || options.imageSrc ? options.className : 'icon-locate_me_btn';\n }\n\n function setSizeStyle(style, size) {\n if (size) {\n style.width = size[0] + 'px';\n style.height = size[1] + 'px';\n style.backgroundSize = size[0] + 'px ' + size[1] + 'px';\n }\n }\n\n L.Location = L.Control.extend({\n\n includes: L.Evented.prototype,\n\n options: {\n imageSrc: null,\n size: L.Browser.retina ? [57, 57] : [34, 34],\n className: ''\n },\n\n createContainer: function createContainer() {\n var className = getClassName(this.options),\n container = L.DomUtil.create('div', 'leaflet-control-location ' + className),\n img;\n setSizeStyle(container.style, this.options.size);\n container.style.cursor = 'pointer';\n if (!L.Browser.svg || this.options.imageSrc) {\n img = L.DomUtil.create('img', '', container);\n img.src = this.options.imageSrc || L.Icon.Default.imagePath + '/locate_me_btn.png';\n img.style.cursor = 'pointer';\n }\n return container;\n },\n\n /**\n * The method to instantiates the location control.\n * Executed when adding to map.\n *\n * @ignore\n * @method onAdd\n * @param {Object} map Leaflet map to add control to.\n * @return {HTMLElement}\n */\n onAdd: function onAdd(map) {\n var container = this.createContainer();\n var control = this;\n\n L.DomEvent.addListener(container, 'mousedown', map.locate, map);\n map.on('locationfound', function (location) {\n control.fire(EVENTS.LocationFound, location);\n });\n map.on('locationerror', function (error) {\n control.fire(EVENTS.LocationError, error);\n });\n return container;\n },\n /**\n * Event that is fired when obtaining user's current location succeed.\n *\n * @event LocationFound\n * @param {Object} eventObject The found\n * location details\n * @param {String} [type=\"locationFound\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.Location()).addTo(map);\n * widget.on(L.Location.Events.LocationFound, function (eventObject) {\n * console.log(eventObject);\n * });\n * ```\n */\n /**\n * Event that is fired when obtaining user's current location fails.\n *\n * @event LocationError\n * @param {Object} eventObject All failure information\n * @param {String} [type=\"locationError\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n *\n * var widget = (new L.Location()).addTo(map);\n * widget.on(L.Location.Events.LocationError, function (eventObject) {\n * console.log(eventObject);\n * });\n * ```\n */\n Events: EVENTS,\n statics: {\n Events: EVENTS\n }\n });\n\n return function (options) {\n var location = new L.Location(options);\n Utils.addDeprecatedProperty(location, 'Event', 'Events');\n return location;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Layer that show a ruler with distance labels over the map.\n *\n * @class MeasurementRuler\n * @namespace L\n * @module Widgets\n * @constructor\n * @param {Object} [options]\n * @param {String} [options.markerColor=\"#000\"] Color to use for the ruler's stops\n * @param {String} [options.lineColor=\"#000\"] Color of the rule's line\n * @param {String} [options.rulerClassname=\"leaflet-distance-measurement__ruler\"] Class name that should be apply to\n * the ruler\n * @param {String} [options.labelClassname=\"leaflet-distance-measurement__ruler__label\"] Class name that should be\n * apply to the distance label container\n * @param {String} [options.dashArray=\"5 5\"] A string that defines the stroke dash pattern of the leaflet polyline\n * used to draw the ruler. For more details read\n *\n * @param {Number} [options.distanceOffset=0] Distance (in meters) that needs to be added to the distance calculation\n * of the ruler\n * @param {\"metric\"|\"imperial\"} [options.unitScheme=\"metric\"] Unit scheme to use for the distance calculations\n * @param {Boolean} [options.useArc=false] Uses a great arc instead of a rect line\n *\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(15)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, unitFormatConverter) {\n 'use strict';\n\n L.MeasurementRuler = L.LayerGroup.extend({\n\n options: {\n markerColor: '#000',\n lineColor: '#000',\n /**\n * @ignore\n * Class name that should be apply to the ruler.\n */\n rulerClassname: 'leaflet-distance-measurement__ruler',\n /**\n * @ignore\n * Class name that should be apply to the distance label container.\n */\n labelClassname: 'leaflet-distance-measurement__ruler__label',\n /**\n * @ignore\n * A string that defines the stroke dash pattern of the leaflet polyline used to draw the ruler.\n * https://leafletjs.com/reference-1.0.3.html#path-dasharray\n */\n dashArray: '5 5',\n /**\n * @ignore\n * Distance (in meters) that needs to be added to the distance calculation of the ruler.\n * @type {Number}\n */\n distanceOffset: 0,\n /**\n * @ignore\n * Unit scheme to use for the distance calculations.\n * @type {\"metric\"|\"imperial\"}\n */\n unitScheme: 'metric',\n /**\n * @ignore\n * Draw an arc instead of a rect line.\n * @type {Boolean}\n */\n useArc: false\n },\n\n /**\n * All the coordinates that conform the ruler path.\n *\n * @property latLngs\n * @type {L.LatLng[]}\n */\n latLngs: [],\n\n /**\n * Total distance (in meters) of the ruler.\n *\n * This property will be updated each time a coordinate is added to the ruler.\n *\n * @property distance\n * @type {Number}\n */\n distance: 0,\n\n initialize: function initialize(options) {\n this._layers = {};\n this._markers = [];\n this._labels = [];\n this.latLngs = [];\n this.distance = 0;\n L.Util.setOptions(this, options);\n },\n\n /**\n * Add new coordinates to the ruler path and redraw the ruler.\n *\n * This method extends the size of the ruler.\n *\n * @method addLatLng\n * @param {L.LatLng} latLng\n */\n addLatLng: function addLatLng(latLng) {\n var prevLatLng = this.getLast(),\n segmentDistance = prevLatLng ? prevLatLng.distanceTo(latLng) : 0;\n if (prevLatLng && prevLatLng.equals(latLng)) {\n return;\n }\n this.distance += segmentDistance;\n this.latLngs.push(latLng);\n this._redrawPolyline();\n this._drawMarkerWithLabel(latLng, this.options.distanceOffset + this.distance);\n },\n\n /**\n * Set all the ruler's path at once.\n *\n * @method setLatLngs\n * @param {L.LatLng[]} latLngs\n */\n setLatLngs: function setLatLngs(latLngs) {\n this.latLngs = latLngs;\n this.distance = 0;\n this._redrawRuler();\n },\n\n /**\n * Returns the last coordinates added to the ruler.\n *\n * @method getLast\n * @return {L.LatLng} If the ruler doesn't have coordinates it will return NULL\n */\n getLast: function getLast() {\n if (this.latLngs.length > 0) {\n return this.latLngs[this.latLngs.length - 1];\n }\n return null;\n },\n\n /**\n * @private\n * @method _buildMarker\n * @param {L.LatLng} latLng\n * @param {Number} radius\n * @return {L.CircleMarker}\n */\n _buildMarker: function _buildMarker(latLng) {\n return L.circleMarker(latLng, {\n color: this.options.markerColor,\n fillOpacity: 1,\n opacity: 1,\n fill: true,\n radius: 3,\n interactive: false,\n renderer: this._getRenderer()\n });\n },\n\n /**\n * @private\n * @method _buildLabelText\n * @param {String} label\n * @return {L.DivIcon}\n */\n _buildLabelText: function _buildLabelText(label) {\n return L.divIcon({\n className: this.options.labelClassname,\n html: '' + label + ''\n });\n },\n\n /**\n * @private\n * @method _buildLabel\n * @param {L.LatLng} latLng\n * @param {String} label\n * @return {L.Marker}\n */\n _buildLabel: function _buildLabel(latLng, label) {\n return L.marker(latLng, {\n icon: this._buildLabelText(label),\n interactive: false,\n title: label,\n alt: label\n });\n },\n\n /**\n * Creates and draw a marker with its distance label over the map.\n *\n * A distance label will be displayed next to the marker only when the distance is greater than zero.\n *\n * @private\n * @method _drawMarkerWithLabel\n * @param {L.LatLng} latLng\n * @param {Number} distance\n */\n _drawMarkerWithLabel: function _drawMarkerWithLabel(latLng, distance) {\n var distanceText = unitFormatConverter.formatDistance(distance, this.options.unitScheme === 'imperial'),\n marker = this._buildMarker(latLng),\n label = this._buildLabel(latLng, distanceText);\n this._markers.push(marker.addTo(this));\n if (distance > 0) {\n this._labels.push(label.addTo(this));\n }\n },\n\n /**\n * @private\n * @method _clearAllMarkersAndLabels\n */\n _clearAllMarkersAndLabels: function _clearAllMarkersAndLabels() {\n this._markers.forEach(function (layer) {\n layer.remove();\n });\n this._labels.forEach(function (layer) {\n layer.remove();\n });\n this._markers = [];\n this._labels = [];\n },\n\n /**\n * @private\n * @method _getRenderer\n * @return {L.SVG}\n */\n _getRenderer: function _getRenderer() {\n return L.svg({ padding: 0.8 });\n },\n\n /**\n * @private\n * @method _buildPolyline\n * @param {L.LatLng[]} latLngs\n * @param {String} [dashArray=null] https://leafletjs.com/reference-1.0.3.html#polyline-dasharray\n * @return {L.Polyline}\n */\n _buildPolyline: function _buildPolyline(latLngs, dashArray) {\n return L.polyline(latLngs, {\n color: this.options.lineColor,\n weight: 2,\n opacity: 1,\n dashArray: dashArray,\n className: this.options.rulerClassname,\n interactive: false,\n renderer: this._getRenderer()\n });\n },\n\n /**\n * Create or update the ruler path.\n * @private\n * @method _redrawPolyline\n * @return {L.Polyline}\n */\n _redrawPolyline: function _redrawPolyline() {\n var latLngs = this.latLngs;\n\n if (this.options.useArc) {\n latLngs = this._calculateGreatCircleArc(latLngs);\n }\n\n if (this.rulerPolyline) {\n this.rulerPolyline.setLatLngs(latLngs);\n } else {\n this.rulerPolyline = this._buildPolyline(latLngs, this.options.dashArray).addTo(this);\n }\n\n return this.rulerPolyline;\n },\n\n /**\n * Given a sorted list of coordinates, it fills the spaces between the coordinates to create an Arc.\n * @private\n * @method _calculateGreatCircleArc\n * @param {L.LatLng[]} latLngs\n * @return {L.LatLng[]} New array of coordinates\n */\n _calculateGreatCircleArc: function _calculateGreatCircleArc(latLngs) {\n var that = this;\n return latLngs.reduce(function (output, currentLatLng) {\n var curveSegmentPath;\n if (output.length === 0) {\n return [currentLatLng];\n } else {\n curveSegmentPath = that._polylineArc(output.pop(), currentLatLng);\n return output.concat(curveSegmentPath);\n }\n }, []);\n },\n\n /**\n * Redraw the labels and markers.\n * @private\n * @method _redrawAllMarkersAndLabels\n */\n _redrawAllMarkersAndLabels: function _redrawAllMarkersAndLabels() {\n this._clearAllMarkersAndLabels();\n this.latLngs.forEach(function (latLng, index) {\n var prevLatLng = index > 0 ? this.latLngs[index - 1] : null,\n segmentDistance = prevLatLng ? prevLatLng.distanceTo(latLng) : 0;\n this.distance += segmentDistance;\n this._drawMarkerWithLabel(latLng, this.options.distanceOffset + this.distance);\n }, this);\n },\n\n /**\n * Redraw the polyline, labels and markers.\n * @private\n * @method _redrawRuler\n */\n _redrawRuler: function _redrawRuler() {\n this._redrawPolyline();\n this._redrawAllMarkersAndLabels();\n },\n\n /**\n * Calculate Great-circle Arc (= shortest distance on a sphere like the Earth) between two coordinates\n * formulas: http://www.edwilliams.org/avform.htm\n * The content of this method was copied (and slightly modified) from\n * https://github.com/ppete2/Leaflet.PolylineMeasure .\n * @private\n * @method _polylineArc\n * @param {LatLng} from\n * @param {LatLng} to\n * @return {Array}\n */\n _polylineArc: function _polylineArc(from, to) {\n var d, arcpoints, arrLatLngs;\n /**\n * work with with copies of object's elements from.lat and from.lng,\n * otherwise they would get modified due to call-by-reference on Objects in Javascript\n */\n var fromLat = from.lat;\n var fromLng = from.lng;\n var toLat = to.lat;\n var toLng = to.lng;\n\n function gCinterpolate(f) {\n var A = Math.sin((1 - f) * d) / Math.sin(d);\n var B = Math.sin(f * d) / Math.sin(d);\n var x = A * Math.cos(fromLat) * Math.cos(fromLng) + B * Math.cos(toLat) * Math.cos(toLng);\n var y = A * Math.cos(fromLat) * Math.sin(fromLng) + B * Math.cos(toLat) * Math.sin(toLng);\n var z = A * Math.sin(fromLat) + B * Math.sin(toLat);\n // atan2 better than atan-function cause results are from -pi to +pi\n // => results of latInterpol, lngInterpol always within range -180° ... +180°\n // => conversion into values < -180° or > + 180° has to be done afterwards\n var latInterpol = 180 / Math.PI * Math.atan2(z, Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)));\n var lngInterpol = 180 / Math.PI * Math.atan2(y, x);\n // don't split polyline if it crosses dateline ( -180° or +180°).\n // Without the polyline would look like: +179° ==> +180° ==> -180° ==> -179°...\n // algo: if difference lngInterpol-from.lng is > 180°\n // there's been an unwanted split from +180 to -180 cause an arc can never span >180°\n var diff = lngInterpol - fromLng * 180 / Math.PI;\n function trunc(n) {\n return Math[n > 0 ? 'floor' : 'ceil'](n);\n } // alternatively we could use the new Math.trunc method, but Internet Explorer doesn't know it\n if (diff < 0) {\n lngInterpol = lngInterpol - trunc((diff - 180) / 360) * 360;\n } else {\n lngInterpol = lngInterpol - trunc((diff + 180) / 360) * 360;\n }\n return L.latLng(latInterpol, lngInterpol);\n }\n\n function gCarc(npoints) {\n var i, step, coordPair;\n var arrArcCoords = [];\n var delta = 1.0 / (npoints - 1);\n // first point of Arc should NOT be returned\n for (i = 0; i < npoints; i++) {\n step = delta * i;\n coordPair = gCinterpolate(step);\n arrArcCoords.push(coordPair);\n }\n return arrArcCoords;\n }\n\n fromLat = fromLat * Math.PI / 180;\n fromLng = fromLng * Math.PI / 180;\n toLat = toLat * Math.PI / 180;\n toLng = toLng * Math.PI / 180;\n d = 2.0 * Math.asin(Math.sqrt(Math.pow(Math.sin((fromLat - toLat) / 2.0), 2) + Math.cos(fromLat) * Math.cos(toLat) * Math.pow(Math.sin((fromLng - toLng) / 2.0), 2)));\n arcpoints = 100; // 100 points = 99 line segments.\n // lower value to make arc less accurate or increase value to make it more accurate.\n arrLatLngs = gCarc(arcpoints);\n return arrLatLngs;\n }\n });\n\n return L.MeasurementRuler;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(101);\nmodule.exports = __webpack_require__(102);\n\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports) {\n\n(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * The main namespace of the TomTom Maps SDK for Web. This is a place where you get access to all the services,\n * Leaflet's main object `L` and configuration.\n *\n * @class tomtom\n * @module The tomtom namespace\n */\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function (require) {\n 'use strict';\n\n var tomtom, requester, L, security, mapboxProvider, analytics;\n\n __webpack_require__(103);\n __webpack_require__(104);\n __webpack_require__(48);\n\n tomtom = {};\n\n requester = __webpack_require__(11);\n\n analytics = __webpack_require__(12);\n /**\n * This method sets the content of TomTom-User-Agent header. We are collecting anonymous data for\n * statistics of usage of our services in order to increase quality of our products.\n * @method setProductInfo\n * @param {String} productId Identifier (e.g. a name) of your application e.g. MyApplication\n * @param {String} productVersion Version of your application e.g. 1.0.2\n */\n tomtom.setProductInfo = analytics.setProductInfo;\n\n /**\n * Factory function to create instances of the {{#crossLink \"L.TomTomMarkersLayer\"}}{{/crossLink}} class.\n *\n * @method tomTomMarkersLayer\n * @param {Object} [options] All the available options are described in the class page\n * @return {L.TomTomMarkersLayer}\n */\n tomtom.tomTomMarkersLayer = __webpack_require__(147);\n\n /**\n * Tells the SDK to use JSONP instead of JSON (default) for the requests to TomTom Maps APIs.\n *\n * @example\n * ```javascript\n * tomtom.useJsonp(true); // all requests will be JSONP from now on\n * ```\n *\n * @method useJsonp\n * @param {Boolean} [useJsonp] `true`: JSONP will be used, `false` JSON will be used\n * @deprecated The support for JSONP will be removed soon. Please consider using the JSON implementation.\n */\n tomtom.useJsonp = requester.useJsonp;\n\n /**\n * Tells the SDK to use HTTP instead of HTTPS (default) for the requests to TomTom Maps APIs.\n *\n * This configuration can be decided per service call basis with the `protocol` option.\n *\n * @example\n * ```javascript\n * tomtom.useHttp(true); // all requests will be HTTP now\n * ````\n *\n * @method useHttp\n * @param {Boolean} [useHttp] `true`: HTTP will be used, `false` HTTPS will be used\n */\n tomtom.useHttp = requester.useHttp;\n\n L = __webpack_require__(3);\n\n /**\n * Gives you access to the Leaflet's library\n * used by the SDK.\n *\n * @property L\n * @type {Object}\n */\n tomtom.L = L;\n\n /**\n * Alias of the L property.\n *\n * @property display\n * @type {Object}\n */\n tomtom.display = L;\n\n //just to be backward compatible (we build car with thill)\n tomtom.Map = L.Map;\n\n /**\n * Factory function to create instances of the L.Map class.\n *\n * @method map\n * @return {L.Map}\n */\n tomtom.map = L.map;\n\n /**\n * Factory function to create instances of the TrafficIncidents class.\n *\n * @method traffic\n * @param {Object} [options] All the available options are described in the class page\n * @return {TrafficIncidents}\n */\n tomtom.traffic = __webpack_require__(64);\n\n /**\n * Factory function to create instances of the Copyright class.\n *\n * @method copyright\n * @param {Object} [options] All the available options are described in the class page\n * @return {Copyright}\n */\n tomtom.copyright = __webpack_require__(59);\n\n /**\n * Factory function to create instances of the CopyrightCaption class.\n *\n * @method copyrightCaption\n * @param {Object} [options] All the available options are described in the class page\n * @return {CopyrightCaption}\n */\n tomtom.copyrightCaption = __webpack_require__(52);\n\n /**\n * Factory function to create instances of the Geocode class.\n *\n * @method geocode\n * @param {Object} [options] All the available options are described in the class page\n * @return {Geocode}\n */\n tomtom.geocode = __webpack_require__(163);\n\n /**\n * Factory function to create instances of the class.\n *\n * @method structuredGeocode\n * @param {Object} [options] All the available options are described in the class page\n * @return {StructuredGeocode}\n */\n tomtom.structuredGeocode = __webpack_require__(166);\n\n /**\n * Factory function to create instances of the ReverseGeocode class.\n *\n * @method reverseGeocode\n * @param {Object} [options] All the available options are described in the class page\n * @return {ReverseGeocode}\n */\n tomtom.reverseGeocode = __webpack_require__(25);\n /**\n * Factory function to create instances of the CrossStreetLookupclass.\n *\n * @method crossStreetLookup\n * @param {Object} [options] All the available options are described in the class page\n * @return {CrossStreetLookup}\n */\n tomtom.crossStreetLookup = __webpack_require__(169);\n\n /**\n * Factory function to create instances of the FuzzySearch class.\n *\n * @method fuzzySearch\n * @param {Object} [options] All the available options are described in the class page\n * @return {FuzzySearch}\n */\n tomtom.fuzzySearch = __webpack_require__(95);\n\n /**\n * Factory function to create instances of the PoiSearch class.\n *\n * @method poiSearch\n * @param {Object} [options] All the available options are described in the class page\n * @return {PoiSearch}\n */\n tomtom.poiSearch = __webpack_require__(170);\n\n /**\n * Factory function to create instances of the CategorySearch class.\n *\n * @method categorySearch\n * @param {Object} [options] All the available options are described in the class page\n * @return {CategorySearch}\n */\n tomtom.categorySearch = __webpack_require__(171);\n\n /**\n * Factory function to create instances of the GeometrySearch class.\n *\n * @method geometrySearch\n * @param {Object} [options] All the available options are described in the class page\n * @return {GeometrySearch}\n */\n tomtom.geometrySearch = __webpack_require__(172);\n\n /**\n * Factory function to create instances of the NearbySearch class.\n *\n * @method nearbySearch\n * @param {Object} [options] All the available options are described in the class page\n * @return {NearbySearch}\n */\n tomtom.nearbySearch = __webpack_require__(90);\n\n /**\n * Factory function to create instances of the LowBandwidthSearch class.\n *\n * @method lowBandwidthSearch\n * @param {Object} [options] All the available options are described in the class page\n * @return {LowBandwidthSearch}\n */\n tomtom.lowBandwidthSearch = __webpack_require__(173);\n\n /**\n * Factory function to create instances of the AlongRouteSearch class.\n *\n * @method alongRouteSearch\n * @param {Object} [options] All the available options are described in the class page\n * @return {AlongRouteSearch}\n */\n tomtom.alongRouteSearch = __webpack_require__(175);\n\n /**\n * Factory function to create instances of the TrafficFlowSegmentData class.\n *\n * @method trafficFlowSegmentData\n * @param {Object} [options] All the available options are described in the class page\n * @return {trafficFlowSegmentData}\n */\n tomtom.trafficFlowSegmentData = __webpack_require__(176);\n\n /**\n * Factory function to create instances of the AdditionalData class.\n *\n * @method additionalData\n * @param {Object} [options] All the available options are described in the class page\n * @return {AdditionalData}\n */\n tomtom.additionalData = __webpack_require__(178);\n\n // this was kept for backwards compatibility but it will be removed in the future\n tomtom.additionalDataProvider = tomtom.additionalData;\n\n /**\n * Factory function to create instances of the Routing class.\n *\n * @method routing\n * @param {Object} [options] All the available options are described in the class page\n * @return {Routing}\n */\n tomtom.routing = __webpack_require__(40);\n\n /**\n * Factory function to create instances of the Reachable Range Routing class.\n *\n * @method reachableRange\n * @param {Object} [options] All the available options are described in the class page\n * @return {ReachableRange}\n */\n tomtom.reachableRange = __webpack_require__(180);\n\n /**\n * Factory function to create instances of the MatrixRouting class.\n *\n * @method matrixRouting\n * @param {Object} [options] All the available options are described in the class page\n * @return {MatrixRouting}\n */\n tomtom.matrixRouting = __webpack_require__(183);\n\n /**\n * Factory function that creates a new instance of the L.ControlPanel widget.\n *\n * @method controlPanel\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.ControlPanel}\n */\n tomtom.controlPanel = __webpack_require__(185);\n\n /**\n * Factory function that creates a new instance of the L.Foldable widget.\n *\n * @method foldable\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.Foldable}\n */\n tomtom.foldable = __webpack_require__(46);\n\n /**\n * Gives you access to the L.LanguageSelector module.\n * @property languageSelector\n * @type L.LanguageSelector\n */\n tomtom.languageSelector = __webpack_require__(186);\n\n /**\n * Returns the global locale service instance used by all the leaflet maps.\n *\n * It lets you get and change the locale configuration used by the entire SDK.\n *\n * Whenever the {{#crossLink \"LocaleService/setCurrentLocale:method\"}}{{/crossLink}} method of\n * this instance is called, all the {{#crossLink \"LocaleService\"}}{{/crossLink}} instances used by\n * maps will be updated too.\n *\n * But if you use the {{#crossLink \"LocaleService/setCurrentLocale:method\"}}{{/crossLink}}\n * method in a {{#crossLink \"LocaleService\"}}{{/crossLink}} of a map instance only that\n * instance will be updated.\n *\n * @method globalLocaleService\n * @return {LocaleService}\n */\n tomtom.globalLocaleService = __webpack_require__(30);\n\n /**\n * Factory function that creates a new instance of the L.ResultsList widget.\n *\n * @method resultsList\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.ResultsList}\n */\n tomtom.resultsList = __webpack_require__(187);\n\n /**\n * Factory function that creates a new instance of the L.SearchBox widget.\n *\n * @method searchBox\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.SearchBox}\n */\n tomtom.searchBox = __webpack_require__(97);\n\n /**\n * Factory function that creates a new instance of the L.DistanceMeasurement widget.\n *\n * @method distanceMeasurement\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.DistanceMeasurement}\n */\n tomtom.distanceMeasurement = __webpack_require__(188);\n\n /**\n * Factory function that creates a new instance of the L.Location widget.\n *\n * @method location\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.Location}\n */\n tomtom.location = __webpack_require__(98);\n\n /**\n * Factory function that creates a new instance of the L.RouteInputs widget.\n *\n * @method routeInputs\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.RouteInputs}\n */\n tomtom.routeInputs = __webpack_require__(190);\n\n /**\n * Factory function that creates a new instance of the L.RouteInstructions widget.\n *\n * @method routeInstructions\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.RouteInstructions}\n */\n tomtom.routeInstructions = __webpack_require__(191);\n\n /**\n * Factory function that creates a new instance of the L.MessageBox class.\n *\n * @method messageBox\n * @param {Object} [options] All the options are available in the class's page\n * @return {L.MessageBox}\n */\n tomtom.messageBox = __webpack_require__(61);\n\n /**\n * Gives you access to the UnitFormatConverter module.\n *\n * @property unitFormatConverter\n * @type UnitFormatConverter\n */\n tomtom.unitFormatConverter = __webpack_require__(15);\n\n /**\n * Gives you access to the L.UnitSelector module.\n * @property unitSelector\n * @type L.UnitSelector\n */\n tomtom.unitSelector = __webpack_require__(192);\n\n /**\n * Factory function that creates a new instance of the UnitService class.\n *\n * @method unitService\n * @param {UnitService} [parent] If is defined makes the new instance a \"slave\" of the given instance\n * @return {UnitService}\n */\n tomtom.unitService = __webpack_require__(39);\n\n /**\n * Returns the global unit view service instance used by all the leaflet maps.\n *\n * It lets you get and change the unit view used by the entire SDK.\n *\n * Whenever the {{#crossLink \"UnitService/setCurrentUnit:method\"}}{{/crossLink}} method of\n * this instance is called, all the {{#crossLink \"UnitService\"}}{{/crossLink}} instances used by\n * maps will be updated too.\n *\n * But if you use the {{#crossLink \"UnitService/setCurrentUnit:method\"}}{{/crossLink}}\n * method in a {{#crossLink \"UnitService\"}}{{/crossLink}} of a map instance only that\n * instance will be updated.\n *\n * @method globalUnitService\n * @return {UnitService}\n */\n tomtom.globalUnitService = __webpack_require__(38);\n\n /**\n * Returns the global geopolitical view service instance used by all the leaflet maps.\n *\n * It lets you get and change the geopolitical view used by the entire SDK.\n *\n * Whenever the {{#crossLink \"GeopolViewService/setCurrentGeopolView:method\"}}{{/crossLink}} method of\n * this instance is called, all the {{#crossLink \"GeopolViewService\"}}{{/crossLink}} instances used by\n * maps will be updated too.\n *\n * But if you use the {{#crossLink \"GeopolViewService/setCurrentGeopolView:method\"}}{{/crossLink}}\n * method in a {{#crossLink \"GeopolViewService\"}}{{/crossLink}} of a map instance only that\n * instance will be updated.\n *\n * @method globalGeopolViewService\n * @return {GeopolViewService}\n */\n tomtom.globalGeopolViewService = __webpack_require__(33);\n\n /**\n * Gives you access to the L.UnitSelector module.\n * @property unitSelector\n * @type L.UnitSelector\n */\n tomtom.geopolViewSelector = __webpack_require__(193);\n\n /**\n * Factory function that creates a new instance of the L.MarkersLayer class.\n *\n * @deprecated\n * @method markersView\n * @param {Object} [options] All the options are available in the class's page\n * @return {L.MarkersLayer}\n */\n tomtom.markersView = __webpack_require__(194);\n\n /**\n * Factory function that creates a new instance of the L.RouteOnMap widget.\n *\n * @method routeOnMap\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.RouteOnMap}\n */\n tomtom.routeOnMap = __webpack_require__(195);\n\n /**\n * Factory function that creates a new instance of the L.RouteSummary widget.\n *\n * @method routeSummary\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.RouteSummary}\n */\n tomtom.routeSummary = __webpack_require__(196);\n\n /**\n * Factory function that creates a new instance of the L.TomTomMinimap widget.\n *\n * @method miniMap\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.TomTomMinimap}\n */\n tomtom.miniMap = __webpack_require__(197);\n\n security = __webpack_require__(5);\n\n /**\n * Sets a key 'config' object in the security configuration file. When the key's name is omitted,\n * then the default key is set.\n *\n * @example\n * ```javascript\n * tomtom.key('keyValue'); // sets global key\n * tomtom.key('service/traffic', 'keyValue'); // sets key for traffic service\n * ```\n *\n * @method key\n * @param {String} name Name of the key to be set\n * @param {String} [value] Value of the key\n */\n tomtom.key = security.setKey;\n\n /**\n * Sets a key for the services: map tiles and copyrights. Can also be passed on the map object's initialization with\n * _key_ parameter.\n *\n * @example\n * ```javascript\n * tomtom.mapsKey('keyValue'); // sets maps key\n * ```\n *\n * @method mapsKey\n * @param {String} value Value of the maps key\n */\n tomtom.mapsKey = security.setKeyForName('services/display');\n\n /**\n * Sets a key for the vector tiles service. Can also be passed on the map object's initialization\n * with the _key_ parameter or using _key_ method. In cases where default key covers vectors tile service as well\n * setting specific key here is not required.\n *\n * @example\n * ```javascript\n * tomtom.vectorMapsKey('keyValue'); // sets the vector maps key\n * ```\n *\n * @method vectorMapsKey\n * @param {String} value Value of the vector maps key\n */\n tomtom.vectorMapsKey = security.setKeyForName('services/display/vector');\n\n /**\n * Sets a key for the traffic incidents tiles and services. Can also be passed on the map object's\n * initialization as an option of the traffic incidents layer.\n *\n * @example\n * ```javascript\n * tomtom.trafficKey('keyValue'); // sets traffic key\n * ```\n *\n * @method trafficKey\n * @param {String} value Value of the traffic key\n */\n tomtom.trafficKey = security.setKeyForName('services/traffic');\n\n /**\n * Sets a key for traffic flow tiles service. Can also be passed on the map object's initialization\n * as an option of the traffic flow layer.\n *\n * @example\n * ```javascript\n * tomtom.trafficFlowKey('keyValue'); // sets traffic flow key\n * ```\n *\n * @method trafficFlowKey\n * @param {String} value Value of the traffic flow key\n */\n tomtom.trafficFlowKey = security.setKeyForName('services/trafficFlow');\n\n /**\n * Sets a key for search, geocode and reverse geocode services.\n *\n * @example\n * ```javascript\n * tomtom.searchKey('keyValue'); // sets search key\n * ```\n *\n * @method searchKey\n * @param {String} value Value of the search key\n */\n tomtom.searchKey = security.setKeyForName('services/search');\n\n /**\n * Sets a key for the routing service.\n *\n * @example\n * ```javascript\n * tomtom.routingKey('keyValue'); // sets routing key\n * ```\n *\n * @method routingKey\n * @param {String} value Value of the routing key\n */\n tomtom.routingKey = security.setKeyForName('services/routing');\n\n /**\n * Factory function to create instances of the LocaleService class.\n *\n * @method localeService\n * @return {LocaleService}\n */\n tomtom.localeService = __webpack_require__(31);\n\n mapboxProvider = __webpack_require__(27);\n\n /**\n * It takes a mapbox global object that have to be used for render the vector maps.\n *\n * The use of this method is required if you use the version of this SDK version without Mapbox GL JS\n * embedded in it.\n *\n * The currently supported version of Mapbox GL JS is v${mapboxgl.version}.\n *\n * @example\n * ```js\n * tomtom.setMapbox(mapboxgl); //sets mapboxgl reference\n * ```\n *\n * @method setMapbox\n * @param {Object} mapboxgl Reference to mapboxgl object (global object provided by Mapbox GL JS library)\n */\n tomtom.setMapbox = mapboxProvider.setMapbox;\n\n /**\n * Factory function to create instances of the StaticMapImage class.\n *\n * @method staticMapImage\n * @param {Object} [options] All the available options are described in the class page\n * @return {StaticMapImage}\n */\n tomtom.staticMapImage = __webpack_require__(49);\n\n /*\n * It includes a method in L.Map to easily generate an URL to obtain an static image of the current viewport.\n */\n __webpack_require__(48);\n\n return tomtom;\n}.call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_RESULT__ = function () {\n /**\n * @ignore\n * Overrides default Leaflet touch device recognition.\n * Leaflet uses Object.freeze on L.Browser, so we are unable to override L.Browser.touch.\n * Luckly Leaflet provides global flag that let's us change the default detection\n * by setting global variable: https://github.com/Leaflet/Leaflet/blob/master/build/docs-misc.leafdoc.\n */\n window.L_NO_TOUCH = !('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch);\n}.call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(105)], __WEBPACK_AMD_DEFINE_RESULT__ = function (promise) {\n\n //This is pollyfill for old IE trim method\n if (typeof String.prototype.trim !== 'function') {\n String.prototype.trim = function () {\n return this.replace(/^\\s+|\\s+$/g, '');\n };\n }\n\n /**\n * @ignore\n * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n * Version 2, December 2004\n *\n * Copyright (C) 2011 Alex Kloss \n *\n * Everyone is permitted to copy and distribute verbatim or modified\n * copies of this license document, and changing it is allowed as long\n * as the name is changed.\n *\n * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n *\n * 0. You just DO WHAT THE FUCK YOU WANT TO.\n */\n\n if (![].indexOf) {\n Array.prototype.indexOf = function (a, b, c) {\n for (c = this.length, b = (c + ~~b) % c; b < c && (!(b in this) || this[b] !== a); ++b) {\n //do nothing\n }\n return b ^ c ? b : -1;\n };\n }\n\n if (![].forEach) {\n Array.prototype.forEach = function (a, b, c, d) {\n for (d = this.length, c = 0; c < d; ++c) {\n if (c in this) {\n a.call(b, this[c], c, this);\n }\n }\n };\n }\n\n if (window.Promise === undefined) {\n window.Promise = promise;\n }\n\n Number.isInteger = Number.isInteger || function (value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n };\n\n //Object.assign - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n //eslint-disable-next-line eqeqeq\n if (typeof Object.assign != 'function') {\n //eslint-disable-next-line no-unused-vars\n Object.assign = function (target, varArgs) {\n // .length of function is 2\n var to, index, nextSource, nextKey;\n //eslint-disable-next-line eqeqeq\n if (target == null) {\n // TypeError if undefined or null\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n to = Object(target);\n\n for (index = 1; index < arguments.length; index++) {\n nextSource = arguments[index];\n //eslint-disable-next-line eqeqeq\n if (nextSource != null) {\n // Skip over if undefined or null\n for (nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, global) {var require;!function(t,e){ true?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.ES6Promise=e()}(this,function(){\"use strict\";function t(t){var e=typeof t;return null!==t&&(\"object\"===e||\"function\"===e)}function e(t){return\"function\"==typeof t}function n(t){I=t}function r(t){J=t}function o(){return function(){return process.nextTick(a)}}function i(){return\"undefined\"!=typeof H?function(){H(a)}:c()}function s(){var t=0,e=new V(a),n=document.createTextNode(\"\");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function u(){var t=new MessageChannel;return t.port1.onmessage=a,function(){return t.port2.postMessage(0)}}function c(){var t=setTimeout;return function(){return t(a,1)}}function a(){for(var t=0;t 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n function getBasePath() {\n var scripts = document.getElementsByTagName('script'),\n pattern = /(.*)tomtom.min.js/,\n i,\n path;\n for (i = 0; i < scripts.length; i++) {\n if (scripts[i].src) {\n path = pattern.exec(scripts[i].src);\n if (path) {\n return path[1];\n }\n }\n }\n return '';\n }\n\n return {\n get: function get(map) {\n var basePath = map && map.options && map.options.basePath ? map.options.basePath + '/' : getBasePath();\n return basePath + 'images';\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(11), __webpack_require__(116), __webpack_require__(117), __webpack_require__(5), __webpack_require__(18), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (http, stylesParser, relativeToAbsolutePathConverter, security, mainConfig, Utils) {\n 'use strict';\n\n var originalSetStyle;\n\n /**\n * @ignore\n * @param {String} url\n * @param {Function} callback\n */\n function requestStyle(url, callback) {\n http.get({\n url: url,\n callback: callback\n });\n }\n\n function validateAndSetStyle(styleDefinition, options) {\n var apiKey, styleParserOptions, fallbackResourceUrlReqex, setStyle;\n options = options || {};\n apiKey = security.getKey(options.securityKeyName);\n styleParserOptions = {\n apiKey: apiKey,\n language: options ? options.language : undefined,\n geopolView: options ? options.geopolView : undefined,\n resourceUrls: options && options.resourceUrls ? {\n glyphs: relativeToAbsolutePathConverter.convert(options.resourceUrls.glyphs),\n sprite: relativeToAbsolutePathConverter.convert(options.resourceUrls.sprite)\n } : undefined\n };\n fallbackResourceUrlReqex = /https:\\/\\/api.tomtom.com\\/maps-sdk-js\\/\\d*\\.\\d*\\.\\d*\\/glyphs/g;\n setStyle = function setStyle() {\n if (styleParserOptions.resourceUrls && fallbackResourceUrlReqex.test(styleParserOptions.resourceUrls.glyphs)) {\n console.warn('You should host glyphs and sprites on your own.', '\\n', 'During map initialization pass glyphs and sprites urls', '\\n', 'var map = tomtom.map(\"map\", {', '\\n', 'key: \"\",', '\\n', 'source: \"vector\",', '\\n', 'basePath: ,', '\\n', 'glyphsUrl: ,', '\\n', 'spriteUrl: ', '\\n', '});', '\\n', 'If you set basePath correctly the SDK will try to load glyphs and sprites', 'from there and you will not need to set the URL explicitly.');\n }\n\n originalSetStyle.call(this, stylesParser(styleDefinition, styleParserOptions), options);\n };\n\n setStyle = setStyle.bind(this);\n\n /**\n * @ignore\n * Try to load sprite from the provided resource url. If it fails switch to hosted glyphs and sprites.\n * If url is not provided set provided style as it is.\n */\n if (styleParserOptions.resourceUrls && styleParserOptions.resourceUrls.sprite) {\n http.get({\n url: styleParserOptions.resourceUrls.sprite + '.json',\n callback: setStyle,\n fail: function fail() {\n styleParserOptions.resourceUrls = {\n glyphs: mainConfig['vector.glyphs'],\n sprite: mainConfig['vector.sprites']\n };\n setStyle();\n }\n });\n } else {\n setStyle();\n }\n }\n\n /**\n * @ignore\n * @param {Object} styleDefinition\n * @param {Object} options\n */\n function setStyleDefinition(styleDefinition, options) {\n var that = this;\n if (options && options.preSetStyleCallback) {\n options.preSetStyleCallback(styleDefinition).then(function (styleDefinition) {\n validateAndSetStyle.call(that, styleDefinition, options);\n });\n } else {\n validateAndSetStyle.call(that, styleDefinition, options);\n }\n }\n\n /**\n * @ignore\n * @param {String} styleUrl\n * @param {Object} options\n */\n function setStyleDefinitionFromUrl(styleUrl, options) {\n var that = this;\n requestStyle(styleUrl, function (retrievedStyle) {\n setStyleDefinition.call(that, retrievedStyle, options);\n });\n }\n\n /**\n * @ignore\n * @param {Object} styleDefinition\n * @return {Boolean}\n */\n function isTomtomStyleObjectConfig(styleDefinition) {\n return (typeof styleDefinition === 'undefined' ? 'undefined' : _typeof(styleDefinition)) === 'object' && styleDefinition !== null && styleDefinition.styleUrlMapping;\n }\n\n /**\n * @ignore\n * @param {Object} styleDefinition\n * @return {String}\n */\n function resolveTomtomStyleUrl(styleDefinition) {\n var url = styleDefinition.styleUrlMapping[styleDefinition.theme.style][styleDefinition.theme.layer];\n return relativeToAbsolutePathConverter.convert(url);\n }\n\n /**\n * @ignore\n * @param {Object|String} styleDefinitionOrUrl\n * @param {Object} style.styleUrlMapping\n * @param {Object} [options]\n */\n function setStyle(styleDefinitionOrUrl, options) {\n if (isTomtomStyleObjectConfig(styleDefinitionOrUrl)) {\n options = options || {};\n options.resourceUrls = styleDefinitionOrUrl.resourceUrls;\n options.language = styleDefinitionOrUrl.language;\n options.geopolView = styleDefinitionOrUrl.geopolView;\n options.securityKeyName = styleDefinitionOrUrl.securityKeyName;\n options.preSetStyleCallback = styleDefinitionOrUrl.preSetStyleCallback;\n styleDefinitionOrUrl = resolveTomtomStyleUrl(styleDefinitionOrUrl);\n }\n\n // If a Style definition object is given\n if ((typeof styleDefinitionOrUrl === 'undefined' ? 'undefined' : _typeof(styleDefinitionOrUrl)) === 'object' && styleDefinitionOrUrl !== null) {\n setStyleDefinition.call(this, styleDefinitionOrUrl, options);\n\n // If an URL is given\n } else if (Utils.isString(styleDefinitionOrUrl)) {\n setStyleDefinitionFromUrl.call(this, styleDefinitionOrUrl, options);\n } else {\n originalSetStyle.call(this, styleDefinitionOrUrl, options);\n }\n }\n\n return {\n /**\n * @ignore\n * This method is used to enforce our styles to be loaded asynchronously and be passed to original mapboxgl\n * setStyle method LNS-10975\n * @param {Object} mapboxgl\n * @return {Function} Previously remembered setStyle function\n */\n modifySetStyle: function modifySetStyle(mapboxgl) {\n var previousOriginalSetStyleFunction;\n if (!mapboxgl || mapboxgl.Map.prototype.setStyle === setStyle) {\n return null;\n }\n previousOriginalSetStyleFunction = originalSetStyle;\n originalSetStyle = mapboxgl.Map.prototype.setStyle;\n mapboxgl.Map.prototype.setStyle = setStyle;\n return previousOriginalSetStyleFunction;\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(50), __webpack_require__(112), __webpack_require__(12), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (urlBuilder, errorHandler, analytics, Utils) {\n 'use strict';\n\n function stringify(obj) {\n try {\n return JSON.stringify(obj);\n } catch (ex) {\n return null;\n }\n }\n\n function setHeader(requestOptions, headerName, headerValue) {\n var header;\n if (!requestOptions.headers) {\n requestOptions.headers = {};\n }\n\n header = requestOptions.headers[headerName] || requestOptions.headers[headerName.toLowerCase()];\n if (!header) {\n requestOptions.headers[headerName] = headerValue;\n }\n }\n\n function addObjectBodyParams(bodyParams, requestOptions) {\n var body;\n if (!(bodyParams instanceof FormData) && !(bodyParams instanceof Blob)) {\n body = stringify(bodyParams);\n if (!body) {\n throw new Error('Unsupported request body type: ' + bodyParams);\n }\n setHeader(requestOptions, 'Content-Type', 'application/json');\n } else {\n body = bodyParams;\n }\n return body;\n }\n\n function addBodyParams(options, requestOptions) {\n var bodyParams = options.bodyParameters,\n body;\n if (!bodyParams) {\n return;\n }\n\n if (Utils.isObject(bodyParams)) {\n body = addObjectBodyParams(bodyParams, requestOptions);\n } else if (Utils.isString(bodyParams)) {\n body = bodyParams;\n }\n\n requestOptions.body = body;\n }\n\n function performFetchRequest(options, url, requestOptions) {\n fetch(url, requestOptions).then(function (response) {\n if (response.ok) {\n if (options.requestType === 'batch' && response.status === 202) {\n return options.callback(response.headers.get('Location'));\n }\n return response.json().then(options.callback);\n } else {\n return Promise.reject(response);\n }\n }).catch(function (reason) {\n errorHandler(options, reason);\n });\n }\n\n return {\n /**\n * Executes a request and processes the response as JSON.\n * @method get\n * @param {Object} options Specifies the details of the request.\n * @param {String} options.url The URL to request.\n * @param {Object} [options.queryParameters] The data to pass as GET parameters with the request.\n * @param {Object} [options.pathParameters] The data to use as {placeholders} in url.\n * @param {Function} [options.fail] The callback to execute when the request fails.\n * @param {Function} options.callback The callback to execute when the request completes.\n */\n get: function get(options) {\n var url,\n requestOptions,\n headers = {};\n options.pathParameters = options.pathParameters || {};\n options.pathParameters.contentType = 'json';\n options.pathParameters.protocol = options.pathParameters.protocol || 'https';\n\n url = urlBuilder(options.url, options.pathParameters, options.queryParameters);\n if (analytics.isTomtomOrigin(url)) {\n headers = analytics.getAnalyticsHeader();\n }\n headers['Accept'] = 'application/json'; //eslint-disable-line dot-notation\n\n requestOptions = {\n method: 'GET',\n headers: headers,\n mode: 'cors'\n };\n\n performFetchRequest(options, url, requestOptions);\n },\n\n /**\n * Executes a request and processes the response as JSON.\n * @method post\n * @param {Object} options Specifies the details of the request.\n * @param {String} options.url The URL to request.\n * @param {Object} [options.queryParameters] The data to pass as Url parameters with the request.\n * @param {Object} [options.pathParameters] The data to use as {placeholders} in url.\n * @param {Object} [options.bodyParameters] The data to pass to request body.\n * @param {Function} [options.fail] The callback to execute when the request fails.\n * @param {Function} options.callback The callback to execute when the request completes.\n */\n post: function post(options) {\n var url,\n requestOptions,\n headers = {};\n options.pathParameters = options.pathParameters || {};\n options.pathParameters.contentType = 'json';\n options.pathParameters.protocol = options.pathParameters.protocol || 'https';\n\n url = urlBuilder(options.url, options.pathParameters, options.queryParameters);\n if (analytics.isTomtomOrigin(url)) {\n headers = analytics.getAnalyticsHeader();\n }\n headers['Accept'] = 'application/json'; //eslint-disable-line dot-notation\n\n requestOptions = {\n method: 'POST',\n headers: headers,\n mode: 'cors',\n redirect: 'follow'\n };\n\n addBodyParams(options, requestOptions);\n performFetchRequest(options, url, requestOptions);\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\n function errorHandler(reason) {\n var contentType = reason.headers && reason.headers.get('content-type');\n if (reason.json) {\n if (/application\\/json.*/.test(contentType)) {\n reason.json().then(this.fail).catch(this.fail);\n } else {\n reason.text().then(this.fail).catch(this.fail);\n }\n } else {\n this.fail(reason);\n }\n }\n\n return function (options, reason) {\n var errHandler = errorHandler.bind(options);\n if (options.fail) {\n errHandler(reason);\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(114), __webpack_require__(51), __webpack_require__(115), __webpack_require__(12)], __WEBPACK_AMD_DEFINE_RESULT__ = function (aja, template, errorHandler, analytics) {\n 'use strict';\n\n function callbackFunction(callback, fail) {\n return function (response) {\n if (!response.errorResponse) {\n callback(response);\n return;\n }\n if (fail) {\n fail(response.errorResponse['@description']);\n }\n };\n }\n\n function prepareOptions(options) {\n options.pathParameters = options.pathParameters || {};\n options.pathParameters.contentType = 'jsonp';\n options.pathParameters.protocol = options.pathParameters.protocol || 'https';\n options.callbackParam = options.callbackParam || 'jsonp';\n }\n\n function addQueryParams(options, req) {\n return options.queryParameters ? req.data(options.queryParameters) : req;\n }\n\n return {\n /**\n * Executes a request and processes the response as JSON.\n * @method get\n * @param {Object} options Specifies the details of the request.\n * @param {String} options.url The URL to request with {placeholders} for path parameters. {contentType}\n * will be replaced accordingly.\n * @param {Object} [options.queryParameters] The data to pass as GET parameters with the request.\n * @param {Object} [options.pathParameters] The data to use as {placeholders} in url.\n * @param {Function} options.callback The callback to execute when the request completes.\n * @param {String} [options.callbackParam=jsonp] The parameter name that the endpoint expects to qualify\n * the JSONP callback function.\n */\n get: function get(options) {\n var url, req;\n console.warn('The support for JSONP will be removed soon. Please consider using the JSON implementation.');\n prepareOptions(options);\n url = template(options.url, options.pathParameters);\n req = aja().url(url).type('jsonp').jsonPaddingName(options.callbackParam);\n\n if (analytics.isTomtomOrigin(url)) {\n req = analytics.addAnalyticsHeader(req);\n }\n\n req = addQueryParams(options, req);\n req = errorHandler(options, req);\n req.on('success', callbackFunction(options.callback, options.fail)).go();\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!function(){\"use strict\";var a=[\"html\",\"json\",\"jsonp\",\"script\"],b=[\"connect\",\"delete\",\"get\",\"head\",\"options\",\"patch\",\"post\",\"put\",\"trace\"],c=function f(){var a={},b={},c={url:function(a){return h.call(this,\"url\",a,d.string)},sync:function(a){return h.call(this,\"sync\",a,d.bool)},cache:function(a){return h.call(this,\"cache\",a,d.bool)},type:function(a){return h.call(this,\"type\",a,d.type)},header:function(b,c){return a.headers=a.headers||{},d.string(b),\"undefined\"!=typeof c?(d.string(c),a.headers[b]=c,this):a.headers[b]},auth:function(b,c){return d.string(b),d.string(c),a.auth={user:b,passwd:c},this},timeout:function(a){return h.call(this,\"timeout\",a,d.positiveInteger)},method:function(a){return h.call(this,\"method\",a,d.method)},queryString:function(a){return h.call(this,\"queryString\",a,d.queryString)},data:function(a){return h.call(this,\"data\",a,d.plainObject)},body:function(a){return h.call(this,\"body\",a,null,function(a){if(\"object\"==typeof a){if(!(a instanceof FormData)){try{a=JSON.stringify(a)}catch(b){throw new TypeError(\"Unable to stringify body's content : \"+b.name)}this.header(\"Content-Type\",\"application/json\")}}else a+=\"\";return a})},into:function(a){return h.call(this,\"into\",a,d.selector,function(a){return\"string\"==typeof a?document.querySelectorAll(a):a instanceof HTMLElement?[a]:void 0})},jsonPaddingName:function(a){return h.call(this,\"jsonPaddingName\",a,d.string)},jsonPadding:function(a){return h.call(this,\"jsonPadding\",a,d.func)},on:function(a,c){return\"function\"==typeof c&&(b[a]=b[a]||[],b[a].push(c)),this},off:function(a){return b[a]=[],this},trigger:function(a,c){var d=this,e=function(a,c){b[a]instanceof Array&&b[a].forEach(function(a){a.call(d,c)})};if(\"undefined\"!=typeof a){a+=\"\";var f=/^([0-9])([0-9x])([0-9x])$/i,g=a.match(f);g&&g.length>3?Object.keys(b).forEach(function(a){var b=a.match(f);!(b&&b.length>3&&g[1]===b[1])||\"x\"!==b[2]&&g[2]!==b[2]||\"x\"!==b[3]&&g[3]!==b[3]||e(a,c)}):b[a]&&e(a,c)}return this},go:function(){var b=a.type||(a.into?\"html\":\"json\"),c=j();return\"function\"==typeof g[b]?g[b].call(this,c):void 0}},g={json:function(a){var b=this;g._xhr.call(this,a,function(a){if(a)try{a=JSON.parse(a)}catch(c){return b.trigger(\"error\",c),null}return a})},html:function(b){g._xhr.call(this,b,function(b){return a.into&&a.into.length&&[].forEach.call(a.into,function(a){a.innerHTML=b}),b})},_xhr:function(b,c){var d,e,f,g,h,j=this,k=a.method||\"get\",l=a.sync!==!0,m=new XMLHttpRequest,n=a.data,o=a.body,p=(a.headers||{},this.header(\"Content-Type\")),q=a.timeout;if(!p&&n&&i()&&(this.header(\"Content-Type\",\"application/x-www-form-urlencoded;charset=utf-8\"),p=this.header(\"Content-Type\")),n&&i())if(\"string\"!=typeof o&&(o=\"\"),p.indexOf(\"json\")>-1)try{o=JSON.stringify(n)}catch(r){throw new TypeError(\"Unable to stringify body's content : \"+r.name)}else{g=p&&p.indexOf(\"x-www-form-urlencoded\")>1;for(d in n)o+=g?encodeURIComponent(d)+\"=\"+encodeURIComponent(n[d])+\"&\":d+\"=\"+n[d]+\"\\n\\r\"}h=[k,b,l],a.auth&&(h.push(a.auth.user),h.push(a.auth.passwd)),m.open.apply(m,h);for(e in a.headers)m.setRequestHeader(e,a.headers[e]);m.onprogress=function(a){a.lengthComputable&&j.trigger(\"progress\",a.loaded/a.total)},m.onload=function(){var a=m.responseText;f&&clearTimeout(f),this.status>=200&&this.status<300&&(\"function\"==typeof c&&(a=c(a)),j.trigger(\"success\",a)),j.trigger(this.status,a),j.trigger(\"end\",a)},m.onerror=function(a){f&&clearTimeout(f),j.trigger(\"error\",a,arguments)},q&&(f=setTimeout(function(){j.trigger(\"timeout\",{type:\"timeout\",expiredAfter:q},m,arguments),m.abort()},q)),m.send(o)},jsonp:function(b){var c,d=this,g=document.querySelector(\"head\"),h=a.sync!==!0,i=a.jsonPaddingName||\"callback\",j=a.jsonPadding||\"_padd\"+(new Date).getTime()+Math.floor(1e4*Math.random()),k={};if(f[j])throw new Error(\"Padding \"+j+\" already exists. It must be unique.\");/^ajajsonp_/.test(j)||(j=\"ajajsonp_\"+j),window[j]=function(a){d.trigger(\"success\",a),g.removeChild(c),window[j]=void 0},k[i]=j,b=e(b,k),c=document.createElement(\"script\"),c.async=h,c.src=b,c.onerror=function(){d.trigger(\"error\",arguments),g.removeChild(c),window[j]=void 0},g.appendChild(c)},script:function(b){var c,d=this,e=document.querySelector(\"head\")||document.querySelector(\"body\"),f=a.sync!==!0;if(!e)throw new Error(\"Ok, wait a second, you want to load a script, but you don't have at least a head or body tag...\");c=document.createElement(\"script\"),c.async=f,c.src=b,c.onerror=function(){d.trigger(\"error\",arguments),e.removeChild(c)},c.onload=function(){d.trigger(\"success\",arguments)},e.appendChild(c)}},h=function(b,c,e,f){if(\"undefined\"!=typeof c){if(\"function\"==typeof e)try{c=e.call(d,c)}catch(g){throw new TypeError(\"Failed to set \"+b+\" : \"+g.message)}return\"function\"==typeof f?a[b]=f.call(this,c):a[b]=c,this}return\"undefined\"===a[b]?null:a[b]},i=function(){return[\"delete\",\"patch\",\"post\",\"put\"].indexOf(a.method)>-1},j=function(){var b=a.url,c=\"undefined\"!=typeof a.cache?!!a.cache:!0,d=a.queryString||\"\",f=a.data;return c===!1&&(d+=\"&ajabuster=\"+(new Date).getTime()),b=e(b,d),f&&!i()&&(b=e(b,f)),b};return c},d={bool:function(a){return!!a},string:function(a){if(\"string\"!=typeof a)throw new TypeError(\"a string is expected, but \"+a+\" [\"+typeof a+\"] given\");return a},positiveInteger:function(a){if(parseInt(a)!==a||0>=a)throw new TypeError(\"an integer is expected, but \"+a+\" [\"+typeof a+\"] given\");return a},plainObject:function(a){if(\"object\"!=typeof a||a.constructor!==Object)throw new TypeError(\"an object is expected, but \"+a+\" [\"+typeof a+\"] given\");return a},type:function(b){if(b=this.string(b),a.indexOf(b.toLowerCase())<0)throw new TypeError(\"a type in [\"+a.join(\", \")+\"] is expected, but \"+b+\" given\");return b.toLowerCase()},method:function(a){if(a=this.string(a),b.indexOf(a.toLowerCase())<0)throw new TypeError(\"a method in [\"+b.join(\", \")+\"] is expected, but \"+a+\" given\");return a.toLowerCase()},queryString:function(a){var b={};return\"string\"==typeof a?a.replace(\"?\",\"\").split(\"&\").forEach(function(a){var c=a.split(\"=\");2===c.length&&(b[decodeURIComponent(c[0])]=decodeURIComponent(c[1]))}):b=a,this.plainObject(b)},selector:function(a){if(\"string\"!=typeof a&&!(a instanceof HTMLElement))throw new TypeError(\"a selector or an HTMLElement is expected, \"+a+\" [\"+typeof a+\"] given\");return a},func:function(a){if(a=this.string(a),!/^([a-zA-Z_])([a-zA-Z0-9_\\-])+$/.test(a))throw new TypeError(\"a valid function name is expected, \"+a+\" [\"+typeof a+\"] given\");return a}},e=function(a,b){var c;if(a=a||\"\",b)if(-1===a.indexOf(\"?\")&&(a+=\"?\"),\"string\"==typeof b)a+=b;else if(\"object\"==typeof b)for(c in b)a+=\"&\"+encodeURIComponent(c)+\"=\"+encodeURIComponent(b[c]);return a}; true?!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function(){return c}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):\"object\"==typeof exports?module.exports=c:window.aja=window.aja||c}();\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\n function errorHandler(err) {\n if (Object.prototype.toString.call(err) === '[object String]') {\n try {\n err = JSON.parse(err);\n this.fail(err);\n } catch (e) {\n this.fail(err);\n }\n }\n this.fail(err);\n }\n\n return function (options, req) {\n var errHandler = errorHandler.bind(options);\n if (options.fail) {\n req.on('error', errHandler).on('4xx', errHandler).on('5xx', errHandler);\n }\n return req;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (Utils) {\n 'use strict';\n\n /**\n * @ignore\n * @param {String} sourceUrl\n * @param {String} paramName\n * @param {String} paramValue\n * @return {String}\n */\n\n function setQueryParamInUrl(sourceUrl, paramName, paramValue) {\n var qPrefix,\n pattern = new RegExp('(' + paramName + '=)[^&]*');\n if (pattern.test(sourceUrl)) {\n sourceUrl = sourceUrl.replace(pattern, '$1' + paramValue);\n } else {\n qPrefix = /\\?/.test(sourceUrl) ? '&' : '?';\n sourceUrl += qPrefix + paramName + '=' + paramValue;\n }\n return sourceUrl;\n }\n\n /**\n * @ignore\n * Sets the value of a parameter in the given Url string.\n *\n * It does that in two form:\n * 1. Find and replace a token for this param in the Url\n * 2. If no token is found, appends the value as a query paremeter\n *\n * @param {String} sourceUrl\n * @param {String} paramName\n * @param {String} paramValue\n * @return {String} New Url string\n */\n function setParamInUrl(sourceUrl, paramName, paramValue) {\n var token;\n if (!Utils.isString(paramName) || !Utils.isString(paramValue) || paramValue.trim().length === 0) {\n return sourceUrl;\n }\n token = new RegExp('{' + paramName + '}', 'g');\n if (token.test(sourceUrl)) {\n return sourceUrl.replace(token, paramValue);\n }\n return setQueryParamInUrl(sourceUrl, paramName, paramValue);\n }\n\n /**\n * @ignore\n * @param {String} sourceUrl\n * @param {Object} options\n * @param {String} [options.apiKey]\n * @param {String} [options.language]\n * @param {String} [options.geopolView]\n * @return {String} Parsed URL\n */\n function parseSourceUrl(sourceUrl, options) {\n // Replacing \"key\" token with API key\n sourceUrl = setParamInUrl(sourceUrl, 'key', options.apiKey);\n // Adding language query parameter\n if (options.language) {\n sourceUrl = setParamInUrl(sourceUrl, 'language', options.language);\n }\n // Adding geo-political view query parameter\n if (options.geopolView) {\n sourceUrl = setParamInUrl(sourceUrl, 'view', options.geopolView);\n }\n return sourceUrl;\n }\n\n /**\n * @ignore\n * @param {Object} source\n * @param {Object} [source.url]\n * @param {Object} [source.tiles]\n * @param {Object} options\n * @param {String} [options.apiKey]\n * @param {String} [options.language]\n * @param {String} [options.geopolView]\n * @return {Object}\n */\n function parseSourceUrls(source, options) {\n if (!Utils.isObject(source)) {\n return source;\n }\n if (source.hasOwnProperty('url') && Utils.isString(source.url)) {\n source.url = parseSourceUrl(source.url, options);\n }\n if (source.hasOwnProperty('tiles') && Utils.isArray(source.tiles)) {\n source.tiles = source.tiles.map(function (urlStr) {\n return parseSourceUrl(urlStr, options);\n });\n }\n return source;\n }\n\n /**\n * @ignore\n * Returns a new source's object with all the necessary changes to be compatible with the TomTom's Online Maps API.\n * @param {Object} sources\n * @param {Object} options\n * @param {String} [options.apiKey]\n * @param {String} [options.language]\n * @param {String} [options.geopolView]\n * @return {Object} New sources object\n */\n function parseSources(sources, options) {\n var sourceName,\n newSourcesObj = {};\n for (sourceName in sources) {\n if (sources.hasOwnProperty(sourceName)) {\n newSourcesObj[sourceName] = parseSourceUrls(sources[sourceName], options);\n }\n }\n return newSourcesObj;\n }\n\n /**\n * @ignore\n * Replace the {key} token with the real API key in the given style definition.\n *\n * @param {Object} styleDefinition Style definition object\n * @param {Object} [styleDefinition.sources]\n * @param {Object} options\n * @param {String} [options.apiKey]\n * @param {String} [options.language]\n * @param {String} [options.geopolView]\n * @param {Object} [options.resourcesUrls] Glyphs and sprite URLs to be used instead of\n * those defined in the style definition\n * @param {String} [options.resourcesUrls.glyphs]\n * @param {String} [options.resourcesUrls.sprite]\n * @return {Object} New style definition object\n */\n function stylesParser(styleDefinition, options) {\n if (!Utils.isObject(styleDefinition)) {\n return styleDefinition;\n }\n\n // Parsing the style's sources\n if (Utils.isObject(styleDefinition.sources)) {\n styleDefinition.sources = parseSources(styleDefinition.sources, options);\n }\n\n // Replacing glyphs and sprite URLs if custom ones were passed to the L.Map constructor\n if (Utils.isObject(options.resourceUrls)) {\n if (options.resourceUrls.glyphs) {\n styleDefinition.glyphs = options.resourceUrls.glyphs;\n }\n if (options.resourceUrls.sprite) {\n styleDefinition.sprite = options.resourceUrls.sprite;\n }\n }\n\n return styleDefinition;\n }\n\n return stylesParser;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n function convertRelativePathToAbsolute(styleUrl) {\n return window.location.protocol + '//' + window.location.host + styleUrl;\n }\n\n function toAbsoluteUrl(url) {\n\n if (url.indexOf('://') === -1) {\n url = convertRelativePathToAbsolute(url);\n }\n\n return url;\n }\n return {\n convert: toAbsoluteUrl\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* Mapbox GL JS is licensed under the 3-Clause BSD License. Full text of license: https://github.com/mapbox/mapbox-gl-js/blob/v0.53.0/LICENSE.txt */\n(function (global, factory) {\n true ? module.exports = factory() :\ntypeof define === 'function' && define.amd ? define(factory) :\n(global = global || self, global.mapboxgl = factory());\n}(this, function () { 'use strict';\n\n/* eslint-disable */\n\nvar shared, worker, mapboxgl;\n// define gets called three times: one for each chunk. we rely on the order\n// they're imported to know which is which\nfunction define(_, chunk) {\nif (!shared) {\n shared = chunk;\n} else if (!worker) {\n worker = chunk;\n} else {\n var workerBundleString = 'var sharedChunk = {}; (' + shared + ')(sharedChunk); (' + worker + ')(sharedChunk);'\n\n var sharedChunk = {};\n shared(sharedChunk);\n mapboxgl = chunk(sharedChunk);\n mapboxgl.workerUrl = window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' }));\n}\n}\n\n\ndefine([\"exports\"],function(t){\"use strict\";function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r=n;function n(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=n,this.p2x=r,this.p2y=n;}n.prototype.sampleCurveX=function(t){return ((this.ax*t+this.bx)*t+this.cx)*t},n.prototype.sampleCurveY=function(t){return ((this.ay*t+this.by)*t+this.cy)*t},n.prototype.sampleCurveDerivativeX=function(t){return (3*this.ax*t+2*this.bx)*t+this.cx},n.prototype.solveCurveX=function(t,e){var r,n,i,a,o;for(void 0===e&&(e=1e-6),i=t,o=0;o<8;o++){if(a=this.sampleCurveX(i)-t,Math.abs(a)(n=1))return n;for(;ra?r=i:n=i,i=.5*(n-r)+r;}return i},n.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var i=a;function a(t,e){this.x=t,this.y=e;}function o(t,e){if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return !1;for(var r=0;r0;)e[r]=arguments[r+1];for(var n=0,i=e;n>e/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function d(t){return !!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function m(t,e){t.forEach(function(t){e[t]&&(e[t]=e[t].bind(e));});}function v(t,e){return -1!==t.indexOf(e,t.length-e.length)}function g(t,e,r){var n={};for(var i in t)n[i]=e.call(r||this,t[i],i,t);return n}function x(t,e,r){var n={};for(var i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function b(t){return Array.isArray(t)?t.map(b):\"object\"==typeof t&&t?g(t,b):t}var _={};function w(t){_[t]||(\"undefined\"!=typeof console&&console.warn(t),_[t]=!0);}function A(t,e,r){return (r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function S(t){for(var e=0,r=0,n=t.length,i=n-1,a=void 0,o=void 0;r=1&&self.localStorage.setItem(e,JSON.stringify(this.eventData));}catch(t){w(\"Unable to write to LocalStorage\");}},Y.prototype.processRequests=function(){},Y.prototype.postEvent=function(t,e,r){var n=this,i=X(C.EVENTS_URL);i.params.push(\"access_token=\"+(C.ACCESS_TOKEN||\"\"));var a={event:this.type,created:new Date(t).toISOString(),sdkIdentifier:\"mapbox-gl-js\",sdkVersion:\"0.53.0\",userId:this.anonId},o=e?c(a,e):a,s={url:Z(i),headers:{\"Content-Type\":\"text/plain\"},body:JSON.stringify([o])};this.pendingRequest=st(s,function(t){n.pendingRequest=null,r(t),n.saveEventData(),n.processRequests();});},Y.prototype.queueRequest=function(t){this.queue.push(t),this.processRequests();};var J=function(t){function e(){t.call(this,\"map.load\"),this.success={};}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postMapLoadEvent=function(t,e){C.ACCESS_TOKEN&&Array.isArray(t)&&t.some(function(t){return U(t)||q(t)})&&this.queueRequest({id:e,timestamp:Date.now()});},e.prototype.processRequests=function(){var t=this;if(!this.pendingRequest&&0!==this.queue.length){var e=this.queue.shift(),r=e.id,n=e.timestamp;r&&this.success[r]||(this.anonId||this.fetchEventData(),d(this.anonId)||(this.anonId=y()),this.postEvent(n,{},function(e){e||r&&(t.success[r]=!0);}));}},e}(Y),$=new(function(t){function e(){t.call(this,\"appUserTurnstile\");}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postTurnstileEvent=function(t){C.ACCESS_TOKEN&&Array.isArray(t)&&t.some(function(t){return U(t)||q(t)})&&this.queueRequest(Date.now());},e.prototype.processRequests=function(){var t=this;if(!this.pendingRequest&&0!==this.queue.length){this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();var e=H(C.ACCESS_TOKEN),r=e?e.u:C.ACCESS_TOKEN,n=r!==this.eventData.tokenU;d(this.anonId)||(this.anonId=y(),n=!0);var i=this.queue.shift();if(this.eventData.lastSuccess){var a=new Date(this.eventData.lastSuccess),o=new Date(i),s=(i-this.eventData.lastSuccess)/864e5;n=n||s>=1||s<-1||a.getDate()!==o.getDate();}else n=!0;if(!n)return this.processRequests();this.postEvent(i,{\"enabled.telemetry\":!1},function(e){e||(t.eventData.lastSuccess=i,t.eventData.tokenU=r);});}},e}(Y)),W=$.postTurnstileEvent.bind($),Q=new J,tt=Q.postMapLoadEvent.bind(Q),et={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};\"function\"==typeof Object.freeze&&Object.freeze(et);var rt=function(t){function e(e,r,n){401===r&&q(n)&&(e+=\": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\"),t.call(this,e),this.status=r,this.url=n,this.name=this.constructor.name,this.message=e;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toString=function(){return this.name+\": \"+this.message+\" (\"+this.status+\"): \"+this.url},e}(Error);function nt(){return \"undefined\"!=typeof WorkerGlobalScope&&\"undefined\"!=typeof self&&self instanceof WorkerGlobalScope}var it=nt()?function(){return self.worker&&self.worker.referrer}:function(){var t=self.location.origin;if(t&&\"null\"!==t&&\"file://\"!==t)return t+self.location.pathname};var at=function(t,e){if(!/^file:/.test(t.url)){if(self.fetch&&self.Request&&self.AbortController)return function(t,e){var r=new self.AbortController,n=new self.Request(t.url,{method:t.method||\"GET\",body:t.body,credentials:t.credentials,headers:t.headers,referrer:it(),signal:r.signal});return \"json\"===t.type&&n.headers.set(\"Accept\",\"application/json\"),self.fetch(n).then(function(r){r.ok?r[t.type||\"text\"]().then(function(t){e(null,t,r.headers.get(\"Cache-Control\"),r.headers.get(\"Expires\"));}).catch(function(t){return e(new Error(t.message))}):e(new rt(r.statusText,r.status,t.url));}).catch(function(t){20!==t.code&&e(new Error(t.message));}),{cancel:function(){return r.abort()}}}(t,e);if(nt()&&self.worker&&self.worker.actor)return self.worker.actor.send(\"getResource\",t,e)}return function(t,e){var r=new self.XMLHttpRequest;for(var n in r.open(t.method||\"GET\",t.url,!0),\"arrayBuffer\"===t.type&&(r.responseType=\"arraybuffer\"),t.headers)r.setRequestHeader(n,t.headers[n]);return \"json\"===t.type&&r.setRequestHeader(\"Accept\",\"application/json\"),r.withCredentials=\"include\"===t.credentials,r.onerror=function(){e(new Error(r.statusText));},r.onload=function(){if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){var n=r.response;if(\"json\"===t.type)try{n=JSON.parse(r.response);}catch(t){return e(t)}e(null,n,r.getResponseHeader(\"Cache-Control\"),r.getResponseHeader(\"Expires\"));}else e(new rt(r.statusText,r.status,t.url));},r.send(t.body),{cancel:function(){return r.abort()}}}(t,e)},ot=function(t,e){return at(c(t,{type:\"arrayBuffer\"}),e)},st=function(t,e){return at(c(t,{method:\"POST\"}),e)};var ut,lt;ut=[],lt=0;var pt=function(t,e){if(lt>=C.MAX_PARALLEL_IMAGE_REQUESTS){var r={requestParameters:t,callback:e,cancelled:!1,cancel:function(){this.cancelled=!0;}};return ut.push(r),r}lt++;var n=!1,i=function(){if(!n)for(n=!0,lt--;ut.length&<0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)},dt.prototype.setEventedParent=function(t,e){return this._eventedParent=t,this._eventedParentData=e,this};var mt={$version:8,$root:{version:{required:!0,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\"},sources:{required:!0,type:\"sources\"},sprite:{type:\"string\"},glyphs:{type:\"string\"},transition:{type:\"transition\"},layers:{required:!0,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:!0,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\"},\"*\":{type:\"*\"}},source_raster:{type:{required:!0,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\"},\"*\":{type:\"*\"}},source_raster_dem:{type:{required:!0,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\"},\"*\":{type:\"*\"}},source_geojson:{type:{required:!0,type:\"enum\",values:{geojson:{}}},data:{type:\"*\"},maxzoom:{type:\"number\",default:18},attribution:{type:\"string\"},buffer:{type:\"number\",default:128,maximum:512,minimum:0},tolerance:{type:\"number\",default:.375},cluster:{type:\"boolean\",default:!1},clusterRadius:{type:\"number\",default:50,minimum:0},clusterMaxZoom:{type:\"number\"},clusterProperties:{type:\"*\"},lineMetrics:{type:\"boolean\",default:!1},generateId:{type:\"boolean\",default:!1}},source_video:{type:{required:!0,type:\"enum\",values:{video:{}}},urls:{required:!0,type:\"array\",value:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},source_image:{type:{required:!0,type:\"enum\",values:{image:{}}},url:{required:!0,type:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},layer:{id:{type:\"string\",required:!0},type:{type:\"enum\",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},\"fill-extrusion\":{},raster:{},hillshade:{},background:{}},required:!0},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_background:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_fill:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_circle:{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\"}},layout_line:{\"line-cap\":{type:\"enum\",values:{butt:{},round:{},square:{}},default:\"butt\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-join\":{type:\"enum\",values:{bevel:{},round:{},miter:{}},default:\"miter\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{type:\"number\",default:2,requires:[{\"line-join\":\"miter\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{type:\"number\",default:1.05,requires:[{\"line-join\":\"round\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},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:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{type:\"number\",default:250,minimum:1,units:\"pixels\",requires:[{\"symbol-placement\":\"line\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{type:\"boolean\",default:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{type:\"enum\",values:{auto:{},\"viewport-y\":{},source:{}},default:\"auto\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{type:\"boolean\",default:!1,requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,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:!0,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:!1,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:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{type:\"string\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-keep-upright\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{type:\"array\",value:\"number\",length:2,default:[0,0],requires:[\"icon-image\"],expression:{interpolated:!0,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:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{type:\"formatted\",default:\"\",tokens:!0,expression:{interpolated:!1,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:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{type:\"number\",default:16,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{type:\"number\",default:10,minimum:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{type:\"number\",default:1.2,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-letter-spacing\":{type:\"number\",default:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{type:\"enum\",values:{left:{},center:{},right:{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,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:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{type:\"boolean\",default:!0,requires:[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{type:\"enum\",values:{none:{},uppercase:{},lowercase:{}},default:\"none\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{type:\"array\",value:\"number\",units:\"ems\",length:2,default:[0,0],requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{type:\"boolean\",default:!1,requires:[\"text-field\",\"icon-image\"],expression:{interpolated:!1,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_operator:{type:\"enum\",values:{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},in:{},\"!in\":{},all:{},any:{},none:{},has:{},\"!has\":{}}},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:!1}},function_stop:{type:\"array\",minimum:0,maximum:22,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\"},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\"},\"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:\"Zoom\"},\"heatmap-density\":{group:\"Heatmap\"},\"line-progress\":{group:\"Feature data\"},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\"},\"==\":{group:\"Decision\"},\"!=\":{group:\"Decision\"},\">\":{group:\"Decision\"},\"<\":{group:\"Decision\"},\">=\":{group:\"Decision\"},\"<=\":{group:\"Decision\"},all:{group:\"Decision\"},any:{group:\"Decision\"},\"!\":{group:\"Decision\"},\"is-supported-script\":{group:\"String\"},upcase:{group:\"String\"},downcase:{group:\"String\"},concat:{group:\"String\"},\"resolved-locale\":{group:\"String\"}}},light:{anchor:{type:\"enum\",default:\"viewport\",values:{map:{},viewport:{}},\"property-type\":\"data-constant\",transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]}},position:{type:\"array\",default:[1.15,210,30],length:3,value:\"number\",\"property-type\":\"data-constant\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]}},color:{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},intensity:{type:\"number\",\"property-type\":\"data-constant\",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0}},paint:[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\"],paint_fill:{\"fill-antialias\":{type:\"boolean\",default:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{type:\"color\",transition:!0,requires:[{\"!\":\"fill-pattern\"},{\"fill-antialias\":!0}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{type:\"string\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-extrusion-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-extrusion-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{type:\"string\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,requires:[\"fill-extrusion-height\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{type:\"boolean\",default:!0,transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_line:{\"line-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"line-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{type:\"number\",default:1,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{type:\"number\",default:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{type:\"array\",value:\"number\",minimum:0,transition:!0,units:\"line widths\",requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"line-pattern\":{type:\"string\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{type:\"color\",transition:!1,requires:[{\"!\":\"line-dasharray\"},{\"!\":\"line-pattern\"},{source:\"geojson\",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:[\"line-progress\"]},\"property-type\":\"color-ramp\"}},paint_circle:{\"circle-radius\":{type:\"number\",default:5,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{type:\"number\",default:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"circle-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},paint_heatmap:{\"heatmap-radius\":{type:\"number\",default:30,minimum:1,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{type:\"number\",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{type:\"number\",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{type:\"color\",default:[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",.1,\"royalblue\",.3,\"cyan\",.5,\"lime\",.7,\"yellow\",1,\"red\"],transition:!1,expression:{interpolated:!0,parameters:[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_symbol:{\"icon-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"icon-image\",\"icon-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"text-field\",\"text-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_raster:{\"raster-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{type:\"number\",default:0,period:360,transition:!0,units:\"degrees\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{type:\"number\",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{type:\"enum\",values:{linear:{},nearest:{}},default:\"linear\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{type:\"number\",default:300,minimum:0,transition:!1,units:\"milliseconds\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_hillshade:{\"hillshade-illumination-direction\":{type:\"number\",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{type:\"number\",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{type:\"color\",default:\"#FFFFFF\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_background:{\"background-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"background-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{type:\"string\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,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\"},\"cross-faded\":{type:\"property-type\"},\"cross-faded-data-driven\":{type:\"property-type\"},\"color-ramp\":{type:\"property-type\"},\"data-constant\":{type:\"property-type\"},constant:{type:\"property-type\"}}},vt=function(t,e,r,n){this.message=(t?t+\": \":\"\")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__);};function gt(t){var e=t.key,r=t.value;return r?[new vt(e,r,\"constants have been deprecated as of v8\")]:[]}function xt(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n\":\"value\"===t.itemType.kind?\"array\":\"array<\"+e+\">\"}return t.kind}var Ft=[St,kt,zt,It,Bt,Ct,Et,Mt(Pt)];function Lt(t,e){if(\"error\"===e.kind)return null;if(\"array\"===t.kind){if(\"array\"===e.kind&&(0===e.N&&\"value\"===e.itemType.kind||!Lt(t.itemType,e.itemType))&&(\"number\"!=typeof t.N||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if(\"value\"===t.kind)for(var r=0,n=Ft;r255?255:t}function i(t){return t<0?0:t>1?1:t}function a(t){return \"%\"===t[t.length-1]?n(parseFloat(t)/100*255):n(parseInt(t))}function o(t){return \"%\"===t[t.length-1]?i(parseFloat(t)/100):i(parseFloat(t))}function s(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,i=t.replace(/ /g,\"\").toLowerCase();if(i in r)return r[i].slice();if(\"#\"===i[0])return 4===i.length?(e=parseInt(i.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===i.length&&(e=parseInt(i.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var u=i.indexOf(\"(\"),l=i.indexOf(\")\");if(-1!==u&&l+1===i.length){var p=i.substr(0,u),c=i.substr(u+1,l-(u+1)).split(\",\"),h=1;switch(p){case\"rgba\":if(4!==c.length)return null;h=o(c.pop());case\"rgb\":return 3!==c.length?null:[a(c[0]),a(c[1]),a(c[2]),h];case\"hsla\":if(4!==c.length)return null;h=o(c.pop());case\"hsl\":if(3!==c.length)return null;var f=(parseFloat(c[0])%360+360)%360/360,y=o(c[1]),d=o(c[2]),m=d<=.5?d*(y+1):d+y-d*y,v=2*d-m;return [n(255*s(v,m,f+1/3)),n(255*s(v,m,f)),n(255*s(v,m,f-1/3)),h];default:return null}}return null};}catch(t){}}).parseCSSColor,Dt=function(t,e,r,n){void 0===n&&(n=1),this.r=t,this.g=e,this.b=r,this.a=n;};Dt.parse=function(t){if(t){if(t instanceof Dt)return t;if(\"string\"==typeof t){var e=Ot(t);if(e)return new Dt(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3])}}},Dt.prototype.toString=function(){var t=this.toArray(),e=t[0],r=t[1],n=t[2],i=t[3];return \"rgba(\"+Math.round(e)+\",\"+Math.round(r)+\",\"+Math.round(n)+\",\"+i+\")\"},Dt.prototype.toArray=function(){var t=this.r,e=this.g,r=this.b,n=this.a;return 0===n?[0,0,0,0]:[255*t/n,255*e/n,255*r/n,n]},Dt.black=new Dt(0,0,0,1),Dt.white=new Dt(1,1,1,1),Dt.transparent=new Dt(0,0,0,0),Dt.red=new Dt(1,0,0,1);var Ut=function(t,e,r){this.sensitivity=t?e?\"variant\":\"case\":e?\"accent\":\"base\",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"});};Ut.prototype.compare=function(t,e){return this.collator.compare(t,e)},Ut.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var jt=function(t,e,r){this.text=t,this.scale=e,this.fontStack=r;},qt=function(t){this.sections=t;};function Rt(t,e,r,n){return \"number\"==typeof t&&t>=0&&t<=255&&\"number\"==typeof e&&e>=0&&e<=255&&\"number\"==typeof r&&r>=0&&r<=255?void 0===n||\"number\"==typeof n&&n>=0&&n<=1?null:\"Invalid rgba value [\"+[t,e,r,n].join(\", \")+\"]: 'a' must be between 0 and 1.\":\"Invalid rgba value [\"+(\"number\"==typeof n?[t,e,r,n]:[t,e,r]).join(\", \")+\"]: 'r', 'g', and 'b' must be between 0 and 255.\"}function Nt(t){if(null===t)return St;if(\"string\"==typeof t)return zt;if(\"boolean\"==typeof t)return It;if(\"number\"==typeof t)return kt;if(t instanceof Dt)return Bt;if(t instanceof Ut)return Vt;if(t instanceof qt)return Ct;if(Array.isArray(t)){for(var e,r=t.length,n=0,i=t;n2){var s=t[1];if(\"string\"!=typeof s||!(s in Zt)||\"object\"===s)return e.error('The item type argument of \"array\" must be one of string, number, boolean',1);a=Zt[s],n++;}else a=Pt;if(t.length>3){if(null!==t[2]&&(\"number\"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to \"array\" must be a positive integer literal',2);o=t[2],n++;}r=Mt(a,o);}else r=Zt[i];for(var u=[];n1)&&e.push(n);}}return e.concat(this.args.map(function(t){return t.serialize()}))};var Yt=function(t){this.type=Ct,this.sections=t;};Yt.parse=function(t,e){if(t.length<3)return e.error(\"Expected at least two arguments.\");if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");for(var r=[],n=1;n4?\"Invalid rbga value \"+JSON.stringify(e)+\": expected an array containing either three or four numeric values.\":Rt(e[0],e[1],e[2],e[3])))return new Dt(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new Xt(r||\"Could not parse color from value '\"+(\"string\"==typeof e?e:JSON.stringify(e))+\"'\")}if(\"number\"===this.type.kind){for(var o=null,s=0,u=this.args;s=0)return !1;var r=!0;return t.eachChild(function(t){r&&!ie(t,e)&&(r=!1);}),r}ee.parse=function(t,e){if(2!==t.length)return e.error(\"Expected one argument.\");var r=t[1];if(\"object\"!=typeof r||Array.isArray(r))return e.error(\"Collator options argument must be an object.\");var n=e.parse(void 0!==r[\"case-sensitive\"]&&r[\"case-sensitive\"],1,It);if(!n)return null;var i=e.parse(void 0!==r[\"diacritic-sensitive\"]&&r[\"diacritic-sensitive\"],1,It);if(!i)return null;var a=null;return r.locale&&!(a=e.parse(r.locale,1,zt))?null:new ee(n,i,a)},ee.prototype.evaluate=function(t){return new Ut(this.caseSensitive.evaluate(t),this.diacriticSensitive.evaluate(t),this.locale?this.locale.evaluate(t):null)},ee.prototype.eachChild=function(t){t(this.caseSensitive),t(this.diacriticSensitive),this.locale&&t(this.locale);},ee.prototype.possibleOutputs=function(){return [void 0]},ee.prototype.serialize=function(){var t={};return t[\"case-sensitive\"]=this.caseSensitive.serialize(),t[\"diacritic-sensitive\"]=this.diacriticSensitive.serialize(),this.locale&&(t.locale=this.locale.serialize()),[\"collator\",t]};var ae=function(t,e){this.type=e.type,this.name=t,this.boundExpression=e;};ae.parse=function(t,e){if(2!==t.length||\"string\"!=typeof t[1])return e.error(\"'var' expression requires exactly one string literal argument.\");var r=t[1];return e.scope.has(r)?new ae(r,e.scope.get(r)):e.error('Unknown variable \"'+r+'\". Make sure \"'+r+'\" has been bound in an enclosing \"let\" expression before using it.',1)},ae.prototype.evaluate=function(t){return this.boundExpression.evaluate(t)},ae.prototype.eachChild=function(){},ae.prototype.possibleOutputs=function(){return [void 0]},ae.prototype.serialize=function(){return [\"var\",this.name]};var oe=function(t,e,r,n,i){void 0===e&&(e=[]),void 0===n&&(n=new At),void 0===i&&(i=[]),this.registry=t,this.path=e,this.key=e.map(function(t){return \"[\"+t+\"]\"}).join(\"\"),this.scope=n,this.errors=i,this.expectedType=r;};function se(t,e){for(var r,n,i=0,a=t.length-1,o=0;i<=a;){if(r=t[o=Math.floor((i+a)/2)],n=t[o+1],e===r||e>r&&ee))throw new Xt(\"Input is not a number.\");a=o-1;}}return Math.max(o-1,0)}oe.prototype.parse=function(t,e,r,n,i){return void 0===i&&(i={}),e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)},oe.prototype._parse=function(t,e){function r(t,e,r){return \"assert\"===r?new Ht(e,[t]):\"coerce\"===r?new $t(e,[t]):t}if(null!==t&&\"string\"!=typeof t&&\"boolean\"!=typeof t&&\"number\"!=typeof t||(t=[\"literal\",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');var n=t[0];if(\"string\"!=typeof n)return this.error(\"Expression name must be a string, but found \"+typeof n+' instead. If you wanted a literal array, use [\"literal\", [...]].',0),null;var i=this.registry[n];if(i){var a=i.parse(t,this);if(!a)return null;if(this.expectedType){var o=this.expectedType,s=a.type;if(\"string\"!==o.kind&&\"number\"!==o.kind&&\"boolean\"!==o.kind&&\"object\"!==o.kind&&\"array\"!==o.kind||\"value\"!==s.kind)if(\"color\"!==o.kind&&\"formatted\"!==o.kind||\"value\"!==s.kind&&\"string\"!==s.kind){if(this.checkSubtype(o,s))return null}else a=r(a,o,e.typeAnnotation||\"coerce\");else a=r(a,o,e.typeAnnotation||\"assert\");}if(!(a instanceof Gt)&&function t(e){if(e instanceof ae)return t(e.boundExpression);if(e instanceof te&&\"error\"===e.name)return !1;if(e instanceof ee)return !1;var r=e instanceof $t||e instanceof Ht;var n=!0;e.eachChild(function(e){n=r?n&&t(e):n&&e instanceof Gt;});if(!n)return !1;return re(e)&&ie(e,[\"zoom\",\"heatmap-density\",\"line-progress\",\"accumulated\",\"is-supported-script\"])}(a)){var u=new Qt;try{a=new Gt(a.type,a.evaluate(u));}catch(t){return this.error(t.message),null}}return a}return this.error('Unknown expression \"'+n+'\". If you wanted a literal array, use [\"literal\", [...]].',0)}return void 0===t?this.error(\"'undefined' value invalid. Use null instead.\"):\"object\"==typeof t?this.error('Bare objects invalid. Use [\"literal\", {...}] instead.'):this.error(\"Expected an array, but found \"+typeof t+\" instead.\")},oe.prototype.concat=function(t,e,r){var n=\"number\"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new oe(this.registry,n,e||null,i,this.errors)},oe.prototype.error=function(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];var n=\"\"+this.key+e.map(function(t){return \"[\"+t+\"]\"}).join(\"\");this.errors.push(new wt(n,t));},oe.prototype.checkSubtype=function(t,e){var r=Lt(t,e);return r&&this.error(r),r};var ue=function(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(var n=0,i=r;n=s)return e.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',l);var c=e.parse(u,p,a);if(!c)return null;a=a||c.type,i.push([s,c]);}return new ue(a,r,i)},ue.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[se(e,n)].evaluate(t)},ue.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t};var pe=Object.freeze({number:le,color:function(t,e,r){return new Dt(le(t.r,e.r,r),le(t.g,e.g,r),le(t.b,e.b,r),le(t.a,e.a,r))},array:function(t,e,r){return t.map(function(t,n){return le(t,e[n],r)})}}),ce=.95047,he=1,fe=1.08883,ye=4/29,de=6/29,me=3*de*de,ve=de*de*de,ge=Math.PI/180,xe=180/Math.PI;function be(t){return t>ve?Math.pow(t,1/3):t/me+ye}function _e(t){return t>de?t*t*t:me*(t-ye)}function we(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Ae(t){return (t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Se(t){var e=Ae(t.r),r=Ae(t.g),n=Ae(t.b),i=be((.4124564*e+.3575761*r+.1804375*n)/ce),a=be((.2126729*e+.7151522*r+.072175*n)/he);return {l:116*a-16,a:500*(i-a),b:200*(a-be((.0193339*e+.119192*r+.9503041*n)/fe)),alpha:t.a}}function ke(t){var e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=he*_e(e),r=ce*_e(r),n=fe*_e(n),new Dt(we(3.2404542*r-1.5371385*e-.4985314*n),we(-.969266*r+1.8760108*e+.041556*n),we(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function ze(t,e,r){var n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}var Ie={forward:Se,reverse:ke,interpolate:function(t,e,r){return {l:le(t.l,e.l,r),a:le(t.a,e.a,r),b:le(t.b,e.b,r),alpha:le(t.alpha,e.alpha,r)}}},Be={forward:function(t){var e=Se(t),r=e.l,n=e.a,i=e.b,a=Math.atan2(i,n)*xe;return {h:a<0?a+360:a,c:Math.sqrt(n*n+i*i),l:r,alpha:t.a}},reverse:function(t){var e=t.h*ge,r=t.c;return ke({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return {h:ze(t.h,e.h,r),c:le(t.c,e.c,r),l:le(t.l,e.l,r),alpha:le(t.alpha,e.alpha,r)}}},Ee=Object.freeze({lab:Ie,hcl:Be}),Pe=function(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(var a=0,o=i;a1}))return e.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);n={name:\"cubic-bezier\",controlPoints:s};}if(t.length-1<4)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(!(i=e.parse(i,2,kt)))return null;var u=[],l=null;\"interpolate-hcl\"===r||\"interpolate-lab\"===r?l=Bt:e.expectedType&&\"value\"!==e.expectedType.kind&&(l=e.expectedType);for(var p=0;p=c)return e.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',f);var d=e.parse(h,y,l);if(!d)return null;l=l||d.type,u.push([c,d]);}return \"number\"===l.kind||\"color\"===l.kind||\"array\"===l.kind&&\"number\"===l.itemType.kind&&\"number\"==typeof l.N?new Pe(l,r,n,i,u):e.error(\"Type \"+Tt(l)+\" is not interpolatable.\")},Pe.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);var a=se(e,n),o=e[a],s=e[a+1],u=Pe.interpolationFactor(this.interpolation,n,o,s),l=r[a].evaluate(t),p=r[a+1].evaluate(t);return \"interpolate\"===this.operator?pe[this.type.kind.toLowerCase()](l,p,u):\"interpolate-hcl\"===this.operator?Be.reverse(Be.interpolate(Be.forward(l),Be.forward(p),u)):Ie.reverse(Ie.interpolate(Ie.forward(l),Ie.forward(p),u))},Pe.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e=r.length)throw new Xt(\"Array index out of bounds: \"+e+\" > \"+(r.length-1)+\".\");if(e!==Math.floor(e))throw new Xt(\"Array index must be an integer, but found \"+e+\" instead.\");return r[e]},Te.prototype.eachChild=function(t){t(this.index),t(this.input);},Te.prototype.possibleOutputs=function(){return [void 0]},Te.prototype.serialize=function(){return [\"at\",this.index.serialize(),this.input.serialize()]};var Fe=function(t,e,r,n,i,a){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=a;};Fe.parse=function(t,e){if(t.length<5)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if(t.length%2!=1)return e.error(\"Expected an even number of arguments.\");var r,n;e.expectedType&&\"value\"!==e.expectedType.kind&&(n=e.expectedType);for(var i={},a=[],o=2;oNumber.MAX_SAFE_INTEGER)return l.error(\"Branch labels must be integers no larger than \"+Number.MAX_SAFE_INTEGER+\".\");if(\"number\"==typeof h&&Math.floor(h)!==h)return l.error(\"Numeric branch labels must be integer values.\");if(r){if(l.checkSubtype(r,Nt(h)))return null}else r=Nt(h);if(void 0!==i[String(h)])return l.error(\"Branch labels must be unique.\");i[String(h)]=a.length;}var f=e.parse(u,o,n);if(!f)return null;n=n||f.type,a.push(f);}var y=e.parse(t[1],1,Pt);if(!y)return null;var d=e.parse(t[t.length-1],t.length-1,n);return d?\"value\"!==y.type.kind&&e.concat(1).checkSubtype(r,y.type)?null:new Fe(r,n,y,i,a,d):null},Fe.prototype.evaluate=function(t){var e=this.input.evaluate(t);return (Nt(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)},Fe.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise);},Fe.prototype.possibleOutputs=function(){var t;return (t=[]).concat.apply(t,this.outputs.map(function(t){return t.possibleOutputs()})).concat(this.otherwise.possibleOutputs())},Fe.prototype.serialize=function(){for(var t=this,e=[\"match\",this.input.serialize()],r=[],n={},i=0,a=Object.keys(this.cases).sort();i\",function(t,e,r){return e>r},function(t,e,r,n){return n.compare(e,r)>0}),Ke=Ue(\"<=\",function(t,e,r){return e<=r},function(t,e,r,n){return n.compare(e,r)<=0}),Ge=Ue(\">=\",function(t,e,r){return e>=r},function(t,e,r,n){return n.compare(e,r)>=0}),Xe=function(t,e,r,n,i){this.type=zt,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i;};Xe.parse=function(t,e){if(3!==t.length)return e.error(\"Expected two arguments.\");var r=e.parse(t[1],1,kt);if(!r)return null;var n=t[2];if(\"object\"!=typeof n||Array.isArray(n))return e.error(\"NumberFormat options argument must be an object.\");var i=null;if(n.locale&&!(i=e.parse(n.locale,1,zt)))return null;var a=null;if(n.currency&&!(a=e.parse(n.currency,1,zt)))return null;var o=null;if(n[\"min-fraction-digits\"]&&!(o=e.parse(n[\"min-fraction-digits\"],1,kt)))return null;var s=null;return n[\"max-fraction-digits\"]&&!(s=e.parse(n[\"max-fraction-digits\"],1,kt))?null:new Xe(r,i,a,o,s)},Xe.prototype.evaluate=function(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))},Xe.prototype.eachChild=function(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits);},Xe.prototype.possibleOutputs=function(){return [void 0]},Xe.prototype.serialize=function(){var t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t[\"min-fraction-digits\"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t[\"max-fraction-digits\"]=this.maxFractionDigits.serialize()),[\"number-format\",this.number.serialize(),t]};var Ze=function(t){this.type=kt,this.input=t;};Ze.parse=function(t,e){if(2!==t.length)return e.error(\"Expected 1 argument, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1);return r?\"array\"!==r.type.kind&&\"string\"!==r.type.kind&&\"value\"!==r.type.kind?e.error(\"Expected argument of type string or array, but found \"+Tt(r.type)+\" instead.\"):new Ze(r):null},Ze.prototype.evaluate=function(t){var e=this.input.evaluate(t);if(\"string\"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new Xt(\"Expected value to be of type string or array, but found \"+Tt(Nt(e))+\" instead.\")},Ze.prototype.eachChild=function(t){t(this.input);},Ze.prototype.possibleOutputs=function(){return [void 0]},Ze.prototype.serialize=function(){var t=[\"length\"];return this.eachChild(function(e){t.push(e.serialize());}),t};var He={\"==\":je,\"!=\":qe,\">\":Ne,\"<\":Re,\">=\":Ge,\"<=\":Ke,array:Ht,at:Te,boolean:Ht,case:Le,coalesce:Ce,collator:ee,format:Yt,interpolate:Pe,\"interpolate-hcl\":Pe,\"interpolate-lab\":Pe,length:Ze,let:Me,literal:Gt,match:Fe,number:Ht,\"number-format\":Xe,object:Ht,step:ue,string:Ht,\"to-boolean\":$t,\"to-color\":$t,\"to-number\":$t,\"to-string\":$t,var:ae};function Ye(t,e){var r=e[0],n=e[1],i=e[2],a=e[3];r=r.evaluate(t),n=n.evaluate(t),i=i.evaluate(t);var o=a?a.evaluate(t):1,s=Rt(r,n,i,o);if(s)throw new Xt(s);return new Dt(r/255*o,n/255*o,i/255*o,o)}function Je(t,e){return t in e}function $e(t,e){var r=e[t];return void 0===r?null:r}function We(t){return {type:t}}function Qe(t){return {result:\"success\",value:t}}function tr(t){return {result:\"error\",value:t}}function er(t){return \"data-driven\"===t[\"property-type\"]||\"cross-faded-data-driven\"===t[\"property-type\"]}function rr(t){return !!t.expression&&t.expression.parameters.indexOf(\"zoom\")>-1}function nr(t){return !!t.expression&&t.expression.interpolated}function ir(t){return t instanceof Number?\"number\":t instanceof String?\"string\":t instanceof Boolean?\"boolean\":Array.isArray(t)?\"array\":null===t?\"null\":typeof t}function ar(t){return \"object\"==typeof t&&null!==t&&!Array.isArray(t)}function or(t){return t}function sr(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function ur(t,e,r,n,i){return sr(typeof r===i?n[r]:void 0,t.default,e.default)}function lr(t,e,r){if(\"number\"!==ir(r))return sr(t.default,e.default);var n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];var i=hr(t.stops,r);return t.stops[i][1]}function pr(t,e,r){var n=void 0!==t.base?t.base:1;if(\"number\"!==ir(r))return sr(t.default,e.default);var i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];var a=hr(t.stops,r),o=function(t,e,r,n){var i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[a][0],t.stops[a+1][0]),s=t.stops[a][1],u=t.stops[a+1][1],l=pe[e.type]||or;if(t.colorSpace&&\"rgb\"!==t.colorSpace){var p=Ee[t.colorSpace];l=function(t,e){return p.reverse(p.interpolate(p.forward(t),p.forward(e),o))};}return \"function\"==typeof s.evaluate?{evaluate:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=s.evaluate.apply(void 0,t),n=u.evaluate.apply(void 0,t);if(void 0!==r&&void 0!==n)return l(r,n,o)}}:l(s,u,o)}function cr(t,e,r){return \"color\"===e.type?r=Dt.parse(r):\"formatted\"===e.type?r=qt.fromString(r.toString()):ir(r)===e.type||\"enum\"===e.type&&e.values[r]||(r=void 0),sr(r,t.default,e.default)}function hr(t,e){for(var r,n,i=0,a=t.length-1,o=0;i<=a;){if(r=t[o=Math.floor((i+a)/2)][0],n=t[o+1][0],e===r||e>r&&ee&&(a=o-1);}return Math.max(o-1,0)}te.register(He,{error:[{kind:\"error\"},[zt],function(t,e){var r=e[0];throw new Xt(r.evaluate(t))}],typeof:[zt,[Pt],function(t,e){return Tt(Nt(e[0].evaluate(t)))}],\"to-rgba\":[Mt(kt,4),[Bt],function(t,e){return e[0].evaluate(t).toArray()}],rgb:[Bt,[kt,kt,kt],Ye],rgba:[Bt,[kt,kt,kt,kt],Ye],has:{type:It,overloads:[[[zt],function(t,e){return Je(e[0].evaluate(t),t.properties())}],[[zt,Et],function(t,e){var r=e[0],n=e[1];return Je(r.evaluate(t),n.evaluate(t))}]]},get:{type:Pt,overloads:[[[zt],function(t,e){return $e(e[0].evaluate(t),t.properties())}],[[zt,Et],function(t,e){var r=e[0],n=e[1];return $e(r.evaluate(t),n.evaluate(t))}]]},\"feature-state\":[Pt,[zt],function(t,e){return $e(e[0].evaluate(t),t.featureState||{})}],properties:[Et,[],function(t){return t.properties()}],\"geometry-type\":[zt,[],function(t){return t.geometryType()}],id:[Pt,[],function(t){return t.id()}],zoom:[kt,[],function(t){return t.globals.zoom}],\"heatmap-density\":[kt,[],function(t){return t.globals.heatmapDensity||0}],\"line-progress\":[kt,[],function(t){return t.globals.lineProgress||0}],accumulated:[Pt,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],\"+\":[kt,We(kt),function(t,e){for(var r=0,n=0,i=e;n\":[It,[zt,Pt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>a}],\"filter-id->\":[It,[Pt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>i}],\"filter-<=\":[It,[zt,Pt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i<=a}],\"filter-id-<=\":[It,[Pt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n<=i}],\"filter->=\":[It,[zt,Pt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>=a}],\"filter-id->=\":[It,[Pt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>=i}],\"filter-has\":[It,[Pt],function(t,e){return e[0].value in t.properties()}],\"filter-has-id\":[It,[],function(t){return null!==t.id()}],\"filter-type-in\":[It,[Mt(zt)],function(t,e){return e[0].value.indexOf(t.geometryType())>=0}],\"filter-id-in\":[It,[Mt(Pt)],function(t,e){return e[0].value.indexOf(t.id())>=0}],\"filter-in-small\":[It,[zt,Mt(Pt)],function(t,e){var r=e[0];return e[1].value.indexOf(t.properties()[r.value])>=0}],\"filter-in-large\":[It,[zt,Mt(Pt)],function(t,e){var r=e[0],n=e[1];return function(t,e,r,n){for(;r<=n;){var i=r+n>>1;if(e[i]===t)return !0;e[i]>t?n=i-1:r=i+1;}return !1}(t.properties()[r.value],n.value,0,n.value.length-1)}],all:{type:It,overloads:[[[It,It],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)&&n.evaluate(t)}],[We(It),function(t,e){for(var r=0,n=e;r0&&\"string\"==typeof t[0]&&t[0]in He}function dr(t,e){var r=new oe(He,[],e?function(t){var e={color:Bt,string:zt,number:kt,enum:zt,boolean:It,formatted:Ct};if(\"array\"===t.type)return Mt(e[t.value]||Pt,t.length);return e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&\"string\"===e.type?{typeAnnotation:\"coerce\"}:void 0);return n?Qe(new fr(n,e)):tr(r.errors)}fr.prototype.evaluateWithoutErrorHandling=function(t,e,r){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this.expression.evaluate(this._evaluator)},fr.prototype.evaluate=function(t,e,r){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null;try{var n=this.expression.evaluate(this._evaluator);if(null==n)return this._defaultValue;if(this._enumValues&&!(n in this._enumValues))throw new Xt(\"Expected value to be one of \"+Object.keys(this._enumValues).map(function(t){return JSON.stringify(t)}).join(\", \")+\", but found \"+JSON.stringify(n)+\" instead.\");return n}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,\"undefined\"!=typeof console&&console.warn(t.message)),this._defaultValue}};var mr=function(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent=\"constant\"!==t&&!ne(e.expression);};mr.prototype.evaluateWithoutErrorHandling=function(t,e,r){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r)},mr.prototype.evaluate=function(t,e,r){return this._styleExpression.evaluate(t,e,r)};var vr=function(t,e,r){this.kind=t,this.zoomStops=r.labels,this._styleExpression=e,this.isStateDependent=\"camera\"!==t&&!ne(e.expression),r instanceof Pe&&(this._interpolationType=r.interpolation);};function gr(t,e){if(\"error\"===(t=dr(t,e)).result)return t;var r=t.value.expression,n=re(r);if(!n&&!er(e))return tr([new wt(\"\",\"data expressions not supported\")]);var i=ie(r,[\"zoom\"]);if(!i&&!rr(e))return tr([new wt(\"\",\"zoom expressions not supported\")]);var a=function t(e){var r=null;if(e instanceof Me)r=t(e.result);else if(e instanceof Ce)for(var n=0,i=e.args;nn.maximum?[new vt(e,r,r+\" is greater than the maximum value \"+n.maximum)]:[]}function Sr(t){var e,r,n,i=t.valueSpec,a=bt(t.value.type),o={},s=\"categorical\"!==a&&void 0===t.value.property,u=!s,l=\"array\"===ir(t.value.stops)&&\"array\"===ir(t.value.stops[0])&&\"object\"===ir(t.value.stops[0][0]),p=_r({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if(\"identity\"===a)return [new vt(t.key,t.value,'identity function may not have a \"stops\" property')];var e=[],r=t.value;e=e.concat(wr({key:t.key,value:r,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:c})),\"array\"===ir(r)&&0===r.length&&e.push(new vt(t.key,r,\"array must have at least one stop\"));return e},default:function(t){return Gr({key:t.key,value:t.value,valueSpec:i,style:t.style,styleSpec:t.styleSpec})}}});return \"identity\"===a&&s&&p.push(new vt(t.key,t.value,'missing required property \"property\"')),\"identity\"===a||t.value.stops||p.push(new vt(t.key,t.value,'missing required property \"stops\"')),\"exponential\"===a&&t.valueSpec.expression&&!nr(t.valueSpec)&&p.push(new vt(t.key,t.value,\"exponential functions not supported\")),t.styleSpec.$version>=8&&(u&&!er(t.valueSpec)?p.push(new vt(t.key,t.value,\"property functions not supported\")):s&&!rr(t.valueSpec)&&p.push(new vt(t.key,t.value,\"zoom functions not supported\"))),\"categorical\"!==a&&!l||void 0!==t.value.property||p.push(new vt(t.key,t.value,'\"property\" property is required')),p;function c(t){var e=[],a=t.value,s=t.key;if(\"array\"!==ir(a))return [new vt(s,a,\"array expected, \"+ir(a)+\" found\")];if(2!==a.length)return [new vt(s,a,\"array length 2 expected, length \"+a.length+\" found\")];if(l){if(\"object\"!==ir(a[0]))return [new vt(s,a,\"object expected, \"+ir(a[0])+\" found\")];if(void 0===a[0].zoom)return [new vt(s,a,\"object stop key must have zoom\")];if(void 0===a[0].value)return [new vt(s,a,\"object stop key must have value\")];if(n&&n>bt(a[0].zoom))return [new vt(s,a[0].zoom,\"stop zoom values must appear in ascending order\")];bt(a[0].zoom)!==n&&(n=bt(a[0].zoom),r=void 0,o={}),e=e.concat(_r({key:s+\"[0]\",value:a[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:Ar,value:h}}));}else e=e.concat(h({key:s+\"[0]\",value:a[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},a));return yr(_t(a[1]))?e.concat([new vt(s+\"[1]\",a[1],\"expressions are not allowed in function stops.\")]):e.concat(Gr({key:s+\"[1]\",value:a[1],valueSpec:i,style:t.style,styleSpec:t.styleSpec}))}function h(t,n){var s=ir(t.value),u=bt(t.value),l=null!==t.value?t.value:n;if(e){if(s!==e)return [new vt(t.key,l,s+\" stop domain type must match previous stop domain type \"+e)]}else e=s;if(\"number\"!==s&&\"string\"!==s&&\"boolean\"!==s)return [new vt(t.key,l,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==s&&\"categorical\"!==a){var p=\"number expected, \"+s+\" found\";return er(i)&&void 0===a&&(p+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new vt(t.key,l,p)]}return \"categorical\"!==a||\"number\"!==s||isFinite(u)&&Math.floor(u)===u?\"categorical\"!==a&&\"number\"===s&&void 0!==r&&u=2&&\"$id\"!==t[1]&&\"$type\"!==t[1];case\"in\":case\"!in\":case\"!has\":case\"none\":return !1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case\"any\":case\"all\":for(var e=0,r=t.slice(1);ee?1:0}function Vr(t){if(!t)return !0;var e,r=t[0];return t.length<=1?\"any\"!==r:\"==\"===r?Cr(t[1],t[2],\"==\"):\"!=\"===r?Fr(Cr(t[1],t[2],\"==\")):\"<\"===r||\">\"===r||\"<=\"===r||\">=\"===r?Cr(t[1],t[2],r):\"any\"===r?(e=t.slice(1),[\"any\"].concat(e.map(Vr))):\"all\"===r?[\"all\"].concat(t.slice(1).map(Vr)):\"none\"===r?[\"all\"].concat(t.slice(1).map(Vr).map(Fr)):\"in\"===r?Mr(t[1],t.slice(2)):\"!in\"===r?Fr(Mr(t[1],t.slice(2))):\"has\"===r?Tr(t[1]):\"!has\"!==r||Fr(Tr(t[1]))}function Cr(t,e,r){switch(t){case\"$type\":return [\"filter-type-\"+r,e];case\"$id\":return [\"filter-id-\"+r,e];default:return [\"filter-\"+r,t,e]}}function Mr(t,e){if(0===e.length)return !1;switch(t){case\"$type\":return [\"filter-type-in\",[\"literal\",e]];case\"$id\":return [\"filter-id-in\",[\"literal\",e]];default:return e.length>200&&!e.some(function(t){return typeof t!=typeof e[0]})?[\"filter-in-large\",t,[\"literal\",e.sort(Pr)]]:[\"filter-in-small\",t,[\"literal\",e]]}}function Tr(t){switch(t){case\"$type\":return !0;case\"$id\":return [\"filter-has-id\"];default:return [\"filter-has\",t]}}function Fr(t){return [\"!\",t]}function Lr(t){return Ir(_t(t.value))?kr(xt({},t,{expressionContext:\"filter\",valueSpec:{value:\"boolean\"}})):function t(e){var r=e.value;var n=e.key;if(\"array\"!==ir(r))return [new vt(n,r,\"array expected, \"+ir(r)+\" found\")];var i=e.styleSpec;var a;var o=[];if(r.length<1)return [new vt(n,r,\"filter array must have at least 1 element\")];o=o.concat(zr({key:n+\"[0]\",value:r[0],valueSpec:i.filter_operator,style:e.style,styleSpec:e.styleSpec}));switch(bt(r[0])){case\"<\":case\"<=\":case\">\":case\">=\":r.length>=2&&\"$type\"===bt(r[1])&&o.push(new vt(n,r,'\"$type\" cannot be use with operator \"'+r[0]+'\"'));case\"==\":case\"!=\":3!==r.length&&o.push(new vt(n,r,'filter array for operator \"'+r[0]+'\" must have 3 elements'));case\"in\":case\"!in\":r.length>=2&&\"string\"!==(a=ir(r[1]))&&o.push(new vt(n+\"[1]\",r[1],\"string expected, \"+a+\" found\"));for(var s=2;s=p[f+0]&&n>=p[f+1])?(o[h]=!0,a.push(l[h])):o[h]=!1;}}},nn.prototype._forEachCell=function(t,e,r,n,i,a,o,s){for(var u=this._convertToCellCoord(t),l=this._convertToCellCoord(e),p=this._convertToCellCoord(r),c=this._convertToCellCoord(n),h=u;h<=p;h++)for(var f=l;f<=c;f++){var y=this.d*f+h;if((!s||s(this._convertFromCellCoord(h),this._convertFromCellCoord(f),this._convertFromCellCoord(h+1),this._convertFromCellCoord(f+1)))&&i.call(this,t,e,r,n,y,a,o,s))return}},nn.prototype._convertFromCellCoord=function(t){return (t-this.padding)/this.scale},nn.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},nn.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=rn+this.cells.length+1+1,r=0,n=0;n=0)){var c=t[p];l[p]=on[u].shallow.indexOf(p)>=0?c:ln(c,e);}t instanceof Error&&(l.message=t.message);}if(l.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return \"Object\"!==u&&(l.$name=u),l}throw new Error(\"can't serialize object of type \"+typeof t)}function pn(t){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||t instanceof ArrayBuffer||ArrayBuffer.isView(t)||t instanceof an)return t;if(Array.isArray(t))return t.map(pn);if(\"object\"==typeof t){var e=t.$name||\"Object\",r=on[e].klass;if(!r)throw new Error(\"can't deserialize unregistered class \"+e);if(r.deserialize)return r.deserialize(t);for(var n=Object.create(r.prototype),i=0,a=Object.keys(t);i=0?s:pn(s);}}return n}throw new Error(\"can't deserialize object of type \"+typeof t)}var cn=function(){this.first=!0;};cn.prototype.update=function(t,e){var r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom=128&&t<=255},Arabic:function(t){return t>=1536&&t<=1791},\"Arabic Supplement\":function(t){return t>=1872&&t<=1919},\"Arabic Extended-A\":function(t){return t>=2208&&t<=2303},\"Hangul Jamo\":function(t){return t>=4352&&t<=4607},\"Unified Canadian Aboriginal Syllabics\":function(t){return t>=5120&&t<=5759},Khmer:function(t){return t>=6016&&t<=6143},\"Unified Canadian Aboriginal Syllabics Extended\":function(t){return t>=6320&&t<=6399},\"General Punctuation\":function(t){return t>=8192&&t<=8303},\"Letterlike Symbols\":function(t){return t>=8448&&t<=8527},\"Number Forms\":function(t){return t>=8528&&t<=8591},\"Miscellaneous Technical\":function(t){return t>=8960&&t<=9215},\"Control Pictures\":function(t){return t>=9216&&t<=9279},\"Optical Character Recognition\":function(t){return t>=9280&&t<=9311},\"Enclosed Alphanumerics\":function(t){return t>=9312&&t<=9471},\"Geometric Shapes\":function(t){return t>=9632&&t<=9727},\"Miscellaneous Symbols\":function(t){return t>=9728&&t<=9983},\"Miscellaneous Symbols and Arrows\":function(t){return t>=11008&&t<=11263},\"CJK Radicals Supplement\":function(t){return t>=11904&&t<=12031},\"Kangxi Radicals\":function(t){return t>=12032&&t<=12255},\"Ideographic Description Characters\":function(t){return t>=12272&&t<=12287},\"CJK Symbols and Punctuation\":function(t){return t>=12288&&t<=12351},Hiragana:function(t){return t>=12352&&t<=12447},Katakana:function(t){return t>=12448&&t<=12543},Bopomofo:function(t){return t>=12544&&t<=12591},\"Hangul Compatibility Jamo\":function(t){return t>=12592&&t<=12687},Kanbun:function(t){return t>=12688&&t<=12703},\"Bopomofo Extended\":function(t){return t>=12704&&t<=12735},\"CJK Strokes\":function(t){return t>=12736&&t<=12783},\"Katakana Phonetic Extensions\":function(t){return t>=12784&&t<=12799},\"Enclosed CJK Letters and Months\":function(t){return t>=12800&&t<=13055},\"CJK Compatibility\":function(t){return t>=13056&&t<=13311},\"CJK Unified Ideographs Extension A\":function(t){return t>=13312&&t<=19903},\"Yijing Hexagram Symbols\":function(t){return t>=19904&&t<=19967},\"CJK Unified Ideographs\":function(t){return t>=19968&&t<=40959},\"Yi Syllables\":function(t){return t>=40960&&t<=42127},\"Yi Radicals\":function(t){return t>=42128&&t<=42191},\"Hangul Jamo Extended-A\":function(t){return t>=43360&&t<=43391},\"Hangul Syllables\":function(t){return t>=44032&&t<=55215},\"Hangul Jamo Extended-B\":function(t){return t>=55216&&t<=55295},\"Private Use Area\":function(t){return t>=57344&&t<=63743},\"CJK Compatibility Ideographs\":function(t){return t>=63744&&t<=64255},\"Arabic Presentation Forms-A\":function(t){return t>=64336&&t<=65023},\"Vertical Forms\":function(t){return t>=65040&&t<=65055},\"CJK Compatibility Forms\":function(t){return t>=65072&&t<=65103},\"Small Form Variants\":function(t){return t>=65104&&t<=65135},\"Arabic Presentation Forms-B\":function(t){return t>=65136&&t<=65279},\"Halfwidth and Fullwidth Forms\":function(t){return t>=65280&&t<=65519}};function fn(t){for(var e=0,r=t;e=65097&&t<=65103)||(!!hn[\"CJK Compatibility Ideographs\"](t)||(!!hn[\"CJK Compatibility\"](t)||(!!hn[\"CJK Radicals Supplement\"](t)||(!!hn[\"CJK Strokes\"](t)||(!(!hn[\"CJK Symbols and Punctuation\"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||(!!hn[\"CJK Unified Ideographs Extension A\"](t)||(!!hn[\"CJK Unified Ideographs\"](t)||(!!hn[\"Enclosed CJK Letters and Months\"](t)||(!!hn[\"Hangul Compatibility Jamo\"](t)||(!!hn[\"Hangul Jamo Extended-A\"](t)||(!!hn[\"Hangul Jamo Extended-B\"](t)||(!!hn[\"Hangul Jamo\"](t)||(!!hn[\"Hangul Syllables\"](t)||(!!hn.Hiragana(t)||(!!hn[\"Ideographic Description Characters\"](t)||(!!hn.Kanbun(t)||(!!hn[\"Kangxi Radicals\"](t)||(!!hn[\"Katakana Phonetic Extensions\"](t)||(!(!hn.Katakana(t)||12540===t)||(!(!hn[\"Halfwidth and Fullwidth Forms\"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||(!(!hn[\"Small Form Variants\"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||(!!hn[\"Unified Canadian Aboriginal Syllabics\"](t)||(!!hn[\"Unified Canadian Aboriginal Syllabics Extended\"](t)||(!!hn[\"Vertical Forms\"](t)||(!!hn[\"Yijing Hexagram Symbols\"](t)||(!!hn[\"Yi Syllables\"](t)||!!hn[\"Yi Radicals\"](t))))))))))))))))))))))))))))))}function mn(t){return !(dn(t)||function(t){return !!(hn[\"Latin-1 Supplement\"](t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||hn[\"General Punctuation\"](t)&&(8214===t||8224===t||8225===t||8240===t||8241===t||8251===t||8252===t||8258===t||8263===t||8264===t||8265===t||8273===t)||hn[\"Letterlike Symbols\"](t)||hn[\"Number Forms\"](t)||hn[\"Miscellaneous Technical\"](t)&&(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215)||hn[\"Control Pictures\"](t)&&9251!==t||hn[\"Optical Character Recognition\"](t)||hn[\"Enclosed Alphanumerics\"](t)||hn[\"Geometric Shapes\"](t)||hn[\"Miscellaneous Symbols\"](t)&&!(t>=9754&&t<=9759)||hn[\"Miscellaneous Symbols and Arrows\"](t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243)||hn[\"CJK Symbols and Punctuation\"](t)||hn.Katakana(t)||hn[\"Private Use Area\"](t)||hn[\"CJK Compatibility Forms\"](t)||hn[\"Small Form Variants\"](t)||hn[\"Halfwidth and Fullwidth Forms\"](t)||8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)}(t))}function vn(t,e){return !(!e&&(t>=1424&&t<=2303||hn[\"Arabic Presentation Forms-A\"](t)||hn[\"Arabic Presentation Forms-B\"](t)))&&!(t>=2304&&t<=3583||t>=3840&&t<=4255||hn.Khmer(t))}var gn,xn=!1,bn=null,_n=!1,wn=new dt,An={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return _n||null!=An.applyArabicShaping}},Sn=function(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new cn,this.transition={});};Sn.prototype.isSupportedScript=function(t){return function(t,e){for(var r=0,n=t;rthis.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}};var kn=function(t,e){this.property=t,this.value=e,this.expression=br(void 0===e?t.specification.default:e,t.specification);};kn.prototype.isDataDriven=function(){return \"source\"===this.expression.kind||\"composite\"===this.expression.kind},kn.prototype.possiblyEvaluate=function(t){return this.property.possiblyEvaluate(this,t)};var zn=function(t){this.property=t,this.value=new kn(t,void 0);};zn.prototype.transitioned=function(t,e){return new Bn(this.property,this.value,e,c({},t.transition,this.transition),t.now)},zn.prototype.untransitioned=function(){return new Bn(this.property,this.value,null,{},0)};var In=function(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues);};In.prototype.getValue=function(t){return b(this._values[t].value.value)},In.prototype.setValue=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new zn(this._values[t].property)),this._values[t].value=new kn(this._values[t].property,null===e?void 0:b(e));},In.prototype.getTransition=function(t){return b(this._values[t].transition)},In.prototype.setTransition=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new zn(this._values[t].property)),this._values[t].transition=b(e)||void 0;},In.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);ethis.end)return this.prior=null,r;if(this.value.isDataDriven())return this.prior=null,r;if(e=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}(i))}return r};var En=function(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues);};En.prototype.possiblyEvaluate=function(t){for(var e=new Cn(this._properties),r=0,n=Object.keys(this._values);rn.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},e.prototype.interpolate=function(t){return t},e}(Tn),Ln=function(t){this.specification=t;};Ln.prototype.possiblyEvaluate=function(t,e){if(void 0!==t.value){if(\"constant\"===t.expression.kind){var r=t.expression.evaluate(e);return this._calculate(r,r,r,e)}return this._calculate(t.expression.evaluate(new Sn(Math.floor(e.zoom-1),e)),t.expression.evaluate(new Sn(Math.floor(e.zoom),e)),t.expression.evaluate(new Sn(Math.floor(e.zoom+1),e)),e)}},Ln.prototype._calculate=function(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},Ln.prototype.interpolate=function(t){return t};var On=function(t){this.specification=t;};On.prototype.possiblyEvaluate=function(t,e){return !!t.expression.evaluate(e)},On.prototype.interpolate=function(){return !1};var Dn=function(t){for(var e in this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},t){var r=t[e],n=this.defaultPropertyValues[e]=new kn(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new zn(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({});}};sn(\"DataDrivenProperty\",Tn),sn(\"DataConstantProperty\",Mn),sn(\"CrossFadedDataDrivenProperty\",Fn),sn(\"CrossFadedProperty\",Ln),sn(\"ColorRampProperty\",On);var Un=function(t){function e(e,r){if(t.call(this),this.id=e.id,this.type=e.type,this.visibility=\"visible\",this._featureFilter=function(){return !0},\"custom\"!==e.type&&(e=e,this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,\"background\"!==e.type&&(this.source=e.source,this.sourceLayer=e[\"source-layer\"],this.filter=e.filter),r.layout&&(this._unevaluatedLayout=new Pn(r.layout)),r.paint)){for(var n in this._transitionablePaint=new In(r.paint),e.paint)this.setPaintProperty(n,e.paint[n],{validate:!1});for(var i in e.layout)this.setLayoutProperty(i,e.layout[i],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned();}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},e.prototype.getLayoutProperty=function(t){return \"visibility\"===t?this.visibility:this._unevaluatedLayout.getValue(t)},e.prototype.setLayoutProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".layout.\"+t;if(this._validate(Qr,n,t,e,r))return}\"visibility\"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=\"none\"===e?e:\"visible\";},e.prototype.getPaintProperty=function(t){return v(t,\"-transition\")?this._transitionablePaint.getTransition(t.slice(0,-\"-transition\".length)):this._transitionablePaint.getValue(t)},e.prototype.setPaintProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".paint.\"+t;if(this._validate(Wr,n,t,e,r))return !1}if(v(t,\"-transition\"))return this._transitionablePaint.setTransition(t.slice(0,-\"-transition\".length),e||void 0),!1;var i=this._transitionablePaint._values[t],a=\"cross-faded-data-driven\"===i.property.specification[\"property-type\"]&&!i.value.value&&e,o=this._transitionablePaint._values[t].value.isDataDriven();this._transitionablePaint.setValue(t,e);var s=this._transitionablePaint._values[t].value.isDataDriven();return this._handleSpecialPaintPropertyUpdate(t),s||o||a},e.prototype._handleSpecialPaintPropertyUpdate=function(t){},e.prototype.isHidden=function(t){return !!(this.minzoom&&t=this.maxzoom)||\"none\"===this.visibility)},e.prototype.updateTransitions=function(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint);},e.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},e.prototype.recalculate=function(t){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t)),this.paint=this._transitioningPaint.possiblyEvaluate(t);},e.prototype.serialize=function(){var t={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return \"none\"===this.visibility&&(t.layout=t.layout||{},t.layout.visibility=\"none\"),x(t,function(t,e){return !(void 0===t||\"layout\"===e&&!Object.keys(t).length||\"paint\"===e&&!Object.keys(t).length)})},e.prototype._validate=function(t,e,r,n,i){return void 0===i&&(i={}),(!i||!1!==i.validate)&&tn(this,t.call(Jr,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:mt,style:{glyphs:!0,sprite:!0}}))},e.prototype.hasOffscreenPass=function(){return !1},e.prototype.resize=function(){},e.prototype.isStateDependent=function(){for(var t in this.paint._values){var e=this.paint.get(t);if(e instanceof Vn&&er(e.property.specification)&&((\"source\"===e.value.kind||\"composite\"===e.value.kind)&&e.value.isStateDependent))return !0}return !1},e}(dt),jn={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},qn=function(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8;},Rn=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0);};function Nn(t,e){void 0===e&&(e=1);var r=0,n=0;return {members:t.map(function(t){var i,a=(i=t.type,jn[i].BYTES_PER_ELEMENT),o=r=Kn(r,Math.max(e,a)),s=t.components||1;return n=Math.max(n,a),r+=a*s,{name:t.name,type:t.type,components:s,offset:o}}),size:Kn(r,Math.max(n,e)),alignment:e}}function Kn(t,e){return Math.ceil(t/e)*e}Rn.serialize=function(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}},Rn.deserialize=function(t){var e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e},Rn.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews());},Rn.prototype.clear=function(){this.length=0;},Rn.prototype.resize=function(t){this.reserve(t),this.length=t;},Rn.prototype.reserve=function(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var e=this.uint8;this._refreshViews(),e&&this.uint8.set(e);}},Rn.prototype._refreshViews=function(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")};var Gn=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t},e}(Rn);Gn.prototype.bytesPerElement=4,sn(\"StructArrayLayout2i4\",Gn);var Xn=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.int16[a+0]=e,this.int16[a+1]=r,this.int16[a+2]=n,this.int16[a+3]=i,t},e}(Rn);Xn.prototype.bytesPerElement=8,sn(\"StructArrayLayout4i8\",Xn);var Zn=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Rn);Zn.prototype.bytesPerElement=12,sn(\"StructArrayLayout2i4i12\",Zn);var Hn=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s){var u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,o,s)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u){var l=6*t,p=12*t;return this.int16[l+0]=e,this.int16[l+1]=r,this.int16[l+2]=n,this.int16[l+3]=i,this.uint8[p+8]=a,this.uint8[p+9]=o,this.uint8[p+10]=s,this.uint8[p+11]=u,t},e}(Rn);Hn.prototype.bytesPerElement=12,sn(\"StructArrayLayout4i4ub12\",Hn);var Yn=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s){var u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,o,s)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u){var l=8*t;return this.uint16[l+0]=e,this.uint16[l+1]=r,this.uint16[l+2]=n,this.uint16[l+3]=i,this.uint16[l+4]=a,this.uint16[l+5]=o,this.uint16[l+6]=s,this.uint16[l+7]=u,t},e}(Rn);Yn.prototype.bytesPerElement=16,sn(\"StructArrayLayout8ui16\",Yn);var Jn=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s){var u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,o,s)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u){var l=8*t;return this.int16[l+0]=e,this.int16[l+1]=r,this.int16[l+2]=n,this.int16[l+3]=i,this.uint16[l+4]=a,this.uint16[l+5]=o,this.uint16[l+6]=s,this.uint16[l+7]=u,t},e}(Rn);Jn.prototype.bytesPerElement=16,sn(\"StructArrayLayout4i4ui16\",Jn);var $n=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t},e}(Rn);$n.prototype.bytesPerElement=12,sn(\"StructArrayLayout3f12\",$n);var Wn=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint32[r+0]=e,t},e}(Rn);Wn.prototype.bytesPerElement=4,sn(\"StructArrayLayout1ul4\",Wn);var Qn=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,u,l,p){var c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,a,o,s,u,l,p)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u,l,p,c){var h=12*t,f=6*t;return this.int16[h+0]=e,this.int16[h+1]=r,this.int16[h+2]=n,this.int16[h+3]=i,this.int16[h+4]=a,this.int16[h+5]=o,this.uint32[f+3]=s,this.uint16[h+8]=u,this.uint16[h+9]=l,this.int16[h+10]=p,this.int16[h+11]=c,t},e}(Rn);Qn.prototype.bytesPerElement=24,sn(\"StructArrayLayout6i1ul2ui2i24\",Qn);var ti=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Rn);ti.prototype.bytesPerElement=12,sn(\"StructArrayLayout2i2i2i12\",ti);var ei=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=4*t;return this.uint8[n+0]=e,this.uint8[n+1]=r,t},e}(Rn);ei.prototype.bytesPerElement=4,sn(\"StructArrayLayout2ub4\",ei);var ri=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,u,l,p,c,h,f){var y=this.length;return this.resize(y+1),this.emplace(y,t,e,r,n,i,a,o,s,u,l,p,c,h,f)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u,l,p,c,h,f,y){var d=20*t,m=10*t,v=40*t;return this.int16[d+0]=e,this.int16[d+1]=r,this.uint16[d+2]=n,this.uint16[d+3]=i,this.uint32[m+2]=a,this.uint32[m+3]=o,this.uint32[m+4]=s,this.uint16[d+10]=u,this.uint16[d+11]=l,this.uint16[d+12]=p,this.float32[m+7]=c,this.float32[m+8]=h,this.uint8[v+36]=f,this.uint8[v+37]=y,t},e}(Rn);ri.prototype.bytesPerElement=40,sn(\"StructArrayLayout2i2ui3ul3ui2f2ub40\",ri);var ni=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,u,l,p,c,h,f){var y=this.length;return this.resize(y+1),this.emplace(y,t,e,r,n,i,a,o,s,u,l,p,c,h,f)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u,l,p,c,h,f,y){var d=16*t,m=8*t;return this.int16[d+0]=e,this.int16[d+1]=r,this.int16[d+2]=n,this.int16[d+3]=i,this.uint16[d+4]=a,this.uint16[d+5]=o,this.uint16[d+6]=s,this.uint16[d+7]=u,this.uint16[d+8]=l,this.uint16[d+9]=p,this.uint16[d+10]=c,this.uint16[d+11]=h,this.uint16[d+12]=f,this.uint32[m+7]=y,t},e}(Rn);ni.prototype.bytesPerElement=32,sn(\"StructArrayLayout4i9ui1ul32\",ni);var ii=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.float32[r+0]=e,t},e}(Rn);ii.prototype.bytesPerElement=4,sn(\"StructArrayLayout1f4\",ii);var ai=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t},e}(Rn);ai.prototype.bytesPerElement=6,sn(\"StructArrayLayout3i6\",ai);var oi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=2*t,a=4*t;return this.uint32[i+0]=e,this.uint16[a+2]=r,this.uint16[a+3]=n,t},e}(Rn);oi.prototype.bytesPerElement=8,sn(\"StructArrayLayout1ul2ui8\",oi);var si=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t},e}(Rn);si.prototype.bytesPerElement=6,sn(\"StructArrayLayout3ui6\",si);var ui=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t},e}(Rn);ui.prototype.bytesPerElement=4,sn(\"StructArrayLayout2ui4\",ui);var li=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint16[r+0]=e,t},e}(Rn);li.prototype.bytesPerElement=2,sn(\"StructArrayLayout1ui2\",li);var pi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t},e}(Rn);pi.prototype.bytesPerElement=8,sn(\"StructArrayLayout2f8\",pi);var ci=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.float32[a+3]=i,t},e}(Rn);ci.prototype.bytesPerElement=16,sn(\"StructArrayLayout4f16\",ci);var hi=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},radius:{configurable:!0},signedDistanceFromAnchor:{configurable:!0},anchorPoint:{configurable:!0}};return r.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorPointX.set=function(t){this._structArray.int16[this._pos2+0]=t;},r.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},r.anchorPointY.set=function(t){this._structArray.int16[this._pos2+1]=t;},r.x1.get=function(){return this._structArray.int16[this._pos2+2]},r.x1.set=function(t){this._structArray.int16[this._pos2+2]=t;},r.y1.get=function(){return this._structArray.int16[this._pos2+3]},r.y1.set=function(t){this._structArray.int16[this._pos2+3]=t;},r.x2.get=function(){return this._structArray.int16[this._pos2+4]},r.x2.set=function(t){this._structArray.int16[this._pos2+4]=t;},r.y2.get=function(){return this._structArray.int16[this._pos2+5]},r.y2.set=function(t){this._structArray.int16[this._pos2+5]=t;},r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.featureIndex.set=function(t){this._structArray.uint32[this._pos4+3]=t;},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},r.sourceLayerIndex.set=function(t){this._structArray.uint16[this._pos2+8]=t;},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.bucketIndex.set=function(t){this._structArray.uint16[this._pos2+9]=t;},r.radius.get=function(){return this._structArray.int16[this._pos2+10]},r.radius.set=function(t){this._structArray.int16[this._pos2+10]=t;},r.signedDistanceFromAnchor.get=function(){return this._structArray.int16[this._pos2+11]},r.signedDistanceFromAnchor.set=function(t){this._structArray.int16[this._pos2+11]=t;},r.anchorPoint.get=function(){return new i(this.anchorPointX,this.anchorPointY)},Object.defineProperties(e.prototype,r),e}(qn);hi.prototype.size=24;var fi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new hi(this,t)},e}(Qn);sn(\"CollisionBoxArray\",fi);var yi=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},hidden:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorX.set=function(t){this._structArray.int16[this._pos2+0]=t;},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.anchorY.set=function(t){this._structArray.int16[this._pos2+1]=t;},r.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.glyphStartIndex.set=function(t){this._structArray.uint16[this._pos2+2]=t;},r.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},r.numGlyphs.set=function(t){this._structArray.uint16[this._pos2+3]=t;},r.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},r.vertexStartIndex.set=function(t){this._structArray.uint32[this._pos4+2]=t;},r.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.lineStartIndex.set=function(t){this._structArray.uint32[this._pos4+3]=t;},r.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},r.lineLength.set=function(t){this._structArray.uint32[this._pos4+4]=t;},r.segment.get=function(){return this._structArray.uint16[this._pos2+10]},r.segment.set=function(t){this._structArray.uint16[this._pos2+10]=t;},r.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},r.lowerSize.set=function(t){this._structArray.uint16[this._pos2+11]=t;},r.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},r.upperSize.set=function(t){this._structArray.uint16[this._pos2+12]=t;},r.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},r.lineOffsetX.set=function(t){this._structArray.float32[this._pos4+7]=t;},r.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},r.lineOffsetY.set=function(t){this._structArray.float32[this._pos4+8]=t;},r.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},r.writingMode.set=function(t){this._structArray.uint8[this._pos1+36]=t;},r.hidden.get=function(){return this._structArray.uint8[this._pos1+37]},r.hidden.set=function(t){this._structArray.uint8[this._pos1+37]=t;},Object.defineProperties(e.prototype,r),e}(qn);yi.prototype.size=40;var di=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new yi(this,t)},e}(ri);sn(\"PlacedSymbolArray\",di);var mi=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},horizontalPlacedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},crossTileID:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorX.set=function(t){this._structArray.int16[this._pos2+0]=t;},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.anchorY.set=function(t){this._structArray.int16[this._pos2+1]=t;},r.horizontalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},r.horizontalPlacedTextSymbolIndex.set=function(t){this._structArray.int16[this._pos2+2]=t;},r.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},r.verticalPlacedTextSymbolIndex.set=function(t){this._structArray.int16[this._pos2+3]=t;},r.key.get=function(){return this._structArray.uint16[this._pos2+4]},r.key.set=function(t){this._structArray.uint16[this._pos2+4]=t;},r.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+5]},r.textBoxStartIndex.set=function(t){this._structArray.uint16[this._pos2+5]=t;},r.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+6]},r.textBoxEndIndex.set=function(t){this._structArray.uint16[this._pos2+6]=t;},r.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+7]},r.iconBoxStartIndex.set=function(t){this._structArray.uint16[this._pos2+7]=t;},r.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+8]},r.iconBoxEndIndex.set=function(t){this._structArray.uint16[this._pos2+8]=t;},r.featureIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.featureIndex.set=function(t){this._structArray.uint16[this._pos2+9]=t;},r.numGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+10]},r.numGlyphVertices.set=function(t){this._structArray.uint16[this._pos2+10]=t;},r.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+11]},r.numVerticalGlyphVertices.set=function(t){this._structArray.uint16[this._pos2+11]=t;},r.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+12]},r.numIconVertices.set=function(t){this._structArray.uint16[this._pos2+12]=t;},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+7]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+7]=t;},Object.defineProperties(e.prototype,r),e}(qn);mi.prototype.size=32;var vi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new mi(this,t)},e}(ni);sn(\"SymbolInstanceArray\",vi);var gi=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={offsetX:{configurable:!0}};return r.offsetX.get=function(){return this._structArray.float32[this._pos4+0]},r.offsetX.set=function(t){this._structArray.float32[this._pos4+0]=t;},Object.defineProperties(e.prototype,r),e}(qn);gi.prototype.size=4;var xi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getoffsetX=function(t){return this.float32[1*t+0]},e.prototype.get=function(t){return new gi(this,t)},e}(ii);sn(\"GlyphOffsetArray\",xi);var bi=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={x:{configurable:!0},y:{configurable:!0},tileUnitDistanceFromAnchor:{configurable:!0}};return r.x.get=function(){return this._structArray.int16[this._pos2+0]},r.x.set=function(t){this._structArray.int16[this._pos2+0]=t;},r.y.get=function(){return this._structArray.int16[this._pos2+1]},r.y.set=function(t){this._structArray.int16[this._pos2+1]=t;},r.tileUnitDistanceFromAnchor.get=function(){return this._structArray.int16[this._pos2+2]},r.tileUnitDistanceFromAnchor.set=function(t){this._structArray.int16[this._pos2+2]=t;},Object.defineProperties(e.prototype,r),e}(qn);bi.prototype.size=6;var _i=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getx=function(t){return this.int16[3*t+0]},e.prototype.gety=function(t){return this.int16[3*t+1]},e.prototype.gettileUnitDistanceFromAnchor=function(t){return this.int16[3*t+2]},e.prototype.get=function(t){return new bi(this,t)},e}(ai);sn(\"SymbolLineVertexArray\",_i);var wi=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},r.featureIndex.set=function(t){this._structArray.uint32[this._pos4+0]=t;},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.sourceLayerIndex.set=function(t){this._structArray.uint16[this._pos2+2]=t;},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},r.bucketIndex.set=function(t){this._structArray.uint16[this._pos2+3]=t;},Object.defineProperties(e.prototype,r),e}(qn);wi.prototype.size=8;var Ai=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new wi(this,t)},e}(oi);sn(\"FeatureIndexArray\",Ai);var Si=Nn([{name:\"a_pos\",components:2,type:\"Int16\"}],4),ki=Si.members,zi=(Si.size,Si.alignment,function(t){void 0===t&&(t=[]),this.segments=t;});function Ii(t,e){return 256*(t=l(Math.floor(t),0,255))+(e=l(Math.floor(e),0,255))}zi.prototype.prepareSegment=function(t,e,r,n){var i=this.segments[this.segments.length-1];return t>zi.MAX_VERTEX_ARRAY_LENGTH&&w(\"Max vertices per segment is \"+zi.MAX_VERTEX_ARRAY_LENGTH+\": bucket requested \"+t),(!i||i.vertexLength+t>zi.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i},zi.prototype.get=function(){return this.segments},zi.prototype.destroy=function(){for(var t=0,e=this.segments;t>1;this.ids[n]>=t?r=n:e=n+1;}for(var i=[];this.ids[e]===t;){var a=this.positions[3*e],o=this.positions[3*e+1],s=this.positions[3*e+2];i.push({index:a,start:o,end:s}),e++;}return i},Bi.serialize=function(t,e){var r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return function t(e,r,n,i){if(n>=i)return;var a=e[n+i>>1];var o=n-1;var s=i+1;for(;;){do{o++;}while(e[o]a);if(o>=s)break;Ei(e,o,s),Ei(r,3*o,3*s),Ei(r,3*o+1,3*s+1),Ei(r,3*o+2,3*s+2);}t(e,r,n,s);t(e,r,s+1,i);}(r,n,0,r.length-1),e.push(r.buffer,n.buffer),{ids:r,positions:n}},Bi.deserialize=function(t){var e=new Bi;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e},sn(\"FeaturePositionMap\",Bi);var Pi=function(t,e){this.gl=t.gl,this.location=e;},Vi=function(t){function e(e,r){t.call(this,e,r),this.current=0;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){this.current!==t&&(this.current=t,this.gl.uniform1i(this.location,t));},e}(Pi),Ci=function(t){function e(e,r){t.call(this,e,r),this.current=0;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){this.current!==t&&(this.current=t,this.gl.uniform1f(this.location,t));},e}(Pi),Mi=function(t){function e(e,r){t.call(this,e,r),this.current=[0,0];}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){t[0]===this.current[0]&&t[1]===this.current[1]||(this.current=t,this.gl.uniform2f(this.location,t[0],t[1]));},e}(Pi),Ti=function(t){function e(e,r){t.call(this,e,r),this.current=[0,0,0];}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]||(this.current=t,this.gl.uniform3f(this.location,t[0],t[1],t[2]));},e}(Pi),Fi=function(t){function e(e,r){t.call(this,e,r),this.current=[0,0,0,0];}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]&&t[3]===this.current[3]||(this.current=t,this.gl.uniform4f(this.location,t[0],t[1],t[2],t[3]));},e}(Pi),Li=function(t){function e(e,r){t.call(this,e,r),this.current=Dt.transparent;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){t.r===this.current.r&&t.g===this.current.g&&t.b===this.current.b&&t.a===this.current.a||(this.current=t,this.gl.uniform4f(this.location,t.r,t.g,t.b,t.a));},e}(Pi),Oi=new Float32Array(16),Di=function(t){function e(e,r){t.call(this,e,r),this.current=Oi;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){if(t[12]!==this.current[12]||t[0]!==this.current[0])return this.current=t,void this.gl.uniformMatrix4fv(this.location,!1,t);for(var e=1;e<16;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix4fv(this.location,!1,t);break}},e}(Pi);function Ui(t){return [Ii(255*t.r,255*t.g),Ii(255*t.b,255*t.a)]}var ji=function(t,e,r){this.value=t,this.names=e,this.uniformNames=this.names.map(function(t){return \"u_\"+t}),this.type=r,this.maxValue=-1/0;};ji.prototype.defines=function(){return this.names.map(function(t){return \"#define HAS_UNIFORM_u_\"+t})},ji.prototype.setConstantPatternPositions=function(){},ji.prototype.populatePaintArray=function(){},ji.prototype.updatePaintArray=function(){},ji.prototype.upload=function(){},ji.prototype.destroy=function(){},ji.prototype.setUniforms=function(t,e,r,n){e.set(n.constantOr(this.value));},ji.prototype.getBinding=function(t,e){return \"color\"===this.type?new Li(t,e):new Ci(t,e)},ji.serialize=function(t){var e=t.value,r=t.names,n=t.type;return {value:ln(e),names:r,type:n}},ji.deserialize=function(t){var e=t.value,r=t.names,n=t.type;return new ji(pn(e),r,n)};var qi=function(t,e,r){this.value=t,this.names=e,this.uniformNames=this.names.map(function(t){return \"u_\"+t}),this.type=r,this.maxValue=-1/0,this.patternPositions={patternTo:null,patternFrom:null};};qi.prototype.defines=function(){return this.names.map(function(t){return \"#define HAS_UNIFORM_u_\"+t})},qi.prototype.populatePaintArray=function(){},qi.prototype.updatePaintArray=function(){},qi.prototype.upload=function(){},qi.prototype.destroy=function(){},qi.prototype.setConstantPatternPositions=function(t,e){this.patternPositions.patternTo=t.tlbr,this.patternPositions.patternFrom=e.tlbr;},qi.prototype.setUniforms=function(t,e,r,n,i){var a=this.patternPositions;\"u_pattern_to\"===i&&a.patternTo&&e.set(a.patternTo),\"u_pattern_from\"===i&&a.patternFrom&&e.set(a.patternFrom);},qi.prototype.getBinding=function(t,e){return new Fi(t,e)};var Ri=function(t,e,r,n){this.expression=t,this.names=e,this.type=r,this.uniformNames=this.names.map(function(t){return \"a_\"+t}),this.maxValue=-1/0,this.paintVertexAttributes=e.map(function(t){return {name:\"a_\"+t,type:\"Float32\",components:\"color\"===r?2:1,offset:0}}),this.paintVertexArray=new n;};Ri.prototype.defines=function(){return []},Ri.prototype.setConstantPatternPositions=function(){},Ri.prototype.populatePaintArray=function(t,e){var r=this.paintVertexArray,n=r.length;r.reserve(t);var i=this.expression.evaluate(new Sn(0),e,{});if(\"color\"===this.type)for(var a=Ui(i),o=n;o$i.max||o.y<$i.min||o.y>$i.max)&&w(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\");}return r}function Qi(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2);}var ta=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new Gn,this.indexArray=new si,this.segments=new zi,this.programConfigurations=new Xi(ki,t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter(function(t){return t.isStateDependent()}).map(function(t){return t.id});};function ea(t,e){for(var r=0;r1){if(aa(t,e))return !0;for(var n=0;n1?t.distSqr(r):t.distSqr(r.sub(e)._mult(i)._add(e))}function la(t,e){for(var r,n,i,a=!1,o=0;oe.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(a=!a);return a}function pa(t,e){for(var r=!1,n=0,i=t.length-1;ne.y!=o.y>e.y&&e.x<(o.x-a.x)*(e.y-a.y)/(o.y-a.y)+a.x&&(r=!r);}return r}function ca(t,e,r){var n=r[0],i=r[2];if(t.xi.x&&e.x>i.x||t.yi.y&&e.y>i.y)return !1;var a=A(t,e,r[0]);return a!==A(t,e,r[1])||a!==A(t,e,r[2])||a!==A(t,e,r[3])}function ha(t,e,r){var n=e.paint.get(t).value;return \"constant\"===n.kind?n.value:r.programConfigurations.get(e.id).binders[t].maxValue}function fa(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function ya(t,e,r,n,a){if(!e[0]&&!e[1])return t;var o=i.convert(e)._mult(a);\"viewport\"===r&&o._rotate(-n);for(var s=[],u=0;u=Yi||l<0||l>=Yi)){var p=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray),c=p.vertexLength;Qi(this.layoutVertexArray,u,l,-1,-1),Qi(this.layoutVertexArray,u,l,1,-1),Qi(this.layoutVertexArray,u,l,1,1),Qi(this.layoutVertexArray,u,l,-1,1),this.indexArray.emplaceBack(c,c+1,c+2),this.indexArray.emplaceBack(c,c+3,c+2),p.vertexLength+=4,p.primitiveLength+=2;}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{});},sn(\"CircleBucket\",ta,{omit:[\"layers\"]});var da={paint:new Dn({\"circle-radius\":new Tn(mt.paint_circle[\"circle-radius\"]),\"circle-color\":new Tn(mt.paint_circle[\"circle-color\"]),\"circle-blur\":new Tn(mt.paint_circle[\"circle-blur\"]),\"circle-opacity\":new Tn(mt.paint_circle[\"circle-opacity\"]),\"circle-translate\":new Mn(mt.paint_circle[\"circle-translate\"]),\"circle-translate-anchor\":new Mn(mt.paint_circle[\"circle-translate-anchor\"]),\"circle-pitch-scale\":new Mn(mt.paint_circle[\"circle-pitch-scale\"]),\"circle-pitch-alignment\":new Mn(mt.paint_circle[\"circle-pitch-alignment\"]),\"circle-stroke-width\":new Tn(mt.paint_circle[\"circle-stroke-width\"]),\"circle-stroke-color\":new Tn(mt.paint_circle[\"circle-stroke-color\"]),\"circle-stroke-opacity\":new Tn(mt.paint_circle[\"circle-stroke-opacity\"])})},ma=1e-6,va=\"undefined\"!=typeof Float32Array?Float32Array:Array;Math.PI;function ga(){var t=new va(9);return va!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function xa(){var t=new va(3);return va!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function ba(t,e,r){var n=new va(3);return n[0]=t,n[1]=e,n[2]=r,n}function _a(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],u=r[2];return t[0]=i*u-a*s,t[1]=a*o-n*u,t[2]=n*s-i*o,t}var wa,Aa=function(t){var e=t[0],r=t[1],n=t[2];return Math.sqrt(e*e+r*r+n*n)};wa=xa();function Sa(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}!function(){var t,e=(t=new va(4),va!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t);}();function ka(){var t=new va(4);return va!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function za(t,e,r,n){var i,a,o,s,u,l=e[0],p=e[1],c=e[2],h=e[3],f=r[0],y=r[1],d=r[2],m=r[3];return (a=l*f+p*y+c*d+h*m)<0&&(a=-a,f=-f,y=-y,d=-d,m=-m),1-a>ma?(i=Math.acos(a),o=Math.sin(i),s=Math.sin((1-n)*i)/o,u=Math.sin(n*i)/o):(s=1-n,u=n),t[0]=s*l+u*f,t[1]=s*p+u*y,t[2]=s*c+u*d,t[3]=s*h+u*m,t}var Ia,Ba,Ea,Pa,Va,Ca,Ma=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=r*r+n*n+i*i+a*a;return o>0&&(o=1/Math.sqrt(o)),t[0]=r*o,t[1]=n*o,t[2]=i*o,t[3]=a*o,t};Ia=xa(),Ba=ba(1,0,0),Ea=ba(0,1,0),Pa=ka(),Va=ka(),Ca=ga();!function(){var t,e=(t=new va(2),va!=Float32Array&&(t[0]=0,t[1]=0),t);}();var Ta=function(t){function e(e){t.call(this,e,da);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new ta(t)},e.prototype.queryRadius=function(t){var e=t;return ha(\"circle-radius\",this,e)+ha(\"circle-stroke-width\",this,e)+fa(this.paint.get(\"circle-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a,o,s){for(var u=ya(t,this.paint.get(\"circle-translate\"),this.paint.get(\"circle-translate-anchor\"),a.angle,o),l=this.paint.get(\"circle-radius\").evaluate(e,r)+this.paint.get(\"circle-stroke-width\").evaluate(e,r),p=\"map\"===this.paint.get(\"circle-pitch-alignment\"),c=p?u:function(t,e){return t.map(function(t){return Fa(t,e)})}(u,s),h=p?l*o:l,f=0,y=n;ft.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError(\"out of range source coordinates for image copy\");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError(\"out of range destination coordinates for image copy\");for(var o=t.data,s=e.data,u=0;u80*r){n=a=t[0],i=o=t[1];for(var y=r;ya&&(a=s),u>o&&(o=u);l=0!==(l=Math.max(a-n,o-i))?1/l:0;}return to(h,f,r,n,i,l),f}function Wa(t,e,r,n,i){var a,o;if(i===bo(t,e,r,n)>0)for(a=e;a=e;a-=n)o=vo(a,t[a],t[a+1],o);return o&&ho(o,o.next)&&(go(o),o=o.next),o}function Qa(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!ho(n,n.next)&&0!==co(n.prev,n,n.next))n=n.next;else{if(go(n),(n=e=n.prev)===n.next)break;r=!0;}}while(r||n!==e);return e}function to(t,e,r,n,i,a,o){if(t){!o&&a&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=so(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,u,l=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||u>0&&n;)0!==s&&(0===u||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,u--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n;}a.nextZ=null,l*=2;}while(o>1)}(i);}(t,n,i,a);for(var s,u,l=t;t.prev!==t.next;)if(s=t.prev,u=t.next,a?ro(t,n,i,a):eo(t))e.push(s.i/r),e.push(t.i/r),e.push(u.i/r),go(t),t=u.next,l=u.next;else if((t=u)===l){o?1===o?to(t=no(t,e,r),e,r,n,i,a,2):2===o&&io(t,e,r,n,i,a):to(Qa(t),e,r,n,i,a,1);break}}}function eo(t){var e=t.prev,r=t,n=t.next;if(co(e,r,n)>=0)return !1;for(var i=t.next.next;i!==t.prev;){if(lo(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&co(i.prev,i,i.next)>=0)return !1;i=i.next;}return !0}function ro(t,e,r,n){var i=t.prev,a=t,o=t.next;if(co(i,a,o)>=0)return !1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,p=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,c=so(s,u,e,r,n),h=so(l,p,e,r,n),f=t.prevZ,y=t.nextZ;f&&f.z>=c&&y&&y.z<=h;){if(f!==t.prev&&f!==t.next&&lo(i.x,i.y,a.x,a.y,o.x,o.y,f.x,f.y)&&co(f.prev,f,f.next)>=0)return !1;if(f=f.prevZ,y!==t.prev&&y!==t.next&&lo(i.x,i.y,a.x,a.y,o.x,o.y,y.x,y.y)&&co(y.prev,y,y.next)>=0)return !1;y=y.nextZ;}for(;f&&f.z>=c;){if(f!==t.prev&&f!==t.next&&lo(i.x,i.y,a.x,a.y,o.x,o.y,f.x,f.y)&&co(f.prev,f,f.next)>=0)return !1;f=f.prevZ;}for(;y&&y.z<=h;){if(y!==t.prev&&y!==t.next&&lo(i.x,i.y,a.x,a.y,o.x,o.y,y.x,y.y)&&co(y.prev,y,y.next)>=0)return !1;y=y.nextZ;}return !0}function no(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!ho(i,a)&&fo(i,n,n.next,a)&&yo(i,a)&&yo(a,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(a.i/r),go(n),go(n.next),n=t=a),n=n.next;}while(n!==t);return n}function io(t,e,r,n,i,a){var o=t;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&po(o,s)){var u=mo(o,s);return o=Qa(o,o.next),u=Qa(u,u.next),to(o,e,r,n,i,a),void to(u,e,r,n,i,a)}s=s.next;}o=o.next;}while(o!==t)}function ao(t,e){return t.x-e.x}function oo(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=p&&i!==n.x&&lo(ar.x)&&yo(n,t)&&(r=n,h=u),n=n.next;return r}(t,e)){var r=mo(e,t);Qa(r,r.next);}}function so(t,e,r,n,i){return (t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function uo(t){var e=t,r=t;do{(e.x=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function po(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&fo(r,r.next,t,e))return !0;r=r.next;}while(r!==t);return !1}(t,e)&&yo(t,e)&&yo(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;}while(r!==t);return n}(t,e)}function co(t,e,r){return (e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function ho(t,e){return t.x===e.x&&t.y===e.y}function fo(t,e,r,n){return !!(ho(t,e)&&ho(r,n)||ho(t,n)&&ho(r,e))||co(t,e,r)>0!=co(t,e,n)>0&&co(r,n,t)>0!=co(r,n,e)>0}function yo(t,e){return co(t.prev,t,t.next)<0?co(t,e,t.next)>=0&&co(t,t.prev,e)>=0:co(t,e,t.prev)<0||co(t,t.next,e)<0}function mo(t,e){var r=new xo(t.i,t.x,t.y),n=new xo(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function vo(t,e,r,n){var i=new xo(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function go(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 xo(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1;}function bo(t,e,r,n){for(var i=0,a=e,o=r-n;an;){if(i-n>600){var o=i-n+1,s=r-n+1,u=Math.log(o),l=.5*Math.exp(2*u/3),p=.5*Math.sqrt(u*l*(o-l)/o)*(s-o/2<0?-1:1),c=Math.max(n,Math.floor(r-s*l/o+p)),h=Math.min(i,Math.floor(r+(o-s)*l/o+p));t(e,r,c,h,a);}var f=e[r],y=n,d=i;for(wo(e,n,r),a(e[i],f)>0&&wo(e,n,i);y0;)d--;}0===a(e[n],f)?wo(e,n,d):wo(e,++d,i),d<=r&&(n=d+1),r<=d&&(i=d-1);}}(t,e,r||0,n||t.length-1,i||Ao);}function wo(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}function Ao(t,e){return te?1:0}function So(t,e){var r=t.length;if(r<=1)return [t];for(var n,i,a=[],o=0;o1)for(var u=0;u0&&(n+=t[i-1].length,r.holes.push(n));}return r},Ya.default=Ja;var Bo=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new Gn,this.indexArray=new si,this.indexArray2=new ui,this.programConfigurations=new Xi(Ha,t.layers,t.zoom),this.segments=new zi,this.segments2=new zi,this.stateDependentLayerIds=this.layers.filter(function(t){return t.isStateDependent()}).map(function(t){return t.id});};Bo.prototype.populate=function(t,e){this.features=[],this.hasPattern=zo(\"fill\",this.layers,e);for(var r=0,n=t;rYi)||t.y===e.y&&(t.y<0||t.y>Yi)}function Oo(t){return t.every(function(t){return t.x<0})||t.every(function(t){return t.x>Yi})||t.every(function(t){return t.y<0})||t.every(function(t){return t.y>Yi})}Fo.prototype.populate=function(t,e){this.features=[],this.hasPattern=zo(\"fill-extrusion\",this.layers,e);for(var r=0,n=t;r=1){var v=f[d-1];if(!Lo(m,v)){p.vertexLength+4>zi.MAX_VERTEX_ARRAY_LENGTH&&(p=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var g=m.sub(v)._perp()._unit(),x=v.dist(m);y+x>32768&&(y=0),To(this.layoutVertexArray,m.x,m.y,g.x,g.y,0,0,y),To(this.layoutVertexArray,m.x,m.y,g.x,g.y,0,1,y),y+=x,To(this.layoutVertexArray,v.x,v.y,g.x,g.y,0,0,y),To(this.layoutVertexArray,v.x,v.y,g.x,g.y,0,1,y);var b=p.vertexLength;this.indexArray.emplaceBack(b,b+2,b+1),this.indexArray.emplaceBack(b+1,b+2,b+3),p.vertexLength+=4,p.primitiveLength+=2;}}}}p.vertexLength+s>zi.MAX_VERTEX_ARRAY_LENGTH&&(p=this.segments.prepareSegment(s,this.layoutVertexArray,this.indexArray));for(var _=[],w=[],A=p.vertexLength,S=0,k=o;S>3;}if(a--,1===n||2===n)o+=t.readSVarint(),s+=t.readSVarint(),1===n&&(e&&u.push(e),e=[]),e.push(new i(o,s));else{if(7!==n)throw new Error(\"unknown command \"+n);e&&e.push(e[0].clone());}}return e&&u.push(e),u},Go.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,a=0,o=1/0,s=-1/0,u=1/0,l=-1/0;t.pos>3;}if(n--,1===r||2===r)(i+=t.readSVarint())s&&(s=i),(a+=t.readSVarint())l&&(l=a);else if(7!==r)throw new Error(\"unknown command \"+r)}return [o,u,s,l]},Go.prototype.toGeoJSON=function(t,e,r){var n,i,a=this.extent*Math.pow(2,r),o=this.extent*t,s=this.extent*e,u=this.loadGeometry(),l=Go.types[this.type];function p(t){for(var e=0;e>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null;}return e}(r));}function $o(t,e,r){if(3===t){var n=new Ho(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n);}}Yo.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new Ko(this._pbf,e,this.extent,this._keys,this._values)};var Wo={VectorTile:function(t,e){this.layers=t.readFields($o,{},e);},VectorTileFeature:Ko,VectorTileLayer:Ho},Qo=Wo.VectorTileFeature.types,ts=63,es=Math.cos(Math.PI/180*37.5),rs=.5,ns=Math.pow(2,14)/rs;function is(t,e,r,n,i,a,o){t.emplaceBack(e.x,e.y,n?1:0,i?1:-1,Math.round(ts*r.x)+128,Math.round(ts*r.y)+128,1+(0===a?0:a<0?-1:1)|(o*rs&63)<<2,o*rs>>6);}var as=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.features=[],this.hasPattern=!1,this.layoutVertexArray=new Hn,this.indexArray=new si,this.programConfigurations=new Xi(No,t.layers,t.zoom),this.segments=new zi,this.stateDependentLayerIds=this.layers.filter(function(t){return t.isStateDependent()}).map(function(t){return t.id});};function os(t,e){return (t/e.tileTotal*(e.end-e.start)+e.start)*(ns-1)}as.prototype.populate=function(t,e){this.features=[],this.hasPattern=zo(\"line\",this.layers,e);for(var r=0,n=t;r=2&&t[p-1].equals(t[p-2]);)p--;for(var c=0;cc){var P=d.dist(_);if(P>2*h){var V=d.sub(d.sub(_)._mult(h/P)._round());this.distance+=V.dist(_),this.addCurrentVertex(V,this.distance,A.mult(1),0,0,!1,y,u),_=V;}}var C=_&&w,M=C?r:w?g:x;if(C&&\"round\"===M&&(Bi&&(M=\"bevel\"),\"bevel\"===M&&(B>2&&(M=\"flipbevel\"),B100)z=S.clone().mult(-1);else{var T=A.x*S.y-A.y*S.x>0?-1:1,F=B*A.add(S).mag()/A.sub(S).mag();z._perp()._mult(F*T);}this.addCurrentVertex(d,this.distance,z,0,0,!1,y,u),this.addCurrentVertex(d,this.distance,z.mult(-1),0,0,!1,y,u);}else if(\"bevel\"===M||\"fakeround\"===M){var L=A.x*S.y-A.y*S.x>0,O=-Math.sqrt(B*B-1);if(L?(v=0,m=O):(m=0,v=O),b||this.addCurrentVertex(d,this.distance,A,m,v,!1,y,u),\"fakeround\"===M){for(var D=Math.floor(8*(.5-(I-.5))),U=void 0,j=0;j=0;q--)U=A.mult((q+1)/(D+1))._add(S)._unit(),this.addPieSliceVertex(d,this.distance,U,L,y,u);}w&&this.addCurrentVertex(d,this.distance,S,-m,-v,!1,y,u);}else\"butt\"===M?(b||this.addCurrentVertex(d,this.distance,A,0,0,!1,y,u),w&&this.addCurrentVertex(d,this.distance,S,0,0,!1,y,u)):\"square\"===M?(b||(this.addCurrentVertex(d,this.distance,A,1,1,!1,y,u),this.e1=this.e2=-1),w&&this.addCurrentVertex(d,this.distance,S,-1,-1,!1,y,u)):\"round\"===M&&(b||(this.addCurrentVertex(d,this.distance,A,0,0,!1,y,u),this.addCurrentVertex(d,this.distance,A,1,1,!0,y,u),this.e1=this.e2=-1),w&&(this.addCurrentVertex(d,this.distance,S,-1,-1,!0,y,u),this.addCurrentVertex(d,this.distance,S,0,0,!1,y,u)));if(E&&k2*h){var N=d.add(w.sub(d)._mult(h/R)._round());this.distance+=N.dist(d),this.addCurrentVertex(N,this.distance,S.mult(1),0,0,!1,y,u),d=N;}}b=!1;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,o,s);}},as.prototype.addCurrentVertex=function(t,e,r,n,i,a,o,s){var u,l=this.layoutVertexArray,p=this.indexArray;s&&(e=os(e,s)),u=r.clone(),n&&u._sub(r.perp()._mult(n)),is(l,t,u,a,!1,n,e),this.e3=o.vertexLength++,this.e1>=0&&this.e2>=0&&(p.emplaceBack(this.e1,this.e2,this.e3),o.primitiveLength++),this.e1=this.e2,this.e2=this.e3,u=r.mult(-1),i&&u._sub(r.perp()._mult(i)),is(l,t,u,a,!0,-i,e),this.e3=o.vertexLength++,this.e1>=0&&this.e2>=0&&(p.emplaceBack(this.e1,this.e2,this.e3),o.primitiveLength++),this.e1=this.e2,this.e2=this.e3,e>ns/2&&!s&&(this.distance=0,this.addCurrentVertex(t,this.distance,r,n,i,a,o));},as.prototype.addPieSliceVertex=function(t,e,r,n,i,a){r=r.mult(n?-1:1);var o=this.layoutVertexArray,s=this.indexArray;a&&(e=os(e,a)),is(o,t,r,!1,n,0,e),this.e3=i.vertexLength++,this.e1>=0&&this.e2>=0&&(s.emplaceBack(this.e1,this.e2,this.e3),i.primitiveLength++),n?this.e2=this.e3:this.e1=this.e3;},sn(\"LineBucket\",as,{omit:[\"layers\",\"features\"]});var ss=new Dn({\"line-cap\":new Mn(mt.layout_line[\"line-cap\"]),\"line-join\":new Tn(mt.layout_line[\"line-join\"]),\"line-miter-limit\":new Mn(mt.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new Mn(mt.layout_line[\"line-round-limit\"])}),us={paint:new Dn({\"line-opacity\":new Tn(mt.paint_line[\"line-opacity\"]),\"line-color\":new Tn(mt.paint_line[\"line-color\"]),\"line-translate\":new Mn(mt.paint_line[\"line-translate\"]),\"line-translate-anchor\":new Mn(mt.paint_line[\"line-translate-anchor\"]),\"line-width\":new Tn(mt.paint_line[\"line-width\"]),\"line-gap-width\":new Tn(mt.paint_line[\"line-gap-width\"]),\"line-offset\":new Tn(mt.paint_line[\"line-offset\"]),\"line-blur\":new Tn(mt.paint_line[\"line-blur\"]),\"line-dasharray\":new Ln(mt.paint_line[\"line-dasharray\"]),\"line-pattern\":new Fn(mt.paint_line[\"line-pattern\"]),\"line-gradient\":new On(mt.paint_line[\"line-gradient\"])}),layout:ss},ls=new(function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.possiblyEvaluate=function(e,r){return r=new Sn(Math.floor(r.zoom),{now:r.now,fadeDuration:r.fadeDuration,zoomHistory:r.zoomHistory,transition:r.transition}),t.prototype.possiblyEvaluate.call(this,e,r)},e.prototype.evaluate=function(e,r,n,i){return r=c({},r,{zoom:Math.floor(r.zoom)}),t.prototype.evaluate.call(this,e,r,n,i)},e}(Tn))(us.paint.properties[\"line-width\"].specification);ls.useIntegerZoom=!0;var ps=function(t){function e(e){t.call(this,e,us);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._handleSpecialPaintPropertyUpdate=function(t){\"line-gradient\"===t&&this._updateGradient();},e.prototype._updateGradient=function(){var t=this._transitionablePaint._values[\"line-gradient\"].value.expression;this.gradient=Na(t,\"lineProgress\"),this.gradientTexture=null;},e.prototype.recalculate=function(e){t.prototype.recalculate.call(this,e),this.paint._values[\"line-floorwidth\"]=ls.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,e);},e.prototype.createBucket=function(t){return new as(t)},e.prototype.queryRadius=function(t){var e=t,r=cs(ha(\"line-width\",this,e),ha(\"line-gap-width\",this,e)),n=ha(\"line-offset\",this,e);return r/2+Math.abs(n)+fa(this.paint.get(\"line-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,a,o,s){var u=ya(t,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),o.angle,s),l=s/2*cs(this.paint.get(\"line-width\").evaluate(e,r),this.paint.get(\"line-gap-width\").evaluate(e,r)),p=this.paint.get(\"line-offset\").evaluate(e,r);return p&&(n=function(t,e){for(var r=[],n=new i(0,0),a=0;a=3)for(var a=0;a0?e+2*t:t}var hs=Nn([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"}]),fs=Nn([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4),ys=(Nn([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4),Nn([{name:\"a_placed\",components:2,type:\"Uint8\"}],4)),ds=(Nn([{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"},{type:\"Int16\",name:\"radius\"},{type:\"Int16\",name:\"signedDistanceFromAnchor\"}]),Nn([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4)),ms=Nn([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4);Nn([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"hidden\"}]),Nn([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Int16\",name:\"horizontalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint32\",name:\"crossTileID\"}]),Nn([{type:\"Float32\",name:\"offsetX\"}]),Nn([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]);function vs(t,e,r){return t.sections.forEach(function(t){t.text=function(t,e,r){var n=e.layout.get(\"text-transform\").evaluate(r,{});return \"uppercase\"===n?t=t.toLocaleUpperCase():\"lowercase\"===n&&(t=t.toLocaleLowerCase()),An.applyArabicShaping&&(t=An.applyArabicShaping(t)),t}(t.text,e,r);}),t}var gs={\"!\":\"︕\",\"#\":\"#\",$:\"$\",\"%\":\"%\",\"&\":\"&\",\"(\":\"︵\",\")\":\"︶\",\"*\":\"*\",\"+\":\"+\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\"/\":\"/\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\"=\":\"=\",\">\":\"﹀\",\"?\":\"︖\",\"@\":\"@\",\"[\":\"﹇\",\"\\\\\":\"\\",\"]\":\"﹈\",\"^\":\"^\",_:\"︳\",\"`\":\"`\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"~\":\"~\",\"¢\":\"¢\",\"£\":\"£\",\"¥\":\"¥\",\"¦\":\"¦\",\"¬\":\"¬\",\"¯\":\" ̄\",\"–\":\"︲\",\"—\":\"︱\",\"‘\":\"﹃\",\"’\":\"﹄\",\"“\":\"﹁\",\"”\":\"﹂\",\"…\":\"︙\",\"‧\":\"・\",\"₩\":\"₩\",\"、\":\"︑\",\"。\":\"︒\",\"〈\":\"︿\",\"〉\":\"﹀\",\"《\":\"︽\",\"》\":\"︾\",\"「\":\"﹁\",\"」\":\"﹂\",\"『\":\"﹃\",\"』\":\"﹄\",\"【\":\"︻\",\"】\":\"︼\",\"〔\":\"︹\",\"〕\":\"︺\",\"〖\":\"︗\",\"〗\":\"︘\",\"!\":\"︕\",\"(\":\"︵\",\")\":\"︶\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\">\":\"﹀\",\"?\":\"︖\",\"[\":\"﹇\",\"]\":\"﹈\",\"_\":\"︳\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"⦅\":\"︵\",\"⦆\":\"︶\",\"。\":\"︒\",\"「\":\"﹁\",\"」\":\"﹂\"};var xs=function(t){function e(e,r,n,i){t.call(this,e,r),this.angle=n,void 0!==i&&(this.segment=i);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.clone=function(){return new e(this.x,this.y,this.angle,this.segment)},e}(i);sn(\"Anchor\",xs);var bs=256;function _s(t,e){var r=e.expression;if(\"constant\"===r.kind)return {functionType:\"constant\",layoutSize:r.evaluate(new Sn(t+1))};if(\"source\"===r.kind)return {functionType:\"source\"};for(var n=r.zoomStops,i=0;i0)&&(\"constant\"!==i.value.kind||i.value.value.length>0),u=\"constant\"!==o.value.kind||o.value.value&&o.value.value.length>0,l=n.get(\"symbol-sort-key\");if(this.features=[],s||u){for(var p=e.iconDependencies,c=e.glyphDependencies,h=new Sn(this.zoom),f=0,y=t;f=0;s--)a[s]={x:e[s].x,y:e[s].y,tileUnitDistanceFromAnchor:i},s>0&&(i+=e[s-1].dist(e[s]));for(var u=0;u0;this.addCollisionDebugVertices(a,o,s,u,l?this.collisionCircle:this.collisionBox,i.anchorPoint,r,l);}},Bs.prototype.generateCollisionDebugBuffers=function(){for(var t=0;t0},Bs.prototype.hasIconData=function(){return this.icon.segments.get().length>0},Bs.prototype.hasCollisionBoxData=function(){return this.collisionBox.segments.get().length>0},Bs.prototype.hasCollisionCircleData=function(){return this.collisionCircle.segments.get().length>0},Bs.prototype.addIndicesForPlacedTextSymbol=function(t){for(var e=this.text.placedSymbolArray.get(t),r=e.vertexStartIndex+4*e.numGlyphs,n=e.vertexStartIndex;n1||this.icon.segments.get().length>1))){for(var e=[],r=0;r=0&&this.addIndicesForPlacedTextSymbol(h.horizontalPlacedTextSymbolIndex),h.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedTextSymbol(h.verticalPlacedTextSymbolIndex);var f=this.icon.placedSymbolArray.get(c);if(f.numGlyphs){var y=f.vertexStartIndex;this.icon.indexArray.emplaceBack(y,y+1,y+2),this.icon.indexArray.emplaceBack(y+1,y+2,y+3);}}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray);}},sn(\"SymbolBucket\",Bs,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),Bs.MAX_GLYPHS=65535,Bs.addDynamicAttributes=ks;var Es=new Dn({\"symbol-placement\":new Mn(mt.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new Mn(mt.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new Mn(mt.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new Tn(mt.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new Mn(mt.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new Mn(mt.layout_symbol[\"icon-allow-overlap\"]),\"icon-ignore-placement\":new Mn(mt.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new Mn(mt.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new Mn(mt.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new Tn(mt.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new Mn(mt.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new Mn(mt.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new Tn(mt.layout_symbol[\"icon-image\"]),\"icon-rotate\":new Tn(mt.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new Mn(mt.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new Mn(mt.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new Tn(mt.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new Tn(mt.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new Mn(mt.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new Mn(mt.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new Mn(mt.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new Tn(mt.layout_symbol[\"text-field\"]),\"text-font\":new Tn(mt.layout_symbol[\"text-font\"]),\"text-size\":new Tn(mt.layout_symbol[\"text-size\"]),\"text-max-width\":new Tn(mt.layout_symbol[\"text-max-width\"]),\"text-line-height\":new Mn(mt.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new Tn(mt.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new Tn(mt.layout_symbol[\"text-justify\"]),\"text-anchor\":new Tn(mt.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new Mn(mt.layout_symbol[\"text-max-angle\"]),\"text-rotate\":new Tn(mt.layout_symbol[\"text-rotate\"]),\"text-padding\":new Mn(mt.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new Mn(mt.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new Tn(mt.layout_symbol[\"text-transform\"]),\"text-offset\":new Tn(mt.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new Mn(mt.layout_symbol[\"text-allow-overlap\"]),\"text-ignore-placement\":new Mn(mt.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new Mn(mt.layout_symbol[\"text-optional\"])}),Ps={paint:new Dn({\"icon-opacity\":new Tn(mt.paint_symbol[\"icon-opacity\"]),\"icon-color\":new Tn(mt.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new Tn(mt.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new Tn(mt.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new Tn(mt.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new Mn(mt.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new Mn(mt.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new Tn(mt.paint_symbol[\"text-opacity\"]),\"text-color\":new Tn(mt.paint_symbol[\"text-color\"]),\"text-halo-color\":new Tn(mt.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new Tn(mt.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new Tn(mt.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new Mn(mt.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new Mn(mt.paint_symbol[\"text-translate-anchor\"])}),layout:Es},Vs=function(t){function e(e){t.call(this,e,Ps);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.recalculate=function(e){t.prototype.recalculate.call(this,e),\"auto\"===this.layout.get(\"icon-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"icon-rotation-alignment\"]=\"map\":this.layout._values[\"icon-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"text-rotation-alignment\"]=\"map\":this.layout._values[\"text-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-pitch-alignment\")&&(this.layout._values[\"text-pitch-alignment\"]=this.layout.get(\"text-rotation-alignment\")),\"auto\"===this.layout.get(\"icon-pitch-alignment\")&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\"));},e.prototype.getValueAndResolveTokens=function(t,e){var r,n=this.layout.get(t).evaluate(e,{}),i=this._unevaluatedLayout._values[t];return i.isDataDriven()||yr(i.value)?n:(r=e.properties,n.replace(/{([^{}]+)}/g,function(t,e){return e in r?String(r[e]):\"\"}))},e.prototype.createBucket=function(t){return new Bs(t)},e.prototype.queryRadius=function(){return 0},e.prototype.queryIntersectsFeature=function(){return !1},e}(Un),Cs={paint:new Dn({\"background-color\":new Mn(mt.paint_background[\"background-color\"]),\"background-pattern\":new Ln(mt.paint_background[\"background-pattern\"]),\"background-opacity\":new Mn(mt.paint_background[\"background-opacity\"])})},Ms=function(t){function e(e){t.call(this,e,Cs);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Un),Ts={paint:new Dn({\"raster-opacity\":new Mn(mt.paint_raster[\"raster-opacity\"]),\"raster-hue-rotate\":new Mn(mt.paint_raster[\"raster-hue-rotate\"]),\"raster-brightness-min\":new Mn(mt.paint_raster[\"raster-brightness-min\"]),\"raster-brightness-max\":new Mn(mt.paint_raster[\"raster-brightness-max\"]),\"raster-saturation\":new Mn(mt.paint_raster[\"raster-saturation\"]),\"raster-contrast\":new Mn(mt.paint_raster[\"raster-contrast\"]),\"raster-resampling\":new Mn(mt.paint_raster[\"raster-resampling\"]),\"raster-fade-duration\":new Mn(mt.paint_raster[\"raster-fade-duration\"])})},Fs=function(t){function e(e){t.call(this,e,Ts);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Un);var Ls=function(t){function e(e){t.call(this,e,{}),this.implementation=e;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.hasOffscreenPass=function(){return void 0!==this.implementation.prerender||\"3d\"===this.implementation.renderingMode},e.prototype.recalculate=function(){},e.prototype.updateTransitions=function(){},e.prototype.hasTransition=function(){},e.prototype.serialize=function(){},e.prototype.resize=function(){this.viewportFrame&&(this.viewportFrame.destroy(),this.viewportFrame=null);},e.prototype.onAdd=function(t){this.implementation.onAdd&&this.implementation.onAdd(t,t.painter.context.gl);},e.prototype.onRemove=function(t){this.implementation.onRemove&&this.implementation.onRemove(t);},e}(Un),Os={circle:Ta,heatmap:Ka,hillshade:Xa,fill:Po,\"fill-extrusion\":Uo,line:ps,symbol:Vs,background:Ms,raster:Fs};function Ds(t){for(var e=0,r=0,n=0,i=t;n=0;h--){var f=o[h];if(!(c.w>f.w||c.h>f.h)){if(c.x=f.x,c.y=f.y,u=Math.max(u,c.y+c.h),s=Math.max(s,c.x+c.w),c.w===f.w&&c.h===f.h){var y=o.pop();h>1,p=-7,c=r?i-1:0,h=r?-1:1,f=t[e+c];for(c+=h,a=f&(1<<-p)-1,f>>=-p,p+=s;p>0;a=256*a+t[e+c],c+=h,p-=8);for(o=a&(1<<-p)-1,a>>=-p,p+=n;p>0;o=256*o+t[e+c],c+=h,p-=8);if(0===a)a=1-l;else{if(a===u)return o?NaN:1/0*(f?-1:1);o+=Math.pow(2,n),a-=l;}return (f?-1:1)*o*Math.pow(2,a-n)},Hs=function(t,e,r,n,i,a){var o,s,u,l=8*a-i-1,p=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:a-1,y=n?1:-1,d=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=p):(o=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-o))<1&&(o--,u*=2),(e+=o+c>=1?h/u:h*Math.pow(2,1-c))*u>=2&&(o++,u/=2),o+c>=p?(s=0,o=p):o+c>=1?(s=(e*u-1)*Math.pow(2,i),o+=c):(s=e*Math.pow(2,c-1)*Math.pow(2,i),o=0));i>=8;t[r+f]=255&s,f+=y,s/=256,i-=8);for(o=o<0;t[r+f]=255&o,f+=y,o/=256,l-=8);t[r+f-y]|=128*d;},Ys=Js;function Js(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length;}Js.Varint=0,Js.Fixed64=1,Js.Bytes=2,Js.Fixed32=5;function $s(t){return t.type===Js.Bytes?t.readVarint()+t.pos:t.pos+1}function Ws(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function Qs(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.ceil(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i];}function tu(t,e){for(var r=0;r>>8,t[r+2]=e>>>16,t[r+3]=e>>>24;}function cu(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}Js.prototype={destroy:function(){this.buf=null;},readFields:function(t,e,r){for(r=r||this.length;this.pos>3,a=this.pos;this.type=7&n,t(i,e,this),this.pos===a&&this.skip(n);}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=lu(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=cu(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=lu(this.buf,this.pos)+4294967296*lu(this.buf,this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=lu(this.buf,this.pos)+4294967296*cu(this.buf,this.pos+4);return this.pos+=8,t},readFloat:function(){var t=Zs(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=Zs(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,a=r.buf;if(i=a[r.pos++],n=(112&i)>>4,i<128)return Ws(t,n,e);if(i=a[r.pos++],n|=(127&i)<<3,i<128)return Ws(t,n,e);if(i=a[r.pos++],n|=(127&i)<<10,i<128)return Ws(t,n,e);if(i=a[r.pos++],n|=(127&i)<<17,i<128)return Ws(t,n,e);if(i=a[r.pos++],n|=(127&i)<<24,i<128)return Ws(t,n,e);if(i=a[r.pos++],n|=(1&i)<<31,i<128)return Ws(t,n,e);throw new Error(\"Expected varint not more than 10 bytes\")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=function(t,e,r){var n=\"\",i=e;for(;i239?4:u>223?3:u>191?2:1;if(i+p>r)break;1===p?u<128&&(l=u):2===p?128==(192&(a=t[i+1]))&&(l=(31&u)<<6|63&a)<=127&&(l=null):3===p?(a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&((l=(15&u)<<12|(63&a)<<6|63&o)<=2047||l>=55296&&l<=57343)&&(l=null)):4===p&&(a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&((l=(15&u)<<18|(63&a)<<12|(63&o)<<6|63&s)<=65535||l>=1114112)&&(l=null)),null===l?(l=65533,p=1):l>65535&&(l-=65536,n+=String.fromCharCode(l>>>10&1023|55296),l=56320|1023&l),n+=String.fromCharCode(l),i+=p;}return n}(this.buf,this.pos,t);return this.pos=t,e},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){var r=$s(this);for(t=t||[];this.pos127;);else if(e===Js.Bytes)this.pos=this.readVarint()+this.pos;else if(e===Js.Fixed32)this.pos+=4;else{if(e!==Js.Fixed64)throw new Error(\"Unimplemented type: \"+e);this.pos+=8;}},writeTag:function(t,e){this.writeVarint(t<<3|e);},realloc:function(t){for(var e=this.length||16;e268435455||t<0?function(t,e){var r,n;t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0));if(t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos]=127&t;}(r,0,e),function(t,e){var r=(7&t)<<4;if(e.buf[e.pos++]|=r|((t>>>=3)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;e.buf[e.pos++]=127&t;}(n,e);}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))));},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t);},writeBoolean:function(t){this.writeVarint(Boolean(t));},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,a=0;a55295&&n<57344){if(!i){n>56319||a+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null;}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128);}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&Qs(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r;},writeFloat:function(t){this.realloc(4),Hs(this.buf,t,this.pos,!0,23,4),this.pos+=4;},writeDouble:function(t){this.realloc(8),Hs(this.buf,t,this.pos,!0,52,8),this.pos+=8;},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&Qs(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n;},writeMessage:function(t,e,r){this.writeTag(t,Js.Bytes),this.writeRawMessage(e,r);},writePackedVarint:function(t,e){this.writeMessage(t,tu,e);},writePackedSVarint:function(t,e){this.writeMessage(t,eu,e);},writePackedBoolean:function(t,e){this.writeMessage(t,iu,e);},writePackedFloat:function(t,e){this.writeMessage(t,ru,e);},writePackedDouble:function(t,e){this.writeMessage(t,nu,e);},writePackedFixed32:function(t,e){this.writeMessage(t,au,e);},writePackedSFixed32:function(t,e){this.writeMessage(t,ou,e);},writePackedFixed64:function(t,e){this.writeMessage(t,su,e);},writePackedSFixed64:function(t,e){this.writeMessage(t,uu,e);},writeBytesField:function(t,e){this.writeTag(t,Js.Bytes),this.writeBytes(e);},writeFixed32Field:function(t,e){this.writeTag(t,Js.Fixed32),this.writeFixed32(e);},writeSFixed32Field:function(t,e){this.writeTag(t,Js.Fixed32),this.writeSFixed32(e);},writeFixed64Field:function(t,e){this.writeTag(t,Js.Fixed64),this.writeFixed64(e);},writeSFixed64Field:function(t,e){this.writeTag(t,Js.Fixed64),this.writeSFixed64(e);},writeVarintField:function(t,e){this.writeTag(t,Js.Varint),this.writeVarint(e);},writeSVarintField:function(t,e){this.writeTag(t,Js.Varint),this.writeSVarint(e);},writeStringField:function(t,e){this.writeTag(t,Js.Bytes),this.writeString(e);},writeFloatField:function(t,e){this.writeTag(t,Js.Fixed32),this.writeFloat(e);},writeDoubleField:function(t,e){this.writeTag(t,Js.Fixed64),this.writeDouble(e);},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e));}};var hu=3;function fu(t,e,r){1===t&&r.readMessage(yu,e);}function yu(t,e,r){if(3===t){var n=r.readMessage(du,{}),i=n.id,a=n.bitmap,o=n.width,s=n.height,u=n.left,l=n.top,p=n.advance;e.push({id:i,bitmap:new ja({width:o+2*hu,height:s+2*hu},a),metrics:{width:o,height:s,left:u,top:l,advance:p}});}}function du(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint());}var mu=hu,vu=function(t,e,r){this.target=t,this.parent=e,this.mapId=r,this.callbacks={},this.callbackID=0,m([\"receive\"],this),this.target.addEventListener(\"message\",this.receive,!1);};function gu(t,e,r){var n=2*Math.PI*6378137/256/Math.pow(2,r);return [t*n-2*Math.PI*6378137/2,e*n-2*Math.PI*6378137/2]}vu.prototype.send=function(t,e,r,n){var i=this,a=r?this.mapId+\":\"+this.callbackID++:null;r&&(this.callbacks[a]=r);var o=[];if(this.target.postMessage({targetMapId:n,sourceMapId:this.mapId,type:t,id:String(a),data:ln(e,o)},o),r)return {cancel:function(){return i.target.postMessage({targetMapId:n,sourceMapId:i.mapId,type:\"\",id:String(a)})}}},vu.prototype.receive=function(t){var e,r=this,n=t.data,i=n.id;if(!n.targetMapId||this.mapId===n.targetMapId){var a=function(t,e){delete r.callbacks[i];var n=[];r.target.postMessage({sourceMapId:r.mapId,type:\"\",id:String(i),error:t?ln(t):null,data:ln(e,n)},n);};if(\"\"===n.type||\"\"===n.type)e=this.callbacks[n.id],delete this.callbacks[n.id],e&&n.error?e(pn(n.error)):e&&e(null,pn(n.data));else if(void 0!==n.id&&this.parent[n.type]){this.callbacks[n.id]=null;var o=this.parent[n.type](n.sourceMapId,pn(n.data),a);o&&null===this.callbacks[n.id]&&(this.callbacks[n.id]=o);}else if(void 0!==n.id&&this.parent.getWorkerSource){var s=n.type.split(\".\"),u=pn(n.data);this.parent.getWorkerSource(n.sourceMapId,s[0],u.source)[s[1]](u,a);}else this.parent[n.type](pn(n.data));}},vu.prototype.remove=function(){this.target.removeEventListener(\"message\",this.receive,!1);};var xu=function(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]));};xu.prototype.setNorthEast=function(t){return this._ne=t instanceof bu?new bu(t.lng,t.lat):bu.convert(t),this},xu.prototype.setSouthWest=function(t){return this._sw=t instanceof bu?new bu(t.lng,t.lat):bu.convert(t),this},xu.prototype.extend=function(t){var e,r,n=this._sw,i=this._ne;if(t instanceof bu)e=t,r=t;else{if(!(t instanceof xu))return Array.isArray(t)?t.every(Array.isArray)?this.extend(xu.convert(t)):this.extend(bu.convert(t)):this;if(e=t._sw,r=t._ne,!e||!r)return this}return n||i?(n.lng=Math.min(e.lng,n.lng),n.lat=Math.min(e.lat,n.lat),i.lng=Math.max(r.lng,i.lng),i.lat=Math.max(r.lat,i.lat)):(this._sw=new bu(e.lng,e.lat),this._ne=new bu(r.lng,r.lat)),this},xu.prototype.getCenter=function(){return new bu((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},xu.prototype.getSouthWest=function(){return this._sw},xu.prototype.getNorthEast=function(){return this._ne},xu.prototype.getNorthWest=function(){return new bu(this.getWest(),this.getNorth())},xu.prototype.getSouthEast=function(){return new bu(this.getEast(),this.getSouth())},xu.prototype.getWest=function(){return this._sw.lng},xu.prototype.getSouth=function(){return this._sw.lat},xu.prototype.getEast=function(){return this._ne.lng},xu.prototype.getNorth=function(){return this._ne.lat},xu.prototype.toArray=function(){return [this._sw.toArray(),this._ne.toArray()]},xu.prototype.toString=function(){return \"LngLatBounds(\"+this._sw.toString()+\", \"+this._ne.toString()+\")\"},xu.prototype.isEmpty=function(){return !(this._sw&&this._ne)},xu.convert=function(t){return !t||t instanceof xu?t:new xu(t)};var bu=function(t,e){if(isNaN(t)||isNaN(e))throw new Error(\"Invalid LngLat object: (\"+t+\", \"+e+\")\");if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")};function _u(t){return 2*Math.PI*6378137*Math.cos(t*Math.PI/180)}function wu(t){return (180+t)/360}function Au(t){return (180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Su(t,e){return t/_u(e)}function ku(t){var e=180-360*t;return 360/Math.PI*Math.atan(Math.exp(e*Math.PI/180))-90}bu.prototype.wrap=function(){return new bu(p(this.lng,-180,180),this.lat)},bu.prototype.toArray=function(){return [this.lng,this.lat]},bu.prototype.toString=function(){return \"LngLat(\"+this.lng+\", \"+this.lat+\")\"},bu.prototype.toBounds=function(t){void 0===t&&(t=0);var e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new xu(new bu(this.lng-r,this.lat-e),new bu(this.lng+r,this.lat+e))},bu.convert=function(t){if(t instanceof bu)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new bu(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new bu(Number(\"lng\"in t?t.lng:t.lon),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]\")};var zu=function(t,e,r){void 0===r&&(r=0),this.x=+t,this.y=+e,this.z=+r;};zu.fromLngLat=function(t,e){void 0===e&&(e=0);var r=bu.convert(t);return new zu(wu(r.lng),Au(r.lat),Su(e,r.lat))},zu.prototype.toLngLat=function(){return new bu(360*this.x-180,ku(this.y))},zu.prototype.toAltitude=function(){return t=this.z,e=this.y,t*_u(ku(e));var t,e;};var Iu=function(t,e,r){this.z=t,this.x=e,this.y=r,this.key=Pu(0,t,e,r);};Iu.prototype.equals=function(t){return this.z===t.z&&this.x===t.x&&this.y===t.y},Iu.prototype.url=function(t,e){var r,n,i,a,o,s=(r=this.x,n=this.y,i=this.z,a=gu(256*r,256*(n=Math.pow(2,i)-n-1),i),o=gu(256*(r+1),256*(n+1),i),a[0]+\",\"+a[1]+\",\"+o[0]+\",\"+o[1]),u=function(t,e,r){for(var n,i=\"\",a=t;a>0;a--)i+=(e&(n=1<this.canonical.z?new Eu(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Eu(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)},Eu.prototype.isChildOf=function(t){if(t.wrap!==this.wrap)return !1;var e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ>e&&t.canonical.y===this.canonical.y>>e},Eu.prototype.children=function(t){if(this.overscaledZ>=t)return [new Eu(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return [new Eu(e,this.wrap,e,r,n),new Eu(e,this.wrap,e,r+1,n),new Eu(e,this.wrap,e,r,n+1),new Eu(e,this.wrap,e,r+1,n+1)]},Eu.prototype.isLessThan=function(t){return this.wrapt.wrap)&&(this.overscaledZt.overscaledZ)&&(this.canonical.xt.canonical.x)&&this.canonical.y=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return (e+1)*this.stride+(t+1)},Vu.prototype._unpackMapbox=function(t,e,r){return (256*t*256+256*e+r)/10-1e4},Vu.prototype._unpackTerrarium=function(t,e,r){return 256*t+e+r/256-32768},Vu.prototype.getPixels=function(){return new qa({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},Vu.prototype.backfillBorder=function(t,e,r){if(this.dim!==t.dim)throw new Error(\"dem dimension mismatch\");var n=e*this.dim,i=e*this.dim+this.dim,a=r*this.dim,o=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1;}switch(r){case-1:a=o-1;break;case 1:o=a+1;}for(var s=-e*this.dim,u=-r*this.dim,l=a;l=0&&p[3]>=0&&s.insert(o,p[0],p[1],p[2],p[3]);}},Ou.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new Wo.VectorTile(new Ys(this.rawTileData)).layers,this.sourceLayerCoder=new Mu(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"])),this.vtLayers},Ou.prototype.query=function(t,e,r){var n=this;this.loadVTLayers();for(var a=t.params||{},o=Yi/t.tileSize/t.scale,s=Er(a.filter),u=t.queryGeometry,l=t.queryPadding*o,p=Du(u),c=this.grid.query(p.minX-l,p.minY-l,p.maxX+l,p.maxY+l),h=Du(t.cameraQueryGeometry),f=this.grid3D.query(h.minX-l,h.minY-l,h.maxX+l,h.maxY+l,function(e,r,n,a){return function(t,e,r,n,a){for(var o=0,s=t;o=u.x&&a>=u.y)return !0}var l=[new i(e,r),new i(e,a),new i(n,a),new i(n,r)];if(t.length>2)for(var p=0,c=l;p=0)return !0;return !1}(a,u)){var l=this.sourceLayerCoder.decode(r),p=this.vtLayers[l].feature(n);if(i(new Sn(this.tileID.overscaledZ),p))for(var c=0;c>u.z,p=new i(u.x*l,u.y*l),c=new i(p.x+l,p.y+l),h=this.segments.prepareSegment(4,r,n);r.emplaceBack(p.x,p.y,p.x,p.y),r.emplaceBack(c.x,p.y,c.x,p.y),r.emplaceBack(p.x,c.y,p.x,c.y),r.emplaceBack(c.x,c.y,c.x,c.y);var f=h.vertexLength;n.emplaceBack(f,f+1,f+2),n.emplaceBack(f+1,f+2,f+3),h.vertexLength+=4,h.primitiveLength+=2;}this.maskedBoundsBuffer=e.createVertexBuffer(r,Cu.members),this.maskedIndexBuffer=e.createIndexBuffer(n);}},ju.prototype.hasData=function(){return \"loaded\"===this.state||\"reloading\"===this.state||\"expired\"===this.state},ju.prototype.patternsLoaded=function(){return this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length},ju.prototype.setExpiryData=function(t){var e=this.expirationTime;if(t.cacheControl){var r=function(t){var e={};if(t.replace(/(?:^|(?:\\s*\\,\\s*))([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,function(t,r,n,i){var a=n||i;return e[r]=!a||a.toLowerCase(),\"\"}),e[\"max-age\"]){var r=parseInt(e[\"max-age\"],10);isNaN(r)?delete e[\"max-age\"]:e[\"max-age\"]=r;}return e}(t.cacheControl);r[\"max-age\"]&&(this.expirationTime=Date.now()+1e3*r[\"max-age\"]);}else t.expires&&(this.expirationTime=new Date(t.expires).getTime());if(this.expirationTime){var n=Date.now(),i=!1;if(this.expirationTime>n)i=!1;else if(e)if(this.expirationTime=0&&n>=t&&Nu[this.text.charCodeAt(n)];n--)r--;this.text=this.text.substring(t,r),this.sectionIndex=this.sectionIndex.slice(t,r);},Ru.prototype.substring=function(t,e){var r=new Ru;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r},Ru.prototype.toString=function(){return this.text},Ru.prototype.getMaxScale=function(){var t=this;return this.sectionIndex.reduce(function(e,r){return Math.max(e,t.sections[r].scale)},0)};var Nu={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},Ku={};function Gu(t,e,r,n){var i=Math.pow(t-e,2);return n?t=2||512===r?\"@2x\":\"\",a=M.supported?\".webp\":\"$1\";return n.path=n.path.replace(R,\"\"+i+a),n.path=\"/v4\"+n.path,D(n)},t.OverscaledTileID=Eu,t.EXTENT=Yi,t.MercatorCoordinate=zu,t.CanonicalTileID=Iu,t.StructArrayLayout4i8=Xn,t.rasterBoundsAttributes=Cu,t.SegmentVector=zi,t.getVideo=function(t,e){var r,n,i=self.document.createElement(\"video\");i.muted=!0,i.onloadstart=function(){e(null,i);};for(var a=0;a-r/2;){if(--a<0)return !1;s-=e[a].dist(i),i=e[a];}s+=e[a].dist(e[a+1]),a++;for(var l=[],u=0;sn;)u-=l.shift().angleDelta;if(u>o)return !1;a++,s+=c.dist(p);}return !0}function i(e){for(var t=0,r=0;rd){var x=(d-f)/y,w=e.number(m.x,v.x,x),M=e.number(m.y,v.y,x),S=new e.Anchor(w,M,v.angleTo(m),g);return S._round(),!c||o(t,S,p,c,r)?S:void 0}f+=y;}}function u(t,r,n,l,u,h,c,p,f){var d=a(l,h,c),g=s(l,u),m=g*c,v=0===t[0].x||t[0].x===f||0===t[0].y||t[0].y===f;return r-m=0&&P=0&&b=0&&m+f<=d){var T=new e.Anchor(P,b,S,y);T._round(),s&&!o(r,T,u,s,l)||v.push(T);}}g+=M;}c||v.length||h||(v=t(r,g/2,a,s,l,u,h,!0,p));return v}(t,v?r/2*p%r:(g/2+2*h)*c*p%r,r,d,n,m,v,!1,f)}n.prototype.replace=function(e){this._layerConfigs={},this._layers={},this.update(e,[]);},n.prototype.update=function(t,n){for(var o=this,i=0,a=t;i0&&(v=Math.max(10*l,v),this._addLineCollisionCircles(t,r,n,n.segment,y,v,o,i,a,c));}else{if(p){var x=new e.Point(g,f),w=new e.Point(m,f),M=new e.Point(g,d),S=new e.Point(m,d),_=p*Math.PI/180;x._rotate(_),w._rotate(_),M._rotate(_),S._rotate(_),g=Math.min(x.x,w.x,M.x,S.x),m=Math.max(x.x,w.x,M.x,S.x),f=Math.min(x.y,w.y,M.y,S.y),d=Math.max(x.y,w.y,M.y,S.y);}t.emplaceBack(n.x,n.y,g,f,m,d,o,i,a,0,0);}this.boxEndIndex=t.length;};h.prototype._addLineCollisionCircles=function(e,t,r,n,o,i,a,s,l,u){var h=i/2,c=Math.floor(o/h)||1,p=1+.4*Math.log(u)/Math.LN2,f=Math.floor(c*p/2),d=-i/2,g=r,m=n+1,v=d,y=-o/2,x=y-o/4;do{if(--m<0){if(v>y)return;m=0;break}v-=t[m].dist(g),g=t[m];}while(v>x);for(var w=t[m].dist(t[m+1]),M=-f;Mo&&(_+=S-o),!(_=t.length)return;w=t[m].dist(t[m+1]);}var P=_-v,b=t[m],T=t[m+1].sub(b)._unit()._mult(P)._add(b)._round(),I=Math.abs(_-d)0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r);};function p(e,t){return et?1:0}function f(t,r,n){void 0===r&&(r=1),void 0===n&&(n=!1);for(var o=1/0,i=1/0,a=-1/0,s=-1/0,l=t[0],u=0;ua)&&(a=h.x),(!u||h.y>s)&&(s=h.y);}var p=a-o,f=s-i,m=Math.min(p,f),v=m/2,y=new c([],d);if(0===m)return new e.Point(o,i);for(var x=o;xM.d||!M.d)&&(M=_,n&&console.log(\"found best %d after %d probes\",Math.round(1e4*_.d)/1e4,S)),_.max-M.d<=r||(v=_.h/2,y.push(new g(_.p.x-v,_.p.y-v,v,t)),y.push(new g(_.p.x+v,_.p.y-v,v,t)),y.push(new g(_.p.x-v,_.p.y+v,v,t)),y.push(new g(_.p.x+v,_.p.y+v,v,t)),S+=4);}return n&&(console.log(\"num probes: \"+S),console.log(\"best distance: \"+M.d)),M.p}function d(e,t){return t.max-e.max}function g(t,r,n,o){this.p=new e.Point(t,r),this.h=n,this.d=function(t,r){for(var n=!1,o=1/0,i=0;it.y!=c.y>t.y&&t.x<(c.x-h.x)*(t.y-h.y)/(c.y-h.y)+h.x&&(n=!n),o=Math.min(o,e.distToSegmentSquared(t,h,c));}return (n?1:-1)*Math.sqrt(o)}(this.p,o),this.max=this.d+this.h*Math.SQRT2;}c.prototype.push=function(e){this.data.push(e),this.length++,this._up(this.length-1);},c.prototype.pop=function(){if(0!==this.length){var e=this.data[0];return this.length--,this.length>0&&(this.data[0]=this.data[this.length],this._down(0)),this.data.pop(),e}},c.prototype.peek=function(){return this.data[0]},c.prototype._up=function(e){for(var t=this.data,r=this.compare,n=t[e];e>0;){var o=e-1>>1,i=t[o];if(r(n,i)>=0)break;t[e]=i,e=o;}t[e]=n;},c.prototype._down=function(e){for(var t=this.data,r=this.compare,n=this.length>>1,o=t[e];e=0)break;t[e]=a,e=i;}t[e]=o;};var m=e.createCommonjsModule(function(e){e.exports=function(e,t){var r,n,o,i,a,s,l,u;for(r=3&e.length,n=e.length-r,o=t,a=3432918353,s=461845907,u=0;u>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<13|o>>>19))+((5*(o>>>16)&65535)<<16)&4294967295))+((58964+(i>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&e.charCodeAt(u+2))<<16;case 2:l^=(255&e.charCodeAt(u+1))<<8;case 1:o^=l=(65535&(l=(l=(65535&(l^=255&e.charCodeAt(u)))*a+(((l>>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295;}return o^=e.length,o=2246822507*(65535&(o^=o>>>16))+((2246822507*(o>>>16)&65535)<<16)&4294967295,o=3266489909*(65535&(o^=o>>>13))+((3266489909*(o>>>16)&65535)<<16)&4294967295,(o^=o>>>16)>>>0};}),v=e.createCommonjsModule(function(e){e.exports=function(e,t){for(var r,n=e.length,o=t^n,i=0;n>=4;)r=1540483477*(65535&(r=255&e.charCodeAt(i)|(255&e.charCodeAt(++i))<<8|(255&e.charCodeAt(++i))<<16|(255&e.charCodeAt(++i))<<24))+((1540483477*(r>>>16)&65535)<<16),o=1540483477*(65535&o)+((1540483477*(o>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++i;switch(n){case 3:o^=(255&e.charCodeAt(i+2))<<16;case 2:o^=(255&e.charCodeAt(i+1))<<8;case 1:o=1540483477*(65535&(o^=255&e.charCodeAt(i)))+((1540483477*(o>>>16)&65535)<<16);}return o=1540483477*(65535&(o^=o>>>13))+((1540483477*(o>>>16)&65535)<<16),(o^=o>>>15)>>>0};}),y=m,x=m,w=v;function M(t,r,n,o,i,a){t.createArrays();var s=512*t.overscaling;t.tilePixelRatio=e.EXTENT/s,t.compareText={},t.iconsNeedLinear=!1;var l=t.layers[0].layout,u=t.layers[0]._unevaluatedLayout._values,h={};if(\"composite\"===t.textSizeData.functionType){var c=t.textSizeData.zoomRange,p=c.min,f=c.max;h.compositeTextSizes=[u[\"text-size\"].possiblyEvaluate(new e.EvaluationParameters(p)),u[\"text-size\"].possiblyEvaluate(new e.EvaluationParameters(f))];}if(\"composite\"===t.iconSizeData.functionType){var d=t.iconSizeData.zoomRange,g=d.min,m=d.max;h.compositeIconSizes=[u[\"icon-size\"].possiblyEvaluate(new e.EvaluationParameters(g)),u[\"icon-size\"].possiblyEvaluate(new e.EvaluationParameters(m))];}h.layoutTextSize=u[\"text-size\"].possiblyEvaluate(new e.EvaluationParameters(t.zoom+1)),h.layoutIconSize=u[\"icon-size\"].possiblyEvaluate(new e.EvaluationParameters(t.zoom+1)),h.textMaxSize=u[\"text-size\"].possiblyEvaluate(new e.EvaluationParameters(18));for(var v=24*l.get(\"text-line-height\"),y=\"map\"===l.get(\"text-rotation-alignment\")&&\"point\"!==l.get(\"symbol-placement\"),x=l.get(\"text-keep-upright\"),w=0,M=t.features;w=e.EXTENT||l.y<0||l.y>=e.EXTENT||function(t,r,n,o,i,a,s,l,u,c,p,f,d,g,m,v,x,w,M,S,b){var T,I,k=t.addToLineVertexArray(r,n),z=0,C=0,E=0,A=y(o.horizontal?o.horizontal.text:\"\"),L=[];if(o.horizontal){var D=a.layout.get(\"text-rotate\").evaluate(M,{});T=new h(s,n,r,l,u,c,o.horizontal,p,f,d,t.overscaling,D),C+=P(t,r,o.horizontal,a,d,M,g,k,o.vertical?e.WritingMode.horizontal:e.WritingMode.horizontalOnly,L,S,b),o.vertical&&(E+=P(t,r,o.vertical,a,d,M,g,k,e.WritingMode.vertical,L,S,b));}var O=T?T.boxStartIndex:t.collisionBoxArray.length,N=T?T.boxEndIndex:t.collisionBoxArray.length;if(i){var R=function(t,r,n,o,i,a){var s,l,u,h,c=r.image,p=n.layout,f=r.top-1/c.pixelRatio,d=r.left-1/c.pixelRatio,g=r.bottom+1/c.pixelRatio,m=r.right+1/c.pixelRatio;if(\"none\"!==p.get(\"icon-text-fit\")&&i){var v=m-d,y=g-f,x=p.get(\"text-size\").evaluate(a,{})/24,w=i.left*x,M=i.right*x,S=i.top*x,_=M-w,P=i.bottom*x-S,b=p.get(\"icon-text-fit-padding\")[0],T=p.get(\"icon-text-fit-padding\")[1],I=p.get(\"icon-text-fit-padding\")[2],k=p.get(\"icon-text-fit-padding\")[3],z=\"width\"===p.get(\"icon-text-fit\")?.5*(P-y):0,C=\"height\"===p.get(\"icon-text-fit\")?.5*(_-v):0,E=\"width\"===p.get(\"icon-text-fit\")||\"both\"===p.get(\"icon-text-fit\")?_:v,A=\"height\"===p.get(\"icon-text-fit\")||\"both\"===p.get(\"icon-text-fit\")?P:y;s=new e.Point(w+C-k,S+z-b),l=new e.Point(w+C+T+E,S+z-b),u=new e.Point(w+C+T+E,S+z+I+A),h=new e.Point(w+C-k,S+z+I+A);}else s=new e.Point(d,f),l=new e.Point(m,f),u=new e.Point(m,g),h=new e.Point(d,g);var L=n.layout.get(\"icon-rotate\").evaluate(a,{})*Math.PI/180;if(L){var D=Math.sin(L),O=Math.cos(L),N=[O,-D,D,O];s._matMult(N),l._matMult(N),h._matMult(N),u._matMult(N);}return [{tl:s,tr:l,bl:h,br:u,tex:c.paddedRect,writingMode:void 0,glyphOffset:[0,0]}]}(0,i,a,0,o.horizontal,M),F=a.layout.get(\"icon-rotate\").evaluate(M,{});I=new h(s,n,r,l,u,c,i,m,v,!1,t.overscaling,F),z=4*R.length;var B=t.iconSizeData,Z=null;\"source\"===B.functionType?(Z=[e.SIZE_PACK_FACTOR*a.layout.get(\"icon-size\").evaluate(M,{})])[0]>_&&e.warnOnce(t.layerIds[0]+': Value for \"icon-size\" is >= 256. Reduce your \"icon-size\".'):\"composite\"===B.functionType&&((Z=[e.SIZE_PACK_FACTOR*b.compositeIconSizes[0].evaluate(M,{}),e.SIZE_PACK_FACTOR*b.compositeIconSizes[1].evaluate(M,{})])[0]>_||Z[1]>_)&&e.warnOnce(t.layerIds[0]+': Value for \"icon-size\" is >= 256. Reduce your \"icon-size\".'),t.addSymbols(t.icon,R,Z,w,x,M,!1,r,k.lineStartIndex,k.lineLength);}var j=I?I.boxStartIndex:t.collisionBoxArray.length,G=I?I.boxEndIndex:t.collisionBoxArray.length;t.glyphOffsetArray.length>=e.SymbolBucket.MAX_GLYPHS&&e.warnOnce(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\");t.symbolInstances.emplaceBack(r.x,r.y,L.length>0?L[0]:-1,L.length>1?L[1]:-1,A,O,N,j,G,l,C,E,z,0);}(t,l,s,n,o,t.layers[0],t.collisionBoxArray,r.index,r.sourceLayerIndex,t.index,x,T,z,g,M,I,C,m,r,i,a);};if(\"line\"===E)for(var D=0,O=function(t,r,n,o,i){for(var a=[],s=0;s=o&&p.x>=o||(c.x>=o?c=new e.Point(o,c.y+(p.y-c.y)*((o-c.x)/(p.x-c.x)))._round():p.x>=o&&(p=new e.Point(o,c.y+(p.y-c.y)*((o-c.x)/(p.x-c.x)))._round()),c.y>=i&&p.y>=i||(c.y>=i?c=new e.Point(c.x+(p.x-c.x)*((i-c.y)/(p.y-c.y)),i)._round():p.y>=i&&(p=new e.Point(c.x+(p.x-c.x)*((i-c.y)/(p.y-c.y)),i)._round()),u&&c.equals(u[u.length-1])||(u=[c],a.push(u)),u.push(p)))));}return a}(r.geometry,0,0,e.EXTENT,e.EXTENT);D1){var X=l(J,k,n.vertical||n.horizontal,o,24,w);X&&L(J,X);}}else if(\"Polygon\"===r.type)for(var V=0,W=e.classifyRings(r.geometry,0);V_&&e.warnOnce(t.layerIds[0]+': Value for \"text-size\" is >= 256. Reduce your \"text-size\".'):\"composite\"===d.functionType&&((g=[e.SIZE_PACK_FACTOR*p.compositeTextSizes[0].evaluate(a,{}),e.SIZE_PACK_FACTOR*p.compositeTextSizes[1].evaluate(a,{})])[0]>_||g[1]>_)&&e.warnOnce(t.layerIds[0]+': Value for \"text-size\" is >= 256. Reduce your \"text-size\".'),t.addSymbols(t.text,f,g,s,i,a,u,r,l.lineStartIndex,l.lineLength),h.push(t.text.placedSymbolArray.length-1),4*f.length}function b(e,t,r,n){var o=e.compareText;if(t in o){for(var i=o[t],a=i.length-1;a>=0;a--)if(n.dist(i[a])=b.maxzoom))if(\"none\"!==b.visibility)k(P,this.zoom),(p[b.id]=b.createBucket({index:s.bucketLayerIDs.length,layers:P,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:v,sourceID:this.source})).populate(y,f),s.bucketLayerIDs.push(P.map(function(e){return e.id}));}}}var I=e.mapObject(f.glyphDependencies,function(e){return Object.keys(e).map(Number)});Object.keys(I).length?n.send(\"getGlyphs\",{uid:this.uid,stacks:I},function(e,t){l||(l=e,u=t,E.call(i));}):u={};var z=Object.keys(f.iconDependencies);z.length?n.send(\"getImages\",{icons:z},function(e,t){l||(l=e,h=t,E.call(i));}):h={};var C=Object.keys(f.patternDependencies);function E(){if(l)return o(l);if(u&&h&&c){var t=new T(u),r=new e.ImageAtlas(h,c);for(var n in p){var i=p[n];i instanceof e.SymbolBucket?(k(i.layers,this.zoom),M(i,u,t.positions,h,r.iconPositions,this.showCollisionBoxes)):i.hasPattern&&(i instanceof e.LineBucket||i instanceof e.FillBucket||i instanceof e.FillExtrusionBucket)&&(k(i.layers,this.zoom),i.addFeatures(f,r.patternPositions));}this.status=\"done\",o(null,{buckets:e.values(p).filter(function(e){return !e.isEmpty()}),featureIndex:s,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:t.image,imageAtlas:r,glyphMap:this.returnDependencies?u:null,iconMap:this.returnDependencies?h:null,glyphPositions:this.returnDependencies?t.positions:null});}}C.length?n.send(\"getImages\",{icons:C},function(e,t){l||(l=e,c=t,E.call(i));}):c={},E.call(this);};var z=\"undefined\"!=typeof performance,C={getEntriesByName:function(e){return !!(z&&performance&&performance.getEntriesByName)&&performance.getEntriesByName(e)},mark:function(e){return !!(z&&performance&&performance.mark)&&performance.mark(e)},measure:function(e,t,r){return !!(z&&performance&&performance.measure)&&performance.measure(e,t,r)},clearMarks:function(e){return !!(z&&performance&&performance.clearMarks)&&performance.clearMarks(e)},clearMeasures:function(e){return !!(z&&performance&&performance.clearMeasures)&&performance.clearMeasures(e)}},E=function(e){this._marks={start:[e.url,\"start\"].join(\"#\"),end:[e.url,\"end\"].join(\"#\"),measure:e.url.toString()},C.mark(this._marks.start);};function A(t,r){var n=e.getArrayBuffer(t.request,function(t,n,o,i){t?r(t):n&&r(null,{vectorTile:new e.mvt.VectorTile(new e.Protobuf(n)),rawData:n,cacheControl:o,expires:i});});return function(){n.cancel(),r();}}E.prototype.finish=function(){C.mark(this._marks.end);var e=C.getEntriesByName(this._marks.measure);return 0===e.length&&(C.measure(this._marks.measure,this._marks.start,this._marks.end),e=C.getEntriesByName(this._marks.measure),C.clearMarks(this._marks.start),C.clearMarks(this._marks.end),C.clearMeasures(this._marks.measure)),e},C.Performance=E;var L=function(e,t,r){this.actor=e,this.layerIndex=t,this.loadVectorData=r||A,this.loading={},this.loaded={};};L.prototype.loadTile=function(t,r){var n=this,o=t.uid;this.loading||(this.loading={});var i=!!(t&&t.request&&t.request.collectResourceTiming)&&new C.Performance(t.request),a=this.loading[o]=new I(t);a.abort=this.loadVectorData(t,function(t,s){if(delete n.loading[o],t||!s)return a.status=\"done\",n.loaded[o]=a,r(t);var l=s.rawData,u={};s.expires&&(u.expires=s.expires),s.cacheControl&&(u.cacheControl=s.cacheControl);var h={};if(i){var c=i.finish();c&&(h.resourceTiming=JSON.parse(JSON.stringify(c)));}a.vectorTile=s.vectorTile,a.parse(s.vectorTile,n.layerIndex,n.actor,function(t,n){if(t||!n)return r(t);r(null,e.extend({rawTileData:l.slice(0)},n,u,h));}),n.loaded=n.loaded||{},n.loaded[o]=a;});},L.prototype.reloadTile=function(e,t){var r=this.loaded,n=e.uid,o=this;if(r&&r[n]){var i=r[n];i.showCollisionBoxes=e.showCollisionBoxes;var a=function(e,r){var n=i.reloadCallback;n&&(delete i.reloadCallback,i.parse(i.vectorTile,o.layerIndex,o.actor,n)),t(e,r);};\"parsing\"===i.status?i.reloadCallback=a:\"done\"===i.status&&(i.vectorTile?i.parse(i.vectorTile,this.layerIndex,this.actor,a):a());}},L.prototype.abortTile=function(e,t){var r=this.loading,n=e.uid;r&&r[n]&&r[n].abort&&(r[n].abort(),delete r[n]),t();},L.prototype.removeTile=function(e,t){var r=this.loaded,n=e.uid;r&&r[n]&&delete r[n],t();};var D=function(){this.loaded={};};D.prototype.loadTile=function(t,r){var n=t.uid,o=t.encoding,i=t.rawImageData,a=new e.DEMData(n,i,o);this.loaded=this.loaded||{},this.loaded[n]=a,r(null,a);},D.prototype.removeTile=function(e){var t=this.loaded,r=e.uid;t&&t[r]&&delete t[r];};var O={RADIUS:6378137,FLATTENING:1/298.257223563,POLAR_RADIUS:6356752.3142};function N(e){var t=0;if(e&&e.length>0){t+=Math.abs(R(e[0]));for(var r=1;r2){for(a=0;a=0}(e)===t?e:e.reverse()}var X=e.mvt.VectorTileFeature.prototype.toGeoJSON,V=function(t){this._feature=t,this.extent=e.EXTENT,this.type=t.type,this.properties=t.tags,\"id\"in t&&!isNaN(t.id)&&(this.id=parseInt(t.id,10));};V.prototype.loadGeometry=function(){if(1===this._feature.type){for(var t=[],r=0,n=this._feature.geometry;r>31}function se(e,t){for(var r=e.loadGeometry(),n=e.type,o=0,i=0,a=r.length,s=0;s>1;!function e(t,r,n,o,i,a){for(;i>o;){if(i-o>600){var s=i-o+1,l=n-o+1,u=Math.log(s),h=.5*Math.exp(2*u/3),c=.5*Math.sqrt(u*h*(s-h)/s)*(l-s/2<0?-1:1),p=Math.max(o,Math.floor(n-l*h/s+c)),f=Math.min(i,Math.floor(n+(s-l)*h/s+c));e(t,r,n,p,f,a);}var d=r[2*n+a],g=o,m=i;for(he(t,r,o,n),r[2*i+a]>d&&he(t,r,o,i);gd;)m--;}r[2*o+a]===d?he(t,r,o,m):he(t,r,++m,i),m<=n&&(o=m+1),n<=m&&(i=m-1);}}(e,t,a,n,o,i%2),ue(e,t,r,n,a-1,i+1),ue(e,t,r,a+1,o,i+1);}}function he(e,t,r,n){ce(e,r,n),ce(t,2*r,2*n),ce(t,2*r+1,2*n+1);}function ce(e,t,r){var n=e[t];e[t]=e[r],e[r]=n;}function pe(e,t,r,n){var o=e-r,i=t-n;return o*o+i*i}H.fromVectorTileJs=Q,H.fromGeojsonVt=$,H.GeoJSONWrapper=ee;var fe=function(e){return e[0]},de=function(e){return e[1]},ge=function(e,t,r,n,o){void 0===t&&(t=fe),void 0===r&&(r=de),void 0===n&&(n=64),void 0===o&&(o=Float64Array),this.nodeSize=n,this.points=e;for(var i=e.length<65536?Uint16Array:Uint32Array,a=this.ids=new i(e.length),s=this.coords=new o(2*e.length),l=0;l=r&&s<=o&&l>=n&&l<=i&&h.push(e[d]);else{var g=Math.floor((f+p)/2);s=t[2*g],l=t[2*g+1],s>=r&&s<=o&&l>=n&&l<=i&&h.push(e[g]);var m=(c+1)%2;(0===c?r<=s:n<=l)&&(u.push(f),u.push(g-1),u.push(m)),(0===c?o>=s:i>=l)&&(u.push(g+1),u.push(p),u.push(m));}}return h}(this.ids,this.coords,e,t,r,n,this.nodeSize)},ge.prototype.within=function(e,t,r){return function(e,t,r,n,o,i){for(var a=[0,e.length-1,0],s=[],l=o*o;a.length;){var u=a.pop(),h=a.pop(),c=a.pop();if(h-c<=i)for(var p=c;p<=h;p++)pe(t[2*p],t[2*p+1],r,n)<=l&&s.push(e[p]);else{var f=Math.floor((c+h)/2),d=t[2*f],g=t[2*f+1];pe(d,g,r,n)<=l&&s.push(e[f]);var m=(u+1)%2;(0===u?r-o<=d:n-o<=g)&&(a.push(c),a.push(f-1),a.push(m)),(0===u?r+o>=d:n+o>=g)&&(a.push(f+1),a.push(h),a.push(m));}}return s}(this.ids,this.coords,e,t,r,this.nodeSize)};var me={minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,reduce:null,map:function(e){return e}},ve=function(e){this.options=Pe(Object.create(me),e),this.trees=new Array(this.options.maxZoom+1);};function ye(e,t,r,n,o){return {x:e,y:t,zoom:1/0,id:r,parentId:-1,numPoints:n,properties:o}}function xe(e,t){var r=e.geometry.coordinates,n=r[0],o=r[1];return {x:Se(n),y:_e(o),zoom:1/0,index:t,parentId:-1}}function we(e){return {type:\"Feature\",id:e.id,properties:Me(e),geometry:{type:\"Point\",coordinates:[(n=e.x,360*(n-.5)),(t=e.y,r=(180-360*t)*Math.PI/180,360*Math.atan(Math.exp(r))/Math.PI-90)]}};var t,r,n;}function Me(e){var t=e.numPoints,r=t>=1e4?Math.round(t/1e3)+\"k\":t>=1e3?Math.round(t/100)/10+\"k\":t;return Pe(Pe({},e.properties),{cluster:!0,cluster_id:e.id,point_count:t,point_count_abbreviated:r})}function Se(e){return e/360+.5}function _e(e){var t=Math.sin(e*Math.PI/180),r=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return r<0?0:r>1?1:r}function Pe(e,t){for(var r in t)e[r]=t[r];return e}function be(e){return e.x}function Te(e){return e.y}function Ie(e,t,r,n,o,i){var a=o-r,s=i-n;if(0!==a||0!==s){var l=((e-r)*a+(t-n)*s)/(a*a+s*s);l>1?(r=o,n=i):l>0&&(r+=a*l,n+=s*l);}return (a=e-r)*a+(s=t-n)*s}function ke(e,t,r,n){var o={id:void 0===e?null:e,type:t,geometry:r,tags:n,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(e){var t=e.geometry,r=e.type;if(\"Point\"===r||\"MultiPoint\"===r||\"LineString\"===r)ze(e,t);else if(\"Polygon\"===r||\"MultiLineString\"===r)for(var n=0;n0&&(a+=n?(o*u-l*i)/2:Math.sqrt(Math.pow(l-o,2)+Math.pow(u-i,2))),o=l,i=u;}var h=t.length-3;t[2]=1,function e(t,r,n,o){for(var i,a=o,s=n-r>>1,l=n-r,u=t[r],h=t[r+1],c=t[n],p=t[n+1],f=r+3;fa)i=f,a=d;else if(d===a){var g=Math.abs(f-s);go&&(i-r>3&&e(t,r,i,o),t[i+2]=a,n-i>3&&e(t,i,n,o));}(t,0,h,r),t[h+2]=1,t.size=Math.abs(a),t.start=0,t.end=t.size;}function Le(e,t,r,n){for(var o=0;o1?1:r}function Ne(e,t,r,n,o,i,a,s){if(n/=t,i>=(r/=t)&&a=n)return null;for(var l=[],u=0;u=r&&d=n)){var g=[];if(\"Point\"===p||\"MultiPoint\"===p)Re(c,g,r,n,o);else if(\"LineString\"===p)Fe(c,g,r,n,o,!1,s.lineMetrics);else if(\"MultiLineString\"===p)Ze(c,g,r,n,o,!1);else if(\"Polygon\"===p)Ze(c,g,r,n,o,!0);else if(\"MultiPolygon\"===p)for(var m=0;m=r&&a<=n&&(t.push(e[i]),t.push(e[i+1]),t.push(e[i+2]));}}function Fe(e,t,r,n,o,i,a){for(var s,l,u=Be(e),h=0===o?Ge:Je,c=e.start,p=0;pr&&(l=h(u,f,d,m,v,r),a&&(u.start=c+s*l)):y>n?x=r&&(l=h(u,f,d,m,v,r),w=!0),x>n&&y<=n&&(l=h(u,f,d,m,v,n),w=!0),!i&&w&&(a&&(u.end=c+s*l),t.push(u),u=Be(e)),a&&(c+=s);}var M=e.length-3;f=e[M],d=e[M+1],g=e[M+2],(y=0===o?f:d)>=r&&y<=n&&je(u,f,d,g),M=u.length-3,i&&M>=3&&(u[M]!==u[0]||u[M+1]!==u[1])&&je(u,u[0],u[1],u[2]),u.length&&t.push(u);}function Be(e){var t=[];return t.size=e.size,t.start=e.start,t.end=e.end,t}function Ze(e,t,r,n,o,i){for(var a=0;aa.maxX&&(a.maxX=h),c>a.maxY&&(a.maxY=c);}return a}function Ue(e,t,r,n){var o=t.geometry,i=t.type,a=[];if(\"Point\"===i||\"MultiPoint\"===i)for(var s=0;s0&&t.size<(o?a:n))r.numPoints+=t.length/3;else{for(var s=[],l=0;la)&&(r.numSimplified++,s.push(t[l]),s.push(t[l+1])),r.numPoints++;o&&function(e,t){for(var r=0,n=0,o=e.length,i=o-2;n0===t)for(n=0,o=e.length;n24)throw new Error(\"maxZoom should be in the 0-24 range\");if(t.promoteId&&t.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var n=function(e,t){var r=[];if(\"FeatureCollection\"===e.type)for(var n=0;n=n;u--){var h=+Date.now();s=this._cluster(s,u),this.trees[u]=new ge(s,be,Te,i,Float32Array),r&&console.log(\"z%d: %d clusters in %dms\",u,s.length,+Date.now()-h);}return r&&console.timeEnd(\"total time\"),this},ve.prototype.getClusters=function(e,t){var r=((e[0]+180)%360+360)%360-180,n=Math.max(-90,Math.min(90,e[1])),o=180===e[2]?180:((e[2]+180)%360+360)%360-180,i=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)r=-180,o=180;else if(r>o){var a=this.getClusters([r,n,180,i],t),s=this.getClusters([-180,n,o,i],t);return a.concat(s)}for(var l=this.trees[this._limitZoom(t)],u=[],h=0,c=l.range(Se(r),_e(i),Se(o),_e(n));h>5,r=e%32,n=\"No cluster with the specified id.\",o=this.trees[r];if(!o)throw new Error(n);var i=o.points[t];if(!i)throw new Error(n);for(var a=this.options.radius/(this.options.extent*Math.pow(2,r-1)),s=[],l=0,u=o.within(i.x,i.y,a);l1&&console.time(\"creation\"),p=this.tiles[c]=qe(e,t,r,n,l),this.tileCoords.push({z:t,x:r,y:n}),u)){u>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",t,r,n,p.numFeatures,p.numPoints,p.numSimplified),console.timeEnd(\"creation\"));var f=\"z\"+t;this.stats[f]=(this.stats[f]||0)+1,this.total++;}if(p.source=e,o){if(t===l.maxZoom||t===o)continue;var d=1<1&&console.time(\"clipping\");var g,m,v,y,x,w,M=.5*l.buffer/l.extent,S=.5-M,_=.5+M,P=1+M;g=m=v=y=null,x=Ne(e,h,r-M,r+_,0,p.minX,p.maxX,l),w=Ne(e,h,r+S,r+P,0,p.minX,p.maxX,l),e=null,x&&(g=Ne(x,h,n-M,n+_,1,p.minY,p.maxY,l),m=Ne(x,h,n+S,n+P,1,p.minY,p.maxY,l),x=null),w&&(v=Ne(w,h,n-M,n+_,1,p.minY,p.maxY,l),y=Ne(w,h,n+S,n+P,1,p.minY,p.maxY,l),w=null),u>1&&console.timeEnd(\"clipping\"),s.push(g||[],t+1,2*r,2*n),s.push(m||[],t+1,2*r,2*n+1),s.push(v||[],t+1,2*r+1,2*n),s.push(y||[],t+1,2*r+1,2*n+1);}}},He.prototype.getTile=function(e,t,r){var n=this.options,o=n.extent,i=n.debug;if(e<0||e>24)return null;var a=1<1&&console.log(\"drilling down to z%d-%d-%d\",e,t,r);for(var l,u=e,h=t,c=r;!l&&u>0;)u--,h=Math.floor(h/2),c=Math.floor(c/2),l=this.tiles[Qe(u,h,c)];return l&&l.source?(i>1&&console.log(\"found parent tile z%d-%d-%d\",u,h,c),i>1&&console.time(\"drilling down\"),this.splitTile(l.source,u,h,c,e,t,r),i>1&&console.timeEnd(\"drilling down\"),this.tiles[s]?We(this.tiles[s],o):null):null};var et=function(t){function r(e,r,n){t.call(this,e,r,$e),n&&(this.loadGeoJSON=n);}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.prototype.loadData=function(e,t){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),this._pendingCallback=t,this._pendingLoadDataParams=e,this._state&&\"Idle\"!==this._state?this._state=\"NeedsLoadData\":(this._state=\"Coalescing\",this._loadData());},r.prototype._loadData=function(){var t=this;if(this._pendingCallback&&this._pendingLoadDataParams){var r=this._pendingCallback,n=this._pendingLoadDataParams;delete this._pendingCallback,delete this._pendingLoadDataParams;var o=!!(n&&n.request&&n.request.collectResourceTiming)&&new C.Performance(n.request);this.loadGeoJSON(n,function(i,a){if(i||!a)return r(i);if(\"object\"!=typeof a)return r(new Error(\"Input data is not a valid GeoJSON object.\"));Z(a,!0);try{t._geoJSONIndex=n.cluster?new ve(function(t){var r=t.superclusterOptions,n=t.clusterProperties;if(!n||!r)return r;for(var o={},i={},a={accumulated:null,zoom:0},s={properties:null},l=Object.keys(n),u=0,h=l;u=0?0:e.button},i.remove=function(t){t.parentNode&&t.parentNode.removeChild(t);};var h=function(){this.images={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.RGBAImage({width:1,height:1}),this.dirty=!0;};h.prototype.isLoaded=function(){return this.loaded},h.prototype.setLoaded=function(t){if(this.loaded!==t&&(this.loaded=t,t)){for(var e=0,i=this.requestors;e=0?1.2:1));}function f(t,e,i,o,r,a,n){for(var s=0;s65535)e(new Error(\"glyphs > 65535 not supported\"));else{var l=a.requests[s];l||(l=a.requests[s]=[],g.loadGlyphRange(i,s,o.url,o.requestTransform,function(t,e){if(e)for(var i in e)a.glyphs[+i]=e[+i];for(var o=0,r=l;othis.height)return t.warnOnce(\"LineAtlas out of space\"),null;for(var a=0,n=0;n=o&&e.x=r&&e.y0&&(l[new t.OverscaledTileID(e.overscaledZ,a,i.z,r,i.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,i.z,n,i.y-1).key]={backfilled:!1}),i.y+10&&(o.resourceTiming=e._resourceTiming,e._resourceTiming=[]),e.fire(new t.Event(\"data\",o));}});},i.prototype.onAdd=function(t){this.map=t,this.load();},i.prototype.setData=function(e){var i=this;return this._data=e,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._updateWorkerData(function(e){if(e)i.fire(new t.ErrorEvent(e));else{var o={dataType:\"source\",sourceDataType:\"content\"};i._collectResourceTiming&&i._resourceTiming&&i._resourceTiming.length>0&&(o.resourceTiming=i._resourceTiming,i._resourceTiming=[]),i.fire(new t.Event(\"data\",o));}}),this},i.prototype.getClusterExpansionZoom=function(t,e){return this.dispatcher.send(\"geojson.getClusterExpansionZoom\",{clusterId:t,source:this.id},e,this.workerID),this},i.prototype.getClusterChildren=function(t,e){return this.dispatcher.send(\"geojson.getClusterChildren\",{clusterId:t,source:this.id},e,this.workerID),this},i.prototype.getClusterLeaves=function(t,e,i,o){return this.dispatcher.send(\"geojson.getClusterLeaves\",{source:this.id,clusterId:t,limit:e,offset:i},o,this.workerID),this},i.prototype._updateWorkerData=function(e){var i=this,o=t.extend({},this.workerOptions),r=this._data;\"string\"==typeof r?(o.request=this.map._transformRequest(t.browser.resolveURL(r),t.ResourceType.Source),o.request.collectResourceTiming=this._collectResourceTiming):o.data=JSON.stringify(r),this.workerID=this.dispatcher.send(this.type+\".loadData\",o,function(t,r){i._removed||r&&r.abandoned||(i._loaded=!0,r&&r.resourceTiming&&r.resourceTiming[i.id]&&(i._resourceTiming=r.resourceTiming[i.id].slice(0)),i.dispatcher.send(i.type+\".coalesce\",{source:o.source},null,i.workerID),e(t));},this.workerID);},i.prototype.loadTile=function(e,i){var o=this,r=void 0===e.workerID?\"loadTile\":\"reloadTile\",a={type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:t.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes};e.workerID=this.dispatcher.send(r,a,function(t,a){return e.unloadVectorData(),e.aborted?i(null):t?i(t):(e.loadVectorData(a,o.map.painter,\"reloadTile\"===r),i(null))},this.workerID);},i.prototype.abortTile=function(t){t.aborted=!0;},i.prototype.unloadTile=function(t){t.unloadVectorData(),this.dispatcher.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id},null,t.workerID);},i.prototype.onRemove=function(){this._removed=!0,this.dispatcher.send(\"removeSource\",{type:this.type,source:this.id},null,this.workerID);},i.prototype.serialize=function(){return t.extend({},this._options,{type:this.type,data:this._data})},i.prototype.hasTransition=function(){return !1},i}(t.Evented),L=function(e){function i(t,i,o,r){e.call(this),this.id=t,this.dispatcher=o,this.coordinates=i.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this.setEventedParent(r),this.options=i;}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.load=function(e,i){var o=this;this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,t.getImage(this.map._transformRequest(this.url,t.ResourceType.Image),function(r,a){r?o.fire(new t.ErrorEvent(r)):a&&(o.image=a,e&&(o.coordinates=e),i&&i(),o._finishLoading());});},i.prototype.updateImage=function(t){var e=this;return this.image&&t.url?(this.options.url=t.url,this.load(t.coordinates,function(){e.texture=null;}),this):this},i.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})));},i.prototype.onAdd=function(t){this.map=t,this.load();},i.prototype.setCoordinates=function(e){var i=this;this.coordinates=e;var o=e.map(t.MercatorCoordinate.fromLngLat);this.tileID=function(e){for(var i=1/0,o=1/0,r=-1/0,a=-1/0,n=0,s=e;nthis.max){var n=this._getAndRemoveByKey(this.order[0]);n&&this.onRemove(n);}return this},k.prototype.has=function(t){return t.wrapped().key in this.data},k.prototype.getAndRemove=function(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null},k.prototype._getAndRemoveByKey=function(t){var e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value},k.prototype.get=function(t){return this.has(t)?this.data[t.wrapped().key][0].value:null},k.prototype.remove=function(t,e){if(!this.has(t))return this;var i=t.wrapped().key,o=void 0===e?0:this.data[i].indexOf(e),r=this.data[i][o];return this.data[i].splice(o,1),r.timeout&&clearTimeout(r.timeout),0===this.data[i].length&&delete this.data[i],this.onRemove(r.value),this.order.splice(this.order.indexOf(i),1),this},k.prototype.setMaxSize=function(t){for(this.max=t;this.order.length>this.max;){var e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e);}return this};var B=function(t,e,i){this.context=t;var o=t.gl;this.buffer=o.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),t.bindElementBuffer.set(this.buffer),o.bufferData(o.ELEMENT_ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?o.DYNAMIC_DRAW:o.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer;};B.prototype.bind=function(){this.context.bindElementBuffer.set(this.buffer);},B.prototype.updateData=function(t){var e=this.context.gl;this.context.unbindVAO(),this.bind(),e.bufferSubData(e.ELEMENT_ARRAY_BUFFER,0,t.arrayBuffer);},B.prototype.destroy=function(){var t=this.context.gl;this.buffer&&(t.deleteBuffer(this.buffer),delete this.buffer);};var O={Int8:\"BYTE\",Uint8:\"UNSIGNED_BYTE\",Int16:\"SHORT\",Uint16:\"UNSIGNED_SHORT\",Int32:\"INT\",Uint32:\"UNSIGNED_INT\",Float32:\"FLOAT\"},F=function(t,e,i,o){this.length=e.length,this.attributes=i,this.itemSize=e.bytesPerElement,this.dynamicDraw=o,this.context=t;var r=t.gl;this.buffer=r.createBuffer(),t.bindVertexBuffer.set(this.buffer),r.bufferData(r.ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?r.DYNAMIC_DRAW:r.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer;};F.prototype.bind=function(){this.context.bindVertexBuffer.set(this.buffer);},F.prototype.updateData=function(t){var e=this.context.gl;this.bind(),e.bufferSubData(e.ARRAY_BUFFER,0,t.arrayBuffer);},F.prototype.enableAttributes=function(t,e){for(var i=0;i1||(Math.abs(i)>1&&(1===Math.abs(i+r)?i+=r:1===Math.abs(i-r)&&(i-=r)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,i,o),t.neighboringTiles&&t.neighboringTiles[a]&&(t.neighboringTiles[a].backfilled=!0)));}},i.prototype.getTile=function(t){return this.getTileByID(t.key)},i.prototype.getTileByID=function(t){return this._tiles[t]},i.prototype.getZoom=function(t){return t.zoom+t.scaleZoom(t.tileSize/this._source.tileSize)},i.prototype._retainLoadedChildren=function(t,e,i,o){for(var r in this._tiles){var a=this._tiles[r];if(!(o[r]||!a.hasData()||a.tileID.overscaledZ<=e||a.tileID.overscaledZ>i)){for(var n=a.tileID;a&&a.tileID.overscaledZ>e+1;){var s=a.tileID.scaledTo(a.tileID.overscaledZ-1);(a=this._tiles[s.key])&&a.hasData()&&(n=s);}for(var l=n;l.overscaledZ>e;)if(t[(l=l.scaledTo(l.overscaledZ-1)).key]){o[n.key]=n;break}}}},i.prototype.findLoadedParent=function(t,e){for(var i=t.overscaledZ-1;i>=e;i--){var o=t.scaledTo(i);if(!o)return;var r=String(o.key),a=this._tiles[r];if(a&&a.hasData())return a;if(this._cache.has(o))return this._cache.get(o)}},i.prototype.updateCacheSize=function(t){var e=(Math.ceil(t.width/this._source.tileSize)+1)*(Math.ceil(t.height/this._source.tileSize)+1),i=Math.floor(5*e),o=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,i):i;this._cache.setMaxSize(o);},i.prototype.handleWrapJump=function(t){var e=(t-(void 0===this._prevLng?t:this._prevLng))/360,i=Math.round(e);if(this._prevLng=t,i){var o={};for(var r in this._tiles){var a=this._tiles[r];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+i),o[a.tileID.key]=a;}for(var n in this._tiles=o,this._timers)clearTimeout(this._timers[n]),delete this._timers[n];for(var s in this._tiles){var l=this._tiles[s];this._setTileReloadTimer(s,l);}}},i.prototype.update=function(e){var o=this;if(this.transform=e,this._sourceLoaded&&!this._paused){var r;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used?this._source.tileID?r=e.getVisibleUnwrappedCoordinates(this._source.tileID).map(function(e){return new t.OverscaledTileID(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)}):(r=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(r=r.filter(function(t){return o._source.hasTile(t)}))):r=[];var a=(this._source.roundZoom?Math.round:Math.floor)(this.getZoom(e)),n=Math.max(a-i.maxOverzooming,this._source.minzoom),s=Math.max(a+i.maxUnderzooming,this._source.minzoom),l=this._updateRetainedTiles(r,a);if(zt(this._source.type)){for(var c={},u={},h=0,p=Object.keys(l);hthis._source.maxzoom){var m=_.children(this._source.maxzoom)[0],g=this.getTile(m);if(g&&g.hasData()){o[m.key]=m;continue}}else{var v=_.children(this._source.maxzoom);if(o[v[0].key]&&o[v[1].key]&&o[v[2].key]&&o[v[3].key])continue}for(var y=f.wasRequested(),x=_.overscaledZ-1;x>=a;--x){var b=_.scaledTo(x);if(r[b.key])break;if(r[b.key]=!0,!(f=this.getTile(b))&&y&&(f=this._addTile(b)),f&&(o[b.key]=b,y=f.wasRequested(),f.hasData()))break}}}return o},i.prototype._addTile=function(e){var i=this._tiles[e.key];if(i)return i;(i=this._cache.getAndRemove(e))&&(this._setTileReloadTimer(e.key,i),i.tileID=e,this._state.initializeTileState(i,this.map?this.map.painter:null),this._cacheTimers[e.key]&&(clearTimeout(this._cacheTimers[e.key]),delete this._cacheTimers[e.key],this._setTileReloadTimer(e.key,i)));var o=Boolean(i);return o||(i=new t.Tile(e,this._source.tileSize*e.overscaleFactor()),this._loadTile(i,this._tileLoaded.bind(this,i,e.key,i.state))),i?(i.uses++,this._tiles[e.key]=i,o||this._source.fire(new t.Event(\"dataloading\",{tile:i,coord:i.tileID,dataType:\"source\"})),i):null},i.prototype._setTileReloadTimer=function(t,e){var i=this;t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);var o=e.getExpiryTimeout();o&&(this._timers[t]=setTimeout(function(){i._reloadTile(t,\"expired\"),delete i._timers[t];},o));},i.prototype._removeTile=function(t){var e=this._tiles[t];e&&(e.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),e.uses>0||(e.hasData()?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))));},i.prototype.clearTiles=function(){for(var t in this._shouldReloadOnResume=!1,this._paused=!1,this._tiles)this._removeTile(t);this._cache.reset();},i.prototype.tilesIn=function(e,i,o){var r=this,a=[],n=this.transform;if(!n)return a;for(var s=o?n.getCameraQueryGeometry(e):e,l=e.map(function(t){return n.pointCoordinate(t)}),c=s.map(function(t){return n.pointCoordinate(t)}),u=this.getIds(),h=1/0,p=1/0,d=-1/0,_=-1/0,f=0,m=c;f=0&&g[1].y+m>=0){var v=l.map(function(t){return s.getTilePoint(t)}),y=c.map(function(t){return s.getTilePoint(t)});a.push({tile:o,tileID:s,queryGeometry:v,cameraQueryGeometry:y,scale:f});}}},y=0;y=t.browser.now())return !0}return !1},i.prototype.setFeatureState=function(t,e,i){t=t||\"_geojsonTileLayer\",this._state.updateState(t,e,i);},i.prototype.removeFeatureState=function(t,e,i){t=t||\"_geojsonTileLayer\",this._state.removeFeatureState(t,e,i);},i.prototype.getFeatureState=function(t,e){return t=t||\"_geojsonTileLayer\",this._state.getState(t,e)},i}(t.Evented);function St(t,e){return t%32-e%32||e-t}function zt(t){return \"raster\"===t||\"image\"===t||\"video\"===t}function Lt(){return new t.window.Worker(Qo.workerUrl)}Ct.maxOverzooming=10,Ct.maxUnderzooming=3;var Pt=function(){this.active={};};Pt.prototype.acquire=function(t){if(!this.workers)for(this.workers=[];this.workers.lengththis.width||o<0||e>this.height)return !r&&[];var n=[];if(t<=0&&e<=0&&this.width<=i&&this.height<=o){if(r)return !0;for(var s=0;s0:n},qt.prototype._queryCircle=function(t,e,i,o,r){var a=t-i,n=t+i,s=e-i,l=e+i;if(n<0||a>this.width||l<0||s>this.height)return !o&&[];var c=[],u={hitTest:o,circle:{x:t,y:e,radius:i},seenUids:{box:{},circle:{}}};return this._forEachCell(a,s,n,l,this._queryCellCircle,c,u,r),o?c.length>0:c},qt.prototype.query=function(t,e,i,o,r){return this._query(t,e,i,o,!1,r)},qt.prototype.hitTest=function(t,e,i,o,r){return this._query(t,e,i,o,!0,r)},qt.prototype.hitTestCircle=function(t,e,i,o){return this._queryCircle(t,e,i,!0,o)},qt.prototype._queryCell=function(t,e,i,o,r,a,n,s){var l=n.seenUids,c=this.boxCells[r];if(null!==c)for(var u=this.bboxes,h=0,p=c;h=u[_+0]&&o>=u[_+1]&&(!s||s(this.boxKeys[d]))){if(n.hitTest)return a.push(!0),!0;a.push({key:this.boxKeys[d],x1:u[_],y1:u[_+1],x2:u[_+2],y2:u[_+3]});}}}var f=this.circleCells[r];if(null!==f)for(var m=this.circles,g=0,v=f;gn*n+s*s},qt.prototype._circleAndRectCollide=function(t,e,i,o,r,a,n){var s=(a-o)/2,l=Math.abs(t-(o+s));if(l>s+i)return !1;var c=(n-r)/2,u=Math.abs(e-(r+c));if(u>c+i)return !1;if(l<=s||u<=c)return !0;var h=l-s,p=u-c;return h*h+p*p<=i*i};var Gt=t.properties.layout;function Wt(e,i,o,r,a){var n=t.identity(new Float32Array(16));return i?(t.identity(n),t.scale(n,n,[1/a,1/a,1]),o||t.rotateZ(n,n,r.angle)):(t.scale(n,n,[r.width/2,-r.height/2,1]),t.translate(n,n,[1,-1,0]),t.multiply(n,n,e)),n}function Xt(e,i,o,r,a){var n=t.identity(new Float32Array(16));return i?(t.multiply(n,n,e),t.scale(n,n,[a,a,1]),o||t.rotateZ(n,n,-r.angle)):(t.scale(n,n,[1,-1,1]),t.translate(n,n,[-1,-1,0]),t.scale(n,n,[2/r.width,2/r.height,1])),n}function Ht(e,i){var o=[e.x,e.y,0,1];re(o,o,i);var r=o[3];return {point:new t.Point(o[0]/r,o[1]/r),signedDistanceFromCamera:r}}function Kt(t,e){var i=t[0]/t[3],o=t[1]/t[3];return i>=-e[0]&&i<=e[0]&&o>=-e[1]&&o<=e[1]}function Yt(e,i,o,r,a,n,s,l){var c=r?e.textSizeData:e.iconSizeData,u=t.evaluateSizeForZoom(c,o.transform.zoom,Gt.properties[r?\"text-size\":\"icon-size\"]),h=[256/o.width*2+1,256/o.height*2+1],p=r?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;p.clear();for(var d=e.lineVertexArray,_=r?e.text.placedSymbolArray:e.icon.placedSymbolArray,f=o.transform.width/o.transform.height,m=!1,g=0;g<_.length;g++){var v=_.get(g);if(v.hidden||v.writingMode===t.WritingMode.vertical&&!m)oe(v.numGlyphs,p);else{m=!1;var y=[v.anchorX,v.anchorY,0,1];if(t.transformMat4(y,y,i),Kt(y,h)){var x=.5+y[3]/o.transform.cameraToCenterDistance*.5,b=t.evaluateSizeForFeature(c,u,v),w=s?b*x:b/x,E=new t.Point(v.anchorX,v.anchorY),T=Ht(E,a).point,I={},C=$t(v,w,!1,l,i,a,n,e.glyphOffsetArray,d,p,T,E,I,f);m=C.useVertical,(C.notEnoughRoom||m||C.needsFlipping&&$t(v,w,!0,l,i,a,n,e.glyphOffsetArray,d,p,T,E,I,f).notEnoughRoom)&&oe(v.numGlyphs,p);}else oe(v.numGlyphs,p);}}r?e.text.dynamicLayoutVertexBuffer.updateData(p):e.icon.dynamicLayoutVertexBuffer.updateData(p);}function Jt(t,e,i,o,r,a,n,s,l,c,u,h){var p=s.glyphStartIndex+s.numGlyphs,d=s.lineStartIndex,_=s.lineStartIndex+s.lineLength,f=e.getoffsetX(s.glyphStartIndex),m=e.getoffsetX(p-1),g=ee(t*f,i,o,r,a,n,s.segment,d,_,l,c,u,h);if(!g)return null;var v=ee(t*m,i,o,r,a,n,s.segment,d,_,l,c,u,h);return v?{first:g,last:v}:null}function Qt(e,i,o,r){if(e===t.WritingMode.horizontal&&Math.abs(o.y-i.y)>Math.abs(o.x-i.x)*r)return {useVertical:!0};return (e===t.WritingMode.vertical?i.yo.x)?{needsFlipping:!0}:null}function $t(e,i,o,r,a,n,s,l,c,u,h,p,d,_){var f,m=i/24,g=e.lineOffsetX*i,v=e.lineOffsetY*i;if(e.numGlyphs>1){var y=e.glyphStartIndex+e.numGlyphs,x=e.lineStartIndex,b=e.lineStartIndex+e.lineLength,w=Jt(m,l,g,v,o,h,p,e,c,n,d,!1);if(!w)return {notEnoughRoom:!0};var E=Ht(w.first.point,s).point,T=Ht(w.last.point,s).point;if(r&&!o){var I=Qt(e.writingMode,E,T,_);if(I)return I}f=[w.first];for(var C=e.glyphStartIndex+1;C0?P.point:te(p,L,S,1,a),R=Qt(e.writingMode,S,D,_);if(R)return R}var M=ee(m*l.getoffsetX(e.glyphStartIndex),g,v,o,h,p,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,c,n,d,!1);if(!M)return {notEnoughRoom:!0};f=[M];}for(var A=0,k=f;A0?1:-1,m=0;r&&(f*=-1,m=Math.PI),f<0&&(m+=Math.PI);for(var g=f>0?l+s:l+s+1,v=g,y=a,x=a,b=0,w=0,E=Math.abs(_);b+w<=E;){if((g+=f)=c)return null;if(x=y,void 0===(y=p[g])){var T=new t.Point(u.getx(g),u.gety(g)),I=Ht(T,h);if(I.signedDistanceFromCamera>0)y=p[g]=I.point;else{var C=g-f;y=te(0===b?n:new t.Point(u.getx(C),u.gety(C)),T,x,E-b+1,h);}}b+=w,w=x.dist(y);}var S=(E-b)/w,z=y.sub(x),L=z.mult(S)._add(x);return L._add(z._unit()._perp()._mult(o*f)),{point:L,angle:m+Math.atan2(y.y-x.y,y.x-x.x),tileDistance:d?{prevTileDistance:g-f===v?0:u.gettileUnitDistanceFromAnchor(g-f),lastSegmentViewportDistance:E-b}:null}}var ie=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function oe(t,e){for(var i=0;iS)ne(e,z,!1);else{var M=this.projectPoint(c,L,P),A=D*T;if(_.length>0){var k=M.x-_[_.length-4],B=M.y-_[_.length-3];if(A*A*2>k*k+B*B)if(z+8-C&&O=this.screenRightBoundary||o<100||e>this.screenBottomBoundary},ae.prototype.isInsideGrid=function(t,e,i,o){return i>=0&&t=0&&e0,T=T&&I.offscreen);var D=P.textCircles;if(D){var R=e.text.placedSymbolArray.get(b.horizontalPlacedTextSymbolIndex),M=t.evaluateSizeForFeature(e.textSizeData,p,R);C=this.collisionIndex.placeCollisionCircles(D,h.get(\"text-allow-overlap\"),a,n,R,e.lineVertexArray,e.glyphOffsetArray,M,i,o,s,\"map\"===h.get(\"text-pitch-alignment\"),y.predicate),w=h.get(\"text-allow-overlap\")||C.circles.length>0,T=T&&C.offscreen;}P.iconFeatureIndex&&(L=P.iconFeatureIndex),P.iconBox&&(E=(S=this.collisionIndex.placeCollisionBox(P.iconBox,h.get(\"icon-allow-overlap\"),n,i,y.predicate)).box.length>0,T=T&&S.offscreen);var A=d||0===b.numGlyphVertices&&0===b.numVerticalGlyphVertices,k=_||0===b.numIconVertices;A||k?k?A||(E=E&&w):w=E&&w:E=w=E&&w,w&&I&&this.collisionIndex.insertCollisionBox(I.box,h.get(\"text-ignore-placement\"),e.bucketInstanceId,z,y.ID),E&&S&&this.collisionIndex.insertCollisionBox(S.box,h.get(\"icon-ignore-placement\"),e.bucketInstanceId,L,y.ID),w&&C&&this.collisionIndex.insertCollisionCircles(C.circles,h.get(\"text-ignore-placement\"),e.bucketInstanceId,z,y.ID),this.placements[b.crossTileID]=new ue(w||g,E||v,T||e.justReloaded),c[b.crossTileID]=!0;}}e.justReloaded=!1;},de.prototype.commit=function(t,e){this.commitTime=e;var i=!1,o=t&&0!==this.fadeDuration?(this.commitTime-t.commitTime)/this.fadeDuration:1,r=t?t.opacities:{};for(var a in this.placements){var n=this.placements[a],s=r[a];s?(this.opacities[a]=new ce(s,o,n.text,n.icon),i=i||n.text!==s.text.placed||n.icon!==s.icon.placed):(this.opacities[a]=new ce(null,o,n.text,n.icon,n.skipFade),i=i||n.text||n.icon);}for(var l in r){var c=r[l];if(!this.opacities[l]){var u=new ce(c,o,!1,!1);u.isHidden()||(this.opacities[l]=u,i=i||c.text.placed||c.icon.placed);}}i?this.lastPlacementChangeTime=e:\"number\"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=t?t.lastPlacementChangeTime:e);},de.prototype.updateLayerOpacities=function(t,e){for(var i={},o=0,r=e;o0||c.numVerticalGlyphVertices>0,d=c.numIconVertices>0;if(p){for(var _=we(h.text),f=(c.numGlyphVertices+c.numVerticalGlyphVertices)/4,m=0;m=0&&(t.text.placedSymbolArray.get(c.verticalPlacedTextSymbolIndex).hidden=h.text.isHidden());}if(d){for(var g=we(h.icon),v=0;vt},de.prototype.setStale=function(){this.stale=!0;};var fe=Math.pow(2,25),me=Math.pow(2,24),ge=Math.pow(2,17),ve=Math.pow(2,16),ye=Math.pow(2,9),xe=Math.pow(2,8),be=Math.pow(2,1);function we(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;var e=t.placed?1:0,i=Math.floor(127*t.opacity);return i*fe+e*me+i*ge+e*ve+i*ye+e*xe+i*be+e}var Ee=function(){this._currentTileIndex=0,this._seenCrossTileIDs={};};Ee.prototype.continuePlacement=function(t,e,i,o,r){for(;this._currentTileIndex2};this._currentPlacementIndex>=0;){var s=i[e[this._currentPlacementIndex]],l=this.placement.collisionIndex.transform.zoom;if(\"symbol\"===s.type&&(!s.minzoom||s.minzoom<=l)&&(!s.maxzoom||s.maxzoom>l)){if(this._inProgressLayer||(this._inProgressLayer=new Ee),this._inProgressLayer.continuePlacement(o[s.source],this.placement,this._showCollisionBoxes,s,n))return;delete this._inProgressLayer;}this._currentPlacementIndex--;}this._done=!0;},Te.prototype.commit=function(t,e){return this.placement.commit(t,e),this.placement};var Ie=512/t.EXTENT/2,Ce=function(t,e,i){this.tileID=t,this.indexedSymbolInstances={},this.bucketInstanceId=i;for(var o=0;ot.overscaledZ)for(var s in n){var l=n[s];l.tileID.isChildOf(t)&&l.findMatches(e.symbolInstances,t,r);}else{var c=n[t.scaledTo(Number(a)).key];c&&c.findMatches(e.symbolInstances,t,r);}}for(var u=0;u1?\"@2x\":\"\",l=t.getJSON(i(t.normalizeSpriteURL(e,s,\".json\"),t.ResourceType.SpriteJSON),function(t,e){l=null,n||(n=t,r=e,u());}),c=t.getImage(i(t.normalizeSpriteURL(e,s,\".png\"),t.ResourceType.SpriteImage),function(t,e){c=null,n||(n=t,a=e,u());});function u(){if(n)o(n);else if(r&&a){var e=t.browser.getImageData(a),i={};for(var s in r){var l=r[s],c=l.width,u=l.height,h=l.x,p=l.y,d=l.sdf,_=l.pixelRatio,f=new t.RGBAImage({width:c,height:u});t.RGBAImage.copy(e,f,{x:h,y:p},{x:0,y:0},{width:c,height:u}),i[s]={data:f,pixelRatio:_,sdf:d};}o(null,i);}}return {cancel:function(){l&&(l.cancel(),l=null),c&&(c.cancel(),c=null);}}}(e.sprite,this.map._transformRequest,function(e,i){if(o._spriteRequest=null,e)o.fire(new t.ErrorEvent(e));else if(i)for(var r in i)o.imageManager.addImage(r,i[r]);o.imageManager.setLoaded(!0),o.fire(new t.Event(\"data\",{dataType:\"style\"}));}):this.imageManager.setLoaded(!0),this.glyphManager.setURL(e.glyphs);var a=At(this.stylesheet.layers);this._order=a.map(function(t){return t.id}),this._layers={};for(var n=0,s=a;n0)throw new Error(\"Unimplemented: \"+r.map(function(t){return t.command}).join(\", \")+\".\");return o.forEach(function(t){\"setTransition\"!==t.command&&i[t.command].apply(i,t.args);}),this.stylesheet=e,!0},i.prototype.addImage=function(e,i){if(this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"An image with this name already exists.\")));this.imageManager.addImage(e,i),this.fire(new t.Event(\"data\",{dataType:\"style\"}));},i.prototype.getImage=function(t){return this.imageManager.getImage(t)},i.prototype.removeImage=function(e){if(!this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"No image with this name exists.\")));this.imageManager.removeImage(e),this.fire(new t.Event(\"data\",{dataType:\"style\"}));},i.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},i.prototype.addSource=function(e,i,o){var r=this;if(void 0===o&&(o={}),this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(\"There is already a source with this ID\");if(!i.type)throw new Error(\"The type property must be defined, but the only the following properties were given: \"+Object.keys(i).join(\", \")+\".\");if(!([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(i.type)>=0)||!this._validate(t.validateStyle.source,\"sources.\"+e,i,null,o)){this.map&&this.map._collectResourceTiming&&(i.collectResourceTiming=!0);var a=this.sourceCaches[e]=new Ct(e,i,this.dispatcher);a.style=this,a.setEventedParent(this,function(){return {isSourceLoaded:r.loaded(),source:a.serialize(),sourceId:e}}),a.onAdd(this.map),this._changed=!0;}},i.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(\"There is no source with this ID\");for(var i in this._layers)if(this._layers[i].source===e)return this.fire(new t.ErrorEvent(new Error('Source \"'+e+'\" cannot be removed while layer \"'+i+'\" is using it.')));var o=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],o.fire(new t.Event(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:e})),o.setEventedParent(null),o.clearTiles(),o.onRemove&&o.onRemove(this.map),this._changed=!0;},i.prototype.setGeoJSONSourceData=function(t,e){this._checkLoaded(),this.sourceCaches[t].getSource().setData(e),this._changed=!0;},i.prototype.getSource=function(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()},i.prototype.addLayer=function(e,i,o){void 0===o&&(o={}),this._checkLoaded();var r=e.id;if(this.getLayer(r))this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" already exists on this map')));else{var a;if(\"custom\"===e.type){if(Pe(this,t.validateCustomStyleLayer(e)))return;a=t.createStyleLayer(e);}else{if(\"object\"==typeof e.source&&(this.addSource(r,e.source),e=t.clone(e),e=t.extend(e,{source:r})),this._validate(t.validateStyle.layer,\"layers.\"+r,e,{arrayIndex:-1},o))return;a=t.createStyleLayer(e),this._validateLayer(a),a.setEventedParent(this,{layer:{id:r}});}var n=i?this._order.indexOf(i):this._order.length;if(i&&-1===n)this.fire(new t.ErrorEvent(new Error('Layer with id \"'+i+'\" does not exist on this map.')));else{if(this._order.splice(n,0,r),this._layerOrderChanged=!0,this._layers[r]=a,this._removedLayers[r]&&a.source&&\"custom\"!==a.type){var s=this._removedLayers[r];delete this._removedLayers[r],s.type!==a.type?this._updatedSources[a.source]=\"clear\":(this._updatedSources[a.source]=\"reload\",this.sourceCaches[a.source].pause());}this._updateLayer(a),a.onAdd&&a.onAdd(this.map);}}},i.prototype.moveLayer=function(e,i){if(this._checkLoaded(),this._changed=!0,this._layers[e]){if(e!==i){var o=this._order.indexOf(e);this._order.splice(o,1);var r=i?this._order.indexOf(i):this._order.length;i&&-1===r?this.fire(new t.ErrorEvent(new Error('Layer with id \"'+i+'\" does not exist on this map.'))):(this._order.splice(r,0,e),this._layerOrderChanged=!0);}}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be moved.\")));},i.prototype.removeLayer=function(e){this._checkLoaded();var i=this._layers[e];if(i){i.setEventedParent(null);var o=this._order.indexOf(e);this._order.splice(o,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=i,delete this._layers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],i.onRemove&&i.onRemove(this.map);}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be removed.\")));},i.prototype.getLayer=function(t){return this._layers[t]},i.prototype.setLayerZoomRange=function(e,i,o){this._checkLoaded();var r=this.getLayer(e);r?r.minzoom===i&&r.maxzoom===o||(null!=i&&(r.minzoom=i),null!=o&&(r.maxzoom=o),this._updateLayer(r)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot have zoom extent.\")));},i.prototype.setFilter=function(e,i,o){void 0===o&&(o={}),this._checkLoaded();var r=this.getLayer(e);if(r){if(!t.isEqual(r.filter,i))return null==i?(r.filter=void 0,void this._updateLayer(r)):void(this._validate(t.validateStyle.filter,\"layers.\"+r.id+\".filter\",i,null,o)||(r.filter=t.clone(i),this._updateLayer(r)))}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be filtered.\")));},i.prototype.getFilter=function(e){return t.clone(this.getLayer(e).filter)},i.prototype.setLayoutProperty=function(e,i,o,r){void 0===r&&(r={}),this._checkLoaded();var a=this.getLayer(e);a?t.isEqual(a.getLayoutProperty(i),o)||(a.setLayoutProperty(i,o,r),this._updateLayer(a)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")));},i.prototype.getLayoutProperty=function(e,i){var o=this.getLayer(e);if(o)return o.getLayoutProperty(i);this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style.\")));},i.prototype.setPaintProperty=function(e,i,o,r){void 0===r&&(r={}),this._checkLoaded();var a=this.getLayer(e);a?t.isEqual(a.getPaintProperty(i),o)||(a.setPaintProperty(i,o,r)&&this._updateLayer(a),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")));},i.prototype.getPaintProperty=function(t,e){return this.getLayer(t).getPaintProperty(e)},i.prototype.setFeatureState=function(e,i){this._checkLoaded();var o=e.source,r=e.sourceLayer,a=this.sourceCaches[o],n=parseInt(e.id,10);if(void 0!==a){var s=a.getSource().type;\"geojson\"===s&&r?this.fire(new t.ErrorEvent(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\"))):\"vector\"!==s||r?isNaN(n)||n<0?this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided and non-negative.\"))):a.setFeatureState(r,n,i):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+o+\"' does not exist in the map's style.\")));},i.prototype.removeFeatureState=function(e,i){this._checkLoaded();var o=e.source,r=this.sourceCaches[o];if(void 0!==r){var a=r.getSource().type,n=\"vector\"===a?e.sourceLayer:void 0,s=parseInt(e.id,10);\"vector\"!==a||n?e.id&&isNaN(s)||s<0?this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be non-negative.\"))):!i||e.id?r.removeFeatureState(n,s,i):this.fire(new t.ErrorEvent(new Error(\"A feature id is requred to remove its specific state property.\"))):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+o+\"' does not exist in the map's style.\")));},i.prototype.getFeatureState=function(e){this._checkLoaded();var i=e.source,o=e.sourceLayer,r=this.sourceCaches[i],a=parseInt(e.id,10);if(void 0!==r)if(\"vector\"!==r.getSource().type||o){if(!(isNaN(a)||a<0))return r.getFeatureState(o,a);this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided and non-negative.\")));}else this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));else this.fire(new t.ErrorEvent(new Error(\"The source '\"+i+\"' does not exist in the map's style.\")));},i.prototype.getTransition=function(){return t.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},i.prototype.serialize=function(){return t.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:t.mapObject(this.sourceCaches,function(t){return t.serialize()}),layers:this._serializeLayers(this._order)},function(t){return void 0!==t})},i.prototype._updateLayer=function(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&(this._updatedSources[t.source]=\"reload\",this.sourceCaches[t.source].pause()),this._changed=!0;},i.prototype._flattenAndSortRenderedFeatures=function(t){for(var e=[],i=[],o=this._order.length-1;o>=0;o--)for(var r=this._order[o],a=0,n=t;a 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=a_extrude*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),Ve=si(\"uniform float u_overscale_factor;varying float v_placed;varying float v_notUsed;varying float v_radius;varying vec2 v_extrude;varying vec2 v_extrude_scale;void main() {float alpha=0.5;vec4 color=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {color=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {color*=.2;}float extrude_scale_length=length(v_extrude_scale);float extrude_length=length(v_extrude)*extrude_scale_length;float stroke_width=15.0*extrude_scale_length/u_overscale_factor;float radius=v_radius*extrude_scale_length;float distance_to_edge=abs(extrude_length-radius);float opacity_t=smoothstep(-stroke_width,0.0,-distance_to_edge);gl_FragColor=opacity_t*color;}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;varying float v_radius;varying vec2 v_extrude;varying vec2 v_extrude_scale;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);highp float padding_factor=1.2;gl_Position.xy+=a_extrude*u_extrude_scale*padding_factor*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;v_radius=abs(a_extrude.y);v_extrude=a_extrude*padding_factor;v_extrude_scale=u_extrude_scale*u_camera_to_center_distance*collision_perspective_ratio;}\"),qe=si(\"uniform highp vec4 u_color;void main() {gl_FragColor=u_color;}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),Ge=si(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_FragColor=color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);}\"),We=si(\"#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvarying vec2 v_pos;void main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),Xe=si(\"uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec4 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float pixelRatio=u_scale.x;float tileRatio=u_scale.y;float fromScale=u_scale.z;float toScale=u_scale.w;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=vec2((pattern_br_a.x-pattern_tl_a.x)/pixelRatio,(pattern_br_a.y-pattern_tl_a.y)/pixelRatio);vec2 display_size_b=vec2((pattern_br_b.x-pattern_tl_b.x)/pixelRatio,(pattern_br_b.y-pattern_tl_b.y)/pixelRatio);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),He=si(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec4 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float pixelRatio=u_scale.x;float tileZoomRatio=u_scale.y;float fromScale=u_scale.z;float toScale=u_scale.w;vec2 display_size_a=vec2((pattern_br_a.x-pattern_tl_a.x)/pixelRatio,(pattern_br_a.y-pattern_tl_a.y)/pixelRatio);vec2 display_size_b=vec2((pattern_br_b.x-pattern_tl_b.x)/pixelRatio,(pattern_br_b.y-pattern_tl_b.y)/pixelRatio);gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}\"),Ke=si(\"varying vec4 v_color;void main() {gl_FragColor=v_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color;\\n#pragma mapbox: define highp float base\\n#pragma mapbox: define highp float height\\n#pragma mapbox: define highp vec4 color\\nvoid main() {\\n#pragma mapbox: initialize highp float base\\n#pragma mapbox: initialize highp float height\\n#pragma mapbox: initialize highp vec4 color\\nvec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);}\"),Ye=si(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec4 u_scale;uniform float u_vertical_gradient;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float pixelRatio=u_scale.x;float tileRatio=u_scale.y;float fromScale=u_scale.z;float toScale=u_scale.w;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=vec2((pattern_br_a.x-pattern_tl_a.x)/pixelRatio,(pattern_br_a.y-pattern_tl_a.y)/pixelRatio);vec2 display_size_b=vec2((pattern_br_b.x-pattern_tl_b.x)/pixelRatio,(pattern_br_b.y-pattern_tl_b.y)/pixelRatio);base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\\n? a_pos\\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));}\"),Je=si(\"uniform sampler2D u_image;uniform float u_opacity;varying vec2 v_pos;void main() {gl_FragColor=texture2D(u_image,v_pos)*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(0.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}\"),Qe=si(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform float u_maxzoom;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;return (data.r+data.g*256.0+data.b*256.0*256.0)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggeration=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/ pow(2.0,(u_zoom-u_maxzoom)*exaggeration+19.2562-u_zoom);gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),$e=si(\"uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\\n#define PI 3.141592653589793\\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}\"),ti=si(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvarying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;void main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/DEVICE_PIXEL_RATIO)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define ANTIALIASING 1.0/DEVICE_PIXEL_RATIO/2.0\\n#define scale 0.015873016\\nattribute vec4 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_gl_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nvec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=a_pos_normal.xy;mediump vec2 normal=a_pos_normal.zw;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_gl_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),ei=si(\"#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nuniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp float v_lineprogress;void main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/DEVICE_PIXEL_RATIO)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,vec2(v_lineprogress,0.5));gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define MAX_LINE_DISTANCE 32767.0\\n#define ANTIALIASING 1.0/DEVICE_PIXEL_RATIO/2.0\\n#define scale 0.015873016\\nattribute vec4 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_gl_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nvec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_lineprogress=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0/MAX_LINE_DISTANCE;vec2 pos=a_pos_normal.xy;mediump vec2 normal=a_pos_normal.zw;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_gl_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),ii=si(\"uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec4 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float pixelRatio=u_scale.x;float tileZoomRatio=u_scale.y;float fromScale=u_scale.z;float toScale=u_scale.w;vec2 display_size_a=vec2((pattern_br_a.x-pattern_tl_a.x)/pixelRatio,(pattern_br_a.y-pattern_tl_a.y)/pixelRatio);vec2 display_size_b=vec2((pattern_br_b.x-pattern_tl_b.x)/pixelRatio,(pattern_br_b.y-pattern_tl_b.y)/pixelRatio);vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/DEVICE_PIXEL_RATIO)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x,1.0);float x_b=mod(v_linesofar/pattern_size_b.x,1.0);float y_a=0.5+(v_normal.y*clamp(v_width2.s,0.0,(pattern_size_a.y+2.0)/2.0)/pattern_size_a.y);float y_b=0.5+(v_normal.y*clamp(v_width2.s,0.0,(pattern_size_b.y+2.0)/2.0)/pattern_size_b.y);vec2 pos_a=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,vec2(x_a,y_a));vec2 pos_b=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,vec2(x_b,y_b));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\n#define ANTIALIASING 1.0/DEVICE_PIXEL_RATIO/2.0\\nattribute vec4 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_gl_units_to_pixels;uniform mediump float u_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=a_pos_normal.xy;mediump vec2 normal=a_pos_normal.zw;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_gl_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);}\"),oi=si(\"uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/DEVICE_PIXEL_RATIO)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\n#define ANTIALIASING 1.0/DEVICE_PIXEL_RATIO/2.0\\nattribute vec4 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_gl_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nvec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=a_pos_normal.xy;mediump vec2 normal=a_pos_normal.zw;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_gl_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}\"),ri=si(\"uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}\"),ai=si(\"uniform sampler2D u_texture;\\n#pragma mapbox: define lowp float opacity\\nvarying vec2 v_tex;varying float v_fade_opacity;void main() {\\n#pragma mapbox: initialize lowp float opacity\\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;\\n#pragma mapbox: define lowp float opacity\\nuniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_gl_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;void main() {\\n#pragma mapbox: initialize lowp float opacity\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size[0],a_size[1],u_size_t)/256.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size[0]/256.0;} else if (!u_is_size_zoom_constant && u_is_size_feature_constant) {size=u_size;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_gl_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}\"),ni=si(\"#define SDF_PX 8.0\\n#define EDGE_GAMMA 0.105/DEVICE_PIXEL_RATIO\\nuniform bool u_is_halo;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nuniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;void main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nuniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_gl_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;void main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size[0],a_size[1],u_size_t)/256.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size[0]/256.0;} else if (!u_is_size_zoom_constant && u_is_size_feature_constant) {size=u_size;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_gl_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=vec2(tex.x,tex.y);v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}\");function si(t,e){var i=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,o={};return {fragmentSource:t=t.replace(i,function(t,e,i,r,a){return o[a]=!0,\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nvarying \"+i+\" \"+r+\" \"+a+\";\\n#else\\nuniform \"+i+\" \"+r+\" u_\"+a+\";\\n#endif\\n\":\"\\n#ifdef HAS_UNIFORM_u_\"+a+\"\\n \"+i+\" \"+r+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"}),vertexSource:e=e.replace(i,function(t,e,i,r,a){var n=\"float\"===r?\"vec2\":\"vec4\",s=a.match(/color/)?\"color\":n;return o[a]?\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float a_\"+a+\"_t;\\nattribute \"+i+\" \"+n+\" a_\"+a+\";\\nvarying \"+i+\" \"+r+\" \"+a+\";\\n#else\\nuniform \"+i+\" \"+r+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = a_\"+a+\";\\n#else\\n \"+i+\" \"+r+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", a_\"+a+\"_t);\\n#else\\n \"+i+\" \"+r+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float a_\"+a+\"_t;\\nattribute \"+i+\" \"+n+\" a_\"+a+\";\\n#else\\nuniform \"+i+\" \"+r+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+i+\" \"+r+\" \"+a+\" = a_\"+a+\";\\n#else\\n \"+i+\" \"+r+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+i+\" \"+r+\" \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", a_\"+a+\"_t);\\n#else\\n \"+i+\" \"+r+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"})}}var li=Object.freeze({prelude:ke,background:Be,backgroundPattern:Oe,circle:Fe,clippingMask:Ue,heatmap:Ne,heatmapTexture:Ze,collisionBox:je,collisionCircle:Ve,debug:qe,fill:Ge,fillOutline:We,fillOutlinePattern:Xe,fillPattern:He,fillExtrusion:Ke,fillExtrusionPattern:Ye,extrusionTexture:Je,hillshadePrepare:Qe,hillshade:$e,line:ti,lineGradient:ei,linePattern:ii,lineSDF:oi,raster:ri,symbolIcon:ai,symbolSDF:ni}),ci=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null;};ci.prototype.bind=function(t,e,i,o,r,a,n,s){this.context=t;for(var l=this.boundPaintVertexBuffers.length!==o.length,c=0;!l&&c>16,l>>16],u_pixel_coord_lower:[65535&s,65535&l]}}ui.prototype.draw=function(t,e,i,o,r,a,n,s,l,c,u,h,p,d,_,f){var m,g=t.gl;for(var v in t.program.set(this.program),t.setDepthMode(i),t.setStencilMode(o),t.setColorMode(r),t.setCullFace(a),this.fixedUniforms)this.fixedUniforms[v].set(n[v]);d&&d.setUniforms(t,this.binderUniforms,h,{zoom:p});for(var y=(m={},m[g.LINES]=2,m[g.TRIANGLES]=3,m[g.LINE_STRIP]=1,m)[e],x=0,b=u.get();x0?1-1/(1.001-n):-n),u_contrast_factor:(a=r.paint.get(\"raster-contrast\"),a>0?1/(1-a):1+a),u_spin_weights:Bi(r.paint.get(\"raster-hue-rotate\"))};var a,n;};function Bi(t){t*=Math.PI/180;var e=Math.sin(t),i=Math.cos(t);return [(2*i+1)/3,(-Math.sqrt(3)*e-i+1)/3,(Math.sqrt(3)*e-i+1)/3]}var Oi=function(t,e,i,o,r,a,n,s,l,c){var u=r.transform;return {u_is_size_zoom_constant:+(\"constant\"===t||\"source\"===t),u_is_size_feature_constant:+(\"constant\"===t||\"camera\"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:u.cameraToCenterDistance,u_pitch:u.pitch/360*2*Math.PI,u_rotate_symbol:+i,u_aspect_ratio:u.width/u.height,u_fade_change:r.options.fadeDuration?r.symbolFadeChange:1,u_matrix:a,u_label_plane_matrix:n,u_gl_coord_matrix:s,u_is_text:+l,u_pitch_with_map:+o,u_texsize:c,u_texture:0}},Fi=function(e,i,o,r,a,n,s,l,c,u,h){var p=a.transform;return t.extend(Oi(e,i,o,r,a,n,s,l,c,u),{u_gamma_scale:r?Math.cos(p._pitch)*p.cameraToCenterDistance:1,u_is_halo:+h})},Ui=function(t,e,i){return {u_matrix:t,u_opacity:e,u_color:i}},Ni=function(e,i,o,r,a,n){return t.extend(function(t,e,i,o){var r=i.imageManager.getPattern(t.from),a=i.imageManager.getPattern(t.to),n=i.imageManager.getPixelSize(),s=n.width,l=n.height,c=Math.pow(2,o.tileID.overscaledZ),u=o.tileSize*Math.pow(2,i.transform.tileZoom)/c,h=u*(o.tileID.canonical.x+o.tileID.wrap*c),p=u*o.tileID.canonical.y;return {u_image:0,u_pattern_tl_a:r.tl,u_pattern_br_a:r.br,u_pattern_tl_b:a.tl,u_pattern_br_b:a.br,u_texsize:[s,l],u_mix:e.t,u_pattern_size_a:r.displaySize,u_pattern_size_b:a.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/se(o,1,i.transform.tileZoom),u_pixel_coord_upper:[h>>16,p>>16],u_pixel_coord_lower:[65535&h,65535&p]}}(r,n,o,a),{u_matrix:e,u_opacity:i})},Zi={fillExtrusion:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_lightpos:new t.Uniform3f(e,i.u_lightpos),u_lightintensity:new t.Uniform1f(e,i.u_lightintensity),u_lightcolor:new t.Uniform3f(e,i.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,i.u_vertical_gradient)}},fillExtrusionPattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_lightpos:new t.Uniform3f(e,i.u_lightpos),u_lightintensity:new t.Uniform1f(e,i.u_lightintensity),u_lightcolor:new t.Uniform3f(e,i.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,i.u_vertical_gradient),u_height_factor:new t.Uniform1f(e,i.u_height_factor),u_image:new t.Uniform1i(e,i.u_image),u_texsize:new t.Uniform2f(e,i.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_scale:new t.Uniform4f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade)}},extrusionTexture:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_world:new t.Uniform2f(e,i.u_world),u_image:new t.Uniform1i(e,i.u_image),u_opacity:new t.Uniform1f(e,i.u_opacity)}},fill:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},fillPattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_image:new t.Uniform1i(e,i.u_image),u_texsize:new t.Uniform2f(e,i.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_scale:new t.Uniform4f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade)}},fillOutline:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_world:new t.Uniform2f(e,i.u_world)}},fillOutlinePattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_world:new t.Uniform2f(e,i.u_world),u_image:new t.Uniform1i(e,i.u_image),u_texsize:new t.Uniform2f(e,i.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_scale:new t.Uniform4f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade)}},circle:function(e,i){return {u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_scale_with_map:new t.Uniform1i(e,i.u_scale_with_map),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_extrude_scale:new t.Uniform2f(e,i.u_extrude_scale),u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},collisionBox:xi,collisionCircle:xi,debug:function(e,i){return {u_color:new t.UniformColor(e,i.u_color),u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},clippingMask:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},heatmap:function(e,i){return {u_extrude_scale:new t.Uniform1f(e,i.u_extrude_scale),u_intensity:new t.Uniform1f(e,i.u_intensity),u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},heatmapTexture:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_world:new t.Uniform2f(e,i.u_world),u_image:new t.Uniform1i(e,i.u_image),u_color_ramp:new t.Uniform1i(e,i.u_color_ramp),u_opacity:new t.Uniform1f(e,i.u_opacity)}},hillshade:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_image:new t.Uniform1i(e,i.u_image),u_latrange:new t.Uniform2f(e,i.u_latrange),u_light:new t.Uniform2f(e,i.u_light),u_shadow:new t.UniformColor(e,i.u_shadow),u_highlight:new t.UniformColor(e,i.u_highlight),u_accent:new t.UniformColor(e,i.u_accent)}},hillshadePrepare:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_image:new t.Uniform1i(e,i.u_image),u_dimension:new t.Uniform2f(e,i.u_dimension),u_zoom:new t.Uniform1f(e,i.u_zoom),u_maxzoom:new t.Uniform1f(e,i.u_maxzoom)}},line:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_ratio:new t.Uniform1f(e,i.u_ratio),u_gl_units_to_pixels:new t.Uniform2f(e,i.u_gl_units_to_pixels)}},lineGradient:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_ratio:new t.Uniform1f(e,i.u_ratio),u_gl_units_to_pixels:new t.Uniform2f(e,i.u_gl_units_to_pixels),u_image:new t.Uniform1i(e,i.u_image)}},linePattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_texsize:new t.Uniform2f(e,i.u_texsize),u_ratio:new t.Uniform1f(e,i.u_ratio),u_image:new t.Uniform1i(e,i.u_image),u_gl_units_to_pixels:new t.Uniform2f(e,i.u_gl_units_to_pixels),u_scale:new t.Uniform4f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade)}},lineSDF:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_ratio:new t.Uniform1f(e,i.u_ratio),u_gl_units_to_pixels:new t.Uniform2f(e,i.u_gl_units_to_pixels),u_patternscale_a:new t.Uniform2f(e,i.u_patternscale_a),u_patternscale_b:new t.Uniform2f(e,i.u_patternscale_b),u_sdfgamma:new t.Uniform1f(e,i.u_sdfgamma),u_image:new t.Uniform1i(e,i.u_image),u_tex_y_a:new t.Uniform1f(e,i.u_tex_y_a),u_tex_y_b:new t.Uniform1f(e,i.u_tex_y_b),u_mix:new t.Uniform1f(e,i.u_mix)}},raster:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_tl_parent:new t.Uniform2f(e,i.u_tl_parent),u_scale_parent:new t.Uniform1f(e,i.u_scale_parent),u_buffer_scale:new t.Uniform1f(e,i.u_buffer_scale),u_fade_t:new t.Uniform1f(e,i.u_fade_t),u_opacity:new t.Uniform1f(e,i.u_opacity),u_image0:new t.Uniform1i(e,i.u_image0),u_image1:new t.Uniform1i(e,i.u_image1),u_brightness_low:new t.Uniform1f(e,i.u_brightness_low),u_brightness_high:new t.Uniform1f(e,i.u_brightness_high),u_saturation_factor:new t.Uniform1f(e,i.u_saturation_factor),u_contrast_factor:new t.Uniform1f(e,i.u_contrast_factor),u_spin_weights:new t.Uniform3f(e,i.u_spin_weights)}},symbolIcon:function(e,i){return {u_is_size_zoom_constant:new t.Uniform1i(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,i.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,i.u_size_t),u_size:new t.Uniform1f(e,i.u_size),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,i.u_pitch),u_rotate_symbol:new t.Uniform1i(e,i.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,i.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,i.u_fade_change),u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,i.u_label_plane_matrix),u_gl_coord_matrix:new t.UniformMatrix4f(e,i.u_gl_coord_matrix),u_is_text:new t.Uniform1f(e,i.u_is_text),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_texsize:new t.Uniform2f(e,i.u_texsize),u_texture:new t.Uniform1i(e,i.u_texture)}},symbolSDF:function(e,i){return {u_is_size_zoom_constant:new t.Uniform1i(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,i.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,i.u_size_t),u_size:new t.Uniform1f(e,i.u_size),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,i.u_pitch),u_rotate_symbol:new t.Uniform1i(e,i.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,i.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,i.u_fade_change),u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,i.u_label_plane_matrix),u_gl_coord_matrix:new t.UniformMatrix4f(e,i.u_gl_coord_matrix),u_is_text:new t.Uniform1f(e,i.u_is_text),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_texsize:new t.Uniform2f(e,i.u_texsize),u_texture:new t.Uniform1i(e,i.u_texture),u_gamma_scale:new t.Uniform1f(e,i.u_gamma_scale),u_is_halo:new t.Uniform1f(e,i.u_is_halo)}},background:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_opacity:new t.Uniform1f(e,i.u_opacity),u_color:new t.UniformColor(e,i.u_color)}},backgroundPattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_opacity:new t.Uniform1f(e,i.u_opacity),u_image:new t.Uniform1i(e,i.u_image),u_pattern_tl_a:new t.Uniform2f(e,i.u_pattern_tl_a),u_pattern_br_a:new t.Uniform2f(e,i.u_pattern_br_a),u_pattern_tl_b:new t.Uniform2f(e,i.u_pattern_tl_b),u_pattern_br_b:new t.Uniform2f(e,i.u_pattern_br_b),u_texsize:new t.Uniform2f(e,i.u_texsize),u_mix:new t.Uniform1f(e,i.u_mix),u_pattern_size_a:new t.Uniform2f(e,i.u_pattern_size_a),u_pattern_size_b:new t.Uniform2f(e,i.u_pattern_size_b),u_scale_a:new t.Uniform1f(e,i.u_scale_a),u_scale_b:new t.Uniform1f(e,i.u_scale_b),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_tile_units_to_pixels:new t.Uniform1f(e,i.u_tile_units_to_pixels)}}};function ji(e,i){for(var o=e.sort(function(t,e){return t.tileID.isLessThan(e.tileID)?-1:e.tileID.isLessThan(t.tileID)?1:0}),r=0;r0){var s=t.browser.now(),l=(s-e.timeAdded)/n,c=i?(s-i.timeAdded)/n:-1,u=o.getSource(),h=a.coveringZoomLevel({tileSize:u.tileSize,roundZoom:u.roundZoom}),p=!i||Math.abs(i.tileID.overscaledZ-h)>Math.abs(e.tileID.overscaledZ-h),d=p&&e.refreshedUponExpiration?1:t.clamp(p?l:1-c,0,1);return e.refreshedUponExpiration&&l>=1&&(e.refreshedUponExpiration=!1),i?{opacity:1,mix:1-d}:{opacity:d,mix:0}}return {opacity:1,mix:0}}function eo(e,i,o){var r=e.context,a=r.gl,n=o.posMatrix,s=e.useProgram(\"debug\"),l=bt.disabled,c=wt.disabled,u=e.colorModeForRenderPass(),h=\"$debug\";s.draw(r,a.LINE_STRIP,l,c,u,Tt.disabled,wi(n,t.Color.red),h,e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);for(var p=function(t,e,i,o){o=o||1;var r,a,n,s,l,c,u,h,p=[];for(r=0,a=t.length;r\":[24,[4,18,20,9,4,0]],\"?\":[18,[3,16,3,17,4,19,5,20,7,21,11,21,13,20,14,19,15,17,15,15,14,13,13,12,9,10,9,7,-1,-1,9,2,8,1,9,0,10,1,9,2]],\"@\":[27,[18,13,17,15,15,16,12,16,10,15,9,14,8,11,8,8,9,6,11,5,14,5,16,6,17,8,-1,-1,12,16,10,14,9,11,9,8,10,6,11,5,-1,-1,18,16,17,8,17,6,19,5,21,5,23,7,24,10,24,12,23,15,22,17,20,19,18,20,15,21,12,21,9,20,7,19,5,17,4,15,3,12,3,9,4,6,5,4,7,2,9,1,12,0,15,0,18,1,20,2,21,3,-1,-1,19,16,18,8,18,6,19,5]],A:[18,[9,21,1,0,-1,-1,9,21,17,0,-1,-1,4,7,14,7]],B:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,-1,-1,4,11,13,11,16,10,17,9,18,7,18,4,17,2,16,1,13,0,4,0]],C:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5]],D:[21,[4,21,4,0,-1,-1,4,21,11,21,14,20,16,18,17,16,18,13,18,8,17,5,16,3,14,1,11,0,4,0]],E:[19,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11,-1,-1,4,0,17,0]],F:[18,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11]],G:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,18,8,-1,-1,13,8,18,8]],H:[22,[4,21,4,0,-1,-1,18,21,18,0,-1,-1,4,11,18,11]],I:[8,[4,21,4,0]],J:[16,[12,21,12,5,11,2,10,1,8,0,6,0,4,1,3,2,2,5,2,7]],K:[21,[4,21,4,0,-1,-1,18,21,4,7,-1,-1,9,12,18,0]],L:[17,[4,21,4,0,-1,-1,4,0,16,0]],M:[24,[4,21,4,0,-1,-1,4,21,12,0,-1,-1,20,21,12,0,-1,-1,20,21,20,0]],N:[22,[4,21,4,0,-1,-1,4,21,18,0,-1,-1,18,21,18,0]],O:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21]],P:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,14,17,12,16,11,13,10,4,10]],Q:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21,-1,-1,12,4,18,-2]],R:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,4,11,-1,-1,11,11,18,0]],S:[20,[17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],T:[16,[8,21,8,0,-1,-1,1,21,15,21]],U:[22,[4,21,4,6,5,3,7,1,10,0,12,0,15,1,17,3,18,6,18,21]],V:[18,[1,21,9,0,-1,-1,17,21,9,0]],W:[24,[2,21,7,0,-1,-1,12,21,7,0,-1,-1,12,21,17,0,-1,-1,22,21,17,0]],X:[20,[3,21,17,0,-1,-1,17,21,3,0]],Y:[18,[1,21,9,11,9,0,-1,-1,17,21,9,11]],Z:[20,[17,21,3,0,-1,-1,3,21,17,21,-1,-1,3,0,17,0]],\"[\":[14,[4,25,4,-7,-1,-1,5,25,5,-7,-1,-1,4,25,11,25,-1,-1,4,-7,11,-7]],\"\\\\\":[14,[0,21,14,-3]],\"]\":[14,[9,25,9,-7,-1,-1,10,25,10,-7,-1,-1,3,25,10,25,-1,-1,3,-7,10,-7]],\"^\":[16,[6,15,8,18,10,15,-1,-1,3,12,8,17,13,12,-1,-1,8,17,8,0]],_:[16,[0,-2,16,-2]],\"`\":[10,[6,21,5,20,4,18,4,16,5,15,6,16,5,17]],a:[19,[15,14,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],b:[19,[4,21,4,0,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],c:[18,[15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],d:[19,[15,21,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],e:[18,[3,8,15,8,15,10,14,12,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],f:[12,[10,21,8,21,6,20,5,17,5,0,-1,-1,2,14,9,14]],g:[19,[15,14,15,-2,14,-5,13,-6,11,-7,8,-7,6,-6,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],h:[19,[4,21,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],i:[8,[3,21,4,20,5,21,4,22,3,21,-1,-1,4,14,4,0]],j:[10,[5,21,6,20,7,21,6,22,5,21,-1,-1,6,14,6,-3,5,-6,3,-7,1,-7]],k:[17,[4,21,4,0,-1,-1,14,14,4,4,-1,-1,8,8,15,0]],l:[8,[4,21,4,0]],m:[30,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0,-1,-1,15,10,18,13,20,14,23,14,25,13,26,10,26,0]],n:[19,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],o:[19,[8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3,16,6,16,8,15,11,13,13,11,14,8,14]],p:[19,[4,14,4,-7,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],q:[19,[15,14,15,-7,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],r:[13,[4,14,4,0,-1,-1,4,8,5,11,7,13,9,14,12,14]],s:[17,[14,11,13,13,10,14,7,14,4,13,3,11,4,9,6,8,11,7,13,6,14,4,14,3,13,1,10,0,7,0,4,1,3,3]],t:[12,[5,21,5,4,6,1,8,0,10,0,-1,-1,2,14,9,14]],u:[19,[4,14,4,4,5,1,7,0,10,0,12,1,15,4,-1,-1,15,14,15,0]],v:[16,[2,14,8,0,-1,-1,14,14,8,0]],w:[22,[3,14,7,0,-1,-1,11,14,7,0,-1,-1,11,14,15,0,-1,-1,19,14,15,0]],x:[17,[3,14,14,0,-1,-1,14,14,3,0]],y:[16,[2,14,8,0,-1,-1,14,14,8,0,6,-4,4,-6,2,-7,1,-7]],z:[17,[14,14,3,0,-1,-1,3,14,14,14,-1,-1,3,0,14,0]],\"{\":[14,[9,25,7,24,6,23,5,21,5,19,6,17,7,16,8,14,8,12,6,10,-1,-1,7,24,6,22,6,20,7,18,8,17,9,15,9,13,8,11,4,9,8,7,9,5,9,3,8,1,7,0,6,-2,6,-4,7,-6,-1,-1,6,8,8,6,8,4,7,2,6,1,5,-1,5,-3,6,-5,7,-6,9,-7]],\"|\":[8,[4,25,4,-7]],\"}\":[14,[5,25,7,24,8,23,9,21,9,19,8,17,7,16,6,14,6,12,8,10,-1,-1,7,24,8,22,8,20,7,18,6,17,5,15,5,13,6,11,10,9,6,7,5,5,5,3,6,1,7,0,8,-2,8,-4,7,-6,-1,-1,8,8,6,6,6,4,7,2,8,1,9,-1,9,-3,8,-5,7,-6,5,-7]],\"~\":[24,[3,6,3,8,4,11,6,12,8,12,10,11,14,8,16,7,18,7,20,8,21,10,-1,-1,3,8,4,10,6,11,8,11,10,10,14,7,16,6,18,6,20,7,21,10,21,12]]};var oo={symbol:function(t,e,i,o){if(\"translucent\"===t.renderPass){var r=wt.disabled,a=t.colorModeForRenderPass();0!==i.paint.get(\"icon-opacity\").constantOr(1)&&Xi(t,e,i,o,!1,i.paint.get(\"icon-translate\"),i.paint.get(\"icon-translate-anchor\"),i.layout.get(\"icon-rotation-alignment\"),i.layout.get(\"icon-pitch-alignment\"),i.layout.get(\"icon-keep-upright\"),r,a),0!==i.paint.get(\"text-opacity\").constantOr(1)&&Xi(t,e,i,o,!0,i.paint.get(\"text-translate\"),i.paint.get(\"text-translate-anchor\"),i.layout.get(\"text-rotation-alignment\"),i.layout.get(\"text-pitch-alignment\"),i.layout.get(\"text-keep-upright\"),r,a),e.map.showCollisionBoxes&&function(t,e,i,o){qi(t,e,i,o,!1),qi(t,e,i,o,!0);}(t,e,i,o);}},circle:function(t,e,i,o){if(\"translucent\"===t.renderPass){var r=i.paint.get(\"circle-opacity\"),a=i.paint.get(\"circle-stroke-width\"),n=i.paint.get(\"circle-stroke-opacity\");if(0!==r.constantOr(1)||0!==a.constantOr(1)&&0!==n.constantOr(1))for(var s=t.context,l=s.gl,c=t.depthModeForSublayer(0,bt.ReadOnly),u=wt.disabled,h=t.colorModeForRenderPass(),p=0;pe.y){var i=t;t=e,e=i;}return {x0:t.x,y0:t.y,x1:e.x,y1:e.y,dx:e.x-t.x,dy:e.y-t.y}}function no(t,e,i,o,r){var a=Math.max(i,Math.floor(e.y0)),n=Math.min(o,Math.ceil(e.y1));if(t.x0===e.x0&&t.y0===e.y0?t.x0+e.dy/t.dy*t.dx0,h=e.dx<0,p=a;pl.dy&&(n=s,s=l,l=n),s.dy>c.dy&&(n=s,s=c,c=n),l.dy>c.dy&&(n=l,l=c,c=n),s.dy&&no(c,s,o,r,a),l.dy&&no(c,l,o,r,a);}ro.prototype.resize=function(e,i){var o=this.context.gl;if(this.width=e*t.browser.devicePixelRatio,this.height=i*t.browser.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(var r=0,a=this.style._order;r=0;this.currentLayer--){var I=this.style._layers[o[this.currentLayer]],C=r[I.source],S=l[I.source];I.source!==s&&C&&(this.clearStencil(),C.getSource().isTileClipped&&this._renderTileClippingMasks(S)),this.renderLayer(this,C,I,S),s=I.source;}for(this.renderPass=\"translucent\",this.currentLayer=0,s=null;this.currentLayer0?e.pop():null},ro.prototype.isPatternMissing=function(t){if(!t)return !1;var e=this.imageManager.getPattern(t.from),i=this.imageManager.getPattern(t.to);return !e||!i},ro.prototype.useProgram=function(t,e){void 0===e&&(e=this.emptyProgramConfiguration),this.cache=this.cache||{};var i=\"\"+t+(e.cacheKey||\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\");return this.cache[i]||(this.cache[i]=new ui(this.context,li[t],e,Zi[t],this._showOverdrawInspector)),this.cache[i]},ro.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault();},ro.prototype.setBaseState=function(){var t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD);};var lo=function(e,i,o){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===o||o,this._minZoom=e||0,this._maxZoom=i||22,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._posMatrixCache={},this._alignedPosMatrixCache={};},co={minZoom:{configurable:!0},maxZoom:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerPoint:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};lo.prototype.clone=function(){var t=new lo(this._minZoom,this._maxZoom,this._renderWorldCopies);return t.tileSize=this.tileSize,t.latRange=this.latRange,t.width=this.width,t.height=this.height,t._center=this._center,t.zoom=this.zoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._unmodified=this._unmodified,t._calcMatrices(),t},co.minZoom.get=function(){return this._minZoom},co.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t));},co.maxZoom.get=function(){return this._maxZoom},co.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t));},co.renderWorldCopies.get=function(){return this._renderWorldCopies},co.renderWorldCopies.set=function(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t;},co.worldSize.get=function(){return this.tileSize*this.scale},co.centerPoint.get=function(){return this.size._div(2)},co.size.get=function(){return new t.Point(this.width,this.height)},co.bearing.get=function(){return -this.angle/Math.PI*180},co.bearing.set=function(e){var i=-t.wrap(e,-180,180)*Math.PI/180;this.angle!==i&&(this._unmodified=!1,this.angle=i,this._calcMatrices(),this.rotationMatrix=t.create$2(),t.rotate(this.rotationMatrix,this.rotationMatrix,this.angle));},co.pitch.get=function(){return this._pitch/Math.PI*180},co.pitch.set=function(e){var i=t.clamp(e,0,60)/180*Math.PI;this._pitch!==i&&(this._unmodified=!1,this._pitch=i,this._calcMatrices());},co.fov.get=function(){return this._fov/Math.PI*180},co.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices());},co.zoom.get=function(){return this._zoom},co.zoom.set=function(t){var e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._constrain(),this._calcMatrices());},co.center.get=function(){return this._center},co.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices());},lo.prototype.coveringZoomLevel=function(t){return (t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize))},lo.prototype.getVisibleUnwrappedCoordinates=function(e){var i=[new t.UnwrappedTileID(0,e)];if(this._renderWorldCopies)for(var o=this.pointCoordinate(new t.Point(0,0)),r=this.pointCoordinate(new t.Point(this.width,0)),a=this.pointCoordinate(new t.Point(this.width,this.height)),n=this.pointCoordinate(new t.Point(0,this.height)),s=Math.floor(Math.min(o.x,r.x,a.x,n.x)),l=Math.floor(Math.max(o.x,r.x,a.x,n.x)),c=s-1;c<=l+1;c++)0!==c&&i.push(new t.UnwrappedTileID(c,e));return i},lo.prototype.coveringTiles=function(e){var i=this.coveringZoomLevel(e),o=i;if(void 0!==e.minzoom&&ie.maxzoom&&(i=e.maxzoom);var r=t.MercatorCoordinate.fromLngLat(this.center),a=Math.pow(2,i),n=new t.Point(a*r.x-.5,a*r.y-.5);return function(e,i,o,r){void 0===r&&(r=!0);var a=1<=0&&l<=a)for(c=i;cn&&(r=n-m);}if(this.lngRange){var g=d.x,v=c.x/2;g-vl&&(o=l-v);}void 0===o&&void 0===r||(this.center=this.unproject(new t.Point(void 0!==o?o:d.x,void 0!==r?r:d.y))),this._unmodified=u,this._constraining=!1;}},lo.prototype._calcMatrices=function(){if(this.height){this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height;var e=this._fov/2,i=Math.PI/2+this._pitch,o=Math.sin(e)*this.cameraToCenterDistance/Math.sin(Math.PI-i-e),r=this.point,a=r.x,n=r.y,s=1.01*(Math.cos(Math.PI/2-this._pitch)*o+this.cameraToCenterDistance),l=new Float64Array(16);t.perspective(l,this._fov,this.width/this.height,1,s),t.scale(l,l,[1,-1,1]),t.translate(l,l,[0,0,-this.cameraToCenterDistance]),t.rotateX(l,l,this._pitch),t.rotateZ(l,l,this.angle),t.translate(l,l,[-a,-n,0]),this.mercatorMatrix=t.scale([],l,[this.worldSize,this.worldSize,this.worldSize]),t.scale(l,l,[1,1,t.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=l;var c=this.width%2/2,u=this.height%2/2,h=Math.cos(this.angle),p=Math.sin(this.angle),d=a-Math.round(a)+h*c+p*u,_=n-Math.round(n)+h*u+p*c,f=new Float64Array(l);if(t.translate(f,f,[d>.5?d-1:d,_>.5?_-1:_,0]),this.alignedProjMatrix=f,l=t.create$1(),t.scale(l,l,[this.width/2,-this.height/2,1]),t.translate(l,l,[1,-1,0]),this.pixelMatrix=t.multiply(new Float64Array(16),l,this.projMatrix),!(l=t.invert(new Float64Array(16),this.pixelMatrix)))throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=l,this._posMatrixCache={},this._alignedPosMatrixCache={};}},lo.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var e=this.pointCoordinate(new t.Point(0,0)),i=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(i,i,this.pixelMatrix)[3]/this.cameraToCenterDistance},lo.prototype.getCameraPoint=function(){var e=this._pitch,i=Math.tan(e)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.Point(0,i))},lo.prototype.getCameraQueryGeometry=function(e){var i=this.getCameraPoint();if(1===e.length)return [e[0],i];for(var o=i.x,r=i.y,a=i.x,n=i.y,s=0,l=e;s=3&&(this._map.jumpTo({center:[+e[2],+e[1]],zoom:+e[0],bearing:+(e[3]||0),pitch:+(e[4]||0)}),!0)},uo.prototype._updateHashUnthrottled=function(){var e=this.getHashString();try{t.window.history.replaceState(t.window.history.state,\"\",e);}catch(t){}};var ho=function(e){function o(o,r,a,n){void 0===n&&(n={});var s=i.mousePos(r.getCanvasContainer(),a),l=r.unproject(s);e.call(this,o,t.extend({point:s,lngLat:l,originalEvent:a},n)),this._defaultPrevented=!1,this.target=r;}e&&(o.__proto__=e),o.prototype=Object.create(e&&e.prototype),o.prototype.constructor=o;var r={defaultPrevented:{configurable:!0}};return o.prototype.preventDefault=function(){this._defaultPrevented=!0;},r.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(o.prototype,r),o}(t.Event),po=function(e){function o(o,r,a){var n=i.touchPos(r.getCanvasContainer(),a),s=n.map(function(t){return r.unproject(t)}),l=n.reduce(function(t,e,i,o){return t.add(e.div(o.length))},new t.Point(0,0)),c=r.unproject(l);e.call(this,o,{points:n,point:l,lngLats:s,lngLat:c,originalEvent:a}),this._defaultPrevented=!1;}e&&(o.__proto__=e),o.prototype=Object.create(e&&e.prototype),o.prototype.constructor=o;var r={defaultPrevented:{configurable:!0}};return o.prototype.preventDefault=function(){this._defaultPrevented=!0;},r.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(o.prototype,r),o}(t.Event),_o=function(t){function e(e,i,o){t.call(this,e,{originalEvent:o}),this._defaultPrevented=!1;}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var i={defaultPrevented:{configurable:!0}};return e.prototype.preventDefault=function(){this._defaultPrevented=!0;},i.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(e.prototype,i),e}(t.Event),fo=function(e){this._map=e,this._el=e.getCanvasContainer(),this._delta=0,t.bindAll([\"_onWheel\",\"_onTimeout\",\"_onScrollFrame\",\"_onScrollFinished\"],this);};fo.prototype.isEnabled=function(){return !!this._enabled},fo.prototype.isActive=function(){return !!this._active},fo.prototype.isZooming=function(){return !!this._zooming},fo.prototype.enable=function(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&\"center\"===t.around);},fo.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1);},fo.prototype.onWheel=function(e){if(this.isEnabled()){var i=e.deltaMode===t.window.WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY,o=t.browser.now(),r=o-(this._lastWheelEventTime||0);this._lastWheelEventTime=o,0!==i&&i%4.000244140625==0?this._type=\"wheel\":0!==i&&Math.abs(i)<4?this._type=\"trackpad\":r>400?(this._type=null,this._lastValue=i,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(r*i)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,i+=this._lastValue)),e.shiftKey&&i&&(i/=4),this._type&&(this._lastWheelEvent=e,this._delta-=i,this.isActive()||this._start(e)),e.preventDefault();}},fo.prototype._onTimeout=function(t){this._type=\"wheel\",this._delta-=this._lastValue,this.isActive()||this._start(t);},fo.prototype._start=function(e){if(this._delta){this._frameId&&(this._map._cancelRenderFrame(this._frameId),this._frameId=null),this._active=!0,this._zooming=!0,this._map.fire(new t.Event(\"movestart\",{originalEvent:e})),this._map.fire(new t.Event(\"zoomstart\",{originalEvent:e})),this._finishTimeout&&clearTimeout(this._finishTimeout);var o=i.mousePos(this._el,e);this._around=t.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(o)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=this._map._requestRenderFrame(this._onScrollFrame));}},fo.prototype._onScrollFrame=function(){var e=this;if(this._frameId=null,this.isActive()){var i=this._map.transform;if(0!==this._delta){var o=\"wheel\"===this._type&&Math.abs(this._delta)>4.000244140625?1/450:.01,r=2/(1+Math.exp(-Math.abs(this._delta*o)));this._delta<0&&0!==r&&(r=1/r);var a=\"number\"==typeof this._targetZoom?i.zoomScale(this._targetZoom):i.scale;this._targetZoom=Math.min(i.maxZoom,Math.max(i.minZoom,i.scaleZoom(a*r))),\"wheel\"===this._type&&(this._startZoom=i.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0;}var n=\"number\"==typeof this._targetZoom?this._targetZoom:i.zoom,s=this._startZoom,l=this._easing,c=!1;if(\"wheel\"===this._type&&s&&l){var u=Math.min((t.browser.now()-this._lastWheelEventTime)/200,1),h=l(u);i.zoom=t.number(s,n,h),u<1?this._frameId||(this._frameId=this._map._requestRenderFrame(this._onScrollFrame)):c=!0;}else i.zoom=n,c=!0;i.setLocationAtPoint(this._around,this._aroundPoint),this._map.fire(new t.Event(\"move\",{originalEvent:this._lastWheelEvent})),this._map.fire(new t.Event(\"zoom\",{originalEvent:this._lastWheelEvent})),c&&(this._active=!1,this._finishTimeout=setTimeout(function(){e._zooming=!1,e._map.fire(new t.Event(\"zoomend\",{originalEvent:e._lastWheelEvent})),e._map.fire(new t.Event(\"moveend\",{originalEvent:e._lastWheelEvent})),delete e._targetZoom;},200));}},fo.prototype._smoothOutEasing=function(e){var i=t.ease;if(this._prevEase){var o=this._prevEase,r=(t.browser.now()-o.start)/o.duration,a=o.easing(r+.01)-o.easing(r),n=.27/Math.sqrt(a*a+1e-4)*.01,s=Math.sqrt(.0729-n*n);i=t.bezier(n,s,.25,1);}return this._prevEase={start:t.browser.now(),duration:e,easing:i},i};var mo=function(e,i){this._map=e,this._el=e.getCanvasContainer(),this._container=e.getContainer(),this._clickTolerance=i.clickTolerance||1,t.bindAll([\"_onMouseMove\",\"_onMouseUp\",\"_onKeyDown\"],this);};mo.prototype.isEnabled=function(){return !!this._enabled},mo.prototype.isActive=function(){return !!this._active},mo.prototype.enable=function(){this.isEnabled()||(this._enabled=!0);},mo.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1);},mo.prototype.onMouseDown=function(e){this.isEnabled()&&e.shiftKey&&0===e.button&&(t.window.document.addEventListener(\"mousemove\",this._onMouseMove,!1),t.window.document.addEventListener(\"keydown\",this._onKeyDown,!1),t.window.document.addEventListener(\"mouseup\",this._onMouseUp,!1),i.disableDrag(),this._startPos=this._lastPos=i.mousePos(this._el,e),this._active=!0);},mo.prototype._onMouseMove=function(t){var e=i.mousePos(this._el,t);if(!(this._lastPos.equals(e)||!this._box&&e.dist(this._startPos)180&&(d=180);var _=d/180;c+=h*d*(_/2),Math.abs(i._normalizeBearing(c,0))0&&i-e[0][0]>160;)e.shift();};var yo=t.bezier(0,0,.3,1),xo=function(e,i){this._map=e,this._el=e.getCanvasContainer(),this._state=\"disabled\",this._clickTolerance=i.clickTolerance||1,t.bindAll([\"_onMove\",\"_onMouseUp\",\"_onTouchEnd\",\"_onBlur\",\"_onDragFrame\"],this);};xo.prototype.isEnabled=function(){return \"disabled\"!==this._state},xo.prototype.isActive=function(){return \"active\"===this._state},xo.prototype.enable=function(){this.isEnabled()||(this._el.classList.add(\"mapboxgl-touch-drag-pan\"),this._state=\"enabled\");},xo.prototype.disable=function(){if(this.isEnabled())switch(this._el.classList.remove(\"mapboxgl-touch-drag-pan\"),this._state){case\"active\":this._state=\"disabled\",this._unbind(),this._deactivate(),this._fireEvent(\"dragend\"),this._fireEvent(\"moveend\");break;case\"pending\":this._state=\"disabled\",this._unbind();break;default:this._state=\"disabled\";}},xo.prototype.onMouseDown=function(e){\"enabled\"===this._state&&(e.ctrlKey||0!==i.mouseButton(e)||(i.addEventListener(t.window.document,\"mousemove\",this._onMove,{capture:!0}),i.addEventListener(t.window.document,\"mouseup\",this._onMouseUp),this._start(e)));},xo.prototype.onTouchStart=function(e){\"enabled\"===this._state&&(e.touches.length>1||(i.addEventListener(t.window.document,\"touchmove\",this._onMove,{capture:!0,passive:!1}),i.addEventListener(t.window.document,\"touchend\",this._onTouchEnd),this._start(e)));},xo.prototype._start=function(e){t.window.addEventListener(\"blur\",this._onBlur),this._state=\"pending\",this._startPos=this._mouseDownPos=this._lastPos=i.mousePos(this._el,e),this._inertia=[[t.browser.now(),this._startPos]];},xo.prototype._onMove=function(e){e.preventDefault();var o=i.mousePos(this._el,e);this._lastPos.equals(o)||\"pending\"===this._state&&o.dist(this._mouseDownPos)1400&&(s=1400,n._unit()._mult(s));var l=s/750,c=n.mult(-l/2);this._map.panBy(c,{duration:1e3*l,easing:yo,noMoveStart:!0},{originalEvent:t});}}},xo.prototype._fireEvent=function(e,i){return this._map.fire(new t.Event(e,i?{originalEvent:i}:{}))},xo.prototype._drainInertiaBuffer=function(){for(var e=this._inertia,i=t.browser.now();e.length>0&&i-e[0][0]>160;)e.shift();};var bo=function(e){this._map=e,this._el=e.getCanvasContainer(),t.bindAll([\"_onKeyDown\"],this);};function wo(t){return t*(2-t)}bo.prototype.isEnabled=function(){return !!this._enabled},bo.prototype.enable=function(){this.isEnabled()||(this._el.addEventListener(\"keydown\",this._onKeyDown,!1),this._enabled=!0);},bo.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener(\"keydown\",this._onKeyDown),this._enabled=!1);},bo.prototype._onKeyDown=function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var e=0,i=0,o=0,r=0,a=0;switch(t.keyCode){case 61:case 107:case 171:case 187:e=1;break;case 189:case 109:case 173:e=-1;break;case 37:t.shiftKey?i=-1:(t.preventDefault(),r=-1);break;case 39:t.shiftKey?i=1:(t.preventDefault(),r=1);break;case 38:t.shiftKey?o=1:(t.preventDefault(),a=-1);break;case 40:t.shiftKey?o=-1:(a=1,t.preventDefault());break;default:return}var n=this._map,s=n.getZoom(),l={duration:300,delayEndEvents:500,easing:wo,zoom:e?Math.round(s)+e*(t.shiftKey?2:1):s,bearing:n.getBearing()+15*i,pitch:n.getPitch()+10*o,offset:[100*-r,100*-a],center:n.getCenter()};n.easeTo(l,{originalEvent:t});}};var Eo=function(e){this._map=e,t.bindAll([\"_onDblClick\",\"_onZoomEnd\"],this);};Eo.prototype.isEnabled=function(){return !!this._enabled},Eo.prototype.isActive=function(){return !!this._active},Eo.prototype.enable=function(){this.isEnabled()||(this._enabled=!0);},Eo.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1);},Eo.prototype.onTouchStart=function(t){var e=this;this.isEnabled()&&(t.points.length>1||(this._tapped?(clearTimeout(this._tapped),this._tapped=null,this._zoom(t)):this._tapped=setTimeout(function(){e._tapped=null;},300)));},Eo.prototype.onDblClick=function(t){this.isEnabled()&&(t.originalEvent.preventDefault(),this._zoom(t));},Eo.prototype._zoom=function(t){this._active=!0,this._map.on(\"zoomend\",this._onZoomEnd),this._map.zoomTo(this._map.getZoom()+(t.originalEvent.shiftKey?-1:1),{around:t.lngLat},t);},Eo.prototype._onZoomEnd=function(){this._active=!1,this._map.off(\"zoomend\",this._onZoomEnd);};var To=t.bezier(0,0,.15,1),Io=function(e){this._map=e,this._el=e.getCanvasContainer(),t.bindAll([\"_onMove\",\"_onEnd\",\"_onTouchFrame\"],this);};Io.prototype.isEnabled=function(){return !!this._enabled},Io.prototype.enable=function(t){this.isEnabled()||(this._el.classList.add(\"mapboxgl-touch-zoom-rotate\"),this._enabled=!0,this._aroundCenter=!!t&&\"center\"===t.around);},Io.prototype.disable=function(){this.isEnabled()&&(this._el.classList.remove(\"mapboxgl-touch-zoom-rotate\"),this._enabled=!1);},Io.prototype.disableRotation=function(){this._rotationDisabled=!0;},Io.prototype.enableRotation=function(){this._rotationDisabled=!1;},Io.prototype.onStart=function(e){if(this.isEnabled()&&2===e.touches.length){var o=i.mousePos(this._el,e.touches[0]),r=i.mousePos(this._el,e.touches[1]),a=o.add(r).div(2);this._startVec=o.sub(r),this._startAround=this._map.transform.pointLocation(a),this._gestureIntent=void 0,this._inertia=[],i.addEventListener(t.window.document,\"touchmove\",this._onMove,{passive:!1}),i.addEventListener(t.window.document,\"touchend\",this._onEnd);}},Io.prototype._getTouchEventData=function(t){var e=i.mousePos(this._el,t.touches[0]),o=i.mousePos(this._el,t.touches[1]),r=e.sub(o);return {vec:r,center:e.add(o).div(2),scale:r.mag()/this._startVec.mag(),bearing:this._rotationDisabled?0:180*r.angleWith(this._startVec)/Math.PI}},Io.prototype._onMove=function(e){if(2===e.touches.length){var i=this._getTouchEventData(e),o=i.vec,r=i.scale,a=i.bearing;if(!this._gestureIntent){var n=this._rotationDisabled&&1!==r||Math.abs(1-r)>.15;Math.abs(a)>10?this._gestureIntent=\"rotate\":n&&(this._gestureIntent=\"zoom\"),this._gestureIntent&&(this._map.fire(new t.Event(this._gestureIntent+\"start\",{originalEvent:e})),this._map.fire(new t.Event(\"movestart\",{originalEvent:e})),this._startVec=o);}this._lastTouchEvent=e,this._frameId||(this._frameId=this._map._requestRenderFrame(this._onTouchFrame)),e.preventDefault();}},Io.prototype._onTouchFrame=function(){this._frameId=null;var e=this._gestureIntent;if(e){var i=this._map.transform;this._startScale||(this._startScale=i.scale,this._startBearing=i.bearing);var o=this._getTouchEventData(this._lastTouchEvent),r=o.center,a=o.bearing,n=o.scale,s=i.pointLocation(r),l=i.locationPoint(s);\"rotate\"===e&&(i.bearing=this._startBearing+a),i.zoom=i.scaleZoom(this._startScale*n),i.setLocationAtPoint(this._startAround,l),this._map.fire(new t.Event(e,{originalEvent:this._lastTouchEvent})),this._map.fire(new t.Event(\"move\",{originalEvent:this._lastTouchEvent})),this._drainInertiaBuffer(),this._inertia.push([t.browser.now(),n,r]);}},Io.prototype._onEnd=function(e){i.removeEventListener(t.window.document,\"touchmove\",this._onMove,{passive:!1}),i.removeEventListener(t.window.document,\"touchend\",this._onEnd);var o=this._gestureIntent,r=this._startScale;if(this._frameId&&(this._map._cancelRenderFrame(this._frameId),this._frameId=null),delete this._gestureIntent,delete this._startScale,delete this._startBearing,delete this._lastTouchEvent,o){this._map.fire(new t.Event(o+\"end\",{originalEvent:e})),this._drainInertiaBuffer();var a=this._inertia,n=this._map;if(a.length<2)n.snapToNorth({},{originalEvent:e});else{var s=a[a.length-1],l=a[0],c=n.transform.scaleZoom(r*s[1]),u=n.transform.scaleZoom(r*l[1]),h=c-u,p=(s[0]-l[0])/1e3,d=s[2];if(0!==p&&c!==u){var _=.15*h/p;Math.abs(_)>2.5&&(_=_>0?2.5:-2.5);var f=1e3*Math.abs(_/(12*.15)),m=c+_*f/2e3;m<0&&(m=0),n.easeTo({zoom:m,duration:f,easing:To,around:this._aroundCenter?n.getCenter():n.unproject(d),noMoveStart:!0},{originalEvent:e});}else n.snapToNorth({},{originalEvent:e});}}},Io.prototype._drainInertiaBuffer=function(){for(var e=this._inertia,i=t.browser.now();e.length>2&&i-e[0][0]>160;)e.shift();};var Co={scrollZoom:fo,boxZoom:mo,dragRotate:vo,dragPan:xo,keyboard:bo,doubleClickZoom:Eo,touchZoomRotate:Io};var So=function(e){function i(i,o){e.call(this),this._moving=!1,this._zooming=!1,this.transform=i,this._bearingSnap=o.bearingSnap,t.bindAll([\"_renderFrameCallback\"],this);}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.getCenter=function(){return this.transform.center},i.prototype.setCenter=function(t,e){return this.jumpTo({center:t},e)},i.prototype.panBy=function(e,i,o){return e=t.Point.convert(e).mult(-1),this.panTo(this.transform.center,t.extend({offset:e},i),o)},i.prototype.panTo=function(e,i,o){return this.easeTo(t.extend({center:e},i),o)},i.prototype.getZoom=function(){return this.transform.zoom},i.prototype.setZoom=function(t,e){return this.jumpTo({zoom:t},e),this},i.prototype.zoomTo=function(e,i,o){return this.easeTo(t.extend({zoom:e},i),o)},i.prototype.zoomIn=function(t,e){return this.zoomTo(this.getZoom()+1,t,e),this},i.prototype.zoomOut=function(t,e){return this.zoomTo(this.getZoom()-1,t,e),this},i.prototype.getBearing=function(){return this.transform.bearing},i.prototype.setBearing=function(t,e){return this.jumpTo({bearing:t},e),this},i.prototype.rotateTo=function(e,i,o){return this.easeTo(t.extend({bearing:e},i),o)},i.prototype.resetNorth=function(e,i){return this.rotateTo(0,t.extend({duration:1e3},e),i),this},i.prototype.snapToNorth=function(t,e){return Math.abs(this.getBearing())e?1:0}),[\"bottom\",\"left\",\"right\",\"top\"])){var n=this.transform,s=n.project(t.LngLat.convert(e)),l=n.project(t.LngLat.convert(i)),c=s.rotate(-o*Math.PI/180),u=l.rotate(-o*Math.PI/180),h=new t.Point(Math.max(c.x,u.x),Math.max(c.y,u.y)),p=new t.Point(Math.min(c.x,u.x),Math.min(c.y,u.y)),d=h.sub(p),_=(n.width-r.padding.left-r.padding.right)/d.x,f=(n.height-r.padding.top-r.padding.bottom)/d.y;if(!(f<0||_<0)){var m=Math.min(n.scaleZoom(n.scale*Math.min(_,f)),r.maxZoom),g=t.Point.convert(r.offset),v=(r.padding.left-r.padding.right)/2,y=(r.padding.top-r.padding.bottom)/2,x=new t.Point(g.x+v,g.y+y).mult(n.scale/n.zoomScale(m));return {center:n.unproject(s.add(l).div(2).sub(x)),zoom:m,bearing:o}}t.warnOnce(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\");}else t.warnOnce(\"options.padding must be a positive number, or an Object with keys 'bottom', 'left', 'right', 'top'\");},i.prototype.fitBounds=function(t,e,i){return this._fitInternal(this.cameraForBounds(t,e),e,i)},i.prototype.fitScreenCoordinates=function(e,i,o,r,a){return this._fitInternal(this._cameraForBoxAndBearing(this.transform.pointLocation(t.Point.convert(e)),this.transform.pointLocation(t.Point.convert(i)),o,r),r,a)},i.prototype._fitInternal=function(e,i,o){return e?(i=t.extend(e,i)).linear?this.easeTo(i,o):this.flyTo(i,o):this},i.prototype.jumpTo=function(e,i){this.stop();var o=this.transform,r=!1,a=!1,n=!1;return \"zoom\"in e&&o.zoom!==+e.zoom&&(r=!0,o.zoom=+e.zoom),void 0!==e.center&&(o.center=t.LngLat.convert(e.center)),\"bearing\"in e&&o.bearing!==+e.bearing&&(a=!0,o.bearing=+e.bearing),\"pitch\"in e&&o.pitch!==+e.pitch&&(n=!0,o.pitch=+e.pitch),this.fire(new t.Event(\"movestart\",i)).fire(new t.Event(\"move\",i)),r&&this.fire(new t.Event(\"zoomstart\",i)).fire(new t.Event(\"zoom\",i)).fire(new t.Event(\"zoomend\",i)),a&&this.fire(new t.Event(\"rotatestart\",i)).fire(new t.Event(\"rotate\",i)).fire(new t.Event(\"rotateend\",i)),n&&this.fire(new t.Event(\"pitchstart\",i)).fire(new t.Event(\"pitch\",i)).fire(new t.Event(\"pitchend\",i)),this.fire(new t.Event(\"moveend\",i))},i.prototype.easeTo=function(e,i){var o=this;this.stop(),!1===(e=t.extend({offset:[0,0],duration:500,easing:t.ease},e)).animate&&(e.duration=0);var r=this.transform,a=this.getZoom(),n=this.getBearing(),s=this.getPitch(),l=\"zoom\"in e?+e.zoom:a,c=\"bearing\"in e?this._normalizeBearing(e.bearing,n):n,u=\"pitch\"in e?+e.pitch:s,h=r.centerPoint.add(t.Point.convert(e.offset)),p=r.pointLocation(h),d=t.LngLat.convert(e.center||p);this._normalizeCenter(d);var _,f,m=r.project(p),g=r.project(d).sub(m),v=r.zoomScale(l-a);return e.around&&(_=t.LngLat.convert(e.around),f=r.locationPoint(_)),this._zooming=l!==a,this._rotating=n!==c,this._pitching=u!==s,this._prepareEase(i,e.noMoveStart),clearTimeout(this._easeEndTimeoutID),this._ease(function(e){if(o._zooming&&(r.zoom=t.number(a,l,e)),o._rotating&&(r.bearing=t.number(n,c,e)),o._pitching&&(r.pitch=t.number(s,u,e)),_)r.setLocationAtPoint(_,f);else{var p=r.zoomScale(r.zoom-a),d=l>a?Math.min(2,v):Math.max(.5,v),y=Math.pow(d,1-e),x=r.unproject(m.add(g.mult(e*y)).mult(p));r.setLocationAtPoint(r.renderWorldCopies?x.wrap():x,h);}o._fireMoveEvents(i);},function(){e.delayEndEvents?o._easeEndTimeoutID=setTimeout(function(){return o._afterEase(i)},e.delayEndEvents):o._afterEase(i);},e),this},i.prototype._prepareEase=function(e,i){this._moving=!0,i||this.fire(new t.Event(\"movestart\",e)),this._zooming&&this.fire(new t.Event(\"zoomstart\",e)),this._rotating&&this.fire(new t.Event(\"rotatestart\",e)),this._pitching&&this.fire(new t.Event(\"pitchstart\",e));},i.prototype._fireMoveEvents=function(e){this.fire(new t.Event(\"move\",e)),this._zooming&&this.fire(new t.Event(\"zoom\",e)),this._rotating&&this.fire(new t.Event(\"rotate\",e)),this._pitching&&this.fire(new t.Event(\"pitch\",e));},i.prototype._afterEase=function(e){var i=this._zooming,o=this._rotating,r=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,i&&this.fire(new t.Event(\"zoomend\",e)),o&&this.fire(new t.Event(\"rotateend\",e)),r&&this.fire(new t.Event(\"pitchend\",e)),this.fire(new t.Event(\"moveend\",e));},i.prototype.flyTo=function(e,i){var o=this;this.stop(),e=t.extend({offset:[0,0],speed:1.2,curve:1.42,easing:t.ease},e);var r=this.transform,a=this.getZoom(),n=this.getBearing(),s=this.getPitch(),l=\"zoom\"in e?t.clamp(+e.zoom,r.minZoom,r.maxZoom):a,c=\"bearing\"in e?this._normalizeBearing(e.bearing,n):n,u=\"pitch\"in e?+e.pitch:s,h=r.zoomScale(l-a),p=r.centerPoint.add(t.Point.convert(e.offset)),d=r.pointLocation(p),_=t.LngLat.convert(e.center||d);this._normalizeCenter(_);var f=r.project(d),m=r.project(_).sub(f),g=e.curve,v=Math.max(r.width,r.height),y=v/h,x=m.mag();if(\"minZoom\"in e){var b=t.clamp(Math.min(e.minZoom,a,l),r.minZoom,r.maxZoom),w=v/r.zoomScale(b-a);g=Math.sqrt(w/x*2);}var E=g*g;function T(t){var e=(y*y-v*v+(t?-1:1)*E*E*x*x)/(2*(t?y:v)*E*x);return Math.log(Math.sqrt(e*e+1)-e)}function I(t){return (Math.exp(t)-Math.exp(-t))/2}function C(t){return (Math.exp(t)+Math.exp(-t))/2}var S=T(0),z=function(t){return C(S)/C(S+g*t)},L=function(t){return v*((C(S)*(I(e=S+g*t)/C(e))-I(S))/E)/x;var e;},P=(T(1)-S)/g;if(Math.abs(x)<1e-6||!isFinite(P)){if(Math.abs(v-y)<1e-6)return this.easeTo(e,i);var D=ye.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=n!==c,this._pitching=u!==s,this._prepareEase(i,!1),this._ease(function(e){var h=e*P,d=1/z(h);r.zoom=1===e?l:a+r.scaleZoom(d),o._rotating&&(r.bearing=t.number(n,c,e)),o._pitching&&(r.pitch=t.number(s,u,e));var g=1===e?_:r.unproject(f.add(m.mult(L(h))).mult(d));r.setLocationAtPoint(r.renderWorldCopies?g.wrap():g,p),o._fireMoveEvents(i);},function(){return o._afterEase(i)},e),this},i.prototype.isEasing=function(){return !!this._easeFrameId},i.prototype.stop=function(){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var t=this._onEaseEnd;delete this._onEaseEnd,t.call(this);}return this},i.prototype._ease=function(e,i,o){!1===o.animate||0===o.duration?(e(1),i()):(this._easeStart=t.browser.now(),this._easeOptions=o,this._onEaseFrame=e,this._onEaseEnd=i,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback));},i.prototype._renderFrameCallback=function(){var e=Math.min((t.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop();},i.prototype._normalizeBearing=function(e,i){e=t.wrap(e,-180,180);var o=Math.abs(e-i);return Math.abs(e-360-i)180?-360:i<-180?360:0;}},i}(t.Evented),zo=function(e){void 0===e&&(e={}),this.options=e,t.bindAll([\"_updateEditLink\",\"_updateData\",\"_updateCompact\"],this);};zo.prototype.getDefaultPosition=function(){return \"bottom-right\"},zo.prototype.onAdd=function(t){var e=this.options&&this.options.compact;return this._map=t,this._container=i.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-attrib\"),this._innerContainer=i.create(\"div\",\"mapboxgl-ctrl-attrib-inner\",this._container),e&&this._container.classList.add(\"mapboxgl-compact\"),this._updateAttributions(),this._updateEditLink(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"moveend\",this._updateEditLink),void 0===e&&(this._map.on(\"resize\",this._updateCompact),this._updateCompact()),this._container},zo.prototype.onRemove=function(){i.remove(this._container),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"moveend\",this._updateEditLink),this._map.off(\"resize\",this._updateCompact),this._map=void 0;},zo.prototype._updateEditLink=function(){var e=this._editLink;e||(e=this._editLink=this._container.querySelector(\".mapbox-improve-map\"));var i=[{key:\"owner\",value:this.styleOwner},{key:\"id\",value:this.styleId},{key:\"access_token\",value:t.config.ACCESS_TOKEN}];if(e){var o=i.reduce(function(t,e,o){return e.value&&(t+=e.key+\"=\"+e.value+(o=0)return !1;return !0})).length?(this._innerContainer.innerHTML=t.join(\" | \"),this._container.classList.remove(\"mapboxgl-attrib-empty\")):this._container.classList.add(\"mapboxgl-attrib-empty\"),this._editLink=null;}},zo.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add(\"mapboxgl-compact\"):this._container.classList.remove(\"mapboxgl-compact\");};var Lo=function(){t.bindAll([\"_updateLogo\"],this),t.bindAll([\"_updateCompact\"],this);};Lo.prototype.onAdd=function(t){this._map=t,this._container=i.create(\"div\",\"mapboxgl-ctrl\");var e=i.create(\"a\",\"mapboxgl-ctrl-logo\");return e.target=\"_blank\",e.href=\"https://www.mapbox.com/\",e.setAttribute(\"aria-label\",\"Mapbox logo\"),e.setAttribute(\"rel\",\"noopener\"),this._container.appendChild(e),this._container.style.display=\"none\",this._map.on(\"sourcedata\",this._updateLogo),this._updateLogo(),this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container},Lo.prototype.onRemove=function(){i.remove(this._container),this._map.off(\"sourcedata\",this._updateLogo),this._map.off(\"resize\",this._updateCompact);},Lo.prototype.getDefaultPosition=function(){return \"bottom-left\"},Lo.prototype._updateLogo=function(t){t&&\"metadata\"!==t.sourceDataType||(this._container.style.display=this._logoRequired()?\"block\":\"none\");},Lo.prototype._logoRequired=function(){if(this._map.style){var t=this._map.style.sourceCaches;for(var e in t){if(t[e].getSource().mapbox_logo)return !0}return !1}},Lo.prototype._updateCompact=function(){var t=this._container.children;if(t.length){var e=t[0];this._map.getCanvasContainer().offsetWidth<250?e.classList.add(\"mapboxgl-compact\"):e.classList.remove(\"mapboxgl-compact\");}};var Po=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1;};Po.prototype.add=function(t){var e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e},Po.prototype.remove=function(t){for(var e=this._currentlyRunning,i=0,o=e?this._queue.concat(e):this._queue;ie.maxZoom)throw new Error(\"maxZoom must be greater than minZoom\");var a=new lo(e.minZoom,e.maxZoom,e.renderWorldCopies);o.call(this,a,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossSourceCollisions=e.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new Po,this._controls=[],this._mapId=t.uniqueId();var n=e.transformRequest;if(this._transformRequest=n?function(t,e){return n(t,e)||{url:t}}:function(t){return {url:t}},\"string\"==typeof e.container){if(this._container=t.window.document.getElementById(e.container),!this._container)throw new Error(\"Container '\"+e.container+\"' not found.\")}else{if(!(e.container instanceof Ro))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=e.container;}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),t.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_contextLost\",\"_contextRestored\"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error(\"Failed to initialize WebGL.\");this.on(\"move\",function(){return r._update(!1)}),this.on(\"moveend\",function(){return r._update(!1)}),this.on(\"zoom\",function(){return r._update(!0)}),void 0!==t.window&&(t.window.addEventListener(\"online\",this._onWindowOnline,!1),t.window.addEventListener(\"resize\",this._onWindowResize,!1)),function(t,e){var o=t.getCanvasContainer(),r=null,a=!1,n=null;for(var s in Co)t[s]=new Co[s](t,e),e.interactive&&e[s]&&t[s].enable(e[s]);i.addEventListener(o,\"mouseout\",function(e){t.fire(new ho(\"mouseout\",t,e));}),i.addEventListener(o,\"mousedown\",function(r){a=!0,n=i.mousePos(o,r);var s=new ho(\"mousedown\",t,r);t.fire(s),s.defaultPrevented||(e.interactive&&!t.doubleClickZoom.isActive()&&t.stop(),t.boxZoom.onMouseDown(r),t.boxZoom.isActive()||t.dragPan.isActive()||t.dragRotate.onMouseDown(r),t.boxZoom.isActive()||t.dragRotate.isActive()||t.dragPan.onMouseDown(r));}),i.addEventListener(o,\"mouseup\",function(e){var i=t.dragRotate.isActive();r&&!i&&t.fire(new ho(\"contextmenu\",t,r)),r=null,a=!1,t.fire(new ho(\"mouseup\",t,e));}),i.addEventListener(o,\"mousemove\",function(e){if(!t.dragPan.isActive()&&!t.dragRotate.isActive()){for(var i=e.target;i&&i!==o;)i=i.parentNode;i===o&&t.fire(new ho(\"mousemove\",t,e));}}),i.addEventListener(o,\"mouseover\",function(e){for(var i=e.target;i&&i!==o;)i=i.parentNode;i===o&&t.fire(new ho(\"mouseover\",t,e));}),i.addEventListener(o,\"touchstart\",function(i){var o=new po(\"touchstart\",t,i);t.fire(o),o.defaultPrevented||(e.interactive&&t.stop(),t.boxZoom.isActive()||t.dragRotate.isActive()||t.dragPan.onTouchStart(i),t.touchZoomRotate.onStart(i),t.doubleClickZoom.onTouchStart(o));},{passive:!1}),i.addEventListener(o,\"touchmove\",function(e){t.fire(new po(\"touchmove\",t,e));},{passive:!1}),i.addEventListener(o,\"touchend\",function(e){t.fire(new po(\"touchend\",t,e));}),i.addEventListener(o,\"touchcancel\",function(e){t.fire(new po(\"touchcancel\",t,e));}),i.addEventListener(o,\"click\",function(r){var a=i.mousePos(o,r);(a.equals(n)||a.dist(n)-1&&this._controls.splice(i,1),e.onRemove(this),this},r.prototype.resize=function(e){var i=this._containerDimensions(),o=i[0],r=i[1];return this._resizeCanvas(o,r),this.transform.resize(o,r),this.painter.resize(o,r),this.fire(new t.Event(\"movestart\",e)).fire(new t.Event(\"move\",e)).fire(new t.Event(\"resize\",e)).fire(new t.Event(\"moveend\",e)),this},r.prototype.getBounds=function(){return this.transform.getBounds()},r.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},r.prototype.setMaxBounds=function(e){return this.transform.setMaxBounds(t.LngLatBounds.convert(e)),this._update()},r.prototype.setMinZoom=function(t){if((t=null==t?0:t)>=0&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error(\"maxZoom must be greater than the current minZoom\")},r.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},r.prototype.setRenderWorldCopies=function(t){return this.transform.renderWorldCopies=t,this._update()},r.prototype.getMaxZoom=function(){return this.transform.maxZoom},r.prototype.project=function(e){return this.transform.locationPoint(t.LngLat.convert(e))},r.prototype.unproject=function(e){return this.transform.pointLocation(t.Point.convert(e))},r.prototype.isMoving=function(){return this._moving||this.dragPan.isActive()||this.dragRotate.isActive()||this.scrollZoom.isActive()},r.prototype.isZooming=function(){return this._zooming||this.scrollZoom.isZooming()},r.prototype.isRotating=function(){return this._rotating||this.dragRotate.isActive()},r.prototype.on=function(t,e,i){var r=this;if(void 0===i)return o.prototype.on.call(this,t,e);var a=function(){var o;if(\"mouseenter\"===t||\"mouseover\"===t){var a=!1;return {layer:e,listener:i,delegates:{mousemove:function(o){var n=r.getLayer(e)?r.queryRenderedFeatures(o.point,{layers:[e]}):[];n.length?a||(a=!0,i.call(r,new ho(t,r,o.originalEvent,{features:n}))):a=!1;},mouseout:function(){a=!1;}}}}if(\"mouseleave\"===t||\"mouseout\"===t){var n=!1;return {layer:e,listener:i,delegates:{mousemove:function(o){(r.getLayer(e)?r.queryRenderedFeatures(o.point,{layers:[e]}):[]).length?n=!0:n&&(n=!1,i.call(r,new ho(t,r,o.originalEvent)));},mouseout:function(e){n&&(n=!1,i.call(r,new ho(t,r,e.originalEvent)));}}}}return {layer:e,listener:i,delegates:(o={},o[t]=function(t){var o=r.getLayer(e)?r.queryRenderedFeatures(t.point,{layers:[e]}):[];o.length&&(t.features=o,i.call(r,t),delete t.features);},o)}}();for(var n in this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(a),a.delegates)this.on(n,a.delegates[n]);return this},r.prototype.off=function(t,e,i){if(void 0===i)return o.prototype.off.call(this,t,e);if(this._delegatedListeners&&this._delegatedListeners[t])for(var r=this._delegatedListeners[t],a=0;a180;){var s=o.locationPoint(e);if(s.x>=0&&s.y>=0&&s.x<=o.width&&s.y<=o.height)break;e.lng>o.center.lng?e.lng-=360:e.lng+=360;}return e}Oo.prototype._rotateCompassArrow=function(){var t=\"rotate(\"+this._map.transform.angle*(180/Math.PI)+\"deg)\";this._compassArrow.style.transform=t;},Oo.prototype.onAdd=function(t){return this._map=t,this.options.showCompass&&(this._map.on(\"rotate\",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new vo(t,{button:\"left\",element:this._compass}),i.addEventListener(this._compass,\"mousedown\",this._handler.onMouseDown),this._handler.enable()),this._container},Oo.prototype.onRemove=function(){i.remove(this._container),this.options.showCompass&&(this._map.off(\"rotate\",this._rotateCompassArrow),i.removeEventListener(this._compass,\"mousedown\",this._handler.onMouseDown),this._handler.disable(),delete this._handler),delete this._map;},Oo.prototype._createButton=function(t,e,o){var r=i.create(\"button\",t,this._container);return r.type=\"button\",r.title=e,r.setAttribute(\"aria-label\",e),r.addEventListener(\"click\",o),r};var Uo={center:\"translate(-50%,-50%)\",top:\"translate(-50%,0)\",\"top-left\":\"translate(0,0)\",\"top-right\":\"translate(-100%,0)\",bottom:\"translate(-50%,-100%)\",\"bottom-left\":\"translate(0,-100%)\",\"bottom-right\":\"translate(-100%,-100%)\",left:\"translate(0,-50%)\",right:\"translate(-100%,-50%)\"};function No(t,e,i){var o=t.classList;for(var r in Uo)o.remove(\"mapboxgl-\"+i+\"-anchor-\"+r);o.add(\"mapboxgl-\"+i+\"-anchor-\"+e);}var Zo,jo=function(e){function o(o,r){if(e.call(this),(o instanceof t.window.HTMLElement||r)&&(o=t.extend({element:o},r)),t.bindAll([\"_update\",\"_onMove\",\"_onUp\",\"_addDragHandler\",\"_onMapClick\"],this),this._anchor=o&&o.anchor||\"center\",this._color=o&&o.color||\"#3FB1CE\",this._draggable=o&&o.draggable||!1,this._state=\"inactive\",o&&o.element)this._element=o.element,this._offset=t.Point.convert(o&&o.offset||[0,0]);else{this._defaultMarker=!0,this._element=i.create(\"div\");var a=i.createNS(\"http://www.w3.org/2000/svg\",\"svg\");a.setAttributeNS(null,\"height\",\"41px\"),a.setAttributeNS(null,\"width\",\"27px\"),a.setAttributeNS(null,\"viewBox\",\"0 0 27 41\");var n=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");n.setAttributeNS(null,\"stroke\",\"none\"),n.setAttributeNS(null,\"stroke-width\",\"1\"),n.setAttributeNS(null,\"fill\",\"none\"),n.setAttributeNS(null,\"fill-rule\",\"evenodd\");var s=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");s.setAttributeNS(null,\"fill-rule\",\"nonzero\");var l=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");l.setAttributeNS(null,\"transform\",\"translate(3.0, 29.0)\"),l.setAttributeNS(null,\"fill\",\"#000000\");for(var c=0,u=[{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"9.5\",ry:\"4.77275007\"},{rx:\"8.5\",ry:\"4.29549936\"},{rx:\"7.5\",ry:\"3.81822308\"},{rx:\"6.5\",ry:\"3.34094679\"},{rx:\"5.5\",ry:\"2.86367051\"},{rx:\"4.5\",ry:\"2.38636864\"}];c5280)Ho(e,c,p/5280,\"mi\");else Ho(e,c,p,\"ft\");}else if(i&&\"nautical\"===i.unit){Ho(e,c,h/1852,\"nm\");}else Ho(e,c,h,\"m\");}function Ho(t,e,i,o){var r,a,n,s=(r=i,a=Math.pow(10,(\"\"+Math.floor(r)).length-1),n=(n=r/a)>=10?10:n>=5?5:n>=3?3:n>=2?2:n>=1?1:function(t){var e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(n),a*n),l=s/i;\"m\"===o&&s>=1e3&&(s/=1e3,o=\"km\"),t.style.width=e*l+\"px\",t.innerHTML=s+o;}Wo.prototype.getDefaultPosition=function(){return \"bottom-left\"},Wo.prototype._onMove=function(){Xo(this._map,this._container,this.options);},Wo.prototype.onAdd=function(t){return this._map=t,this._container=i.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-scale\",t.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container},Wo.prototype.onRemove=function(){i.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0;},Wo.prototype.setUnit=function(t){this.options.unit=t,Xo(this._map,this._container,this.options);};var Ko=function(e){this._fullscreen=!1,e&&e.container&&(e.container instanceof t.window.HTMLElement?this._container=e.container:t.warnOnce(\"Full screen control 'container' must be a DOM element.\")),t.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in t.window.document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in t.window.document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in t.window.document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in t.window.document&&(this._fullscreenchange=\"MSFullscreenChange\"),this._className=\"mapboxgl-ctrl\";};Ko.prototype.onAdd=function(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=i.create(\"div\",this._className+\" mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display=\"none\",t.warnOnce(\"This device does not support fullscreen mode.\")),this._controlContainer},Ko.prototype.onRemove=function(){i.remove(this._controlContainer),this._map=null,t.window.document.removeEventListener(this._fullscreenchange,this._changeIcon);},Ko.prototype._checkFullscreenSupport=function(){return !!(t.window.document.fullscreenEnabled||t.window.document.mozFullScreenEnabled||t.window.document.msFullscreenEnabled||t.window.document.webkitFullscreenEnabled)},Ko.prototype._setupUI=function(){var e=this._fullscreenButton=i.create(\"button\",this._className+\"-icon \"+this._className+\"-fullscreen\",this._controlContainer);e.setAttribute(\"aria-label\",\"Toggle fullscreen\"),e.type=\"button\",this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),t.window.document.addEventListener(this._fullscreenchange,this._changeIcon);},Ko.prototype._isFullscreen=function(){return this._fullscreen},Ko.prototype._changeIcon=function(){(t.window.document.fullscreenElement||t.window.document.mozFullScreenElement||t.window.document.webkitFullscreenElement||t.window.document.msFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(this._className+\"-shrink\"),this._fullscreenButton.classList.toggle(this._className+\"-fullscreen\"));},Ko.prototype._onClickFullscreen=function(){this._isFullscreen()?t.window.document.exitFullscreen?t.window.document.exitFullscreen():t.window.document.mozCancelFullScreen?t.window.document.mozCancelFullScreen():t.window.document.msExitFullscreen?t.window.document.msExitFullscreen():t.window.document.webkitCancelFullScreen&&t.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen();};var Yo={closeButton:!0,closeOnClick:!0,className:\"\"},Jo=function(e){function o(i){e.call(this),this.options=t.extend(Object.create(Yo),i),t.bindAll([\"_update\",\"_onClickClose\",\"remove\"],this);}return e&&(o.__proto__=e),o.prototype=Object.create(e&&e.prototype),o.prototype.constructor=o,o.prototype.addTo=function(e){return this._map=e,this._map.on(\"move\",this._update),this.options.closeOnClick&&this._map.on(\"click\",this._onClickClose),this._map.on(\"remove\",this.remove),this._update(),this.fire(new t.Event(\"open\")),this},o.prototype.isOpen=function(){return !!this._map},o.prototype.remove=function(){return this._content&&i.remove(this._content),this._container&&(i.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"click\",this._onClickClose),this._map.off(\"remove\",this.remove),delete this._map),this.fire(new t.Event(\"close\")),this},o.prototype.getLngLat=function(){return this._lngLat},o.prototype.setLngLat=function(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._update(),this},o.prototype.setText=function(e){return this.setDOMContent(t.window.document.createTextNode(e))},o.prototype.setHTML=function(e){var i,o=t.window.document.createDocumentFragment(),r=t.window.document.createElement(\"body\");for(r.innerHTML=e;i=r.firstChild;)o.appendChild(i);return this.setDOMContent(o)},o.prototype.setDOMContent=function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},o.prototype._createContent=function(){this._content&&i.remove(this._content),this._content=i.create(\"div\",\"mapboxgl-popup-content\",this._container),this.options.closeButton&&(this._closeButton=i.create(\"button\",\"mapboxgl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"×\",this._closeButton.addEventListener(\"click\",this._onClickClose));},o.prototype._update=function(){var e=this;if(this._map&&this._lngLat&&this._content){this._container||(this._container=i.create(\"div\",\"mapboxgl-popup\",this._map.getContainer()),this._tip=i.create(\"div\",\"mapboxgl-popup-tip\",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(\" \").forEach(function(t){return e._container.classList.add(t)})),this._map.transform.renderWorldCopies&&(this._lngLat=Fo(this._lngLat,this._pos,this._map.transform));var o=this._pos=this._map.project(this._lngLat),r=this.options.anchor,a=function e(i){if(i){if(\"number\"==typeof i){var o=Math.round(Math.sqrt(.5*Math.pow(i,2)));return {center:new t.Point(0,0),top:new t.Point(0,i),\"top-left\":new t.Point(o,o),\"top-right\":new t.Point(-o,o),bottom:new t.Point(0,-i),\"bottom-left\":new t.Point(o,-o),\"bottom-right\":new t.Point(-o,-o),left:new t.Point(i,0),right:new t.Point(-i,0)}}if(i instanceof t.Point||Array.isArray(i)){var r=t.Point.convert(i);return {center:r,top:r,\"top-left\":r,\"top-right\":r,bottom:r,\"bottom-left\":r,\"bottom-right\":r,left:r,right:r}}return {center:t.Point.convert(i.center||[0,0]),top:t.Point.convert(i.top||[0,0]),\"top-left\":t.Point.convert(i[\"top-left\"]||[0,0]),\"top-right\":t.Point.convert(i[\"top-right\"]||[0,0]),bottom:t.Point.convert(i.bottom||[0,0]),\"bottom-left\":t.Point.convert(i[\"bottom-left\"]||[0,0]),\"bottom-right\":t.Point.convert(i[\"bottom-right\"]||[0,0]),left:t.Point.convert(i.left||[0,0]),right:t.Point.convert(i.right||[0,0])}}return e(new t.Point(0,0))}(this.options.offset);if(!r){var n,s=this._container.offsetWidth,l=this._container.offsetHeight;n=o.y+a.bottom.ythis._map.transform.height-l?[\"bottom\"]:[],o.xthis._map.transform.width-s/2&&n.push(\"right\"),r=0===n.length?\"bottom\":n.join(\"-\");}var c=o.add(a[r]).round();i.setTransform(this._container,Uo[r]+\" translate(\"+c.x+\"px,\"+c.y+\"px)\"),No(this._container,r,\"popup\");}},o.prototype._onClickClose=function(){this.remove();},o}(t.Evented);var Qo={version:t.version,supported:e,setRTLTextPlugin:t.setRTLTextPlugin,Map:Ao,NavigationControl:Oo,GeolocateControl:qo,AttributionControl:zo,ScaleControl:Wo,FullscreenControl:Ko,Popup:Jo,Marker:jo,Style:Me,LngLat:t.LngLat,LngLatBounds:t.LngLatBounds,Point:t.Point,MercatorCoordinate:t.MercatorCoordinate,Evented:t.Evented,config:t.config,get accessToken(){return t.config.ACCESS_TOKEN},set accessToken(e){t.config.ACCESS_TOKEN=e;},get baseApiUrl(){return t.config.API_URL},set baseApiUrl(e){t.config.API_URL=e;},get workerCount(){return Pt.workerCount},set workerCount(t){Pt.workerCount=t;},get maxParallelImageRequests(){return t.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(e){t.config.MAX_PARALLEL_IMAGE_REQUESTS=e;},workerUrl:\"\"};return Qo});\n\n//\n\nreturn mapboxgl;\n\n}));\n//# sourceMappingURL=mapbox-gl.js.map\n\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"(function(){var Module={TOTAL_MEMORY:8*1024*1024,TOTAL_STACK:2*1024*1024,preRun:[],postRun:[],print:function(text){console.log(text)},printErr:function(text){text=Array.prototype.slice.call(arguments).join(\\\" \\\");if(text.indexOf(\\\"pre-main prep time\\\")>=0){return}console.error(text)}};var b;b||(b=eval(\\\"(function() { try { return Module || {} } catch(e) { return {} } })()\\\"));var g={},k;for(k in b)b.hasOwnProperty(k)&&(g[k]=b[k]);var n=!1,p=!1,r=!1,u=!1;if(b.ENVIRONMENT)if(\\\"WEB\\\"===b.ENVIRONMENT)n=!0;else if(\\\"WORKER\\\"===b.ENVIRONMENT)p=!0;else if(\\\"NODE\\\"===b.ENVIRONMENT)r=!0;else if(\\\"SHELL\\\"===b.ENVIRONMENT)u=!0;else throw Error(\\\"The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.\\\");else n=\\\"object\\\"===typeof window,p=\\\"function\\\"===typeof importScripts,r=\\\"object\\\"===typeof process&&\\\"function\\\"===typeof require&&!n&&!p,u=!n&&!r&&!p;if(r){b.print||(b.print=console.log);b.printErr||(b.printErr=console.warn);var v,x;b.read=function(a,c){v||(v=require(\\\"fs\\\"));x||(x=require(\\\"path\\\"));a=x.normalize(a);var d=v.readFileSync(a);return c?d:d.toString()};b.readBinary=function(a){a=b.read(a,!0);a.buffer||(a=new Uint8Array(a));return a};b.load=function(a){aa(read(a))};b.thisProgram||(b.thisProgram=1 0) var gc = undefined\\\");else if(n||p)b.read=function(a){var c=new XMLHttpRequest;c.open(\\\"GET\\\",a,!1);c.send(null);return c.responseText},p&&(b.readBinary=function(a){var c=new XMLHttpRequest;c.open(\\\"GET\\\",a,!1);c.responseType=\\\"arraybuffer\\\";c.send(null);return c.response}),b.readAsync=function(a,c,d){var e=new XMLHttpRequest;e.open(\\\"GET\\\",a,!0);e.responseType=\\\"arraybuffer\\\";e.onload=function(){200==e.status||0==e.status&&e.response?c(e.response):d()};e.onerror=d;e.send(null)},\\\"undefined\\\"!=typeof arguments&&(b.arguments=arguments),\\\"undefined\\\"!==typeof console?(b.print||(b.print=function(a){console.log(a)}),b.printErr||(b.printErr=function(a){console.warn(a)})):b.print||(b.print=function(){}),p&&(b.load=importScripts),\\\"undefined\\\"===typeof b.setWindowTitle&&(b.setWindowTitle=function(a){document.title=a});else throw\\\"Unknown runtime environment. Where are we?\\\";function aa(a){eval.call(null,a)}!b.load&&b.read&&(b.load=function(a){aa(b.read(a))});b.print||(b.print=function(){});b.printErr||(b.printErr=b.print);b.arguments||(b.arguments=[]);b.thisProgram||(b.thisProgram=\\\"./this.program\\\");b.quit||(b.quit=function(a,c){throw c});b.print=b.print;b.e=b.printErr;b.preRun=[];b.postRun=[];for(k in g)g.hasOwnProperty(k)&&(b[k]=g[k]);var g=void 0,A={b:function(a){return tempRet0=a},w:function(){return tempRet0},m:function(){return z},g:function(a){z=a},p:function(a){switch(a){case\\\"i1\\\":case\\\"i8\\\":return 1;case\\\"i16\\\":return 2;case\\\"i32\\\":return 4;case\\\"i64\\\":return 8;case\\\"float\\\":return 4;case\\\"double\\\":return 8;default:return\\\"*\\\"===a[a.length-1]?A.h:\\\"i\\\"===a[0]?(a=parseInt(a.substr(1)),assert_em(0===a%8),a/8):0}},v:function(a){return Math.max(A.p(a),A.h)},B:16,Q:function(a,c){\\\"double\\\"===c||\\\"i64\\\"===c?a&7&&(assert_em(4===(a&7)),a+=4):assert_em(0===(a&3));return a},K:function(a,c,d){return d||\\\"i64\\\"!=a&&\\\"double\\\"!=a?a?Math.min(c||(a?A.v(a):0),A.h):Math.min(c,8):8},j:function(a,c,d){return d&&d.length?b[\\\"dynCall_\\\"+a].apply(null,[c].concat(d)):b[\\\"dynCall_\\\"+a].call(null,c)},d:[],r:function(a){for(var c=0;c>2];a=(c+a+15|0)&-16;C[E>>2]=a;return a>=F&&!ba()?(C[E>>2]=c,0):c},o:function(a,c){return Math.ceil(a/(c?c:16))*(c?c:16)},P:function(a,c,d){return d?+(a>>>0)+4294967296*+(c>>>0):+(a>>>0)+4294967296*+(c|0)},a:8,h:4,C:0};A.addFunction=A.r;A.removeFunction=A.A;var G=0;function assert_em(a,c){a||H(\\\"Assertion failed: \\\"+c)}function ca(a){var c=b[\\\"_\\\"+a];if(!c)try{c=eval(\\\"_\\\"+a)}catch(d){}return c}var da;(function(){var a={stackSave:function(){A.m()},stackRestore:function(){A.g()},arrayToC:function(a){var c=A.f(a.length);I.set(a,c);return c},stringToC:function(a){var c=0;if(null!==a&&void 0!==a&&0!==a){var f=(a.length<<2)+1,c=A.f(f);J(a,K,c,f)}return c}},c={string:a.stringToC,array:a.arrayToC};da=function(a,e,f,h,l){a=ca(a);var m=[],t=0;if(h)for(var w=0;w>0];case\\\"i8\\\":return I[a>>0];case\\\"i16\\\":return L[a>>1];case\\\"i32\\\":return C[a>>2];case\\\"i64\\\":return C[a>>2];case\\\"float\\\":return M[a>>2];case\\\"double\\\":return N[a>>3];default:H(\\\"invalid type for setValue: \\\"+c)}return null}function O(a,c,d,e){var f,h;\\\"number\\\"===typeof a?(f=!0,h=a):(f=!1,h=a.length);var l=\\\"string\\\"===typeof c?c:null,m;4==d?m=e:m=[\\\"function\\\"===typeof P?P:A.q,A.f,A.q,A.u][void 0===d?2:d](Math.max(h,l?1:c.length));if(f){e=m;for(a=m+(h&-4);e>2]=0;for(a=m+h;e>0]=0;return m}if(\\\"i8\\\"===l)return a.subarray||a.slice?K.set(a,m):K.set(new Uint8Array(a),m),m;e=0;for(var t,w;e>0]=q;break;case\\\"i8\\\":I[f>>0]=q;break;case\\\"i16\\\":L[f>>1]=q;break;case\\\"i32\\\":C[f>>2]=q;break;case\\\"i64\\\":tempI64=[q>>>0,(tempDouble=q,1<=+ga(tempDouble)?0>>0:~~+ja((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)];C[f>>2]=tempI64[0];C[f+4>>2]=tempI64[1];break;case\\\"float\\\":M[f>>2]=q;break;case\\\"double\\\":N[f>>3]=q;break;default:H(\\\"invalid type for setValue: \\\"+D)}w!==d&&(t=A.p(d),w=d);e+=t}}return m}function ea(a){var c;if(0===c||!a)return\\\"\\\";for(var d=0,e,f=0;;){e=K[a+f>>0];d|=e;if(0==e&&!c)break;f++;if(c&&f==c)break}c||(c=f);e=\\\"\\\";if(128>d){for(;0=h&&(h=65536+((h&1023)<<10)|a.charCodeAt(++f)&1023);if(127>=h){if(d>=e)break;c[d++]=h}else{if(2047>=h){if(d+1>=e)break;c[d++]=192|h>>6}else{if(65535>=h){if(d+2>=e)break;c[d++]=224|h>>12}else{if(2097151>=h){if(d+3>=e)break;c[d++]=240|h>>18}else{if(67108863>=h){if(d+4>=e)break;c[d++]=248|h>>24}else{if(d+5>=e)break;c[d++]=252|h>>30;c[d++]=128|h>>24&63}c[d++]=128|h>>18&63}c[d++]=128|h>>12&63}c[d++]=128|h>>6&63}c[d++]=128|h&63}}c[d]=0}}function ka(a){for(var c=0,d=0;d=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++c:c=2047>=e?c+2:65535>=e?c+3:2097151>=e?c+4:67108863>=e?c+5:c+6}return c}var la=\\\"undefined\\\"!==typeof TextDecoder?new TextDecoder(\\\"utf-16le\\\"):void 0;b.UTF16ToString=function(a){var c;for(c=a>>1;L[c];)++c;c<<=1;if(32>1];if(0==e)return d;++c;d+=String.fromCharCode(e)}};b.stringToUTF16=function(a,c,d){void 0===d&&(d=2147483647);if(2>d)return 0;d-=2;var e=c;d=d<2*a.length?d/2:a.length;for(var f=0;f>1]=a.charCodeAt(f),c+=2;L[c>>1]=0;return c-e};function ma(a){return a.replace(/__Z[\\\\w\\\\d_]+/g,function(a){var d;a:{var e=b.___cxa_demangle||b.__cxa_demangle;if(e)try{var f=a.substr(1),h=ka(f)+1,l=P(h);J(f,K,l,h);var m=P(4),t=e(l,0,0,m);if(0===fa(m)&&t){d=ea(t);break a}}catch(w){}finally{l&&Q(l),m&&Q(m),t&&Q(t)}else A.c(\\\"warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling\\\");d=a}return a===d?a:a+\\\" [\\\"+d+\\\"]\\\"})}function na(){var a;a:{a=Error();if(!a.stack){try{throw Error(0)}catch(c){a=c}if(!a.stack){a=\\\"(no stack trace available)\\\";break a}}a=a.stack.toString()}b.extraStackTrace&&(a+=\\\"\\\\n\\\"+b.extraStackTrace());return ma(a)}var oa=65536,pa=16777216,qa=16777216;function ra(a,c){0>2]>c)return!1;for(F=Math.max(F,qa);F>2];)536870912>=F?F=ra(2*F,a):F=Math.min(ra((3*F+2147483648)/4,a),c);a=b.reallocBuffer(F);if(!a||a.byteLength!=F)return!1;b.buffer=buffer=a;ua();return!0}var V;try{V=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,\\\"byteLength\\\").get),V(new ArrayBuffer(4))}catch(wa){V=function(a){return a.byteLength}}var xa=b.TOTAL_STACK||5242880,F=b.TOTAL_MEMORY||16777216;F>>16)*e+d*(c>>>16)<<16)|0});Math.O=Math.imul;Math.clz32||(Math.clz32=function(a){a=a>>>0;for(var c=0;32>c;c++)if(a&1<<31-c)return c;return 32});Math.H=Math.clz32;Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)});Math.trunc=Math.trunc;var ga=Math.abs,ja=Math.ceil,ia=Math.floor,ha=Math.min;b.preloadedImages={};b.preloadedAudios={};R=A.a;B=R+69472;za.push()\\n;O([20,3,0,0,159,12,1,0,24,0,0,0,0,0,0,0,20,3,0,0,76,12,1,0,40,0,0,0,0,0,0,0,236,2,0,0,109,12,1,0,20,3,0,0,122,12,1,0,8,0,0,0,0,0,0,0,20,3,0,0,229,12,1,0,24,0,0,0,0,0,0,0,20,3,0,0,193,12,1,0,64,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,89,7,1,0,20,7,1,0,76,7,1,0,83,7,1,0,200,5,1,0,176,6,1,0,195,5,1,0,232,6,1,0,236,6,1,0,20,7,1,0,76,7,1,0,83,7,1,0,107,5,1,0,176,6,1,0,195,5,1,0,232,6,1,0,80,6,1,0,128,6,1,0,195,5,1,0,195,5,1,0,248,5,1,0,40,6,1,0,195,5,1,0,195,5,1,0,200,5,1,0,147,5,1,0,195,5,1,0,195,5,1,0,107,5,1,0,147,5,1,0,195,5,1,0,195,5,1,0,0,16,0,0,0,128,0,0,0,8,0,0,0,64,0,0,0,0,0,0,72,1,0,0,136,1,0,0,124,9,1,0,28,12,1,0,106,169,0,0,186,196,0,0,0,0,0,0,168,13,0,0,140,31,0,0,160,1,40,14,0,0,0,0,0,0,0,0,0,0,17,0,48,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,16,0,0,0,240,93,0,0,120,90,0,0,26,0,0,0,32,6,0,0,192,8,0,0,192,10,1,0,240,10,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,2,88,0,171,0,32,0,187,0,0,0,21,34,160,2,67,34,32,1,152,34,128,2,166,34,192,2,168,34,0,3,169,34,224,2,171,34,32,3,205,34,96,0,242,34,224,1,243,34,0,2,244,34,32,2,246,34,64,2,247,34,96,2,250,34,64,1,251,34,96,1,252,34,128,1,253,34,160,1,254,34,192,1,184,41,128,0,245,41,64,0,222,42,160,0,227,42,224,0,228,42,192,0,229,42,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,13,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,48,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,113,6,113,6,123,6,123,6,123,6,123,6,126,6,126,6,126,6,126,6,0,0,0,0,0,0,0,0,122,6,122,6,122,6,122,6,0,0,0,0,0,0,0,0,121,6,121,6,121,6,121,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,6,134,6,134,6,134,6,0,0,0,0,0,0,0,0,141,6,141,6,140,6,140,6,142,6,142,6,136,6,136,6,152,6,152,6,145,6,145,6,169,6,169,6,169,6,169,6,175,6,175,6,175,6,175,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,6,186,6,187,6,187,6,187,6,187,6,192,6,192,6,193,6,193,6,193,6,193,6,190,6,190,6,190,6,190,6,210,6,210,6,211,6,211,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,6,199,6,198,6,198,6,200,6,200,6,0,0,203,6,203,6,197,6,197,6,201,6,201,6,208,6,208,6,208,6,208,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,6,204,6,204,6,204,6,75,6,75,6,76,6,76,6,77,6,77,6,78,6,78,6,79,6,79,6,80,6,80,6,81,6,81,6,82,6,82,6,33,6,34,6,34,6,35,6,35,6,36,6,36,6,37,6,37,6,38,6,38,6,38,6,38,6,39,6,39,6,40,6,40,6,40,6,40,6,41,6,41,6,42,6,42,6,42,6,42,6,43,6,43,6,43,6,43,6,44,6,44,6,44,6,44,6,45,6,45,6,45,6,45,6,46,6,46,6,46,6,46,6,47,6,47,6,48,6,48,6,49,6,49,6,50,6,50,6,51,6,51,6,51,6,51,6,52,6,52,6,52,6,52,6,53,6,53,6,53,6,53,6,54,6,54,6,54,6,54,6,55,6,55,6,55,6,55,6,56,6,56,6,56,6,56,6,57,6,57,6,57,6,57,6,58,6,58,6,58,6,58,6,65,6,65,6,65,6,65,6,66,6,66,6,66,6,66,6,67,6,67,6,67,6,67,6,68,6,68,6,68,6,68,6,69,6,69,6,69,6,69,6,70,6,70,6,70,6,70,6,71,6,71,6,71,6,71,6,72,6,72,6,73,6,73,6,74,6,74,6,74,6,74,6,92,6,92,6,93,6,93,6,94,6,94,6,95,6,95,6,33,17,33,19,1,21,33,23,3,25,33,29,3,31,1,35,3,37,3,41,3,45,3,49,3,53,1,57,1,59,1,61,1,63,3,65,3,69,3,73,3,77,3,81,3,85,3,89,3,93,0,0,0,0,0,0,0,0,0,0,3,0,3,97,3,101,3,105,19,109,3,113,3,117,3,121,1,125,1,127,3,129,4,1,132,1,132,1,132,1,132,1,132,1,68,3,4,1,4,7,4,8,4,8,4,1,0,0,0,0,0,0,0,0,0,0,1,133,1,135,1,137,1,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,9,0,33,0,33,0,0,0,33,0,1,0,1,0,3,0,11,22,11,14,11,2,3,0,3,0,11,6,3,0,3,0,3,0,3,0,3,0,3,0,3,0,11,42,3,0,9,56,1,0,1,0,1,0,9,52,9,50,9,54,1,0,1,0,9,60,1,0,1,0,1,0,1,0,1,0,1,0,9,58,1,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,11,62,3,0,3,0,3,0,3,0,3,0,11,66,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,9,78,11,80,3,0,3,0,11,90,3,0,9,84,11,86,1,0,1,0,1,0,9,144,9,137,9,135,9,139,9,146,1,0,9,142,11,172,1,0,3,0,3,0,11,148,3,0,9,94,9,96,78,4,86,4,94,4,102,4,126,4,134,4,142,4,150,4,158,4,166,4,172,4,180,4,188,4,196,4,204,4,212,4,218,4,226,4,234,4,242,4,245,4,253,4,5,5,13,5,21,5,29,5,25,5,33,5,41,5,49,5,54,5,62,5,70,5,78,5,82,5,90,5,98,5,106,5,114,5,122,5,118,5,126,5,131,5,139,5,145,5,153,5,161,5,169,5,177,5,185,5,193,5,201,5,206,5,214,5,217,5,225,5,233,5,241,5,247,5,255,5,254,5,6,6,14,6,22,6,38,6,30,6,46,6,110,4,110,4,62,6,70,6,54,6,86,6,88,6,96,6,78,6,112,6,118,6,126,6,104,6,142,6,148,6,156,6,134,6,172,6,178,6,186,6,164,6,202,6,208,6,216,6,194,6,232,6,240,6,248,6,224,6,8,7,14,7,22,7,0,7,38,7,44,7,52,7,30,7,68,7,73,7,81,7,60,7,97,7,104,7,112,7,89,7,250,5,120,7,128,7,110,4,136,7,144,7,152,7,110,4,160,7,168,7,176,7,181,7,189,7,196,7,204,7,110,4,185,5,212,7,220,7,228,7,236,7,70,5,252,7,244,7,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,2,8,185,5,10,8,0,8,18,8,185,5,14,8,185,5,24,8,32,8,40,8,70,5,70,5,48,8,56,8,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,61,8,69,8,185,5,185,5,77,8,85,8,93,8,101,8,109,8,185,5,117,8,125,8,133,8,149,8,185,5,157,8,159,8,167,8,141,8,185,5,170,8,190,8,178,8,186,8,198,8,185,5,206,8,212,8,220,8,228,8,185,5,244,8,252,8,4,9,236,8,110,4,110,4,20,9,23,9,31,9,12,9,47,9,39,9,185,5,54,9,185,5,69,9,62,9,77,9,85,9,110,4,93,9,101,9,238,4,109,9,112,9,118,9,125,9,112,9,21,5,133,9,158,4,158,4,158,4,158,4,141,9,158,4,158,4,158,4,157,9,165,9,173,9,181,9,189,9,193,9,201,9,149,9,225,9,233,9,209,9,217,9,241,9,249,9,1,10,9,10,33,10,17,10,25,10,41,10,49,10,64,10,69,10,56,10,77,10,77,10,77,10,77,10,77,10,77,10,77,10,77,10,85,10,93,10,220,8,96,10,104,10,111,10,116,10,124,10,220,8,130,10,129,10,146,10,149,10,220,8,220,8,138,10,220,8,220,8,220,8,220,8,220,8,164,10,172,10,156,10,220,8,220,8,220,8,177,10,220,8,220,8,220,8,220,8,220,8,220,8,220,8,183,10,191,10,220,8,199,10,206,10,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,77,10,77,10,77,10,77,10,214,10,77,10,221,10,228,10,77,10,77,10,77,10,77,10,77,10,77,10,77,10,77,10,220,8,236,10,243,10,247,10,253,10,3,11,11,11,16,11,70,5,32,11,24,11,40,11,158,4,158,4,158,4,48,11,238,4,56,11,185,5,62,11,78,11,70,11,70,11,21,5,86,11,94,11,102,11,110,4,110,11,220,8,220,8,117,11,220,8,220,8,220,8,220,8,220,8,220,8,125,11,131,11,147,11,139,11,250,5,185,5,155,11,56,8,185,5,163,11,171,11,176,11,185,5,185,5,181,11,165,5,220,8,188,11,196,11,204,11,210,11,220,8,204,11,218,11,220,8,196,11,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,226,11,185,5,185,5,185,5,234,11,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,240,11,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,245,11,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,170,8,220,8,220,8,253,11,185,5,0,12,185,5,8,12,14,12,22,12,30,12,35,12,185,5,185,5,39,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,46,12,185,5,53,12,59,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,67,12,185,5,185,5,185,5,75,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,77,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,84,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,91,12,185,5,185,5,185,5,98,12,106,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,111,12,185,5,185,5,119,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,123,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,126,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,129,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,135,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,143,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,148,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,153,12,185,5,185,5,185,5,158,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,166,12,173,12,177,12,185,5,185,5,185,5,184,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,170,8,110,4,198,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,190,12,220,8,206,12,77,9,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,211,12,219,12,158,4,235,12,227,12,185,5,185,5,243,12,251,12,11,13,158,4,16,13,24,13,30,13,110,4,3,13,38,13,46,13,185,5,54,13,70,13,73,13,62,13,81,13,14,6,89,13,96,13,104,13,86,6,120,13,112,13,128,13,185,5,136,13,144,13,152,13,185,5,160,13,168,13,176,13,184,13,192,13,196,13,204,13,238,4,238,4,185,5,212,13,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,220,13,227,13,158,8,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,185,5,185,5,185,5,251,13,185,5,185,12,2,14,7,14,185,5,185,5,185,5,15,14,185,5,185,5,169,8,110,4,37,14,21,14,29,14,185,5,185,5,45,14,53,14,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,58,14,66,14,185,5,70,14,185,5,76,14,80,14,88,14,96,14,103,14,111,14,185,5,185,5,185,5,117,14,141,14,94,4,149,14,157,14,162,14,190,8,125,14,133,14,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,184,17,184,17,248,17,56,18,120,18,176,18,240,18,48,19,104,19,168,19,212,19,20,20,84,20,100,20,164,20,216,20,24,21,72,21,136,21,200,21,216,21,12,22,68,22,132,22,196,22,4,23,56,23,100,23,164,23,220,23,248,23,56,24,128,10,192,10,0,11,59,11,123,11,64,10,187,11,64,10,221,11,64,10,64,10,64,10,64,10,29,12,219,1,219,1,93,12,157,12,64,10,64,10,64,10,64,10,221,12,253,12,64,10,64,10,61,13,125,13,189,13,253,13,61,14,125,14,189,14,244,14,219,1,219,1,24,15,76,15,219,1,116,15,219,1,219,1,219,1,219,1,161,15,219,1,219,1,219,1,219,1,219,1,219,1,219,1,181,15,219,1,237,15,45,16,219,1,56,16,64,10,64,10,64,10,64,10,64,10,120,16,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,184,16,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,248,16,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,248,16,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,170,14,177,14,185,14,110,4,185,5,185,5,185,5,165,5,201,14,193,14,224,14,209,14,216,14,232,14,106,11,240,14,110,4,110,4,110,4,110,4,104,13,185,5,248,14,0,15,185,5,8,15,16,15,20,15,28,15,185,5,36,15,110,4,70,5,80,5,44,15,185,5,48,15,56,15,72,15,64,15,185,5,80,15,185,5,87,15,110,4,110,4,110,4,110,4,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,78,11,170,8,76,14,110,4,110,4,110,4,110,4,103,15,95,15,106,15,114,15,190,8,122,15,110,4,130,15,138,15,146,15,110,4,110,4,185,5,162,15,170,15,154,15,186,15,193,15,178,15,201,15,209,15,110,4,225,15,217,15,185,5,228,15,236,15,244,15,252,15,4,16,110,4,110,4,185,5,185,5,12,16,110,4,70,5,20,16,238,4,28,16,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,36,16,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,52,16,239,5,60,16,44,16,47,9,68,16,76,16,82,16,106,16,90,16,98,16,110,16,47,9,126,16,118,16,134,16,150,16,142,16,110,4,110,4,157,16,165,16,17,6,173,16,189,16,178,6,197,16,181,16,110,4,110,4,110,4,110,4,185,5,205,16,213,16,110,4,185,5,221,16,229,16,110,4,110,4,110,4,110,4,110,4,185,5,237,16,245,16,110,4,185,5,253,16,5,17,13,17,185,5,29,17,21,17,110,4,45,17,37,17,110,4,110,4,110,4,110,4,110,4,110,4,70,5,238,4,53,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,61,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,83,17,88,17,69,17,77,17,104,17,96,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,169,8,110,4,110,4,110,4,120,17,128,17,136,17,112,17,185,5,185,5,185,5,185,5,185,5,185,5,144,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,152,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,154,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,61,17,190,8,162,17,110,4,110,4,66,14,170,17,185,5,186,17,194,17,202,17,178,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,185,5,210,17,215,17,223,17,110,4,110,4,231,17,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,239,17,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,247,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,255,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,185,5,185,5,7,18,12,18,20,18,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,220,8,220,8,220,8,220,8,220,8,220,8,220,8,125,11,220,8,28,18,220,8,35,18,43,18,49,18,220,8,55,18,220,8,220,8,63,18,110,4,110,4,110,4,110,4,110,4,220,8,220,8,126,10,71,18,110,4,110,4,110,4,110,4,87,18,94,18,99,18,105,18,113,18,121,18,129,18,91,18,137,18,145,18,153,18,158,18,112,18,87,18,94,18,90,18,105,18,166,18,88,18,169,18,91,18,177,18,185,18,193,18,200,18,180,18,188,18,196,18,203,18,183,18,211,18,79,18,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,21,5,227,18,21,5,234,18,241,18,219,18,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,248,18,0,19,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,185,5,185,5,185,5,185,5,185,5,8,19,110,4,70,5,24,19,16,19,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,40,19,48,19,56,19,64,19,72,19,80,19,110,4,32,19,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,220,8,88,19,220,8,220,8,117,11,93,19,97,19,125,11,105,19,110,19,220,8,88,19,220,8,54,18,110,4,118,19,126,19,130,19,138,19,110,4,110,4,110,4,110,4,110,4,220,8,220,8,220,8,220,8,220,8,220,8,220,8,146,19,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,127,10,154,19,220,8,220,8,220,8,117,11,220,8,220,8,162,19,110,4,88,19,220,8,170,19,220,8,178,19,127,11,110,4,110,4,186,19,194,19,202,19,110,4,126,11,110,4,232,14,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,210,19,185,5,185,5,217,19,185,5,185,5,185,5,225,19,185,5,233,19,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,95,12,185,5,185,5,241,19,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,249,19,1,20,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,158,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,8,20,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,15,20,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,22,20,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,78,11,110,4,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,26,20,185,5,185,5,185,5,185,5,185,5,185,5,48,15,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,255,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,185,5,185,5],\\\"i8\\\",4,A.a)\\n;O([185,5,34,20,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,48,15,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,50,20,42,20,42,20,42,20,110,4,110,4,110,4,110,4,21,5,21,5,21,5,21,5,21,5,21,5,21,5,58,20,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,66,20,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,12,0,23,0,23,0,23,0,25,0,23,0,23,0,23,0,20,0,21,0,23,0,24,0,23,0,19,0,23,0,23,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,23,0,24,0,24,0,24,0,23,0,23,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,20,0,23,0,21,0,26,0,22,0,26,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,20,0,24,0,21,0,24,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,12,0,23,0,25,0,25,0,25,0,25,0,27,0,23,0,26,0,27,0,5,0,28,0,24,0,16,0,27,0,26,0,27,0,24,0,75,3,139,3,26,0,2,0,23,0,23,0,26,0,11,3,5,0,29,0,203,52,75,52,203,60,23,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,24,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,24,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,2,0,1,0,1,0,2,0,1,0,2,0,1,0,1,0,2,0,1,0,1,0,1,0,2,0,2,0,1,0,1,0,1,0,1,0,2,0,1,0,1,0,2,0,1,0,1,0,1,0,2,0,2,0,2,0,1,0,1,0,2,0,1,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,1,0,2,0,1,0,2,0,2,0,1,0,2,0,1,0,1,0,2,0,1,0,1,0,1,0,2,0,1,0,2,0,1,0,1,0,2,0,2,0,5,0,1,0,2,0,2,0,2,0,5,0,5,0,5,0,5,0,1,0,3,0,2,0,1,0,3,0,2,0,1,0,3,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,1,0,3,0,2,0,1,0,2,0,1,0,1,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,2,0,1,0,1,0,2,0,2,0,1,0,2,0,1,0,1,0,1,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,5,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,26,0,26,0,26,0,26,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,4,0,4,0,4,0,4,0,4,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,4,0,26,0,4,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,1,0,2,0,1,0,2,0,4,0,26,0,1,0,2,0,0,0,0,0,4,0,2,0,2,0,2,0,23,0,1,0,0,0,0,0,0,0,0,0,26,0,26,0,1,0,23,0,1,0,1,0,1,0,0,0,1,0,0,0,1,0,1,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,2,0,2,0,1,0,1,0,1,0,2,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,2,0,2,0,2,0,1,0,2,0,24,0,1,0,2,0,1,0,1,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,27,0,6,0,6,0,6,0,6,0,6,0,7,0,7,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,4,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,23,0,19,0,0,0,0,0,27,0,27,0,25,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,19,0,6,0,23,0,6,0,6,0,23,0,6,0,6,0,23,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,0,16,0,16,0,16,0,16,0,24,0,24,0,24,0,23,0,23,0,25,0,23,0,23,0,27,0,27,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,16,0,0,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,23,0,23,0,23,0,5,0,5,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,16,0,27,0,6,0,6,0,6,0,6,0,6,0,6,0,4,0,4,0,6,0,6,0,27,0,6,0,6,0,6,0,6,0,5,0,5,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,5,0,5,0,27,0,27,0,5,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,16,0,5,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,4,0,4,0,27,0,23,0,23,0,23,0,4,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,4,0,6,0,6,0,6,0,4,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,4,0,6,0,6,0,6,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,0,0,0,0,23,0,0,0,6,0,6,0,16,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,5,0,5,0,6,0,6,0,23,0,23,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,8,0,6,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,8,0,8,0,8,0,6,0,8,0,8,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,5,0,25,0,25,0,203,55,203,53,203,63,203,52,203,60,75,9,27,0,25,0,0,0,0,0,0,0,0,0,5,0,6,0,8,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,0,0,0,0,6,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,0,0,0,0,8,0,8,0,0,0,0,0,8,0,8,0,6,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,5,0,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,6,0,6,0,5,0,5,0,5,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,0,0,5,0,5,0,0,0,5,0,5,0,0,0,0,0,6,0,0,0,8,0,8,0,8,0,6,0,6,0,0,0,0,0,0,0,0,0,6,0,6,0,0,0,0,0,6,0,6,0,6,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,0,0,5,0,0,0,5,0,5,0,6,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,6,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,0,0,6,0,6,0,8,0,0,0,8,0,8,0,6,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,6,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,27,0,5,0,203,52,75,52,203,60,203,55,203,53,203,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,8,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,6,0,5,0,8,0,6,0,8,0,6,0,6,0,6,0,6,0,0,0,0,0,8,0,8,0,0,0,0,0,8,0,8,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,8,0,0,0,0,0,0,0,0,0,5,0,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,203,7,75,30,75,120,27,0,27,0,27,0,27,0,27,0,27,0,25,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,5,0,5,0,0,0,5,0,0,0,5,0,5,0,0,0,0,0,0,0,5,0,5,0,0,0,0,0,0,0,5,0,5,0,5,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,8,0,8,0,6,0,8,0,8,0,0,0,0,0,0,0,8,0,8,0,8,0,0,0,8,0,8,0,8,0,6,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,6,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,5,139,5,203,5,11,6,139,5,203,5,11,6,27,0,6,0,8,0,8,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,5,0,6,0,6,0,6,0,8,0,8,0,8,0,8,0,0,0,6,0,6,0,6,0,0,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,0,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,6,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,6,0,8,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,6,0,5,0,8,0,6,0,8,0,8,0,8,0,8,0,8,0,0,0,6,0,8,0,8,0,0,0,8,0,8,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,0,5,0,6,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,203,7,75,30,75,120,203,52,75,52,203,60,203,55,203,53,203,63,27,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,6,0,8,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,0,0,8,0,8,0,8,0,0,0,8,0,8,0,8,0,6,0,5,0,27,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,8,0,11,204,11,202,75,203,11,201,75,54,75,201,11,53,5,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,8,0,8,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,8,0,8,0,8,0,6,0,6,0,6,0,0,0,6,0,0,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,25,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,23,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,0,0,5,0,0,0,0,0,5,0,5,0,0,0,5,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,0,0,5,0,0,0,5,0,0,0,0,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,6,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,6,0,6,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,4,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,5,0,5,0,5,0,5,0,5,0,27,0,27,0,27,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,27,0,23,0,27,0,27,0,27,0,6,0,6,0,27,0,27,0,27,0,27,0,27,0,27,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,75,52,75,60,75,68,75,76,75,84,75,92,75,100,75,108,75,116,75,44,27,0,6,0,27,0,6,0,27,0,6,0,20,0,21,0,20,0,21,0,8,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,23,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,6,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,27,0,27,0,23,0,23,0,23,0,23,0,23,0,27,0,27,0,27,0,27,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,6,0,6,0,6,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,6,0,8,0,8,0,6,0,6,0,5,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,23,0,23,0,23,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,6,0,6,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,5,0,8,0,8,0,8,0,5,0,5,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,8,0,8,0,6,0,6,0,8,0,8,0,8,0,8,0,8,0,8,0,6,0,5,0,8,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,8,0,8,0,8,0,6,0,27,0,27,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,4,0,5,0,5,0,5,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,6,0,6,0,6,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,203,27,75,30,139,120,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,19,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,12,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,20,0,21,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,23,0,23,0,138,9,202,9,10,10,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,0,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,6,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,23,0,23,0,4,0,23,0,23,0,23,0,25,0,5,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,75,5,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,23,0,23,0,23,0,23,0,23,0,19,0,23,0,23,0,23,0,23,0,6,0,6,0,6,0,16,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,8,0,8,0,8,0,8,0,6,0,6,0,8,0,8,0,8,0,0,0,0,0,0,0,0,0,8,0,8,0,6,0,8,0,8,0,8,0,8,0,8,0,8,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,23,0,23,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,11,3,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,8,0,8,0,6,0,0,0,0,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,4,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,7,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,6,0,8,0,6,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,8,0,8,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,6,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,23,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,8,0,8],\\\"i8\\\",4,A.a+10240)\\n;O([8,0,8,0,8,0,6,0,8,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,23,0,23,0,23,0,23,0,23,0,5,0,8,0,6,0,6,0,6,0,6,0,8,0,8,0,6,0,6,0,8,0,6,0,6,0,6,0,5,0,5,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,8,0,6,0,6,0,8,0,8,0,8,0,6,0,8,0,6,0,6,0,6,0,8,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,23,0,23,0,23,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,5,0,5,0,5,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,8,0,6,0,6,0,0,0,0,0,0,0,23,0,23,0,23,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,4,0,4,0,4,0,4,0,4,0,23,0,23,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,23,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,5,0,5,0,5,0,5,0,6,0,5,0,5,0,5,0,5,0,8,0,8,0,6,0,5,0,5,0,0,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,4,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,4,0,4,0,4,0,4,0,4,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,26,0,26,0,26,0,0,0,0,0,2,0,2,0,2,0,0,0,2,0,2,0,1,0,1,0,1,0,1,0,3,0,26,0,26,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,2,0,2,0,2,0,2,0,2,0,0,0,2,0,2,0,1,0,1,0,1,0,1,0,3,0,26,0,2,0,26,0,26,0,26,0,2,0,2,0,2,0,0,0,2,0,2,0,1,0,1,0,1,0,1,0,3,0,26,0,26,0,26,0,2,0,2,0,2,0,2,0,0,0,0,0,2,0,2,0,1,0,1,0,1,0,1,0,0,0,26,0,26,0,26,0,22,0,23,0,23,0,23,0,24,0,20,0,21,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,24,0,23,0,22,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,12,0,16,0,16,0,16,0,16,0,16,0,0,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,203,2,4,0,0,0,0,0,203,3,11,4,75,4,139,4,203,4,11,5,24,0,24,0,24,0,20,0,21,0,4,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,16,0,16,0,16,0,16,0,16,0,19,0,19,0,19,0,19,0,19,0,19,0,23,0,23,0,28,0,29,0,20,0,28,0,28,0,29,0,20,0,28,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,13,0,14,0,16,0,16,0,16,0,16,0,16,0,12,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,28,0,29,0,23,0,23,0,23,0,23,0,22,0,203,2,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,24,0,24,0,24,0,20,0,21,0,0,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,0,0,0,0,0,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,7,0,7,0,7,0,7,0,6,0,7,0,7,0,7,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,1,0,27,0,1,0,27,0,1,0,27,0,1,0,1,0,1,0,1,0,27,0,2,0,1,0,1,0,1,0,1,0,2,0,5,0,5,0,5,0,5,0,2,0,27,0,27,0,2,0,2,0,1,0,1,0,24,0,24,0,24,0,24,0,24,0,1,0,2,0,2,0,2,0,2,0,27,0,24,0,27,0,27,0,2,0,27,0,139,53,11,54,75,54,139,52,139,56,11,53,11,57,11,61,11,65,75,53,75,69,203,53,203,61,203,69,203,77,139,5,27,0,27,0,1,0,27,0,27,0,27,0,27,0,1,0,27,0,27,0,2,0,1,0,1,0,1,0,2,0,2,0,1,0,1,0,1,0,2,0,27,0,1,0,27,0,27,0,24,0,1,0,1,0,1,0,1,0,1,0,27,0,27,0,138,5,202,5,10,6,74,6,138,6,202,6,10,7,74,7,138,7,202,7,10,8,74,8,202,17,74,30,10,152,74,120,138,5,202,5,10,6,74,6,138,6,202,6,10,7,74,7,138,7,202,7,10,8,74,8,202,17,74,30,10,152,74,120,74,120,74,152,138,120,1,0,2,0,202,6,202,17,138,152,202,120,75,5,27,0,27,0,0,0,0,0,0,0,0,0,24,0,24,0,24,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,27,0,27,0,24,0,27,0,27,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,27,0,27,0,24,0,27,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,20,0,21,0,20,0,21,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,20,0,21,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,24,0,24,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,203,2,11,8,75,8,139,8,203,8,11,9,75,9,139,9,203,9,11,10,75,10,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,203,2,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,11,8,75,8,139,8,203,8,11,9,75,9,139,9,203,9,11,10,75,10,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,11,8,75,8,139,8,203,8,11,9,75,9,139,9,203,9,11,10,75,10,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,24,0,24,0,24,0,20,0,21,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,20,0,21,0,20,0,21,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,20,0,21,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,27,0,27,0,24,0,24,0,24,0,24,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,2,0,1,0,1,0,1,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,1,0,1,0,1,0,2,0,1,0,2,0,2,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,4,0,4,0,1,0,1,0,1,0,2,0,1,0,2,0,2,0,27,0,27,0,27,0,27,0,27,0,27,0,1,0,2,0,1,0,2,0,6,0,6,0,6,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,23,0,23,0,23,0,23,0,75,52,23,0,23,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,23,0,28,0,29,0,28,0,29,0,23,0,23,0,23,0,28,0,29,0,23,0,28,0,29,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,19,0,23,0,23,0,19,0,23,0,28,0,29,0,23,0,23,0,28,0,29,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,23,0,23,0,23,0,23,0,23,0,4,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,19,0,19,0,23,0,23,0,23,0,23,0,19,0,23,0,20,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,27,0,138,5,202,5,10,6,74,6,138,6,202,6,10,7,74,7,138,7,6,0,6,0,6,0,6,0,8,0,8,0,19,0,4,0,4,0,4,0,4,0,4,0,27,0,27,0,202,7,74,10,202,12,4,0,5,0,23,0,27,0,27,0,12,0,23,0,23,0,23,0,27,0,4,0,5,0,74,5,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,27,0,27,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,19,0,20,0,21,0,21,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,6,0,6,0,26,0,26,0,4,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,4,0,4,0,4,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,27,0,27,0,139,5,203,5,11,6,75,6,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,203,7,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,27,0,139,10,203,10,11,11,75,11,139,11,203,11,11,12,75,12,139,12,203,12,11,13,75,13,139,13,203,13,11,14,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,75,14,139,14,203,14,11,15,75,15,139,15,203,15,11,16,75,16,139,16,203,16,11,17,75,17,139,17,203,17,5,0,5,0,5,0,5,0,5,0,133,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,5,5,0,5,0,5,7,5,0,5,0,5,0,133,120,5,0,5,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,6,5,0,69,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,121,197,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,120,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,30,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,121,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,122,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,5,5,0,69,7,5,0,197,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,7,5,0,69,120,69,10,197,12,5,0,5,0,5,0,5,0,5,0,5,0,69,15,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,6,5,6,5,6,5,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,7,69,10,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,5,197,5,5,6,5,0,197,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,30,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,120,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,5,5,0,5,0,5,0,5,0,197,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,120,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,6,5,0,5,0,5,0,5,0,5,0,69,30,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,23,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,4,0,4,0,6,0,6,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,5,0,6,0,7,0,7,0,7,0,23,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,138,5,202,5,10,6,74,6,138,6,202,6,10,7,74,7,138,7,74,5,6,0,6,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,4,0,4,0,2,0,5,0,5,0,5,0,5,0,5,0,26,0,26,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,4,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,4,0,26,0,26,0,1,0,2,0,1,0,2,0,5,0,1,0,2,0,1,0,2,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,2,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,6,0,5,0,5,0,5,0,6,0,5,0,5,0,5,0,5,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,6,0,6,0,8,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,203,52,75,52,203,60,203,55,203,53,203,63,27,0,27,0,25,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,0,8,0,8,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,23,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,23,0,23,0,5,0,23,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,8,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,4,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,8,0,8,0,6,0,6,0,6,0,6,0,8,0,8,0,6,0,8,0,8,0,8,0,5,0,5,0,5,0,5,0,5,0,6,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,8,0,6,0,6,0,8,0,8,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,8,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,23,0,23,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,27,0,27,0,27,0,5,0,8,0,6,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,5,0,6,0,6,0,6,0,5,0,5,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,5,0,6,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,4,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,6,0,6,0,8,0,8,0,23,0,23,0,5,0,4,0,4,0,8,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,26,0,4,0,4,0,4,0,4,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,5,0,5,0,5,0,8,0,8,0,6,0,8,0,8,0,6,0,8,0,8,0,23,0,8,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,7,5,0,5,0,5,0,5,0,197,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,6,5,0,197,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,24,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,0,0,5,0,5,0,0,0,5,0,5,0,0,0,5],\\\"i8\\\",4,A.a+20480)\\n;O([5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,5,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,21,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,25,0,27,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,20,0,21,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,19,0,19,0,22,0,22,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,23,0,23,0,20,0,21,0,23,0,23,0,23,0,23,0,22,0,22,0,22,0,23,0,23,0,23,0,0,0,23,0,23,0,23,0,23,0,19,0,20,0,21,0,20,0,21,0,20,0,21,0,23,0,23,0,23,0,24,0,19,0,24,0,24,0,24,0,0,0,23,0,25,0,23,0,23,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,16,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,0,0,0,0,0,0,25,0,25,0,24,0,26,0,27,0,25,0,25,0,0,0,27,0,24,0,24,0,24,0,24,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,0,16,0,27,0,27,0,0,0,0,0,0,0,23,0,23,0,23,0,25,0,23,0,23,0,23,0,20,0,21,0,23,0,24,0,23,0,19,0,23,0,23,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,23,0,24,0,24,0,24,0,23,0,26,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,20,0,24,0,21,0,24,0,20,0,21,0,23,0,20,0,21,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,11,176,11,184,75,120,75,128,75,136,75,144,75,152,75,160,75,168,75,176,75,184,139,120,139,128,139,136,139,144,139,152,139,160,139,168,139,176,139,184,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,203,27,75,30,11,128,11,136,11,144,11,152,11,160,11,168,202,7,202,7,202,7,202,7,202,7,202,12,202,17,202,17,202,17,202,17,74,30,10,136,10,152,10,152,10,152,10,152,10,152,74,120,74,152,138,6,202,17,75,52,75,52,139,56,203,60,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,75,5,203,52,27,0,27,0,27,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,202,52,74,52,138,5,138,6,202,17,10,152,74,152,138,152,138,6,202,7,202,17,74,30,10,152,74,120,74,152,138,6,202,7,202,17,74,30,10,152,74,120,138,120,138,152,202,7,138,5,138,5,138,5,202,5,202,5,202,5,202,5,138,6,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,6,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,203,27,75,30,11,128,11,136,11,144,11,152,11,160,11,168,11,176,11,184,0,0,0,0,0,0,0,0,139,5,139,6,203,7,203,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,202,27,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,10,184,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,23,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,138,5,202,5,202,7,74,10,74,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,0,0,0,0,0,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,23,0,139,5,203,5,11,6,203,7,75,10,75,30,75,120,139,120,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,27,0,27,0,139,5,203,5,11,6,75,6,139,6,203,7,75,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,5,203,5,11,6,75,6,75,6,139,6,203,7,75,10,75,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,139,5,139,6,203,7,75,10,75,30,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,139,5,203,7,75,10,75,30,203,5,11,6,0,0,0,0,0,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,23,0,75,160,75,168,75,176,75,184,139,120,139,128,139,136,139,144,139,152,139,160,139,168,139,176,139,184,203,120,203,128,203,136,203,144,203,152,203,160,203,168,203,176,203,184,203,54,75,53,203,52,139,52,203,70,75,52,203,78,139,56,203,60,75,69,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,203,94,75,52,5,0,5,0,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,203,7,75,10,203,12,75,15,203,17,75,20,203,22,0,0,0,0,75,30,11,128,11,136,11,144,11,152,11,160,11,168,11,176,11,184,75,120,75,128,75,136,75,144,75,152,11,3,75,3,139,3,203,3,203,7,75,10,75,30,75,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,6,0,6,0,6,0,0,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,139,5,203,17,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,139,5,203,7,75,10,5,0,5,0,5,0,5,0,5,0,6,0,6,0,0,0,0,0,0,0,0,0,139,5,139,6,203,7,75,10,75,30,23,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,27,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,139,5,203,5,11,6,75,6,203,7,75,10,75,30,75,120,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,139,5,203,5,11,6,75,6,203,7,75,10,75,30,75,120,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,5,203,5,11,6,75,6,203,7,75,10,75,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,5,139,6,203,7,203,17,75,30,75,120,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,203,27,75,30,11,128,11,136,11,144,11,152,11,160,11,168,11,176,11,184,75,52,203,52,139,52,139,56,0,0,75,20,203,22,75,25,203,27,75,30,75,120,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,8,0,6,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,75,10,203,12,75,15,203,17,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,8,0,8,0,6,0,6,0,23,0,23,0,16,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,23,0,23,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,5,0,5,0,5,0,5,0,23,0,23,0,23,0,23,0,23,0,6,0,6,0,6,0,23,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,23,0,5,0,23,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,0,0,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,203,27,75,30,75,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,8,0,8,0,6,0,8,0,6,0,6,0,23,0,23,0,23,0,23,0,23,0,23,0,6,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,8,0,8,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,8,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,8,0,8,0,8,0,8,0,0,0,0,0,8,0,8,0,0,0,0,0,8,0,8,0,8,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,8,0,6,0,6,0,6,0,8,0,6,0,5,0,5,0,5,0,5,0,23,0,23,0,23,0,23,0,23,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,23,0,0,0,23,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,8,0,8,0,8,0,8,0,6,0,6,0,8,0,6,0,6,0,5,0,5,0,23,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,0,0,0,0,8,0,8,0,8,0,8,0,6,0,6,0,8,0,6,0,6,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,5,0,5,0,5,0,5,0,6,0,6,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,8,0,6,0,8,0,6,0,6,0,23,0,23,0,23,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,8,0,6,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,0,6,0,6,0,6,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,203,7,75,10,23,0,23,0,23,0,27,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,6,0,6,0,6,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,203,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,203,27,75,30,0,0,0,0,0,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,6,0,8,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,202,52,74,53,202,52,202,52,74,52,138,52,138,56,74,15,202,17,74,6,138,6,202,6,10,7,74,7,138,7,0,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,5,10,6,74,6,138,6,202,6,10,7,74,7,138,7,10,6,74,6,138,6,202,6,10,7,74,7,138,7,74,6,138,6,202,6,10,7,74,7,138,7,138,5,202,5,10,6,74,6,138,6,202,6,10,7,74,7,138,7,138,5,202,5,10,6,74,6,138,6,202,5,10,6,10,6,74,6,138,6,202,6,10,7,74,7,138,7,138,5,202,5,10,6,10,6,74,6,138,6,138,192,138,193,138,5,202,5,10,6,10,6,74,6,138,6,10,6,10,6,74,6,74,6,74,6,74,6,202,6,10,7,10,7,10,7,74,7,74,7,138,7,138,7,138,7,138,7,202,5,10,6,74,6,138,6,202,6,138,5,202,5,10,6,74,6,74,6,138,6,138,6,202,5,10,6,138,5,202,5,138,52,138,56,74,69,138,52,138,56,202,53,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,23,0,23,0,23,0,23,0,27,0,27,0,27,0,27,0,4,0,4,0,4,0,4,0,23,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,203,7,75,30,139,120,11,121,139,121,11,122,139,122,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,27,0,6,0,6,0,23,0,16,0,16,0,16,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,8,0,8,0,6,0,6,0,6,0,27,0,27,0,27,0,8,0,8,0,8,0,8,0,8,0,8,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,27,0,27,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,6,0,6,0,6,0,6,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,6,0,6,0,6,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,203,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,2,137,2,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,0,0,2,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,24,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,24,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,24,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,24,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,24,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,2,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,27,0,27,0,27,0,27,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,6,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,6,0,27,0,27,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,6,0,6,0,0,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,23,0,23,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],\\\"i8\\\",4,A.a+30720)\\n;O([2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,0,0,5,0,0,0,0,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,5,0,5,0,0,0,5,0,5,0,0,0,5,0,0,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,5,0,0,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,203,2,203,2,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,75,5,75,5,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,26,0,26,0,26,0,26,0,26,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,5,0,5,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,12,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,15,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,15,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,106,3,114,3,122,3,130,3,154,3,162,3,170,3,178,3,138,3,146,3,138,3,146,3,138,3,146,3,138,3,146,3,138,3,146,3,138,3,146,3,184,3,192,3,200,3,208,3,216,3,224,3,220,3,228,3,236,3,244,3,239,3,247,3,138,3,146,3,138,3,146,3,255,3,7,4,138,3,146,3,138,3,146,3,138,3,146,3,13,4,21,4,29,4,37,4,45,4,53,4,61,4,69,4,75,4,83,4,91,4,99,4,107,4,115,4,121,4,129,4,137,4,145,4,153,4,161,4,173,4,169,4,181,4,31,4,31,4,197,4,205,4,189,4,213,4,215,4,223,4,231,4,239,4,240,4,248,4,0,5,8,5,240,4,16,5,21,5,8,5,240,4,29,5,37,5,239,4,42,5,50,5,231,4,55,5,138,3,63,5,67,5,75,5,76,5,84,5,92,5,239,4,100,5,108,5,231,4,239,4,138,3,248,4,231,4,138,3,138,3,114,5,138,3,138,3,120,5,128,5,138,3,138,3,132,5,140,5,138,3,144,5,151,5,138,3,159,5,167,5,174,5,54,5,138,3,138,3,182,5,190,5,198,5,206,5,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,214,5,138,3,222,5,138,3,138,3,138,3,230,5,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,238,5,138,3,138,3,138,3,246,5,246,5,252,4,252,4,138,3,252,5,4,6,222,5,26,6,12,6,12,6,34,6,41,6,18,6,138,3,138,3,138,3,49,6,57,6,138,3,138,3,138,3,59,6,67,6,75,6,138,3,82,6,90,6,138,3,98,6,138,3,138,3,106,6,109,6,55,5,117,6,1,4,125,6,138,3,132,6,138,3,137,6,138,3,138,3,138,3,138,3,143,6,151,6,138,3,138,3,138,3,138,3,138,3,138,3,216,3,159,6,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,167,6,175,6,179,6,203,6,209,6,187,6,195,6,217,6,225,6,229,6,177,5,237,6,245,6,253,6,138,3,5,7,67,6,67,6,67,6,21,7,29,7,37,7,45,7,50,7,58,7,66,7,13,7,74,7,82,7,138,3,88,7,95,7,67,6,67,6,101,7,67,6,98,5,106,7,67,6,114,7,138,3,138,3,64,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,122,7,67,6,67,6,67,6,67,6,67,6,128,7,67,6,67,6,136,7,144,7,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,67,6,67,6,67,6,67,6,160,7,167,7,175,7,152,7,191,7,199,7,207,7,214,7,222,7,230,7,237,7,183,7,67,6,67,6,67,6,245,7,251,7,1,8,9,8,14,8,138,3,138,3,138,3,138,3,138,3,138,3,138,3,21,8,138,3,138,3,138,3,29,8,138,3,138,3,138,3,216,3,37,8,45,8,52,8,138,3,60,8,67,6,67,6,70,6,67,6,67,6,67,6,67,6,67,6,67,6,67,8,73,8,89,8,81,8,138,3,138,3,97,8,230,5,138,3,177,3,138,3,138,3,138,3,138,3,138,3,138,3,67,6,28,8,191,3,138,3,56,8,105,8,138,3,113,8,14,8,138,3,138,3,138,3,138,3,121,8,138,3,138,3,59,6,176,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,67,6,67,6,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,56,8,67,6,98,5,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,128,8,138,3,138,3,133,8,76,5,138,3,138,3,146,5,67,6,58,6,138,3,138,3,141,8,138,3,138,3,138,3,149,8,156,8,12,6,164,8,138,3,138,3,171,8,179,8,138,3,186,8,193,8,138,3,213,4,198,8,138,3,238,4,138,3,206,8,214,8,240,4,138,3,218,8,239,4,226,8,138,3,138,3,138,3,138,3,138,3,138,3,138,3,233,8,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,253,8,241,8,245,8,137,4,137,4,137,4,137,4,137,4,137,4,137,4,137,4,137,4,137,4,137,4,137,4,137,4,137,4,5,9,137,4,137,4,137,4,137,4,13,9,17,9,25,9,33,9,37,9,45,9,137,4,137,4,137,4,49,9,57,9,122,3,65,9,73,9,138,3,138,3,138,3,81,9,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,40,14,40,14,104,14,168,14,40,14,40,14,40,14,40,14,40,14,40,14,224,14,32,15,96,15,112,15,176,15,188,15,40,14,40,14,252,15,40,14,40,14,40,14,52,16,116,16,180,16,244,16,44,17,108,17,172,17,228,17,36,18,100,18,64,10,128,10,192,10,250,10,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,35,11,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,96,11,160,1,160,1,149,11,213,11,21,12,85,12,149,12,213,12,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,85,13,101,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,89,9,138,3,67,6,67,6,97,9,230,5,138,3,232,4,138,3,138,3,138,3,138,3,138,3,138,3,138,3,105,9,138,3,138,3,138,3,112,9,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,120,9,31,4,31,4,31,4,31,4,31,4,31,4,31,4,128,9,132,9,31,4,31,4,31,4,31,4,148,9,140,9,31,4,156,9,31,4,31,4,164,9,170,9,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,178,9,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,239,4,173,8,186,9,193,9,1,4,196,9,138,3,138,3,213,4,204,9,138,3,210,9,1,4,215,9,248,5,138,3,138,3,223,9,138,3,138,3,138,3,138,3,29,8,231,9,1,4,240,4,75,5,238,9,138,3,138,3,138,3,138,3,138,3,173,8,246,9,138,3,138,3,250,9,2,10,138,3,138,3,138,3,138,3,138,3,138,3,6,10,14,10,138,3,138,3,22,10,75,5,50,8,138,3,30,10,138,3,138,3,214,5,38,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,42,10,138,3,138,3,50,10,56,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,62,10,138,3,68,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,74,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,9,5,82,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,89,10,97,10,103,10,138,3,138,3,67,6,67,6,111,10,138,3,138,3,138,3,138,3,138,3,67,6,67,6,103,7,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,113,10,138,3,120,10,138,3,116,10,138,3,123,10,138,3,131,10,135,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,216,3,143,10,216,3,150,10,157,10,165,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,173,10,181,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,31,4,31,4,31,4,31,4,31,4,31,4,189,10,31,4,197,10,197,10,204,10,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,137,4,137,4,137,4,137,4,137,4,137,4,137,4,212,10,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,67,6,220,10,67,6,67,6,70,6,225,10,229,10,67,8,237,10,138,3,138,3,243,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,104,7,251,10,67,6,67,6,67,6,70,6,67,6,67,6,48,8,138,3,220,10,67,6,3,11,67,6,11,11,69,8,138,3,138,3,27,11,35,11,43,11,138,3,68,8,138,3,230,5,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,19,11,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,19,11,59,11,51,11,51,11,51,11,60,11,60,11,60,11,60,11,216,3,216,3,216,3,216,3,216,3,216,3,216,3,68,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,105,3,105,3,105,3,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,8,0,7,0,8,0,9,0,7,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,7,0,7,0,7,0,8,0,9,0,10,0,10,0,4,0,4,0,4,0,10,0,10,0,10,49,10,242,10,0,3,0,6,0,3,0,6,0,6,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,6,0,10,0,10,80,10,0,10,208,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,81,10,0,10,210,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,81,10,0,10,210,10,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,18,0,18,0,18,0,7,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,6,0,10,0,4,0,4,0,4,0,4,0,10,0,10,0,10,0,10,0,0,0,10,144,10,0,178,0,10,0,10,0,4,0,4,0,2,0,2,0,10,0,0,0,10,0,10,0,10,0,2,0,0,0,10,144,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10],\\\"i8\\\",4,A.a+40960)\\n;O([10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,10,0,10,0,4,0,1,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,1,0,177,0,1,0,177,0,177,0,1,0,177,0,177,0,1,0,177,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,5,0,5,0,5,0,5,0,5,0,5,0,10,0,10,0,13,0,4,0,4,0,13,0,6,0,13,0,10,0,10,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,13,0,173,8,13,0,13,0,13,0,77,0,13,0,141,0,141,0,141,0,141,0,77,0,141,0,77,0,141,0,77,0,77,0,77,0,77,0,77,0,141,0,141,0,141,0,141,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,45,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,141,0,77,0,77,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,5,0,5,0,13,0,77,0,77,0,177,0,141,0,141,0,141,0,13,0,141,0,141,0,141,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,141,0,77,0,77,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,77,0,141,0,77,0,141,0,77,0,77,0,141,0,141,0,13,0,141,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,5,0,10,0,177,0,177,0,177,0,177,0,177,0,177,0,13,0,13,0,177,0,177,0,10,0,177,0,177,0,177,0,177,0,141,0,141,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,77,0,77,0,77,0,13,0,13,0,77,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,173,0,141,0,177,0,77,0,77,0,77,0,141,0,141,0,141,0,141,0,141,0,77,0,77,0,77,0,77,0,141,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,141,0,77,0,141,0,77,0,141,0,77,0,77,0,141,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,13,0,13,0,141,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,141,0,141,0,141,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,141,0,141,0,77,0,77,0,77,0,77,0,141,0,77,0,141,0,141,0,77,0,77,0,77,0,141,0,141,0,77,0,77,0,77,0,77,0,77,0,77,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,1,0,1,0,10,0,10,0,10,0,10,0,33,0,1,0,1,0,1,0,1,0,1,0,177,0,177,0,177,0,177,0,1,0,177,0,177,0,177,0,1,0,177,0,177,0,177,0,177,0,177,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,177,0,177,0,177,0,177,0,1,0,177,0,177,0,177,0,177,0,177,0,129,0,65,0,65,0,65,0,65,0,65,0,129,0,129,0,65,0,129,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,129,0,65,0,1,0,1,0,1,0,177,0,177,0,177,0,1,0,1,0,1,0,1,0,177,0,177,0,5,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,141,0,141,0,141,0,13,0,141,0,77,0,77,0,141,0,141,0,77,0,77,0,13,0,77,0,77,0,77,0,141,0,77,0,77,0,77,0,77,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,177,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,177,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,4,0,10,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,177,0,0,0,177,0,10,49,10,242,10,49,10,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,49,10,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,177,0,0,0,0,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,177,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,74,0,10,0,10,0,42,0,177,0,177,0,177,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,0,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,177,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,177,0,177,0,0,0,0,0,0,0,177,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,6,0,10,49,10,242,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,9,0,178,0,178,0,178,0,178,0,178,0,18,0,20,8,21,8,19,8,22,8,178,0,178,0,178,0,178,0,178,0,178,0,2,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,3,0,3,0,10,0,10,49,10,242,0,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,178,0,18,4,50,4,160,8,161,8,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,9,0,7,0,171,8,174,8,176,8,172,8,175,8,6,0,4,0,4,0,4,0,4,0,4,0,10,0,10,0,10,0,10,0,10,48,10,240,10,0,10,0,10,0,10,0,10,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,3,0,3,0,10,0,10,49,10,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,0,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,0,0,0,0,0,0,0,10,16,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,0,10,0,10,48,10,240,10,144,10,144,10,144,10,16,10,144,10,144,10,16,10,16,10,144,10,144,10,144,10,144,10,144,10,16,10,0,10,16,10,16,10,16,10,16,10,0,10,0,10,0,10,112,10,112,10,112,10,176,10,176,10,176,10,0,10,0,10,0,10,16,3,0,4,0,10,0,10,144,10,16,10,0,10,0,10,0,10,16,10,16,10,16,10,16,10,0,10,16,10,16,10,16,10,16,10,0,10,16,10,0,10,16,10,0,10,0,10,0,10,0,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,0,10,0,10,0,10,0,10,0,10,16,10,0,10,16,10,48,10,240,10,16,10,16,10,16,10,16,10,16,10,144,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,48,10,240,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,16,10,16,10,0,10,16,10,0,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,0,10,0,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,16,10,0,10,0,10,48,10,240,10,48,10,240,10,0,10,0,10,0,10,0,10,0,10,144,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,0,10,0,10,144,10,16,10,144,10,144,10,16,10,144,10,16,10,16,10,16,10,16,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,16,10,0,10,0,10,0,10,0,10,0,10,16,10,16,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,48,10,240,10,144,10,0,10,0,10,48,10,240,10,0,10,0,10,0,10,0,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,49,10,242,10,49,10,242,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,16,10,16,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,49,10,242,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,16,10,0,10,0,10,48,10,240,10,49,10,242,10,0,10,48,10,240,10,0,10,80,10,16,10,208,10,0,10,0,10,0,10,0,10,0,10,16,10,16,10,48,10,240,10,0,10,0,10,0,10,0,10,0,10,16,10,48,10,240,10,0,10,0,10,0,10,48,10,240,10,48,10,240,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,16,10,0,10,16,10,16,10,16,10,0,10,0,10,16,10,16,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,16,10,144,10,16,10,16,10,48,10,240,10,0,10,0,10,49,10,242,10,0,10,0,10,0,10,0,10,0,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,113,10,50,10,241,10,178,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,0,10,0,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,144,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,16,10,16,10,48,10,240,10,0,10,0,10,0,10,16,10,0,10,0,10,0,10,0,10,16,10,48,10,240,10,48,10,240,10,0,10,48,10,240,10,0,10,0,10,49,10,242,10,49,10,242,10,16,10,0,10,0,10,0,10,0,10,0,10,16,10,144,10,144,10,144,10,16,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,16,10,0,10,0,10,0,10,0,10,16,10,0,10,0,10,0,10,48,10,240,10,48,10,240,10,16,10,0,10,16,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,0,10,16,10,16,10,16,10,16,10,0,10,0,10,16,10,0,10,16,10,0,10,0,10,16,10,0,10,48,10,240,10,48,10,240,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,0,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,16,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,16,10,16,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,0,10,0,10,0,10,0,10,16,10,16,10,16,10,16,10,0,10,16,10,16,10,0,10,0,10,16,10,16,10,0,10,0,10,0,10,0,10,48,10,240,10,16,10,16,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,16,10,16,10,16,10,16,10,16,10,16,10,48,10,240,10,16,10,16,10,16,10,16,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,16,10,16,10,16,10,16,10,48,10,240,10,16,10,0,10,0,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,0,10,48,10,240,10,16,10,16,10,48,10,240,10,16,10,16,10,16,10,16,10,16,10,16,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,16,10,16,10,16,10,16,10,16,10,16,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,0,10,0,10,0,10,0,10,0,10,16,10,0,10,144,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,10,0,10,0,10,48,10,240,10,48,10,240,10,0,10,0,10,0,10,48,10,240,10,0,10,48,10,240,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,0,10,0,10,48,10,240,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,9,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,0,10,0,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,10,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,96,0,0,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,177,0,0,0,0,0,177,0,177],\\\"i8\\\",4,A.a+51200)\\n;O([177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,177,0,177,0,177,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,177,0,1,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,10,0,10,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,10,0,13,0,13,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,6,0,10,0,6,0,0,0,10,0,6,0,10,0,10,0,10,0,10,49,10,242,10,49,10,242,10,49,10,242,4,0,10,0,10,0,3,0,3,0,10,48,10,240,10,0,0,0,10,0,4,0,4,0,10,0,0,0,0,0,0,0,0,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,178,0,0,0,10,0,10,0,4,0,4,0,4,0,10,0,10,0,10,49,10,242,10,0,3,0,6,0,3,0,6,0,6,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,6,0,10,0,10,80,10,0,10,208,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,81,10,0,10,210,10,0,10,49,10,242,10,0,10,49,10,242,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,10,0,10,0,10,0,4,0,4,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,170,0,170,0,170,0,10,0,10,0,18,0,18,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,177,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,10,0,1,0,177,0,177,0,177,0,1,0,177,0,177,0,1,0,1,0,1,0,1,0,1,0,177,0,177,0,177,0,177,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,177,0,177,0,177,0,1,0,1,0,1,0,1,0,177,0,65,0,129,0,1,0,1,0,129,0,177,0,177,0,1,0,1,0,1,0,1,0,65,0,65,0,65,0,65,0,129,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,65,0,65,0,65,0,65,0,65,0,129,0,1,0,129,0,1,0,129,0,129,0,1,0,1,0,97,0,129,0,129,0,129,0,129,0,129,0,65,0,65,0,65,0,65,0,97,0,65,0,65,0,65,0,65,0,65,0,129,0,65,0,65,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,65,0,129,0,65,0,129,0,129,0,129,0,65,0,65,0,65,0,129,0,65,0,65,0,129,0,65,0,129,0,129,0,65,0,129,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,129,0,129,0,129,0,129,0,65,0,65,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,1,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,177,0,0,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,177,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,0,178,0,178,0,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,177,0,177,0,177,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,10,0,10,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,18,0,178,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,0,0,0,0,0,0,0,0,0,1,2,7,8,3,9,6,5,4,4,10,10,12,10,10,10,11,10,4,4,4,4,13,14,1,2,4,5,7,15,17,7,9,7,0,7,3,18,21,4,1,34,36,37,39,47,49,39,41,39,1,1,35,50,53,0,33,2,36,37,39,47,49,39,41,39,2,2,35,50,53,1,33,34,38,38,40,48,49,40,40,40,3,3,3,50,53,1,33,34,4,37,39,47,49,74,11,74,4,4,35,18,21,2,33,34,36,5,39,47,49,39,41,76,5,5,35,50,53,3,33,34,6,6,40,48,49,40,40,77,6,6,35,18,21,3,33,34,36,37,7,47,49,7,78,7,7,7,35,50,53,4,33,34,38,38,8,48,49,8,8,8,8,8,35,50,53,4,33,34,4,37,7,47,49,7,9,7,9,9,35,18,21,4,97,98,4,101,135,111,113,135,142,135,10,135,99,18,21,2,33,34,4,37,39,47,49,39,11,39,11,11,35,18,21,2,97,98,100,5,135,111,113,135,142,135,12,135,99,114,117,3,97,98,6,6,136,112,113,136,136,136,13,136,99,18,21,3,33,34,132,37,7,47,49,7,14,7,14,14,35,146,149,4,33,34,36,37,39,15,49,39,41,39,15,39,35,50,53,5,33,34,38,38,40,16,49,40,40,40,16,40,35,50,53,5,33,34,36,37,39,47,17,39,41,39,17,39,35,50,53,6,33,34,18,37,39,47,49,83,20,83,18,18,35,18,21,0,97,98,18,101,135,111,113,135,142,135,19,135,99,18,21,0,33,34,18,37,39,47,49,39,20,39,20,20,35,18,21,0,33,34,21,37,39,47,49,86,23,86,21,21,35,18,21,3,97,98,21,101,135,111,113,135,142,135,22,135,99,18,21,3,33,34,21,37,39,47,49,39,23,39,23,23,35,18,21,3,0,2,17,17,0,0,0,0,0,66,1,1,0,0,0,0,0,2,4,4,19,19,0,1,0,34,52,52,3,3,0,0,0,2,4,4,19,19,0,2,1,0,2,2,0,0,0,0,1,0,1,3,20,20,0,1,1,0,2,2,0,0,0,1,1,0,1,3,5,5,0,1,33,0,33,3,4,4,0,0,1,0,1,3,5,5,0,0,0,1,2,3,4,0,1,0,2,0,0,0,0,0,1,3,3,20,20,0,1,0,1,0,2,21,21,0,2,0,1,3,3,20,20,0,2,0,33,51,51,4,4,0,0,0,33,0,50,5,5,0,0,0,3,17,17,0,0,0,0,32,3,1,1,2,32,32,2,32,3,1,1,2,32,32,1,0,3,5,5,20,0,0,1,32,3,5,5,4,32,32,1,0,3,5,5,20,0,0,2,2,0,1,1,0,0,0,0,2,0,1,1,0,0,0,1,2,0,20,20,19,0,0,1,34,0,4,4,3,0,0,0,34,0,4,4,3,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,20,20,0,1,0,1,0,0,21,21,0,2,0,1,0,0,20,20,0,2,32,1,32,32,4,4,32,1,32,1,32,32,5,5,32,1,1,0,1,1,0,0,0,0,1,0,1,1,20,20,0,1,1,0,1,1,0,0,0,1,1,0,1,1,5,5,0,1,33,0,33,33,4,4,0,0,1,0,1,1,5,5,0,0,1,0,2,2,0,0,0,0,1,0,1,2,19,19,0,1,1,0,2,2,0,0,0,1,33,48,6,4,3,3,48,0,33,48,6,4,5,5,48,3,33,48,6,4,5,5,48,2,33,48,6,4,3,3,48,1,0,1,13,14,0,98,1,1,0,0,0,0,0,98,1,1,0,48,0,4,0,98,84,84,19,48,0,3,48,66,84,84,3,48,48,3,48,66,4,4,19,48,48,4,19,0,1,1,0,0,0,0,35,0,1,1,2,64,0,1,35,0,1,1,2,64,0,0,3,0,3,54,20,64,0,1,83,64,5,54,4,64,64,0,83,64,5,54,4,64,64,1,83,64,6,6,4,64,64,3,0,1,2,5,6,7,8,0,1,9,10,11,12,0,99,0,1,0,0,0,0,0,99,0,1,18,48,0,4,32,99,32,1,2,48,32,3,0,99,85,86,20,48,0,3,48,67,85,86,4,48,48,3,48,67,5,86,20,48,48,4,48,67,85,6,20,48,48,4,0,0,0,0,0,0,0,0,0,1,0,3,0,1,0,1,0,0,2,2,0,0,1,2,0,1,1,2,0,1,1,3,0,0,0,0,0,0,0,0,0,1,0,3,0,1,0,3,0,0,1,2,0,0,1,2,0,1,1,2,0,1,1,3,0,2,4,6,8,10,12,14,0,1,0,0,0,0,0,1,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,2,3,0,1,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,3,3,3,0,3,0,3,3,3,3,3,3,3,3,3,3,0,0,1,0,1,0,1,0,1,0,1,2,3,0,1,0,1,2,3,0,1,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,0,1,0,1,0,1,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,0,1,0,1,2,3,0,1,0,1,0,1,0,1,0,0,0,45,0,3,3,44,3,45,3,4,42,4,4,13,13,13,6,6,31,31,35,35,33,33,40,40,1,1,11,11,55,55,55,0,9,29,19,22,24,26,16,44,45,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,29,0,3,3,3,0,3,44,44,45,4,4,4,4,4,4,4,4,13,13,13,13,13,13,13,6,6,6,6,6,6,6,6,6,31,31,31,31,31,31,31,31,31,35,35,35,33,33,40,1,9,9,9,9,9,9,29,29,11,38,11,19,19,19,11,11,11,11,11,11,22,22,22,22,26,26,26,26,56,21,13,42,17,17,14,44,44,44,44,44,44,44,44,55,47,55,44,45,45,46,46,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,31,0,0,0,0,0,0,0,0,0,0,35,33,1,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,5,12,12,7,7,15,39,50,18,43,43,48,49,20,23,25,27,36,10,8,28,32,34,30,7,37,41,5,12,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,52,51,4,4,4,4,4,4,4,13,13,6,6,31,35,1,1,1,9,9,11,11,11,24,24,26,26,26,22,31,31,35,13,13,35,31,13,3,3,55,55,45,44,44,54,54,13,35,35,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,13,40,9,29,22,24,45,45,31,44,57,0,6,33,11,85,31,1,19,0,4,4,4,31,45,86,88,87,0,0,58,60,60,64,64,61,0,82,0,84,84,0,0,65,79,83,67,67,67,68,62,80,69,70,76,59,59,72,72,75,73,73,73,74,0,0,77,0,0,0,0,0,0,71,63,78,81,66,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0],\\\"i8\\\",4,A.a+61464);var Fa=B;B+=16;b._sbrk=Ga;b._memset=Ha;function Ia(){return!!Ia.n}var Ja=0,Ka={};function Y(){var a=Ja;if(!a)return(A.b(0),0)|0;var c=Ka[a],d=c.type;if(!d)return(A.b(0),a)|0;var e=Array.prototype.slice.call(arguments);b.___cxa_is_pointer_type(d);Y.buffer||(Y.buffer=P(4));C[Y.buffer>>2]=a;for(var a=Y.buffer,f=0;f>2],c.D=a,(A.b(e[f]),a)|0;a=C[a>>2];return(A.b(d),a)|0}b._memcpy=La;E=O(1,\\\"i32\\\",2);S=z=A.o(B);T=S+xa;U=A.o(T);C[E>>2]=U;b.s={Math:Math,Int8Array:Int8Array,Int16Array:Int16Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array,NaN:NaN,Infinity:Infinity,byteLength:V};b.t={abort:H,assert_em:assert_em,enlargeMemory:ba,getTotalMemory:function(){return F},abortOnCannotGrowMemory:function(){H(\\\"Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value \\\"+F+\\\", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 \\\")},invoke_viiiii:function(a,c,d,e,f,h){try{b.dynCall_viiiii(a,c,d,e,f,h)}catch(l){if(\\\"number\\\"!==typeof l&&\\\"longjmp\\\"!==l)throw l;b.setThrew(1,0)}},invoke_vi:function(a,c){try{b.dynCall_vi(a,c)}catch(d){if(\\\"number\\\"!==typeof d&&\\\"longjmp\\\"!==d)throw d;b.setThrew(1,0)}},invoke_iiii:function(a,c,d,e){try{return b.dynCall_iiii(a,c,d,e)}catch(f){if(\\\"number\\\"!==typeof f&&\\\"longjmp\\\"!==f)throw f;b.setThrew(1,0)}},invoke_viiiiii:function(a,c,d,e,f,h,l){try{b.dynCall_viiiiii(a,c,d,e,f,h,l)}catch(m){if(\\\"number\\\"!==typeof m&&\\\"longjmp\\\"!==m)throw m;b.setThrew(1,0)}},invoke_iii:function(a,c,d){try{return b.dynCall_iii(a,c,d)}catch(e){if(\\\"number\\\"!==typeof e&&\\\"longjmp\\\"!==e)throw e;b.setThrew(1,0)}},invoke_viiii:function(a,c,d,e,f){try{b.dynCall_viiii(a,c,d,e,f)}catch(h){if(\\\"number\\\"!==typeof h&&\\\"longjmp\\\"!==h)throw h;b.setThrew(1,0)}},_abort:function(){b.abort()},___setErrNo:function(a){b.___errno_location&&(C[b.___errno_location()>>2]=a);return a},_emscripten_memcpy_big:function(a,c,d){K.set(K.subarray(c,c+d),a);return a},___gxx_personality_v0:function(){},___resumeException:function(a){Ja||(Ja=a);throw a+\\\" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.\\\"},__ZSt18uncaught_exceptionv:Ia,___cxa_find_matching_catch:Y,DYNAMICTOP_PTR:E,tempDoublePtr:Fa,ABORT:G,STACKTOP:z,STACK_MAX:T};var Z=function(global,env,buffer){\\\"almost asm\\\";var a=global.Int8Array;var b=new a(buffer);var c=global.Int16Array;var d=new c(buffer);var e=global.Int32Array;var f=new e(buffer);var g=global.Uint8Array;var h=new g(buffer);var i=global.Uint16Array;var j=new i(buffer);var k=global.Uint32Array;var l=new k(buffer);var m=global.Float32Array;var n=new m(buffer);var o=global.Float64Array;var p=new o(buffer);var q=global.byteLength;var r=env.DYNAMICTOP_PTR|0;var s=env.tempDoublePtr|0;var t=env.ABORT|0;var u=env.STACKTOP|0;var v=env.STACK_MAX|0;var w=0;var x=0;var y=0;var z=0;var A=global.NaN,B=global.Infinity;var C=0,D=0,E=0,F=0,G=0;var H=0;var I=global.Math.floor;var J=global.Math.abs;var K=global.Math.sqrt;var L=global.Math.pow;var M=global.Math.cos;var N=global.Math.sin;var O=global.Math.tan;var P=global.Math.acos;var Q=global.Math.asin;var R=global.Math.atan;var S=global.Math.atan2;var T=global.Math.exp;var U=global.Math.log;var V=global.Math.ceil;var W=global.Math.imul;var X=global.Math.min;var Y=global.Math.max;var Z=global.Math.clz32;var _=env.abort;var $=env.assert_em;var aa=env.enlargeMemory;var ba=env.getTotalMemory;var ca=env.abortOnCannotGrowMemory;var da=env.invoke_viiiii;var ea=env.invoke_vi;var fa=env.invoke_iiii;var ga=env.invoke_viiiiii;var ha=env.invoke_iii;var ia=env.invoke_viiii;var ja=env._abort;var ka=env.___setErrNo;var la=env._emscripten_memcpy_big;var ma=env.___gxx_personality_v0;var na=env.___resumeException;var oa=env.__ZSt18uncaught_exceptionv;var pa=env.___cxa_find_matching_catch;var qa=0;function ra(newBuffer){if(q(newBuffer)&16777215||q(newBuffer)<=16777215||q(newBuffer)>2147483648)return false;b=new a(newBuffer);d=new c(newBuffer);f=new e(newBuffer);h=new g(newBuffer);j=new i(newBuffer);l=new k(newBuffer);n=new m(newBuffer);p=new o(newBuffer);buffer=newBuffer;return true}function ya(a){a=a|0;var b=0;b=u;u=u+a|0;u=u+15&-16;return b|0}function za(){return u|0}function Aa(a){a=a|0;u=a}function Ba(a,b){a=a|0;b=b|0;u=a;v=b}function Ca(a,b){a=a|0;b=b|0;if(!w){w=a;x=b}}function Da(a){a=a|0;H=a}function Ea(){return H|0}function Fa(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0;g=u;u=u+16|0;h=g;f[h>>2]=0;e=Cb(a,b,0,0,h)|0;i=e+1|0;f[h>>2]=0;c=fc(i<<1)|0;Cb(a,b,c,i,h)|0;if((f[h>>2]|0)>0){gc(c);c=0}else d[c+(e<<1)>>1]=0;u=g;return c|0}function Ga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=u;u=u+16|0;d=e;c=f[17218]|0;if(!c){c=Ja()|0;f[17218]=c}f[d>>2]=0;Oa(c,a,b,-2,d);if((f[d>>2]|0)>0)c=0;else c=mb(f[17218]|0)|0;u=e;return c|0}function Ha(a){a=a|0;var b=0,c=0,d=0;d=u;u=u+16|0;c=d+4|0;b=d;f[c>>2]=0;f[b>>2]=0;nb(f[17218]|0,a,b,c);u=d;return((f[c>>2]|0)>0?0:f[b>>2]|0)|0}function Ia(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0;i=u;u=u+16|0;h=i;f[h>>2]=0;e=f[17219]|0;if(!e){e=Ja()|0;f[17219]=e}sb(f[17218]|0,a,b,e,h);if((f[h>>2]|0)<=0?(g=lb(e)|0,b=g+1|0,c=fc(b<<1)|0,qb(f[17219]|0,c,b,10,h)|0,(f[h>>2]|0)<=0):0)d[c+(g<<1)>>1]=0;else c=0;u=i;return c|0}function Ja(){var a=0,b=0;b=u;u=u+16|0;a=b;f[a>>2]=0;a=Ka(a)|0;u=b;return a|0}function Ka(a){a=a|0;var c=0;do{if((a|0)!=0?(f[a>>2]|0)<=0:0){c=Rb(364)|0;if(!c){f[a>>2]=7;c=0;break}Ic(c|0,0,364)|0;f[c+4>>2]=248;b[c+72>>0]=1;b[c+73>>0]=1;if((f[a>>2]|0)>=1){Ma(c);c=0}}else c=0}while(0);return c|0}function La(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;g=f[a>>2]|0;e=c<<24>>24==0;if(!g)if(!e?(g=Rb(d)|0,f[a>>2]=g,(g|0)!=0):0){f[b>>2]=d;c=1}else c=0;else{c=(f[b>>2]|0)>=(d|0);if(!(e|c)){c=Sb(g,d)|0;if(!c)c=0;else{f[a>>2]=c;f[b>>2]=d;c=1}}else c=c&1}return c|0}function Ma(a){a=a|0;var b=0;if(a|0){f[a>>2]=0;b=f[a+48>>2]|0;if(b|0)Tb(b);b=f[a+52>>2]|0;if(b|0)Tb(b);b=f[a+56>>2]|0;if(b|0)Tb(b);b=f[a+60>>2]|0;if(b|0)Tb(b);b=f[a+64>>2]|0;if(b|0)Tb(b);b=f[a+68>>2]|0;if(b|0)Tb(b);b=f[a+348>>2]|0;if(b|0)Tb(b);Tb(a)}return}function Na(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=0;while(1){if((d|0)>=(a|0)){e=5;break}if((f[b+(d<<3)>>2]|0)>(c|0))break;d=d+1|0}if((e|0)==5)d=a+-1|0;return f[b+(d<<3)+4>>2]&255|0}function Oa(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;a:do{if(g|0?(f[g>>2]|0)<=0:0){if((a|0)==0|(c|0)==0|(d|0)<-1|e+-126<<24>>24<<24>>24>-1){f[g>>2]=1;break}if((d|0)==-1)d=Ub(c)|0;x=a+88|0;if((f[x>>2]|0)==3){Pa(a,c,d,e,g);break}f[a>>2]=0;f[a+8>>2]=c;B=a+20|0;f[B>>2]=d;f[a+12>>2]=d;l=a+16|0;f[l>>2]=d;u=a+97|0;b[u>>0]=e;i=e&1;j=i&255;m=a+120|0;f[m>>2]=j;z=a+136|0;f[z>>2]=1;k=a+76|0;f[k>>2]=0;o=a+80|0;f[o>>2]=0;f[a+228>>2]=0;A=a+336|0;f[A>>2]=0;f[a+340>>2]=0;c=(e&255)>253;v=a+98|0;b[v>>0]=c&1;n=a+124|0;e=a+224|0;if(!d){if(c){b[u>>0]=i;b[v>>0]=0}f[n>>2]=f[96+(j<<2)>>2];f[e>>2]=0;f[z>>2]=0;Qa(a);break}f[e>>2]=-1;c=f[a+60>>2]|0;y=a+140|0;f[y>>2]=(c|0)==0?a+144|0:c;c=a+48|0;e=a+72|0;if(!((La(c,a+24|0,b[e>>0]|0,d)|0)<<24>>24)){f[g>>2]=7;break}f[k>>2]=f[c>>2];if(!((Ra(a)|0)<<24>>24)){f[g>>2]=7;break}w=f[k>>2]|0;r=f[l>>2]|0;k=a+132|0;f[k>>2]=r;d=a+52|0;if(!((La(d,a+28|0,b[e>>0]|0,r)|0)<<24>>24)){f[g>>2]=7;break}f[o>>2]=f[d>>2];j=Sa(a,g)|0;if((f[g>>2]|0)<=0){i=a+244|0;d=f[i>>2]|0;do{if((d|0)>=6){d=d<<4;c=a+44|0;e=a+68|0;if((d|0)<=(f[c>>2]|0)){d=f[e>>2]|0;break}if(!((La(e,c,1,d)|0)<<24>>24)){f[g>>2]=7;break a}else{d=f[e>>2]|0;break}}else d=a+252|0}while(0);f[a+248>>2]=d;f[i>>2]=-1;f[m>>2]=j;s=a+92|0;b:do{switch(j|0){case 0:{f[k>>2]=0;break}case 1:{f[k>>2]=0;break}default:{d=a+116|0;switch(f[x>>2]|0){case 0:{c=200;t=36;break}case 1:{c=216;t=36;break}case 2:{c=184;t=36;break}case 4:{c=168;t=36;break}case 5:{c=f[s>>2]&1|0?104:120;t=36;break}case 6:{c=f[s>>2]&1|0?136:152;t=36;break}default:{}}if((t|0)==36)f[d>>2]=c;p=r+-1|0;i=f[z>>2]|0;if((i|0)<2?(f[n>>2]|0)>=0:0){do{if(b[v>>0]|0){c=f[y>>2]|0;e=f[c>>2]|0;if((e|0)>0)d=b[u>>0]|0;else d=Na(i,c,0)|0;d=d&1;if((r|0)>(e|0)){c=Na(i,c,p)|0;break}else{c=b[u>>0]|0;break}}else{d=b[u>>0]|0;c=d;d=d&1}}while(0);Ta(a,0,r,d,c&1)}else{n=f[o>>2]|0;if((b[v>>0]|0)!=0?(q=f[y>>2]|0,(f[q>>2]|0)<=0):0)d=Na(i,q,0)|0;else d=b[u>>0]|0;e=b[n>>0]|0;d=((d&255)<(e&255)?e:d)&1;m=0;while(1){if((m|0)>0?(b[w+(m+-1)>>0]|0)==7:0){do{if(!(b[v>>0]|0))t=57;else{d=f[y>>2]|0;if((m|0)<(f[d>>2]|0)){t=57;break}d=Na(f[z>>2]|0,d,m)|0}}while(0);if((t|0)==57)d=b[u>>0]|0;d=d&1}k=m;while(1){l=k+1|0;if((l|0)>=(r|0)){t=64;break}c=b[n+l>>0]|0;if(c<<24>>24==e<<24>>24){k=l;continue}if(!(1<>0]&382976)){t=68;break}else k=l}c:do{if((t|0)==64){t=0;e=e&255;do{if(b[v>>0]|0){c=f[y>>2]|0;if((r|0)<=(f[c>>2]|0))break;c=Na(f[z>>2]|0,c,p)|0;j=0;break c}}while(0);c=b[u>>0]|0;j=0}else if((t|0)==68){t=0;e=e&255;j=1}}while(0);i=c&255;i=((e&127)>>>0<(i&127)>>>0?i:e)&1;if(!(e&128))Ta(a,m,l,d,i);else{d=m;while(1){q=n+d|0;b[q>>0]=b[q>>0]&127;if((d|0)<(k|0))d=d+1|0;else break}}if(j){d=i;e=c;m=l}else break}}d=f[a+344>>2]|0;if((d|0)>0){f[g>>2]=d;break a}else{Ua(a);break b}}}}while(0);d:do{if((b[v>>0]|0?f[s>>2]&1|0:0)?((f[x>>2]|0)+-5|0)>>>0<2:0){j=0;while(1){if((j|0)>=(f[z>>2]|0))break d;c=f[y>>2]|0;d=(f[c+(j<<3)>>2]|0)+-1|0;e:do{if(f[c+(j<<3)+4>>2]&255|0){if(!j)e=0;else e=f[c+(j+-1<<3)>>2]|0;c=d;while(1){if((c|0)<(e|0))break e;i=b[w+c>>0]|0;if(!(i<<24>>24))break;if(1<<(i&255)&8194|0)break e;c=c+-1|0}if((c|0)<(d|0))while(1)if((b[w+d>>0]|0)==7)d=d+-1|0;else break;Va(a,d,4)}}while(0);j=j+1|0}}}while(0);d=f[B>>2]|0;if(!(f[s>>2]&2))d=(f[A>>2]|0)+d|0;else d=d-(f[a+352>>2]|0)|0;f[B>>2]=d;Qa(a)}}}while(0);return}function Pa(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;E=a+88|0;f[E>>2]=0;do{if(d){i=Rb(d*7|0)|0;if(!i){f[g>>2]=7;i=0;break}k=i+(d<<2)|0;D=k+(d<<1)|0;l=a+92|0;m=f[l>>2]|0;if(m&1|0)f[l>>2]=m&-4|2;e=e&1;Oa(a,c,d,e,g);if((f[g>>2]|0)<=0){y=ub(a,g)|0;w=a+16|0;x=f[w>>2]|0;Jc(D|0,y|0,x|0)|0;y=a+132|0;z=f[y>>2]|0;A=a+120|0;B=f[A>>2]|0;j=qb(a,k,d,2,g)|0;Bb(a,i,g);C=a+224|0;if((f[g>>2]|0)<=0){f[l>>2]=m;f[E>>2]=5;v=a+72|0;u=b[v>>0]|0;b[v>>0]=0;Oa(a,k,j,e^1,g);b[v>>0]=u;wb(a,g);a:do{if((f[g>>2]|0)<=0){q=f[C>>2]|0;o=a+228|0;p=f[o>>2]|0;k=0;e=0;g=0;while(1){if((g|0)>=(q|0))break;n=f[p+(g*12|0)+4>>2]|0;e=n-e|0;b:do{if((e|0)<2)e=k;else{j=f[p+(g*12|0)>>2]&2147483647;m=j+e|0;e=k;while(1){do{k=j;j=j+1|0;if((j|0)>=(m|0))break b;l=f[i+(j<<2)>>2]|0;k=f[i+(k<<2)>>2]|0;v=l-k|0;if((((v|0)>-1?v:0-v|0)|0)!=1)break}while((b[D+l>>0]|0)==(b[D+k>>0]|0));e=e+1|0}}}while(0);k=e;e=n;g=g+1|0}if(k){e=a+64|0;if(!((La(e,a+40|0,b[a+73>>0]|0,(k+q|0)*12|0)|0)<<24>>24))break;if((q|0)==1){v=f[e>>2]|0;f[v>>2]=f[p>>2];f[v+4>>2]=f[p+4>>2];f[v+8>>2]=f[p+8>>2]}p=f[e>>2]|0;f[o>>2]=p;f[C>>2]=(f[C>>2]|0)+k}v=p+4|0;e=q;while(1){u=e+-1|0;if((e|0)<=0)break a;s=p+(u*12|0)|0;q=p+(u*12|0)+4|0;if(!u)j=f[v>>2]|0;else j=(f[q>>2]|0)-(f[p+((e+-2|0)*12|0)+4>>2]|0)|0;e=f[s>>2]|0;t=e>>>31;e=e&2147483647;if((j|0)<2){j=u+k|0;if(!k)k=0;else{r=p+(j*12|0)|0;f[r>>2]=f[s>>2];f[r+4>>2]=f[s+4>>2];f[r+8>>2]=f[s+8>>2]}}else{m=(t|0)==0;o=j+-1+e|0;r=m?e:o;g=m?-1:1;n=p+(u*12|0)+8|0;o=m?o:e;c:while(1){e=o;while(1){if((e|0)==(r|0))break c;j=f[i+(e<<2)>>2]|0;l=e+g|0;m=f[i+(l<<2)>>2]|0;F=j-m|0;if((((F|0)>-1?F:0-F|0)|0)!=1)break;if((b[D+j>>0]|0)==(b[D+m>>0]|0))e=l;else break}m=k+u|0;F=f[i+(o<<2)>>2]|0;F=(F|0)<(j|0)?F:j;f[p+(m*12|0)>>2]=(h[D+F>>0]^t)<<31|F;f[p+(m*12|0)+4>>2]=f[q>>2];F=e-o|0;f[q>>2]=(f[q>>2]|0)+~((F|0)>-1?F:0-F|0);F=f[n>>2]|0;f[p+(m*12|0)+8>>2]=F&10;f[n>>2]=f[n>>2]&((F|-11)^10);o=l;k=k+-1|0}j=k+u|0;if(k|0){F=p+(j*12|0)|0;f[F>>2]=f[s>>2];f[F+4>>2]=f[s+4>>2];f[F+8>>2]=f[s+8>>2]}e=(f[i+(o<<2)>>2]|0)<(f[i+(r<<2)>>2]|0)?o:r}e=f[i+(e<<2)>>2]|0;f[p+(j*12|0)>>2]=(h[D+e>>0]^t)<<31|e;e=u}}}while(0);F=a+97|0;b[F>>0]=b[F>>0]^1}f[a+8>>2]=c;f[w>>2]=x;f[a+12>>2]=d;f[A>>2]=B;F=f[a+28>>2]|0;Jc(f[a+80>>2]|0,D|0,((x|0)>(F|0)?F:x)|0)|0;f[y>>2]=z;if((f[C>>2]|0)>1)f[A>>2]=2}}else{Oa(a,c,0,e,g);i=0}}while(0);Tb(i);f[E>>2]=3;return}function Qa(a){a=a|0;f[a+104>>2]=0;f[a+112>>2]=0;f[a>>2]=a;return}function Ra(a){a=a|0;var c=0,e=0,g=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;R=u;u=u+640|0;A=R;H=R+504|0;E=f[a+8>>2]|0;F=f[a+48>>2]|0;N=f[a+12>>2]|0;P=a+97|0;O=b[P>>0]|0;c=O&255;O=(O&255)>253;if(O){D=f[a+88>>2]|0;D=(D|0)==5^(D|0)!=6}else D=1;L=a+92|0;Q=f[L>>2]|0;i=Q&2;M=a+16|0;if(Q&4|0)f[M>>2]=0;B=c&1;C=B&255;Q=a+140|0;e=(f[Q>>2]|0)+4|0;if(O){f[e>>2]=B;if((f[a+104>>2]|0)>0?(g=jb(a)|0,g<<24>>24!=10):0){f[(f[Q>>2]|0)+4>>2]=g<<24>>24!=0&1;c=C;e=0}else{c=C;e=1}}else{f[e>>2]=c;c=10;e=0}I=a+136|0;J=a+352|0;z=(i|0)==0;y=-1;g=c;i=0;n=0;G=-1;c=0;a:while(1){x=D|g<<24>>24!=1;if((i|0)>=(N|0)){K=49;break}k=i+1|0;l=j[E+(i<<1)>>1]|0;if(!((k|0)==(N|0)|(l&64512|0)!=55296)){m=j[E+(k<<1)>>1]|0;w=(m&64512|0)==56320;i=w?i+2|0:k;if(w)l=(l<<10)+-56613888+m|0}else i=k;r=Za(a,l)|0;p=r&255;r=r&255;c=1<>0]=p;if((l|0)>65535){b[F+(i+-2)>>0]=18;v=c|262144}else v=c;if(z)w=n;else w=(((l+-8294|0)>>>0<4|((l&-4|0)==8204|(l+-8234|0)>>>0<5))&1)+n|0;m=(y|0)<126;n=(e|0)==1;o=(e|0)==2;k=o?3:e;o=o&m;c=o?v|1048576:v;if(!r){if(!n){v=G;x=y;g=0;e=k;n=w;G=v;y=x;continue}f[(f[Q>>2]|0)+((f[I>>2]|0)+-1<<3)+4>>2]=0;t=G;x=y;g=0;e=0;n=w;c=v;G=t;y=x;continue}s=(r|0)==13;switch(p<<24>>24){case 1:case 13:{if(!n)if(o){b[F+(f[A+(y<<2)>>2]|0)>>0]=21;e=3;c=v|2097152}else{e=k;c=v}else{f[(f[Q>>2]|0)+((f[I>>2]|0)+-1<<3)+4>>2]=1;e=0;c=v}x=y;g=1;n=w;G=s?t:G;y=x;continue a}default:{}}if((r+-19|0)>>>0<3){c=y+1|0;if((c|0)<126){f[A+(c<<2)>>2]=t;b[H+c>>0]=e}if((r|0)!=19){t=G;x=g;y=c;e=3;n=w;c=v;G=t;g=x;continue}b[q>>0]=20;t=G;x=g;y=c;e=2;n=w;c=v;G=t;g=x;continue}switch(p<<24>>24){case 22:{if((y|0)<=-1){s=G;t=e;v=g;x=y;n=w;G=s;e=t;g=v;y=x;continue a}if(m)e=b[H+y>>0]|0;v=G;x=g;y=y+-1|0;n=w;G=v;g=x;continue a}case 7:break;default:{r=G;s=e;t=g;x=y;n=w;c=v;G=r;e=s;g=t;y=x;continue a}}m=(i|0)<(N|0);if((l|0)==13&m?(d[E+(i<<1)>>1]|0)==10:0){r=G;s=e;t=g;x=y;n=w;c=v;G=r;e=s;g=t;y=x;continue}c=f[Q>>2]|0;k=f[I>>2]|0;l=k+-1|0;f[c+(l<<3)>>2]=i;if(!x)f[c+(l<<3)+4>>2]=1;if(f[L>>2]&4|0){f[M>>2]=i;f[J>>2]=w}if(!m){r=G;s=e;t=g;x=y;n=w;c=v;G=r;e=s;g=t;y=x;continue}f[I>>2]=k+1;if(!((kb(a)|0)<<24>>24)){c=0;break}if(O){g=C;e=1;c=B}else{e=0;c=h[P>>0]|0}f[(f[Q>>2]|0)+((f[I>>2]|0)+-1<<3)+4>>2]=c;x=G;y=-1;n=w;c=v;G=x}\\nif((K|0)==49){F=(y|0)>125;g=F?125:y;e=F?2:e;while(1){if((g|0)<=-1)break;if((e|0)==2){K=52;break}e=b[H+g>>0]|0;g=g+-1|0}if((K|0)==52)c=c|1048576;g=f[I>>2]|0;e=g+-1|0;if(f[L>>2]&4){if((f[M>>2]|0)<(N|0)){f[I>>2]=e;g=e}}else{f[(f[Q>>2]|0)+(e<<3)>>2]=N;f[J>>2]=n}if(!x)f[(f[Q>>2]|0)+(g+-1<<3)+4>>2]=1;if(O){b[P>>0]=f[(f[Q>>2]|0)+4>>2];e=0}else e=0;while(1){if((e|0)>=(g|0))break;P=f[96+((f[(f[Q>>2]|0)+(e<<3)+4>>2]&1)<<2)>>2]|c;e=e+1|0;c=P}f[a+124>>2]=(c&128|0)!=0&(b[a+96>>0]|0)!=0&1|c;f[a+128>>2]=G;c=1}u=R;return c|0}function Sa(a,c){a=a|0;c=c|0;var e=0,g=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=u;u=u+5072|0;P=W+2532|0;M=W;Q=f[a+76>>2]|0;V=f[a+80>>2]|0;R=f[a+8>>2]|0;O=f[a+16>>2]|0;N=a+124|0;g=f[N>>2]|0;I=a+98|0;K=a+97|0;U=a+140|0;if((b[I>>0]|0)!=0?(e=f[U>>2]|0,(f[e>>2]|0)<=0):0)i=Na(f[a+136>>2]|0,e,0)|0;else i=b[K>>0]|0;H=a+244|0;f[H>>2]=0;a:do{if((f[c>>2]|0)<=0){e=$a(g)|0;if((e|0)==2){T=a+136|0;if((f[a+88>>2]|0)>>>0>1){i=0;while(1){if((i|0)>=(f[T>>2]|0)){e=2;break a}g=f[U>>2]|0;if(!i)e=0;else e=f[g+(i+-1<<3)>>2]|0;k=f[g+(i<<3)>>2]|0;g=f[g+(i<<3)+4>>2]&255;while(1){if((e|0)>=(k|0))break;b[V+e>>0]=g;e=e+1|0}i=i+1|0}}if(!(g&7985152)){ab(a,P);k=0;b:while(1){if((k|0)>=(f[T>>2]|0)){e=2;break}e=f[U>>2]|0;if(!k)g=0;else g=f[e+(k+-1<<3)>>2]|0;l=f[e+(k<<3)>>2]|0;i=f[e+(k<<3)+4>>2]&255;c:while(1){if((g|0)>=(l|0))break;b[V+g>>0]=i;e=g+1|0;switch(b[Q+g>>0]|0){case 18:{g=e;continue c}case 7:break;default:if(!((cb(P,g)|0)<<24>>24)){S=28;break b}else{g=e;continue c}}if((e|0)>=(O|0)){g=e;continue}if((d[R+(g<<1)>>1]|0)==13?(d[R+(e<<1)>>1]|0)==10:0){g=e;continue}bb(P,i);g=e}k=k+1|0}if((S|0)==28){f[c>>2]=7;e=0}break}ab(a,M);d[P>>1]=i&255;k=0;l=0;c=0;F=0;E=0;B=i;C=i;e=0;i=0;d:while(1){if((i|0)>=(O|0))break;x=Q+i|0;y=b[x>>0]|0;z=F+1|0;v=e|262144;D=V+i|0;A=P+(z<<1)|0;g=C&255;m=e|-2147483648;o=g&127;G=i+1|0;p=(c|0)!=0;n=g&1;q=(c|0)==0;r=(o|0)!=(B&127|0);s=g+2&126;t=(o+1|1)&255;w=(l|c|0)==0;switch(y<<24>>24){case 15:case 12:case 14:case 11:{b[D>>0]=B;e=(y+-11&255)<2?s:t;if(w&(e&255)<126){C=y<<24>>24==12|y<<24>>24==15?e|-128:e;d[A>>1]=C&255;x=B;E=i;y=c;A=l;D=k;F=z;e=v;i=G;B=x;c=y;l=A;k=D;continue d}else{w=C;x=B;y=E;z=F;A=c;D=k;l=(q&1)+l|0;e=v;i=G;C=w;B=x;E=y;F=z;c=A;k=D;continue d}}case 16:{b[D>>0]=B;if(p){t=C;w=B;x=E;y=F;z=c;A=l;D=k;e=v;i=G;C=t;B=w;E=x;F=y;c=z;l=A;k=D;continue d}if(l|0){x=C;y=B;z=E;A=F;D=k;l=l+-1|0;c=0;e=v;i=G;C=x;B=y;E=z;F=A;k=D;continue d}if(!F){y=C;z=B;A=E;D=k;l=0;c=0;F=0;e=v;i=G;C=y;B=z;E=A;k=D;continue d}e=F+-1|0;if((j[P+(F<<1)>>1]|0)>=256){x=C;y=B;z=E;A=F;D=k;l=0;c=0;e=v;i=G;C=x;B=y;E=z;F=A;k=D;continue d}A=B;E=i;D=k;l=0;c=0;F=e;C=d[P+(e<<1)>>1]&255;e=v;i=G;B=A;k=D;continue d}case 21:case 20:{e=f[96+(n<<2)>>2]|e;b[D>>0]=o;if(r){db(M,E,B,C);e=e|-2147482624}else e=e|1024;m=y<<24>>24==20?s:t;if(!(w&(m&255)<126)){b[x>>0]=9;x=C;B=C;y=E;z=F;A=l;D=k;c=c+1|0;i=G;C=x;E=y;F=z;l=A;k=D;continue d}g=k+1|0;if((k|0)>=(f[H>>2]|0))f[H>>2]=g;d[A>>1]=m&255|256;eb(M,m);B=C;E=i;A=c;D=l;k=g;F=z;C=m;e=e|1<<(y&255);i=G;c=A;l=D;continue d}case 22:{if(r){db(M,E,B,C);e=m}do{if(p){b[x>>0]=9;c=c+-1|0;i=E;g=F}else{if(!k){b[x>>0]=9;k=0;c=0;i=E;g=F;break}else g=F;do{F=g;g=g+-1|0}while((j[P+(F<<1)>>1]|0)<256);fb(M);k=k+-1|0;l=0;c=0;e=e|4194304}}while(0);F=d[P+(g<<1)>>1]|0;C=F&255;F=F&255;e=e|f[96+((F&1)<<2)>>2]|1024;b[D>>0]=F&127;F=g;E=i;B=C;i=G;continue d}case 7:{e=e|128;if((b[I>>0]|0)!=0?(J=f[U>>2]|0,(i|0)>=(f[J>>2]|0)):0)g=Na(f[T>>2]|0,J,i)|0;else g=b[K>>0]|0;b[D>>0]=g;if((G|0)>=(O|0)){v=C;w=B;x=E;y=F;z=c;A=l;D=k;i=G;C=v;B=w;E=x;F=y;c=z;l=A;k=D;continue d}if((d[R+(i<<1)>>1]|0)==13?(d[R+(G<<1)>>1]|0)==10:0){v=C;w=B;x=E;y=F;z=c;A=l;D=k;i=G;C=v;B=w;E=x;F=y;c=z;l=A;k=D;continue d}if((b[I>>0]|0)!=0?(L=f[U>>2]|0,(G|0)>=(f[L>>2]|0)):0)g=Na(f[T>>2]|0,L,G)|0;else g=b[K>>0]|0;d[P>>1]=g&255;bb(M,g);D=E;k=0;l=0;c=0;F=0;B=g;C=g;i=G;E=D;continue d}case 18:{b[D>>0]=B;t=C;w=B;x=E;y=F;z=c;A=l;D=k;e=v;i=G;C=t;B=w;E=x;F=y;c=z;l=A;k=D;continue d}default:{if(r){db(M,E,B,C);e=f[((g&128|0)==0?240:232)+(n<<2)>>2]|m}b[D>>0]=C;if(!((cb(M,i)|0)<<24>>24)){S=78;break d}v=C;B=C;w=E;y=F;z=c;A=l;D=k;e=1<>0]|e;i=G;C=v;E=w;F=y;c=z;l=A;k=D;continue d}}}if((S|0)==78){e=-1;break}if(e&8380376)e=f[96+((b[K>>0]&1)<<2)>>2]|e;e=(e&128|0)!=0&(b[a+96>>0]|0)!=0&1|e;f[N>>2]=e;e=$a(e)|0}}else e=0}while(0);u=W;return e|0}function Ta(a,c,e,g,h){a=a|0;c=c|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0;A=u;u=u+32|0;y=A;z=f[a+76>>2]|0;if((f[a+128>>2]|0)>(c|0)){if((b[a+98>>0]|0)!=0?(i=f[a+140>>2]|0,(f[i>>2]|0)<=(c|0)):0)i=Na(f[a+136>>2]|0,i,c)|0;else i=b[a+97>>0]|0;if(i&1)s=((f[a+88>>2]|0)+-5|0)>>>0<2;else s=0}else s=0;f[y+12>>2]=-1;f[y+16>>2]=-1;f[y+24>>2]=c;x=b[(f[a+80>>2]|0)+c>>0]|0;b[y+28>>0]=x;w=f[a+116>>2]|0;x=x&1;f[y>>2]=f[w+(x<<2)>>2];f[y+4>>2]=f[w+8+(x<<2)>>2];if((c|0)==0?(f[a+104>>2]|0)>0:0){x=Wa(a)|0;g=x<<24>>24==4?g:x}i=b[z+c>>0]|0;t=y+8|0;v=a+248|0;w=y+20|0;x=a+244|0;if(i<<24>>24==22?(j=f[x>>2]|0,(j|0)>-1):0){q=f[v>>2]|0;f[t>>2]=f[q+(j<<4)>>2];k=f[q+(j<<4)+4>>2]|0;r=d[q+(j<<4)+12>>1]|0;f[w>>2]=f[q+(j<<4)+8>>2];f[x>>2]=j+-1;j=r}else{f[t>>2]=-1;f[w>>2]=0;Xa(a,y,g,c,c);k=c;j=i<<24>>24==17?(g&255)+1&65535:0}i=e+-1|0;g=-1;l=1;m=c;r=c;a:while(1){b:while(1){q=m;n=j;c:while(1){if((q|0)>(e|0))break a;p=q+1|0;if((q|0)>=(e|0)){j=i;while(1){m=b[z+j>>0]|0;if((j|0)<=(c|0))break;if(!(1<<(m&255)&382976))break;else j=j+-1|0}if((m&-2)<<24>>24==20)break a;else{j=h;o=l}}else{j=b[z+q>>0]|0;if(j<<24>>24==7)f[x>>2]=-1;d:do{if(s){switch(j<<24>>24){case 13:{j=1;break d}case 2:break;default:break d}e:do{if((g|0)<=(q|0)){g=p;while(1){if((g|0)>=(e|0)){g=e;l=1;break e}j=b[z+g>>0]|0;switch(j<<24>>24){case 13:case 1:case 0:{l=j;break e}default:{}}g=g+1|0}}}while(0);j=l<<24>>24==13?5:2}}while(0);j=b[66514+(j&255)>>0]|0;o=l}m=n&65535;l=b[(j&255)+(66539+(m<<4))>>0]|0;j=l&31;l=(l&255)>>>5;l=(q|0)==(e|0)&l<<24>>24==0?1:l&255;if(!(l<<16>>16)){l=o;q=p;n=j;continue}switch(l&7){case 2:{l=o;m=p;r=q;continue a}case 4:break b;case 1:{n=36;break c}case 3:{n=37;break c}default:{l=o;q=p;n=j}}}if((n|0)==36){Xa(a,y,b[66539+(m<<4)+15>>0]|0,k,q);l=o;m=p;k=q;continue}else if((n|0)==37){Xa(a,y,b[66539+(m<<4)+15>>0]|0,k,r);Xa(a,y,4,r,q);l=o;m=p;k=q;continue}}Xa(a,y,b[66539+(m<<4)+15>>0]|0,k,r);k=r;l=o;m=p;r=q}j=a+16|0;if((f[j>>2]|0)==(e|0)?(f[a+112>>2]|0)>0:0){s=Ya(a)|0;h=s<<24>>24==4?h:s}while(1){g=b[z+i>>0]|0;if((i|0)<=(c|0))break;if(!(1<<(g&255)&382976))break;else i=i+-1|0}if((g&-2)<<24>>24==20?(f[j>>2]|0)>(e|0):0){z=(f[x>>2]|0)+1|0;f[x>>2]=z;y=f[v>>2]|0;d[y+(z<<4)+12>>1]=n;f[y+(z<<4)+8>>2]=f[w>>2];f[y+(z<<4)+4>>2]=k;f[y+(z<<4)>>2]=f[t>>2]}else Xa(a,y,h,e,e);u=A;return}function Ua(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;m=f[a+76>>2]|0;o=f[a+80>>2]|0;a:do{if(f[a+124>>2]&8248192|0){i=a+98|0;j=a+97|0;k=a+140|0;l=(b[a+96>>0]|0)!=0;h=a+136|0;a=f[a+132>>2]|0;b:while(1){if((a|0)<=0)break a;while(1){if((a|0)<=0)break;d=a+-1|0;c=b[m+d>>0]|0;if(!(1<<(c&255)&8248192)){a=d;break}e=o+d|0;do{if(l&c<<24>>24==7)a=0;else{if(b[i>>0]|0?(n=f[k>>2]|0,(a|0)>(f[n>>2]|0)):0){a=Na(f[h>>2]|0,n,d)|0;break}a=b[j>>0]|0}}while(0);b[e>>0]=a;a=d}while(1){if((a|0)<=0)continue b;e=a+-1|0;c=b[m+e>>0]|0;d=1<<(c&255);g=o+e|0;if(d&382976|0){b[g>>0]=b[o+a>>0]|0;a=e;continue}if(l&c<<24>>24==7){a=0;break}if(!(d&384))a=e;else{q=17;break}}do{if((q|0)==17){q=0;if(b[i>>0]|0?(p=f[k>>2]|0,(a|0)>(f[p>>2]|0)):0){a=Na(f[h>>2]|0,p,e)|0;break}a=b[j>>0]|0}}while(0);b[g>>0]=a;a=e}}}while(0);return}function Va(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+332|0;d=f[j>>2]|0;k=a+344|0;l=a+348|0;do{if(!d){d=Rb(80)|0;f[l>>2]=d;if(!d){f[k>>2]=7;break}else{f[j>>2]=10;e=d;h=10;i=d;g=6;break}}else{i=f[l>>2]|0;e=i;h=d;g=6}}while(0);a:do{if((g|0)==6){a=a+336|0;d=f[a>>2]|0;do{if((d|0)>=(h|0)){e=Sb(i,h<<4)|0;f[l>>2]=e;if(!e){f[l>>2]=i;f[k>>2]=7;break a}else{f[j>>2]=f[j>>2]<<1;d=f[a>>2]|0;break}}}while(0);f[e+(d<<3)>>2]=b;f[e+(d<<3)+4>>2]=c;f[a>>2]=(f[a>>2]|0)+1}}while(0);return}function Wa(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;e=f[a+100>>2]|0;b=f[a+104>>2]|0;a:while(1){if((b|0)<=0){b=4;g=6;break}d=b+-1|0;c=j[e+(d<<1)>>1]|0;if((b|0)!=1&(c&64512|0)==56320){b=b+-2|0;i=j[e+(b<<1)>>1]|0;h=(i&64512|0)==55296;c=h?c+-56613888+(i<<10)|0:c;b=h?b:d}else b=d;switch(((Za(a,c)|0)&255)<<24>>24){case 0:{b=0;g=6;break a}case 13:case 1:{g=7;break a}case 7:{b=4;break a}default:{}}}if((g|0)!=6)if((g|0)==7)b=1;return b|0}function Xa(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=f[c>>2]|0;w=f[c+4>>2]|0;y=a+80|0;z=f[y>>2]|0;x=c+20|0;k=f[x>>2]&255;j=h[(d&255)+(m+(k<<3))>>0]|0;v=j&15;f[x>>2]=v;j=b[w+(j>>>4)>>0]|0;v=b[m+(v<<3)+7>>0]|0;w=c+28|0;x=v&255;a:do{if(!(j<<24>>24))i=e;else{r=c+16|0;p=c+12|0;o=g+-1|0;u=c+8|0;q=d<<24>>24==5;i=e+-1|0;l=a+332|0;s=a+340|0;t=a+336|0;do{switch(j<<24>>24){case 1:{f[u>>2]=e;i=e;break a}case 2:{i=f[u>>2]|0;break a}case 3:{_a(f[a+76>>2]|0,z,f[u>>2]|0,e,(h[w>>0]|0)+1&255);i=e;break a}case 4:{_a(f[a+76>>2]|0,z,f[u>>2]|0,e,(h[w>>0]|0)+2&255);i=e;break a}case 5:{i=f[p>>2]|0;if((i|0)>-1)Va(a,i,1);f[p>>2]=-1;if(f[l>>2]|0?(f[t>>2]|0)>(f[s>>2]|0):0){i=f[r>>2]|0;while(1){i=i+1|0;if((i|0)>=(e|0))break;u=z+i|0;b[u>>0]=(h[u>>0]|0)+254&254}f[s>>2]=f[t>>2];f[r>>2]=-1;if(!q){i=e;break a}Va(a,e,1);f[s>>2]=f[t>>2];i=e;break a}f[r>>2]=-1;if(!(b[m+(k<<3)+7>>0]&1))i=e;else{i=f[u>>2]|0;i=(i|0)>0?i:e}if(!q)break a;Va(a,e,1);f[s>>2]=f[t>>2];break a}case 6:{if((f[l>>2]|0)>0)f[t>>2]=f[s>>2];f[u>>2]=-1;f[p>>2]=-1;f[r>>2]=o;i=e;break a}case 7:{i=f[p>>2]|0;j=(i|0)==-1;if((d<<24>>24==3?(b[(f[a+76>>2]|0)+e>>0]|0)==5:0)?(f[a+88>>2]|0)!=6:0){if(j){f[r>>2]=o;i=e;break a}if((i|0)>-1){Va(a,i,1);f[p>>2]=-2}Va(a,e,1);i=e;break a}if(!j){i=e;break a}f[p>>2]=e;i=e;break a}case 8:{f[r>>2]=o;f[u>>2]=-1;i=e;break a}case 9:{while(1){if((i|0)<=-1)break;if(b[z+i>>0]&1){n=37;break}i=i+-1|0}if((n|0)==37){Va(a,i,4);f[s>>2]=f[t>>2]}f[u>>2]=e;i=e;break a}case 10:{Va(a,e,1);Va(a,e,2);i=e;break a}case 11:{f[t>>2]=f[s>>2];if(!q){i=e;break a}Va(a,e,4);f[s>>2]=f[t>>2];i=e;break a}case 12:{l=(h[w>>0]|0)+x|0;k=l&255;l=l&255;i=f[u>>2]|0;while(1){if((i|0)>=(e|0))break;j=z+i|0;if((h[j>>0]|0)>>>0>>0)b[j>>0]=k;i=i+1|0}f[s>>2]=f[t>>2];f[u>>2]=e;i=e;break a}case 13:{l=b[w>>0]|0;d=l&255;m=d+3|0;n=d+2|0;d=d+1&255;while(1){if((i|0)<(f[u>>2]|0)){i=e;break a}j=b[z+i>>0]|0;b:do{if((j&255|0)==(m|0)){while(1){if((j&255|0)!=(m|0))break;j=i+-1|0;b[z+i>>0]=d;i=j;j=b[z+j>>0]|0}while(1){k=i+-1|0;if(j<<24>>24!=l<<24>>24)break b;i=k;j=b[z+k>>0]|0}}}while(0);b[z+i>>0]=(j&255|0)==(n|0)?l:d;i=i+-1|0}}case 14:{l=(h[w>>0]|0)+1&255;while(1){if((i|0)<(f[u>>2]|0)){i=e;break a}j=z+i|0;k=h[j>>0]|0;if(k>>>0>l>>>0)b[j>>0]=k+254;i=i+-1|0}}default:{i=e;break a}}}while(0)}}while(0);c:do{if(v<<24>>24!=0|(i|0)<(e|0)){j=(h[w>>0]|0)+x&255;if((i|0)<(f[c+24>>2]|0)){_a(f[a+76>>2]|0,f[y>>2]|0,i,g,j);break}while(1){if((i|0)>=(g|0))break c;b[z+i>>0]=j;i=i+1|0}}}while(0);return}function Ya(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,k=0;e=f[a+108>>2]|0;g=f[a+112>>2]|0;b=0;a:while(1){if((b|0)>=(g|0)){b=4;h=6;break}d=b+1|0;c=j[e+(b<<1)>>1]|0;if((d|0)==(g|0)|(c&64512|0)!=55296)b=d;else{k=j[e+(d<<1)>>1]|0;i=(k&64512|0)==56320;c=i?(c<<10)+-56613888+k|0:c;b=i?b+2|0:d}switch(((Za(a,c)|0)&255)<<24>>24){case 0:{b=0;h=6;break a}case 13:case 1:{h=7;break a}case 2:{h=8;break a}case 5:{b=3;break a}default:{}}}if((h|0)!=6)if((h|0)==7)b=1;else if((h|0)==8)b=2;return b|0}function Za(a,b){a=a|0;b=b|0;var c=0,d=0;d=f[a+356>>2]|0;if(!((d|0)!=0?(c=wa[d&0](f[a+360>>2]|0,b)|0,(c|0)!=23):0))c=Zb(f[a+4>>2]|0,b)|0;return(c>>>0>22?10:c)|0}function _a(a,c,d,e,f){a=a|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=0;while(1){if((d|0)>=(e|0))break;h=b[a+d>>0]|0;g=((h<<24>>24==22)<<31>>31)+g|0;if(!g)b[c+d>>0]=f;d=d+1|0;g=g+((h&-2)<<24>>24==20&1)|0}return}function $a(a){a=a|0;if((a&2154498|0)==0?(a&32|0)==0|(a&8249304|0)==0:0)a=0;else a=(a&26220581|0)==0?1:2;return a|0}function ab(a,c){a=a|0;c=c|0;var e=0,g=0,h=0,i=0;f[c>>2]=a;f[c+492>>2]=0;d[c+500>>1]=0;d[c+502>>1]=0;g=a+97|0;h=c+504|0;if((b[a+98>>0]|0)!=0?(e=f[a+140>>2]|0,(f[e>>2]|0)<=0):0){g=f[a+136>>2]|0;i=Na(g,e,0)|0;b[h>>0]=i;e=Na(g,e,0)|0}else{e=b[g>>0]|0;b[h>>0]=e}e=e&1;f[c+508>>2]=e&255;b[c+506>>0]=e;b[c+505>>0]=e;f[c+496>>2]=0;e=f[a+56>>2]|0;g=c+484|0;if(!e){f[g>>2]=c+4;e=20}else{f[g>>2]=e;e=((f[a+32>>2]|0)>>>0)/24|0}f[c+488>>2]=e;i=f[a+88>>2]|0;b[c+2528>>0]=((i|0)==1|(i|0)==6)&1;return}function bb(a,c){a=a|0;c=c|0;f[a+492>>2]=0;d[a+502>>1]=0;b[a+504>>0]=c;c=c&1;f[a+508>>2]=c&255;b[a+506>>0]=c;b[a+505>>0]=c;f[a+496>>2]=0;return}function cb(a,c){a=a|0;c=c|0;var e=0,g=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;s=f[a+492>>2]|0;l=f[a>>2]|0;q=(f[l+76>>2]|0)+c|0;e=b[q>>0]|0;r=a+496+(s<<4)+12|0;n=a+496+(s<<4)+10|0;w=a+484|0;p=a+496+(s<<4)+9|0;t=a+496+(s<<4)+6|0;v=a+496+(s<<4)+4|0;s=a+496+(s<<4)|0;a:do{if(e<<24>>24==10){g=d[(f[l+8>>2]|0)+(c<<1)>>1]|0;i=j[v>>1]|0;k=g&65535;o=j[t>>1]|0;while(1){x=o;o=o+-1|0;if((x|0)<=(i|0))break;if((f[(f[w>>2]|0)+(o*24|0)+4>>2]|0)==(k|0)){u=5;break}}if((u|0)==5){g=gb(a,o,c)|0;if(g<<24>>24==10){u=19;break}b[n>>0]=10;f[r>>2]=g&255;f[s>>2]=c;e=f[(f[a>>2]|0)+80>>2]|0;i=e+c|0;g=h[i>>0]|0;if(g&128){g=g&1;b[p>>0]=g;g=1<>1]|0;while(1){if((e|0)>=(o|0))break;x=(f[w>>2]|0)+(e*24|0)+12|0;d[x>>1]=j[x>>1]|g;e=e+1|0}b[i>>0]=b[i>>0]&127;e=f[(f[a>>2]|0)+80>>2]|0}e=e+(f[(f[w>>2]|0)+(o*24|0)>>2]|0)|0;b[e>>0]=b[e>>0]&127;e=1;break}if((g<<16>>16!=0?(m=(dc(k)|0)&65535,m<<16>>16!=g<<16>>16):0)?(ac(f[l+4>>2]|0,k)|0)==1:0){b:do{if(m<<16>>16<12297){switch(m<<16>>16){case 9002:break;default:break b}if(!((hb(a,12297,c)|0)<<24>>24)){e=0;break a}}else{switch(m<<16>>16){case 12297:break;default:break b}if(!((hb(a,9002,c)|0)<<24>>24)){e=0;break a}}}while(0);if(!((hb(a,m,c)|0)<<24>>24))e=0;else u=19}else u=19}else u=19}while(0);c:do{if((u|0)==19){g=h[(f[(f[a>>2]|0)+80>>2]|0)+c>>0]|0;d:do{if(!(g&128))switch(e<<24>>24){case 0:case 1:case 13:{u=e<<24>>24!=0;b[n>>0]=e;b[p>>0]=e;f[r>>2]=u&1;f[s>>2]=c;e=u&1;u=34;break d}case 2:{b[n>>0]=2;g=b[p>>0]|0;if(!(g<<24>>24))if(!(b[a+2528>>0]|0)){e=0;i=23;g=0;u=28}else{e=0;g=0}else{e=1;i=g<<24>>24==13?5:24;g=1;u=28}if((u|0)==28)b[q>>0]=i;f[r>>2]=g;f[s>>2]=c;u=34;break d}case 5:{b[n>>0]=5;f[r>>2]=1;f[s>>2]=c;e=1;break d}case 17:{e=b[n>>0]|0;if(e<<24>>24!=10){u=34;break d}b[q>>0]=10;e=1;break c}default:{b[n>>0]=e;u=34;break d}}else{g=g&1;i=g&255;if((e+-8&255)>=3)b[q>>0]=i;b[n>>0]=i;b[p>>0]=i;f[r>>2]=g;f[s>>2]=c;e=i;u=34}}while(0);if((u|0)==34)switch(e<<24>>24){case 0:case 1:case 13:break;default:{e=1;break c}}k=1<<(e<<24>>24!=0&1);i=j[t>>1]|0;e=j[v>>1]|0;while(1){if((e|0)>=(i|0)){e=1;break c}g=f[w>>2]|0;if((f[g+(e*24|0)>>2]|0)<(c|0)){x=g+(e*24|0)+12|0;d[x>>1]=j[x>>1]|k}e=e+1|0}}}while(0);return e|0}function db(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var i=0;i=f[a+492>>2]|0;if(!(1<<(h[(f[(f[a>>2]|0)+76>>2]|0)+c>>0]|0)&7864320)){d[a+496+(i<<4)+6>>1]=d[a+496+(i<<4)+4>>1]|0;b[a+496+(i<<4)+8>>0]=g;g=((g&127)>(e&127)?g:e)&1;f[a+496+(i<<4)+12>>2]=g&255;b[a+496+(i<<4)+10>>0]=g;b[a+496+(i<<4)+9>>0]=g;f[a+496+(i<<4)>>2]=c}return}function eb(a,c){a=a|0;c=c|0;var e=0,g=0,h=0;g=a+492|0;h=f[g>>2]|0;e=a+496+(h<<4)|0;b[a+496+(h<<4)+10>>0]=10;a=d[a+496+(h<<4)+6>>1]|0;f[g>>2]=h+1;d[e+22>>1]=a;d[e+20>>1]=a;b[e+24>>0]=c;c=c&1;f[e+28>>2]=c&255;b[e+26>>0]=c;b[e+25>>0]=c;f[e+16>>2]=0;return}function fb(a){a=a|0;var c=0,d=0;d=a+492|0;c=(f[d>>2]|0)+-1|0;f[d>>2]=c;b[a+496+(c<<4)+10>>0]=10;return}function gb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,h=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=f[a+492>>2]|0;q=a+484|0;o=f[q>>2]|0;g=b[a+496+(p<<4)+8>>0]&1;h=g&255;k=a+496+(p<<4)+4|0;p=a+496+(p<<4)+6|0;m=c&65535;i=j[o+(c*24|0)+12>>1]|0;do{if(g<<24>>24!=0|(i&1|0)==0)if(g<<24>>24==0|(i&2|0)==0)if(!(i&3)){d[p>>1]=m;g=10;break}else{i=f[o+(c*24|0)+16>>2]|0;g=(h|0)==(i|0)?g:i&255;i=(j[k>>1]|0|0)!=(c|0);l=6;break}else{i=0;l=6}else{g=0;i=0;l=6}}while(0);a:do{if((l|0)==6){n=o+(c*24|0)|0;b[(f[(f[a>>2]|0)+76>>2]|0)+(f[n>>2]|0)>>0]=g;b[(f[(f[a>>2]|0)+76>>2]|0)+e>>0]=g;ib(a,c,f[n>>2]|0,g);h=d[k>>1]|0;l=h&65535;if(!i){c=m;while(1){d[p>>1]=c;if((c&65535)<=(h&65535))break a;if((f[(f[q>>2]|0)+(((c&65535)+-1|0)*24|0)>>2]|0)==(f[n>>2]|0))c=c+-1<<16>>16;else break a}}a=c;k=0-e|0;h=o+(c*24|0)+4|0;while(1){f[h>>2]=k;h=a+-1|0;if((a|0)<=(l|0))break;i=f[q>>2]|0;if((f[i+(h*24|0)>>2]|0)!=(f[n>>2]|0))break;a=h;k=0;h=i+(h*24|0)+4|0}i=j[p>>1]|0;while(1){c=c+1|0;if((c|0)>=(i|0))break a;h=f[q>>2]|0;if((f[h+(c*24|0)>>2]|0)>=(e|0))break a;h=h+(c*24|0)+4|0;if((f[h>>2]|0)<=0)continue;f[h>>2]=0}}}while(0);return g|0}function hb(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=f[a+492>>2]|0;l=a+496+(k<<4)+6|0;g=d[l>>1]|0;e=g&65535;i=a+488|0;j=a+484|0;if((e|0)>=(f[i>>2]|0)){h=f[a>>2]|0;g=h+56|0;h=h+32|0;if(!((La(g,h,1,e*48|0)|0)<<24>>24))e=0;else{e=f[j>>2]|0;if((e|0)==(a+4|0))Jc(f[g>>2]|0,e|0,480)|0;e=f[g>>2]|0;f[j>>2]=e;f[i>>2]=((f[h>>2]|0)>>>0)/24|0;g=d[l>>1]|0;m=7}}else{e=f[j>>2]|0;m=7}if((m|0)==7){m=g&65535;f[e+(m*24|0)>>2]=c;f[e+(m*24|0)+4>>2]=b&65535;f[e+(m*24|0)+16>>2]=f[a+496+(k<<4)+12>>2];f[e+(m*24|0)+8>>2]=f[a+496+(k<<4)>>2];d[e+(m*24|0)+12>>1]=0;d[l>>1]=g+1<<16>>16;e=1}return e|0}function ib(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,k=0,l=0,m=0,n=0;m=f[(f[a>>2]|0)+76>>2]|0;g=c+1|0;h=e&255;i=a+496+(f[a+492>>2]<<4)+6|0;c=(f[a+484>>2]|0)+(g*24|0)|0;while(1){if((g|0)>=(j[i>>1]|0|0))break;k=c+4|0;if((f[k>>2]|0)<=-1){if((f[c+8>>2]|0)>(d|0))break;l=f[c>>2]|0;if((l|0)>(d|0)){if((h|0)==(f[c+16>>2]|0))break;b[m+l>>0]=e;n=0-(f[k>>2]|0)|0;b[m+n>>0]=e;f[k>>2]=0;ib(a,g,l,e);ib(a,g,n,e)}}c=c+24|0;g=g+1|0}return}function jb(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,k=0;g=f[a+100>>2]|0;h=f[a+104>>2]|0;c=0;e=10;a:while(1){if((c|0)>=(h|0))break;d=c+1|0;b=j[g+(c<<1)>>1]|0;if((d|0)==(h|0)|(b&64512|0)!=55296)c=d;else{k=j[g+(d<<1)>>1]|0;i=(k&64512|0)==56320;b=i?(b<<10)+-56613888+k|0:b;c=i?c+2|0:d}b=Za(a,b)|0;d=b&255;if(e<<24>>24!=10){e=(b&255|0)==7?10:e;continue}switch(d<<24>>24){case 13:case 1:case 0:break;default:{e=10;continue a}}e=d}return e|0}function kb(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;c=f[a+136>>2]|0;d=a+140|0;b=f[d>>2]|0;e=a+60|0;g=a+36|0;if((b|0)==(a+144|0))if((c|0)>=11)if(!((La(e,g,1,160)|0)<<24>>24))b=0;else{c=f[e>>2]|0;f[d>>2]=c;a=c+80|0;do{f[c>>2]=f[b>>2];c=c+4|0;b=b+4|0}while((c|0)<(a|0));b=1}else b=1;else if(!((La(e,g,1,c<<4)|0)<<24>>24))b=0;else{f[d>>2]=f[e>>2];b=1}return b|0}function lb(a){a=a|0;var b=0;do{if(!a)a=0;else{b=f[a>>2]|0;if((b|0)!=(a|0)){if(!b){a=0;break}if((f[b>>2]|0)!=(b|0)){a=0;break}}a=f[a+16>>2]|0}}while(0);return a|0}function mb(a){a=a|0;var b=0;do{if(!a)a=0;else{b=f[a>>2]|0;if((b|0)!=(a|0)){if(!b){a=0;break}if((f[b>>2]|0)!=(b|0)){a=0;break}}a=f[a+136>>2]|0}}while(0);return a|0}function nb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;a:do{if(d|0?(f[d>>2]|0)<=0:0){do{if(a|0){e=f[a>>2]|0;if((e|0)!=(a|0)){if(!e)break;if((f[e>>2]|0)!=(e|0))break}if((b|0)>=0?(f[a+136>>2]|0)>(b|0):0){if(!c)break a;f[c>>2]=f[(f[e+140>>2]|0)+(b<<3)>>2];break a}f[d>>2]=1;break a}}while(0);f[d>>2]=27}}while(0);return}function ob(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:do{if((c|0)!=0?(f[c>>2]|0)<=0:0){do{if(a|0){e=f[a>>2]|0;if((e|0)!=(a|0)){if(!e)break;if((f[e>>2]|0)!=(e|0))break}if((b|0)>=0?(f[e+16>>2]|0)>(b|0):0){d=f[e+140>>2]|0;a=0;while(1)if((f[d+(a<<3)>>2]|0)>(b|0))break;else a=a+1|0;nb(e,a,0,c);break a}f[c>>2]=1;a=-1;break a}}while(0);f[c>>2]=27;a=-1}else a=-1}while(0);return a|0}function pb(a,b,c,e,g,h){a=a|0;b=b|0;c=c|0;e=e|0;g=g|0;h=h|0;var i=0,k=0,l=0,m=0,n=0,o=0,p=0;l=g&65535;g=(e|0)<(b|0);a:do{switch(l&11){case 0:{if(g){f[h>>2]=15;g=b;break a}else{k=b;g=c}while(1){i=k+-1|0;c=k+-2|0;if((k|0)>1?(d[a+(i<<1)>>1]&-1024)<<16>>16==-9216:0)i=(d[a+(c<<1)>>1]&-1024)<<16>>16==-10240?c:i;c=i;do{o=c;c=c+1|0;p=g;g=g+2|0;d[p>>1]=d[a+(o<<1)>>1]|0}while((c|0)<(k|0));if((i|0)>0)k=i;else{g=b;break}}break}case 1:{if(g){f[h>>2]=15;g=b;break a}else{h=b;e=c}while(1){c=h;while(1){i=c+-1|0;g=j[a+(i<<1)>>1]|0;if((c|0)>1&(g&64512|0)==56320){c=c+-2|0;o=j[a+(c<<1)>>1]|0;p=(o&64512|0)==55296;g=p?g+-56613888+(o<<10)|0:g;c=p?c:i}else c=i;if((c|0)<=0){k=0;break}if(!(1<<((Yb(g)|0)<<24>>24)&448)){k=1;break}}i=c;g=e;do{o=i;i=i+1|0;p=g;g=g+2|0;d[p>>1]=d[a+(o<<1)>>1]|0}while((i|0)<(h|0));if(k){h=c;e=g}else{g=b;break}}break}default:{o=(l&8|0)!=0;if(o){i=a;k=b;g=0;while(1){n=i;i=i+2|0;n=j[n>>1]|0;g=((((n+-8294|0)>>>0<4|((n&65532|0)==8204|(n+-8234|0)>>>0<5))^1)&1)+g|0;if((k|0)<=1)break;else k=k+-1|0}a=i+(0-b<<1)|0}else g=b;if((g|0)>(e|0)){f[h>>2]=15;break a}n=(l&1|0)!=0;m=(l&2|0)==0;l=b;while(1){k=l+-1|0;i=j[a+(k<<1)>>1]|0;if((l|0)>1&(i&64512|0)==56320){b=l+-2|0;e=j[a+(b<<1)>>1]|0;h=(e&64512|0)==55296;i=h?i+-56613888+(e<<10)|0:i;k=h?b:k}b:do{if(n&(k|0)>0)do{if(!(1<<((Yb(i)|0)<<24>>24)&448))break b;e=k+-1|0;i=j[a+(e<<1)>>1]|0;if((k|0)>1&(i&64512|0)==56320){k=k+-2|0;h=j[a+(k<<1)>>1]|0;b=(h&64512|0)==55296;i=b?i+-56613888+(h<<10)|0:i;k=b?k:e}else k=e}while((k|0)>0)}while(0);if(o){if((i&-4|0)!=8204)switch(i|0){case 8234:case 8235:case 8236:case 8237:case 8238:case 8294:case 8295:case 8296:case 8297:break;default:p=35}}else p=35;c:do{if((p|0)==35){p=0;if(m)i=k;else{i=cc(i)|0;if(i>>>0<65536){h=1;e=c}else{d[c>>1]=(i>>>10)+55232;h=2;i=i&1023|56320;e=c+2|0}d[e>>1]=i;i=h+k|0;c=c+(h<<1)|0}while(1){if((i|0)>=(l|0))break c;d[c>>1]=d[a+(i<<1)>>1]|0;i=i+1|0;c=c+2|0}}}while(0);if((k|0)>0)l=k;else break}}}}while(0);return g|0}function qb(a,c,e,g,i){a=a|0;c=c|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=u;u=u+16|0;A=C+4|0;B=C;a:do{if((i|0)!=0?(f[i>>2]|0)<=0:0){if(((a|0?(z=f[a+8>>2]|0,z|0):0)?(j=f[a+16>>2]|0,(j|e|0)>=0):0)?(k=(c|0)==0,!(k&(e|0)>0)):0){do{if(!k){if(!(z>>>0>=c>>>0&z>>>0<(c+(e<<1)|0)>>>0)){if(z>>>0>c>>>0)break;if((z+(f[a+12>>2]<<1)|0)>>>0<=c>>>0)break}f[i>>2]=1;j=0;break a}}while(0);if(!j){Wb(c,e,0,i)|0;j=0;break}w=vb(a,i)|0;if((f[i>>2]|0)>0){j=0;break}v=f[a+92>>2]|0;x=g&-13;x=(v&2|0)==0?(v&1|0)==0?g:x|4:x|8;x=((f[a+88>>2]|0)+-3|0)>>>0<4?x:x&-5;v=x&65535;j=(v&4|0)!=0;k=a+76|0;y=v&65533;b:do{if(!(v&16)){if(!j){l=c;j=e;m=0;while(1){if((m|0)>=(w|0))break b;v=(Ab(a,m,A,B)|0)==0;k=z+(f[A>>2]<<1)|0;g=f[B>>2]|0;if(v)k=rb(k,g,l,j,y,i)|0;else k=pb(k,g,l,j,x,i)|0;f[B>>2]=k;l=(l|0)==0?0:l+(k<<1)|0;j=j-k|0;m=m+1|0}}s=f[k>>2]|0;t=a+228|0;v=a+84|0;j=e;r=0;k=c;while(1){if((r|0)>=(w|0))break b;D=Ab(a,r,A,B)|0;l=f[A>>2]|0;q=z+(l<<1)|0;g=f[(f[t>>2]|0)+(r*12|0)+8>>2]|0;g=(g|0)>0?g:0;m=(b[v>>0]|0)!=0;o=j+-1|0;p=k+2|0;n=(j|0)<1;do{if(!D){if(m)g=(b[s+l>>0]|0)!=0|g;l=(g&1|0)==0?(g&4|0)==0?0:8207:8206;m=l<<16>>16==0;if(n|m)j=m?j:o;else{d[k>>1]=l;j=o;k=p}l=rb(q,f[B>>2]|0,k,j,y,i)|0;f[B>>2]=l;k=(k|0)==0?0:k+(l<<1)|0;j=j-l|0;if(b[v>>0]|0)g=(b[s+(l+-1+(f[A>>2]|0))>>0]|0)==0?g:g|2;if(!(g&10))break;if((j|0)>0){d[k>>1]=8207-((g&2)>>>1)<<16>>16;k=k+2|0}j=j+-1|0}else{if(m)g=(1<>2]|0))>>0]&8194|0)==0?g|4:g;l=(g&1|0)==0?(g&4|0)==0?0:8207:8206;m=l<<16>>16==0;if(n|m)j=m?j:o;else{d[k>>1]=l;j=o;k=p}D=pb(q,f[B>>2]|0,k,j,x,i)|0;f[B>>2]=D;k=(k|0)==0?0:k+(D<<1)|0;j=j-D|0;if(b[v>>0]|0)g=(1<>2]|0)>>0]&8194|0)==0?g|8:g;if(!(g&10))break;if((j|0)>0){d[k>>1]=8207-((g&2)>>>1)<<16>>16;k=k+2|0}j=j+-1|0}}while(0);r=r+1|0}}else{if(!j){m=c;k=w;j=e;while(1){l=k+-1|0;if((k|0)<=0)break b;D=(Ab(a,l,A,B)|0)==0;k=z+(f[A>>2]<<1)|0;g=f[B>>2]|0;if(D)g=pb(k,g,m,j,y,i)|0;else g=rb(k,g,m,j,x,i)|0;f[B>>2]=g;m=(m|0)==0?0:m+(g<<1)|0;k=l;j=j-g|0}}r=f[k>>2]|0;k=c;g=w;j=e;while(1){q=g+-1|0;if((g|0)<=0)break b;D=Ab(a,q,A,B)|0;g=f[A>>2]|0;p=z+(g<<1)|0;m=k+2|0;o=j+-1|0;l=(j|0)<1;if(!D){n=f[B>>2]|0;g=(b[r+(g+-1+n)>>0]|0)==0;if(l|g)j=g?j:o;else{d[k>>1]=8206;k=m;j=o}D=pb(p,n,k,j,y,i)|0;f[B>>2]=D;k=(k|0)==0?0:k+(D<<1)|0;j=j-D|0;if(!(b[r+(f[A>>2]|0)>>0]|0)){g=q;continue}if((j|0)>0){d[k>>1]=8206;k=k+2|0}g=q;j=j+-1|0;continue}else{g=(1<>0]&8194|0)!=0;if(l|g)j=g?j:o;else{d[k>>1]=8207;k=m;j=o}D=rb(p,f[B>>2]|0,k,j,x,i)|0;f[B>>2]=D;k=(k|0)==0?0:k+(D<<1)|0;j=j-D|0;if(1<>2]|0))>>0]&8194|0){g=q;continue}if((j|0)>0){d[k>>1]=8207;k=k+2|0}g=q;j=j+-1|0;continue}}}}while(0);j=Wb(c,e,e-j|0,i)|0;break}f[i>>2]=1;j=0}else j=0}while(0);u=C;return j|0}function rb(a,b,c,e,g,h){a=a|0;b=b|0;c=c|0;e=e|0;g=g|0;h=h|0;var i=0,k=0,l=0,m=0;i=(e|0)<(b|0);a:do{switch(g&10){case 0:{if(i){f[h>>2]=15;g=b;break a}else{i=b;g=c;while(1){d[g>>1]=d[a>>1]|0;if((i|0)>1){a=a+2|0;i=i+-1|0;g=g+2|0}else{g=b;break}}}break}case 2:{if(i){f[h>>2]=15;g=b;break a}else{l=0;i=0}do{k=i+1|0;g=j[a+(i<<1)>>1]|0;if((k|0)==(b|0)|(g&64512|0)!=55296)i=k;else{h=j[a+(k<<1)>>1]|0;e=(h&64512|0)==56320;g=e?(g<<10)+-56613888+h|0:g;i=e?i+2|0:k}k=cc(g)|0;m=l+1|0;g=c+(l<<1)|0;if(k>>>0<65536)l=m;else{d[g>>1]=(k>>>10)+55232;l=l+2|0;k=k&1023|56320;g=c+(m<<1)|0}d[g>>1]=k}while((i|0)<(b|0));g=b;break}case 8:{l=e;i=b;b:while(1){k=a;a=a+2|0;k=d[k>>1]|0;c:do{if((k&-4)<<16>>16==8204)g=l;else{switch(k<<16>>16){case 8234:case 8235:case 8236:case 8237:case 8238:case 8294:case 8295:case 8296:case 8297:{g=l;break c}default:{}}g=l+-1|0;if((l|0)<1){m=15;break b}d[c>>1]=k;c=c+2|0}}while(0);if((i|0)<=1)break;else{l=g;i=i+-1|0}}d:do{if((m|0)==15){f[h>>2]=15;while(1){if((i|0)<=1)break d;h=j[a>>1]|0;g=((((h+-8294|0)>>>0<4|((h&65532|0)==8204|(h+-8234|0)>>>0<5))^1)<<31>>31)+g|0;i=i+-1|0;a=a+2|0}}}while(0);g=e-g|0;break}default:{g=0;i=e;e:while(1){k=j[a>>1]|0;if((b|0)==1|(k&64512|0)!=55296)l=1;else{m=j[a+2>>1]|0;l=(m&64512|0)==56320;k=l?(k<<10)+-56613888+m|0:k;l=l?2:1}a=a+(l<<1)|0;b=b-l|0;f:do{if((k&-4|0)!=8204){switch(k|0){case 8234:case 8235:case 8236:case 8237:case 8238:case 8294:case 8295:case 8296:case 8297:break f;default:{}}i=i-l|0;if((i|0)<0)break e;l=cc(k)|0;m=g+1|0;k=c+(g<<1)|0;if(l>>>0<65536)g=m;else{d[k>>1]=(l>>>10)+55232;g=g+2|0;l=l&1023|56320;k=c+(m<<1)|0}d[k>>1]=l}}while(0);if((b|0)<=0)break a}f[h>>2]=15;g=b;while(1){if((g|0)<=0)break;h=j[a>>1]|0;i=((((h+-8294|0)>>>0<4|((h&65532|0)==8204|(h+-8234|0)>>>0<5))^1)<<31>>31)+i|0;g=g+-1|0;a=a+2|0}g=e-i|0}}}while(0);return g|0}function sb(a,c,e,g,i){a=a|0;c=c|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;do{if(i|0?(f[i>>2]|0)<=0:0){if(a|0?(f[a>>2]|0)==(a|0):0){if(!((c|0)>-1&(e|0)>(c|0))){f[i>>2]=1;break}if((e|0)>=0?(f[a+16>>2]|0)>=(e|0):0){if(!g){f[i>>2]=1;break}p=ob(a,c,i)|0;if((p|0)!=(ob(a,e+-1|0,i)|0)){f[i>>2]=1;break}f[g>>2]=0;m=a+8|0;f[g+8>>2]=(f[m>>2]|0)+(c<<1);o=e-c|0;f[g+16>>2]=o;f[g+12>>2]=o;n=g+20|0;f[n>>2]=o;if((b[a+98>>0]|0)!=0?(j=f[a+140>>2]|0,(f[j>>2]|0)<=(c|0)):0){p=f[a+136>>2]|0;i=Na(p,j,c)|0;j=p}else{i=b[a+97>>0]|0;j=f[a+136>>2]|0}p=g+97|0;b[p>>0]=i;f[g+136>>2]=j;f[g+228>>2]=0;f[g+124>>2]=0;f[g+88>>2]=f[a+88>>2];f[g+92>>2]=f[a+92>>2];l=g+352|0;f[l>>2]=0;if((f[a+352>>2]|0)>0){k=c;i=0;while(1){if((k|0)>=(e|0))break;j=d[(f[m>>2]|0)+(k<<1)>>1]|0;if((j&-4)<<16>>16==8204)q=23;else switch(j<<16>>16){case 8234:case 8235:case 8236:case 8237:case 8238:case 8294:case 8295:case 8296:case 8297:{q=23;break}default:{}}if((q|0)==23){q=0;i=i+1|0;f[l>>2]=i}k=k+1|0}f[n>>2]=o-i}f[g+76>>2]=(f[a+76>>2]|0)+c;l=(f[a+80>>2]|0)+c|0;f[g+80>>2]=l;f[g+224>>2]=-1;i=f[a+120>>2]|0;m=g+120|0;n=g+132|0;a:do{if((i|0)==2){tb(g);k=f[n>>2]|0;b:do{if(!k)i=b[p>>0]&1;else{i=b[l>>0]&1;if((k|0)<(o|0)?(b[p>>0]&1)!=i<<24>>24:0){i=2;break}else j=1;while(1){if((j|0)==(k|0))break b;if((b[l+j>>0]&1)==i<<24>>24)j=j+1|0;else{i=2;break}}}}while(0);f[m>>2]=i&255;switch(i&3){case 0:{i=(h[p>>0]|0)+1&254;break}case 1:{i=b[p>>0]|1;break}default:break a}b[p>>0]=i;i=0;q=38}else{f[m>>2]=i;i=f[a+132>>2]|0;i=(i|0)>(c|0)?(i|0)<(e|0)?i-c|0:o:0;q=38}}while(0);if((q|0)==38)f[n>>2]=i;f[g>>2]=a;break}f[i>>2]=1;break}f[i>>2]=27}}while(0);return}function tb(a){a=a|0;var c=0,d=0,e=0,g=0,i=0;d=f[a+76>>2]|0;g=f[a+80>>2]|0;c=f[a+16>>2]|0;i=b[a+97>>0]|0;e=a+132|0;a:do{if((b[d+(c+-1)>>0]|0)!=7){while(1){if((c|0)<=0)break;a=c+-1|0;if(!(1<>0]&8248192))break;else c=a}while(1){if((c|0)<=0)break a;a=c+-1|0;if((b[g+a>>0]|0)==i<<24>>24)c=a;else break}}}while(0);f[e>>2]=c;return}function ub(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;a:do{if((c|0)!=0?(f[c>>2]|0)<=0:0){do{if(a|0){d=f[a>>2]|0;if((d|0)!=(a|0)){if(!d)break;if((f[d>>2]|0)!=(d|0))break}e=f[a+16>>2]|0;if((e|0)<1){f[c>>2]=1;d=0;break a}g=a+132|0;h=f[g>>2]|0;i=a+80|0;if((e|0)==(h|0)){d=f[i>>2]|0;break a}d=a+52|0;if(!((La(d,a+28|0,b[a+72>>0]|0,e)|0)<<24>>24)){f[c>>2]=7;d=0;break a}d=f[d>>2]|0;if((h|0)>0?(j=f[i>>2]|0,(d|0)!=(j|0)):0)Jc(d|0,j|0,h|0)|0;Ic(d+h|0,b[a+97>>0]|0,e-h|0)|0;f[g>>2]=e;f[i>>2]=d;break a}}while(0);f[c>>2]=27;d=0}else d=0}while(0);return d|0}function vb(a,b){a=a|0;b=b|0;var c=0;a:do{if((b|0)!=0?(f[b>>2]|0)<=0:0){do{if(a|0){c=f[a>>2]|0;if((c|0)!=(a|0)){if(!c)break;if((f[c>>2]|0)!=(c|0))break}wb(a,b);if((f[b>>2]|0)>0){a=-1;break a}a=f[a+224>>2]|0;break a}}while(0);f[b>>2]=27;a=-1}else a=-1}while(0);return a|0}function wb(a,c){a=a|0;c=c|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=a+224|0;a:do{if((f[u>>2]|0)<=-1){s=a+97|0;v=a+228|0;t=a+16|0;do{if((f[a+120>>2]|0)==2){p=f[t>>2]|0;r=f[a+80>>2]|0;q=f[a+132>>2]|0;e=0;i=0;g=-2;while(1){j=i+1|0;if((e|0)>=(q|0))break;o=b[r+e>>0]|0;e=e+1|0;i=o<<24>>24==g<<24>>24?i:j;g=o}if((p|0)==(q|0)&(i|0)==1){xb(a,b[r>>0]|0);break}m=(p|0)>(q|0);o=m?j:i;e=a+64|0;if(!((La(e,a+40|0,b[a+73>>0]|0,o*12|0)|0)<<24>>24))break a;n=f[e>>2]|0;l=0;e=126;k=0;i=0;while(1){g=b[r+i>>0]|0;e=(g&255)<(e&255)?g:e;k=(g&255)>(k&255)?g:k;j=i;while(1){j=j+1|0;if((j|0)>=(q|0)){g=0;break}if((b[r+j>>0]|0)!=g<<24>>24){g=1;break}}f[n+(l*12|0)>>2]=i;f[n+(l*12|0)+4>>2]=j-i;f[n+(l*12|0)+8>>2]=0;l=l+1|0;if(!g)break;else i=j}if(m){f[n+(l*12|0)>>2]=q;f[n+(l*12|0)+4>>2]=p-q;q=b[s>>0]|0;e=(q&255)<(e&255)?q:e}f[v>>2]=n;f[u>>2]=o;yb(a,e,k);e=0;g=0;while(1){if((g|0)>=(o|0))break;p=n+(g*12|0)|0;q=f[p>>2]|0;f[p>>2]=h[r+q>>0]<<31|q;p=n+(g*12|0)+4|0;q=(f[p>>2]|0)+e|0;f[p>>2]=q;e=q;g=g+1|0}if((l|0)<(o|0)){r=h[s>>0]|0;s=n+((r&1|0?0:l)*12|0)|0;f[s>>2]=r<<31|f[s>>2]}}else xb(a,b[s>>0]|0)}while(0);e=f[a+336>>2]|0;b:do{if((e|0)>0){s=f[a+348>>2]|0;g=s+(e<<3)|0;e=s;while(1){if(e>>>0>=g>>>0)break b;s=zb(f[u>>2]|0,f[v>>2]|0,f[e>>2]|0,c)|0;s=(f[v>>2]|0)+(s*12|0)+8|0;f[s>>2]=f[s>>2]|f[e+4>>2];e=e+8|0}}}while(0);if((f[a+352>>2]|0)>0){e=f[a+8>>2]|0;i=e+(f[t>>2]<<1)|0;j=e;while(1){if(e>>>0>=i>>>0)break a;g=d[e>>1]|0;if((g&-4)<<16>>16==8204)w=31;else switch(g<<16>>16){case 8234:case 8235:case 8236:case 8237:case 8238:case 8294:case 8295:case 8296:case 8297:{w=31;break}default:{}}if((w|0)==31){w=0;t=zb(f[u>>2]|0,f[v>>2]|0,e-j>>1,c)|0;t=(f[v>>2]|0)+(t*12|0)+8|0;f[t>>2]=(f[t>>2]|0)+-1}e=e+2|0}}}}while(0);return}function xb(a,b){a=a|0;b=b|0;var c=0;c=a+232|0;f[a+228>>2]=c;f[a+224>>2]=1;f[c>>2]=(b&255)<<31;f[a+236>>2]=f[a+16>>2];f[a+240>>2]=0;return}function yb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o;a:do{if(((b|1)&255)<(c&255)){l=b+1<<24>>24;m=f[a+228>>2]|0;i=f[a+80>>2]|0;j=a+132|0;k=a+16|0;g=(((f[j>>2]|0)<(f[k>>2]|0))<<31>>31)+(f[a+224>>2]|0)|0;b=c;b:while(1){b=b+-1<<24>>24;if((b&255)<(l&255))break;else a=0;while(1){while(1){if((a|0)>=(g|0))continue b;if((h[i+(f[m+(a*12|0)>>2]|0)>>0]|0)>=(b&255)){c=a;break}a=a+1|0}while(1){e=c+1|0;if((e|0)>=(g|0)){d=c;break}if((h[i+(f[m+(e*12|0)>>2]|0)>>0]|0)<(b&255)){d=c;break}else c=e}while(1){if((a|0)>=(d|0))break;q=m+(a*12|0)|0;f[n>>2]=f[q>>2];f[n+4>>2]=f[q+4>>2];f[n+8>>2]=f[q+8>>2];p=m+(d*12|0)|0;f[q>>2]=f[p>>2];f[q+4>>2]=f[p+4>>2];f[q+8>>2]=f[p+8>>2];f[p>>2]=f[n>>2];f[p+4>>2]=f[n+4>>2];f[p+8>>2]=f[n+8>>2];d=d+-1|0;a=a+1|0}if((e|0)==(g|0))continue b;else a=c+2|0}}if(!(l&1)){b=(((f[j>>2]|0)==(f[k>>2]|0))<<31>>31)+g|0;a=0;while(1){if((a|0)>=(b|0))break a;p=m+(a*12|0)|0;f[n>>2]=f[p>>2];f[n+4>>2]=f[p+4>>2];f[n+8>>2]=f[p+8>>2];q=m+(b*12|0)|0;f[p>>2]=f[q>>2];f[p+4>>2]=f[q+4>>2];f[p+8>>2]=f[q+8>>2];f[q>>2]=f[n>>2];f[q+4>>2]=f[n+4>>2];f[q+8>>2]=f[n+8>>2];b=b+-1|0;a=a+1|0}}}}while(0);u=o;return}function zb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;g=0;e=0;while(1){if((e|0)>=(a|0)){i=6;break}h=f[b+(e*12|0)+4>>2]|0;j=f[b+(e*12|0)>>2]&2147483647;if((j|0)<=(c|0)?(h-g+j|0)>(c|0):0)break;g=h;e=e+1|0}if((i|0)==6){f[d>>2]=27;e=0}return e|0}function Ab(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;i=u;u=u+16|0;e=i;f[e>>2]=0;do{if(a){g=f[a>>2]|0;if((g|0)!=(a|0)){if(!g){h=5;break}if((f[g>>2]|0)!=(g|0)){h=5;break}}wb(a,e);if((f[e>>2]|0)>0)a=0;else{if((b|0)>=0?(f[a+224>>2]|0)>(b|0):0){a=f[a+228>>2]|0\\n;e=f[a+(b*12|0)>>2]|0;if(c|0)f[c>>2]=e&2147483647;if(d|0){if((b|0)>0)a=(f[a+(b*12|0)+4>>2]|0)-(f[a+((b+-1|0)*12|0)+4>>2]|0)|0;else a=f[a+4>>2]|0;f[d>>2]=a}a=e>>>31;break}f[e>>2]=1;a=0}}else h=5}while(0);if((h|0)==5){f[e>>2]=27;a=0}u=i;return a|0}function Bb(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:do{if(c|0?(f[c>>2]|0)<=0:0){if(!b){f[c>>2]=1;break}vb(a,c)|0;if((f[c>>2]|0)<1?(p=f[a+228>>2]|0,k=a+224|0,l=p+((f[k>>2]|0)*12|0)|0,m=a+20|0,(f[m>>2]|0)>=1):0){j=p;e=0;c=b;while(1){if(j>>>0>=l>>>0)break;g=f[j>>2]|0;i=f[j+4>>2]|0;if((g|0)>-1)while(1){h=c+4|0;f[c>>2]=g;e=e+1|0;if((e|0)<(i|0)){g=g+1|0;c=h}else{c=h;break}}else{h=i-e+(g&2147483647)|0;while(1){h=h+-1|0;g=c+4|0;f[c>>2]=h;e=e+1|0;if((e|0)>=(i|0)){c=g;break}else c=g}}j=j+12|0}if((f[a+336>>2]|0)>0){e=f[k>>2]|0;g=0;c=0;while(1){if((c|0)>=(e|0))break;o=f[p+(c*12|0)+8>>2]|0;g=((o&5|0)!=0&1)+g+((o&10|0)!=0&1)|0;c=c+1|0}h=f[m>>2]|0;while(1){a=e+-1|0;if(!((e|0)>0&(g|0)>0))break a;m=f[p+(a*12|0)+8>>2]|0;c=h+-1|0;if(!(m&10))c=h;else{f[b+(c<<2)>>2]=-1;g=g+-1|0}if((e|0)>1)l=f[p+((e+-2|0)*12|0)+4>>2]|0;else l=0;k=(g|0)>0;j=f[p+(a*12|0)+4>>2]|0;while(1){e=j+-1|0;h=c+-1|0;i=b+(h<<2)|0;if(!(k&(j|0)>(l|0)))break;f[i>>2]=f[b+(e<<2)>>2];j=e;c=h}if(!(m&5)){h=c;e=a;continue}f[i>>2]=-1;e=a;g=g+-1|0}}if((f[a+352>>2]|0)>0){o=f[k>>2]|0;m=a+8|0;c=0;a=0;e=0;while(1){if((a|0)>=(o|0))break a;n=f[p+(a*12|0)+4>>2]|0;l=n-e|0;g=(f[p+(a*12|0)+8>>2]|0)==0;b:do{if((c|0)==(e|0)&g)c=l+c|0;else{if(g)while(1){if((e|0)>=(n|0))break b;f[b+(c<<2)>>2]=f[b+(e<<2)>>2];e=e+1|0;c=c+1|0}j=f[p+(a*12|0)>>2]|0;i=j&2147483647;j=(j|0)>-1;k=l+-1+i|0;h=0;while(1){if((h|0)>=(l|0))break b;e=j?h+i|0:k-h|0;g=d[(f[m>>2]|0)+(e<<1)>>1]|0;c:do{if((g&-4)<<16>>16!=8204){switch(g<<16>>16){case 8234:case 8235:case 8236:case 8237:case 8238:case 8294:case 8295:case 8296:case 8297:break c;default:{}}f[b+(c<<2)>>2]=e;c=c+1|0}}while(0);h=h+1|0}}}while(0);a=a+1|0;e=n}}}}}while(0);return}function Cb(a,b,c,e,g){a=a|0;b=b|0;c=c|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=u;u=u+656|0;j=o+32|0;l=o+56|0;m=o+28|0;n=o+24|0;k=o;if(!g){n=0;u=o;return n|0}if((Db(f[g>>2]|0)|0)<<24>>24){n=0;u=o;return n|0}if(!((a|0)==0|(b|0)<-1)?(h=(c|0)==0,!((e|0)<0|h&(e|0)!=0)):0){if((b|0)==-1)b=Ub(a)|0;if((b|0)<1){Wb(c,e,0,g)|0;n=0;u=o;return n|0}do{if(!h){if(!(a>>>0<=c>>>0&(a+(b<<1)|0)>>>0>c>>>0)?!(c>>>0<=a>>>0&(c+(e<<1)|0)>>>0>a>>>0):0)break;f[g>>2]=1;n=0;u=o;return n|0}}while(0);f[m>>2]=0;f[n>>2]=0;h=Fb(a,b)|0;if((h|0)>(e|0)){f[g>>2]=15;n=h;u=o;return n|0}h=(b|0)>(h|0)?b:h;if((h|0)>=301){i=Rb(h<<1)|0;if(!i){f[g>>2]=7;n=0;u=o;return n|0}}else{i=l;h=300}Vb(i,a,b)|0;if((h|0)>(b|0))Ic(i+(b<<1)|0,0,h-b<<1|0)|0;Gb(i,b,m,n);Hb(i,b,f[m>>2]|0,f[n>>2]|0);d[k>>1]=8203;d[k+2>>1]=0;f[k+4>>2]=3;f[k+8>>2]=2;f[k+12>>2]=262144;f[k+16>>2]=393216;f[k+20>>2]=0;f[j>>2]=f[k>>2];f[j+4>>2]=f[k+4>>2];f[j+8>>2]=f[k+8>>2];f[j+12>>2]=f[k+12>>2];f[j+16>>2]=f[k+16>>2];f[j+20>>2]=f[k+20>>2];b=Ib(i,b,g,j)|0;Gb(i,b,m,n);Hb(i,b,f[m>>2]|0,f[n>>2]|0);Vb(c,i,Qb(b,e)|0)|0;if((i|0)!=(l|0))Tb(i);if((b|0)>(e|0)){f[g>>2]=15;n=b;u=o;return n|0}else{n=Wb(c,e,b,g)|0;u=o;return n|0}}f[g>>2]=1;n=0;u=o;return n|0}function Db(a){a=a|0;return(a|0)>0|0}function Eb(a){a=a|0;var b=0;b=a&65535;if((a+-1570&65535)<178){b=d[1454+(b+-1570<<1)>>1]|0;return b|0}if(a<<16>>16==8205){b=3;return b|0}if((a+-8301&65535)<3){b=4;return b|0}if((a+1200&65535)<275){b=h[67545+(b+-64336)>>0]|0;return b|0}if((a+400&65535)>=141){b=0;return b|0}b=h[67820+(b+-65136)>>0]|0;return b|0}function Fb(a,b){a=a|0;b=b|0;var c=0,e=0,f=0,g=0,h=0;g=b+-1|0;c=0;f=b;a:while(1){do{if((c|0)>=(b|0))break a;e=d[a+(c<<1)>>1]|0;h=c;c=c+1|0;if((h|0)<(g|0)&e<<16>>16==1604?Ob(d[a+(c<<1)>>1]|0)|0:0)break}while(!(Pb(e)|0));f=f+-1|0}return f|0}function Gb(a,b,c,e){a=a|0;b=b|0;c=c|0;e=e|0;var g=0,h=0;h=0;while(1){g=(h|0)<(b|0);if(g&(d[a+(h<<1)>>1]|0)==32)h=h+1|0;else break}if(g)g=0;else{a=0;f[c>>2]=h;f[e>>2]=a;return}while(1){b=b+-1|0;if((d[a+(b<<1)>>1]|0)!=32)break;else g=g+1|0}f[c>>2]=h;f[e>>2]=g;return}function Hb(a,b,c,e){a=a|0;b=b|0;c=c|0;e=e|0;var f=0,g=0;b=b-e|0;while(1){b=b+-1|0;if((c|0)>=(b|0))break;g=a+(c<<1)|0;f=d[g>>1]|0;e=a+(b<<1)|0;d[g>>1]=d[e>>1]|0;d[e>>1]=f;c=c+1|0}return}function Ib(a,b,c,e){a=a|0;b=b|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=u;u=u+32|0;z=B;j=0;while(1){if((j|0)>=(b|0))break;k=a+(j<<1)|0;g=d[k>>1]|0;i=g&65535;if((g+1200&65535)<176){g=d[820+(i+-64336<<1)>>1]|0;if(g<<16>>16)A=7}else if((g+400&65535)<141){g=d[1172+(i+-65136<<1)>>1]|0;A=7}else A=7;if((A|0)==7){A=0;d[k>>1]=g}j=j+1|0}w=b+-1|0;y=w;m=0;p=Eb(d[a+(w<<1)>>1]|0)|0;j=0;k=0;q=0;r=0;o=0;i=-2;while(1){if((w|0)==-1)break;n=p&65535;if((n&65280|0)==0?((Eb(d[a+(w<<1)>>1]|0)|0)&4)==0:0){v=m;n=i;g=w}else A=13;do{if((A|0)==13){A=0;g=w+-1|0;v=m;x=i;a:while(1){l=(x|0)<0;i=g;while(1){if(!l)break a;if((i|0)==-1){g=-1;v=0;x=3e3;continue a}m=Eb(d[a+(i<<1)>>1]|0)|0;t=(m&4)==0;g=((t^1)<<31>>31)+i|0;if(t){v=m;x=i;continue a}else i=g}}if((j&16)==0|(n&32|0)==0){s=p;t=o;g=w}else{g=a+(w<<1)|0;i=Kb(d[g>>1]|0)|0;if(!(i<<16>>16))g=w;else{d[g>>1]=-1;d[a+(y<<1)>>1]=i;g=y}s=Eb(i)|0;j=k;t=1}if((g|0)>0){if((d[a+(g+-1<<1)>>1]|0)==32){p=d[a+(g<<1)>>1]|0;w=(Lb(p)|0)==0;q=p<<16>>16==1574&w?1:q;r=w?r:1}}else if(!g){p=d[a>>1]|0;w=(Lb(p)|0)==0;q=p<<16>>16==1574&w?1:q;r=w?r:1}m=v&65535;n=j&65535;p=s&65535;w=p&3;o=h[67473+((m&3)<<4)+((n&3)<<2)+w>>0]|0;if((w|0)!=1){l=a+(g<<1)|0;i=d[l>>1]|0;if(Mb(i)|0)if((n&2|0)==0|(m&1|0)==0|(i&-2)<<16>>16==1612)o=0;else o=n>>>4&1^1|m>>>5&1^1}else{i=a+(g<<1)|0;o=o&1;l=i;i=d[i>>1]|0}if(((i^1536)&65535)<256){if(Mb(i)|0){d[l>>1]=o+65136+(h[67537+((i&65535)+-1611)>>0]|0);p=s;o=t;n=x;break}i=p>>>8;if(p&8|0){d[l>>1]=i+64336+o;p=s;o=t;n=x;break}if((i|0)!=0&(p&4|0)==0){d[l>>1]=i+65136+o;p=s;o=t;n=x}else{p=s;o=t;n=x}}else{p=s;o=t;n=x}}}while(0);i=(p&4)==0;k=i?j:k;j=i?p:j;i=i?g:y;l=g+-1|0;if((l|0)==(n|0)){y=i;m=v;p=v;i=-2;w=l;continue}if(!g){y=i;m=v;i=n;w=l;continue}y=i;m=v;p=Eb(d[a+(l<<1)>>1]|0)|0;i=n;w=l}if(o){f[z>>2]=f[e>>2];f[z+4>>2]=f[e+4>>2];f[z+8>>2]=f[e+8>>2];f[z+12>>2]=f[e+12>>2];f[z+16>>2]=f[e+16>>2];f[z+20>>2]=f[e+20>>2];b=Nb(a,b,b,c,z)|0}if(!(q|r)){A=b;u=B;return A|0}A=Jb(b)|0;u=B;return A|0}function Jb(a){a=a|0;return a|0}function Kb(a){a=a|0;switch(a<<16>>16){case 1570:{a=1628;break}case 1571:{a=1629;break}case 1573:{a=1630;break}case 1575:{a=1631;break}default:a=0}return a|0}function Lb(a){a=a|0;return(a+-1587&65535)<4|0}function Mb(a){a=a|0;return(a+-1611&65535)<8|0}function Nb(a,b,c,e,g){a=a|0;b=b|0;c=c|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=(b<<1)+2|0;n=Rb(m)|0;if(!n){f[e>>2]=7;n=0;return n|0}Ic(n|0,0,m|0)|0;c=0;h=0;e=0;while(1){if((e|0)>=(b|0))break;i=d[a+(e<<1)>>1]|0;if(i<<16>>16==-1){c=c+1|0;h=h+-1|0}else d[n+(h<<1)>>1]=i;h=h+1|0;e=e+1|0}while(1){if((c|0)<=-1)break;d[n+(e<<1)>>1]=0;e=e+-1|0;c=c+-1|0}Vb(a,n,b)|0;if(f[g+4>>2]|0){c=Ub(a)|0;if(!(f[g+12>>2]|0)){j=1;k=0;l=14}}else{j=(f[g+12>>2]|0)==0;k=1;l=14}if((l|0)==14){Ic(n|0,0,m|0)|0;c=b;e=0;i=b;while(1){if((i|0)<=-1){c=0;break}h=d[a+(i<<1)>>1]|0;if(k&h<<16>>16==-1|j&h<<16>>16==-2){c=c+1|0;e=e+1|0}else d[n+(c<<1)>>1]=h;c=c+-1|0;i=i+-1|0}while(1){if((c|0)>=(e|0))break;d[n+(c<<1)>>1]=32;c=c+1|0}Vb(a,n,b)|0;c=b}k=(f[g+8>>2]|0)==0;g=(f[g+16>>2]|0)==0;j=g|k^1;if(k|g){Ic(n|0,0,m|0)|0;h=0;c=0;e=0;while(1){if((e|0)>=(b|0))break;i=d[a+(e<<1)>>1]|0;if(k&i<<16>>16==-1|j&i<<16>>16==-2){h=h+-1|0;c=c+1|0}else d[n+(h<<1)>>1]=i;h=h+1|0;e=e+1|0}while(1){if((c|0)<=-1)break;d[n+(e<<1)>>1]=32;e=e+-1|0;c=c+-1|0}Vb(a,n,b)|0;c=b}Tb(n);n=c;return n|0}function Ob(a){a=a|0;a=a+-1570<<16>>16;if((a&65535)>=6){a=0;return a|0}a=43>>>(a&63)&1;return a|0}function Pb(a){a=a|0;return(a&-16)<<16>>16==-400|0}function Qb(a,b){a=a|0;b=b|0;return((a|0)>(b|0)?b:a)|0}function Rb(a){a=a|0;if(!a)a=68880;else a=fc(a)|0;return a|0}function Sb(a,b){a=a|0;b=b|0;do{if((a|0)!=68880)if(!b){gc(a);a=68880;break}else{a=hc(a,b)|0;break}else a=Rb(b)|0}while(0);return a|0}function Tb(a){a=a|0;if((a|0)!=68880)gc(a);return}function Ub(a){a=a|0;var b=0;b=a;while(1)if(!(d[b>>1]|0))break;else b=b+2|0;return b-a>>1|0}function Vb(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<=0)return a|0;Jc(a|0,b|0,c<<1|0)|0;return a|0}function Wb(a,b,c,e){a=a|0;b=b|0;c=c|0;e=e|0;if(!e)return c|0;if((c|0)<0|(Xb(f[e>>2]|0)|0)<<24>>24==0)return c|0;if((c|0)>=(b|0)){f[e>>2]=(c|0)==(b|0)?-124:15;return c|0}d[a+(c<<1)>>1]=0;if((f[e>>2]|0)!=-124)return c|0;f[e>>2]=0;return c|0}function Xb(a){a=a|0;return(a|0)<1|0}function Yb(a){a=a|0;var b=0,c=0,e=0;b=a>>5;c=a&31;do{if(a>>>0>=55296){if(a>>>0<65536){b=((a|0)<56320?320:0)+b|0;e=6;break}if(a>>>0>1114111)b=4536;else{b=(j[1810+((a>>>11)+2080<<1)>>1]|0)+(b&63)|0;e=6}}else e=6}while(0);if((e|0)==6)b=((j[1810+(b<<1)>>1]|0)<<2)+c|0;return d[1810+(b<<1)>>1]&31|0}function Zb(a,b){a=a|0;b=b|0;var c=0,e=0,g=0;g=f[a+20>>2]|0;c=b>>5;e=b&31;do{if(b>>>0>=55296){if(b>>>0<65536){a=((j[g+(((b|0)<56320?320:0)+c<<1)>>1]|0)<<2)+e|0;break}if(b>>>0>1114111){a=(f[a+32>>2]|0)+128|0;break}if((f[a+52>>2]|0)>(b|0)){a=((j[g+((j[g+((b>>>11)+2080<<1)>>1]|0)+(c&63)<<1)>>1]|0)<<2)+e|0;break}else{a=f[a+56>>2]|0;break}}else a=((j[g+(c<<1)>>1]|0)<<2)+e|0}while(0);return d[g+(a<<1)>>1]&31|0}function _b(a){a=a|0;var b=0,c=0,e=0;b=a>>5;c=a&31;do{if(a>>>0>=55296){if(a>>>0<65536){b=((a|0)<56320?320:0)+b|0;e=6;break}if(a>>>0>1114111)b=3624;else{b=(j[43370+((a>>>11)+2080<<1)>>1]|0)+(b&63)|0;e=6}}else e=6}while(0);if((e|0)==6)b=((j[43370+(b<<1)>>1]|0)<<2)+c|0;return $b(a,d[43370+(b<<1)>>1]|0)|0}function $b(a,b){a=a|0;b=b|0;var c=0,d=0;b=b<<16>>16>>13;a:do{if((b|0)==-4){b=0;while(1){if((b|0)>=26)break a;c=f[392+(b<<2)>>2]|0;d=c&2097151;if((d|0)==(a|0))break;if((d|0)>(a|0))break a;else b=b+1|0}a=f[392+(c>>>21<<2)>>2]&2097151}else a=b+a|0}while(0);return a|0}function ac(a,b){a=a|0;b=b|0;var c=0,e=0,g=0;g=f[a+20>>2]|0;c=b>>5;e=b&31;do{if(b>>>0>=55296){if(b>>>0<65536){a=((j[g+(((b|0)<56320?320:0)+c<<1)>>1]|0)<<2)+e|0;break}if(b>>>0>1114111){a=(f[a+32>>2]|0)+128|0;break}if((f[a+52>>2]|0)>(b|0)){a=((j[g+((j[g+((b>>>11)+2080<<1)>>1]|0)+(c&63)<<1)>>1]|0)<<2)+e|0;break}else{a=f[a+56>>2]|0;break}}else a=((j[g+(c<<1)>>1]|0)<<2)+e|0}while(0);return(d[g+(a<<1)>>1]&768)>>>8|0}function bc(a){a=a|0;var b=0,c=0,e=0;b=a>>5;c=a&31;do{if(a>>>0>=55296){if(a>>>0<65536){b=((a|0)<56320?320:0)+b|0;e=6;break}if(a>>>0>1114111)b=3624;else{b=(j[43370+((a>>>11)+2080<<1)>>1]|0)+(b&63)|0;e=6}}else e=6}while(0);if((e|0)==6)b=((j[43370+(b<<1)>>1]|0)<<2)+c|0;b=d[43370+(b<<1)>>1]|0;if(b&768)a=$b(a,b)|0;return a|0}function cc(a){a=a|0;return _b(a)|0}function dc(a){a=a|0;return bc(a)|0}function ec(){return 68904}function fc(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=u;u=u+16|0;n=K;do{if(a>>>0<245){o=a>>>0<11?16:a+11&-8;a=o>>>3;s=f[17242]|0;c=s>>>a;if(c&3|0){a=(c&1^1)+a|0;c=69008+(a<<1<<2)|0;d=c+8|0;e=f[d>>2]|0;g=e+8|0;h=f[g>>2]|0;do{if((c|0)!=(h|0)){if(h>>>0<(f[17246]|0)>>>0)ja();b=h+12|0;if((f[b>>2]|0)==(e|0)){f[b>>2]=c;f[d>>2]=h;break}else ja()}else f[17242]=s&~(1<>2]=J|3;J=e+J+4|0;f[J>>2]=f[J>>2]|1;J=g;u=K;return J|0}r=f[17244]|0;if(o>>>0>r>>>0){if(c|0){i=2<>>12&16;a=a>>>i;d=a>>>5&8;a=a>>>d;g=a>>>2&4;a=a>>>g;c=a>>>1&2;a=a>>>c;b=a>>>1&1;b=(d|i|g|c|b)+(a>>>b)|0;a=69008+(b<<1<<2)|0;c=a+8|0;g=f[c>>2]|0;i=g+8|0;d=f[i>>2]|0;do{if((a|0)!=(d|0)){if(d>>>0<(f[17246]|0)>>>0)ja();e=d+12|0;if((f[e>>2]|0)==(g|0)){f[e>>2]=a;f[c>>2]=d;j=s;break}else ja()}else{j=s&~(1<>2]=o|3;d=g+o|0;f[d+4>>2]=h|1;f[d+h>>2]=h;if(r|0){e=f[17247]|0;b=r>>>3;c=69008+(b<<1<<2)|0;b=1<>2]|0;if(a>>>0<(f[17246]|0)>>>0)ja();else{k=a;l=b}}else{f[17242]=j|b;k=c;l=c+8|0}f[l>>2]=e;f[k+12>>2]=e;f[e+8>>2]=k;f[e+12>>2]=c}f[17244]=h;f[17247]=d;J=i;u=K;return J|0}k=f[17243]|0;if(k){a=(k&0-k)+-1|0;I=a>>>12&16;a=a>>>I;H=a>>>5&8;a=a>>>H;J=a>>>2&4;a=a>>>J;c=a>>>1&2;a=a>>>c;b=a>>>1&1;b=f[69272+((H|I|J|c|b)+(a>>>b)<<2)>>2]|0;a=(f[b+4>>2]&-8)-o|0;c=f[b+16+(((f[b+16>>2]|0)==0&1)<<2)>>2]|0;if(!c){j=b;h=a}else{do{I=(f[c+4>>2]&-8)-o|0;J=I>>>0>>0;a=J?I:a;b=J?c:b;c=f[c+16+(((f[c+16>>2]|0)==0&1)<<2)>>2]|0}while((c|0)!=0);j=b;h=a}e=f[17246]|0;if(j>>>0>>0)ja();i=j+o|0;if(j>>>0>=i>>>0)ja();g=f[j+24>>2]|0;c=f[j+12>>2]|0;do{if((c|0)==(j|0)){a=j+20|0;b=f[a>>2]|0;if(!b){a=j+16|0;b=f[a>>2]|0;if(!b){m=0;break}}while(1){c=b+20|0;d=f[c>>2]|0;if(d|0){b=d;a=c;continue}c=b+16|0;d=f[c>>2]|0;if(!d)break;else{b=d;a=c}}if(a>>>0>>0)ja();else{f[a>>2]=0;m=b;break}}else{d=f[j+8>>2]|0;if(d>>>0>>0)ja();b=d+12|0;if((f[b>>2]|0)!=(j|0))ja();a=c+8|0;if((f[a>>2]|0)==(j|0)){f[b>>2]=c;f[a>>2]=d;m=c;break}else ja()}}while(0);a:do{if(g|0){b=f[j+28>>2]|0;a=69272+(b<<2)|0;c=(m|0)==0;do{if((j|0)==(f[a>>2]|0)){f[a>>2]=m;if(c){f[17243]=k&~(1<>>0>=(f[17246]|0)>>>0){f[g+16+(((f[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=m;if(c)break a;else break}else ja()}while(0);a=f[17246]|0;if(m>>>0>>0)ja();f[m+24>>2]=g;b=f[j+16>>2]|0;do{if(b|0)if(b>>>0>>0)ja();else{f[m+16>>2]=b;f[b+24>>2]=m;break}}while(0);b=f[j+20>>2]|0;if(b|0)if(b>>>0<(f[17246]|0)>>>0)ja();else{f[m+20>>2]=b;f[b+24>>2]=m;break}}}while(0);if(h>>>0<16){J=h+o|0;f[j+4>>2]=J|3;J=j+J+4|0;f[J>>2]=f[J>>2]|1}else{f[j+4>>2]=o|3;f[i+4>>2]=h|1;f[i+h>>2]=h;if(r|0){d=f[17247]|0;b=r>>>3;c=69008+(b<<1<<2)|0;b=1<>2]|0;if(a>>>0<(f[17246]|0)>>>0)ja();else{p=a;q=b}}else{f[17242]=b|s;p=c;q=c+8|0}f[q>>2]=d;f[p+12>>2]=d;f[d+8>>2]=p;f[d+12>>2]=c}f[17244]=h;f[17247]=i}J=j+8|0;u=K;return J|0}}}else if(a>>>0<=4294967231){a=a+11|0;o=a&-8;k=f[17243]|0;if(k){d=0-o|0;a=a>>>8;if(a)if(o>>>0>16777215)i=31;else{q=(a+1048320|0)>>>16&8;C=a<>>16&4;C=C<>>16&2;i=14-(p|q|i)+(C<>>15)|0;i=o>>>(i+7|0)&1|i<<1}else i=0;c=f[69272+(i<<2)>>2]|0;b:do{if(!c){c=0;a=0;C=81}else{a=0;h=o<<((i|0)==31?0:25-(i>>>1)|0);g=0;while(1){e=(f[c+4>>2]&-8)-o|0;if(e>>>0>>0)if(!e){a=c;d=0;e=c;C=85;break b}else{a=c;d=e}e=f[c+20>>2]|0;c=f[c+16+(h>>>31<<2)>>2]|0;g=(e|0)==0|(e|0)==(c|0)?g:e;e=(c|0)==0;if(e){c=g;C=81;break}else h=h<<((e^1)&1)}}}while(0);if((C|0)==81){if((c|0)==0&(a|0)==0){a=2<>>12&16;q=q>>>l;j=q>>>5&8;q=q>>>j;m=q>>>2&4;q=q>>>m;p=q>>>1&2;q=q>>>p;c=q>>>1&1;a=0;c=f[69272+((j|l|m|p|c)+(q>>>c)<<2)>>2]|0}if(!c){j=a;i=d}else{e=c;C=85}}if((C|0)==85)while(1){C=0;c=(f[e+4>>2]&-8)-o|0;q=c>>>0>>0;c=q?c:d;a=q?e:a;e=f[e+16+(((f[e+16>>2]|0)==0&1)<<2)>>2]|0;if(!e){j=a;i=c;break}else{d=c;C=85}}if((j|0)!=0?i>>>0<((f[17244]|0)-o|0)>>>0:0){e=f[17246]|0;if(j>>>0>>0)ja();h=j+o|0;if(j>>>0>=h>>>0)ja();g=f[j+24>>2]|0;c=f[j+12>>2]|0;do{if((c|0)==(j|0)){a=j+20|0;b=f[a>>2]|0;if(!b){a=j+16|0;b=f[a>>2]|0;if(!b){r=0;break}}while(1){c=b+20|0;d=f[c>>2]|0;if(d|0){b=d;a=c;continue}c=b+16|0;d=f[c>>2]|0;if(!d)break;else{b=d;a=c}}if(a>>>0>>0)ja();else{f[a>>2]=0;r=b;break}}else{d=f[j+8>>2]|0;if(d>>>0>>0)ja();b=d+12|0;if((f[b>>2]|0)!=(j|0))ja();a=c+8|0;if((f[a>>2]|0)==(j|0)){f[b>>2]=c;f[a>>2]=d;r=c;break}else ja()}}while(0);c:do{if(g){b=f[j+28>>2]|0;a=69272+(b<<2)|0;c=(r|0)==0;do{if((j|0)==(f[a>>2]|0)){f[a>>2]=r;if(c){s=k&~(1<>>0>=(f[17246]|0)>>>0){f[g+16+(((f[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=r;if(c){s=k;break c}else break}else ja()}while(0);a=f[17246]|0;if(r>>>0>>0)ja();f[r+24>>2]=g;b=f[j+16>>2]|0;do{if(b|0)if(b>>>0>>0)ja();else{f[r+16>>2]=b;f[b+24>>2]=r;break}}while(0);b=f[j+20>>2]|0;if(b)if(b>>>0<(f[17246]|0)>>>0)ja();else{f[r+20>>2]=b;f[b+24>>2]=r;s=k;break}else s=k}else s=k}while(0);do{if(i>>>0>=16){f[j+4>>2]=o|3;f[h+4>>2]=i|1;f[h+i>>2]=i;b=i>>>3;if(i>>>0<256){c=69008+(b<<1<<2)|0;a=f[17242]|0;b=1<>2]|0;if(a>>>0<(f[17246]|0)>>>0)ja();else{x=a;y=b}}else{f[17242]=a|b;x=c;y=c+8|0}f[y>>2]=h;f[x+12>>2]=h;f[h+8>>2]=x;f[h+12>>2]=c;break}b=i>>>8;if(b)if(i>>>0>16777215)b=31;else{I=(b+1048320|0)>>>16&8;J=b<>>16&4;J=J<>>16&2;b=14-(H|I|b)+(J<>>15)|0;b=i>>>(b+7|0)&1|b<<1}else b=0;c=69272+(b<<2)|0;f[h+28>>2]=b;a=h+16|0;f[a+4>>2]=0;f[a>>2]=0;a=1<>2]=h;f[h+24>>2]=c;f[h+12>>2]=h;f[h+8>>2]=h;break}a=i<<((b|0)==31?0:25-(b>>>1)|0);d=f[c>>2]|0;while(1){if((f[d+4>>2]&-8|0)==(i|0)){C=139;break}c=d+16+(a>>>31<<2)|0;b=f[c>>2]|0;if(!b){C=136;break}else{a=a<<1;d=b}}if((C|0)==136)if(c>>>0<(f[17246]|0)>>>0)ja();else{f[c>>2]=h;f[h+24>>2]=d;f[h+12>>2]=h;f[h+8>>2]=h;break}else if((C|0)==139){b=d+8|0;a=f[b>>2]|0;J=f[17246]|0;if(a>>>0>=J>>>0&d>>>0>=J>>>0){f[a+12>>2]=h;f[b>>2]=h;f[h+8>>2]=a;f[h+12>>2]=d;f[h+24>>2]=0;break}else ja()}}else{J=i+o|0;f[j+4>>2]=J|3;J=j+J+4|0;f[J>>2]=f[J>>2]|1}}while(0);J=j+8|0;u=K;return J|0}}}else o=-1}while(0);c=f[17244]|0;if(c>>>0>=o>>>0){b=c-o|0;a=f[17247]|0;if(b>>>0>15){J=a+o|0;f[17247]=J;f[17244]=b;f[J+4>>2]=b|1;f[J+b>>2]=b;f[a+4>>2]=o|3}else{f[17244]=0;f[17247]=0;f[a+4>>2]=c|3;J=a+c+4|0;f[J>>2]=f[J>>2]|1}J=a+8|0;u=K;return J|0}h=f[17245]|0;if(h>>>0>o>>>0){H=h-o|0;f[17245]=H;J=f[17248]|0;I=J+o|0;f[17248]=I;f[I+4>>2]=H|1;f[J+4>>2]=o|3;J=J+8|0;u=K;return J|0}if(!(f[17360]|0)){f[17362]=4096;f[17361]=4096;f[17363]=-1;f[17364]=-1;f[17365]=0;f[17353]=0;a=n&-16^1431655768;f[n>>2]=a;f[17360]=a;a=4096}else a=f[17362]|0;i=o+48|0;j=o+47|0;g=a+j|0;e=0-a|0;k=g&e;if(k>>>0<=o>>>0){J=0;u=K;return J|0}a=f[17352]|0;if(a|0?(x=f[17350]|0,y=x+k|0,y>>>0<=x>>>0|y>>>0>a>>>0):0){J=0;u=K;return J|0}d:do{if(!(f[17353]&4)){c=f[17248]|0;e:do{if(c){d=69416;while(1){a=f[d>>2]|0;if(a>>>0<=c>>>0?(w=d+4|0,(a+(f[w>>2]|0)|0)>>>0>c>>>0):0)break;a=f[d+8>>2]|0;if(!a){C=163;break e}else d=a}b=g-h&e;if(b>>>0<2147483647){a=Hc(b|0)|0;if((a|0)==((f[d>>2]|0)+(f[w>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;C=180;break d}}else{d=a;C=171}}else b=0}else C=163}while(0);do{if((C|0)==163){c=Hc(0)|0;if((c|0)!=(-1|0)?(b=c,t=f[17361]|0,v=t+-1|0,b=((v&b|0)==0?0:(v+b&0-t)-b|0)+k|0,t=f[17350]|0,v=b+t|0,b>>>0>o>>>0&b>>>0<2147483647):0){y=f[17352]|0;if(y|0?v>>>0<=t>>>0|v>>>0>y>>>0:0){b=0;break}a=Hc(b|0)|0;if((a|0)==(c|0)){h=b;g=c;C=180;break d}else{d=a;C=171}}else b=0}}while(0);do{if((C|0)==171){c=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(d|0)!=(-1|0))))if((d|0)==(-1|0)){b=0;break}else{h=b;g=d;C=180;break d}a=f[17362]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=b;g=d;C=180;break d}if((Hc(a|0)|0)==(-1|0)){Hc(c|0)|0;b=0;break}else{h=a+b|0;g=d;C=180;break d}}}while(0);f[17353]=f[17353]|4;C=178}else{b=0;C=178}}while(0);if(((C|0)==178?k>>>0<2147483647:0)?(B=Hc(k|0)|0,y=Hc(0)|0,z=y-B|0,A=z>>>0>(o+40|0)>>>0,!((B|0)==(-1|0)|A^1|B>>>0>>0&((B|0)!=(-1|0)&(y|0)!=(-1|0))^1)):0){h=A?z:b;g=B;C=180}if((C|0)==180){b=(f[17350]|0)+h|0;f[17350]=b;if(b>>>0>(f[17351]|0)>>>0)f[17351]=b;k=f[17248]|0;do{if(k){b=69416;while(1){a=f[b>>2]|0;c=b+4|0;d=f[c>>2]|0;if((g|0)==(a+d|0)){C=190;break}e=f[b+8>>2]|0;if(!e)break;else b=e}if(((C|0)==190?(f[b+12>>2]&8|0)==0:0)?k>>>0>>0&k>>>0>=a>>>0:0){f[c>>2]=d+h;J=k+8|0;J=(J&7|0)==0?0:0-J&7;I=k+J|0;J=(f[17245]|0)+(h-J)|0;f[17248]=I;f[17245]=J;f[I+4>>2]=J|1;f[I+J+4>>2]=40;f[17249]=f[17364];break}b=f[17246]|0;if(g>>>0>>0){f[17246]=g;i=g}else i=b;c=g+h|0;b=69416;while(1){if((f[b>>2]|0)==(c|0)){C=198;break}a=f[b+8>>2]|0;if(!a)break;else b=a}if((C|0)==198?(f[b+12>>2]&8|0)==0:0){f[b>>2]=g;m=b+4|0;f[m>>2]=(f[m>>2]|0)+h;m=g+8|0;m=g+((m&7|0)==0?0:0-m&7)|0;b=c+8|0;b=c+((b&7|0)==0?0:0-b&7)|0;l=m+o|0;j=b-m-o|0;f[m+4>>2]=o|3;do{if((b|0)!=(k|0)){if((b|0)==(f[17247]|0)){J=(f[17244]|0)+j|0;f[17244]=J;f[17247]=l;f[l+4>>2]=J|1;f[l+J>>2]=J;break}a=f[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;f:do{if(a>>>0>=256){g=f[b+24>>2]|0;d=f[b+12>>2]|0;do{if((d|0)==(b|0)){d=b+16|0;c=d+4|0;a=f[c>>2]|0;if(!a){a=f[d>>2]|0;if(!a){H=0;break}else c=d}while(1){d=a+20|0;e=f[d>>2]|0;if(e|0){a=e;c=d;continue}d=a+16|0;e=f[d>>2]|0;if(!e)break;else{a=e;c=d}}if(c>>>0>>0)ja();else{f[c>>2]=0;H=a;break}}else{e=f[b+8>>2]|0;if(e>>>0>>0)ja();a=e+12|0;if((f[a>>2]|0)!=(b|0))ja();c=d+8|0;if((f[c>>2]|0)==(b|0)){f[a>>2]=d;f[c>>2]=e;H=d;break}else ja()}}while(0);if(!g)break;a=f[b+28>>2]|0;c=69272+(a<<2)|0;d=(H|0)==0;do{if((b|0)!=(f[c>>2]|0))if(g>>>0>=(f[17246]|0)>>>0){f[g+16+(((f[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=H;if(d)break f;else break}else ja();else{f[c>>2]=H;if(!d)break;f[17243]=f[17243]&~(1<>>0>>0)ja();f[H+24>>2]=g;a=b+16|0;c=f[a>>2]|0;do{if(c|0)if(c>>>0>>0)ja();else{f[H+16>>2]=c;f[c+24>>2]=H;break}}while(0);a=f[a+4>>2]|0;if(!a)break;if(a>>>0<(f[17246]|0)>>>0)ja();else{f[H+20>>2]=a;f[a+24>>2]=H;break}}else{c=f[b+8>>2]|0;d=f[b+12>>2]|0;a=69008+(e<<1<<2)|0;do{if((c|0)!=(a|0)){if(c>>>0>>0)ja();if((f[c+12>>2]|0)==(b|0))break;ja()}}while(0);if((d|0)==(c|0)){f[17242]=f[17242]&~(1<>>0>>0)ja();a=d+8|0;if((f[a>>2]|0)==(b|0)){E=a;break}ja()}}while(0);f[c+12>>2]=d;f[E>>2]=c}}while(0);b=b+h|0;e=h+j|0}else e=j;b=b+4|0;f[b>>2]=f[b>>2]&-2;f[l+4>>2]=e|1;f[l+e>>2]=e;b=e>>>3;if(e>>>0<256){c=69008+(b<<1<<2)|0;a=f[17242]|0;b=1<>2]|0;if(a>>>0>=(f[17246]|0)>>>0){I=a;J=b;break}ja()}}while(0);f[J>>2]=l;f[I+12>>2]=l;f[l+8>>2]=I;f[l+12>>2]=c;break}b=e>>>8;do{if(!b)b=0;else{if(e>>>0>16777215){b=31;break}I=(b+1048320|0)>>>16&8;J=b<>>16&4;J=J<>>16&2;b=14-(H|I|b)+(J<>>15)|0;b=e>>>(b+7|0)&1|b<<1}}while(0);d=69272+(b<<2)|0;f[l+28>>2]=b;a=l+16|0;f[a+4>>2]=0;f[a>>2]=0;a=f[17243]|0;c=1<>2]=l;f[l+24>>2]=d;f[l+12>>2]=l;f[l+8>>2]=l;break}a=e<<((b|0)==31?0:25-(b>>>1)|0);d=f[d>>2]|0;while(1){if((f[d+4>>2]&-8|0)==(e|0)){C=265;break}c=d+16+(a>>>31<<2)|0;b=f[c>>2]|0;if(!b){C=262;break}else{a=a<<1;d=b}}if((C|0)==262)if(c>>>0<(f[17246]|0)>>>0)ja();else{f[c>>2]=l;f[l+24>>2]=d;f[l+12>>2]=l;f[l+8>>2]=l;break}else if((C|0)==265){b=d+8|0;a=f[b>>2]|0;J=f[17246]|0;if(a>>>0>=J>>>0&d>>>0>=J>>>0){f[a+12>>2]=l;f[b>>2]=l;f[l+8>>2]=a;f[l+12>>2]=d;f[l+24>>2]=0;break}else ja()}}else{J=(f[17245]|0)+j|0;f[17245]=J;f[17248]=l;f[l+4>>2]=J|1}}while(0);J=m+8|0;u=K;return J|0}b=69416;while(1){a=f[b>>2]|0;if(a>>>0<=k>>>0?(D=a+(f[b+4>>2]|0)|0,D>>>0>k>>>0):0)break;b=f[b+8>>2]|0}e=D+-47|0;a=e+8|0;a=e+((a&7|0)==0?0:0-a&7)|0;e=k+16|0;a=a>>>0>>0?k:a;b=a+8|0;c=g+8|0;c=(c&7|0)==0?0:0-c&7;J=g+c|0;c=h+-40-c|0;f[17248]=J;f[17245]=c;f[J+4>>2]=c|1;f[J+c+4>>2]=40;f[17249]=f[17364];c=a+4|0;f[c>>2]=27;f[b>>2]=f[17354];f[b+4>>2]=f[17355];f[b+8>>2]=f[17356];f[b+12>>2]=f[17357];f[17354]=g;f[17355]=h;f[17357]=0;f[17356]=b;b=a+24|0;do{J=b;b=b+4|0;f[b>>2]=7}while((J+8|0)>>>0>>0);if((a|0)!=(k|0)){g=a-k|0;f[c>>2]=f[c>>2]&-2;f[k+4>>2]=g|1;f[a>>2]=g;b=g>>>3;if(g>>>0<256){c=69008+(b<<1<<2)|0;a=f[17242]|0;b=1<>2]|0;if(a>>>0<(f[17246]|0)>>>0)ja();else{F=a;G=b}}else{f[17242]=a|b;F=c;G=c+8|0}f[G>>2]=k;f[F+12>>2]=k;f[k+8>>2]=F;f[k+12>>2]=c;break}b=g>>>8;if(b)if(g>>>0>16777215)c=31;else{I=(b+1048320|0)>>>16&8;J=b<>>16&4;J=J<>>16&2;c=14-(H|I|c)+(J<>>15)|0;c=g>>>(c+7|0)&1|c<<1}else c=0;d=69272+(c<<2)|0;f[k+28>>2]=c;f[k+20>>2]=0;f[e>>2]=0;b=f[17243]|0;a=1<>2]=k;f[k+24>>2]=d;f[k+12>>2]=k;f[k+8>>2]=k;break}a=g<<((c|0)==31?0:25-(c>>>1)|0);d=f[d>>2]|0;while(1){if((f[d+4>>2]&-8|0)==(g|0)){C=292;break}c=d+16+(a>>>31<<2)|0;b=f[c>>2]|0;if(!b){C=289;break}else{a=a<<1;d=b}}if((C|0)==289)if(c>>>0<(f[17246]|0)>>>0)ja();else{f[c>>2]=k;f[k+24>>2]=d;f[k+12>>2]=k;f[k+8>>2]=k;break}else if((C|0)==292){b=d+8|0;a=f[b>>2]|0;J=f[17246]|0;if(a>>>0>=J>>>0&d>>>0>=J>>>0){f[a+12>>2]=k;f[b>>2]=k;f[k+8>>2]=a;f[k+12>>2]=d;f[k+24>>2]=0;break}else ja()}}}else{J=f[17246]|0;if((J|0)==0|g>>>0>>0)f[17246]=g;f[17354]=g;f[17355]=h;f[17357]=0;f[17251]=f[17360];f[17250]=-1;b=0;do{J=69008+(b<<1<<2)|0;f[J+12>>2]=J;f[J+8>>2]=J;b=b+1|0}while((b|0)!=32);J=g+8|0;J=(J&7|0)==0?0:0-J&7;I=g+J|0;J=h+-40-J|0;f[17248]=I;f[17245]=J;f[I+4>>2]=J|1;f[I+J+4>>2]=40;f[17249]=f[17364]}}while(0);b=f[17245]|0;if(b>>>0>o>>>0){H=b-o|0;f[17245]=H;J=f[17248]|0;I=J+o|0;f[17248]=I;f[I+4>>2]=H|1;f[J+4>>2]=o|3;J=J+8|0;u=K;return J|0}}f[140]=12;J=0;u=K;return J|0}function gc(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(!a)return;c=a+-8|0;h=f[17246]|0;if(c>>>0>>0)ja();a=f[a+-4>>2]|0;b=a&3;if((b|0)==1)ja();d=a&-8;o=c+d|0;a:do{if(!(a&1)){a=f[c>>2]|0;if(!b)return;k=c+(0-a)|0;j=a+d|0;if(k>>>0>>0)ja();if((k|0)==(f[17247]|0)){a=o+4|0;b=f[a>>2]|0;if((b&3|0)!=3){r=k;e=j;m=k;break}f[17244]=j;f[a>>2]=b&-2;f[k+4>>2]=j|1;f[k+j>>2]=j;return}d=a>>>3;if(a>>>0<256){b=f[k+8>>2]|0;c=f[k+12>>2]|0;a=69008+(d<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0>>0)ja();if((f[b+12>>2]|0)!=(k|0))ja()}if((c|0)==(b|0)){f[17242]=f[17242]&~(1<>>0>>0)ja();a=c+8|0;if((f[a>>2]|0)==(k|0))g=a;else ja()}else g=c+8|0;f[b+12>>2]=c;f[g>>2]=b;r=k;e=j;m=k;break}g=f[k+24>>2]|0;c=f[k+12>>2]|0;do{if((c|0)==(k|0)){c=k+16|0;b=c+4|0;a=f[b>>2]|0;if(!a){a=f[c>>2]|0;if(!a){i=0;break}else b=c}while(1){c=a+20|0;d=f[c>>2]|0;if(d|0){a=d;b=c;continue}c=a+16|0;d=f[c>>2]|0;if(!d)break;else{a=d;b=c}}if(b>>>0>>0)ja();else{f[b>>2]=0;i=a;break}}else{d=f[k+8>>2]|0;if(d>>>0>>0)ja();a=d+12|0;if((f[a>>2]|0)!=(k|0))ja();b=c+8|0;if((f[b>>2]|0)==(k|0)){f[a>>2]=c;f[b>>2]=d;i=c;break}else ja()}}while(0);if(g){a=f[k+28>>2]|0;b=69272+(a<<2)|0;c=(i|0)==0;do{if((k|0)==(f[b>>2]|0)){f[b>>2]=i;if(c){f[17243]=f[17243]&~(1<>>0>=(f[17246]|0)>>>0){f[g+16+(((f[g+16>>2]|0)!=(k|0)&1)<<2)>>2]=i;if(c){r=k;e=j;m=k;break a}else break}else ja()}while(0);c=f[17246]|0;if(i>>>0>>0)ja();f[i+24>>2]=g;a=k+16|0;b=f[a>>2]|0;do{if(b|0)if(b>>>0>>0)ja();else{f[i+16>>2]=b;f[b+24>>2]=i;break}}while(0);a=f[a+4>>2]|0;if(a)if(a>>>0<(f[17246]|0)>>>0)ja();else{f[i+20>>2]=a;f[a+24>>2]=i;r=k;e=j;m=k;break}else{r=k;e=j;m=k}}else{r=k;e=j;m=k}}else{r=c;e=d;m=c}}while(0);if(m>>>0>=o>>>0)ja();a=o+4|0;b=f[a>>2]|0;if(!(b&1))ja();if(!(b&2)){a=f[17247]|0;if((o|0)==(f[17248]|0)){q=(f[17245]|0)+e|0;f[17245]=q;f[17248]=r;f[r+4>>2]=q|1;if((r|0)!=(a|0))return;f[17247]=0;f[17244]=0;return}if((o|0)==(a|0)){q=(f[17244]|0)+e|0;f[17244]=q;f[17247]=m;f[r+4>>2]=q|1;f[m+q>>2]=q;return}e=(b&-8)+e|0;d=b>>>3;b:do{if(b>>>0>=256){g=f[o+24>>2]|0;a=f[o+12>>2]|0;do{if((a|0)==(o|0)){c=o+16|0;b=c+4|0;a=f[b>>2]|0;if(!a){a=f[c>>2]|0;if(!a){n=0;break}else b=c}while(1){c=a+20|0;d=f[c>>2]|0;if(d|0){a=d;b=c;continue}c=a+16|0;d=f[c>>2]|0;if(!d)break;else{a=d;b=c}}if(b>>>0<(f[17246]|0)>>>0)ja();else{f[b>>2]=0;n=a;break}}else{b=f[o+8>>2]|0;if(b>>>0<(f[17246]|0)>>>0)ja();c=b+12|0;if((f[c>>2]|0)!=(o|0))ja();d=a+8|0;if((f[d>>2]|0)==(o|0)){f[c>>2]=a;f[d>>2]=b;n=a;break}else ja()}}while(0);if(g|0){a=f[o+28>>2]|0;b=69272+(a<<2)|0;c=(n|0)==0;do{if((o|0)==(f[b>>2]|0)){f[b>>2]=n;if(c){f[17243]=f[17243]&~(1<>>0>=(f[17246]|0)>>>0){f[g+16+(((f[g+16>>2]|0)!=(o|0)&1)<<2)>>2]=n;if(c)break b;else break}else ja()}while(0);c=f[17246]|0;if(n>>>0>>0)ja();f[n+24>>2]=g;a=o+16|0;b=f[a>>2]|0;do{if(b|0)if(b>>>0>>0)ja();else{f[n+16>>2]=b;f[b+24>>2]=n;break}}while(0);a=f[a+4>>2]|0;if(a|0)if(a>>>0<(f[17246]|0)>>>0)ja();else{f[n+20>>2]=a;f[a+24>>2]=n;break}}}else{b=f[o+8>>2]|0;c=f[o+12>>2]|0;a=69008+(d<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<(f[17246]|0)>>>0)ja();if((f[b+12>>2]|0)!=(o|0))ja()}if((c|0)==(b|0)){f[17242]=f[17242]&~(1<>>0<(f[17246]|0)>>>0)ja();a=c+8|0;if((f[a>>2]|0)==(o|0))l=a;else ja()}else l=c+8|0;f[b+12>>2]=c;f[l>>2]=b}}while(0);f[r+4>>2]=e|1;f[m+e>>2]=e;if((r|0)==(f[17247]|0)){f[17244]=e;return}}else{f[a>>2]=b&-2;f[r+4>>2]=e|1;f[m+e>>2]=e}a=e>>>3;if(e>>>0<256){c=69008+(a<<1<<2)|0;b=f[17242]|0;a=1<>2]|0;if(b>>>0<(f[17246]|0)>>>0)ja();else{p=b;q=a}}else{f[17242]=b|a;p=c;q=c+8|0}f[q>>2]=r;f[p+12>>2]=r;f[r+8>>2]=p;f[r+12>>2]=c;return}a=e>>>8;if(a)if(e>>>0>16777215)a=31;else{p=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;a=14-(o|p|a)+(q<>>15)|0;a=e>>>(a+7|0)&1|a<<1}else a=0;d=69272+(a<<2)|0;f[r+28>>2]=a;f[r+20>>2]=0;f[r+16>>2]=0;b=f[17243]|0;c=1<>>1)|0);d=f[d>>2]|0;while(1){if((f[d+4>>2]&-8|0)==(e|0)){a=124;break}c=d+16+(b>>>31<<2)|0;a=f[c>>2]|0;if(!a){a=121;break}else{b=b<<1;d=a}}if((a|0)==121)if(c>>>0<(f[17246]|0)>>>0)ja();else{f[c>>2]=r;f[r+24>>2]=d;f[r+12>>2]=r;f[r+8>>2]=r;break}else if((a|0)==124){a=d+8|0;b=f[a>>2]|0;q=f[17246]|0;if(b>>>0>=q>>>0&d>>>0>=q>>>0){f[b+12>>2]=r;f[a>>2]=r;f[r+8>>2]=b;f[r+12>>2]=d;f[r+24>>2]=0;break}else ja()}}else{f[17243]=b|c;f[d>>2]=r;f[r+24>>2]=d;f[r+12>>2]=r;f[r+8>>2]=r}}while(0);r=(f[17250]|0)+-1|0;f[17250]=r;if(!r)a=69424;else return;while(1){a=f[a>>2]|0;if(!a)break;else a=a+8|0}f[17250]=-1;return}function hc(a,b){a=a|0;b=b|0;var c=0,d=0;if(!a){b=fc(b)|0;return b|0}if(b>>>0>4294967231){f[140]=12;b=0;return b|0}c=ic(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(c|0){b=c+8|0;return b|0}c=fc(b)|0;if(!c){b=0;return b|0}d=f[a+-4>>2]|0;d=(d&-8)-((d&3|0)==0?8:4)|0;Jc(c|0,a|0,(d>>>0>>0?d:b)|0)|0;gc(a);b=c;return b|0}function ic(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=a+4|0;n=f[o>>2]|0;c=n&-8;k=a+c|0;i=f[17246]|0;d=n&3;if(!((d|0)!=1&a>>>0>=i>>>0&a>>>0>>0))ja();e=f[k+4>>2]|0;if(!(e&1))ja();if(!d){if(b>>>0<256){a=0;return a|0}if(c>>>0>=(b+4|0)>>>0?(c-b|0)>>>0<=f[17362]<<1>>>0:0)return a|0;a=0;return a|0}if(c>>>0>=b>>>0){c=c-b|0;if(c>>>0<=15)return a|0;m=a+b|0;f[o>>2]=n&1|b|2;f[m+4>>2]=c|3;o=m+c+4|0;f[o>>2]=f[o>>2]|1;jc(m,c);return a|0}if((k|0)==(f[17248]|0)){m=(f[17245]|0)+c|0;c=m-b|0;d=a+b|0;if(m>>>0<=b>>>0){a=0;return a|0}f[o>>2]=n&1|b|2;f[d+4>>2]=c|1;f[17248]=d;f[17245]=c;return a|0}if((k|0)==(f[17247]|0)){e=(f[17244]|0)+c|0;if(e>>>0>>0){a=0;return a|0}c=e-b|0;d=n&1;if(c>>>0>15){n=a+b|0;m=n+c|0;f[o>>2]=d|b|2;f[n+4>>2]=c|1;f[m>>2]=c;d=m+4|0;f[d>>2]=f[d>>2]&-2;d=n}else{f[o>>2]=d|e|2;d=a+e+4|0;f[d>>2]=f[d>>2]|1;d=0;c=0}f[17244]=c;f[17247]=d;return a|0}if(e&2|0){a=0;return a|0}l=(e&-8)+c|0;if(l>>>0>>0){a=0;return a|0}m=l-b|0;g=e>>>3;a:do{if(e>>>0>=256){h=f[k+24>>2]|0;e=f[k+12>>2]|0;do{if((e|0)==(k|0)){e=k+16|0;d=e+4|0;c=f[d>>2]|0;if(!c){c=f[e>>2]|0;if(!c){j=0;break}else d=e}while(1){e=c+20|0;g=f[e>>2]|0;if(g|0){c=g;d=e;continue}e=c+16|0;g=f[e>>2]|0;if(!g)break;else{c=g;d=e}}if(d>>>0>>0)ja();else{f[d>>2]=0;j=c;break}}else{g=f[k+8>>2]|0;if(g>>>0>>0)ja();c=g+12|0;if((f[c>>2]|0)!=(k|0))ja();d=e+8|0;if((f[d>>2]|0)==(k|0)){f[c>>2]=e;f[d>>2]=g;j=e;break}else ja()}}while(0);if(h|0){c=f[k+28>>2]|0;d=69272+(c<<2)|0;e=(j|0)==0;do{if((k|0)==(f[d>>2]|0)){f[d>>2]=j;if(e){f[17243]=f[17243]&~(1<>>0>=(f[17246]|0)>>>0){f[h+16+(((f[h+16>>2]|0)!=(k|0)&1)<<2)>>2]=j;if(e)break a;else break}else ja()}while(0);e=f[17246]|0;if(j>>>0>>0)ja();f[j+24>>2]=h;c=k+16|0;d=f[c>>2]|0;do{if(d|0)if(d>>>0>>0)ja();else{f[j+16>>2]=d;f[d+24>>2]=j;break}}while(0);c=f[c+4>>2]|0;if(c|0)if(c>>>0<(f[17246]|0)>>>0)ja();else{f[j+20>>2]=c;f[c+24>>2]=j;break}}}else{d=f[k+8>>2]|0;e=f[k+12>>2]|0;c=69008+(g<<1<<2)|0;if((d|0)!=(c|0)){if(d>>>0>>0)ja();if((f[d+12>>2]|0)!=(k|0))ja()}if((e|0)==(d|0)){f[17242]=f[17242]&~(1<>>0>>0)ja();c=e+8|0;if((f[c>>2]|0)==(k|0))h=c;else ja()}else h=e+8|0;f[d+12>>2]=e;f[h>>2]=d}}while(0);c=n&1;if(m>>>0<16){f[o>>2]=c|l|2;o=a+l+4|0;f[o>>2]=f[o>>2]|1;return a|0}else{n=a+b|0;f[o>>2]=c|b|2;f[n+4>>2]=m|3;o=n+m+4|0;f[o>>2]=f[o>>2]|1;jc(n,m);return a|0}return 0}function jc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=a+b|0;c=f[a+4>>2]|0;a:do{if(!(c&1)){g=f[a>>2]|0;if(!(c&3))return;l=a+(0-g)|0;k=g+b|0;i=f[17246]|0;if(l>>>0>>0)ja();if((l|0)==(f[17247]|0)){c=o+4|0;a=f[c>>2]|0;if((a&3|0)!=3){r=l;e=k;break}f[17244]=k;f[c>>2]=a&-2;f[l+4>>2]=k|1;f[l+k>>2]=k;return}d=g>>>3;if(g>>>0<256){c=f[l+8>>2]|0;b=f[l+12>>2]|0;a=69008+(d<<1<<2)|0;if((c|0)!=(a|0)){if(c>>>0>>0)ja();if((f[c+12>>2]|0)!=(l|0))ja()}if((b|0)==(c|0)){f[17242]=f[17242]&~(1<>>0>>0)ja();a=b+8|0;if((f[a>>2]|0)==(l|0))h=a;else ja()}else h=b+8|0;f[c+12>>2]=b;f[h>>2]=c;r=l;e=k;break}g=f[l+24>>2]|0;b=f[l+12>>2]|0;do{if((b|0)==(l|0)){b=l+16|0;c=b+4|0;a=f[c>>2]|0;if(!a){a=f[b>>2]|0;if(!a){j=0;break}else c=b}while(1){b=a+20|0;d=f[b>>2]|0;if(d|0){a=d;c=b;continue}b=a+16|0;d=f[b>>2]|0;if(!d)break;else{a=d;c=b}}if(c>>>0>>0)ja();else{f[c>>2]=0\\n;j=a;break}}else{d=f[l+8>>2]|0;if(d>>>0>>0)ja();a=d+12|0;if((f[a>>2]|0)!=(l|0))ja();c=b+8|0;if((f[c>>2]|0)==(l|0)){f[a>>2]=b;f[c>>2]=d;j=b;break}else ja()}}while(0);if(g){a=f[l+28>>2]|0;c=69272+(a<<2)|0;b=(j|0)==0;do{if((l|0)==(f[c>>2]|0)){f[c>>2]=j;if(b){f[17243]=f[17243]&~(1<>>0>=(f[17246]|0)>>>0){f[g+16+(((f[g+16>>2]|0)!=(l|0)&1)<<2)>>2]=j;if(b){r=l;e=k;break a}else break}else ja()}while(0);b=f[17246]|0;if(j>>>0>>0)ja();f[j+24>>2]=g;a=l+16|0;c=f[a>>2]|0;do{if(c|0)if(c>>>0>>0)ja();else{f[j+16>>2]=c;f[c+24>>2]=j;break}}while(0);a=f[a+4>>2]|0;if(a)if(a>>>0<(f[17246]|0)>>>0)ja();else{f[j+20>>2]=a;f[a+24>>2]=j;r=l;e=k;break}else{r=l;e=k}}else{r=l;e=k}}else{r=a;e=b}}while(0);h=f[17246]|0;if(o>>>0>>0)ja();a=o+4|0;c=f[a>>2]|0;if(!(c&2)){a=f[17247]|0;if((o|0)==(f[17248]|0)){q=(f[17245]|0)+e|0;f[17245]=q;f[17248]=r;f[r+4>>2]=q|1;if((r|0)!=(a|0))return;f[17247]=0;f[17244]=0;return}if((o|0)==(a|0)){q=(f[17244]|0)+e|0;f[17244]=q;f[17247]=r;f[r+4>>2]=q|1;f[r+q>>2]=q;return}e=(c&-8)+e|0;d=c>>>3;b:do{if(c>>>0>=256){g=f[o+24>>2]|0;b=f[o+12>>2]|0;do{if((b|0)==(o|0)){b=o+16|0;c=b+4|0;a=f[c>>2]|0;if(!a){a=f[b>>2]|0;if(!a){n=0;break}else c=b}while(1){b=a+20|0;d=f[b>>2]|0;if(d|0){a=d;c=b;continue}b=a+16|0;d=f[b>>2]|0;if(!d)break;else{a=d;c=b}}if(c>>>0>>0)ja();else{f[c>>2]=0;n=a;break}}else{d=f[o+8>>2]|0;if(d>>>0>>0)ja();a=d+12|0;if((f[a>>2]|0)!=(o|0))ja();c=b+8|0;if((f[c>>2]|0)==(o|0)){f[a>>2]=b;f[c>>2]=d;n=b;break}else ja()}}while(0);if(g|0){a=f[o+28>>2]|0;c=69272+(a<<2)|0;b=(n|0)==0;do{if((o|0)==(f[c>>2]|0)){f[c>>2]=n;if(b){f[17243]=f[17243]&~(1<>>0>=(f[17246]|0)>>>0){f[g+16+(((f[g+16>>2]|0)!=(o|0)&1)<<2)>>2]=n;if(b)break b;else break}else ja()}while(0);b=f[17246]|0;if(n>>>0>>0)ja();f[n+24>>2]=g;a=o+16|0;c=f[a>>2]|0;do{if(c|0)if(c>>>0>>0)ja();else{f[n+16>>2]=c;f[c+24>>2]=n;break}}while(0);a=f[a+4>>2]|0;if(a|0)if(a>>>0<(f[17246]|0)>>>0)ja();else{f[n+20>>2]=a;f[a+24>>2]=n;break}}}else{c=f[o+8>>2]|0;b=f[o+12>>2]|0;a=69008+(d<<1<<2)|0;if((c|0)!=(a|0)){if(c>>>0>>0)ja();if((f[c+12>>2]|0)!=(o|0))ja()}if((b|0)==(c|0)){f[17242]=f[17242]&~(1<>>0>>0)ja();a=b+8|0;if((f[a>>2]|0)==(o|0))m=a;else ja()}else m=b+8|0;f[c+12>>2]=b;f[m>>2]=c}}while(0);f[r+4>>2]=e|1;f[r+e>>2]=e;if((r|0)==(f[17247]|0)){f[17244]=e;return}}else{f[a>>2]=c&-2;f[r+4>>2]=e|1;f[r+e>>2]=e}a=e>>>3;if(e>>>0<256){b=69008+(a<<1<<2)|0;c=f[17242]|0;a=1<>2]|0;if(c>>>0<(f[17246]|0)>>>0)ja();else{p=c;q=a}}else{f[17242]=c|a;p=b;q=b+8|0}f[q>>2]=r;f[p+12>>2]=r;f[r+8>>2]=p;f[r+12>>2]=b;return}a=e>>>8;if(a)if(e>>>0>16777215)a=31;else{p=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;a=14-(o|p|a)+(q<>>15)|0;a=e>>>(a+7|0)&1|a<<1}else a=0;d=69272+(a<<2)|0;f[r+28>>2]=a;f[r+20>>2]=0;f[r+16>>2]=0;c=f[17243]|0;b=1<>2]=r;f[r+24>>2]=d;f[r+12>>2]=r;f[r+8>>2]=r;return}c=e<<((a|0)==31?0:25-(a>>>1)|0);d=f[d>>2]|0;while(1){if((f[d+4>>2]&-8|0)==(e|0)){a=121;break}b=d+16+(c>>>31<<2)|0;a=f[b>>2]|0;if(!a){a=118;break}else{c=c<<1;d=a}}if((a|0)==118){if(b>>>0<(f[17246]|0)>>>0)ja();f[b>>2]=r;f[r+24>>2]=d;f[r+12>>2]=r;f[r+8>>2]=r;return}else if((a|0)==121){a=d+8|0;c=f[a>>2]|0;q=f[17246]|0;if(!(c>>>0>=q>>>0&d>>>0>=q>>>0))ja();f[c+12>>2]=r;f[a>>2]=r;f[r+8>>2]=c;f[r+12>>2]=d;f[r+24>>2]=0;return}}function kc(a,b){a=a|0;b=b|0;if(a>>>0<9){b=fc(b)|0;return b|0}else{b=lc(a,b)|0;return b|0}return 0}function lc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;a=a>>>0>16?a:16;if(a+-1&a){c=16;while(1)if(c>>>0>>0)c=c<<1;else{a=c;break}}if((-64-a|0)>>>0<=b>>>0){f[140]=12;h=0;return h|0}g=b>>>0<11?16:b+11&-8;c=fc(g+12+a|0)|0;if(!c){h=0;return h|0}e=c+-8|0;do{if(c&a+-1){d=(c+a+-1&0-a)+-8|0;b=e;d=(d-b|0)>>>0>15?d:d+a|0;b=d-b|0;a=c+-4|0;i=f[a>>2]|0;c=(i&-8)-b|0;if(!(i&3)){f[d>>2]=(f[e>>2]|0)+b;f[d+4>>2]=c;a=d;b=d;break}else{i=d+4|0;f[i>>2]=c|f[i>>2]&1|2;c=d+c+4|0;f[c>>2]=f[c>>2]|1;f[a>>2]=b|f[a>>2]&1|2;f[i>>2]=f[i>>2]|1;jc(e,b);a=d;b=d;break}}else{a=e;b=e}}while(0);a=a+4|0;c=f[a>>2]|0;if(c&3|0?(h=c&-8,h>>>0>(g+16|0)>>>0):0){i=h-g|0;h=b+g|0;f[a>>2]=g|c&1|2;f[h+4>>2]=i|3;g=h+i+4|0;f[g>>2]=f[g>>2]|1;jc(h,i)}i=b+8|0;return i|0}function mc(a){a=a|0;return}function nc(a){a=a|0;Dc(a);return}function oc(a){a=a|0;return}function pc(a){a=a|0;return}function qc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;h=u;u=u+64|0;e=h;if(!(uc(a,b)|0))if((b|0)!=0?(g=yc(b,8)|0,(g|0)!=0):0){b=e+4|0;d=b+52|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(d|0));f[e>>2]=g;f[e+8>>2]=a;f[e+12>>2]=-1;f[e+48>>2]=1;xa[f[(f[g>>2]|0)+28>>2]&3](g,e,f[c>>2]|0,1);if((f[e+24>>2]|0)==1){f[c>>2]=f[e+16>>2];b=1}else b=0}else b=0;else b=1;u=h;return b|0}function rc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;if(uc(a,f[b+8>>2]|0)|0)xc(b,c,d,e);return}function sc(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0;do{if(!(uc(a,f[c+8>>2]|0)|0)){if(uc(a,f[c>>2]|0)|0){a=c+32|0;if((f[c+16>>2]|0)!=(d|0)?(h=c+20|0,(f[h>>2]|0)!=(d|0)):0){f[a>>2]=e;f[h>>2]=d;e=c+40|0;f[e>>2]=(f[e>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0)b[c+54>>0]=1;f[c+44>>2]=4;break}if((e|0)==1)f[a>>2]=1}}else wc(c,d,e)}while(0);return}function tc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(uc(a,f[b+8>>2]|0)|0)vc(b,c,d);return}function uc(a,b){a=a|0;b=b|0;return(a|0)==(b|0)|0}function vc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;e=a+16|0;g=f[e>>2]|0;h=a+36|0;i=a+24|0;do{if(g){if((g|0)!=(c|0)){f[h>>2]=(f[h>>2]|0)+1;f[i>>2]=2;b[a+54>>0]=1;break}if((f[i>>2]|0)==2)f[i>>2]=d}else{f[e>>2]=c;f[i>>2]=d;f[h>>2]=1}}while(0);return}function wc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((f[a+4>>2]|0)==(b|0)?(d=a+28|0,(f[d>>2]|0)!=1):0)f[d>>2]=c;return}function xc(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0;b[a+53>>0]=1;do{if((f[a+4>>2]|0)==(d|0)){b[a+52>>0]=1;h=a+16|0;g=f[h>>2]|0;j=a+54|0;k=a+48|0;i=a+24|0;d=a+36|0;if(!g){f[h>>2]=c;f[i>>2]=e;f[d>>2]=1;if(!((e|0)==1&(f[k>>2]|0)==1))break;b[j>>0]=1;break}if((g|0)!=(c|0)){f[d>>2]=(f[d>>2]|0)+1;b[j>>0]=1;break}d=f[i>>2]|0;if((d|0)==2){f[i>>2]=e;d=e}if((d|0)==1&(f[k>>2]|0)==1)b[j>>0]=1}}while(0);return}function yc(a,c){a=a|0;c=c|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=u;u=u+64|0;n=q;p=f[a>>2]|0;o=a+(f[p+-8>>2]|0)|0;p=f[p+-4>>2]|0;f[n>>2]=c;f[n+4>>2]=a;f[n+8>>2]=24;g=n+12|0;h=n+16|0;i=n+20|0;j=n+24|0;k=n+28|0;l=n+32|0;m=n+40|0;a=uc(p,c)|0;c=g;e=c+40|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(e|0));d[g+40>>1]=0;b[g+42>>0]=0;a:do{if(a){f[n+48>>2]=1;va[f[(f[p>>2]|0)+20>>2]&3](p,n,o,o,1,0);a=(f[j>>2]|0)==1?o:0}else{sa[f[(f[p>>2]|0)+24>>2]&3](p,n,o,1,0);switch(f[n+36>>2]|0){case 0:{a=(f[m>>2]|0)==1&(f[k>>2]|0)==1&(f[l>>2]|0)==1?f[i>>2]|0:0;break a}case 1:break;default:{a=0;break a}}if((f[j>>2]|0)!=1?!((f[m>>2]|0)==0&(f[k>>2]|0)==1&(f[l>>2]|0)==1):0){a=0;break}a=f[h>>2]|0}}while(0);u=q;return a|0}function zc(a){a=a|0;Dc(a);return}function Ac(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;if(uc(a,f[b+8>>2]|0)|0)xc(b,c,d,e);else{a=f[a+8>>2]|0;va[f[(f[a>>2]|0)+20>>2]&3](a,b,c,d,e,g)}return}function Bc(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0;do{if(!(uc(a,f[c+8>>2]|0)|0)){h=a+8|0;if(!(uc(a,f[c>>2]|0)|0)){j=f[h>>2]|0;sa[f[(f[j>>2]|0)+24>>2]&3](j,c,d,e,g);break}a=c+32|0;if((f[c+16>>2]|0)!=(d|0)?(i=c+20|0,(f[i>>2]|0)!=(d|0)):0){f[a>>2]=e;e=c+44|0;if((f[e>>2]|0)==4)break;a=c+52|0;b[a>>0]=0;k=c+53|0;b[k>>0]=0;h=f[h>>2]|0;va[f[(f[h>>2]|0)+20>>2]&3](h,c,d,d,1,g);if(b[k>>0]|0)if(!(b[a>>0]|0)){a=3;j=11}else a=3;else{a=4;j=11}if((j|0)==11){f[i>>2]=d;k=c+40|0;f[k>>2]=(f[k>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0)b[c+54>>0]=1}f[e>>2]=a;break}if((e|0)==1)f[a>>2]=1}else wc(c,d,e)}while(0);return}function Cc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(uc(a,f[b+8>>2]|0)|0)vc(b,c,d);else{a=f[a+8>>2]|0;xa[f[(f[a>>2]|0)+28>>2]&3](a,b,c,d)}return}function Dc(a){a=a|0;gc(a);return}function Ec(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=u;u=u+16|0;d=e;f[d>>2]=f[c>>2];a=ua[f[(f[a>>2]|0)+16>>2]&1](a,b,d)|0;if(a)f[c>>2]=f[d>>2];u=e;return a&1|0}function Fc(a){a=a|0;if(!a)a=0;else a=(yc(a,80)|0)!=0;return a&1|0}function Gc(){}function Hc(a){a=a|0;var b=0,c=0;c=a+15&-16|0;b=f[r>>2]|0;a=b+c|0;if((c|0)>0&(a|0)<(b|0)|(a|0)<0){ca()|0;ka(12);return-1}f[r>>2]=a;if((a|0)>(ba()|0)?(aa()|0)==0:0){ka(12);f[r>>2]=b;return-1}return b|0}function Ic(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=a+d|0;c=c&255;if((d|0)>=67){while(a&3){b[a>>0]=c;a=a+1|0}e=h&-4|0;g=e-64|0;i=c|c<<8|c<<16|c<<24;while((a|0)<=(g|0)){f[a>>2]=i;f[a+4>>2]=i;f[a+8>>2]=i;f[a+12>>2]=i;f[a+16>>2]=i;f[a+20>>2]=i;f[a+24>>2]=i;f[a+28>>2]=i;f[a+32>>2]=i;f[a+36>>2]=i;f[a+40>>2]=i;f[a+44>>2]=i;f[a+48>>2]=i;f[a+52>>2]=i;f[a+56>>2]=i;f[a+60>>2]=i;a=a+64|0}while((a|0)<(e|0)){f[a>>2]=i;a=a+4|0}}while((a|0)<(h|0)){b[a>>0]=c;a=a+1|0}return h-d|0}function Jc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0;if((d|0)>=8192)return la(a|0,c|0,d|0)|0;h=a|0;g=a+d|0;if((a&3)==(c&3)){while(a&3){if(!d)return h|0;b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0;d=d-1|0}d=g&-4|0;e=d-64|0;while((a|0)<=(e|0)){f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];f[a+12>>2]=f[c+12>>2];f[a+16>>2]=f[c+16>>2];f[a+20>>2]=f[c+20>>2];f[a+24>>2]=f[c+24>>2];f[a+28>>2]=f[c+28>>2];f[a+32>>2]=f[c+32>>2];f[a+36>>2]=f[c+36>>2];f[a+40>>2]=f[c+40>>2];f[a+44>>2]=f[c+44>>2];f[a+48>>2]=f[c+48>>2];f[a+52>>2]=f[c+52>>2];f[a+56>>2]=f[c+56>>2];f[a+60>>2]=f[c+60>>2];a=a+64|0;c=c+64|0}while((a|0)<(d|0)){f[a>>2]=f[c>>2];a=a+4|0;c=c+4|0}}else{d=g-4|0;while((a|0)<(d|0)){b[a>>0]=b[c>>0]|0;b[a+1>>0]=b[c+1>>0]|0;b[a+2>>0]=b[c+2>>0]|0;b[a+3>>0]=b[c+3>>0]|0;a=a+4|0;c=c+4|0}}while((a|0)<(g|0)){b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0}return h|0}function Kc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;sa[a&3](b|0,c|0,d|0,e|0,f|0)}function Lc(a,b){a=a|0;b=b|0;ta[a&7](b|0)}function Mc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua[a&1](b|0,c|0,d|0)|0}function Nc(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;va[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function Oc(a,b,c){a=a|0;b=b|0;c=c|0;return wa[a&0](b|0,c|0)|0}function Pc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;xa[a&3](b|0,c|0,d|0,e|0)}function Qc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;_(0)}function Rc(a){a=a|0;_(1)}function Sc(a,b,c){a=a|0;b=b|0;c=c|0;_(2);return 0}function Tc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;_(3)}function Uc(a,b){a=a|0;b=b|0;_(4);return 0}function Vc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;_(5)}var sa=[Qc,sc,Bc,Qc];var ta=[Rc,mc,nc,oc,pc,zc,Rc,Rc];var ua=[Sc,qc];var va=[Tc,rc,Ac,Tc];var wa=[Uc];var xa=[Vc,tc,Cc,Vc];return{setThrew:Ca,_bidi_getParagraphEndIndex:Ha,___cxa_is_pointer_type:Fc,_memset:Ic,_sbrk:Hc,_memcpy:Jc,stackAlloc:ya,_ushape_arabic:Fa,_memalign:kc,getTempRet0:Ea,setTempRet0:Da,_emscripten_get_global_libc:ec,_bidi_getLine:Ia,stackSave:za,___cxa_can_catch:Ec,_free:gc,runPostSets:Gc,establishStackSpace:Ba,stackRestore:Aa,_malloc:fc,_emscripten_replace_memory:ra,_bidi_processText:Ga,stackAlloc:ya,stackSave:za,stackRestore:Aa,establishStackSpace:Ba,setThrew:Ca,setTempRet0:Da,getTempRet0:Ea,dynCall_viiiii:Kc,dynCall_vi:Lc,dynCall_iiii:Mc,dynCall_viiiiii:Nc,dynCall_iii:Oc,dynCall_viiii:Pc}}(b.s,b.t,buffer);b.setThrew=Z.setThrew;b._bidi_getParagraphEndIndex=Z._bidi_getParagraphEndIndex;b.___cxa_is_pointer_type=Z.___cxa_is_pointer_type;var Ha=b._memset=Z._memset,Ga=b._sbrk=Z._sbrk,La=b._memcpy=Z._memcpy;b.stackAlloc=Z.stackAlloc;b._ushape_arabic=Z._ushape_arabic;b._memalign=Z._memalign;b.getTempRet0=Z.getTempRet0;b.setTempRet0=Z.setTempRet0;b._emscripten_get_global_libc=Z._emscripten_get_global_libc;b._bidi_getLine=Z._bidi_getLine;b.stackSave=Z.stackSave;b.___cxa_can_catch=Z.___cxa_can_catch;var Q=b._free=Z._free;b.runPostSets=Z.runPostSets;b.establishStackSpace=Z.establishStackSpace;b.stackRestore=Z.stackRestore;var P=b._malloc=Z._malloc,va=b._emscripten_replace_memory=Z._emscripten_replace_memory;b._bidi_processText=Z._bidi_processText;b.dynCall_viiiii=Z.dynCall_viiiii;b.dynCall_vi=Z.dynCall_vi;b.dynCall_iiii=Z.dynCall_iiii;b.dynCall_viiiiii=Z.dynCall_viiiiii;b.dynCall_iii=Z.dynCall_iii;b.dynCall_viiii=Z.dynCall_viiii;A.f=b.stackAlloc;A.m=b.stackSave;A.g=b.stackRestore;A.I=b.establishStackSpace;A.b=b.setTempRet0;A.w=b.getTempRet0;b.asm=Z;function y(a){this.name=\\\"ExitStatus\\\";this.message=\\\"Program terminated with exit(\\\"+a+\\\")\\\"}y.prototype=Error();y.prototype.constructor=y;var Ma=null;b.callMain=b.G=function(a){function c(){for(var a=0;3>a;a++)e.push(0)}a=a||[];X||(X=!0,W(za));var d=a.length+1,e=[O(Ea(b.thisProgram),\\\"i8\\\",0)];c();for(var f=0;fmergedParagraphLineBreakPoints[mergedParagraphLineBreakPoints.length-1])){mergedParagraphLineBreakPoints.push(lineBreakPoint)}}mergedParagraphLineBreakPoints.push(paragraphEndIndex)}for(var i$2=0,list$1=lineBreakPoints;i$2mergedParagraphLineBreakPoints[mergedParagraphLineBreakPoints.length-1]){mergedParagraphLineBreakPoints.push(lineBreakPoint$1)}}return mergedParagraphLineBreakPoints}function processBidirectionalText(input,lineBreakPoints){if(!input){return[input]}var nDataBytes=(input.length+1)*2;var stringInputPtr=Module._malloc(nDataBytes);Module.stringToUTF16(input,stringInputPtr,nDataBytes);var paragraphCount=Module.ccall(\\\"bidi_processText\\\",\\\"number\\\",[\\\"number\\\",\\\"number\\\"],[stringInputPtr,input.length]);if(paragraphCount===0){Module._free(stringInputPtr);return[input]}var mergedParagraphLineBreakPoints=mergeParagraphLineBreakPoints(lineBreakPoints,paragraphCount);var startIndex=0;var lines=[];for(var i=0,list=mergedParagraphLineBreakPoints;i 1) {\n // this is edge of the world case\n json.regions = arrayMerge(data[0].regions, data[1].regions, function (first, second) {\n return first.country.ISO3 === second.country.ISO3;\n });\n }\n copyright = new T('
' + '

General Copyrights:

' + '{{@generalCopyrights}}

{{=_val}}

{{/@generalCopyrights}}' + '{{@regions}}

{{=_val.country.label}}:

' + '{{_val.copyrightImages}}{{/_val.copyrightImages}}' + '{{@_val.copyrights}}

{{=_val}}

{{/@_val.copyrights}}{{/@regions}}' + '
');\n return copyright.render(json);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(4), __webpack_require__(7)], __WEBPACK_AMD_DEFINE_RESULT__ = function (validators, converters, parameterApplications) {\n return {\n create: function create() {\n return {\n key: { validator: validators.string },\n boundingBox: { validator: validators.boundingBox, converter: converters.boundingBox },\n protocol: { validator: validators.oneOfValue(['http', 'https'], 'protocol') }\n };\n },\n modifyRequestOptions: function modifyRequestOptions(requestOptions) {\n var boundingBox = requestOptions.boundingBox;\n if (boundingBox) {\n requestOptions.minLon = boundingBox.minLon;\n requestOptions.maxLon = boundingBox.maxLon;\n requestOptions.minLat = boundingBox.minLat;\n requestOptions.maxLat = boundingBox.maxLat;\n delete requestOptions.boundingBox;\n }\n },\n /*\n * At this moment it's impossible to map one field to two and more output fields but we need to do this, e.g.\n * bounding box needs to be mapped to topLeft and btmRight. That's why this method tries to fix this\n */\n modifyFields: function modifyFields(fields) {\n var resultFields = Object.assign({}, fields);\n\n var coordinateParameterDefinition = {\n application: parameterApplications.PATH\n };\n\n resultFields.minLon = coordinateParameterDefinition;\n resultFields.maxLon = coordinateParameterDefinition;\n resultFields.minLat = coordinateParameterDefinition;\n resultFields.maxLat = coordinateParameterDefinition;\n\n return resultFields;\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This layer groups functionality of\n *
traffic layer \n * and traffic incidents \n * In most situations you will want to use these layers together and refresh them at the same time, so\n * we are providing this layer to make your work easier.\n *\n * If you use this layer there will be only one timer and it will issue only one request to check if\n * traffic data is up to date. If you create layers on your own, each layer will have it's own timer and\n * will check for data freshness on its own. You can specify how ofter the data should be refreshed.\n *\n *\n * @class TomTomTrafficWithIncidentsLayer\n * @extends L.LayerGroup\n * @namespace L\n * @module Map\n * @constructor\n * @param {Object} [options] It accepts all the options that\n * Leaflet's LayerGroup\n * class allows. The additional options, which are TomTom specific, are described below.\n * @param {Object|Boolean} [options.traffic] Options which will be used for traffic and traffic incidents layers.\n * Please refer to the\n * docs \n * to check what options you can use.\n * @param {Number} [options.refresh=30000] The traffic and traffic incidents information changes and needs to be updated\n * periodically. By default, it is refreshed every 30 seconds. This parameter's value represents the time\n * in milliseconds between each update interval. The value must be 30000 or greater.\n */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(14), __webpack_require__(131), __webpack_require__(63)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, trafficRefresher, trafficLayer, trafficIncidentsLayer) {\n\n L.TomTomTrafficWithIncidentsLayer = L.LayerGroup.extend({\n initialize: function initialize(options) {\n L.setOptions(this, options);\n },\n _trafficModelIdCallback: function _trafficModelIdCallback(trafficModelId) {\n this.trafficLayer.setTrafficModelId(trafficModelId);\n this.incidentsLayer.setTrafficModelId(trafficModelId);\n },\n /**\n * Name of traffic with incidents layer. It can be used to differentiate layers.\n * @property name\n * @default \"trafficWithIncidents\"\n * @type String\n */\n name: 'trafficWithIncidents',\n options: {\n pane: 'tilePane'\n },\n onAdd: function onAdd(map) {\n var trafficOptions = L.setOptions({ options: { _noRefresher: true } }, this.options);\n this.trafficLayer = trafficLayer(trafficOptions);\n this.incidentsLayer = trafficIncidentsLayer(trafficOptions);\n this.trafficLayerWithIncidents = L.layerGroup([this.trafficLayer, this.incidentsLayer]);\n this.trafficRefresherIntervalId = trafficRefresher.addRefresherWithModelId(undefined, this._trafficModelIdCallback, this);\n map.addLayer(this.trafficLayerWithIncidents);\n },\n onRemove: function onRemove() {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n this.trafficLayerWithIncidents.remove();\n },\n updateOptions: function updateOptions(options) {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n this.trafficRefresherIntervalId = trafficRefresher.addRefresherWithModelId(options, this._trafficModelIdCallback, this);\n L.setOptions(this, options);\n }\n });\n\n L.tomTomTrafficWithIncidentsLayer = function (options) {\n return new L.TomTomTrafficWithIncidentsLayer(options);\n };\n\n return L.tomTomTrafficWithIncidentsLayer;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Provides the current traffic model id which is the traffic model number needed for the Traffic API -\n * Incidents Layer, and the {{#crossLink \"TrafficIncidents\"}}Traffic API - Incident Details{{/crossLink}}\n * calls.\n *\n * It is updated every minute, and is valid for two minutes before it times out.\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"TrafficModelId/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"TrafficModelId/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * @class TrafficModelId\n * @uses Chain\n * @module Services\n * @uses KeyMixin\n * @uses ProtocolMixin\n * @constructor\n * @param {Object} [options]\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n *\n * @example\n * ```js\n * function callbackFn(response) {\n * console.log(response);\n * }\n * tomtom.trafficModelId()\n * .key(\"\")\n * .go(callbackFn);\n * ```\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(129), __webpack_require__(130), __webpack_require__(8), __webpack_require__(2)], __WEBPACK_AMD_DEFINE_RESULT__ = function (restTrafficViewport, model, chain, validators) {\n 'use strict';\n\n var fields = {\n key: { validator: validators.string },\n protocol: { validator: validators.oneOfValue(['http', 'https'], 'protocol') }\n };\n\n var trafficViewport = restTrafficViewport();\n\n function handleChain(data, callback) {\n trafficViewport.trafficViewport(fields, data, function (response) {\n callback.call(this, model(response));\n });\n }\n\n return function (options) {\n return chain(fields, handleChain, options);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(6), __webpack_require__(10), __webpack_require__(9)], __WEBPACK_AMD_DEFINE_RESULT__ = function (endpoints, requestFactory, ApiKeyNames) {\n 'use strict';\n\n return function () {\n return {\n trafficViewport: requestFactory.single(endpoints.trafficViewport, ApiKeyNames.traffic)\n };\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(13)], __WEBPACK_AMD_DEFINE_RESULT__ = function (selector) {\n 'use strict';\n\n return function (json) {\n return selector(json, 'viewpResp.trafficState.@trafficModelId') || -1;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Tile layer for Leaflet that shows styled traffic tubes using\n * [Traffic API](https://developer.tomtom.com/traffic-api)\n * from TomTom.\n *\n * @class TomTomTrafficLayer\n * @extends L.TileLayer\n * @module Map\n * @namespace L\n * @constructor\n * @param {Object} [options] It accepts all the options that\n * Leaflet's TileLayer\n * allows.\n * The additional options, which are TomTom specific, are described below.\n * @param {String} [options.key] API key that can be obtained from\n * [TomTom's developer portal](https://developer.tomtom.com).\n * This is a key for the traffic services.\n * @param {\"s1\"|\"s2\"|\"s3\"|\"night\"} [options.style=\"night\"] The traffic layer style to use\n * @param {Number} [options.opacity=0.8] The traffic incidents layer's opacity set by default to 80%.\n * A floating point value between `0` and `1` have to be used, where `1` means no transparency.\n * @param {Boolean} [options.noRefresh] Disables periodic updates of traffic layers.\n * @param {Number} [options.refresh=30000] The traffic incidents information changes and needs to be updated\n * periodically. By default, it is refreshed every 30 seconds. This parameter's value represents the time\n * in milliseconds between each update interval. The value must be 30000 or greater.\n *\n */\n/**\n * Name of traffic layer. It can be used to differentiate layers.\n * @property name\n * @default \"traffic\"\n * @type String\n */\n\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(5), __webpack_require__(11), __webpack_require__(6), __webpack_require__(14), __webpack_require__(12), __webpack_require__(37), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, security, http, endpoints, trafficRefresher, analytics, tileSetTransform, Utils) {\n 'use strict';\n\n var trafficStyles = ['s1', 's2', 's3', 'night'];\n\n function getTrafficStyle(trafficLayer) {\n var style = 'night',\n i;\n if (Utils.isString(trafficLayer)) {\n for (i = 0; i < trafficStyles.length; i += 1) {\n if (trafficStyles[i] === trafficLayer.toLowerCase()) {\n return trafficStyles[i];\n }\n }\n }\n return style;\n }\n\n function handleSubdomains(options) {\n if (Utils.isString(options.subdomains)) {\n options.subdomains = options.subdomains.split('');\n }\n }\n\n function loadAnimation() {\n var opacity = 'opacity',\n back = this._bgBuffer;\n back.style[L.DomUtil.TRANSITION] = opacity + ' 10';\n back.style[opacity] = 0.1;\n this._tileContainer.style[opacity] = this.options.opacity;\n }\n\n var emptyTileUrl = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAB9JREFUGBntwQENAAAAwiD7p34ON2AAAAAAAAAAAOcCIQAAAfWivQQAAAAASUVORK5CYII='; //eslint-disable-line\n\n L.TomTomTrafficLayer = L.TileLayer.extend({\n options: {\n attribution: '',\n minZoom: 2,\n maxZoom: 18,\n subdomains: 'abcd',\n reuseTiles: true,\n opacity: 0.8,\n errorTileUrl: emptyTileUrl,\n detectRetina: false,\n trafficModelId: '-1',\n refresh: 30000,\n zIndex: 230\n },\n /**\n * Name of traffic layer. It can be used to differentiate layers.\n * @property name\n * @default \"traffic\"\n * @type String\n */\n name: 'traffic',\n initialize: function initialize(options) {\n var key;\n options = L.setOptions(this, options);\n if (options.bounds) {\n options.bounds = L.latLngBounds(options.bounds);\n }\n security.setKey('services/traffic', options.key);\n key = security.getKey('services/traffic');\n options.accessToken = key;\n this._requestUrl = http.protocol() + '://' + endpoints.trafficLayer + '?t={trafficModelId}' + (key ? '&key={accessToken}' : '');\n this._url = this._requestUrl;\n options.style = getTrafficStyle(options.style);\n handleSubdomains(options);\n options.tileSize = options.detectRetina && L.Browser.retina ? 512 : 256;\n if (options.tileSize === 512) {\n options.zoomOffset -= 1;\n options.minZoom = options.minZoom > 0 ? options.minZoom - 1 : 0;\n }\n this.setOpacity(options.opacity);\n\n tileSetTransform.fixTileScale.call(this);\n },\n onAdd: function onAdd(map) {\n L.TileLayer.prototype.onAdd.call(this, map);\n if (this._animated) {\n this.on('load', loadAnimation);\n }\n this._updateOpacity();\n this.trafficRefresherIntervalId = trafficRefresher.addRefresherWithModelId(undefined, this.setTrafficModelId, this);\n },\n onRemove: function onRemove(map) {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n L.TileLayer.prototype.onRemove.call(this, map);\n },\n updateOptions: function updateOptions(options) {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n this.trafficRefresherIntervalId = trafficRefresher.addRefresherWithModelId(options, this.setTrafficModelId, this);\n L.setOptions(this, options);\n },\n setTrafficModelId: function setTrafficModelId(trafficModelId) {\n if (this.options.trafficModelId !== trafficModelId) {\n this.options.trafficModelId = trafficModelId;\n this.redraw();\n }\n },\n createTile: function createTile(coords, done) {\n var tile;\n if (this.options.trafficModelId === '-1') {\n tile = document.createElement('img');\n tile.src = emptyTileUrl;\n done(null, tile);\n return tile;\n }\n return analytics.customCreateTile(coords, done, this);\n }\n });\n\n L.tomTomTrafficLayer = function (options) {\n return new L.TomTomTrafficLayer(options);\n };\n\n return L.tomTomTrafficLayer;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(6), __webpack_require__(10), __webpack_require__(9)], __WEBPACK_AMD_DEFINE_RESULT__ = function (endpoints, requestFactory, ApiKeyNames) {\n 'use strict';\n\n return function () {\n return {\n incidentsDetails: requestFactory.single(endpoints.trafficIncidents, ApiKeyNames.traffic)\n };\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(60)], __WEBPACK_AMD_DEFINE_RESULT__ = function (arrayMerge) {\n 'use strict';\n\n var _getFeature;\n var incidentCategories = {\n 0: 'Unknown',\n 1: 'Accident',\n 2: 'Fog',\n 3: 'Dangerous Conditions',\n 4: 'Rain',\n 5: 'Ice',\n 6: 'Jam',\n 7: 'Lane Closed',\n 8: 'Road Closed',\n 9: 'Road Works',\n 10: 'Wind',\n 11: 'Flooding',\n 12: 'Detour',\n 13: 'Cluster'\n };\n\n var incidentSeverities = { 0: 'unknown', 1: 'minor', 2: 'moderate', 3: 'major', 4: 'undefined' };\n\n function newFeature(properties, type) {\n return {\n type: 'Feature',\n geometry: { type: type, coordinates: [] },\n properties: properties\n };\n }\n\n function newFeatureCollection(properties) {\n var featureCollection = {\n type: 'FeatureCollection',\n features: []\n };\n if (properties) {\n featureCollection.properties = properties;\n }\n return featureCollection;\n }\n\n function setProperty(property, propertyName, properties) {\n if (property) {\n properties[propertyName] = property;\n }\n }\n\n _getFeature = function getFeature(poi, preserveCluster) {\n var feature,\n i,\n properties = {};\n properties.id = poi.id;\n if (poi.cbl && poi.ctr) {\n properties.clusterBounds = [[poi.cbl.y, poi.cbl.x], [poi.ctr.y, poi.ctr.x]];\n }\n if (poi.op) {\n properties.originalPosition = [poi.op.y, poi.op.x];\n }\n if (poi.ic) {\n properties.incidentCategory = incidentCategories[poi.ic];\n }\n if (poi.ty) {\n properties.incidentSeverity = incidentSeverities[poi.ty];\n }\n setProperty(poi.cs, 'clusterSize', properties);\n setProperty(poi.d, 'description', properties);\n setProperty(poi.c, 'incidentCause', properties);\n setProperty(poi.f, 'from', properties);\n setProperty(poi.t, 'to', properties);\n setProperty(poi.r, 'roadNumber', properties);\n setProperty(poi.dl, 'delaySeconds', properties);\n setProperty(poi.l, 'lengthMeters', properties);\n if (poi.cpoi && !preserveCluster) {\n properties.clusterCoordinates = [poi.p.x, poi.p.y];\n feature = newFeatureCollection(properties);\n for (i = 0; i < poi.cpoi.length; i += 1) {\n feature.features.push(_getFeature(poi.cpoi[i], false));\n }\n } else {\n if (poi.cpoi) {\n properties.features = poi.cpoi.map(_getFeature);\n }\n feature = newFeature(properties, 'Point');\n feature.geometry.coordinates = [poi.p.x, poi.p.y];\n }\n return feature;\n };\n\n return function (preserveCluster) {\n return function (data) {\n var result = newFeatureCollection(null),\n json = data[0] || data,\n i;\n if (!json || !json.tm || !json.tm.poi) {\n return result;\n }\n if (data.length > 1) {\n // this is edge of the world case\n json.tm.poi = arrayMerge(data[0].tm.poi, data[1].tm.poi, function (first, second) {\n return first.id === second.id;\n });\n }\n for (i = 0; i < json.tm.poi.length; i += 1) {\n result.features.push(_getFeature(json.tm.poi[i], preserveCluster));\n }\n return result;\n };\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* jshint nomen:false */\n// eslint-disable-next-line no-unused-vars\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(36), __webpack_require__(65)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, T, incidentMarker) {\n 'use strict';\n\n var clusterPopupTemplate = new T('
' + '
Incidents in this area: {{=incidentsNo}}
' + '
' + '
{{=features.length}} most severe incidents' + ' (Ordered by severity and delay)' + '
' + '
' + '
' + '
Category
' + '
Length
' + '
Streets
' + '
' + '
' + '
' + ' {{@features}}' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + ' {{=_val.properties.formattedLength}}' + '
' + '
' + '
From:{{=_val.properties.from}}
' + '
To:{{=_val.properties.to}}
' + '
' + '
' + '
' + '
' + ' {{/@features}}' + '
');\n\n function compareDelays(p1, p2) {\n var d1 = p1.delaySeconds || 0;\n var d2 = p2.delaySeconds || 0;\n return d2 - d1;\n }\n\n function compareSeverity(p1, p2, severity) {\n var is1 = p1.incidentSeverity;\n var is2 = p2.incidentSeverity;\n if (is1 === severity) {\n return -1;\n } else if (is2 === severity) {\n return 1;\n }\n return 0;\n }\n\n function featuresComparator(f1, f2) {\n var severities = ['major', 'moderate', 'minor', 'unknown', 'undefined'];\n var severityComparisonResult = 0;\n var i;\n\n var p1 = f1.properties;\n var p2 = f2.properties;\n\n if (p1.incidentSeverity === p2.incidentSeverity) {\n return compareDelays(p1, p2);\n }\n\n for (i = 0; i < severities.length; ++i) {\n severityComparisonResult = compareSeverity(p1, p2, severities[i]);\n if (severityComparisonResult !== 0) {\n return severityComparisonResult;\n }\n }\n\n return severityComparisonResult;\n }\n\n function formatLength(lengthInMeters) {\n if (!lengthInMeters) {\n return '---';\n }\n\n if (lengthInMeters > 1000) {\n return (lengthInMeters / 1000).toPrecision(3) + ' km';\n }\n return lengthInMeters + ' m';\n }\n\n function getIconOptions(feature) {\n var severity = feature.properties.incidentSeverity || 'unknown';\n var clusterSize = feature.properties.clusterSize;\n\n return {\n icon: null,\n popupAnchor: [0, -5],\n background: { iconSize: [20, 20], iconAnchor: [10, 10], icon: 'icon-circle-' + severity },\n content: {\n content: clusterSize < 100 ? clusterSize : '99+',\n iconSize: [20, 20],\n iconAnchor: [0, 0],\n style: { 'color': '#fff', 'font-weight': 'bold', 'font-size': '11px' }\n }\n };\n }\n\n L.Marker.ClusterIncidentMarker = L.Marker.IncidentMarker.extend({\n options: {\n createPopup: true\n },\n onAdd: function onAdd(map) {\n this._map = map;\n if (!this.options.createPopup) {\n this.on('click', this._onClick, this);\n }\n L.Marker.prototype.onAdd.call(this, map);\n },\n onRemove: function onRemove(map) {\n if (!this.options.createPopup) {\n this.off('click', this._onClick, this);\n }\n L.Marker.prototype.onRemove.call(this, map);\n },\n _onClick: function _onClick() {\n if (this.feature.properties.clusterBounds) {\n this._map.fitBounds(this.feature.properties.clusterBounds);\n } else {\n this._map.setZoomAround(this.getLatLng(), this._map.getZoom() + 2);\n }\n },\n _updateIcon: function _updateIcon() {\n this.setIcon(L.svgIcon(getIconOptions(this.feature)));\n },\n _updatePopup: function _updatePopup() {\n var popupContent;\n var featuresToShow;\n if (!this.options.createPopup) {\n return;\n }\n\n featuresToShow = this.feature.properties.features.slice(0).sort(featuresComparator).slice(0, 4).map(function (feature) {\n var properties = Object.assign({}, feature.properties, {\n icon: this.iconsMapping[feature.properties.incidentCategory],\n formattedLength: formatLength(feature.properties.lengthMeters)\n });\n return Object.assign({}, feature, {\n properties: properties\n });\n }, this);\n\n popupContent = clusterPopupTemplate.render({\n features: featuresToShow,\n incidentsNo: this.feature.properties.features.length\n });\n\n if (this.getPopup()) {\n this.setPopupContent(popupContent);\n } else {\n this.bindPopup(popupContent, { autoPan: false });\n }\n }\n });\n\n return function (feature, latlng, options) {\n if (!feature || !feature.properties) {\n return null;\n }\n\n return new L.Marker.ClusterIncidentMarker(feature, latlng, {\n createPopup: options.createPopupForCluster\n });\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Class that represents a unit of measurement.\n *\n * @class Unit\n * @module Models\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(16)], __WEBPACK_AMD_DEFINE_RESULT__ = function (unitTypes) {\n 'use strict';\n\n function Unit(unit) {\n if (!(unit in unitTypes)) {\n console.warn('Incorrect unit passed: ' + unit + '. Defaulted to metric');\n unit = unitTypes.metric;\n }\n this.unit = unit;\n }\n\n /**\n * Returns the label of the unit.\n * @method getLabel\n * @return {String}\n */\n Unit.prototype.getLabel = function () {\n return this.unit;\n };\n\n return Unit;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This is an extension to Leaflet allowing to display TomTom traffic flow layer. It is based on the raster L.TileLayer\n * implementation. The possible options are described below.\n *\n * @class TomTomTrafficFlowLayer\n * @extends L.TileLayer\n * @namespace L\n * @module Map\n * @constructor\n * @param {Object} [options] It accepts all the options that\n * Leaflet's TileLayer\n * allows.\n * The additional options, which are TomTom specific, are described below.\n * @param {\"absolute\"|\"relative\"|\"relative-delay\"} [options.style=\"absolute\"] The traffic flow style to be displayed.\n * It should be set to one of the following values:\n * - `\"absolute\"` makes the colours of the road segments reflect a measured absolute speed.\n * - `\"relative\"` returns a speed relative to the free-flow traffic information, highlighting areas of congestion.\n * - `\"relative-delay\"` displays relative speeds only in places where they are different from the free-flow speed\n * (no green segments shown).\n * @param {Number} [options.opacity=0.7] The traffic flow layer's opacity, set by default to 70%.\n * A floating point value between `0` and `1` have to be used, where `1` means no transparency.\n * @param {Boolean} [options.noRefresh] Disables periodic updates of traffic flow layer.\n * @param {Number} [options.refresh=180000] The traffic flow information changes and needs to be updated periodically.\n * By default, it is refreshed every 3 minutes. This parameter's value represents the time in milliseconds between\n * each update interval. The value must be 30000 or greater.\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(5), __webpack_require__(11), __webpack_require__(6), __webpack_require__(66), __webpack_require__(67), __webpack_require__(14), __webpack_require__(12), __webpack_require__(37), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, security, http, endpoints, animator, optionsComplementor, trafficRefresher, analytics, tileSetTransform, Utils) {\n 'use strict';\n\n var trafficFlowStyles = ['absolute', 'relative', 'relative-delay'];\n\n function getTrafficFlowStyle(trafficFlowLayer) {\n var style = 'absolute',\n i;\n if (Utils.isString(trafficFlowLayer)) {\n for (i = 0; i < trafficFlowStyles.length; i += 1) {\n if (trafficFlowStyles[i] === trafficFlowLayer.toLowerCase()) {\n return trafficFlowStyles[i];\n }\n }\n }\n return style;\n }\n\n L.TomTomTrafficFlowLayer = L.TileLayer.extend({\n options: {\n attribution: '',\n minZoom: 2,\n maxZoom: 18,\n subdomains: 'abcd',\n reuseTiles: true,\n opacity: 0.7,\n style: 'absolute',\n refresh: 180000,\n errorTileUrl: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAB9JREFUGBntwQENAAAAwiD7p34ON2AAAAAAAAAAAOcCIQAAAfWivQQAAAAASUVORK5CYII=', //eslint-disable-line\n detectRetina: false,\n zIndex: 220\n },\n /**\n * Name of traffic flow layer. It can be used to differentiate layers.\n * @property name\n * @default \"trafficFlow\"\n * @type String\n */\n name: 'trafficFlow',\n initialize: function initialize(options) {\n var key;\n options = L.setOptions(this, options);\n if (options.bounds) {\n options.bounds = L.latLngBounds(options.bounds);\n }\n security.setKey('services/trafficFlow', options.key);\n key = security.getKey('services/trafficFlow');\n options.accessToken = key;\n this._url = http.protocol() + '://' + endpoints.trafficFlowLayer + (key ? '?key={accessToken}' : '');\n options.style = getTrafficFlowStyle(options.style);\n optionsComplementor.fillInSubdomainsOptions(options);\n optionsComplementor.fillInTiles512Options(options);\n this.setOpacity(options.opacity);\n\n tileSetTransform.fixTileScale.call(this);\n },\n onAdd: function onAdd(map) {\n L.TileLayer.prototype.onAdd.call(this, map);\n if (this._animated) {\n this.on('load', animator.loadAnimationFactory(this));\n }\n this._updateOpacity();\n this.trafficRefresherIntervalId = trafficRefresher.add(this.options, this.redraw.bind(this));\n },\n onRemove: function onRemove(map) {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n L.TileLayer.prototype.onRemove.call(this, map);\n },\n updateOptions: function updateOptions(options) {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n this.trafficRefresherIntervalId = trafficRefresher.add(options, this.redraw.bind(this));\n L.setOptions(this, options);\n },\n createTile: function createTile(coords, done) {\n return analytics.customCreateTile(coords, done, this);\n }\n });\n\n L.tomTomTrafficFlowLayer = function (options) {\n return new L.TomTomTrafficFlowLayer(options);\n };\n\n return L.tomTomTrafficFlowLayer;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* jshint nomen:false */\n/**\n * Tile layer for Leaflet that uses the\n * \n * Vector Flow Tiles from Traffic API.\n *\n * The current vector renderer implementation is based on the\n * [Mapbox GL JS library](https://www.mapbox.com/mapbox-gl-js/api/).\n *\n * @example\n * ```js\n * var ttVectorTrafficLayer = new L.TomTomVectorTrafficFlowLayer({\n * key: '',\n * refresh: 30000,\n * basePath: '',\n * style: 'relative'\n * });\n *\n * map.addLayer(ttVectorTrafficLayer);\n * ```\n *\n * @class TomTomVectorTrafficFlowLayer\n * @namespace L\n * @module Map\n * @extends L.TomTomVectorLayer\n * @constructor\n * @param {\"absolute\"|\"relative\"|\"relative-delay\"} [options.style=\"absolute\"] Specifies the style and type of\n * Traffic Flow\n * @param {String} [options.key] Traffic Flow API key that can be obtained from\n * TomTom's developer portal.\n * @param {Integer} [options.refresh=30000] Traffic refresh inteval in milliseconds. The default value is 30 seconds.\n * If a lower value is provided the default value is used.\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(23), __webpack_require__(24), __webpack_require__(5), __webpack_require__(9)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, VectorLayer, labelsLayerMixinFactory, security, ApiKeyNames) {\n 'use strict';\n\n var TomTomVectorTrafficFlowLayer = VectorLayer.extend({\n defaultOptions: {\n refresh: 30000,\n style: 'absolute',\n basePath: '/sdk'\n },\n /**\n * Name of the vector traffic flow layer. It can be used to differentiate layers.\n * @property name\n * @default \"vectorTrafficFlow\"\n * @type String\n */\n name: 'vectorTrafficFlow',\n layerSourceName: 'vectorTilesTraffic',\n refreshIntervalToken: null,\n initialize: function initialize(options) {\n this.validateOptions(options);\n this.layerOptions = this.getLayerOptions(options);\n VectorLayer.prototype.initialize.call(this, this.layerOptions);\n security.setKey(ApiKeyNames.trafficFlow, this.layerOptions.key);\n this.refresh = this.refresh.bind(this);\n },\n onAdd: function onAdd(map) {\n VectorLayer.prototype.onAdd.call(this, map);\n this.bringToFront();\n this.startRefresh();\n },\n onRemove: function onRemove(map) {\n this.stopRefresh();\n VectorLayer.prototype.onRemove.call(this, map);\n },\n getLayerOptions: function getLayerOptions(opts) {\n var layer = this.defaultOptions.style;\n var options = L.extend({}, this.defaultOptions, opts);\n\n if (['relative', 'relative-delay'].indexOf(options.style) >= 0) {\n layer = options.style;\n }\n\n return L.extend({}, options, {\n style: 'vectorTrafficFlow',\n layer: layer,\n refresh: Math.max(this.defaultOptions.refresh, options.refresh),\n securityKeyName: ApiKeyNames.trafficFlow,\n vector: {\n renderer: {\n refreshExpiredTiles: false\n }\n },\n styleUrlMapping: {\n vectorTrafficFlow: {\n 'absolute': options.basePath + '/styles/flow_absolute.json',\n 'relative': options.basePath + '/styles/flow_relative.json',\n 'relative-delay': options.basePath + '/styles/flow_relative-delay.json'\n }\n }\n });\n },\n validateOptions: function validateOptions(options) {\n if (options && options.refresh && !Number.isInteger(options.refresh)) {\n throw new Error('The refresh value must be an Integer but ' + _typeof(options.refresh) + ' was provided.');\n }\n },\n getSourceCache: function getSourceCache() {\n var cache = this._glMap && this._glMap.style && this._glMap.style.sourceCaches && this._glMap.style.sourceCaches[this.layerSourceName];\n if (!cache) {\n // we could just return cache, but this could be any falsy type\n return null;\n }\n return cache;\n },\n\n startRefresh: function startRefresh() {\n var refreshRate = this.layerOptions.refresh;\n this.stopRefresh();\n if (refreshRate <= 0) {\n return;\n }\n this.refreshIntervalToken = setInterval(this.refresh, refreshRate);\n },\n refresh: function refresh() {\n var i;\n var cache = this.getSourceCache();\n if (!cache) {\n // don't stop refreshing,\n // this could be recovered in the next call\n return;\n }\n // calling cache.reload() is not efficient enough,\n // because it will call _reloadTile with state different than 'expired'\n // and will not force tile to be downladed again.\n for (i in cache._tiles) {\n if (cache._tiles.hasOwnProperty(i)) {\n cache._reloadTile(i, 'expired');\n }\n }\n cache.clearTiles();\n },\n stopRefresh: function stopRefresh() {\n if (this.refreshIntervalToken) {\n this.refreshIntervalToken = clearInterval(this.refreshIntervalToken);\n }\n },\n updateOptions: function updateOptions(options) {\n if (options.style) {\n this.layerOptions = this.getLayerOptions(options);\n VectorLayer.prototype.updateOptions.call(this, this.layerOptions);\n this.startRefresh();\n }\n }\n });\n\n L.TomTomVectorTrafficFlowLayer = TomTomVectorTrafficFlowLayer.extend(labelsLayerMixinFactory('vectorTrafficFlow'));\n\n L.tomTomVectorTrafficFlowLayer = function tomTomVectorTrafficFlowLayer(options) {\n return new L.TomTomVectorTrafficFlowLayer(options);\n };\n\n return L.tomTomVectorTrafficFlowLayer;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(27)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, mapboxProvider) {\n\n L.MapboxGL = L.Layer.extend({\n\n initialize: function (options) {\n L.setOptions(this, options);\n\n if (options.renderer && options.renderer.accessToken) {\n mapboxProvider.getMapbox().accessToken = options.renderer.accessToken;\n } else {\n throw new Error('You should provide a Mapbox GL access token as a token option.');\n }\n\n },\n\n _getPane: function () {\n return this._parentPane || this._map.getPanes().tilePane;\n },\n\n _setPane: function (pane) {\n this._parentPane = pane;\n },\n beforeAdd: function(map) {\n map._addZoomLimit(this);\n },\n onAdd: function (map) {\n this._map = map;\n\n if (!this._glContainer) {\n this._initContainer();\n }\n\n this._getPane().appendChild(this._glContainer);\n\n this._initGL();\n\n this._offset = this._map.containerPointToLayerPoint([0, 0]);\n\n // work around https://github.com/mapbox/mapbox-gl-leaflet/issues/47\n if (map.options.zoomAnimation && map._proxy) {\n L.DomEvent.on(map._proxy, L.DomUtil.TRANSITION_END, this._transitionEnd, this);\n }\n\n this._update();\n },\n\n onRemove: function (map) {\n //COM\n //map._removeZoomLimit(this);\n if (this._map.options.zoomAnimation && this._map._proxy) {\n L.DomEvent.off(this._map._proxy, L.DomUtil.TRANSITION_END, this._transitionEnd, this);\n }\n\n this._getPane().removeChild(this._glContainer);\n this._glMap.remove();\n this._glMap = null;\n },\n\n getEvents: function () {\n return {\n move: this._update,\n zoomanim: this._animateZoom, // apply the zoom animation to the \n zoom: this._pinchZoom, // animate every zoom event for smoother pinch-zooming\n zoomstart: this._zoomStart, // flag starting a zoom to disable panning\n zoomend: this._zoomEnd\n };\n },\n\n _initContainer: function () {\n var container = this._glContainer = L.DomUtil.create('div', 'leaflet-gl-layer');\n\n var size = this._map.getSize();\n container.style.width = size.x + 'px';\n container.style.height = size.y + 'px';\n },\n\n _initGL: function () {\n var center = this._map.getCenter();\n\n var options = L.extend({}, this.options.renderer, {\n container: this._glContainer,\n interactive: false,\n center: [center.lng, center.lat],\n zoom: this._map.getZoom() - 1,\n attributionControl: false\n });\n\n this._glMap = new (mapboxProvider.getMapbox()).Map(options);\n\n // allow GL base map to pan beyond min/max latitudes\n this._glMap.transform.latRange = null;\n\n if (this._glMap._canvas.canvas) {\n // older versions of mapbox-gl surfaced the canvas differently\n this._glMap._actualCanvas = this._glMap._canvas.canvas;\n } else {\n this._glMap._actualCanvas = this._glMap._canvas;\n }\n\n // treat child element like L.ImageOverlay\n L.DomUtil.addClass(this._glMap._actualCanvas, 'leaflet-image-layer');\n L.DomUtil.addClass(this._glMap._actualCanvas, 'leaflet-zoom-animated');\n },\n\n _update: function () {\n // update the offset so we can correct for it later when we zoom\n this._offset = this._map.containerPointToLayerPoint([0, 0]);\n\n if (this._zooming) {\n return;\n }\n\n var size = this._map.getSize(),\n container = this._glContainer,\n gl = this._glMap,\n topLeft = this._map.containerPointToLayerPoint([0, 0]);\n\n L.DomUtil.setPosition(container, topLeft);\n\n var center = this._map.getCenter();\n\n // gl.setView([center.lat, center.lng], this._map.getZoom() - 1, 0);\n // calling setView directly causes sync issues because it uses requestAnimFrame\n\n var tr = gl.transform;\n tr.center = mapboxProvider.getMapbox().LngLat.convert([center.lng, center.lat]);\n tr.zoom = this._map.getZoom() - 1;\n\n if (gl.transform.width !== size.x || gl.transform.height !== size.y) {\n container.style.width = size.x + 'px';\n container.style.height = size.y + 'px';\n if (gl._resize !== null && gl._resize !== undefined) {\n gl._resize();\n } else {\n gl.resize();\n }\n } else {\n gl._update();\n }\n },\n\n // update the map constantly during a pinch zoom\n _pinchZoom: function (e) {\n this._glMap.jumpTo({\n zoom: this._map.getZoom() - 1,\n center: this._map.getCenter()\n });\n },\n\n // borrowed from L.ImageOverlay https://github.com/Leaflet/Leaflet/blob/master/src/layer/ImageOverlay.js#L139-L144\n _animateZoom: function (e) {\n var scale = this._map.getZoomScale(e.zoom),\n offset = this._map._latLngToNewLayerPoint(this._map.getBounds().getNorthWest(), e.zoom, e.center);\n\n L.DomUtil.setTransform(this._glMap._actualCanvas, offset.subtract(this._offset), scale);\n },\n\n _zoomStart: function (e) {\n this._zooming = true;\n },\n\n _zoomEnd: function () {\n var scale = this._map.getZoomScale(this._map.getZoom()),\n offset = this._map._latLngToNewLayerPoint(this._map.getBounds().getNorthWest(), this._map.getZoom(), this._map.getCenter());\n\n L.DomUtil.setTransform(this._glMap._actualCanvas, offset.subtract(this._offset), scale);\n this._zooming = false;\n\n this._update();\n },\n\n _transitionEnd: function (e) {\n L.Util.requestAnimFrame(function () {\n var zoom = this._map.getZoom(),\n center = this._map.getCenter(),\n offset = this._map.latLngToContainerPoint(this._map.getBounds().getNorthWest());\n\n // reset the scale and offset\n L.DomUtil.setTransform(this._glMap._actualCanvas, offset, 1);\n\n // enable panning once the gl map is ready again\n this._glMap.once('moveend', L.Util.bind(function () {\n this._zoomEnd();\n }, this));\n\n // update the map position\n this._glMap.jumpTo({\n center: center,\n zoom: zoom - 1\n });\n }, this);\n }\n });\n\n L.mapboxGL = function (options) {\n return new L.MapboxGL(options);\n };\n\n return L.MapboxGL;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This layer groups functionality of\n * traffic layer \n * and traffic incidents \n * In most situations you will want to use these layers together and refresh them at the same time, so\n * we are providing this layer to make your work easier.\n *\n * If you use this layer there will be only one timer and it will issue only one request to check if\n * traffic data is up to date. If you create layers on your own, each layer will have it's own timer and\n * will check for data freshness on its own. You can specify how ofter the data should be refreshed.\n *\n *\n * @class TomTomTrafficWithIncidentsLayer\n * @extends L.LayerGroup\n * @namespace L\n * @module Map\n * @constructor\n * @param {Object} [options] It accepts all the options that\n * Leaflet's LayerGroup\n * class allows. The additional options, which are TomTom specific, are described below.\n * @param {Object|Boolean} [options.traffic] Options which will be used for traffic and traffic incidents layers.\n * Please refer to the\n * docs \n * to check what options you can use.\n * @param {Number} [options.refresh=30000] The traffic and traffic incidents information changes and needs to be updated\n * periodically. By default, it is refreshed every 30 seconds. This parameter's value represents the time\n * in milliseconds between each update interval. The value must be 30000 or greater.\n */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(14), __webpack_require__(140), __webpack_require__(63)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, trafficRefresher, vectorTrafficIncidents, trafficIncidentsLayer) {\n\n L.TomTomVectorTrafficWithIncidentsLayer = L.LayerGroup.extend({\n initialize: function initialize(options) {\n L.setOptions(this, options);\n },\n _trafficModelIdCallback: function _trafficModelIdCallback(trafficModelId) {\n this.vectorTrafficIncidents.setTrafficModelId(trafficModelId);\n this.incidentsLayer.setTrafficModelId(trafficModelId);\n },\n /**\n * Name of traffic with incidents layer. It can be used to differentiate layers.\n * @property name\n * @default \"vectorTrafficWithIncidents\"\n * @type String\n */\n name: 'vectorTrafficWithIncidents',\n options: {\n pane: 'tilePane'\n },\n onAdd: function onAdd(map) {\n var trafficOptions = L.setOptions({ options: { _noRefresher: true } }, this.options);\n this.vectorTrafficIncidents = vectorTrafficIncidents(trafficOptions);\n this.incidentsLayer = trafficIncidentsLayer(trafficOptions);\n this.trafficLayerWithIncidents = L.layerGroup([this.vectorTrafficIncidents, this.incidentsLayer]);\n this.trafficRefresherIntervalId = trafficRefresher.addRefresherWithModelId(undefined, this._trafficModelIdCallback, this);\n map.addLayer(this.trafficLayerWithIncidents);\n },\n onRemove: function onRemove() {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n this.trafficLayerWithIncidents.remove();\n },\n updateOptions: function updateOptions(options) {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n this.trafficRefresherIntervalId = trafficRefresher.addRefresherWithModelId(options, this._trafficModelIdCallback, this);\n L.setOptions(this, options);\n }\n });\n\n L.tomTomVectorTrafficWithIncidentsLayer = function (options) {\n return new L.TomTomVectorTrafficWithIncidentsLayer(options);\n };\n\n return L.tomTomVectorTrafficWithIncidentsLayer;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* jshint nomen:false */\n/**\n * Tile layer for Leaflet that uses the\n * Vector Traffic Incidents from TomTom Online Traffic.\n *\n * The current vector renderer implementation is based on the\n * [Mapbox GL JS library](https://www.mapbox.com/mapbox-gl-js/api/).\n *\n * @example\n * ```js\n * var ttVectorTrafficIncidents = new L.TomTomVectorTrafficIncidents({\n * key: '',\n * refresh: 30000,\n * basePath: '',\n * style: 's1'\n * });\n *\n * map.addLayer(ttVectorTrafficIncidents);\n * ```\n *\n * @class TomTomVectorTrafficIncidents\n * @namespace L\n * @module Map\n * @extends L.TomTomVectorLayer\n * @constructor\n * @param {\"s1\"|\"s2\"|\"s3\"|\"night\"} [options.style=\"s1\"] Specifies the style and type of traffic incidents\n * @param {String} [options.key] Traffic Flow API key that can be obtained from\n * TomTom's developer portal.\n * @param {Integer} [options.refresh=30000] Traffic refresh interval in milliseconds. The default value is 30 seconds.\n * If a lower value is provided the default value is used.\n**/\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(23), __webpack_require__(24), __webpack_require__(5), __webpack_require__(9), __webpack_require__(14)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, VectorLayer, labelsLayerMixinFactory, security, ApiKeyNames, trafficRefresher) {\n var TomTomVectorIncidentsLayer;\n\n function replaceTrafficModelIdInUrl(style, trafficModelId) {\n if (!style) {\n return undefined;\n }\n style.sources.vectorTilesTraffic.tiles.forEach(function (elem, index, arr) {\n var regex = /&t=[0-9]\\d+$/;\n var matches = elem.search(regex);\n if (matches > -1) {\n arr[index] = elem.replace(regex, '&t=' + trafficModelId);\n } else {\n arr[index] = elem + '&t=' + trafficModelId;\n }\n }, this);\n return style;\n }\n\n TomTomVectorIncidentsLayer = VectorLayer.extend({\n defaultOptions: {\n refresh: 30000,\n style: 's1',\n basePath: '/sdk',\n preSetStyleCallback: function preSetStyleCallback(style) {\n return Promise.resolve(replaceTrafficModelIdInUrl(style, this.options.trafficModelId));\n }\n },\n name: 'vectorTrafficIncidents',\n layerSourceName: 'vectorTilesTraffic',\n initialize: function initialize(options) {\n options = options || {};\n if (!options.key && !security.getKey(ApiKeyNames.traffic)) {\n throw new Error('Error during Vector Incident Layer initialization - missing API key');\n }\n if (options.key) {\n security.setKey(ApiKeyNames.traffic, options.key);\n }\n this.options = L.extend(this.options, options);\n this.defaultOptions.preSetStyleCallback = this.defaultOptions.preSetStyleCallback.bind(this);\n this.layerOptions = this.getLayerOptions(options);\n VectorLayer.prototype.initialize.call(this, this.layerOptions);\n\n this.refresh = this.refresh.bind(this);\n },\n onAdd: function onAdd(map) {\n var that = this;\n this.startRefresh().then(function () {\n VectorLayer.prototype.onAdd.call(that, map);\n that.bringToFront();\n });\n },\n onRemove: function onRemove(map) {\n this.stopRefresh();\n VectorLayer.prototype.onRemove.call(this, map);\n },\n getLayerOptions: function getLayerOptions(opts) {\n var layer = opts && opts.style || this.defaultOptions.style;\n var options = L.extend({}, this.defaultOptions, opts);\n\n return L.extend({}, options, {\n style: 'vectorTrafficIncidents',\n layer: layer,\n refresh: Math.max(this.defaultOptions.refresh, options.refresh),\n securityKeyName: ApiKeyNames.traffic,\n vector: {\n renderer: {\n refreshExpiredTiles: false\n }\n },\n styleUrlMapping: {\n vectorTrafficIncidents: {\n 's1': options.basePath + '/styles/incidents_s1.json',\n 's2': options.basePath + '/styles/incidents_s2.json',\n 's3': options.basePath + '/styles/incidents_s3.json',\n 'night': options.basePath + '/styles/incidents_night.json'\n }\n }\n });\n },\n startRefresh: function startRefresh() {\n var that = this;\n if (this.options._noRefresher) {\n return Promise.resolve();\n }\n return new Promise(function (resolve) {\n that.trafficRefresherIntervalId = trafficRefresher.addRefresherWithModelId(undefined, function (trafficModelId) {\n that.setTrafficModelId(trafficModelId);\n resolve();\n }, that);\n });\n },\n stopRefresh: function stopRefresh() {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n },\n refresh: function refresh() {\n var style;\n if (this._glMap) {\n style = this._glMap.getStyle();\n if (style) {\n style = replaceTrafficModelIdInUrl(style, this.options.trafficModelId);\n this._glMap.setStyle(style, {\n diff: false,\n securityKeyName: ApiKeyNames.traffic\n });\n }\n }\n },\n setTrafficModelId: function setTrafficModelId(trafficModelId) {\n if (this.options.trafficModelId !== trafficModelId) {\n this.options.trafficModelId = trafficModelId;\n this.refresh();\n }\n },\n updateOptions: function updateOptions(options) {\n if (options.style) {\n this.stopRefresh();\n this.layerOptions = this.getLayerOptions(options);\n VectorLayer.prototype.updateOptions.call(this, this.layerOptions);\n this.startRefresh();\n }\n }\n });\n\n L.TomTomVectorIncidentsLayer = TomTomVectorIncidentsLayer.extend(labelsLayerMixinFactory('vectorTrafficIncidents'));\n\n L.tomTomVectorIncidentsLayer = function tomTomVectorIncidentsLayer(options) {\n return new L.TomTomVectorIncidentsLayer(options);\n };\n\n return L.tomTomVectorIncidentsLayer;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(70), __webpack_require__(24)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, tileLayer, labelsLayerMixinFactory) {\n //eslint-disable-line\n 'use strict';\n\n var TomTomLabelsLayer;\n\n function layeraddHandler(event) {\n var map = event.target,\n usingRasterTiles = map.hasLayer(map._ttBaseLayers.raster),\n totalTileLayers = map._panes.tilePane.childElementCount,\n totalOverlayLayers = map._panes.overlayPane.childElementCount;\n if (usingRasterTiles && (totalTileLayers > 1 || totalOverlayLayers > 0)) {\n if (!this._container) {\n L.TomTomLayer.prototype.onAdd.call(this, map);\n }\n this.bringToFront();\n }\n }\n\n TomTomLabelsLayer = L.TomTomLayer.extend({\n options: {\n zIndex: 40\n },\n name: 'labels',\n initialize: function initialize(options) {\n var labelsOptions = L.extend({}, options, { layer: 'labels', opacity: 0.9 });\n L.TomTomLayer.prototype.initialize.call(this, labelsOptions);\n },\n onAdd: function onAdd(map) {\n this._layerAddHandler = layeraddHandler.bind(this);\n map.on('layeradd', this._layerAddHandler);\n },\n onRemove: function onRemove(map) {\n map.off('layeradd', this._layerAddHandler);\n if (this._container) {\n L.TomTomLayer.prototype.onRemove.call(this, map);\n }\n },\n bringToFront: function bringToFront() {\n var pane = this._map._panes.overlayPane;\n if (this._container) {\n pane.appendChild(this._container);\n this._setAutoZIndex(Math.max);\n }\n return this;\n },\n _initContainer: function _initContainer() {\n var tilePane = this._map._panes.overlayPane;\n var className;\n\n if (!this._container) {\n this._container = L.DomUtil.create('div', 'leaflet-transparent-layer');\n\n this._updateZIndex();\n\n if (this._animated) {\n className = 'leaflet-tile-container';\n\n this._bgBuffer = L.DomUtil.create('div', className, this._container);\n this._tileContainer = L.DomUtil.create('div', className, this._container);\n } else {\n this._tileContainer = this._container;\n }\n\n tilePane.appendChild(this._container);\n\n if (this.options.opacity < 1) {\n this._updateOpacity();\n }\n }\n },\n updateOptions: function updateOptions(options) {\n if (options.style) {\n if (!options.layer) {\n options = L.extend({}, options, { layer: 'labels' });\n }\n L.TomTomLayer.prototype.updateOptions.call(this, options);\n }\n }\n });\n\n L.TomTomLabelsLayer = TomTomLabelsLayer.extend(labelsLayerMixinFactory('raster'));\n\n L.tomTomLabelsLayer = function (options) {\n return new L.TomTomLabelsLayer(options);\n };\n\n return L.tomTomLabelsLayer;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(28), __webpack_require__(6), __webpack_require__(11), __webpack_require__(5), __webpack_require__(29), __webpack_require__(72), __webpack_require__(9), __webpack_require__(55)], __WEBPACK_AMD_DEFINE_RESULT__ = function (utils, endpoints, http, security, createRequestParams, matrixParameters, ApiKeyNames, asyncRedirectModeCallbackFactory) {\n var fields = matrixParameters(),\n mainPostParamsName = ['origins', 'destinations'];\n\n function getOptionalBodyParams(postParams) {\n var optionalBodyParamsNames = Object.keys(postParams).filter(function (paramName) {\n return mainPostParamsName.indexOf(paramName) === -1;\n });\n\n if (!optionalBodyParamsNames.length) {\n return null;\n }\n\n return optionalBodyParamsNames.reduce(function (accumulator, paramName) {\n accumulator[paramName] = postParams[paramName];\n return accumulator;\n }, {});\n }\n\n function getBodyParams(postParams) {\n var bodyParams = {\n origins: postParams.origins,\n destinations: postParams.destinations\n },\n optionalBodyParams = getOptionalBodyParams(postParams);\n\n if (optionalBodyParams) {\n bodyParams.options = {\n post: optionalBodyParams\n };\n }\n\n return bodyParams;\n }\n\n return function (maxNoOfElementsInBatchRequest) {\n return function (options, originalCallback) {\n var requestParams = createRequestParams(fields, options),\n queryParams = requestParams.queryParams,\n bodyParams = getBodyParams(requestParams.postParams),\n callback = originalCallback,\n endpoint;\n\n queryParams.key = utils.or(options.key, security.getKey(ApiKeyNames.routing));\n queryParams.key = utils.required(queryParams.key);\n\n if (bodyParams.origins.length * bodyParams.destinations.length <= maxNoOfElementsInBatchRequest) {\n endpoint = endpoints.matrixSyncRouting;\n } else {\n endpoint = endpoints.matrixRouting;\n queryParams.redirectMode = 'manual';\n callback = asyncRedirectModeCallbackFactory(originalCallback, options);\n }\n\n http.post({\n url: '{protocol}://' + endpoint,\n queryParameters: queryParams,\n bodyParameters: bodyParams,\n callbackParam: 'callback',\n callback: callback,\n requestType: 'batch',\n fail: options.fail\n });\n };\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n 'use strict';\n\n function newFeature(route) {\n return {\n type: 'Feature',\n properties: { summary: route.summary, sections: route.sections, segmentSummary: [] }\n };\n }\n\n function getCoordinates(points) {\n var coordinates = [];\n var i;\n for (i = 0; i < points.length; i += 1) {\n coordinates.push([points[i].longitude, points[i].latitude]);\n }\n return coordinates;\n }\n\n return function (route) {\n var isMultiLineString = route.legs.length > 1;\n\n var feature = newFeature(route);\n var i;\n for (i = 0; i < route.legs.length; i += 1) {\n feature.properties.segmentSummary.push(route.legs[i].summary);\n\n if (route.legs[i].points) {\n feature.geometry = feature.geometry || {\n coordinates: []\n };\n\n if (isMultiLineString) {\n feature.geometry.type = 'MultiLineString';\n feature.geometry.coordinates.push(getCoordinates(route.legs[i].points));\n } else {\n feature.geometry.type = 'LineString';\n feature.geometry.coordinates = getCoordinates(route.legs[i].points);\n }\n }\n }\n if (route.guidance) {\n feature.properties.guidance = route.guidance;\n }\n return feature;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(75)], __WEBPACK_AMD_DEFINE_RESULT__ = function (routingModel) {\n 'use strict';\n\n return function (data) {\n if (!Array.isArray(data.batchItems)) {\n return null;\n }\n return data.batchItems.map(function (batchItem) {\n if (batchItem.response.error) {\n return { error: batchItem.response.error };\n } else {\n return routingModel(batchItem.response);\n }\n });\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(76)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, mapUtils) {\n\n function pushToUpdatedLayers(alreadyUpdatedLayers, layer, options) {\n if (layer) {\n layer.updateOptions(options);\n alreadyUpdatedLayers.push(layer);\n }\n }\n\n function getTrafficLayersToSeekFor(options) {\n var layersToSeek = [];\n if (options.traffic) {\n layersToSeek.push('traffic', 'trafficIncidents', 'trafficWithIncidents');\n }\n\n if (options.trafficFlow) {\n layersToSeek.push('trafficFlow');\n }\n return layersToSeek;\n }\n\n function updateTrafficLayer(alreadyUpdatedLayers, layer, options) {\n if (layer.name === 'trafficFlow') {\n pushToUpdatedLayers(alreadyUpdatedLayers, layer, options.trafficFlow);\n } else {\n //updates if layers.name equals traffic, trafficIncidents, trafficWithIncidents\n pushToUpdatedLayers(alreadyUpdatedLayers, layer, options.traffic);\n }\n }\n\n function updateTrafficLayers(alreadyUpdatedLayers, options) {\n var that = this;\n var layersToSeek = getTrafficLayersToSeekFor(options);\n layersToSeek.forEach(function (layerName) {\n var layer = mapUtils.findLayersByName(layerName, that)[0];\n if (layer) {\n updateTrafficLayer(alreadyUpdatedLayers, layer, options);\n }\n });\n }\n\n /**\n * Updates options added currently to map (including inactive base layers).\n * Only the update of the options `style` and `layer` are supported.\n *\n * Also allows to update refresh rate option of traffic layers.\n *\n * @method updateLayersOptions\n * @param {Object} options Options to be updated\n * @param {\"main\"|\"night\"} [options.style] The new base map style to use.\n * By default, the current style is used (i.e. no update of this property).\n * @param {\"basic\"|\"hybrid\"|\"labels\"} [options.layer] The new base map layer to use.\n * By default, the current layer is used (i.e. no update of this property).\n * @param {Object|Boolean} options.traffic Options used to change refresh rate.\n * Please note that minimal refresh rate is 30000 ms, if you provide lower value it will be defaulted to 30000 ms.\n * @param {Object} options.trafficFlow Options used to change refresh rate.\n * Please note that minimal refresh rate is 30000 ms, if you provide lower value it will be defaulted to 30000 ms.\n */\n L.Map.prototype.updateLayersOptions = function (options) {\n var alreadyUpdatedLayers = [];\n pushToUpdatedLayers(alreadyUpdatedLayers, this._ttBaseLayers.raster, options);\n pushToUpdatedLayers(alreadyUpdatedLayers, this._ttBaseLayers.vector, options);\n pushToUpdatedLayers(alreadyUpdatedLayers, this._ttLabelsLayers.vector, options);\n pushToUpdatedLayers(alreadyUpdatedLayers, this._ttLabelsLayers.raster, options);\n updateTrafficLayers.call(this, alreadyUpdatedLayers, options);\n L.Util.setOptions(this, options);\n\n this.eachLayer(function (layer) {\n if (layer.updateOptions && alreadyUpdatedLayers.indexOf(layer) === -1) {\n layer.updateOptions(options);\n }\n });\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(23), __webpack_require__(24)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, VectorLayer, labelsLayerMixinFactory) {\n 'use strict';\n\n var TomTomVectorLabelsLayer = VectorLayer.extend({\n name: 'vectorLabels',\n onAdd: function onAdd(map) {\n VectorLayer.prototype.onAdd.call(this, map);\n this._bringToFront(map);\n },\n _bringToFront: function _bringToFront(map) {\n var pane = map._panes.overlayPane;\n this._setPane(pane);\n if (this._glContainer) {\n pane.appendChild(this._glContainer);\n }\n return this;\n },\n initialize: function initialize(options) {\n options = L.extend({}, options);\n options.layer = 'labels';\n VectorLayer.prototype.initialize.call(this, options);\n },\n updateOptions: function updateOptions(options) {\n if (options.style) {\n options = L.extend({}, options, { layer: 'labels' });\n VectorLayer.prototype.updateOptions.call(this, options);\n }\n }\n });\n\n L.TomTomVectorLabelsLayer = TomTomVectorLabelsLayer.extend(labelsLayerMixinFactory('vector'));\n\n L.tomTomVectorLabelsLayer = function (options) {\n return new L.TomTomVectorLabelsLayer(options);\n };\n\n return L.TomTomVectorLabelsLayer;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This class allows you to add markers to the map. You can specify your own markers\n * or add custom ones.\n *\n * @class TomTomMarkersLayer\n * @extends L.FeatureGroup\n * @namespace L\n * @module Map\n * @constructor\n * @param {Object} options\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(21), __webpack_require__(62), __webpack_require__(77), __webpack_require__(0), __webpack_require__(78), __webpack_require__(148), __webpack_require__(20), __webpack_require__(90), __webpack_require__(93)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, SvgIcon, objectUtils, defaultIconsMappingProvider, utils, pointHTMLContentGenerator, RouteDrawer, Wrapable, nearbySearch) {\n 'use strict';\n\n var defaultOptions = {\n background: {\n iconSize: [30, 36],\n iconAnchor: [15, 36],\n icon: 'icon-marker-black',\n noPlainSVG: false\n },\n icon: {\n iconSize: [30, 30],\n iconAnchor: [0, 0],\n icon: 'icon-flag-white',\n noPlainSVG: false\n },\n popupAnchor: [0, -30],\n opacity: 0.8\n };\n\n var icons = defaultIconsMappingProvider.defaultIcons;\n var singleColorIcons = defaultIconsMappingProvider.singleColorIcons;\n\n function shouldUseSingleColorIcon(classification) {\n return objectUtils.hasProperty(singleColorIcons, classification);\n }\n\n function isLowBandwidth(point) {\n return point.a2 !== undefined;\n }\n\n function hasClassification(point) {\n return objectUtils.hasProperty(point, 'poi') && objectUtils.hasProperty(point.poi, 'classifications');\n }\n\n function getClassification(point) {\n var classification = 'fallback';\n if (hasClassification(point)) {\n classification = point.poi.classifications.length > 0 ? point.poi.classifications[0].code : 'fallback';\n } else if (isLowBandwidth(point)) {\n classification = point.cst.length > 0 ? point.cst[0].cd : 'fallback';\n }\n return classification;\n }\n\n /**\n * @ignore\n * If marker layer options enabled support for entry points and addCounterToMainPoint property is set\n * Content with the counter is added\n * @param {Object} point\n * @param {Object} entryPointOptions\n * @return {Object|undefined}\n */\n function getContentForMainMarkerWithEntryPoints(point, entryPointOptions) {\n if (point.entryPoints && entryPointOptions && entryPointOptions.addCounterToMainPoint) {\n return {\n iconSize: [10, 10],\n iconAnchor: [-25, 5],\n content: point.entryPoints.length,\n noPlainSVG: true,\n style: {\n 'color': '#000',\n 'font-weight': 'bold',\n 'font-size': '12px'\n }\n };\n }\n return undefined;\n }\n\n /**\n * @ignore\n * Returns correct marker options for provided classification and color and entryPoints options\n * @param {String} classification\n * @param {Object} point\n * @param {String} color\n * @param {Object} entryPointsOptions\n * @return {Object}\n */\n function getMarkerIconOptions(classification, point, color, entryPointsOptions) {\n var iconName = icons[classification] || icons.fallback;\n var iconOptions = utils.clone(defaultOptions);\n if (shouldUseSingleColorIcon(classification)) {\n iconOptions.icon.icon = 'icon-' + iconName;\n } else {\n iconOptions.icon.icon = 'icon-' + iconName + '-' + color;\n if (color === 'black') {\n iconOptions.background.icon = 'icon-marker-white';\n }\n }\n iconOptions.content = getContentForMainMarkerWithEntryPoints(point, entryPointsOptions);\n return iconOptions;\n }\n\n /**\n * @ignore\n * Returns instance of Icon build for correct point classification and color\n * @param {Object} point\n * @param {String} color\n * @param {Object} entryPointsOptions\n * @return {SvgIcon}\n */\n function getDefaultIcon(point, color, entryPointsOptions) {\n var classification, iconOptions;\n classification = getClassification(point);\n iconOptions = getMarkerIconOptions(classification, point, color, entryPointsOptions);\n return new SvgIcon(iconOptions);\n }\n\n /**\n * @ignore\n * Returns position of the point. Used in marker creation\n * @param {Object} point\n * @return {LatLng}\n */\n function getMarkerPosition(point) {\n var latLngContainer = point;\n if (point.position) {\n latLngContainer = point.position;\n } else if (point.ps) {\n latLngContainer = point.ps.split(' ');\n }\n return utils.convertToLatLng(latLngContainer);\n }\n\n /**\n * @ignore\n * Calls popupHoverContent generator method if it exists and returns output. Used in marker creation.\n * @param {Object} point\n * @param {Object} options\n * @return {String|undefined}\n */\n function getMarkerPopupHoverContent(point, options) {\n return objectUtils.hasProperty(options, 'popupHoverContent') ? options.popupHoverContent(point) : undefined;\n }\n\n /**\n * @ignore\n * Calls popupContent generator method if it exists and returns output. Used in marker creation.\n * @param {Object} point\n * @param {Object} options\n * @param {Object} popupGenerator\n * @return {String}\n */\n function getMarkerPopupContent(point, options, popupGenerator) {\n return objectUtils.hasProperty(options, 'popupContent') ? options.popupContent(point) : popupGenerator(point);\n }\n\n /**\n * @ignore\n * Returns correct color for markers based on layer options\n * @param {Object} options\n * @param {Boolean} [options.useBlackIcons=false]\n * @return {String}\n */\n function getColor(options) {\n return options.useBlackIcons ? 'black' : 'white';\n }\n\n /**\n * @ignore\n * Returns svg icon for the typical points\n * @param {Object} point\n * @param {Object} options\n * @param {Boolean} [options.useBlackIcons]\n * @return {SvgIcon}\n */\n function getMarkerIcon(point, options) {\n return objectUtils.hasProperty(options, 'icon') ? options.icon(point) : getDefaultIcon(point, getColor(options), options.entryPoints);\n }\n\n /**\n * @ignore\n * Returns svg icon for the entry points\n * @param {Object} point\n * @param {Object} options\n * @return {SvgIcon}\n */\n function getEntryPointMarkerIcon(point, options) {\n var iconOptions;\n if (objectUtils.hasProperty(options, 'icon')) {\n iconOptions = options.icon(point);\n } else {\n iconOptions = utils.clone(defaultOptions);\n iconOptions.icon.icon = 'icon-ic_map_poi_109-' + getColor(options);\n iconOptions.background.icon = 'icon-marker-green';\n }\n return new SvgIcon(iconOptions);\n }\n\n /**\n * @ignore\n * Calls entry point getEntryPointPopupHoverContent generator method if it exists and returns output. Used in marker\n * creation.\n *\n * @param {Object} entryPoint\n * @param {Object} mainPoint\n * @param {Object} options\n * @return {String}\n */\n function getEntryPointPopupHoverContent(entryPoint, mainPoint, options) {\n return options.entryPoints.popupHoverContent ? options.entryPoints.popupHoverContent(entryPoint, mainPoint) : undefined;\n }\n\n /**\n * @ignore\n * Calls entry point popupContent generator method if it exists and returns output. Used in marker creation.\n * @param {Object} entryPoint\n * @param {Object} mainPoint\n * @param {Object} options\n * @param {Function} popupGenerator\n * @return {String}\n */\n function getEntryPointPopupContent(entryPoint, mainPoint, options, popupGenerator) {\n return options.entryPoints.popupContent ? options.entryPoints.popupContent(entryPoint, mainPoint) : popupGenerator(entryPoint, mainPoint);\n }\n\n /**\n * @ignore\n * Creates instance of L.polyline for the spider leg line\n * @param {Array} positions\n * @param {Object} options\n * @return {L.polyline}\n */\n function createSpiderLegLine(positions, options) {\n var lineOptions = {\n weight: 1.5,\n color: options.useBlackIcons ? '#ddd' : '#222',\n opacity: 0.5,\n dashArray: '5, 5'\n };\n return L.polyline(positions, lineOptions);\n }\n\n /**\n * @ignore\n * Creates markers for entry points\n * @param {Array} entryPoints array of entry points data\n * @param {Object} options marker layer options\n * @param {Object} mainPoint main point data object which is passed to popup and title callback for the entry points\n * @param {Function} popupGenerator\n * @return {L.Marker}\n */\n function createMarkersForEntryPoints(entryPoints, options, mainPoint, popupGenerator) {\n return entryPoints.map(function (entryPoint) {\n var entryPointMarkerLayer = L.marker(getMarkerPosition(entryPoint), {\n title: getEntryPointPopupHoverContent(entryPoint, mainPoint, options),\n popupContent: getEntryPointPopupContent(entryPoint, mainPoint, options, popupGenerator),\n icon: getEntryPointMarkerIcon(entryPoint, options)\n });\n var popupContent = entryPointMarkerLayer.options.popupContent;\n\n if (popupContent instanceof Wrapable) {\n entryPointMarkerLayer.bindPopup(popupContent.getHtmlElement());\n entryPointMarkerLayer.on('popupclose', popupContent.wrap.bind(popupContent));\n } else {\n entryPointMarkerLayer.bindPopup(popupContent);\n }\n\n return entryPointMarkerLayer;\n });\n }\n\n /**\n * @ignore\n * Draws lines between main point and its entrances\n * @param {Layer} mainMarkerLayer layer of marker which represents main point\n * @param {Array} entryPoints array of layers which represents entry points for the main point\n * @param {Object} options marker layer options\n */\n function drawSpiderLegLines(mainMarkerLayer, entryPoints, options) {\n if (entryPoints.length !== 0) {\n entryPoints.forEach(function (entry) {\n var line = createSpiderLegLine([entry.getLatLng(), mainMarkerLayer.options.point.position], options);\n this._markersWithEntryPointsFeatures.push(line);\n this._map.addLayer(line);\n }.bind(this));\n }\n }\n\n function configureMarkerToShowEntryPointOnClickIfNeeded(markerLayer, point, options) {\n var markerRemoveHandler;\n\n if (options.entryPoints !== undefined && point.entryPoints) {\n markerRemoveHandler = function markerRemoveHandler() {\n if (this._lastClickedMarkerWithEntries === markerLayer) {\n this._removeEntryPoints();\n this._lastClickedMarkerWithEntries = undefined;\n }\n };\n\n markerLayer.on('remove', markerRemoveHandler, this);\n\n markerLayer.on('click', function () {\n var entryPointsMarkers;\n this._removeEntryPoints();\n\n if (this._lastClickedMarkerWithEntries === markerLayer) {\n this._lastClickedMarkerWithEntries = undefined;\n return;\n }\n\n entryPointsMarkers = createMarkersForEntryPoints(point.entryPoints, options, point, this._entryPointsPopupGenerator);\n entryPointsMarkers.forEach(function (entry) {\n this._markersWithEntryPointsFeatures.push(entry);\n this._map.addLayer(entry);\n }.bind(this));\n\n drawSpiderLegLines.call(this, markerLayer, entryPointsMarkers, options);\n this._lastClickedMarkerWithEntries = markerLayer;\n }, this);\n }\n }\n\n function isSimplePoint(point) {\n return utils.isArray(point) && point.length === 2;\n }\n\n /**\n * @ignore\n * Builds marker from point data\n * @param {Object} options layer options\n * @param {Boolean} [options.useBlackIcons]\n * @param {Object} point point data to create marker from\n */\n function createMarkerFromPoint(options, point) {\n var markerLayer, popupContent;\n if (isSimplePoint(point)) {\n markerLayer = L.marker(getMarkerPosition(point), {\n point: point\n });\n } else {\n markerLayer = L.marker(getMarkerPosition(point), {\n title: getMarkerPopupHoverContent(point, options),\n popupContent: getMarkerPopupContent(point, options, this._regularPopupGenerator),\n icon: getMarkerIcon(point, options),\n point: point\n });\n popupContent = markerLayer.options.popupContent;\n\n if (popupContent instanceof Wrapable) {\n markerLayer.bindPopup(popupContent.getHtmlElement());\n markerLayer.on('popupclose', popupContent.wrap.bind(popupContent));\n } else {\n markerLayer.bindPopup(popupContent);\n }\n }\n\n this._markersLayer.addLayer(markerLayer);\n\n configureMarkerToShowEntryPointOnClickIfNeeded.call(this, markerLayer, point, options);\n }\n\n function extendEntryPointsOptions(options) {\n if (this.options.entryPoints && options.entryPoints) {\n L.Util.extend(this.options.entryPoints, options.entryPoints);\n options.entryPoints = this.options.entryPoints;\n }\n }\n\n function resizeEntryPointMarkerIcon(requestedEntryPoinMarkerPosition, entryPointMarkers, multiplier) {\n function multiply(value) {\n return multiplier * value;\n }\n function updatedElement(element) {\n return Object.assign({}, element, {\n iconSize: element.iconSize.map(multiply),\n iconAnchor: element.iconAnchor.map(multiply)\n });\n }\n entryPointMarkers.filter(function (entryPointMarker) {\n return entryPointMarker._latlng && !utils.isArray(entryPointMarker._latlng) && entryPointMarker._latlng.equals(requestedEntryPoinMarkerPosition) && entryPointMarker.options.icon;\n }).forEach(function (entryPointMarker) {\n var iconOptions = entryPointMarker.options.icon.options;\n entryPointMarker.refreshIconOptions({\n background: updatedElement(iconOptions.background),\n icon: updatedElement(iconOptions.icon)\n });\n });\n }\n\n function routableClickHandlerFactory(routeContextGetter) {\n return function (mode, point) {\n var routeContext = routeContextGetter();\n\n if (mode === 'start') {\n routeContext.startPoint(point);\n } else if (mode === 'end') {\n routeContext.endPoint(point);\n }\n };\n }\n\n function configureActionsForRegularMarkers(markerLayer, isRoutingEnabled, isSearchNearbyEnabled) {\n var actionsForRegularMarkers = null;\n\n function resizeEntryPoints(value) {\n return function (position) {\n resizeEntryPointMarkerIcon(position, markerLayer._markersWithEntryPointsFeatures, value);\n };\n }\n\n if (isRoutingEnabled) {\n actionsForRegularMarkers = {};\n actionsForRegularMarkers.routing = {\n routeFrom: true,\n routeTo: true,\n routeToEntryPoint: true,\n routeFromEntryPoint: true,\n onEntryPointMouseover: resizeEntryPoints(2),\n onEntryPointMouseout: resizeEntryPoints(0.5),\n onActionClick: routableClickHandlerFactory(markerLayer._getRoutingContext.bind(markerLayer))\n };\n }\n\n if (isSearchNearbyEnabled) {\n actionsForRegularMarkers = actionsForRegularMarkers || {};\n actionsForRegularMarkers.search = {\n searchNearby: true,\n onActionClick: function onActionClick(position) {\n nearbySearch().center(position).radius(10000).go(function (data) {\n markerLayer.setMarkersData(data).addMarkers();\n });\n }\n };\n }\n\n return actionsForRegularMarkers;\n }\n\n function configureActionsForEntryPointMarkers(markerLayer, isRoutingEnabled) {\n var actionsForEntryPointMarkers = null;\n if (isRoutingEnabled) {\n actionsForEntryPointMarkers = {};\n actionsForEntryPointMarkers.routing = {\n routeFrom: true,\n routeTo: true,\n onActionClick: routableClickHandlerFactory(markerLayer._getRoutingContext.bind(markerLayer))\n };\n }\n\n return actionsForEntryPointMarkers;\n }\n\n function getMarkerName(point) {\n var lowBandwidthName = point.nm ? point.nm : '';\n return point.poi ? point.poi.name : lowBandwidthName;\n }\n\n function getPointId(point) {\n return String(getMarkerPosition(point)) + getMarkerName(point);\n }\n\n L.TomTomMarkersLayer = L.FeatureGroup.extend({\n options: {\n disableClusteringAtZoom: 17,\n removeOutsideVisibleBounds: false,\n enableRoutingActions: false,\n enableSearchActions: false\n },\n /**\n * Sets the markers data which will be used by the\n * {{#crossLink \"L.TomTomMarkersLayer/addMarkers:method\"}}{{/crossLink}} method.\n *\n * This method expects an array of points returned by one of our search calls (e.g. fuzzySearch),\n * or an array of simple points e.g. [[52.005, 25.01], [57.12, 12.06]].\n * ```javascript\n * var map = L.map('map', {key: \"Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.unwrapBbox=false] Changes the bounding box coordinates allowing longitudes that\n * exceeds 180 degrees when is necessary. {{#crossLink \"Search/unwrapBbox:method\"}}More{{/crossLink}}\n *\n * @param {String} options.query Text that will be searched.\n * This parameter is required to be defined either in the options passed to the constructor or using the\n * **query()** method.\n * @param {Boolean} [options.storeResult=false] If is enabled the query will be interpreted as a stored geocode\n * and will be billed according to the terms of use\n * @param {Boolean} [options.typeahead=false] If is enabled the query will be interpreted as a\n * partial input and the **predictive** mode will be used\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {Number} [options.offset=0] Starting offset of the returned results within the full result set\n * @param {Number[]|String|L.LatLng|Object} [options.center] Location where results should be biased\n * @param {String} [options.countrySet] List of country codes for limit the search request to those specific\n * political limits\n * @param {Number} [options.radius=0] The search radius in meters using the coordinates given to the **center**\n * option as origin.\n * @param {Object|Number[]|Object[]|String} [options.boundingBox] The bounding box is an area within the search\n * results needs to limit to. If it is omitted then the whole world will be taken into consideration.\n * @param {String} [options.language=null] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {String} [options.extendedPostalCodesFor] Represent the indexes for which extended postal codes should\n * be included in the results\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(164), __webpack_require__(45), __webpack_require__(8), __webpack_require__(2), __webpack_require__(4), __webpack_require__(22), __webpack_require__(94), __webpack_require__(165)], __WEBPACK_AMD_DEFINE_RESULT__ = function (restGeocode, model, chain, validators, converters, worldEdge, batchModel, geocodeParams) {\n 'use strict';\n\n var fields = geocodeParams.create(),\n batchFields = {\n batchItems: {\n validator: validators.arrayOf(fields),\n converter: converters.arrayOf(fields)\n }\n };\n\n var geocode = restGeocode();\n\n function addBoundingBoxParameters(data, boundingBox) {\n data.topLeft = [boundingBox.maxLat, boundingBox.minLon];\n data.btmRight = [boundingBox.minLat, boundingBox.maxLon];\n return data;\n }\n\n function callbackBestResult(bestResult, callback) {\n return function (response) {\n callback(bestResult ? response[0] : response);\n };\n }\n\n function handleBatchChain(data, callback) {\n data.batchItems.forEach(geocodeParams.modifyRequestOptions);\n geocode.batch(geocodeParams.modifyFields(fields), data, function (results) {\n callback.call(this, batchModel(results));\n });\n }\n\n function geocodeQuery(fields) {\n return function (options, callback) {\n return geocode.geocode(geocodeParams.modifyFields(fields), options, callback);\n };\n }\n\n function handleChain(data, callback) {\n geocodeParams.modifyRequestOptions(data);\n worldEdge(geocodeQuery(fields), model, data, callbackBestResult(Boolean(data.bestResult), callback), addBoundingBoxParameters);\n }\n\n return function (options) {\n if (Array.isArray(options)) {\n return chain(batchFields, handleBatchChain, {\n batchItems: options\n });\n } else {\n return chain(fields, handleChain, options);\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 164 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(6), __webpack_require__(10), __webpack_require__(9)], __WEBPACK_AMD_DEFINE_RESULT__ = function (endpoints, requestFactory, ApiKeyNames) {\n 'use strict';\n\n var searchApiKeyname = ApiKeyNames.search;\n\n return function () {\n return {\n geocode: requestFactory.single(endpoints.geocode, searchApiKeyname),\n batch: requestFactory.batch(100, {\n single: endpoints.batchGeocodeQuery,\n batchSync: endpoints.batchSyncSearch,\n batchSearch: endpoints.batchSearch\n }, searchApiKeyname)\n };\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 165 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(4), __webpack_require__(7)], __WEBPACK_AMD_DEFINE_RESULT__ = function (validators, converters, parameterApplications) {\n return {\n create: function create() {\n return {\n key: { validator: validators.string },\n query: { validator: validators.string, required: true, application: parameterApplications.PATH },\n\n /**\n * @class Geocode\n * @module Services\n */\n\n /* eslint-disable max-len */\n /**\n * Sets or returns the value of the `storeResult` option.\n *\n * If this option is enabled the query will be interpreted as a stored geocode and will be billed\n * according to the terms of use.\n *\n * @method storeResult\n * @deprecated Announcement date: 1st December 2017. The previous version will be deprecated and taken off-line 1 year after the announcement. Deprecation date: 1st December 2018.\n * @chainable\n * @param {Boolean} [newValue] Enable or disable the option\n * @throws {TypeError} if the given argument cannot be converted into a valid value\n * @return {Boolean} The same service instance or the current option value if no argument was given\n */\n /* eslint-enable max-len */\n storeResult: { validator: validators.bool },\n typeahead: { validator: validators.bool },\n limit: { validator: validators.positiveInteger },\n offset: { validator: validators.naturalInteger, name: 'ofs' },\n language: { validator: validators.languageCode },\n boundingBox: { validator: validators.boundingBox, converter: converters.boundingBox },\n center: { converter: converters.point, validator: validators.point },\n countrySet: { validator: validators.countrySet },\n radius: { validator: validators.naturalInteger },\n bestResult: { validator: validators.bool },\n protocol: { validator: validators.oneOfValue(['http', 'https'], 'protocol') },\n unwrapBbox: { validator: validators.bool, defaultValue: false, required: true }\n };\n },\n modifyRequestOptions: function modifyRequestOptions(data) {\n var bestResult = Boolean(data.bestResult);\n if (bestResult) {\n data.limit = 1;\n data.offset = 0;\n }\n\n if (data.center) {\n data.center = data.center.split(',');\n data.lat = data.center[0];\n data.lon = data.center[1];\n delete data.center;\n }\n },\n modifyFields: function modifyFields(fields) {\n var resultFields = Object.assign({}, fields);\n if (resultFields.boundingBox) {\n resultFields.topLeft = {};\n resultFields.btmRight = {};\n delete resultFields.boundingBox;\n }\n\n if (resultFields.center) {\n resultFields.lat = {};\n resultFields.lon = {};\n delete resultFields.center;\n }\n return resultFields;\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 166 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Allows to make request using the TomTom's\n * [Search API - Structured Geocode](https://developer.tomtom.com/search-api/search-api-documentation-geocoding/structured-geocode).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"StructuredGeocode/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"StructuredGeocode/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * @class StructuredGeocode\n * @uses Chain\n * @module Services\n * @uses KeyMixin\n * @uses LimitMixin\n * @uses OffsetMixin\n * @uses LanguageMixin\n * @uses ProtocolMixin\n * @uses BestResultMixin\n * @constructor\n *\n * @param {Object} [options] Options to be passed to the structured geocoding call,\n * or Array of such options objects to perform batch request.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.bestResult=false] Return only one result, the best match result\n *\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {String} options.countryCode 2 or 3 country code letters (e.g.: FR, ES).\n * **This option is required** to be defined here or by using the\n * {{#crossLink \"StructuredGeocode/countryCode:method\"}}{{/crossLink}} method.\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {Number} [options.offset=0] Starting offset of the returned results within the full result set\n * @param {String} [options.language] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {String} [options.streetNumber] Street Number\n * @param {String} [options.streetName] Street name\n * @param {String} [options.crossStreet] Cross street name\n * @param {String} [options.municipality] Municipality (city/town)\n * @param {String} [options.municipalitySubdivision] Municipality subdivision (sub/super city)\n * @param {String} [options.countryTertiarySubdivision] Named area\n * @param {String} [options.countrySecondarySubdivision] County\n * @param {String} [options.countrySubdivision] State or province\n * @param {String} [options.postalCode] Zip or postal code\n *\n * @example\n * ```javascript\n * function callbackFn(result) {\n * console.log(result);\n * };\n * tomtom.structuredGeocode()\n * .countryCode(\"GB\")\n * .callback(callbackFn)\n * .go();\n * ```\n */\n/* eslint-enable max-len */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(167), __webpack_require__(45), __webpack_require__(8), __webpack_require__(2), __webpack_require__(94), __webpack_require__(4), __webpack_require__(168)], __WEBPACK_AMD_DEFINE_RESULT__ = function (restStructuredGeocode, model, chain, validators, batchModel, converters, structureGeocodeParameters) {\n 'use strict';\n\n var fields = structureGeocodeParameters(),\n batchFields = {\n batchItems: {\n validator: validators.arrayOf(fields),\n converter: converters.arrayOf(fields)\n }\n };\n\n var structuredGeocode = restStructuredGeocode();\n\n function checkBestResult(data) {\n var result = Boolean(data.bestResult);\n delete data.bestResult;\n return result;\n }\n\n function modifyRequestParams(data) {\n var bestResult = checkBestResult(data);\n if (bestResult) {\n data.limit = 1;\n data.offset = 0;\n }\n }\n\n function handleBatchChain(data, callback) {\n data.batchItems.forEach(modifyRequestParams);\n structuredGeocode.batch(fields, data, function (results) {\n callback.call(this, batchModel(results));\n });\n }\n\n function handleChain(data, callback) {\n var bestResult = Boolean(data.bestResult);\n modifyRequestParams(data);\n structuredGeocode.structuredGeocode(fields, data, function (response) {\n if (bestResult) {\n callback.call(this, model(response)[0]);\n } else {\n callback.call(this, model(response));\n }\n });\n }\n\n return function (options) {\n if (Array.isArray(options)) {\n return chain(batchFields, handleBatchChain, {\n batchItems: options\n });\n } else {\n return chain(fields, handleChain, options);\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 167 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(6), __webpack_require__(10), __webpack_require__(9)], __WEBPACK_AMD_DEFINE_RESULT__ = function (endpoints, requestFactory, ApiKeyNames) {\n 'use strict';\n\n var searchKeyName = ApiKeyNames.search;\n\n return function () {\n return {\n structuredGeocode: requestFactory.single(endpoints.structuredGeocode, searchKeyName),\n batch: requestFactory.batch(100, {\n single: endpoints.batchStructuredGeocodeQuery,\n batch: endpoints.batchSearch,\n batchSync: endpoints.batchSyncSearch\n }, searchKeyName)\n };\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2)], __WEBPACK_AMD_DEFINE_RESULT__ = function (validators) {\n return function () {\n return {\n key: { validator: validators.string },\n /**\n * Sets or returns the value of the `countryCode` option.\n *\n * Represents the country's code.\n *\n * @method countryCode\n * @chainable\n * @param {String} [newValue] 2 or 3 country code letters\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n countryCode: { validator: validators.countryCode, required: true },\n limit: { validator: validators.limit },\n offset: { validator: validators.naturalInteger, name: 'ofs' },\n language: { validator: validators.languageCode },\n\n /**\n * Sets or returns the value of the `streetNumber` option.\n *\n * Represents the street's number for the structured address.\n *\n * @method streetNumber\n * @chainable\n * @param {String} [newValue] Street's number\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n streetNumber: { validator: validators.string },\n\n /**\n * Sets or returns the value of the `streetName` option.\n *\n * Represents the street's name for the structured address.\n *\n * @method streetName\n * @chainable\n * @param {String} [newValue] Street's name\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n streetName: { validator: validators.string },\n\n /**\n * Sets or returns the value of the `crossStreet` option.\n *\n * Represents the cross street's name for the structured address.\n *\n * @method crossStreet\n * @chainable\n * @param {String} [newValue] Cross street's name\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n crossStreet: { validator: validators.string },\n\n /**\n * Sets or returns the value of the `municipality` option.\n *\n * Represents the municipality (city/town) for the structured address.\n *\n * @method municipality\n * @chainable\n * @param {String} [newValue] Municipality's name (city/town)\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n municipality: { validator: validators.string },\n\n /**\n * Sets or returns the value of the `municipalitySubdivision` option.\n *\n * Represents the municipality subdivision (sub/super city) for the structured address.\n *\n * @method municipalitySubdivision\n * @chainable\n * @param {String} [newValue] Municipality subdivision (sub/super city)\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n municipalitySubdivision: { validator: validators.string },\n\n /**\n * Sets or returns the value of the `countryTertiarySubdivision` option.\n *\n * Represents the area's name for the structured address.\n *\n * @method countryTertiarySubdivision\n * @chainable\n * @param {String} [newValue] Name of the area\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n countryTertiarySubdivision: { validator: validators.string },\n\n /**\n * Sets or returns the value of the `countrySecondarySubdivision` option.\n *\n * Represents the county's name for the structured address.\n *\n * @method countrySecondarySubdivision\n * @chainable\n * @param {String} [newValue] County's name\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n countrySecondarySubdivision: { validator: validators.string },\n\n /**\n * Sets or returns the value of the `countrySubdivision` option.\n *\n * Represents the state or province's name for the structured address.\n *\n * @method countrySubdivision\n * @chainable\n * @param {String} [newValue] State or province\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n countrySubdivision: { validator: validators.string },\n\n /**\n * Sets or returns the value of the `postalCode` option.\n *\n * Represents the zip code or postal code for the structured address.\n *\n * @method postalCode\n * @chainable\n * @param {String} [newValue] Zip or postal code\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n postalCode: { validator: validators.string },\n\n protocol: { validator: validators.oneOfValue(['http', 'https'], 'protocol') },\n bestResult: { validator: validators.bool }\n };\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * It allows to convert geographical coordinates into textual address representation using the TomTom's\n * [Search API - CrossStreet lookup](https://developer.tomtom.com/search-api/search-api-documentation-reverse-geocoding/crossstreet-lookup).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"CrossStreetLookup/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"CrossStreetLookup/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * The final response from service is a JSON object with the following structure:\n *\n * ```js\n * {\n * address: {\n * buildingNumber: 19,\n * streetNumber: 19,\n * street: \"N 2nd St\",\n * streetName: \"N 2nd St\",\n * crossStreet: \"E SANTA CLARA ST\"\n * streetNameAndNumber: \"\",\n * speedLimit: \"\",\n * countryCode: \"US\",\n * countrySubdivision: \"CA\",\n * countrySecondarySubdivision: \"Santa Clara\",\n * countryTertiarySubdivision: \"\",\n * municipality: \"San Jose\",\n * postalCode: \"95113\",\n * municipalitySubdivision: \"San Francisco Bay Area\",\n * freeformAddress: \"E SANTA CLARA ST & N 2nd St, San Jose, CA, 95113\"\n * },\n * position: \"37.337083, -121.8898\"\n * }\n * ```\n *\n * @example\n * ```js\n * tomtom.crossStreetLookup()\n * .position('51.759,19.449')\n * .go()\n * .then(function(response) {\n * console.log(response);\n * });\n * ```\n *\n * @class CrossStreetLookup\n * @module Services\n * @uses Chain\n * @constructor\n * @uses RadiusMixin\n * @uses ProtocolMixin\n * @uses KeyMixin\n * @uses LimitMixin\n * @uses LanguageMixin\n * @uses PositionMixin\n * @uses SpatialKeysMixin\n * @uses HeadingMixin\n *\n * @param {Object} [options] Options to be passed to the cross street lookup call,\n * or Array of such options objects to perform batch request.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n *\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n *\n * @param {String|Array|Object} [options.position] Specific longitude and latitude of the location where the address\n * is supposed to be found.\n * The possible formats are explained in more detail in the\n * {{#crossLink \"CrossStreetLookup/position:method\"}}{{/crossLink}} method.\n * This option is required to make the call.\n *\n * @param {Number} [options.limit=10] Maximum number of responses that should be returned\n * @param {Boolean} [options.spatialKeys=false] If is enable the response will also contain a proprietary geo-spatial\n * key information for a specified location\n * @param {Number} [options.heading] The directional heading of the vehicle in degrees, for travel along a\n * segment of roadway.\n * `0` is North, `90` is East and so on, values range from `-360` to `360`.\n * The precision can include up to one decimal place.\n * @param {Number} [options.radius=10000] The maximum distance in meters from the specified position to consider\n * @param {String} [options.language] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n */\n/* eslint-enable max-len */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(83), __webpack_require__(85), __webpack_require__(43)], __WEBPACK_AMD_DEFINE_RESULT__ = function (reverseGeocodeBase, reverseGeocodeParams, types) {\n 'use strict';\n\n var ReverseGeocodeBasePrototype = reverseGeocodeBase.prototype.constructor;\n\n function CrossStreetLookup(options) {\n ReverseGeocodeBasePrototype.call(this, options);\n this.fields = reverseGeocodeParams(types.crossStreetLookup);\n }\n\n CrossStreetLookup.prototype = new ReverseGeocodeBasePrototype();\n CrossStreetLookup.prototype.constructor = CrossStreetLookup;\n\n return function (options) {\n return new CrossStreetLookup(options).construct();\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Allows to make search request using the TomTom's\n * [Search API - Points of Interest Search](https://developer.tomtom.com/search-api/search-api-documentation-search/points-interest-search).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"PoiSearch/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"PoiSearch/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * @example\n * ```js\n * function callbackFn(result) {\n * console.log(result);\n * };\n *\n * // Using a callback function\n * tomtom.poiSearch()\n * .key() // this is optional if you defined a global key earlier\n * .query('pizza')\n * .callback(callbackFn)\n * .go();\n *\n * // Or using a Promise\n * tomtom.poiSearch()\n * .key() // this is optional if you defined a global key earlier\n * .query('pizza')\n * .go()\n * .then(callbackFn);\n * ```\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * @class PoiSearch\n * @extends Search\n * @uses ExtendedPostalCodesForMixin\n * @uses CenterMixin\n * @uses RadiusMixin\n * @uses BoundingBoxMixin\n * @uses CountrySetMixin\n * @uses OffsetMixin\n * @uses BestResultMixin\n * @uses ViewMixin\n * @uses QueryMixin\n * @uses TypeaheadMixin\n * @constructor\n * @module Services\n *\n * @param {Object} [options] Options to be passed to the POI search call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.unwrapBbox=false] Changes the bounding box coordinates allowing longitudes that\n * exceeds 180 degrees when is necessary. {{#crossLink \"Search/unwrapBbox:method\"}}More{{/crossLink}}\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {String} [options.view=\"Unified\"] Geopolitical view\n * @param {String} [options.language=null] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n *\n * @param {String} [options.query] Text that will be searched.\n * This parameter is required to be defined either in the options passed to the constructor or using the\n * **query()** method.\n * @param {Boolean} [options.typeahead=false] Enables the **predictive** mode\n * @param {Boolean} [options.bestResult=false] Return only one result, the best match result.\n * @param {Number[]|String|L.LatLng|Object} [options.center] Location where results should be biased\n * @param {Number} [options.radius=0] The search radius in meters using the coordinates given to the **center**\n * option as origin.\n * If the radius is zero the results will not be constrained.\n * @param {Number} [options.offset=0] Starting offset of the returned results within the full result set\n * @param {String} [options.countrySet] List of country codes for limit the search request to those specific\n * political limits\n * @param {Object|Number[]|Object[]|String} [options.boundingBox] The bounding box is an area within the search\n * results needs to limit to. If it is omitted then the whole world will be taken into consideration.\n * @param {String} [options.extendedPostalCodesFor] Represent the indexes for which extended postal codes should\n * be included in the results\n */\n/* eslint-enable */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(17)], __WEBPACK_AMD_DEFINE_RESULT__ = function (search) {\n 'use strict';\n\n var SearchPrototype = search.prototype.constructor;\n\n function PoiSearch(options) {\n SearchPrototype.call(this, options);\n\n this.fields.type = {\n defaultValue: this.TYPE.poi,\n visible: false\n };\n }\n\n PoiSearch.prototype = new SearchPrototype();\n PoiSearch.prototype.constructor = PoiSearch;\n\n return function (options) {\n return new PoiSearch(options).construct();\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Allows to make search request using the TomTom's\n * [Search API - Category Search](https://developer.tomtom.com/search-api/search-api-documentation-search/category-search).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"Search/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the {{#crossLink \"Search/go:method\"}}{{/crossLink}}\n * method to handle the response.\n *\n * The list of all supported category codes are available\n * [here](https://developer.tomtom.com/search-api/search-api-documentation/supported-category-codes).\n *\n * @example\n * ```js\n * function callbackFn(result) {\n * console.log(result);\n * };\n *\n * // Using a callback function\n * tomtom.categorySearch()\n * .key() // this is optional if you defined a global key earlier\n * .query(\"restaurant\")\n * .callback(callbackFn)\n * .go();\n *\n * // Or using a Promise\n * tomtom.categorySearch()\n * .key() // this is optional if you defined a global key earlier\n * .query(\"restaurant\")\n * .go()\n * .then(callbackFn);\n * ```\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * @class CategorySearch\n * @extends Search\n * @uses ExtendedPostalCodesForMixin\n * @uses CenterMixin\n * @uses RadiusMixin\n * @uses BoundingBoxMixin\n * @uses CountrySetMixin\n * @uses OffsetMixin\n * @uses BestResultMixin\n * @uses QueryMixin\n * @uses ViewMixin\n * @uses TypeaheadMixin\n * @constructor\n * @module Services\n *\n * @param {Object} [options] Options to be passed to the category search call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.unwrapBbox=false] Changes the bounding box coordinates allowing longitudes that\n * exceeds 180 degrees when is necessary. {{#crossLink \"Search/unwrapBbox:method\"}}More{{/crossLink}}\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {String} [options.view=\"Unified\"] Geopolitical view\n * @param {String} [options.language=null] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n *\n * @param {String} [options.query] Text that will be searched.\n * This parameter is required to be defined either in the options passed to the constructor or using the\n * **query()** method.\n * @param {Boolean} [options.typeahead=false] Enables the **predictive** mode\n * @param {Boolean} [options.bestResult=false] Return only one result, the best match result.\n * @param {Number[]|String|L.LatLng|Object} [options.center] Location where results should be biased\n * @param {Number} [options.radius=0] The search radius in meters using the coordinates given to the **center**\n * option as origin.\n * If the radius is zero the results will not be constrained.\n * @param {Number} [options.offset=0] Starting offset of the returned results within the full result set\n * @param {String} [options.countrySet] List of country codes for limit the search request to those specific\n * political limits\n * @param {Object|Number[]|Object[]|String} [options.boundingBox] The bounding box is an area within the search\n * results needs to limit to. If it is omitted then the whole world will be taken into consideration.\n * @param {String} [options.extendedPostalCodesFor] Represent the indexes for which extended postal codes should\n * be included in the results\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(17)], __WEBPACK_AMD_DEFINE_RESULT__ = function (search) {\n 'use strict';\n\n var SearchPrototype = search.prototype.constructor;\n\n function CategorySearch(options) {\n SearchPrototype.call(this, options);\n\n this.fields.type = {\n defaultValue: this.TYPE.category,\n visible: false\n };\n }\n\n CategorySearch.prototype = new SearchPrototype();\n CategorySearch.prototype.constructor = CategorySearch;\n\n return function (options) {\n return new CategorySearch(options).construct();\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Allows to make search request using the TomTom's\n * [Search API - Geometry Search](https://developer.tomtom.com/search-api/search-api-documentation-search/geometry-search).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"GeometrySearch/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"GeometrySearch/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * @example\n * ```js\n * var geometryList = [\n * {\n * type: \"POLYGON\",\n * vertices: [\n * \"37.7524152343544,-122.43576049804686\",\n * \"37.70660472542312,-122.43301391601562\",\n * \"37.712059855877314,-122.36434936523438\",\n * \"37.75350561243041,-122.37396240234374\"\n * ]\n * },\n * {\n * type: \"CIRCLE\",\n * position: \"37.71205,-121.36434\",\n * radius: 6000\n * },\n * {\n * type: \"CIRCLE\",\n * position: \"37.31205,-121.36434\",\n * radius: 1000\n * }\n * ];\n *\n * function callbackFn(results) {\n * console.log(results);\n * }\n *\n * // Using a callback function\n * tomtom.geometrySearch()\n * .key() // this is optional if you defined a global key earlier\n * .geometryList(geometryList)\n * .query('pizza')\n * .callback(callbackFn)\n * .go();\n *\n * // Or using a Promise\n * tomtom.geometrySearch()\n * .key() // this is optional if you defined a global key earlier\n * .geometryList(geometryList)\n * .query('pizza')\n * .go()\n * .then(callbackFn);\n * ```\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * @class GeometrySearch\n * @extends Search\n * @uses QueryMixin\n * @uses IdxSetMixin\n * @uses ExtendedPostalCodesForMixin\n * @uses ViewMixin\n * @constructor\n * @module Services\n *\n * @param {Object} [options] Options to be passed to the geometry search call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.unwrapBbox=false] Changes the bounding box coordinates allowing longitudes that\n * exceeds 180 degrees when is necessary. {{#crossLink \"Search/unwrapBbox:method\"}}More{{/crossLink}}\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {String} [options.language=null] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n * @param {String} options.query Text that will be searched.\n * This parameter is required to be defined either in the options passed to the constructor or using the\n * **query()** method.\n * @param {Array} [options.geometryList] Represents the list of geometries for the geometry search\n * @param {String} [options.idxSet] Specify which indexes to utilize for the search\n * @param {String} [options.extendedPostalCodesFor] Represent the indexes for which extended postal codes should\n * be included in the results\n * @param {String} [options.view] Sets the geopolitical view used in the service\n */\n/* eslint-enable */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(17), __webpack_require__(2), __webpack_require__(4), __webpack_require__(7)], __WEBPACK_AMD_DEFINE_RESULT__ = function (search, validators, converters, parameterApplications) {\n 'use strict';\n\n var searchPrototype = search.prototype.constructor;\n\n function GeometrySearch(options) {\n this.options = options;\n this.fields = {};\n\n this.fields.type = {\n defaultValue: this.TYPE.geometry,\n visible: false,\n application: parameterApplications.PATH\n };\n\n this.fields.key = {\n validator: validators.string\n };\n\n this.fields.query = {\n validator: validators.string,\n required: true,\n application: parameterApplications.PATH\n };\n\n this.fields.limit = {\n validator: validators.limit\n };\n\n this.fields.language = {\n validator: validators.languageCode\n };\n\n this.fields.view = {\n validator: validators.geopolView('search', 'view')\n };\n\n /**\n * Sets or gets the current value of the option \"geometryList\".\n *\n * Its a list of geometries to search in.\n *\n * Currently only two types of geometries are being supported:\n * - Polygons: Groups of coordinates that describes an enclosed area\n * - Circles: Describe a circular area using an unique coordinate and a radius in meters\n *\n * @example\n * ```js\n * // A polygon area\n * [\n * {\n * type: \"POLYGON\",\n * vertices: [\n * \"37.7524152343544,-122.43576049804686\",\n * \"37.70660472542312,-122.43301391601562\",\n * \"37.712059855877314,-122.36434936523438\",\n * \"37.75350561243041,-122.37396240234374\"\n * ]\n * }\n * ];\n * ```\n *\n * @example\n * ```js\n * // A couple of circle areas\n * var geometryList = [\n * {\n * type: \"CIRCLE\",\n * position: \"37.71205,-121.36434\",\n * radius: 6000 // Unit is in meters\n * },\n * {\n * type: \"CIRCLE\",\n * position: \"37.31205,-121.36434\",\n * radius: 1000 // Unit is in meters\n * }\n * ];\n * ```\n *\n * @example\n * ```js\n * // Mixing polygons and circles areas\n * var geometryList = [\n * {\n * type: \"POLYGON\",\n * vertices: [\n * \"37.7524152343544,-122.43576049804686\",\n * \"37.70660472542312,-122.43301391601562\",\n * \"37.712059855877314,-122.36434936523438\",\n * \"37.75350561243041,-122.37396240234374\"\n * ]\n * },\n * {\n * type: \"CIRCLE\",\n * position: \"37.71205,-121.36434\",\n * radius: 6000\n * },\n * {\n * type: \"CIRCLE\",\n * position: \"37.31205,-121.36434\",\n * radius: 1000\n * }\n * ];\n * ```\n *\n * @method geometryList\n * @chainable\n * @param {Object[]} [newValue] List of geometries\n * @throws {TypeError} If the given argument cannot be converted to a valid value\n * @return {Object[]} The same service instance or the current option value if no argument was given\n */\n this.fields.geometryList = {\n validator: validators.geometryList,\n converter: converters.geometryList,\n application: parameterApplications.POST\n };\n\n this.fields.idxSet = {\n validator: validators.string\n };\n\n this.fields.protocol = { validator: validators.protocol };\n\n this.fields.extendedPostalCodesFor = { validator: validators.string };\n\n this.fields.unwrapBbox = { validator: validators.bool, defaultValue: false, required: true };\n }\n\n GeometrySearch.prototype = searchPrototype.prototype;\n GeometrySearch.prototype.constructor = GeometrySearch;\n\n return function (options) {\n return new GeometrySearch(options).construct();\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 173 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Allows to make search request using the TomTom's\n * [Search API - Low Bandwidth Search](https://developer.tomtom.com/search-api/search-api-documentation-search/low-bandwidth-search).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"LowBandwidthSearch/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"LowBandwidthSearch/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * @example\n * ```js\n * function callbackFn(results) {\n * console.log(results);\n * }\n *\n * // Using a callback function\n * tomtom.lowBandwidthSearch()\n * .key() // this is optional if you defined a global key earlier\n * .query(\"Amsterdam, The Netherlands\")\n * .callback(callbackFn)\n * .go();\n *\n * // Or using a Promise\n * tomtom.lowBandwidthSearch()\n * .key() // this is optional if you defined a global key earlier\n * .query(\"Amsterdam, The Netherlands\")\n * .go()\n * .then(callbackFn);\n * ```\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * @class LowBandwidthSearch\n * @extends Search\n * @uses CenterMixin\n * @uses RadiusMixin\n * @uses BoundingBoxMixin\n * @uses CountrySetMixin\n * @uses OffsetMixin\n * @uses BestResultMixin\n * @uses ViewMixin\n * @uses QueryMixin\n * @uses TypeaheadMixin\n * @uses IdxSetMixin\n * @constructor\n * @module Services\n *\n * @param {Object} [options]\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.unwrapBbox=false] Changes the bounding box coordinates allowing longitudes that\n * exceeds 180 degrees when is necessary. {{#crossLink \"Search/unwrapBbox:method\"}}More{{/crossLink}}\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {String} [options.view=\"Unified\"] Geopolitical view\n * @param {String} [options.language=null] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n *\n * @param {String} [options.query] Text that will be searched.\n * This parameter is required to be defined either in the options passed to the constructor or using the\n * **query()** method.\n * @param {Boolean} [options.typeahead=false] Enables the **predictive** mode\n * @param {Boolean} [options.bestResult=false] Return only one result, the best match result.\n * @param {Number[]|String|L.LatLng|Object} [options.center] Location where results should be biased\n * @param {Number} [options.radius=0] The search radius in meters using the coordinates given to the **center**\n * option as origin.\n * If the radius is zero the results will not be constrained.\n * @param {Number} [options.offset=0] Starting offset of the returned results within the full result set\n * @param {String} [options.countrySet] List of country codes for limit the search request to those specific\n * political limits\n * @param {Object|Number[]|Object[]|String} [options.boundingBox] The bounding box is an area within the search\n * results needs to limit to. If it is omitted then the whole world will be taken into consideration.\n * @param {String} [options.idxSet] Specify which indexes to utilize for the search\n */\n/* eslint-enable */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(17), __webpack_require__(174), __webpack_require__(2)], __WEBPACK_AMD_DEFINE_RESULT__ = function (search, model, validators) {\n 'use strict';\n\n var SearchPrototype = search.prototype.constructor;\n\n function LowBandwidthSearch(options) {\n SearchPrototype.call(this, options);\n\n this.model = model;\n this.fields.type = {\n defaultValue: this.TYPE.lowBandwidth,\n visible: false\n };\n\n this.fields.idxSet = {\n validator: validators.string\n };\n\n /**\n * @ignore\n * Only lowBandwidthSearch doesn't support extendedPostalCodesFor property\n * That's why related field must be removed\n */\n delete this.fields.extendedPostalCodesFor;\n }\n\n LowBandwidthSearch.prototype = new SearchPrototype();\n LowBandwidthSearch.prototype.constructor = LowBandwidthSearch;\n\n return function (options) {\n return new LowBandwidthSearch(options).construct();\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(13)], __WEBPACK_AMD_DEFINE_RESULT__ = function (selector) {\n 'use strict';\n\n return function (json) {\n return selector(json, 'r', 'a1, tp, cc, a2, nm, ph, ps, gh, ct, cst, etp');\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Allows to make search request using the TomTom's\n * [Search API - Along Route Search](https://developer.tomtom.com/search-api/search-api-documentation-search/along-route-search).\n *\n * The Along Route Search endpoint allows you to perform a fuzzy search for\n * POIs along a specified route. This search is constrained by specifying\n * Detour Time limiting measure.\n *\n * To send the route points this service will use a POST request with the {{#crossLink \"AlongRouteSearch/route:method\"}}route{{/crossLink}} encoded as a JSON payload.\n * The minimum number of route points is 2.\n *\n * @example\n *```js\n * tomtom.alongRouteSearch({\n * limit: 20,\n * maxDetourTime: 120,\n * query: 'gas station',\n * route: [\n * {\n * \"lat\": 37.7524152343544,\n * \"lon\":-122.43576049804686\n * },\n * {\n * \"lat\": 37.70660472542312,\n * \"lon\":-122.43301391601562\n * },\n * [37.712059855877314, -122.36434936523438], // Another valid format\n * new L.LatLng(37.75350561243041, -122.37396240234374) // Leaflet's L.LatLng instances are also allowed\n * ]\n * })\n * .go()\n * .then(function(response) {\n * console.log('SUMMARY:');\n * console.table(response.summary);\n * console.log('RESULTS:');\n * console.table(response.results);\n * });\n * ```\n *\n * For a list of all available format for routes read the documentation for the\n * {{#crossLink \"AlongRouteSearch/route:method\"}}{{/crossLink}} option.\n *\n * @class AlongRouteSearch\n * @module Services\n * @uses Chain\n * @uses KeyMixin\n * @uses LimitMixin\n * @uses ViewMixin\n * @uses QueryMixin\n * @constructor\n *\n * @param {Object} [options]\n * @param {String} [options.key] An API Key issued from Developer Portal.\n * @param {Number} [options.limit=10] Maximum number of responses that should be returned. Maximum number is 20.\n * @param {String} [options.view=\"Unified\"] Geopolitical view\n * @param {String} [options.maxDetourTime] Maximum detour time in seconds.\n * This option is mandatory. For that reason needs to be defined during the instance\n * construction or using the maxDetourTime() setter function.\n * The maximum allowed value is 3600.\n * @param {String} options.query Text that will be searched.\n * This option is mandatory. For that reason needs to be defined during the instance\n * construction or using the query() setter function.\n * @param {Array} options.route The route representation.\n * This option is mandatory. For that reason needs to be defined during the instance\n * construction or using the route() setter function.\n * See more details.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n */\n/* eslint-enable max-len */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(8), __webpack_require__(4), __webpack_require__(2), __webpack_require__(92), __webpack_require__(44), __webpack_require__(7)], __WEBPACK_AMD_DEFINE_RESULT__ = function (chain, converters, validators, restSearch, searchTypes, parameterApplications) {\n 'use strict';\n\n var searchType = searchTypes.searchAlongRoute;\n var fields = {\n key: { validator: validators.string },\n /**\n * Sets or gets the maximum detour time in seconds.\n *\n * The maximum allowed value is 3600.\n *\n * @method maxDetourTime\n * @chainable\n * @param {Number} [value] New maximum detour time in seconds.\n * @throws {TypeError} If the given argument cannot be converted to a valid value.\n * @return {Number} The same service instance or the current option value if no argument was given.\n */\n maxDetourTime: { validator: validators.integerInInterval(0, 3600) },\n\n /**\n * Sets or gets the route to search along. The route **should have at least two points**.\n *\n * The following formats are supported:\n *\n * - **String[]**\n * - `[\"52.3,4.8\", \"52.3,4.8\"]`\n * - **Array[]**\n * - `[ [52.3, 4.8], [52.3, 4.8] ]`\n * - **Object[]**\n * - `{lat: 52.3, lon: 4.8}`\n * - `{lat: 53.3, lng: 5.8}`\n * - `{x: 53.3, y: 5.8}`\n * - `{latitude: 53.3, longitude: 5.8}`\n * - `{lat: Function, lng: Function}` The functions should return a numeric value\n *\n * @example\n *```js\n * tomtom.alongRouteSearch()\n * .route([\n * {\n * lat: 37.7524152343544,\n * lon:-122.43576049804686\n * },\n * {\n * lat: 37.70660472542312,\n * lon:-122.43301391601562\n * }\n * ])\n * .go(callback);\n *```\n *\n * @method route\n * @chainable\n * @param {Array} [route] Route representation.\n * @throws {TypeError} If the given argument cannot be converted to a valid value.\n * @return {Array} The same service instance or the current option value if no argument was given.\n */\n route: {\n required: true,\n converter: converters.route,\n validator: validators.route,\n application: parameterApplications.POST\n },\n\n query: {\n required: true,\n validator: validators.string,\n converter: converters.queryString,\n application: parameterApplications.PATH\n },\n\n // A custom \"limit\" docblock is used because the max limit value differs from the used on the\n // other services (100).\n /**\n * Sets or gets the limit of the elements for the response.\n *\n * @method limit\n * @chainable\n * @param {Number} [limit] Maximum number of the elements in response. Maximum number is 20.\n * @throws {TypeError} If the given argument cannot be converted to a valid value.\n * @return {Number} The same service instance or the current option value if no argument was given.\n */\n limit: {\n validator: validators.integerInInterval(0, 20)\n },\n type: {\n validator: validators.string,\n defaultValue: searchType,\n application: parameterApplications.PATH\n }\n };\n\n var batchFields = {\n batchItems: {\n validator: validators.arrayOf(fields),\n converter: converters.arrayOf(fields)\n }\n };\n\n var search = restSearch();\n\n function handleChain(data, callback) {\n data.type = searchType;\n search.search(fields, data, function (response) {\n callback.call(this, response);\n });\n }\n\n function handleBatchChain(data, callback) {\n data.type = searchType;\n search.batch(fields, data, function (response) {\n callback.call(this, response);\n });\n }\n\n return function (options) {\n if (Array.isArray(options)) {\n return chain(batchFields, handleBatchChain, {\n batchItems: options\n });\n } else {\n return chain(fields, handleChain, options);\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/**\n * The Flow Segment Data service provides information about the speeds and travel times of the road\n * fragment closest to the given coordinates.\n *\n * @class TrafficFlowSegmentData\n * @module Services\n * @uses Chain\n * @uses KeyMixin\n * @param {Object} options Options to be passed to the flowSegmentData call.\n * @param {String} options.point Coordinates of the point close to the road segment.\n * @param {String} options.key Traffic Flow API key that can be obtained from\n * TomTom's developer portal.\n * @param {String} options.style The type of flow data to be displayed on the tile. Available options: absolute,\n * relative, relative-delay.\n * @param {Number} options.zoom Zoom level. This will affect traffic incident coordinates to present both\n * road sides separately.\n * @param {String} [options.unit=KMPH] Unit of speed. Available options: KMPH, MPH.\n * @param {Number} [options.thickness=10] Segment width multiplier. Accepts values in range from 0 to 20.\n * @param {Function} [options.fail] The callback function to be called on failure.\n * @param {Function} options.callback The callback function to be called on success.\n * @param {Boolean} options.openLr Specifies if response include OpenLR code.\n * @constructor\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(177), __webpack_require__(8), __webpack_require__(7)], __WEBPACK_AMD_DEFINE_RESULT__ = function (validators, restFlowSegmentData, chain, parameterApplications) {\n\n var fields = {\n key: { validator: validators.string },\n\n /**\n * @method zoom\n * @chainable\n * @param {Integer} zoom Zoom level. This will affect traffic incident coordinates to present both road\n * sides separately. Should be in range from 0 to 18.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n zoom: { validator: validators.numberInInterval(0, 18), required: true,\n application: parameterApplications.PATH },\n\n /**\n * @method style\n * @chainable\n * @param {String} style The type of flow data to be displayed on the tile. Available options: absolute,\n * relative, relative-delay.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n style: { validator: validators.oneOfValue(['absolute', 'relative', 'relative-delay'], 'traffic flow style'), required: true, application: parameterApplications.PATH },\n\n /**\n * @method point\n * @chainable\n * @param {String} point Coordinates of the point close to the road segment.\n * They have to be comma-separated and calculated using EPSG4326 projection.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n point: { validator: validators.point, required: true },\n\n /**\n * @method unit\n * @chainable\n * @param {String} unit Unit of speed. Avilable values: KMPH, MPH.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n unit: { validator: validators.oneOfValue(['KMPH', 'MPH']) },\n\n /**\n * @method thickness\n * @chainable\n * @param {Integer} thickness Segment width multiplier. Value should be in range from 1 to 20.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n thickness: { validator: validators.numberInInterval(1, 20) },\n\n /**\n * @method openLr\n * @chainable\n * @param {Boolean} openLr Specifies if response include OpenLR code.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n openLr: { validator: validators.bool }\n };\n\n var flowSegmentData = restFlowSegmentData();\n\n function handleChain(options, callback) {\n return flowSegmentData.flowSegmentData(fields, options, callback);\n }\n\n return function (options) {\n options = options || {};\n options.__serviceType = 'traffic';\n return chain(fields, handleChain, options);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 177 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(6), __webpack_require__(10), __webpack_require__(9)], __WEBPACK_AMD_DEFINE_RESULT__ = function (endpoints, requestFactory, ApiKeyNames) {\n 'use strict';\n\n return function () {\n return {\n flowSegmentData: requestFactory.single(endpoints.flowSegmentData, ApiKeyNames.traffic)\n };\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 178 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * It allows to retrieve polygons (in GeoJson format) representing administrative borders using ids related to\n * search results entities.\n *\n * @example\n * ```js\n * tomtom.fuzzySearch()\n * .key() // this is optional if you defined a global key earlier\n * .query(\"Amsterdam\")\n * .go()\n * .then(function(response) {\n * var geometryId = response.results[0].dataSources.geometry.id;\n * tomtom.additionalData()\n * .key() // this is optional if you defined a global key earlier\n * .geometries([geometryId])\n * .go().then(function(adpResponse) {\n * console.log(adpResponse);\n * })\n * });\n * ```\n *\n * @class AdditionalData\n * @module Services\n * @uses Chain\n * @uses KeyMixin\n * @uses ViewMixin\n * @uses GeometriesMixin\n * @uses GeometriesZoomMixin\n * @constructor\n *\n * @param {Object} [options]\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {String} [options.view=\"Unified\"] Geopolitical view\n * @param {String[]} options.geometries Geometry ids\n * @param {Number} [options.geometriesZoom] Geometries zoom\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(8), __webpack_require__(2), __webpack_require__(179)], __WEBPACK_AMD_DEFINE_RESULT__ = function (chain, validators, restAdditionalData) {\n 'use strict';\n\n var fields = {\n key: {\n validator: validators.string\n },\n geometries: {\n validator: validators.arrayType,\n required: true\n },\n geometriesZoom: {\n validator: validators.geometriesZoom\n }\n };\n\n var additionalData = restAdditionalData();\n\n function handleChain(data, callback) {\n additionalData.additionalData(fields, data, callback);\n }\n\n return function (options) {\n return chain(fields, handleChain, options);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(6), __webpack_require__(10), __webpack_require__(9)], __WEBPACK_AMD_DEFINE_RESULT__ = function (endpoints, requestFactory, ApiKeyNames) {\n 'use strict';\n\n return function () {\n return {\n additionalData: requestFactory.single(endpoints.adp, ApiKeyNames.search)\n };\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 180 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/* jshint ignore:start */\n/**\n * Calculate reachable range implementation using using the TomTom's Reachable Range API.\n *\n * Allows to make route request using the TomTom's\n * [Routing API - Calculate Reachable Range Documentation](https://developer.tomtom.com/routing-api/routing-api-documentation-routing/calculate-reachable-range).\n *\n * The Calculate Reachable Range service calculates a set of locations that can\n * be reached from the origin point, subject to the available fuel or energy\n * budget that is specified in the request.\n *\n * The information returned is a polygon boundary in counterclockwise orientation\n * and the precise polygon center (the result of map-matching the origin point).\n *\n * @class ReachableRange\n * @module Services\n * @uses KeyMixin\n * @uses Chain\n * @uses CommonRoutingParameters\n * @uses ProtocolMixin\n * @constructor\n *\n * @param {Object} [options] Options to be passed to the routing call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key=global API key] The API key to be used.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n * @param {Number} [options.accelerationEfficiency] Specifies the efficiency of converting chemical energy stored in\n * fuel to kinetic energy when the vehicle accelerates (i.e. KineticEnergyGained/ChemicalEnergyConsumed).\n * @param {String} [options.arriveAt] The date and time of arrival at the destination point.\n * @param {Number} [options.auxiliaryPowerInkW] Specifies the amount of power consumed for sustaining auxiliary systems, in kilowatts (kW).\n * @param {Number} [options.auxiliaryPowerInLitersPerHour] Specifies the amount of fuel consumed for sustaining\n * auxiliary systems of the vehicle, in liters per hour. It can be used to specify consumption due to devices\n * and systems such as AC systems, radio, heating, etc.\n * @param {Array|String} [options.avoid] Specifies something that the route calculation should try to avoid when\n * determining the route.\n * @param {Array} [options.constantSpeedConsumptionInLitersPerHundredkm] Colon-delimited list of\n * CombustionConstantSpeedConsumptionPairs, e.g. array of such pairs \"60,7\".\n * @param {Array} [options.constantSpeedConsumptionInkWhPerHundredkm] Colon-delimited list of\n * ElectricConstantSpeedConsumptionPairs, e.g. array of such pairs \"60,7\".\n * @param {Number} [options.currentChargeInkWh] Specifies the current electric energy supply in kilowatt hours (kWh).\n * @param {Number} [options.currentFuelInLiters] Current supply of fuel in liters.\n * @param {Number} [options.decelerationEfficiency] Specifies the efficiency of converting kinetic energy to saved\n * (not consumed) fuel when the vehicle decelerates (i.e. ChemicalEnergySaved/KineticEnergyLost).\n * @param {String} [options.departAt] The date and time of departure from the origin point\n * response.\n * @param {Number} [options.downhillEfficiency] Specifies the efficiency of converting potential energy to\n * saved (not consumed) fuel when the vehicle loses elevation (i.e. ChemicalEnergySaved/PotentialEnergyLost).\n * @param {Number} [options.energyBudgetInkWh] Electric energy budget in kilowatt\n * hours (kWh) that determines maximal range which can be travelled using the\n * specified Electric Consumption Model. Required if vehicleEngineType is\n * electric.\n * @param {Number} [options.fuelBudgetInLiters] Fuel budget in liters that determines\n * maximal range which can be travelled using the specified Combustion\n * Consumption Model. Required if vehicleEngineType is combustion.\n * @param {Number} [options.fuelEnergyDensityInMJoulesPerLiter] Specifies the amount of chemical energy stored\n * in one liter of fuel in megajoules (MJ). It is used in conjunction with the Efficiency parameters for\n * conversions between saved or consumed energy and fuel.\n * @param {String} [options.hilliness] Degree of hilliness for thrilling route.\n * @param {Number} [options.maxChargeInkWh] Specifies the maximum electric energy supply in kilowatt hours (kWh)\n * that may be stored in the vehicle's battery.\n * @param {Array|String} [options.origin] Point from which the range calculation should start.\n * @param {String} [options.protocol] Protocol's type, one of \"http\" or \"https\".\n * @param {String} [options.report] Specifies which data should be reported for diagnosis purposes. Possible values:\n * * effectiveSettings reports the effective parameters or data used when calling the API. In the case of defaulted\n * parameters the default will be reflected where the parameter was not specified by the caller.\n * @param {String} [options.routeType] The type of route requested.\n * @param {String} [options.traffic] consider all available traffic information during routing\n * determining the route.\n * @param {Number} [options.timeBudgetInSec] Time budget in seconds that determines maximal\n * range which can be travelled using driving time.\n * @param {String} [options.travelMode] The mode of travel for the requested route.\n * @param {Number} [options.uphillEfficiency] Specifies the efficiency of converting chemical energy stored in\n * fuel to potential energy when the vehicle gains elevation (i.e. PotentialEnergyGained/ChemicalEnergyConsumed).\n * @param {Number} [options.vehicleAxleWeight] The vehicle axle weight in kg.\n * @param {Boolean} [options.vehicleCommercial] True if vehicle is used for commercial purposes.\n * @param {String} [options.vehicleEngineType] The vehicle engine type.\n * @param {Number} [options.vehicleHeight] The vehicle height in m.\n * @param {Number} [options.vehicleLength] The vehicle length in meters.\n * @param {Array|String} [options.vehicleLoadType] The array of truck cargo classification.\n * @param {Number} [options.vehicleMaxSpeed] The maximal allowed vehicle speed in km/h.\n * @param {Number} [options.vehicleWeight] The vehicle weight in kg.\n * @param {Number} [options.vehicleWidth] The vehicle width in m.\n * @param {String} [options.windingness] Level of turns for thrilling route.\n *\n * @example\n * ```javascript\n * tomtom.reachableRange({\n * origin: '51.776667,19.454722',\n * fuelBudgetInLiters: 5,\n * constantSpeedConsumptionInLitersPerHundredkm: [\"10,20\", \"15,30\"],\n * })\n * .go()\n * .then(function(rangeData) {\n * console.log(L.geoJson(rangeData));\n * })\n * .catch(function(error) {\n * console.error(error);\n * });\n * ```\n */\n/* eslint-enable max-len */\n/* jshint ignore:end */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(41), __webpack_require__(96), __webpack_require__(181), __webpack_require__(8), __webpack_require__(2), __webpack_require__(4), __webpack_require__(182)], __WEBPACK_AMD_DEFINE_RESULT__ = function (restRouting, reachableRange, batchReachableRangeModel, chain, validators, converters, reachableRangeParameters) {\n var batchFields;\n\n var routing = restRouting();\n var fields = reachableRangeParameters();\n\n batchFields = {\n batchItems: {\n validator: validators.arrayOf(fields),\n converter: converters.arrayOf(fields)\n }\n };\n\n function handleChain(data, callback) {\n routing.calculateReachableRange(fields, data, function (response) {\n callback.call(this, reachableRange(response, data));\n });\n }\n\n function handleBatchChain(data, callback) {\n routing.batchReachableRange(fields, data, function (response) {\n callback.call(this, batchReachableRangeModel(response));\n });\n }\n\n return function (options) {\n if (Array.isArray(options)) {\n return chain(batchFields, handleBatchChain, {\n batchItems: options\n });\n }\n return chain(fields, handleChain, options);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 181 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(96)], __WEBPACK_AMD_DEFINE_RESULT__ = function (reachableRangeModel) {\n 'use strict';\n\n return function (data) {\n if (!Array.isArray(data.batchItems)) {\n return null;\n }\n return data.batchItems.map(function (batchItem) {\n if (batchItem.response.error) {\n return { error: batchItem.response.error };\n } else {\n return reachableRangeModel(batchItem.response);\n }\n });\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(74), __webpack_require__(0), __webpack_require__(42), __webpack_require__(2), __webpack_require__(7)], __WEBPACK_AMD_DEFINE_RESULT__ = function (commonRoutingParameters, utils, postValidators, validators, parameterApplications) {\n var fields = {\n\n /**\n * Point from which the range calculation should start.\n *\n * @method origin\n * @chainable\n * @param {String} origin Point from which the range calculation should start.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {reachableRange|String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n origin: {\n validator: validators.routingLocation,\n application: parameterApplications.PATH\n },\n\n /**\n * Getter and setter for fuelBudgetInLiters.\n *\n * @method fuelBudgetInLiters\n * @chainable\n * @param {Number} fuelBudgetInLiters Fuel budget in liters that\n * determines maximal range which can be travelled using the specified\n * Combustion Consumption Model. Required if _vehicleEngineType_ is\n * _combustion_.\n * @throws {TypeError} if the given argument cannot be converted to a\n * valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n fuelBudgetInLiters: {\n postValidator: [postValidators.requiredBudget, postValidators.requiredWithSpecificEngineType, postValidators.notCommon]\n },\n\n /**\n * Getter and setter for energyBudgetInkWh.\n *\n * @method energyBudgetInkWh\n * @chainable\n * @param {Number} energyBudgetInkWh Electric energy budget in\n * kilowatt hours (kWh) that determines maximal range which can be\n * travelled using the specified Electric Consumption Model.\n * @throws {TypeError} if the given argument cannot be converted to a\n * valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n energyBudgetInkWh: {\n postValidator: [postValidators.requiredBudget, postValidators.requiredWithSpecificEngineType, postValidators.notCommon]\n },\n\n /**\n * Getter and setter for timeBudgetInSec.\n *\n * @method timeBudgetInSec\n * @chainable\n * @param {Number} timeBudgetInSec Time budget in seconds that determines maximal\n * range which can be travelled using driving time.\n * The consumption parameters will only affect eco-routes and thereby indirectly the driving time.\n * @throws {TypeError} if the given argument cannot be converted to a\n * valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n timeBudgetInSec: {\n postValidator: [postValidators.requiredBudget, postValidators.notCommon]\n }\n\n };\n\n fields = utils.extend(fields, commonRoutingParameters);\n\n return function (fieldsToSkip) {\n var result = utils.clone(fields);\n if (fieldsToSkip instanceof Array) {\n fieldsToSkip.forEach(function (field) {\n delete result[field];\n });\n }\n\n return result;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Matrix routing service implementation using using the TomTom's\n * [Routing API - Matrix Routing](https://developer.tomtom.com/routing-api/routing-api-documentation/matrix-routing).\n *\n * The Routing API - Matrix Routing service allows calculation of a matrix of route summaries for a set of routes\n * which are defined with origin and destination locations.\n *\n * For every given origin this service calculates\n * the cost of routing from that origin to every given destination. The set of origins and the set of destinations\n * can be thought of as the column and row headers of a table and each cell in the table contains the costs of routing\n * from the origin to the destination for that cell.\n *\n * The following costs are computed for each route:\n * - Travel times\n * - Distances\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"MatrixRouting/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"MatrixRouting/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * @class MatrixRouting\n * @module Services\n * @uses Chain\n * @uses KeyMixin\n *\n * @constructor\n * @param {Object} [options] Options to be passed to the routing call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key=global API key] An API Key issued\n * from Developer Portal\n * @param {Array} [options.origins] A set of origin locations represented by coordinates (lat, lon).\n * At least one origin is required.\n * @param {Array} options.destinations A set of destination locations represented by coordinates (lat, lon).\n * At least one destination is required.\n * @param {String} [options.routeType] The type of route requested.\n * @param {Boolean} [options.traffic] Determines if traffic data should be used to calculate the route\n * @param {String} [options.travelMode] The travel mode for the requested route. The possible values are documented\n * {{#crossLink \"MatrixRouting/travelMode:method\"}}here{{/crossLink}}.\n * @param {String} [options.avoid] Specifies something that the route calculation should try to avoid when\n * determining the route. The possible values are documented\n * {{#crossLink \"MatrixRouting/avoid:method\"}}here{{/crossLink}}.\n * @param {String} [options.departAt] The date and time of departure from the origin point\n * @param {String} [options.arriveAt] The date and time of arrival at the destination point\n * response\n * @param {String} [options.hilliness] Degree of hilliness for thrilling route. The possible values are documented\n * {{#crossLink \"MatrixRouting/hilliness:method\"}}here{{/crossLink}}.\n * @param {Number} [options.vehicleAxleWeight] The vehicle axle weight in kg.\n * @param {Boolean} [options.vehicleCommercial] True if vehicle is used for commercial purposes.\n * @param {String} [computeTravelTimeFor] Setting to _all_ provides additional information regards travel times.\n * @param {String} [options.vehicleEngineType] The vehicle engine type. One of \"combustion\" or \"electric\"\n * @param {Number} [options.vehicleHeight] The vehicle height in m.\n * @param {Number} [options.vehicleLength] The vehicle length in meters.\n * @param {Array|String} [options.vehicleLoadType] The array of truck cargo classification.\n * The possible values are documented {{#crossLink \"MatrixRouting/vehicleLoadType:method\"}}here{{/crossLink}}.\n * @param {Number} [options.vehicleMaxSpeed] The maximal allowed vehicle speed in km/h.\n * @param {Number} [options.vehicleWeight] The vehicle weight in kg.\n * @param {Number} [options.vehicleWidth] The vehicle width in m.\n * @param {String} [options.windingness] Level of turns for thrilling route.\n * The possible values are documented {{#crossLink \"MatrixRouting/windingness:method\"}}here{{/crossLink}}.\n * @param {String} [options.protocol] Protocol's type, one of \"http\" or \"https\".\n *\n * @example\n * ```js\n * var origins = [\n * { point: { latitude: 51.63685, longitude: 19.4171 } },\n * { point: { latitude: 51.63685, longitude: 19 } }\n * ];\n * var destinations = [\n * { point: { latitude: 52.23498, longitude: 21.00849 } },\n * { point: { latitude: 52.63685, longitude: 18 } }\n * ];\n * function callbackFn(routeGeoJson) {\n * console.log(routeGeoJson);\n * }\n * var request = tomtom.matrixRouting({\n * origins: origins,\n * destinations: destinations,\n * traffic: true\n * });\n * request.go()\n * .then(callbackFn);\n * ```\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(41), __webpack_require__(184), __webpack_require__(8), __webpack_require__(72)], __WEBPACK_AMD_DEFINE_RESULT__ = function (restRouting, matrixRoutingModel, chain, matrixParameters) {\n 'use strict';\n\n var fields = matrixParameters();\n var routing = restRouting();\n\n function handleChain(data, callback) {\n routing.matrix(data, function (response) {\n callback.call(this, matrixRoutingModel(response));\n });\n }\n\n return function (options) {\n var opt = options || {};\n opt.__serviceType = 'routing';\n\n return chain(fields, handleChain, opt);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (Utils) {\n 'use strict';\n\n return function (data) {\n if (Utils.isString(data)) {\n try {\n data = JSON.parse(data); // aja js has problems and response is not always parsed as it should\n } catch (e) {\n return null;\n }\n }\n if (data.error) {\n return { error: data.error };\n } else if (data.matrix) {\n return data.matrix.map(function (row) {\n return row.map(function (cell) {\n return cell.response;\n });\n });\n }\n return null;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * It creates a foldable settings control panel over the map.\n *\n * @class ControlPanel\n * @namespace L\n * @extends L.Foldable\n * @module Widgets\n * @constructor\n * @param {Object} [options]\n * @param {String} [options.className=\"tomtom-control-panel\"]\n * @param {String} [options.title=null] Title of the container. If it's null the title will be hidden.\n * @param {Object} [options.close]\n * @param {String} [options.close.text] Text displayed in the Close button\n * @param {String} [options.close.image=\"sdk/images/icon-cog.svg\"] Image of the Close button\n * @param {Object} [options.show]\n * @param {String} [options.show.text] Text displayed in the Show button\n * @param {String} [options.show.image=\"sdk/images/icon-cog.svg\"] Image of the Show button\n * @param {Boolean} [options.collapsed=true] Initial state of the foldable widget\n * \n * @example\n* ```javascript\n* var results = [1, 2, 3];\n* var widget = new L.ControlPanel();\n* widget.addTo(map);\n* widget.setContent('Length: ');\n* widget.addContent(results.length);\n* ```\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(46)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L) {\n 'use strict';\n\n var icons = {\n cog: L.Icon.Default.imagePath + '/icon-cog.svg'\n };\n\n L.ControlPanel = L.Foldable.extend({\n options: {\n className: 'tomtom-control-panel',\n title: null,\n close: { image: icons.cog },\n show: { image: icons.cog },\n collapsed: true\n }\n });\n\n return function (options) {\n return new L.ControlPanel(options);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 186 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This module helps you to create a language selector.\n *\n * @class LanguageSelector\n * @static\n * @extends Object\n * @namespace L\n * @module Widgets\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L) {\n 'use strict';\n\n function onPropertyChange(e) {\n var value = e.target.options[e.target.selectedIndex].value;\n e.target.localeService.setCurrentLocale(value);\n }\n\n function addOptions(select, values) {\n var option;\n values.forEach(function (value) {\n option = document.createElement('option');\n option.text = value.getLabel();\n option.value = value.getLanguageCode();\n select.add(option);\n });\n }\n\n function setCurrentLocale(select) {\n var i;\n var locale = select.localeService.getCurrentLocale();\n var langCode = locale.getLanguageCode();\n //sets selected index to correct value\n for (i = 0; i < select.options.length; ++i) {\n if (select.options[i].value === langCode) {\n select.selectedIndex = i;\n select.options[i].selected = 'selected';\n }\n }\n }\n\n return {\n /**\n * Returns a {{#crossLink \"HTMLSelectElement\"}}{{/crossLink}} filled with the supported locales.\n *\n * The element has a function bound to its onchange event, which updates the locale configuration\n * of the {{#crossLink \"LocaleService\"}}{{/crossLink}} instance given as the first argument.\n *\n * @method getHtmlElement\n * @param {LocaleService} localeService Locale service which will be bound to the generated dropdown.\n * @param {\"routing\"|\"search\"|\"traffic\"|\"maps\"} [serviceType] Determines the list of languages.\n * - If you do not provide this parameter or you provide an invalid one, all languages will be included.\n * - If you pass a value, only languages specific for the given service's type will be added.\n * @return {HTMLSelectElement}\n */\n getHtmlElement: function getHtmlElement(localeService, serviceType) {\n var select;\n if (!localeService) {\n console.error('Locale service not passed to languageSelector!');\n return undefined;\n }\n select = document.createElement('select');\n select.localeService = localeService;\n select.className = 'tomtom-language-selector';\n addOptions(select, L.LocaleService.getLocalesFor(serviceType));\n setCurrentLocale(select);\n select.onchange = onPropertyChange;\n return select;\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 187 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * The ResultsLit view allows to create foldable results widget on a map.\n *\n * @class ResultsList\n * @namespace L\n * @extends L.Foldable\n * @module Widgets\n * @constructor\n * @param {Object} [options]\n * @param {String} [options.className=\"tomtom-results-list\"]\n * @param {String} [options.title=\"Results\"]\n * @param {String} [options.close={text: \"×\"}]\n * @param {Boolean} [options.closeOnClick=true]\n * @param {Object} [options.show={text: \"show\"}]\n * @param {String} [options.content=\"Fill in the form on the left and press enter to run search.\"]\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(46)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L) {\n 'use strict';\n\n L.ResultsList = L.Foldable.extend({\n options: {\n className: 'tomtom-results-list',\n title: 'Results',\n close: { text: '×' },\n closeOnClick: true,\n show: { text: 'show' },\n content: 'Fill in the form on the left and press enter to run search.'\n }\n });\n\n return function (options) {\n return new L.ResultsList(options);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 188 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This widget allows the user to do distance measurements on the map.\n *\n * @example\n * ###### Basic example\n *\n * ```javascript\n * var map = new L.Map('map', {\n * key: \"your-key\",\n * center: [52.373154, 4.890659],\n * zoom: 13\n * });\n * var widget = new L.DistanceMeasurement();\n * widget.addTo(map);\n * ```\n *\n * ###### Using options\n *\n * ```javascript\n * var map = new L.Map('map', {\n * key: \"your-api-key\",\n * center: [52.373154, 4.890659],\n * zoom: 13\n * });\n * var widget = new L.DistanceMeasurement({\n * unitScheme: 'imperial',\n * markerColor: '#99ff99'\n * });\n * map.addControl(widget);\n * ```\n *\n * @class DistanceMeasurement\n * @namespace L\n * @extends L.Control\n * @uses L.Evented\n * @module Widgets\n * @constructor\n * @param {Object} [options]\n * @param {\"topleft\"|\"topright\"|\"bottomleft\"|\"bottomright\"} [options.position=\"topright\"] Decides the location\n * of the widget\n * @param {String} [options.markerColor=\"#000\"] Color of the markers used for each step of the ruler\n * @param {String} [options.lineColor=\"#000\"] Color or the ruler's line\n * @param {\"metric\"|\"imperial\"|null} [options.unitScheme=null] Indicate if the imperial measurement unit should\n * be used for calculate the distances.\n * If the value is null the widget will use the global unit measurement configuration.\n * @param {Boolean} [options.useArc=false] Display great circle arcs instead of rect lines\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(99), __webpack_require__(189), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, MeasurementRuler, MultiMeasurementRuler, Utils) {\n 'use strict';\n\n L.DistanceMeasurement = L.Control.extend({\n includes: L.Evented.prototype,\n\n options: {\n position: 'topright',\n markerColor: '#000',\n lineColor: '#000',\n unitScheme: null,\n useArc: false\n },\n\n statics: {\n Events: {\n /**\n * Fired when the user press over the button to activate the widget.\n * After the first click over the map the measurement rule and the distance counter will appear.\n * @event Activated\n * @type String\n *\n * @example\n * ```javascript\n *\n * var widget = (new L.DistanceMeasurement()).addTo(map);\n * widget.on(L.DistanceMeasurement.Events.Activated, function (eventObject) {\n * console.log(eventObject);\n * });\n * ```\n */\n Activated: 'active',\n /**\n * Fired when the user press over the widget's button when is already activated disabling the\n * widget and hiding the measurement controls.\n * @event Deactivated\n * @type String\n */\n Deactivated: 'inactive',\n /**\n * Fired when a new measurement starts.\n * The measurement starts when the user make the first click on the map.\n * @event Started\n * @type String\n */\n Started: 'start',\n /**\n * Fired when the ruler path changes (by adding more segments).\n * @event L.DistanceMeasurement.Events.Changed\n * @param {L.MeasurementRuler} ruler Reference to the ruler instance\n * @param {L.LatLng} newSegment The coordinates of the last new segment added\n * @param {Number} distance Total ruler distance in meters after adding the new segment\n */\n Changed: 'change',\n /**\n * Fired when the user finish an active measurement.\n * @event L.DistanceMeasurement.Events.Finished\n * @param {L.MeasurementRuler} ruler Reference to the ruler instance\n * @param {Number} distance Total ruler distance in meters\n */\n Finished: 'finish',\n /**\n * Fired when the user decide to cancel an active measurement.\n * @event Cancelled\n * @type String\n */\n Cancelled: 'cancel',\n /**\n * Fired when all the measurements are cleared from the screen.\n * @event Reset\n * @type String\n */\n Reset: 'reset',\n /**\n * Fired when the widget is disabled using the\n * {{#crossLink \"L.DistanceMeasurement/disable:method\"}}{{/crossLink}} method.\n * @event Disabled\n * @type String\n */\n Disabled: 'disable',\n /**\n * Fired when the widget is enabled (after had been disabled) using the\n * {{#crossLink \"L.DistanceMeasurement/enable:method\"}}{{/crossLink}} method.\n * @event Enabled\n * @type String\n */\n Enabled: 'enable'\n }\n },\n\n /**\n * @ignore\n * CSS class names used by the elements of this widget.\n * @type {Object}\n */\n _classnames: {\n // Class added to the map container when the widget is activated\n mapContainer: 'leaflet-with-distance-measurement',\n\n // Container of the widget\n container: 'leaflet-bar leaflet-distance-measurement',\n // CSS classes added to the widget container during its lifecycle\n containerActive: 'leaflet-distance-measurement--active',\n containerInProgress: 'leaflet-distance-measurement--in-progress',\n\n // Widget's main button\n onoffButton: 'leaflet-distance-measurement__onoff-button icon-ruler',\n onoffButtonEnabled: 'leaflet-distance-measurement__onoff-button--enabled',\n onoffButtonDisabled: 'leaflet-disabled',\n\n // Container of the widget actions buttons\n actionsButtons: 'leaflet-distance-measurement__actions',\n actionsButtonsVisible: 'leaflet-distance-measurement__actions--visible',\n\n // Action buttons\n finishButton: 'leaflet-distance-measurement__actions__finish',\n cancelButton: 'leaflet-distance-measurement__actions__cancel',\n\n // Class names used for the rulers and ruler labels\n markerLabel: 'leaflet-distance-measurement__ruler__label',\n previewMarkerLabel: 'leaflet-distance-measurement__ruler__label-preview',\n ruler: 'leaflet-distance-measurement__ruler',\n previewRuler: 'leaflet-distance-measurement__ruler-preview'\n },\n\n /**\n * @ignore\n * Leaflet layer where all the magic happen.\n * @type {L.FeatureGroup}\n */\n _layer: null,\n\n /**\n * @ignore\n * Object with references to the DOM elements of the widget.\n * @type {Object}\n */\n _controls: null,\n\n /**\n * @ignore\n * Reference to the leaflet map instance.\n * @type {L.Map}\n */\n _map: null,\n\n /**\n * @ignore\n * This value is TRUE if the widget has been disabled using the disable() method.\n * @type {Boolean}\n */\n _disabled: false,\n\n /**\n * @ignore\n * This value is TRUE if the measurement controls are visible.\n * @type {Boolean}\n */\n _isActivated: false,\n\n /**\n * @ignore\n * This value is TRUE if a measurement is in progress.\n * @type {Boolean}\n */\n _isMeasurementInProgress: false,\n\n /**\n * @ignore\n * Store the status of conflictive map features to be reactivated when this widget is deactivated.\n * @type {Object}\n */\n _previousStatusOfConflictiveFeatures: null,\n\n /**\n * @ignore\n * Current measurement instance.\n * @type {L.MultiMeasurementRuler}\n */\n _activeRulerLayer: null,\n\n /**\n * @ignore\n * Ruler used during a measurement in progress to display a preview segment when the cursor\n * moves over the map.\n * @type {L.MeasurementRuler}\n */\n _previewRulerSegment: null,\n\n /**\n * @ignore\n * Stack of previous measurements.\n * Each time a measurement is finished, the finished ruler is added to this array.\n * @type {L.MultiMeasurementRuler[]}\n */\n _rulerLayerStack: [],\n\n /**\n * @ignore\n * @type String[]\n */\n _supportedUnits: [],\n\n /**\n * The unit service used by the widget to display the distances.\n * @ignore\n * @type UnitService\n */\n _unitService: null,\n\n /**\n * Curated snapshot of the widget's options created at the beginning of each measurement and using it during\n * its lifecycle.\n * This options are used for the active and preview rulers until the measurement finish.\n * That increases stability if the widget's options changes during a measurement.\n * @ignore\n * @type Object\n */\n _activeOptions: null,\n\n initialize: function initialize(options) {\n L.Util.setOptions(this, options);\n this._rulerLayerStack = [];\n this._activeRulerLayer = null;\n this._previewRulerSegment = null;\n this._isMeasurementInProgress = false;\n this._isActivated = false;\n this._disabled = false;\n this._supportedUnits = L.UnitService.getSupportedUnits().map(function (unit) {\n return unit.getLabel();\n });\n // Copying static Events property to instance Events property for compatibility\n this.Events = L.DistanceMeasurement.Events;\n },\n\n /**\n * @ignore\n * Create the DOM elements needed and returns an object with them.\n * @return {Object}\n */\n _createControls: function _createControls() {\n var container = L.DomUtil.create('div', this._classnames.container),\n onoffButton = L.DomUtil.create('a', this._classnames.onoffButton, container),\n actionsButtons = L.DomUtil.create('ul', this._classnames.actionsButtons, container),\n finishButton = L.DomUtil.create('li', this._classnames.finishButton, actionsButtons),\n cancelButton = L.DomUtil.create('li', this._classnames.cancelButton, actionsButtons);\n\n // Icons\n finishButton.innerHTML = '✓';\n cancelButton.innerHTML = '×';\n\n onoffButton.href = '#';\n\n // Labels\n onoffButton.title = 'Toggle measurement tool';\n finishButton.title = 'Finish measurement';\n cancelButton.title = 'Cancel measurement';\n\n // For screen readers\n onoffButton.setAttribute('role', 'button');\n onoffButton.setAttribute('aria-label', onoffButton.title);\n finishButton.setAttribute('role', 'button');\n finishButton.setAttribute('aria-label', finishButton.title);\n cancelButton.setAttribute('role', 'button');\n cancelButton.setAttribute('aria-label', cancelButton.title);\n\n return {\n container: container,\n actionsButtons: actionsButtons,\n finishButton: finishButton,\n cancelButton: cancelButton,\n onoffButton: onoffButton\n };\n },\n\n _attachDomEventHandlersToControls: function _attachDomEventHandlersToControls() {\n L.DomEvent.disableClickPropagation(this._controls.container);\n L.DomEvent.disableScrollPropagation(this._controls.container);\n\n L.DomEvent.on(this._controls.onoffButton, 'click', L.DomEvent.stop).on(this._controls.onoffButton, 'click', this.toggleActivation, this);\n L.DomEvent.on(this._controls.finishButton, 'click', L.DomEvent.stop).on(this._controls.finishButton, 'click', this._finishMeasurement, this);\n L.DomEvent.on(this._controls.cancelButton, 'click', L.DomEvent.stop).on(this._controls.cancelButton, 'click', this._cancelOrResetMeasurement, this);\n },\n\n /**\n * @ignore\n * Attach a click event listener to the given layer.\n * @param {L.Layer|Event} layerOrEvent\n */\n _layerClickListenerOn: function _layerClickListenerOn(layerOrEvent) {\n var layer = layerOrEvent.hasOwnProperty('layer') ? layerOrEvent.layer : layerOrEvent;\n layer.on('click', this._mouseClickHandler, this);\n },\n\n /**\n * @ignore\n * Detach the click event listener from the given layer.\n * @param {L.Layer} layer\n */\n _layerClickListenerOff: function _layerClickListenerOff(layer) {\n layer.off('click', this._mouseClickHandler, this);\n },\n\n /**\n * @ignore\n * Install click listeners on map and all its existing layers.\n */\n _startListenClicks: function _startListenClicks() {\n this._map.eachLayer(this._layerClickListenerOn, this);\n this._map.on('click', this._mouseClickHandler, this);\n this._map.on('layeradd', this._layerClickListenerOn, this);\n },\n\n /**\n * @ignore\n * Remove all the click listeners from map and its existing layers.\n */\n _stopListenClicks: function _stopListenClicks() {\n this._map.eachLayer(this._layerClickListenerOff, this);\n this._map.off('click', this._mouseClickHandler, this);\n this._map.off('layeradd', this._layerClickListenerOn, this);\n },\n\n /**\n * @ignore\n * Reference: https://leafletjs.com/reference-1.0.3.html#control-onadd\n * @param {L.Map} map\n * @return {HTMLElement} The control's container\n */\n onAdd: function onAdd(map) {\n this._unitService = map.getUnitService();\n this._unitService.on(L.UnitService.Events.UNIT_CHANGED, this._onMapMeasurementUnitChanged, this);\n this._controls = this._createControls();\n this._attachDomEventHandlersToControls();\n return this._controls.container;\n },\n\n /**\n * @ignore\n * Reference: https://leafletjs.com/reference-1.0.3.html#layer-onremove\n */\n onRemove: function onRemove() {\n this._unitService.off(L.UnitService.Events.UNIT_CHANGED, this._onMapMeasurementUnitChanged, this);\n this.deactivate();\n },\n\n /**\n * @ignore\n * This method is here to redraw the rulers only if the widget doesn't have a valid string in the\n * `unitScheme` option.\n */\n _onMapMeasurementUnitChanged: function _onMapMeasurementUnitChanged() {\n if (this._activeOptions && this._activeOptions.unitScheme === null) {\n this.redrawRulers();\n }\n },\n\n /**\n * Destroy and create again all the visible rulers with the current widget options.\n *\n * Useful when the options are changed and you need to apply them to all the previous measurements.\n *\n * @method redrawRulers\n */\n redrawRulers: function redrawRulers() {\n var that = this,\n activeLatLngs,\n lastPreviewLatLng;\n // Recreating active ruler\n if (this._activeRulerLayer) {\n activeLatLngs = this._activeRulerLayer.latLngs.slice(0);\n this._activeRulerLayer.remove();\n this._activeRulerLayer = null;\n this._startActiveRuler();\n this._activeRulerLayer.setLatLngs(activeLatLngs);\n }\n // Recreating preview ruler\n if (this._previewRulerSegment) {\n lastPreviewLatLng = this._previewRulerSegment.getLast();\n this._previewRulerSegment.remove();\n this._previewRulerSegment = null;\n this._redrawRulerPreviewSegment(lastPreviewLatLng);\n }\n // Recreating stacked rulers\n this._rulerLayerStack = this._rulerLayerStack.map(function (ruler) {\n var latLngs = ruler.latLngs.slice(0);\n var newRuler = that._createRuler();\n ruler.remove();\n newRuler.setLatLngs(latLngs);\n return newRuler.addTo(that._map);\n });\n },\n /**\n * @ignore\n * Creates a curated copy of the widget's options.\n * This copy is used across the measurement lifecycle.\n */\n _rebuildCuratedOptionsSnapshot: function _rebuildCuratedOptionsSnapshot() {\n this._activeOptions = L.Util.extend({}, this.options);\n\n if (Utils.isValidValue(this._activeOptions.unitScheme)) {\n if (this._supportedUnits.indexOf(this._activeOptions.unitScheme) === -1) {\n this._activeOptions.unitScheme = null;\n console.warn('The unit scheme given to distanceMeasurement widget is not valid');\n }\n }\n },\n /**\n * Returns the measurement unit that should be used priorizing the configuration given to this widget.\n *\n * This method doesn't validate the value of the option `unitScheme`.\n * @ignore\n * @return {String}\n */\n _getUnitScheme: function _getUnitScheme() {\n return this._activeOptions.unitScheme || this._unitService.getCurrentUnit().getLabel();\n },\n\n /**\n * Creates the leaflet layer where the ruler, markers and distance labels will use.\n * @ignore\n */\n _addDrawingLayer: function _addDrawingLayer() {\n this._removeDrawingLayer();\n this._layer = L.featureGroup().addTo(this._map);\n },\n\n _removeDrawingLayer: function _removeDrawingLayer() {\n if (this._layer) {\n this._layer.removeFrom(this._map);\n this._layer = null;\n }\n },\n\n /**\n * Activate the widget displaying the measurement controls and wait for the user to click over\n * the map to start the first measurement.\n *\n * This method is called automatically when the user press over the widget's main button.\n *\n * @method activate\n */\n activate: function activate() {\n var mapContainer = this._map.getContainer();\n\n if (this._disabled || this._isActivated) {\n return;\n }\n\n this._isActivated = true;\n\n L.DomUtil.addClass(mapContainer, this._classnames.mapContainer);\n L.DomUtil.addClass(this._controls.actionsButtons, this._classnames.actionsButtonsVisible);\n\n L.DomUtil.addClass(this._controls.container, this._classnames.containerActive);\n\n L.DomUtil.addClass(this._controls.onoffButton, this._classnames.onoffButtonEnabled);\n\n this._addDrawingLayer();\n\n this._disableConflictiveMapFeatures();\n\n this._startListenClicks();\n\n this.fire(L.DistanceMeasurement.Events.Activated);\n },\n\n /**\n * Deactivate the widget cleaning all the rulers over the map and hiding the measurement controls.\n *\n * If a measurement was in progress, it will be cancel first.\n *\n * @method deactivate\n */\n deactivate: function deactivate() {\n var mapContainer = this._map.getContainer();\n\n if (!this._isActivated) {\n return;\n }\n\n if (this._isMeasurementInProgress) {\n this._cancelMeasurement();\n }\n\n this._resetMeasurement();\n\n this._isActivated = false;\n\n L.DomUtil.removeClass(mapContainer, this._classnames.mapContainer);\n L.DomUtil.removeClass(this._controls.actionsButtons, this._classnames.actionsButtonsVisible);\n\n L.DomUtil.removeClass(this._controls.container, this._classnames.containerActive);\n\n L.DomUtil.removeClass(this._controls.onoffButton, this._classnames.onoffButtonEnabled);\n\n this._stopListenClicks();\n\n this._removeDrawingLayer();\n\n this._restoreConflictiveMapFeatures();\n\n this.fire(L.DistanceMeasurement.Events.Deactivated);\n\n // Re-focusing the map to restore keyboard navigation\n this._map.getContainer().focus();\n },\n\n /**\n * Activate or deactivate the widget depending of its current state.\n * @method toggleActivation\n * @chainable\n * @return {L.DistanceMeasurement}\n */\n toggleActivation: function toggleActivation() {\n if (this._isActivated) {\n this.deactivate();\n } else {\n this.activate();\n }\n return this;\n },\n\n /**\n * @ignore\n * Store the current active conflict map features status internally to be reactivate later when the widget\n * is deactivated.\n */\n _storeCurrentStatusOfConflictiveMapFeatures: function _storeCurrentStatusOfConflictiveMapFeatures() {\n this._previousStatusOfConflictiveFeatures = {\n doubleClickZoom: this._map.doubleClickZoom.enabled(),\n boxZoom: this._map.boxZoom.enabled(),\n keyboard: this._map.keyboard.enabled()\n };\n },\n\n /**\n * @ignore\n * Some map features are disabled during the measurement to avoid conflicts with this widget.\n * Those features should be reactivated when the widget is deactivated.\n */\n _disableConflictiveMapFeatures: function _disableConflictiveMapFeatures() {\n this._storeCurrentStatusOfConflictiveMapFeatures();\n this._map.doubleClickZoom.disable();\n this._map.boxZoom.disable();\n this._map.keyboard.disable();\n },\n\n /**\n * @ignore\n * Restore the map conflict features disabled by _disableConflictiveMapFeatures().\n * Only the features enabled before the activation of this widget will be reactivated.\n */\n _restoreConflictiveMapFeatures: function _restoreConflictiveMapFeatures() {\n if (this._previousStatusOfConflictiveFeatures !== null) {\n if (this._previousStatusOfConflictiveFeatures.doubleClickZoom) {\n this._map.doubleClickZoom.enable();\n }\n\n if (this._previousStatusOfConflictiveFeatures.boxZoom) {\n this._map.boxZoom.enable();\n }\n\n if (this._previousStatusOfConflictiveFeatures.keyboard) {\n this._map.keyboard.enable();\n }\n this._previousStatusOfConflictiveFeatures = null;\n }\n },\n\n /**\n * @ignore\n * Checks if two coordinates points to the same location.\n * @param {L.LatLng} firstLatLon\n * @param {L.LatLng} secondLatLon\n * @return {Boolean}\n */\n _equalLatLng: function _equalLatLng(firstLatLon, secondLatLon) {\n if (firstLatLon === secondLatLon) {\n return true;\n }\n if (firstLatLon && secondLatLon) {\n return firstLatLon.equals(secondLatLon);\n }\n return false;\n },\n\n /**\n * @ignore\n * Function called when the user does a click over the map while the widget is active.\n * @param {MouseEvent} event\n */\n _mouseClickHandler: function _mouseClickHandler(event) {\n var latLng = event.latlng;\n\n if (latLng === undefined) {\n return;\n }\n\n if (!this._isMeasurementInProgress) {\n this._startMeasurement(latLng);\n this._activeRulerLayer.addLatLng(latLng);\n } else {\n if (this._equalLatLng(this._activeRulerLayer.getLast(), latLng)) {\n return;\n }\n\n latLng = this._translateLatLngToAchieveClosestPath(latLng);\n\n this._redrawRulerPreviewSegment();\n this._activeRulerLayer.addLatLng(latLng);\n this._onChangeMeasurement(latLng);\n }\n },\n\n /**\n * Translate the coordinates horizontally if necessary to put them closer to the end of the current active\n * ruler.\n *\n * The active Ruler is an instance of MultiMeasurementRule which drawn several identical polylines at 360\n * longitude degrees of separation to show the same Ruler multiple times when one coordinate appears more\n * than once on the screen.\n *\n * Leaflet is not limited to 360 longitude degrees and it keeps increasing or decreasing the degrees until\n * is able to reutilize a \"world copy\" (the property \"worldCopyJump\" is set to true by default in this SDK\n * to accomplish that).\n * This means that, in the same map, the coordinates <0,10>, <-0,-350> and <0,370> all represent the exact\n * same place in the world but drawing a line between <0,10> and <0,11> will be very different to the line\n * between <0,10> and <0,371>.\n *\n * To avoid having very long polylines crossing the world, this method adds or subtracts 360 longitude\n * degrees to the given coordinates to put it closer (in pixels) to the last point of one of the active\n * ruler's polylines.\n *\n * @ignore\n * @param {L.LatLng} latLng\n * @return {L.LatLng}\n */\n _translateLatLngToAchieveClosestPath: function _translateLatLngToAchieveClosestPath(latLng) {\n var lastLatLng = this._activeRulerLayer.getLast(),\n closestLastLatLng = this._activeRulerLayer.getClosestLast(latLng),\n transOffsetDegrees = 360,\n times;\n\n if (Math.round(closestLastLatLng.lng) < Math.round(lastLatLng.lng)) {\n times = Math.ceil((lastLatLng.lng - closestLastLatLng.lng) / transOffsetDegrees);\n return L.latLng(latLng.lat, latLng.lng + transOffsetDegrees * times);\n } else if (Math.round(closestLastLatLng.lng) > Math.round(lastLatLng.lng)) {\n times = Math.ceil((closestLastLatLng.lng - lastLatLng.lng) / transOffsetDegrees);\n return L.latLng(latLng.lat, latLng.lng - transOffsetDegrees * times);\n }\n\n return latLng;\n },\n\n /**\n * @ignore\n * Update the temporal ruler segment line over the map.\n *\n * Calls to this function will be ignored if:\n * - There's no active ruler on the screen (distance zero).\n * - The coordinates given are undefined.\n * - The coordinates given are the same as the last coordinates of the ruler.\n *\n * @param {L.LatLng} [previewLatLng=undefined] End coordinates of the possible new segment. The start\n * coordinates will be taken from the active ruler coordinates.\n */\n _redrawRulerPreviewSegment: function _redrawRulerPreviewSegment(previewLatLng) {\n var lastLatLng,\n rulerOptions = {\n rulerClassname: [this._classnames.ruler, this._classnames.previewRuler].join(' '),\n labelClassname: [this._classnames.markerLabel, this._classnames.previewMarkerLabel].join(' '),\n markerColor: this._activeOptions.markerColor,\n lineColor: this._activeOptions.lineColor,\n distanceOffset: this._activeRulerLayer.distance,\n unitScheme: this._getUnitScheme(),\n useArc: this._activeOptions.useArc\n };\n\n if (previewLatLng) {\n lastLatLng = this._activeRulerLayer.getClosestLast(previewLatLng);\n }\n\n if (lastLatLng && previewLatLng && !this._equalLatLng(lastLatLng, previewLatLng)) {\n if (!this._previewRulerSegment) {\n this._previewRulerSegment = new MeasurementRuler(rulerOptions).addTo(this._layer);\n }\n this._previewRulerSegment.setLatLngs([lastLatLng, previewLatLng]);\n } else if (this._previewRulerSegment) {\n this._previewRulerSegment.remove();\n this._previewRulerSegment = null;\n }\n },\n\n /**\n * @ignore\n * Function called each time the cursor moves over the map.\n * @param {MouseEvent} event\n */\n _mouseMoveHandler: function _mouseMoveHandler(event) {\n this._redrawRulerPreviewSegment(event.latlng);\n },\n\n /**\n * @ignore\n * Creates a new ruler instance base it the widget options.\n * @param {L.LatLng} latLng\n * @return {L.MeasurementRuler}\n */\n _createRuler: function _createRuler() {\n var rulerOptions = {\n rulerClassname: this._classnames.ruler,\n labelClassname: this._classnames.markerLabel,\n markerColor: this._activeOptions.markerColor,\n lineColor: this._activeOptions.lineColor,\n unitScheme: this._getUnitScheme(),\n useArc: this._activeOptions.useArc\n };\n return new MultiMeasurementRuler(rulerOptions);\n },\n\n /**\n * Creates a new ruler and add it to the current map as an active ruler.\n * @ignore\n * @return {L.MeasurementRuler}\n */\n _startActiveRuler: function _startActiveRuler() {\n if (this._activeRulerLayer) {\n throw new Error('An active ruler already exist');\n }\n this._activeRulerLayer = this._createRuler().addTo(this._layer);\n return this._activeRulerLayer;\n },\n\n /**\n * Executed when the user does the first click over the map.\n * @ignore\n * @param {L.LatLng} latLng\n */\n _startMeasurement: function _startMeasurement(latLng) {\n this._rebuildCuratedOptionsSnapshot();\n\n this._startActiveRuler();\n\n this._isMeasurementInProgress = true;\n\n L.DomUtil.addClass(this._controls.container, this._classnames.containerInProgress);\n\n this.fire(L.DistanceMeasurement.Events.Started, latLng);\n\n this._map.on('mousemove', this._mouseMoveHandler, this);\n this._map.on('dblclick', this._finishMeasurement, this);\n },\n\n /**\n * @ignore\n * Executed when a new ruler segment is added to the path.\n * @param {L.LatLng} latLng New ruler segment end coordinates\n */\n _onChangeMeasurement: function _onChangeMeasurement(latLng) {\n this.fire(L.DistanceMeasurement.Events.Changed, {\n ruler: this._activeRulerLayer,\n newSegment: latLng,\n distance: this._activeRulerLayer.distance\n });\n },\n\n _stopMeasurement: function _stopMeasurement() {\n this._isMeasurementInProgress = false;\n\n L.DomUtil.removeClass(this._controls.container, this._classnames.containerInProgress);\n\n this._map.off('mousemove', this._mouseMoveHandler, this);\n this._map.off('dblclick', this._finishMeasurement, this);\n\n this._redrawRulerPreviewSegment();\n },\n\n /**\n * @ignore\n * Restart the measurement clearing also the ruler, markers and labels from\n * the map.\n */\n _resetMeasurement: function _resetMeasurement() {\n if (this._activeRulerLayer || this._rulerLayerStack.length > 0) {\n if (this._activeRulerLayer) {\n this._cancelMeasurement();\n }\n if (this._rulerLayerStack.length > 0) {\n this._rulerLayerStack.forEach(function (ruler) {\n ruler.remove();\n });\n this._rulerLayerStack = [];\n }\n this.fire(L.DistanceMeasurement.Events.Reset);\n }\n },\n\n _moveActiveRulerToStack: function _moveActiveRulerToStack() {\n this._rulerLayerStack.push(this._activeRulerLayer);\n this._activeRulerLayer = null;\n },\n\n /**\n * @ignore\n * Called when the user finish the measurement.\n */\n _finishMeasurement: function _finishMeasurement() {\n if (!this._isMeasurementInProgress) {\n return;\n }\n\n if (this._activeRulerLayer.distance === 0) {\n // If the ruler is empty, the measurement is considered INVALID\n this._cancelMeasurement();\n } else {\n this._stopMeasurement();\n this.fire(L.DistanceMeasurement.Events.Finished, {\n ruler: this._activeRulerLayer,\n distance: this._activeRulerLayer.distance\n });\n this._moveActiveRulerToStack();\n }\n },\n\n /**\n * @ignore\n * Called when the user decide to cancel a measurement in progress.\n */\n _cancelMeasurement: function _cancelMeasurement() {\n if (this._isMeasurementInProgress) {\n this._stopMeasurement();\n this._activeRulerLayer.remove();\n this._activeRulerLayer = null;\n this.fire(L.DistanceMeasurement.Events.Cancelled);\n }\n },\n\n /**\n * @ignore\n * Called when the user decide to cancel a measurement in progress or reset the\n * current finished measurement.\n */\n _cancelOrResetMeasurement: function _cancelOrResetMeasurement() {\n if (this._isMeasurementInProgress) {\n this._cancelMeasurement();\n } else {\n this._resetMeasurement();\n }\n },\n\n /**\n * Disables the widget's instance to not allowing user interaction.\n * @method disable\n * @chainable\n * @return {L.DistanceMeasurement}\n */\n disable: function disable() {\n if (!this._disabled) {\n this.deactivate();\n this._disabled = true;\n L.DomUtil.addClass(this._controls.onoffButton, this._classnames.onoffButtonDisabled);\n this.fire(L.DistanceMeasurement.Events.Disabled);\n }\n return this;\n },\n\n /**\n * Re-enables the widget if was previously disabled.\n * @method enable\n * @chainable\n * @return {L.DistanceMeasurement}\n */\n enable: function enable() {\n if (this._disabled) {\n this._disabled = false;\n L.DomUtil.removeClass(this._controls.onoffButton, this._classnames.onoffButtonDisabled);\n this.fire(L.DistanceMeasurement.Events.Enabled);\n }\n return this;\n }\n });\n\n return function (options) {\n var distanceMeasurement = new L.DistanceMeasurement(options);\n Utils.addDeprecatedProperty(distanceMeasurement, 'EVENTS', 'Events');\n return distanceMeasurement;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 189 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * @ignore\n * It create many instances of MeasurementRuler and place the copies to the sides with 360 degrees of\n * longitude difference between each one.\n * This module has almost the same methods of MeasurementRuler to easy implementation.\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(99)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, MeasurementRuler) {\n 'use strict';\n\n var MultiRuler = L.LayerGroup.extend({\n _rulers: [],\n initialize: function initialize(rulerOptions) {\n this._rulers = [];\n\n // One main rules and 4 clones (two to each side)\n this._createRuler(rulerOptions);\n this._createRuler(rulerOptions);\n this._createRuler(rulerOptions);\n this._createRuler(rulerOptions);\n this._createRuler(rulerOptions);\n L.LayerGroup.prototype.initialize.call(this, this._rulers);\n\n Object.defineProperty(this, 'options', {\n get: function get() {\n // Remember that all the rules should have the same configuration\n return this._rulers[0].options;\n }\n });\n\n Object.defineProperty(this, 'distance', {\n get: function get() {\n // Remember that all the rules should have the same distance\n return this._rulers[0].distance;\n }\n });\n\n Object.defineProperty(this, 'latLngs', {\n get: function get() {\n // Remember that all the rules should have the same properties\n return this._rulers[0].latLngs;\n }\n });\n },\n /**\n * @ignore\n * Adds a new segments to all the rules.\n * @param {L.LatLng} latLng\n */\n addLatLng: function addLatLng(latLng) {\n var i,\n offset = 360,\n len = this._rulers.length;\n this._rulers[0].addLatLng(latLng);\n for (i = 1; i + 1 < len; i = i + 2) {\n this._rulers[i].addLatLng(this._getLatLngWithLngOffset(latLng, -offset));\n this._rulers[i + 1].addLatLng(this._getLatLngWithLngOffset(latLng, offset));\n offset += 360;\n }\n },\n /**\n * @ignore\n * Set the ruler path to all the rules.\n * @param {L.LatLng[]} latLngs\n */\n setLatLngs: function setLatLngs(latLngs) {\n var i,\n offset = 360,\n len = this._rulers.length;\n this._rulers[0].setLatLngs(latLngs);\n for (i = 1; i + 1 < len; i = i + 2) {\n this._rulers[i].setLatLngs(this._getLatLngsWithLngOffset(latLngs, -offset));\n this._rulers[i + 1].setLatLngs(this._getLatLngsWithLngOffset(latLngs, offset));\n offset += 360;\n }\n },\n /**\n * @ignore\n * Returns the last coordinates added to the ruler.\n * @return {L.LatLng}\n */\n getLast: function getLast() {\n return this._rulers[0].getLast();\n },\n /**\n * @ignore\n * Returns the last coordinates of the closest ruler polyline to the given coordinates.\n * @param {L.LatLng} closerLatLng\n * @return {L.LatLng}\n */\n getClosestLast: function getClosestLast(closerLatLng) {\n var lastsLatLngs,\n closerPoint,\n map = this._map;\n\n closerPoint = map.latLngToContainerPoint(closerLatLng);\n\n lastsLatLngs = this._rulers\n // Creating a distances report\n .map(function (ruler) {\n var rulerLastLatLng = ruler.getLast(),\n rulerLastPoint = map.latLngToContainerPoint(rulerLastLatLng);\n return { latLng: rulerLastLatLng, distance: Math.round(rulerLastPoint.distanceTo(closerPoint)) };\n })\n // Sorting points from closest to furthers\n .sort(function (a, b) {\n return a.distance - b.distance;\n });\n\n if (lastsLatLngs.length > 0) {\n return lastsLatLngs[0].latLng;\n }\n\n return null;\n },\n _createRuler: function _createRuler(rulerOptions) {\n var ruler = new MeasurementRuler(rulerOptions);\n this._rulers.push(ruler);\n return ruler;\n },\n _getLatLngsWithLngOffset: function _getLatLngsWithLngOffset(latLngs, offset) {\n return latLngs.map(function (latLng) {\n return L.latLng(latLng.lat, latLng.lng + offset);\n });\n },\n _getLatLngWithLngOffset: function _getLatLngWithLngOffset(latLng, offset) {\n return L.latLng(latLng.lat, latLng.lng + offset);\n }\n });\n\n return MultiRuler;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 190 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This widget allows you to manage many search boxes.\n *\n * @class RouteInputs\n * @namespace L\n * @extends L.Control\n * @uses L.Evented\n * @module Widgets\n * @constructor\n * @param {Object} [options] Options to be passed to the routeInputs control\n * @param {Number} [options.searchBoxes=2] Number of searchBoxes to be created\n * @param {\"topright\"|\"topleft\"|\"bottomright\"|\"bottomleft\"} [options.position=\"topleft\"] Position of\n * the control on the map\n * @param {String} [options.location=L.RouteInputs.Location.Start] Definition of place of creation location control.\n * Should be equal to one of the values in the {{#crossLink \"L.RouteInputs/Location:property\"}}{{/crossLink}}\n * property.\n * @param {String} [options.enableSearchBoxesModifcation=false] Determines whether control should expose\n * functionality of adding or removing waypoints by internal controls\n * @param {String} [options.waypointPlacement=L.RouteInputs.WaypointPlacement.BeforeLast] Determines the place where\n * the new waypoint will added to.\n * Should be equal to one of the values in the\n * {{#crossLink \"L.RouteInputs/WaypointPlacement:property\"}}{{/crossLink}} property.\n * @param {Object} [options.searchOptions] Options for the {{#crossLink \"L.SearchBox\"}}{{/crossLink}} instances\n * @param {Object} [options.searchOptions.collapsible=false] Decide if the search boxes should be collapsed\n *\n * @example\n * ```javascript\n * // Route inputs with two search boxes and location control\n * var widget = new L.RouteInputs({\n * searchBoxes: 2,\n * location: L.RouteInputs.Location.Start\n * })\n * widget.addTo(map);\n * ```\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(0), __webpack_require__(97)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, utils) {\n 'use strict';\n\n var EVENTS = {\n LocationsFound: 'locationsFound',\n LocationsCleared: 'locationsCleared',\n LocationError: 'locationError'\n },\n LOCATION = {\n Start: 'start',\n End: 'end'\n },\n WAYPOINT_PLACEMENT = {\n Last: 'last',\n BeforeLast: 'beforeLast'\n };\n var routeInputConstructor;\n\n /**\n * @ignore\n * Returns the list of selected locations.\n * @return {Array}\n */\n function getLocationsFromSearchBoxes() {\n return this.searchBoxes.map(function (searchBox) {\n return searchBox.selectedLocation;\n });\n }\n\n function updateSearchBoxIcons() {\n var self = this;\n self.searchBoxes.forEach(function (searchBox, index) {\n var style = self.getIconClassName(index);\n searchBox.setIcon(style);\n });\n }\n\n function updateLocationButton() {\n var locationIconIndex;\n this.searchBoxes.forEach(function (searchBox) {\n searchBox.removeLocationIcon();\n });\n locationIconIndex = this.options.location === LOCATION.Start ? 0 : this.searchBoxes.length - 1;\n this.searchBoxes[locationIconIndex].addLocationIcon();\n }\n\n function showDeleteSearchBoxButton(searchBox) {\n if (searchBox.deleteIcon === undefined) {\n searchBox.deleteIcon = L.DomUtil.create('div', 'icon-trash-black leaflet-control-routeInputs-remove');\n searchBox._container.insertBefore(searchBox.deleteIcon, searchBox.resultsContainer);\n L.DomEvent.on(searchBox.deleteIcon, 'click', function () {\n this.removeInput(searchBox);\n }, this);\n }\n }\n\n function hideDeleteSearchBoxButton(searchBox) {\n if (searchBox.deleteIcon !== undefined) {\n searchBox.deleteIcon.parentNode.removeChild(searchBox.deleteIcon);\n searchBox.deleteIcon = undefined;\n }\n }\n\n function setVisibilityForDeleteButton(callback) {\n var i;\n for (i = 0; i < this.searchBoxes.length; i += 1) {\n callback.call(this, this.searchBoxes[i]);\n }\n }\n\n function updateDeleteSearchBoxButtons() {\n if (this.options.enableSearchBoxesModifcation === true) {\n if (this.searchBoxes.length === this.options.searchBoxes) {\n setVisibilityForDeleteButton.call(this, hideDeleteSearchBoxButton);\n } else {\n setVisibilityForDeleteButton.call(this, showDeleteSearchBoxButton);\n }\n }\n }\n\n function showInsertSearchBoxButton(container) {\n if (this.insertSearchBoxButton === undefined) {\n this.insertSearchBoxButton = L.DomUtil.create('div', 'icon-add-black leaflet-control-routeInputs-add', container || this.getContainer());\n L.DomEvent.on(this.insertSearchBoxButton, 'click', this.addInput, this);\n }\n }\n\n function hideInsertSearchBoxButton() {\n if (this.insertSearchBoxButton !== undefined) {\n L.DomEvent.off(this.insertSearchBoxButton, 'click', this.addInput);\n this.insertSearchBoxButton.parentNode.removeChild(this.insertSearchBoxButton);\n this.insertSearchBoxButton = undefined;\n }\n }\n\n function updateInsertSearchBoxButton() {\n var i;\n if (this.options.enableSearchBoxesModifcation === true) {\n for (i = 0; i < this.searchBoxes.length; i += 1) {\n if (this.searchBoxes[i].input.value.length === 0) {\n hideInsertSearchBoxButton.call(this);\n return;\n }\n }\n showInsertSearchBoxButton.call(this, null);\n }\n }\n\n L.RouteInputs = L.Control.extend({\n\n includes: L.Evented.prototype,\n\n statics: {\n Events: EVENTS,\n Location: LOCATION,\n WaypointPlacement: WAYPOINT_PLACEMENT\n },\n\n options: {\n searchBoxes: 2,\n position: 'topleft',\n location: LOCATION.Start,\n enableSearchBoxesModifcation: false,\n waypointPlacement: WAYPOINT_PLACEMENT.BeforeLast,\n searchOptions: {\n collapsible: false\n }\n },\n\n initialize: function initialize(options) {\n if (options !== undefined && options.searchOptions !== undefined) {\n utils.addFields(options.searchOptions, this.options.searchOptions);\n delete options.searchOptions;\n }\n L.Util.setOptions(this, options);\n this.searchBoxes = [];\n },\n\n onAdd: function onAdd() {\n var i,\n container = this.createContainer();\n this.searchBoxesContainer = L.DomUtil.create('div', 'leaflet-control-search-boxes', container);\n for (i = 0; i < this.options.searchBoxes; i += 1) {\n this.searchBoxes.push(this.createSearchBox(i));\n }\n return container;\n },\n\n /**\n * Method used to create the container for the search boxes.\n *\n * @method createContainer\n * @return {HTMLElement} Container for search boxes\n */\n createContainer: function createContainer() {\n var container = L.DomUtil.create('div', 'leaflet-control-routeInputs');\n L.DomEvent.disableClickPropagation(container);\n L.DomEvent.disableScrollPropagation(container);\n return container;\n },\n\n /**\n * Method used to get search box icon's class name, depending on its position (index).\n *\n * The returned class name should be added to the input.\n *\n * @method getIconClassName\n * @param {Number} index\n * @return {String}\n */\n getIconClassName: function getIconClassName(index) {\n var className = 'icon-flag-black',\n minimumBoxesAchieved = this.options.searchBoxes > this.searchBoxes.length,\n lastSearchBoxIndex = minimumBoxesAchieved ? this.options.searchBoxes - 1 : this.searchBoxes.length - 1;\n if (index === 0) {\n className = 'icon-start-black';\n } else if (index === lastSearchBoxIndex) {\n className = 'icon-end-black';\n }\n return className;\n },\n\n /**\n * Method used to initialize search box by adding element to the container and applying event handlers on\n * it.\n *\n * @method createSearchBox\n * @param {Number} index Index of the search box (starting from `0`)\n * @return {L.SearchBox} Modified search box object\n */\n createSearchBox: function createSearchBox(index) {\n var searchBoxInstance;\n var options = utils.clone(this.options.searchOptions);\n options.location = this.needsLocationIcon(index);\n options.icon = this.getIconClassName(index);\n options.searchOnDragEnd = 'open';\n searchBoxInstance = new L.SearchBox(options).addTo(this._map);\n\n this.searchBoxesContainer.insertBefore(searchBoxInstance.getContainer(), this.searchBoxesContainer.childNodes[index]);\n this.addSearchBoxEventHandlers(searchBoxInstance);\n return searchBoxInstance;\n },\n\n /**\n * Method used to remove given search box from the view by specific index.\n *\n * @method removeSearchBox\n * @param {Number} index Index of the search box (starting from `0`)\n * @return {L.SearchBox} Modified search box object\n */\n removeSearchBox: function removeSearchBox(index) {\n var searchBox = this.searchBoxesContainer.childNodes[index];\n searchBox.parentNode.removeChild(searchBox);\n return searchBox;\n },\n\n /**\n * Method used to check if search box needs location element.\n *\n * @method needsLocationIcon\n * @param {Number} searchBoxIndex Index of the given search box (starting from `0`)\n * @return {Boolean} Returns information of presence of location element\n */\n needsLocationIcon: function needsLocationIcon(searchBoxIndex) {\n var first = this.options.location === LOCATION.Start && searchBoxIndex === 0,\n last = this.options.location === LOCATION.End && searchBoxIndex === this.options.searchBoxes - 1;\n return first || last;\n },\n\n /**\n * Method used to add handlers for given search box. If obtaining user's current location fails,\n * {{#crossLink \"L.RouteInputs/LocationError:event\"}}{{/crossLink}} is fired.\n *\n * @method addSearchBoxEventHandlers\n * @param {L.SearchBox} searchBox Search box instance used to add handlers on it\n */\n addSearchBoxEventHandlers: function addSearchBoxEventHandlers(searchBox) {\n var that = this;\n searchBox.on(searchBox.Events.ResultClicked, function (eventObject) {\n that.onLocationChange(eventObject);\n });\n searchBox.on(searchBox.Events.ClearButtonClicked, function (eventObject) {\n that.onLocationChange(eventObject);\n updateInsertSearchBoxButton.call(that);\n });\n searchBox.on(searchBox.Events.SearchInputChanged, function () {\n updateInsertSearchBoxButton.call(that);\n });\n if (searchBox.getLocation()) {\n searchBox.getLocation().on(searchBox.getLocation().Events.LocationError, function (eventObject) {\n that.fire(this.Events.LocationError, eventObject);\n });\n }\n },\n\n /**\n * Method used to manage changing state of search boxes. Depending on the content of the searchBox, there might\n * be fired one of these two events:\n * - {{#crossLink \"L.RouteInputs/LocationsFound:event\"}}{{/crossLink}} or\n * - {{#crossLink \"L.RouteInputs/LocationsCleared:event\"}}{{/crossLink}}\n *\n * @method onLocationChange\n * @param {Object} eventObject Object that contains event's information\n * @param {L.SearchBox} eventObject.target Box instance\n * @param {Object} eventObject.data\n * @param {Number} eventObject.data.position Position of the box\n */\n onLocationChange: function onLocationChange(eventObject) {\n var searchBox = eventObject.target;\n searchBox.selectedLocation = eventObject.data ? eventObject.data.position : undefined;\n\n this.fire(eventObject.data ? this.Events.LocationsFound : this.Events.LocationsCleared, {\n points: getLocationsFromSearchBoxes.call(this)\n });\n },\n\n /**\n * Method used to show notification when looking for current location fails.\n *\n * @method showLocationNotFoundMessageBox\n */\n showLocationNotFoundMessageBox: function showLocationNotFoundMessageBox() {\n L.messageBox({ closeAfter: 1500 }).openOn(this._map).setContent('Could not find your location');\n },\n\n /**\n * Method used to add searchBox to the specific position (index).\n *\n * @method addInput\n * @param {Number} [index] Represents position where search box should be added to.\n * Not passing any index will cause adding a searchBox at the end of list or just before the last\n * search box.\n *\n * @example\n * ```javascript\n * var widget = new L.RouteInputs();\n * widget.addTo(map);\n * widget.addInput(0);\n * widget.addInput();\n * ```\n */\n addInput: function addInput(index) {\n if (!isFinite(index)) {\n index = this.searchBoxes.length;\n if (this.options.waypointPlacement === WAYPOINT_PLACEMENT.BeforeLast) {\n index -= 1;\n }\n }\n this.searchBoxes.splice(index, 0, this.createSearchBox(index));\n updateSearchBoxIcons.call(this);\n updateLocationButton.call(this);\n updateDeleteSearchBoxButtons.call(this);\n updateInsertSearchBoxButton.call(this);\n },\n\n /**\n * Method used to remove searchBox from the specific position (index).\n *\n * @method removeInput\n * @param {Number|L.SearchBox} searchBox The index of the searchBox to be deleted or the box instance itself\n *\n * @example\n * ```javascript\n * var widget = new L.RouteInputs();\n * widget.addTo(map)\n * widget.removeInput(0);\n * widget.removeInput();\n * ```\n */\n removeInput: function removeInput(searchBox) {\n var nodeList;\n if (searchBox === undefined) {\n searchBox = this.searchBoxes.length - 1;\n } else if ((typeof searchBox === 'undefined' ? 'undefined' : _typeof(searchBox)) === 'object') {\n nodeList = Array.prototype.slice.call(this.searchBoxesContainer.children);\n searchBox = nodeList.indexOf(searchBox.getContainer());\n }\n this.removeSearchBox(searchBox);\n this.searchBoxes.splice(searchBox, 1);\n updateSearchBoxIcons.call(this);\n updateLocationButton.call(this);\n updateDeleteSearchBoxButtons.call(this);\n updateInsertSearchBoxButton.call(this);\n\n this.fire(this.Events.LocationsCleared, { points: getLocationsFromSearchBoxes.call(this) });\n },\n\n /**\n * Event that is fired when locations in all searchBoxes are changing.\n *\n * @event LocationsFound\n * @param {Array} points Array of points that represents locations from all searchBoxes, even if they are\n * undefined.\n * @param {String} [type=\"locationsFound\"] Event's name\n * @param {Element} target Event's target.\n *\n * @example\n * ```javascript\n * var routeInputInstance = (new L.RouteInputs()).addTo(map);\n * routeInputInstance.on(L.RouteInputs.Events.LocationsFound, function (eventObject) {\n * console.log(eventObject.points);\n * });\n * ```\n */\n\n /**\n * Event that is fired when locations in all searchBoxes are being removed.\n *\n * @event LocationsCleared\n * @param {Array} points Array of points that represents locations from all searchBoxes, even if they are\n * undefined.\n * @param {String} [type=\"locationsCleared\"] Event's name\n * @param {Element} target Event's target.\n *\n * @example\n * ```javascript\n * var widget = new L.RouteInputs();\n * widget.addTo(map);\n * widget.on(L.RouteInputs.Events.LocationsCleared, function (eventObject) {\n * console.log(eventObject.points);\n * });\n * ```\n */\n\n /**\n * Event that is fired when obtaining user's current location fails.\n *\n * @event LocationError\n * @param {Object} eventObject All failure information\n * @param {String} [type=\"locationError\"] Event's name\n * @param {Element} target Event's target.\n *\n * @example\n * ```javascript\n * var widget = new L.RouteInputs();\n * widget.addTo(map);\n * widget.on(L.RouteInputs.Events.LocationError, function (eventObject) {\n * console.log(eventObject);\n * });\n * ```\n */\n Events: EVENTS\n });\n\n routeInputConstructor = function routeInputConstructor(options) {\n var routeInputs = new L.RouteInputs(options);\n utils.addDeprecatedProperty(routeInputs, 'Event', 'Events');\n return routeInputs;\n };\n\n /**\n * Determines the position that location icon will be added to.\n *\n * Possible options are:\n *\n * * `Location.Start` - location will be added to the first searchBox in the list.\n * * `Location.End` - location will be added to the last searchBox in the list.\n *\n * @property {Object} Location\n *\n * @example\n * ```javascript\n * var widget = new L.RouteInputs({\n * location: L.RouteInputs.Location.Start\n * });\n * widget.addTo(map);\n * ```\n */\n routeInputConstructor.Location = LOCATION;\n\n /**\n * Determines the position where waypoint will be added to.\n *\n * Possible options are:\n *\n * * `WaypointPlacement.BeforeLast` - new waypoint will be added before the last searchBox.\n * * `WaypointPlacement.Last` - new waypoint will be added as the last element in the list.\n *\n * @property {Object} WaypointPlacement\n *\n * @example\n * ```javascript\n * var widget = new L.RouteInputs({\n * waypointPlacement: L.RouteInputs.WaypointPlacement.BeforeLast\n * });\n * widget.addTo(map);\n * ```\n */\n routeInputConstructor.WaypointPlacement = WAYPOINT_PLACEMENT;\n\n return routeInputConstructor;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 191 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This widget displays a panel with route instructions over the map.\n * \n * This widget requires route data to work correcly. For more information please refer to our \n * \n * Routing example.\n *\n * @class RouteInstructions\n * @namespace L\n * @extends L.Control\n * @module Widgets\n * @constructor\n * @param {Object} [options] Options to configure the widget\n * @param {Number[]} [options.size=[320, 320]] Size of panel. The first element of the array is the width\n * and the second the maximum height. It will fit to the size of the instructions.\n * @param {\"topright\"|\"topleft\"|\"bottomright\"|\"bottomleft\"} [options.position=\"topleft\"] Location of the\n * widget\n * @param {Boolean} [options.instructionGroupsCollapsed=false] Should instruction groups be collapsed on init\n * @param {Boolean} [options.showInstructionGroups=true] Should instruction groups be displayed\n * @param {Boolean} [options.imperialDistance=null] Set this option if you want to use a specific unit\n * measurement system for the new instance of the widget instead of use the default unit\n *\n * @example\n * ```javascript\n * var routeInstructionsInstance = new L.RouteInstructions({\n * size: [270, 268],\n * position: \"topleft\"\n * })\n * routeInstructionsInstance.addTo(map);\n * ```\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(15), __webpack_require__(16), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, unitFormatConverter, unitTypes, Utils) {\n 'use strict';\n\n var EVENTS = {\n InstructionClickedSelect: 'instructionClickedSelect',\n InstructionClickedDeselect: 'instructionClickedDeselect',\n InstructionHoverOn: 'instructionHoverOn',\n InstructionHoverOff: 'instructionHoverOff',\n InstructionGroupClickedCollapse: 'instructionGroupClickedCollapse',\n InstructionGroupClickedExpand: 'instructionGroupClickedExpand',\n InstructionGroupHoverOn: 'instructionGroupHoverOn',\n InstructionGroupHoverOff: 'instructionGroupHoverOff'\n },\n CSS_CLASS_NAME = 'leaflet-control-route-instructions',\n MANOUVERS_WITH_LEFT_DRIVING_SIDE_VERSIONS = ['MAKE_UTURN', 'TRY_MAKE_UTURN', 'ROUNDABOUT_RIGHT', 'ROUNDABOUT_LEFT', 'ROUNDABOUT_CROSS', 'ROUNDABOUT_BACK'],\n iconsMap = {\n 'ARRIVE': 'icon-end-black',\n 'ARRIVE_LEFT': 'icon-end-black',\n 'ARRIVE_RIGHT': 'icon-end-black',\n 'DEPART': 'icon-start-black',\n 'STRAIGHT': 'icon-follow',\n 'KEEP_RIGHT': 'icon-keep_right',\n 'BEAR_RIGHT': 'icon-bear_right',\n 'TURN_RIGHT': 'icon-turn_right',\n 'SHARP_RIGHT': 'icon-sharp_right',\n 'KEEP_LEFT': 'icon-keep_left',\n 'BEAR_LEFT': 'icon-bear_left',\n 'TURN_LEFT': 'icon-turn_left',\n 'SHARP_LEFT': 'icon-sharp_left',\n 'MAKE_UTURN': 'icon-make_uturn',\n 'MAKE_UTURN_LEFT_DRIVING_SIDE': 'icon-make_uturn_left_driving_side',\n 'ENTER_MOTORWAY': 'icon-freeway',\n 'ENTER_FREEWAY': 'icon-freeway',\n 'ENTER_HIGHWAY': 'icon-freeway',\n 'TAKE_EXIT': 'icon-follow',\n 'MOTORWAY_EXIT_LEFT': 'icon-keep_left',\n 'MOTORWAY_EXIT_RIGHT': 'icon-keep_right',\n 'TAKE_FERRY': 'icon-ferry',\n 'ROUNDABOUT_CROSS': 'icon-roundabout_cross',\n 'ROUNDABOUT_CROSS_45': 'icon-roundabout_cross_45',\n 'ROUNDABOUT_RIGHT_135': 'icon-roundabout_right_135',\n 'ROUNDABOUT_CROSS_MINUS_45': 'icon-roundabout_cross_minus_45',\n 'ROUNDABOUT_LEFT_MINUS_135': 'icon-roundabout_left_minus_135',\n 'ROUNDABOUT_RIGHT': 'icon-roundabout_right',\n 'ROUNDABOUT_LEFT': 'icon-roundabout_left',\n 'ROUNDABOUT_BACK': 'icon-roundabout_back',\n 'TRY_MAKE_UTURN': 'make_uturn',\n 'TRY_MAKE_UTURN_LEFT_DRIVING_SIDE': 'icon-make_uturn_left_driving_side',\n 'ROUNDABOUT_CROSS_LEFT_DRIVING_SIDE': 'icon-roundabout_cross_left_driving_side',\n 'ROUNDABOUT_CROSS_45_LEFT_DRIVING_SIDE': 'icon-roundabout_cross_45_left_driving_side',\n 'ROUNDABOUT_RIGHT_135_LEFT_DRIVING_SIDE': 'icon-roundabout_right_135_left_driving_side',\n 'ROUNDABOUT_CROSS_MINUS_45_LEFT_DRIVING_SIDE': 'icon-roundabout_cross_minus_45_left_driving_side',\n 'ROUNDABOUT_LEFT_MINUS_135_LEFT_DRIVING_SIDE': 'icon-roundabout_left_minus_135_left_driving_side',\n 'ROUNDABOUT_RIGHT_LEFT_DRIVING_SIDE': 'icon-roundabout_right_left_driving_side',\n 'ROUNDABOUT_LEFT_LEFT_DRIVING_SIDE': 'icon-roundabout_left_left_driving_side',\n 'ROUNDABOUT_BACK_LEFT_DRIVING_SIDE': 'icon-roundabout_back_left_driving_side',\n 'FOLLOW': 'icon-follow',\n 'WAYPOINT_LEFT': 'icon-flag-black',\n 'WAYPOINT_RIGHT': 'icon-flag-black',\n 'WAYPOINT_REACHED': 'icon-flag-black'\n };\n\n /**\n * @ignore\n * @param {HTMLElement} control\n * @return {HTMLElement}\n */\n function createDOMElements(control) {\n var container = L.DomUtil.create('div', CSS_CLASS_NAME + ' leaflet-control');\n control.container = container;\n container.style.width = control.options.size[0] + 'px';\n container.style.maxHeight = control.options.size[1] + 'px';\n\n L.DomEvent.disableClickPropagation(container);\n L.DomEvent.disableScrollPropagation(container);\n\n container.style.visibility = 'hidden';\n\n return container;\n }\n\n /**\n * @ignore\n * @param {HTMLElement} control\n */\n function clearDOMElements(control) {\n control.container.innerHTML = '';\n }\n\n function createCollapseIconDiv(isInstructionGroupsCollapsed) {\n var collapseIconClass = isInstructionGroupsCollapsed ? 'icon-expand' : 'icon-collapse';\n return L.DomUtil.create('div', CSS_CLASS_NAME + '-collapse-icon ' + collapseIconClass);\n }\n\n function createGroupMessageDiv(instructionGroup) {\n var groupMessageDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-group-message');\n groupMessageDiv.innerHTML = instructionGroup.groupMessage;\n return groupMessageDiv;\n }\n\n function createSeparatorDiv(divToSeparate, instructionDistance, isImperialDistance, separatorCssClass, isInstructionGroup) {\n\n var separatorDistanceDiv, autoLengthSeparatorDiv, instructionSeparatorDiv, distanceDiv;\n if (instructionDistance === 0) {\n return;\n }\n separatorDistanceDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-separator-distance', divToSeparate);\n if (isInstructionGroup) {\n L.DomUtil.addClass(separatorDistanceDiv, CSS_CLASS_NAME + '-group-separator-distance');\n }\n autoLengthSeparatorDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-auto-length-separator', separatorDistanceDiv);\n instructionSeparatorDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-separator', autoLengthSeparatorDiv);\n L.DomUtil.addClass(instructionSeparatorDiv, separatorCssClass);\n distanceDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-distance', separatorDistanceDiv);\n distanceDiv.innerHTML = unitFormatConverter.formatDistance(instructionDistance, isImperialDistance);\n }\n\n function getIconPathKey(instruction) {\n var iconKey = instruction.maneuver;\n if (instruction.maneuver === 'ROUNDABOUT_CROSS') {\n if (instruction.turnAngleInDecimalDegrees >= 22 && instruction.turnAngleInDecimalDegrees <= 68) {\n iconKey += '_45';\n } else if (instruction.turnAngleInDecimalDegrees <= -22 && instruction.turnAngleInDecimalDegrees >= -68) {\n iconKey += '_MINUS_45';\n }\n }\n if (instruction.maneuver === 'ROUNDABOUT_RIGHT' && instruction.turnAngleInDecimalDegrees >= 122 && instruction.turnAngleInDecimalDegrees <= 158) {\n iconKey += '_135';\n }\n if (instruction.maneuver === 'ROUNDABOUT_LEFT' && instruction.turnAngleInDecimalDegrees >= -158 && instruction.turnAngleInDecimalDegrees <= -122) {\n iconKey += '_MINUS_135';\n }\n if (instruction.drivingSide === 'LEFT' && MANOUVERS_WITH_LEFT_DRIVING_SIDE_VERSIONS.indexOf(instruction.maneuver) !== -1) {\n iconKey += '_LEFT_DRIVING_SIDE';\n }\n return iconKey;\n }\n\n function createInstructionElement(instruction) {\n var messageDiv;\n var instructionElementDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-instruction-element');\n var messageWithIconDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-message-with-icon', instructionElementDiv);\n L.DomUtil.create('div', CSS_CLASS_NAME + '-icon ' + iconsMap[getIconPathKey(instruction)], messageWithIconDiv);\n messageDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-message', messageWithIconDiv);\n messageDiv.innerHTML = instruction.message;\n return instructionElementDiv;\n }\n\n function createEventObject(instructionPoints, instructionMessage) {\n var eventObject = {};\n if (instructionPoints.constructor.toString().indexOf('Array') > -1) {\n eventObject.points = instructionPoints;\n } else {\n eventObject.point = instructionPoints;\n }\n if (instructionMessage) {\n eventObject.message = instructionMessage;\n }\n\n return eventObject;\n }\n\n function toggleCssClasses(htmlElement, cssClassesArray) {\n cssClassesArray.forEach(function (className) {\n if (L.DomUtil.hasClass(htmlElement, className)) {\n L.DomUtil.removeClass(htmlElement, className);\n } else {\n L.DomUtil.addClass(htmlElement, className);\n }\n });\n }\n\n function deselectInstruction(container, selectedInstructionClass, control) {\n var selectedInstruction = container.getElementsByClassName(selectedInstructionClass)[0];\n if (selectedInstruction) {\n L.DomUtil.removeClass(selectedInstruction, selectedInstructionClass);\n control.fire(control.Events.InstructionClickedDeselect);\n }\n }\n\n function registerHandlersForInstruction(control, instructionElement, instruction) {\n L.DomEvent.on(instructionElement, 'mouseenter', function () {\n control.fire(control.Events.InstructionHoverOn, createEventObject(instruction.point, instruction.message));\n });\n L.DomEvent.on(instructionElement, 'mouseleave', function () {\n control.fire(control.Events.InstructionHoverOff);\n });\n L.DomEvent.on(instructionElement, 'click', function () {\n var selectedInstructionClass;\n control.container.focus();\n selectedInstructionClass = ['selected-instruction'];\n\n if (L.DomUtil.hasClass(instructionElement, selectedInstructionClass)) {\n control.fire(control.Events.InstructionClickedDeselect);\n } else {\n deselectInstruction(control.container, selectedInstructionClass, control);\n control.fire(control.Events.InstructionClickedSelect, createEventObject(instruction.point, instruction.message));\n }\n\n toggleCssClasses(instructionElement, selectedInstructionClass);\n });\n }\n\n function createInstructions(control, divForInstructions, instructionList, instructionNextToGroup) {\n var nextInstructionOffset = 0;\n var instructionPoints = [];\n var instructionIndex,\n currentInstruction,\n nextInstruction,\n instructionElementDiv,\n separatorCssClassName,\n isImperialDistance = control._shouldUseImperialDistance();\n\n for (instructionIndex = 0; instructionIndex < instructionList.length; instructionIndex += 1) {\n currentInstruction = instructionList[instructionIndex];\n instructionPoints.push(currentInstruction.point);\n nextInstruction = instructionList[instructionIndex + 1];\n instructionElementDiv = createInstructionElement(currentInstruction);\n divForInstructions.appendChild(instructionElementDiv);\n separatorCssClassName = 'separator-between-instructions';\n\n if (nextInstruction !== undefined) {\n nextInstructionOffset = nextInstruction.routeOffsetInMeters;\n } else if (instructionNextToGroup) {\n nextInstructionOffset = instructionNextToGroup.routeOffsetInMeters;\n separatorCssClassName = 'separator-end-group';\n }\n\n createSeparatorDiv(instructionElementDiv, nextInstructionOffset - currentInstruction.routeOffsetInMeters, isImperialDistance, separatorCssClassName, false);\n registerHandlersForInstruction(control, instructionElementDiv, currentInstruction);\n }\n\n return instructionPoints;\n }\n\n function registerHandlersForGroup(params) {\n L.DomEvent.on(params.groupElementDiv, 'mouseenter', function () {\n params.control.fire(params.control.Events.InstructionGroupHoverOn, createEventObject(params.groupedInstructionPoints, params.groupMessage));\n });\n L.DomEvent.on(params.groupElementDiv, 'mouseleave', function () {\n params.control.fire(params.control.Events.InstructionGroupHoverOff);\n });\n L.DomEvent.on(params.groupElementDiv, 'click', function () {\n var separator;\n params.control.container.focus();\n separator = params.groupElementDiv.getElementsByClassName('leaflet-control-route-instructions-separator')[0];\n toggleCssClasses(separator, ['separator-between-instructions', 'separator-end-group']);\n toggleCssClasses(params.collapseIconDiv, ['icon-collapse', 'icon-expand']);\n\n if (params.groupedInstructionsDiv.style.display === 'none') {\n params.groupedInstructionsDiv.style.display = '';\n params.control.fire(params.control.Events.InstructionGroupClickedExpand, createEventObject(params.groupedInstructionPoints, null));\n } else {\n params.groupedInstructionsDiv.style.display = 'none';\n params.control.fire(params.control.Events.InstructionGroupClickedCollapse, createEventObject(params.allInstructionsPoints, null));\n }\n });\n }\n\n /**\n * @ignore\n * @param {HTMLElement} control\n * @param {Object} guidance\n */\n function createInstructionsWithGroups(control, guidance) {\n var container = control.container;\n var allInstructionsPoints = [];\n var instructionIndex,\n groupIndex,\n instructionGroup,\n groupElementDiv,\n groupedInstructionsDiv,\n groupMessageWithIconDiv,\n collapseIconDiv,\n groupMessageDiv,\n separatorCssClassName,\n instructionListForGroup,\n groupedInstructionPoints,\n isImperialDistance = control._shouldUseImperialDistance();\n\n for (instructionIndex = 0; instructionIndex < guidance.instructions.length; instructionIndex += 1) {\n allInstructionsPoints.push(guidance.instructions[instructionIndex].point);\n }\n\n for (groupIndex = 0; groupIndex < guidance.instructionGroups.length; groupIndex += 1) {\n instructionGroup = guidance.instructionGroups[groupIndex];\n groupElementDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-group-element', container);\n groupedInstructionsDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-grouped-instructions', container);\n\n groupMessageWithIconDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-group-message-with-icon', groupElementDiv);\n collapseIconDiv = createCollapseIconDiv(control.options.instructionGroupsCollapsed);\n groupMessageDiv = createGroupMessageDiv(instructionGroup);\n groupMessageWithIconDiv.appendChild(collapseIconDiv);\n groupMessageWithIconDiv.appendChild(groupMessageDiv);\n\n separatorCssClassName = control.options.instructionGroupsCollapsed ? 'separator-end-group' : 'separator-between-instructions';\n createSeparatorDiv(groupElementDiv, instructionGroup.groupLengthInMeters, isImperialDistance, separatorCssClassName, true);\n\n instructionListForGroup = guidance.instructions.slice(instructionGroup.firstInstructionIndex, instructionGroup.lastInstructionIndex + 1);\n groupedInstructionPoints = createInstructions(control, groupedInstructionsDiv, instructionListForGroup, guidance.instructions[instructionGroup.lastInstructionIndex + 1]);\n\n registerHandlersForGroup({\n control: control,\n groupElementDiv: groupElementDiv,\n groupMessage: instructionGroup.groupMessage,\n groupedInstructionPoints: groupedInstructionPoints,\n collapseIconDiv: collapseIconDiv,\n groupedInstructionsDiv: groupedInstructionsDiv,\n allInstructionsPoints: allInstructionsPoints\n });\n\n if (control.options.instructionGroupsCollapsed) {\n groupedInstructionsDiv.style.display = 'none';\n }\n }\n }\n\n /**\n * @ignore\n * @param {HTMLElement} control\n */\n function updateDOMElements(control) {\n clearDOMElements(control);\n if (control.options.showInstructionGroups) {\n createInstructionsWithGroups(control, control.guidanceData);\n } else {\n createInstructions(control, control.container, control.guidanceData.instructions, null);\n }\n }\n\n function handleUnitChange(event) {\n this.options.imperialDistance = event.unit === 'imperial';\n this._redraw(true);\n }\n\n L.RouteInstructions = L.Control.extend({\n\n includes: L.Evented.prototype,\n\n statics: {\n Events: EVENTS\n },\n\n options: {\n size: [320, 320],\n position: 'topleft',\n instructionGroupsCollapsed: false,\n showInstructionGroups: true,\n imperialDistance: null\n },\n\n /**\n * Leaflet init method executed when adding control to map.\n *\n * Options will be stored inside control.\n *\n * @ignore\n * @method initialize\n * @param {Object} [options] Options to setup control.\n */\n initialize: function initialize(options) {\n L.Util.setOptions(this, options);\n },\n\n /**\n * Leaflet method executed when adding control to map.\n * Map will be stored inside control.\n *\n * @ignore\n * @method onAdd\n * @param {L.Map} map\n * @return {HTMLElement} The main HTML element containing the widget.\n */\n onAdd: function onAdd(map) {\n this.unitService = map.getUnitService();\n this.unitService.on(L.UnitService.Events.UNIT_CHANGED, handleUnitChange, this);\n return createDOMElements(this);\n },\n\n onRemove: function onRemove() {\n this.unitService.off(L.UnitService.Events.UNIT_CHANGED, handleUnitChange, this);\n },\n\n /**\n * Shows route instructions.\n *\n * By default the instructions will be hidden.\n * Use this method to show the control after data is ready.\n *\n * @method show\n */\n show: function show() {\n if (this.guidanceData) {\n this.container.style.visibility = '';\n }\n },\n\n /**\n * Hides the route instructions.\n *\n * By default instructions will be hidden.\n *\n * @method hide\n */\n hide: function hide() {\n this.container.style.visibility = 'hidden';\n },\n\n /**\n * @ignore\n * First check the configuration for this instance and then the global configuration.\n * The instance configuration has priority.\n *\n * @return {Boolean}\n */\n _shouldUseImperialDistance: function _shouldUseImperialDistance() {\n if (typeof this.options.imperialDistance === 'boolean') {\n return this.options.imperialDistance;\n }\n if (typeof this.isImperialDistance === 'boolean') {\n return this.isImperialDistance;\n }\n return this.unitService.getCurrentUnit().getLabel() === unitTypes.imperial;\n },\n\n _redraw: function _redraw() {\n if (this.guidanceData) {\n updateDOMElements(this);\n this.show();\n } else {\n this.hide();\n }\n },\n\n /**\n * Display the route instructions or update the already displayed content.\n *\n * This method should be called to update the instructions displayed after each route calculation.\n *\n * @method updateGuidanceData\n * @param {Object} guidanceData The routing properties object containing instruction groups\n * and instructions.\n * @param {Boolean} [imperial] Display distance using imperial units\n */\n updateGuidanceData: function updateGuidanceData(guidanceData, imperial) {\n this.guidanceData = guidanceData || this.guidanceData;\n this.isImperialDistance = imperial;\n this._redraw();\n },\n\n /**\n * Method to show instructions with groups if there are any.\n * @method showInstructionGroups\n */\n showInstructionGroups: function showInstructionGroups() {\n if (this.guidanceData && !this.options.showInstructionGroups) {\n this.options.showInstructionGroups = true;\n updateDOMElements(this);\n }\n },\n\n /**\n * Method to hide instructions groups.\n *\n * Use this method to disable groups. Only instructions will be visible.\n * @method hideInstructionGroups\n */\n hideInstructionGroups: function hideInstructionGroups() {\n if (this.guidanceData && this.options.showInstructionGroups) {\n this.options.showInstructionGroups = false;\n updateDOMElements(this);\n }\n },\n\n /**\n * Event that is fired when instruction is clicked and is not selected.\n *\n * In this case clicked instruction will\n * be marked as selected (selected-instruction css class will be added).\n * If any other instruction is selected,\n * it will be deselect.\n *\n * @event InstructionClickedSelect\n * @param {Object} point Object of point that represents latitude and longitude of instruction location\n * @param {String} message Instruction message\n * @param {String} [type=\"instructionClickedDeselect\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.RouteInstructions())).addTo(map);\n * widget.on(L.RouteInstructions.Events.InstructionClickedSelect, function(event) {\n * console.log(event);\n * });\n * ```\n */\n /**\n * Event that is fired when instruction is clicked and is selected. In this case clicked instruction will\n * be deselect (selected-instruction css class will be removed).\n *\n * @event InstructionClickedDeselect\n * @param {String} [type=\"instructionClickedDeselect\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.RouteInstructions())).addTo(map);\n * widget.on(L.RouteInstructions.Events.InstructionClickedDeselect, function(event) {\n * console.log(event);\n * });\n * ```\n */\n /**\n * Event that is fired when cursor is moving into instruction.\n *\n * @event InstructionHoverOn\n * @param {Object} point Object of point that represents latitude and longitude of instruction location\n * @param {String} message Instruction message\n * @param {String} [type=\"instructionHoverOn\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.RouteInstructions())).addTo(map);\n * widget.on(L.RouteInstructions.Events.InstructionHoverOn, function(event) {\n * console.log(event);\n * });\n * ```\n */\n /**\n * Event that is fired when cursor is moving out of instruction.\n *\n * @event InstructionHoverOff\n * @param {String} [type=\"instructionHoverOff\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.RouteInstructions())).addTo(map);\n * widget.on(L.RouteInstructions.Events.InstructionHoverOff, function(event) {\n * console.log(event);\n * });\n * ```\n */\n /**\n * Event that is fired when group of instructions is clicking and related instructions are collapsing.\n *\n * @event InstructionGroupClickedCollapse\n * @param {Object} points Object with points that represents latitude and longitude of all instruction\n * locations in route\n * @param {String} [type=\"instructionGroupClickedCollapse\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.RouteInstructions())).addTo(map);\n * widget.on(L.RouteInstructions.Events.InstructionGroupClickedCollapse, function(event) {\n * console.log(event);\n * });\n * ```\n */\n /**\n * Event that is fired when group of instructions is clicking and related instructions are expanding.\n *\n * @event InstructionGroupClickedExpand\n * @param {Object} points Object with points that represents latitude and longitude of all instruction\n * locations in group\n * @param {String} [type=\"instructionGroupClickedExpand\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.RouteInstructions())).addTo(map);\n * widget.on(L.RouteInstructions.Events.InstructionGroupClickedExpand, function(event) {\n * console.log(event);\n * });\n * ```\n */\n /**\n * Event that is fired when cursor is moving into group of instructions.\n *\n * @event InstructionGroupHoverOn\n * @param {Array} points Array of objects that contains points (latitude and longitude) of all instructions\n * from this group\n * @param {String} message Group message\n * @param {String} [type=\"instructionGroupHoverOn\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.RouteInstructions())).addTo(map);\n * widget.on(L.RouteInstructions.Events.InstructionGroupHoverOn, function(event) {\n * console.log(event);\n * });\n * ```\n */\n /**\n * Event that is fired when cursor is moving out of group of instructions.\n *\n * @event InstructionGroupHoverOff\n * @param {String} [type=\"instructionGroupHoverOff\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.RouteInstructions())).addTo(map);\n * widget.on(L.RouteInstructions.Events.InstructionGroupHoverOff, function(event) {\n * console.log(event);\n * });\n * ```\n */\n Events: EVENTS\n });\n\n return function (options) {\n var routeInstructions = new L.RouteInstructions(options);\n Utils.addDeprecatedProperty(routeInstructions, 'Event', 'Events');\n\n return routeInstructions;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 192 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This module helps you to create a unit measurement selector.\n *\n * @class UnitSelector\n * @static\n * @namespace L\n * @extends Object\n * @module Widgets\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L) {\n 'use strict';\n\n function onPropertyChange(e) {\n var value = e.target.options[e.target.selectedIndex].value;\n this.unitService.setCurrentUnit(value);\n }\n\n function addOptions(select, values) {\n var option;\n values.forEach(function (value) {\n option = document.createElement('option');\n option.text = value.getLabel();\n option.value = value.getLabel();\n select.add(option);\n });\n }\n\n function setCurrentUnit(select) {\n var i;\n var currentUnit = select.unitService.getCurrentUnit();\n var unitVal = currentUnit.getLabel();\n for (i = 0; i < select.options.length; ++i) {\n if (select.options[i].value === unitVal) {\n select.selectedIndex = i;\n }\n }\n }\n\n return {\n /**\n * Returns a {{#crossLink \"HTMLSelectElement\"}}{{/crossLink}} filled with the supported measurement units.\n *\n * The element has a function bound to its onchange event, which updates the units configuration\n * of the {{#crossLink \"UnitService\"}}{{/crossLink}} instance given as argument.\n *\n * @method getHtmlElement\n * @param {UnitService} unitService Unit service instance which will be bound to the generated dropdown.\n * That means, that if you change value in this select, bound unitService will be updated.\n * @return {HTMLSelectElement}\n */\n getHtmlElement: function getHtmlElement(unitService) {\n var select;\n if (!unitService) {\n console.error('Unit service not passed to unitSelector!');\n return undefined;\n }\n select = document.createElement('select');\n select.unitService = unitService;\n select.className = 'tomtom-unit-selector';\n addOptions(select, L.UnitService.getSupportedUnits());\n setCurrentUnit(select);\n select.onchange = onPropertyChange;\n return select;\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 193 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L) {\n function onPropertyChange(e) {\n this.geopolViewService.setCurrentGeopolView(e.target.value);\n }\n\n function addOptions(select, values) {\n var option;\n values.forEach(function (value) {\n option = document.createElement('option');\n option.text = value.getLabel();\n option.value = value.getCode();\n select.add(option);\n });\n }\n\n function setCurrentGeopolView(select) {\n var i;\n var geopolViewVal = select.geopolViewService.current.code;\n for (i = 0; i < select.options.length; ++i) {\n if (select.options[i].value === geopolViewVal) {\n select.selectedIndex = i;\n }\n }\n }\n /**\n * A module, which helps you to create language selector\n * @module Widgets\n * @class geopolViewSelector\n */\n return {\n /**\n * Options are set for supported geopolViews, onchange event has a bound function,\n * which updates global geopolView for the system (which is stored in GeopolViewService.\n * Refer to https://developer.mozilla.org/en/docs/Web/API/HTMLSelectElement for additional information.\n * @method getHtmlElement\n * @param {GeopolViewService} [geopolViewService] GeopolViewService which will be bound to this select element.\n * That means, that if you change value in this select, bound geopolViewService will be updated. You can provide\n * globalGeopolViewService or geopolViewServices which are bound to map instances.\n * @param {\"search\"|\"maps\"|\"geopolViewSelector\"} serviceType\n * @param {\"raster\"|\"vector\"} [subType] Used to specify the subType of a service,\n * @returns {HTMLSelectElement}\n */\n getHtmlElement: function getHtmlElement(geopolViewService, serviceType, subType) {\n var select;\n if (!geopolViewService) {\n console.error('GeopolViewService not passed to geopolViewSelector!');\n return undefined;\n }\n select = document.createElement('select');\n select.geopolViewService = geopolViewService;\n select.className = 'tomtom-geopol-view-selector';\n addOptions(select, L.GeopolViewService.getSupportedViews(serviceType, subType));\n setCurrentGeopolView(select);\n select.addEventListener('change', onPropertyChange);\n return select;\n }\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 194 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * The MarkersLayer allows you to display search service results on a map. It is based on Leaflet's\n * [marker cluster plugin](https://github.com/Leaflet/Leaflet.markercluster).\n *\n * The default plugin functionality is enhanced for handling TomTom services responses and\n * {{#crossLink \"L.SearchBox\"}}{{/crossLink}} widget events.\n *\n * @example\n * ```javascript\n * tomtom.key(\"\");\n * tomtom.searchKey(\"\");\n * \n * var map = tomtom.map(\"map\");\n * var searchBoxInstance = (new L.SearchBox()).addTo(map);\n * var markersLayer = (new L.MarkersLayer()).addTo(map);\n *\n * searchBoxInstance.on(L.SearchBox.Events.ResultsFound, function (results) {\n * markersLayer.clearLayers();\n * markersLayer.add(results);\n * });\n * ```\n *\n * @deprecated Please use the\n * TomTomMarkersLayer class instead.\n * @class MarkersLayer\n * @namespace L\n * @module Widgets\n * @extends L.MarkerClusterGroup\n * @constructor\n * @param {Object} [options]\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(93)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L) {\n 'use strict';\n\n function isArray(array) {\n return array && array.constructor.toString().indexOf('Array') > -1;\n }\n\n function hasDataArray(points) {\n return (typeof points === 'undefined' ? 'undefined' : _typeof(points)) === 'object' && isArray(points.data);\n }\n\n function convertPoints(points) {\n if (hasDataArray(points)) {\n return points.data;\n }\n if (isArray(points)) {\n return points;\n }\n return [points];\n }\n\n function getFreeFormAddress(object) {\n return object.address ? object.address.freeformAddress : null;\n }\n\n function getTextContent(object) {\n return object.element ? object.element.textContent : null;\n }\n\n function oneOf(first, second, third) {\n return first || second || third;\n }\n\n function getPoiName(object) {\n if (object.poi && object.poi.name) {\n return object.poi.name + ' ';\n }\n return '';\n }\n\n function getText(object) {\n var freeformAddress = getFreeFormAddress(object),\n textContent = getTextContent(object),\n text = oneOf(object.text, freeformAddress, textContent),\n poiName = getPoiName(object);\n return poiName + text;\n }\n\n function hadDataPosition(object) {\n return object.data && object.data.position;\n }\n\n function getObjectType(object) {\n return object.data ? object.data.type : object.type || 'unknown';\n }\n\n function getPointGeometry(object) {\n var result = {},\n poiObject;\n if (isArray(object.point)) {\n result.position = { lat: object.point[0], lng: object.point[1] };\n } else if (object.position) {\n result.position = { lat: object.position.lat, lng: object.position.lon };\n } else if (hadDataPosition(object)) {\n result.position = { lat: object.data.position.lat, lng: object.data.position.lon };\n }\n result.type = getObjectType(object.data || object);\n\n poiObject = (object.data || object).poi;\n if (poiObject) {\n if (poiObject.categories) {\n result.poiCategories = poiObject.categories;\n }\n\n if (poiObject.classifications) {\n result.poiClassifications = poiObject.classifications;\n }\n }\n\n return result;\n }\n\n function convertPoint(object) {\n var result, text;\n if (!object) {\n return {};\n }\n result = getPointGeometry(object);\n text = getText(object);\n\n if (text) {\n result.text = text;\n }\n return result;\n }\n\n function isEachIconAFunction(options) {\n return options && options.eachIcon && typeof options.eachIcon === 'function';\n }\n\n function createMarker(object, options) {\n var point = convertPoint(object);\n var marker;\n if (!point || !point.position) {\n return null;\n }\n if (isEachIconAFunction(options)) {\n options.icon = options.eachIcon(point);\n }\n marker = L.marker(point.position, options);\n if (point.text) {\n marker.bindPopup(point.text);\n }\n return marker;\n }\n\n L.MarkersLayer = L.MarkerClusterGroup.extend({\n _onMapUnload: function _onMapUnload() {\n this._mapUnloads = true;\n },\n onAdd: function onAdd(map) {\n L.MarkerClusterGroup.prototype.onAdd.apply(this, arguments);\n map.on('unload', this._onMapUnload, this);\n },\n onRemove: function onRemove(map) {\n L.MarkerClusterGroup.prototype.onRemove.apply(this, arguments);\n map.off('unload', this._onMapUnload, this);\n },\n /**\n * Clear all the markers.\n *\n * It is equivalent of {{#crossLink \"L.LayerGroup\"}}{{/crossLink}}'s clearLayers method.\n *\n * @method remove\n * @chainable\n * @return {L.MarkersLayer}\n */\n remove: function remove() {\n if (this._mapUnloads) {\n return L.MarkerClusterGroup.prototype.remove.apply(this, arguments);\n }\n this.clearLayers();\n return this;\n },\n /**\n * Method used to add new markers based on the TomTom search service response.\n *\n * [Further reference](http://leafletjs.com/reference-${leaflet.version}.html#marker-options)\n *\n * @method add\n * @chainable\n * @param {Object} points The response from search service or event from searchBox widget.\n * @param {Object} [options] The options to be used when creating a marker.\n * @param {Function} [options.eachIcon] The function called to create each icon. It has one argument which is\n * the point - object containing text, position, type,\n * poiCategories (deprecated, use poiClassifications) if the type is _poi_,\n * and poiClassifications if the type is _poi_\n * @return {L.MarkersLayer}\n */\n add: function add(points, options) {\n var data = convertPoints(points),\n i,\n marker;\n for (i = 0; i < data.length; i += 1) {\n marker = createMarker(data[i], options);\n if (marker) {\n this.addLayer(marker);\n }\n }\n return this;\n }\n });\n\n return function (options) {\n return new L.MarkersLayer(options);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 195 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * The RouteOnMap view allows you to display a route on the map.\n * \n * This widget requires route data to work correcly. For more information please refer to our \n * \n * Routing example.\n *\n * @class RouteOnMap\n * @namespace L\n * @extends L.LayerGroup\n * @module Widgets\n * @uses L.Evented\n * @constructor\n * @param {Object} [options] Options to be passed to the routing view\n * @param {Object} [options.generalMarker] General marker options that applies on all markers\n * @param {L.Icon} [options.generalMarker.icon=default] Default icon for every marker\n * @param {Boolean} [options.generalMarker.draggable=false] Determines default drag behaviour for every marker\n * @param {Object} [options.startMarker] Marker options for starting marker\n * @param {L.Icon} [options.startMarker.icon=default] Icon for start marker\n * @param {Boolean} [options.startMarker.draggable=false] Determines whether start marker should be draggable\n * @param {Object} [options.waypointMarker] Marker options for markers between start and end points\n * @param {L.Icon} [options.waypointMarker.icon=default] Icon for markers between start and end points\n * @param {Boolean} [options.waypointMarker.draggable=false] Determines whether start marker should be draggable\n * @param {Object} [options.endMarker] Marker options for end marker\n * @param {L.Icon} [options.endMarker.icon=default] Icon for end marker\n * @param {Boolean} [options.endMarker.draggable=false] Determines whether end marker should be draggable\n * @param {\"topleft\"|\"topright\"|\"bottomleft\"|\"bottomright\"} [options.position=\"topleft\"]\n * @param {Object} [options.routeStyle={color: '#00d7ff', opacity: 0.8}] A style object used for drawing the\n * polyline route. All the L.Path\n * options are accepted.\n * @param {Object[]} [options.alternativeStyles=[{color: '#ff00d2', opacity: 0.8}, {color: '#b922ff',opacity: 0.8}]]\n * If the option to display alternatives is passed to the service options then there is a need to pass array of\n * L.Path style's options for each\n * alternative route\n * @param {Number} [options.routingDelay=1000] Determines the time in milliseconds that within routing service will\n * be called. Used when user is dragging a marker\n * @param {Function} [options.onEachFeature] A function that will be called for each feature, it takes feature\n * and layer as the attributes. Can be used in example to bind popup to the route\n * @param {Object} [options.serviceOptions] Options to be passed to the routing service. For details check\n * routingService documentation\n *\n * @example\n * ```javascript\n * var routeOnMapView = new L.RouteOnMap({\n * generalMarker: {\n * draggable: true\n * },\n * startMarker: {\n * background: {\n * iconSize: [30, 36],\n * iconAnchor: [15, 36],\n * icon: 'marker'\n * },\n * icon: {\n * iconSize: [30, 30],\n * iconAnchor: [0, 0],\n * icon: 'flag-white'\n * },\n * },\n * waypointMarker: {\n * icon: L.icon({\n * iconUrl: 'waypoint.png',\n * iconSize: [30, 30],\n * iconAnchor: [15, 15]\n * })\n * },\n * endMarker: {\n * icon: L.icon({\n * iconUrl: 'end.png',\n * iconSize: [30, 30],\n * iconAnchor: [15, 15]\n * })\n * },\n * routeStyle: {\n * color: \"#00d7ff\",\n * opacity: 0.8\n * }\n * });\n * routeOnMapView.addTo(map);\n * ```\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(40), __webpack_require__(25), __webpack_require__(4), __webpack_require__(0)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, routingService, reverseGeocodeService, converters, utils) {\n 'use strict';\n\n var EVENTS = {\n MarkerDragEnd: 'markerDragEnd',\n Draw: 'draw',\n RouteChanged: 'routeChanged',\n RouteNotFound: 'routeNotFound'\n };\n\n /**\n * @param {String} [type]\n * @return {Object}\n */\n function createMarkerIcon(type) {\n var generalMarkerIcon = {\n background: {\n iconSize: L.Browser.retina ? [34, 34] : [20, 20],\n iconAnchor: L.Browser.retina ? [17, 17] : [10, 10],\n icon: 'icon-shield'\n },\n icon: {\n iconSize: L.Browser.retina ? [30, 30] : [18, 18],\n iconAnchor: L.Browser.retina ? [-2, -2] : [-1, -1],\n icon: 'icon-flag-white'\n }\n };\n if (type === 'start') {\n generalMarkerIcon.icon.icon = 'icon-start-white';\n } else if (type === 'end') {\n generalMarkerIcon.icon.icon = 'icon-end-white';\n }\n return generalMarkerIcon;\n }\n\n function getRouteStyle(style) {\n var styleIndex = 0;\n return function () {\n styleIndex += 1;\n return style[styleIndex % style.length] || style;\n };\n }\n\n function convertPoints(points) {\n var point, i;\n for (i = 0; i < points.length; i++) {\n point = points[i];\n points[i] = point ? L.latLng(converters.point(point).split(',')) : undefined;\n }\n return points;\n }\n\n function getIconOptions(points, index, options) {\n var iconOptions = utils.clone(options.generalMarker);\n if (index === 0) {\n utils.addFields(options.startMarker, iconOptions);\n iconOptions.icon = options.startMarker.icon;\n } else if (index === points.length - 1) {\n utils.addFields(options.endMarker, iconOptions);\n iconOptions.icon = options.endMarker.icon;\n } else {\n utils.addFields(options.waypointMarker, iconOptions);\n iconOptions.icon = options.waypointMarker.icon;\n }\n if (options.generalMarker.zIndexOffset) {\n iconOptions.zIndexOffset = options.generalMarker.zIndexOffset;\n }\n return iconOptions;\n }\n\n function onDragListener(points, e, markers, callback) {\n var index = markers.indexOf(e.target);\n points[index] = e.target.getLatLng();\n callback.call(this, points, index);\n }\n\n function getAllFilledLocations(points) {\n var filledLocations = [],\n i;\n for (i = 0; i < points.length; i++) {\n if (points[i] !== undefined) {\n filledLocations.push(points[i]);\n }\n }\n return filledLocations;\n }\n\n function isAtLeastPairOfPoints(points) {\n return points && points.length && points.length > 1;\n }\n\n L.RouteOnMap = L.LayerGroup.extend({\n includes: L.Evented.prototype,\n statics: {\n Events: EVENTS\n },\n options: {\n generalMarker: {\n icon: L.svgIcon(createMarkerIcon()),\n draggable: false\n },\n startMarker: {\n icon: L.svgIcon(createMarkerIcon('start')),\n draggable: false\n },\n waypointMarker: {\n icon: L.svgIcon(createMarkerIcon('waypoint')),\n draggable: false\n },\n endMarker: {\n icon: L.svgIcon(createMarkerIcon('end')),\n draggable: false\n },\n position: 'topleft',\n routeStyle: {\n color: '#00d7ff',\n opacity: 0.8\n },\n alternativeStyles: [{\n color: '#ff00d2',\n opacity: 0.8\n }, {\n color: '#b922ff',\n opacity: 0.8\n }],\n routingDelay: 1000,\n serviceOptions: {}\n },\n\n initialize: function initialize(options) {\n L.Util.setOptions(this, options);\n },\n\n /**\n * Method used to create markers on a map, basing on given points.\n *\n * @method createMarkers\n * @param {Object[]} points List of points to create markers onto\n */\n createMarkers: function createMarkers(points) {\n var that = this,\n markers = [],\n iconOptions,\n marker,\n point,\n i;\n\n var dragEndHandler = function dragEndHandler(event) {\n if (!isAtLeastPairOfPoints(points)) {\n return;\n }\n onDragListener.call(that, points, event, markers, that.onDragEnd);\n };\n\n var dragHandler = function dragHandler(event) {\n if (!isAtLeastPairOfPoints(points)) {\n return;\n }\n onDragListener.call(that, points, event, markers, that.onDrag);\n };\n\n for (i = 0; i < points.length; i++) {\n point = points[i];\n\n if (point !== undefined) {\n iconOptions = getIconOptions(points, i, this.options);\n marker = L.marker(point, iconOptions);\n markers.push(marker);\n\n if (iconOptions.draggable) {\n marker.on('dragend', dragEndHandler);\n marker.on('drag', dragHandler);\n }\n }\n }\n\n delete this.markers;\n if (markers.length > 0) {\n this.markers = L.featureGroup(markers);\n this.markers.addTo(this._map);\n }\n },\n\n /**\n * Draws a route on the map between given points.\n *\n * This method executes TomTom Routing Service to get a route.\n * If a route is found, it will draws it on the map. If not, a proper notification will be show.\n *\n * @method createRoute\n * @param {String[]|String} points List of points to create a route between.\n * The format expected is:\n * - [\"52.37245,4.89406\", \"51.37245,5.89406\"]\n * - \"52.37245,4.89406:51.37245,5.89406\"\n *\n * Read the Routing Service documentation to get more information about this property format options.\n */\n createRoute: function createRoute(points) {\n var that = this;\n this.options.serviceOptions.locations = points;\n routingService(this.options.serviceOptions).go().then(function (routeGeoJson) {\n if (routeGeoJson.features.length > 0) {\n that.drawRouteWithGeoJson(routeGeoJson);\n } else {\n that.clearRoute();\n L.messageBox({\n closeAfter: 1500\n }).openOn(that._map).setContent('Could not find a route.
You might trying to route between continents.');\n }\n }).catch(function (reason) {\n that.fire(that.Events.RouteNotFound, reason);\n });\n },\n\n /**\n * Method executed when the user drag a marker.\n *\n * Allows to look for routes while dragging a marker and within delay\n * equal to the value passed in the option `routingDelay`.\n *\n * @method onDrag\n * @param {String[]|String} points List of points to create a route within.\n * This value will be passed to {{#crossLink \"L.RouteOnMap/createRoute:method\"}}{{/crossLink}}\n * for create the new route.\n */\n onDrag: function onDrag(points) {\n var that = this;\n if (this.recalculateRoute === true) {\n setTimeout(function () {\n that.clearRoute();\n that.createRoute(points);\n that.recalculateRoute = true;\n }, this.options.routingDelay);\n this.recalculateRoute = false;\n }\n },\n\n /**\n * Method executed when the user drops a marker (equal to dragEnd event).\n *\n * Redraws route according to given points\n * and executes TomTom Reverse Geocode Service to get human-readable location when marker was dropped. That\n * fires the {{#crossLink \"L.RouteOnMap/L.RouteOnMap.Events.MarkerDragEnd:event\"}}{{/crossLink}} event with\n * service's call result and index of a marker.\n *\n * @method onDragEnd\n * @param {String[]|String} points List of points.\n * The expected format is:\n * - [\"52.37245,4.89406\", \"51.37245,5.89406\"]\n * - \"52.37245,4.89406:51.37245,5.89406\"\n * @param {Number} index Index of the marker that was dropped\n */\n onDragEnd: function onDragEnd(points, index) {\n var that = this;\n this.clearRoute();\n this.createRoute(points);\n this.once(this.Events.RouteChanged, this.fitMapBoundsToRoute, this);\n\n reverseGeocodeService().position(points[index]).go().then(function (result) {\n that.fire(that.Events.MarkerDragEnd, {\n object: result,\n markerIndex: index\n });\n });\n },\n\n /**\n * Method that removes all markers.\n *\n * @method clearMarkers\n */\n clearMarkers: function clearMarkers() {\n if (this.markers) {\n this.markers.clearLayers();\n }\n this.markers = undefined;\n },\n\n /**\n * Method that clears shown route.\n *\n * @method clearMarkers\n */\n clearRoute: function clearRoute() {\n if (this.routeOnMapLayer) {\n this._map.removeLayer(this.routeOnMapLayer);\n }\n this.routeOnMapLayer = undefined;\n },\n\n /**\n * Method that fits map to the drawn route.\n *\n * @method fitMapBoundsToRoute\n */\n fitMapBoundsToRoute: function fitMapBoundsToRoute() {\n var areaToBoundTo = this.routeOnMapLayer || this.markers;\n if (areaToBoundTo) {\n this._map.fitBounds(areaToBoundTo.getBounds(), {\n padding: [5, 5]\n });\n }\n },\n\n /**\n * Method that draws a route basing on a passed geoJson. Fires the\n * {{#crossLink \"L.RouteOnMap/L.RouteOnMap.Events.RouteChanged:event\"}}{{/crossLink}} event.\n *\n * @method drawRouteWithGeoJson\n * @param {Object} geoJson Represents geoJson data of a route\n */\n drawRouteWithGeoJson: function drawRouteWithGeoJson(geoJson) {\n this.clearRoute();\n this.routeOnMapLayer = L.geoJson(geoJson, {\n onEachFeature: this.options.onEachFeature,\n style: getRouteStyle(this.options.serviceOptions.maxAlternatives > 0 ? this.options.alternativeStyles.concat([this.options.routeStyle]) : this.options.routeStyle)\n });\n this._map.addLayer(this.routeOnMapLayer);\n this.fire(this.Events.RouteChanged, {\n object: geoJson.features[0].properties.summary,\n instructions: geoJson.features[0].properties.guidance,\n geoJson: geoJson\n });\n },\n\n /**\n * Method that takes care of redrawing markers and a route.\n *\n * @method drawRoute\n * @param {String[]|String} points List of points to draw a route between.\n * The format expected is:\n * - [\"52.37245,4.89406\", \"51.37245,5.89406\"]\n * - \"52.37245,4.89406:51.37245,5.89406\"\n */\n drawRoute: function drawRoute(points) {\n this.clear();\n this.recalculateRoute = true;\n this.createMarkers(points);\n\n if (points.length >= 2) {\n this.createRoute(points);\n }\n },\n\n /**\n * The method to draw a route between two or more points.\n *\n * @method draw\n * @param {Object[]} points Array of geographical locations that between route will be drawn. There are\n * multiple formats supported (see more at e.g. _Search_ page in _center_ method). This method also\n * fires the {{#crossLink \"L.RouteOnMap/L.RouteOnMap.Events.Draw:event\"}}{{/crossLink}} event that\n * announces that route is drawn.\n * @example\n * ```javascript\n * var startPoint = {lat: 49.29917, lon: 19.94902};\n * var waypoint = {lat: 42.25917, lon: 19.98902};\n * var endPoint = {lat: 52.23498, lon: 21.00849};\n * var points = [startPoint, waypoint, endPoint];\n * var routeOnMapView = (new L.RouteOnMap()).addTo(map);\n * routeOnMapView.draw(points);\n * ```\n */\n draw: function draw(points) {\n points = convertPoints(points);\n points = getAllFilledLocations(points);\n this.drawRoute(points);\n this.fitMapBoundsToRoute();\n this.once(this.Events.RouteChanged, this.fitMapBoundsToRoute, this);\n this.fire(this.Events.Draw, {});\n },\n\n /**\n * The method to clear a route and markers.\n *\n * @method clear\n * @example\n * ```javascript\n * var routeOnMapView = (new L.RouteOnMap(optionsForRouteOnMapView)).addTo(map);\n * routeOnMapView.clear();\n * ```\n */\n clear: function clear() {\n this.clearMarkers();\n this.clearRoute();\n },\n\n /**\n * Event that is fired after dropping the marker. Contains information about marker's position.\n *\n * @event MarkerDragEnd\n * @param {Object} object Information of dropped marker's position (got from reverse geocode service)\n * @param {Number} markerIndex Index of the marker on a map\n * @param {String} [type=\"markerDragEnd\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var routeOnMapView = routeOnMap().addTo(map);\n * routeOnMapView.on(L.RouteOnMap.Events.MarkerDragEnd, function(eventObject) {\n * console.log(eventObject);\n * });\n * ```\n */\n /**\n * Event that is fired after drawing a route on a map.\n *\n * @event Draw\n * @param {String} [type=\"draw\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var routeOnMapView = (new L.RouteOnMap()).addTo(map);\n * routeOnMapView.on(L.RouteOnMap.Events.Draw, function(eventObject) {\n * console.log(eventObject);\n * });\n * ```\n */\n /**\n * Event that is fired when route was changed.\n *\n * @event RouteChanged\n * @param {Object} object Route summary that contains arrival time, departure time, route length, traffic\n * and travel time.\n * @param {String} [type=\"routeChanged\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var routeOnMapView = (new L.RouteOnMap()).addTo(map);\n * routeOnMapView.on(L.RouteOnMap.Events.RouteChanged, function(eventObject) {\n * console.log(eventObject);\n * });\n * ```\n */\n Events: EVENTS\n });\n\n return function (options) {\n var routeOnMap = new L.RouteOnMap(options);\n utils.addDeprecatedProperty(routeOnMap, 'Event', 'Events');\n return routeOnMap;\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 196 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Widget to display additional route information in a panel over the map.\n *\n * The panel contains an icon, distance and arrival time for the route.\n * \n * This widget requires route data to work correcly. For more information please refer to our \n * \n * Routing with summary example.\n *\n * @example\n * ```javascript\n * var widget = new L.RouteSummary({\n * size: [270, 268],\n * position: 'topleft'\n * });\n * widget.addTo(map);\n * ```\n *\n * @class RouteSummary\n * @namespace L\n * @extends L.Control\n * @module Widgets\n * @constructor\n * @method routeSummary\n * @param {Object} [options] Options to setup control\n * @param {Number[]} [options.size=[320,320]] Width and height in pixels for the panel\n * @param {\"topleft\"|\"topright\"|\"bottomleft\"|\"bottomright\"} [options.position=\"topleft\"] Where to add view\n * @param {Boolean} [options.imperialDistance=null] Set this option if you want to use a specific unit measurement\n * system for the new instance of the widget.\n * If no unit system is defined upon, the widget will use the global unit measurement configuration.\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(15), __webpack_require__(16)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, unitFormatConverter, unitTypes) {\n 'use strict';\n\n function initPanelResult(className, control) {\n var divPanelRouteResultWrapper = L.DomUtil.create('div', className + '-route-result-wrapper', control.divPanelRouteResult);\n control.divPanelRouteResult = L.DomUtil.create('div', className + '-route-result', control._container);\n control.divPanelRouteDeparture = L.DomUtil.create('div', className + '-leave', control.divPanelRouteResult);\n control.divPanelRouteDeparture.innerHTML = 'Leave: now';\n control.divPanelRouteCostModel = L.DomUtil.create('div', className + '-route-cost-model', divPanelRouteResultWrapper);\n control.divPanelRouteTime = L.DomUtil.create('div', className + '-route-time', divPanelRouteResultWrapper);\n\n control.divPanelRouteTrafficDelay = L.DomUtil.create('div', className + '-route-traffic-delay', divPanelRouteResultWrapper);\n }\n\n function createPanelArriveDistance(className, control, parent) {\n var divPanelRouteArriveDistance = L.DomUtil.create('div', className + '-route-arrive-row', parent);\n var divPanelRouteArriveDistanceLabel = L.DomUtil.create('div', className + '-route-arrive-cell-left', divPanelRouteArriveDistance);\n divPanelRouteArriveDistanceLabel.innerHTML = 'Distance:';\n control.divPanelRouteArriveDistanceValue = L.DomUtil.create('div', className + '-route-arrive-cell-right', divPanelRouteArriveDistance);\n }\n\n function createPanelArriveTime(className, control, parent) {\n var divPanelRouteArriveTime = L.DomUtil.create('div', className + '-route-arrive-row', parent);\n var divPanelRouteArriveTimeLabel = L.DomUtil.create('div', className + '-route-arrive-cell-left', divPanelRouteArriveTime);\n\n divPanelRouteArriveTimeLabel.innerHTML = 'Arrive:';\n\n control.divPanelRouteArriveTimeValue = L.DomUtil.create('div', className + '-route-arrive-cell-right', divPanelRouteArriveTime);\n }\n\n function initPanelArrive(className, control) {\n var divPanelRouteArrive = L.DomUtil.create('div', className + '-arrive', control._container);\n createPanelArriveDistance(className, control, divPanelRouteArrive);\n createPanelArriveTime(className, control, divPanelRouteArrive);\n }\n\n function createDOMElements(control) {\n var className = 'leaflet-control-route-summary',\n container = L.DomUtil.create('div', className + ' leaflet-control'),\n divHeading = L.DomUtil.create('div', className + '-heading', container);\n container.style.width = control.options.size[0] + 'px';\n container.style.height = control.options.size[1] + 'px';\n divHeading.innerHTML = 'Route summary';\n L.DomEvent.disableClickPropagation(container);\n L.DomEvent.disableScrollPropagation(container);\n control._container = container;\n initPanelResult(className, control);\n initPanelArrive(className, control);\n container.style.visibility = 'hidden';\n\n return container;\n }\n\n L.RouteSummary = L.Control.extend({\n includes: L.Evented.prototype,\n\n options: {\n size: [320, 320],\n position: 'topleft',\n imperialDistance: null\n },\n\n /**\n * @ignore\n * This store the route summary data currently visible in the widget.\n * @type {Object}\n */\n _currentData: null,\n\n /**\n * @ignore\n * @type {Boolean}\n */\n _currentDataShouldBeImperial: null,\n\n /**\n * Leaflet init method executed when adding control to map.\n * Options will be stored inside control.\n *\n * @ignore\n * @method initialize\n * @param {Object} [options] Options to setup control\n */\n initialize: function initialize(options) {\n L.Util.setOptions(this, options);\n this._attributions = {};\n },\n\n /**\n * Leaflet method executed when adding control to map.\n * Map will be stored inside control.\n *\n * @ignore\n * @method onAdd\n * @param {Object} map The map instance to which control is added.\n * @return {HTMLElement}\n */\n onAdd: function onAdd(map) {\n this.unitService = map.getUnitService();\n this.unitService.on(L.UnitService.Events.UNIT_CHANGED, this._redraw, this);\n return createDOMElements(this);\n },\n\n /**\n * @ignore\n */\n onRemove: function onRemove() {\n this.unitService.off(L.UnitService.Events.UNIT_CHANGED, this._redraw, this);\n },\n\n /**\n * Hides the route summary.\n *\n * By default the summary will be hidden until the method\n * {{#crossLink \"L.RouteSummary/updateSummaryData:method\"}}{{/crossLink}} is called.\n *\n * @method hide\n */\n hide: function hide() {\n this._container.style.visibility = 'hidden';\n },\n\n /**\n * Shows the route summary.\n *\n * By default summary will be hidden.\n * Use this method to show the control after data is ready.\n *\n * @method show\n */\n show: function show() {\n this._container.style.visibility = '';\n },\n\n /**\n * Method to update data after route is recalculated.\n *\n * Use this method to update data after each route calculation.\n *\n * @method updateSummaryData\n * @param {Object} routeSummary Routing properties object\n * @param {Number} routeSummary.travelTimeInSeconds\n * @param {Number} routeSummary.trafficDelayInSeconds\n * @param {Number} routeSummary.lengthInMeters\n * @param {String|Number} routeSummary.arrivalTime Date in milliseconds or a string in RFC-3339 format\n * @param {Boolean} [useImperial=null] If you set this parameter the unit system will be forced\n * but only for this data\n */\n updateSummaryData: function updateSummaryData(routeSummary, useImperial) {\n this._currentData = routeSummary;\n this._currentDataShouldBeImperial = useImperial;\n this._redraw();\n },\n\n _redraw: function _redraw() {\n var data = this._currentData,\n useImperial = this._shouldUseImperialDistance(),\n converter = unitFormatConverter;\n if (typeof this._currentDataShouldBeImperial === 'boolean') {\n useImperial = this._currentDataShouldBeImperial;\n }\n if (data) {\n this.divPanelRouteTime.innerHTML = converter.formatTime(data.travelTimeInSeconds);\n this.divPanelRouteTrafficDelay.innerHTML = converter.formatTime(data.trafficDelayInSeconds) + ' traffic';\n this.divPanelRouteArriveDistanceValue.innerHTML = converter.formatDistance(data.lengthInMeters, useImperial);\n this.divPanelRouteArriveTimeValue.innerHTML = converter.formatHourAndMinute(data.arrivalTime);\n this.show();\n } else {\n this.hide();\n }\n },\n\n /**\n * @ignore\n * First check the configuration for this instance and then the global configuration.\n * The instance configuration has priority.\n *\n * @return {Boolean}\n */\n _shouldUseImperialDistance: function _shouldUseImperialDistance() {\n if (typeof this.options.imperialDistance === 'boolean') {\n return this.options.imperialDistance;\n }\n return this.unitService.getCurrentUnit().getLabel() === unitTypes.imperial;\n }\n });\n\n return function (options) {\n return new L.RouteSummary(options);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 197 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\n/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * The MiniMap allows you to show a smaller map with low zoom level at a corner of the main map.\n *\n * It is based on [Leaflet-MiniMap plugin](https://github.com/Norkart/Leaflet-MiniMap).\n *\n * The default plugin functionality is integrated with TomTom SDK.\n * \n * If you want to use vector source in the MiniMap the basePath must be specified. \n * Keep this in mind when you switch from raster to vector source, for example when opening our examples in CodePen, \n * otherwise the MiniMap will not render properly.\n *\n * @example\n * ```javascript\n * tomtom.key(\"\");\n * var miniMapOptions = {height: 90, width: 120};\n * var map = new L.Map(\"map\");\n * var miniMapControl = new L.TomTomMinimap(miniMapOptions);\n * miniMapControl.addTo(map);\n * ```\n *\n * @example\n * ```javascript\n * var widget = new L.TomTomMinimap({\n * height: 90,\n * width: 120,\n * // zoom difference between the main map and minimaps (defaults to -8)\n * zoomLevelOffset: -8,\n *\n * // below options have default values:\n * toggleDisplay: true, // show a button to hide/show mini-map\n * zoomAnimation: true, // animate zoom changes\n * autoToggleDisplay: true, // hide mini-map automatically if it's not needed\n * mapOptions: {\n * source: [\"raster\", \"vector\"],\n * minZoom: 2, // min zoom of mini-map\n * maxZoom: 4 // max zoom of mini-map\n * basePath: 'basePath/sdk' // used for vector maps\n * }\n * });\n * widget.addTo(map);\n * ```\n *\n * @class TomTomMinimap\n * @namespace L\n * @extends L.Control.MiniMap\n * @module Widgets\n * @constructor\n * @param {Object} [options] Options to be passed to the MiniMap\n * @param {String} [options.position=\"bottomright\"] The standard Leaflet.Control position parameter,\n * used like all the other controls. Defaults to 'bottomright'.\n * @param {Number} [options.width=150] The width of the minimap in pixels\n * @param {Number} [options.height=150] The height of the minimap in pixels\n * @param {Number} [options.collapsedWidth=19] The width in pixels of the toggle marker and the minimap\n * when collapsed\n * @param {Number} [options.collapsedHeight=19] The height in pixels of the toggle marker and the minimap\n * when collapsed\n * @param {Number} [options.zoomLevelOffset=-8] The offset applied to the zoom in the minimap compared\n * to the zoom of the main map. Can be positive or negative.\n * @param {Number} [options.zoomLevelFixed=null] Overrides the offset to apply a fixed zoom level\n * to the minimap regardless of the main map zoom. Set it to any valid zoom level.\n * If unset `zoomLevelOffset` is used instead.\n * @param {Boolean} [options.centerFixed=false] Applies a fixed position to the minimap regardless\n * of the main map's view / position. Prevents panning the minimap, but does allow zooming\n * (both in the minimap and the main map). If the minimap is zoomed, it will always\n * zoom around the centerFixed point. You can pass in a LatLng-equivalent object.\n * @param {Boolean} [options.zoomAnimation=false] Sets whether the minimap should have an animated zoom.\n * (Will cause it to lag a bit after the movement of the main map.)\n * @param {Boolean} [options.toggleDisplay=false] Sets whether the minimap should have a button to minimize it\n * @param {Boolean} [options.autoToggleDisplay=false] Sets whether the minimap should hide automatically\n * if the parent map bounds does not fit within the minimap bounds.\n * Especially useful when `zoomLevelFixed` is set.\n * @param {Boolean} [options.minimized=false] Sets whether the minimap should start in a minimized position\n * @param {Object} [options.aimingRectOptions] Sets the style of the aiming rectangle by passing in\n * a Path.Options object.\n * (Clickable will always be overridden and set to `false`).\n * @param {Object} [options.shadowRectOptions] Sets the style of the aiming shadow rectangle by passing in a\n * Path.Options object.\n * (Clickable will always be overridden and set to `false`).\n * @param {Object} [options.strings] Overrides the default strings allowing for translation\n * @param {Object} [options.mapOptions] Sets Leaflet options for the MiniMap.\n * It does not override the MiniMap default map options but extends them.\n * See regular map options for more details.\n * @param {String} [options.basePath = '/sdk'] Base path for sdk. It will be used in relative paths - it is \n * especially important for maps with vector sources. For instance, if you set this option to `\"/myPath\"`, \n * default urls for styles will be set to `/myPath/styles/basic_main.json`\n */\n/* jshint nomen:false */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(198)], __WEBPACK_AMD_DEFINE_RESULT__ = function (L, MiniMap) {\n 'use strict';\n\n var MAP_LAYER_DEFAULT_OPTIONS = {\n zoom: 2,\n minZoom: 2,\n maxZoom: 10\n },\n CONTROL_DEFAULT_OPTIONS = {\n toggleDisplay: true,\n zoomAnimation: true,\n autoToggleDisplay: true,\n zoomLevelOffset: -5\n };\n\n L.TomTomMinimap = MiniMap.extend({\n /**\n * Returns current zoom level of the mini map.\n *\n * @method getZoom\n * @return {Number}\n */\n getZoom: function getZoom() {\n return this._miniMap.getZoom();\n },\n /**\n * Add listeners for a particular event type. Event handlers for events with 'map-' prefix\n * are added to minimap map instance directly.\n *\n * @method on\n * @param {String} eventName\n * @param {Function} eventHandler\n * @return {Object} Returns reference to current instance of minimap widget\n */\n on: function on(eventName, eventHandler) {\n var regexMatch, mapEventName;\n if (!eventName || !eventHandler) {\n return this;\n }\n regexMatch = /^map-(.+)$/.exec(eventName);\n if (regexMatch) {\n mapEventName = regexMatch[1];\n this._miniMap.on(mapEventName, eventHandler);\n }\n return this;\n },\n _getMinimapBaseLayer: function _getMinimapBaseLayer(source) {\n return this._miniMap.getBaseLayers()[source || this.options.mapOptions.source[0]];\n },\n /**\n * Change a source data for the current mini map. It should be one of the sources provided\n * at creation in a property options.mapOptions.source.\n *\n * @method setMapSource\n * @param {String} source A source of data for the mini map. It has to be one of the\n * {{#crossLink \"L.Map\"}}{{/crossLink}} supported sources.\n */\n setMapSource: function setMapSource(source) {\n this._miniMap.removeLayer(this._layer);\n this._miniMap.setMapSource(source);\n this._layer = this._getMinimapBaseLayer(source);\n },\n initialize: function initialize(options) {\n /*\n This `dummyLayer` requires few words of explanation. Although it doesn't look like it this is the\n cleanest way to move decision about layer configuration from this file to map.js instance created\n inside MiniMap.onAdd method. Unfortunately, MiniMap plugin requires that a layer needs to be provided\n that's the reason behind this `dummyLayer`. This change was caused by LNS-16272.\n */\n var dummyLayer = new L.LayerGroup();\n MiniMap.prototype.initialize.call(this, dummyLayer, options);\n }\n });\n\n return function (options) {\n\n if (!options) {\n options = {};\n }\n\n options.mapOptions = L.extend(MAP_LAYER_DEFAULT_OPTIONS, options.mapOptions);\n options = L.extend(CONTROL_DEFAULT_OPTIONS, options);\n\n if (options.mapOptions.minZoom > options.mapOptions.maxZoom) {\n options.mapOptions.minZoom = options.mapOptions.maxZoom;\n }\n\n return new L.TomTomMinimap(options);\n };\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 198 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(factory,window){if(true){!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))}else if(typeof exports===\"object\"){module.exports=factory(require(\"leaflet\"))}if(typeof window!==\"undefined\"&&window.L){window.L.Control.MiniMap=factory(L);window.L.control.minimap=function(layer,options){return new window.L.Control.MiniMap(layer,options)}}})(function(L){var MiniMap=L.Control.extend({includes:L.Evented?L.Evented.prototype:L.Mixin.Events,options:{position:\"bottomright\",toggleDisplay:false,zoomLevelOffset:-5,zoomLevelFixed:false,centerFixed:false,zoomAnimation:false,autoToggleDisplay:false,minimized:false,width:150,height:150,collapsedWidth:19,collapsedHeight:19,aimingRectOptions:{color:\"#ff7800\",weight:1,clickable:false},shadowRectOptions:{color:\"#000000\",weight:1,clickable:false,opacity:0,fillOpacity:0},strings:{hideText:\"Hide MiniMap\",showText:\"Show MiniMap\"},mapOptions:{}},initialize:function(layer,options){L.Util.setOptions(this,options);this.options.aimingRectOptions.clickable=false;this.options.shadowRectOptions.clickable=false;this._layer=layer},onAdd:function(map){this._mainMap=map;this._container=L.DomUtil.create(\"div\",\"leaflet-control-minimap\");this._container.style.width=this.options.width+\"px\";this._container.style.height=this.options.height+\"px\";L.DomEvent.disableClickPropagation(this._container);L.DomEvent.on(this._container,\"mousewheel\",L.DomEvent.stopPropagation);var mapOptions={attributionControl:false,dragging:!this.options.centerFixed,zoomControl:false,zoomAnimation:this.options.zoomAnimation,autoToggleDisplay:this.options.autoToggleDisplay,touchZoom:this.options.centerFixed?\"center\":!this._isZoomLevelFixed(),scrollWheelZoom:this.options.centerFixed?\"center\":!this._isZoomLevelFixed(),doubleClickZoom:this.options.centerFixed?\"center\":!this._isZoomLevelFixed(),boxZoom:!this._isZoomLevelFixed(),crs:map.options.crs};mapOptions=L.Util.extend(this.options.mapOptions,mapOptions);this._miniMap=new L.Map(this._container,mapOptions);this._miniMap.addLayer(this._layer);this._mainMapMoving=false;this._miniMapMoving=false;this._userToggledDisplay=false;this._minimized=false;if(this.options.toggleDisplay){this._addToggleButton()}this._miniMap.whenReady(L.Util.bind(function(){this._aimingRect=L.rectangle(this._mainMap.getBounds(),this.options.aimingRectOptions).addTo(this._miniMap);this._shadowRect=L.rectangle(this._mainMap.getBounds(),this.options.shadowRectOptions).addTo(this._miniMap);this._mainMap.on(\"moveend\",this._onMainMapMoved,this);this._mainMap.on(\"move\",this._onMainMapMoving,this);this._miniMap.on(\"movestart\",this._onMiniMapMoveStarted,this);this._miniMap.on(\"move\",this._onMiniMapMoving,this);this._miniMap.on(\"moveend\",this._onMiniMapMoved,this)},this));return this._container},addTo:function(map){L.Control.prototype.addTo.call(this,map);var center=this.options.centerFixed||this._mainMap.getCenter();this._miniMap.setView(center,this._decideZoom(true));this._setDisplay(this.options.minimized);return this},onRemove:function(map){this._mainMap.off(\"moveend\",this._onMainMapMoved,this);this._mainMap.off(\"move\",this._onMainMapMoving,this);this._miniMap.off(\"moveend\",this._onMiniMapMoved,this);this._miniMap.removeLayer(this._layer)},changeLayer:function(layer){this._miniMap.removeLayer(this._layer);this._layer=layer;this._miniMap.addLayer(this._layer)},_addToggleButton:function(){this._toggleDisplayButton=this.options.toggleDisplay?this._createButton(\"\",this._toggleButtonInitialTitleText(),\"leaflet-control-minimap-toggle-display leaflet-control-minimap-toggle-display-\"+this.options.position,this._container,this._toggleDisplayButtonClicked,this):undefined;this._toggleDisplayButton.style.width=this.options.collapsedWidth+\"px\";this._toggleDisplayButton.style.height=this.options.collapsedHeight+\"px\"},_toggleButtonInitialTitleText:function(){if(this.options.minimized){return this.options.strings.showText}else{return this.options.strings.hideText}},_createButton:function(html,title,className,container,fn,context){var link=L.DomUtil.create(\"a\",className,container);link.innerHTML=html;link.href=\"#\";link.title=title;var stop=L.DomEvent.stopPropagation;L.DomEvent.on(link,\"click\",stop).on(link,\"mousedown\",stop).on(link,\"dblclick\",stop).on(link,\"click\",L.DomEvent.preventDefault).on(link,\"click\",fn,context);return link},_toggleDisplayButtonClicked:function(){this._userToggledDisplay=true;if(!this._minimized){this._minimize()}else{this._restore()}},_setDisplay:function(minimize){if(minimize!==this._minimized){if(!this._minimized){this._minimize()}else{this._restore()}}},_minimize:function(){if(this.options.toggleDisplay){this._container.style.width=this.options.collapsedWidth+\"px\";this._container.style.height=this.options.collapsedHeight+\"px\";this._toggleDisplayButton.className+=\" minimized-\"+this.options.position;this._toggleDisplayButton.title=this.options.strings.showText}else{this._container.style.display=\"none\"}this._minimized=true;this._onToggle()},_restore:function(){if(this.options.toggleDisplay){this._container.style.width=this.options.width+\"px\";this._container.style.height=this.options.height+\"px\";this._toggleDisplayButton.className=this._toggleDisplayButton.className.replace(\"minimized-\"+this.options.position,\"\");this._toggleDisplayButton.title=this.options.strings.hideText}else{this._container.style.display=\"block\"}this._minimized=false;this._onToggle()},_onMainMapMoved:function(e){if(!this._miniMapMoving){var center=this.options.centerFixed||this._mainMap.getCenter();this._mainMapMoving=true;this._miniMap.setView(center,this._decideZoom(true));this._setDisplay(this._decideMinimized())}else{this._miniMapMoving=false}this._aimingRect.setBounds(this._mainMap.getBounds())},_onMainMapMoving:function(e){this._aimingRect.setBounds(this._mainMap.getBounds())},_onMiniMapMoveStarted:function(e){if(!this.options.centerFixed){var lastAimingRect=this._aimingRect.getBounds();var sw=this._miniMap.latLngToContainerPoint(lastAimingRect.getSouthWest());var ne=this._miniMap.latLngToContainerPoint(lastAimingRect.getNorthEast());this._lastAimingRectPosition={sw:sw,ne:ne}}},_onMiniMapMoving:function(e){if(!this.options.centerFixed){if(!this._mainMapMoving&&this._lastAimingRectPosition){this._shadowRect.setBounds(new L.LatLngBounds(this._miniMap.containerPointToLatLng(this._lastAimingRectPosition.sw),this._miniMap.containerPointToLatLng(this._lastAimingRectPosition.ne)));this._shadowRect.setStyle({opacity:1,fillOpacity:.3})}}},_onMiniMapMoved:function(e){if(!this._mainMapMoving){this._miniMapMoving=true;this._mainMap.setView(this._miniMap.getCenter(),this._decideZoom(false));this._shadowRect.setStyle({opacity:0,fillOpacity:0})}else{this._mainMapMoving=false}},_isZoomLevelFixed:function(){var zoomLevelFixed=this.options.zoomLevelFixed;return this._isDefined(zoomLevelFixed)&&this._isInteger(zoomLevelFixed)},_decideZoom:function(fromMaintoMini){if(!this._isZoomLevelFixed()){if(fromMaintoMini){return this._mainMap.getZoom()+this.options.zoomLevelOffset}else{var currentDiff=this._miniMap.getZoom()-this._mainMap.getZoom();var proposedZoom=this._miniMap.getZoom()-this.options.zoomLevelOffset;var toRet;if(currentDiff>this.options.zoomLevelOffset&&this._mainMap.getZoom()this._lastMiniMapZoom){toRet=this._mainMap.getZoom()+1;this._miniMap.setZoom(this._miniMap.getZoom()-1)}else{toRet=this._mainMap.getZoom()}}else{toRet=proposedZoom}this._lastMiniMapZoom=this._miniMap.getZoom();return toRet}}else{if(fromMaintoMini){return this.options.zoomLevelFixed}else{return this._mainMap.getZoom()}}},_decideMinimized:function(){if(this._userToggledDisplay){return this._minimized}if(this.options.autoToggleDisplay){if(this._mainMap.getBounds().contains(this._miniMap.getBounds())){return true}return false}return this._minimized},_isInteger:function(value){return typeof value===\"number\"},_isDefined:function(value){return typeof value!==\"undefined\"},_onToggle:function(){L.Util.requestAnimFrame(function(){L.DomEvent.on(this._container,\"transitionend\",this._fireToggleEvents,this);if(!L.Browser.any3d){L.Util.requestAnimFrame(this._fireToggleEvents,this)}},this)},_fireToggleEvents:function(){L.DomEvent.off(this._container,\"transitionend\",this._fireToggleEvents,this);var data={minimized:this._minimized};this.fire(this._minimized?\"minimize\":\"restore\",data);this.fire(\"toggle\",data)}});L.Map.mergeOptions({miniMapControl:false});L.Map.addInitHook(function(){if(this.options.miniMapControl){this.miniMapControl=(new MiniMap).addTo(this)}});return MiniMap},window);\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// tomtom.min.js"," \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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\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 = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 100);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 5dd0c35c42011c5627d1","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['lodash/core'], function(_) {\n 'use strict';\n\n function isArray(object) {\n return _.isArray(object);\n }\n\n /**\n * @ignore\n * Consider NULL as not an object.\n * @param {*} val\n * @return {Boolean}\n */\n function isObject(val) {\n return _.isObject(val);\n }\n\n /**\n * @ignore\n * Consider NaN and Infinite as not a number.\n * @param {*} val\n * @return {Boolean}\n */\n function isValidNumber(val) {\n return _.isFinite(val);\n }\n\n /**\n * @ignore\n * @param {*} val\n * @return {Boolean}\n */\n function isNonEmptyString(val) {\n return _.isString(val) && val.length > 0;\n }\n\n /**\n * @ignore\n * Used instead of Number.isNaN\n * @param {*} val\n * @return {Boolean}\n */\n function numberIsNaN(val) {\n return _.isNaN(val);\n }\n\n /**\n * @ignore\n * Returns TRUE is the value is not undefined, null or NaN.\n * @param {*} val\n * @return {Boolean}\n */\n function isValidValue(val) {\n return val !== undefined && val !== null && !numberIsNaN(val);\n }\n\n /**\n * @ignore\n * Returns an function that check if a value passed as argument is an instance of an specific class.\n * @param {Object} classObject\n * @return {Function}\n */\n function createInstanceChecker(classObject) {\n return function(val) {\n return val instanceof classObject;\n };\n }\n\n function cloneProperties(object, clonedObject) {\n var property;\n for (property in object) {\n if (object.hasOwnProperty(property)) {\n if (isArray(object[property])) {\n clonedObject[property] = object[property].slice(0);\n } else if (typeof object[property] === 'object') {\n clonedObject[property] = {};\n cloneProperties(object[property], clonedObject[property]);\n } else {\n clonedObject[property] = object[property];\n }\n }\n }\n }\n\n function getValueOrEmptyObject(value) {\n return value === undefined ? {} : value;\n }\n\n function addNewField(result, field, newFields) {\n var property;\n result[field] = getValueOrEmptyObject(result[field]);\n for (property in newFields[field]) {\n if (newFields[field].hasOwnProperty(property)) {\n result[field][property] = newFields[field][property];\n }\n }\n }\n\n function convertToLatLng(value) {\n var convertedValue;\n if (value instanceof L.LatLng) {\n convertedValue = value;\n } else if (isArray(value)) {\n convertedValue = L.latLng(value);\n } else if (value && value.lat && value.lon) {\n convertedValue = L.latLng([value.lat, value.lon]);\n } else if (value && value.lat && value.lng) {\n convertedValue = L.latLng([value.lat, value.lng]);\n }\n return convertedValue;\n }\n\n function extend(obj, src) {\n var key;\n for (key in src) {\n if (src.hasOwnProperty(key)) {\n obj[key] = src[key];\n }\n\n }\n return obj;\n }\n\n return {\n isArray: isArray,\n isEqual: _.isEqual,\n isObject: isObject,\n isString: _.isString,\n isValidNumber: isValidNumber,\n isValidValue: isValidValue,\n isNonEmptyString: isNonEmptyString,\n createInstanceChecker: createInstanceChecker,\n convertToLatLng: convertToLatLng,\n\n addFields: function(newFields, defaultFields) {\n var field;\n var result = defaultFields || this.defaultFields || {};\n for (field in newFields) {\n if (newFields.hasOwnProperty(field)) {\n addNewField(result, field, newFields);\n }\n }\n return result;\n },\n\n clone: function(object) {\n var clonedObject = {};\n cloneProperties(object, clonedObject);\n return clonedObject;\n },\n\n encodeQuery: function(query) {\n return encodeURIComponent(query);\n },\n\n encodeStringForRegex: function(value) {\n return value.replace(/[-[\\]/{}()*+?.\\\\^$|]/g, '\\\\$&');\n },\n extend: extend,\n\n /**\n * @param {Object} sourceObj\n * @param {String} deprecatedPropertyName\n * @param {String} deprecatedPropertyReplacement\n */\n addDeprecatedProperty: function(sourceObj, deprecatedPropertyName, deprecatedPropertyReplacement) {\n Object.defineProperty(sourceObj, deprecatedPropertyName, {\n get: function() {\n console.warn('Usage of ' + deprecatedPropertyName +\n ' property is deprecated. Please use ' + deprecatedPropertyReplacement + ' property.');\n return this[deprecatedPropertyReplacement];\n }\n });\n },\n\n pointRegex: /(-?\\d+(?:\\.\\d+)?)(?:\\s+|\\s*,\\s*)(-?\\d+(?:\\.\\d+)?)/,\n\n circleRegex: /circle\\((-?\\d+(?:\\.\\d+)?)\\s*,\\s*(-?\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+)\\)/,\n\n /**\n * @ignore\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds.\n * @param {Object} context\n * @param {Function} func\n * @param {Number} wait\n * @return {Function}\n */\n debounce: function(context, func, wait) {\n var timeout;\n return function() {\n var later = function() {\n timeout = null;\n func.apply(context, arguments);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n },\n\n isValueNil: function(value) {\n return typeof value === 'undefined' || value === null;\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/utils.js","/* @preserve\n * Leaflet 1.3.0, a JS library for interactive maps. http://leafletjs.com\n * (c) 2010-2017 Vladimir Agafonkin, (c) 2010-2011 CloudMade\n */\n!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?i(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],i):i(t.L={})}(this,function(t){\"use strict\";function i(t){var i,e,n,o;for(e=1,n=arguments.length;e=0}function A(t,i,e,n){return\"touchstart\"===i?O(t,e,n):\"touchmove\"===i?W(t,e,n):\"touchend\"===i&&H(t,e,n),this}function B(t,i,e){var n=t[\"_leaflet_\"+i+e];return\"touchstart\"===i?t.removeEventListener(Qi,n,!1):\"touchmove\"===i?t.removeEventListener(te,n,!1):\"touchend\"===i&&(t.removeEventListener(ie,n,!1),t.removeEventListener(ee,n,!1)),this}function O(t,i,n){var o=e(function(t){if(\"mouse\"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(ne.indexOf(t.target.tagName)<0))return;$(t)}j(t,i)});t[\"_leaflet_touchstart\"+n]=o,t.addEventListener(Qi,o,!1),se||(document.documentElement.addEventListener(Qi,R,!0),document.documentElement.addEventListener(te,D,!0),document.documentElement.addEventListener(ie,N,!0),document.documentElement.addEventListener(ee,N,!0),se=!0)}function R(t){oe[t.pointerId]=t,re++}function D(t){oe[t.pointerId]&&(oe[t.pointerId]=t)}function N(t){delete oe[t.pointerId],re--}function j(t,i){t.touches=[];for(var e in oe)t.touches.push(oe[e]);t.changedTouches=[t],i(t)}function W(t,i,e){var n=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&\"mouse\"!==t.pointerType||0!==t.buttons)&&j(t,i)};t[\"_leaflet_touchmove\"+e]=n,t.addEventListener(te,n,!1)}function H(t,i,e){var n=function(t){j(t,i)};t[\"_leaflet_touchend\"+e]=n,t.addEventListener(ie,n,!1),t.addEventListener(ee,n,!1)}function F(t,i,e){function n(t){var i;if(Ui){if(!Pi||\"mouse\"===t.pointerType)return;i=re}else i=t.touches.length;if(!(i>1)){var e=Date.now(),n=e-(s||e);r=t.touches?t.touches[0]:t,a=n>0&&n<=h,s=e}}function o(t){if(a&&!r.cancelBubble){if(Ui){if(!Pi||\"mouse\"===t.pointerType)return;var e,n,o={};for(n in r)e=r[n],o[n]=e&&e.bind?e.bind(r):e;r=o}r.type=\"dblclick\",i(r),s=null}}var s,r,a=!1,h=250;return t[ue+ae+e]=n,t[ue+he+e]=o,t[ue+\"dblclick\"+e]=i,t.addEventListener(ae,n,!1),t.addEventListener(he,o,!1),t.addEventListener(\"dblclick\",i,!1),this}function U(t,i){var e=t[ue+ae+i],n=t[ue+he+i],o=t[ue+\"dblclick\"+i];return t.removeEventListener(ae,e,!1),t.removeEventListener(he,n,!1),Pi||t.removeEventListener(\"dblclick\",o,!1),this}function V(t,i,e,n){if(\"object\"==typeof i)for(var o in i)G(t,o,i[o],e);else for(var s=0,r=(i=u(i)).length;s100&&n<500||t.target._simulatedClick&&!t._simulated?Q(t):(pi=e,i(t))}function rt(t){return\"string\"==typeof t?document.getElementById(t):t}function at(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!e||\"auto\"===e)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);e=n?n[i]:null}return\"auto\"===e?null:e}function ht(t,i,e){var n=document.createElement(t);return n.className=i||\"\",e&&e.appendChild(n),n}function ut(t){var i=t.parentNode;i&&i.removeChild(t)}function lt(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function ct(t){var i=t.parentNode;i.lastChild!==t&&i.appendChild(t)}function _t(t){var i=t.parentNode;i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function dt(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=gt(t);return e.length>0&&new RegExp(\"(^|\\\\s)\"+i+\"(\\\\s|$)\").test(e)}function pt(t,i){if(void 0!==t.classList)for(var e=u(i),n=0,o=e.length;nh&&(s=r,h=a);h>e&&(i[s]=1,Et(t,i,e,n,s),Et(t,i,e,s,o))}function kt(t,i){for(var e=[t[0]],n=1,o=0,s=t.length;ni&&(e.push(t[n]),o=n);return oi.max.x&&(e|=2),t.yi.max.y&&(e|=8),e}function Ot(t,i){var e=i.x-t.x,n=i.y-t.y;return e*e+n*n}function Rt(t,i,e,n){var o,s=i.x,r=i.y,a=e.x-s,h=e.y-r,u=a*a+h*h;return u>0&&((o=((t.x-s)*a+(t.y-r)*h)/u)>1?(s=e.x,r=e.y):o>0&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new x(s,r)}function Dt(t){return!ei(t[0])||\"object\"!=typeof t[0][0]&&void 0!==t[0][0]}function Nt(t){return console.warn(\"Deprecated use of _flat, please use L.LineUtil.isFlat instead.\"),Dt(t)}function jt(t,i,e){var n,o,s,r,a,h,u,l,c,_=[1,4,2,8];for(o=0,u=t.length;o0?Math.floor(t):Math.ceil(t)};x.prototype={clone:function(){return new x(this.x,this.y)},add:function(t){return this.clone()._add(w(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(w(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new x(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new x(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=li(this.x),this.y=li(this.y),this},distanceTo:function(t){var i=(t=w(t)).x-this.x,e=t.y-this.y;return Math.sqrt(i*i+e*e)},equals:function(t){return(t=w(t)).x===this.x&&t.y===this.y},contains:function(t){return t=w(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return\"Point(\"+a(this.x)+\", \"+a(this.y)+\")\"}},P.prototype={extend:function(t){return t=w(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new x((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new x(this.min.x,this.max.y)},getTopRight:function(){return new x(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var i,e;return(t=\"number\"==typeof t[0]||t instanceof x?w(t):b(t))instanceof P?(i=t.min,e=t.max):i=e=t,i.x>=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>=i.x&&n.x<=e.x,r=o.y>=i.y&&n.y<=e.y;return s&&r},overlaps:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>i.x&&n.xi.y&&n.y=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=i.lat&&n.lat<=e.lat,r=o.lng>=i.lng&&n.lng<=e.lng;return s&&r},overlaps:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>i.lat&&n.lati.lng&&n.lng1,Yi=!!document.createElement(\"canvas\").getContext,Xi=!(!document.createElementNS||!E(\"svg\").createSVGRect),Ji=!Xi&&function(){try{var t=document.createElement(\"div\");t.innerHTML='';var i=t.firstChild;return i.style.behavior=\"url(#default#VML)\",i&&\"object\"==typeof i.adj}catch(t){return!1}}(),$i=(Object.freeze||Object)({ie:wi,ielt9:Li,edge:Pi,webkit:bi,android:Ti,android23:zi,androidStock:Ci,opera:Zi,chrome:Si,gecko:Ei,safari:ki,phantom:Ii,opera12:Ai,win:Bi,ie3d:Oi,webkit3d:Ri,gecko3d:Di,any3d:Ni,mobile:ji,mobileWebkit:Wi,mobileWebkit3d:Hi,msPointer:Fi,pointer:Ui,touch:Vi,mobileOpera:qi,mobileGecko:Gi,retina:Ki,canvas:Yi,svg:Xi,vml:Ji}),Qi=Fi?\"MSPointerDown\":\"pointerdown\",te=Fi?\"MSPointerMove\":\"pointermove\",ie=Fi?\"MSPointerUp\":\"pointerup\",ee=Fi?\"MSPointerCancel\":\"pointercancel\",ne=[\"INPUT\",\"SELECT\",\"OPTION\"],oe={},se=!1,re=0,ae=Fi?\"MSPointerDown\":Ui?\"pointerdown\":\"touchstart\",he=Fi?\"MSPointerUp\":Ui?\"pointerup\":\"touchend\",ue=\"_leaflet_\",le=\"_leaflet_events\",ce=Bi&&Si?2*window.devicePixelRatio:Ei?window.devicePixelRatio:1,_e={},de=(Object.freeze||Object)({on:V,off:q,stopPropagation:Y,disableScrollPropagation:X,disableClickPropagation:J,preventDefault:$,stop:Q,getMousePosition:tt,getWheelDelta:it,fakeStop:et,skipped:nt,isExternalTarget:ot,addListener:V,removeListener:q}),pe=xt([\"transform\",\"WebkitTransform\",\"OTransform\",\"MozTransform\",\"msTransform\"]),me=xt([\"webkitTransition\",\"transition\",\"OTransition\",\"MozTransition\",\"msTransition\"]),fe=\"webkitTransition\"===me||\"OTransition\"===me?me+\"End\":\"transitionend\";if(\"onselectstart\"in document)mi=function(){V(window,\"selectstart\",$)},fi=function(){q(window,\"selectstart\",$)};else{var ge=xt([\"userSelect\",\"WebkitUserSelect\",\"OUserSelect\",\"MozUserSelect\",\"msUserSelect\"]);mi=function(){if(ge){var t=document.documentElement.style;gi=t[ge],t[ge]=\"none\"}},fi=function(){ge&&(document.documentElement.style[ge]=gi,gi=void 0)}}var ve,ye,xe=(Object.freeze||Object)({TRANSFORM:pe,TRANSITION:me,TRANSITION_END:fe,get:rt,getStyle:at,create:ht,remove:ut,empty:lt,toFront:ct,toBack:_t,hasClass:dt,addClass:pt,removeClass:mt,setClass:ft,getClass:gt,setOpacity:vt,testProp:xt,setTransform:wt,setPosition:Lt,getPosition:Pt,disableTextSelection:mi,enableTextSelection:fi,disableImageDrag:bt,enableImageDrag:Tt,preventOutline:zt,restoreOutline:Mt}),we=ui.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=Pt(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire(\"start\"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=f(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;ithis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,z(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},invalidateSize:function(t){if(!this._loaded)return this;t=i({animate:!1,pan:!0},!0===t?{animate:!0}:t);var n=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var o=this.getSize(),s=n.divideBy(2).round(),r=o.divideBy(2).round(),a=s.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire(\"move\"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(e(this.fire,this,\"moveend\"),200)):this.fire(\"moveend\")),this.fire(\"resize\",{oldSize:n,newSize:o})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire(\"viewreset\"),this._stop()},locate:function(t){if(t=this._locateOptions=i({timeout:1e4,watch:!1},t),!(\"geolocation\"in navigator))return this._handleGeolocationError({code:0,message:\"Geolocation not supported.\"}),this;var n=e(this._handleGeolocationResponse,this),o=e(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(n,o,t):navigator.geolocation.getCurrentPosition(n,o,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var i=t.code,e=t.message||(1===i?\"permission denied\":2===i?\"position unavailable\":\"timeout\");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire(\"locationerror\",{code:i,message:\"Geolocation error: \"+e+\".\"})},_handleGeolocationResponse:function(t){var i=new M(t.coords.latitude,t.coords.longitude),e=i.toBounds(t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(e);this.setView(i,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:i,bounds:e,timestamp:t.timestamp};for(var r in t.coords)\"number\"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire(\"locationfound\",s)},addHandler:function(t,i){if(!i)return this;var e=this[t]=new i(this);return this._handlers.push(e),this.options[t]&&e.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error(\"Map container is being reused by another instance\");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),ut(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this._loaded&&this.fire(\"unload\");var t;for(t in this._layers)this._layers[t].remove();for(t in this._panes)ut(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var e=ht(\"div\",\"leaflet-pane\"+(t?\" leaflet-\"+t.replace(\"Pane\",\"\")+\"-pane\":\"\"),i||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new T(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,e){t=z(t),e=w(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(e),u=b(this.project(a,n),this.project(r,n)).getSize(),l=Ni?this.options.zoomSnap:1,c=h.x/u.x,_=h.y/u.y,d=i?Math.max(c,_):Math.min(c,_);return n=this.getScaleZoom(d,n),l&&(n=Math.round(n/(l/100))*(l/100),n=i?Math.ceil(n/l)*l:Math.floor(n/l)*l),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new x(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var e=this._getTopLeftPoint(t,i);return new P(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return\"string\"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs;i=void 0===i?this._zoom:i;var n=e.zoom(t*e.scale(i));return isNaN(n)?1/0:n},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(C(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(w(t),i)},layerPointToLatLng:function(t){var i=w(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){return this.project(C(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(C(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(z(t))},distance:function(t,i){return this.options.crs.distance(C(t),C(i))},containerPointToLayerPoint:function(t){return w(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return w(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(w(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(C(t)))},mouseEventToContainerPoint:function(t){return tt(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=rt(t);if(!i)throw new Error(\"Map container not found.\");if(i._leaflet_id)throw new Error(\"Map container is already initialized.\");V(i,\"scroll\",this._onScroll,this),this._containerId=n(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&Ni,pt(t,\"leaflet-container\"+(Vi?\" leaflet-touch\":\"\")+(Ki?\" leaflet-retina\":\"\")+(Li?\" leaflet-oldie\":\"\")+(ki?\" leaflet-safari\":\"\")+(this._fadeAnimated?\" leaflet-fade-anim\":\"\"));var i=at(t,\"position\");\"absolute\"!==i&&\"relative\"!==i&&\"fixed\"!==i&&(t.style.position=\"relative\"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane(\"mapPane\",this._container),Lt(this._mapPane,new x(0,0)),this.createPane(\"tilePane\"),this.createPane(\"shadowPane\"),this.createPane(\"overlayPane\"),this.createPane(\"markerPane\"),this.createPane(\"tooltipPane\"),this.createPane(\"popupPane\"),this.options.markerZoomAnimation||(pt(t.markerPane,\"leaflet-zoom-hide\"),pt(t.shadowPane,\"leaflet-zoom-hide\"))},_resetView:function(t,i){Lt(this._mapPane,new x(0,0));var e=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire(\"viewprereset\");var n=this._zoom!==i;this._moveStart(n,!1)._move(t,i)._moveEnd(n),this.fire(\"viewreset\"),e&&this.fire(\"load\")},_moveStart:function(t,i){return t&&this.fire(\"zoomstart\"),i||this.fire(\"movestart\"),this},_move:function(t,i,e){void 0===i&&(i=this._zoom);var n=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(n||e&&e.pinch)&&this.fire(\"zoom\",e),this.fire(\"move\",e)},_moveEnd:function(t){return t&&this.fire(\"zoomend\"),this.fire(\"moveend\")},_stop:function(){return g(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Lt(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error(\"Set map center and zoom first.\")},_initEvents:function(t){this._targets={},this._targets[n(this._container)]=this;var i=t?q:V;i(this._container,\"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress\",this._handleDOMEvent,this),this.options.trackResize&&i(window,\"resize\",this._onResize,this),Ni&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,\"moveend\",this._onMoveEnd)},_onResize:function(){g(this._resizeRequest),this._resizeRequest=f(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,o=[],s=\"mouseout\"===i||\"mouseover\"===i,r=t.target||t.srcElement,a=!1;r;){if((e=this._targets[n(r)])&&(\"click\"===i||\"preclick\"===i)&&!t._simulated&&this._draggableMoved(e)){a=!0;break}if(e&&e.listens(i,!0)){if(s&&!ot(r,t))break;if(o.push(e),s)break}if(r===this._container)break;r=r.parentNode}return o.length||a||s||!ot(r,t)||(o=[this]),o},_handleDOMEvent:function(t){if(this._loaded&&!nt(t)){var i=t.type;\"mousedown\"!==i&&\"keypress\"!==i||zt(t.target||t.srcElement),this._fireDOMEvent(t,i)}},_mouseEvents:[\"click\",\"dblclick\",\"mouseover\",\"mouseout\",\"contextmenu\"],_fireDOMEvent:function(t,e,n){if(\"click\"===t.type){var o=i({},t);o.type=\"preclick\",this._fireDOMEvent(o,o.type,n)}if(!t._stopped&&(n=(n||[]).concat(this._findEventTargets(t,e))).length){var s=n[0];\"contextmenu\"===e&&s.listens(e,!0)&&$(t);var r={originalEvent:t};if(\"keypress\"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var h=0;h0?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=Ni?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire(\"move\")},_onPanTransitionEnd:function(){mt(this._mapPane,\"leaflet-pan-anim\"),this.fire(\"moveend\")},_tryAnimatedPan:function(t,i){var e=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(e))&&(this.panBy(e,i),!0)},_createAnimProxy:function(){var t=this._proxy=ht(\"div\",\"leaflet-proxy leaflet-zoom-animated\");this._panes.mapPane.appendChild(t),this.on(\"zoomanim\",function(t){var i=pe,e=this._proxy.style[i];wt(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on(\"load moveend\",function(){var t=this.getCenter(),i=this.getZoom();wt(this._proxy,this.project(t,i),this.getZoomScale(i,1))},this),this._on(\"unload\",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){ut(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf(\"transform\")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName(\"leaflet-zoom-animated\").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(o))&&(f(function(){this._moveStart(!0,!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,n,o){this._mapPane&&(n&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,pt(this._mapPane,\"leaflet-zoom-anim\")),this.fire(\"zoomanim\",{center:t,zoom:i,noUpdate:o}),setTimeout(e(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&mt(this._mapPane,\"leaflet-zoom-anim\"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),f(function(){this._moveEnd(!0)},this))}}),Pe=v.extend({options:{position:\"topright\"},initialize:function(t){l(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),n=t._controlCorners[e];return pt(i,\"leaflet-control\"),-1!==e.indexOf(\"bottom\")?n.insertBefore(i,n.firstChild):n.appendChild(i),this},remove:function(){return this._map?(ut(this._container),this.onRemove&&this.onRemove(this._map),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),be=function(t){return new Pe(t)};Le.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){function t(t,o){var s=e+t+\" \"+e+o;i[t+o]=ht(\"div\",s,n)}var i=this._controlCorners={},e=\"leaflet-\",n=this._controlContainer=ht(\"div\",e+\"control-container\",this._container);t(\"top\",\"left\"),t(\"top\",\"right\"),t(\"bottom\",\"left\"),t(\"bottom\",\"right\")},_clearControlPos:function(){for(var t in this._controlCorners)ut(this._controlCorners[t]);ut(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Te=Pe.extend({options:{collapsed:!0,position:\"topright\",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e1,this._baseLayersList.style.display=t?\"\":\"none\"),this._separator.style.display=i&&t?\"\":\"none\",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(n(t.target)),e=i.overlay?\"add\"===t.type?\"overlayadd\":\"overlayremove\":\"add\"===t.type?\"baselayerchange\":null;e&&this._map.fire(e,i)},_createRadioElement:function(t,i){var e='\",n=document.createElement(\"div\");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement(\"label\"),o=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement(\"input\")).type=\"checkbox\",i.className=\"leaflet-control-layers-selector\",i.defaultChecked=o):i=this._createRadioElement(\"leaflet-base-layers\",o),this._layerControlInputs.push(i),i.layerId=n(t.layer),V(i,\"click\",this._onInputClick,this);var s=document.createElement(\"span\");s.innerHTML=\" \"+t.name;var r=document.createElement(\"div\");return e.appendChild(r),r.appendChild(i),r.appendChild(s),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;s>=0;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;s=0;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&ni.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),ze=Pe.extend({options:{position:\"topleft\",zoomInText:\"+\",zoomInTitle:\"Zoom in\",zoomOutText:\"−\",zoomOutTitle:\"Zoom out\"},onAdd:function(t){var i=\"leaflet-control-zoom\",e=ht(\"div\",i+\" leaflet-bar\"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+\"-in\",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+\"-out\",e,this._zoomOut),this._updateDisabled(),t.on(\"zoomend zoomlevelschange\",this._updateDisabled,this),e},onRemove:function(t){t.off(\"zoomend zoomlevelschange\",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){var s=ht(\"a\",e,n);return s.innerHTML=t,s.href=\"#\",s.title=i,s.setAttribute(\"role\",\"button\"),s.setAttribute(\"aria-label\",i),J(s),V(s,\"click\",Q),V(s,\"click\",o,this),V(s,\"click\",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i=\"leaflet-disabled\";mt(this._zoomInButton,i),mt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMinZoom())&&pt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMaxZoom())&&pt(this._zoomInButton,i)}});Le.mergeOptions({zoomControl:!0}),Le.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new ze,this.addControl(this.zoomControl))});var Me=Pe.extend({options:{position:\"bottomleft\",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i=ht(\"div\",\"leaflet-control-scale\"),e=this.options;return this._addScales(e,\"leaflet-control-scale-line\",i),t.on(e.updateWhenIdle?\"moveend\":\"move\",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?\"moveend\":\"move\",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=ht(\"div\",i,e)),t.imperial&&(this._iScale=ht(\"div\",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,e=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),e=i<1e3?i+\" m\":i/1e3+\" km\";this._updateScale(this._mScale,e,i/t)},_updateImperial:function(t){var i,e,n,o=3.2808399*t;o>5280?(i=o/5280,e=this._getRoundNum(i),this._updateScale(this._iScale,e+\" mi\",e/i)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+\" ft\",n/o))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+\"px\",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+\"\").length-1),e=t/i;return e=e>=10?10:e>=5?5:e>=3?3:e>=2?2:1,i*e}}),Ce=Pe.extend({options:{position:\"bottomright\",prefix:'Leaflet'},initialize:function(t){l(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=ht(\"div\",\"leaflet-control-attribution\"),J(this._container);for(var i in t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var e=[];this.options.prefix&&e.push(this.options.prefix),t.length&&e.push(t.join(\", \")),this._container.innerHTML=e.join(\" | \")}}});Le.mergeOptions({attributionControl:!0}),Le.addInitHook(function(){this.options.attributionControl&&(new Ce).addTo(this)});Pe.Layers=Te,Pe.Zoom=ze,Pe.Scale=Me,Pe.Attribution=Ce,be.layers=function(t,i,e){return new Te(t,i,e)},be.zoom=function(t){return new ze(t)},be.scale=function(t){return new Me(t)},be.attribution=function(t){return new Ce(t)};var Ze=v.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Ze.addTo=function(t,i){return t.addHandler(i,this),this};var Se,Ee={Events:hi},ke=Vi?\"touchstart mousedown\":\"mousedown\",Ie={mousedown:\"mouseup\",touchstart:\"touchend\",pointerdown:\"touchend\",MSPointerDown:\"touchend\"},Ae={mousedown:\"mousemove\",touchstart:\"touchmove\",pointerdown:\"touchmove\",MSPointerDown:\"touchmove\"},Be=ui.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){l(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(V(this._dragStartTarget,ke,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Be._dragging===this&&this.finishDrag(),q(this._dragStartTarget,ke,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!dt(this._element,\"leaflet-zoom-anim\")&&!(Be._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(Be._dragging=this,this._preventOutline&&zt(this._element),bt(),mi(),this._moving)))){this.fire(\"down\");var i=t.touches?t.touches[0]:t;this._startPoint=new x(i.clientX,i.clientY),V(document,Ae[t.type],this._onMove,this),V(document,Ie[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var i=t.touches&&1===t.touches.length?t.touches[0]:t,e=new x(i.clientX,i.clientY).subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)1e-7;h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=u=Math.PI/2-2*Math.atan(r*i)-a;return new M(a*e,t.x*e/n)}},je=(Object.freeze||Object)({LonLat:De,Mercator:Ne,SphericalMercator:di}),We=i({},_i,{code:\"EPSG:3395\",projection:Ne,transformation:function(){var t=.5/(Math.PI*Ne.R);return S(t,.5,-t,.5)}()}),He=i({},_i,{code:\"EPSG:4326\",projection:De,transformation:S(1/180,1,-1/180,.5)}),Fe=i({},ci,{projection:De,transformation:S(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,n=i.lat-t.lat;return Math.sqrt(e*e+n*n)},infinite:!0});ci.Earth=_i,ci.EPSG3395=We,ci.EPSG3857=vi,ci.EPSG900913=yi,ci.EPSG4326=He,ci.Simple=Fe;var Ue=ui.extend({options:{pane:\"overlayPane\",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[n(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[n(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var e=this.getEvents();i.on(e,this),this.once(\"remove\",function(){i.off(e,this)},this)}this.onAdd(i),this.getAttribution&&i.attributionControl&&i.attributionControl.addAttribution(this.getAttribution()),this.fire(\"add\"),i.fire(\"layeradd\",{layer:this})}}});Le.include({addLayer:function(t){if(!t._layerAdd)throw new Error(\"The provided object is not a Layer.\");var i=n(t);return this._layers[i]?this:(this._layers[i]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t),this)},removeLayer:function(t){var i=n(t);return this._layers[i]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[i],this._loaded&&(this.fire(\"layerremove\",{layer:t}),t.fire(\"remove\")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&n(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?ei(t)?t:[t]:[]).length;ithis._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()i)return r=(n-i)/e,this._map.layerPointToLatLng([s.x-r*(s.x-o.x),s.y-r*(s.y-o.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,i){return i=i||this._defaultShape(),t=C(t),i.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new T,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return Dt(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var i=[],e=Dt(t),n=0,o=t.length;n=2&&i[0]instanceof M&&i[0].equals(i[e-1])&&i.pop(),i},_setLatLngs:function(t){tn.prototype._setLatLngs.call(this,t),Dt(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return Dt(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,e=new x(i,i);if(t=new P(t.min.subtract(e),t.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;ot.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(u=!u);return u||tn.prototype._containsPoint.call(this,t,!0)}}),nn=qe.extend({initialize:function(t,i){l(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=ei(t)?t:t.features;if(o){for(i=0,e=o.length;i0?o:[i.src]}else{ei(this._url)||(this._url=[this._url]),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop;for(var a=0;ao?(i.height=o+\"px\",pt(t,\"leaflet-popup-scrolled\")):mt(t,\"leaflet-popup-scrolled\"),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),e=this._getAnchor();Lt(this._container,i.add(e))},_adjustPan:function(){if(!(!this.options.autoPan||this._map._panAnim&&this._map._panAnim._inProgress)){var t=this._map,i=parseInt(at(this._container,\"marginBottom\"),10)||0,e=this._container.offsetHeight+i,n=this._containerWidth,o=new x(this._containerLeft,-e-this._containerBottom);o._add(Pt(this._container));var s=t.layerPointToContainerPoint(o),r=w(this.options.autoPanPadding),a=w(this.options.autoPanPaddingTopLeft||r),h=w(this.options.autoPanPaddingBottomRight||r),u=t.getSize(),l=0,c=0;s.x+n+h.x>u.x&&(l=s.x+n-u.x+h.x),s.x-l-a.x<0&&(l=s.x-a.x),s.y+e+h.y>u.y&&(c=s.y+e-u.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(l||c)&&t.fire(\"autopanstart\").panBy([l,c])}},_onCloseButtonClick:function(t){this._close(),Q(t)},_getAnchor:function(){return w(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});Le.mergeOptions({closePopupOnClick:!0}),Le.include({openPopup:function(t,i,e){return t instanceof un||(t=new un(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),Ue.include({bindPopup:function(t,i){return t instanceof un?(l(t,i),this._popup=t,t._source=this):(this._popup&&!i||(this._popup=new un(i,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,i){if(t instanceof Ue||(i=t,t=this),t instanceof qe)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._popup&&this._map&&(this._popup._source=t,this._popup.update(),this._map.openPopup(this._popup,i)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var i=t.layer||t.target;this._popup&&this._map&&(Q(t),i instanceof Je?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===i?this.closePopup():this.openPopup(i,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var ln=hn.extend({options:{pane:\"tooltipPane\",offset:[0,0],direction:\"auto\",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){hn.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire(\"tooltipopen\",{tooltip:this}),this._source&&this._source.fire(\"tooltipopen\",{tooltip:this},!0)},onRemove:function(t){hn.prototype.onRemove.call(this,t),t.fire(\"tooltipclose\",{tooltip:this}),this._source&&this._source.fire(\"tooltipclose\",{tooltip:this},!0)},getEvents:function(){var t=hn.prototype.getEvents.call(this);return Vi&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t=\"leaflet-tooltip \"+(this.options.className||\"\")+\" leaflet-zoom-\"+(this._zoomAnimated?\"animated\":\"hide\");this._contentNode=this._container=ht(\"div\",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i=this._map,e=this._container,n=i.latLngToContainerPoint(i.getCenter()),o=i.layerPointToContainerPoint(t),s=this.options.direction,r=e.offsetWidth,a=e.offsetHeight,h=w(this.options.offset),u=this._getAnchor();\"top\"===s?t=t.add(w(-r/2+h.x,-a+h.y+u.y,!0)):\"bottom\"===s?t=t.subtract(w(r/2-h.x,-h.y,!0)):\"center\"===s?t=t.subtract(w(r/2+h.x,a/2-u.y+h.y,!0)):\"right\"===s||\"auto\"===s&&o.xthis.options.maxZoom||en&&this._retainParent(o,s,r,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new x(o,s);r.z=e+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),e+1this.options.maxZoom||void 0!==this.options.minZoom&&o1)this._setView(t,e);else{for(var c=o.min.y;c<=o.max.y;c++)for(var _=o.min.x;_<=o.max.x;_++){var d=new x(_,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:r.push(d)}}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire(\"loading\"));var m=document.createDocumentFragment();for(_=0;_e.max.x)||!i.wrapLat&&(t.ye.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return z(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),o=n.add(e);return[i.unproject(n,t.z),i.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),e=new T(i[0],i[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(t){return t.x+\":\"+t.y+\":\"+t.z},_keyToTileCoords:function(t){var i=t.split(\":\"),e=new x(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(Ci||i.el.setAttribute(\"src\",ni),ut(i.el),delete this._tiles[t],this.fire(\"tileunload\",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){pt(t,\"leaflet-tile\");var i=this.getTileSize();t.style.width=i.x+\"px\",t.style.height=i.y+\"px\",t.onselectstart=r,t.onmousemove=r,Li&&this.options.opacity<1&&vt(t,this.options.opacity),Ti&&!zi&&(t.style.WebkitBackfaceVisibility=\"hidden\")},_addTile:function(t,i){var n=this._getTilePos(t),o=this._tileCoordsToKey(t),s=this.createTile(this._wrapCoords(t),e(this._tileReady,this,t));this._initTile(s),this.createTile.length<2&&f(e(this._tileReady,this,t,null,s)),Lt(s,n),this._tiles[o]={el:s,coords:t,current:!0},i.appendChild(s),this.fire(\"tileloadstart\",{tile:s,coords:t})},_tileReady:function(t,i,n){if(this._map){i&&this.fire(\"tileerror\",{error:i,tile:n,coords:t});var o=this._tileCoordsToKey(t);(n=this._tiles[o])&&(n.loaded=+new Date,this._map._fadeAnimated?(vt(n.el,0),g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this)):(n.active=!0,this._pruneTiles()),i||(pt(n.el,\"leaflet-tile-loaded\"),this.fire(\"tileload\",{tile:n.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire(\"load\"),Li||!this._map._fadeAnimated?f(this._pruneTiles,this):setTimeout(e(this._pruneTiles,this),250)))}},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new x(this._wrapX?s(t.x,this._wrapX):t.x,this._wrapY?s(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new P(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}}),dn=_n.extend({options:{minZoom:0,maxZoom:18,subdomains:\"abc\",errorTileUrl:\"\",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,i){this._url=t,(i=l(this,i)).detectRetina&&Ki&&i.maxZoom>0&&(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom++):(i.zoomOffset++,i.maxZoom--),i.minZoom=Math.max(0,i.minZoom)),\"string\"==typeof i.subdomains&&(i.subdomains=i.subdomains.split(\"\")),Ti||this.on(\"tileunload\",this._onTileRemove)},setUrl:function(t,i){return this._url=t,i||this.redraw(),this},createTile:function(t,i){var n=document.createElement(\"img\");return V(n,\"load\",e(this._tileOnLoad,this,i,n)),V(n,\"error\",e(this._tileOnError,this,i,n)),this.options.crossOrigin&&(n.crossOrigin=\"\"),n.alt=\"\",n.setAttribute(\"role\",\"presentation\"),n.src=this.getTileUrl(t),n},getTileUrl:function(t){var e={r:Ki?\"@2x\":\"\",s:this._getSubdomain(t),x:t.x,y:t.y,z:t.z?t.z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var n=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=n),e[\"-y\"]=n}return _(this._url,i(e,this.options))},_tileOnLoad:function(t,i){Li?setTimeout(e(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute(\"src\")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom,e=this.options.zoomReverse,n=this.options.zoomOffset;return e&&(t=i-t),t+n},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((i=this._tiles[t].el).onload=r,i.onerror=r,i.complete||(i.src=ni,ut(i),delete this._tiles[t]))}}),pn=dn.extend({defaultWmsParams:{service:\"WMS\",request:\"GetMap\",layers:\"\",styles:\"\",format:\"image/jpeg\",transparent:!1,version:\"1.1.1\"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var n=i({},this.defaultWmsParams);for(var o in e)o in this.options||(n[o]=e[o]);var s=(e=l(this,e)).detectRetina&&Ki?2:1,r=this.getTileSize();n.width=r.x*s,n.height=r.y*s,this.wmsParams=n},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=this._wmsVersion>=1.3?\"crs\":\"srs\";this.wmsParams[i]=this._crs.code,dn.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,n=b(e.project(i[0]),e.project(i[1])),o=n.min,s=n.max,r=(this._wmsVersion>=1.3&&this._crs===He?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(\",\"),a=L.TileLayer.prototype.getTileUrl.call(this,t);return a+c(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?\"&BBOX=\":\"&bbox=\")+r},setParams:function(t,e){return i(this.wmsParams,t),e||this.redraw(),this}});dn.WMS=pn,Yt.wms=function(t,i){return new pn(t,i)};var mn=Ue.extend({options:{padding:.1,tolerance:0},initialize:function(t){l(this,t),n(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&pt(this._container,\"leaflet-zoom-animated\")),this.getPane().appendChild(this._container),this._update(),this.on(\"update\",this._updatePaths,this)},onRemove:function(){this.off(\"update\",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var e=this._map.getZoomScale(i,this._zoom),n=Pt(this._container),o=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,i),r=this._map.project(t,i).subtract(s),a=o.multiplyBy(-e).add(n).add(o).subtract(r);Ni?wt(this._container,a,e):Lt(this._container,a)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var t in this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new P(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),fn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){mn.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement(\"canvas\");V(t,\"mousemove\",o(this._onMouseMove,32,this),this),V(t,\"click dblclick mousedown mouseup contextmenu\",this._onClick,this),V(t,\"mouseout\",this._handleMouseOut,this),this._ctx=t.getContext(\"2d\")},_destroyContainer:function(){delete this._ctx,ut(this._container),q(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){this._redrawBounds=null;for(var t in this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){this._drawnLayers={},mn.prototype._update.call(this);var t=this._bounds,i=this._container,e=t.getSize(),n=Ki?2:1;Lt(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+\"px\",i.style.height=e.y+\"px\",Ki&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire(\"update\")}},_reset:function(){mn.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[n(t)]=t;var i=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,n=i.prev;e?e.prev=n:this._drawLast=n,n?n.next=e:this._drawFirst=e,delete t._order,delete this._layers[L.stamp(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if(t.options.dashArray){var i,e=t.options.dashArray.split(\",\"),n=[];for(i=0;i')}}catch(t){return function(t){return document.createElement(\"<\"+t+' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"lvml\">')}}}(),vn={_initContainer:function(){this._container=ht(\"div\",\"leaflet-vml-container\")},_update:function(){this._map._animatingZoom||(mn.prototype._update.call(this),this.fire(\"update\"))},_initPath:function(t){var i=t._container=gn(\"shape\");pt(i,\"leaflet-vml-shape \"+(this.options.className||\"\")),i.coordsize=\"1 1\",t._path=gn(\"path\"),i.appendChild(t._path),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;ut(i),t.removeInteractiveTarget(i),delete this._layers[n(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i||(i=t._stroke=gn(\"stroke\")),o.appendChild(i),i.weight=n.weight+\"px\",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=ei(n.dashArray)?n.dashArray.join(\" \"):n.dashArray.replace(/( *, *)/g,\" \"):i.dashStyle=\"\",i.endcap=n.lineCap.replace(\"butt\",\"flat\"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e||(e=t._fill=gn(\"fill\")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?\"M0 0\":\"AL \"+i.x+\",\"+i.y+\" \"+e+\",\"+n+\" 0,23592600\")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){ct(t._container)},_bringToBack:function(t){_t(t._container)}},yn=Ji?gn:E,xn=mn.extend({getEvents:function(){var t=mn.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=yn(\"svg\"),this._container.setAttribute(\"pointer-events\",\"none\"),this._rootGroup=yn(\"g\"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){ut(this._container),q(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){mn.prototype._update.call(this);var t=this._bounds,i=t.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute(\"width\",i.x),e.setAttribute(\"height\",i.y)),Lt(e,t.min),e.setAttribute(\"viewBox\",[t.min.x,t.min.y,i.x,i.y].join(\" \")),this.fire(\"update\")}},_initPath:function(t){var i=t._path=yn(\"path\");t.options.className&&pt(i,t.options.className),t.options.interactive&&pt(i,\"leaflet-interactive\"),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ut(t._path),t.removeInteractiveTarget(t._path),delete this._layers[n(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,e=t.options;i&&(e.stroke?(i.setAttribute(\"stroke\",e.color),i.setAttribute(\"stroke-opacity\",e.opacity),i.setAttribute(\"stroke-width\",e.weight),i.setAttribute(\"stroke-linecap\",e.lineCap),i.setAttribute(\"stroke-linejoin\",e.lineJoin),e.dashArray?i.setAttribute(\"stroke-dasharray\",e.dashArray):i.removeAttribute(\"stroke-dasharray\"),e.dashOffset?i.setAttribute(\"stroke-dashoffset\",e.dashOffset):i.removeAttribute(\"stroke-dashoffset\")):i.setAttribute(\"stroke\",\"none\"),e.fill?(i.setAttribute(\"fill\",e.fillColor||e.color),i.setAttribute(\"fill-opacity\",e.fillOpacity),i.setAttribute(\"fill-rule\",e.fillRule||\"evenodd\")):i.setAttribute(\"fill\",\"none\"))},_updatePoly:function(t,i){this._setPath(t,k(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n=\"a\"+e+\",\"+(Math.max(Math.round(t._radiusY),1)||e)+\" 0 1,0 \",o=t._empty()?\"M0 0\":\"M\"+(i.x-e)+\",\"+i.y+n+2*e+\",0 \"+n+2*-e+\",0 \";this._setPath(t,o)},_setPath:function(t,i){t._path.setAttribute(\"d\",i)},_bringToFront:function(t){ct(t._path)},_bringToBack:function(t){_t(t._path)}});Ji&&xn.include(vn),Le.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this.options.preferCanvas&&Xt()||Jt()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if(\"overlayPane\"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=xn&&Jt({pane:t})||fn&&Xt({pane:t}),this._paneRenderers[t]=i),i}});var wn=en.extend({initialize:function(t,i){en.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=z(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});xn.create=yn,xn.pointsToPath=k,nn.geometryToLayer=Wt,nn.coordsToLatLng=Ht,nn.coordsToLatLngs=Ft,nn.latLngToCoords=Ut,nn.latLngsToCoords=Vt,nn.getFeature=qt,nn.asFeature=Gt,Le.mergeOptions({boxZoom:!0});var Ln=Ze.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on(\"unload\",this._destroy,this)},addHooks:function(){V(this._container,\"mousedown\",this._onMouseDown,this)},removeHooks:function(){q(this._container,\"mousedown\",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ut(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),mi(),bt(),this._startPoint=this._map.mouseEventToContainerPoint(t),V(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=ht(\"div\",\"leaflet-zoom-box\",this._container),pt(this._container,\"leaflet-crosshair\"),this._map.fire(\"boxzoomstart\")),this._point=this._map.mouseEventToContainerPoint(t);var i=new P(this._point,this._startPoint),e=i.getSize();Lt(this._box,i.min),this._box.style.width=e.x+\"px\",this._box.style.height=e.y+\"px\"},_finish:function(){this._moved&&(ut(this._box),mt(this._container,\"leaflet-crosshair\")),fi(),Tt(),q(document,{contextmenu:Q,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(e(this._resetState,this),0);var i=new T(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire(\"boxzoomend\",{boxZoomBounds:i})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});Le.addInitHook(\"addHandler\",\"boxZoom\",Ln),Le.mergeOptions({doubleClickZoom:!0});var Pn=Ze.extend({addHooks:function(){this._map.on(\"dblclick\",this._onDoubleClick,this)},removeHooks:function(){this._map.off(\"dblclick\",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,o=t.originalEvent.shiftKey?e-n:e+n;\"center\"===i.options.doubleClickZoom?i.setZoom(o):i.setZoomAround(t.containerPoint,o)}});Le.addInitHook(\"addHandler\",\"doubleClickZoom\",Pn),Le.mergeOptions({dragging:!0,inertia:!zi,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var bn=Ze.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new Be(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on(\"predrag\",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on(\"predrag\",this._onPreDragWrap,this),t.on(\"zoomend\",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}pt(this._map._container,\"leaflet-grab leaflet-touch-drag\"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){mt(this._map._container,\"leaflet-grab\"),mt(this._map._container,\"leaflet-touch-drag\"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=z(this._map.options.maxBounds);this._offsetLimit=b(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire(\"movestart\").fire(\"dragstart\"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(e),this._times.push(i),this._prunePositions(i)}this._map.fire(\"move\",t).fire(\"drag\",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.xi.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,s=(n+i+e)%t-i-e,r=Math.abs(o+e)0?s:-s))-i;this._delta=0,this._startTime=null,r&&(\"center\"===t.options.scrollWheelZoom?t.setZoom(i+r):t.setZoomAround(this._lastMousePos,i+r))}});Le.addInitHook(\"addHandler\",\"scrollWheelZoom\",zn),Le.mergeOptions({tap:!0,tapTolerance:15});var Mn=Ze.extend({addHooks:function(){V(this._map._container,\"touchstart\",this._onDown,this)},removeHooks:function(){q(this._map._container,\"touchstart\",this._onDown,this)},_onDown:function(t){if(t.touches){if($(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new x(i.clientX,i.clientY),n.tagName&&\"a\"===n.tagName.toLowerCase()&&pt(n,\"leaflet-active\"),this._holdTimeout=setTimeout(e(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent(\"contextmenu\",i))},this),1e3),this._simulateEvent(\"mousedown\",i),V(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),q(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],e=i.target;e&&e.tagName&&\"a\"===e.tagName.toLowerCase()&&mt(e,\"leaflet-active\"),this._simulateEvent(\"mouseup\",i),this._isTapValid()&&this._simulateEvent(\"click\",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var i=t.touches[0];this._newPos=new x(i.clientX,i.clientY),this._simulateEvent(\"mousemove\",i)},_simulateEvent:function(t,i){var e=document.createEvent(\"MouseEvents\");e._simulated=!0,i.target._simulatedClick=!0,e.initMouseEvent(t,!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),i.target.dispatchEvent(e)}});Vi&&!Ui&&Le.addInitHook(\"addHandler\",\"tap\",Mn),Le.mergeOptions({touchZoom:Vi&&!zi,bounceAtZoomLimits:!0});var Cn=Ze.extend({addHooks:function(){pt(this._map._container,\"leaflet-touch-zoom\"),V(this._map._container,\"touchstart\",this._onTouchStart,this)},removeHooks:function(){mt(this._map._container,\"leaflet-touch-zoom\"),q(this._map._container,\"touchstart\",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),\"center\"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(e.add(n)._divideBy(2))),this._startDist=e.distanceTo(n),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),V(document,\"touchmove\",this._onTouchMove,this),V(document,\"touchend\",this._onTouchEnd,this),$(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,n=i.mouseEventToContainerPoint(t.touches[0]),o=i.mouseEventToContainerPoint(t.touches[1]),s=n.distanceTo(o)/this._startDist;if(this._zoom=i.getScaleZoom(s,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoomi.getMaxZoom()&&s>1)&&(this._zoom=i._limitZoom(this._zoom)),\"center\"===i.options.touchZoom){if(this._center=this._startLatLng,1===s)return}else{var r=n._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===s&&0===r.x&&0===r.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),g(this._animRequest);var a=e(i._move,i,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=f(a,this,!0),$(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,g(this._animRequest),q(document,\"touchmove\",this._onTouchMove),q(document,\"touchend\",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});Le.addInitHook(\"addHandler\",\"touchZoom\",Cn),Le.BoxZoom=Ln,Le.DoubleClickZoom=Pn,Le.Drag=bn,Le.Keyboard=Tn,Le.ScrollWheelZoom=zn,Le.Tap=Mn,Le.TouchZoom=Cn;var Zn=window.L;window.L=t,Object.freeze=$t,t.version=\"1.3.0\",t.noConflict=function(){return window.L=Zn,this},t.Control=Pe,t.control=be,t.Browser=$i,t.Evented=ui,t.Mixin=Ee,t.Util=ai,t.Class=v,t.Handler=Ze,t.extend=i,t.bind=e,t.stamp=n,t.setOptions=l,t.DomEvent=de,t.DomUtil=xe,t.PosAnimation=we,t.Draggable=Be,t.LineUtil=Oe,t.PolyUtil=Re,t.Point=x,t.point=w,t.Bounds=P,t.bounds=b,t.Transformation=Z,t.transformation=S,t.Projection=je,t.LatLng=M,t.latLng=C,t.LatLngBounds=T,t.latLngBounds=z,t.CRS=ci,t.GeoJSON=nn,t.geoJSON=Kt,t.geoJson=sn,t.Layer=Ue,t.LayerGroup=Ve,t.layerGroup=function(t,i){return new Ve(t,i)},t.FeatureGroup=qe,t.featureGroup=function(t){return new qe(t)},t.ImageOverlay=rn,t.imageOverlay=function(t,i,e){return new rn(t,i,e)},t.VideoOverlay=an,t.videoOverlay=function(t,i,e){return new an(t,i,e)},t.DivOverlay=hn,t.Popup=un,t.popup=function(t,i){return new un(t,i)},t.Tooltip=ln,t.tooltip=function(t,i){return new ln(t,i)},t.Icon=Ge,t.icon=function(t){return new Ge(t)},t.DivIcon=cn,t.divIcon=function(t){return new cn(t)},t.Marker=Xe,t.marker=function(t,i){return new Xe(t,i)},t.TileLayer=dn,t.tileLayer=Yt,t.GridLayer=_n,t.gridLayer=function(t){return new _n(t)},t.SVG=xn,t.svg=Jt,t.Renderer=mn,t.Canvas=fn,t.canvas=Xt,t.Path=Je,t.CircleMarker=$e,t.circleMarker=function(t,i){return new $e(t,i)},t.Circle=Qe,t.circle=function(t,i,e){return new Qe(t,i,e)},t.Polyline=tn,t.polyline=function(t,i){return new tn(t,i)},t.Polygon=en,t.polygon=function(t,i){return new en(t,i)},t.Rectangle=wn,t.rectangle=function(t,i){return new wn(t,i)},t.Map=Le,t.map=function(t,i){return new Le(t,i)}});\n\n\n//////////////////\n// WEBPACK FOOTER\n// /home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/leaflet/dist/leaflet.js\n// module id = 1\n// module chunks = 0","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['config/language/validator',\n 'config/geopolView/geopolViewService',\n './utils'],\nfunction(localeValidator, GeopolViewService, utils) {\n 'use strict';\n\n var roadUseValues = ['LimitedAccess', 'Arterial', 'Terminal', 'Ramp', 'Rotary', 'LocalStreet'],\n\n routingGuidanceLanguageValues = [\n 'ar', 'af-ZA', 'bg-BG', 'zh-TW', 'cs-CZ', 'da-DK', 'nl-NL', 'en-GB', 'en-US', 'fi-FI', 'fr-FR',\n 'de-DE', 'el-GR', 'hu-HU', 'id-ID', 'it-IT', 'ko-KR', 'lt-LT', 'ms-MY', 'nb-NO', 'pl-PL',\n 'pt-BR', 'pt-PT', 'ru-RU', 'sk-SK', 'sl-SI', 'es-ES', 'es-MX', 'sv-SE', 'th-TH', 'tr-TR'\n ],\n\n trafficIncidentsLanguageValues = [\n 'ca', 'cs', 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'nl', 'no', 'pl', 'pt', 'sk', 'sv', 'tr'\n ],\n\n // Up-to-date list available on:\n // https://developer.tomtom.com/search-api/search-api-documentation/supported-languages\n supportedLanguageCodes = [\n 'af-ZA', 'ar', 'bg-BG', 'ca-ES', 'zh-CN', 'zh-TW', 'cs-CZ', 'da-DK', 'nl-BE', 'nl-NL', 'en-AU', 'en-NZ',\n 'en-GB', 'en-US', 'et-EE', 'fi-FI', 'fr-CA', 'fr-FR', 'de-DE', 'el-GR', 'hr-HR', 'hu-HU', 'it-IT',\n 'lv-LV', 'lt-LT', 'ms-MY', 'no-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sk-SK', 'sl-SI', 'es-ES',\n 'es-419', 'sv-SE', 'tr-TR', 'eu-ES', 'gl-ES', 'he-IL', 'id-ID', 'kk-KZ', 'ro-RO', 'sr-RS', 'th-TH',\n 'uk-UA', 'vi-VN'\n ];\n\n function isDateRfc3339(dateString) {\n return /(\\d\\d\\d\\d)(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))/\n .test(dateString.toString());\n }\n\n function validateAgainstSetOfValues(value, arrayOfValues, messageIfNotFound) {\n if (arrayOfValues.indexOf(value) === -1) {\n throw new TypeError(messageIfNotFound);\n }\n return value;\n }\n\n function hasBoundingBoxFields(bbox) {\n return bbox.hasOwnProperty('minLon') && bbox.hasOwnProperty('maxLon') &&\n bbox.hasOwnProperty('minLat') && bbox.hasOwnProperty('maxLat');\n }\n\n function checkBBoxNormalized(bbox) {\n return parseFloat(bbox.maxLat) <= parseFloat(bbox.minLat) || parseFloat(bbox.maxLon) <= parseFloat(bbox.minLon);\n }\n\n function isNumberInInterval(numValue, min, max) {\n return isFinite(numValue) && numValue > min && numValue <= max;\n }\n\n function checkArray(array) {\n return array.constructor.toString().indexOf('Array') < 0;\n }\n\n function throwTypeErrorWhen(condition, message) {\n if (condition) {\n throw new TypeError(message);\n }\n }\n\n function isPointValid(point) {\n if (!utils.isString(point) || !utils.pointRegex.test(point)) {\n throw new TypeError('A point is expected, but ' + point + ' [' + typeof value + '] given');\n }\n return true;\n }\n\n function checkLongitude(value) {\n var numValue = parseFloat(value);\n if (!isNumberInInterval(numValue, -180, 180)) {\n throw new TypeError('an longitude <-180,180> is expected, but ' +\n value + ' [' + typeof value + '] given');\n }\n return numValue;\n }\n\n function checkLatitude(value) {\n var numValue = parseFloat(value);\n if (!isNumberInInterval(numValue, -90, 90)) {\n throw new TypeError('an latitude <-90,90> is expected, but ' + value + ' [' + typeof value + '] given');\n }\n return numValue;\n }\n\n function checkPointObjectOrArray(point) {\n var lat, lon;\n if (Array.isArray(point)) {\n if (!(point.length === 2 && point.filter(isFinite).length === 2)) {\n throw new TypeError('Ivalid point array in route points');\n }\n lat = point[0];\n lon = point[1];\n } else {\n if (!(isFinite(point.lat) && (isFinite(point.lon) || isFinite(point.lng)))) {\n throw new TypeError('Ivalid point object in route points');\n }\n lat = point.lat;\n lon = typeof point.lon !== 'undefined' ? point.lon : point.lng;\n }\n\n if (!(typeof lat === 'number' || lat instanceof Number) ||\n !(typeof lon === 'number' || lon instanceof Number)) {\n throw new TypeError('Lat and lon components of point should be finite numbers');\n }\n\n checkLongitude(lon);\n checkLatitude(lat);\n }\n\n function validateNumberInInterval(min, max, errorMsg, integerRequired) {\n if (utils.isValueNil(min) || utils.isValueNil(max)) {\n throw new TypeError('Number in interval validator requires min and max value parameters');\n }\n\n return function(value) {\n var numValue = parseFloat(value);\n\n if (!isNumberInInterval(numValue, min, max) || (integerRequired && !Number.isInteger(numValue))) {\n throw new TypeError(errorMsg + ', but ' + value + ' [' + typeof value + '] given');\n }\n\n return numValue;\n };\n }\n\n function validateIntInInterval(min, max, errorMsg) {\n return validateNumberInInterval(min, max, errorMsg, true);\n }\n\n return {\n\n /**\n * @ignore\n * Casts to boolean\n * @param {*} value\n * @return {Boolean} casted value\n */\n bool: function(value) {\n return value === 'false' ? false : Boolean(value);\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a float number\n * @param {*} value The value\n * @return {Number} value\n * @throws {TypeError} for invalid parameter\n */\n number: function(value) {\n var numValue = parseFloat(value);\n if (!isFinite(numValue)) {\n throw new TypeError('a number is expected, but ' + value + ' [' + typeof value + '] given');\n }\n return numValue;\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a integer greater than or equal 0\n * @param {*} value The value\n * @return {Number} value\n * @throws {TypeError} for invalid parameter\n */\n naturalInteger: function(value) {\n var numValue = parseFloat(value);\n if (!Number.isInteger(numValue) || numValue < 0) {\n throw new TypeError('a natural integer (greater than or equal 0) is expected, but ' +\n value + ' [' + typeof value + '] given');\n }\n return numValue;\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a integer greater than 0\n * @param {*} value The value\n * @return {Number} value\n * @throws {TypeError} for invalid parameter\n */\n positiveInteger: function(value) {\n var numValue = parseFloat(value);\n if (!Number.isInteger(numValue) || numValue <= 0) {\n throw new TypeError('a positive integer (greater than 0) is expected, but ' +\n value + ' [' + typeof value + '] given');\n }\n return numValue;\n },\n\n integer: function(value) {\n var numValue = parseFloat(value);\n if (!Number.isInteger(numValue)) {\n throw new TypeError('an integer is expected, but ' + value + ' [' + typeof value + '] given');\n }\n return numValue;\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a longitude and casts to proper interval <-180, 180>\n * @param {*} value\n * @return {Number} value\n * @throws {TypeError} for invalid parameter\n */\n longitude: checkLongitude,\n\n /**\n * @ignore\n * Check whether the given parameter is a latitude and casts to proper interval <-90, 90>\n * @param {*} value\n * @return {Number} value\n * @throws {TypeError} for invalid parameter\n */\n latitude: checkLatitude,\n\n /**\n * @ignore\n * Check whether the given parameter is a valid bounding box. Allows to contain whole world and a half on each\n * side.\n * @param {*} bbox The bounding box\n * @return {Object} bbox\n * @throws {TypeError} for invalid parameter\n */\n boundingBox: function(bbox) {\n throwTypeErrorWhen(!hasBoundingBoxFields(bbox),\n 'a bounding box is expected, but ' + bbox + ' [' + typeof bbox + '] given');\n\n throwTypeErrorWhen(!isNumberInInterval(bbox.minLat, -90, 90),\n 'a bounding box minimal latitude is expected ' + bbox.minLat + ' [' + typeof bbox.minLat + '] given');\n\n throwTypeErrorWhen(!isNumberInInterval(bbox.maxLat, -90, 90),\n 'a bounding box maximal latitude is expected ' + bbox.maxLat + ' [' + typeof bbox.maxLat + '] given');\n\n throwTypeErrorWhen(!isNumberInInterval(bbox.minLon, -270, 180),\n 'a bounding box minimal longitude is expected ' + bbox.minLon + ' [' + typeof bbox.minLon + '] given');\n\n throwTypeErrorWhen(!isNumberInInterval(bbox.maxLon, -180, 270),\n 'a bounding box maximal longitude is expected ' + bbox.maxLon + ' [' + typeof bbox.maxLon + '] given');\n\n throwTypeErrorWhen(checkBBoxNormalized(bbox), 'a bounding box expected but max <= min');\n\n return bbox;\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a float number in proper interval \n * @example\n * var numberBetweenMinusFiveAndFive = validators.numberInInterval(-5,5);\n * numberBetweenMinusFiveAndFive(-10); // false\n * numberBetweenMinusFiveAndFive(3); //true\n *\n * @param {Number} [min] The minimal value\n * @param {Number} [max] The maximal value\n * @return {Function} validator function that checks type and value range\n * @throws {TypeError} when missing min or max value\n */\n numberInInterval: function(min, max) {\n return validateNumberInInterval(min, max, 'a number in interval <' + min + ', ' + max + '> is expected');\n },\n\n /**\n * @ignore\n * Check whether the given parameter is an integer number in proper interval \n * @example\n * var numberBetweenMinusFiveAndFive = validators.numberInInterval(-5,5);\n * numberBetweenMinusFiveAndFive(-10); // false\n * numberBetweenMinusFiveAndFive(3); //true\n *\n * @param {Number} [min] The minimal value\n * @param {Number} [max] The maximal value\n * @return {Function} validator function that checks type and value range\n * @throws {TypeError} when missing min or max value\n */\n integerInInterval: function(min, max) {\n return validateIntInInterval(min, max,\n 'an integer in interval <' + (min + 1) + ', ' + max + '> is expected');\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a string\n * @param {String} string\n * @return {String} value\n * @throws {TypeError} for non strings\n */\n string: function(string) {\n if (!utils.isString(string)) {\n throw new TypeError('a string is expected, but ' + string + ' [' + typeof string + '] given');\n }\n return string;\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a geometries zoom value<0, 22>\n * @param {Number} geometriesZoom\n * @return {Number} value\n * @throws {TypeError} for non invalid parameter\n */\n geometriesZoom: function(geometriesZoom) {\n return validateNumberInInterval(0, 22, 'a geometries zoom value <0, 22> is expected')(geometriesZoom);\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a zoom level value<0, 18>\n * @param {Number} zoomLevel\n * @return {Number} value\n * @throws {TypeError} for non invalid parameter\n */\n zoomLevel: function(zoomLevel) {\n return validateIntInInterval(0, 18, 'zoom level <0, 18> is expected')(zoomLevel);\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a function\n * @param {Function} fun\n * @return {Function} fun\n * @throws {TypeError} for non function\n */\n functionType: function(fun) {\n if (typeof fun !== 'function') {\n throw new TypeError('a function is expected, but ' + fun + ' [' + typeof fun + '] given');\n }\n return fun;\n },\n\n /**\n * @ignore\n * Checks whether the given country name uses ISO 3166 alpha-3 or alpha-2 format.\n * @param {String} name\n * @return {String} name\n * @throws {TypeError} if the country name is not valid\n */\n countryCode: function(name) {\n if (!(utils.isString(name) && (name.length === 3 || name.length === 2))) {\n throw new TypeError('a 2 or 3-characters long country name is expected, but ' + name +\n ' [' + typeof name + '] given');\n }\n return name;\n },\n\n /**\n * @ignore\n * Checks whether the given language code belongs to predefined set of supported language codes\n * which is a subset of the IETF language tags.\n * @param {String|undefined} langCode\n * @return {String}\n */\n languageCode: function(langCode) {\n if (!utils.isString(langCode) || supportedLanguageCodes.indexOf(langCode) < 0) {\n throw new TypeError('One of pre-defined language codes was expected: ' + supportedLanguageCodes +\n ', but ' + langCode + ' [' + typeof langCode + '] given');\n }\n return langCode;\n },\n\n /**\n * @ignore\n * Checks whether the given country name's list use ISO 3166 alpha-3 or alpha-2 format.\n * @param {String|Array} value\n * @return {String} list\n * @throws {TypeError} if one of the country names is not valid\n */\n countrySet: function(value) {\n var stringValue;\n throwTypeErrorWhen(!utils.isString(value) && checkArray(value),\n 'An array of string country names or string (divided with commas) of country ' +\n 'names (two or three-characters long) is expected, but ' + value + ' [' + typeof value + '] given');\n\n stringValue = utils.isString(value) ? value : value.join();\n throwTypeErrorWhen(!stringValue.match(/^([a-zA-z]{2,3},)*[a-zA-z]{2,3}$/),\n 'An array of string country names or string (divided with commas) of country ' +\n 'names (two or three-characters long) is expected, but ' + value + ' [' + typeof value + '] given');\n\n return stringValue;\n },\n\n /**\n * @ignore\n * Checks whether the given country name's list use ISO 3166 alpha-3 or alpha-2 format.\n * @param {Boolean} allowEmpty Specifies that it allows empty array as a valid value\n * @param {String|Array} value\n * @return {String} list\n * @throws {TypeError} if one of the country names is not valid\n */\n countrySetAlpha3: function(allowEmpty, value) {\n var stringValue;\n throwTypeErrorWhen(!utils.isString(value) && checkArray(value),\n 'An array of string country names or string (divided with commas) of country ' +\n 'names (three-characters long) is expected, but ' + value + ' [' + typeof value + '] given');\n\n stringValue = utils.isString(value) ? value : value.join();\n if (allowEmpty && stringValue === '') {\n return value;\n }\n throwTypeErrorWhen(!stringValue.match(/^([a-zA-z]{3},)*[a-zA-z]{3}$/),\n 'An array of string country names or string (divided with commas) of country ' +\n 'names (three-characters long) is expected, but ' + value + ' [' + typeof value + '] given');\n\n return value;\n },\n\n /**\n * @ignore\n * Checks whether the given point is in proper format\n * @param {String} value\n * @return {String} value\n * @throws {TypeError} if the given value is in not valid format\n */\n point: function(value) {\n isPointValid(value);\n return value;\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a positive integer (greater than 0) and lower than 3\n * @param {Number} value The value\n * @return {Number} value\n * @throws {TypeError} for invalid parameter\n */\n fuzzinessLevel: function(value) {\n return validateIntInInterval(0, 4,\n 'Fuzziness level value (a positive integer lower than 5) is expected')(value);\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a positive integer (greater than 0) and lower than 100\n * @param {Number} value The value\n * @return {Number} value\n * @throws {TypeError} for invalid parameter\n */\n limit: function(value) {\n return validateIntInInterval(0, 100, 'Limit value (a positive integer lower than 100) is expected')(value);\n },\n\n /**\n * @ignore\n * Check whether the given parameter is an offset - positive integer <0, 1900>\n * @param {Number} value The value\n * @return {Number} value\n * @throws {TypeError} for invalid parameter\n */\n offset: function(value) {\n return validateIntInInterval(-1, 1900, 'Offset an integer value <0, 1900> is expected')(value);\n },\n\n /**\n * @ignore\n * Check whether the given parameter is a plain object (array and functions aren't accepted)\n * @param {Object} object\n * @return {Object} object\n * @throws {TypeError} for non object\n */\n plainObject: function(object) {\n if (typeof object !== 'object' || object.constructor !== Object) {\n throw new TypeError('an object is expected, but ' + object + ' [' + typeof object + '] given');\n }\n return object;\n },\n\n /**\n * @ignore\n * Check whether the given parameter is an array (objects and functions aren't accepted)\n * @param {Array} array\n * @return {Array} array\n * @throws {TypeError} for non array\n */\n arrayType: function(array) {\n if (checkArray(array)) {\n throw new TypeError('an array is expected, but ' + array + ' [' + typeof array + '] given');\n }\n return array;\n },\n\n arrayOf: function(options) {\n return function(values) {\n values.forEach(function(value) {\n var key;\n for (key in options) {\n if (options.hasOwnProperty(key)) {\n if (value.hasOwnProperty(key) && typeof options[key].validator === 'function') {\n value[key] = options[key].validator(value[key]);\n }\n\n if (options[key].required === true && !value.hasOwnProperty(key)) {\n throw new Error('Missing required ' + key);\n }\n }\n }\n });\n return values;\n };\n },\n\n objectOf: function(options) {\n return function(value) {\n var key;\n for (key in options) {\n if (options.hasOwnProperty(key)) {\n if (value.hasOwnProperty(key) && typeof options[key].validator === 'function') {\n value[key] = options[key].validator(value[key]);\n }\n if (options[key].required === true && !value.hasOwnProperty(key)) {\n throw new Error('Missing required ' + key);\n }\n }\n }\n return value;\n };\n },\n\n roadUse: function(value) {\n var elements, i;\n throwTypeErrorWhen(!utils.isString(value) || !value.match(/^\\[(\"\\w*\",?)+\\]$/),\n 'Road use is expected, but ' + value + ' [' + typeof value + '] given');\n\n elements = value.replace(/[\"[\\]]/g, '').split(',');\n for (i = 0; i < elements.length; i += 1) {\n throwTypeErrorWhen(roadUseValues.indexOf(elements[i]) < 0,\n 'Road use (' + roadUseValues + ') is expected, but ' + value +\n ' [' + typeof value + '] given');\n }\n return value;\n },\n\n oneOfValue: function(values, paramName) {\n return function(value) {\n var message = 'Supported ' + paramName + ' is expected (one of: ' + values + '), but ' + value +\n ' [' + typeof value + '] given';\n return validateAgainstSetOfValues(value, values, message);\n };\n },\n\n arrayOfValues: function(values, paramName) {\n return function(value) {\n var i;\n var message = 'Supported ' + paramName + ' type is expected (array with one of: ' + values +\n '), but ' + value + ' [' + typeof value + '] given';\n if (checkArray(value)) {\n throw new TypeError('an array is expected, but ' + value + ' [' + typeof value + '] given');\n }\n for (i = 0; i < value.length; i += 1) {\n validateAgainstSetOfValues(value[i], values, message);\n }\n return value;\n };\n },\n\n /**\n * @ignore\n * Checks whether the given departure time is now or in proper rfc3339 format ( 1996-12-19T16:39:57 or\n * 1996-12-19T16:39:57-08:00 ):\n * @param {String} value\n * @return {String} value\n * @throws {TypeError} if the given value is not valid\n */\n departAt: function(value) {\n if (value === 'now' || isDateRfc3339(value) && Date.now() < Date.parse(value)) {\n return value;\n } else {\n throw new TypeError('Supported departAt is now or rfc3339 format and no earlier than now(), but ' +\n value + ' [' + typeof value + '] given');\n }\n },\n\n /**\n * @ignore\n * Checks whether the given arrive time is in proper rfc3339 format ( 1996-12-19T16:39:57 or\n * 1996-12-19T16:39:57-08:00 ):\n * @param {String} value\n * @return {String} value\n * @throws {TypeError} if the given value is not valid\n */\n arriveAt: function(value) {\n if (isDateRfc3339(value) && Date.now() < Date.parse(value)) {\n return value;\n } else {\n throw new TypeError('Supported arriveAt is rfc3339 format, but and no earlier than now() ' +\n value + ' [' + typeof value + '] given');\n }\n },\n\n dateRfc3339: function(value) {\n if (isDateRfc3339(value)) {\n return value;\n } else {\n throw new TypeError('Expecting date in RFC3339 format, but ' +\n value + ' [' + typeof value + '] given');\n }\n },\n\n routingGuidanceLanguage: function(value) {\n var message = 'Supported routing guidance language is expected to be one of: ' +\n routingGuidanceLanguageValues + '), but ' + value + ' [' + typeof value + '] given';\n return validateAgainstSetOfValues(value, routingGuidanceLanguageValues, message);\n },\n\n trafficIncidentsLanguage: function(value) {\n var message = 'Supported traffic incidents language is expected to be one of: ' +\n trafficIncidentsLanguageValues + '), but ' + value + ' [' + typeof value + '] given';\n return validateAgainstSetOfValues(value, trafficIncidentsLanguageValues, message);\n },\n\n /**\n * @ignore\n * Checks whether the given routing locations is in proper format:\n * circle A circle with a center point and a radius (in meters).\n * The radius must be a positive integer with the maximum value of 20050000. Note that larger integer values\n * will not be rejected but lowered to the maximum value. circle(52.37245,4.89406,10000) location A point or\n * a circle.\n * 52.37245,4.89406\n * circle(52.37245,4.89406,10000)\n * @param {String} value\n * @return {String} value\n * @throws {TypeError} if the given value is not valid\n */\n routingLocations: function(value) {\n var point = utils.pointRegex,\n circle = utils.circleRegex,\n routingLocation;\n\n if (value.constructor.toString().indexOf('Array') > -1) {\n value = value.join(':');\n }\n\n routingLocation = new RegExp('^' + point.source + ':(?:(?:' + point.source + '|' +\n circle.source + '):)*' + point.source + '$');\n if (!value.match(routingLocation)) {\n throw new TypeError('Routing location is expected. But ' + value + ' [' + typeof value + '] given');\n }\n return value;\n },\n\n /**\n * @ignore\n * Checks whether the given input is in proper circle format:\n * circle A circle with a center point and a radius (in meters).\n * The radius must be a positive integer with the maximum value of 20050000. Note that larger integer values\n * will not be rejected but lowered to the maximum value. circle(52.37245,4.89406,10000)\n * @param {String} value\n * @return {String} value\n * @throws {TypeError} if the given value is not valid\n */\n circle: function(value) {\n var match;\n throwTypeErrorWhen(!utils.isString(value),\n 'Expecting circle but ' + value + ' [' + typeof value + '] given');\n\n match = value.match(/circle\\(-?\\d*(?:\\.\\d*)?\\s*,\\s*-?\\d*(?:\\.\\d*)?\\s*,\\s*(\\d+)\\)/);\n throwTypeErrorWhen(!match || parseFloat(match[1]) > 20050000,\n 'Expecting circle but ' + value + ' [' + typeof value + '] given');\n\n return value;\n },\n\n /**\n * @ignore\n * Checks whether the given input is in proper geometry list format.\n * Geometry list represents list of figures (polygons or circles) objects.\n * Circle contains properties like: type (\"CIRCLE\"), position (lat & lon) and radius.\n * Polygon contains properties like: type (\"POLYGON\") and vertices (as a list of points).\n *\n * @param {Array} value\n * @return {Array} value\n * @throws {TypeError} if the given value is not valid\n */\n geometryList: function(value) {\n var i, geoObject;\n throwTypeErrorWhen(checkArray(value), 'An array of geometry objects is expected, but ' +\n value + ' [' + typeof value + '] given');\n\n if (value.length > 0) {\n for (i = 0; i < value.length; i += 1) {\n geoObject = value[i];\n throwTypeErrorWhen(!geoObject.hasOwnProperty('type') ||\n !geoObject.hasOwnProperty('vertices') &&\n (!geoObject.hasOwnProperty('position') || !geoObject.hasOwnProperty('radius')),\n 'An array of geometry objects is expected, but ' + value + ' [' + typeof value + '] given');\n }\n } else {\n throw new TypeError('An array of geometry objects is expected, but ' + value +\n ' [' + typeof value + '] given');\n }\n return value;\n },\n locale: function(serviceType) {\n /**\n * @ignore\n * Checks whether provided value is a valid language code for given serviceType\n * @param {String} value language code to be validated\n * @return {String} provided value if it's valid\n * @throws {TypeError} if the given value is not valid\n */\n return function(value) {\n throwTypeErrorWhen(!localeValidator(value, serviceType),\n 'Provided language code \"' + value + '\" is not valid for a given service type: \"' +\n serviceType + '\"');\n return value;\n };\n },\n geopolView: function(serviceType, name) {\n if (!serviceType) {\n throw new Error('Please specify a service type.');\n }\n\n return function(value) {\n var supportedGeopolViews = GeopolViewService.getSupportedViews(serviceType, 'all').map(function(view) {\n return view.code;\n });\n\n throwTypeErrorWhen(supportedGeopolViews.indexOf(value) === -1,\n name + ': Provided geopolitical view code \"' + value + '\" is not valid');\n return value;\n };\n },\n\n /**\n * @ignore\n *\n * Checks if the given value has a property 'route' which is an array of points.\n * By array of points we mean array of an array of { lat, lon }, { lat, lng }, [ num, num ],\n * L.LatLng objects or mixed.\n *\n * @param {Object} value\n *\n * @return {Object} value Stringified array of figures (JSON format).\n * @throws {TypeError} if the given value is not valid\n */\n route: function(value) {\n var points;\n\n if (typeof value.points !== 'undefined') {\n points = value.points;\n } else {\n throw new TypeError('Invalid structure of the route object');\n }\n\n if (points && !(Array.isArray(points) && points.length > 2)) {\n throw new TypeError('Provided route array ' +\n points + ' is not valid. It should be an array with at least 2 points.');\n }\n points.forEach(checkPointObjectOrArray);\n return value;\n },\n\n supportingPoints: function(value) {\n if (!utils.isArray(value)) {\n throw new TypeError('Invalid structure of the supporting points');\n }\n\n if (!value.length || value.length < 2) {\n throw new TypeError('There should be at least two supporting points');\n }\n return value;\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/validators.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * This module extends the Leaflet library in order to display a TomTom map.\n *\n * For a full reference of the Leaflet map API check the official\n * Leaflet's documentation.\n *\n * We are using leaflet's version ${leaflet.version}.\n *\n * If you want to use vector source in the map the basePath must be specified.\n * Keep this in mind when you switch from raster to vector source, for example when opening our examples in CodePen,\n * otherwise the map will not render properly.\n *\n * Example of how to create a basic map instance:\n *\n * ```html\n * \n *\n *
\n *\n * \n * ```\n *\n * @class Map\n * @extends L.Map (Leaflet's)\n * @module Map\n * @namespace L\n * @constructor\n * @param {HTMLElement|String} id The div element or its id in which the map will be initialized.\n * @param {Object} [options] It accepts all the options that\n * Leaflet's Map\n * class allows.\n * The additional options, which are TomTom specific, are described below.\n * @param {String} [options.key] API key that can be obtained from\n * TomTom's developer portal.\n * When the key is passed on the map's initialization, it is set globally for all the services. It can be\n * overwritten with the `tomtom.key()` method globally or per service with `tomtom..key()` functions.\n * It is also possible to pass a specific key while working with instances of the services.\n * @param {\"main\"|\"night\"} [options.style=\"main\"] The base map style to be used.\n * @param {\"basic\"|\"hybrid\"|\"labels\"} [options.layer=\"basic\"] The base map's layer to be used.\n * @param {\"Unified\"|\"IN\"} [options.geopolView] Define the geopolitical view for the new map instance.\n * @param {Boolean|Object} [options.traffic] Allows to easily add the\n * {{#crossLink \"L.TomTomTrafficLayer\"}}{{/crossLink}} and\n * {{#crossLink \"L.TomTomTrafficIncidentsLayer\"}}{{/crossLink}} layers to the map. A value of this parameter can\n * be set to an options object as described in the traffic layer documentation.\n * If traffic layers are added with this option, a mechanism for periodic refresh of the traffic data is provided\n * (using a proper traffic model id handling). If you pass source parameter set to vector, {{#crossLink \"L.TomTomVectorTrafficIncidentsLayer\"}}{{/crossLink}}\n * will be added as a source for incident tiles instead of raster one.\n * @param {Boolean} [options.traffic.noRefresh] Disables periodic updates of traffic layers.\n * @param {Number} [options.traffic.refresh=30000] The traffic incidents information changes and needs to be updated\n * periodically. By default, it is refreshed every 30 seconds. This parameter's value represents the time\n * in milliseconds between each update interval. The value must be 0 or greater.\n * @param {Boolean|Object} [options.trafficFlow] Allows to add {{#crossLink \"L.TomTomTrafficFlowLayer\"}}{{/crossLink}}\n * to the map. A value of this parameter can be set to the options object as described in the traffic flow layer\n * documentation. If you specify source set to vector as one of the parameters it will add\n * {{#crossLink \"L.TomTomVectorTrafficFlowLayer\"}}{{/crossLink}} instead.\n * @param {Boolean|Object} [options.vectorTrafficFlow] Allows to add {{#crossLink \"L.TomTomVectorTrafficFlowLayer\"}}\n * {{/crossLink}} to the map. A value of this parameter can be set to the options object as described in the traffic\n * flow layer documentation.\n * @param {Boolean} [options.noLabelsOnTop=false] If a traffic or traffic flow layer is overlayed on the map, then by\n * default, the labels layer is added on top of these layers. It prevents labels from being covered by the traffic\n * tubes or traffic flow. With this option, it is possible to disable this behaviour.\n * @param {String|String[]} [options.source=\"raster\"] Sets the initial source and determines which tiles types will be\n * displayed (raster, vector). If an array is given first item is used as a default source and next items are\n * initialized but not displayed. If MapboxGL JS dependency is not met vector layer will not initialize.\n * @param {String} [options.glyphsUrl] Glyphs are fonts in PBF required to display labels on vector maps. The Url must\n * contain the {fontstack} and {range} tokens. The SDK distributable already contains the glyphs required by the default\n * vector styles - you just need to provide a path to them on your server.\n * Example of a URL format for this property:\n * ```javascript\n * \"http://yourdomain/glyphs/{fontstack}/{range}.pbf\"\n * ```\n * @param {String} [options.basePath = '/sdk'] Base path for sdk. It will be used in relative paths - it is especially\n * important for maps with vector sources. E.g if you set this option to `\"/myPath\"`, default urls for styles will\n * be set to `/myPath/styles/basic_main.json`.\n * This property is used only if you do not provide custom mapping for given url mapping.\n * @param {Object} [options.styleUrlMapping] Overrides the default URLs for vector style files.\n * The default value is as follows:\n * ```javascript\n * {\n * main: {\n * basic: '/sdk/styles/basic_main.json',\n * hybrid: '/sdk/styles/hybrid_main.json',\n * labels: '/sdk/styles/labels_main.json'\n * },\n * night: {\n * basic: '/sdk/styles/basic_night.json',\n * hybrid: '/sdk/styles/hybrid_night.json',\n * labels: '/sdk/styles/labels_night.json'\n * }\n * }\n * ```\n * @param {String} [options.spriteUrl] Set the base URL for the sprite image and metadata. The extensions .png, .json\n * and scale factor will be appended at the end of URL automatically. The sprite URL is required to display icons\n * like road shields on vector maps.\n * Example of a URL format for this property:\n * ```javascript\n * \"http://yourdomain/sprite/sprite\"\n * ```\n * @param {Boolean} [options.zoomControl=true] Show a zoom control at the top left corner of the map.\n * @param {Boolean} [options.panControl=false] Enable the pan controls at the top left corner of the map.\n * @param {Boolean} [options.zoomsliderControl=false] Shows a vertical slider to control the zoom level.\n * It is recommended to disable the default zoom control option (`zoomControl=false`) when you use this feature.\n * @param {Boolean} [options.worldCopyJump=true]\n * @param {String} [options.language] Language to be used for map labels. Should be one of supported\n * IETF language tags described\n * here.\n * When data in specified language is not available for a specific label,\n * default language\n * is used.\n */\n/* eslint-enable max-len */\n\n/* This method is implemented in staticMapImageFactory.js but documented here due to a\n yuidoc's bug in the @for tag */\n/**\n * Returns an URL string to obtain an static image version of the current map's viewport.\n *\n * This method uses the {{#crossLink \"StaticMapImage\"}}{{/crossLink}} class to generate an URL to get static image\n * based on the configuration of the current map's instance.\n *\n * @method getStaticMapUrl\n * @return {String} An URL string to the image\n */\n/* jshint nomen:false */\ndefine([\n 'leaflet',\n './svgIcon',\n './imagePath',\n 'mapboxProvider',\n 'security',\n 'services/copyrights/copyrightCaption',\n './copyright',\n './layers/trafficWithIncidents',\n './layers/trafficFlowLayer',\n './layers/vector/vectorTrafficFlowLayer',\n './layers/vector/vectorTrafficWithIncidents',\n './layers/labelsLayer',\n './layers/vector/vectorLabelsLayer',\n './layers/tileLayer',\n './layers/vector/vectorLayer',\n '../config/unit/unitService',\n '../config/unit/globalUnitService',\n '../config/language/localeService',\n '../config/language/globalLocaleService',\n '../config/geopolView/geopolViewService',\n '../config/geopolView/globalGeopolViewService',\n 'services/routing/routingContext',\n 'services/utils',\n './mapUtils',\n './layerOptionsUpdater'\n],\nfunction(\n L,\n svgIcon,\n imagePath,\n mapboxProvider,\n security,\n copyrightCaption,\n copyright,\n trafficWithIncidents,\n trafficFlow,\n vectorTrafficFlow,\n vectorTrafficIncidents,\n labelsLayer,\n VectorLabelsLayer,\n tileLayer,\n VectorLayer,\n UnitService,\n globalUnitService,\n LocaleService,\n globalLocaleService,\n GeopolViewService,\n globalGeopolViewService,\n RoutingContext,\n utils,\n mapUtils\n) {\n 'use strict';\n var EVENTS = {\n /**\n * Fired when attribution was fully loaded. Loaded attribution is passed as event data.\n * @event ATTRIBUTION_LOAD_END\n * @type String\n */\n ATTRIBUTION_LOAD_END: 'tomtom.attributionloadend'\n };\n\n function roundZoom(map, source) {\n if (source === 'raster') {\n map.setZoom(Math.floor(map.getZoom()));\n }\n }\n\n L.Map.Events = EVENTS;\n\n L.Map.mergeOptions({\n worldCopyJump: true\n });\n\n delete L.Map.prototype.options.minZoom;\n delete L.Map.prototype.options.maxZoom;\n\n /**\n * Method allows to change a source data for currently shown map. It should be one of sources provided\n * at creation as a property 'options.source'\n *\n * @method setMapSource\n * @param {\"raster\"|\"vector\"} source\n */\n L.Map.prototype.setMapSource = function(source) {\n var baseLayers, map, requestedLayer, baseLayer;\n map = this;\n baseLayers = map._ttBaseLayers;\n requestedLayer = baseLayers[source];\n if (!requestedLayer) {\n return;\n }\n\n for (baseLayer in baseLayers) {\n if (baseLayers.hasOwnProperty(baseLayer)) {\n this.removeLayer(baseLayers[baseLayer]);\n }\n }\n\n roundZoom(map, source);\n\n map.addLayer(requestedLayer);\n };\n\n /**\n * @method getBaseLayers\n * @return {Object} Returns base layers initialized on map\n */\n L.Map.prototype.getBaseLayers = function() {\n return this._ttBaseLayers;\n };\n\n /**\n * Returns localeService which is bound to this map instance. Please note\n * that if you change value in globalLocaleService this one will be updated\n * too, but not other way around.\n * @method getLocaleService\n * @return {LocaleService}\n */\n L.Map.prototype.getLocaleService = function() {\n return this._localeService;\n };\n\n /**\n * Returns unitService which is bound to this map instance. Please note\n * that if you change the unit of the global UnitService instance this one will be updated\n * too, but not way around.\n * @method getUnitService\n * @return {UnitService}\n */\n L.Map.prototype.getUnitService = function() {\n return this._unitService;\n };\n\n /**\n * Returns the GeopolViewService instance which is bound to the map instance.\n * Please note that if you change the geopolitical view of the\n * global L.GeopolViewService instance this one will be updated too\n * but not way around.\n * @method getGeopolViewService\n * @return {GeopolViewService}\n */\n L.Map.prototype.getGeopolViewService = function() {\n return this._geopolViewService;\n };\n\n L.Control.Attribution.prototype.options = {\n position: 'bottomleft',\n prefix: ''\n };\n\n L.Icon.Default = svgIcon;\n L.Icon.Default.imagePath = imagePath.get();\n L.Marker.mergeOptions({ icon: new L.Icon.Default() });\n\n function removeInvalidSources(source) {\n var allowedSources = /^(raster|vector)$/;\n var sourceLenght = source.length;\n var validSource = [];\n var currentSource, i;\n\n for (i = 0; i < sourceLenght; i++) {\n currentSource = String(source[i]).toLowerCase();\n if (allowedSources.test(source[i])) {\n validSource.push(currentSource);\n }\n }\n\n return validSource;\n }\n\n function getSource(map) {\n var source = map.options.source || ['raster'];\n var defaultSource = ['raster'];\n\n if (utils.isString(source)) {\n source = [source];\n }\n\n source = removeInvalidSources(source);\n\n return source.length > 0 ? source : defaultSource;\n }\n\n function isOlderThanIE11() {\n return window.navigator.userAgent.indexOf('MSIE ') > -1;\n }\n\n function copyBasePathIfNeeded(map, property) {\n if (!map.options[property].basePath) {\n map.options[property].basePath = map.options.basePath;\n }\n }\n\n function initTrafficLayer(map) {\n if (map.options.traffic) {\n if (map.options.traffic.source && map.options.traffic.source === 'vector') {\n copyBasePathIfNeeded(map, 'traffic');\n map.addLayer(vectorTrafficIncidents(map.options.traffic));\n } else {\n map.addLayer(trafficWithIncidents(map.options.traffic));\n }\n }\n }\n\n function initTrafficFlowLayer(map) {\n var vectorLayerAdded = false;\n if (map.options.trafficFlow) {\n if (map.options.trafficFlow.source && map.options.trafficFlow.source === 'vector') {\n copyBasePathIfNeeded(map, 'trafficFlow');\n map.addLayer(vectorTrafficFlow(map.options.trafficFlow));\n vectorLayerAdded = true;\n } else {\n map.addLayer(trafficFlow(map.options.trafficFlow));\n }\n }\n if (map.options.vectorTrafficFlow && !vectorLayerAdded) {\n copyBasePathIfNeeded(map, 'vectorTrafficFlow');\n map.addLayer(vectorTrafficFlow(map.options.vectorTrafficFlow));\n }\n }\n\n function initLabelsLayers(map) {\n var source = getSource(map);\n var layerInstance;\n var vectorLabelsInstance;\n map._ttLabelsLayers = {};\n\n if (source.indexOf('raster') !== -1 && !map.options.noLabelsOnTop && !isOlderThanIE11()) {\n //This will not work on IE < 11 due to not supported CSS: pointer-events: none;\n layerInstance = labelsLayer(map.options);\n layerInstance.registerEventHandlers(map);\n L.stamp(layerInstance);\n map._ttLabelsLayers.raster = layerInstance;\n }\n\n if (source.indexOf('vector') !== -1 && !map.options.noLabelsOnTop && mapboxProvider.isMapboxSet()) {\n vectorLabelsInstance = new VectorLabelsLayer(map.options);\n vectorLabelsInstance.registerEventHandlers(map);\n L.stamp(vectorLabelsInstance);\n map._ttLabelsLayers.vector = vectorLabelsInstance;\n }\n }\n\n function initZoomFix(map) {\n var mac = navigator.platform === 'MacIntel';\n if (!mac) {\n return;\n }\n map._handlers.filter(function(handler) {\n return '_performZoom' in handler;\n }).forEach(function(handler) {\n var original = handler._performZoom;\n handler._performZoom = function() {\n handler._delta *= 13.25;\n original.apply(handler);\n };\n });\n }\n\n function createWebGLErrorDiv(map) {\n var div = L.DomUtil.create('div', 'tomtom-webgl-error');\n div.appendChild(document.createTextNode('Unable to initialize vector layer - browser doesn\\'t support WebGL!'));\n if (map._controlContainer) {\n map._controlContainer.appendChild(div);\n }\n }\n\n function isWebGlSupported() {\n var canvas = document.createElement('canvas');\n var webGlContext = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\n\n if (webGlContext && webGlContext instanceof WebGLRenderingContext) {\n return true;\n }\n\n return false;\n }\n\n function resolveMapboxSupport(map) {\n var defaultFallback = 'error';\n var allowedFallbacks = /^(error|raster)$/;\n var source = getSource(map);\n var fallback = map.options.vector ? String(map.options.vector.fallback).toLowerCase() : '';\n fallback = allowedFallbacks.test(fallback) ? fallback : defaultFallback;\n\n if (source.indexOf('vector') === -1 || (mapboxProvider.isMapboxSupported() && isWebGlSupported())) {\n return;\n }\n\n switch (fallback) {\n case 'raster':\n map.options.source = ['raster'];\n break;\n case 'error':\n if (isWebGlSupported()) {\n throw new Error('MapBox failed to load. Make sure you\\'re using vector library.');\n }\n\n createWebGLErrorDiv(map);\n throw new Error('Unable to initialize vector layer - browser doesn\\'t support WebGL!');\n default:\n throw new Error('Something went wrong with vectorFallback!');\n }\n }\n\n function getMapOptionsWithGeopolView(map, mapLayer) {\n var options;\n if (!map.options.geopolView) {\n return map.options;\n }\n options = utils.clone(map.options);\n options.geopolView = map._geopolViewService.getCurrentGeopolView().getValueFor('maps', mapLayer);\n return options;\n }\n\n function recreateLayer(layer) {\n var map = this,\n currentLayer = map._ttBaseLayers ? map._ttBaseLayers[layer] : undefined,\n newLayer;\n /**\n * @ignore\n * Even if we do not make layer active right now, we need to keep up-to-date reference of\n * vector/raster layer. There is a public method 'getBaseLayers()' which is used in map-style.html\n * example, which uses those references to change between vector and raster.\n * So, if we change language while raster is active, vector/raster should be updated too,\n * in case when user wants to add layer using those references\n */\n if (currentLayer) {\n newLayer = layer === 'vector' ?\n new VectorLayer(getMapOptionsWithGeopolView(map, 'vector')) :\n new L.TomTomLayer(getMapOptionsWithGeopolView(map, 'raster'));\n L.stamp(newLayer);\n map._ttBaseLayers[layer] = newLayer;\n if (mapUtils.findLayersByName(layer, map).length > 0) {\n map.addLayer(newLayer);\n map.removeLayer(currentLayer);\n }\n }\n }\n\n function mapLocaleChangedHandler(locale) {\n this.options.language = locale.getValueFor('maps');\n recreateLayer.call(this, 'vector');\n recreateLayer.call(this, 'raster');\n }\n\n function mapGeopolViewChangedHandler(geopolView) {\n this.options.geopolView = geopolView.getCode();\n recreateLayer.call(this, 'vector');\n recreateLayer.call(this, 'raster');\n }\n\n function initBaseLayer(map) {\n var source = getSource(map);\n var layers = [];\n var i;\n map._ttBaseLayers = {};\n\n if (source.indexOf('raster') !== -1) {\n map._ttBaseLayers.raster = tileLayer(getMapOptionsWithGeopolView(map, 'raster'));\n L.stamp(map._ttBaseLayers.raster);\n }\n\n if (mapboxProvider.tryToSetMapbox() && source.indexOf('vector') !== -1) {\n map._ttBaseLayers.vector = new VectorLayer(getMapOptionsWithGeopolView(map, 'vector'));\n L.stamp(map._ttBaseLayers.vector);\n }\n\n for (i = 0; i < map.options.layers.length; i++) {\n if (map.options.layers[i].wmsParams) {\n layers.push(L.tileLayer.wms(map.options.layers[i]._url, map.options.layers[i].wmsParams));\n }\n }\n\n if (!layers.length) {\n switch (source[0]) {\n case 'vector':\n if (map._ttBaseLayers.vector === undefined) {\n throw new Error('Can not add vector layer. Mapbox-gl-js dependency not met.');\n }\n layers = [map._ttBaseLayers.vector];\n break;\n case 'raster':\n layers = [map._ttBaseLayers.raster];\n break;\n default:\n throw new Error('Something went wrong with sources!');\n }\n }\n\n map.options.layers = layers;\n }\n\n /**\n * @ignore\n * This function ensures that the custom zoom configuration given by the user has the correct format.\n * It convert string numbers to numbers. That's all.\n * @param {L.Map} map\n */\n function initZoomConfig(map) {\n if (isFinite(map.options.zoomDelta)) {\n map.options.zoomDelta = parseFloat(map.options.zoomDelta);\n }\n if (isFinite(map.options.zoomSnap)) {\n map.options.zoomSnap = parseFloat(map.options.zoomSnap);\n }\n if (isFinite(map.options.wheelPxPerZoomLevel)) {\n map.options.wheelPxPerZoomLevel = parseInt(map.options.wheelPxPerZoomLevel, 10);\n }\n }\n\n function initRoutingContext(map) {\n map._routingContext = new RoutingContext();\n }\n\n function cleanUp(map) {\n map._localeService.cleanEvents();\n map._geopolViewService.cleanEvents();\n }\n\n function installUnitServiceSupport(map) {\n map._unitService = new UnitService(globalUnitService);\n }\n\n function installLocaleServiceSupport(map) {\n map._localeService = new LocaleService(globalLocaleService);\n map._localeService.on(L.LocaleService.Events.LOCALE_CHANGED, mapLocaleChangedHandler.bind(map));\n map._localeService.setCurrentLocale(map.options.language);\n map.options.language = map._localeService.getCurrentLocale().getLanguageCode();\n }\n\n function installGeopolViewServiceSupport(map) {\n map._geopolViewService = new GeopolViewService(globalGeopolViewService);\n map._geopolViewService.on(L.GeopolViewService.Events.GEOPOL_VIEW_CHANGED,\n mapGeopolViewChangedHandler.bind(map));\n if (map.options.geopolView) {\n map._geopolViewService.setCurrentGeopolView(map.options.geopolView);\n }\n }\n\n function initHook() {\n var map = this,\n attributionMarkup = '',\n originalAddAttribution;\n L.Icon.Default.imagePath = imagePath.get(this);\n installUnitServiceSupport(map);\n installLocaleServiceSupport(map);\n installGeopolViewServiceSupport(map);\n try {\n resolveMapboxSupport(map);\n security.setKey(map.options.key);\n initZoomConfig(map);\n initBaseLayer(map);\n initLabelsLayers(map);\n initTrafficFlowLayer(map);\n initTrafficLayer(map);\n initRoutingContext(map);\n initZoomFix(map);\n\n if (map.getZoom() === undefined) {\n map.setView([0, 0], 2);\n }\n if (!map.options.maxBounds) {\n map.setMaxBounds(L.latLngBounds([[-90, -18000], [90, 18000]]));\n }\n copyrightCaption().go(function(attribution) {\n if (map.attributionControl) {\n originalAddAttribution = map.attributionControl.addAttribution;\n map.attributionControl.addAttribution = function() {\n originalAddAttribution.apply(this, arguments);\n copyright.updateEventHandler(map);\n };\n\n attributionMarkup += '';\n attributionMarkup += attribution;\n attributionMarkup += '';\n map.attributionControl.addAttribution(attributionMarkup);\n map.fire(L.Map.Events.ATTRIBUTION_LOAD_END, {data: attributionMarkup});\n }\n });\n } catch (err) {\n console.error(err);\n cleanUp(map);\n throw err;\n }\n\n }\n\n L.Map.addInitHook(initHook);\n\n return L;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/map.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/* jshint nomen:false */\ndefine(['./utils', '../config/language/locale'], function(utils, Locale) {\n 'use strict';\n\n var trafficIncidentsLanguageMapping, routingGuidanceLanguageMapping;\n\n function isFunction(fun) {\n return typeof fun === 'function';\n }\n\n function isArray(array) {\n if (!array) {\n return false;\n }\n return array.constructor.toString().indexOf('Array') > -1;\n }\n\n function isLatLon(latlon) {\n return latlon.hasOwnProperty('lat') && (latlon.hasOwnProperty('lon') || latlon.hasOwnProperty('lng'));\n }\n\n function or(first, second) {\n if (first === undefined) {\n return second;\n }\n return first;\n }\n\n function signOfNumber(val) {\n return val < 0 ? -1 : 1;\n }\n\n function throwTypeErrorWhen(condition, message) {\n if (condition) {\n throw new TypeError(message);\n }\n }\n\n function normalizeLatitude(latitude) {\n var numLatitude = parseFloat(latitude);\n var i;\n if (!isFinite(numLatitude)) {\n throw new TypeError('an number is expected, but ' + latitude + ' [' + typeof latitude + '] given');\n }\n if (numLatitude < -90 || numLatitude > 90) {\n i = Math.ceil(Math.abs(numLatitude) / 180);\n return numLatitude - signOfNumber(numLatitude) * 180 * i;\n }\n return numLatitude;\n }\n\n function normalizeLongitude(longitude) {\n var numLongitude = parseFloat(longitude);\n var i;\n if (!isFinite(numLongitude)) {\n throw new TypeError('an number is expected, but ' + longitude + ' [' + typeof longitude + '] given');\n }\n if (numLongitude < -180 || numLongitude > 180) {\n i = Math.ceil(Math.abs(numLongitude) / 360);\n return numLongitude - signOfNumber(numLongitude) * 360 * i;\n }\n return numLongitude;\n }\n\n function isXY(xy) {\n return xy.hasOwnProperty('x') && xy.hasOwnProperty('y');\n }\n\n function isLatitudeLongitude(value) {\n return value.hasOwnProperty('latitude') && value.hasOwnProperty('longitude');\n }\n\n function isLatLonFunction(value) {\n return isFunction(value.lat) && isFunction(value.lng);\n }\n\n function castPoint(value) {\n var match;\n if (isArray(value) && value.length === 2) {\n return value;\n }\n if (utils.isString(value)) {\n match = value.match(utils.pointRegex);\n throwTypeErrorWhen(!match || !match[1] || !match[2],\n 'A point is expected, but ' + value + ' [' + typeof value + '] given');\n return [match[1], match[2]];\n }\n if (isLatLonFunction(value)) {\n return [value.lat(), value.lng()];\n }\n if (isLatLon(value)) {\n return [value.lat, or(value.lon, value.lng)];\n }\n if (isXY(value)) {\n return [value.y, value.x];\n }\n if (isLatitudeLongitude(value)) {\n return [value.latitude, value.longitude];\n }\n throw new TypeError('A point is expected, but ' + value + ' [' + typeof value + '] given');\n }\n\n function isLatLonBBox(bbox) {\n return bbox.hasOwnProperty('minLon') && bbox.hasOwnProperty('minLat') &&\n bbox.hasOwnProperty('maxLon') && bbox.hasOwnProperty('maxLat');\n }\n\n function isRightLeftTopBottomBBox(bbox) {\n return bbox.hasOwnProperty('left') && bbox.hasOwnProperty('bottom') &&\n bbox.hasOwnProperty('right') && bbox.hasOwnProperty('top');\n }\n\n function isWestEastNorthSouthBBox(bbox) {\n return isFunction(bbox.getWest) && isFunction(bbox.getEast) &&\n isFunction(bbox.getSouth) && isFunction(bbox.getNorth);\n }\n\n function castBoundingBox(bbox) {\n var sw, ne;\n if (isLatLonBBox(bbox)) {\n return bbox;\n }\n if (isRightLeftTopBottomBBox(bbox)) {\n return { minLon: bbox.left, minLat: bbox.bottom, maxLon: bbox.right, maxLat: bbox.top };\n }\n if (isWestEastNorthSouthBBox(bbox)) {\n return { minLon: bbox.getWest(), minLat: bbox.getSouth(), maxLon: bbox.getEast(), maxLat: bbox.getNorth() };\n }\n if (isFunction(bbox.getNorthEast) && isFunction(bbox.getSouthWest)) {\n ne = castPoint(bbox.getNorthEast());\n sw = castPoint(bbox.getSouthWest());\n return { minLon: sw[1], minLat: sw[0], maxLon: ne[1], maxLat: ne[0] };\n }\n if (isArray(bbox) && bbox.length === 4) {\n return { minLon: bbox[0], minLat: bbox[1], maxLon: bbox[2], maxLat: bbox[3] };\n }\n if (isArray(bbox) && bbox.length === 2) {\n sw = castPoint(bbox[0]);\n ne = castPoint(bbox[1]);\n return { minLon: sw[1], minLat: sw[0], maxLon: ne[1], maxLat: ne[0] };\n }\n if (utils.isString(bbox)) {\n bbox = bbox.trim().split(/\\s*,\\s*/);\n if (bbox.length === 4) {\n return {\n minLon: parseFloat(bbox[0]),\n minLat: parseFloat(bbox[1]),\n maxLon: parseFloat(bbox[2]),\n maxLat: parseFloat(bbox[3])\n };\n }\n }\n throw new TypeError('Unable to cast ' + bbox + ' [' + typeof bbox + '] to bounding box');\n }\n\n function normalizeBoundingBox(bbox) {\n var w = bbox.minLon, e = bbox.maxLon, s = bbox.minLat, n = bbox.maxLat, right, left;\n if (e - w > 360) {\n e = 180;\n w = -180;\n } else {\n if (e > 270) {\n right = Math.ceil(w / 360);\n e -= 360 * right;\n w -= 360 * right;\n }\n if (w < -270) {\n left = Math.ceil(-e / 360);\n e += 360 * left;\n w += 360 * left;\n }\n }\n s = s < -90 ? -90 : s;\n n = n > 90 ? 90 : n;\n return { minLon: w, minLat: s, maxLon: e, maxLat: n };\n }\n\n trafficIncidentsLanguageMapping = {\n 'ca': ['ca', 'cat', 'ca-fr', 'ca_fr', 'ca-es', 'ca_es', 'catalan'],\n 'cs': ['cs', 'cze', 'cs-cz', 'cs_cz', 'czech'],\n 'da': ['da', 'dan', 'da-dk', 'da_dk', 'danish'],\n 'de': ['de', 'ger', 'de-de', 'de_de', 'german'],\n 'en': ['en', 'eng', 'en-gb', 'en_gb', 'english', 'us', 'ame', 'en-us', 'en_us', 'english US', 'default'],\n 'es': ['es', 'spa', 'es-es', 'es_es', 'spanish', 'mx', 'spm', 'es-mx', 'es_mx', 'spanish MX'],\n 'fi': ['fi', 'fin', 'fi-fi', 'fi_fi', 'finnish'],\n 'fr': ['fr', 'fre', 'fr-fr', 'fr_fr', 'french'],\n 'hu': ['hu', 'hun', 'hu-hu', 'hu_hu', 'hungarian'],\n 'it': ['it', 'ita', 'it-it', 'it_it', 'italian'],\n 'nl': ['nl', 'dut', 'nl-nl', 'nl_nl', 'dutch'],\n 'no': ['no', 'nor', 'no-no', 'no_no', 'norwegian'],\n 'pl': ['pl', 'pol', 'pl-pl', 'pl_pl', 'polish'],\n 'pt': ['br', 'por', 'pt-br', 'pt_br', 'portuguese', 'pt', 'pob', 'pt-pt', 'pt_pt', 'portuguese BR'],\n 'sk': ['sk', 'slo', 'sk-sk', 'sk_sk', 'slovak'],\n 'sv': ['sv', 'swe', 'sv-se', 'sv_se', 'swedish'],\n 'tr': ['tr', 'tur', 'tr-tr', 'tr_tr', 'turkish'],\n 'defaultValue': 'en'\n };\n routingGuidanceLanguageMapping = {\n 'ar': ['ar', 'ara', 'ar-ar', 'ar_ar', 'arabic'],\n 'af-ZA': ['af', 'afr', 'af-za', 'af_za', 'afrikaans'],\n 'bg-BG': ['bg', 'bul', 'bg-bg', 'bg_bg', 'bulgarian'],\n 'zh-TW': ['zh', 'chi', 'zh-tw', 'zh_tw', 'chinese'],\n 'cs-CZ': ['cs', 'cz', 'cze', 'cs-cz', 'cs_cz', 'czech'],\n 'da-DK': ['da', 'dan', 'da-dk', 'da_dk', 'danish'],\n 'nl-NL': ['nl', 'dut', 'nl-nl', 'nl_nl', 'dutch'],\n 'en-GB': ['en', 'eng', 'en-gb', 'en_gb', 'english', 'default'],\n 'en-US': ['us', 'ame', 'en-us', 'en_us', 'english US'],\n 'fi-FI': ['fi', 'fin', 'fi-fi', 'fi_fi', 'finnish'],\n 'fr-FR': ['fr', 'fre', 'fr-fr', 'fr_fr', 'french'],\n 'de-DE': ['de', 'ger', 'de-de', 'de_de', 'german'],\n 'el-GR': ['el', 'gre', 'el-gr', 'el_gr', 'greek'],\n 'hu-HU': ['hu', 'hun', 'hu-hu', 'hu_hu', 'hungarian'],\n 'id-ID': ['id', 'ind', 'id-id', 'id_id', 'indonesian'],\n 'it-IT': ['it', 'ita', 'it-it', 'it_it', 'italian'],\n 'ko-KR': ['ko', 'kor', 'ko-kr', 'ko_kr', 'korean'],\n 'lt-LT': ['lt', 'lit', 'lt-lt', 'lt_lt', 'lithuanian'],\n 'ms-MY': ['ms', 'mal', 'ms-my', 'ms_my', 'malay'],\n 'nb-NO': ['nb', 'nor', 'nb-no', 'nb_no', 'norwegian'],\n 'pl-PL': ['pl', 'pol', 'pl-pl', 'pl_pl', 'polish'],\n 'pt-BR': ['br', 'por', 'pt-br', 'pt_br', 'portuguese'],\n 'pt-PT': ['pt', 'pob', 'pt-pt', 'pt_pt', 'portuguese BR'],\n 'ru-RU': ['ru', 'rus', 'ru-ru', 'ru_ru', 'russian'],\n 'sk-SK': ['sk', 'slo', 'sk-sk', 'sk_sk', 'slovak'],\n 'sl-SI': ['sl', 'slv', 'sl-si', 'sl_si', 'slovenian'],\n 'es-ES': ['es', 'spa', 'es-es', 'es_es', 'spanish'],\n 'es-MX': ['mx', 'spm', 'es-mx', 'es_mx', 'spanish MX'],\n 'sv-SE': ['sv', 'swe', 'sv-se', 'sv_se', 'swedish'],\n 'th-TH': ['th', 'tha', 'th-th', 'th_th', 'thai'],\n 'tr-TR': ['tr', 'tur', 'tr-tr', 'tr_tr', 'turkish'],\n 'defaultValue': 'en-GB'\n };\n\n function circleFromString(value) {\n var lat, lon, radius;\n var match = value.match(utils.circleRegex);\n throwTypeErrorWhen(!match || !match[1] || !match[2] || !match[3],\n 'Unable to cast ' + value + ' [' + typeof value + '] to circle');\n\n lat = parseFloat(match[1]);\n lon = parseFloat(match[2]);\n radius = parseFloat(match[3]);\n throwTypeErrorWhen(!isFinite(lat) || !isFinite(lon),\n 'Unable to cast ' + value + ' [' + typeof value + '] to circle');\n\n return 'circle(' + lat + ',' + lon + ',' + radius + ')';\n }\n\n function castAndNormalizePoint(value) {\n var point = castPoint(value);\n return normalizeLatitude(point[0]) + ',' + normalizeLongitude(point[1]);\n }\n\n function convertPointOrCircle(value) {\n if (utils.isString(value) && value.indexOf('circle') > -1) {\n return circleFromString(value);\n }\n if (isArray(value) && value.length === 3) {\n return 'circle(' + normalizeLatitude(value[0]) + ',' + normalizeLongitude(value[1]) + ',' + value[2] + ')';\n }\n return castAndNormalizePoint(value);\n }\n\n function extractPointsFromPolygon(inputPoints) {\n var points = [],\n point;\n for (point in inputPoints) {\n if (inputPoints.hasOwnProperty(point)) {\n points.push(castAndNormalizePoint(inputPoints[point]));\n }\n }\n return points;\n }\n\n function convertPointToLatitudeLongitude(point) {\n var splitPoint;\n\n if (typeof point !== 'string') {\n return point;\n }\n\n splitPoint = point.split(',');\n\n return {\n latitude: splitPoint[0],\n longitude: splitPoint[1]\n };\n }\n\n function prepareSupportingPoints(supportingPoints) {\n return supportingPoints.map(convertPointToLatitudeLongitude);\n }\n\n return {\n boundingBox: function(value) {\n return normalizeBoundingBox(castBoundingBox(value));\n },\n\n longitude: function(value) {\n return normalizeLongitude(value);\n },\n\n latitude: function(value) {\n return normalizeLatitude(value);\n },\n\n point: function(value) {\n return castAndNormalizePoint(value);\n },\n\n dateTime: function(value) {\n if (value && value instanceof Date) {\n return value.toISOString();\n }\n\n if (!value || !utils.isString(value)) {\n throw new TypeError('Unable to cast ' + value + ' [' + typeof value + '] to datetime value.');\n }\n if (value !== 'now') {\n value = value.replace(/([0-9]{2})-([0-9]{2})-([0-9]{2})/, '$1/$2/$3');\n value = value.replace(/([0-9])T([0-9])/, '$1 $2');\n value = new Date(value).toISOString();\n }\n return value;\n },\n\n geometryList: function(value) {\n var figureName, figure;\n throwTypeErrorWhen(!value || !isArray(value),\n 'Unable to cast ' + value + ' [' + typeof value + '] to geometry list (array)');\n\n for (figureName in value) {\n if (value.hasOwnProperty(figureName)) {\n figure = value[figureName];\n if (figure.type === 'POLYGON') {\n figure.vertices = extractPointsFromPolygon(figure.vertices);\n } else if (figure.type === 'CIRCLE') {\n figure.position = castAndNormalizePoint(figure.position);\n }\n }\n }\n return value;\n },\n\n language: function(value, options) {\n var locale;\n if (options && options.data && options.data.__serviceType) {\n locale = new Locale(value);\n return locale.getValueFor(options.data.__serviceType);\n }\n return value;\n },\n\n routingGuidanceLanguage: function(value) {\n var language;\n value = value.toLowerCase();\n for (language in routingGuidanceLanguageMapping) {\n // if language is found in one of properties array\n if (routingGuidanceLanguageMapping.hasOwnProperty(language) &&\n routingGuidanceLanguageMapping[language].indexOf(value) > -1) {\n return language;\n }\n }\n return routingGuidanceLanguageMapping.defaultValue;\n },\n\n trafficIncidentsLanguage: function(value) {\n var language;\n value = value.toLowerCase();\n for (language in trafficIncidentsLanguageMapping) {\n // if language is found in one of properties array\n if (trafficIncidentsLanguageMapping.hasOwnProperty(language) &&\n trafficIncidentsLanguageMapping[language].indexOf(value) > -1) {\n return language;\n }\n }\n return trafficIncidentsLanguageMapping.defaultValue;\n },\n\n routingLocations: function(value) {\n var response = [], i;\n if (utils.isString(value)) {\n return value;\n }\n if (isArray(value)) {\n throwTypeErrorWhen(value.length < 2,\n 'Unable to cast ' + value + ' [' + typeof value + '] to routing locations string');\n\n // Convert first element to point\n response.push(castAndNormalizePoint(value[0]));\n\n // Convert elements from 1 to length-2 to point or circle\n for (i = 1; i < value.length - 1; i += 1) {\n response.push(convertPointOrCircle(value[i]));\n }\n\n // Convert last element (length-1) to point\n response.push(castAndNormalizePoint(value[value.length - 1]));\n\n // Join converted elements\n return response.join(':');\n }\n throw new TypeError('Unable to cast ' + value + ' [' + typeof value + '] to routing locations string');\n },\n\n roadUse: function(value) {\n var i;\n if (utils.isString(value)) {\n return '[\"' + value.replace(/[\"']|^\\s+|\\s+$/g, '').split(/[\\s,]+/).join('\",\"') + '\"]';\n }\n if (isArray(value)) {\n for (i = 0; i < value.length; i += 1) {\n value[i] = String(value[i]).replace(/[\"']|^\\s+|\\s+$/g, '');\n }\n return '[\"' + value.join('\",\"') + '\"]';\n }\n throw new TypeError('Unable to cast ' + value + ' [' + typeof value + '] to road use string');\n },\n\n arrayOf: function(options) {\n return function(values) {\n var optionName, setDefaultValueHandler = function(key, defaultValue) {\n return function(object) {\n if (!object.hasOwnProperty(key)) {\n object[key] = defaultValue;\n }\n };\n };\n for (optionName in options) {\n if (options.hasOwnProperty(optionName) && options[optionName].hasOwnProperty('defaultValue')) {\n values.forEach(setDefaultValueHandler(optionName, options[optionName].defaultValue));\n }\n }\n\n values.forEach(function(value) {\n var key;\n for (key in value) {\n if (value.hasOwnProperty(key) && options.hasOwnProperty(key) &&\n typeof options[key].converter === 'function') {\n\n value[key] = options[key].converter(value[key]);\n }\n }\n });\n return values;\n };\n },\n\n objectOf: function(options) {\n return function(value) {\n var key;\n for (key in value) {\n if (value.hasOwnProperty(key) && options.hasOwnProperty(key) &&\n typeof options[key].converter === 'function') {\n\n value[key] = options[key].converter(value[key]);\n }\n }\n return value;\n };\n },\n\n arrayOfStrings: function(value) {\n if (!value) {\n return [];\n }\n if (utils.isString(value)) {\n value = value.trim().replace(/\\s*[,;]\\s*/g, ',');\n return value.split(/[,;]+/);\n }\n if (isArray(value)) {\n return value;\n }\n throw new TypeError('Unable to cast ' + value + ' [' + typeof value + '] to array of strings');\n },\n\n route: function(values) {\n return {\n points: values.map(castPoint).map(function(point) {\n return {\n lat: point[0],\n lon: point[1]\n };\n })\n };\n },\n\n queryString: function(query) {\n return utils.encodeQuery(query);\n },\n integer: function(value) {\n return Math.round(Number(value));\n },\n\n supportingPoints: function(value) {\n var arrayOfPoints = [], i;\n if (utils.isString(value)) {\n value = value.split(':');\n }\n if (isArray(value)) {\n\n // Convert elements to points\n for (i = 0; i < value.length; i++) {\n arrayOfPoints.push(castAndNormalizePoint(value[i]));\n }\n } else {\n arrayOfPoints.push(castAndNormalizePoint(value));\n }\n return prepareSupportingPoints(arrayOfPoints);\n },\n constantSpeedConsumption: function(value) {\n if (typeof value === 'string') {\n return value;\n }\n\n if (!isArray(value)) {\n throw new TypeError('An array is required');\n }\n return value.join(':');\n },\n avoidAreas: function(value) {\n if (!isArray(value)) {\n throw new TypeError('An array is required');\n }\n return {\n rectangles: value.map(function(area) {\n return {\n southWestCorner: convertPointToLatitudeLongitude(castAndNormalizePoint(area.southWestCorner)),\n northEastCorner: convertPointToLatitudeLongitude(castAndNormalizePoint(area.northEastCorner))\n };\n })\n };\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/converters.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['services/utils'], function(Utils) {\n 'use strict';\n /**\n * Name of the default key to be used.\n * @type {String}\n */\n var generalKey = '*';\n var keys = {};\n\n function checkStringType(parameter, message) {\n if (!Utils.isString(parameter)) {\n throw new TypeError(message);\n }\n }\n\n return {\n /**\n * Sets key from the 'config' object in security configuration file.\n * @example\n * security.setKey('keyValue'); // sets global key\n * security.setKey('service/traffic', 'keyValue'); // sets key for traffic service\n *\n * @method setKey\n * @param {String} name Name of the key to be set\n * @param {String} [value] Value of the key\n */\n setKey: function(name, value) {\n if (arguments.length === 1) {\n value = name;\n name = generalKey;\n }\n if (!value) {\n return;\n }\n checkStringType(name, 'Module name needs to be of type string');\n checkStringType(value, 'API key needs to be of type string');\n keys[name] = value;\n },\n\n /**\n * Clears keys, this method is meant to be used internally and should not be exposed\n * @example\n * security._clearKeys();\n *\n * @method _clearKeys\n */\n _clearKeys: function() {\n keys = {};\n },\n\n /**\n * Returns function to sets key from the 'config' object in security configuration file with predefined module\n * name.\n * @example\n * var setKey = security.setKeyForName('service/traffic');\n * setKey('keyValue'); // sets key for traffic service\n *\n * @method setKeyForName\n * @param {String} name Name of the module\n * @return {Function} function that sets key for given module\n */\n setKeyForName: function(name) {\n checkStringType(name, 'Module name needs to be of type string');\n return function(value) {\n checkStringType(value, 'API key needs to be of type string');\n keys[name] = value;\n };\n },\n\n /**\n * Gets key's value from the \"config\" object in security configuration file.\n * Returns key value associated with type of given service - if exists - or generalKey otherwise.\n * @example\n * security.getKey(this); // when used within service context\n * security.getKey(\"generalKey\"); // when used in other context\n *\n * @method getKey\n * @param {String} name Module name means name of the key\n * @return {String}\n */\n getKey: function(name) {\n if (name) {\n checkStringType(name, 'Module name needs to be of type string');\n }\n return keys[name] || keys[generalKey] || null;\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./security/apiKeySecurity.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n'use strict';\nconst mainConfig = require('mainConfig');\n\nmodule.exports = {\n //copyrights\n 'copyrightsWorld': mainConfig['endpoints.copyrightsWorld'],\n 'copyrightsBounds': mainConfig['endpoints.copyrightsBounds'],\n 'caption': mainConfig['endpoints.caption'],\n\n //search\n 'geocode': mainConfig['endpoints.geocode'],\n 'batchGeocodeQuery': mainConfig['endpoints.batchGeocodeQuery'],\n 'structuredGeocode': mainConfig['endpoints.structuredGeocode'],\n 'batchStructuredGeocodeQuery': mainConfig['endpoints.batchStructuredGeocodeQuery'],\n 'search': mainConfig['endpoints.search'],\n 'batchSearch': mainConfig['endpoints.batchSearch'],\n 'batchSyncSearch': mainConfig['endpoints.batchSyncSearch'],\n 'batchSearchQuery': mainConfig['endpoints.batchSearchQuery'],\n 'adp': mainConfig['endpoints.adp'],\n 'reverseGeocode': mainConfig['endpoints.reverseGeocode'],\n 'batchReverseGeocodeQuery': mainConfig['endpoints.batchReverseGeocodeQuery'],\n\n //traffic\n 'trafficIncidents': mainConfig['endpoints.trafficIncidents'],\n 'trafficViewport': mainConfig['endpoints.trafficViewport'],\n 'flowSegmentData': mainConfig['endpoints.flowSegmentData'],\n 'incidentRegions': mainConfig['endpoints.incidentRegions'],\n\n //layers\n 'trafficLayer': mainConfig['endpoints.trafficLayer'],\n 'trafficFlowLayer': mainConfig['endpoints.trafficFlowLayer'],\n 'tileLayer': mainConfig['endpoints.tileLayer'],\n\n //routing\n 'routing': mainConfig['endpoints.routing'],\n 'reachableRange': mainConfig['endpoints.reachableRange'],\n 'batchRoutingQuery': mainConfig['endpoints.batchRoutingQuery'],\n 'batchRouting': mainConfig['endpoints.batchRouting'],\n 'batchSyncRouting': mainConfig['endpoints.batchSyncRouting'],\n 'matrixRouting': mainConfig['endpoints.matrixRouting'],\n 'matrixSyncRouting': mainConfig['endpoints.matrixSyncRouting'],\n 'batchReachableRangeQuery': mainConfig['endpoints.batchReachableRangeQuery'],\n\n //origin\n 'origin': mainConfig.origin\n};\n\n\n\n// WEBPACK FOOTER //\n// ./endpoints/endpoints.js","define([], function() {\n return {\n POST: 'POST',\n PATH: 'PATH',\n QUERY: 'QUERY',\n OTHER: 'OTHER'\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./common/parameterApplications.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This module has two utilities:\n *\n * This module create getters and setters for every property of the object passed as first argument and also\n * implement the \"go\" method which executed an arbitrary function passing all the property values.\n *\n * To create the getters and setters the first argument of the constructor should be an object with the\n * following accepted properties:\n *\n * - name: String Custom name of the property. If isn't define the name of the property will be used.\n * - validator: Function(value) If the value isn't valid this function should throw an Error,\n * otherwise it should return the value validated\n * - defaultValue: Function() This function have to return the default value\n * - converter: Function(value) The returned value of this function will be used\n *\n * This is an example of configurations this module could take:\n * @example\n * ```js\n * var properties = {\n * city: {\n * name: 'bestCity',\n * validator: function (name) {\n * if (typeof name !== 'string' || name.length === 0) throw new Error('City name is not valid');\n * return name;\n * },\n * converter: function (name) {\n * return name.toLowerCase();\n * },\n * defaultValue: function() {\n * return 'Lodz';\n * }\n * }\n * }\n * var config = require('chain')(properties);\n * config.city(); // prints \"lodz\"\n * config.city('Torun'); // prints \"torun\"\n * config.city(); // prints \"torun\"\n * ```\n *\n * Take notice the converter function is always executed, even for the default value.\n *\n * As second argument a function will be expected and this function will be executed using the \"go\" method\n * returned by this constructor.\n * The additional functions returned by this constructor are: \"go\", \"callback\" and \"fail\".\n *\n * The \"go\" function will execute the function passed as second argument of the constructor which should\n * implement the next signature: goFunction(properties, callback) .\n *\n * Is expected that the \"goFunction\" will call the callback function available in the second argument which is the same\n * function defined in fields.callback or the first argument passed to the \"go\" function.\n *\n * The \"go\" method can receive two callback arguments: \"success\" and \"fail\" which will override the initial callbacks\n * defined during the creation and will be continue to be used in the next execution of the \"go\" function.\n *\n * If a callback is not provided nor in the fields.callback or as first argument of the \"go\" call,\n * then the \"go\" function will return a Promise, otherwise this function will return undefined.\n *\n * @example\n * ```js\n * var properties = {\n * city: {},\n * country: {}\n * }\n * var defaults = {city: 'Lima', country: 'Peru'};\n * function sendToBackend(properties, callback) {\n * // Ajax call sending the properties\n * // ...\n * callback(\"OK\");\n * }\n * function onSuccess() {};\n * function onfail() {};\n *\n * var config = require('chain')(properties, sendToBackend, defaults);\n *\n * // Calling \"go\" passing callbacks\n * config.go(onSuccess, onfail);\n *\n * // Calling go and receive a Promise\n * config.go()\n * .then(onSuccess)\n * .catch(onFail);\n * ```\n *\n * Do you think this was difficult to read? Believe me, the most difficult was to write it.\n * @private\n * @class Chain\n * @module Services\n * @constructor\n * @param {Object} fields\n * @param {Function} fields.callback Default callback function to be executed by \"goFunction\" function\n * @param {Function} fields.fail Default fail function callback to be executed by \"goFunction\" function\n * @param {Function} [goFunction] Should have the signature: function(properties, callback): Promise|undefined\n * @param {Object} [options] Object with the initial values for the properties defined in the \"fields\" argument\n * @param {Function} [options.fail] Failsafe \"fail\" function to be executed by \"goFunction\" callback argument.\n * It will override \"fields.fail\" (yeah, don't ask me why)\n */\n\n/**\n * Executes a predefined asynchronous task using the current configuration and then execute one of\n * the callback functions based on the success of the result.\n *\n * It receives two optional arguments. The first one is a callback function that will be used when\n * the task is successfully completed. The second one is another callback function\n * that will be used only in case of failure.\n *\n * Both arguments are shortcuts for the callback and fail methods respectively.\n *\n * @example\n * All the ways of using this method:\n * ```js\n * // Defining callbacks as function arguments\n * tomtom.fuzzySearch()\n * .query(\"pizza\")\n * .go(successCallback, failureCallback);\n *\n * // Defining callbacks using setters methods\n * tomtom.fuzzySearch()\n * .query(\"pizza\")\n * .callback(successCallback)\n * .fail(failureCallback)\n * .go();\n *\n * // Using the returned Promise\n * tomtom.fuzzySearch()\n * .query(\"pizza\")\n * .go()\n * .then(successCallback)\n * .catch(failureCallback);\n * ```\n * The SDK provides a Promise polyfill for browsers (IE<9) without native ECMAScript 6 support.\n *\n * @method go\n * @param {Function} [success] The callback function to be called on case of success\n * @param {Function} [fail] The callback function to be called on case of failure.\n * If a success callback was not given this argument will be ignored. In that case the returned Promise\n * should be used to handle the failures.\n * @return {Promise|null} If the success callback is omitted (and wasn't defined one yet) this function\n * will return a Promise\n */\n\n/**\n * Sets or gets the value of the option `callback`.\n *\n * This callback function will be called only after the go method successfully complete its task.\n *\n * Its first and unique argument passed to the callback will be the result of the request.\n *\n * @example\n * ```js\n * function callbackFn(results) {\n * console.log(results);\n * }\n * tomtom.fuzzySearch()\n * .query(\"pizza\")\n * .callback(callbackFn)\n * .go();\n * ```\n *\n * @method callback\n * @chainable\n * @param {Function} [newValue] The new callback function\n * @throws {TypeError} If the given argument is not a function\n * @return {Function} The same service instance or the current callback function if no argument was given\n */\n\n/**\n * Sets or gets the value of the option `fail`.\n *\n * This function is called when an error occurs (e.g. invalid values or a communication error).\n *\n * The callback will receive just one argument which is the error description.\n *\n * This parameter will be ignored if the callback function is not defined and therefore the\n * go method will return a Promise that will be rejected if an error occurs.\n *\n * If you don't specificy a failure callback, the default behavior in case of encounter a problem is to\n * throw an error.\n *\n * @example\n * ```js\n * function successCallback(results) {\n * console.log(results);\n * }\n * function failureCallback(error) {\n * console.log(error);\n * }\n * tomtom.fuzzySearch()\n * .query(\"pizza\")\n * .callback(successCallback)\n * .fail(failureCallback)\n * .go();\n * ```\n *\n * @method fail\n * @chainable\n * @param {Function} [newValue] The new callback function\n * @throws {TypeError} If the given argument is not a function\n * @return {Function} The same service instance or the current callback function if no argument was given\n */\n/* jshint nomen:false */\ndefine(['./utils',\n 'config/language/globalLocaleService',\n 'config/language/validator',\n 'config/geopolView/globalGeopolViewService',\n 'config/geopolView/validator',\n 'config/geopolView/geopolView',\n 'common/parameterApplications'\n],\nfunction(utils,\n globalLocaleService,\n localeValidator,\n globalGeopolViewService,\n geopolViewValidator,\n GeopolView,\n parameterApplications) {\n 'use strict';\n function checkIsFunction(fun) {\n if (typeof fun !== 'function') {\n throw new TypeError('a function is expected, but ' + fun + ' [' + typeof fun + '] given');\n }\n return fun;\n }\n\n function isUndefined(value) {\n return value === undefined;\n }\n\n function isFunction(converter) {\n return typeof converter === 'function';\n }\n\n function chain(data, name, value, validator, converter) {\n var options = {\n data: data,\n name: name\n };\n\n if (isUndefined(value)) {\n return isUndefined(data[name]) ? null : data[name];\n }\n if (isFunction(converter)) {\n value = converter.call(this, value, options);\n }\n if (isFunction(validator)) {\n value = validator.call(this, value, options);\n }\n data[name] = value;\n return this;\n }\n\n function checkRequired(fields, data) {\n var field, fieldName;\n for (field in fields) {\n if (fields.hasOwnProperty(field)) {\n fieldName = fields[field].name || field;\n if (fields[field].required === true && !data.hasOwnProperty(fieldName)) {\n throw new Error('Missing required ' + field);\n }\n }\n }\n }\n\n function runPostValidators(fields, data) {\n var field;\n var that = this;\n function callValidator(validator) {\n validator.call(that, data[field], data, field);\n }\n for (field in fields) {\n if (fields.hasOwnProperty(field)) {\n if (utils.isArray(fields[field].postValidator)) {\n fields[field].postValidator.forEach(callValidator);\n } else if (!isUndefined(fields[field].postValidator)) {\n fields[field].postValidator.call(this, data[field], data, field);\n }\n }\n }\n }\n\n function createFunction(f, fields, data) {\n return function(value) {\n var fieldName = fields[f].name || f;\n return chain.call(this, data, fieldName, value, fields[f].validator, fields[f].converter);\n };\n }\n\n function setLanguageIfNeeded(data) {\n var serviceType = data.__serviceType;\n var locale;\n if (!serviceType || data.language && localeValidator(data.language, serviceType)) {\n return;\n }\n locale = globalLocaleService.getCurrentLocale();\n data.language = locale.getValueFor(serviceType);\n }\n\n function setGeopolViewIfNeeded(data) {\n var geopolView;\n var serviceType = data.__serviceType;\n var supportedServices = GeopolView.getSupportedServices();\n if (!serviceType ||\n supportedServices.indexOf(serviceType) === -1 ||\n (data.view && geopolViewValidator(data.view, serviceType))) {\n return;\n }\n geopolView = globalGeopolViewService.getCurrentGeopolView();\n data.view = geopolView.getValueFor(serviceType);\n }\n\n return function(fields, goFunction, options) {\n var data = {},\n that = this,\n service,\n field;\n options = options || {};\n data.__serviceType = options.__serviceType;\n setLanguageIfNeeded(options);\n setGeopolViewIfNeeded(options);\n fields.callback = {\n validator: checkIsFunction\n };\n fields.fail = {\n validator: checkIsFunction,\n defaultValue: function(e) {\n if (utils.isObject(e)) {\n e = JSON.stringify(e);\n }\n console.error(e || 'Unknown Error');\n throw new Error(e || 'Unknown Error');\n },\n application: parameterApplications.OTHER\n };\n\n service = {\n go: function(success, fail) {\n var callback;\n if (success) {\n data.callback = checkIsFunction(success);\n }\n if (fail) {\n data.fail = checkIsFunction(fail);\n }\n checkRequired(fields, data);\n runPostValidators(fields, data);\n if (data.callback) {\n callback = data.callback;\n delete data.callback;\n goFunction.call(that, utils.clone(data), callback);\n return undefined;\n } else {\n return new Promise(function(resolve, reject) {\n data.fail = function(error) {\n reject(error);\n };\n goFunction.call(that, utils.clone(data), function(response) {\n resolve(response);\n });\n });\n }\n }\n };\n\n for (field in fields) {\n if (fields.hasOwnProperty(field)) {\n service[field] = createFunction(field, fields, data);\n if (!isUndefined(fields[field].defaultValue)) {\n service[field].call(this, fields[field].defaultValue);\n }\n // if options were passed initialize the data\n if (options && options.hasOwnProperty(field)) {\n service[field].call(this, options[field]);\n }\n\n if (fields[field].visible === false) {\n delete service[field];\n }\n }\n }\n if (options && options.fail) {\n data.fail = options.fail;\n }\n return service;\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/chain.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(function() {\n 'use strict';\n var names = {\n display: 'services/display',\n vector: 'services/display/vector',\n trafficFlow: 'services/trafficFlow',\n traffic: 'services/traffic',\n search: 'services/search',\n routing: 'services/routing'\n };\n /**\n * Immutable object with the names of the different API keys.\n */\n return Object.freeze(names);\n});\n\n\n\n// WEBPACK FOOTER //\n// ./security/apiKeyNames.js","define(['rest/request/batchRequestServiceFactory', 'rest/request/singleRequestServiceFactory'],\n function(batchRequestServiceFactory, singleRequestServiceFactory) {\n return {\n single: singleRequestServiceFactory,\n batch: batchRequestServiceFactory\n };\n });\n\n\n\n// WEBPACK FOOTER //\n// ./rest/request/requestFactory.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine(['./json', './jsonp'], function(json, jsonp) {\n 'use strict';\n var useJsonp = false;\n var useHttp = false;\n\n return {\n useJsonp: function(use) {\n useJsonp = use;\n },\n\n useHttp: function(use) {\n useHttp = use;\n },\n\n protocol: function() {\n return useHttp ? 'http' : 'https';\n },\n\n get: function(options) {\n options.protocol = options.protocol || this.protocol();\n return useJsonp ? jsonp.get(options) : json.get(options);\n },\n\n post: function(options) {\n if (useJsonp) {\n console.warn('Jsonp is not supported, using json request.');\n }\n options.protocol = options.protocol || this.protocol();\n return json.post(options);\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./requester/requester.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n\nfunction escapeRegExp(input) {\n return input.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&').replace(/\\\\\\{.+?\\\\\\}/g, '.+');\n}\n\ndefine(['mainConfig'], function(mainConfig) {\n var productInfo;\n var sdkInfo = mainConfig['analytics.header.sdkName'] + '/' + mainConfig['sdk.version'];\n var headerName = mainConfig['analytics.header.name'];\n var ORIGIN_URL_PATTERN = new RegExp(escapeRegExp(mainConfig.origin));\n\n return {\n isTomtomOrigin: function(url) {\n return ORIGIN_URL_PATTERN.test(url);\n },\n getHeaderName: function() {\n return headerName;\n },\n getHeaderContent: function() {\n var prodInfo = productInfo !== undefined ? ' ' + productInfo : '';\n return sdkInfo + prodInfo;\n },\n\n setProductInfo: function(productId, productVersion) {\n var prodVersion;\n if (!productId) {\n throw new Error('ProductId needs to be set');\n }\n prodVersion = productVersion || productVersion === 0 ? '/' + productVersion : '';\n productInfo = productId + prodVersion;\n },\n getProductInfo: function() {\n return productInfo;\n },\n addAnalyticsHeader: function(req) {\n req.header(headerName, this.getHeaderContent());\n return req;\n },\n getAnalyticsHeader: function() {\n var header = {};\n header[headerName] = this.getHeaderContent();\n return header;\n },\n customCreateTile: function(coords, done, layer) {\n var tile = document.createElement('img');\n var tileUrl = layer.getTileUrl(coords);\n var errorTileUrl = layer.options && layer.options.errorTileUrl;\n\n var xhr = new XMLHttpRequest();\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n if (xhr.status === 200) {\n tile.src = URL.createObjectURL(xhr.response); //create with src set to the blob\n } else if (errorTileUrl) {\n tile.src = errorTileUrl;\n }\n done(null, tile);\n }\n };\n xhr.open('GET', tileUrl, true);\n // don't set responseType before calling open(), this will cause an invalid state error under IE11\n xhr.responseType = 'blob'; //so you can access the response like a normal URL\n xhr.setRequestHeader(this.getHeaderName(), this.getHeaderContent());\n xhr.send();\n if (layer.options.crossOrigin) {\n tile.crossOrigin = '';\n }\n\n /*\n Alt tag is set to empty string to keep screen readers from reading URL and for compliance reasons\n http://www.w3.org/TR/WCAG20-TECHS/H67\n */\n tile.alt = '';\n tile.setAttribute('original-src', tileUrl);\n /*\n Set role=\"presentation\" to force screen readers to ignore this\n https://www.w3.org/TR/wai-aria/roles#textalternativecomputation\n */\n tile.setAttribute('role', 'presentation');\n return tile;\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./requester/analytics.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine([], function() {\n 'use strict';\n function isArray(a) {\n return a !== undefined && a.constructor.toString().indexOf('Array') > -1;\n }\n\n function filterArray(result, fields) {\n var i;\n for (i = 0; i < result.length; i += 1) {\n filter(result[i], fields); //eslint-disable-line\n }\n }\n\n function filterObject(result, fields) {\n var key;\n var filterPrepared = '*' + fields.trim().split(/\\s*,\\s*/).join('*') + '*';\n for (key in result) {\n if (result.hasOwnProperty(key) && filterPrepared.indexOf('*' + key + '*') < 0) {\n delete result[key];\n }\n }\n }\n\n function filter(result, fields) {\n if (!fields) {\n return result;\n }\n if (isArray(result)) {\n filterArray(result, fields);\n } else {\n filterObject(result, fields);\n }\n return result;\n }\n\n function handleArray(array, key) {\n var j;\n var result = [];\n for (j = 0; j < array.length; j += 1) {\n if (array[j][key]) {\n result.push(array[j][key]);\n }\n }\n return result;\n }\n\n return function(json, path, fields) {\n var i;\n var result = json;\n var pathElements = path.trim().split('.');\n for (i = 0; i < pathElements.length; i += 1) {\n if (!result) {\n return null;\n }\n if (isArray(result)) {\n result = handleArray(result, pathElements[i]);\n } else {\n result = result[pathElements[i]];\n }\n }\n return filter(result, fields);\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/selector.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine(['../objectUtils', 'services/trafficModelId', 'security'], function(utils, trafficModelId, security) {\n var DEFAULT_REFRESH_RATE = 30000;\n return {\n add: function(options, onTrafficUpdateCallback) {\n var refreshRate = DEFAULT_REFRESH_RATE;\n\n if (utils.isNotNull(options)) {\n if (options._noRefresher) {\n //This property ensures that the refresher doesn't start, it is used by trafficWithIncidentsLayer\n //which has it's own timers and we don't want sub-layers to start its own timers\n return undefined;\n } else if (options.noRefresh) {\n onTrafficUpdateCallback();\n return undefined;\n }\n //this ensures that minimal refresh time is 30 seconds\n refreshRate = options.refresh >= DEFAULT_REFRESH_RATE && isFinite(options.refresh) ?\n options.refresh :\n DEFAULT_REFRESH_RATE;\n }\n return setInterval(onTrafficUpdateCallback, refreshRate);\n },\n remove: function(id) {\n if (id) {\n clearInterval(id);\n }\n },\n addRefresherWithModelId: function(options, trafficModelIdCallback, context) {\n var effectiveOptions = options ? options : context.options;\n var trafficModelIdService = trafficModelId({key: security.getKey('services/traffic')});\n function onUpdateCallback() {\n trafficModelIdService.go().then(function(trafficModelId) {\n trafficModelIdCallback.call(context, trafficModelId);\n });\n }\n\n if (!effectiveOptions) {\n throw new Error('\"options\" should be provided');\n }\n\n if (effectiveOptions._noRefresher) {\n return null;\n }\n\n onUpdateCallback();\n return this.add(effectiveOptions, onUpdateCallback);\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/trafficRefresher.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * Static class with util methods to format and convert values from metric to imperial systems.\n *\n * @class UnitFormatConverter\n * @extends L.Evented\n * @module Services\n */\ndefine(['leaflet', '../config/unit/globalUnitService'], function(L, globalUnitService) {\n 'use strict';\n var UnitFormatConverter;\n\n /**\n * Event fired when the global measurement unit is changed using the method\n * {{#crossLink \"UnitFormatConverter/unitsScheme:method\"}}{{/crossLink}}.\n *\n * @event change\n * @param {\"metric\"|\"imperial\"} newMeasurementUnit\n */\n\n /**\n * @ignore\n * @param {String} value Numeric value\n * @return {String}\n */\n function enforceLeadingZero(value) {\n return value < 10 ? '0' + value : value;\n }\n\n /**\n * Convert a distance in meters to yards.\n * @method convertMetersToYards\n * @param {Number} distanceMeters\n * @return {Number}\n */\n function convertMetersToYards(distanceMeters) {\n return 1.0936133 * distanceMeters;\n }\n\n /**\n * @ignore\n * @param {Number} distanceMeters\n * @return {Number}\n */\n function convertMetricToMiles(distanceMeters) {\n return 0.000621371192 * distanceMeters;\n }\n\n /**\n * @ignore\n * @param {Number} distanceMeters\n * @return {String} Distance in miles or yards\n */\n function formatMetricAsImperialDistance(distanceMeters) {\n var yards = convertMetersToYards(distanceMeters),\n miles = convertMetricToMiles(distanceMeters);\n return miles < 1 ? Math.round(yards) + ' yd' : Math.round(miles * 10) / 10 + ' mi';\n }\n\n /**\n * @ignore\n * @param {Number} distanceMeters\n * @return {String} Distance in kilometers or meters\n */\n function formatAsMetricDistance(distanceMeters) {\n var distance = Math.round(distanceMeters);\n if (distance >= 1000) {\n return Math.round(distance / 100) / 10 + ' km';\n }\n return distance + ' m';\n }\n\n UnitFormatConverter = L.Evented.extend({\n /**\n * Convert a distance in yards to meters.\n\n * @method convertYardsToMeters\n * @param {Number} distanceYards Distance in yards\n * @return {Number}\n */\n convertYardsToMeters: function(distanceYards) {\n return Math.round(distanceYards / 1.0936133);\n },\n\n convertMetersToYards: convertMetersToYards,\n\n /**\n * Converts the given time in seconds to a string with the the format of 'HH h MM min' or 'MM min SS s'.\n *\n * HH - hours MM - minutes SS - seconds.\n *\n * @method formatTime\n * @param {Number} [seconds] Number of seconds\n * @return {String|undefined} Formatted time\n *\n * @example\n * ```javascript\n * tomtom.unitFormatConverter.formatTime(3600); / returns 1 h 0 min\n * ```\n */\n formatTime: function(seconds) {\n var secondsNum, hours, minutes, secondsFormatted, minutesFormatted;\n if (seconds === undefined) {\n return undefined;\n }\n secondsNum = parseInt(seconds, 10);\n hours = Math.floor(secondsNum / 3600);\n minutes = Math.floor((secondsNum - hours * 3600) / 60);\n if (secondsNum < 60) {\n return secondsNum + ' s';\n }\n secondsNum %= 60;\n secondsFormatted = enforceLeadingZero(secondsNum);\n minutes %= 60;\n minutesFormatted = enforceLeadingZero(minutes);\n if (hours > 0) {\n return hours + ':' + minutesFormatted + ' h';\n }\n return minutes + ':' + secondsFormatted + ' min';\n },\n\n /**\n * Converts a date in the machine format to a more human readable form.\n *\n * Returns a formatted string created from the given date in UTC format.\n *\n * @method formatHourAndMinute\n * @param {String} [dateInMs] Date and time specified in the RFC-3339 format with an optional time zone offset\n * @return {String} Formatted time in hours and minutes\n *\n * @example\n * ```javascript\n * tomtom.unitFormatConverter.formatHourAndMinute('2016-03-01T15:45:58+01:00') // gives '3:45'\n * ```\n */\n formatHourAndMinute: function(dateInMs) {\n var date = new Date(dateInMs);\n var hour = date.getHours(),\n minute = date.getMinutes();\n return hour + ':' + enforceLeadingZero(minute);\n },\n\n /**\n * Converts distance in meters to a proper display format in SI or imperial units.\n *\n * @method formatDistance\n * @param {Number} distanceMeters Distance in meters\n * @param {Boolean} [imperial=false] Use imperial units\n * @return {String} Aformatted distance\n */\n formatDistance: function(distanceMeters, imperial) {\n if (distanceMeters === undefined) {\n return undefined;\n }\n if (imperial) {\n return formatMetricAsImperialDistance(distanceMeters);\n }\n return formatAsMetricDistance(distanceMeters);\n },\n\n /**\n * Gets ore sets the default units scheme for new widgets and services.\n *\n * @method unitsScheme\n * @param {\"imperial\"|\"metric\"} [newUnit] If isn't provided then\n * this method will only return then current units scheme\n * @return {String} Current units scheme\n * @deprecated Please use \n * tomtom.globalUnitService() instead.\n */\n unitsScheme: function(newUnit) {\n console.warn('Deprecated. Please use unitService class.');\n if (!newUnit) {\n return globalUnitService.getCurrentUnit().getLabel();\n }\n\n globalUnitService.setCurrentUnit(newUnit);\n this.fire('change', {newScheme: newUnit});\n return newUnit;\n }\n });\n\n return new UnitFormatConverter();\n});\n\n\n\n// WEBPACK FOOTER //\n// ./unitFormatConverter/unitFormatConverter.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine([], function() {\n 'use strict';\n var unitTypes = {\n metric: 'metric',\n imperial: 'imperial'\n };\n return unitTypes;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./config/unit/unitTypes.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Base class for all the Search services.\n *\n * @private\n * @class Search\n * @module Services\n * @uses Chain\n * @uses ProtocolMixin\n * @uses KeyMixin\n * @uses LimitMixin\n * @uses LanguageMixin\n * @uses UnwrapMixin\n *\n * @constructor\n * @param {Object} [options] Options to be passed to the search call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.unwrapBbox=false] Changes the bounding box coordinates allowing longitudes that\n * exceeds 180 degrees when is necessary. {{#crossLink \"Search/unwrapBbox:method\"}}More{{/crossLink}}\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {String} [options.language=null] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n */\n/* jshint nomen:false */\ndefine(['rest/search', 'model/search/search', '../chain', '../validators', '../converters', '../worldEdge',\n '../utils', 'model/search/batchSearch', 'common/searchTypes', './searchParameters'],\nfunction(restSearch, model, chain, validators, converters, worldEdge, utils, batchModel, searchTypes, searchParams) {\n 'use strict';\n\n var TYPES = {\n search: searchTypes.search,\n poi: searchTypes.poi,\n category: searchTypes.category,\n geometry: searchTypes.geometry,\n nearby: searchTypes.nearby,\n lowBandwidth: searchTypes.lowBandwidth\n }, fields = searchParams.create();\n\n var search = restSearch();\n\n function addBoundingBoxParameters(data, boundingBox) {\n data.topLeft = [boundingBox.maxLat, boundingBox.minLon];\n data.btmRight = [boundingBox.minLat, boundingBox.maxLon];\n return data;\n }\n\n function callbackBestResult(bestResult, callback) {\n return function(response) {\n callback(bestResult ? response[0] : response);\n };\n }\n\n function Search(options) {\n this.options = options;\n this.defaultFields = utils.clone(fields);\n this.fields = {};\n }\n\n Search.prototype.TYPE = TYPES;\n Search.prototype.model = model;\n Search.prototype.construct = function() {\n this.fields = utils.addFields.call(this, this.fields);\n // eslint-disable-next-line vars-on-top\n var batchFields = {\n batchItems: {\n validator: validators.arrayOf(this.fields),\n converter: converters.arrayOf(this.fields)\n }\n };\n this.options = this.options || {};\n this.options.__serviceType = 'search';\n\n if (Array.isArray(this.options)) {\n return chain.call(this, batchFields, this.handleBatchChain, {\n batchItems: this.options\n });\n } else {\n return chain.call(this, this.fields, this.handleChain, this.options);\n }\n };\n\n Search.prototype.handleBatchChain = function(data, callback) {\n data.batchItems.forEach(searchParams.modifyRequestOptions);\n search.batch(searchParams.modifyFields(this.fields), data, function(results) {\n callback.call(this, batchModel(results));\n });\n };\n\n function searchQuery(fields) {\n var modifiedFields = searchParams.modifyFields(fields);\n return function(options, callback) {\n return search.search(modifiedFields, options, callback);\n };\n }\n\n Search.prototype.handleChain = function(data, callback) {\n searchParams.modifyRequestOptions(data);\n worldEdge(searchQuery(this.fields), this.model, data, callbackBestResult(Boolean(data.bestResult), callback),\n addBoundingBoxParameters);\n };\n //TODO We should think how to refactor this, code below does some WEIRD trick.\n //Take a look in fuzzySearch.js how it is called - they call just constructor function\n function searchConstructor(options) {\n return (new Search(options)).construct();\n }\n\n searchConstructor.prototype.constructor = Search;\n\n return searchConstructor;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/search/search.js","/* eslint-disable max-len */\n\ndefine(function() {\n 'use strict';\n var origin = 'api.tomtom.com';\n return {\n 'mapboxgl.version': '0.53.0',\n 'sdk.version': '4.47.6',\n 'analytics.header.name': 'TomTom-User-Agent',\n 'analytics.header.sdkName': 'MapsWebSDK',\n 'origin': origin,\n\n // copyrights\n 'endpoints.copyrightsWorld': origin + '/map/1/copyrights.{contentType}',\n 'endpoints.copyrightsBounds': origin + '/map/1/copyrights/{minLon}/{minLat}/{maxLon}/{maxLat}.{contentType}',\n 'endpoints.caption': origin + '/map/1/copyrights/caption.{contentType}',\n\n // search\n 'endpoints.geocode': origin + '/search/2/geocode/{query}.{contentType}',\n 'endpoints.batchGeocodeQuery': '/geocode/{query}.{contentType}',\n 'endpoints.structuredGeocode': origin + '/search/2/structuredGeocode.{contentType}',\n 'endpoints.batchStructuredGeocodeQuery': '/structuredGeocode.{contentType}',\n 'endpoints.search': origin + '/search/2/{type}/{query}.{contentType}',\n 'endpoints.batchSearch': origin + '/search/2/batch.{contentType}',\n 'endpoints.batchSyncSearch': origin + '/search/2/batch/sync.{contentType}',\n 'endpoints.batchSearchQuery': '/{type}/{query}.{contentType}',\n 'endpoints.adp': origin + '/search/2/additionalData.{contentType}',\n 'endpoints.reverseGeocode': origin + '/search/2/{type}/{position}.{contentType}',\n 'endpoints.batchReverseGeocodeQuery': '/{type}/{position}.{contentType}',\n\n // traffic\n 'endpoints.trafficIncidents': origin + '/traffic/services/4/incidentDetails/{style}/{minLat},{minLon},{maxLat},{maxLon}/{zoom}/{trafficModelID}/{contentType}',\n 'endpoints.trafficViewport': origin + '/traffic/services/4/incidentViewport/0,0,.1,.1/0/0,0,.1,.1/0/false/{contentType}',\n 'endpoints.flowSegmentData': origin + '/traffic/services/4/flowSegmentData/{style}/{zoom}/{contentType}',\n 'endpoints.incidentRegions': origin + '/traffic/services/4/incidentRegions/{contentType}',\n\n // layers\n 'endpoints.trafficLayer': '{s}.' + origin + '/traffic/map/4/tile/incidents/{style}/{z}/{x}/{y}.png',\n 'endpoints.trafficFlowLayer': '{s}.' + origin + '/traffic/map/4/tile/flow/{style}/{z}/{x}/{y}.png',\n 'endpoints.tileLayer': '{s}.' + origin + '/map/1/tile/{layer}/{style}/{z}/{x}/{y}.png',\n\n // routing\n 'endpoints.routing': origin + '/routing/1/calculateRoute/{locations}/{contentType}',\n 'endpoints.reachableRange': origin + '/routing/1/calculateReachableRange/{origin}/{contentType}',\n 'endpoints.batchRouting': origin + '/routing/1/batch/{contentType}',\n 'endpoints.batchSyncRouting': origin + '/routing/1/batch/sync/{contentType}',\n 'endpoints.batchRoutingQuery': '/calculateRoute/{locations}/{contentType}',\n 'endpoints.batchReachableRangeQuery': '/calculateReachableRange/{origin}/{contentType}',\n 'endpoints.matrixRouting': origin + '/routing/1/matrix/{contentType}',\n 'endpoints.matrixSyncRouting': origin + '/routing/1/matrix/sync/{contentType}',\n\n //static map image\n 'endpoints.staticMapImage': 'https://' + origin + '/map/1/staticimage',\n\n 'vector.glyphs': 'https://' + origin + '/maps-sdk-js/4.47.6/glyphs/{fontstack}/{range}.pbf',\n 'vector.sprites': 'https://' + origin + '/maps-sdk-js/4.47.6/sprites/sprite'\n };\n});\n\n\n\n\n// WEBPACK FOOTER //\n// /home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/build/mainConfig.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine([], function() {\n 'use strict';\n\n var ObjectModel = function() { //eslint-disable-line\n };\n\n ObjectModel.prototype.simplify = function() {\n return Object.assign({}, this);\n };\n\n return ObjectModel;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/objectModel.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * @ignore\n * Objects of this class represent Html elements with folding/wraping functionality\n */\n/* jshint nomen:false */\ndefine([], function() {\n 'use strict';\n\n function Wrapable(htmlElement, wrapFunction) {\n this._htmlElement = htmlElement;\n this._wrapFunction = wrapFunction;\n }\n\n /**\n * @ignore\n * @return {HtmlElement}\n */\n Wrapable.prototype.getHtmlElement = function() {\n return this._htmlElement;\n };\n\n /**\n * @ignore\n * Wraps/folds element\n */\n Wrapable.prototype.wrap = function() {\n this._wrapFunction(this._htmlElement);\n };\n\n return Wrapable;\n\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/popupContentGenerator/wrapable.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * Utility class for creating map markers.\n *\n * @class SVGIcon\n * @namespace L\n * @extends L.Icon\n * @module Map\n * @constructor\n * @param {Object} [options]\n * @param {Object} [options.background]\n * @param {Number[]} [options.background.iconSize=[30, 36]]\n * @param {Number[]} [options.background.iconAnchor=[15, 36]]\n * @param {String} [options.background.icon=\"icon-marker-black\"]\n * @param {Boolean} [options.background.noPlainSVG=false]\n * @param {Object} [options.icon]\n * @param {Number[]} [options.icon.iconSize=[30, 30]]\n * @param {Number[]} [options.icon.iconAnchor=[0, 0]]\n * @param {String} [options.icon.icon=\"icon-flag-white\"]\n * @param {Boolean} [options.icon.noPlainSVG=false]\n * @param {Number[]} [options.popupAnchor=[0, -30]]\n * @param {Number} [options.opacity=0.8]\n */\ndefine(['leaflet', 'services/utils'], function(L, Utils) {\n 'use strict';\n\n var defaultOptions;\n\n function setNodeIconAnchorStyle(options, node) {\n var anchor;\n if (options.iconAnchor) {\n anchor = L.point(options.iconAnchor);\n node.style.marginLeft = -anchor.x + 'px';\n node.style.marginTop = -anchor.y + 'px';\n }\n }\n\n function setNodeStyleFromStyleOption(options, node) {\n var css;\n for (css in options.style) {\n if (options.style.hasOwnProperty(css)) {\n node.style[css] = options.style[css];\n }\n }\n }\n // TODO: A CSS class name should be used to apply this CSS rules instead of doing it programmatically\n function setNodeStyle(node, options) {\n node.style.width = options.iconSize[0] + 'px';\n node.style.height = options.iconSize[1] + 'px';\n node.style.backgroundSize = options.iconSize[0] + 'px ' + options.iconSize[1] + 'px';\n setNodeIconAnchorStyle(options, node);\n node.style.position = 'absolute';\n node.style.textAlign = 'center';\n node.style.verticalAlign = 'middle';\n node.style.lineHeight = options.iconSize[1] + 'px';\n if (options.style) {\n setNodeStyleFromStyleOption(options, node);\n }\n }\n\n function extractBackgroundToPlainSVG(node, options) {\n var clonedNode, match, svg;\n clonedNode = node.cloneNode();\n clonedNode.style.display = 'none';\n document.body.appendChild(clonedNode);\n svg = window.getComputedStyle(clonedNode).getPropertyValue('background-image');\n document.body.removeChild(clonedNode);\n\n if (!svg) {\n return;\n }\n match = svg.match(/(%3Csvg[^\"']+%3C%2Fsvg%3E)/i);\n if (!match) {\n return;\n }\n svg = decodeURIComponent(match[1]);\n node.innerHTML = svg;\n node.firstChild.setAttribute('width', options.iconSize[0] + 'px');\n node.firstChild.setAttribute('height', options.iconSize[1] + 'px');\n node.firstChild.setAttribute('style', 'display: block; position: absolute;');\n node.style.backgroundImage = 'none';\n }\n\n /**\n * @ignore\n * Receive class names as arguments and returns a string with the valid ones.\n * @param {String[]} classNames Following jsdoc spec: http://usejsdoc.org/tags-param.html\n * @return {String} String with class names\n */\n function concatClassNames(classNames) { // eslint-disable-line no-unused-vars\n return classNames.filter(function(className) {\n return Utils.isNonEmptyString(className);\n }).join(' ');\n }\n\n function createDiv(options, parent, additionalClassName) {\n var classNames = concatClassNames(['icon', options.icon || 'content', additionalClassName]),\n node = L.DomUtil.create('div', classNames, parent);\n setNodeStyle(node, options);\n if (options.icon && !options.noPlainSVG) {\n extractBackgroundToPlainSVG(node, options, options.icon);\n }\n if (options.content) {\n node.innerHTML = options.content;\n }\n return node;\n }\n\n function createImg(options, parent) {\n var node = L.DomUtil.create('div', 'icon-image', parent),\n img = L.DomUtil.create('img', 'icon-image-img', node);\n img.style.width = options.iconSize[0] + 'px';\n img.style.height = options.iconSize[1] + 'px';\n if (/^http/i.test(options.icon)) {\n img.src = options.icon;\n } else {\n img.src = L.Icon.Default.imagePath + '/' + options.icon;\n }\n setNodeStyle(node, options);\n return node;\n }\n\n function isFile(name) {\n return (/\\.(gif|jpg|jpeg|tiff|png|svg)$/i).test(name);\n }\n\n function createNode(options, parent, additionalClassName) {\n if (L.Browser.svg && !isFile(options.icon)) {\n return createDiv(options, parent, additionalClassName);\n }\n return createImg(options, parent);\n }\n\n defaultOptions = {\n background: {\n iconSize: [30, 36],\n iconAnchor: [15, 36],\n icon: 'icon-marker-black',\n noPlainSVG: false\n },\n icon: {\n iconSize: [30, 30],\n iconAnchor: [0, 0],\n icon: 'icon-flag-white',\n noPlainSVG: false\n },\n popupAnchor: [0, -30],\n opacity: 0.8\n };\n\n function mergeOptions(result, source, option) {\n if (source.hasOwnProperty(option)) {\n result[option] = source[option] ? L.extend({}, defaultOptions[option], source[option]) : null;\n }\n }\n\n /**\n * @ignore\n * options: {\n * background: {\n * iconSize: L.Browser.retina ? [50, 60] : [30, 36],\n * iconAnchor: L.Browser.retina ? [25, 60] : [15, 36],\n * icon: 'marker',\n * noPlainSVG: false\n * },\n * icon: {\n * iconSize: L.Browser.retina ? [50, 50] : [30, 30],\n * iconAnchor: [0, 0],\n * icon: 'flag-white',\n * noPlainSVG: false\n * },\n * content: {\n * iconSize: [30, 30],\n * iconAnchor: [0, 0],\n * content: '',\n * noPlainSVG: true,\n * style: {\n * 'color': '#fff',\n * 'font-weight': 'bold',\n * 'font-size': '20px'\n * }\n * }\n * popupAnchor: L.Browser.retina ? [0, -50] : [0, -30],\n * opacity: 0.8\n */\n\n L.SVGIcon = L.Icon.extend({\n initialize: function(options) {\n this.options = L.Util.extend({}, defaultOptions, options);\n if (!options) {\n return;\n }\n mergeOptions(this.options, options, 'background');\n mergeOptions(this.options, options, 'icon');\n },\n\n createIcon: function() {\n var options = this.options;\n this.container = createNode(options.background || options.icon, null, 'icon-marker');\n if (options.background && options.icon && options.icon.icon) {\n createNode(options.icon, this.container, null);\n }\n if (options.content) {\n this.contentContainer = createDiv(options.content, this.container, null);\n }\n L.DomUtil.setOpacity(this.container, options.opacity);\n return this.container;\n },\n\n /**\n * Sets the HTML content of the marker.\n * @method setContent\n * @param {String} content Valid HTML string\n */\n setContent: function(content) {\n if (this.contentContainer) {\n this.contentContainer.innerHTML = content;\n }\n },\n\n /**\n * Changes the opacity of the marker.\n * @method setOpacity\n * @param {Number} opacity Number between 0 and 1\n */\n setOpacity: function(opacity) {\n this.options.opacity = opacity;\n L.DomUtil.setOpacity(this.container, opacity);\n }\n });\n\n L.svgIcon = function(options) {\n return new L.SVGIcon(options);\n };\n\n return L.SVGIcon;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/svgIcon.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * This module do HTTP requests modifying the request's data to handle bounding box fixes when the are\n * crosses the antimeridian line.\n * @ignore\n */\ndefine(['./utils'], function(utils) {\n 'use strict';\n\n function calculateBoundingBox(bBox) {\n if (bBox.minLon < -180) {\n return [\n { minLon: -180, minLat: bBox.minLat, maxLon: bBox.maxLon, maxLat: bBox.maxLat },\n { minLon: 360 + bBox.minLon, minLat: bBox.minLat, maxLon: 180, maxLat: bBox.maxLat }\n ];\n }\n\n if (bBox.maxLon > 180) {\n return [\n { minLon: bBox.minLon, minLat: bBox.minLat, maxLon: 180, maxLat: bBox.maxLat },\n { minLon: -180, minLat: bBox.minLat, maxLon: bBox.maxLon - 360, maxLat: bBox.maxLat }\n ];\n }\n\n return [bBox];\n }\n\n function splitOnEdgeOfTheWorld(bBox) {\n if (!bBox) {\n return [];\n }\n return calculateBoundingBox(bBox);\n }\n\n function responseCollector(numBoundingBoxes, responses, callback, model) {\n return function(response) {\n responses.push(response);\n if (responses.length === numBoundingBoxes) {\n responses = responses.length === 1 ? responses[0] : responses;\n callback(model(responses));\n }\n };\n }\n\n /**\n * @ignore\n * @param {Object} bbox\n * @param {Object} bbox.topLeftPoint\n * @param {Object} bbox.btmRightPoint\n * @return {LatLngBounds}\n */\n function unwrapBbox(bbox) {\n var wrappedBbox = {\n topLeftPoint: L.latLng(bbox.topLeftPoint.lat, bbox.topLeftPoint.lon).wrap(),\n btmRightPoint: L.latLng(bbox.btmRightPoint.lat, bbox.btmRightPoint.lon).wrap()\n };\n if (wrappedBbox.topLeftPoint.lng > 0 && wrappedBbox.btmRightPoint.lng < 0) {\n return {\n topLeftPoint: {\n lat: wrappedBbox.topLeftPoint.lat,\n lon: wrappedBbox.topLeftPoint.lng\n },\n btmRightPoint: {\n lat: wrappedBbox.btmRightPoint.lat,\n lon: wrappedBbox.btmRightPoint.lng + 360\n }\n };\n }\n return bbox;\n }\n\n /**\n * @ignore\n * @param {Object[]} results\n * @return {Object[]}\n */\n function unwrapBboxInResponse(results) {\n return results.map(function(result) {\n if (result.boundingBox) {\n result.boundingBox = unwrapBbox(result.boundingBox);\n }\n if (result.viewport) {\n result.viewport = unwrapBbox(result.viewport);\n }\n return result;\n });\n }\n\n /**\n * @ignore\n * It returns a new callback function that will handle the unwrapping of bbox values.\n * @param {Object} data\n * @param {Function} originalCallback\n * @return {Function}\n */\n function handleBboxUnwrapping(data, originalCallback) {\n if (data.unwrapBbox) {\n return function(results) {\n originalCallback(unwrapBboxInResponse(results));\n };\n }\n delete data.unwrapBbox;\n return originalCallback;\n }\n\n function getBoundingBox(data) {\n if (data.boundingBox) {\n return data.boundingBox;\n } else if (utils.isValidValue(data.minLat) && utils.isValidValue(data.minLon) &&\n utils.isValidValue(data.maxLat) && utils.isValidValue(data.maxLon)) {\n return {\n minLat: data.minLat,\n minLon: data.minLon,\n maxLat: data.maxLat,\n maxLon: data.maxLon\n };\n }\n\n return null;\n }\n\n return function(service, model, data, callback, addBoundingBoxParameters) {\n var boundingBoxes = splitOnEdgeOfTheWorld(getBoundingBox(data)),\n boundingBoxesLength = boundingBoxes.length || 1,\n responses = [],\n i;\n delete data.boundingBox;\n\n callback = handleBboxUnwrapping(data, callback);\n\n for (i = 0; i < boundingBoxesLength; i += 1) {\n data = boundingBoxes[i] ? addBoundingBoxParameters(data, boundingBoxes[i]) : data;\n service(data, responseCollector(boundingBoxesLength, responses, callback, model));\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/worldEdge.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Tile layer for Leaflet that use the\n * [Maps API - Vector](https://developer.tomtom.com/maps-api/maps-api-documentation/vector)\n * from TomTom.\n *\n * The current vector renderer implementation is based on the\n * [Mapbox GL JS library](https://www.mapbox.com/mapbox-gl-js/api/).\n *\n * The recommended way to use vector maps is by using the \"source\" option of {{#crossLink \"L.Map\"}}{{/crossLink}} which\n * will create an instance of this class and immediately attach it to the newly created map instance.\n *\n * @example\n * ```js\n * // Vector layer instance with factory vector styles\n * var vectorLayer = new L.TomTomVectorLayer({\n * vector: {\n * key: \"\"\n * }\n * });\n * ```\n *\n * @class TomTomVectorLayer\n * @namespace L\n * @module Map\n * @extends L.Class\n * @constructor\n * @param {Object} [options] It accepts all the options that\n * Leaflet's TileLayer\n * allows.\n * The additional options, which are TomTom specific, are described below.\n * @param {\"main\"|\"night\"} [options.style=\"main\"] The base map style to use\n * @param {\"basic\"|\"hybrid\"|\"labels\"} [options.layer=\"basic\"] The base map's layer to use\n * @param {Object} [options.vector] Options specific for vector layer\n * @param {String} [options.vector.key] API key that can be obtained from\n * [TomTom's developer portal](https://developer.tomtom.com).\n * When the key is passed on the map's initialization, it is set globally for all the services.\n * It can be overwritten with the `tomtom.key()` method globally or per service\n * with `tomtom..key()` functions.\n * It is also possible to pass a specific key while working with instances of the services.\n * @param {Object} [options.vector.renderer] Mapbox GL JS Map options as described in the\n * Mapbox API Docs\n * @param {\"error\"|\"raster\"} [options.vector.fallback=\"error\"] Defines the action when the browser doesn't have\n * support for WebGL (needed by the vector layer).\n * The possible values are:\n * - `\"error\"` will throw a javascript Error informing about the problem.\n * - `\"raster\"` will automatically switch to the raster layer.\n * @param {String} [options.language] Language to be used for map labels. Should be one of supported\n * IETF language tags described\n * [here](https://developer.tomtom.com/maps-api/maps-api-documentation-raster/raster-tile#listOfSupportedLanguages).\n * When data in specified language is not available for a specific label,\n * default language\n * is used.\n */\n/* eslint-enable max-len */\n/* jshint nomen:false */\ndefine([\n 'leaflet',\n 'security',\n 'mapbox-gl-leaflet',\n 'display/layers/mapTheme',\n 'apiKeyNames',\n '../../utils',\n 'services/utils',\n 'requester/analytics'\n], function(L, security, mapboxGLLeaflet, mapTheme, ApiKeyNames, Utils, ServiceUtils, analytics) {\n 'use strict';\n\n var EVENTS = {\n /**\n * Fired immediately after the style was fully loaded.\n * @event STYLE_LOAD_END\n * @type String\n */\n STYLE_LOAD_END: 'tomtom.styleloadend',\n\n /**\n * Fired when an error occurs during the initialization of the vector layer.\n * @event MAP_ERROR\n * @type String\n */\n MAP_ERROR: 'tomtom.error'\n };\n\n function mapboxStyleLoadedEventHandler(e) {\n if (e.dataType !== 'style') {\n return;\n }\n this.fire(L.TomTomVectorLayer.Events.STYLE_LOAD_END);\n }\n\n function mapErrorHandler(event) {\n this.fire(L.TomTomVectorLayer.Events.MAP_ERROR, event);\n }\n\n function toFront(el) {\n var parent = el.parentNode;\n if (parent.lastChild !== el) {\n parent.appendChild(el);\n }\n }\n\n function toBack(el) {\n var parent = el.parentNode;\n if (parent.firstChild !== el) {\n parent.insertBefore(el, parent.firstChild);\n }\n }\n\n L.TomTomVectorLayer = mapboxGLLeaflet.extend({\n\n Events: EVENTS,\n\n statics: {\n Events: EVENTS\n },\n\n /**\n * Name of vector layer. It can be used to differentiate layers.\n * @property name\n * @default \"vector\"\n * @type String\n */\n name: 'vector',\n\n onAdd: function(map) {\n var that = this;\n mapboxGLLeaflet.prototype.onAdd.call(this, map);\n this.bringToBack();\n this._glMap.on('data', this._mapboxStyleLoadedEventHandler);\n this._glMap.on('error', this._mapErrorHandler);\n this._glMap.on('zoomstart', function() {\n that._glMap.once('idle', function() {\n that._glMap.triggerRepaint();\n });\n });\n Utils.updateMaxZoom(map, this.name);\n },\n\n onRemove: function(map) {\n this._glMap.off('data', this._mapboxStyleLoadedEventHandler);\n this._glMap.off('error', this._mapErrorHandler);\n mapboxGLLeaflet.prototype.onRemove.call(this, map);\n },\n\n _updateZIndex: function() {\n if (this._glContainer && this.options.zIndex !== undefined && this.options.zIndex !== null) {\n this._glContainer.style.zIndex = this.options.zIndex;\n }\n },\n\n _setAutoZIndex: function(compare) {\n // go through all other layers of the same pane, set zIndex to max + 1 (front) or min - 1 (back)\n var i, len, zIndex,\n layers = this.getPane().children,\n edgeZIndex = -compare(-Infinity, Infinity); // -Infinity for max, Infinity for min\n for (i = 0, len = layers.length, zIndex; i < len; i++) {\n zIndex = layers[i].style.zIndex;\n if (layers[i] !== this._glContainer && zIndex) {\n edgeZIndex = compare(edgeZIndex, Number(zIndex));\n }\n }\n if (isFinite(edgeZIndex)) {\n this.options.zIndex = edgeZIndex + compare(-1, 1);\n this._updateZIndex();\n }\n },\n\n bringToBack: function() {\n if (this._map && this._glContainer) {\n toBack(this._glContainer);\n this._setAutoZIndex(Math.min);\n }\n return this;\n },\n\n bringToFront: function() {\n if (this._map && this._glContainer) {\n toFront(this._glContainer);\n this._setAutoZIndex(Math.max);\n }\n return this;\n },\n\n _validateUrl: function(url) {\n var pattern = /(http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-/]))?/;\n\n return Boolean(ServiceUtils.isString(url) && pattern.test(url));\n },\n\n _getResourcesUrls: function(options) {\n return {\n glyphs: this._validateUrl(options.glyphsUrl) ? options.glyphsUrl :\n options.basePath + '/glyphs/{fontstack}/{range}.pbf',\n sprite: this._validateUrl(options.spriteUrl) ? options.spriteUrl : options.basePath + '/sprites/sprite'\n };\n },\n /**\n * Returns the vector style object currently applied to the vector layer.\n *\n * @method getStyle\n * @return {Object} A object with the current style or undefined if no style was applied yet.\n */\n getStyle: function() {\n return this._glMap.style.stylesheet;\n },\n /**\n * Sets the style for the vector layer.\n *\n * It expects an object formatted in compliance with the\n * [Mapbox style specification](https://www.mapbox.com/mapbox-gl-js/style-spec/).\n *\n * @method setStyle\n * @param {Object} style object which will be applied to vectorLayer\n */\n setStyle: function(style) {\n if (this._glMap) {\n this._glMap.setStyle(style);\n }\n },\n\n updateOptions: function(options) {\n var theme = mapTheme.getTheme([this.options, options], this.name);\n this.options.layer = theme.layer;\n this.options.style = theme.style;\n this.options.renderer.style.theme = theme;\n if (this._glMap) {\n this._glMap.setStyle(this.options.renderer.style);\n }\n },\n\n _initializeDefaultStyleOptions: function(options) {\n var defaultStyleUrls;\n options.basePath = options.basePath !== undefined ? options.basePath : '/sdk';\n defaultStyleUrls = {\n main: {\n basic: options.basePath + '/styles/basic_main.json',\n hybrid: options.basePath + '/styles/hybrid_main.json',\n labels: options.basePath + '/styles/labels_main.json'\n },\n night: {\n basic: options.basePath + '/styles/basic_night.json',\n hybrid: options.basePath + '/styles/hybrid_night.json',\n labels: options.basePath + '/styles/labels_night.json'\n }\n };\n\n options.styleUrlMapping = L.Util.extend(defaultStyleUrls, options.styleUrlMapping);\n return options;\n },\n\n initialize: function(options) {\n var theme, vectorOptions, rendererOptions, resourceUrls;\n options = L.extend({}, options);\n this._initializeDefaultStyleOptions(options);\n theme = mapTheme.getTheme([options, options.vector], this.name);\n vectorOptions = L.extend({}, options.vector);\n vectorOptions.renderer = vectorOptions.renderer || {};\n security.setKey(ApiKeyNames.vector, vectorOptions.key);\n resourceUrls = this._getResourcesUrls(options);\n rendererOptions = {\n accessToken: 'no-token',\n style: {\n resourceUrls: resourceUrls,\n styleUrlMapping: options.styleUrlMapping,\n theme: theme,\n language: options.language,\n geopolView: options.geopolView,\n securityKeyName: options.securityKeyName || ApiKeyNames.vector,\n preSetStyleCallback: options.preSetStyleCallback\n },\n transformRequest: function(url) {\n var headers = {};\n\n if (analytics.isTomtomOrigin(url)) {\n headers[analytics.getHeaderName()] = analytics.getHeaderContent();\n }\n\n return {\n url: url,\n headers: headers\n };\n }\n };\n vectorOptions.renderer = L.extend(rendererOptions, vectorOptions.renderer);\n vectorOptions.minZoom = 2;\n vectorOptions.maxZoom = 22;\n vectorOptions.style = theme.style;\n vectorOptions.layer = theme.layer;\n L.setOptions(this, vectorOptions);\n this._mapboxStyleLoadedEventHandler = mapboxStyleLoadedEventHandler.bind(this);\n this._mapErrorHandler = mapErrorHandler.bind(this);\n mapboxGLLeaflet.prototype.initialize.call(this, vectorOptions);\n }\n });\n\n ServiceUtils.addDeprecatedProperty(L.TomTomVectorLayer, 'EVENTS', 'Events');\n\n L.tomTomVectorLayer = function(options) {\n return new L.TomTomVectorLayer(options);\n };\n\n return L.TomTomVectorLayer;\n});\n\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/vector/vectorLayer.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * @ignore\n * This module returns a function that returns a mixin object with helper functions to start listen on layers' events.\n * This module has a soft dependency to the traffic and trafficFlow modules.\n */\n/* jshint nomen:false */\ndefine([], function() {\n 'use strict';\n\n /**\n * @ignore\n * @param {String} baseName\n * @return {String} Name of the property in the layer instance\n */\n function getFlagName(baseName) {\n return '_' + baseName + 'Added';\n }\n\n /**\n * @ignore\n * @param {L.Layer} source Layer instance that could be added to or removed from the map if is necessary\n * @param {String} flagName\n * @return {String} Value of the property in the layer instance\n */\n function getFlag(source, flagName) {\n return source[getFlagName(flagName)];\n }\n\n /**\n * @ignore\n * @param {L.Layer} source Layer instance\n * @param {String} baseLayerName\n * @return {Boolean}\n */\n function shouldAddLayer(source, baseLayerName) {\n var mapUseBaseLayer, mapUseTraffic, mapUseTrafficFlow, mapUseVectorTrafficFlow, mapUseVectorIncidents;\n mapUseBaseLayer = Boolean(getFlag(source, baseLayerName));\n mapUseTraffic = Boolean(getFlag(source, 'traffic'));\n mapUseTrafficFlow = Boolean(getFlag(source, 'trafficFlow'));\n mapUseVectorTrafficFlow = Boolean(getFlag(source, 'vectorTrafficFlow'));\n mapUseVectorIncidents = Boolean(getFlag(source, 'vectorTrafficIncidents'));\n return mapUseBaseLayer && (\n mapUseTraffic ||\n mapUseTrafficFlow ||\n mapUseVectorTrafficFlow ||\n mapUseVectorIncidents\n );\n }\n\n /**\n * @ignore\n * @param {L.Layer} source Layer instance\n * @param {String} baseLayerName\n * @return {Boolean}\n */\n function shouldRemoveLayer(source, baseLayerName) {\n return !shouldAddLayer(source, baseLayerName);\n }\n\n /**\n * @ignore\n * @param {L.Layer} source Layer instance that could be added to the map if is necessary\n * @param {L.Map} map\n * @param {String} baseLayerName\n */\n function addIfNecessary(source, map, baseLayerName) {\n if (source._attached) {\n return;\n }\n if (shouldAddLayer(source, baseLayerName)) {\n map.addLayer(source);\n source._attached = true;\n }\n }\n\n /**\n * @ignore\n * @param {L.Layer} source Layer instance that could be removed from the map if is necessary\n * @param {L.Map} map\n * @param {String} baseLayerName\n */\n function removeIfNecessary(source, map, baseLayerName) {\n if (!source._attached) {\n return;\n }\n if (shouldRemoveLayer(source, baseLayerName)) {\n map.removeLayer(source);\n source._attached = false;\n }\n }\n\n return function(baseLayerName) {\n return {\n /**\n * @ignore\n * Install listeners to add or remove the current Layer instance (of the\n * class that use this mixin functions) if specific Layer types are added to the map.\n * @param {L.Map} map\n */\n registerEventHandlers: function(map) {\n var that = this;\n\n map.on('layeradd', function(event) {\n var layerName = event.layer.name;\n if (!layerName) {\n return;\n }\n that[getFlagName(layerName)] = true;\n addIfNecessary(that, map, baseLayerName);\n });\n map.on('layerremove', function(event) {\n var layerName = event.layer.name;\n if (!layerName) {\n return;\n }\n that[getFlagName(layerName)] = false;\n removeIfNecessary(that, map, baseLayerName);\n });\n }\n };\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/labelsLayerMixinFactory.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Reverse geocode service implementation.\n *\n * It allows to convert geographical coordinates into textual address representation using the TomTom's\n * [Search API - Reverse Geocode](https://developer.tomtom.com/search-api/search-api-documentation-reverse-geocoding/reverse-geocode).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"ReverseGeocode/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"ReverseGeocode/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * The final response from service is a JSON object with the following structure:\n *\n* ```js\n * {\n * \"summary\": {\n * \"queryTime\": 172,\n * \"numResults\": 1\n * },\n * \"addresses\": [\n * {\n * \"address\": { // Structured Address for the result\n * \"buildingNumber\": \"2515\",\n * \"streetNumber\": \"2515\",\n * \"routeNumbers\": [],\n * \"street\": \"Soquel Dr\",\n * \"streetName\": \"Soquel Dr\",\n * \"streetNameAndNumber\": \"2515 Soquel Dr\",\n * \"countryCode\": \"US\",\n * \"countrySubdivision\": \"CA\",\n * \"countrySubdivisionName\": \"California\",\n * \"municipality\": \"Santa Cruz\",\n * \"sideOfStreet\": \"R\",\n * \"offsetPosition\": \"36.988240,-121.974790\",\n * \"country\": \"United States of America\",\n * \"countryCodeISO3\": \"USA\",\n * \"freeformAddress\": \"2515 Soquel Dr\\nSanta Cruz CA 95065\",\n * \"boundingBox\": {\n * \"northEast\": \"36.99265,-121.96917\",\n * \"southWest\": \"36.98365,-121.98043\",\n * \"entity\": \"position\"\n * },\n * },\n * \"position\": \"36.98815,-121.97480\",\n * \"matchType\": \"HouseNumberRange\",\n * \"roadUse\": [\n * \"LocalStreet\"\n * ]\n * }\n * ],\n * \"spatialKeys\": []\n * }\n * ```\n *\n * @example\n * ```js\n * function callbackFn(response) {\n * console.log(response);\n * }\n * tomtom.reverseGeocode()\n * .position(\"51.759,19.449\")\n * .go()\n * .then(callbackFn);\n * ```\n *\n * @class ReverseGeocode\n * @module Services\n * @uses Chain\n * @uses KeyMixin\n * @uses ProtocolMixin\n * @uses RadiusMixin\n * @uses PositionMixin\n * @uses SpatialKeysMixin\n * @uses LanguageMixin\n * @uses ViewMixin\n * @uses HeadingMixin\n * @uses AllowFreeformNewlineMixin\n *\n * @constructor\n * @param {Object} [options] Options to be passed to the reverse geocode call,\n * or Array of such options objects to perform batch request.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n *\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n *\n * @param {String|Array|Object} options.position Specific longitude and latitude of the location where the address\n * is supposed to be found.\n * The possible formats are explained in more detail in the\n * {{#crossLink \"ReverseGeocode/position:method\"}}{{/crossLink}} method.\n * This option is required to make the call.\n * @param {String} [options.key] API Key valid for requested service.\n * @param {Boolean} [options.spatialKeys=false] DEPRECATED! If is enable the response will also contain a proprietary geo-spatial\n * key information for a specified location\n * @param {Boolean} [options.returnSpeedLimit=false] To enable return of the posted speed limit (where\n * available).\n * @param {Number} [options.heading] The directional heading of the vehicle in degrees, for travel along a\n * segment of roadway.\n * `0` is North, `90` is East and so on, values range from `-360` to `360`.\n * The precision can include up to one decimal place.\n * @param {Number} [options.radius=10000] The maximum distance in meters from the specified position to consider\n * @param {String} [options.number] If a street number is sent in along with the request, the response\n * may include the side of the street (Left/Right) and also an offset position for that street number.\n * @param {Boolean} [options.returnRoadUse=false] Requires to include a road use array for reversegeocodes at street level\n * @param {String[]|String} [options.roadUse] To restrict the result to one or a group of the following road uses:\n * `LimitedAccess`, `Arterial`, `Terminal`, `Ramp`, `Rotary`, `LocalStreet`.\n * @param {String} [options.language] Preferred language and script in which search results (including place names) are returned.\n * If language is not specified, the default official name will be returned in response. Supported languages are listed in the\n * documentation of the service. If requested language is not supported, a special error code will be returned.\n * @param {Boolean} [options.returnMatchType] Include information on the type of match the geocoder achieved in the response.\n * @param {Boolean} [options.allowFreeformNewline=false] Format of newlines in the formatted address.\n * If true, the address will contain newlines.\n * If false, newlines will be converted to commas.\n * @param {String} [options.view=Unified] The geopolitical view used in subsequent calls\n */\n/* eslint-enable */\ndefine(['./reverseGeocodeBase', './reverseGeocodeParameters', './types'],\n function(reverseGeocodeBase, reverseGeocodeParams, types) {\n 'use strict';\n\n var ReverseGeocodeBasePrototype = reverseGeocodeBase.prototype.constructor;\n\n function ReverseGeocode(options) {\n ReverseGeocodeBasePrototype.call(this, options);\n this.fields = reverseGeocodeParams(types.reverseGeocode);\n }\n\n ReverseGeocode.prototype = new ReverseGeocodeBasePrototype();\n ReverseGeocode.prototype.constructor = ReverseGeocode;\n\n return function(options) {\n return (new ReverseGeocode(options)).construct();\n };\n });\n\n\n\n// WEBPACK FOOTER //\n// ./services/reverseGeocode/reverseGeocode.js","/**\n * @license\n * Lodash (Custom Build) \n * Build: `lodash core -o ./dist/lodash.core.js`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.5';\n\n /** Error message constants. */\n var FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_PARTIAL_FLAG = 32;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n /** `Object#toString` result references. */\n var 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 numberTag = '[object Number]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n /** Used to match HTML entities and HTML characters. */\n var reUnescapedHtml = /[&<>\"']/g,\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n array.push.apply(array, values);\n return array;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\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 */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\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 */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection 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 or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return baseMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\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 */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /*--------------------------------------------------------------------------*/\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n objectProto = Object.prototype;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\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 */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Built-in value references. */\n var objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeIsFinite = root.isFinite,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n return value instanceof LodashWrapper\n ? value\n : new LodashWrapper(value);\n }\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 */\n var 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 * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n }\n\n LodashWrapper.prototype = baseCreate(lodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\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 */\n function 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 * 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 */\n function baseAssignValue(object, key, value) {\n object[key] = value;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !false)\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\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 */\n var 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 */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return baseFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\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 */\n function baseGetTag(value) {\n return objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\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 */\n var baseIsArguments = noop;\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\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 {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, 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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : baseGetTag(object),\n othTag = othIsArr ? arrayTag : baseGetTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n stack || (stack = []);\n var objStack = find(stack, function(entry) {\n return entry[0] == object;\n });\n var othStack = find(stack, function(entry) {\n return entry[0] == other;\n });\n if (objStack && othStack) {\n return objStack[1] == other;\n }\n stack.push([object, other]);\n stack.push([other, object]);\n if (isSameTag && !objIsObj) {\n var result = (objIsArr)\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n stack.pop();\n return result;\n }\n if (!(bitmask & COMPARE_PARTIAL_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 var result = equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n stack.pop();\n return result;\n }\n }\n if (!isSameTag) {\n return false;\n }\n var result = equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n stack.pop();\n return result;\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\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 */\n function baseIteratee(func) {\n if (typeof func == 'function') {\n return func;\n }\n if (func == null) {\n return identity;\n }\n return (typeof func == 'object' ? baseMatches : baseProperty)(func);\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\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 */\n function baseMatches(source) {\n var props = nativeKeys(source);\n return function(object) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length];\n if (!(key in object &&\n baseIsEqual(source[key], object[key], COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG)\n )) {\n return false;\n }\n }\n return true;\n };\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, props) {\n object = Object(object);\n return reduce(props, function(result, key) {\n if (key in object) {\n result[key] = object[key];\n }\n return result;\n }, {});\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 */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\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 */\n function copyArray(source) {\n return baseSlice(source, 0, source.length);\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection 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 */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n return reduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = false;\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = false;\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\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 */\n function 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 */\n function 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\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\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 `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\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 */\n function 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 * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return fn.apply(isBind ? thisArg : this, args);\n }\n return wrapper;\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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? [] : undefined;\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n var compared;\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 (!baseSome(other, function(othValue, othIndex) {\n if (!indexOf(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\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 }\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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_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 var result = true;\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n var compared;\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, 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 return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value);\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 */\n function 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 */\n function 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 * 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 */\n function 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 */\n function 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 */\n function 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 func.apply(this, otherArgs);\n };\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 */\n var setToString = identity;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n return baseFilter(array, Boolean);\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (typeof fromIndex == 'number') {\n fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;\n } else {\n fromIndex = 0;\n }\n var index = (fromIndex || 0) - 1,\n isReflexive = value === value;\n\n while (++index < length) {\n var other = array[index];\n if ((isReflexive ? other === value : other !== other)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n start = start == null ? 0 : +start;\n end = end === undefined ? length : +end;\n return length ? baseSlice(array, start, end) : [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n predicate = guard ? undefined : predicate;\n return baseEvery(collection, baseIteratee(predicate));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n return baseFilter(collection, baseIteratee(predicate));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n return baseEach(collection, baseIteratee(iteratee));\n }\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n return baseMap(collection, baseIteratee(iteratee));\n }\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n return baseReduce(collection, baseIteratee(iteratee), accumulator, arguments.length < 3, baseEach);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n collection = isArrayLike(collection) ? collection : nativeKeys(collection);\n return collection.length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n predicate = guard ? undefined : predicate;\n return baseSome(collection, baseIteratee(predicate));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n function sortBy(collection, iteratee) {\n var index = 0;\n iteratee = baseIteratee(iteratee);\n\n return baseMap(baseMap(collection, function(value, key, collection) {\n return { 'value': value, 'index': index++, 'criteria': iteratee(value, key, collection) };\n }).sort(function(object, other) {\n return compareAscending(object.criteria, other.criteria) || (object.index - other.index);\n }), baseProperty('value'));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n return createPartial(func, WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG, thisArg, partials);\n });\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n if (!isObject(value)) {\n return value;\n }\n return isArray(value) ? copyArray(value) : copyObject(value, nativeKeys(value));\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 */\n function 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 */\n var 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 */\n var 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 */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or 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 boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is classified as a `Date` 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 date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = baseIsDate;\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\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 empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (isArrayLike(value) &&\n (isArray(value) || isString(value) ||\n isFunction(value.splice) || isArguments(value))) {\n return !value.length;\n }\n return !nativeKeys(value).length;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.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 * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(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 */\n function 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 */\n function 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 */\n function 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 */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is `null`.\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 `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\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 number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` 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 regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = baseIsRegExp;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!isArrayLike(value)) {\n return values(value);\n }\n return value.length ? copyArray(value) : [];\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n var toInteger = Number;\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 */\n var toNumber = Number;\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 convert.\n * @returns {string} Returns the converted 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 */\n function toString(value) {\n if (typeof value == 'string') {\n return value;\n }\n return value == null ? '' : (value + '');\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n copyObject(source, nativeKeys(source), object);\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, nativeKeysIn(source), object);\n });\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : assign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\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 = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasOwnProperty.call(object, path);\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 */\n var keys = nativeKeys;\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 */\n var keysIn = nativeKeysIn;\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n var value = object == null ? undefined : object[path];\n if (value === undefined) {\n value = defaultValue;\n }\n return isFunction(value) ? value.call(object) : value;\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\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 values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\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 */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n var iteratee = baseIteratee;\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(assign({}, source));\n }\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n baseEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.assignIn = assignIn;\n lodash.before = before;\n lodash.bind = bind;\n lodash.chain = chain;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.create = create;\n lodash.defaults = defaults;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.filter = filter;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.iteratee = iteratee;\n lodash.keys = keys;\n lodash.map = map;\n lodash.matches = matches;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.once = once;\n lodash.pick = pick;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.tap = tap;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.values = values;\n\n // Add aliases.\n lodash.extend = assignIn;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.clone = clone;\n lodash.escape = escape;\n lodash.every = every;\n lodash.find = find;\n lodash.forEach = forEach;\n lodash.has = has;\n lodash.head = head;\n lodash.identity = identity;\n lodash.indexOf = indexOf;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isBoolean = isBoolean;\n lodash.isDate = isDate;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isNaN = isNaN;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isRegExp = isRegExp;\n lodash.isString = isString;\n lodash.isUndefined = isUndefined;\n lodash.last = last;\n lodash.max = max;\n lodash.min = min;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.reduce = reduce;\n lodash.result = result;\n lodash.size = size;\n lodash.some = some;\n lodash.uniqueId = uniqueId;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Add `Array` methods to `lodash.prototype`.\n baseEach(['pop', 'join', 'replace', 'reverse', 'split', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = (/^(?:replace|split)$/.test(methodName) ? String.prototype : arrayProto)[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|join|replace|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n /*--------------------------------------------------------------------------*/\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = lodash;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return lodash;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = lodash)._ = lodash;\n // Export for CommonJS support.\n freeExports._ = lodash;\n }\n else {\n // Export to the global object.\n root._ = lodash;\n }\n}.call(this));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/lodash/core.js\n// module id = 26\n// module chunks = 0","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine(function(require) {\n 'use strict';\n var mapboxSetStyleMethodModifier = require('./setStyleMethodModifier/mapboxSetStyleMethodModifier');\n var mainConfig = require('mainConfig');\n\n var mapboxgl;\n var isRtlPluginSet = false;\n\n function tryToGetMapbox() {\n var mapbox, rtlPlugin, objectURL;\n try {\n mapbox = require('mapbox-gl-js');\n\n //This flag is necessary, because setRTLTextPlugin throws error\n //setRTLTextPlugin cannot be called multiple times\n if (!isRtlPluginSet) {\n rtlPlugin = require('raw-loader!mapbox-gl-rtl-text');\n objectURL = window.URL.createObjectURL(new window.Blob([rtlPlugin], {type: 'text/javascript'}));\n //setRTLTextPlugin expects objectURL\n mapbox.setRTLTextPlugin(objectURL);\n isRtlPluginSet = true;\n }\n mapboxSetStyleMethodModifier.modifySetStyle(mapbox);\n return mapbox;\n } catch (e) {\n /**\n * hack to have optional dependency of mapboxgl\n * If you have some problems with mapbox support uncomment line below.\n * We are swallowing some errors here.\n */\n //console.error(e, e.stack);\n return null;\n }\n }\n\n mapboxgl = tryToGetMapbox();\n\n return {\n setMapbox: function(mapboxReference) {\n if (mapboxReference && mapboxReference.version !== mainConfig['mapboxgl.version']) {\n console.warn('TomTom Maps SDK for Web expects mapboxgl \"' + mainConfig['mapboxgl.version'] +\n '\" version.');\n }\n mapboxgl = mapboxReference;\n mapboxSetStyleMethodModifier.modifySetStyle(mapboxgl);\n },\n tryToSetMapbox: function() {\n if (!this.isMapboxSet()) {\n mapboxgl = tryToGetMapbox();\n }\n return this.isMapboxSet();\n },\n getMapbox: function() {\n if (!this.isMapboxSet()) {\n throw new Error('You should provide Mapbox GL JS reference first.');\n }\n return mapboxgl;\n },\n isMapboxSet: function() {\n return Boolean(mapboxgl);\n },\n isMapboxSupported: function() {\n return this.tryToSetMapbox() && mapboxgl.supported();\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/vector/mapboxProvider.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine([], function() {\n 'use strict';\n\n return {\n or: function(value, defaultValue) {\n return value || defaultValue;\n },\n\n required: function(value, error) {\n if (value === undefined || value === null) {\n throw new TypeError(error);\n }\n return value;\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./rest/utils.js","define(['common/parameterApplications'],\n function(parameterApplications) {\n\n function isQueryParameter(fieldEntry) {\n var field = fieldEntry[1];\n return !field.application || field.application === parameterApplications.QUERY;\n }\n\n function isPathParam(fieldEntry) {\n var field = fieldEntry[1];\n return field.application === parameterApplications.PATH;\n }\n\n function isPostParam(fieldEntry) {\n var field = fieldEntry[1];\n return field.application === parameterApplications.POST;\n }\n\n function isOtherParam(fieldEntry) {\n var field = fieldEntry[1];\n return field.application === parameterApplications.OTHER;\n }\n\n function getFieldEntryName(fieldEntry) {\n return fieldEntry[0];\n }\n\n function toEntry(source) {\n return function(fieldName) {\n var name = (source[fieldName] && source[fieldName].name) || fieldName;\n return [name, source[fieldName]];\n };\n }\n\n function createParamsNames(fields, paramsFilterFunction) {\n return Object.keys(fields).map(toEntry(fields)).filter(paramsFilterFunction).map(getFieldEntryName);\n }\n\n function createQueryParamsNames(fields) {\n return createParamsNames(fields, isQueryParameter);\n }\n\n function createPathParamsNames(fields) {\n return createParamsNames(fields, isPathParam);\n }\n\n function createPostParamsNames(fields) {\n return createParamsNames(fields, isPostParam);\n }\n\n function createOtherParamsNames(fields) {\n return createParamsNames(fields, isOtherParam);\n }\n\n function createParams(fields, createParamNamesFunction, requestOptions) {\n var params = {};\n createParamNamesFunction(fields).forEach(function(paramName) {\n if (paramName in requestOptions) {\n params[paramName] = requestOptions[paramName];\n }\n });\n\n return params;\n }\n\n function createPathParams(fields, requestOptions) {\n return createParams(fields, createPathParamsNames, requestOptions);\n }\n\n return function(fields, requestOptions) {\n return {\n pathParams: createPathParams(fields, requestOptions),\n queryParams: createParams(fields, createQueryParamsNames, requestOptions),\n postParams: createParams(fields, createPostParamsNames, requestOptions),\n otherParams: createParams(fields, createOtherParamsNames, requestOptions)\n };\n };\n });\n\n\n\n// WEBPACK FOOTER //\n// ./rest/request/requestParamsFactory.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine(['./localeService'], function(LocaleService) {\n 'use strict';\n return new LocaleService();\n});\n\n\n\n// WEBPACK FOOTER //\n// ./config/language/globalLocaleService.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Service for store and retrieve an specific locale setting.\n *\n * This service is used by map instances, widgets and services to store their locale\n * configuration.\n *\n * If its constructor receive a LocaleService instance as argument it will start listen changes in the\n * given instance and apply the same change in its own. That behavior allows the instances of this class to\n * be updated in cascade.\n *\n * @example\n * ```js\n * // Will use the global LocaleService\n * // You can obtain the global LocaleService calling tomtom.globalLocaleService()\n * tomtom.nearbySearch()\n * .go()\n *\n * // Will ignore the global LocaleService and use the provided language\n * tomtom.nearbySearch()\n * .language('pl-PL')\n * .go();\n *\n * // Example how to use locales which are set per map instance\n * var mapLanguage = mapInstance.getLocaleService().getCurrentLocale();\n * tomtom.nearbySearch()\n * .language(mapLanguage)\n * .go();\n * ```\n *\n * @class LocaleService\n * @module Services\n * @extends L.Evented\n * @constructor\n * @param {LocaleService} [parent] If is defined makes the new instance a \"slave\" of the given instance\n */\ndefine(['./locale', 'leaflet', './languageTypesMapping', 'services/utils'],\n function(Locale, L, languageTypesMapping, Utils) {\n 'use strict';\n var allLocales, trafficLocales, routingLocales, searchLocales, mapsLocales, LocaleService, EVENTS;\n var langsToIgnoreInAllSelector = ['NGT', 'NGT-Latn'];\n\n function createLocaleArrays(serviceType) {\n var prop, langType;\n var result = [];\n for (prop in languageTypesMapping) {\n if (languageTypesMapping.hasOwnProperty(prop)) {\n langType = languageTypesMapping[prop];\n\n if ((!serviceType && langsToIgnoreInAllSelector.indexOf(prop) === -1) ||\n (langType[serviceType] && langType[serviceType].isNative === true)) {\n\n result.push(new Locale(prop));\n }\n }\n }\n return result.sort(function(a, b) {\n return a.getLabel().localeCompare(b.getLabel());\n });\n }\n\n allLocales = createLocaleArrays(null);\n trafficLocales = createLocaleArrays('traffic');\n routingLocales = createLocaleArrays('routing');\n searchLocales = createLocaleArrays('search');\n mapsLocales = createLocaleArrays('maps');\n\n EVENTS = {\n /**\n * Fired after the locale was changed.\n * @event LOCALE_CHANGED\n * @type String\n *\n * @example\n * ```javascript\n * var localeService = new LocaleService();\n * localeService.on(L.LocaleService.Events.LOCALE_CHANGED, function(eventData) {\n * console.log(eventData);\n * });\n * ```\n */\n 'LOCALE_CHANGED': 'config.locale.changed'\n };\n\n function localeChangedHandler(locale) {\n this.setCurrentLocale(locale.getLanguageCode());\n }\n\n LocaleService = L.Evented.extend({\n\n Events: EVENTS,\n\n initialize: function(parent) {\n if (parent instanceof LocaleService) {\n this.currentLocale = new Locale(parent.getCurrentLocale().getLanguageCode());\n this.parent = parent;\n parent.on(EVENTS.LOCALE_CHANGED, localeChangedHandler, this);\n } else {\n this.currentLocale = new Locale('en-GB');\n }\n },\n\n /**\n * Sets locale used by a service instance.\n *\n * Fires the event {{#crossLink \"LocaleService/LOCALE_CHANGED:event\"}}{{/crossLink}}.\n *\n * @method setCurrentLocale\n * @param {String|Locale} [locale=\"en-GB\"] String (with language code) or Locale instance\n */\n setCurrentLocale: function(locale) {\n if (!(locale instanceof Locale)) {\n this.currentLocale = new Locale(locale);\n } else {\n this.currentLocale = locale;\n }\n this.fire(EVENTS.LOCALE_CHANGED, this.currentLocale);\n },\n\n /**\n * Returns the current locale.\n *\n * @method getCurrentLocale\n * @return {Locale}\n */\n getCurrentLocale: function() {\n return this.currentLocale;\n },\n\n cleanEvents: function() {\n this.parent.off(EVENTS.LOCALE_CHANGED, localeChangedHandler, this);\n this.off();\n }\n });\n\n LocaleService.Events = EVENTS;\n Utils.addDeprecatedProperty(LocaleService.prototype, 'EVENTS', 'Events');\n\n /**\n * Static method that returns an array with the supported locales which are supported by given\n * service type.\n *\n * @static\n * @method LocaleService.getLocalesFor\n * @param {\"traffic\"|\"routing\"|\"search\"|\"maps\"|\"reverseGeocoder\"} [serviceType=null]\n * @return {Locale[]}\n */\n LocaleService.getLocalesFor = function(serviceType) {\n switch (serviceType) {\n case 'traffic':\n return trafficLocales;\n case 'routing':\n return routingLocales;\n case 'search':\n case 'reverseGeocoder':\n return searchLocales;\n case 'maps':\n return mapsLocales;\n default:\n return allLocales;\n }\n };\n\n L.LocaleService = LocaleService;\n\n L.localeService = function(parent) {\n return new LocaleService(parent);\n };\n return L.localeService;\n });\n\n\n\n// WEBPACK FOOTER //\n// ./config/language/localeService.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Represent a locale configuration.\n *\n * @class Locale\n * @module Models\n */\n/* jshint nomen:false */\ndefine(['./languageTypesMapping'], function(languageTypesMapping) {\n 'use strict';\n var validServiceTypes = ['routing', 'search', 'traffic', 'maps', 'reverseGeocoder'];\n\n function isValidServiceType(serviceType) {\n return validServiceTypes.indexOf(serviceType) > -1;\n }\n\n function Locale(languageCode) {\n if (!languageTypesMapping.hasOwnProperty(languageCode)) {\n console.warn('Incorrect language code passed to Locale constructor. Defaulting to en-GB');\n languageCode = 'en-GB';\n }\n this._languageCode = languageCode;\n }\n\n /**\n * Returns the label of the locale.\n * @method getLabel\n * @return {String}\n */\n Locale.prototype.getLabel = function() {\n return languageTypesMapping[this._languageCode].label;\n };\n\n /**\n * Returns the language's code of the locale.\n * @method getLanguageCode\n * @return {String}\n */\n Locale.prototype.getLanguageCode = function() {\n return this._languageCode;\n };\n\n /**\n * Returns the language's code for the given service type.\n *\n * @method getValueFor\n * @param {\"routing\"|\"search\"|\"traffic\"|\"maps\"} [serviceType] The service code.\n * But we aware of these cases:\n * - If an invalid code is given the language's code for the service \"search\" will be return.\n * - If no value is given it will return the same value as the method\n * {{#crossLink \"Locale/getLanguageCode:method\"}}{{/crossLink}}.\n * @return {String}\n */\n Locale.prototype.getValueFor = function(serviceType) {\n var value;\n if (!serviceType) {\n return this._languageCode;\n }\n if (!isValidServiceType(serviceType)) {\n console.warn('Unsupported type passed to getValueFor function in Locale.' +\n 'Expecting: ' + validServiceTypes.join(', ') + '. Defaulting to search');\n serviceType = 'search';\n }\n\n // Reverse geocoder supports the same set of languages as search\n if (serviceType === 'reverseGeocoder') {\n serviceType = 'search';\n }\n\n value = languageTypesMapping[this._languageCode][serviceType].fallback;\n return value !== undefined ? value : this._languageCode;\n };\n\n return Locale;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./config/language/locale.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine(['./geopolViewService'], function(GeopolViewService) {\n 'use strict';\n return new GeopolViewService();\n});\n\n\n\n// WEBPACK FOOTER //\n// ./config/geopolView/globalGeopolViewService.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Service for store and retrieve an specific geopolitical view.\n *\n * This service is used by map instances, widgets and services to store their geopolitical\n * view configuration.\n *\n * If its constructor receive a GeopolViewService instance as argument it will start listen changes in the\n * given instance and apply the same change in its own. That behavior allows the instances of this class to\n * be updated in cascade.\n *\n * @class GeopolViewService\n * @module Services\n * @extends L.Evented\n * @constructor\n * @param {GeopolViewService} [parent] If is defined makes the new instance a \"slave\" of the given instance\n */\n/* jshint nomen:false */\ndefine(['./geopolView', 'leaflet', './geopolViewsMapping', 'services/utils'],\n function(GeopolView, L, geopolViewsMapping, Utils) {\n 'use strict';\n var GeopolViewService;\n var defaultGeopolViewCode = 'Unified';\n var EVENTS = {\n /**\n * Fired after the view was changed.\n * @event GEOPOL_VIEW_CHANGED\n * @type String\n *\n * @example\n * ```javascript\n * var geopolViewService = new GeopolViewService();\n * geopolViewService.on(L.GeopolViewService.Events.GEOPOL_VIEW_CHANGED, function(eventData) {\n * console.log(eventData);\n * });\n * ```\n */\n 'GEOPOL_VIEW_CHANGED': 'config.geopolView.changed'\n };\n /**\n * @ignore\n * @return {GeopolView}\n */\n function getDefaultGeopolView() {\n return new GeopolView(defaultGeopolViewCode);\n }\n\n GeopolViewService = L.Evented.extend({\n\n Events: EVENTS,\n\n initialize: function(parent) {\n if (parent instanceof GeopolViewService) {\n this.current = new GeopolView(parent.getCurrentGeopolView().getCode());\n this._enslaveTo(parent);\n } else {\n this.current = getDefaultGeopolView();\n }\n },\n\n /**\n * Sets the current geopolitical view.\n *\n * It also fires the event\n * {{#crossLink \"GeopolViewService/GEOPOL_VIEW_CHANGED:event\"}}{{/crossLink}}.\n *\n * @method setCurrentGeopolView\n * @param {String|GeopolView} [geopolView='Unified'] view code or a GeopolView instance\n */\n setCurrentGeopolView: function(geopolView) {\n if (Utils.isString(geopolView)) {\n geopolView = new GeopolView(geopolView);\n }\n if (this.current.getCode() !== geopolView.getCode()) {\n this.current = new GeopolView(geopolView.getCode());\n this.fire(EVENTS.GEOPOL_VIEW_CHANGED, this.current);\n }\n },\n\n /**\n * Returns the current geopolitical view stored in the instance.\n *\n * @method getCurrentGeopolView\n * @return {GeopolView}\n */\n getCurrentGeopolView: function() {\n return this.current;\n },\n\n cleanEvents: function() {\n if (this.parent) {\n this.parent.off(EVENTS.GEOPOL_VIEW_CHANGED, this.setCurrentGeopolView, this);\n this.parent = undefined;\n }\n this.off();\n },\n\n /**\n * Make this instance a slave of another GeopolViewService instance.\n * What it basically means is that this instance will copy the current\n * geopolitical view of the parent instance when it changes.\n *\n * @ignore\n * @param {GeopolViewService} parent\n */\n _enslaveTo: function(parent) {\n this.parent = parent;\n parent.on(EVENTS.GEOPOL_VIEW_CHANGED, this.setCurrentGeopolView, this);\n }\n });\n\n /**\n * Static method that returns an array with the supported geopolitical views for the given service.\n *\n * Note: If no arguments are passed to this function it will return ALL the geopolitical views available\n * whether they are supported by a particular service or not. This was kept for backward compatibility.\n *\n * @static\n * @method GeopolViewService.getSupportedViews\n * @param {\"search\"|\"maps\"|\"reverseGeocoder\"} serviceType\n * @param {\"raster\"|\"vector\"|\"all\"} [subType] Only available for maps - Used to specify the subType of a\n * service, for example 'maps - raster' (If you pass 'all' it returns all the geopol views for the given\n * serviceType)\n * @return {GeopolView[]}\n */\n GeopolViewService.getSupportedViews = function(serviceType, subType) {\n var supportedServices = GeopolView.getSupportedServices();\n var supportedViews = [];\n subType = subType || 'all';\n\n // we keep this for backward compatibility\n if (arguments.length === 0) {\n return Object.keys(geopolViewsMapping).map(function(view) {\n return new GeopolView(view);\n });\n }\n\n if (supportedServices.indexOf(serviceType) === -1) {\n console.warn(serviceType + ' is not supported. Supported services: ' + supportedServices.join(', '));\n return [];\n }\n\n if ((serviceType !== 'maps' && subType !== 'all') ||\n (serviceType === 'maps' && ['raster', 'vector', 'all'].indexOf(subType) === -1)) {\n console.warn('Please specify a valid subType for this service. ' +\n 'Expecting: raster, vector or all (for the full list). Returning undefined.');\n return [];\n }\n\n Object.keys(geopolViewsMapping).forEach(function(view) {\n var viewMapping = geopolViewsMapping[view][serviceType];\n\n if (viewMapping && subType !== 'all') {\n viewMapping = viewMapping[subType];\n }\n\n if (viewMapping && viewMapping.fallback) {\n return;\n }\n\n supportedViews.push(new GeopolView(view));\n });\n\n return supportedViews;\n };\n\n GeopolViewService.Events = EVENTS;\n\n Utils.addDeprecatedProperty(GeopolViewService.prototype, 'EVENTS', 'Events');\n\n /**\n * Leaflet factory of this service.\n *\n * @param {GeopolViewService} parent\n * @return {GeopolViewService}\n */\n L.geopolViewService = function(parent) {\n return new GeopolViewService(parent);\n };\n\n L.GeopolViewService = GeopolViewService;\n\n return L.GeopolViewService;\n });\n\n\n\n// WEBPACK FOOTER //\n// ./config/geopolView/geopolViewService.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * GeopolView class.\n *\n * @class GeopolView\n * @module Models\n */\ndefine(['./geopolViewsMapping'], function(geopolViewsMapping) {\n 'use strict';\n\n var validServiceTypes = ['search', 'maps', 'reverseGeocoder'];\n\n function isValidServiceType(serviceType) {\n return validServiceTypes.indexOf(serviceType) > -1;\n }\n\n /**\n * @ignore\n * @param {String} geopolCode\n */\n function GeopolView(geopolCode) {\n if (!geopolViewsMapping.hasOwnProperty(geopolCode)) {\n geopolCode = 'Unified';\n console.warn('Incorrect geopolitical view code passed to GeopolViewService.',\n 'Defaulting to \"' + geopolCode + '\".');\n }\n this.code = geopolCode;\n }\n\n /**\n * Returns the code of the geopolitical view.\n * @method getCode\n * @return {String}\n */\n GeopolView.prototype.getCode = function() {\n return this.code;\n };\n\n /**\n * Returns the label of the geopolitical view.\n * @method getLabel\n * @return {String}\n */\n GeopolView.prototype.getLabel = function() {\n return geopolViewsMapping[this.code].label;\n };\n\n /**\n * Returns the geopolitical view code for the given service type.\n *\n * @method getValueFor\n * @param {\"search\"|\"maps\"} [serviceType] The service code.\n * But we aware of these cases:\n * - If serviceType is not supported undefined will be returned;\n * - If no value is given it will return the same value as the method\n * {{#crossLink \"GeopolView/getCode:method\"}}{{/crossLink}}.\n * - If a view is not supported for the given service it may fallback to Unified.\n * @param {\"raster\"|\"vector\"} [subType] Used to specify the subType of a service,\n * for example 'maps - raster' (Only available for maps);\n * @return {String}\n */\n GeopolView.prototype.getValueFor = function(serviceType, subType) {\n var fallbackValue, serviceMapping;\n if (!serviceType) {\n return this.code;\n }\n if (!isValidServiceType(serviceType)) {\n console.warn('Unsupported service type passed to getValueFor function in geopolView. ' +\n 'Expecting: ' + validServiceTypes.join(', ') + '. Returning undefined.');\n return undefined;\n }\n\n if ((serviceType !== 'maps' && subType) ||\n (serviceType === 'maps' && ['raster', 'vector'].indexOf(subType) === -1)) {\n console.warn('Please specify a valid subType for this service. ' +\n 'Expecting: raster or vector. Returning undefined.');\n return undefined;\n }\n\n serviceMapping = geopolViewsMapping[this.code][serviceType];\n\n if (serviceMapping && subType) {\n serviceMapping = serviceMapping[subType];\n }\n\n if (serviceMapping && serviceMapping.fallback) {\n fallbackValue = serviceMapping.fallback;\n console.warn(this.code + ' is not supported by the service \"' + serviceType +\n (subType ? ' - ' + subType : '') + '\". Falling back to ' + fallbackValue + '.');\n return fallbackValue;\n }\n\n return this.code;\n };\n\n /**\n * Returns supported service types by geopolView\n *\n * @method getSupportedServices\n * @return {Array}\n */\n GeopolView.getSupportedServices = function() {\n return validServiceTypes;\n };\n\n Object.defineProperty(GeopolView.prototype, 'toString', {\n enumerable: false,\n value: function() {\n return this.getCode();\n }\n });\n\n return GeopolView;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./config/geopolView/geopolView.js","/*\n\t\t _ _\n\t\t| | (_)\n\t\t| |_ _ ___\n\t\t| __| | / __|\n\t\t| |_ _| \\__ \\\n\t\t \\__(_) |___/\n\t\t _/ |\n\t\t |__/\n\n\tt.js\n\ta micro-templating framework in ~400 bytes gzipped\n\n\t@author Jason Mooberry \n\t@license MIT\n\t@version 0.1.0\n\n*/\n(function() {\n\n\tvar blockregex = /\\{\\{(([@!]?)(.+?))\\}\\}(([\\s\\S]+?)(\\{\\{:\\1\\}\\}([\\s\\S]+?))?)\\{\\{\\/\\1\\}\\}/g,\n\t\tvalregex = /\\{\\{([=%])(.+?)\\}\\}/g;\n\n\tfunction t(template) {\n\t\tthis.t = template;\n\t}\n\n\tfunction scrub(val) {\n\t\treturn new Option(val).text.replace(/\"/g,\""\");\n\t}\n\n\tfunction get_value(vars, key) {\n\t\tvar parts = key.split('.');\n\t\twhile (parts.length) {\n\t\t\tif (!(parts[0] in vars)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvars = vars[parts.shift()];\n\t\t}\n\t\treturn vars;\n\t}\n\n\tfunction render(fragment, vars) {\n\t\treturn fragment\n\t\t\t.replace(blockregex, function(_, __, meta, key, inner, if_true, has_else, if_false) {\n\n\t\t\t\tvar val = get_value(vars,key), temp = \"\", i;\n\n\t\t\t\tif (!val) {\n\n\t\t\t\t\t// handle if not\n\t\t\t\t\tif (meta == '!') {\n\t\t\t\t\t\treturn render(inner, vars);\n\t\t\t\t\t}\n\t\t\t\t\t// check for else\n\t\t\t\t\tif (has_else) {\n\t\t\t\t\t\treturn render(if_false, vars);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn \"\";\n\t\t\t\t}\n\n\t\t\t\t// regular if\n\t\t\t\tif (!meta) {\n\t\t\t\t\treturn render(if_true, vars);\n\t\t\t\t}\n\n\t\t\t\t// process array/obj iteration\n\t\t\t\tif (meta == '@') {\n\t\t\t\t\t// store any previous vars\n\t\t\t\t\t// reuse existing vars\n\t\t\t\t\t_ = vars._key;\n\t\t\t\t\t__ = vars._val;\n\t\t\t\t\tfor (i in val) {\n\t\t\t\t\t\tif (val.hasOwnProperty(i)) {\n\t\t\t\t\t\t\tvars._key = i;\n\t\t\t\t\t\t\tvars._val = val[i];\n\t\t\t\t\t\t\ttemp += render(inner, vars);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvars._key = _;\n\t\t\t\t\tvars._val = __;\n\t\t\t\t\treturn temp;\n\t\t\t\t}\n\n\t\t\t})\n\t\t\t.replace(valregex, function(_, meta, key) {\n\t\t\t\tvar val = get_value(vars,key);\n\n\t\t\t\tif (val || val === 0) {\n\t\t\t\t\treturn meta == '%' ? scrub(val) : val;\n\t\t\t\t}\n\t\t\t\treturn \"\";\n\t\t\t});\n\t}\n\n\tt.prototype.render = function (vars) {\n\t\treturn render(this.t, vars);\n\t};\n\n\t//AMD, CommonJs, then globals\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return t;\n });\n } else if (typeof exports === 'object') {\n module.exports = t;\n } else {\n window.t = window.t || t;\n }\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/t.js/t.js\n// module id = 36\n// module chunks = 0","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine([], function() {\n 'use strict';\n return {\n /**\n * This method tries to mitigate a bug causing background bleeding near tiles edges.\n * More info can be found here: LNS-9557\n * When this issue is fixed in Leaflet itself this method may be removed.\n */\n fixTileScale: function() {\n this.on('tileloadstart', function(event) {\n event.tile.style.transform += ' scale(1.002)';\n });\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/tileSetTransform.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine(['./unitService'], function(UnitService) {\n 'use strict';\n return new UnitService();\n});\n\n\n\n// WEBPACK FOOTER //\n// ./config/unit/globalUnitService.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * Service for store and retrieve an specific unit measurement.\n *\n * This service is used by map instances, widgets and services to store their unit measurement configuration.\n *\n * If its constructor receive a UnitService instance as argument it will start listen changes in the\n * given instance and apply the same change in its own. That behavior allows the instances of this class to\n * be updated in cascade.\n *\n * @class UnitService\n * @module Services\n * @extends L.Evented\n * @constructor\n * @param {UnitService} [parent] If is defined makes the new instance a \"slave\" of the given instance\n */\ndefine(['./unit', 'leaflet', './unitTypes', 'services/utils'], function(Unit, L, unitTypes, Utils) {\n 'use strict';\n var UnitService, supportedUnits;\n\n var EVENTS = {\n /**\n * Fired after the unit is set.\n *\n * @event UNIT_CHANGED\n * @type String\n *\n * @example\n * ```javascript\n * var unitService = new UnitService();\n * unitService.on(L.UnitService.Events.UNIT_CHANGED, function(eventData) {\n * console.log(eventData); \n * });\n * ```\n */\n 'UNIT_CHANGED': 'config.unit.changed'\n };\n\n function createUnitsArray() {\n return Object.keys(unitTypes).map(function(key) {\n return new Unit(key);\n });\n }\n\n supportedUnits = createUnitsArray();\n\n UnitService = L.Evented.extend({\n\n Events: EVENTS,\n\n initialize: function(parent) {\n if (parent instanceof UnitService) {\n this.currentUnit = new Unit(parent.getCurrentUnit().getLabel());\n this.parent = parent;\n parent.on(EVENTS.UNIT_CHANGED, function(unit) {\n this.setCurrentUnit(unit.getLabel());\n }, this);\n } else {\n this.currentUnit = new Unit('metric');\n }\n },\n /**\n * Sets a new measurement unit.\n *\n * Fires the event {{#crossLink \"UnitService/UNIT_CHANGED:event\"}}{{/crossLink}}.\n *\n * @method setCurrentUnit\n * @param {String|Unit} [unit=\"metric\"] accepts a string (`metric`, `imperial`) or a Unit instance\n */\n setCurrentUnit: function(unit) {\n if (!(unit instanceof Unit)) {\n unit = new Unit(unit);\n }\n this.currentUnit = unit;\n this.fire(EVENTS.UNIT_CHANGED, this.currentUnit);\n },\n\n /**\n * Gets currently setted unit.\n *\n * @method getCurrentUnit\n * @return {Unit}\n */\n getCurrentUnit: function() {\n return this.currentUnit;\n }\n });\n\n /**\n * Static method that returns an array with the supported units.\n * @static\n * @method UnitService.getSupportedUnits\n * @return {Unit[]}\n */\n UnitService.getSupportedUnits = function() {\n return supportedUnits;\n };\n\n L.unitService = function(parent) {\n return new UnitService(parent);\n };\n\n L.UnitService = UnitService;\n\n UnitService.Events = EVENTS;\n Utils.addDeprecatedProperty(UnitService.prototype, 'EVENTS', 'Events');\n\n return L.unitService;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./config/unit/unitService.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * It allows to calculate a route between two locations using the TomTom's\n * [Routing API - Calculate Route](https://developer.tomtom.com/routing-api/routing-api-documentation-routing/calculate-route);\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method go performs the actual call.\n *\n * The call is asynchronous therefore the user has two options to receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * go method to handle the response.\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * ### The types used in routing service\n * - point - latitude, longitude pair (in EPSG4326 projection), with the following constraints:\n * - Latitude values must be in the range -90..+90 inclusive.\n * - Longitude values must be in the range -180..+180 inclusive.\n * - Example: 52.37245,4.89406\n *\n * - circle - A circle with a center point and a radius (in meters).\n * - The radius must be a positive integer with the maximum value of 20050000.\n * - Note that larger integer values will not be rejected but lowered to the maximum value.\n * - Example: circle(52.37245,4.89406,10000)\n *\n * - location - A point or a circle.\n * - Example: 52.37245,4.89406 circle(52.37245,4.89406,10000)\n *\n * - dateTime - A date and time specified in RFC-3339 format with an optional time zone offset.\n * - Example: 1996-12-19T16:39:57 1996-12-19T16:39:57-08:00\n *\n * @class Routing\n * @module Services\n * @uses Chain\n * @uses CommonRoutingParameters\n * @constructor\n *\n * @param {Object} [options] Options to be passed to the routing call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key=global API key] The API key to be used.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n * @param {Number} [options.accelerationEfficiency] Specifies the efficiency of converting chemical energy stored in\n * fuel to kinetic energy when the vehicle accelerates (i.e. KineticEnergyGained/ChemicalEnergyConsumed).\n * @param {Array} [options.allowVignette] List of 3-character ISO 3166-1 alpha-3 country codes of countries in which toll roads with vignettes are allowed.\n * @param {String} [options.alternativeType] Specifies the alternative type of the calculated alternatives compared to the reference route.\n * @param {String} [options.arriveAt] The date and time of arrival at the destination point\n * @param {Number} [options.auxiliaryPowerInkW] Specifies the amount of power consumed for sustaining auxiliary systems, in kilowatts (kW).\n * @param {Number} [options.auxiliaryPowerInLitersPerHour] Specifies the amount of fuel consumed for sustaining\n * auxiliary systems of the vehicle, in liters per hour. It can be used to specify consumption due to devices\n * and systems such as AC systems, radio, heating, etc.\n * @param {String} [options.avoid] Specifies something that the route calculation should try to avoid when\n * determining the route.\n * @param {Array} [options.avoidAreas] A list of shapes to avoid for planning routes. See more\n * @param {Array} [options.avoidVignette] List of 3-character ISO 3166-1 alpha-3 country codes of countries in which all toll roads with vignettes are to be avoided.\n * @param {Boolean} [options.computeBestOrder] Re-order the route waypoints to reduce the route length\n * @param {String} [options.computeTravelTimeFor] Setting this to _all_ provides additional information regards travel times.\n * @param {Array} [options.constantSpeedConsumptionInLitersPerHundredkm] Colon-delimited list of\n * CombustionConstantSpeedConsumptionPairs, e.g. array of such pairs \"60,7\".\n * @param {Array} [options.constantSpeedConsumptionInkWhPerHundredkm] Colon-delimited list of\n * ElectricConstantSpeedConsumptionPairs, e.g. array of such pairs \"60,7\".\n * @param {Number} [options.currentChargeInkWh] Specifies the current electric energy supply in kilowatt hours (kWh).\n * @param {Number} [options.currentFuelInLiters] Current supply of fuel in liters.\n * @param {Number} [options.decelerationEfficiency] Specifies the efficiency of converting kinetic energy to saved\n * (not consumed) fuel when the vehicle decelerates (i.e. ChemicalEnergySaved/KineticEnergyLost).\n * @param {String} [options.departAt] The date and time of departure from the origin point\n * @param {Number} [options.downhillEfficiency] Specifies the efficiency of converting potential energy to\n * saved (not consumed) fuel when the vehicle loses elevation (i.e. ChemicalEnergySaved/PotentialEnergyLost).\n * @param {Number} [options.fuelEnergyDensityInMJoulesPerLiter] Specifies the amount of chemical energy stored\n * in one liter of fuel in megajoules (MJ). It is used in conjunction with the Efficiency parameters for\n * conversions between saved or consumed energy and fuel.\n * @param {String} [options.hilliness] Degree of hilliness for thrilling route\n * @param {String} [options.instructionsType] If specified, guidance instructions will be returned (if\n * available)\n * @param {String} [options.language] The language parameter determines the language of the guidance messages\n * @param {String|Array} [options.locations] Locations through which the route is calculated\n * @param {Number} [options.maxAlternatives] Number of desired alternative routes to be calculated\n * @param {Number} [options.maxChargeInkWh] Specifies the maximum electric energy supply in kilowatt hours (kWh)\n * that may be stored in the vehicle's battery.\n * @param {Number} [options.minDeviationDistance=0] At least how far **in meters** the alternative\n * routes have to follow the reference route\n * @param {Number} [options.minDeviationTime=0] At least how far **in time (seconds)** the alternative\n * routes have to follow the reference route\n * @param {String} [options.protocol] Protocol's type, one of \"http\" or \"https\".\n\n * @param {String} [options.report] Specifies which data should be reported for diagnosis purposes. Possible values:\n * * effectiveSettings reports the effective parameters or data used when calling the API. In the case of defaulted\n * parameters the default will be reflected where the parameter was not specified by the caller.\n * @param {String} [options.routeRepresentation] Specifies the representation of the set of routes provided as response\n * @param {String} [options.routeType] The type of route requested.\n * @param {String[]} [options.sectionType=\"travelMode\"] Specifies which section types are reported in the route response. See more\n * @param {Array} [options.supportingPoints] Array of supporting points used for constructing the route. See more\n * @param {Boolean} [options.traffic] Determines if traffic data should be used to calculate the route\n * @param {String} [options.travelMode] The travel mode for the requested route\n * @param {Number} [options.uphillEfficiency] Specifies the efficiency of converting chemical energy stored in\n * fuel to potential energy when the vehicle gains elevation (i.e. PotentialEnergyGained/ChemicalEnergyConsumed).\n * @param {Number} [options.vehicleAxleWeight] The vehicle axle weight in kg.\n * @param {Boolean} [options.vehicleCommercial] True if vehicle is used for commercial purposes.\n * @param {String} [options.vehicleEngineType] The vehicle engine type.\n * @param {Number} [options.vehicleHeight] The vehicle height in m.\n * @param {Number} [options.vehicleLength] The vehicle length in meters.\n * @param {Array|String} [options.vehicleLoadType] The array of truck cargo classification.\n * @param {Number} [options.vehicleMaxSpeed] The maximal allowed vehicle speed in km/h.\n * @param {Number} [options.vehicleWeight] The vehicle weight in kg.\n * @param {Number} [options.vehicleWidth] The vehicle width in m.\n * @param {String} [options.windingness] Level of turns for thrilling route.\n *\n * @example\n * ```js\n * tomtom.routing()\n * .locations('52.3,4.8:52.37,4.87')\n * .go()\n * .then(function(routeGeoJson) {\n * console.log(routeGeoJson);\n * });\n * ```\n */\n/* eslint-enable max-len */\n/* jshint nomen:false */\ndefine([\n 'rest/routing',\n 'model/routing/routing',\n 'model/routing/batchRouting',\n '../chain',\n '../validators',\n '../converters',\n './routingParameters'\n],\nfunction(restRouting,\n routingModel,\n batchRoutingModel,\n chain,\n validators,\n converters,\n getRoutingParameters) {\n 'use strict';\n\n var LANGUAGE = {\n AfrikaansSouthAfrica: 'ar-ZA',\n Arabic: 'ar',\n Bulgarian: 'bg-BG',\n ChineseTaiwan: 'zh-TW',\n Czech: 'cs-CZ',\n Danish: 'da-DK',\n Dutch: 'nl-NL',\n EnglishGB: 'en-GB',\n EnglishUS: 'en-US',\n Finnish: 'fi-FI',\n French: 'fr-FR',\n German: 'de-DE',\n Greek: 'el-GR',\n Hungarian: 'hu-HU',\n Indonesian: 'id-ID',\n Italian: 'it-IT',\n Korean: 'ko-KR',\n Lithuanian: 'lt-LT',\n Malay: 'ms-MY',\n Norwegian: 'nb-NO',\n Polish: 'pl-PL',\n PortugueseBrazil: 'pt-BR',\n PortuguesePortugal: 'pt-PT',\n Russian: 'ru-RU',\n Slovak: 'sk-SK',\n Slovenian: 'sl-SI',\n Spanish: 'es-ES',\n SpanishMexico: 'es-MX',\n Swedish: 'sv-SE',\n Thai: 'th-TH',\n Turkish: 'tr-TR'\n };\n\n var fields = getRoutingParameters();\n\n var batchFields = {\n batchItems: {\n validator: validators.arrayOf(fields),\n converter: converters.arrayOf(fields)\n }\n };\n\n var routing = restRouting();\n\n function handleRouteChain(data, callback) {\n routing.calculateRoute(fields, data, function(response) {\n callback.call(this, routingModel(response));\n });\n }\n\n function handleBatchChain(data, callback) {\n routing.batch(fields, data, function(response) {\n callback.call(this, batchRoutingModel(response));\n });\n }\n\n return function(options) {\n var serviceFunction;\n options = options || {};\n options.__serviceType = 'routing';\n\n if (options instanceof Array) {\n serviceFunction = chain(batchFields, handleBatchChain, {\n batchItems: options\n });\n } else {\n serviceFunction = chain(fields, handleRouteChain, options);\n }\n serviceFunction.LANGUAGE = LANGUAGE;\n return serviceFunction;\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/routing/routing.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine([\n 'rest/request/matrixFactory',\n 'rest/request/requestFactory',\n 'endpoints',\n 'apiKeyNames'\n],\nfunction(matrixFactory, requestFactory, endpoints, ApiKeyNames) {\n 'use strict';\n\n var maxNoOfElementsInBatchRequest = 100,\n routingKeyName = ApiKeyNames.routing;\n\n return function() {\n return {\n calculateRoute: requestFactory.single(endpoints.routing, routingKeyName),\n\n calculateReachableRange: requestFactory.single(endpoints.reachableRange, routingKeyName),\n\n batch: requestFactory.batch(maxNoOfElementsInBatchRequest, {\n batchSync: endpoints.batchSyncRouting,\n batch: endpoints.batchRouting,\n single: endpoints.batchRoutingQuery\n }, routingKeyName),\n\n batchReachableRange: requestFactory.batch(maxNoOfElementsInBatchRequest, {\n batchSync: endpoints.batchSyncRouting,\n batch: endpoints.batchRouting,\n single: endpoints.batchReachableRangeQuery\n }, routingKeyName),\n\n matrix: matrixFactory(maxNoOfElementsInBatchRequest)\n };\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./rest/routing.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine(['./utils'], function(utils) {\n var engineType = {\n combustion: 'combustion',\n electric: 'electric',\n any: 'any'\n };\n\n function validateIfPointsGreaterOrEqual(speedsAndConsumptions) {\n var sortedKeys = Object.keys(speedsAndConsumptions).sort(function(x, y) {\n return parseFloat(x) > parseFloat(y);\n });\n var keysLength = sortedKeys.length;\n if (speedsAndConsumptions[sortedKeys[0]] > speedsAndConsumptions[sortedKeys[1]]) {\n throw new Error('Consumption for two lowest speeds should be increasing');\n }\n if (speedsAndConsumptions[sortedKeys[keysLength - 2]] > speedsAndConsumptions[sortedKeys[keysLength - 1]]) {\n throw new Error('Consumption for two highest speeds should be increasing');\n }\n }\n\n function validateFloat(val) {\n if (isNaN(parseFloat(val)) || !isFinite(val)) {\n throw new Error('Expecting float, got: ' + val);\n }\n }\n\n /**\n * @param {String[]} arr\n */\n function consumptionPairsValidator(arr) {\n var speedsAndConsumptions = {};\n arr.forEach(function(element) {\n var pair = element.split(',');\n if (pair.length !== 2) {\n throw new Error('Invalid number of parameters in the pair around ' + element);\n }\n validateFloat(pair[0]);\n validateFloat(pair[1]);\n if (speedsAndConsumptions.hasOwnProperty(parseFloat(pair[0]))) {\n throw new Error('Duplicate speed: ' + pair[0]);\n } else {\n speedsAndConsumptions[parseFloat(pair[0])] = parseFloat(pair[1]);\n }\n });\n if (Object.keys(speedsAndConsumptions).length > 1) {\n validateIfPointsGreaterOrEqual(speedsAndConsumptions);\n }\n }\n\n function checkIfCorrectEngineType(obj, type) {\n if (obj.vehicleEngineType && obj.vehicleEngineType !== type && type !== engineType.any) {\n throw new Error('Expecting vehicleEngineType set to ' + type);\n }\n }\n\n function efficiencyParameterRequired(obj, paramName) {\n if (!(utils.isValidValue(obj.accelerationEfficiency) &&\n utils.isValidValue(obj.decelerationEfficiency) &&\n utils.isValidValue(obj.uphillEfficiency) &&\n utils.isValidValue(obj.downhillEfficiency))) {\n throw new Error('Efficiency parameters are required when using ' + paramName);\n }\n }\n\n function hasEfficiencyParameterSet(obj) {\n return obj.accelerationEfficiency ||\n obj.decelerationEfficiency ||\n obj.uphillEfficiency ||\n obj.downhillEfficiency;\n }\n\n function validateDependantParameters(obj, paramName1, paramName2) {\n if (!(obj[paramName1] && obj[paramName2])) {\n throw new Error('Missing dependant parameter. Expecting both defined: ' + paramName1 + ', ' + paramName2);\n }\n }\n\n function validateEfficiencyParameters(obj, paramName1, paramName2) {\n if (obj[paramName1] * obj[paramName2] > 1) {\n throw new Error('Product of ' + paramName1 + ' and ' + paramName2 + ' cannot exceed 1');\n }\n }\n\n /**\n * @ignore\n * Consumption Model cannot be used with travelMode values bicycle and pedestrian.\n * @param {Object} obj\n */\n function validateTravelMode(obj) {\n if (obj.travelMode === 'bicycle' || obj.travelMode === 'pedestrian') {\n throw new Error('Consumption model parameters cannot be set if travelMode is set to bicycle or pedestrian');\n }\n }\n\n /**\n * @ignore\n * All parameters require constantSpeedConsumption* to be specified by the user. It is an\n * error to specify any other consumption model parameter (with the exception of vehicleWeight)\n * if constantSpeedConsumption* is not specified.\n * @param {Object} obj\n */\n function hasConstantSpeedConsumption(obj) {\n if (!obj.constantSpeedConsumptionInLitersPerHundredkm && !obj.constantSpeedConsumptionInkWhPerHundredkm) {\n throw new Error('Consumption model cannot be used without setting constant speed consumption parameter');\n }\n }\n\n return {\n /**\n * @ignore\n * The list must contain between 1 and 25 points (inclusive), and may not contain\n * duplicate points for the same speed. If it only contains a single point, then the\n * consumption rate of that point is used without further processing.\n * Consumption specified for the largest speed must be greater than or equal to\n * that of the penultimate largest speed. This ensures that extrapolation does not\n * lead to negative consumption rates. Similarly, consumption values specified for the\n * two smallest speeds in the list cannot lead to a negative consumption rate for any smaller speed.\n * The minimum and maximum values described here refer to the valid range for the consumption\n * values (expressed in l/100km.\n * @param {Number} engineType\n * @param {Object} obj\n * @return {Function} function\n */\n constantSpeedConsumption: function(engineType) {\n return function(value, obj) {\n var speedPairs;\n if (value === undefined || value === null) {\n return;\n }\n validateTravelMode(obj);\n checkIfCorrectEngineType(obj, engineType);\n if (typeof value !== 'string') {\n throw new TypeError('Expecting a String like \"15.2,12.2:8.0,9.0\"');\n }\n speedPairs = value.split(':');\n if (speedPairs.length < 1 || speedPairs.length > 25) {\n throw new Error('Incorrect amount of speed-consumption pairs provided. Expecting 1-25, but got ' +\n value.length);\n }\n consumptionPairsValidator(speedPairs);\n };\n },\n vehicleWeight: function(value, obj) {\n if (hasEfficiencyParameterSet(obj) && value === undefined) {\n throw new Error('vehicleWeight parameter must be set if any efficiency parameters is present');\n }\n },\n floatAndEngineType: function(engineType, paramName) {\n return function(value, obj) {\n if (!value) {\n return;\n }\n validateTravelMode(obj);\n hasConstantSpeedConsumption(obj);\n checkIfCorrectEngineType(obj, engineType);\n validateFloat(value);\n if (value < 0) {\n throw new Error(paramName + ': Expecting positive value');\n }\n };\n },\n fuelEnergyDensityInMJoulesPerLiter: function(value, obj) {\n if (!value) {\n return;\n }\n validateTravelMode(obj);\n validateFloat(value);\n hasConstantSpeedConsumption(obj);\n checkIfCorrectEngineType(obj, 'combustion');\n efficiencyParameterRequired(obj, 'fuelEnergyDensityInMJoulesPerLiter');\n },\n /**\n * @ignore\n * accelerationEfficiency and decelerationEfficiency must always be specified as a pair (i.e. both or none).\n * uphillEfficiency and downhillEfficiency must always be specified as a pair (i.e. both or none).\n * If accelerationEfficiency and decelerationEfficiency are specified,\n * product of their values must not be greater than 1 (to prevent perpetual motion).\n * If uphillEfficiency and downhillEfficiency are specified, product of their\n * values must not be greater than 1 (to prevent perpetual motion).\n * @param {Number} paramName1\n * @param {Number} paramName2\n * @return {undefined} undefined\n */\n efficiencyParameter: function(paramName1, paramName2) {\n return function(value, obj) {\n if (!value) {\n return;\n }\n validateTravelMode(obj);\n hasConstantSpeedConsumption(obj);\n checkIfCorrectEngineType(obj, engineType.any);\n validateDependantParameters(obj, paramName1, paramName2);\n /**\n * @ignore\n * If *Efficiency parameters are specified by the user, then vehicleWeight must also be specified.\n */\n validateDependantParameters(obj, paramName1, 'vehicleWeight');\n /**\n * @ignore\n * When vehicleEngineType is combustion, fuelEnergyDensityInMJoulesPerLiter must be specified as well.\n */\n if (obj.vehicleEngineType === engineType.combustion) {\n validateDependantParameters(obj, paramName1, 'fuelEnergyDensityInMJoulesPerLiter');\n }\n validateEfficiencyParameters(obj, paramName1, paramName2);\n validateFloat(value);\n };\n },\n chargeParameter: function(paramName1, paramName2) {\n return function(value, obj) {\n if (!value) {\n return;\n }\n validateTravelMode(obj);\n hasConstantSpeedConsumption(obj);\n checkIfCorrectEngineType(obj, engineType.electric);\n validateDependantParameters(obj, paramName1, paramName2);\n validateFloat(value);\n };\n },\n budgetInRange: function(value, data) { // eslint-disable-line no-unused-vars\n var maxBudget;\n var currentBudgetProvided;\n var electricEngine = data.vehicleEngineType === 'electric';\n if (electricEngine) {\n maxBudget = data.currentChargeInkWh;\n currentBudgetProvided = data.energyBudgetInkWh;\n if (currentBudgetProvided > maxBudget) {\n throw new Error('Energy budget may not be greater than current energy.');\n }\n } else {\n maxBudget = data.currentFuelInLiters;\n currentBudgetProvided = data.fuelBudgetInLiters;\n if (currentBudgetProvided > maxBudget) {\n throw new Error('Fuel budget may not be greater than current fuel.');\n }\n }\n if (currentBudgetProvided < 0) {\n throw new Error('Budget may not be negative.');\n }\n },\n requiredBudget: function(value, data) { // eslint-disable-line no-unused-vars\n var liters = data.fuelBudgetInLiters;\n var watts = data.energyBudgetInkWh;\n var time = data.timeBudgetInSec;\n if ([liters, watts, time].filter(\n function(n) {\n return n !== undefined;\n }).length > 1) { // both true or false -> logical xor\n throw new Error('Exactly one of fuelBudgetInLiters and energyBudgetInkWh and timeBudgetInSec must be set.'); // eslint-disable-line\n }\n },\n requiredWithSpecificEngineType: function(value, data, key) {\n var consumptionInLiters = 'constantSpeedConsumptionInLitersPerHundredkm' in data;\n var consumptionInWatts = 'constantSpeedConsumptionInkWhPerHundredkm' in data;\n var electricEngine = data.vehicleEngineType === 'electric';\n\n if (key === 'energyBudgetInkWh' && value) {\n if (!electricEngine) {\n throw new Error('Engine type should be \"electric\" when energyBudgetInkWh is set');\n }\n if (!consumptionInWatts) {\n throw new Error('Missing constant speed consumption for electric engine.');\n }\n } else if (key === 'fuelBudgetInLiters' && value) {\n if (electricEngine) {\n throw new Error('Engine type should be \"combustion\" or undefined when fuelBudgetInLiters is set');\n }\n if (!consumptionInLiters) {\n throw new Error('Missing constant speed consumption for combustion engine.');\n }\n }\n },\n notCommon: function(value, data, key) { // eslint-disable-line no-unused-vars\n var forbiddenAvoids = ['alreadyUsedRoads'];\n var forbiddenModes = ['bicycle', 'pedestrian'];\n if ('arriveAt' in data ||\n ('avoid' in data && forbiddenAvoids.indexOf(data.avoid) >= 0) ||\n ('travelMode' in data && forbiddenModes.indexOf(data.travelMode) >= 0)\n ) {\n throw new Error(key + ' parameter is not allowed in Calculate Reachable Route request');\n }\n },\n firstParamCannotBeUsedWithSecond: function(paramNameUsed, paramNameToAvoid) {\n return function(value, obj) {\n if (!value) {\n return;\n }\n if (obj.hasOwnProperty(paramNameToAvoid) && utils.isValidValue(obj[paramNameToAvoid])) {\n throw new Error(paramNameUsed + ' parameter cannot be used in conjunction with ' +\n paramNameToAvoid);\n }\n };\n },\n requiresDependantParameter: function(parameterName, dependantParameter) {\n return function(value, obj) {\n if (!value) {\n return;\n }\n if (!obj.hasOwnProperty(dependantParameter)) {\n throw new Error(dependantParameter + ' must be specified when using with ' + parameterName);\n }\n };\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/postValidators.js","define([], function() {\n return {\n reverseGeocode: 'reverseGeocode',\n crossStreetLookup: 'reverseGeocode/crossStreet'\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/reverseGeocode/types.js","define([], function() {\n return {\n search: 'search',\n poi: 'poiSearch',\n category: 'categorySearch',\n geometry: 'geometrySearch',\n nearby: 'nearbySearch',\n lowBandwidth: 's',\n searchAlongRoute: 'searchAlongRoute'\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./common/searchTypes.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['../selector'], function(selector) {\n 'use strict';\n return function(json) {\n return selector(json, 'results', 'address, dist, position, score, entryPoints,' +\n ' type, addressRanges, boundingBox, viewport, id, info, dataSources, entityType') || {};\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/geocode/geocode.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * This widget allows to create a foldable widget over the map.\n *\n * @class Foldable\n * @namespace L\n * @extends L.Control\n * @module Widgets\n * @constructor\n * @method foldable\n * @param {Object} [options] Options to be passed to the foldable control\n * @param {String} [options.className=\"\"] Class prefix that will be added to container\n * @param {String} [options.title=\"\"] Title of the container. If it's null the title will be hidden.\n * @param {Object} [options.close=null] If is an object the Close button will be appear\n * @param {String} [options.close.text] Text displayed in the Close button\n * @param {String} [options.close.image] Image of the Close button\n * @param {Object} [options.show=null] If is an object the Show button will be appear\n * @param {String} [options.show.text] Text displayed in the Show button\n * @param {String} [options.show.image] Image of the Show button\n * @param {Boolean} [options.closeOnClick=false] Should component collapse when clicked\n * @param {Boolean} [options.closeOnMapClick=true] Should component collapse when map is clicked\n * @param {\"topright\"|\"topleft\"|\"bottomright\"|\"bottomleft\"} [options.position=\"topright\"] Position on a map\n * @param {String} [options.content=null] Initial content of the widget. Should be a string with valid HTML syntax.\n * @param {Boolean} [options.collapsed=false] Initial state of the foldable widget\n * @param {Boolean} [options.responsive=false] Listens to window resize events and adjusts the content height to \n * fit the map, when the map size changes.\n *\n * @example\n * ```javascript\n * var widget = new L.Foldable({\n * title: 'Foldable widget',\n * closeOnClick: true,\n * show: {\n * text: 'show'\n * }\n * });\n * widget.addTo(map);\n * ```\n */\n/* jshint nomen:false */\ndefine(['display/map', 'services/utils'],\n function(L, Utils) {\n 'use strict';\n\n var zIndex = 1001;\n\n var classes = {\n contentContainer: 'tomtom-foldable__content',\n contentHeader: 'tomtom-foldable__content-header',\n contentBody: 'tomtom-foldable__content-body',\n collapsed: 'tomtom-foldable--collapsed',\n footerContainer: 'tomtom-foldable__footer',\n footerBody: 'tomtom-foldable__footer-body'\n };\n\n function createContainer(options) {\n var prefix = Utils.isString(options.className) ? options.className : '';\n var className = (prefix + ' tomtom-foldable leaflet-popup-content-wrapper').trim();\n return L.DomUtil.create('div', className);\n }\n\n function createCloseButton(container, options) {\n var button;\n if (!options.close) {\n return null;\n }\n button = L.DomUtil.create(\n 'button',\n 'tomtom-foldable__close tomtom-foldable--clickable',\n container\n );\n if (options.close.text) {\n button.innerHTML = options.close.text;\n } else if (options.close.image) {\n button.style.cssText = 'background-image: url(' + options.close.image + '); ';\n }\n return button;\n }\n\n function createShowButton(container, options) {\n var button;\n if (!options.show) {\n return null;\n }\n button = L.DomUtil.create(\n 'button',\n 'tomtom-foldable__show tomtom-foldable--clickable',\n container\n );\n if (options.show.text) {\n button.innerHTML = options.show.text;\n } else if (options.show.image) {\n button.style.cssText = 'background-image: url(' + options.show.image + '); ';\n }\n return button;\n }\n\n function createTitle(container, options) {\n var title = null;\n title = L.DomUtil.create('h4', 'tomtom-foldable__title', container);\n if (Utils.isString(options.title)) {\n title.innerHTML = options.title;\n }\n return title;\n }\n\n function createFooter(container, options) {\n var footer = L.DomUtil.create('div', classes.footerBody, container);\n if (options.footer instanceof HTMLElement) {\n footer.appendChild(options.footer);\n }\n return footer;\n }\n\n function createContentContainer(container, options) {\n var content = L.DomUtil.create('div', classes.contentBody, container);\n if (options.content) {\n content.innerHTML = options.content;\n }\n return content;\n }\n\n function createDomElements() {\n this.container = createContainer(this.options);\n\n this._header = L.DomUtil.create('div', 'tomtom-foldable__header', this.container);\n createTitle(this._header, this.options);\n this._close = createCloseButton(this._header, this.options);\n this._show = createShowButton(this._header, this.options);\n this._content = L.DomUtil.create('div', classes.contentContainer, this.container);\n this._contentHeader = L.DomUtil.create('div', classes.contentHeader, this._content);\n this._contentBody = createContentContainer(this._content, this.options);\n if (this.options.footer) {\n this._footer = L.DomUtil.create('div', classes.footerContainer, this.container);\n createFooter(this._footer, this.options);\n }\n return this.container;\n }\n\n function clearElementContent(element) {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n }\n\n function addContent(content, parent) {\n var element;\n\n if (typeof content === 'undefined') {\n return;\n }\n\n if (content instanceof HTMLElement) {\n element = content;\n } else {\n element = document.createTextNode(content);\n }\n\n parent.appendChild(element);\n }\n\n L.Foldable = L.Control.extend({\n\n options: {\n title: '',\n close: null,\n closeOnClick: false,\n closeOnMapClick: true,\n show: null,\n position: 'topright',\n collapsed: false,\n content: null,\n responsive: false\n },\n\n initialize: function(options) {\n L.setOptions(this, options);\n },\n\n /**\n * Binds handlers to events and creates HTML elements used by the\n * component. Called when added control to a map.\n *\n * @ignore\n * @method onAdd\n * @param {Object} map Leaflet map to add control to.\n * @example\n * ```javascript\n * var widget = new L.Foldable();\n * widget.addTo(map);\n * ```\n * @return {HTMLElement}\n */\n onAdd: function(map) {\n this._map = map;\n\n if (this.options.closeOnMapClick) {\n this._map.on('preclick', this.fold, this);\n }\n\n createDomElements.call(this);\n\n L.DomEvent.disableScrollPropagation(this.container);\n L.DomEvent.disableClickPropagation(this.container);\n\n L.DomEvent.on(this.container, 'click', this._bringToFront, this);\n\n if (this.options.closeOnClick) {\n L.DomEvent.on(this._content, 'click', this.fold, this);\n }\n\n if (this._close) {\n L.DomEvent.on(this._close, 'click', this.fold, this);\n }\n\n if (this._show) {\n L.DomEvent.on(this._show, 'click', this.unfold, this);\n }\n\n if (this.options.collapsed) {\n this.fold();\n } else {\n this.unfold();\n }\n\n if (this.options.responsive) {\n this._setContentBodyMaxHeightRef = Utils.debounce(this, this._setContentBodyMaxHeight, 250);\n window.addEventListener('resize', this._setContentBodyMaxHeightRef);\n }\n\n return this.container;\n },\n\n /**\n * Removes event listeners added by onAdd method.\n * Called on foldable.remove()\n *\n * @ignore\n * @method onRemove\n * @param {Object} map Leaflet map to remove control from.\n * @example\n * ```javascript\n * var widget = new L.Foldable();\n * widget.addTo(map);\n * // some code here...\n * widget.remove();\n * ```\n */\n onRemove: function(map) {\n map.off('preclick', this.fold, this);\n if (this.options.closeOnClick) {\n L.DomEvent.off(this._content, 'click', this.fold, this);\n }\n if (this._close) {\n L.DomEvent.off(this._close, 'click', this.fold, this);\n }\n if (this._show) {\n L.DomEvent.off(this._show, 'click', this.unfold, this);\n }\n L.DomEvent.off(this.container, 'click', this._bringToFront, this);\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n if (this.options.responsive) {\n window.removeEventListener('resize', this._setContentBodyMaxHeightRef);\n }\n },\n\n /**\n * Folds the content and shows the show button (to unfold it again later).\n *\n * This method is executed automatically when the widget loose focus (e.g. the user starts interacting\n * with another widget or the map).\n *\n * @method fold\n * @chainable\n * @example\n * ```javascript\n * var widget = new L.Foldable({collapsed: false});\n * widget.addTo(map);\n * widget.setContent('No data');\n * widget.fold();\n * ```\n * @return {L.Foldable}\n */\n fold: function() {\n this.container.classList.add(classes.collapsed);\n this._content.style.maxHeight = 0;\n return this;\n },\n\n _isCollapsed: function() {\n return this.container.classList.contains(classes.collapsed);\n },\n\n _setContentBodyMaxHeight: function() {\n //This hardcoded offset is used to not cover copyrights\n var additionalOffset = 60;\n var mapRect = this._map.getContainer().getBoundingClientRect();\n var mapHeight = mapRect.height;\n var offset = this.container.offsetTop;\n\n if (this._footer) {\n offset = Math.abs(offset + this._footer.getBoundingClientRect().height);\n }\n if (this._header) {\n offset = Math.abs(offset + this._header.getBoundingClientRect().height);\n }\n\n this._content.style.maxHeight = Math.floor(mapHeight - offset - additionalOffset) + 'px';\n },\n\n /**\n * Unfolds component's content.\n *\n * This method is executed when the user presses the show button.\n *\n * @method unfold\n * @chainable\n * @example\n * ```javascript\n * var widget = new L.Foldable();\n * widget.addTo(map);\n * widget.unfold();\n * ```\n * @return {L.Foldable}\n */\n unfold: function() {\n this.container.classList.remove(classes.collapsed);\n this._setContentBodyMaxHeight();\n return this;\n },\n\n /**\n * Clears all the widget's content.\n *\n * @method clear\n * @chainable\n * @example\n * ```javascript\n * var widget = new L.Foldable();\n * widget.addTo(map);\n * // some time later\n * widget.clear();\n * ```\n * @return {L.Foldable}\n */\n clear: function() {\n clearElementContent(this._contentBody);\n clearElementContent(this._contentHeader);\n return this;\n },\n\n /**\n * It appends content into the results list.\n *\n * @method addContent\n * @chainable\n * @param {String|HTMLElement} content content to append\n * @example\n * ```javascript\n * var results = [1, 2, 3];\n * var widget = new L.Foldable();\n * widget.addTo(map);\n * widget.setContent('Length: ');\n * widget.addContent(results.length);\n * ```\n * @return {L.Foldable}\n */\n addContent: function(content) {\n addContent(content, this._contentBody);\n if (!this._isCollapsed()) {\n this._setContentBodyMaxHeight();\n }\n\n return this;\n },\n\n /**\n * It appends content into the results list header.\n *\n * @method addContentHeader\n * @chainable\n * @param {String|HTMLElement} content content to append\n * @example\n * ```javascript\n * var widget = new L.Foldable();\n * widget.addTo(map);\n * widget.addContentHeader('This is a header');\n * ```\n * @return {L.Foldable}\n */\n addContentHeader: function(content) {\n addContent(content, this._contentHeader);\n if (!this._isCollapsed()) {\n this._setContentBodyMaxHeight();\n }\n\n return this;\n },\n\n /**\n * Sets (and replaces) all the content of the results list.\n *\n * @method setContent\n * @param {String|HTMLElement} content new content\n * @chainable\n * @example\n * ```javascript\n * var widget = new L.Foldable();\n * widget.addTo(map);\n * widget.setContent('Initial content');\n * widget.setContent('New content');\n * ```\n * @return {L.Foldable}\n */\n setContent: function(content) {\n return this.clear().addContent(content);\n },\n\n _bringToFront: function() {\n zIndex += 1;\n this.container.parentElement.style.zIndex = zIndex;\n }\n\n });\n\n return function(options) {\n return new L.Foldable(options);\n };\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./widgets/controls/foldable.js","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 47\n// module chunks = 0","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * Helper module to create {{#crossLink \"StaticMapImage\"}}{{/crossLink}} instances from\n * already existing {{#crossLink \"L.Map\"}}{{/crossLink}} instances.\n *\n * @private\n * @class StaticMapImageFactory\n * @module Services\n */\ndefine(['./staticMapImage', 'security', 'display/map'], function(StaticMapImage, Security, L) {\n 'use strict';\n\n /**\n * @ignore\n * Given a L.Map instance it returns a generic object with the necessary configuration to create a valid\n * {{#crossLink \"StaticMapImage\"}}{{/crossLink}} instance.\n *\n * @param {L.Map} mapInstance\n * @return {Object} StaticMapImage configuration\n */\n function getConfigFromMapInstance(mapInstance) {\n var config = {};\n if (mapInstance.options.layer) {\n config.layer = mapInstance.options.layer;\n }\n if (mapInstance.options.style) {\n config.style = mapInstance.options.style;\n }\n config.key = Security.getKey('services/display');\n config.center = mapInstance.getCenter().wrap();\n config.zoom = mapInstance.getZoom();\n config.width = mapInstance.getSize().x;\n config.height = mapInstance.getSize().y;\n config.language = mapInstance.getLocaleService().getCurrentLocale().getLanguageCode();\n return config;\n }\n\n /**\n * Returns a configured {{#crossLink \"StaticMapImage\"}}{{/crossLink}} instance based in the current state of the\n * given {{#crossLink \"L.Map\"}}{{/crossLink}} instance.\n * @method createFromMapInstance\n * @param {L.Map} mapInstance\n * @return {StaticMapImage}\n */\n function createFromMapInstance(mapInstance) {\n var config = getConfigFromMapInstance(mapInstance);\n return new StaticMapImage(config);\n }\n\n L.Map.include({\n /* This method is documented directly in map.js due to a yuidoc's bug in the @for tag */\n getStaticMapUrl: function() {\n var result = null;\n createFromMapInstance(this).go(function(url) {\n result = url;\n });\n return result;\n }\n });\n\n return {\n createFromMapInstance: createFromMapInstance,\n getConfigFromMapInstance: getConfigFromMapInstance\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/staticMapImage/staticMapImageFactory.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This class makes it easy to generate URL string to request a static map image using the TomTom's\n * [Maps API - Static Image](https://developer.tomtom.com/maps-api/maps-api-documentation-raster/static-image).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"StaticMapImage/go:method\"}}{{/crossLink}} generates the URL string.\n *\n * @example\n * ```js\n * // Using chainable methods\n * function callbackFn(urlString) {\n * console.log(urlString);\n * }\n * var sMap = tomtom.staticMapImage();\n * sMap.key('abdcef123456')\n * .zoom(15)\n * .center(L.latLng(50.5, 30.5))\n * .width(600)\n * .height(400)\n * .format('jpg')\n * .go()\n * .then(callbackFn);\n * ```\n *\n * @example\n * ```js\n * // Passing a object with all the configuration\n * function callbackFn(urlString) {\n * console.log(urlString);\n * }\n * tomtom.staticMapImage({\n * key: 'abdcef123456',\n * zoom: 15,\n * bbox: L.latLngBounds([\n * [40.712, -74.227],\n * [40.774, -74.125]\n * ]),\n * }).go(callbackFn);\n * ```\n *\n * @class StaticMapImage\n * @uses Chain\n * @uses ViewMixin\n * @module Services\n * @constructor\n * @param {Object} [options]\n * @param {\"basic\"|\"hybrid\"|\"labels\"} [options.layer=\"basic\"] The base map's layer to be used\n * @param {\"main\"|\"night\"} [options.style=\"main\"] The base map style to be used.\n * @param {\"png\"|\"jpg\"|\"jpeg\"} [options.format=\"png\"] The format of the image to be requested\n * @param {String} [options.key] API key that can be obtained from\n * TomTom's developer portal.\n * @param {Number} [options.zoom=12] Positive integer between 0 and 20\n * @param {L.LatLng} [options.center] Coordinates to the center of the view\n * @param {Number} [options.width] Width of the image in pixels\n * @param {Number} [options.height] Height of the image in pixels\n * @param {L.LatLngBounds} [options.bbox] Bounding box\n * @param {String} [options.view=\"Unified\"] Geopolitical view\n * @param {String} [options.language=\"NGT\"] Language to use for the labels.\n * You can found the list of supported languages\n * \n * here.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n */\ndefine(['display/map',\n 'services/utils',\n 'services/chain',\n 'services/validators',\n 'services/converters',\n 'mainConfig'],\nfunction(L,\n Utils,\n chain,\n validators,\n converters,\n mainConfig) {\n 'use strict';\n\n /**\n * @ignore\n * Static Map API endpoint.\n */\n var baseUrl = mainConfig['endpoints.staticMapImage'];\n var MAX_WIDTH = 8192;\n var MAX_HEIGHT = 8192;\n var SUPPORTED_IMAGE_FORMATS_PER_LAYER = {\n 'basic': ['jpg', 'jpeg', 'png'],\n 'hybrid': ['png'],\n 'labels': ['png']\n };\n\n /**\n * Getter and setter for the option `layer`.\n * @method layer\n * @chainable\n * @param {\"basic\"|\"hybrid\"|\"labels\"} [newValue] New value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `style`.\n * @method style\n * @chainable\n * @param {\"main\"|\"night\"} [newValue] New value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `format`.\n * @method format\n * @chainable\n * @param {\"png\"|\"jpg\"|\"jpeg\"} [newValue] New value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `key`.\n * @method key\n * @chainable\n * @param {String} [newValue] New value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `zoom`.\n * @method zoom\n * @chainable\n * @param {Number} [newValue] New integer value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `center`.\n * @method center\n * @chainable\n * @param {L.LatLng} [newValue] New value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `width`.\n * @method width\n * @chainable\n * @param {Number} [newValue] New integer value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `height`.\n * @method height\n * @chainable\n * @param {Number} [newValue] New integer value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `bbox`.\n * @method bbox\n * @chainable\n * @param {L.LatLngBounds} [newValue] New value to be set\n * @return {Object} When is used as setter this method is chainable\n */\n\n /**\n * Getter and setter for the option `language`.\n * @method language\n * @chainable\n * @param {String} [newValue] New value to be set\n * @return {String} When is used as setter this method is chainable\n */\n\n var fields = {\n layer: {validator: validators.oneOfValue(['basic', 'hybrid', 'labels'], 'layers'), defaultValue: 'basic'},\n style: {validator: validators.oneOfValue(['main', 'night'], 'styles'), defaultValue: 'main'},\n format: {validator: validators.oneOfValue(['png', 'jpg', 'jpeg'], 'formats'), defaultValue: 'png'},\n key: {validator: validators.string, required: true},\n zoom: {validator: validators.integerInInterval(-1, 20), converter: converters.integer},\n center: {converter: converters.point, validator: validators.point},\n width: {validator: validators.integerInInterval(0, MAX_WIDTH)},\n height: {validator: validators.integerInInterval(0, MAX_HEIGHT)},\n bbox: {validator: validators.boundingBox, converter: converters.boundingBox},\n view: {validator: validators.geopolView('maps', 'view')},\n language: {validator: validators.locale('maps')}\n };\n\n function checkIfLayerSupported(data) {\n if (!SUPPORTED_IMAGE_FORMATS_PER_LAYER[data.layer] ||\n SUPPORTED_IMAGE_FORMATS_PER_LAYER[data.layer].indexOf(data.format) === -1) {\n throw new Error('Unsupported layer. Please change to PNG or use basic layer.');\n }\n }\n\n function checkIfBBoxAndCenterSet(data) {\n if (data.bbox && data.center) {\n // If both are used - service will return a HTTP 400 response.\n throw new Error('The bbox and center properties cannot be used together');\n }\n }\n\n function checkIfBBoxAndCenterNotSet(data) {\n if (!data.bbox && !data.center) {\n throw new Error('Either bbox or center property must be provided');\n }\n }\n\n function checkIfBBoxUsedWithHeightOrWidth(data) {\n if (data.bbox && (Utils.isValidNumber(data.width) || Utils.isValidNumber(data.height))) {\n // If both are used - service will return a HTTP 400 response.\n throw new Error('The bbox, width and height properties cannot be used together');\n }\n }\n\n /**\n * @ignore\n * Validate combination of properties. Done here because chain.js does not support such behaviour\n * @throws Error\n * @param {Object} data\n */\n function validateCombineProperties(data) {\n\n // Executing additional more complex validations\n checkIfLayerSupported(data);\n checkIfBBoxAndCenterSet(data);\n checkIfBBoxAndCenterNotSet(data);\n checkIfBBoxUsedWithHeightOrWidth(data);\n }\n\n function convertBBoxToString(bbox) {\n return bbox.minLon + ',' + bbox.minLat + ',' + bbox.maxLon + ',' + bbox.maxLat;\n }\n\n function serializeToStringIfNecessary(propertyName, propertyValue) {\n var splitCenter, latLngCenter;\n if (propertyName === 'bbox') {\n propertyValue = convertBBoxToString(propertyValue);\n } else if (propertyName === 'zoom') {\n return String(parseInt(propertyValue, 10) - 1);\n } else if (propertyName === 'center') {\n splitCenter = propertyValue.split(',');\n latLngCenter = L.latLng(parseFloat(splitCenter[0]), splitCenter[1]);\n return latLngCenter.lng + ',' + latLngCenter.lat;\n }\n return propertyValue;\n }\n\n /**\n * @ignore\n * Build the Url string using the configuration available.\n * @param {Object} data\n * @return {String}\n */\n function toUrl(data) {\n var querySegments = Object.keys(fields).reduce(function(segments, propertyName) {\n var propertyValue = data[propertyName];\n if (propertyValue !== undefined) {\n propertyValue = serializeToStringIfNecessary(propertyName, propertyValue);\n segments.push(propertyName + '=' + encodeURI(propertyValue));\n }\n return segments;\n }, []);\n return baseUrl + '?' + querySegments.join('&');\n }\n\n function handleChain(data, callback) {\n validateCombineProperties(data);\n if (callback) {\n callback(toUrl(data));\n }\n }\n\n function StaticMapImage(initConfig) {\n return chain.call(this, Utils.clone(fields), handleChain, initConfig);\n }\n\n return StaticMapImage;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/staticMapImage/staticMapImage.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['./template'], function(template) {\n\n function createKeyValueString(key, value) {\n return encodeURIComponent(key) + '=' + encodeURIComponent(value);\n }\n\n function mapQueryParamToKeyValueString(key, queryParams) {\n var queryParamValue = queryParams[key];\n var result = '';\n if (Array.isArray(queryParamValue)) {\n result = queryParamValue.map(function(value) {\n return createKeyValueString(key, value);\n }).join('&');\n } else {\n result = createKeyValueString(key, queryParams[key]);\n }\n return result;\n }\n\n function withQueryParams(url, queryParams) {\n var queryString;\n if (!queryParams) {\n return url;\n }\n\n queryString = Object.keys(queryParams)\n .map(function(key) {\n return mapQueryParamToKeyValueString(key, queryParams);\n })\n .join('&');\n return url + '?' + queryString;\n }\n\n return function(urlTemplate, pathParams, queryParams) {\n var url = template(urlTemplate, pathParams);\n return withQueryParams(url, queryParams);\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./requester/urlBuilder.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine([], function() {\n 'use strict';\n function isUndefined(value) {\n return value === undefined;\n }\n\n function isFunction(value) {\n return typeof value === 'function';\n }\n\n return function(template, values) {\n return template.replace(/\\{ *([\\w_]+) *\\}/g, function(match, key) { //eslint-disable-line\n var value = values[key];\n if (isUndefined(value)) {\n return '{' + key + '}';\n } else if (isFunction(value)) {\n return value(key);\n }\n return value;\n });\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./requester/template.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * The copyright caption service implementation. Provides a caption that is supposed to be display on link providing to\n * full copyright notice. The response is not changed often.\n *\n * This service is supposed to be called once when user have the map displayed for the first time.\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"CopyrightCaption/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"CopyrightCaption/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * @example\n * ```js\n * tomtom.copyrightCaption()\n * .go()\n * .then(function(response) {\n * console.log(response);\n * });\n * ```\n *\n * @class CopyrightCaption\n * @module Services\n * @uses Chain\n * @constructor\n * @uses KeyMixin\n * @uses ProtocolMixin\n *\n * @param {Object} [options]\n * @param {String} [options.key] This is optional if a key was already defined globally\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n */\ndefine(['rest/copyright', 'model/copyright/copyrightCaption', 'services/chain', 'services/validators'],\n function(restCopyright, model, chain, validators) {\n 'use strict';\n var fields = {\n key: {validator: validators.string},\n protocol: {validator: validators.oneOfValue(['http', 'https'], 'protocol')}\n };\n\n var copyright = restCopyright();\n\n /**\n * Perform the actual call to the web service.\n *\n * It receives two optional arguments. The first one is a callback function that will be used when a\n * successful response if received by the web service. The second one is another callback function\n * that will be used only in case of failure.\n *\n * Both arguments are shortcuts for the callback and fail methods respectively.\n *\n * The final response from service is a string containing the caption i.e.:\n * © 1992 - 2016 TomTom.\n *\n * This text have to be displayed as a copyright prompt when using TomTom services. The caption should be\n * clickable. User should be presented with full copyright notice when caption is clicked. For further\n * documentation please check the caption class.\n *\n * The SDK provides a Promise polyfill for browsers (IE<9) without native ECMAScript 6 support.\n *\n * @method go\n * @param {Function} [success] The callback function to be called on case of success.\n * @param {Function} [fail] The callback function to be called on case of failure.\n * If a success callback is not given this argument will be ignored. In that case the returned Promise\n * should be used to handle the failures.\n * @return {Promise|null} If the success callback is omitted (and wasn't defined one yet) this function\n * will return a Promise\n */\n\n function handleChain(data, callback) {\n copyright.caption(fields, data, function(response) {\n callback.call(this, model(response));\n });\n }\n\n return function(options) {\n return chain(fields, handleChain, options);\n };\n });\n\n\n\n// WEBPACK FOOTER //\n// ./services/copyrights/copyrightCaption.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['endpoints', 'rest/request/requestFactory', 'apiKeyNames'],\n function(endpoints, requestFactory, ApiKeyNames) {\n 'use strict';\n\n var displayKeyname = ApiKeyNames.display;\n\n return function() {\n return {\n copyrightsWorld: requestFactory.single(endpoints.copyrightsWorld, displayKeyname),\n copyrightsBounds: requestFactory.single(endpoints.copyrightsBounds, displayKeyname),\n\n caption: requestFactory.single(endpoints.caption, displayKeyname)\n };\n };\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./rest/copyright.js","define(['common/parameterApplications'], function(parameterApplications) {\n var fieldName = 'contentType';\n\n return {\n setField: function(fields) {\n var copiedFields = Object.assign({}, fields);\n copiedFields[fieldName] = {\n application: parameterApplications.PATH\n };\n return copiedFields;\n },\n\n setValue: function(requestOptions) {\n requestOptions[fieldName] = 'json';\n return requestOptions;\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./rest/request/contentTypeConfigurer.js","define(['http', 'endpoints'], function(http, endpoints) {\n return function(originalCallback, options) {\n return function(result) {\n http.get({\n url: '{protocol}://' + endpoints.origin + result,\n callbackParam: 'callback',\n fail: options.fail,\n callback: originalCallback\n });\n };\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./rest/request/asyncRedirectModeCallbackFactory.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine([], function() {\n 'use strict';\n\n /**\n * @ignore\n * This map contains:\n * * Identifier: 'pl-PL' - by this identifier we search in the map for locale\n * * Label: 'Polish' - label, which will be returned by getLabel function in Locale prototype\n * * Service specific options (routing, search, traffic):\n * * - fallback - identifies to which language code should be used, because for different services\n * * different language codes are used. For example pl-PL is correct one for search, but pl is used by\n * * routing. This field is also used by the method getLocaleFor in locale prototype\n * * - isNative - describes if this language is supported by service. For example 'en-AU' is supported by search\n * * but it is not supported by routing, so it will be defaulted to 'en-GB' for it. Also language list\n * for service is determined by this field. If you call localeService.getLocalesFor('routing')\n * only languages with routing.isNative === true will be returned.\n */\n var map = {\n 'af-ZA': {\n label: 'Afrikaans',\n routing: {\n fallback: 'af-ZA',\n isNative: true\n },\n search: {\n fallback: 'af-ZA',\n isNative: true\n },\n traffic: {\n fallback: 'en', //fallback to en\n isNative: false\n },\n maps: {\n fallback: 'en-GB', //fallback\n isNative: false\n }\n },\n 'ar': {\n label: 'Arabic',\n routing: {\n fallback: 'ar',\n isNative: true\n },\n search: {\n fallback: 'ar',\n isNative: true\n },\n traffic: {\n fallback: 'en', //fallback to en\n isNative: false\n },\n maps: {\n fallback: 'ar',\n isNative: true\n }\n },\n 'bg-BG': {\n label: 'Bulgarian',\n routing: {\n fallback: 'bg-BG',\n isNative: true\n },\n search: {\n fallback: 'bg-BG',\n isNative: true\n },\n traffic: {\n fallback: 'en', //fallback to en\n isNative: false\n },\n maps: {\n fallback: 'bg-BG',\n isNative: true\n }\n },\n 'ca-ES': {\n label: 'Spanish (Catalan)',\n routing: {\n fallback: 'es-ES', //fallback to spanish\n isNative: false\n },\n search: {\n fallback: 'ca-ES',\n isNative: true\n },\n traffic: {\n fallback: 'ca',\n isNative: true\n },\n maps: {\n fallback: 'es-ES', //fallback\n isNative: false\n }\n },\n 'cs-CZ': {\n label: 'Czech',\n routing: {\n fallback: 'cs-CZ',\n isNative: true\n },\n search: {\n fallback: 'cs-CZ',\n isNative: true\n },\n traffic: {\n fallback: 'cs',\n isNative: true\n },\n maps: {\n fallback: 'cs-CZ',\n isNative: true\n }\n },\n 'da-DK': {\n label: 'Danish',\n routing: {\n fallback: 'da-DK',\n isNative: true\n },\n search: {\n fallback: 'da-DK',\n isNative: true\n },\n traffic: {\n fallback: 'da',\n isNative: true\n },\n maps: {\n fallback: 'da-DK',\n isNative: true\n }\n },\n 'nl-BE': {\n label: 'Dutch (Belgium)',\n routing: {\n fallback: 'nl-NL', //fallback to nl-NL\n isNative: false\n },\n search: {\n fallback: 'nl-BE',\n isNative: true\n },\n traffic: {\n fallback: 'nl',\n isNative: false\n },\n maps: {\n fallback: 'nl-NL', //fallback\n isNative: false\n }\n },\n 'nl-NL': {\n label: 'Dutch',\n routing: {\n fallback: 'nl-NL',\n isNative: true\n },\n search: {\n fallback: 'nl-NL',\n isNative: true\n },\n traffic: {\n fallback: 'nl',\n isNative: true\n },\n maps: {\n fallback: 'nl-NL',\n isNative: true\n }\n },\n 'en-AU': {\n label: 'English (Australia)',\n routing: {\n fallback: 'en-GB', //falback to en-gb\n isNative: false\n },\n search: {\n fallback: 'en-AU',\n isNative: true\n },\n traffic: {\n fallback: 'en', //fallback to en\n isNative: false\n },\n maps: {\n fallback: 'en-AU',\n isNative: true\n }\n },\n 'en-NZ': {\n label: 'English (New Zealand)',\n routing: {\n fallback: 'en-GB', //falback to en-gb\n isNative: false\n },\n search: {\n fallback: 'en-NZ',\n isNative: true\n },\n traffic: {\n fallback: 'en', //fallback to en\n isNative: false\n },\n maps: {\n fallback: 'en-NZ',\n isNative: true\n }\n },\n 'en-GB': {\n label: 'English (Great Britain)',\n routing: {\n fallback: 'en-GB',\n isNative: true\n },\n search: {\n fallback: 'en-GB',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: true\n },\n maps: {\n fallback: 'en-GB',\n isNative: true\n }\n },\n 'en-US': {\n label: 'English (USA)',\n routing: {\n fallback: 'en-US',\n isNative: true\n },\n search: {\n fallback: 'en-US',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'en-US',\n isNative: true\n }\n },\n 'en-CA': {\n label: 'English (Canada)',\n routing: {\n fallback: 'en-US', //fallback\n isNative: false\n },\n search: {\n fallback: 'en-US', //fallback\n isNative: false\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'en-CA',\n isNative: true\n }\n },\n 'et-EE': {\n label: 'Estonian',\n routing: {\n fallback: 'en-GB', //falback to en-gb\n isNative: false\n },\n search: {\n fallback: 'et-EE',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'en-GB', //fallback\n isNative: false\n }\n },\n 'eu-ES': {\n label: 'Basque (Spain)',\n routing: {\n fallback: 'es-ES',\n isNative: false\n },\n search: {\n fallback: 'eu-ES',\n isNative: true\n },\n traffic: {\n fallback: 'es',\n isNative: false\n },\n maps: {\n fallback: 'es-ES',\n isNative: false\n }\n },\n 'fi-FI': {\n label: 'Finnish',\n routing: {\n fallback: 'fi-FI',\n isNative: true\n },\n search: {\n fallback: 'fi-FI',\n isNative: true\n },\n traffic: {\n fallback: 'fi',\n isNative: true\n },\n maps: {\n fallback: 'fi-FI',\n isNative: true\n }\n },\n 'fr-CA': {\n label: 'French (Canada)',\n routing: {\n fallback: 'fr-FR',\n isNative: false //fallback to fr-FR\n },\n search: {\n fallback: 'fr-CA',\n isNative: true\n },\n traffic: {\n fallback: 'fr',\n isNative: false //fallback to fr\n },\n maps: {\n fallback: 'fr-FR', //fallback\n isNative: false\n }\n },\n 'fr-FR': {\n label: 'French',\n routing: {\n fallback: 'fr-FR',\n isNative: true\n },\n search: {\n fallback: 'fr-FR',\n isNative: true\n },\n traffic: {\n fallback: 'fr',\n isNative: true\n },\n maps: {\n fallback: 'fr-FR',\n isNative: true\n }\n },\n 'de-DE': {\n label: 'German',\n routing: {\n fallback: 'de-DE',\n isNative: true\n },\n search: {\n fallback: 'de-DE',\n isNative: true\n },\n traffic: {\n fallback: 'de',\n isNative: true\n },\n maps: {\n fallback: 'de-DE',\n isNative: true\n }\n },\n 'el-GR': {\n label: 'Greek',\n routing: {\n fallback: 'el-GR',\n isNative: true\n },\n search: {\n fallback: 'el-GR',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'el-GR',\n isNative: true\n }\n },\n 'gl-ES': {\n label: 'Galician (Spain)',\n routing: {\n fallback: 'es-ES',\n isNative: false\n },\n search: {\n fallback: 'gl-ES',\n isNative: true\n },\n traffic: {\n fallback: 'es',\n isNative: false\n },\n maps: {\n fallback: 'es-ES',\n isNative: false\n }\n },\n 'he-IL': {\n label: 'Hebrew (Israel)',\n routing: {\n fallback: 'en-GB',\n isNative: false\n },\n search: {\n fallback: 'he-IL',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false\n },\n maps: {\n fallback: 'en-GB',\n isNative: false\n }\n },\n 'hr-HR': {\n label: 'Croatian',\n routing: {\n fallback: 'en-GB',\n isNative: false //fallback to en-GB\n },\n search: {\n fallback: 'hr-HR',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'en-GB', //fallback\n isNative: false\n }\n },\n 'hu-HU': {\n label: 'Hungarian',\n routing: {\n fallback: 'hu-HU',\n isNative: true\n },\n search: {\n fallback: 'hu-HU',\n isNative: true\n },\n traffic: {\n fallback: 'hu',\n isNative: true\n },\n maps: {\n fallback: 'hu-HU',\n isNative: true\n }\n },\n 'id-ID': {\n label: 'Indonesian',\n routing: {\n fallback: 'id-ID',\n isNative: true\n },\n search: {\n fallback: 'id-ID',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'id-ID',\n isNative: true\n }\n },\n 'it-IT': {\n label: 'Italian',\n routing: {\n fallback: 'it-IT',\n isNative: true\n },\n search: {\n fallback: 'it-IT',\n isNative: true\n },\n traffic: {\n fallback: 'it',\n isNative: true\n },\n maps: {\n fallback: 'it-IT',\n isNative: true\n }\n },\n 'kk-KZ': {\n label: 'Kazakh (Kazakhstan)',\n routing: {\n fallback: 'en-GB',\n isNative: false\n },\n search: {\n fallback: 'kk-KZ',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false\n },\n maps: {\n fallback: 'en-GB',\n isNative: false\n }\n },\n 'ko-KR': {\n label: 'Korean',\n routing: {\n fallback: 'ko-KR',\n isNative: true\n },\n search: {\n fallback: 'en-GB',\n isNative: false //fallback to en-GB\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'ko-KR',\n isNative: true\n }\n },\n 'lv-LV': {\n label: 'Latvian',\n routing: {\n fallback: 'en-GB', //fallback to en-GB\n isNative: false\n },\n search: {\n fallback: 'lv-LV',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'en-GB', //fallback\n isNative: false\n }\n },\n 'lt-LT': {\n label: 'Lithuanian',\n routing: {\n fallback: 'lt-LT',\n isNative: true\n },\n search: {\n fallback: 'lt-LT',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'lt-LT',\n isNative: true\n }\n },\n 'ms-MY': {\n label: 'Malay',\n routing: {\n fallback: 'ms-MY',\n isNative: true\n },\n search: {\n fallback: 'ms-MY',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'ms-MY',\n isNative: true\n }\n },\n 'NGT': {\n label: 'Neutral Ground Truth',\n routing: {\n fallback: 'en-GB', //fallback to en-gb\n isNative: false\n },\n search: {\n fallback: 'en-GB', //fallback to en-gb\n isNative: false\n },\n traffic: {\n fallback: 'en', //fallback to en\n isNative: false\n },\n maps: {\n fallback: 'NGT',\n isNative: true\n }\n },\n 'NGT-Latn': {\n label: 'Neutral Ground Truth (Latin)',\n routing: {\n fallback: 'en-GB', //fallback to en-gb\n isNative: false\n },\n search: {\n fallback: 'en-GB', //fallback to en-gb\n isNative: false\n },\n traffic: {\n fallback: 'en', //fallback to en\n isNative: false\n },\n maps: {\n fallback: 'NGT-Latn',\n isNative: true\n }\n },\n 'no-NO': {\n label: 'Norwegian',\n routing: {\n fallback: 'nb-NO',\n isNative: false\n },\n search: {\n fallback: 'no-NO',\n isNative: true\n },\n traffic: {\n fallback: 'no',\n isNative: true\n },\n maps: {\n fallback: 'nb-NO',\n isNative: false\n }\n },\n 'nb-NO': {\n label: 'Norwegian',\n routing: {\n fallback: 'nb-NO',\n isNative: true\n },\n search: {\n fallback: 'no-NO',\n isNative: false\n },\n traffic: {\n fallback: 'no',\n isNative: false\n },\n maps: {\n fallback: 'nb-NO',\n isNative: true\n }\n },\n 'pl-PL': {\n label: 'Polish',\n routing: {\n fallback: 'pl-PL',\n isNative: true\n },\n search: {\n fallback: 'pl-PL',\n isNative: true\n },\n traffic: {\n fallback: 'pl',\n isNative: true\n },\n maps: {\n fallback: 'pl-PL',\n isNative: true\n }\n },\n 'pt-BR': {\n label: 'Portuguese (Brazil)',\n routing: {\n fallback: 'pt-BR',\n isNative: true\n },\n search: {\n fallback: 'pt-BR',\n isNative: true\n },\n traffic: {\n fallback: 'pt',\n isNative: false //fallback to pt\n },\n maps: {\n fallback: 'pt-BR',\n isNative: true\n }\n },\n 'pt-PT': {\n label: 'Portuguese (Portugal)',\n routing: {\n fallback: 'pt-PT',\n isNative: true\n },\n search: {\n fallback: 'pt-PT',\n isNative: true\n },\n traffic: {\n fallback: 'pt',\n isNative: true\n },\n maps: {\n fallback: 'pt-PT',\n isNative: true\n }\n },\n 'ro-RO': {\n label: 'Romanian (Romania)',\n routing: {\n fallback: 'en-GB',\n isNative: false\n },\n search: {\n fallback: 'ro-RO',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false\n },\n maps: {\n fallback: 'en-GB',\n isNative: false\n }\n },\n 'ru-Cyrl-RU': {\n label: 'Russian (Cyrillic)',\n routing: {\n fallback: 'ru-RU',\n isNative: false\n },\n search: {\n fallback: 'ru-RU',\n isNative: false\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'ru-Cyrl-RU',\n isNative: true\n }\n },\n 'ru-Latn-RU': {\n label: 'Russian (Latin)',\n routing: {\n fallback: 'ru-RU',\n isNative: false\n },\n search: {\n fallback: 'ru-RU',\n isNative: false\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'ru-Latn-RU',\n isNative: true\n }\n },\n 'ru-RU': {\n label: 'Russian',\n routing: {\n fallback: 'ru-RU',\n isNative: true\n },\n search: {\n fallback: 'ru-RU',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'ru-RU',\n isNative: true\n }\n },\n 'sk-SK': {\n label: 'Slovak',\n routing: {\n fallback: 'sk-SK',\n isNative: true\n },\n search: {\n fallback: 'sk-SK',\n isNative: true\n },\n traffic: {\n fallback: 'sk',\n isNative: true\n },\n maps: {\n fallback: 'sk-SK',\n isNative: true\n }\n },\n 'sl-SI': {\n label: 'Slovenian',\n routing: {\n fallback: 'sl-SI',\n isNative: true\n },\n search: {\n fallback: 'sl-SI',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'sl-SI',\n isNative: true\n }\n },\n 'sr-RS': {\n label: 'Serbian',\n routing: {\n fallback: 'en-GB',\n isNative: false\n },\n search: {\n fallback: 'sr-RS',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false\n },\n maps: {\n fallback: 'en-GB',\n isNative: false\n }\n },\n 'es-ES': {\n label: 'Spanish (Castilian)',\n routing: {\n fallback: 'es-ES',\n isNative: true\n },\n search: {\n fallback: 'es-ES',\n isNative: true\n },\n traffic: {\n fallback: 'es',\n isNative: true\n },\n maps: {\n fallback: 'es-ES',\n isNative: true\n }\n },\n 'es-419': {\n label: 'Spanish (Latin American)',\n routing: {\n fallback: 'es-ES',\n isNative: false //fallback to es-ES\n },\n search: {\n fallback: 'es-419',\n isNative: true\n },\n traffic: {\n fallback: 'es',\n isNative: false //fallback to es\n },\n maps: {\n fallback: 'es-ES', //fallback\n isNative: false\n }\n },\n 'es-MX': {\n label: 'Spanish (Mexico)',\n routing: {\n fallback: 'es-MX',\n isNative: true\n },\n search: {\n fallback: 'es-ES', //fallback to es-ES\n isNative: false\n },\n traffic: {\n fallback: 'es',\n isNative: false //falback to es\n },\n maps: {\n fallback: 'es-MX',\n isNative: true\n }\n },\n 'sv-SE': {\n label: 'Swedish',\n routing: {\n fallback: 'sv-SE',\n isNative: true\n },\n search: {\n fallback: 'sv-SE',\n isNative: true\n },\n traffic: {\n fallback: 'sv',\n isNative: true\n },\n maps: {\n fallback: 'sv-SE',\n isNative: true\n }\n },\n 'th-TH': {\n label: 'Thai',\n routing: {\n fallback: 'th-TH',\n isNative: true\n },\n search: {\n fallback: 'th-TH',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false //fallback to en\n },\n maps: {\n fallback: 'th-TH',\n isNative: true\n }\n },\n 'tr-TR': {\n label: 'Turkish',\n routing: {\n fallback: 'tr-TR',\n isNative: true\n },\n search: {\n fallback: 'tr-TR',\n isNative: true\n },\n traffic: {\n fallback: 'tr',\n isNative: true\n },\n maps: {\n fallback: 'tr-TR',\n isNative: true\n }\n },\n 'uk-UA': {\n label: 'Ukrainian',\n routing: {\n fallback: 'en-GB',\n isNative: false\n },\n search: {\n fallback: 'uk-UA',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false\n },\n maps: {\n fallback: 'en-GB',\n isNative: false\n }\n },\n 'vi-VN': {\n label: 'Vietnamese (Viet Nam)',\n routing: {\n fallback: 'en-GB',\n isNative: false\n },\n search: {\n fallback: 'vi-VN',\n isNative: true\n },\n traffic: {\n fallback: 'en',\n isNative: false\n },\n maps: {\n fallback: 'en-GB',\n isNative: false\n }\n },\n 'zh-CN': {\n label: 'Chinese (PRC)',\n routing: {\n fallback: 'zh-TW', //fallback to taiwan\n isNative: false\n },\n search: {\n fallback: 'zh-CN',\n isNative: true\n },\n traffic: {\n fallback: 'en', //falback to english\n isNative: false\n },\n maps: {\n fallback: 'zh-TW', //fallback\n isNative: false\n }\n },\n 'zh-TW': {\n label: 'Chinese (Taiwan)',\n routing: {\n fallback: 'zh-TW',\n isNative: true\n },\n search: {\n fallback: 'zh-TW',\n isNative: true\n },\n traffic: {\n fallback: 'en', //falback to english\n isNative: false\n },\n maps: {\n fallback: 'zh-TW',\n isNative: true\n }\n }\n };\n\n return map;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./config/language/languageTypesMapping.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine(['./locale'], function(Locale) {\n 'use strict';\n return function(languageCode, serviceType) {\n var locale = new Locale(languageCode);\n return locale.getValueFor(serviceType) === languageCode;\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./config/language/validator.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * @ignore\n * Store the list of geopolitical views available as key-value pairs.\n *\n * By default, all the entries listed here are supported by the supported services defined in the geopolView class.\n * If a view is NOT supported by a service it needs to be added as a fallback here.\n *\n * Note: maps service have subTypes. If a view is not supported by a service + subType (ex: maps - raster), we need to\n * add its fallback here.\n */\ndefine([], function() {\n 'use strict';\n return {\n Unified: {\n label: 'Unified'\n },\n IN: {\n label: 'India'\n },\n IL: {\n label: 'Israel'\n },\n MA: {\n label: 'Morocco'\n },\n PK: {\n label: 'Pakistan'\n },\n AR: {\n label: 'Argentina',\n search: {\n fallback: 'Unified'\n }\n },\n Arabic: {\n label: 'Arabic',\n search: {\n fallback: 'Unified'\n },\n reverseGeocoder: {\n fallback: 'Unified'\n }\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./config/geopolView/geopolViewsMapping.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * The copyright service implementation provides a full copyrights notice in an HTML format that can be displayed to\n * the user when the copyrights link is clicked.\n *\n * The copyrights API can take as argument area which the copyrights concerns. If this argument is omitted the whole\n * world is considered.\n *\n * The API handles the \"edge of the world\" issue. Allowing to properly handle bounding box that is outside of world\n * extends (-180, -90, 180, 90).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"Copyright/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the {{#crossLink \"Copyright/go:method\"}}{{/crossLink}}\n * method to handle the response.\n *\n * @class Copyright\n * @module Services\n * @uses Chain\n * @constructor\n * @uses KeyMixin\n * @uses BoundingBoxMixin\n * @uses ProtocolMixin\n *\n * @param {Object} [options]\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n *\n * @param {String} [options.key] This is optional if a key was already defined globally\n * @param {Object|Array|String} [options.boundingBox] An area to extract the copyrights information for.\n * If omitted, the whole world will be taken into consideration.\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @example\n * ```js\n * tomtom.copyright()\n * .go()\n * .then(function(response) {\n * console.log(response);\n * });\n * ```\n */\ndefine(['rest/copyright', 'model/copyright/copyright', 'services/chain',\n 'services/worldEdge', 'services/copyrights/copyrightsParameters'],\nfunction(restCopyright, model, chain, worldEdge, copyrightsParameters) {\n 'use strict';\n\n var fields = copyrightsParameters.create();\n var copyright = restCopyright();\n\n /**\n * Perform the actual call to the web service.\n *\n * It receives two optional arguments. The first one is a callback function that will be used when a\n * successful response if received by the web service. The second one is another callback function\n * that will be used only in case of failure.\n *\n * Both arguments are shortcuts for the callback and fail methods respectively.\n *\n * The final response from the service is an HTML string with the copyright information that have to\n * be displayed.\n * The whole respose is wrapped into a `div` element with the id `copyrightMessage`. Country names are\n * enclosed within `h4` elements and the copyrights information per each supplier is enclose in `p`\n * elements. This makes styling with CSS fairly easy. An example response may look like this:\n *```html\n *

General Copyrights:

\n *

© 1992 – 2016 TomTom. All rights reserved. This\n * material is proprietary and the subject of\n * copyright protection, database right protection\n * and other intellectual property rights owned\n * by TomTom or its suppliers. The use of\n * this material is subject to the terms of a license\n * agreement. Any unauthorized copying or disclosure\n * of this material will lead to criminal and civil\n * liabilities.

\n *

Data Source © 2016 TomTom

\n *
\n * ```\n *\n * The SDK provides a Promise polyfill for browsers (IE<9) without native ECMAScript 6 support.\n *\n * @method go\n * @param {Function} [success] The callback function to be called on case of success.\n * @param {Function} [fail] The callback function to be called on case of failure.\n * If a success callback is not given this argument will be ignored. In that case the returned Promise\n * should be used to handle the failures.\n * @return {Promise|null} If the success callback is omitted (and wasn't defined one yet) this function\n * will return a Promise\n */\n\n function addBoundingBoxParameters(data, boundingBox) {\n data.minLon = boundingBox.minLon;\n data.maxLon = boundingBox.maxLon;\n data.minLat = boundingBox.minLat;\n data.maxLat = boundingBox.maxLat;\n return data;\n }\n\n function copyrightsQuery(fields) {\n var modifiedFields = copyrightsParameters.modifyFields(fields);\n return function(options, callback) {\n if (options.minLon !== undefined && options.minLat !== undefined &&\n options.maxLon !== undefined && options.maxLat !== undefined) {\n return copyright.copyrightsBounds(modifiedFields, options, callback);\n } else {\n return copyright.copyrightsWorld(modifiedFields, options, callback);\n }\n };\n }\n\n function handleChain(data, callback) {\n copyrightsParameters.modifyRequestOptions(data);\n worldEdge(copyrightsQuery(fields), model, data, callback, addBoundingBoxParameters);\n }\n\n return function(options) {\n return chain(fields, handleChain, options);\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/copyrights/copyright.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine([], function() {\n 'use strict';\n\n function defaultComparator(first, second) {\n return first === second;\n }\n\n return function(firstArray, secondArray, comparator) {\n var result, i, j;\n if (!comparator) {\n comparator = defaultComparator;\n }\n\n result = firstArray.concat(secondArray);\n for (i = 0; i < firstArray.length; i += 1) {\n for (j = firstArray.length; j < result.length; j += 1) {\n if (comparator(result[i], result[j])) {\n result.splice(j, 1);\n j -= 1;\n }\n }\n }\n return result;\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/arrayMerge.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Makes it easy to display a message notification over a map.\n *\n * @example\n * ```javascript\n * var mBox = new L.MessageBox({\n * content:'Hello world',\n * closeAfter: 1000\n * });\n * mBox.addTo(map);\n * ```\n *\n * @class MessageBox\n * @namespace L\n * @extends L.Layer\n * @module Widgets\n * @constructor\n * @param {Object} [options]\n * @param {Boolean} [options.closeable=true] Show the close button\n * @param {Number} [options.closeAfter=0] Number of milliseconds after which the control will be automatically\n * closed. If value is `0` it will not be closed automatically, which is the default behaviour.\n */\n/* jshint nomen:false */\ndefine(['leaflet', 'services/utils'], function(L, Utils) {\n 'use strict';\n\n L.MessageBox = L.Layer.extend({\n options: {\n closeable: true,\n closeAfter: 0\n },\n\n initialize: function(options) {\n L.Util.setOptions(this, options);\n },\n\n onAdd: function(map) {\n var that;\n this._map = map;\n this._container = this.container = L.DomUtil.create('div', 'leaflet-messageBox tomtom-copyrights');\n this.contentContainer = L.DomUtil.create('div', 'leaflet-messageBox-content', this.container);\n if (this.options.closeable) {\n this.closeButton = L.DomUtil.create('div', 'leaflet-messageBox-close-button', this.container);\n this.closeButton.innerHTML = '×';\n L.DomEvent.on(this.closeButton, 'click', this.onRemove, this);\n }\n that = this;\n if (this.options.closeAfter && parseInt(this.options.closeAfter, 10) === this.options.closeAfter) {\n setTimeout(function() {\n that.close();\n }, this.options.closeAfter);\n }\n L.DomEvent.disableClickPropagation(this.container);\n L.DomEvent.disableScrollPropagation(this.container);\n\n if (this.options.content) {\n this.setContent(this.options.content);\n }\n\n map._container.appendChild(this.container);\n return this.container;\n },\n addTo: function(map) {\n map.addLayer(this);\n return this;\n },\n onRemove: function() {\n if (this._map._container.contains(this.container)) {\n this._map._container.removeChild(this.container);\n }\n return this;\n },\n /**\n * Sets the HTML content of the message box.\n *\n * @chainable\n * @method setContent\n * @param {String|HTMLElement} content The text or {{#crossLink \"HTMLElement\"}}{{/crossLink}} to be a content\n * of the message box\n * @return {L.MessageBox}\n */\n setContent: function(content) {\n if (!this.contentContainer) {\n this.options.content = content;\n return this;\n }\n if (Utils.isString(content)) {\n this.contentContainer.innerHTML = content || '';\n return this;\n }\n while (this.contentContainer.firstChild) {\n this.contentContainer.lastChild.remove();\n }\n this.contentContainer.appendChild(content);\n return this;\n },\n close: function() {\n return this.onRemove();\n },\n openOn: function(map) {\n return this.addTo(map);\n }\n });\n\n L.messageBox = function(options) {\n return new L.MessageBox(options);\n };\n\n return L.messageBox;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/messageBox.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine([], function() {\n 'use strict';\n\n return {\n hasProperty: function(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n },\n isNotNull: function(val) {\n if (val === null) {\n return false;\n }\n return (typeof val === 'function') || (typeof val === 'object');\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/objectUtils.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This is an extension to Leaflet allowing to display the TomTom traffic incidents layer.\n *\n * It uses the tomtom.trafficIncidents service in order to retrieve incidents details.\n *\n * A look and feel, together with a clustering behaviour, can be modified by passing the pointToLayer function.\n *\n * @class TomTomTrafficIncidentsLayer\n * @extends L.GeoJSON\n * @namespace L\n * @module Map\n * @constructor\n * @param {Object} [options] It accepts all the options that\n * Leaflet's GeoJSON\n * class allows.\n * The additional options, which are TomTom specific, are described below.\n * @param {String} [options.key] API key that can be obtained from\n * [TomTom's developer portal](https://developer.tomtom.com).\n * This is a key for the traffic services.\n * @param {Function} [options.pointToLayer=default] This function is used to convert vector traffic\n * incidents into a layer of markers on the map. It takes the GeoJSON feature as the first parameter and the latlng\n * object as the second one. It returns a layer that will be added to the map. If this is omitted, the default\n * implementation is used.\n * @param {Boolean} [options.imperialDistance=null] Set this option if you want to use a specific unit measurement\n * system for the new instance of the layer instead of use the default unit\n * @param {Boolean} [options.createPopupForCluster=false] Set this to true if you want popup for clusters to be\n * generated\n * @param {Boolean} [options.diff=false] If false, force a 'full' update on traffic markers.\n * @param {Boolean} [options.noRefresh] Disables periodic updates of traffic layers.\n * @param {Number} [options.refresh=30000] The traffic incidents information changes and needs to be updated\n * periodically. By default, it is refreshed every 30 seconds. This parameter's value represents the time\n * in milliseconds between each update interval. The value must be 0 or greater.\n */\n/* jshint nomen:false */\n\ndefine([\n 'leaflet',\n 'security',\n 'services/trafficIncidents',\n './markers/clusterIncidentMarker',\n './markers/incidentMarker',\n '../../config/unit/unitTypes',\n './trafficRefresher',\n 'services/utils'\n], function(\n L,\n security,\n trafficIncidents,\n clusterIncidentMarker,\n incidentMarker,\n unitTypes,\n trafficRefresher,\n Utils\n) {\n\n var trafficStyles = ['s1', 's2', 's3', 'night'];\n\n //mix and max zoom of the incidents layer have been defined as constants because they should not be overwritten;\n //also the service does not allow values greater than 18\n var INCIDENTS_LAYER_MIN_ZOOM = 7;\n var INCIDENTS_LAYER_MAX_ZOOM = 18;\n\n var EVENTS = {\n /**\n * Fired when new incidents data is received.\n *\n * @event TRAFFIC_INCIDENTS_RECEIVED\n * @param {Object} data GeoJson data\n * @param {L.Marker[]} layers Array of markers created to display the incidents\n */\n TRAFFIC_INCIDENTS_RECEIVED: 'tomtom.trafficincidentsreceived'\n };\n\n function getTrafficStyle(trafficLayer) {\n var style = 'night', i;\n if (Utils.isString(trafficLayer)) {\n for (i = 0; i < trafficStyles.length; i += 1) {\n if (trafficStyles[i] === trafficLayer.toLowerCase()) {\n return trafficStyles[i];\n }\n }\n }\n return style;\n }\n\n L.TomTomTrafficIncidentsLayer = L.GeoJSON.extend({\n options: {\n imperialDistance: null,\n trafficModelId: '-1',\n minZoom: INCIDENTS_LAYER_MIN_ZOOM\n },\n /**\n * Name of traffic incidents layer. It can be used to differentiate layers.\n * @property name\n * @default \"TomTomTrafficIncidentsLayer\"\n * @type String\n */\n name: 'trafficIncidents',\n Events: EVENTS,\n statics: {\n Events: EVENTS\n },\n _defaultPointToLayer: function(feature, latlng) {\n var marker;\n\n if (feature.properties.clusterSize) {\n marker = clusterIncidentMarker;\n } else {\n marker = incidentMarker;\n }\n\n return marker(feature, latlng, {\n createPopupForCluster: this.options.createPopupForCluster,\n imperialUnits: this._shouldUseImperialDistance()\n });\n },\n /**\n * @ignore\n * First check the configuration for this instance and then the global configuration.\n * The instance configuration has priority.\n *\n * @return {Boolean}\n */\n _shouldUseImperialDistance: function() {\n if (typeof this.options.imperialDistance === 'boolean') {\n return this.options.imperialDistance;\n }\n return this.unitService.getCurrentUnit().getLabel() === unitTypes.imperial;\n },\n initialize: function(options) {\n this.options.pointToLayer = this._defaultPointToLayer.bind(this);\n L.Util.setOptions(this, options);\n this._layers = {};\n security.setKey('services/traffic', options.key);\n this.incidentsService = trafficIncidents(options.trafficService)\n .key(security.getKey('services/traffic'))\n .style(getTrafficStyle(options.style));\n },\n onAdd: function(map) {\n this._map = map;\n this.unitService = map.getUnitService();\n this.localeService = map.getLocaleService();\n map.on({'viewreset': this.redraw, 'moveend': this.update}, this);\n this.unitService.on(L.UnitService.Events.UNIT_CHANGED, this.redraw, this);\n this.localeService.on(L.LocaleService.Events.LOCALE_CHANGED, this.redraw, this);\n this.trafficRefresherIntervalId =\n trafficRefresher.addRefresherWithModelId(undefined, this.setTrafficModelId, this);\n },\n onRemove: function(map) {\n this.unitService.off(L.UnitService.Events.UNIT_CHANGED, this.redraw, this);\n map.off({'viewreset': this.redraw, 'moveend': this.update}, this);\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n this.clearLayers();\n },\n _getIncidentsService: function(trafficModelId) {\n var map = this._map, zoom, serviceCall;\n if (!map) {\n return null;\n }\n // although the vector map zoom in levels can go into great detail, the incidents layer\n // only supports up to zoom level 18\n zoom = map.getZoom() <= INCIDENTS_LAYER_MAX_ZOOM ? map.getZoom() : INCIDENTS_LAYER_MAX_ZOOM;\n\n if (zoom < INCIDENTS_LAYER_MIN_ZOOM) {\n this.clearLayers();\n return null;\n }\n serviceCall = this.incidentsService\n .boundingBox(map.getBounds())\n .zoomLevel(zoom)\n .language(this.localeService.getCurrentLocale().getValueFor('traffic'));\n if (typeof trafficModelId !== 'undefined') {\n serviceCall = serviceCall.trafficModelID(trafficModelId);\n }\n return serviceCall;\n },\n // In this method we have to do few things:\n // 1. find layers (markers) that should be removed, because they are not present in the new response\n // 2. find layers that can stay and update them (IF NECESSARY)\n _updateMarkers: function(geoJSON) {\n // In this object we are storing ids as keys (to speed up the searching process), that are pointing\n // to corresponding object in the geoJSON response from the API.\n var newFeaturesDictionary = geoJSON.features.reduce(function(result, feature) {\n var current = {};\n current[feature.properties.id] = feature;\n return Object.assign(result, current);\n }, Object.create(null));\n\n // eachLayer is iterating over old, already existing markers from the prev response\n this.eachLayer(function(layer) {\n // layer.feature.properites has the same structure as new markers in geoJSON, we are are using this\n // object as a reference to the original feature from the previous response.\n var properties = layer.feature.properties;\n\n // if we can find current marker in the new response it stays\n if (!(properties.id in newFeaturesDictionary)) {\n this.removeLayer(layer);\n return;\n }\n\n // From time to time markers with the same id have some useless props (like `time: undefined`) and we\n // could ignore them, BUT what if something else will change? We're doing deep equal and update\n // icon and popup data.\n if (layer instanceof L.Marker.IncidentMarker) {\n layer.setFeature(newFeaturesDictionary[properties.id]);\n }\n\n // We already have a layer for this feature, let's keep it on the map\n delete newFeaturesDictionary[properties.id];\n }, this);\n\n // Here we use Object.assign because we don't want to assume that we know geoJSON structure, it's safer\n // to just update features property and keep the rest as it was. And we are doing that because outside\n // of this method we need to have original geoJSON with every feature we've got from the API.\n return Object.assign({}, geoJSON, {\n features: Object.keys(newFeaturesDictionary).map(function(key) {\n return newFeaturesDictionary[key];\n })\n });\n },\n _handleResponse: function(geoJSON) {\n var data = geoJSON;\n if (this.options.diff) {\n data = this._updateMarkers(geoJSON);\n } else {\n this.clearLayers();\n }\n this\n .addData(data)\n .fire(L.TomTomTrafficIncidentsLayer.Events.TRAFFIC_INCIDENTS_RECEIVED, {\n data: geoJSON,\n layers: this.getLayers()\n });\n },\n _request: function(trafficModelId) {\n var preconfiguredIncidentsService = this._getIncidentsService(trafficModelId);\n if (!preconfiguredIncidentsService) {\n return null;\n }\n return preconfiguredIncidentsService.go()\n .then(this._handleResponse.bind(this));\n },\n redraw: function() {\n return this._request(this.options.trafficModelId);\n },\n update: function() {\n return this._request(this.options.trafficModelId);\n },\n setTrafficModelId: function(trafficModelId) {\n if (this.options.trafficModelId !== trafficModelId) {\n this.options.trafficModelId = trafficModelId;\n this.redraw();\n }\n },\n updateOptions: function(options) {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n this.trafficRefresherIntervalId =\n trafficRefresher.addRefresherWithModelId(options, this.setTrafficModelId, this);\n L.setOptions(this, options);\n }\n });\n\n L.tomTomTrafficIncidentsLayer = function(options) {\n return new L.TomTomTrafficIncidentsLayer(options);\n };\n\n return L.tomTomTrafficIncidentsLayer;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/trafficIncidentsLayer.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Provides current traffic incidents in given region, on given zoom level with given style using the TomTom's\n * [Traffic API - Traffic Incidents Details](https://developer.tomtom.com/traffic-api/traffic-api-documentation-traffic-incidents/traffic-incident-details)\n *\n * The current road situation is updated every minute. Please use the\n * {{#crossLink \"TrafficModelId\"}}{{/crossLink}} service in conjunction with your request to get traffic\n * incidents aligned with other services.\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"TrafficIncidents/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"TrafficIncidents/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * The final response from this service is a GeoJSON object.\n *\n * @class TrafficIncidents\n * @uses Chain\n * @module Services\n * @uses KeyMixin\n * @uses BoundingBoxMixin\n * @uses ProtocolMixin\n * @constructor\n * @param {Object} [options]\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {Number} [options.zoomLevel] A zoom level of the current map view `<0, 18>`. This option **is required**.\n * @param {Object|Array|String} [options.boundingBox] The area to extract incidents from. Conversion objects\n * are described in the {{#crossLink \"TrafficIncidents/boundingBox:method\"}}{{/crossLink}} function.\n * @param {String} [options.style] Style name, **needs to be** one of `\"s1\"`, `\"s2\"`, `\"s3\"`, `\"night\"`.\n * This needs to match the style of your raster traffic tiles to match traffic tubes with traffic icons.\n * @param {String} [options.language=\"en\"] ISO 639-1 language code of the incidentCause and description\n * @param {Number} [options.trafficModelID=-1] Valid, not older than two minutes, traffic model ID.\n * @param {Boolean} [options.expandCluster=false] Should service include details of incidents that are\n * clustered\n * @param {Boolean} [options.originalPosition=false] Should service include original incidents' position\n * @param {\"http\"|\"https\"} [options.protocol] Protocol's type\n * @param {Boolean} [options.preserveCluster=false] Determines if clusters should be preserved\n * when requesting for details of all the incidents\n *\n * @example\n * ```javascript\n * function callbackFn(response) {\n * console.log(response);\n * }\n * tomtom.trafficIncidents()\n * .key(\"\")\n * .boundingBox(\"0,0,1,1\")\n * .style(\"s1\")\n * .zoomLevel(12)\n * .go(callbackFn);\n * ```\n */\n/* eslint-enable max-len */\n/* jshint nomen:false */\ndefine(['rest/trafficIncidents',\n 'model/traffic/trafficIncidents',\n './chain',\n './validators',\n './converters',\n './worldEdge',\n 'common/parameterApplications'],\nfunction(restTrafficIncidents, model, chain, validators, converters, worldEdge, parameterApplications) {\n 'use strict';\n\n var fields = {\n key: {validator: validators.string},\n\n /**\n * Sets or returns the value of the `zoomLevel` option.\n *\n * The zoom level of currently displayed map.\n * It is needed as the style (visibility, clustering, etc...) depends on current zoom level.\n * @method zoomLevel\n * @chainable\n * @param {Number} [newValue] Zoom level from `0` to `18`\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Number} The same service instance or the current option value if no argument was given\n */\n zoomLevel: {validator: validators.zoomLevel, required: true, application: parameterApplications.PATH,\n name: 'zoom'},\n boundingBox: {converter: converters.boundingBox, validator: validators.boundingBox, required: true},\n\n /**\n * Sets or returns the value of the `style` option.\n *\n * The style that will be used to render the\n * traffic tile in the Maps API. This will have an effect on the coordinates of traffic incidents in the\n * reply.\n *\n * @method style\n * @chainable\n * @param {String} [newValue] Style name, needs to be on of _'s1', 's2', 's3', 'night'_. This needs to match\n * style of your raster traffic tiles to match traffic tubes with traffic icons.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n style: {validator: validators.oneOfValue(['s1', 's2', 's3', 'night'], 'traffic style'), required: true,\n application: parameterApplications.PATH},\n\n /**\n * Sets or returns the value of the `language` option.\n *\n * Expects an ISO 639-1 language code for the `incidentCause` and `description` fields in the response.\n * English is the default language.\n *\n * The supported languages are: `ca`, `cs`, `da`, `de`, `en`, `es`, `fi`, `fr`, `hu`,\n * `it`, `nl`, `no`, `pl`, `pt`, `sk`, `sv`, `tr`.\n *\n * There is a conversion mechanism in place that will (ignoring the case) try to match the user input\n * with a valid language.\n *\n * For example: for the French language the following options are possible: \"fr\", \"fre\", \"fr-fr\", \"fr_fr\",\n * \"french\".\n *\n * @method language\n * @chainable\n * @param {String} [newValue] Language code, a conversion mechanism will be applied.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n language: {converter: converters.trafficIncidentsLanguage, validator: validators.trafficIncidentsLanguage},\n\n /**\n * Sets or returns the value of the `trafficModelID` option.\n *\n * Number referencing the traffic model to use.\n * This can be obtained from the the {{#crossLink \"TrafficModelId\"}}{{/crossLink}} service.\n *\n * It is updated every minute, and is valid for two minutes before it times out.\n *\n * If a wrong Traffic Model ID is specified, the correct one will be returned by the interface.\n *\n * The default value of `-1` will always invoke the most recent traffic model. Nevertheless it is\n * a good practice to use the value obtained from the service as this will guarantee an alignment\n * with the raster traffic layer.\n *\n * @method trafficModelID\n * @chainable\n * @param {Number} [newValue] Valid, not older than two minutes, traffic model ID.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Number} The same service instance or the current option value if no argument was given\n */\n trafficModelID: {validator: validators.string, defaultValue: '-1', application: parameterApplications.PATH},\n\n geometries: {validator: validators.oneOfValue(['shifted', 'original'], 'traffic geometries')},\n\n /**\n * Sets or returns the value of the `expandCluster` option.\n *\n * Tells the service to list all traffic incidents in a cluster separately.\n *\n * When is enabled the clusters in the response will be represented as geometry collections\n * and the cluster coordinates will appear as clusterCoordinates parameters.\n *\n * Enabling this feature is useful when the user wants to obtain details of the incidents\n * that are being clustered or wants to perform a client-side clustering.\n *\n * @method expandCluster\n * @chainable\n * @param {Boolean} [newValue] Should service include details of incidents that are clustered\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Boolean} The same service instance or the current option value if no argument was given\n */\n expandCluster: {validator: validators.bool, defaultValue: false},\n\n /**\n * Sets or returns the value of the `preserveCluster` option.\n *\n * Tells the service to keep all traffic incidents clustered when receiving a list of all traffic\n * incidents in a cluster separately.\n *\n * This allows to get all the incidents details while remaining in clusters.\n *\n * @method preserveCluster\n * @chainable\n * @param {Boolean} [newValue] Should service keep clusters data\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Boolean} The same service instance or the current option value if no argument was given\n */\n preserveCluster: {validator: validators.bool, defaultValue: false},\n\n /**\n * Sets or returns the value of the `originalPosition` option.\n *\n * Return the original position of the incident (`originalPosition` attribute) as well as the one\n * shifted to the beginning of the traffic tube.\n *\n * @method originalPosition\n * @chainable\n * @param {Boolean} [newValue] Should service include original incidents' position\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Boolean} The same service instance or the current option value if no argument was given\n */\n originalPosition: {validator: validators.bool, defaultValue: false},\n\n protocol: {validator: validators.oneOfValue(['http', 'https'], 'protocol')},\n\n projection: {\n defaultValue: 'EPSG4326'\n }\n };\n\n var trafficIncidents = restTrafficIncidents();\n\n function addBoundingBoxParameters(data, boundingBox) {\n data.minLon = boundingBox.minLon;\n data.maxLon = boundingBox.maxLon;\n data.minLat = boundingBox.minLat;\n data.maxLat = boundingBox.maxLat;\n return data;\n }\n\n /*\n * At this moment it's impossible to map one field to two and more output fields but we need to do this, e.g.\n * bounding box needs to be mapped to topLeft and btmRight. That's why this method tries to fix this\n */\n function modifyFields(fields) {\n var pathField = {\n application: parameterApplications.PATH\n };\n var resultFields = Object.assign({}, fields);\n\n if (resultFields.boundingBox) {\n resultFields.minLon = pathField;\n resultFields.maxLon = pathField;\n resultFields.minLat = pathField;\n resultFields.maxLat = pathField;\n delete resultFields.boundingBox;\n }\n\n return resultFields;\n }\n\n function incidentsDetailsQuery(options, callback) {\n return trafficIncidents.incidentsDetails(modifyFields(fields), options, callback);\n }\n\n function buildHandleChain(preserveCluster) {\n return function(data, callback) {\n worldEdge(incidentsDetailsQuery, model(preserveCluster),\n data, callback, addBoundingBoxParameters);\n };\n }\n\n return function(options) {\n options = options || {};\n options.__serviceType = 'traffic';\n return chain(fields, buildHandleChain(options && options.preserveCluster), options);\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/trafficIncidents.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* jshint nomen:false */\ndefine(['leaflet', 't', 'unitFormatConverter/unitFormatConverter', 'services/utils'], function(L, T, units, Utils) {\n 'use strict';\n\n var iconsMapping = {\n 'Unknown': 'danger',\n 'Accident': 'accident',\n 'Fog': 'danger',\n 'Dangerous Conditions': 'danger',\n 'Rain': 'danger',\n 'Ice': 'ice',\n 'Jam': 'incident',\n 'Lane Closed': 'laneclosed',\n 'Road Closed': 'roadclosed',\n 'Road Works': 'roadwork',\n 'Wind': 'danger',\n 'Flooding': 'danger',\n 'Detour': 'danger',\n 'Cluster': ''\n };\n var messageTemplate = new T(\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n ' {{roadNumber}}' +\n '
{{=roadNumber}}
' +\n ' {{/roadNumber}}' +\n '
' +\n '
{{=incidentCategory}}
' +\n ' ' +\n ' {{delaySeconds}}' +\n '
{{=time}}
' +\n ' {{/delaySeconds}}' +\n ' {{lengthMeters}}' +\n '
{{=distance}}
' +\n ' {{/lengthMeters}}' +\n '
' +\n '
' +\n ''\n );\n\n function trafficIncidentMessage(info, isUsingImperialUnits) {\n info.distance = units.formatDistance(info.lengthMeters, isUsingImperialUnits);\n info.time = units.formatTime(info.delaySeconds);\n info.incidentSeverity = info.incidentSeverity || 'unknown';\n info.icon = iconsMapping[info.incidentCategory];\n return messageTemplate.render(info);\n }\n\n function getIconOptions(feature) {\n var severity = feature.properties.incidentSeverity || 'unknown';\n\n return {\n popupAnchor: [0, -5],\n background: { iconSize: [20, 20], iconAnchor: [10, 10], icon: 'icon-circle-' + severity },\n icon: {\n iconSize: [20, 20],\n iconAnchor: [0, 0],\n icon: 'icon-' + iconsMapping[feature.properties.incidentCategory] + '-white'\n },\n content: {\n content: null,\n iconSize: [20, 20],\n iconAnchor: [0, 0],\n style: { 'color': '#fff', 'font-weight': 'bold', 'font-size': '11px' }\n }\n };\n }\n\n L.Marker.IncidentMarker = L.Marker.extend({\n options: {\n imperialUnits: false\n },\n iconsMapping: iconsMapping,\n initialize: function(feature, latlng, options) {\n L.Util.setOptions(this, options);\n L.Marker.prototype.initialize.call(this, latlng, options);\n this.setFeature(feature);\n },\n setFeature(feature) {\n var previousFeature = this.feature || {};\n this.feature = feature;\n this.setLatLng(this.feature.geometry.coordinates.reverse());\n if (!Utils.isEqual(this.feature.properties, previousFeature.properties)) {\n this._updateIcon();\n this._updatePopup();\n }\n },\n _updateIcon: function() {\n this.setIcon(L.svgIcon(getIconOptions(this.feature)));\n },\n _updatePopup: function() {\n var popupContent = trafficIncidentMessage(this.feature.properties, this.options.imperialUnits);\n if (this.getPopup()) {\n this.setPopupContent(popupContent);\n } else {\n this.bindPopup(popupContent, { className: 'incidents-popup' });\n }\n }\n });\n\n return function(feature, latlng, options) {\n if (!feature || !feature.properties) {\n return null;\n }\n\n return new L.Marker.IncidentMarker(feature, latlng, {\n imperialUnits: (options || {}).imperialUnits\n });\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/markers/incidentMarker.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/* jshint nomen:false */\ndefine(['leaflet'], function(L) {\n 'use strict';\n return {\n loadAnimationFactory: function(layer) {\n return function() {\n var opacity = 'opacity',\n back = layer._bgBuffer;\n back.style[L.DomUtil.TRANSITION] = opacity + ' 10';\n back.style[opacity] = 0.1;\n layer._tileContainer.style[opacity] = layer.options.opacity;\n };\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/animator.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['services/utils'], function(Utils) {\n 'use strict';\n return {\n fillInTiles512Options: function(options) {\n if (options.tileSize === 512) {\n options.zoomOffset -= 1;\n options.minZoom = options.minZoom > 0 ? options.minZoom - 1 : 0;\n }\n },\n fillInSubdomainsOptions: function(options) {\n if (Utils.isString(options.subdomains)) {\n options.subdomains = options.subdomains.split('');\n }\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/optionsComplementor.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine([], function() {\n 'use strict';\n var defaultStylesIndex = 0,\n defaultLayersIndex = 0;\n\n function getMap(type) {\n switch (type) {\n case 'vectorTrafficFlow':\n return {\n style: ['vectorTrafficFlow'],\n layer: ['absolute', 'relative', 'relative-delay']\n };\n case 'vectorTrafficIncidents':\n return {\n style: ['vectorTrafficIncidents'],\n layer: ['s1', 's2', 's3', 'night']\n };\n case 'vector':\n default: {\n return {\n style: ['main', 'night'],\n layer: ['basic', 'hybrid', 'labels']\n };\n }\n }\n }\n\n function validateStyleOrLayer(map, options, key) {\n if (!options || !options[key]) {\n return false;\n }\n return map[key].indexOf(options[key]) !== -1;\n }\n\n function copyFromOptionsToTheme(map, options, theme, key) {\n if (validateStyleOrLayer(map, options, key)) {\n theme[key] = options[key];\n }\n }\n\n return {\n getTheme: function(optionsHierarchyArray, type) {\n var i,\n map = getMap(type),\n options,\n theme = {\n style: map.style[defaultStylesIndex],\n layer: map.layer[defaultLayersIndex]\n },\n length = optionsHierarchyArray ? optionsHierarchyArray.length : 0;\n for (i = 0; i < length; ++i) {\n options = optionsHierarchyArray[i];\n copyFromOptionsToTheme(map, options, theme, 'style');\n copyFromOptionsToTheme(map, options, theme, 'layer');\n }\n return theme;\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/mapTheme.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine([], function() {\n 'use strict';\n\n var MAX_VECTOR_ZOOM = 22;\n var MAX_RASTER_ZOOM = 20;\n\n return {\n /**\n * Updates the max zoom property based on given source name.\n * This method takes into account max zoom given in map.options property.\n * @method updateMaxZoom\n * @param {Map} map Map instance\n * @param {String} source one of 'vector' or 'raster'\n */\n updateMaxZoom: function(map, source) {\n var max;\n\n switch (source) {\n case 'raster': {\n max = MAX_RASTER_ZOOM;\n break;\n }\n case 'vector': {\n max = MAX_VECTOR_ZOOM;\n break;\n }\n default:\n return;\n }\n\n if (typeof map.options.maxZoom === 'undefined') {\n map._originalMaxZoom = Infinity;\n } else if (map._originalMaxZoom !== Infinity) {\n map._originalMaxZoom = map.options.maxZoom;\n }\n\n if (typeof map.options.maxZoom === 'number') {\n max = Math.min(max, map._originalMaxZoom);\n }\n\n map.setMaxZoom(max);\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/utils.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Tile layer for Leaflet that use the\n * [Maps API - Raster](https://developer.tomtom.com/maps-api/maps-api-documentation/raster)\n * from TomTom.\n *\n * @example\n * ```js\n * var tomtomLayer = new L.TomTomLayer({key: \"\"});\n * ```\n *\n * @class TomTomLayer\n * @module Map\n * @namespace L\n * @extends L.TileLayer\n * @constructor\n * @param {Object} [options] It accepts all the options that\n * Leaflet's TileLayer\n * allows.\n * The additional options, which are TomTom specific, are described below.\n * @param {String} [options.key] API key that can be obtained from\n * [TomTom's developer portal](https://developer.tomtom.com).\n * When the key is passed on the map's initialization, it is set globally for all the services. It can be\n * overwritten with the `tomtom.key()` method globally or per service with `tomtom..key()`\n * functions. It is also possible to pass a specific key while working with instances of the services.\n * @param {\"main\"|\"night\"} [options.style=\"main\"] The base map style to use\n * @param {\"basic\"|\"hybrid\"|\"labels\"} [options.layer=\"basic\"] The base map's layer to use\n * @param {String} [options.language] Language to be used for map labels. Should be one of supported\n * IETF language tags described\n * [here](https://developer.tomtom.com/maps-api/maps-api-documentation-raster/raster-tile#listOfSupportedLanguages).\n * When data in specified language is not available for a specific label,\n * [default language](https://developer.tomtom.com/maps-api/maps-api-documentation-raster/raster-tile#defaultLanguageAlgorithm)\n * is used.\n */\n/* eslint-enable max-len */\n/* jshint nomen:false */\ndefine(['leaflet', 'security', 'http', 'endpoints', 'display/layers/mapTheme', './animator',\n './optionsComplementor', '../utils', 'requester/analytics', './tileSetTransform'],\nfunction(L, security, http, endpoints, mapTheme, animator, optionsComplementor, Utils, analytics, tileSetTransform) {\n 'use strict';\n\n function tileSizeEstimator(options) {\n return options.detectRetina && L.Browser.retina ? 512 : 256;\n }\n\n L.TomTomLayer = L.TileLayer.extend({\n options: {\n attribution: '',\n minZoom: 2,\n maxZoom: 20,\n subdomains: 'abcd',\n reuseTiles: true,\n detectRetina: true\n },\n /**\n * Name of raster layer. It can be used to differentiate layers.\n * @property name\n * @default \"raster\"\n * @type String\n */\n name: 'raster',\n initialize: function(options) {\n var key, theme, urlParams;\n options = L.setOptions(this, options);\n if (options.bounds) {\n options.bounds = L.latLngBounds(options.bounds);\n }\n security.setKey(options.key);\n key = security.getKey('services/display');\n options.accessToken = key;\n urlParams = (key ? 'key={accessToken}' : '') +\n (options.geopolView ? '&view={geopolView}' : '') +\n (options.language ? '&language={language}' : '') +\n '&tileSize=' + tileSizeEstimator(options);\n this._url = http.protocol() + '://' + endpoints.tileLayer + (urlParams ? '?' + urlParams : '');\n theme = mapTheme.getTheme([options]);\n options.style = theme.style;\n options.layer = theme.layer;\n optionsComplementor.fillInSubdomainsOptions(options);\n\n tileSetTransform.fixTileScale.call(this);\n },\n onAdd: function(map) {\n this._map = map;\n L.TileLayer.prototype.onAdd.call(this, map);\n if (this._animated) {\n this.on('load', animator.loadAnimationFactory(this));\n }\n this._updateOpacity();\n this.bringToBack();\n Utils.updateMaxZoom(map, this.name);\n },\n updateOptions: function(options) {\n var theme = mapTheme.getTheme([this.options, options]);\n this.options.style = theme.style;\n this.options.layer = theme.layer;\n this.redraw();\n },\n createTile: function(coords, done) {\n return analytics.customCreateTile(coords, done, this);\n }\n });\n\n L.tomTomLayer = function(options) {\n return new L.TomTomLayer(options);\n };\n\n return L.tomTomLayer;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/tileLayer.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * @ignore\n * Objects of this class should contain shared routing information. Currently this information consists of start and\n * end points but it might be extended in the future by waypoints. Instances of this class should be created for each\n * map.\n */\n/* jshint nomen:false */\ndefine(['leaflet', '../utils', './routing'], function(L, utils, routing) {\n 'use strict';\n\n var pointProperties = ['startPoint', 'endPoint'];\n var otherProperties = ['jsonRoute'];\n var properties = pointProperties.concat(otherProperties);\n var EVENTS = {\n PROPERTY_VALUE_CHANGED: 'tomtom.propertyvaluechange'\n };\n var RoutingContext;\n\n function isPointProperty(property) {\n return pointProperties.indexOf(property) !== -1;\n }\n\n function propertyHandlerInitializer(property) {\n this[property] = function(propValue) {\n var previousValue, currentValue;\n if (propValue !== undefined) {\n previousValue = this['_' + property];\n currentValue = isPointProperty(property) ? utils.convertToLatLng(propValue) : propValue;\n this['_' + property] = currentValue;\n if (isPointProperty(property)) {\n this._calculateRouteIfPossible();\n }\n\n this.fire(EVENTS.PROPERTY_VALUE_CHANGED,\n {name: property, currentValue: currentValue, previousValue: previousValue});\n return previousValue;\n } else {\n return this['_' + property];\n }\n };\n }\n\n RoutingContext = L.Evented.extend({\n initialize: function() {\n properties.forEach(propertyHandlerInitializer, this);\n },\n _calculateRouteIfPossible: function() {\n var start,\n end,\n startLocation,\n endLocation,\n locations;\n\n start = this.startPoint();\n end = this.endPoint();\n if (!start || !end) {\n return;\n }\n\n startLocation = start.lat + ',' + start.lng;\n endLocation = end.lat + ',' + end.lng;\n locations = startLocation + ':' + endLocation;\n\n routing().locations(locations).go().then(this.jsonRoute.bind(this));\n }\n });\n\n RoutingContext.Events = EVENTS;\n\n return RoutingContext;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/routing/routingContext.js","define(['../converters', '../validators', './routingParameters', '../utils', 'common/parameterApplications'],\n function(converters, validators, getRoutingParameters, utils, parameterApplications) {\n /**\n * A setter and getter for `routeType` attribute.\n *\n * Represent the type of route requested.\n *\n * Notes on specific values:\n * - `fastest` returns the fastest route.\n * - `shortest` returns the shortest route by distance.\n * - `eco` routes balance economy and speed.\n * - thrilling routes include interesting or challenging roads and use as few motorways as possible. You can\n * choose the level of turns included and also the degree of hilliness. See the hilliness and windingness\n * parameters for how to set this. There is a limit of 900 km on routes planned with routeType=thrilling\n * Default value is fastest\n *\n * @method routeType\n * @chainable\n * @param {String} [routeType] Route type to be used during route calculation.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or route type value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'traffic' attribute.\n * Possible values:\n * true (do consider all available traffic information during routing)\n * false (ignore current traffic data during routing). Note that although the current traffic data is\n * ignored during routing, the effect of historic traffic on effective road speeds is still incorporated.\n * Default is true\n *\n * @method traffic\n * @chainable\n * @param {String|Boolean} [traffic] Boolean flag determine if traffic data should be used to calculate the\n * route.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Boolean} Method returns the service instance allowing chaining or traffic value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for `avoid` attribute.\n *\n * Specifies something that the route calculation should try to avoid when determining the route.\n * Can be specified multiple times. Possible values:\n * - `tollRoads` avoids toll roads.\n * - `motorways` avoids motorways.\n * - `ferries` avoids ferries.\n * - `unpavedRoads` avoids unpaved roads.\n * - `carpools` avoids routes that require use of carpool (HOV/ High Occupancy Vehicle) lanes.\n * - `alreadyUsedRoads` avoids using the same road multiple times.\n *\n * Most useful in conjunction with `routeType=thrilling`.\n *\n * @method avoid\n * @chainable\n * @param {Array|String} [avoid] Specifies something that the route calculation should try to avoid when\n * determining the route\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Array} Method returns the service instance allowing chaining or street number value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'departAt' attribute.\n * The date and time of departure from the origin point.\n * Departure times apart from now must be specified as a dateTime.\n * When a time zone offset is not specified, it will be assumed to be that of the origin point.\n * The departAt value must be in the future. The departAt parameter cannot be used in conjunction with\n * arriveAt.\n *\n * @method departAt\n * @chainable\n * @param {String} [departAt] The properly formatted date with time or 'now' value. Date cannot be in the\n * past.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n\n /**\n * A setter and getter for 'arriveAt' attribute.\n * The date and time of arrival at the destination point.\n * It must be specified as a dateTime.\n * When a time zone offset is not specified it will be assumed to be that of the destination point.\n * The arriveAt value must be in the future. The arriveAt parameter cannot be used in conjunction with\n * departAt.\n *\n * @method arriveAt\n * @chainable\n * @param {String} [arriveAt] The properly formatted date with time value. Date cannot be in the past.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n\n /**\n * A setter and getter for 'travelMode' attribute.\n * The mode of travel for the requested route. Possible values: _car, truck, taxi, bus, van, motorcycle,\n * bicycle, pedestrian_ Note that the requested travelMode may not be available for the entire route. Where\n * the requested travelMode is not available for a particular section, the element of the\n * response for that section will be other.\n *\n * @method travelMode\n * @chainable\n * @param {String} [travelMode] The primary mean of transportation to be used while routing.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n\n /**\n * A setter and getter for 'hilliness' attribute.\n * Degree of hilliness for thrilling route. Possible values: low, normal, high\n * This parameter can only be used in conjunction with routeType thrilling.\n *\n * @method hilliness\n * @chainable\n * @param {String} [hilliness] The level of hilliness on a thrilling route.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n\n /**\n * A setter and getter for 'windingness' attribute.\n * Level of turns for thrilling route. Possible values: low, normal, high\n * This parameter can only be used in conjunction with routeType thrilling.\n *\n * @method windingness\n * @chainable\n * @param {String} [windingness] The level of windingness on a thrilling route.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n\n /**\n * A setter and getter for 'computeTravelTimeFor' attribute.\n * Specifies whether to return additional travel times using different types of traffic information (none,\n * historic, live) as well as the default best-estimate travel time. Possible values:\n * * none - do not compute additional travel times,\n * * all - compute travel times for all types of traffic information. Specifying all results in the fields\n * noTrafficTravelTimeInSeconds, historicTrafficTravelTimeInSeconds and\n * liveTrafficIncidentsTravelTimeInSeconds being included in the summaries in the route response.\n *\n * @method computeTravelTimeFor\n * @chainable\n * @param {String} [computeTravelTimeFor] Setting _all_ provides additional information regards travel\n * times.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleEngineType' attribute.\n * Engine type of the vehicle. This parameter is currently only considered for travelMode truck. Valid\n * options are: _combustion, electric_\n *\n * @method vehicleEngineType\n * @chainable\n * @param {String} [vehicleEngineType] The vehicle engine type.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleMaxSpeed' attribute.\n * Maximum speed of the vehicle in km/hour. A value of 0 means that an appropriate value for the vehicle\n * will be determined and applied during route planning. A non-zero value may be overridden during route\n * planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleMaxSpeed\n * @chainable\n * @param {Number} [vehicleMaxSpeed] The maximal allowed vehicle speed in km/h.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleWeight' attribute.\n * Weight of the vehicle in kg. A value of 0 means that weight restrictions are not considered during route\n * planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleWeight\n * @chainable\n * @param {Number} [vehicleWeight] The vehicle weight in kg.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleAxleWeight' attribute.\n * Weight per axle of the vehicle in kg. A value of 0 means that weight restrictions per axle are not\n * considered during route planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleAxleWeight\n * @chainable\n * @param {Number} [vehicleAxleWeight] The vehicle axle wight in kg.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleLength' attribute.\n * Length of the vehicle in meters. A value of 0 means that length restrictions are not considered during\n * route planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleLength\n * @chainable\n * @param {Number} [vehicleLength] The vehicle length in m.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleWidth' attribute.\n * Width of the vehicle in meters. A value of 0 means that width restrictions are not considered during\n * route planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleWidth\n * @chainable\n * @param {Number} [vehicleWidth] The vehicle width in m.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleHeight' attribute.\n * Height of the vehicle in meters. A value of 0 means that height restrictions are not considered\n * during route planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleHeight\n * @chainable\n * @param {Number} [vehicleHeight] The vehicle height in m.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleCommercial' attribute.\n * Vehicle is used for commercial purposes and thus may not be allowed to drive on some roads. This\n * parameter is currently only considered for travelMode truck.\n *\n * @method vehicleCommercial\n * @chainable\n * @param {Boolean} [vehicleCommercial] True if vehicle is used for commercial purposes.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n /**\n * A setter and getter for 'vehicleLoadType' attribute.\n * Types of cargo that may be classified as hazardous materials and restricted from some roads. Available\n * vehicleLoadType values are US Hazmat classes 1 through 9, plus generic classifications for use in other\n * countries.\n *\n * __Use these for routing in US__\n * * USHazmatClass1 Explosives\n * * USHazmatClass2 Compressed gas\n * * USHazmatClass3 Flammable liquids\n * * USHazmatClass4 Flammable solids\n * * USHazmatClass5 Oxidizers\n * * USHazmatClass6 Poisons\n * * USHazmatClass7 Radioactive\n * * USHazmatclass8 Corrosives\n * * USHazmatClass9 Miscellaneous\n *\n * __Use these for routing in all other countries__\n * * otherHazmatExplosive Explosives\n * * otherHazmatGeneral Miscellaneous\n * * otherHazmatHarmfulToWater Harmful to water\n *\n * This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleLoadType\n * @chainable\n * @param {Array|String} [vehicleLoadType] The array of truck cargo classification.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Array} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n\n var fields = getRoutingParameters(['locations', 'maxAlternatives', 'instructionsType',\n 'language', 'computeBestOrder', 'routeRepresentation', 'vehicleHeading', 'report',\n 'callback', 'minDeviationTime', 'minDeviationDistance', 'alternativeType'\n ]);\n\n var latLonFieldDescription = {\n validator: validators.arrayOf({\n point: {\n validator: validators.objectOf({\n latitude: {\n validator: validators.latitude,\n required: true\n },\n longitude: {\n validator: validators.longitude,\n required: true\n }\n })\n }\n }),\n converter: converters.arrayOf({\n point: {\n converter: converters.objectOf({\n latitude: {\n converter: converters.latitude,\n required: true\n },\n longitude: {\n converter: converters.longitude,\n required: true\n }\n })\n }\n }),\n required: true,\n application: parameterApplications.POST\n };\n\n /**\n * A setter and getter for 'origins' attribute.\n * A set of origin locations represented by points (lat,lon). At least one origin is required.\n *\n * @method origins\n * @chainable\n * @param {Array} [origins] A set of origin locations represented by points (lat,lon).\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n fields.origins = latLonFieldDescription;\n\n /**\n * A setter and getter for 'destinations' attribute.\n * A set of destination locations represented by points (lat,lon). At least one destination is required.\n *\n * @method destinations\n * @chainable\n * @param {Array} [destinations] A set of origin locations represented by points (lat,lon).\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n fields.destinations = latLonFieldDescription;\n\n return function(fieldsToSkip) {\n var result = utils.clone(fields);\n if (fieldsToSkip instanceof Array) {\n fieldsToSkip.forEach(function(field) {\n delete result[field];\n });\n }\n\n return result;\n };\n });\n\n\n\n// WEBPACK FOOTER //\n// ./services/routing/matrixParameters.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['./commonRoutingParameters', '../utils', '../validators', '../postValidators', '../converters',\n 'common/parameterApplications'],\nfunction(commonRoutingParameters, utils, validators, postValidators, converters, parameterApplications) {\n /**\n * @class Routing\n * @module Services\n */\n\n var routingParameters = {\n\n /**\n * A setter and getter for 'locations' attribute.\n *\n * Locations through which the route is calculated. The\n * following constraints apply:\n * * At least two locations must be provided.\n * * The first location in the sequence defines the origin and must be of type point.\n * * The last location in the sequence defines the destination and must be of type point.\n * * One or more optional intermediate locations (known as waypoints) may be provided:\n * * The maximum allowed number of waypoints is 50, reduced to 20 when computeBestOrder is true.\n * * A point waypoint results in an extra leg in the response, a circle waypoint does not.\n * * Circle waypoints cannot be used when computeBestOrder is true.\n *\n * The points or circles that will be used to calculate the route. Following input types are allowed:\n * 1. string with Colon-delimited locations. For example: '52.50931,13.42936:52.50274,13.43872'.\n * 2. array containing locations\n * location can be defined as string,object or array\n *\n * @method locations\n * @chainable\n * @param {String|Array} [locations] This is the specified locations for route calculation.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or converted locations\n * value if argument is omitted.\n */\n locations: {\n validator: validators.routingLocations,\n converter: converters.routingLocations,\n required: true,\n application: parameterApplications.PATH\n },\n /**\n * A setter and getter for 'maxAlternatives' attribute.\n *\n * Number of desired alternative routes to be calculated. The value provided:\n * must be an integer in the range 0-5\n * using a value greater than 0 in conjunction with computeBestOrder set to true is not allowed\n * fewer alternative routes may be returned if either fewer alternatives exist or the requested number of\n * alternatives is larger than the service can calculate Default value is 0, Maximum value is 5\n *\n * @method maxAlternatives\n * @chainable\n * @param {Number} [maxAlternatives] To restrict maximum alternative routes to be calculated.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or maxAlternatives value\n * if argument is omitted.\n */\n maxAlternatives: {\n validator: validators.numberInInterval(0, 5)\n },\n\n /**\n * A setter and getter for 'instructionsType' attribute.\n *\n * If specified, guidance instructions will be returned (if available).\n *\n * Possible values:\n * * _coded_ : returns raw instruction data without human-readable messages.\n * * _text_ : returns raw instructions data with human-readable messages in plain text.\n * * _tagged_ : returns raw instruction data with tagged human-readable messages to permit formatting.\n *\n * Note that the instructionsType parameter cannot be used in conjunction with routeRepresentation=none.\n * If alternative routes are requested, instructions will be generated for each route returned.\n *\n * @method instructionsType\n * @chainable\n * @param {String} [instructionsType] If a street number is sent in along with the request, the response\n * may include the side of the street (Left/Right) and also an offset position for that street number.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or street number value if\n * argument is omitted.\n */\n instructionsType: {\n validator: validators.oneOfValue(['coded', 'text', 'tagged'], 'instructions type')\n },\n /* eslint-disable max-len */\n /**\n * A setter and getter for 'language' attribute.\n *\n * The language parameter determines the language of the guidance messages. It does not affect proper nouns\n * (the names of streets, plazas, etc.) It has no effect when instructionsType=coded. Allowed values are (a\n * subset of) the IETF language tags described here. The currently supported languages are listed in the\n * supported languages section:\n *\n * https://developer.tomtom.com/routing-api/routing-api-documentation-routing/calculate-route#supportedlanguages\n *\n * @method language\n * @chainable\n * @param {String} [language] The language value\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n /* eslint-enable max-len*/\n language: {\n validator: validators.routingGuidanceLanguage,\n converter: converters.routingGuidanceLanguage\n },\n /**\n * A setter and getter for 'computeBestOrder' attribute.\n *\n * Allows to reorder the route waypoints to reduce\n * the route length. Yields best results when used in conjunction with routeType shortest. Possible values:\n * * true (compute a better order, if possible; not allowed to be used in conjunction with\n * maxAlternatives value greater than 0; not allowed to be used in conjunction with circle waypoints).\n * The response will include the optimized waypoint indices. This feature can be used with a maximum of\n * 20 route waypoints.\n * * false (use the locations in the given order). Not allowed to be used in conjunction with\n * routeRepresentation none.\n *\n * @method computeBestOrder\n * @chainable\n * @param {Boolean} [computeBestOrder] Flag to reorder the route waypoints to reduce the route length\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Boolean} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n computeBestOrder: {\n validator: validators.bool\n },\n\n /**\n * A setter and getter for 'routeRepresentation' attribute.\n *\n * Specifies the representation of the set of routes provided as response. Possible values:\n * * _polyline_ includes routes in the response.\n * * _none_ includes only the optimized waypoint indices but does not include the routes in the response.\n * * _summaryOnly_ includes only route summary in the response\n *\n * This parameter value _none_ can only be used in conjunction with computeBestOrder true.\n *\n * @method routeRepresentation\n * @chainable\n * @param {String} [routeRepresentation] Allows the routing response to omit the actual route and give only\n * the best ordered waypoints.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n routeRepresentation: {\n validator: validators.oneOfValue(['polyline', 'none', 'summaryOnly'], 'route representation')\n },\n\n /**\n * A setter and getter for 'computeTravelTimeFor' attribute.\n *\n * Specifies whether to return additional travel times using different types of traffic information (none,\n * historic, live) as well as the default best-estimate travel time. Possible values:\n * * none - do not compute additional travel times,\n * * all - compute travel times for all types of traffic information. Specifying all results in the fields\n * noTrafficTravelTimeInSeconds, historicTrafficTravelTimeInSeconds and\n * liveTrafficIncidentsTravelTimeInSeconds being included in the summaries in the route response.\n *\n * @method computeTravelTimeFor\n * @chainable\n * @param {String} [computeTravelTimeFor] Setting to _all_ provides additional information regards\n * travel times.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n computeTravelTimeFor: {\n validator: validators.oneOfValue(['none', 'all'], 'compute travel time for')\n },\n\n /**\n * A setter and getter for 'vehicleHeading' attribute.\n *\n * The directional heading of the vehicle in degrees starting at true North and continuing in clockwise\n * direction. North is 0 degrees, east is 90 degrees, south is 180 degrees, west is 270 degrees. Possible\n * values 0-359.\n *\n * @method vehicleHeading\n * @chainable\n * @param {Number} [vehicleHeading] The angle in which the vehicle is heading.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleHeading: {\n validator: validators.integerInInterval(-1, 359)\n },\n\n /**\n * Sets or gets the value of the minDeviationDistance option.\n *\n * Defines at least how far **in meters** the alternative routes have to follow the reference route.\n *\n * This option cannot be used in conjunction with {{#crossLink \"Routing/arriveAt:method\"}}{{/crossLink}}.\n *\n * @method minDeviationDistance\n * @chainable\n * @param {Number} [newValue] Meters represented as a positive integer number\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Number} The same service instance or the current option value if no argument was given\n */\n minDeviationDistance: {\n validator: validators.naturalInteger,\n postValidator: [\n postValidators.firstParamCannotBeUsedWithSecond('minDeviationDistance', 'arriveAt'),\n postValidators.requiresDependantParameter('minDeviationDistance', 'supportingPoints')\n ]\n },\n\n /**\n * Sets or gets the value of the minDeviationTime option.\n *\n * Defines at least how far **in time (seconds)** the alternative routes have to follow reference route.\n *\n * This option cannot be used in conjunction with {{#crossLink \"Routing/arriveAt:method\"}}{{/crossLink}}.\n *\n * @method minDeviationTime\n * @chainable\n * @param {Number} [newValue] Seconds represented as a positive integer number\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Number} The same service instance or the current option value if no argument was given\n */\n minDeviationTime: {\n validator: validators.naturalInteger,\n postValidator: [\n postValidators.firstParamCannotBeUsedWithSecond('minDeviationTime', 'arriveAt'),\n postValidators.requiresDependantParameter('minDeviationTime', 'supportingPoints')\n ]\n\n },\n\n /* eslint-disable max-len */\n /**\n * A getter and setter for the 'supportingPoints' attribute.\n *\n * Can be used to set supporting points for constructing (or reconstructing) a route and for\n * calculating alternative routes to a base route. The provided sequence of supporting points\n * is used as input for route reconstruction.\n *\n * Pseudo examples:\n * * If the base route is A > B and we include a supporting point C, the result will be A > C > B;\n * * Supporting points can be used to reconstruct entirely a route you previously had:\n * Let's illustrate the problem. To go from A > B you received A > C > D > E > B. If later, you try to generate\n * the same route (A > B) you might get different middle points, so if you need to generate the exact same route\n * you previously had you can do something like routing().locations(A, B).supportingPoints(C, D, E)\n *\n * You can use one of the following input formats to define the supporting points:\n * * String: '52.3,4.8' or '52.3,4.8:52.37,4.87'\n * * String[]: ['52.3,4.8:52.37,4.87', '52.3,4.8:52.37,4.87']\n * * Object: {lat: 52.3, lon: 4.8} or {lat: 53.3, lng: 5.8} or {x: 53.3, y: 5.8} or {latitude: 53.3, longitude: 5.8}\n * * Object[]: [{lat: 52.3, lon: 4.8}] or [{lat: 53.3, lng: 5.8}]\n *\n * How 'Supporting Points' differ from 'Waypoints?' - Waypoints are points where the calculated route will go through, but\n * the resulting route might be different from search to search, the waypoints order might not be necessarilly respected\n * when calculating the best route, and finally, there is a limit to the number of waypoints you can use in a route calculation.\n * Supporting points can be used to contruct a previous route entirely, or parts of it, using the previous generated points,\n * meaning that there is no limit to the number of points, and the order of these points will be respected.\n *\n * For more information please refer to the [Routing API Docs](https://developer.tomtom.com/routing-api/routing-api-documentation-routing/calculate-route)\n *\n * @method supportingPoints\n * @chainable\n * @param {String|String[]|Object|Object[]} [locations] Supporting points for route calculation.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or converted locations\n * value if argument is omitted.\n *\n * @example\n * ```js\n * tomtom.routing()\n * .locations('52.3,4.8:52.37,4.87')\n * .supportingPoints('52.33357,4.852')\n * .go()\n * .then(function(routeGeoJson) {\n * console.log(routeGeoJson);\n * });\n * ```\n */\n /* eslint-enable max-len */\n supportingPoints: {\n converter: converters.supportingPoints,\n application: parameterApplications.POST\n },\n\n /**\n * A getter and setter for the 'sectionType' attribute.\n *\n * Specifies which of the section types is reported in the route response.\n *\n * Possible values:\n * - carTrain: car or train sections in the route\n * - ferry: ferry sections\n * - tunnel: tunnel sections\n * - motorway: motorway sections\n * - tollRoad: payed toll sections\n * - pedestrian: sections which are suited for pedestrians only\n * - tollVignette: sections which require a toll vignette to be present\n * - country: returns country sub sections in the route\n * - travelMode: sections in relation to the request parameter travelMode\n * - traffic: returns traffic sub sections in the route, values include: JAM, ROAD_WORK,\n * ROAD_CLOSURE and OTHER\n *\n * Default value is travelMode.\n * @method sectionType\n * @chainable\n * @param {String[]} [sectionType] Array of section types\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String[]} The same service instance or the current option value if no argument was given\n */\n sectionType: {\n validator: validators.arrayOfValues([\n 'carTrain', 'country', 'ferry', 'motorway', 'pedestrian', 'tollRoad', 'tollVignette',\n 'travelMode', 'tunnel', 'traffic'\n ], 'sectionType'),\n converter: converters.arrayOfStrings\n },\n\n /**\n * A setter and getter for 'alternativeType' attribute.\n *\n * Specifies the alternative type of the calculated alternatives compared to the reference route.\n * Possible values are:\n *\n * * anyRoute: allow any alternative route to be returned regardless of how it compares to the reference\n * route in terms of optimality.\n * * betterRoute: returns an alternative route only if it is better than the reference route according\n * to the given planning criteria.\n *\n * Can only be used when reconstructing a route.\n *\n * @method alternativeType\n * @chainable\n * @param {String} [alternativeType] anyRoute or betterRoute value.\n * @throws {TypeError} if the given argument is not one of the accepted values described above\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n alternativeType: {\n validator: validators.oneOfValue(['anyRoute', 'betterRoute'], 'alternativeType'),\n postValidator: postValidators.requiresDependantParameter('alternativeType', 'supportingPoints')\n }\n };\n\n routingParameters = utils.extend(routingParameters, commonRoutingParameters);\n\n return function(fieldsToSkip) {\n var result = utils.clone(routingParameters);\n if (fieldsToSkip instanceof Array) {\n fieldsToSkip.forEach(function(field) {\n delete result[field];\n });\n }\n\n return result;\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/routing/routingParameters.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine(['../validators', '../converters', '../postValidators', 'common/parameterApplications'],\n /**\n * @private\n * @class CommonRoutingParameters\n * @module Services\n * @uses KeyMixin\n */\n\n function(validators, converters, postValidators, parameterApplications) {\n\n var fields = {\n key: {\n validator: validators.string\n },\n\n /**\n * A setter and getter for 'routeType' attribute.\n * The type of route requested. Notes on specific values:\n * * fastest returns the fastest route.\n * * shortest returns the shortest route by distance.\n * * eco routes balance economy and speed.\n * * thrilling routes include interesting or challenging roads and use as few motorways as possible.\n * You can choose the level of turns included and also the degree of hilliness. See the hilliness and\n * windingness parameters for how to set this. There is a limit of 900 km on routes planned with\n * routeType=thrilling\n *\n * Default value is fastest\n *\n * @method routeType\n * @chainable\n * @param {String} [routeType] Route type to be used during route calculation.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or route type value if\n * argument is omitted.\n */\n routeType: {\n validator: validators.oneOfValue(['fastest', 'shortest', 'eco', 'thrilling'], 'route type')\n },\n\n /**\n * A setter and getter for 'traffic' attribute.\n * \n * Possible values:\n * - true (just considers all available traffic information during routing)\n * - false (ignores current traffic data during routing). Note that although the current traffic data is\n * ignored during routing, the effect of historic traffic on effective road speeds is still incorporated.\n * \n * Default is true\n *\n * @method traffic\n * @chainable\n * @param {Boolean} [traffic] Boolean flag determines if traffic data should be used to calculate the\n * route.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Boolean} Method returns the service instance allowing chaining or traffic value if\n * argument is omitted.\n */\n traffic: {\n validator: validators.bool\n },\n\n /**\n * A setter and getter for 'avoid' attribute.\n * \n * Specifies something that the route calculation should try to avoid when determining the route. Can be\n * specified multiple times. Possible values:\n * * tollRoads: avoids toll roads.\n * * motorways: avoids motorways.\n * * ferries: avoids ferries.\n * * unpavedRoads: avoids unpaved roads.\n * * carpools: avoids routes that require use of carpool (HOV/ High Occupancy Vehicle) lanes.\n * * alreadyUsedRoads: avoids using the same road multiple times.\n *\n * Most useful in conjunction with routeType=thrilling.\n *\n * @method avoid\n * @chainable\n * @param {Array|String} [avoid] Specifies something that the route calculation should try to avoid when\n * determining the route\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Array} Method returns the service instance allowing chaining or street number value if\n * argument is omitted.\n */\n avoid: {\n validator: validators.arrayOfValues(['tollRoads', 'motorways', 'ferries', 'unpavedRoads', 'carpools',\n 'alreadyUsedRoads'\n ], 'avoid'),\n converter: converters.arrayOfStrings\n },\n\n /**\n * A setter and getter for 'departAt' attribute.\n * \n * The date and time of departure from the origin point.\n * Departure times apart from now must be specified as a dateTime.\n * When a time zone offset is not specified, it will be assumed to be that of the origin point.\n * The departAt value must be in the future. The departAt parameter cannot be used in conjunction with\n * arriveAt.\n *\n * @method departAt\n * @chainable\n * @param {String} [departAt] The properly formatted date with time or 'now' value. Date cannot be in the\n * past.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n departAt: {\n validator: validators.departAt,\n converter: converters.dateTime\n },\n\n /**\n * A setter and getter for 'arriveAt' attribute.\n * \n * The date and time of arrival at the destination point.\n * It must be specified as a dateTime.\n * When a time zone offset is not specified it will be assumed to be that of the destination point.\n * The arriveAt value must be in the future. The arriveAt parameter cannot be used in conjunction with\n * departAt.\n *\n * @method arriveAt\n * @chainable\n * @param {String} [arriveAt] The properly formatted date with time value. Date cannot be in the past.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n arriveAt: {\n validator: validators.arriveAt,\n converter: converters.dateTime\n },\n\n /**\n * A setter and getter for 'travelMode' attribute.\n * \n * The travel mode for the requested route. \n * \n * Possible values: _car, truck, taxi, bus, van, motorcycle, bicycle, pedestrian_ \n * \n * Note that the requested travelMode may not be available for the entire route. Where\n * the requested travelMode is not available for a particular section, the element of the\n * response for that section will be other.\n *\n * @method travelMode\n * @chainable\n * @param {String} [travelMode] The primary mean of transportation to be used while routing.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n travelMode: {\n validator: validators.oneOfValue(['car', 'truck', 'taxi', 'bus', 'van', 'motorcycle', 'bicycle',\n 'pedestrian'\n ], 'travel mode')\n },\n\n /**\n * A setter and getter for 'hilliness' attribute.\n * \n * Degree of hilliness for thrilling route. Possible values: low, normal, high\n * This parameter can only be used in conjunction with routeType thrilling.\n *\n * @method hilliness\n * @chainable\n * @param {String} [hilliness] The level of hilliness on a thrilling route.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n hilliness: {\n validator: validators.oneOfValue(['low', 'normal', 'high'], 'hilliness')\n },\n\n /**\n * A setter and getter for 'windingness' attribute.\n * \n * Level of turns for thrilling route. Possible values: low, normal, high\n * This parameter can only be used in conjunction with routeType thrilling.\n *\n * @method windingness\n * @chainable\n * @param {String} [windingness] The level of windingness on a thrilling route.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n windingness: {\n validator: validators.oneOfValue(['low', 'normal', 'high'], 'windingness')\n },\n\n /**\n * A setter and getter for 'report' attribute.\n * \n * Specifies which data should be reported for diagnosis purposes. \n * \n * Possible values: _effectiveSettings_ \n * Reports the effective parameters or data used when calling the API.\n * \n * In the case of defaulted parameters the default will be reflected where the parameter was not specified\n * by the caller.\n *\n * @method report\n * @chainable\n * @param {String} [report] Level of verbose answer from service, useful for debugging purposes.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or language if argument\n * is omitted.\n */\n report: {\n validator: validators.oneOfValue(['effectiveSettings'], 'report')\n },\n\n /**\n * A setter and getter for 'vehicleEngineType' attribute.\n * \n * Engine type of the vehicle. This parameter is currently only considered for travelMode truck. Valid\n * options are: _combustion, electric_\n *\n * @method vehicleEngineType\n * @chainable\n * @param {String} [vehicleEngineType] The vehicle engine type.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleEngineType: {\n validator: validators.oneOfValue(['combustion', 'electric'], 'vehicle engine type')\n },\n\n /**\n * A setter and getter for 'vehicleMaxSpeed' attribute.\n * \n * Maximum speed of the vehicle in km/hour. A value of 0 means that an appropriate value for the vehicle\n * will be determined and applied during route planning. A non-zero value may be overridden during route\n * planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleMaxSpeed\n * @chainable\n * @param {Number} [vehicleMaxSpeed] The maximal allowed vehicle speed in km/h.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleMaxSpeed: {\n validator: validators.naturalInteger\n },\n\n /**\n * A setter and getter for 'vehicleWeight' attribute.\n * \n * Weight of the vehicle in kg. A value of 0 means that weight restrictions are not considered during route\n * planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleWeight\n * @chainable\n * @param {Number} [vehicleWeight] The vehicle weight in kg.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleWeight: {\n validator: validators.naturalInteger,\n postValidator: postValidators.vehicleWeight\n },\n\n /**\n * A setter and getter for 'vehicleAxleWeight' attribute.\n * \n * Weight per axle of the vehicle in kg. A value of 0 means that weight restrictions per axle are not\n * considered during route planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleAxleWeight\n * @chainable\n * @param {Number} [vehicleAxleWeight] The vehicle axle weight in kg.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleAxleWeight: {\n validator: validators.naturalInteger\n },\n\n /**\n * A setter and getter for 'vehicleLength' attribute.\n * \n * Length of the vehicle in meters. A value of 0 means that length restrictions are not considered during\n * route planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleLength\n * @chainable\n * @param {Number} [vehicleLength] The vehicle length in m.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleLength: {\n validator: validators.numberInInterval(0, Number.MAX_VALUE)\n },\n\n /**\n * A setter and getter for 'vehicleWidth' attribute.\n * \n * Width of the vehicle in meters. A value of 0 means that width restrictions are not considered during\n * route planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleWidth\n * @chainable\n * @param {Number} [vehicleWidth] The vehicle width in m.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleWidth: {\n validator: validators.numberInInterval(0, Number.MAX_VALUE)\n },\n\n /**\n * A setter and getter for 'vehicleHeight' attribute.\n * \n * Height of the vehicle in meters. A value of 0 means that height restrictions are not considered\n * during route planning. This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleHeight\n * @chainable\n * @param {Number} [vehicleHeight] The vehicle height in m.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleHeight: {\n validator: validators.numberInInterval(0, Number.MAX_VALUE)\n },\n\n /**\n * A setter and getter for 'vehicleCommercial' attribute.\n * \n * Vehicle is used for commercial purposes and thus may not be allowed to drive on some roads. This\n * parameter is currently only considered for travelMode truck.\n *\n * @method vehicleCommercial\n * @chainable\n * @param {Boolean} [vehicleCommercial] True if vehicle is used for commercial purposes.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleCommercial: {\n validator: validators.bool\n },\n\n /**\n * A setter and getter for 'vehicleLoadType' attribute.\n * \n * Types of cargo that may be classified as hazardous materials and restricted from some roads. Available\n * vehicleLoadType values are US Hazmat classes 1 through 9, plus generic classifications for use in other\n * countries.\n *\n * __Use these for routing in US__\n * * USHazmatClass1 Explosives\n * * USHazmatClass2 Compressed gas\n * * USHazmatClass3 Flammable liquids\n * * USHazmatClass4 Flammable solids\n * * USHazmatClass5 Oxidizers\n * * USHazmatClass6 Poisons\n * * USHazmatClass7 Radioactive\n * * USHazmatclass8 Corrosives\n * * USHazmatClass9 Miscellaneous\n *\n * __Use these for routing in all other countries__\n * * otherHazmatExplosive Explosives\n * * otherHazmatGeneral Miscellaneous\n * * otherHazmatHarmfulToWater Harmful to water\n *\n * This parameter is currently only considered for travelMode truck.\n *\n * @method vehicleLoadType\n * @chainable\n * @param {Array|String} [vehicleLoadType] The array of truck cargo classification.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Array} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n vehicleLoadType: {\n validator: validators.arrayOfValues(['USHazmatClass1', 'USHazmatClass2', 'USHazmatClass3',\n 'USHazmatClass4', 'USHazmatClass5', 'USHazmatClass6', 'USHazmatClass7', 'USHazmatClass8',\n 'USHazmatClass9', 'otherHazmatExplosive', 'otherHazmatGeneral', 'otherHazmatHarmfulToWater'\n ],\n 'vehicle load type'),\n converter: converters.arrayOfStrings\n },\n /**\n * A setter and getter for 'constantSpeedConsumptionInLitersPerHundredkm' attribute.\n * \n * Specifies the speed-dependent component of consumption.\n * Provided as an unordered list of speed/consumption-rate pairs. The list defines points on a\n * consumption curve.\n * Consumption rates for speeds not in the list are found as follows:\n * * by linear interpolation, if the given speed lies in between two speeds in the list\n * * by linear extrapolation otherwise, assuming a constant (ΔConsumption/ΔSpeed) determined by\n * the nearest two points in the list.\n *\n * The list must contain between 1 and 25 points (inclusive), and may not\n * contain duplicate points for the same speed. If it only contains a single point,\n * then the consumption rate of that point is used without further processing.\n * Consumption specified for the largest speed must be greater than or equal to that of the\n * penultimate largest speed. This ensures that extrapolation does not lead to negative consumption rates.\n * Similarly, consumption values specified for the two smallest speeds in the list cannot lead to a\n * negative consumption rate for any smaller speed.\n * The minimum and maximum values described here refer to the valid range for the consumption values\n * (expressed in l/100km).\n * @method constantSpeedConsumptionInLitersPerHundredkm\n * @chainable\n * @param {Array} [constantSpeedConsumptionInLitersPerHundredkm] Colon-delimited list of\n * CombustionConstantSpeedConsumptionPairs, e.g. array of such pairs \"60,7\".\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Array} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n constantSpeedConsumptionInLitersPerHundredkm: {\n postValidator: postValidators.constantSpeedConsumption('combustion'),\n converter: converters.constantSpeedConsumption\n },\n /**\n * A setter and getter for 'currentFuelInLiters' attribute.\n * \n * Specifies the current supply of fuel in liters.\n * @method currentFuelInLiters\n * @chainable\n * @param {Number} [currentFuelInLiters]\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n currentFuelInLiters: {\n postValidators: postValidators.floatAndEngineType('combustion', 'currentFuelInLiters')\n },\n /**\n * A setter and getter for 'auxiliaryPowerInLitersPerHour' attribute.\n * \n * Specifies the amount of fuel consumed for sustaining auxiliary systems of the vehicle, in liters\n * per hour. It can be used to specify consumption due to devices and systems such as AC systems, radio,\n * heating, etc.\n * @method auxiliaryPowerInLitersPerHour\n * @chainable\n * @param {Number} [auxiliaryPowerInLitersPerHour]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n auxiliaryPowerInLitersPerHour: {\n postValidators: postValidators.floatAndEngineType('combustion', 'auxiliaryPowerInLitersPerHour')\n },\n /**\n * A setter and getter for 'fuelEnergyDensityInMJoulesPerLiter' attribute.\n * \n * Specifies the amount of chemical energy stored in one liter of fuel in megajoules (MJ).\n * It is used in conjunction with the *Efficiency parameters for conversions between saved\n * or consumed energy and fuel.\n * For example, energy density is 34.2 MJ/l for gasoline, and 35.8 MJ/l for Diesel fuel.\n * @method fuelEnergyDensityInMJoulesPerLiter\n * @chainable\n * @param {Number} [fuelEnergyDensityInMJoulesPerLiter]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n fuelEnergyDensityInMJoulesPerLiter: {\n postValidator: postValidators.fuelEnergyDensityInMJoulesPerLiter\n },\n /**\n * A setter and getter for 'accelerationEfficiency' attribute.\n * \n * Specifies the efficiency of converting chemical energy stored in fuel to kinetic energy when the\n * vehicle accelerates (i.e. KineticEnergyGained/ChemicalEnergyConsumed).\n * ChemicalEnergyConsumed is obtained by converting consumed fuel to chemical energy using\n * fuelEnergyDensityInMJoulesPerLiter.\n * @method accelerationEfficiency\n * @chainable\n * @param {Number} [accelerationEfficiency]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n accelerationEfficiency: {\n postValidator: postValidators.efficiencyParameter('accelerationEfficiency', 'decelerationEfficiency')\n },\n /**\n * A setter and getter for 'decelerationEfficiency' attribute.\n * \n * Specifies the efficiency of converting kinetic energy to saved (not consumed) fuel when the\n * vehicle decelerates (i.e. ChemicalEnergySaved/KineticEnergyLost).\n * ChemicalEnergySaved is obtained by converting saved (not consumed) fuel to energy using\n * fuelEnergyDensityInMJoulesPerLiter.\n * @method decelerationEfficiency\n * @chainable\n * @param {Number} [decelerationEfficiency]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n decelerationEfficiency: {\n postValidator: postValidators.efficiencyParameter('decelerationEfficiency', 'accelerationEfficiency')\n },\n /**\n * A setter and getter for 'uphillEfficiency' attribute.\n * \n * Specifies the efficiency of converting chemical energy stored in fuel to potential energy\n * when the vehicle gains elevation (i.e. PotentialEnergyGained/ChemicalEnergyConsumed).\n * ChemicalEnergyConsumed is obtained by converting consumed fuel to chemical energy using\n * fuelEnergyDensityInMJoulesPerLiter.\n * @method uphillEfficiency\n * @chainable\n * @param {Number} [uphillEfficiency]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n uphillEfficiency: {\n postValidator: postValidators.efficiencyParameter('uphillEfficiency', 'downhillEfficiency')\n },\n /**\n * A setter and getter for 'downhillEfficiency' attribute.\n * \n * Specifies the efficiency of converting potential energy to saved (not consumed) fuel when the\n * vehicle loses elevation (i.e. ChemicalEnergySaved/PotentialEnergyLost).\n * ChemicalEnergySaved is obtained by converting saved (not consumed) fuel to energy using\n * fuelEnergyDensityInMJoulesPerLiter.\n * @method downhillEfficiency\n * @chainable\n * @param {Number} [downhillEfficiency]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n downhillEfficiency: {\n postValidator: postValidators.efficiencyParameter('downhillEfficiency', 'uphillEfficiency')\n },\n /**\n * A setter and getter for 'constantSpeedConsumptionInkWhPerHundredkm' attribute.\n * \n * Specifies the speed-dependent component of consumption.\n * Provided as an unordered list of speed/consumption-rate pairs. The list defines points\n * on a consumption curve.\n * Consumption rates for speeds not in the list are found as follows:\n * * by linear interpolation, if the given speed lies in between two speeds in the list\n * * by linear extrapolation otherwise, assuming a constant (ΔConsumption/ΔSpeed) determined by\n * the nearest two points in the list\n *\n * The list must contain between 1 and 25 points (inclusive), and may not contain duplicate points\n * for the same speed. If it only contains a single point, then the consumption rate of that point\n * is used without further processing. Consumption specified for the largest speed must be greater\n * than or equal to that of the penultimate largest speed.\n * This ensures that extrapolation does not lead to negative consumption rates.\n * Similarly, consumption values specified for the two smallest speeds in the list cannot lead to a\n * negative consumption rate for any smaller speed.\n * The minimum and maximum values described here refer to the valid range for the consumption values\n * (expressed in kWh/100km).\n * @method constantSpeedConsumptionInkWhPerHundredkm\n * @chainable\n * @param {Array} [constantSpeedConsumptionInkWhPerHundredkm] Colon-delimited list of\n * ElectricConstantSpeedConsumptionPairs, e.g. array of such pairs \"60,7\".\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Array} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n constantSpeedConsumptionInkWhPerHundredkm: {\n postValidator: postValidators.constantSpeedConsumption('electric'),\n converter: converters.constantSpeedConsumption\n },\n /**\n * A setter and getter for 'currentChargeInkWh' attribute.\n * \n * Specifies the current electric energy supply in kilowatt hours (kWh).\n * @method currentChargeInkWh\n * @chainable\n * @param {Number} [currentChargeInkWh]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n currentChargeInkWh: {\n postValidator: postValidators.chargeParameter('currentChargeInkWh', 'maxChargeInkWh')\n },\n /**\n * A setter and getter for 'maxChargeInkWh' attribute.\n * \n * Specifies the maximum electric energy supply in kilowatt hours (kWh) that may be stored in t\n * he vehicle's battery.\n * @method maxChargeInkWh\n * @chainable\n * @param {Number} [maxChargeInkWh]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n maxChargeInkWh: {\n postValidator: postValidators.chargeParameter('maxChargeInkWh', 'currentChargeInkWh')\n },\n /**\n * A setter and getter for 'auxiliaryPowerInkW' attribute.\n * \n * Specifies the amount of power consumed for sustaining auxiliary systems, in kilowatts (kW).\n * It can be used to specify consumption due to devices and systems such as AC systems, radio, heating, etc.\n * @method auxiliaryPowerInkW\n * @chainable\n * @param {Number} [auxiliaryPowerInkW]\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {Number} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n auxiliaryPowerInkW: {\n postValidator: postValidators.floatAndEngineType('electric', 'auxiliaryPowerInkW')\n },\n\n /**\n * A setter and getter for _'protocol'_ attribute. \n * \n * Represents type of protocol used to perform service call.\n *\n * @method protocol\n * @chainable\n * @param {String} [protocol] Protocol type, one of _http_ or _https_.\n * @throws {TypeError} If the given argument cannot be converted to a valid value.\n * @return {String} Method returns the service instance allowing chaining or _protocol_\n * value if argument is omitted.\n */\n protocol: {\n validator: validators.oneOfValue(['http', 'https'], 'protocol')\n },\n\n /**\n * A getter and setter for the 'avoidAreas' attribute.\n *\n * A list of shapes to avoid for planning routes. Supported shapes include rectangles.\n * Can contain one of each supported shapes element.\n\n * @example\n * ```js\n * tomtom.routing().locations('52.37173,4.91015:52.36357,4.898046255')\n * .avoidAreas([{\n * southWestCorner: {latitude: 52.36391, longitude:4.90106},\n * northEastCorner: {latitude: 52.36554, longitude:4.90767}\n * }]);\n * ```\n * Supported point formats:\n * - 'lat,lon'\n * - {lat:111, lon:111}\n * - {lat:111, lng:111}\n * - {latitude:111, longitude:111}\n * - {x:111, y:111}\n * - {lat: function(), lng:function()}\n *\n * @method avoidAreas\n * @chainable\n * @param {Object[]} [areas] A list of shapes to avoid for planning routes.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {String} Method returns the service instance allowing chaining or converted locations\n * value if argument is omitted.\n */\n avoidAreas: {\n converter: converters.avoidAreas,\n application: parameterApplications.POST\n },\n\n /**\n * A getter and setter for the 'avoidVignette' attribute.\n *\n * List of 3-character ISO 3166-1 alpha-3 country codes of countries in which\n * all toll roads with vignettes are to be avoided.\n * Toll roads with vignettes in countries not in the list are unaffected.\n * It is an error to specify both avoidVignette and allowVignette.\n * @method avoidVignette\n * @chainable\n * @param {String|String[]} [newValue] Array of country codes\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String|String[]} The same service instance or the current option value if no argument was given\n */\n avoidVignette: {\n validator: validators.countrySetAlpha3.bind(this, false),\n postValidator: postValidators.firstParamCannotBeUsedWithSecond('avoidVignette', 'allowVignette'),\n converter: converters.arrayOfStrings,\n application: parameterApplications.POST\n },\n\n /**\n * A getter and setter for the 'allowVignette' attribute.\n *\n * List of 3-character ISO 3166-1 alpha-3 country codes of countries in which\n * toll roads with vignettes are allowed.\n * Specifying allowVignette with some countries X is equivalent to specifying\n * avoidVignette with all countries but X.\n * Specifying allowVignette with an empty list is the same as avoiding all toll roads with vignettes.\n * It is an error to specify both avoidVignette and allowVignette.\n * @method allowVignette\n * @chainable\n * @param {String|String[]} [newValue] Array of country codes\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String|String[]} The same service instance or the current option value if no argument was given\n */\n allowVignette: {\n validator: validators.countrySetAlpha3.bind(this, true),\n postValidator: postValidators.firstParamCannotBeUsedWithSecond('allowVignette', 'avoidVignette'),\n converter: converters.arrayOfStrings,\n application: parameterApplications.POST\n }\n };\n return fields;\n });\n\n\n\n// WEBPACK FOOTER //\n// ./services/routing/commonRoutingParameters.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['services/utils', './helpers/getRouteFeature'], function(Utils, getRouteFeature) {\n 'use strict';\n\n function newFeatureCollection() {\n return {\n type: 'FeatureCollection',\n features: []\n };\n }\n\n return function(data) {\n var result, i;\n if (Utils.isString(data)) {\n try {\n data = JSON.parse(data); // aja js has problems and response is not always parsed as it should\n } catch (e) {\n return null;\n }\n }\n if (data.error) {\n return { error: data.error};\n } else {\n result = newFeatureCollection();\n result.optimizedWaypoints = data.optimizedWaypoints;\n if (!data || !data.routes) {\n return result;\n }\n for (i = 0; i < data.routes.length; i += 1) {\n result.features.push(getRouteFeature(data.routes[i]));\n }\n return result;\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/routing/routing.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['leaflet'], function(L) {\n\n /**\n * @ignore\n * @param {String | HTMLElement} element Get rect from this element or query for it and then get its rects.\n * @returns {DOMRect | null} Rectangle of given element or null if something bad happens\n */\n function getRect(element) {\n try {\n if (typeof element === 'string') {\n return document.querySelector(element).getBoundingClientRect();\n }\n return element.getBoundingClientRect();\n } catch (err) {\n return null;\n }\n }\n\n /**\n * Helper method used to update bounding options. Used once for every control container.\n *\n * @ignore\n * @param {Object} bounds Object containing options for padding points. This object will be modified.\n * @param {Object} bounds.paddingTopLeft Object that will be passed as a top-left point of the fitBounds padding\n * @param {Number} bounds.paddingTopLeft.x Horizontal value of the top-left padding\n * @param {Number} bounds.paddingTopLeft.y Vertical value of the top-left padding\n * @param {Object} bounds.paddingBottomRight Object that will be passed as a bottom-right point of the fitBounds\n * padding\n * @param {Number} bounds.paddingBottomRight.x Horizontal value of the bottom-right padding\n * @param {Number} bounds.paddingBottomRight.y Vertical value of the bottom-right padding\n * @param {'left' | 'right'} horizontal Parameter describing which controls are measured\n * @param {'top' | 'bottom'} vertical Parameter describing which controls are measured\n * @param {'width' | 'height' | 'both'} axis Which axis is taken into account when measuing controls\n * @param {DOMRect} rect Object containing dimensions of measured controls\n */\n function modifyBoundsForRect(bounds, horizontal, vertical, axis, rect) {\n /*__*/ if (vertical === 'top' && horizontal === 'left' && axis === 'width') {\n bounds.paddingTopLeft.x += rect[axis];\n } else if (vertical === 'top' && horizontal === 'left' && axis === 'height') {\n bounds.paddingTopLeft.y += rect[axis];\n } else if (vertical === 'top' && horizontal === 'left' && axis === 'both') {\n bounds.paddingTopLeft.x += rect.width;\n bounds.paddingTopLeft.y += rect.height;\n\n } else if (vertical === 'top' && horizontal === 'right' && axis === 'width') {\n bounds.paddingBottomRight.x += rect[axis];\n } else if (vertical === 'top' && horizontal === 'right' && axis === 'height') {\n bounds.paddingTopLeft.y += rect[axis];\n } else if (vertical === 'top' && horizontal === 'right' && axis === 'both') {\n bounds.paddingBottomRight.x += rect.width;\n bounds.paddingTopLeft.y += rect.height;\n\n } else if (vertical === 'bottom' && horizontal === 'left' && axis === 'width') {\n bounds.paddingTopLeft.x += rect[axis];\n } else if (vertical === 'bottom' && horizontal === 'left' && axis === 'height') {\n bounds.paddingBottomRight.y += rect[axis];\n } else if (vertical === 'bottom' && horizontal === 'left' && axis === 'both') {\n bounds.paddingTopLeft.x += rect.width;\n bounds.paddingBottomRight.y += rect.height;\n\n } else if (vertical === 'bottom' && horizontal === 'right' && axis === 'width') {\n bounds.paddingBottomRight.x += rect[axis];\n } else if (vertical === 'bottom' && horizontal === 'right' && axis === 'height') {\n bounds.paddingBottomRight.y += rect[axis];\n } else if (vertical === 'bottom' && horizontal === 'right' && axis === 'both') {\n bounds.paddingBottomRight.x += rect.width;\n bounds.paddingBottomRight.y += rect.height;\n }\n }\n\n // eslint-disable-next-line\n /**\n * Helper method used to modify bounding options. This function measures every control container and sums their\n * dimensions.\n *\n * @ignore\n * @param {Object} fitBoundsOptions Object containing options for padding points. This object will be modified.\n * @param {Object} fitBoundsOptions.paddingTopLeft Object that will be passed as a top-left point of the fitBounds\n * padding\n * @param {Number} fitBoundsOptions.paddingTopLeft.x Horizontal value of the top-left padding\n * @param {Number} fitBoundsOptions.paddingTopLeft.y Vertical value of the top-left padding\n * @param {Object} fitBoundsOptions.paddingBottomRight Object that will be passed as a bottom-right point of the\n * fitBounds padding\n * @param {Number} fitBoundsOptions.paddingBottomRight.x Horizontal value of the bottom-right padding\n * @param {Number} fitBoundsOptions.paddingBottomRight.y Vertical value of the bottom-right padding\n * @param {Object} controls Object describing how control container is measured\n * @param {'width' | 'height' | 'both'} [controls['top-left']] Object describing how control container is measured\n * @param {'width' | 'height' | 'both'} [controls['top-right']] Object describing how control container is measured\n * @param {'width' | 'height' | 'both'} [controls['bottom-left']] Object describing how control container is\n * measured\n * @param {'width' | 'height' | 'both'} [controls['bottom-right']] Object describing how control container is\n * measured\n * @param {'top-left' | 'top-right' | 'bottom-right' | 'bottom-left' } position Position of the measured container\n */\n function modifyBoundsOptions(fitBoundsOptions, controls, position) {\n var topOrBottom, leftOrRight, direction, selector, rect;\n var split = position.split('-');\n if (!(split && split.length === 2)) {\n return;\n }\n topOrBottom = split[0];\n leftOrRight = split[1];\n direction = controls[position]; // width or height or both\n\n selector = '.leaflet-' + topOrBottom + '.leaflet-' + leftOrRight;\n rect = getRect(selector);\n if (!rect) {\n return;\n }\n\n modifyBoundsForRect(fitBoundsOptions, leftOrRight, topOrBottom, direction, rect);\n }\n\n /**\n * @class MapUtils\n * @extends L\n * @module Map\n * @namespace L\n */\n L.MapUtils = {\n /**\n * This method looks over all layers in the map instance and returns an array\n * of matching layers. If layers are not found, returns empty array.\n * @method findLayersByName\n * @param {String} layerName Name of the layers you are looking for\n * @param {Map} map Map instance\n * @returns {Array} Returns an array of matching layers, if no element was found,\n * returns empty array.\n */\n findLayersByName: function(layerName, map) {\n var matchingLayers = [];\n map.eachLayer(function(layer) {\n if (layer.name === layerName) {\n matchingLayers.push(layer);\n }\n });\n return matchingLayers;\n },\n\n /**\n * @method getPaddingOptions\n * @example\n * ```javascript\n * var popup = marker.openPopup().getPopup();\n * var popupElement = popup.getElement();\n * var bounds = L.MapUtils.getPaddingOptions({\n * popup: popupElement,\n * controls: {\n * 'top-left': 'width', // only width will be taken into account\n * 'bottom-right': 'both'\n * }\n * });\n * ```\n * @param {Object} components Object describing how paddings should be calculated\n * @param {HTMLElement} [components.popup] Popup element which dimensions will be calculated\n * @param {Object} [components.controls] Object which values describes which control panel is measured and how.\n * possible keys are `'top-left'`, `'top-right'`, `'bottom-left'`, `'bottom-right'` and values:\n * `'width'`, `'height'`, `'both'`.\n * @returns {Object} Returns an object reflecting measurements on control containers\n */\n getPaddingOptions: function(components) {\n var popupRect;\n var controls = components.controls;\n var popup = components.popup;\n var fitBoundsOptions = {\n paddingTopLeft: { x: 0, y: 0 },\n paddingBottomRight: { x: 0, y: 0 }\n };\n if (controls) {\n try {\n Object.getOwnPropertyNames(controls)\n .forEach(modifyBoundsOptions.bind(null, fitBoundsOptions, controls));\n } catch (err) {\n //\n }\n }\n if (popup) {\n try {\n popupRect = getRect(popup);\n fitBoundsOptions.paddingTopLeft.x += popupRect.width / 2;\n fitBoundsOptions.paddingBottomRight.x += popupRect.width / 2;\n fitBoundsOptions.paddingTopLeft.y += popupRect.height;\n } catch (err) {\n //\n }\n }\n return fitBoundsOptions;\n },\n\n /**\n * @method setViewWithOffset\n * @param {Map} map Map object that is associated with setView method\n * @param {LatLng} targetLatLng Point that is the original center of the transformation\n * @param {number} targetZoom Zoom level that is going to be applied to setView\n * @param {Object} options Pan and zoom options\n * @param {Point} offsetPoint Point that represents the shift of the original center point\n */\n setViewWithOffset: function(map, targetLatLng, targetZoom, options, offsetPoint) {\n var targetPoint = map.project(targetLatLng, targetZoom).subtract(offsetPoint);\n var offsetLatLng = map.unproject(targetPoint, targetZoom);\n map.setView(offsetLatLng, targetZoom, options);\n }\n\n };\n\n return L.MapUtils;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/mapUtils.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine([], function() {\n 'use strict';\n /*this mapping is used to map category_codes => filename\n https://developer.tomtom.com/search-api/search-api-documentation/supported-category-codes\n keep in mind that files in the filesystem are named like that: RESTAURANT.colors-black-white.svg\n colors-black-white is used during compilation to generate white and black icons\n icons are converted to css and included in map.css\n */\n var availableIcons = {\n fallback: 'flag',\n ACCESS_GATEWAY: 'ic_map_poi_110',\n ADMINISTRATIVE_DIVISION: 'ic_map_poi_133',\n ADVENTURE_SPORTS_VENUE: 'ic_map_poi_122',\n AGRICULTURE: 'ic_map_poi_107',\n AIRPORT: 'ic_map_poi_007',\n AMUSEMENT_PARK: 'ic_map_poi_051',\n AUTOMOTIVE_DEALER: 'ic_map_poi_008',\n BANK: 'ic_map_poi_077',\n BEACH: 'ic_map_poi_043',\n BUILDING_POINT: 'ic_map_poi_132',\n BUSINESS_PARK: 'ic_map_poi_102',\n CAFE_PUB: 'ic_map_poi_120',\n CAMPING_GROUND: 'ic_map_poi_058',\n CAR_WASH: 'ic_map_poi_067',\n CASH_DISPENSER: 'ic_map_poi_042',\n CASINO: 'ic_map_poi_009',\n CINEMA: 'ic_map_poi_011',\n CITY_CENTER: 'ic_map_poi_012',\n CLUB_ASSOCIATION: 'ic_map_poi_131',\n COLLEGE_UNIVERSITY: 'ic_map_poi_041',\n COMMERCIAL_BUILDING: 'ic_map_poi_098',\n COMMUNITY_CENTER: 'ic_map_poi_081',\n COMPANY: 'ic_map_poi_013',\n COURTHOUSE: 'ic_map_poi_015',\n CULTURAL_CENTER: 'ic_map_poi_016',\n DENTIST: 'ic_map_poi_048',\n DEPARTMENT_STORE: 'ic_map_poi_104',\n DOCTOR: 'ic_map_poi_047',\n ELECTRIC_VEHICLE_STATION: 'ic_map_poi_073',\n EMBASSY: 'ic_map_poi_040',\n EMERGENCY_MEDICAL_SERVICE: 'ic_map_poi_115',\n ENTERTAINMENT: 'ic_map_poi_035',\n EXCHANGE: 'ic_map_poi_096',\n EXHIBITION_CONVENTION_CENTER: 'ic_map_poi_017',\n FERRY_TERMINAL: 'ic_map_poi_018',\n FIRE_STATION_BRIGADE: 'ic_map_poi_068',\n FRONTIER_CROSSING: 'ic_map_poi_019',\n FUEL_FACILITIES: 'ic_map_poi_004',\n GEOGRAPHIC_FEATURE: 'ic_map_poi_127',\n GOLF_COURSE: 'ic_map_poi_020',\n GOVERNMENT_OFFICE: 'ic_map_poi_000',\n HEALTH_CARE_SERVICE: 'ic_map_poi_116',\n HELIPAD_HELICOPTER_LANDING: 'ic_map_poi_123',\n HOLIDAY_RENTAL: 'ic_map_poi_130',\n HOSPITAL_POLYCLINIC: 'ic_map_poi_021',\n HOTEL_MOTEL: 'ic_map_poi_022',\n ICE_SKATING_RINK: 'ic_map_poi_044',\n IMPORTANT_TOURIST_ATTRACTION: 'ic_map_poi_023',\n INDUSTRIAL_BUILDING: 'ic_map_poi_095',\n LEISURE_CENTER: 'ic_map_poi_061',\n LIBRARY: 'ic_map_poi_052',\n MANUFACTURING_FACILITY: 'ic_map_poi_099',\n MARINA: 'ic_map_poi_062',\n MARKET: 'ic_map_poi_118',\n MEDIA_FACILITY: 'ic_map_poi_101',\n MILITARY_INSTALLATION: 'ic_map_poi_106',\n MOTORING_ORGANIZATION_OFFICE: 'ic_map_poi_076',\n MOUNTAIN_PASS: 'ic_map_poi_024',\n MUSEUM: 'ic_map_poi_025',\n NATIVE_RESERVATION: 'ic_map_poi_125',\n NIGHTLIFE: 'ic_map_poi_050',\n NON_GOVERNMENTAL_ORGANIZATION: 'ic_map_poi_134',\n OPEN_PARKING_AREA: 'ic_map_poi_002',\n OTHER: 'flag',\n PARKING_GARAGE: 'ic_map_poi_003',\n PARK_RECREATION_AREA: 'ic_map_poi_059',\n PETROL_STATION: 'ic_map_poi_004',\n PHARMACY: 'ic_map_poi_054',\n PLACE_OF_WORSHIP: 'ic_map_poi_027',\n POLICE_STATION: 'ic_map_poi_039',\n PORT_WAREHOUSE_FACILITY: 'ic_map_poi_105',\n POST_OFFICE: 'ic_map_poi_028',\n PRIMARY_RESOURCE_UTILITY: 'ic_map_poi_108',\n PRISON_CORRECTIONAL_FACILITY: 'ic_map_poi_094',\n PUBLIC_AMENITY: 'ic_map_poi_097',\n PUBLIC_TRANSPORT_STOP: 'ic_map_poi_069',\n RAILWAY_STATION: 'ic_map_poi_005',\n RENT_A_CAR_FACILITY: 'ic_map_poi_029',\n RENT_A_CAR_PARKING: 'ic_map_poi_030',\n REPAIR_FACILITY: 'ic_map_poi_053',\n RESEARCH_FACILITY: 'ic_map_poi_100',\n RESIDENTIAL_ACCOMMODATION: 'ic_map_poi_075',\n RESTAURANT: 'ic_map_poi_031',\n RESTAURANT_AREA: 'ic_map_poi_031',\n REST_AREA: 'ic_map_poi_006',\n SCENIC_PANORAMIC_VIEW: 'ic_map_poi_055',\n SCHOOL: 'ic_map_poi_070',\n SHOP: 'ic_map_poi_032',\n SHOPPING_CENTER: 'ic_map_poi_033',\n SPORTS_CENTER: 'ic_map_poi_038',\n STADIUM: 'ic_map_poi_034',\n SWIMMING_POOL: 'ic_map_poi_046',\n TENNIS_COURT: 'ic_map_poi_045',\n THEATER: 'ic_map_poi_035',\n TOURIST_INFORMATION_OFFICE: 'ic_map_poi_023',\n TRAFFIC_LIGHT: 'ic_map_poi_129',\n TRAFFIC_SERVICE_CENTER: 'ic_map_poi_126',\n TRAFFIC_SIGN: 'ic_map_poi_128',\n TRAIL_SYSTEM: 'ic_map_poi_124',\n TRANSPORT_AUTHORITY_VEHICLE_REGISTRATION: 'ic_map_poi_113',\n TRUCK_STOP: 'ic_map_poi_071',\n VETERINARIAN: 'ic_map_poi_049',\n WATER_SPORT: 'ic_map_poi_046',\n WEIGH_STATION: 'ic_map_poi_111',\n WELFARE_ORGANIZATION: 'ic_map_poi_117',\n WINERY: 'ic_map_poi_057',\n ZOOS_ARBORETA_BOTANICAL_GARDEN: 'ic_map_poi_037'\n };\n\n /*\n This map contains icons which are single color - means they are not in black and white version\n */\n var singleColorIcons = {\n OPEN_PARKING_AREA: '',\n PARKING_GARAGE: '',\n RENT_A_CAR_PARKING: '',\n TRUCK_STOP: ''\n };\n\n return {\n defaultIcons: availableIcons,\n singleColorIcons: singleColorIcons\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/defaultIconsMappingProvider.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * @ignore\n * This component generates HTML content based on provided options and data. Currently supported data type is search\n * result (either main result or entry point associated with POI result).\n * Content generated is split into following sections which visibility is configurable:\n * * 'name' - prints POI name with associated icon\n * * 'address' - prints address information\n * * 'coordinates' - prints coordinates (lat,lng) information\n * * 'entryPoint' - prints parent POI name and entry point type\n *\n */\ndefine([\n 'leaflet',\n 'model/search/modelFactory',\n './details/entryPointContent',\n './details/nameContent',\n './details/addressContent',\n './details/coordinatesContent',\n './actions/actionsGenerator',\n './wrapable'\n], function(\n L,\n modelFactory,\n entryPointContent,\n nameContent,\n addressContent,\n coordinatesContent,\n actionsGenerator,\n Wrapable\n) {\n 'use strict';\n var AREAS = {\n ENTRYPOINT: 'entryPoint',\n NAME: 'name',\n ADDRESS: 'address',\n COORDINATES: 'coordinates'\n };\n var ordering = Object.keys(AREAS).map(function(item) {\n return AREAS[item];\n });\n\n var defaultOptions = {\n name: true,\n address: true,\n coordinates: true,\n entryPoint: false\n };\n\n var classes = {\n content: 'tomtom-point-content',\n details: 'tomtom-point-content__details'\n };\n var ContentGenerator;\n\n function areaContentGenerator(area, data) {\n switch (area) {\n case AREAS.ENTRYPOINT :\n return entryPointContent(data.parent.poi, data.type);\n case AREAS.NAME :\n return data.poi ? nameContent(data.poi) : L.DomUtil.create('span');\n case AREAS.ADDRESS :\n return addressContent(data);\n case AREAS.COORDINATES :\n return coordinatesContent(data.position);\n default :\n return L.DomUtil.create('span');\n }\n }\n\n ContentGenerator = function(options) {\n this.options = options || defaultOptions;\n };\n\n /**\n * @ignore\n * @param {Object} data Either search result or entry point\n * @param {Object }additionalData Parent POI if 'data' param is entry point. If not, it's ignored.\n * @return {Wrapable}\n */\n ContentGenerator.prototype.generate = function(data, additionalData) {\n var result = L.DomUtil.create('div', classes.content),\n details = L.DomUtil.create('div', classes.details),\n modeledData = modelFactory(data, additionalData),\n actions;\n\n ordering.reduce(function(accumulator, area) {\n if (this.options[area]) {\n accumulator.appendChild(areaContentGenerator(area, modeledData));\n }\n return accumulator;\n }.bind(this), details);\n\n if (details.children.length) {\n result.appendChild(details);\n }\n\n if (this.options.actions) {\n actions = actionsGenerator(modeledData, this.options.actions);\n result.appendChild(actions.getHtmlElement());\n }\n\n return new Wrapable(result, function() {\n if (actions) {\n actions.wrap();\n }\n });\n };\n\n /**\n * @ignore\n * @param {Object} options\n * @param {Boolean} [options.name=true] A flag specifying if name area is printed\n * @param {Boolean} [options.coordinates=true] A flag specifying if coordinates area is printed\n * @param {Boolean} [options.address=true] A flag specifying if address area is printed\n * @param {Boolean} [options.entryPoint=false] A flag specifying if entry point area is printed\n * @param {Object} [options.actions] An object describing what type of actions should be created\n * @param {Object} [options.actions.routing] An object grouping routing actions configuration\n * @param {Boolean} [options.actions.routing.routeTo] A flag specifying if 'Route to' action should be generated.\n * Coordinates for this action are taken from 'position' field associated with provided data object.\n * @param {Boolean} [options.actions.routing.routeFrom] A flag specifying if 'Route from' action should be\n * generated. Coordinates for this action are taken from 'position' field associated with provided data object.\n * @param {Boolean} [options.actions.routing.routeToEntryPoint] A flag specifying if 'Route to' action for entry\n * points should be generated. Coordinates for this action are taken from 'position' field associated with given\n * entry point. If no entry point is available this action will not be generated.\n * @param {Boolean} [options.actions.routing.routeFromEntryPoint] A flag specifying if 'Route from' action entry\n * points should be generated. Coordinates for this action are taken from 'position' field associated with given\n * entry point. If no entry point is available this action will not be generated.\n * @param {Function} [options.actions.routing.onActionClick] 'click' event handler for all route actions. Most\n * probably used for generating a route.\n * @param {Object} [options.actions.search] An object grouping search actions configuration\n * @param {Boolean} [options.actions.search.searchNearby] A flag specifying if 'NearBy' search action should be\n * generated.\n * @param {Function} [options.actions.search.onActionClick] 'click' event handler for all search actions.\n * @param {Object} [options.actions.remove] An object specifying if 'Remove' action is generated.\n * @param {Function} [options.actions.remove.onActionClick] 'click' event handler for all 'Remove' action.\n *\n * @return {Wrapable}\n */\n\n return function(options) {\n var result = new ContentGenerator(options);\n return result.generate.bind(result);\n };\n\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/popupContentGenerator/pointHTMLContentGenerator.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine([\n 'display/map',\n './addressModel',\n './poiModel',\n './addressRangesModel',\n './entryPointModel',\n 'model/objectModel',\n '../../services/utils'\n], function(\n L,\n AddressModel,\n PoiModel,\n AddressRangesModel,\n EntryPointModel,\n ObjectModel,\n utils\n) {\n 'use strict';\n var SIMPLE_PROPERTIES = ['dist', 'score', 'type', 'entityType'];\n var SearchModel;\n\n /**\n * For future readers: these functions were added to satisfy tics cyclomatic complexity score\n */\n\n function addSimpleProperties(json) {\n SIMPLE_PROPERTIES.forEach(function(property) {\n if (typeof json[property] !== 'undefined') {\n this[property] = json[property];\n }\n }, this);\n }\n\n function addAddress(json) {\n if (typeof json.address !== 'undefined') {\n this.address = new AddressModel(json.address);\n }\n }\n\n function addPosition(json) {\n if (typeof json.position !== 'undefined') {\n this.position = utils.convertToLatLng(json.position);\n }\n }\n\n function addPoi(json) {\n if (typeof json.poi !== 'undefined') {\n this.poi = new PoiModel(json.poi);\n }\n }\n\n function addAdressRanges(json) {\n if (typeof json.addressRanges !== 'undefined') {\n this.addressRanges = new AddressRangesModel(json.addressRanges);\n }\n }\n\n function setBoundingBox(json) {\n if (typeof json.boundingBox !== 'undefined') {\n this.boundingBox = L.latLngBounds(\n utils.convertToLatLng(json.boundingBox.btmRightPoint),\n utils.convertToLatLng(json.boundingBox.topLeftPoint)\n );\n }\n }\n\n function setViewport(json) {\n if (typeof json.viewport !== 'undefined') {\n this.viewport = L.latLngBounds(\n utils.convertToLatLng(json.viewport.btmRightPoint),\n utils.convertToLatLng(json.viewport.topLeftPoint)\n );\n }\n }\n\n function addEntryPoints(json) {\n if (typeof json.entryPoints !== 'undefined') {\n this.entryPoints = json.entryPoints.map(function(entry) {\n return new EntryPointModel(entry);\n });\n }\n }\n\n SearchModel = function(json) {\n addSimpleProperties.call(this, json);\n addAddress.call(this, json);\n addPosition.call(this, json);\n addPoi.call(this, json);\n addAdressRanges.call(this, json);\n setBoundingBox.call(this, json);\n setViewport.call(this, json);\n addEntryPoints.call(this, json);\n return this;\n };\n SearchModel.prototype = Object.create(ObjectModel.prototype);\n SearchModel.prototype.constructor = SearchModel;\n\n SearchModel.prototype.simplify = function() {\n var result = {}, key;\n var simplifier = function(item) {\n return item.simplify();\n };\n\n for (key in this) {\n if (this.hasOwnProperty(key)) {\n if (this[key] instanceof Array && this[key].length > 0 && this[key][0].simplify) {\n result[key] = this[key].map(simplifier);\n } else if (typeof this[key] === 'object' && this[key].simplify) {\n result[key] = this[key].simplify();\n } else if (this[key] instanceof L.LatLng) {\n result[key] = {lat: this[key].lat, lon: this[key].lng};\n } else if (this[key] instanceof L.LatLngBounds) {\n result[key] = {\n topLeftPoint: {lat: this[key].getSouthWest().lat, lon: this[key].getSouthWest().lng},\n btmRightPoint: {lat: this[key].getNorthEast().lat, lon: this[key].getNorthEast().lng}\n };\n } else {\n result[key] = this[key];\n }\n }\n }\n return result;\n };\n\n return SearchModel;\n\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/search/searchModel.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine(['model/objectModel'], function(ObjectModel) {\n 'use strict';\n var SIMPLE_PROPERTIES = [\n 'country',\n 'countryCode',\n 'countryCodeISO3',\n 'countrySecondarySubdivision',\n 'countryTertiarySubdivision',\n 'countrySubdivision',\n 'countrySubdivisionName',\n 'freeformAddress',\n 'municipality',\n 'municipalitySubdivision',\n 'postalCode',\n 'extendedPostalCode',\n 'streetName',\n 'streetNumber'\n ];\n\n var AddressModel = function(json) {\n SIMPLE_PROPERTIES.forEach(function(property) {\n if (typeof json[property] !== 'undefined') {\n this[property] = json[property];\n }\n }, this);\n return this;\n };\n AddressModel.prototype = Object.create(ObjectModel.prototype);\n AddressModel.prototype.constructor = AddressModel;\n\n return AddressModel;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/search/addressModel.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine(['model/objectModel'], function(ObjectModel) {\n 'use strict';\n var SIMPLE_PROPERTIES = [\n 'categories',\n 'classifications',\n 'name',\n 'phone',\n 'url'\n ];\n\n var PoiModel = function(json) {\n SIMPLE_PROPERTIES.forEach(function(property) {\n if (typeof json[property] !== 'undefined') {\n this[property] = json[property];\n }\n }, this);\n\n return this;\n };\n PoiModel.prototype = Object.create(ObjectModel.prototype);\n PoiModel.prototype.constructor = PoiModel;\n\n return PoiModel;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/search/poiModel.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine([\n 'model/objectModel',\n 'services/reverseGeocode/reverseGeocode',\n '../../services/utils'\n], function(\n ObjectModel,\n reverseGeocode,\n utils\n) {\n 'use strict';\n\n var EntryPointModel = function(json, parent) {\n this.position = utils.convertToLatLng(json.position);\n this.type = json.type;\n this.parent = parent;\n\n return this;\n };\n\n EntryPointModel.prototype = Object.create(ObjectModel.prototype);\n EntryPointModel.prototype.constructor = EntryPointModel;\n\n EntryPointModel.prototype.simplify = function() {\n return {\n position: {lat: this.position.lat, lon: this.position.lng},\n type: this.type\n };\n };\n\n EntryPointModel.prototype.getAddress = function() {\n return reverseGeocode().position({lat: this.position.lat, lon: this.position.lng}).go();\n };\n return EntryPointModel;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/search/entryPointModel.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['rest/reverseGeocode', 'model/reverseGeocode/reverseGeocode', '../chain', '../validators', '../converters',\n '../utils', 'model/reverseGeocode/batchReverseGeocode'], function(restReverseGeocode, model, chain, validators,\n converters, utils, batchModel) {\n 'use strict';\n\n var TYPES = {\n reverseGeocode: 'reverseGeocode',\n crossStreetLookup: 'reverseGeocode/crossStreet'\n };\n\n var reverseGeocode = restReverseGeocode();\n\n function ReverseGeocodeBase(options) {\n this.options = options || {};\n this.options.__serviceType = 'reverseGeocoder';\n this.fields = {};\n }\n\n ReverseGeocodeBase.prototype.TYPE = TYPES;\n ReverseGeocodeBase.prototype.construct = function() {\n var batchFields;\n this.fields = utils.addFields.call(this, this.fields);\n batchFields = {\n batchItems: {\n validator: validators.arrayOf(this.fields),\n converter: converters.arrayOf(this.fields)\n },\n type: {\n validator: validators.string\n }\n };\n\n if (Array.isArray(this.options)) {\n return chain.call(this, batchFields, this.handleBatchChain, {\n batchItems: this.options,\n type: this.fields.type.defaultValue\n });\n } else {\n return chain.call(this, this.fields, this.handleChain, this.options);\n }\n };\n\n ReverseGeocodeBase.prototype.handleBatchChain = function(data, callback) {\n reverseGeocode.batch(this.fields, data, function(response) {\n callback.call(this, batchModel(response));\n });\n };\n\n ReverseGeocodeBase.prototype.handleChain = function(data, callback) {\n reverseGeocode.reverseGeocode(this.fields, data, function(response) {\n callback.call(this, model(response)[0]);\n });\n };\n\n function reverseGeocodeConstructor(options) {\n return (new ReverseGeocodeBase(options)).construct();\n }\n\n reverseGeocodeConstructor.prototype.constructor = ReverseGeocodeBase;\n\n return reverseGeocodeConstructor;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/reverseGeocode/reverseGeocodeBase.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine(['../selector'], function(selector) {\n 'use strict';\n return function(json) {\n return selector(json, 'addresses');\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/reverseGeocode/reverseGeocode.js","define(['services/validators', 'services/converters', './types', 'common/parameterApplications'],\n function(validators, converters, types, parameterApplications) {\n var geocodeBaseFields = {\n key: {\n validator: validators.string\n },\n position: {\n converter: converters.point,\n validator: validators.point,\n required: true,\n application: parameterApplications.PATH\n },\n spatialKeys: {\n validator: validators.bool\n },\n heading: {\n validator: validators.number\n },\n radius: {validator: validators.naturalInteger},\n protocol: {validator: validators.oneOfValue(['http', 'https'], 'protocol')}\n };\n\n var additionalGeocodeFields = {\n type: {\n defaultValue: types.reverseGeocode,\n visible: false,\n application: parameterApplications.PATH\n },\n\n allowFreeformNewline: {\n validator: validators.bool\n },\n\n /**\n * @class ReverseGeocode\n * @module Services\n */\n\n /**\n * Sets or gets the value of the option `returnSpeedLimit`.\n *\n * Allows, if possible, to receive the speed limit information at the given location.\n *\n * @method returnSpeedLimit\n * @chainable\n * @param {Boolean} [newValue] Enable or disable the feature\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Boolean} The same service instance or the current option value if no argument was given\n */\n returnSpeedLimit: {\n validator: validators.bool\n },\n\n /**\n * Sets or gets the value of the option `number`.\n *\n * If a street number is sent in along with the request, the response may\n * include the side of the street (Left/Right) and also an offset position for that street number.\n *\n * @method number\n * @chainable\n * @param {String} [newValue] Street number as a string\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n number: {\n validator: validators.string\n },\n\n /**\n * Sets or gets the value of the option `returnRoadUse`.\n *\n * Requires to include a road use array for reversegeocodes at street level.\n *\n * @method returnRoadUse\n * @chainable\n * @param {Boolean} [newValue] Enable or disable the feature\n * @throws {TypeError} if the given argument cannot be converted into a valid value\n * @return {Boolean} The same service instance or the current option value if no argument was given\n */\n returnRoadUse: {\n validator: validators.bool\n },\n\n /**\n * Sets or gets the value of the option `returnMatchType`.\n *\n * If set, response will contain additional field with one of the values:\n * * AddressPoint (exact house number location)\n * * HouseNumberRange (interpolated house number location)\n * * Street (street location without house number)\n *\n * @method returnMatchType\n * @chainable\n * @param {Boolean} [newValue] Enable or disable the feature\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Boolean} The same service instance or the current option value if no argument was given\n */\n returnMatchType: {\n validator: validators.bool\n },\n\n /**\n * Sets or gets the value of the option `roadUse`.\n *\n * Use this option if you want to restrict the result to one or a group of the following road uses:\n * - `\"LimitedAccess\"`\n * - `\"Arterial\"`\n * - `\"Terminal\"`\n * - `\"Ramp\"`\n * - `\"Rotary\"`\n * - `\"LocalStreet\"`\n *\n * @method roadUse\n * @chainable\n * @param {String[]|String} [newValue] An array of strings or just one string with comma separated values\n * @throws {TypeError} if the given argument cannot be converted into a valid value\n * @return {String[]|String} The same service instance or the current option value if no argument was given\n */\n roadUse: {\n converter: converters.roadUse,\n validator: validators.roadUse\n },\n\n language: {\n validator: validators.languageCode, converter: converters.language\n },\n\n view: {validator: validators.geopolView('reverseGeocoder', 'view')}\n };\n\n var crossStreetLookupFields = {\n type: {\n defaultValue: types.crossStreetLookup,\n visible: false,\n application: parameterApplications.PATH\n },\n\n limit: {\n validator: validators.limit\n },\n\n language: {\n validator: validators.languageCode\n }\n };\n\n return function(type) {\n if (type === types.reverseGeocode) {\n return Object.assign({}, geocodeBaseFields, additionalGeocodeFields);\n } else if (type === types.crossStreetLookup) {\n return Object.assign({}, geocodeBaseFields, crossStreetLookupFields);\n }\n throw new Error('Unsupported geocode type: ' + type);\n };\n });\n\n\n\n// WEBPACK FOOTER //\n// ./services/reverseGeocode/reverseGeocodeParameters.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine([\n 'leaflet',\n './../simpleSVGIcon',\n 'display/layers/defaultIconsMappingProvider'\n], function(\n L,\n simpleSVGIcon,\n defaultIconsMappingProvider\n) {\n 'use strict';\n var ICONS = defaultIconsMappingProvider.defaultIcons;\n\n function isSingleColorIcon(poiClassification) {\n return poiClassification && poiClassification[0] &&\n defaultIconsMappingProvider.singleColorIcons[poiClassification[0].code] !== undefined;\n }\n\n return function(poiData) {\n var div,\n classificationsExist = poiData.classifications && poiData.classifications.length > 0,\n iconName = classificationsExist ? ICONS[poiData.classifications[0].code] : 'flag',\n isSingleColor = isSingleColorIcon(poiData.classifications),\n icon = simpleSVGIcon('icon-' + iconName + (isSingleColor ? '' : '-black'));\n\n div = L.DomUtil.create('div', 'tomtom-point-content__icon');\n div.appendChild(icon);\n return div;\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/popupContentGenerator/details/iconContent.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * @ignore\n * Preconfigured svg icon\n */\ndefine(['display/svgIcon'], function(SVGIcon) {\n 'use strict';\n return function buildSimpleSVGIcon(iconName) {\n var options = {\n background: undefined,\n icon: {\n iconSize: [30, 30],\n iconAnchor: [0, 0],\n icon: iconName,\n noPlainSVG: false\n }\n };\n return new SVGIcon(options).createIcon();\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/popupContentGenerator/simpleSVGIcon.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine(['leaflet'], function(L) {\n 'use strict';\n function getValueOrEmptyString(value) {\n return value || '';\n }\n\n return function(address) {\n var addressElement = L.DomUtil.create('div'),\n streetElement = L.DomUtil.create('div', null, addressElement),\n municipalityElement = L.DomUtil.create('div', null, addressElement);\n\n streetElement.innerHTML = getValueOrEmptyString(address.streetName) + ' ' +\n getValueOrEmptyString(address.streetNumber);\n municipalityElement.innerHTML = getValueOrEmptyString(address.postalCode) + ' ' +\n getValueOrEmptyString(address.municipality);\n\n return addressElement;\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/popupContentGenerator/details/addressContainer.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * @ignore\n * A clickable button with associated text, icon and click event handler.\n */\ndefine(['leaflet', './../simpleSVGIcon'], function(L, simpleSVGIcon) {\n 'use strict';\n var classes = {\n action: 'tomtom-point-content__action',\n icon: 'tomtom-point-content__icon',\n text: 'tomtom-point-content__text'\n };\n\n return function(icon, text, clickHandler) {\n var buttonContainer = L.DomUtil.create('div', classes.action),\n iconContainer = L.DomUtil.create('div', classes.icon, buttonContainer),\n textContainer = L.DomUtil.create('span', classes.text, buttonContainer);\n\n if (icon) {\n iconContainer.appendChild(simpleSVGIcon(icon));\n }\n\n textContainer.innerHTML = text;\n\n if (clickHandler) {\n buttonContainer.addEventListener('click', clickHandler);\n }\n\n return buttonContainer;\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/popupContentGenerator/actions/actionButton.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n\n/**\n * Sets or returns the value of the `boundingBox` option.\n *\n * The bounding box is an area within the search results needs to limit to. If it is omitted then the\n * whole world will be taken into consideration.\n *\n * In case the area specified exceeds the world boundaries the following actions will be taken\n * depending of which side was exceeded:\n * - Latitudes: the exceeded values will be replaced with their maximun.\n * - Longitudes: The service will split the area into two (or more) valid bounding boxes and will\n * execute a search request for each one and them merge the responses into a single result.\n *\n * This method is able to convert a number of popular formats into the bounding box.\n *\n * The supported formats are listed below:\n * - `{minLon: 0, minLat: 0, maxLon: 1, maxLat: 1}` Plain object with the keys minLon, minLat, maxLon, maxLat.\n * - `L.LatLngBounds` Leaflet's L.LatLngBounds object.\n * - `[0, 0, 1, 1]` An array of numbers describing the bounding box following the order: minLon, minLat,\n * maxLon, maxLat.\n * - `ol.Extent` Open Layers extent object.\n * - `[ol.Coordinate, ol.Coordinate]` An array of two open layers coordinate objects with the order:\n * southWest, northEast.\n * - `[[0, 0], [1, 1]]` A two-dimensional array with two indexes [southWest, northEast], each one with\n * latitude and longitude values.\n * - `\"0,0,1,1\"` Comma separated string with numbers in the order: minLon, minLat, maxLon, maxLat.\n * - `[{lon: 0, lat: 0},{lon: 1, lat: 1}]` A one-dimensional array with two objects in the order: southWest,\n * northEast and each object with a `lat` and `lon` keys.\n * - `[{lng: 0, lat: 0},{lng: 1, lat: 1}]` A one-dimensional array with two objects in the order: southWest,\n * northEast and each object with a `lat` and `lon` keys.\n * - `[L.LatLng, L.LatLng]` A one-dimensional array with two L.LatLng instances in the order: southWest\n * and northEast.\n * - `google.maps.LatLngBounds` Google Maps bounds object.\n * - `google.maps.LatLngBoundsLiteral` Google Maps bounds object.\n * - `[LatLng, LatLng]` array of two google.maps.LatLng.\n * - `[LatLngLiteral, LatLngLiteral]` array of two google.maps.LatLngLiteral.\n *\n * @method boundingBox\n * @deprecated\n * @chainable\n * @param {Object|Number[]|Object[]|String} [newValue] Bounding box area in one of the supported formats\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {Object|Number[]|Object[]|String} The same service instance or the current option value if no\n * argument was given\n */\n\n/**\n * Allows to make search request using the TomTom's\n * [Search API - Nearby Search API](https://developer.tomtom.com/search-api/search-api-documentation-search/nearby-search).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"NearbySearch/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"NearbySearch/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * @example\n * ```js\n * function callbackFn(result) {\n * console.log(result);\n * };\n *\n * // Using a callback function\n * tomtom.nearbySearch()\n * .key() // this is optional if you defined a global key earlier\n * .center([0,0])\n * .radius(1000)\n * .callback(callbackFn)\n * .go();\n *\n * // Or using a Promise\n * tomtom.nearbySearch()\n * .key() // this is optional if you defined a global key earlier\n * .center([0,0])\n * .radius(1000)\n * .go()\n * .then(callbackFn);\n * ```\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * @class NearbySearch\n * @extends Search\n * @uses ExtendedPostalCodesForMixin\n * @uses CenterMixin\n * @uses RadiusMixin\n * @uses CountrySetMixin\n * @uses OffsetMixin\n * @uses ViewMixin\n * @uses BestResultMixin\n * @uses TypeaheadMixin\n * @constructor\n * @module Services\n *\n * @param {Object} [options] Options to be passed to the nearby search call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.unwrapBbox=false] Changes the bounding box coordinates allowing longitudes that\n * exceeds 180 degrees when is necessary. {{#crossLink \"Search/unwrapBbox:method\"}}More{{/crossLink}}\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {String} [options.view=\"Unified\"] Geopolitical view\n * @param {String} [options.language=null] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n *\n * @param {Boolean} [options.bestResult=false] Return only one result, the best match result.\n * @param {Number[]|String|L.LatLng|Object} options.center Location where results should be biased.\n * This parameter is required to be defined either in the options passed to the constructor or using the\n * **center()** method.\n * @param {Number} [options.radius=10000] The search radius in meters using the coordinates given to the **center**\n * option as origin.\n * It expects a value between 1 and 50000, if none is set defaults to 10000.\n * @param {Number} [options.offset=0] Starting offset of the returned results within the full result set\n * @param {String} [options.countrySet] List of country codes for limit the search request to those specific\n * political limits\n * @param {Object|Number[]|Object[]|String} [options.boundingBox] DEPRECATED! The bounding box is an area within the\n * search results needs to limit to. If it is omitted then the whole world will be taken into consideration.\n * @param {String} [options.extendedPostalCodesFor] Represent the indexes for which extended postal codes should\n * be included in the results\n * @param {Boolean} [options.typeahead=false] Enables of disables the option.\n */\ndefine(['./search', '../validators'], function(search, validators) {\n 'use strict';\n\n var SearchPrototype = search.prototype.constructor;\n\n function NearbySearch(options) {\n SearchPrototype.call(this, options);\n\n this.fields.type = {\n defaultValue: this.TYPE.nearby,\n visible: false\n };\n this.fields.query = {\n required: false,\n visible: false,\n defaultValue: ''\n };\n this.fields.center = {\n required: true\n };\n this.fields.radius = {\n required: true,\n validator: validators.integerInInterval(0, 50000),\n defaultValue: 10000\n };\n this.fields.typeahead = {\n visible: false\n };\n }\n\n NearbySearch.prototype = new SearchPrototype();\n NearbySearch.prototype.constructor = NearbySearch;\n\n return function(options) {\n return (new NearbySearch(options)).construct();\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/search/nearbySearch.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine(['../selector'], function(selector) {\n 'use strict';\n var properties = [\n 'address',\n 'dist',\n 'entryPoints',\n 'position',\n 'score',\n 'poi',\n 'type',\n 'addressRanges',\n 'boundingBox',\n 'entityType',\n 'viewport',\n 'dataSources'\n ].join(', ');\n return function(json) {\n return selector(json, 'results', properties);\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/search/search.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['endpoints', 'rest/request/requestFactory', 'apiKeyNames'],\n function(endpoints, requestFactory, ApiKeyNames) {\n 'use strict';\n\n var searchKeyName = ApiKeyNames.search;\n\n return function() {\n return {\n search: requestFactory.single(endpoints.search, searchKeyName),\n batch: requestFactory.batch(100, {\n single: endpoints.batchSearchQuery,\n batchSync: endpoints.batchSyncSearch,\n batch: endpoints.batchSearch\n }, searchKeyName)\n };\n };\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./rest/search.js","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e.Leaflet=e.Leaflet||{},e.Leaflet.markercluster=e.Leaflet.markercluster||{}))}(this,function(e){\"use strict\";var t=L.MarkerClusterGroup=L.FeatureGroup.extend({options:{maxClusterRadius:80,iconCreateFunction:null,clusterPane:L.Marker.prototype.options.pane,spiderfyOnMaxZoom:!0,showCoverageOnHover:!0,zoomToBoundsOnClick:!0,singleMarkerMode:!1,disableClusteringAtZoom:null,removeOutsideVisibleBounds:!0,animate:!0,animateAddingMarkers:!1,spiderfyDistanceMultiplier:1,spiderLegPolylineOptions:{weight:1.5,color:\"#222\",opacity:.5},chunkedLoading:!1,chunkInterval:200,chunkDelay:50,chunkProgress:null,polygonOptions:{}},initialize:function(e){L.Util.setOptions(this,e),this.options.iconCreateFunction||(this.options.iconCreateFunction=this._defaultIconCreateFunction),this._featureGroup=L.featureGroup(),this._featureGroup.addEventParent(this),this._nonPointGroup=L.featureGroup(),this._nonPointGroup.addEventParent(this),this._inZoomAnimation=0,this._needsClustering=[],this._needsRemoving=[],this._currentShownBounds=null,this._queue=[],this._childMarkerEventHandlers={dragstart:this._childMarkerDragStart,move:this._childMarkerMoved,dragend:this._childMarkerDragEnd};var t=L.DomUtil.TRANSITION&&this.options.animate;L.extend(this,t?this._withAnimation:this._noAnimation),this._markerCluster=t?L.MarkerCluster:L.MarkerClusterNonAnimated},addLayer:function(e){if(e instanceof L.LayerGroup)return this.addLayers([e]);if(!e.getLatLng)return this._nonPointGroup.addLayer(e),this.fire(\"layeradd\",{layer:e}),this;if(!this._map)return this._needsClustering.push(e),this.fire(\"layeradd\",{layer:e}),this;if(this.hasLayer(e))return this;this._unspiderfy&&this._unspiderfy(),this._addLayer(e,this._maxZoom),this.fire(\"layeradd\",{layer:e}),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons();var t=e,i=this._zoom;if(e.__parent)for(;t.__parent._zoom>=i;)t=t.__parent;return this._currentShownBounds.contains(t.getLatLng())&&(this.options.animateAddingMarkers?this._animationAddLayer(e,t):this._animationAddLayerNonAnimated(e,t)),this},removeLayer:function(e){return e instanceof L.LayerGroup?this.removeLayers([e]):e.getLatLng?this._map?e.__parent?(this._unspiderfy&&(this._unspiderfy(),this._unspiderfyLayer(e)),this._removeLayer(e,!0),this.fire(\"layerremove\",{layer:e}),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),e.off(this._childMarkerEventHandlers,this),this._featureGroup.hasLayer(e)&&(this._featureGroup.removeLayer(e),e.clusterShow&&e.clusterShow()),this):this:(!this._arraySplice(this._needsClustering,e)&&this.hasLayer(e)&&this._needsRemoving.push({layer:e,latlng:e._latlng}),this.fire(\"layerremove\",{layer:e}),this):(this._nonPointGroup.removeLayer(e),this.fire(\"layerremove\",{layer:e}),this)},addLayers:function(e,t){if(!L.Util.isArray(e))return this.addLayer(e);var i,n=this._featureGroup,r=this._nonPointGroup,s=this.options.chunkedLoading,o=this.options.chunkInterval,a=this.options.chunkProgress,h=e.length,l=0,u=!0;if(this._map){var _=(new Date).getTime(),d=L.bind(function(){for(var c=(new Date).getTime();h>l;l++){if(s&&0===l%200){var p=(new Date).getTime()-c;if(p>o)break}if(i=e[l],i instanceof L.LayerGroup)u&&(e=e.slice(),u=!1),this._extractNonGroupLayers(i,e),h=e.length;else if(i.getLatLng){if(!this.hasLayer(i)&&(this._addLayer(i,this._maxZoom),t||this.fire(\"layeradd\",{layer:i}),i.__parent&&2===i.__parent.getChildCount())){var f=i.__parent.getAllChildMarkers(),m=f[0]===i?f[1]:f[0];n.removeLayer(m)}}else r.addLayer(i),t||this.fire(\"layeradd\",{layer:i})}a&&a(l,h,(new Date).getTime()-_),l===h?(this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds)):setTimeout(d,this.options.chunkDelay)},this);d()}else for(var c=this._needsClustering;h>l;l++)i=e[l],i instanceof L.LayerGroup?(u&&(e=e.slice(),u=!1),this._extractNonGroupLayers(i,e),h=e.length):i.getLatLng?this.hasLayer(i)||c.push(i):r.addLayer(i);return this},removeLayers:function(e){var t,i,n=e.length,r=this._featureGroup,s=this._nonPointGroup,o=!0;if(!this._map){for(t=0;n>t;t++)i=e[t],i instanceof L.LayerGroup?(o&&(e=e.slice(),o=!1),this._extractNonGroupLayers(i,e),n=e.length):(this._arraySplice(this._needsClustering,i),s.removeLayer(i),this.hasLayer(i)&&this._needsRemoving.push({layer:i,latlng:i._latlng}),this.fire(\"layerremove\",{layer:i}));return this}if(this._unspiderfy){this._unspiderfy();var a=e.slice(),h=n;for(t=0;h>t;t++)i=a[t],i instanceof L.LayerGroup?(this._extractNonGroupLayers(i,a),h=a.length):this._unspiderfyLayer(i)}for(t=0;n>t;t++)i=e[t],i instanceof L.LayerGroup?(o&&(e=e.slice(),o=!1),this._extractNonGroupLayers(i,e),n=e.length):i.__parent?(this._removeLayer(i,!0,!0),this.fire(\"layerremove\",{layer:i}),r.hasLayer(i)&&(r.removeLayer(i),i.clusterShow&&i.clusterShow())):(s.removeLayer(i),this.fire(\"layerremove\",{layer:i}));return this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds),this},clearLayers:function(){return this._map||(this._needsClustering=[],this._needsRemoving=[],delete this._gridClusters,delete this._gridUnclustered),this._noanimationUnspiderfy&&this._noanimationUnspiderfy(),this._featureGroup.clearLayers(),this._nonPointGroup.clearLayers(),this.eachLayer(function(e){e.off(this._childMarkerEventHandlers,this),delete e.__parent},this),this._map&&this._generateInitialClusters(),this},getBounds:function(){var e=new L.LatLngBounds;this._topClusterLevel&&e.extend(this._topClusterLevel._bounds);for(var t=this._needsClustering.length-1;t>=0;t--)e.extend(this._needsClustering[t].getLatLng());return e.extend(this._nonPointGroup.getBounds()),e},eachLayer:function(e,t){var i,n,r,s=this._needsClustering.slice(),o=this._needsRemoving;for(this._topClusterLevel&&this._topClusterLevel.getAllChildMarkers(s),n=s.length-1;n>=0;n--){for(i=!0,r=o.length-1;r>=0;r--)if(o[r].layer===s[n]){i=!1;break}i&&e.call(t,s[n])}this._nonPointGroup.eachLayer(e,t)},getLayers:function(){var e=[];return this.eachLayer(function(t){e.push(t)}),e},getLayer:function(e){var t=null;return e=parseInt(e,10),this.eachLayer(function(i){L.stamp(i)===e&&(t=i)}),t},hasLayer:function(e){if(!e)return!1;var t,i=this._needsClustering;for(t=i.length-1;t>=0;t--)if(i[t]===e)return!0;for(i=this._needsRemoving,t=i.length-1;t>=0;t--)if(i[t].layer===e)return!1;return!(!e.__parent||e.__parent._group!==this)||this._nonPointGroup.hasLayer(e)},zoomToShowLayer:function(e,t){\"function\"!=typeof t&&(t=function(){});var i=function(){!e._icon&&!e.__parent._icon||this._inZoomAnimation||(this._map.off(\"moveend\",i,this),this.off(\"animationend\",i,this),e._icon?t():e.__parent._icon&&(this.once(\"spiderfied\",t,this),e.__parent.spiderfy()))};e._icon&&this._map.getBounds().contains(e.getLatLng())?t():e.__parent._zoomt;t++)n=this._needsRemoving[t],n.newlatlng=n.layer._latlng,n.layer._latlng=n.latlng;for(t=0,i=this._needsRemoving.length;i>t;t++)n=this._needsRemoving[t],this._removeLayer(n.layer,!0),n.layer._latlng=n.newlatlng;this._needsRemoving=[],this._zoom=Math.round(this._map._zoom),this._currentShownBounds=this._getExpandedVisibleBounds(),this._map.on(\"zoomend\",this._zoomEnd,this),this._map.on(\"moveend\",this._moveEnd,this),this._spiderfierOnAdd&&this._spiderfierOnAdd(),this._bindEvents(),i=this._needsClustering,this._needsClustering=[],this.addLayers(i,!0)},onRemove:function(e){e.off(\"zoomend\",this._zoomEnd,this),e.off(\"moveend\",this._moveEnd,this),this._unbindEvents(),this._map._mapPane.className=this._map._mapPane.className.replace(\" leaflet-cluster-anim\",\"\"),this._spiderfierOnRemove&&this._spiderfierOnRemove(),delete this._maxLat,this._hideCoverage(),this._featureGroup.remove(),this._nonPointGroup.remove(),this._featureGroup.clearLayers(),this._map=null},getVisibleParent:function(e){for(var t=e;t&&!t._icon;)t=t.__parent;return t||null},_arraySplice:function(e,t){for(var i=e.length-1;i>=0;i--)if(e[i]===t)return e.splice(i,1),!0},_removeFromGridUnclustered:function(e,t){for(var i=this._map,n=this._gridUnclustered,r=Math.floor(this._map.getMinZoom());t>=r&&n[t].removeObject(e,i.project(e.getLatLng(),t));t--);},_childMarkerDragStart:function(e){e.target.__dragStart=e.target._latlng},_childMarkerMoved:function(e){if(!this._ignoreMove&&!e.target.__dragStart){var t=e.target._popup&&e.target._popup.isOpen();this._moveChild(e.target,e.oldLatLng,e.latlng),t&&e.target.openPopup()}},_moveChild:function(e,t,i){e._latlng=t,this.removeLayer(e),e._latlng=i,this.addLayer(e)},_childMarkerDragEnd:function(e){var t=e.target.__dragStart;delete e.target.__dragStart,t&&this._moveChild(e.target,t,e.target._latlng)},_removeLayer:function(e,t,i){var n=this._gridClusters,r=this._gridUnclustered,s=this._featureGroup,o=this._map,a=Math.floor(this._map.getMinZoom());t&&this._removeFromGridUnclustered(e,this._maxZoom);var h,l=e.__parent,u=l._markers;for(this._arraySplice(u,e);l&&(l._childCount--,l._boundsNeedUpdate=!0,!(l._zoomt?\"small\":100>t?\"medium\":\"large\",new L.DivIcon({html:\"
\"+t+\"
\",className:\"marker-cluster\"+i,iconSize:new L.Point(40,40)})},_bindEvents:function(){var e=this._map,t=this.options.spiderfyOnMaxZoom,i=this.options.showCoverageOnHover,n=this.options.zoomToBoundsOnClick;(t||n)&&this.on(\"clusterclick\",this._zoomOrSpiderfy,this),i&&(this.on(\"clustermouseover\",this._showCoverage,this),this.on(\"clustermouseout\",this._hideCoverage,this),e.on(\"zoomend\",this._hideCoverage,this))},_zoomOrSpiderfy:function(e){for(var t=e.layer,i=t;1===i._childClusters.length;)i=i._childClusters[0];i._zoom===this._maxZoom&&i._childCount===t._childCount&&this.options.spiderfyOnMaxZoom?t.spiderfy():this.options.zoomToBoundsOnClick&&t.zoomToBounds(),e.originalEvent&&13===e.originalEvent.keyCode&&this._map._container.focus()},_showCoverage:function(e){var t=this._map;this._inZoomAnimation||(this._shownPolygon&&t.removeLayer(this._shownPolygon),e.layer.getChildCount()>2&&e.layer!==this._spiderfied&&(this._shownPolygon=new L.Polygon(e.layer.getConvexHull(),this.options.polygonOptions),t.addLayer(this._shownPolygon)))},_hideCoverage:function(){this._shownPolygon&&(this._map.removeLayer(this._shownPolygon),this._shownPolygon=null)},_unbindEvents:function(){var e=this.options.spiderfyOnMaxZoom,t=this.options.showCoverageOnHover,i=this.options.zoomToBoundsOnClick,n=this._map;(e||i)&&this.off(\"clusterclick\",this._zoomOrSpiderfy,this),t&&(this.off(\"clustermouseover\",this._showCoverage,this),this.off(\"clustermouseout\",this._hideCoverage,this),n.off(\"zoomend\",this._hideCoverage,this))},_zoomEnd:function(){this._map&&(this._mergeSplitClusters(),this._zoom=Math.round(this._map._zoom),this._currentShownBounds=this._getExpandedVisibleBounds())},_moveEnd:function(){if(!this._inZoomAnimation){var e=this._getExpandedVisibleBounds();this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),this._zoom,e),this._topClusterLevel._recursivelyAddChildrenToMap(null,Math.round(this._map._zoom),e),this._currentShownBounds=e}},_generateInitialClusters:function(){var e=Math.ceil(this._map.getMaxZoom()),t=Math.floor(this._map.getMinZoom()),i=this.options.maxClusterRadius,n=i;\"function\"!=typeof i&&(n=function(){return i}),null!==this.options.disableClusteringAtZoom&&(e=this.options.disableClusteringAtZoom-1),this._maxZoom=e,this._gridClusters={},this._gridUnclustered={};for(var r=e;r>=t;r--)this._gridClusters[r]=new L.DistanceGrid(n(r)),this._gridUnclustered[r]=new L.DistanceGrid(n(r));this._topClusterLevel=new this._markerCluster(this,t-1)},_addLayer:function(e,t){var i,n,r=this._gridClusters,s=this._gridUnclustered,o=Math.floor(this._map.getMinZoom());for(this.options.singleMarkerMode&&this._overrideMarkerIcon(e),e.on(this._childMarkerEventHandlers,this);t>=o;t--){i=this._map.project(e.getLatLng(),t);var a=r[t].getNearObject(i);if(a)return a._addChild(e),e.__parent=a,void 0;if(a=s[t].getNearObject(i)){var h=a.__parent;h&&this._removeLayer(a,!1);var l=new this._markerCluster(this,t,a,e);r[t].addObject(l,this._map.project(l._cLatLng,t)),a.__parent=l,e.__parent=l;var u=l;for(n=t-1;n>h._zoom;n--)u=new this._markerCluster(this,n,u),r[n].addObject(u,this._map.project(a.getLatLng(),n));return h._addChild(u),this._removeFromGridUnclustered(a,t),void 0}s[t].addObject(e,i)}this._topClusterLevel._addChild(e),e.__parent=this._topClusterLevel},_refreshClustersIcons:function(){this._featureGroup.eachLayer(function(e){e instanceof L.MarkerCluster&&e._iconNeedsUpdate&&e._updateIcon()})},_enqueue:function(e){this._queue.push(e),this._queueTimeout||(this._queueTimeout=setTimeout(L.bind(this._processQueue,this),300))},_processQueue:function(){for(var e=0;ee?(this._animationStart(),this._animationZoomOut(this._zoom,e)):this._moveEnd()},_getExpandedVisibleBounds:function(){return this.options.removeOutsideVisibleBounds?L.Browser.mobile?this._checkBoundsMaxLat(this._map.getBounds()):this._checkBoundsMaxLat(this._map.getBounds().pad(1)):this._mapBoundsInfinite},_checkBoundsMaxLat:function(e){var t=this._maxLat;return void 0!==t&&(e.getNorth()>=t&&(e._northEast.lat=1/0),e.getSouth()<=-t&&(e._southWest.lat=-1/0)),e},_animationAddLayerNonAnimated:function(e,t){if(t===e)this._featureGroup.addLayer(e);else if(2===t._childCount){t._addToMap();var i=t.getAllChildMarkers();this._featureGroup.removeLayer(i[0]),this._featureGroup.removeLayer(i[1])}else t._updateIcon()},_extractNonGroupLayers:function(e,t){var i,n=e.getLayers(),r=0;for(t=t||[];r=0;i--)o=h[i],n.contains(o._latlng)||r.removeLayer(o)}),this._forceLayout(),this._topClusterLevel._recursivelyBecomeVisible(n,t),r.eachLayer(function(e){e instanceof L.MarkerCluster||!e._icon||e.clusterShow()}),this._topClusterLevel._recursively(n,e,t,function(e){e._recursivelyRestoreChildPositions(t)}),this._ignoreMove=!1,this._enqueue(function(){this._topClusterLevel._recursively(n,e,s,function(e){r.removeLayer(e),e.clusterShow()}),this._animationEnd()})},_animationZoomOut:function(e,t){this._animationZoomOutSingle(this._topClusterLevel,e-1,t),this._topClusterLevel._recursivelyAddChildrenToMap(null,t,this._getExpandedVisibleBounds()),this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,Math.floor(this._map.getMinZoom()),e,this._getExpandedVisibleBounds())},_animationAddLayer:function(e,t){var i=this,n=this._featureGroup;n.addLayer(e),t!==e&&(t._childCount>2?(t._updateIcon(),this._forceLayout(),this._animationStart(),e._setPos(this._map.latLngToLayerPoint(t.getLatLng())),e.clusterHide(),this._enqueue(function(){n.removeLayer(e),e.clusterShow(),i._animationEnd()})):(this._forceLayout(),i._animationStart(),i._animationZoomOutSingle(t,this._map.getMaxZoom(),this._zoom)))}},_animationZoomOutSingle:function(e,t,i){var n=this._getExpandedVisibleBounds(),r=Math.floor(this._map.getMinZoom());e._recursivelyAnimateChildrenInAndAddSelfToMap(n,r,t+1,i);var s=this;this._forceLayout(),e._recursivelyBecomeVisible(n,i),this._enqueue(function(){if(1===e._childCount){var o=e._markers[0];this._ignoreMove=!0,o.setLatLng(o.getLatLng()),this._ignoreMove=!1,o.clusterShow&&o.clusterShow()}else e._recursively(n,i,r,function(e){e._recursivelyRemoveChildrenFromMap(n,r,t+1)});s._animationEnd()})},_animationEnd:function(){this._map&&(this._map._mapPane.className=this._map._mapPane.className.replace(\" leaflet-cluster-anim\",\"\")),this._inZoomAnimation--,this.fire(\"animationend\")},_forceLayout:function(){L.Util.falseFn(document.body.offsetWidth)}}),L.markerClusterGroup=function(e){return new L.MarkerClusterGroup(e)};var i=L.MarkerCluster=L.Marker.extend({options:L.Icon.prototype.options,initialize:function(e,t,i,n){L.Marker.prototype.initialize.call(this,i?i._cLatLng||i.getLatLng():new L.LatLng(0,0),{icon:this,pane:e.options.clusterPane}),this._group=e,this._zoom=t,this._markers=[],this._childClusters=[],this._childCount=0,this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._bounds=new L.LatLngBounds,i&&this._addChild(i),n&&this._addChild(n)},getAllChildMarkers:function(e,t){e=e||[];for(var i=this._childClusters.length-1;i>=0;i--)this._childClusters[i].getAllChildMarkers(e);for(var n=this._markers.length-1;n>=0;n--)t&&this._markers[n].__dragStart||e.push(this._markers[n]);return e},getChildCount:function(){return this._childCount},zoomToBounds:function(e){for(var t,i=this._childClusters.slice(),n=this._group._map,r=n.getBoundsZoom(this._bounds),s=this._zoom+1,o=n.getZoom();i.length>0&&r>s;){s++;var a=[];for(t=0;ts?this._group._map.setView(this._latlng,s):o>=r?this._group._map.setView(this._latlng,o+1):this._group._map.fitBounds(this._bounds,e)},getBounds:function(){var e=new L.LatLngBounds;return e.extend(this._bounds),e},_updateIcon:function(){this._iconNeedsUpdate=!0,this._icon&&this.setIcon(this)},createIcon:function(){return this._iconNeedsUpdate&&(this._iconObj=this._group.options.iconCreateFunction(this),this._iconNeedsUpdate=!1),this._iconObj.createIcon()},createShadow:function(){return this._iconObj.createShadow()},_addChild:function(e,t){this._iconNeedsUpdate=!0,this._boundsNeedUpdate=!0,this._setClusterCenter(e),e instanceof L.MarkerCluster?(t||(this._childClusters.push(e),e.__parent=this),this._childCount+=e._childCount):(t||this._markers.push(e),this._childCount++),this.__parent&&this.__parent._addChild(e,!0)},_setClusterCenter:function(e){this._cLatLng||(this._cLatLng=e._cLatLng||e._latlng)},_resetBounds:function(){var e=this._bounds;e._southWest&&(e._southWest.lat=1/0,e._southWest.lng=1/0),e._northEast&&(e._northEast.lat=-1/0,e._northEast.lng=-1/0)},_recalculateBounds:function(){var e,t,i,n,r=this._markers,s=this._childClusters,o=0,a=0,h=this._childCount;if(0!==h){for(this._resetBounds(),e=0;e=0;i--)n=r[i],n._icon&&(n._setPos(t),n.clusterHide())},function(e){var i,n,r=e._childClusters;for(i=r.length-1;i>=0;i--)n=r[i],n._icon&&(n._setPos(t),n.clusterHide())})},_recursivelyAnimateChildrenInAndAddSelfToMap:function(e,t,i,n){this._recursively(e,n,t,function(r){r._recursivelyAnimateChildrenIn(e,r._group._map.latLngToLayerPoint(r.getLatLng()).round(),i),r._isSingleParent()&&i-1===n?(r.clusterShow(),r._recursivelyRemoveChildrenFromMap(e,t,i)):r.clusterHide(),r._addToMap()})},_recursivelyBecomeVisible:function(e,t){this._recursively(e,this._group._map.getMinZoom(),t,null,function(e){e.clusterShow()})},_recursivelyAddChildrenToMap:function(e,t,i){this._recursively(i,this._group._map.getMinZoom()-1,t,function(n){if(t!==n._zoom)for(var r=n._markers.length-1;r>=0;r--){var s=n._markers[r];i.contains(s._latlng)&&(e&&(s._backupLatlng=s.getLatLng(),s.setLatLng(e),s.clusterHide&&s.clusterHide()),n._group._featureGroup.addLayer(s))}},function(t){t._addToMap(e)})},_recursivelyRestoreChildPositions:function(e){for(var t=this._markers.length-1;t>=0;t--){var i=this._markers[t];i._backupLatlng&&(i.setLatLng(i._backupLatlng),delete i._backupLatlng)}if(e-1===this._zoom)for(var n=this._childClusters.length-1;n>=0;n--)this._childClusters[n]._restorePosition();else for(var r=this._childClusters.length-1;r>=0;r--)this._childClusters[r]._recursivelyRestoreChildPositions(e)},_restorePosition:function(){this._backupLatlng&&(this.setLatLng(this._backupLatlng),delete this._backupLatlng)},_recursivelyRemoveChildrenFromMap:function(e,t,i,n){var r,s;this._recursively(e,t-1,i-1,function(e){for(s=e._markers.length-1;s>=0;s--)r=e._markers[s],n&&n.contains(r._latlng)||(e._group._featureGroup.removeLayer(r),r.clusterShow&&r.clusterShow())},function(e){for(s=e._childClusters.length-1;s>=0;s--)r=e._childClusters[s],n&&n.contains(r._latlng)||(e._group._featureGroup.removeLayer(r),r.clusterShow&&r.clusterShow())})},_recursively:function(e,t,i,n,r){var s,o,a=this._childClusters,h=this._zoom;if(h>=t&&(n&&n(this),r&&h===i&&r(this)),t>h||i>h)for(s=a.length-1;s>=0;s--)o=a[s],o._boundsNeedUpdate&&o._recalculateBounds(),e.intersects(o._bounds)&&o._recursively(e,t,i,n,r)},_isSingleParent:function(){return this._childClusters.length>0&&this._childClusters[0]._childCount===this._childCount}});L.Marker.include({clusterHide:function(){var e=this.options.opacity;return this.setOpacity(0),this.options.opacity=e,this},clusterShow:function(){return this.setOpacity(this.options.opacity)}}),L.DistanceGrid=function(e){this._cellSize=e,this._sqCellSize=e*e,this._grid={},this._objectPoint={}},L.DistanceGrid.prototype={addObject:function(e,t){var i=this._getCoord(t.x),n=this._getCoord(t.y),r=this._grid,s=r[n]=r[n]||{},o=s[i]=s[i]||[],a=L.Util.stamp(e);this._objectPoint[a]=t,o.push(e)},updateObject:function(e,t){this.removeObject(e),this.addObject(e,t)},removeObject:function(e,t){var i,n,r=this._getCoord(t.x),s=this._getCoord(t.y),o=this._grid,a=o[s]=o[s]||{},h=a[r]=a[r]||[];for(delete this._objectPoint[L.Util.stamp(e)],i=0,n=h.length;n>i;i++)if(h[i]===e)return h.splice(i,1),1===n&&delete a[r],!0},eachObject:function(e,t){var i,n,r,s,o,a,h,l=this._grid;for(i in l){o=l[i];for(n in o)for(a=o[n],r=0,s=a.length;s>r;r++)h=e.call(t,a[r]),h&&(r--,s--)}},getNearObject:function(e){var t,i,n,r,s,o,a,h,l=this._getCoord(e.x),u=this._getCoord(e.y),_=this._objectPoint,d=this._sqCellSize,c=null;for(t=u-1;u+1>=t;t++)if(r=this._grid[t])for(i=l-1;l+1>=i;i++)if(s=r[i])for(n=0,o=s.length;o>n;n++)a=s[n],h=this._sqDist(_[L.Util.stamp(a)],e),(d>h||d>=h&&null===c)&&(d=h,c=a);return c},_getCoord:function(e){var t=Math.floor(e/this._cellSize);return isFinite(t)?t:e},_sqDist:function(e,t){var i=t.x-e.x,n=t.y-e.y;return i*i+n*n}},function(){L.QuickHull={getDistant:function(e,t){var i=t[1].lat-t[0].lat,n=t[0].lng-t[1].lng;return n*(e.lat-t[0].lat)+i*(e.lng-t[0].lng)},findMostDistantPointFromBaseLine:function(e,t){var i,n,r,s=0,o=null,a=[];for(i=t.length-1;i>=0;i--)n=t[i],r=this.getDistant(n,e),r>0&&(a.push(n),r>s&&(s=r,o=n));return{maxPoint:o,newPoints:a}},buildConvexHull:function(e,t){var i=[],n=this.findMostDistantPointFromBaseLine(e,t);return n.maxPoint?(i=i.concat(this.buildConvexHull([e[0],n.maxPoint],n.newPoints)),i=i.concat(this.buildConvexHull([n.maxPoint,e[1]],n.newPoints))):[e[0]]},getConvexHull:function(e){var t,i=!1,n=!1,r=!1,s=!1,o=null,a=null,h=null,l=null,u=null,_=null;for(t=e.length-1;t>=0;t--){var d=e[t];(i===!1||d.lat>i)&&(o=d,i=d.lat),(n===!1||d.latr)&&(h=d,r=d.lng),(s===!1||d.lng=0;t--)e=i[t].getLatLng(),n.push(e);return L.QuickHull.getConvexHull(n)}}),L.MarkerCluster.include({_2PI:2*Math.PI,_circleFootSeparation:25,_circleStartAngle:0,_spiralFootSeparation:28,_spiralLengthStart:11,_spiralLengthFactor:5,_circleSpiralSwitchover:9,spiderfy:function(){if(this._group._spiderfied!==this&&!this._group._inZoomAnimation){var e,t=this.getAllChildMarkers(null,!0),i=this._group,n=i._map,r=n.latLngToLayerPoint(this._latlng);this._group._unspiderfy(),this._group._spiderfied=this,t.length>=this._circleSpiralSwitchover?e=this._generatePointsSpiral(t.length,r):(r.y+=10,e=this._generatePointsCircle(t.length,r)),this._animationSpiderfy(t,e)}},unspiderfy:function(e){this._group._inZoomAnimation||(this._animationUnspiderfy(e),this._group._spiderfied=null)},_generatePointsCircle:function(e,t){var i,n,r=this._group.options.spiderfyDistanceMultiplier*this._circleFootSeparation*(2+e),s=r/this._2PI,o=this._2PI/e,a=[];for(s=Math.max(s,35),a.length=e,i=0;e>i;i++)n=this._circleStartAngle+i*o,a[i]=new L.Point(t.x+s*Math.cos(n),t.y+s*Math.sin(n))._round();return a},_generatePointsSpiral:function(e,t){var i,n=this._group.options.spiderfyDistanceMultiplier,r=n*this._spiralLengthStart,s=n*this._spiralFootSeparation,o=n*this._spiralLengthFactor*this._2PI,a=0,h=[];for(h.length=e,i=e;i>=0;i--)e>i&&(h[i]=new L.Point(t.x+r*Math.cos(a),t.y+r*Math.sin(a))._round()),a+=s/r+5e-4*i,r+=o/a;return h},_noanimationUnspiderfy:function(){var e,t,i=this._group,n=i._map,r=i._featureGroup,s=this.getAllChildMarkers(null,!0);for(i._ignoreMove=!0,this.setOpacity(1),t=s.length-1;t>=0;t--)e=s[t],r.removeLayer(e),e._preSpiderfyLatlng&&(e.setLatLng(e._preSpiderfyLatlng),delete e._preSpiderfyLatlng),e.setZIndexOffset&&e.setZIndexOffset(0),e._spiderLeg&&(n.removeLayer(e._spiderLeg),delete e._spiderLeg);i.fire(\"unspiderfied\",{cluster:this,markers:s}),i._ignoreMove=!1,i._spiderfied=null}}),L.MarkerClusterNonAnimated=L.MarkerCluster.extend({_animationSpiderfy:function(e,t){var i,n,r,s,o=this._group,a=o._map,h=o._featureGroup,l=this._group.options.spiderLegPolylineOptions;for(o._ignoreMove=!0,i=0;i=0;i--)a=u.layerPointToLatLng(t[i]),n=e[i],n._preSpiderfyLatlng=n._latlng,n.setLatLng(a),n.clusterShow&&n.clusterShow(),p&&(r=n._spiderLeg,s=r._path,s.style.strokeDashoffset=0,r.setStyle({opacity:m}));this.setOpacity(.3),l._ignoreMove=!1,setTimeout(function(){l._animationEnd(),l.fire(\"spiderfied\",{cluster:h,markers:e})},200)},_animationUnspiderfy:function(e){var t,i,n,r,s,o,a=this,h=this._group,l=h._map,u=h._featureGroup,_=e?l._latLngToNewLayerPoint(this._latlng,e.zoom,e.center):l.latLngToLayerPoint(this._latlng),d=this.getAllChildMarkers(null,!0),c=L.Path.SVG;for(h._ignoreMove=!0,h._animationStart(),this.setOpacity(1),i=d.length-1;i>=0;i--)t=d[i],t._preSpiderfyLatlng&&(t.closePopup(),t.setLatLng(t._preSpiderfyLatlng),delete t._preSpiderfyLatlng,o=!0,t._setPos&&(t._setPos(_),o=!1),t.clusterHide&&(t.clusterHide(),o=!1),o&&u.removeLayer(t),c&&(n=t._spiderLeg,r=n._path,s=r.getTotalLength()+.1,r.style.strokeDashoffset=s,n.setStyle({opacity:0})));h._ignoreMove=!1,setTimeout(function(){var e=0;for(i=d.length-1;i>=0;i--)t=d[i],t._spiderLeg&&e++;for(i=d.length-1;i>=0;i--)t=d[i],t._spiderLeg&&(t.clusterShow&&t.clusterShow(),t.setZIndexOffset&&t.setZIndexOffset(0),e>1&&u.removeLayer(t),l.removeLayer(t._spiderLeg),delete t._spiderLeg);h._animationEnd(),h.fire(\"unspiderfied\",{cluster:a,markers:d})},200)}}),L.MarkerClusterGroup.include({_spiderfied:null,unspiderfy:function(){this._unspiderfy.apply(this,arguments)},_spiderfierOnAdd:function(){this._map.on(\"click\",this._unspiderfyWrapper,this),this._map.options.zoomAnimation&&this._map.on(\"zoomstart\",this._unspiderfyZoomStart,this),this._map.on(\"zoomend\",this._noanimationUnspiderfy,this),L.Browser.touch||this._map.getRenderer(this)},_spiderfierOnRemove:function(){this._map.off(\"click\",this._unspiderfyWrapper,this),this._map.off(\"zoomstart\",this._unspiderfyZoomStart,this),this._map.off(\"zoomanim\",this._unspiderfyZoomAnim,this),this._map.off(\"zoomend\",this._noanimationUnspiderfy,this),this._noanimationUnspiderfy()\n},_unspiderfyZoomStart:function(){this._map&&this._map.on(\"zoomanim\",this._unspiderfyZoomAnim,this)},_unspiderfyZoomAnim:function(e){L.DomUtil.hasClass(this._map._mapPane,\"leaflet-touching\")||(this._map.off(\"zoomanim\",this._unspiderfyZoomAnim,this),this._unspiderfy(e))},_unspiderfyWrapper:function(){this._unspiderfy()},_unspiderfy:function(e){this._spiderfied&&this._spiderfied.unspiderfy(e)},_noanimationUnspiderfy:function(){this._spiderfied&&this._spiderfied._noanimationUnspiderfy()},_unspiderfyLayer:function(e){e._spiderLeg&&(this._featureGroup.removeLayer(e),e.clusterShow&&e.clusterShow(),e.setZIndexOffset&&e.setZIndexOffset(0),this._map.removeLayer(e._spiderLeg),delete e._spiderLeg)}}),L.MarkerClusterGroup.include({refreshClusters:function(e){return e?e instanceof L.MarkerClusterGroup?e=e._topClusterLevel.getAllChildMarkers():e instanceof L.LayerGroup?e=e._layers:e instanceof L.MarkerCluster?e=e.getAllChildMarkers():e instanceof L.Marker&&(e=[e]):e=this._topClusterLevel.getAllChildMarkers(),this._flagParentsIconsNeedUpdate(e),this._refreshClustersIcons(),this.options.singleMarkerMode&&this._refreshSingleMarkerModeMarkers(e),this},_flagParentsIconsNeedUpdate:function(e){var t,i;for(t in e)for(i=e[t].__parent;i;)i._iconNeedsUpdate=!0,i=i.__parent},_refreshSingleMarkerModeMarkers:function(e){var t,i;for(t in e)i=e[t],this.hasLayer(i)&&i.setIcon(this._overrideMarkerIcon(i))}}),L.Marker.include({refreshIconOptions:function(e,t){var i=this.options.icon;return L.setOptions(i,e),this.setIcon(i),t&&this.__parent&&this.__parent._group.refreshClusters(this),this}}),e.MarkerClusterGroup=t,e.MarkerCluster=i});\n//# sourceMappingURL=leaflet.markercluster.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// /home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/leaflet.markercluster/dist/leaflet.markercluster.js\n// module id = 93\n// module chunks = 0","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['./geocode'], function(geocodeModel) {\n 'use strict';\n\n return function(data) {\n if (!(data.batchItems instanceof Array)) {\n return null;\n }\n return data.batchItems.map(function(batchItem) {\n if (batchItem.response.error) {\n return { error: batchItem.response.error};\n } else {\n return geocodeModel(batchItem.response);\n }\n });\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/geocode/batchGeocode.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Allows to make search request using the TomTom's\n * [Search API - Fuzzy Search](https://developer.tomtom.com/search-api/search-api-documentation-search/fuzzy-search).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"FuzzySearch/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"FuzzySearch/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * The list of all supported category codes are available\n * [here](https://developer.tomtom.com/search-api/search-api-documentation/supported-category-codes).\n *\n * @example\n * ```js\n * function callbackFn(result) {\n * console.log(result);\n * };\n *\n * // Using a callback function\n * tomtom.fuzzySearch()\n * .key() // this is optional if you defined a global key earlier\n * .query(\"Amsterdam\")\n * .callback(callbackFn)\n * .go();\n *\n * // Or using a Promise\n * tomtom.fuzzySearch()\n * .key() // this is optional if you defined a global key earlier\n * .query(\"Amsterdam\")\n * .go()\n * .then(callbackFn);\n * ```\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * @class FuzzySearch\n * @extends Search\n * @uses ExtendedPostalCodesForMixin\n * @uses CenterMixin\n * @uses RadiusMixin\n * @uses BoundingBoxMixin\n * @uses CountrySetMixin\n * @uses OffsetMixin\n * @uses BestResultMixin\n * @uses ViewMixin\n * @uses QueryMixin\n * @uses TypeaheadMixin\n * @constructor\n * @module Services\n *\n * @param {Object} [options] Options to be passed to the fuzzy search call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.unwrapBbox=false] Changes the bounding box coordinates allowing longitudes that\n * exceeds 180 degrees when is necessary. {{#crossLink \"Search/unwrapBbox:method\"}}More{{/crossLink}}\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {String} [options.view=\"Unified\"] Geopolitical view\n * @param {String} [options.language=null] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n *\n * @param {String} [options.query] Text that will be searched\n * This parameter is required to be defined either in the options passed to the constructor or using the\n * **query()** method.\n * @param {Boolean} [options.typeahead=false] If is enabled the query will be interpreted as a\n * partial input and the **predictive** mode will be used\n * @param {Boolean} [options.bestResult=false] Return only one result, the best match result.\n * @param {Number[]|String|L.LatLng|Object} [options.center] Location where results should be biased\n * @param {Number} [options.radius=0] The search radius in meters using the coordinates given to the **center**\n * option as origin.\n * If the radius is zero the results will not be constrained.\n * @param {Number} [options.offset=0] Starting offset of the returned results within the full result set\n * @param {String} [options.countrySet] List of country codes for limit the search request to those specific\n * political limits\n * @param {Object|Number[]|Object[]|String} [options.boundingBox] The bounding box is an area within the search\n * results needs to limit to. If it is omitted then the whole world will be taken into consideration.\n * @param {String} [options.extendedPostalCodesFor] Represent the indexes for which extended postal codes should\n * be included in the results\n * @param {String} [options.idxSet] Specify which indexes to utilize for the search\n * @param {Number} [options.maxFuzzyLevel=2] Maximum fuzzyness level to be used\n */\ndefine(['./search', '../validators'], function(search, validators) {\n 'use strict';\n\n var SearchPrototype = search.prototype.constructor;\n\n function FuzzySearch(options) {\n SearchPrototype.call(this, options);\n\n this.fields.type = {\n defaultValue: this.TYPE.search,\n visible: false\n };\n\n /**\n * Sets or gets the current value of the option \"minFuzzyLevel\".\n *\n * The maximum allowed value is 4.\n *\n * @method minFuzzyLevel\n * @chainable\n * @param {Number} [newValue] The possible values are the integers 1, 2, 3 and 4\n * @throws {TypeError} If the given argument cannot be converted to a valid value\n * @return {Number} The same service instance or the current option value if no argument was given\n */\n this.fields.minFuzzyLevel = {\n validator: validators.fuzzinessLevel,\n defaultValue: 1\n };\n\n /**\n * Sets or gets the current value of the option \"maxFuzzyLevel\".\n *\n * The maximum allowed value is 4.\n *\n * @method maxFuzzyLevel\n * @chainable\n * @param {Number} [newValue] The possible values are the integers 1, 2, 3 and 4\n * @throws {TypeError} If the given argument cannot be converted to a valid value\n * @return {Number} The same service instance or the current option value if no argument was given\n */\n this.fields.maxFuzzyLevel = {\n validator: validators.fuzzinessLevel,\n defaultValue: 2\n };\n\n this.fields.idxSet = {\n validator: validators.string\n };\n }\n\n FuzzySearch.prototype = new SearchPrototype();\n FuzzySearch.prototype.constructor = FuzzySearch;\n\n return function(options) {\n return (new FuzzySearch(options)).construct();\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/search/fuzzySearch.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine([], function() {\n 'use strict';\n\n return function(data) {\n var coordinates = [];\n if (data.error) {\n throw new Error(data.error);\n }\n if (data.reachableRange &&\n data.reachableRange.boundary &&\n Array.isArray(data.reachableRange.boundary)\n ) {\n coordinates = data.reachableRange.boundary.map(function(coordinates) {\n return [coordinates.longitude, coordinates.latitude];\n });\n }\n return {\n type: 'Feature',\n geometry: {\n type: 'Polygon',\n coordinates: [coordinates]\n }\n };\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/routing/reachableRange.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This widget displays a search input control over the map capable of executing\n * search requests and displaying the results in a dropdown under the input.\n *\n * By default the widget collapses when is empty and loses focus.\n *\n * This widget uses the fuzzy search implementation to execute search requests.\n *\n * @example\n * ```javascript\n * // SearchBox with location button and Polish language\n * var widget = new L.SearchBox({\n * location: true,\n * language: 'pl-PL',\n * view: 'IN'\n * });\n * widget.addTo(map);\n *\n * // some time later...\n * widget.language('de-DE');\n * widget.view('IN');\n * ```\n *\n * @class SearchBox\n * @namespace L\n * @extends L.Control\n * @uses L.Evented\n * @module Widgets\n * @constructor\n * @param {Object} [options] Options to be passed to the searchBox control\n * @param {String} [options.placeholder=\"Search for place...\"] The placeholder text to be displayed inside\n * searchBox\n * @param {String} [options.id] Id of a searchBox's DOM element\n * @param {Boolean} [options.collapsed=false] Flag if checkbox is collapsed on initialization\n * @param {Boolean} [options.collapsible=true] Flag if searchBox can be collapsed\n * @param {Boolean} [options.location=false] Display location button to search for current location\n * @param {String} [options.icon=\"icon-search\"] Determines icon of the searchBox\n * @param {Boolean} [options.disablePOIs=false] Determines whether search results should not contain POIs\n * @param {Boolean} [options.viewportBoundingBox=false] Enables or disables searching on a currently visible\n * map area. If unset, search service will use current map center.\n * @param {Boolean} [options.withPrompt=true] Should widget show user prompts while typing, the call will be\n * throttled according to the following settings: `minNumberCharsPrompt`, `throttleTimePrompt`, `idleTimeKeyPress`\n * @param {String|Boolean} [options.searchOnDragEnd=\"always\"] This option defines what the widget should do after\n * the user finish dragging the map (and therefore changing the maps's viewport).\n * There are five possible values:\n * - `\"always\"`: The widget will repeat the last search everytime the map's viewport changes.\n * - `\"open\"`: The last search will be repeated only if the list of results was being displayed\n * when the map's dragging occurs.\n * - `\"never\"`: No action will be taken when the user change the map's viewport.\n * - `true`: Alias of `\"always\"`.\n * - `false`: Alias of `\"never\"`.\n * @param {Number} [options.minNumberCharsPrompt=3] Sets the minimal required number of characters that are\n * required to perform search\n * @param {Number} [options.throttleTimePrompt=1000] Sets the minimal time between the following search\n * service calls when user types text into the input\n * @param {Number} [options.idleTimeKeyPress=200] Sets the time between following key press events to assume\n * the user finished typing the query\n * @param {String} [options.language] Language code, for example 'en-GB', 'en-US', 'de-DE'. Full list is available\n * here.\n * @param {String} [options.view] Sets the geopolitical view used in the search service. Accepted values:\n * 'AR', 'IL', 'MA', 'IN', 'PK' and 'Unified'. Full list is available\n * here.\n * @param {Object} [options.serviceOptions] Options to be passed to service. See search service options\n * @param {Boolean} [options.imperialDistance=null] Set this option if you want to use a specific unit measurement\n * system for the new instance of the widget instead of use the default unit\n */\n/* jshint nomen:false */\ndefine([\n 'display/map',\n 'services/search/fuzzySearch',\n 'services/reverseGeocode/reverseGeocode',\n 'widgets/controls/location',\n 'services/utils',\n 'unitFormatConverter/unitFormatConverter',\n '../../config/unit/unitTypes'\n],\nfunction(L,\n searchService,\n reverseGeocodeService,\n location,\n utils,\n unitFormatConverter,\n unitTypes) {\n 'use strict';\n\n var ENTER = 13,\n ARROWUP = 38,\n ARROWDOWN = 40,\n EVENTS = {\n ResultCreated: 'resultCreated',\n ResultClicked: 'resultClicked',\n ClearButtonClicked: 'clearButtonClicked',\n ResultsCleared: 'resultsCleared',\n ResultsFound: 'resultsFound',\n ResultsDrawn: 'resultsDrawn',\n SearchInputChanged: 'searchInputChanged',\n LocationError: 'locationError'\n };\n\n /**\n * @param {HTMLElement} element\n * @param {Object} [data]\n * @param {String} [text]\n * @return {Object}\n */\n function searchBoxEvent(element, data, text) {\n return {\n element: element,\n data: data,\n text: text\n };\n }\n\n function createNoResults(control) {\n var result = L.DomUtil.create('div', 'leaflet-control-search-result', control.resultsContainer);\n result.innerHTML = 'No results found.';\n control.resultsContainer.style.height = 'auto';\n\n control.fire(control.Events.ResultCreated);\n }\n\n function locationError(control) {\n return function(error) {\n control.input.value = '';\n control.input.focus();\n control.clearResults();\n createNoResults(control);\n control.fire(control.Events.LocationError, searchBoxEvent(control.input, error, error.message));\n console.error(error);\n };\n }\n\n function resolveResultText(resultData) {\n if (!resultData || !resultData.address) {\n return resultData;\n }\n\n return resultData.poi ? resultData.poi.name + ', ' + resultData.address.freeformAddress :\n resultData.address.freeformAddress;\n }\n\n function locationSuccess(control) {\n return function(location) {\n var options = utils.clone(control.options.serviceOptions);\n reverseGeocodeService(options).position(location.latlng).go(function(result) {\n result.position = location.latlng.lng ? {\n lat: location.latlng.lat,\n lon: location.latlng.lng\n } : location.latlng;\n\n control.clearResults();\n control.input.value = resolveResultText(result);\n control.input.focus();\n control.fire(\n control.Events.ResultClicked,\n searchBoxEvent(control.locationIcon, result, control.input.value)\n );\n });\n };\n }\n\n function createCurrentLocationButton(control) {\n control.location = location({\n size: null\n });\n control.locationIcon = control.location.onAdd(control._map);\n control.inputContainer.appendChild(control.locationIcon);\n control.location.on(control.location.Events.LocationFound, locationSuccess(control));\n control.location.on(control.location.Events.LocationError, locationError(control));\n }\n\n function isResultsListOpen(control) {\n return control.resultsContainer.hasChildNodes();\n }\n\n function onMapEndDrag() {\n var control = this,\n options = control.options,\n reRun = false;\n if (control.lastSearchText.trim().length === 0) {\n return;\n }\n if (options.searchOnDragEnd === 'open' && isResultsListOpen(control)) {\n reRun = true;\n } else if (['always', true].indexOf(options.searchOnDragEnd) !== -1) {\n reRun = true;\n }\n if (reRun) {\n control.search(control.input.value);\n }\n }\n\n function highlightNextResult(keyCode, selectedElement, resultsContainerElement) {\n var highlightClass = 'highlight',\n rules = {\n 38: {\n edgeCase: 'firstChild',\n nextSibling: 'previousElementSibling',\n nextAfterEdgeCase: 'lastChild'\n },\n 40: {\n edgeCase: 'lastChild',\n nextSibling: 'nextElementSibling',\n nextAfterEdgeCase: 'firstChild'\n }\n },\n newlySelectedElement;\n if (selectedElement) {\n selectedElement.className = selectedElement.className.replace(highlightClass, '');\n }\n\n if (!selectedElement || selectedElement === resultsContainerElement[rules[keyCode].edgeCase]) {\n newlySelectedElement = resultsContainerElement[rules[keyCode].nextAfterEdgeCase];\n } else {\n newlySelectedElement = selectedElement[rules[keyCode].nextSibling];\n }\n\n newlySelectedElement.className += ' ' + highlightClass;\n }\n\n function onResultSelect(resultData) {\n if (!resultData) {\n return;\n }\n this.stopSearch = true;\n this.input.value = resolveResultText(resultData);\n this.clearResultsContainer();\n this.input.blur();\n this.fire(this.Events.ResultClicked, searchBoxEvent(this.input, resultData, this.input.value));\n }\n\n function createOnKeyDownHandler(searchBoxControl) {\n var searchOnEnterLastTime = 0,\n searchOnEnterLastValue = '',\n timerId;\n\n return function(event) {\n var code = event.keyCode || event.which,\n selectedResult = this.resultsContainer.getElementsByClassName('highlight')[0],\n selectedResultIndex,\n currentTime,\n currentInputValue,\n throttleTimePrompt,\n deltaTimeToNextSearch;\n\n if (code === ENTER && searchBoxControl.input.value) {\n if (selectedResult) {\n selectedResultIndex = [].indexOf.call(this.resultsContainer.children, selectedResult);\n onResultSelect.call(this, this._searchResponses[selectedResultIndex]);\n } else {\n if (timerId) {\n clearTimeout(timerId);\n }\n\n currentTime = new Date().getTime();\n currentInputValue = searchBoxControl.input.value;\n throttleTimePrompt = searchBoxControl.options.throttleTimePrompt || 1000;\n deltaTimeToNextSearch = throttleTimePrompt - (currentTime - searchOnEnterLastTime);\n\n if (deltaTimeToNextSearch <= 0 || searchOnEnterLastValue !== currentInputValue) {\n searchOnEnterLastTime = currentTime;\n searchOnEnterLastValue = currentInputValue;\n searchBoxControl.search(currentInputValue);\n } else {\n timerId = setTimeout(function() {\n searchOnEnterLastTime = new Date().getTime();\n searchOnEnterLastValue = searchBoxControl.input.value;\n searchBoxControl.search(searchBoxControl.input.value);\n }, deltaTimeToNextSearch);\n }\n }\n }\n\n if (this.resultsContainer.hasChildNodes()) {\n if (code === ARROWUP || code === ARROWDOWN) {\n this.stopSearch = true;\n highlightNextResult.call(this, code, selectedResult, this.resultsContainer);\n }\n }\n };\n }\n\n function getOptionsForSearch(control) {\n var options = utils.clone(control.options.serviceOptions);\n options.query = control.input.value;\n if (control.options.viewportBoundingBox) {\n options.boundingBox = control._map.getBounds();\n } else {\n options.center = control._map.getCenter();\n }\n if (control.options.disablePOIs) {\n options.idxSet = 'PAD,Str,Xstr,Geo,Addr';\n }\n if (typeof options.typeahead !== 'boolean') {\n options.typeahead = true;\n }\n if (control.options.view) {\n options.view = control.options.view;\n }\n if (!utils.isString(options.language)) {\n options.language = control.options.language;\n }\n return options;\n }\n function handleResults(results) {\n this.expand();\n this._searchResponses = results;\n this._redrawResults(true);\n this.fire(this.Events.ResultsFound, searchBoxEvent(this.resultsContainer, results));\n }\n\n function createOnInputChangeHandler(control) {\n var timerId;\n\n function promptSearch() {\n if (control.input.value.length === 0 || control.lastSearchText === control.input.value ||\n control.stopSearch) {\n return;\n }\n\n control.lastSearchText = control.input.value;\n\n searchService(getOptionsForSearch(control)).go(function(result) {\n if (!control.stopSearch) {\n handleResults.call(control, result);\n }\n });\n }\n\n return function() {\n this.fire(this.Events.SearchInputChanged, searchBoxEvent(this.input, this.input.value, this.input.value));\n control.stopSearch = false;\n\n if (timerId) {\n clearTimeout(timerId);\n }\n\n if (this.options.withPrompt && this.input.value.length >= this.options.minNumberCharsPrompt) {\n if (control.options.idleTimeKeyPress === 0) {\n promptSearch();\n } else {\n timerId = setTimeout(promptSearch, control.options.idleTimeKeyPress);\n }\n }\n };\n }\n\n function shouldListenForDragEnd(control) {\n return ['always', 'open', true].indexOf(control.options.searchOnDragEnd) !== -1;\n }\n\n function clearSearchBox() {\n this.input.focus();\n this.input.value = '';\n this.lastSearchText = '';\n this.clearResults();\n this.fire(this.Events.ClearButtonClicked, searchBoxEvent(this.clearButton));\n }\n\n function setHandlers(control, container) {\n L.DomEvent.disableClickPropagation(container);\n L.DomEvent.disableScrollPropagation(container);\n L.DomEvent.on(container, 'drag', L.DomEvent.stopPropagation);\n L.DomEvent.on(container, 'keydown', createOnKeyDownHandler(control), control);\n L.DomEvent.on(container, 'input', createOnInputChangeHandler(control), control);\n\n if (shouldListenForDragEnd(control)) {\n L.DomEvent.on(control._map, 'dragend', onMapEndDrag, control);\n }\n\n L.DomEvent.on(control.clearButton, 'click', clearSearchBox, control);\n if (control.options.collapsible) {\n L.DomEvent.on(control.input, 'focus', control.expand, control);\n L.DomEvent.on(control.input, 'blur', control.collapse, control);\n }\n }\n\n function createDOMElements(control) {\n var container, containerClassname = 'leaflet-control-search';\n if (control.options.collapsible && control.options.collapsed) {\n containerClassname += ' collapsed';\n }\n container = L.DomUtil.create('div', containerClassname);\n control.inputContainer = L.DomUtil.create('div', 'leaflet-control-search-input-container', container);\n control.input = L.DomUtil.create(\n 'input',\n control.options.icon + ' leaflet-control-search-input',\n control.inputContainer\n );\n control.input.required = true;\n control.clearButton = L.DomUtil.create(\n 'div',\n 'leaflet-control-search-input-close-icon icon-close-gray',\n control.inputContainer\n );\n control.resultsContainer = L.DomUtil.create(\n 'div',\n 'leaflet-control-search-results-container',\n container\n );\n if (control.options.location) {\n createCurrentLocationButton(control);\n }\n if (control.options.id) {\n control.input.id = control.options.id;\n }\n setHandlers(control, container);\n control.input.setAttribute('placeholder', control.options.placeholder);\n return container;\n }\n\n function getWordsToHighlight(words) {\n var i;\n words = words.split(/[- ,]+/) || [];\n\n for (i = 0; i < words.length; i += 1) {\n words[i] = utils.encodeStringForRegex(words[i]);\n }\n\n return words;\n }\n\n function highlightWords(control, text) {\n var words = getWordsToHighlight(control.input.value);\n var regex = new RegExp('(' + words.join('|') + ')', 'ig');\n\n return text.replace(\n regex, '$1'\n );\n }\n\n function createResultElement(control, result) {\n var useImperial = control._shouldUseImperialDistance();\n var nameWrapper, addressWrapper, address, distanceElement;\n var resultElement = L.DomUtil.create('div', 'geoResponse-result');\n\n if (typeof result.poi !== 'undefined' && typeof result.poi.name !== 'undefined') {\n nameWrapper = L.DomUtil.create('div', 'geoResponse-result-name');\n nameWrapper.innerHTML = highlightWords(control, result.poi.name);\n resultElement.appendChild(nameWrapper);\n }\n\n if (typeof result.address !== 'undefined') {\n addressWrapper = L.DomUtil.create('div', 'geoResponse-result-address');\n address = [];\n\n if (typeof result.address.freeformAddress !== 'undefined') {\n address.push(result.address.freeformAddress);\n }\n\n if (typeof result.address.countryCodeISO3 !== 'undefined') {\n address.push(result.address.countryCodeISO3);\n }\n\n addressWrapper.innerHTML = highlightWords(control, address.join(', '));\n resultElement.appendChild(addressWrapper);\n }\n\n if (typeof result.dist !== 'undefined') {\n distanceElement = L.DomUtil.create('div', 'geoResponse-result-distance');\n distanceElement.innerHTML = unitFormatConverter.formatDistance(result.dist, useImperial);\n resultElement.appendChild(distanceElement);\n }\n\n return resultElement;\n }\n\n function createResult(control, resultData) {\n var result = L.DomUtil.create('div', 'leaflet-control-search-result', control.resultsContainer);\n result.appendChild(createResultElement(control, resultData));\n control.resultsContainer.style.height = 'auto';\n control.fire(control.Events.ResultCreated, searchBoxEvent(result, resultData));\n\n L.DomEvent.on(result, 'click', function() {\n onResultSelect.call(control, resultData);\n }, control);\n\n L.DomEvent.on(result, 'mouseover', function() {\n this.stopSearch = true;\n }, control);\n }\n\n function handleUnitChange(event) {\n this.options.imperialDistance = event.unit === 'imperial';\n if (isResultsListOpen(this)) {\n this._redrawResults(true);\n }\n }\n\n function handleLocaleChange(event) {\n if (this.definedLanguage) {\n return;\n }\n this.language(event.getValueFor('search'));\n if (this.lastSearchText && isResultsListOpen(this)) {\n this.search(this.lastSearchText);\n }\n }\n\n function updateSearch() {\n if (this.lastSearchText && isResultsListOpen(this)) {\n this.search(this.lastSearchText);\n }\n }\n\n function handleGeopolViewChange(event) {\n if (this.definedGeopolView) {\n return;\n }\n this.options.view = event.code;\n updateSearch.call(this);\n }\n\n L.SearchBox = L.Control.extend({\n includes: L.Evented.prototype,\n\n options: {\n placeholder: 'Search for a place...',\n id: false,\n collapsible: true,\n collapsed: false,\n location: false,\n icon: 'icon-search',\n disablePOIs: false,\n viewportBoundingBox: false,\n minNumberCharsPrompt: 3,\n throttleTimePrompt: 1000,\n idleTimeKeyPress: 200,\n serviceOptions: {},\n position: 'topleft',\n withPrompt: true,\n imperialDistance: null,\n searchOnDragEnd: 'always'\n },\n\n statics: {\n Events: EVENTS\n },\n\n /**\n * @ignore\n * @type {HtmlElement}\n */\n resultsContainer: null,\n\n /**\n * @ignore\n * @type {HtmlElement}\n */\n input: null,\n\n /**\n * @ignore\n * @type {HtmlElement}\n */\n location: undefined,\n\n /**\n * @ignore\n * @type {HtmlElement}\n */\n locationIcon: null,\n\n /**\n * @ignore\n * Store the last search results received.\n * @type {Object[]}\n */\n _searchResponses: [],\n\n /**\n * @ignore\n * @type {String}\n */\n lastSearchText: '',\n\n initialize: function(options) {\n L.Util.setOptions(this, options);\n if (options) {\n this.definedGeopolView = options.view;\n this.definedLanguage = options.language;\n }\n },\n\n onAdd: function(map) {\n this.unitService = map.getUnitService();\n this.unitService.on(L.UnitService.Events.UNIT_CHANGED, handleUnitChange, this);\n this.localeService = map.getLocaleService();\n this.localeService.on(L.LocaleService.Events.LOCALE_CHANGED, handleLocaleChange, this);\n this.geopolService = map.getGeopolViewService();\n this.geopolService.on(L.GeopolViewService.Events.GEOPOL_VIEW_CHANGED, handleGeopolViewChange, this);\n return createDOMElements(this);\n },\n\n onRemove: function() {\n this.unitService.off(L.UnitService.Events.UNIT_CHANGED, handleUnitChange, this);\n this.localeService.off(L.LocaleService.Events.LOCALE_CHANGED, handleLocaleChange, this);\n this.geopolService.off(L.GeopolViewService.Events.GEOPOL_VIEW_CHANGED, handleGeopolViewChange, this);\n if (shouldListenForDragEnd(this)) {\n L.DomEvent.off(this._map, 'dragend', onMapEndDrag, this);\n }\n },\n\n /**\n * @ignore\n * First check the configuration for this instance and then the global configuration.\n * The instance configuration has priority.\n *\n * @return {Boolean}\n */\n _shouldUseImperialDistance: function() {\n if (typeof this.options.imperialDistance === 'boolean') {\n return this.options.imperialDistance;\n }\n return this.unitService.getCurrentUnit().getLabel() === unitTypes.imperial;\n },\n\n /**\n * @ignore\n * Show the list of results under the widget.\n * @param {Boolean} [informNoResults=false] If is TRUE shows a notification saying\n * there's no results no show\n */\n _redrawResults: function(informNoResults) {\n var i, results = this._searchResponses;\n\n this.clearResultsContainer();\n\n if (!results || results.length === 0) {\n if (informNoResults === true) {\n createNoResults(this);\n }\n return;\n }\n\n for (i = 0; i < results.length; i += 1) {\n createResult(this, results[i]);\n }\n\n this.resultsContainer.style.height = 'auto';\n this.fire(this.Events.ResultsDrawn, searchBoxEvent(this.resultsContainer, results));\n },\n\n /**\n * Method used to clear the DOM elements from the search results container.\n *\n * This method just remove the DOM elements but leave the cache with the previous results inside the widget.\n *\n * @method clearResultsContainer\n */\n clearResultsContainer: function() {\n if (this.resultsContainer.hasChildNodes()) {\n this.resultsContainer.style.height = '0px';\n this.resultsContainer.innerHTML = '';\n this.fire(this.Events.ResultsCleared, searchBoxEvent(this.resultsContainer));\n }\n },\n\n /**\n * Method used to clear all the previous search results from the widget.\n *\n * @method clearResults\n */\n clearResults: function() {\n this.clearResultsContainer();\n this._searchResponses = [];\n },\n\n /**\n * Method used to feed the searchBox instance with one search result element.\n *\n * @method setResultData\n * @param {Object} resultData Result data given from search service. Must contain address and/or POI\n * information.\n *\n * @example\n * ```javascript\n * var widget = (new L.SearchBox()).addTo(map);\n * var resultData = {\n * address: {freeformAddress: \"Amsterdam\"},\n * poi: { name: \"TomTom, Oosterdoksstraat, Amsterdam, The Netherlands\" }\n * }\n * widget.setResultData(resultData);\n * ```\n */\n setResultData: function(resultData) {\n if (resultData) {\n this.input.value = resolveResultText(resultData);\n this.clearResults();\n this.input.blur();\n }\n },\n\n /**\n * Start a search using a query string.\n * This method update the content of the input control and also handle the search request.\n *\n * @method search\n * @param {Object|String} text String, Object or reverse geocoding object (with the `query` key) as a search\n * query\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.search(\"Amsterdam\");\n *\n * var reversedGeocodeResponse = {query: \"Amsterdam\"}\n * widget.search(reversedGeocodeResponse);\n * ```\n */\n search: function(text) {\n var searchBox = this;\n if (typeof text === 'object' && text.hasOwnProperty('query')) {\n text = text.query;\n }\n if (!utils.isString(text) || text.length === 0) {\n return;\n }\n this.input.focus();\n this.input.value = text;\n this.lastSearchText = text;\n\n searchService(getOptionsForSearch(searchBox)).go(function(results) {\n handleResults.call(searchBox, results);\n });\n },\n /**\n * Method used to collapse search. Collapsing is possible only if search is empty.\n *\n * @method collapse\n */\n collapse: function() {\n if (!this.input.value) {\n this._container.className += ' collapsed';\n this.clearResultsContainer();\n } else {\n this.expand();\n }\n },\n /**\n * Method used to expand collapsed search.\n *\n * @method expand\n */\n expand: function() {\n this._container.className = this._container.className.replace(/\\b collapsed\\b/, '');\n },\n\n /**\n * Method used to get embedded location widget (if set and added).\n *\n * @method getLocation\n * @return {L.Location}\n */\n getLocation: function() {\n return this.location;\n },\n\n /**\n * Sets the icon by styling search box input.\n *\n * @method setIcon\n * @param {String|undefined} className Name of the CSS class that sets\n * `background-image` property for search box input\n */\n setIcon: function(className) {\n if (utils.isString(className)) {\n this.input.className = this.input.className.replace(/(icon)((-)(\\w+))*/, className);\n }\n },\n\n /**\n * Adds the location icon.\n *\n * @method addLocationIcon\n */\n addLocationIcon: function() {\n if (this.location === undefined) {\n this.options.location = true;\n createCurrentLocationButton(this);\n }\n },\n\n /**\n * Removes the location icon.\n *\n * @method removeLocationIcon\n */\n removeLocationIcon: function() {\n if (this.location !== undefined) {\n this.options.location = false;\n this.locationIcon.parentNode.removeChild(this.locationIcon);\n this.location.clearAllEventListeners();\n this.location = undefined;\n }\n },\n\n /**\n * A setter for the _'language'_ option.\n *\n * The whitelist can be found\n * [here](https://developer.tomtom.com/search-api/search-api-documentation/supported-languages).\n *\n * @method language\n * @param {String} [languageCode] Language code, for example 'en-GB', 'en-US', 'de-DE'. Full list is available\n * here\n * .\n */\n language: function(languageCode) {\n if (null === languageCode || '' === languageCode) {\n delete this.options.language;\n delete this.definedLanguage;\n } else {\n this.options.language = languageCode;\n this.definedLanguage = languageCode;\n }\n },\n\n /**\n * A setter for the 'view' option.\n *\n * Use this setter to set a geopolitical view.\n * When this parameter is used the search service will return values\n * taking in consideration the Geopolitical view used.\n *\n * Accepted values: 'AR', 'IL', 'MA', 'IN', 'PK' and 'Unified'\n *\n * @method view\n * @param {String} [geopolViewCode] Geopotical view code. Full list is available at\n * here\n * .\n */\n view: function(geopolViewCode) {\n if (geopolViewCode === null || geopolViewCode === '') {\n delete this.options.view;\n delete this.definedGeopolView;\n } else {\n this.options.view = geopolViewCode;\n this.definedGeopolView = geopolViewCode;\n }\n updateSearch.call(this);\n },\n\n /**\n * Whenever the input within the search box is changed by the user this event is triggered.\n *\n * @event SearchInputChanged\n * @param {Object} data The current text entered by the user\n * @param {String} text Same as data\n * @param {String} [type=\"searchInputChanged\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.on(L.SearchBox.Events.SearchInputChanged, function(eventObject) {\n * console.log(eventObject.text);\n * });\n * ```\n */\n /**\n * This event appears when response from search service is being processed. For each result which is being\n * rendered on the prompt list such event is fired.\n *\n * @event ResultCreated\n * @param {Object} data The result from search service response that is being processed\n * @param {String} [type=\"resultCreated\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.on(L.SearchBox.Events.ResultCreated, function(eventObject) {\n * console.log(eventObject.data);\n * });\n * ```\n */\n /**\n * Event that is fired when user selects the result from list or when current location is identified.\n *\n * @event ResultClicked\n * @param {Object} data Selected result object from search service response\n * @param {String} text The human readable string representation of selected result\n * @param {String} [type=\"resultClicked\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.on(L.SearchBox.Events.ResultClicked, function(eventObject) {\n * console.log(eventObject.text);\n * console.log(eventObject.data);\n * });\n * ```\n */\n /**\n * Event that is fired when the response from search service is already processed and rendered in a form\n * of list of possible results.\n *\n * @event ResultsDrawn\n * @param {Array} data Array of search service results. Each result has, among other parameters, its\n * `type`, `address` and `position`.\n * @param {String} [type=\"resultsDrawn\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.on(L.SearchBox.Events.ResultsDrawn, function(eventObject) {\n * console.log(eventObject.data);\n * });\n * ```\n */\n /**\n * Event that is fired when the response from search service appears for both normal and prompt query.\n *\n * @event ResultsFound\n * @param {Array} data Array of search service results. Each result has, among other parameters, its\n * `type`, `address` and `position`.\n * @param {String} [type=\"resultsFound\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.on(L.SearchBox.Events.ResultsFound, function(eventObject) {\n * console.log(eventObject.data);\n * });\n * ```\n */\n /**\n * Event that is fired when user clicks the clear search box input button.\n *\n * @event ClearButtonClicked\n * @param {String} [type=\"clearButtonClicked\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.on(L.SearchBox.Events.ClearButtonClicked, function() {\n * console.log(\"User clicked the clear button\");\n * });\n * ```\n */\n /**\n * Event that is fired when prompt results list is being cleared.\n *\n * @event ResultsCleared\n * @param {String} [type=\"resultsCleared\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.on(L.SearchBox.Events.LocationsCleared, function() {\n * console.log(\"Results were cleared\");\n * });\n * ```\n */\n /**\n * Event that is fired when obtaining user's current location fails.\n *\n * @event LocationError\n * @param {Object} eventObject All failure information\n * @param {String} [type=\"locationError\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = new L.SearchBox();\n * widget.addTo(map);\n * widget.on(L.SearchBox.Events.LocationError, function(eventObject) {\n * console.log(eventObject);\n * });\n * ```\n */\n Events: EVENTS\n });\n\n return function(options) {\n var searchBox = new L.SearchBox(options);\n utils.addDeprecatedProperty(searchBox, 'Event', 'Events');\n return searchBox;\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./widgets/controls/searchBox.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * Shows a button that provides location capabilities.\n *\n * @example\n * ```javascript\n * var widget = (new L.Location()).addTo(map);\n *\n * widget.on(L.Location.Events.LocationFound, function (event) {\n * console.log('LocationFound');\n * console.log(event);\n * });\n *\n * widget.on(L.Location.Events.LocationError, function (event) {\n * console.log('LocationError');\n * console.log(event);\n * });\n *\n * @class Location\n * @namespace L\n * @extends L.Control\n * @uses L.Evented\n * @module Widgets\n * @constructor\n * @param {Object} [options]\n * @param {String} [options.imageSrc=null] The image path for locate button. If this option is passed the button would\n * be created as an `` tag.\n * @param {Number[]} [options.size=[34,34]] Its an array of two integers (width, height).\n * The default size of the icon will be double if the user's device has a screen with Retina display capability.\n * Allows to change size of the image, a useful option for SVG images.\n * @param {String} [options.className=\"\"] The class name of the container element.\n * With this option an external icon library (i.e. Font Awesome) could be used for widget's button.\n */\ndefine(['display/map', 'services/utils'], function(L, Utils) {\n 'use strict';\n\n var EVENTS = {\n LocationFound: 'locationFound',\n LocationError: 'locationError'\n };\n\n function getClassName(options) {\n return options.className || options.imageSrc ? options.className : 'icon-locate_me_btn';\n }\n\n function setSizeStyle(style, size) {\n if (size) {\n style.width = size[0] + 'px';\n style.height = size[1] + 'px';\n style.backgroundSize = size[0] + 'px ' + size[1] + 'px';\n }\n }\n\n L.Location = L.Control.extend({\n\n includes: L.Evented.prototype,\n\n options: {\n imageSrc: null,\n size: L.Browser.retina ? [57, 57] : [34, 34],\n className: ''\n },\n\n createContainer: function() {\n var className = getClassName(this.options),\n container = L.DomUtil.create('div', 'leaflet-control-location ' + className),\n img;\n setSizeStyle(container.style, this.options.size);\n container.style.cursor = 'pointer';\n if (!L.Browser.svg || this.options.imageSrc) {\n img = L.DomUtil.create('img', '', container);\n img.src = this.options.imageSrc || L.Icon.Default.imagePath + '/locate_me_btn.png';\n img.style.cursor = 'pointer';\n }\n return container;\n },\n\n /**\n * The method to instantiates the location control.\n * Executed when adding to map.\n *\n * @ignore\n * @method onAdd\n * @param {Object} map Leaflet map to add control to.\n * @return {HTMLElement}\n */\n onAdd: function(map) {\n var container = this.createContainer();\n var control = this;\n\n L.DomEvent.addListener(container, 'mousedown', map.locate, map);\n map.on('locationfound', function(location) {\n control.fire(EVENTS.LocationFound, location);\n });\n map.on('locationerror', function(error) {\n control.fire(EVENTS.LocationError, error);\n });\n return container;\n },\n /**\n * Event that is fired when obtaining user's current location succeed.\n *\n * @event LocationFound\n * @param {Object} eventObject The found\n * location details\n * @param {String} [type=\"locationFound\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.Location()).addTo(map);\n * widget.on(L.Location.Events.LocationFound, function (eventObject) {\n * console.log(eventObject);\n * });\n * ```\n */\n /**\n * Event that is fired when obtaining user's current location fails.\n *\n * @event LocationError\n * @param {Object} eventObject All failure information\n * @param {String} [type=\"locationError\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n *\n * var widget = (new L.Location()).addTo(map);\n * widget.on(L.Location.Events.LocationError, function (eventObject) {\n * console.log(eventObject);\n * });\n * ```\n */\n Events: EVENTS,\n statics: {\n Events: EVENTS\n }\n });\n\n return function(options) {\n var location = new L.Location(options);\n Utils.addDeprecatedProperty(location, 'Event', 'Events');\n return location;\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./widgets/controls/location.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * Layer that show a ruler with distance labels over the map.\n *\n * @class MeasurementRuler\n * @namespace L\n * @module Widgets\n * @constructor\n * @param {Object} [options]\n * @param {String} [options.markerColor=\"#000\"] Color to use for the ruler's stops\n * @param {String} [options.lineColor=\"#000\"] Color of the rule's line\n * @param {String} [options.rulerClassname=\"leaflet-distance-measurement__ruler\"] Class name that should be apply to\n * the ruler\n * @param {String} [options.labelClassname=\"leaflet-distance-measurement__ruler__label\"] Class name that should be\n * apply to the distance label container\n * @param {String} [options.dashArray=\"5 5\"] A string that defines the stroke dash pattern of the leaflet polyline\n * used to draw the ruler. For more details read\n *\n * @param {Number} [options.distanceOffset=0] Distance (in meters) that needs to be added to the distance calculation\n * of the ruler\n * @param {\"metric\"|\"imperial\"} [options.unitScheme=\"metric\"] Unit scheme to use for the distance calculations\n * @param {Boolean} [options.useArc=false] Uses a great arc instead of a rect line\n *\n */\ndefine(['display/map', 'unitFormatConverter/unitFormatConverter'], function(L, unitFormatConverter) {\n 'use strict';\n\n L.MeasurementRuler = L.LayerGroup.extend({\n\n options: {\n markerColor: '#000',\n lineColor: '#000',\n /**\n * @ignore\n * Class name that should be apply to the ruler.\n */\n rulerClassname: 'leaflet-distance-measurement__ruler',\n /**\n * @ignore\n * Class name that should be apply to the distance label container.\n */\n labelClassname: 'leaflet-distance-measurement__ruler__label',\n /**\n * @ignore\n * A string that defines the stroke dash pattern of the leaflet polyline used to draw the ruler.\n * https://leafletjs.com/reference-1.0.3.html#path-dasharray\n */\n dashArray: '5 5',\n /**\n * @ignore\n * Distance (in meters) that needs to be added to the distance calculation of the ruler.\n * @type {Number}\n */\n distanceOffset: 0,\n /**\n * @ignore\n * Unit scheme to use for the distance calculations.\n * @type {\"metric\"|\"imperial\"}\n */\n unitScheme: 'metric',\n /**\n * @ignore\n * Draw an arc instead of a rect line.\n * @type {Boolean}\n */\n useArc: false\n },\n\n /**\n * All the coordinates that conform the ruler path.\n *\n * @property latLngs\n * @type {L.LatLng[]}\n */\n latLngs: [],\n\n /**\n * Total distance (in meters) of the ruler.\n *\n * This property will be updated each time a coordinate is added to the ruler.\n *\n * @property distance\n * @type {Number}\n */\n distance: 0,\n\n initialize: function(options) {\n this._layers = {};\n this._markers = [];\n this._labels = [];\n this.latLngs = [];\n this.distance = 0;\n L.Util.setOptions(this, options);\n },\n\n /**\n * Add new coordinates to the ruler path and redraw the ruler.\n *\n * This method extends the size of the ruler.\n *\n * @method addLatLng\n * @param {L.LatLng} latLng\n */\n addLatLng: function(latLng) {\n var prevLatLng = this.getLast(),\n segmentDistance = prevLatLng ? prevLatLng.distanceTo(latLng) : 0;\n if (prevLatLng && prevLatLng.equals(latLng)) {\n return;\n }\n this.distance += segmentDistance;\n this.latLngs.push(latLng);\n this._redrawPolyline();\n this._drawMarkerWithLabel(latLng, this.options.distanceOffset + this.distance);\n },\n\n /**\n * Set all the ruler's path at once.\n *\n * @method setLatLngs\n * @param {L.LatLng[]} latLngs\n */\n setLatLngs: function(latLngs) {\n this.latLngs = latLngs;\n this.distance = 0;\n this._redrawRuler();\n },\n\n /**\n * Returns the last coordinates added to the ruler.\n *\n * @method getLast\n * @return {L.LatLng} If the ruler doesn't have coordinates it will return NULL\n */\n getLast: function() {\n if (this.latLngs.length > 0) {\n return this.latLngs[this.latLngs.length - 1];\n }\n return null;\n },\n\n /**\n * @private\n * @method _buildMarker\n * @param {L.LatLng} latLng\n * @param {Number} radius\n * @return {L.CircleMarker}\n */\n _buildMarker: function(latLng) {\n return L.circleMarker(latLng, {\n color: this.options.markerColor,\n fillOpacity: 1,\n opacity: 1,\n fill: true,\n radius: 3,\n interactive: false,\n renderer: this._getRenderer()\n });\n },\n\n /**\n * @private\n * @method _buildLabelText\n * @param {String} label\n * @return {L.DivIcon}\n */\n _buildLabelText: function(label) {\n return L.divIcon({\n className: this.options.labelClassname,\n html: '' + label + ''\n });\n },\n\n /**\n * @private\n * @method _buildLabel\n * @param {L.LatLng} latLng\n * @param {String} label\n * @return {L.Marker}\n */\n _buildLabel: function(latLng, label) {\n return L.marker(latLng, {\n icon: this._buildLabelText(label),\n interactive: false,\n title: label,\n alt: label\n });\n },\n\n /**\n * Creates and draw a marker with its distance label over the map.\n *\n * A distance label will be displayed next to the marker only when the distance is greater than zero.\n *\n * @private\n * @method _drawMarkerWithLabel\n * @param {L.LatLng} latLng\n * @param {Number} distance\n */\n _drawMarkerWithLabel: function(latLng, distance) {\n var distanceText = unitFormatConverter.formatDistance(distance, this.options.unitScheme === 'imperial'),\n marker = this._buildMarker(latLng),\n label = this._buildLabel(latLng, distanceText);\n this._markers.push(marker.addTo(this));\n if (distance > 0) {\n this._labels.push(label.addTo(this));\n }\n },\n\n /**\n * @private\n * @method _clearAllMarkersAndLabels\n */\n _clearAllMarkersAndLabels: function() {\n this._markers.forEach(function(layer) {\n layer.remove();\n });\n this._labels.forEach(function(layer) {\n layer.remove();\n });\n this._markers = [];\n this._labels = [];\n },\n\n /**\n * @private\n * @method _getRenderer\n * @return {L.SVG}\n */\n _getRenderer: function() {\n return L.svg({padding: 0.8});\n },\n\n /**\n * @private\n * @method _buildPolyline\n * @param {L.LatLng[]} latLngs\n * @param {String} [dashArray=null] https://leafletjs.com/reference-1.0.3.html#polyline-dasharray\n * @return {L.Polyline}\n */\n _buildPolyline: function(latLngs, dashArray) {\n return L.polyline(latLngs, {\n color: this.options.lineColor,\n weight: 2,\n opacity: 1,\n dashArray: dashArray,\n className: this.options.rulerClassname,\n interactive: false,\n renderer: this._getRenderer()\n });\n },\n\n /**\n * Create or update the ruler path.\n * @private\n * @method _redrawPolyline\n * @return {L.Polyline}\n */\n _redrawPolyline: function() {\n var latLngs = this.latLngs;\n\n if (this.options.useArc) {\n latLngs = this._calculateGreatCircleArc(latLngs);\n }\n\n if (this.rulerPolyline) {\n this.rulerPolyline.setLatLngs(latLngs);\n } else {\n this.rulerPolyline = this._buildPolyline(latLngs, this.options.dashArray)\n .addTo(this);\n }\n\n return this.rulerPolyline;\n },\n\n /**\n * Given a sorted list of coordinates, it fills the spaces between the coordinates to create an Arc.\n * @private\n * @method _calculateGreatCircleArc\n * @param {L.LatLng[]} latLngs\n * @return {L.LatLng[]} New array of coordinates\n */\n _calculateGreatCircleArc: function(latLngs) {\n var that = this;\n return latLngs.reduce(function(output, currentLatLng) {\n var curveSegmentPath;\n if (output.length === 0) {\n return [currentLatLng];\n } else {\n curveSegmentPath = that._polylineArc(output.pop(), currentLatLng);\n return output.concat(curveSegmentPath);\n }\n }, []);\n },\n\n /**\n * Redraw the labels and markers.\n * @private\n * @method _redrawAllMarkersAndLabels\n */\n _redrawAllMarkersAndLabels: function() {\n this._clearAllMarkersAndLabels();\n this.latLngs.forEach(function(latLng, index) {\n var prevLatLng = index > 0 ? this.latLngs[index - 1] : null,\n segmentDistance = prevLatLng ? prevLatLng.distanceTo(latLng) : 0;\n this.distance += segmentDistance;\n this._drawMarkerWithLabel(latLng, this.options.distanceOffset + this.distance);\n }, this);\n },\n\n /**\n * Redraw the polyline, labels and markers.\n * @private\n * @method _redrawRuler\n */\n _redrawRuler: function() {\n this._redrawPolyline();\n this._redrawAllMarkersAndLabels();\n },\n\n /**\n * Calculate Great-circle Arc (= shortest distance on a sphere like the Earth) between two coordinates\n * formulas: http://www.edwilliams.org/avform.htm\n * The content of this method was copied (and slightly modified) from\n * https://github.com/ppete2/Leaflet.PolylineMeasure .\n * @private\n * @method _polylineArc\n * @param {LatLng} from\n * @param {LatLng} to\n * @return {Array}\n */\n _polylineArc: function(from, to) {\n var d, arcpoints, arrLatLngs;\n /**\n * work with with copies of object's elements from.lat and from.lng,\n * otherwise they would get modified due to call-by-reference on Objects in Javascript\n */\n var fromLat = from.lat;\n var fromLng = from.lng;\n var toLat = to.lat;\n var toLng = to.lng;\n\n function gCinterpolate(f) {\n var A = Math.sin((1 - f) * d) / Math.sin(d);\n var B = Math.sin(f * d) / Math.sin(d);\n var x = A * Math.cos(fromLat) * Math.cos(fromLng) + B * Math.cos(toLat) * Math.cos(toLng);\n var y = A * Math.cos(fromLat) * Math.sin(fromLng) + B * Math.cos(toLat) * Math.sin(toLng);\n var z = A * Math.sin(fromLat) + B * Math.sin(toLat);\n // atan2 better than atan-function cause results are from -pi to +pi\n // => results of latInterpol, lngInterpol always within range -180° ... +180°\n // => conversion into values < -180° or > + 180° has to be done afterwards\n var latInterpol = 180 / Math.PI * Math.atan2(z, Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)));\n var lngInterpol = 180 / Math.PI * Math.atan2(y, x);\n // don't split polyline if it crosses dateline ( -180° or +180°).\n // Without the polyline would look like: +179° ==> +180° ==> -180° ==> -179°...\n // algo: if difference lngInterpol-from.lng is > 180°\n // there's been an unwanted split from +180 to -180 cause an arc can never span >180°\n var diff = lngInterpol - fromLng * 180 / Math.PI;\n function trunc(n) {\n return Math[n > 0 ? 'floor' : 'ceil'](n);\n } // alternatively we could use the new Math.trunc method, but Internet Explorer doesn't know it\n if (diff < 0) {\n lngInterpol = lngInterpol - trunc((diff - 180) / 360) * 360;\n } else {\n lngInterpol = lngInterpol - trunc((diff + 180) / 360) * 360;\n }\n return L.latLng(latInterpol, lngInterpol);\n }\n\n function gCarc(npoints) {\n var i, step, coordPair;\n var arrArcCoords = [];\n var delta = 1.0 / (npoints - 1);\n // first point of Arc should NOT be returned\n for (i = 0; i < npoints; i++) {\n step = delta * i;\n coordPair = gCinterpolate(step);\n arrArcCoords.push(coordPair);\n }\n return arrArcCoords;\n }\n\n fromLat = fromLat * Math.PI / 180;\n fromLng = fromLng * Math.PI / 180;\n toLat = toLat * Math.PI / 180;\n toLng = toLng * Math.PI / 180;\n d = 2.0 * Math.asin(Math.sqrt(Math.pow(Math.sin((fromLat - toLat) / 2.0), 2) + Math.cos(fromLat) *\n Math.cos(toLat) * Math.pow(Math.sin((fromLng - toLng) / 2.0), 2)));\n arcpoints = 100; // 100 points = 99 line segments.\n // lower value to make arc less accurate or increase value to make it more accurate.\n arrLatLngs = gCarc(arcpoints);\n return arrLatLngs;\n\n }\n });\n\n return L.MeasurementRuler;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./widgets/controls/distanceMeasurement/measurementRuler.js","(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/whatwg-fetch/fetch.js\n// module id = 101\n// module chunks = 0","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * The main namespace of the TomTom Maps SDK for Web. This is a place where you get access to all the services,\n * Leaflet's main object `L` and configuration.\n *\n * @class tomtom\n * @module The tomtom namespace\n */\ndefine(function(require) {\n 'use strict';\n var tomtom, requester, L, security, mapboxProvider, analytics;\n\n require('./globals');\n require('./polyfills');\n require('services/staticMapImage/staticMapImageFactory');\n\n tomtom = {};\n\n requester = require('requester/requester');\n\n analytics = require('requester/analytics');\n /**\n * This method sets the content of TomTom-User-Agent header. We are collecting anonymous data for\n * statistics of usage of our services in order to increase quality of our products.\n * @method setProductInfo\n * @param {String} productId Identifier (e.g. a name) of your application e.g. MyApplication\n * @param {String} productVersion Version of your application e.g. 1.0.2\n */\n tomtom.setProductInfo = analytics.setProductInfo;\n\n /**\n * Factory function to create instances of the {{#crossLink \"L.TomTomMarkersLayer\"}}{{/crossLink}} class.\n *\n * @method tomTomMarkersLayer\n * @param {Object} [options] All the available options are described in the class page\n * @return {L.TomTomMarkersLayer}\n */\n tomtom.tomTomMarkersLayer = require('display/layers/markersLayer');\n\n /**\n * Tells the SDK to use JSONP instead of JSON (default) for the requests to TomTom Maps APIs.\n *\n * @example\n * ```javascript\n * tomtom.useJsonp(true); // all requests will be JSONP from now on\n * ```\n *\n * @method useJsonp\n * @param {Boolean} [useJsonp] `true`: JSONP will be used, `false` JSON will be used\n * @deprecated The support for JSONP will be removed soon. Please consider using the JSON implementation.\n */\n tomtom.useJsonp = requester.useJsonp;\n\n /**\n * Tells the SDK to use HTTP instead of HTTPS (default) for the requests to TomTom Maps APIs.\n *\n * This configuration can be decided per service call basis with the `protocol` option.\n *\n * @example\n * ```javascript\n * tomtom.useHttp(true); // all requests will be HTTP now\n * ````\n *\n * @method useHttp\n * @param {Boolean} [useHttp] `true`: HTTP will be used, `false` HTTPS will be used\n */\n tomtom.useHttp = requester.useHttp;\n\n L = require('display/map');\n\n /**\n * Gives you access to the Leaflet's library\n * used by the SDK.\n *\n * @property L\n * @type {Object}\n */\n tomtom.L = L;\n\n /**\n * Alias of the L property.\n *\n * @property display\n * @type {Object}\n */\n tomtom.display = L;\n\n //just to be backward compatible (we build car with thill)\n tomtom.Map = L.Map;\n\n /**\n * Factory function to create instances of the L.Map class.\n *\n * @method map\n * @return {L.Map}\n */\n tomtom.map = L.map;\n\n /**\n * Factory function to create instances of the TrafficIncidents class.\n *\n * @method traffic\n * @param {Object} [options] All the available options are described in the class page\n * @return {TrafficIncidents}\n */\n tomtom.traffic = require('services/trafficIncidents');\n\n /**\n * Factory function to create instances of the Copyright class.\n *\n * @method copyright\n * @param {Object} [options] All the available options are described in the class page\n * @return {Copyright}\n */\n tomtom.copyright = require('services/copyrights/copyright');\n\n /**\n * Factory function to create instances of the CopyrightCaption class.\n *\n * @method copyrightCaption\n * @param {Object} [options] All the available options are described in the class page\n * @return {CopyrightCaption}\n */\n tomtom.copyrightCaption = require('services/copyrights/copyrightCaption');\n\n /**\n * Factory function to create instances of the Geocode class.\n *\n * @method geocode\n * @param {Object} [options] All the available options are described in the class page\n * @return {Geocode}\n */\n tomtom.geocode = require('services/geocode/geocode');\n\n /**\n * Factory function to create instances of the class.\n *\n * @method structuredGeocode\n * @param {Object} [options] All the available options are described in the class page\n * @return {StructuredGeocode}\n */\n tomtom.structuredGeocode = require('services/structureGeocode/structuredGeocode');\n\n /**\n * Factory function to create instances of the ReverseGeocode class.\n *\n * @method reverseGeocode\n * @param {Object} [options] All the available options are described in the class page\n * @return {ReverseGeocode}\n */\n tomtom.reverseGeocode = require('services/reverseGeocode/reverseGeocode');\n /**\n * Factory function to create instances of the CrossStreetLookupclass.\n *\n * @method crossStreetLookup\n * @param {Object} [options] All the available options are described in the class page\n * @return {CrossStreetLookup}\n */\n tomtom.crossStreetLookup = require('services/reverseGeocode/crossStreetLookup');\n\n /**\n * Factory function to create instances of the FuzzySearch class.\n *\n * @method fuzzySearch\n * @param {Object} [options] All the available options are described in the class page\n * @return {FuzzySearch}\n */\n tomtom.fuzzySearch = require('services/search/fuzzySearch');\n\n /**\n * Factory function to create instances of the PoiSearch class.\n *\n * @method poiSearch\n * @param {Object} [options] All the available options are described in the class page\n * @return {PoiSearch}\n */\n tomtom.poiSearch = require('services/search/poiSearch');\n\n /**\n * Factory function to create instances of the CategorySearch class.\n *\n * @method categorySearch\n * @param {Object} [options] All the available options are described in the class page\n * @return {CategorySearch}\n */\n tomtom.categorySearch = require('services/search/categorySearch');\n\n /**\n * Factory function to create instances of the GeometrySearch class.\n *\n * @method geometrySearch\n * @param {Object} [options] All the available options are described in the class page\n * @return {GeometrySearch}\n */\n tomtom.geometrySearch = require('services/search/geometrySearch');\n\n /**\n * Factory function to create instances of the NearbySearch class.\n *\n * @method nearbySearch\n * @param {Object} [options] All the available options are described in the class page\n * @return {NearbySearch}\n */\n tomtom.nearbySearch = require('services/search/nearbySearch');\n\n /**\n * Factory function to create instances of the LowBandwidthSearch class.\n *\n * @method lowBandwidthSearch\n * @param {Object} [options] All the available options are described in the class page\n * @return {LowBandwidthSearch}\n */\n tomtom.lowBandwidthSearch = require('services/search/lowBandwidthSearch');\n\n /**\n * Factory function to create instances of the AlongRouteSearch class.\n *\n * @method alongRouteSearch\n * @param {Object} [options] All the available options are described in the class page\n * @return {AlongRouteSearch}\n */\n tomtom.alongRouteSearch = require('services/search/alongRouteSearch');\n\n /**\n * Factory function to create instances of the TrafficFlowSegmentData class.\n *\n * @method trafficFlowSegmentData\n * @param {Object} [options] All the available options are described in the class page\n * @return {trafficFlowSegmentData}\n */\n tomtom.trafficFlowSegmentData = require('services/trafficFlowSegmentData');\n\n /**\n * Factory function to create instances of the AdditionalData class.\n *\n * @method additionalData\n * @param {Object} [options] All the available options are described in the class page\n * @return {AdditionalData}\n */\n tomtom.additionalData = require('services/search/additionalData');\n\n // this was kept for backwards compatibility but it will be removed in the future\n tomtom.additionalDataProvider = tomtom.additionalData;\n\n /**\n * Factory function to create instances of the Routing class.\n *\n * @method routing\n * @param {Object} [options] All the available options are described in the class page\n * @return {Routing}\n */\n tomtom.routing = require('services/routing/routing');\n\n /**\n * Factory function to create instances of the Reachable Range Routing class.\n *\n * @method reachableRange\n * @param {Object} [options] All the available options are described in the class page\n * @return {ReachableRange}\n */\n tomtom.reachableRange = require('services/routing/reachableRange');\n\n /**\n * Factory function to create instances of the MatrixRouting class.\n *\n * @method matrixRouting\n * @param {Object} [options] All the available options are described in the class page\n * @return {MatrixRouting}\n */\n tomtom.matrixRouting = require('services/routing/matrixRouting');\n\n /**\n * Factory function that creates a new instance of the L.ControlPanel widget.\n *\n * @method controlPanel\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.ControlPanel}\n */\n tomtom.controlPanel = require('widgets/controls/controlPanel');\n\n /**\n * Factory function that creates a new instance of the L.Foldable widget.\n *\n * @method foldable\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.Foldable}\n */\n tomtom.foldable = require('widgets/controls/foldable');\n\n /**\n * Gives you access to the L.LanguageSelector module.\n * @property languageSelector\n * @type L.LanguageSelector\n */\n tomtom.languageSelector = require('widgets/controls/languageSelector');\n\n /**\n * Returns the global locale service instance used by all the leaflet maps.\n *\n * It lets you get and change the locale configuration used by the entire SDK.\n *\n * Whenever the {{#crossLink \"LocaleService/setCurrentLocale:method\"}}{{/crossLink}} method of\n * this instance is called, all the {{#crossLink \"LocaleService\"}}{{/crossLink}} instances used by\n * maps will be updated too.\n *\n * But if you use the {{#crossLink \"LocaleService/setCurrentLocale:method\"}}{{/crossLink}}\n * method in a {{#crossLink \"LocaleService\"}}{{/crossLink}} of a map instance only that\n * instance will be updated.\n *\n * @method globalLocaleService\n * @return {LocaleService}\n */\n tomtom.globalLocaleService = require('config/language/globalLocaleService');\n\n /**\n * Factory function that creates a new instance of the L.ResultsList widget.\n *\n * @method resultsList\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.ResultsList}\n */\n tomtom.resultsList = require('widgets/controls/resultsList');\n\n /**\n * Factory function that creates a new instance of the L.SearchBox widget.\n *\n * @method searchBox\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.SearchBox}\n */\n tomtom.searchBox = require('widgets/controls/searchBox');\n\n /**\n * Factory function that creates a new instance of the L.DistanceMeasurement widget.\n *\n * @method distanceMeasurement\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.DistanceMeasurement}\n */\n tomtom.distanceMeasurement = require('widgets/controls/distanceMeasurement/distanceMeasurement');\n\n /**\n * Factory function that creates a new instance of the L.Location widget.\n *\n * @method location\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.Location}\n */\n tomtom.location = require('widgets/controls/location');\n\n /**\n * Factory function that creates a new instance of the L.RouteInputs widget.\n *\n * @method routeInputs\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.RouteInputs}\n */\n tomtom.routeInputs = require('widgets/controls/routeInputs');\n\n /**\n * Factory function that creates a new instance of the L.RouteInstructions widget.\n *\n * @method routeInstructions\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.RouteInstructions}\n */\n tomtom.routeInstructions = require('widgets/controls/routeInstructions');\n\n /**\n * Factory function that creates a new instance of the L.MessageBox class.\n *\n * @method messageBox\n * @param {Object} [options] All the options are available in the class's page\n * @return {L.MessageBox}\n */\n tomtom.messageBox = require('display/messageBox');\n\n /**\n * Gives you access to the UnitFormatConverter module.\n *\n * @property unitFormatConverter\n * @type UnitFormatConverter\n */\n tomtom.unitFormatConverter = require('unitFormatConverter/unitFormatConverter');\n\n /**\n * Gives you access to the L.UnitSelector module.\n * @property unitSelector\n * @type L.UnitSelector\n */\n tomtom.unitSelector = require('widgets/controls/unitSelector');\n\n /**\n * Factory function that creates a new instance of the UnitService class.\n *\n * @method unitService\n * @param {UnitService} [parent] If is defined makes the new instance a \"slave\" of the given instance\n * @return {UnitService}\n */\n tomtom.unitService = require('config/unit/unitService');\n\n /**\n * Returns the global unit view service instance used by all the leaflet maps.\n *\n * It lets you get and change the unit view used by the entire SDK.\n *\n * Whenever the {{#crossLink \"UnitService/setCurrentUnit:method\"}}{{/crossLink}} method of\n * this instance is called, all the {{#crossLink \"UnitService\"}}{{/crossLink}} instances used by\n * maps will be updated too.\n *\n * But if you use the {{#crossLink \"UnitService/setCurrentUnit:method\"}}{{/crossLink}}\n * method in a {{#crossLink \"UnitService\"}}{{/crossLink}} of a map instance only that\n * instance will be updated.\n *\n * @method globalUnitService\n * @return {UnitService}\n */\n tomtom.globalUnitService = require('config/unit/globalUnitService');\n\n /**\n * Returns the global geopolitical view service instance used by all the leaflet maps.\n *\n * It lets you get and change the geopolitical view used by the entire SDK.\n *\n * Whenever the {{#crossLink \"GeopolViewService/setCurrentGeopolView:method\"}}{{/crossLink}} method of\n * this instance is called, all the {{#crossLink \"GeopolViewService\"}}{{/crossLink}} instances used by\n * maps will be updated too.\n *\n * But if you use the {{#crossLink \"GeopolViewService/setCurrentGeopolView:method\"}}{{/crossLink}}\n * method in a {{#crossLink \"GeopolViewService\"}}{{/crossLink}} of a map instance only that\n * instance will be updated.\n *\n * @method globalGeopolViewService\n * @return {GeopolViewService}\n */\n tomtom.globalGeopolViewService = require('config/geopolView/globalGeopolViewService');\n\n /**\n * Gives you access to the L.UnitSelector module.\n * @property unitSelector\n * @type L.UnitSelector\n */\n tomtom.geopolViewSelector = require('widgets/controls/geopolViewSelector');\n\n /**\n * Factory function that creates a new instance of the L.MarkersLayer class.\n *\n * @deprecated\n * @method markersView\n * @param {Object} [options] All the options are available in the class's page\n * @return {L.MarkersLayer}\n */\n tomtom.markersView = require('widgets/views/markers');\n\n /**\n * Factory function that creates a new instance of the L.RouteOnMap widget.\n *\n * @method routeOnMap\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.RouteOnMap}\n */\n tomtom.routeOnMap = require('widgets/views/routeOnMap');\n\n /**\n * Factory function that creates a new instance of the L.RouteSummary widget.\n *\n * @method routeSummary\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.RouteSummary}\n */\n tomtom.routeSummary = require('widgets/views/routeSummary');\n\n /**\n * Factory function that creates a new instance of the L.TomTomMinimap widget.\n *\n * @method miniMap\n * @param {Object} [options] All the options are available in the widget's page\n * @return {L.TomTomMinimap}\n */\n tomtom.miniMap = require('widgets/views/miniMap');\n\n security = require('security');\n\n /**\n * Sets a key 'config' object in the security configuration file. When the key's name is omitted,\n * then the default key is set.\n *\n * @example\n * ```javascript\n * tomtom.key('keyValue'); // sets global key\n * tomtom.key('service/traffic', 'keyValue'); // sets key for traffic service\n * ```\n *\n * @method key\n * @param {String} name Name of the key to be set\n * @param {String} [value] Value of the key\n */\n tomtom.key = security.setKey;\n\n /**\n * Sets a key for the services: map tiles and copyrights. Can also be passed on the map object's initialization with\n * _key_ parameter.\n *\n * @example\n * ```javascript\n * tomtom.mapsKey('keyValue'); // sets maps key\n * ```\n *\n * @method mapsKey\n * @param {String} value Value of the maps key\n */\n tomtom.mapsKey = security.setKeyForName('services/display');\n\n /**\n * Sets a key for the vector tiles service. Can also be passed on the map object's initialization\n * with the _key_ parameter or using _key_ method. In cases where default key covers vectors tile service as well\n * setting specific key here is not required.\n *\n * @example\n * ```javascript\n * tomtom.vectorMapsKey('keyValue'); // sets the vector maps key\n * ```\n *\n * @method vectorMapsKey\n * @param {String} value Value of the vector maps key\n */\n tomtom.vectorMapsKey = security.setKeyForName('services/display/vector');\n\n /**\n * Sets a key for the traffic incidents tiles and services. Can also be passed on the map object's\n * initialization as an option of the traffic incidents layer.\n *\n * @example\n * ```javascript\n * tomtom.trafficKey('keyValue'); // sets traffic key\n * ```\n *\n * @method trafficKey\n * @param {String} value Value of the traffic key\n */\n tomtom.trafficKey = security.setKeyForName('services/traffic');\n\n /**\n * Sets a key for traffic flow tiles service. Can also be passed on the map object's initialization\n * as an option of the traffic flow layer.\n *\n * @example\n * ```javascript\n * tomtom.trafficFlowKey('keyValue'); // sets traffic flow key\n * ```\n *\n * @method trafficFlowKey\n * @param {String} value Value of the traffic flow key\n */\n tomtom.trafficFlowKey = security.setKeyForName('services/trafficFlow');\n\n /**\n * Sets a key for search, geocode and reverse geocode services.\n *\n * @example\n * ```javascript\n * tomtom.searchKey('keyValue'); // sets search key\n * ```\n *\n * @method searchKey\n * @param {String} value Value of the search key\n */\n tomtom.searchKey = security.setKeyForName('services/search');\n\n /**\n * Sets a key for the routing service.\n *\n * @example\n * ```javascript\n * tomtom.routingKey('keyValue'); // sets routing key\n * ```\n *\n * @method routingKey\n * @param {String} value Value of the routing key\n */\n tomtom.routingKey = security.setKeyForName('services/routing');\n\n /**\n * Factory function to create instances of the LocaleService class.\n *\n * @method localeService\n * @return {LocaleService}\n */\n tomtom.localeService = require('config/language/localeService');\n\n mapboxProvider = require('mapboxProvider');\n\n /**\n * It takes a mapbox global object that have to be used for render the vector maps.\n *\n * The use of this method is required if you use the version of this SDK version without Mapbox GL JS\n * embedded in it.\n *\n * The currently supported version of Mapbox GL JS is v${mapboxgl.version}.\n *\n * @example\n * ```js\n * tomtom.setMapbox(mapboxgl); //sets mapboxgl reference\n * ```\n *\n * @method setMapbox\n * @param {Object} mapboxgl Reference to mapboxgl object (global object provided by Mapbox GL JS library)\n */\n tomtom.setMapbox = mapboxProvider.setMapbox;\n\n /**\n * Factory function to create instances of the StaticMapImage class.\n *\n * @method staticMapImage\n * @param {Object} [options] All the available options are described in the class page\n * @return {StaticMapImage}\n */\n tomtom.staticMapImage = require('services/staticMapImage/staticMapImage');\n\n /*\n * It includes a method in L.Map to easily generate an URL to obtain an static image of the current viewport.\n */\n require('services/staticMapImage/staticMapImageFactory');\n\n return tomtom;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./main.js","define(function() {\n /**\n * @ignore\n * Overrides default Leaflet touch device recognition.\n * Leaflet uses Object.freeze on L.Browser, so we are unable to override L.Browser.touch.\n * Luckly Leaflet provides global flag that let's us change the default detection\n * by setting global variable: https://github.com/Leaflet/Leaflet/blob/master/build/docs-misc.leafdoc.\n */\n window.L_NO_TOUCH = !('ontouchstart' in window ||\n window.DocumentTouch && document instanceof window.DocumentTouch);\n});\n\n\n\n// WEBPACK FOOTER //\n// ./globals.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n'use strict';\ndefine(['es6-promise'], function(promise) {\n\n //This is pollyfill for old IE trim method\n if (typeof String.prototype.trim !== 'function') {\n String.prototype.trim = function() {\n return this.replace(/^\\s+|\\s+$/g, '');\n };\n }\n\n /**\n * @ignore\n * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n * Version 2, December 2004\n *\n * Copyright (C) 2011 Alex Kloss \n *\n * Everyone is permitted to copy and distribute verbatim or modified\n * copies of this license document, and changing it is allowed as long\n * as the name is changed.\n *\n * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n *\n * 0. You just DO WHAT THE FUCK YOU WANT TO.\n */\n\n if (![].indexOf) {\n Array.prototype.indexOf = function(a, b, c) {\n for (c = this.length, b = (c + ~~b) % c; b < c && (!(b in this) || this[b] !== a); ++b) {\n //do nothing\n }\n return b ^ c ? b : -1;\n };\n }\n\n if (![].forEach) {\n Array.prototype.forEach = function(a, b, c, d) {\n for (d = this.length, c = 0; c < d; ++c) {\n if (c in this) {\n a.call(b, this[c], c, this);\n }\n }\n };\n }\n\n if (window.Promise === undefined) {\n window.Promise = promise;\n }\n\n Number.isInteger = Number.isInteger || function(value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n };\n\n //Object.assign - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n //eslint-disable-next-line eqeqeq\n if (typeof Object.assign != 'function') {\n //eslint-disable-next-line no-unused-vars\n Object.assign = function(target, varArgs) { // .length of function is 2\n var to, index, nextSource, nextKey;\n //eslint-disable-next-line eqeqeq\n if (target == null) { // TypeError if undefined or null\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n to = Object(target);\n\n for (index = 1; index < arguments.length; index++) {\n nextSource = arguments[index];\n //eslint-disable-next-line eqeqeq\n if (nextSource != null) { // Skip over if undefined or null\n for (nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n});\n\n\n\n// WEBPACK FOOTER //\n// ./polyfills.js","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.ES6Promise=e()}(this,function(){\"use strict\";function t(t){var e=typeof t;return null!==t&&(\"object\"===e||\"function\"===e)}function e(t){return\"function\"==typeof t}function n(t){I=t}function r(t){J=t}function o(){return function(){return process.nextTick(a)}}function i(){return\"undefined\"!=typeof H?function(){H(a)}:c()}function s(){var t=0,e=new V(a),n=document.createTextNode(\"\");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function u(){var t=new MessageChannel;return t.port1.onmessage=a,function(){return t.port2.postMessage(0)}}function c(){var t=setTimeout;return function(){return t(a,1)}}function a(){for(var t=0;t 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/process/browser.js\n// module id = 106\n// module chunks = 0","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 108\n// module chunks = 0","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine([], function() {\n 'use strict';\n\n function getBasePath() {\n var scripts = document.getElementsByTagName('script'),\n pattern = /(.*)tomtom.min.js/,\n i,\n path;\n for (i = 0; i < scripts.length; i++) {\n if (scripts[i].src) {\n path = pattern.exec(scripts[i].src);\n if (path) {\n return path[1];\n }\n }\n }\n return '';\n }\n\n return {\n get: function(map) {\n var basePath = map && map.options && map.options.basePath ? map.options.basePath + '/' : getBasePath();\n return basePath + 'images';\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/imagePath.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['http',\n '../stylesParser',\n './relativeToAbsolutePathConverter',\n 'security',\n 'mainConfig',\n 'services/utils'],\nfunction(http,\n stylesParser,\n relativeToAbsolutePathConverter,\n security,\n mainConfig,\n Utils) {\n 'use strict';\n\n var originalSetStyle;\n\n /**\n * @ignore\n * @param {String} url\n * @param {Function} callback\n */\n function requestStyle(url, callback) {\n http.get({\n url: url,\n callback: callback\n });\n }\n\n function validateAndSetStyle(styleDefinition, options) {\n var apiKey, styleParserOptions, fallbackResourceUrlReqex, setStyle;\n options = options || {};\n apiKey = security.getKey(options.securityKeyName);\n styleParserOptions = {\n apiKey: apiKey,\n language: options ? options.language : undefined,\n geopolView: options ? options.geopolView : undefined,\n resourceUrls: options && options.resourceUrls ? {\n glyphs: relativeToAbsolutePathConverter.convert(options.resourceUrls.glyphs),\n sprite: relativeToAbsolutePathConverter.convert(options.resourceUrls.sprite)\n } : undefined\n };\n fallbackResourceUrlReqex = /https:\\/\\/api.tomtom.com\\/maps-sdk-js\\/\\d*\\.\\d*\\.\\d*\\/glyphs/g;\n setStyle = function() {\n if (styleParserOptions.resourceUrls &&\n fallbackResourceUrlReqex.test(styleParserOptions.resourceUrls.glyphs)) {\n console.warn('You should host glyphs and sprites on your own.', '\\n',\n 'During map initialization pass glyphs and sprites urls', '\\n',\n 'var map = tomtom.map(\"map\", {', '\\n',\n 'key: \"\",', '\\n',\n 'source: \"vector\",', '\\n',\n 'basePath: ,', '\\n',\n 'glyphsUrl: ,', '\\n',\n 'spriteUrl: ', '\\n',\n '});', '\\n',\n 'If you set basePath correctly the SDK will try to load glyphs and sprites',\n 'from there and you will not need to set the URL explicitly.'\n );\n }\n\n originalSetStyle.call(this, stylesParser(styleDefinition, styleParserOptions), options);\n };\n\n setStyle = setStyle.bind(this);\n\n /**\n * @ignore\n * Try to load sprite from the provided resource url. If it fails switch to hosted glyphs and sprites.\n * If url is not provided set provided style as it is.\n */\n if (styleParserOptions.resourceUrls && styleParserOptions.resourceUrls.sprite) {\n http.get({\n url: styleParserOptions.resourceUrls.sprite + '.json',\n callback: setStyle,\n fail: function() {\n styleParserOptions.resourceUrls = {\n glyphs: mainConfig['vector.glyphs'],\n sprite: mainConfig['vector.sprites']\n };\n setStyle();\n }\n });\n } else {\n setStyle();\n }\n }\n\n /**\n * @ignore\n * @param {Object} styleDefinition\n * @param {Object} options\n */\n function setStyleDefinition(styleDefinition, options) {\n var that = this;\n if (options && options.preSetStyleCallback) {\n options.preSetStyleCallback(styleDefinition).then(function(styleDefinition) {\n validateAndSetStyle.call(that, styleDefinition, options);\n });\n } else {\n validateAndSetStyle.call(that, styleDefinition, options);\n }\n\n }\n\n /**\n * @ignore\n * @param {String} styleUrl\n * @param {Object} options\n */\n function setStyleDefinitionFromUrl(styleUrl, options) {\n var that = this;\n requestStyle(styleUrl, function(retrievedStyle) {\n setStyleDefinition.call(that, retrievedStyle, options);\n });\n }\n\n /**\n * @ignore\n * @param {Object} styleDefinition\n * @return {Boolean}\n */\n function isTomtomStyleObjectConfig(styleDefinition) {\n return typeof styleDefinition === 'object' && styleDefinition !== null && styleDefinition.styleUrlMapping;\n }\n\n /**\n * @ignore\n * @param {Object} styleDefinition\n * @return {String}\n */\n function resolveTomtomStyleUrl(styleDefinition) {\n var url = styleDefinition.styleUrlMapping[styleDefinition.theme.style][styleDefinition.theme.layer];\n return relativeToAbsolutePathConverter.convert(url);\n }\n\n /**\n * @ignore\n * @param {Object|String} styleDefinitionOrUrl\n * @param {Object} style.styleUrlMapping\n * @param {Object} [options]\n */\n function setStyle(styleDefinitionOrUrl, options) {\n if (isTomtomStyleObjectConfig(styleDefinitionOrUrl)) {\n options = options || {};\n options.resourceUrls = styleDefinitionOrUrl.resourceUrls;\n options.language = styleDefinitionOrUrl.language;\n options.geopolView = styleDefinitionOrUrl.geopolView;\n options.securityKeyName = styleDefinitionOrUrl.securityKeyName;\n options.preSetStyleCallback = styleDefinitionOrUrl.preSetStyleCallback;\n styleDefinitionOrUrl = resolveTomtomStyleUrl(styleDefinitionOrUrl);\n }\n\n // If a Style definition object is given\n if (typeof styleDefinitionOrUrl === 'object' && styleDefinitionOrUrl !== null) {\n setStyleDefinition.call(this, styleDefinitionOrUrl, options);\n\n // If an URL is given\n } else if (Utils.isString(styleDefinitionOrUrl)) {\n setStyleDefinitionFromUrl.call(this, styleDefinitionOrUrl, options);\n\n } else {\n originalSetStyle.call(this, styleDefinitionOrUrl, options);\n }\n }\n\n return {\n /**\n * @ignore\n * This method is used to enforce our styles to be loaded asynchronously and be passed to original mapboxgl\n * setStyle method LNS-10975\n * @param {Object} mapboxgl\n * @return {Function} Previously remembered setStyle function\n */\n modifySetStyle: function(mapboxgl) {\n var previousOriginalSetStyleFunction;\n if (!mapboxgl || mapboxgl.Map.prototype.setStyle === setStyle) {\n return null;\n }\n previousOriginalSetStyleFunction = originalSetStyle;\n originalSetStyle = mapboxgl.Map.prototype.setStyle;\n mapboxgl.Map.prototype.setStyle = setStyle;\n return previousOriginalSetStyleFunction;\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/vector/setStyleMethodModifier/mapboxSetStyleMethodModifier.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['./urlBuilder', './errorHandlerFetch', './analytics', 'services/utils'],\n function(urlBuilder, errorHandler, analytics, Utils) {\n 'use strict';\n\n function stringify(obj) {\n try {\n return JSON.stringify(obj);\n } catch (ex) {\n return null;\n }\n }\n\n function setHeader(requestOptions, headerName, headerValue) {\n var header;\n if (!requestOptions.headers) {\n requestOptions.headers = {};\n }\n\n header = requestOptions.headers[headerName] || requestOptions.headers[headerName.toLowerCase()];\n if (!header) {\n requestOptions.headers[headerName] = headerValue;\n }\n }\n\n function addObjectBodyParams(bodyParams, requestOptions) {\n var body;\n if (!(bodyParams instanceof FormData) && !(bodyParams instanceof Blob)) {\n body = stringify(bodyParams);\n if (!body) {\n throw new Error('Unsupported request body type: ' + bodyParams);\n }\n setHeader(requestOptions, 'Content-Type', 'application/json');\n } else {\n body = bodyParams;\n }\n return body;\n }\n\n function addBodyParams(options, requestOptions) {\n var bodyParams = options.bodyParameters, body;\n if (!bodyParams) {\n return;\n }\n\n if (Utils.isObject(bodyParams)) {\n body = addObjectBodyParams(bodyParams, requestOptions);\n } else if (Utils.isString(bodyParams)) {\n body = bodyParams;\n }\n\n requestOptions.body = body;\n }\n\n function performFetchRequest(options, url, requestOptions) {\n fetch(url, requestOptions)\n .then(function(response) {\n if (response.ok) {\n if (options.requestType === 'batch' && response.status === 202) {\n return options.callback(response.headers.get('Location'));\n }\n return response.json().then(options.callback);\n } else {\n return Promise.reject(response);\n }\n })\n .catch(function(reason) {\n errorHandler(options, reason);\n });\n }\n\n return {\n /**\n * Executes a request and processes the response as JSON.\n * @method get\n * @param {Object} options Specifies the details of the request.\n * @param {String} options.url The URL to request.\n * @param {Object} [options.queryParameters] The data to pass as GET parameters with the request.\n * @param {Object} [options.pathParameters] The data to use as {placeholders} in url.\n * @param {Function} [options.fail] The callback to execute when the request fails.\n * @param {Function} options.callback The callback to execute when the request completes.\n */\n get: function(options) {\n var url, requestOptions, headers = {};\n options.pathParameters = options.pathParameters || {};\n options.pathParameters.contentType = 'json';\n options.pathParameters.protocol = options.pathParameters.protocol || 'https';\n\n url = urlBuilder(options.url, options.pathParameters, options.queryParameters);\n if (analytics.isTomtomOrigin(url)) {\n headers = analytics.getAnalyticsHeader();\n }\n headers['Accept'] = 'application/json'; //eslint-disable-line dot-notation\n\n requestOptions = {\n method: 'GET',\n headers: headers,\n mode: 'cors'\n };\n\n performFetchRequest(options, url, requestOptions);\n },\n\n /**\n * Executes a request and processes the response as JSON.\n * @method post\n * @param {Object} options Specifies the details of the request.\n * @param {String} options.url The URL to request.\n * @param {Object} [options.queryParameters] The data to pass as Url parameters with the request.\n * @param {Object} [options.pathParameters] The data to use as {placeholders} in url.\n * @param {Object} [options.bodyParameters] The data to pass to request body.\n * @param {Function} [options.fail] The callback to execute when the request fails.\n * @param {Function} options.callback The callback to execute when the request completes.\n */\n post: function(options) {\n var url, requestOptions, headers = {};\n options.pathParameters = options.pathParameters || {};\n options.pathParameters.contentType = 'json';\n options.pathParameters.protocol = options.pathParameters.protocol || 'https';\n\n url = urlBuilder(options.url, options.pathParameters, options.queryParameters);\n if (analytics.isTomtomOrigin(url)) {\n headers = analytics.getAnalyticsHeader();\n }\n headers['Accept'] = 'application/json'; //eslint-disable-line dot-notation\n\n requestOptions = {\n method: 'POST',\n headers: headers,\n mode: 'cors',\n redirect: 'follow'\n };\n\n addBodyParams(options, requestOptions);\n performFetchRequest(options, url, requestOptions);\n }\n };\n });\n\n\n\n// WEBPACK FOOTER //\n// ./requester/json.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine([], function() {\n\n function errorHandler(reason) {\n var contentType = reason.headers && reason.headers.get('content-type');\n if (reason.json) {\n if (/application\\/json.*/.test(contentType)) {\n reason.json().then(this.fail).catch(this.fail);\n } else {\n reason.text().then(this.fail).catch(this.fail);\n }\n } else {\n this.fail(reason);\n }\n }\n\n return function(options, reason) {\n var errHandler = errorHandler.bind(options);\n if (options.fail) {\n errHandler(reason);\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./requester/errorHandlerFetch.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine([\n 'aja',\n './template',\n './errorHandlerJsnop',\n './analytics'\n], function(aja, template, errorHandler, analytics) {\n 'use strict';\n\n function callbackFunction(callback, fail) {\n return function(response) {\n if (!response.errorResponse) {\n callback(response);\n return;\n }\n if (fail) {\n fail(response.errorResponse['@description']);\n }\n };\n }\n\n function prepareOptions(options) {\n options.pathParameters = options.pathParameters || {};\n options.pathParameters.contentType = 'jsonp';\n options.pathParameters.protocol = options.pathParameters.protocol || 'https';\n options.callbackParam = options.callbackParam || 'jsonp';\n\n }\n\n function addQueryParams(options, req) {\n return options.queryParameters ? req.data(options.queryParameters) : req;\n }\n\n return {\n /**\n * Executes a request and processes the response as JSON.\n * @method get\n * @param {Object} options Specifies the details of the request.\n * @param {String} options.url The URL to request with {placeholders} for path parameters. {contentType}\n * will be replaced accordingly.\n * @param {Object} [options.queryParameters] The data to pass as GET parameters with the request.\n * @param {Object} [options.pathParameters] The data to use as {placeholders} in url.\n * @param {Function} options.callback The callback to execute when the request completes.\n * @param {String} [options.callbackParam=jsonp] The parameter name that the endpoint expects to qualify\n * the JSONP callback function.\n */\n get: function(options) {\n var url, req;\n console.warn('The support for JSONP will be removed soon. Please consider using the JSON implementation.');\n prepareOptions(options);\n url = template(options.url, options.pathParameters);\n req = aja().url(url).type('jsonp').jsonPaddingName(options.callbackParam);\n\n if (analytics.isTomtomOrigin(url)) {\n req = analytics.addAnalyticsHeader(req);\n }\n\n req = addQueryParams(options, req);\n req = errorHandler(options, req);\n req.on('success', callbackFunction(options.callback, options.fail)).go();\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./requester/jsonp.js","!function(){\"use strict\";var a=[\"html\",\"json\",\"jsonp\",\"script\"],b=[\"connect\",\"delete\",\"get\",\"head\",\"options\",\"patch\",\"post\",\"put\",\"trace\"],c=function f(){var a={},b={},c={url:function(a){return h.call(this,\"url\",a,d.string)},sync:function(a){return h.call(this,\"sync\",a,d.bool)},cache:function(a){return h.call(this,\"cache\",a,d.bool)},type:function(a){return h.call(this,\"type\",a,d.type)},header:function(b,c){return a.headers=a.headers||{},d.string(b),\"undefined\"!=typeof c?(d.string(c),a.headers[b]=c,this):a.headers[b]},auth:function(b,c){return d.string(b),d.string(c),a.auth={user:b,passwd:c},this},timeout:function(a){return h.call(this,\"timeout\",a,d.positiveInteger)},method:function(a){return h.call(this,\"method\",a,d.method)},queryString:function(a){return h.call(this,\"queryString\",a,d.queryString)},data:function(a){return h.call(this,\"data\",a,d.plainObject)},body:function(a){return h.call(this,\"body\",a,null,function(a){if(\"object\"==typeof a){if(!(a instanceof FormData)){try{a=JSON.stringify(a)}catch(b){throw new TypeError(\"Unable to stringify body's content : \"+b.name)}this.header(\"Content-Type\",\"application/json\")}}else a+=\"\";return a})},into:function(a){return h.call(this,\"into\",a,d.selector,function(a){return\"string\"==typeof a?document.querySelectorAll(a):a instanceof HTMLElement?[a]:void 0})},jsonPaddingName:function(a){return h.call(this,\"jsonPaddingName\",a,d.string)},jsonPadding:function(a){return h.call(this,\"jsonPadding\",a,d.func)},on:function(a,c){return\"function\"==typeof c&&(b[a]=b[a]||[],b[a].push(c)),this},off:function(a){return b[a]=[],this},trigger:function(a,c){var d=this,e=function(a,c){b[a]instanceof Array&&b[a].forEach(function(a){a.call(d,c)})};if(\"undefined\"!=typeof a){a+=\"\";var f=/^([0-9])([0-9x])([0-9x])$/i,g=a.match(f);g&&g.length>3?Object.keys(b).forEach(function(a){var b=a.match(f);!(b&&b.length>3&&g[1]===b[1])||\"x\"!==b[2]&&g[2]!==b[2]||\"x\"!==b[3]&&g[3]!==b[3]||e(a,c)}):b[a]&&e(a,c)}return this},go:function(){var b=a.type||(a.into?\"html\":\"json\"),c=j();return\"function\"==typeof g[b]?g[b].call(this,c):void 0}},g={json:function(a){var b=this;g._xhr.call(this,a,function(a){if(a)try{a=JSON.parse(a)}catch(c){return b.trigger(\"error\",c),null}return a})},html:function(b){g._xhr.call(this,b,function(b){return a.into&&a.into.length&&[].forEach.call(a.into,function(a){a.innerHTML=b}),b})},_xhr:function(b,c){var d,e,f,g,h,j=this,k=a.method||\"get\",l=a.sync!==!0,m=new XMLHttpRequest,n=a.data,o=a.body,p=(a.headers||{},this.header(\"Content-Type\")),q=a.timeout;if(!p&&n&&i()&&(this.header(\"Content-Type\",\"application/x-www-form-urlencoded;charset=utf-8\"),p=this.header(\"Content-Type\")),n&&i())if(\"string\"!=typeof o&&(o=\"\"),p.indexOf(\"json\")>-1)try{o=JSON.stringify(n)}catch(r){throw new TypeError(\"Unable to stringify body's content : \"+r.name)}else{g=p&&p.indexOf(\"x-www-form-urlencoded\")>1;for(d in n)o+=g?encodeURIComponent(d)+\"=\"+encodeURIComponent(n[d])+\"&\":d+\"=\"+n[d]+\"\\n\\r\"}h=[k,b,l],a.auth&&(h.push(a.auth.user),h.push(a.auth.passwd)),m.open.apply(m,h);for(e in a.headers)m.setRequestHeader(e,a.headers[e]);m.onprogress=function(a){a.lengthComputable&&j.trigger(\"progress\",a.loaded/a.total)},m.onload=function(){var a=m.responseText;f&&clearTimeout(f),this.status>=200&&this.status<300&&(\"function\"==typeof c&&(a=c(a)),j.trigger(\"success\",a)),j.trigger(this.status,a),j.trigger(\"end\",a)},m.onerror=function(a){f&&clearTimeout(f),j.trigger(\"error\",a,arguments)},q&&(f=setTimeout(function(){j.trigger(\"timeout\",{type:\"timeout\",expiredAfter:q},m,arguments),m.abort()},q)),m.send(o)},jsonp:function(b){var c,d=this,g=document.querySelector(\"head\"),h=a.sync!==!0,i=a.jsonPaddingName||\"callback\",j=a.jsonPadding||\"_padd\"+(new Date).getTime()+Math.floor(1e4*Math.random()),k={};if(f[j])throw new Error(\"Padding \"+j+\" already exists. It must be unique.\");/^ajajsonp_/.test(j)||(j=\"ajajsonp_\"+j),window[j]=function(a){d.trigger(\"success\",a),g.removeChild(c),window[j]=void 0},k[i]=j,b=e(b,k),c=document.createElement(\"script\"),c.async=h,c.src=b,c.onerror=function(){d.trigger(\"error\",arguments),g.removeChild(c),window[j]=void 0},g.appendChild(c)},script:function(b){var c,d=this,e=document.querySelector(\"head\")||document.querySelector(\"body\"),f=a.sync!==!0;if(!e)throw new Error(\"Ok, wait a second, you want to load a script, but you don't have at least a head or body tag...\");c=document.createElement(\"script\"),c.async=f,c.src=b,c.onerror=function(){d.trigger(\"error\",arguments),e.removeChild(c)},c.onload=function(){d.trigger(\"success\",arguments)},e.appendChild(c)}},h=function(b,c,e,f){if(\"undefined\"!=typeof c){if(\"function\"==typeof e)try{c=e.call(d,c)}catch(g){throw new TypeError(\"Failed to set \"+b+\" : \"+g.message)}return\"function\"==typeof f?a[b]=f.call(this,c):a[b]=c,this}return\"undefined\"===a[b]?null:a[b]},i=function(){return[\"delete\",\"patch\",\"post\",\"put\"].indexOf(a.method)>-1},j=function(){var b=a.url,c=\"undefined\"!=typeof a.cache?!!a.cache:!0,d=a.queryString||\"\",f=a.data;return c===!1&&(d+=\"&ajabuster=\"+(new Date).getTime()),b=e(b,d),f&&!i()&&(b=e(b,f)),b};return c},d={bool:function(a){return!!a},string:function(a){if(\"string\"!=typeof a)throw new TypeError(\"a string is expected, but \"+a+\" [\"+typeof a+\"] given\");return a},positiveInteger:function(a){if(parseInt(a)!==a||0>=a)throw new TypeError(\"an integer is expected, but \"+a+\" [\"+typeof a+\"] given\");return a},plainObject:function(a){if(\"object\"!=typeof a||a.constructor!==Object)throw new TypeError(\"an object is expected, but \"+a+\" [\"+typeof a+\"] given\");return a},type:function(b){if(b=this.string(b),a.indexOf(b.toLowerCase())<0)throw new TypeError(\"a type in [\"+a.join(\", \")+\"] is expected, but \"+b+\" given\");return b.toLowerCase()},method:function(a){if(a=this.string(a),b.indexOf(a.toLowerCase())<0)throw new TypeError(\"a method in [\"+b.join(\", \")+\"] is expected, but \"+a+\" given\");return a.toLowerCase()},queryString:function(a){var b={};return\"string\"==typeof a?a.replace(\"?\",\"\").split(\"&\").forEach(function(a){var c=a.split(\"=\");2===c.length&&(b[decodeURIComponent(c[0])]=decodeURIComponent(c[1]))}):b=a,this.plainObject(b)},selector:function(a){if(\"string\"!=typeof a&&!(a instanceof HTMLElement))throw new TypeError(\"a selector or an HTMLElement is expected, \"+a+\" [\"+typeof a+\"] given\");return a},func:function(a){if(a=this.string(a),!/^([a-zA-Z_])([a-zA-Z0-9_\\-])+$/.test(a))throw new TypeError(\"a valid function name is expected, \"+a+\" [\"+typeof a+\"] given\");return a}},e=function(a,b){var c;if(a=a||\"\",b)if(-1===a.indexOf(\"?\")&&(a+=\"?\"),\"string\"==typeof b)a+=b;else if(\"object\"==typeof b)for(c in b)a+=\"&\"+encodeURIComponent(c)+\"=\"+encodeURIComponent(b[c]);return a};\"function\"==typeof define&&define.amd?define([],function(){return c}):\"object\"==typeof exports?module.exports=c:window.aja=window.aja||c}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// /home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/aja/aja.min.js\n// module id = 114\n// module chunks = 0","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine([], function() {\n\n function errorHandler(err) {\n if (Object.prototype.toString.call(err) === '[object String]') {\n try {\n err = JSON.parse(err);\n this.fail(err);\n } catch (e) {\n this.fail(err);\n }\n }\n this.fail(err);\n }\n\n return function(options, req) {\n var errHandler = errorHandler.bind(options);\n if (options.fail) {\n req.on('error', errHandler)\n .on('4xx', errHandler)\n .on('5xx', errHandler);\n }\n return req;\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./requester/errorHandlerJsnop.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['services/utils'], function(Utils) {\n 'use strict';\n\n /**\n * @ignore\n * @param {String} sourceUrl\n * @param {String} paramName\n * @param {String} paramValue\n * @return {String}\n */\n function setQueryParamInUrl(sourceUrl, paramName, paramValue) {\n var qPrefix, pattern = new RegExp('(' + paramName + '=)[^&]*');\n if (pattern.test(sourceUrl)) {\n sourceUrl = sourceUrl.replace(pattern, '$1' + paramValue);\n } else {\n qPrefix = /\\?/.test(sourceUrl) ? '&' : '?';\n sourceUrl += qPrefix + paramName + '=' + paramValue;\n }\n return sourceUrl;\n }\n\n /**\n * @ignore\n * Sets the value of a parameter in the given Url string.\n *\n * It does that in two form:\n * 1. Find and replace a token for this param in the Url\n * 2. If no token is found, appends the value as a query paremeter\n *\n * @param {String} sourceUrl\n * @param {String} paramName\n * @param {String} paramValue\n * @return {String} New Url string\n */\n function setParamInUrl(sourceUrl, paramName, paramValue) {\n var token;\n if (!Utils.isString(paramName) || !Utils.isString(paramValue) ||\n paramValue.trim().length === 0) {\n return sourceUrl;\n }\n token = new RegExp('{' + paramName + '}', 'g');\n if (token.test(sourceUrl)) {\n return sourceUrl.replace(token, paramValue);\n }\n return setQueryParamInUrl(sourceUrl, paramName, paramValue);\n }\n\n /**\n * @ignore\n * @param {String} sourceUrl\n * @param {Object} options\n * @param {String} [options.apiKey]\n * @param {String} [options.language]\n * @param {String} [options.geopolView]\n * @return {String} Parsed URL\n */\n function parseSourceUrl(sourceUrl, options) {\n // Replacing \"key\" token with API key\n sourceUrl = setParamInUrl(sourceUrl, 'key', options.apiKey);\n // Adding language query parameter\n if (options.language) {\n sourceUrl = setParamInUrl(sourceUrl, 'language', options.language);\n }\n // Adding geo-political view query parameter\n if (options.geopolView) {\n sourceUrl = setParamInUrl(sourceUrl, 'view', options.geopolView);\n }\n return sourceUrl;\n }\n\n /**\n * @ignore\n * @param {Object} source\n * @param {Object} [source.url]\n * @param {Object} [source.tiles]\n * @param {Object} options\n * @param {String} [options.apiKey]\n * @param {String} [options.language]\n * @param {String} [options.geopolView]\n * @return {Object}\n */\n function parseSourceUrls(source, options) {\n if (!Utils.isObject(source)) {\n return source;\n }\n if (source.hasOwnProperty('url') && Utils.isString(source.url)) {\n source.url = parseSourceUrl(source.url, options);\n }\n if (source.hasOwnProperty('tiles') && Utils.isArray(source.tiles)) {\n source.tiles = source.tiles.map(function(urlStr) {\n return parseSourceUrl(urlStr, options);\n });\n }\n return source;\n }\n\n /**\n * @ignore\n * Returns a new source's object with all the necessary changes to be compatible with the TomTom's Online Maps API.\n * @param {Object} sources\n * @param {Object} options\n * @param {String} [options.apiKey]\n * @param {String} [options.language]\n * @param {String} [options.geopolView]\n * @return {Object} New sources object\n */\n function parseSources(sources, options) {\n var sourceName, newSourcesObj = {};\n for (sourceName in sources) {\n if (sources.hasOwnProperty(sourceName)) {\n newSourcesObj[sourceName] = parseSourceUrls(sources[sourceName], options);\n }\n }\n return newSourcesObj;\n }\n\n /**\n * @ignore\n * Replace the {key} token with the real API key in the given style definition.\n *\n * @param {Object} styleDefinition Style definition object\n * @param {Object} [styleDefinition.sources]\n * @param {Object} options\n * @param {String} [options.apiKey]\n * @param {String} [options.language]\n * @param {String} [options.geopolView]\n * @param {Object} [options.resourcesUrls] Glyphs and sprite URLs to be used instead of\n * those defined in the style definition\n * @param {String} [options.resourcesUrls.glyphs]\n * @param {String} [options.resourcesUrls.sprite]\n * @return {Object} New style definition object\n */\n function stylesParser(styleDefinition, options) {\n if (!Utils.isObject(styleDefinition)) {\n return styleDefinition;\n }\n\n // Parsing the style's sources\n if (Utils.isObject(styleDefinition.sources)) {\n styleDefinition.sources = parseSources(styleDefinition.sources, options);\n }\n\n // Replacing glyphs and sprite URLs if custom ones were passed to the L.Map constructor\n if (Utils.isObject(options.resourceUrls)) {\n if (options.resourceUrls.glyphs) {\n styleDefinition.glyphs = options.resourceUrls.glyphs;\n }\n if (options.resourceUrls.sprite) {\n styleDefinition.sprite = options.resourceUrls.sprite;\n }\n }\n\n return styleDefinition;\n }\n\n return stylesParser;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/vector/stylesParser.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine([], function() {\n 'use strict';\n function convertRelativePathToAbsolute(styleUrl) {\n return window.location.protocol + '//' + window.location.host + styleUrl;\n }\n\n function toAbsoluteUrl(url) {\n\n if (url.indexOf('://') === -1) {\n url = convertRelativePathToAbsolute(url);\n }\n\n return url;\n }\n return {\n convert: toAbsoluteUrl\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/vector/setStyleMethodModifier/relativeToAbsolutePathConverter.js","/* Mapbox GL JS is licensed under the 3-Clause BSD License. Full text of license: https://github.com/mapbox/mapbox-gl-js/blob/v0.53.0/LICENSE.txt */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\ntypeof define === 'function' && define.amd ? define(factory) :\n(global = global || self, global.mapboxgl = factory());\n}(this, function () { 'use strict';\n\n/* eslint-disable */\n\nvar shared, worker, mapboxgl;\n// define gets called three times: one for each chunk. we rely on the order\n// they're imported to know which is which\nfunction define(_, chunk) {\nif (!shared) {\n shared = chunk;\n} else if (!worker) {\n worker = chunk;\n} else {\n var workerBundleString = 'var sharedChunk = {}; (' + shared + ')(sharedChunk); (' + worker + ')(sharedChunk);'\n\n var sharedChunk = {};\n shared(sharedChunk);\n mapboxgl = chunk(sharedChunk);\n mapboxgl.workerUrl = window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' }));\n}\n}\n\n\ndefine([\"exports\"],function(t){\"use strict\";function e(t,e){return t(e={exports:{}},e.exports),e.exports}var r=n;function n(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=n,this.p2x=r,this.p2y=n;}n.prototype.sampleCurveX=function(t){return ((this.ax*t+this.bx)*t+this.cx)*t},n.prototype.sampleCurveY=function(t){return ((this.ay*t+this.by)*t+this.cy)*t},n.prototype.sampleCurveDerivativeX=function(t){return (3*this.ax*t+2*this.bx)*t+this.cx},n.prototype.solveCurveX=function(t,e){var r,n,i,a,o;for(void 0===e&&(e=1e-6),i=t,o=0;o<8;o++){if(a=this.sampleCurveX(i)-t,Math.abs(a)(n=1))return n;for(;ra?r=i:n=i,i=.5*(n-r)+r;}return i},n.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var i=a;function a(t,e){this.x=t,this.y=e;}function o(t,e){if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return !1;for(var r=0;r0;)e[r]=arguments[r+1];for(var n=0,i=e;n>e/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function d(t){return !!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function m(t,e){t.forEach(function(t){e[t]&&(e[t]=e[t].bind(e));});}function v(t,e){return -1!==t.indexOf(e,t.length-e.length)}function g(t,e,r){var n={};for(var i in t)n[i]=e.call(r||this,t[i],i,t);return n}function x(t,e,r){var n={};for(var i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function b(t){return Array.isArray(t)?t.map(b):\"object\"==typeof t&&t?g(t,b):t}var _={};function w(t){_[t]||(\"undefined\"!=typeof console&&console.warn(t),_[t]=!0);}function A(t,e,r){return (r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function S(t){for(var e=0,r=0,n=t.length,i=n-1,a=void 0,o=void 0;r=1&&self.localStorage.setItem(e,JSON.stringify(this.eventData));}catch(t){w(\"Unable to write to LocalStorage\");}},Y.prototype.processRequests=function(){},Y.prototype.postEvent=function(t,e,r){var n=this,i=X(C.EVENTS_URL);i.params.push(\"access_token=\"+(C.ACCESS_TOKEN||\"\"));var a={event:this.type,created:new Date(t).toISOString(),sdkIdentifier:\"mapbox-gl-js\",sdkVersion:\"0.53.0\",userId:this.anonId},o=e?c(a,e):a,s={url:Z(i),headers:{\"Content-Type\":\"text/plain\"},body:JSON.stringify([o])};this.pendingRequest=st(s,function(t){n.pendingRequest=null,r(t),n.saveEventData(),n.processRequests();});},Y.prototype.queueRequest=function(t){this.queue.push(t),this.processRequests();};var J=function(t){function e(){t.call(this,\"map.load\"),this.success={};}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postMapLoadEvent=function(t,e){C.ACCESS_TOKEN&&Array.isArray(t)&&t.some(function(t){return U(t)||q(t)})&&this.queueRequest({id:e,timestamp:Date.now()});},e.prototype.processRequests=function(){var t=this;if(!this.pendingRequest&&0!==this.queue.length){var e=this.queue.shift(),r=e.id,n=e.timestamp;r&&this.success[r]||(this.anonId||this.fetchEventData(),d(this.anonId)||(this.anonId=y()),this.postEvent(n,{},function(e){e||r&&(t.success[r]=!0);}));}},e}(Y),$=new(function(t){function e(){t.call(this,\"appUserTurnstile\");}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postTurnstileEvent=function(t){C.ACCESS_TOKEN&&Array.isArray(t)&&t.some(function(t){return U(t)||q(t)})&&this.queueRequest(Date.now());},e.prototype.processRequests=function(){var t=this;if(!this.pendingRequest&&0!==this.queue.length){this.anonId&&this.eventData.lastSuccess&&this.eventData.tokenU||this.fetchEventData();var e=H(C.ACCESS_TOKEN),r=e?e.u:C.ACCESS_TOKEN,n=r!==this.eventData.tokenU;d(this.anonId)||(this.anonId=y(),n=!0);var i=this.queue.shift();if(this.eventData.lastSuccess){var a=new Date(this.eventData.lastSuccess),o=new Date(i),s=(i-this.eventData.lastSuccess)/864e5;n=n||s>=1||s<-1||a.getDate()!==o.getDate();}else n=!0;if(!n)return this.processRequests();this.postEvent(i,{\"enabled.telemetry\":!1},function(e){e||(t.eventData.lastSuccess=i,t.eventData.tokenU=r);});}},e}(Y)),W=$.postTurnstileEvent.bind($),Q=new J,tt=Q.postMapLoadEvent.bind(Q),et={Unknown:\"Unknown\",Style:\"Style\",Source:\"Source\",Tile:\"Tile\",Glyphs:\"Glyphs\",SpriteImage:\"SpriteImage\",SpriteJSON:\"SpriteJSON\",Image:\"Image\"};\"function\"==typeof Object.freeze&&Object.freeze(et);var rt=function(t){function e(e,r,n){401===r&&q(n)&&(e+=\": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes\"),t.call(this,e),this.status=r,this.url=n,this.name=this.constructor.name,this.message=e;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toString=function(){return this.name+\": \"+this.message+\" (\"+this.status+\"): \"+this.url},e}(Error);function nt(){return \"undefined\"!=typeof WorkerGlobalScope&&\"undefined\"!=typeof self&&self instanceof WorkerGlobalScope}var it=nt()?function(){return self.worker&&self.worker.referrer}:function(){var t=self.location.origin;if(t&&\"null\"!==t&&\"file://\"!==t)return t+self.location.pathname};var at=function(t,e){if(!/^file:/.test(t.url)){if(self.fetch&&self.Request&&self.AbortController)return function(t,e){var r=new self.AbortController,n=new self.Request(t.url,{method:t.method||\"GET\",body:t.body,credentials:t.credentials,headers:t.headers,referrer:it(),signal:r.signal});return \"json\"===t.type&&n.headers.set(\"Accept\",\"application/json\"),self.fetch(n).then(function(r){r.ok?r[t.type||\"text\"]().then(function(t){e(null,t,r.headers.get(\"Cache-Control\"),r.headers.get(\"Expires\"));}).catch(function(t){return e(new Error(t.message))}):e(new rt(r.statusText,r.status,t.url));}).catch(function(t){20!==t.code&&e(new Error(t.message));}),{cancel:function(){return r.abort()}}}(t,e);if(nt()&&self.worker&&self.worker.actor)return self.worker.actor.send(\"getResource\",t,e)}return function(t,e){var r=new self.XMLHttpRequest;for(var n in r.open(t.method||\"GET\",t.url,!0),\"arrayBuffer\"===t.type&&(r.responseType=\"arraybuffer\"),t.headers)r.setRequestHeader(n,t.headers[n]);return \"json\"===t.type&&r.setRequestHeader(\"Accept\",\"application/json\"),r.withCredentials=\"include\"===t.credentials,r.onerror=function(){e(new Error(r.statusText));},r.onload=function(){if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){var n=r.response;if(\"json\"===t.type)try{n=JSON.parse(r.response);}catch(t){return e(t)}e(null,n,r.getResponseHeader(\"Cache-Control\"),r.getResponseHeader(\"Expires\"));}else e(new rt(r.statusText,r.status,t.url));},r.send(t.body),{cancel:function(){return r.abort()}}}(t,e)},ot=function(t,e){return at(c(t,{type:\"arrayBuffer\"}),e)},st=function(t,e){return at(c(t,{method:\"POST\"}),e)};var ut,lt;ut=[],lt=0;var pt=function(t,e){if(lt>=C.MAX_PARALLEL_IMAGE_REQUESTS){var r={requestParameters:t,callback:e,cancelled:!1,cancel:function(){this.cancelled=!0;}};return ut.push(r),r}lt++;var n=!1,i=function(){if(!n)for(n=!0,lt--;ut.length&<0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)},dt.prototype.setEventedParent=function(t,e){return this._eventedParent=t,this._eventedParentData=e,this};var mt={$version:8,$root:{version:{required:!0,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\"},sources:{required:!0,type:\"sources\"},sprite:{type:\"string\"},glyphs:{type:\"string\"},transition:{type:\"transition\"},layers:{required:!0,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:!0,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\"},\"*\":{type:\"*\"}},source_raster:{type:{required:!0,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\"},\"*\":{type:\"*\"}},source_raster_dem:{type:{required:!0,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\"},\"*\":{type:\"*\"}},source_geojson:{type:{required:!0,type:\"enum\",values:{geojson:{}}},data:{type:\"*\"},maxzoom:{type:\"number\",default:18},attribution:{type:\"string\"},buffer:{type:\"number\",default:128,maximum:512,minimum:0},tolerance:{type:\"number\",default:.375},cluster:{type:\"boolean\",default:!1},clusterRadius:{type:\"number\",default:50,minimum:0},clusterMaxZoom:{type:\"number\"},clusterProperties:{type:\"*\"},lineMetrics:{type:\"boolean\",default:!1},generateId:{type:\"boolean\",default:!1}},source_video:{type:{required:!0,type:\"enum\",values:{video:{}}},urls:{required:!0,type:\"array\",value:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},source_image:{type:{required:!0,type:\"enum\",values:{image:{}}},url:{required:!0,type:\"string\"},coordinates:{required:!0,type:\"array\",length:4,value:{type:\"array\",length:2,value:\"number\"}}},layer:{id:{type:\"string\",required:!0},type:{type:\"enum\",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},\"fill-extrusion\":{},raster:{},hillshade:{},background:{}},required:!0},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_background:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_fill:{visibility:{type:\"enum\",values:{visible:{},none:{}},default:\"visible\",\"property-type\":\"constant\"}},layout_circle:{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\"}},layout_line:{\"line-cap\":{type:\"enum\",values:{butt:{},round:{},square:{}},default:\"butt\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-join\":{type:\"enum\",values:{bevel:{},round:{},miter:{}},default:\"miter\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{type:\"number\",default:2,requires:[{\"line-join\":\"miter\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{type:\"number\",default:1.05,requires:[{\"line-join\":\"round\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},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:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{type:\"number\",default:250,minimum:1,units:\"pixels\",requires:[{\"symbol-placement\":\"line\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{type:\"boolean\",default:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{type:\"number\",expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{type:\"enum\",values:{auto:{},\"viewport-y\":{},source:{}},default:\"auto\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{type:\"boolean\",default:!1,requires:[\"icon-image\",\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,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:!0,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:!1,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:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{type:\"string\",tokens:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-keep-upright\":{type:\"boolean\",default:!1,requires:[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{type:\"array\",value:\"number\",length:2,default:[0,0],requires:[\"icon-image\"],expression:{interpolated:!0,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:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"icon-image\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{type:\"enum\",values:{map:{},viewport:{},auto:{}},default:\"auto\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{type:\"formatted\",default:\"\",tokens:!0,expression:{interpolated:!1,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:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{type:\"number\",default:16,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{type:\"number\",default:10,minimum:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{type:\"number\",default:1.2,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-letter-spacing\":{type:\"number\",default:0,units:\"ems\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{type:\"enum\",values:{left:{},center:{},right:{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-anchor\":{type:\"enum\",values:{center:{},left:{},right:{},top:{},bottom:{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},default:\"center\",requires:[\"text-field\"],expression:{interpolated:!1,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:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{type:\"number\",default:0,period:360,units:\"degrees\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{type:\"number\",default:2,minimum:0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{type:\"boolean\",default:!0,requires:[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{type:\"enum\",values:{none:{},uppercase:{},lowercase:{}},default:\"none\",requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{type:\"array\",value:\"number\",units:\"ems\",length:2,default:[0,0],requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{type:\"boolean\",default:!1,requires:[\"text-field\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{type:\"boolean\",default:!1,requires:[\"text-field\",\"icon-image\"],expression:{interpolated:!1,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_operator:{type:\"enum\",values:{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},in:{},\"!in\":{},all:{},any:{},none:{},has:{},\"!has\":{}}},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:!1}},function_stop:{type:\"array\",minimum:0,maximum:22,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\"},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\"},\"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:\"Zoom\"},\"heatmap-density\":{group:\"Heatmap\"},\"line-progress\":{group:\"Feature data\"},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\"},\"==\":{group:\"Decision\"},\"!=\":{group:\"Decision\"},\">\":{group:\"Decision\"},\"<\":{group:\"Decision\"},\">=\":{group:\"Decision\"},\"<=\":{group:\"Decision\"},all:{group:\"Decision\"},any:{group:\"Decision\"},\"!\":{group:\"Decision\"},\"is-supported-script\":{group:\"String\"},upcase:{group:\"String\"},downcase:{group:\"String\"},concat:{group:\"String\"},\"resolved-locale\":{group:\"String\"}}},light:{anchor:{type:\"enum\",default:\"viewport\",values:{map:{},viewport:{}},\"property-type\":\"data-constant\",transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]}},position:{type:\"array\",default:[1.15,210,30],length:3,value:\"number\",\"property-type\":\"data-constant\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]}},color:{type:\"color\",\"property-type\":\"data-constant\",default:\"#ffffff\",expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0},intensity:{type:\"number\",\"property-type\":\"data-constant\",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[\"zoom\"]},transition:!0}},paint:[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\"],paint_fill:{\"fill-antialias\":{type:\"boolean\",default:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{type:\"color\",transition:!0,requires:[{\"!\":\"fill-pattern\"},{\"fill-antialias\":!0}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{type:\"string\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"fill-extrusion-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"fill-extrusion-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{type:\"string\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"fill-extrusion-height\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{type:\"number\",default:0,minimum:0,units:\"meters\",transition:!0,requires:[\"fill-extrusion-height\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{type:\"boolean\",default:!0,transition:!1,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_line:{\"line-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"line-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{type:\"number\",default:1,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{type:\"number\",default:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{type:\"array\",value:\"number\",minimum:0,transition:!0,units:\"line widths\",requires:[{\"!\":\"line-pattern\"}],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"line-pattern\":{type:\"string\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\",\"feature\"]},\"property-type\":\"cross-faded-data-driven\"},\"line-gradient\":{type:\"color\",transition:!1,requires:[{\"!\":\"line-dasharray\"},{\"!\":\"line-pattern\"},{source:\"geojson\",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:[\"line-progress\"]},\"property-type\":\"color-ramp\"}},paint_circle:{\"circle-radius\":{type:\"number\",default:5,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{type:\"number\",default:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"circle-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},paint_heatmap:{\"heatmap-radius\":{type:\"number\",default:30,minimum:1,transition:!0,units:\"pixels\",expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{type:\"number\",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{type:\"number\",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{type:\"color\",default:[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",.1,\"royalblue\",.3,\"cyan\",.5,\"lime\",.7,\"yellow\",1,\"red\"],transition:!1,expression:{interpolated:!0,parameters:[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_symbol:{\"icon-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"icon-image\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"icon-image\",\"icon-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{type:\"color\",default:\"rgba(0, 0, 0, 0)\",transition:!0,requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{type:\"number\",default:0,minimum:0,transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{type:\"array\",value:\"number\",length:2,default:[0,0],transition:!0,units:\"pixels\",requires:[\"text-field\"],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"map\",requires:[\"text-field\",\"text-translate\"],expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_raster:{\"raster-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{type:\"number\",default:0,period:360,transition:!0,units:\"degrees\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{type:\"number\",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{type:\"number\",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{type:\"enum\",values:{linear:{},nearest:{}},default:\"linear\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{type:\"number\",default:300,minimum:0,transition:!1,units:\"milliseconds\",expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_hillshade:{\"hillshade-illumination-direction\":{type:\"number\",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{type:\"enum\",values:{map:{},viewport:{}},default:\"viewport\",expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{type:\"number\",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{type:\"color\",default:\"#FFFFFF\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{type:\"color\",default:\"#000000\",transition:!0,expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"}},paint_background:{\"background-color\":{type:\"color\",default:\"#000000\",transition:!0,requires:[{\"!\":\"background-pattern\"}],expression:{interpolated:!0,parameters:[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{type:\"string\",transition:!0,expression:{interpolated:!1,parameters:[\"zoom\"]},\"property-type\":\"cross-faded\"},\"background-opacity\":{type:\"number\",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,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\"},\"cross-faded\":{type:\"property-type\"},\"cross-faded-data-driven\":{type:\"property-type\"},\"color-ramp\":{type:\"property-type\"},\"data-constant\":{type:\"property-type\"},constant:{type:\"property-type\"}}},vt=function(t,e,r,n){this.message=(t?t+\": \":\"\")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__);};function gt(t){var e=t.key,r=t.value;return r?[new vt(e,r,\"constants have been deprecated as of v8\")]:[]}function xt(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n\":\"value\"===t.itemType.kind?\"array\":\"array<\"+e+\">\"}return t.kind}var Ft=[St,kt,zt,It,Bt,Ct,Et,Mt(Pt)];function Lt(t,e){if(\"error\"===e.kind)return null;if(\"array\"===t.kind){if(\"array\"===e.kind&&(0===e.N&&\"value\"===e.itemType.kind||!Lt(t.itemType,e.itemType))&&(\"number\"!=typeof t.N||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if(\"value\"===t.kind)for(var r=0,n=Ft;r255?255:t}function i(t){return t<0?0:t>1?1:t}function a(t){return \"%\"===t[t.length-1]?n(parseFloat(t)/100*255):n(parseInt(t))}function o(t){return \"%\"===t[t.length-1]?i(parseFloat(t)/100):i(parseFloat(t))}function s(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,i=t.replace(/ /g,\"\").toLowerCase();if(i in r)return r[i].slice();if(\"#\"===i[0])return 4===i.length?(e=parseInt(i.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===i.length&&(e=parseInt(i.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var u=i.indexOf(\"(\"),l=i.indexOf(\")\");if(-1!==u&&l+1===i.length){var p=i.substr(0,u),c=i.substr(u+1,l-(u+1)).split(\",\"),h=1;switch(p){case\"rgba\":if(4!==c.length)return null;h=o(c.pop());case\"rgb\":return 3!==c.length?null:[a(c[0]),a(c[1]),a(c[2]),h];case\"hsla\":if(4!==c.length)return null;h=o(c.pop());case\"hsl\":if(3!==c.length)return null;var f=(parseFloat(c[0])%360+360)%360/360,y=o(c[1]),d=o(c[2]),m=d<=.5?d*(y+1):d+y-d*y,v=2*d-m;return [n(255*s(v,m,f+1/3)),n(255*s(v,m,f)),n(255*s(v,m,f-1/3)),h];default:return null}}return null};}catch(t){}}).parseCSSColor,Dt=function(t,e,r,n){void 0===n&&(n=1),this.r=t,this.g=e,this.b=r,this.a=n;};Dt.parse=function(t){if(t){if(t instanceof Dt)return t;if(\"string\"==typeof t){var e=Ot(t);if(e)return new Dt(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3])}}},Dt.prototype.toString=function(){var t=this.toArray(),e=t[0],r=t[1],n=t[2],i=t[3];return \"rgba(\"+Math.round(e)+\",\"+Math.round(r)+\",\"+Math.round(n)+\",\"+i+\")\"},Dt.prototype.toArray=function(){var t=this.r,e=this.g,r=this.b,n=this.a;return 0===n?[0,0,0,0]:[255*t/n,255*e/n,255*r/n,n]},Dt.black=new Dt(0,0,0,1),Dt.white=new Dt(1,1,1,1),Dt.transparent=new Dt(0,0,0,0),Dt.red=new Dt(1,0,0,1);var Ut=function(t,e,r){this.sensitivity=t?e?\"variant\":\"case\":e?\"accent\":\"base\",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:\"search\"});};Ut.prototype.compare=function(t,e){return this.collator.compare(t,e)},Ut.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var jt=function(t,e,r){this.text=t,this.scale=e,this.fontStack=r;},qt=function(t){this.sections=t;};function Rt(t,e,r,n){return \"number\"==typeof t&&t>=0&&t<=255&&\"number\"==typeof e&&e>=0&&e<=255&&\"number\"==typeof r&&r>=0&&r<=255?void 0===n||\"number\"==typeof n&&n>=0&&n<=1?null:\"Invalid rgba value [\"+[t,e,r,n].join(\", \")+\"]: 'a' must be between 0 and 1.\":\"Invalid rgba value [\"+(\"number\"==typeof n?[t,e,r,n]:[t,e,r]).join(\", \")+\"]: 'r', 'g', and 'b' must be between 0 and 255.\"}function Nt(t){if(null===t)return St;if(\"string\"==typeof t)return zt;if(\"boolean\"==typeof t)return It;if(\"number\"==typeof t)return kt;if(t instanceof Dt)return Bt;if(t instanceof Ut)return Vt;if(t instanceof qt)return Ct;if(Array.isArray(t)){for(var e,r=t.length,n=0,i=t;n2){var s=t[1];if(\"string\"!=typeof s||!(s in Zt)||\"object\"===s)return e.error('The item type argument of \"array\" must be one of string, number, boolean',1);a=Zt[s],n++;}else a=Pt;if(t.length>3){if(null!==t[2]&&(\"number\"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to \"array\" must be a positive integer literal',2);o=t[2],n++;}r=Mt(a,o);}else r=Zt[i];for(var u=[];n1)&&e.push(n);}}return e.concat(this.args.map(function(t){return t.serialize()}))};var Yt=function(t){this.type=Ct,this.sections=t;};Yt.parse=function(t,e){if(t.length<3)return e.error(\"Expected at least two arguments.\");if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");for(var r=[],n=1;n4?\"Invalid rbga value \"+JSON.stringify(e)+\": expected an array containing either three or four numeric values.\":Rt(e[0],e[1],e[2],e[3])))return new Dt(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new Xt(r||\"Could not parse color from value '\"+(\"string\"==typeof e?e:JSON.stringify(e))+\"'\")}if(\"number\"===this.type.kind){for(var o=null,s=0,u=this.args;s=0)return !1;var r=!0;return t.eachChild(function(t){r&&!ie(t,e)&&(r=!1);}),r}ee.parse=function(t,e){if(2!==t.length)return e.error(\"Expected one argument.\");var r=t[1];if(\"object\"!=typeof r||Array.isArray(r))return e.error(\"Collator options argument must be an object.\");var n=e.parse(void 0!==r[\"case-sensitive\"]&&r[\"case-sensitive\"],1,It);if(!n)return null;var i=e.parse(void 0!==r[\"diacritic-sensitive\"]&&r[\"diacritic-sensitive\"],1,It);if(!i)return null;var a=null;return r.locale&&!(a=e.parse(r.locale,1,zt))?null:new ee(n,i,a)},ee.prototype.evaluate=function(t){return new Ut(this.caseSensitive.evaluate(t),this.diacriticSensitive.evaluate(t),this.locale?this.locale.evaluate(t):null)},ee.prototype.eachChild=function(t){t(this.caseSensitive),t(this.diacriticSensitive),this.locale&&t(this.locale);},ee.prototype.possibleOutputs=function(){return [void 0]},ee.prototype.serialize=function(){var t={};return t[\"case-sensitive\"]=this.caseSensitive.serialize(),t[\"diacritic-sensitive\"]=this.diacriticSensitive.serialize(),this.locale&&(t.locale=this.locale.serialize()),[\"collator\",t]};var ae=function(t,e){this.type=e.type,this.name=t,this.boundExpression=e;};ae.parse=function(t,e){if(2!==t.length||\"string\"!=typeof t[1])return e.error(\"'var' expression requires exactly one string literal argument.\");var r=t[1];return e.scope.has(r)?new ae(r,e.scope.get(r)):e.error('Unknown variable \"'+r+'\". Make sure \"'+r+'\" has been bound in an enclosing \"let\" expression before using it.',1)},ae.prototype.evaluate=function(t){return this.boundExpression.evaluate(t)},ae.prototype.eachChild=function(){},ae.prototype.possibleOutputs=function(){return [void 0]},ae.prototype.serialize=function(){return [\"var\",this.name]};var oe=function(t,e,r,n,i){void 0===e&&(e=[]),void 0===n&&(n=new At),void 0===i&&(i=[]),this.registry=t,this.path=e,this.key=e.map(function(t){return \"[\"+t+\"]\"}).join(\"\"),this.scope=n,this.errors=i,this.expectedType=r;};function se(t,e){for(var r,n,i=0,a=t.length-1,o=0;i<=a;){if(r=t[o=Math.floor((i+a)/2)],n=t[o+1],e===r||e>r&&ee))throw new Xt(\"Input is not a number.\");a=o-1;}}return Math.max(o-1,0)}oe.prototype.parse=function(t,e,r,n,i){return void 0===i&&(i={}),e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)},oe.prototype._parse=function(t,e){function r(t,e,r){return \"assert\"===r?new Ht(e,[t]):\"coerce\"===r?new $t(e,[t]):t}if(null!==t&&\"string\"!=typeof t&&\"boolean\"!=typeof t&&\"number\"!=typeof t||(t=[\"literal\",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');var n=t[0];if(\"string\"!=typeof n)return this.error(\"Expression name must be a string, but found \"+typeof n+' instead. If you wanted a literal array, use [\"literal\", [...]].',0),null;var i=this.registry[n];if(i){var a=i.parse(t,this);if(!a)return null;if(this.expectedType){var o=this.expectedType,s=a.type;if(\"string\"!==o.kind&&\"number\"!==o.kind&&\"boolean\"!==o.kind&&\"object\"!==o.kind&&\"array\"!==o.kind||\"value\"!==s.kind)if(\"color\"!==o.kind&&\"formatted\"!==o.kind||\"value\"!==s.kind&&\"string\"!==s.kind){if(this.checkSubtype(o,s))return null}else a=r(a,o,e.typeAnnotation||\"coerce\");else a=r(a,o,e.typeAnnotation||\"assert\");}if(!(a instanceof Gt)&&function t(e){if(e instanceof ae)return t(e.boundExpression);if(e instanceof te&&\"error\"===e.name)return !1;if(e instanceof ee)return !1;var r=e instanceof $t||e instanceof Ht;var n=!0;e.eachChild(function(e){n=r?n&&t(e):n&&e instanceof Gt;});if(!n)return !1;return re(e)&&ie(e,[\"zoom\",\"heatmap-density\",\"line-progress\",\"accumulated\",\"is-supported-script\"])}(a)){var u=new Qt;try{a=new Gt(a.type,a.evaluate(u));}catch(t){return this.error(t.message),null}}return a}return this.error('Unknown expression \"'+n+'\". If you wanted a literal array, use [\"literal\", [...]].',0)}return void 0===t?this.error(\"'undefined' value invalid. Use null instead.\"):\"object\"==typeof t?this.error('Bare objects invalid. Use [\"literal\", {...}] instead.'):this.error(\"Expected an array, but found \"+typeof t+\" instead.\")},oe.prototype.concat=function(t,e,r){var n=\"number\"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new oe(this.registry,n,e||null,i,this.errors)},oe.prototype.error=function(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];var n=\"\"+this.key+e.map(function(t){return \"[\"+t+\"]\"}).join(\"\");this.errors.push(new wt(n,t));},oe.prototype.checkSubtype=function(t,e){var r=Lt(t,e);return r&&this.error(r),r};var ue=function(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(var n=0,i=r;n=s)return e.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.',l);var c=e.parse(u,p,a);if(!c)return null;a=a||c.type,i.push([s,c]);}return new ue(a,r,i)},ue.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[se(e,n)].evaluate(t)},ue.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t};var pe=Object.freeze({number:le,color:function(t,e,r){return new Dt(le(t.r,e.r,r),le(t.g,e.g,r),le(t.b,e.b,r),le(t.a,e.a,r))},array:function(t,e,r){return t.map(function(t,n){return le(t,e[n],r)})}}),ce=.95047,he=1,fe=1.08883,ye=4/29,de=6/29,me=3*de*de,ve=de*de*de,ge=Math.PI/180,xe=180/Math.PI;function be(t){return t>ve?Math.pow(t,1/3):t/me+ye}function _e(t){return t>de?t*t*t:me*(t-ye)}function we(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Ae(t){return (t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Se(t){var e=Ae(t.r),r=Ae(t.g),n=Ae(t.b),i=be((.4124564*e+.3575761*r+.1804375*n)/ce),a=be((.2126729*e+.7151522*r+.072175*n)/he);return {l:116*a-16,a:500*(i-a),b:200*(a-be((.0193339*e+.119192*r+.9503041*n)/fe)),alpha:t.a}}function ke(t){var e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=he*_e(e),r=ce*_e(r),n=fe*_e(n),new Dt(we(3.2404542*r-1.5371385*e-.4985314*n),we(-.969266*r+1.8760108*e+.041556*n),we(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function ze(t,e,r){var n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}var Ie={forward:Se,reverse:ke,interpolate:function(t,e,r){return {l:le(t.l,e.l,r),a:le(t.a,e.a,r),b:le(t.b,e.b,r),alpha:le(t.alpha,e.alpha,r)}}},Be={forward:function(t){var e=Se(t),r=e.l,n=e.a,i=e.b,a=Math.atan2(i,n)*xe;return {h:a<0?a+360:a,c:Math.sqrt(n*n+i*i),l:r,alpha:t.a}},reverse:function(t){var e=t.h*ge,r=t.c;return ke({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return {h:ze(t.h,e.h,r),c:le(t.c,e.c,r),l:le(t.l,e.l,r),alpha:le(t.alpha,e.alpha,r)}}},Ee=Object.freeze({lab:Ie,hcl:Be}),Pe=function(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(var a=0,o=i;a1}))return e.error(\"Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.\",1);n={name:\"cubic-bezier\",controlPoints:s};}if(t.length-1<4)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if((t.length-1)%2!=0)return e.error(\"Expected an even number of arguments.\");if(!(i=e.parse(i,2,kt)))return null;var u=[],l=null;\"interpolate-hcl\"===r||\"interpolate-lab\"===r?l=Bt:e.expectedType&&\"value\"!==e.expectedType.kind&&(l=e.expectedType);for(var p=0;p=c)return e.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.',f);var d=e.parse(h,y,l);if(!d)return null;l=l||d.type,u.push([c,d]);}return \"number\"===l.kind||\"color\"===l.kind||\"array\"===l.kind&&\"number\"===l.itemType.kind&&\"number\"==typeof l.N?new Pe(l,r,n,i,u):e.error(\"Type \"+Tt(l)+\" is not interpolatable.\")},Pe.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);var a=se(e,n),o=e[a],s=e[a+1],u=Pe.interpolationFactor(this.interpolation,n,o,s),l=r[a].evaluate(t),p=r[a+1].evaluate(t);return \"interpolate\"===this.operator?pe[this.type.kind.toLowerCase()](l,p,u):\"interpolate-hcl\"===this.operator?Be.reverse(Be.interpolate(Be.forward(l),Be.forward(p),u)):Ie.reverse(Ie.interpolate(Ie.forward(l),Ie.forward(p),u))},Pe.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e=r.length)throw new Xt(\"Array index out of bounds: \"+e+\" > \"+(r.length-1)+\".\");if(e!==Math.floor(e))throw new Xt(\"Array index must be an integer, but found \"+e+\" instead.\");return r[e]},Te.prototype.eachChild=function(t){t(this.index),t(this.input);},Te.prototype.possibleOutputs=function(){return [void 0]},Te.prototype.serialize=function(){return [\"at\",this.index.serialize(),this.input.serialize()]};var Fe=function(t,e,r,n,i,a){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=a;};Fe.parse=function(t,e){if(t.length<5)return e.error(\"Expected at least 4 arguments, but found only \"+(t.length-1)+\".\");if(t.length%2!=1)return e.error(\"Expected an even number of arguments.\");var r,n;e.expectedType&&\"value\"!==e.expectedType.kind&&(n=e.expectedType);for(var i={},a=[],o=2;oNumber.MAX_SAFE_INTEGER)return l.error(\"Branch labels must be integers no larger than \"+Number.MAX_SAFE_INTEGER+\".\");if(\"number\"==typeof h&&Math.floor(h)!==h)return l.error(\"Numeric branch labels must be integer values.\");if(r){if(l.checkSubtype(r,Nt(h)))return null}else r=Nt(h);if(void 0!==i[String(h)])return l.error(\"Branch labels must be unique.\");i[String(h)]=a.length;}var f=e.parse(u,o,n);if(!f)return null;n=n||f.type,a.push(f);}var y=e.parse(t[1],1,Pt);if(!y)return null;var d=e.parse(t[t.length-1],t.length-1,n);return d?\"value\"!==y.type.kind&&e.concat(1).checkSubtype(r,y.type)?null:new Fe(r,n,y,i,a,d):null},Fe.prototype.evaluate=function(t){var e=this.input.evaluate(t);return (Nt(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)},Fe.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise);},Fe.prototype.possibleOutputs=function(){var t;return (t=[]).concat.apply(t,this.outputs.map(function(t){return t.possibleOutputs()})).concat(this.otherwise.possibleOutputs())},Fe.prototype.serialize=function(){for(var t=this,e=[\"match\",this.input.serialize()],r=[],n={},i=0,a=Object.keys(this.cases).sort();i\",function(t,e,r){return e>r},function(t,e,r,n){return n.compare(e,r)>0}),Ke=Ue(\"<=\",function(t,e,r){return e<=r},function(t,e,r,n){return n.compare(e,r)<=0}),Ge=Ue(\">=\",function(t,e,r){return e>=r},function(t,e,r,n){return n.compare(e,r)>=0}),Xe=function(t,e,r,n,i){this.type=zt,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i;};Xe.parse=function(t,e){if(3!==t.length)return e.error(\"Expected two arguments.\");var r=e.parse(t[1],1,kt);if(!r)return null;var n=t[2];if(\"object\"!=typeof n||Array.isArray(n))return e.error(\"NumberFormat options argument must be an object.\");var i=null;if(n.locale&&!(i=e.parse(n.locale,1,zt)))return null;var a=null;if(n.currency&&!(a=e.parse(n.currency,1,zt)))return null;var o=null;if(n[\"min-fraction-digits\"]&&!(o=e.parse(n[\"min-fraction-digits\"],1,kt)))return null;var s=null;return n[\"max-fraction-digits\"]&&!(s=e.parse(n[\"max-fraction-digits\"],1,kt))?null:new Xe(r,i,a,o,s)},Xe.prototype.evaluate=function(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?\"currency\":\"decimal\",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))},Xe.prototype.eachChild=function(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits);},Xe.prototype.possibleOutputs=function(){return [void 0]},Xe.prototype.serialize=function(){var t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t[\"min-fraction-digits\"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t[\"max-fraction-digits\"]=this.maxFractionDigits.serialize()),[\"number-format\",this.number.serialize(),t]};var Ze=function(t){this.type=kt,this.input=t;};Ze.parse=function(t,e){if(2!==t.length)return e.error(\"Expected 1 argument, but found \"+(t.length-1)+\" instead.\");var r=e.parse(t[1],1);return r?\"array\"!==r.type.kind&&\"string\"!==r.type.kind&&\"value\"!==r.type.kind?e.error(\"Expected argument of type string or array, but found \"+Tt(r.type)+\" instead.\"):new Ze(r):null},Ze.prototype.evaluate=function(t){var e=this.input.evaluate(t);if(\"string\"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new Xt(\"Expected value to be of type string or array, but found \"+Tt(Nt(e))+\" instead.\")},Ze.prototype.eachChild=function(t){t(this.input);},Ze.prototype.possibleOutputs=function(){return [void 0]},Ze.prototype.serialize=function(){var t=[\"length\"];return this.eachChild(function(e){t.push(e.serialize());}),t};var He={\"==\":je,\"!=\":qe,\">\":Ne,\"<\":Re,\">=\":Ge,\"<=\":Ke,array:Ht,at:Te,boolean:Ht,case:Le,coalesce:Ce,collator:ee,format:Yt,interpolate:Pe,\"interpolate-hcl\":Pe,\"interpolate-lab\":Pe,length:Ze,let:Me,literal:Gt,match:Fe,number:Ht,\"number-format\":Xe,object:Ht,step:ue,string:Ht,\"to-boolean\":$t,\"to-color\":$t,\"to-number\":$t,\"to-string\":$t,var:ae};function Ye(t,e){var r=e[0],n=e[1],i=e[2],a=e[3];r=r.evaluate(t),n=n.evaluate(t),i=i.evaluate(t);var o=a?a.evaluate(t):1,s=Rt(r,n,i,o);if(s)throw new Xt(s);return new Dt(r/255*o,n/255*o,i/255*o,o)}function Je(t,e){return t in e}function $e(t,e){var r=e[t];return void 0===r?null:r}function We(t){return {type:t}}function Qe(t){return {result:\"success\",value:t}}function tr(t){return {result:\"error\",value:t}}function er(t){return \"data-driven\"===t[\"property-type\"]||\"cross-faded-data-driven\"===t[\"property-type\"]}function rr(t){return !!t.expression&&t.expression.parameters.indexOf(\"zoom\")>-1}function nr(t){return !!t.expression&&t.expression.interpolated}function ir(t){return t instanceof Number?\"number\":t instanceof String?\"string\":t instanceof Boolean?\"boolean\":Array.isArray(t)?\"array\":null===t?\"null\":typeof t}function ar(t){return \"object\"==typeof t&&null!==t&&!Array.isArray(t)}function or(t){return t}function sr(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function ur(t,e,r,n,i){return sr(typeof r===i?n[r]:void 0,t.default,e.default)}function lr(t,e,r){if(\"number\"!==ir(r))return sr(t.default,e.default);var n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];var i=hr(t.stops,r);return t.stops[i][1]}function pr(t,e,r){var n=void 0!==t.base?t.base:1;if(\"number\"!==ir(r))return sr(t.default,e.default);var i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];var a=hr(t.stops,r),o=function(t,e,r,n){var i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[a][0],t.stops[a+1][0]),s=t.stops[a][1],u=t.stops[a+1][1],l=pe[e.type]||or;if(t.colorSpace&&\"rgb\"!==t.colorSpace){var p=Ee[t.colorSpace];l=function(t,e){return p.reverse(p.interpolate(p.forward(t),p.forward(e),o))};}return \"function\"==typeof s.evaluate?{evaluate:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=s.evaluate.apply(void 0,t),n=u.evaluate.apply(void 0,t);if(void 0!==r&&void 0!==n)return l(r,n,o)}}:l(s,u,o)}function cr(t,e,r){return \"color\"===e.type?r=Dt.parse(r):\"formatted\"===e.type?r=qt.fromString(r.toString()):ir(r)===e.type||\"enum\"===e.type&&e.values[r]||(r=void 0),sr(r,t.default,e.default)}function hr(t,e){for(var r,n,i=0,a=t.length-1,o=0;i<=a;){if(r=t[o=Math.floor((i+a)/2)][0],n=t[o+1][0],e===r||e>r&&ee&&(a=o-1);}return Math.max(o-1,0)}te.register(He,{error:[{kind:\"error\"},[zt],function(t,e){var r=e[0];throw new Xt(r.evaluate(t))}],typeof:[zt,[Pt],function(t,e){return Tt(Nt(e[0].evaluate(t)))}],\"to-rgba\":[Mt(kt,4),[Bt],function(t,e){return e[0].evaluate(t).toArray()}],rgb:[Bt,[kt,kt,kt],Ye],rgba:[Bt,[kt,kt,kt,kt],Ye],has:{type:It,overloads:[[[zt],function(t,e){return Je(e[0].evaluate(t),t.properties())}],[[zt,Et],function(t,e){var r=e[0],n=e[1];return Je(r.evaluate(t),n.evaluate(t))}]]},get:{type:Pt,overloads:[[[zt],function(t,e){return $e(e[0].evaluate(t),t.properties())}],[[zt,Et],function(t,e){var r=e[0],n=e[1];return $e(r.evaluate(t),n.evaluate(t))}]]},\"feature-state\":[Pt,[zt],function(t,e){return $e(e[0].evaluate(t),t.featureState||{})}],properties:[Et,[],function(t){return t.properties()}],\"geometry-type\":[zt,[],function(t){return t.geometryType()}],id:[Pt,[],function(t){return t.id()}],zoom:[kt,[],function(t){return t.globals.zoom}],\"heatmap-density\":[kt,[],function(t){return t.globals.heatmapDensity||0}],\"line-progress\":[kt,[],function(t){return t.globals.lineProgress||0}],accumulated:[Pt,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],\"+\":[kt,We(kt),function(t,e){for(var r=0,n=0,i=e;n\":[It,[zt,Pt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>a}],\"filter-id->\":[It,[Pt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>i}],\"filter-<=\":[It,[zt,Pt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i<=a}],\"filter-id-<=\":[It,[Pt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n<=i}],\"filter->=\":[It,[zt,Pt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>=a}],\"filter-id->=\":[It,[Pt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>=i}],\"filter-has\":[It,[Pt],function(t,e){return e[0].value in t.properties()}],\"filter-has-id\":[It,[],function(t){return null!==t.id()}],\"filter-type-in\":[It,[Mt(zt)],function(t,e){return e[0].value.indexOf(t.geometryType())>=0}],\"filter-id-in\":[It,[Mt(Pt)],function(t,e){return e[0].value.indexOf(t.id())>=0}],\"filter-in-small\":[It,[zt,Mt(Pt)],function(t,e){var r=e[0];return e[1].value.indexOf(t.properties()[r.value])>=0}],\"filter-in-large\":[It,[zt,Mt(Pt)],function(t,e){var r=e[0],n=e[1];return function(t,e,r,n){for(;r<=n;){var i=r+n>>1;if(e[i]===t)return !0;e[i]>t?n=i-1:r=i+1;}return !1}(t.properties()[r.value],n.value,0,n.value.length-1)}],all:{type:It,overloads:[[[It,It],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)&&n.evaluate(t)}],[We(It),function(t,e){for(var r=0,n=e;r0&&\"string\"==typeof t[0]&&t[0]in He}function dr(t,e){var r=new oe(He,[],e?function(t){var e={color:Bt,string:zt,number:kt,enum:zt,boolean:It,formatted:Ct};if(\"array\"===t.type)return Mt(e[t.value]||Pt,t.length);return e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&\"string\"===e.type?{typeAnnotation:\"coerce\"}:void 0);return n?Qe(new fr(n,e)):tr(r.errors)}fr.prototype.evaluateWithoutErrorHandling=function(t,e,r){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this.expression.evaluate(this._evaluator)},fr.prototype.evaluate=function(t,e,r){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null;try{var n=this.expression.evaluate(this._evaluator);if(null==n)return this._defaultValue;if(this._enumValues&&!(n in this._enumValues))throw new Xt(\"Expected value to be one of \"+Object.keys(this._enumValues).map(function(t){return JSON.stringify(t)}).join(\", \")+\", but found \"+JSON.stringify(n)+\" instead.\");return n}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,\"undefined\"!=typeof console&&console.warn(t.message)),this._defaultValue}};var mr=function(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent=\"constant\"!==t&&!ne(e.expression);};mr.prototype.evaluateWithoutErrorHandling=function(t,e,r){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r)},mr.prototype.evaluate=function(t,e,r){return this._styleExpression.evaluate(t,e,r)};var vr=function(t,e,r){this.kind=t,this.zoomStops=r.labels,this._styleExpression=e,this.isStateDependent=\"camera\"!==t&&!ne(e.expression),r instanceof Pe&&(this._interpolationType=r.interpolation);};function gr(t,e){if(\"error\"===(t=dr(t,e)).result)return t;var r=t.value.expression,n=re(r);if(!n&&!er(e))return tr([new wt(\"\",\"data expressions not supported\")]);var i=ie(r,[\"zoom\"]);if(!i&&!rr(e))return tr([new wt(\"\",\"zoom expressions not supported\")]);var a=function t(e){var r=null;if(e instanceof Me)r=t(e.result);else if(e instanceof Ce)for(var n=0,i=e.args;nn.maximum?[new vt(e,r,r+\" is greater than the maximum value \"+n.maximum)]:[]}function Sr(t){var e,r,n,i=t.valueSpec,a=bt(t.value.type),o={},s=\"categorical\"!==a&&void 0===t.value.property,u=!s,l=\"array\"===ir(t.value.stops)&&\"array\"===ir(t.value.stops[0])&&\"object\"===ir(t.value.stops[0][0]),p=_r({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if(\"identity\"===a)return [new vt(t.key,t.value,'identity function may not have a \"stops\" property')];var e=[],r=t.value;e=e.concat(wr({key:t.key,value:r,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:c})),\"array\"===ir(r)&&0===r.length&&e.push(new vt(t.key,r,\"array must have at least one stop\"));return e},default:function(t){return Gr({key:t.key,value:t.value,valueSpec:i,style:t.style,styleSpec:t.styleSpec})}}});return \"identity\"===a&&s&&p.push(new vt(t.key,t.value,'missing required property \"property\"')),\"identity\"===a||t.value.stops||p.push(new vt(t.key,t.value,'missing required property \"stops\"')),\"exponential\"===a&&t.valueSpec.expression&&!nr(t.valueSpec)&&p.push(new vt(t.key,t.value,\"exponential functions not supported\")),t.styleSpec.$version>=8&&(u&&!er(t.valueSpec)?p.push(new vt(t.key,t.value,\"property functions not supported\")):s&&!rr(t.valueSpec)&&p.push(new vt(t.key,t.value,\"zoom functions not supported\"))),\"categorical\"!==a&&!l||void 0!==t.value.property||p.push(new vt(t.key,t.value,'\"property\" property is required')),p;function c(t){var e=[],a=t.value,s=t.key;if(\"array\"!==ir(a))return [new vt(s,a,\"array expected, \"+ir(a)+\" found\")];if(2!==a.length)return [new vt(s,a,\"array length 2 expected, length \"+a.length+\" found\")];if(l){if(\"object\"!==ir(a[0]))return [new vt(s,a,\"object expected, \"+ir(a[0])+\" found\")];if(void 0===a[0].zoom)return [new vt(s,a,\"object stop key must have zoom\")];if(void 0===a[0].value)return [new vt(s,a,\"object stop key must have value\")];if(n&&n>bt(a[0].zoom))return [new vt(s,a[0].zoom,\"stop zoom values must appear in ascending order\")];bt(a[0].zoom)!==n&&(n=bt(a[0].zoom),r=void 0,o={}),e=e.concat(_r({key:s+\"[0]\",value:a[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:Ar,value:h}}));}else e=e.concat(h({key:s+\"[0]\",value:a[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},a));return yr(_t(a[1]))?e.concat([new vt(s+\"[1]\",a[1],\"expressions are not allowed in function stops.\")]):e.concat(Gr({key:s+\"[1]\",value:a[1],valueSpec:i,style:t.style,styleSpec:t.styleSpec}))}function h(t,n){var s=ir(t.value),u=bt(t.value),l=null!==t.value?t.value:n;if(e){if(s!==e)return [new vt(t.key,l,s+\" stop domain type must match previous stop domain type \"+e)]}else e=s;if(\"number\"!==s&&\"string\"!==s&&\"boolean\"!==s)return [new vt(t.key,l,\"stop domain value must be a number, string, or boolean\")];if(\"number\"!==s&&\"categorical\"!==a){var p=\"number expected, \"+s+\" found\";return er(i)&&void 0===a&&(p+='\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.'),[new vt(t.key,l,p)]}return \"categorical\"!==a||\"number\"!==s||isFinite(u)&&Math.floor(u)===u?\"categorical\"!==a&&\"number\"===s&&void 0!==r&&u=2&&\"$id\"!==t[1]&&\"$type\"!==t[1];case\"in\":case\"!in\":case\"!has\":case\"none\":return !1;case\"==\":case\"!=\":case\">\":case\">=\":case\"<\":case\"<=\":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case\"any\":case\"all\":for(var e=0,r=t.slice(1);ee?1:0}function Vr(t){if(!t)return !0;var e,r=t[0];return t.length<=1?\"any\"!==r:\"==\"===r?Cr(t[1],t[2],\"==\"):\"!=\"===r?Fr(Cr(t[1],t[2],\"==\")):\"<\"===r||\">\"===r||\"<=\"===r||\">=\"===r?Cr(t[1],t[2],r):\"any\"===r?(e=t.slice(1),[\"any\"].concat(e.map(Vr))):\"all\"===r?[\"all\"].concat(t.slice(1).map(Vr)):\"none\"===r?[\"all\"].concat(t.slice(1).map(Vr).map(Fr)):\"in\"===r?Mr(t[1],t.slice(2)):\"!in\"===r?Fr(Mr(t[1],t.slice(2))):\"has\"===r?Tr(t[1]):\"!has\"!==r||Fr(Tr(t[1]))}function Cr(t,e,r){switch(t){case\"$type\":return [\"filter-type-\"+r,e];case\"$id\":return [\"filter-id-\"+r,e];default:return [\"filter-\"+r,t,e]}}function Mr(t,e){if(0===e.length)return !1;switch(t){case\"$type\":return [\"filter-type-in\",[\"literal\",e]];case\"$id\":return [\"filter-id-in\",[\"literal\",e]];default:return e.length>200&&!e.some(function(t){return typeof t!=typeof e[0]})?[\"filter-in-large\",t,[\"literal\",e.sort(Pr)]]:[\"filter-in-small\",t,[\"literal\",e]]}}function Tr(t){switch(t){case\"$type\":return !0;case\"$id\":return [\"filter-has-id\"];default:return [\"filter-has\",t]}}function Fr(t){return [\"!\",t]}function Lr(t){return Ir(_t(t.value))?kr(xt({},t,{expressionContext:\"filter\",valueSpec:{value:\"boolean\"}})):function t(e){var r=e.value;var n=e.key;if(\"array\"!==ir(r))return [new vt(n,r,\"array expected, \"+ir(r)+\" found\")];var i=e.styleSpec;var a;var o=[];if(r.length<1)return [new vt(n,r,\"filter array must have at least 1 element\")];o=o.concat(zr({key:n+\"[0]\",value:r[0],valueSpec:i.filter_operator,style:e.style,styleSpec:e.styleSpec}));switch(bt(r[0])){case\"<\":case\"<=\":case\">\":case\">=\":r.length>=2&&\"$type\"===bt(r[1])&&o.push(new vt(n,r,'\"$type\" cannot be use with operator \"'+r[0]+'\"'));case\"==\":case\"!=\":3!==r.length&&o.push(new vt(n,r,'filter array for operator \"'+r[0]+'\" must have 3 elements'));case\"in\":case\"!in\":r.length>=2&&\"string\"!==(a=ir(r[1]))&&o.push(new vt(n+\"[1]\",r[1],\"string expected, \"+a+\" found\"));for(var s=2;s=p[f+0]&&n>=p[f+1])?(o[h]=!0,a.push(l[h])):o[h]=!1;}}},nn.prototype._forEachCell=function(t,e,r,n,i,a,o,s){for(var u=this._convertToCellCoord(t),l=this._convertToCellCoord(e),p=this._convertToCellCoord(r),c=this._convertToCellCoord(n),h=u;h<=p;h++)for(var f=l;f<=c;f++){var y=this.d*f+h;if((!s||s(this._convertFromCellCoord(h),this._convertFromCellCoord(f),this._convertFromCellCoord(h+1),this._convertFromCellCoord(f+1)))&&i.call(this,t,e,r,n,y,a,o,s))return}},nn.prototype._convertFromCellCoord=function(t){return (t-this.padding)/this.scale},nn.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},nn.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=rn+this.cells.length+1+1,r=0,n=0;n=0)){var c=t[p];l[p]=on[u].shallow.indexOf(p)>=0?c:ln(c,e);}t instanceof Error&&(l.message=t.message);}if(l.$name)throw new Error(\"$name property is reserved for worker serialization logic.\");return \"Object\"!==u&&(l.$name=u),l}throw new Error(\"can't serialize object of type \"+typeof t)}function pn(t){if(null==t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||t instanceof ArrayBuffer||ArrayBuffer.isView(t)||t instanceof an)return t;if(Array.isArray(t))return t.map(pn);if(\"object\"==typeof t){var e=t.$name||\"Object\",r=on[e].klass;if(!r)throw new Error(\"can't deserialize unregistered class \"+e);if(r.deserialize)return r.deserialize(t);for(var n=Object.create(r.prototype),i=0,a=Object.keys(t);i=0?s:pn(s);}}return n}throw new Error(\"can't deserialize object of type \"+typeof t)}var cn=function(){this.first=!0;};cn.prototype.update=function(t,e){var r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom=128&&t<=255},Arabic:function(t){return t>=1536&&t<=1791},\"Arabic Supplement\":function(t){return t>=1872&&t<=1919},\"Arabic Extended-A\":function(t){return t>=2208&&t<=2303},\"Hangul Jamo\":function(t){return t>=4352&&t<=4607},\"Unified Canadian Aboriginal Syllabics\":function(t){return t>=5120&&t<=5759},Khmer:function(t){return t>=6016&&t<=6143},\"Unified Canadian Aboriginal Syllabics Extended\":function(t){return t>=6320&&t<=6399},\"General Punctuation\":function(t){return t>=8192&&t<=8303},\"Letterlike Symbols\":function(t){return t>=8448&&t<=8527},\"Number Forms\":function(t){return t>=8528&&t<=8591},\"Miscellaneous Technical\":function(t){return t>=8960&&t<=9215},\"Control Pictures\":function(t){return t>=9216&&t<=9279},\"Optical Character Recognition\":function(t){return t>=9280&&t<=9311},\"Enclosed Alphanumerics\":function(t){return t>=9312&&t<=9471},\"Geometric Shapes\":function(t){return t>=9632&&t<=9727},\"Miscellaneous Symbols\":function(t){return t>=9728&&t<=9983},\"Miscellaneous Symbols and Arrows\":function(t){return t>=11008&&t<=11263},\"CJK Radicals Supplement\":function(t){return t>=11904&&t<=12031},\"Kangxi Radicals\":function(t){return t>=12032&&t<=12255},\"Ideographic Description Characters\":function(t){return t>=12272&&t<=12287},\"CJK Symbols and Punctuation\":function(t){return t>=12288&&t<=12351},Hiragana:function(t){return t>=12352&&t<=12447},Katakana:function(t){return t>=12448&&t<=12543},Bopomofo:function(t){return t>=12544&&t<=12591},\"Hangul Compatibility Jamo\":function(t){return t>=12592&&t<=12687},Kanbun:function(t){return t>=12688&&t<=12703},\"Bopomofo Extended\":function(t){return t>=12704&&t<=12735},\"CJK Strokes\":function(t){return t>=12736&&t<=12783},\"Katakana Phonetic Extensions\":function(t){return t>=12784&&t<=12799},\"Enclosed CJK Letters and Months\":function(t){return t>=12800&&t<=13055},\"CJK Compatibility\":function(t){return t>=13056&&t<=13311},\"CJK Unified Ideographs Extension A\":function(t){return t>=13312&&t<=19903},\"Yijing Hexagram Symbols\":function(t){return t>=19904&&t<=19967},\"CJK Unified Ideographs\":function(t){return t>=19968&&t<=40959},\"Yi Syllables\":function(t){return t>=40960&&t<=42127},\"Yi Radicals\":function(t){return t>=42128&&t<=42191},\"Hangul Jamo Extended-A\":function(t){return t>=43360&&t<=43391},\"Hangul Syllables\":function(t){return t>=44032&&t<=55215},\"Hangul Jamo Extended-B\":function(t){return t>=55216&&t<=55295},\"Private Use Area\":function(t){return t>=57344&&t<=63743},\"CJK Compatibility Ideographs\":function(t){return t>=63744&&t<=64255},\"Arabic Presentation Forms-A\":function(t){return t>=64336&&t<=65023},\"Vertical Forms\":function(t){return t>=65040&&t<=65055},\"CJK Compatibility Forms\":function(t){return t>=65072&&t<=65103},\"Small Form Variants\":function(t){return t>=65104&&t<=65135},\"Arabic Presentation Forms-B\":function(t){return t>=65136&&t<=65279},\"Halfwidth and Fullwidth Forms\":function(t){return t>=65280&&t<=65519}};function fn(t){for(var e=0,r=t;e=65097&&t<=65103)||(!!hn[\"CJK Compatibility Ideographs\"](t)||(!!hn[\"CJK Compatibility\"](t)||(!!hn[\"CJK Radicals Supplement\"](t)||(!!hn[\"CJK Strokes\"](t)||(!(!hn[\"CJK Symbols and Punctuation\"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||(!!hn[\"CJK Unified Ideographs Extension A\"](t)||(!!hn[\"CJK Unified Ideographs\"](t)||(!!hn[\"Enclosed CJK Letters and Months\"](t)||(!!hn[\"Hangul Compatibility Jamo\"](t)||(!!hn[\"Hangul Jamo Extended-A\"](t)||(!!hn[\"Hangul Jamo Extended-B\"](t)||(!!hn[\"Hangul Jamo\"](t)||(!!hn[\"Hangul Syllables\"](t)||(!!hn.Hiragana(t)||(!!hn[\"Ideographic Description Characters\"](t)||(!!hn.Kanbun(t)||(!!hn[\"Kangxi Radicals\"](t)||(!!hn[\"Katakana Phonetic Extensions\"](t)||(!(!hn.Katakana(t)||12540===t)||(!(!hn[\"Halfwidth and Fullwidth Forms\"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||(!(!hn[\"Small Form Variants\"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||(!!hn[\"Unified Canadian Aboriginal Syllabics\"](t)||(!!hn[\"Unified Canadian Aboriginal Syllabics Extended\"](t)||(!!hn[\"Vertical Forms\"](t)||(!!hn[\"Yijing Hexagram Symbols\"](t)||(!!hn[\"Yi Syllables\"](t)||!!hn[\"Yi Radicals\"](t))))))))))))))))))))))))))))))}function mn(t){return !(dn(t)||function(t){return !!(hn[\"Latin-1 Supplement\"](t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||hn[\"General Punctuation\"](t)&&(8214===t||8224===t||8225===t||8240===t||8241===t||8251===t||8252===t||8258===t||8263===t||8264===t||8265===t||8273===t)||hn[\"Letterlike Symbols\"](t)||hn[\"Number Forms\"](t)||hn[\"Miscellaneous Technical\"](t)&&(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215)||hn[\"Control Pictures\"](t)&&9251!==t||hn[\"Optical Character Recognition\"](t)||hn[\"Enclosed Alphanumerics\"](t)||hn[\"Geometric Shapes\"](t)||hn[\"Miscellaneous Symbols\"](t)&&!(t>=9754&&t<=9759)||hn[\"Miscellaneous Symbols and Arrows\"](t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243)||hn[\"CJK Symbols and Punctuation\"](t)||hn.Katakana(t)||hn[\"Private Use Area\"](t)||hn[\"CJK Compatibility Forms\"](t)||hn[\"Small Form Variants\"](t)||hn[\"Halfwidth and Fullwidth Forms\"](t)||8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)}(t))}function vn(t,e){return !(!e&&(t>=1424&&t<=2303||hn[\"Arabic Presentation Forms-A\"](t)||hn[\"Arabic Presentation Forms-B\"](t)))&&!(t>=2304&&t<=3583||t>=3840&&t<=4255||hn.Khmer(t))}var gn,xn=!1,bn=null,_n=!1,wn=new dt,An={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return _n||null!=An.applyArabicShaping}},Sn=function(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new cn,this.transition={});};Sn.prototype.isSupportedScript=function(t){return function(t,e){for(var r=0,n=t;rthis.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}};var kn=function(t,e){this.property=t,this.value=e,this.expression=br(void 0===e?t.specification.default:e,t.specification);};kn.prototype.isDataDriven=function(){return \"source\"===this.expression.kind||\"composite\"===this.expression.kind},kn.prototype.possiblyEvaluate=function(t){return this.property.possiblyEvaluate(this,t)};var zn=function(t){this.property=t,this.value=new kn(t,void 0);};zn.prototype.transitioned=function(t,e){return new Bn(this.property,this.value,e,c({},t.transition,this.transition),t.now)},zn.prototype.untransitioned=function(){return new Bn(this.property,this.value,null,{},0)};var In=function(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues);};In.prototype.getValue=function(t){return b(this._values[t].value.value)},In.prototype.setValue=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new zn(this._values[t].property)),this._values[t].value=new kn(this._values[t].property,null===e?void 0:b(e));},In.prototype.getTransition=function(t){return b(this._values[t].transition)},In.prototype.setTransition=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new zn(this._values[t].property)),this._values[t].transition=b(e)||void 0;},In.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);ethis.end)return this.prior=null,r;if(this.value.isDataDriven())return this.prior=null,r;if(e=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}(i))}return r};var En=function(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues);};En.prototype.possiblyEvaluate=function(t){for(var e=new Cn(this._properties),r=0,n=Object.keys(this._values);rn.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},e.prototype.interpolate=function(t){return t},e}(Tn),Ln=function(t){this.specification=t;};Ln.prototype.possiblyEvaluate=function(t,e){if(void 0!==t.value){if(\"constant\"===t.expression.kind){var r=t.expression.evaluate(e);return this._calculate(r,r,r,e)}return this._calculate(t.expression.evaluate(new Sn(Math.floor(e.zoom-1),e)),t.expression.evaluate(new Sn(Math.floor(e.zoom),e)),t.expression.evaluate(new Sn(Math.floor(e.zoom+1),e)),e)}},Ln.prototype._calculate=function(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},Ln.prototype.interpolate=function(t){return t};var On=function(t){this.specification=t;};On.prototype.possiblyEvaluate=function(t,e){return !!t.expression.evaluate(e)},On.prototype.interpolate=function(){return !1};var Dn=function(t){for(var e in this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},t){var r=t[e],n=this.defaultPropertyValues[e]=new kn(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new zn(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({});}};sn(\"DataDrivenProperty\",Tn),sn(\"DataConstantProperty\",Mn),sn(\"CrossFadedDataDrivenProperty\",Fn),sn(\"CrossFadedProperty\",Ln),sn(\"ColorRampProperty\",On);var Un=function(t){function e(e,r){if(t.call(this),this.id=e.id,this.type=e.type,this.visibility=\"visible\",this._featureFilter=function(){return !0},\"custom\"!==e.type&&(e=e,this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,\"background\"!==e.type&&(this.source=e.source,this.sourceLayer=e[\"source-layer\"],this.filter=e.filter),r.layout&&(this._unevaluatedLayout=new Pn(r.layout)),r.paint)){for(var n in this._transitionablePaint=new In(r.paint),e.paint)this.setPaintProperty(n,e.paint[n],{validate:!1});for(var i in e.layout)this.setLayoutProperty(i,e.layout[i],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned();}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},e.prototype.getLayoutProperty=function(t){return \"visibility\"===t?this.visibility:this._unevaluatedLayout.getValue(t)},e.prototype.setLayoutProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".layout.\"+t;if(this._validate(Qr,n,t,e,r))return}\"visibility\"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=\"none\"===e?e:\"visible\";},e.prototype.getPaintProperty=function(t){return v(t,\"-transition\")?this._transitionablePaint.getTransition(t.slice(0,-\"-transition\".length)):this._transitionablePaint.getValue(t)},e.prototype.setPaintProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n=\"layers.\"+this.id+\".paint.\"+t;if(this._validate(Wr,n,t,e,r))return !1}if(v(t,\"-transition\"))return this._transitionablePaint.setTransition(t.slice(0,-\"-transition\".length),e||void 0),!1;var i=this._transitionablePaint._values[t],a=\"cross-faded-data-driven\"===i.property.specification[\"property-type\"]&&!i.value.value&&e,o=this._transitionablePaint._values[t].value.isDataDriven();this._transitionablePaint.setValue(t,e);var s=this._transitionablePaint._values[t].value.isDataDriven();return this._handleSpecialPaintPropertyUpdate(t),s||o||a},e.prototype._handleSpecialPaintPropertyUpdate=function(t){},e.prototype.isHidden=function(t){return !!(this.minzoom&&t=this.maxzoom)||\"none\"===this.visibility)},e.prototype.updateTransitions=function(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint);},e.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},e.prototype.recalculate=function(t){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t)),this.paint=this._transitioningPaint.possiblyEvaluate(t);},e.prototype.serialize=function(){var t={id:this.id,type:this.type,source:this.source,\"source-layer\":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return \"none\"===this.visibility&&(t.layout=t.layout||{},t.layout.visibility=\"none\"),x(t,function(t,e){return !(void 0===t||\"layout\"===e&&!Object.keys(t).length||\"paint\"===e&&!Object.keys(t).length)})},e.prototype._validate=function(t,e,r,n,i){return void 0===i&&(i={}),(!i||!1!==i.validate)&&tn(this,t.call(Jr,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:mt,style:{glyphs:!0,sprite:!0}}))},e.prototype.hasOffscreenPass=function(){return !1},e.prototype.resize=function(){},e.prototype.isStateDependent=function(){for(var t in this.paint._values){var e=this.paint.get(t);if(e instanceof Vn&&er(e.property.specification)&&((\"source\"===e.value.kind||\"composite\"===e.value.kind)&&e.value.isStateDependent))return !0}return !1},e}(dt),jn={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},qn=function(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8;},Rn=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0);};function Nn(t,e){void 0===e&&(e=1);var r=0,n=0;return {members:t.map(function(t){var i,a=(i=t.type,jn[i].BYTES_PER_ELEMENT),o=r=Kn(r,Math.max(e,a)),s=t.components||1;return n=Math.max(n,a),r+=a*s,{name:t.name,type:t.type,components:s,offset:o}}),size:Kn(r,Math.max(n,e)),alignment:e}}function Kn(t,e){return Math.ceil(t/e)*e}Rn.serialize=function(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}},Rn.deserialize=function(t){var e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e},Rn.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews());},Rn.prototype.clear=function(){this.length=0;},Rn.prototype.resize=function(t){this.reserve(t),this.length=t;},Rn.prototype.reserve=function(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var e=this.uint8;this._refreshViews(),e&&this.uint8.set(e);}},Rn.prototype._refreshViews=function(){throw new Error(\"_refreshViews() must be implemented by each concrete StructArray layout\")};var Gn=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t},e}(Rn);Gn.prototype.bytesPerElement=4,sn(\"StructArrayLayout2i4\",Gn);var Xn=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.int16[a+0]=e,this.int16[a+1]=r,this.int16[a+2]=n,this.int16[a+3]=i,t},e}(Rn);Xn.prototype.bytesPerElement=8,sn(\"StructArrayLayout4i8\",Xn);var Zn=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Rn);Zn.prototype.bytesPerElement=12,sn(\"StructArrayLayout2i4i12\",Zn);var Hn=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s){var u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,o,s)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u){var l=6*t,p=12*t;return this.int16[l+0]=e,this.int16[l+1]=r,this.int16[l+2]=n,this.int16[l+3]=i,this.uint8[p+8]=a,this.uint8[p+9]=o,this.uint8[p+10]=s,this.uint8[p+11]=u,t},e}(Rn);Hn.prototype.bytesPerElement=12,sn(\"StructArrayLayout4i4ub12\",Hn);var Yn=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s){var u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,o,s)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u){var l=8*t;return this.uint16[l+0]=e,this.uint16[l+1]=r,this.uint16[l+2]=n,this.uint16[l+3]=i,this.uint16[l+4]=a,this.uint16[l+5]=o,this.uint16[l+6]=s,this.uint16[l+7]=u,t},e}(Rn);Yn.prototype.bytesPerElement=16,sn(\"StructArrayLayout8ui16\",Yn);var Jn=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s){var u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,o,s)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u){var l=8*t;return this.int16[l+0]=e,this.int16[l+1]=r,this.int16[l+2]=n,this.int16[l+3]=i,this.uint16[l+4]=a,this.uint16[l+5]=o,this.uint16[l+6]=s,this.uint16[l+7]=u,t},e}(Rn);Jn.prototype.bytesPerElement=16,sn(\"StructArrayLayout4i4ui16\",Jn);var $n=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t},e}(Rn);$n.prototype.bytesPerElement=12,sn(\"StructArrayLayout3f12\",$n);var Wn=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint32[r+0]=e,t},e}(Rn);Wn.prototype.bytesPerElement=4,sn(\"StructArrayLayout1ul4\",Wn);var Qn=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,u,l,p){var c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,a,o,s,u,l,p)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u,l,p,c){var h=12*t,f=6*t;return this.int16[h+0]=e,this.int16[h+1]=r,this.int16[h+2]=n,this.int16[h+3]=i,this.int16[h+4]=a,this.int16[h+5]=o,this.uint32[f+3]=s,this.uint16[h+8]=u,this.uint16[h+9]=l,this.int16[h+10]=p,this.int16[h+11]=c,t},e}(Rn);Qn.prototype.bytesPerElement=24,sn(\"StructArrayLayout6i1ul2ui2i24\",Qn);var ti=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Rn);ti.prototype.bytesPerElement=12,sn(\"StructArrayLayout2i2i2i12\",ti);var ei=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=4*t;return this.uint8[n+0]=e,this.uint8[n+1]=r,t},e}(Rn);ei.prototype.bytesPerElement=4,sn(\"StructArrayLayout2ub4\",ei);var ri=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,u,l,p,c,h,f){var y=this.length;return this.resize(y+1),this.emplace(y,t,e,r,n,i,a,o,s,u,l,p,c,h,f)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u,l,p,c,h,f,y){var d=20*t,m=10*t,v=40*t;return this.int16[d+0]=e,this.int16[d+1]=r,this.uint16[d+2]=n,this.uint16[d+3]=i,this.uint32[m+2]=a,this.uint32[m+3]=o,this.uint32[m+4]=s,this.uint16[d+10]=u,this.uint16[d+11]=l,this.uint16[d+12]=p,this.float32[m+7]=c,this.float32[m+8]=h,this.uint8[v+36]=f,this.uint8[v+37]=y,t},e}(Rn);ri.prototype.bytesPerElement=40,sn(\"StructArrayLayout2i2ui3ul3ui2f2ub40\",ri);var ni=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,u,l,p,c,h,f){var y=this.length;return this.resize(y+1),this.emplace(y,t,e,r,n,i,a,o,s,u,l,p,c,h,f)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,u,l,p,c,h,f,y){var d=16*t,m=8*t;return this.int16[d+0]=e,this.int16[d+1]=r,this.int16[d+2]=n,this.int16[d+3]=i,this.uint16[d+4]=a,this.uint16[d+5]=o,this.uint16[d+6]=s,this.uint16[d+7]=u,this.uint16[d+8]=l,this.uint16[d+9]=p,this.uint16[d+10]=c,this.uint16[d+11]=h,this.uint16[d+12]=f,this.uint32[m+7]=y,t},e}(Rn);ni.prototype.bytesPerElement=32,sn(\"StructArrayLayout4i9ui1ul32\",ni);var ii=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.float32[r+0]=e,t},e}(Rn);ii.prototype.bytesPerElement=4,sn(\"StructArrayLayout1f4\",ii);var ai=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t},e}(Rn);ai.prototype.bytesPerElement=6,sn(\"StructArrayLayout3i6\",ai);var oi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=2*t,a=4*t;return this.uint32[i+0]=e,this.uint16[a+2]=r,this.uint16[a+3]=n,t},e}(Rn);oi.prototype.bytesPerElement=8,sn(\"StructArrayLayout1ul2ui8\",oi);var si=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t},e}(Rn);si.prototype.bytesPerElement=6,sn(\"StructArrayLayout3ui6\",si);var ui=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t},e}(Rn);ui.prototype.bytesPerElement=4,sn(\"StructArrayLayout2ui4\",ui);var li=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint16[r+0]=e,t},e}(Rn);li.prototype.bytesPerElement=2,sn(\"StructArrayLayout1ui2\",li);var pi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t},e}(Rn);pi.prototype.bytesPerElement=8,sn(\"StructArrayLayout2f8\",pi);var ci=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.float32[a+3]=i,t},e}(Rn);ci.prototype.bytesPerElement=16,sn(\"StructArrayLayout4f16\",ci);var hi=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},radius:{configurable:!0},signedDistanceFromAnchor:{configurable:!0},anchorPoint:{configurable:!0}};return r.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorPointX.set=function(t){this._structArray.int16[this._pos2+0]=t;},r.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},r.anchorPointY.set=function(t){this._structArray.int16[this._pos2+1]=t;},r.x1.get=function(){return this._structArray.int16[this._pos2+2]},r.x1.set=function(t){this._structArray.int16[this._pos2+2]=t;},r.y1.get=function(){return this._structArray.int16[this._pos2+3]},r.y1.set=function(t){this._structArray.int16[this._pos2+3]=t;},r.x2.get=function(){return this._structArray.int16[this._pos2+4]},r.x2.set=function(t){this._structArray.int16[this._pos2+4]=t;},r.y2.get=function(){return this._structArray.int16[this._pos2+5]},r.y2.set=function(t){this._structArray.int16[this._pos2+5]=t;},r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.featureIndex.set=function(t){this._structArray.uint32[this._pos4+3]=t;},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},r.sourceLayerIndex.set=function(t){this._structArray.uint16[this._pos2+8]=t;},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.bucketIndex.set=function(t){this._structArray.uint16[this._pos2+9]=t;},r.radius.get=function(){return this._structArray.int16[this._pos2+10]},r.radius.set=function(t){this._structArray.int16[this._pos2+10]=t;},r.signedDistanceFromAnchor.get=function(){return this._structArray.int16[this._pos2+11]},r.signedDistanceFromAnchor.set=function(t){this._structArray.int16[this._pos2+11]=t;},r.anchorPoint.get=function(){return new i(this.anchorPointX,this.anchorPointY)},Object.defineProperties(e.prototype,r),e}(qn);hi.prototype.size=24;var fi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new hi(this,t)},e}(Qn);sn(\"CollisionBoxArray\",fi);var yi=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},hidden:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorX.set=function(t){this._structArray.int16[this._pos2+0]=t;},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.anchorY.set=function(t){this._structArray.int16[this._pos2+1]=t;},r.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.glyphStartIndex.set=function(t){this._structArray.uint16[this._pos2+2]=t;},r.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},r.numGlyphs.set=function(t){this._structArray.uint16[this._pos2+3]=t;},r.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},r.vertexStartIndex.set=function(t){this._structArray.uint32[this._pos4+2]=t;},r.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.lineStartIndex.set=function(t){this._structArray.uint32[this._pos4+3]=t;},r.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},r.lineLength.set=function(t){this._structArray.uint32[this._pos4+4]=t;},r.segment.get=function(){return this._structArray.uint16[this._pos2+10]},r.segment.set=function(t){this._structArray.uint16[this._pos2+10]=t;},r.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},r.lowerSize.set=function(t){this._structArray.uint16[this._pos2+11]=t;},r.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},r.upperSize.set=function(t){this._structArray.uint16[this._pos2+12]=t;},r.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},r.lineOffsetX.set=function(t){this._structArray.float32[this._pos4+7]=t;},r.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},r.lineOffsetY.set=function(t){this._structArray.float32[this._pos4+8]=t;},r.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},r.writingMode.set=function(t){this._structArray.uint8[this._pos1+36]=t;},r.hidden.get=function(){return this._structArray.uint8[this._pos1+37]},r.hidden.set=function(t){this._structArray.uint8[this._pos1+37]=t;},Object.defineProperties(e.prototype,r),e}(qn);yi.prototype.size=40;var di=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new yi(this,t)},e}(ri);sn(\"PlacedSymbolArray\",di);var mi=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},horizontalPlacedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},crossTileID:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorX.set=function(t){this._structArray.int16[this._pos2+0]=t;},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.anchorY.set=function(t){this._structArray.int16[this._pos2+1]=t;},r.horizontalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},r.horizontalPlacedTextSymbolIndex.set=function(t){this._structArray.int16[this._pos2+2]=t;},r.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},r.verticalPlacedTextSymbolIndex.set=function(t){this._structArray.int16[this._pos2+3]=t;},r.key.get=function(){return this._structArray.uint16[this._pos2+4]},r.key.set=function(t){this._structArray.uint16[this._pos2+4]=t;},r.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+5]},r.textBoxStartIndex.set=function(t){this._structArray.uint16[this._pos2+5]=t;},r.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+6]},r.textBoxEndIndex.set=function(t){this._structArray.uint16[this._pos2+6]=t;},r.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+7]},r.iconBoxStartIndex.set=function(t){this._structArray.uint16[this._pos2+7]=t;},r.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+8]},r.iconBoxEndIndex.set=function(t){this._structArray.uint16[this._pos2+8]=t;},r.featureIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.featureIndex.set=function(t){this._structArray.uint16[this._pos2+9]=t;},r.numGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+10]},r.numGlyphVertices.set=function(t){this._structArray.uint16[this._pos2+10]=t;},r.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+11]},r.numVerticalGlyphVertices.set=function(t){this._structArray.uint16[this._pos2+11]=t;},r.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+12]},r.numIconVertices.set=function(t){this._structArray.uint16[this._pos2+12]=t;},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+7]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+7]=t;},Object.defineProperties(e.prototype,r),e}(qn);mi.prototype.size=32;var vi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new mi(this,t)},e}(ni);sn(\"SymbolInstanceArray\",vi);var gi=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={offsetX:{configurable:!0}};return r.offsetX.get=function(){return this._structArray.float32[this._pos4+0]},r.offsetX.set=function(t){this._structArray.float32[this._pos4+0]=t;},Object.defineProperties(e.prototype,r),e}(qn);gi.prototype.size=4;var xi=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getoffsetX=function(t){return this.float32[1*t+0]},e.prototype.get=function(t){return new gi(this,t)},e}(ii);sn(\"GlyphOffsetArray\",xi);var bi=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={x:{configurable:!0},y:{configurable:!0},tileUnitDistanceFromAnchor:{configurable:!0}};return r.x.get=function(){return this._structArray.int16[this._pos2+0]},r.x.set=function(t){this._structArray.int16[this._pos2+0]=t;},r.y.get=function(){return this._structArray.int16[this._pos2+1]},r.y.set=function(t){this._structArray.int16[this._pos2+1]=t;},r.tileUnitDistanceFromAnchor.get=function(){return this._structArray.int16[this._pos2+2]},r.tileUnitDistanceFromAnchor.set=function(t){this._structArray.int16[this._pos2+2]=t;},Object.defineProperties(e.prototype,r),e}(qn);bi.prototype.size=6;var _i=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getx=function(t){return this.int16[3*t+0]},e.prototype.gety=function(t){return this.int16[3*t+1]},e.prototype.gettileUnitDistanceFromAnchor=function(t){return this.int16[3*t+2]},e.prototype.get=function(t){return new bi(this,t)},e}(ai);sn(\"SymbolLineVertexArray\",_i);var wi=function(t){function e(){t.apply(this,arguments);}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},r.featureIndex.set=function(t){this._structArray.uint32[this._pos4+0]=t;},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.sourceLayerIndex.set=function(t){this._structArray.uint16[this._pos2+2]=t;},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},r.bucketIndex.set=function(t){this._structArray.uint16[this._pos2+3]=t;},Object.defineProperties(e.prototype,r),e}(qn);wi.prototype.size=8;var Ai=function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new wi(this,t)},e}(oi);sn(\"FeatureIndexArray\",Ai);var Si=Nn([{name:\"a_pos\",components:2,type:\"Int16\"}],4),ki=Si.members,zi=(Si.size,Si.alignment,function(t){void 0===t&&(t=[]),this.segments=t;});function Ii(t,e){return 256*(t=l(Math.floor(t),0,255))+(e=l(Math.floor(e),0,255))}zi.prototype.prepareSegment=function(t,e,r,n){var i=this.segments[this.segments.length-1];return t>zi.MAX_VERTEX_ARRAY_LENGTH&&w(\"Max vertices per segment is \"+zi.MAX_VERTEX_ARRAY_LENGTH+\": bucket requested \"+t),(!i||i.vertexLength+t>zi.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i},zi.prototype.get=function(){return this.segments},zi.prototype.destroy=function(){for(var t=0,e=this.segments;t>1;this.ids[n]>=t?r=n:e=n+1;}for(var i=[];this.ids[e]===t;){var a=this.positions[3*e],o=this.positions[3*e+1],s=this.positions[3*e+2];i.push({index:a,start:o,end:s}),e++;}return i},Bi.serialize=function(t,e){var r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return function t(e,r,n,i){if(n>=i)return;var a=e[n+i>>1];var o=n-1;var s=i+1;for(;;){do{o++;}while(e[o]a);if(o>=s)break;Ei(e,o,s),Ei(r,3*o,3*s),Ei(r,3*o+1,3*s+1),Ei(r,3*o+2,3*s+2);}t(e,r,n,s);t(e,r,s+1,i);}(r,n,0,r.length-1),e.push(r.buffer,n.buffer),{ids:r,positions:n}},Bi.deserialize=function(t){var e=new Bi;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e},sn(\"FeaturePositionMap\",Bi);var Pi=function(t,e){this.gl=t.gl,this.location=e;},Vi=function(t){function e(e,r){t.call(this,e,r),this.current=0;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){this.current!==t&&(this.current=t,this.gl.uniform1i(this.location,t));},e}(Pi),Ci=function(t){function e(e,r){t.call(this,e,r),this.current=0;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){this.current!==t&&(this.current=t,this.gl.uniform1f(this.location,t));},e}(Pi),Mi=function(t){function e(e,r){t.call(this,e,r),this.current=[0,0];}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){t[0]===this.current[0]&&t[1]===this.current[1]||(this.current=t,this.gl.uniform2f(this.location,t[0],t[1]));},e}(Pi),Ti=function(t){function e(e,r){t.call(this,e,r),this.current=[0,0,0];}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]||(this.current=t,this.gl.uniform3f(this.location,t[0],t[1],t[2]));},e}(Pi),Fi=function(t){function e(e,r){t.call(this,e,r),this.current=[0,0,0,0];}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){t[0]===this.current[0]&&t[1]===this.current[1]&&t[2]===this.current[2]&&t[3]===this.current[3]||(this.current=t,this.gl.uniform4f(this.location,t[0],t[1],t[2],t[3]));},e}(Pi),Li=function(t){function e(e,r){t.call(this,e,r),this.current=Dt.transparent;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){t.r===this.current.r&&t.g===this.current.g&&t.b===this.current.b&&t.a===this.current.a||(this.current=t,this.gl.uniform4f(this.location,t.r,t.g,t.b,t.a));},e}(Pi),Oi=new Float32Array(16),Di=function(t){function e(e,r){t.call(this,e,r),this.current=Oi;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.set=function(t){if(t[12]!==this.current[12]||t[0]!==this.current[0])return this.current=t,void this.gl.uniformMatrix4fv(this.location,!1,t);for(var e=1;e<16;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix4fv(this.location,!1,t);break}},e}(Pi);function Ui(t){return [Ii(255*t.r,255*t.g),Ii(255*t.b,255*t.a)]}var ji=function(t,e,r){this.value=t,this.names=e,this.uniformNames=this.names.map(function(t){return \"u_\"+t}),this.type=r,this.maxValue=-1/0;};ji.prototype.defines=function(){return this.names.map(function(t){return \"#define HAS_UNIFORM_u_\"+t})},ji.prototype.setConstantPatternPositions=function(){},ji.prototype.populatePaintArray=function(){},ji.prototype.updatePaintArray=function(){},ji.prototype.upload=function(){},ji.prototype.destroy=function(){},ji.prototype.setUniforms=function(t,e,r,n){e.set(n.constantOr(this.value));},ji.prototype.getBinding=function(t,e){return \"color\"===this.type?new Li(t,e):new Ci(t,e)},ji.serialize=function(t){var e=t.value,r=t.names,n=t.type;return {value:ln(e),names:r,type:n}},ji.deserialize=function(t){var e=t.value,r=t.names,n=t.type;return new ji(pn(e),r,n)};var qi=function(t,e,r){this.value=t,this.names=e,this.uniformNames=this.names.map(function(t){return \"u_\"+t}),this.type=r,this.maxValue=-1/0,this.patternPositions={patternTo:null,patternFrom:null};};qi.prototype.defines=function(){return this.names.map(function(t){return \"#define HAS_UNIFORM_u_\"+t})},qi.prototype.populatePaintArray=function(){},qi.prototype.updatePaintArray=function(){},qi.prototype.upload=function(){},qi.prototype.destroy=function(){},qi.prototype.setConstantPatternPositions=function(t,e){this.patternPositions.patternTo=t.tlbr,this.patternPositions.patternFrom=e.tlbr;},qi.prototype.setUniforms=function(t,e,r,n,i){var a=this.patternPositions;\"u_pattern_to\"===i&&a.patternTo&&e.set(a.patternTo),\"u_pattern_from\"===i&&a.patternFrom&&e.set(a.patternFrom);},qi.prototype.getBinding=function(t,e){return new Fi(t,e)};var Ri=function(t,e,r,n){this.expression=t,this.names=e,this.type=r,this.uniformNames=this.names.map(function(t){return \"a_\"+t}),this.maxValue=-1/0,this.paintVertexAttributes=e.map(function(t){return {name:\"a_\"+t,type:\"Float32\",components:\"color\"===r?2:1,offset:0}}),this.paintVertexArray=new n;};Ri.prototype.defines=function(){return []},Ri.prototype.setConstantPatternPositions=function(){},Ri.prototype.populatePaintArray=function(t,e){var r=this.paintVertexArray,n=r.length;r.reserve(t);var i=this.expression.evaluate(new Sn(0),e,{});if(\"color\"===this.type)for(var a=Ui(i),o=n;o$i.max||o.y<$i.min||o.y>$i.max)&&w(\"Geometry exceeds allowed extent, reduce your vector tile buffer size\");}return r}function Qi(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2);}var ta=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new Gn,this.indexArray=new si,this.segments=new zi,this.programConfigurations=new Xi(ki,t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter(function(t){return t.isStateDependent()}).map(function(t){return t.id});};function ea(t,e){for(var r=0;r1){if(aa(t,e))return !0;for(var n=0;n1?t.distSqr(r):t.distSqr(r.sub(e)._mult(i)._add(e))}function la(t,e){for(var r,n,i,a=!1,o=0;oe.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(a=!a);return a}function pa(t,e){for(var r=!1,n=0,i=t.length-1;ne.y!=o.y>e.y&&e.x<(o.x-a.x)*(e.y-a.y)/(o.y-a.y)+a.x&&(r=!r);}return r}function ca(t,e,r){var n=r[0],i=r[2];if(t.xi.x&&e.x>i.x||t.yi.y&&e.y>i.y)return !1;var a=A(t,e,r[0]);return a!==A(t,e,r[1])||a!==A(t,e,r[2])||a!==A(t,e,r[3])}function ha(t,e,r){var n=e.paint.get(t).value;return \"constant\"===n.kind?n.value:r.programConfigurations.get(e.id).binders[t].maxValue}function fa(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function ya(t,e,r,n,a){if(!e[0]&&!e[1])return t;var o=i.convert(e)._mult(a);\"viewport\"===r&&o._rotate(-n);for(var s=[],u=0;u=Yi||l<0||l>=Yi)){var p=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray),c=p.vertexLength;Qi(this.layoutVertexArray,u,l,-1,-1),Qi(this.layoutVertexArray,u,l,1,-1),Qi(this.layoutVertexArray,u,l,1,1),Qi(this.layoutVertexArray,u,l,-1,1),this.indexArray.emplaceBack(c,c+1,c+2),this.indexArray.emplaceBack(c,c+3,c+2),p.vertexLength+=4,p.primitiveLength+=2;}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{});},sn(\"CircleBucket\",ta,{omit:[\"layers\"]});var da={paint:new Dn({\"circle-radius\":new Tn(mt.paint_circle[\"circle-radius\"]),\"circle-color\":new Tn(mt.paint_circle[\"circle-color\"]),\"circle-blur\":new Tn(mt.paint_circle[\"circle-blur\"]),\"circle-opacity\":new Tn(mt.paint_circle[\"circle-opacity\"]),\"circle-translate\":new Mn(mt.paint_circle[\"circle-translate\"]),\"circle-translate-anchor\":new Mn(mt.paint_circle[\"circle-translate-anchor\"]),\"circle-pitch-scale\":new Mn(mt.paint_circle[\"circle-pitch-scale\"]),\"circle-pitch-alignment\":new Mn(mt.paint_circle[\"circle-pitch-alignment\"]),\"circle-stroke-width\":new Tn(mt.paint_circle[\"circle-stroke-width\"]),\"circle-stroke-color\":new Tn(mt.paint_circle[\"circle-stroke-color\"]),\"circle-stroke-opacity\":new Tn(mt.paint_circle[\"circle-stroke-opacity\"])})},ma=1e-6,va=\"undefined\"!=typeof Float32Array?Float32Array:Array;Math.PI;function ga(){var t=new va(9);return va!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function xa(){var t=new va(3);return va!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function ba(t,e,r){var n=new va(3);return n[0]=t,n[1]=e,n[2]=r,n}function _a(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],u=r[2];return t[0]=i*u-a*s,t[1]=a*o-n*u,t[2]=n*s-i*o,t}var wa,Aa=function(t){var e=t[0],r=t[1],n=t[2];return Math.sqrt(e*e+r*r+n*n)};wa=xa();function Sa(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}!function(){var t,e=(t=new va(4),va!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t);}();function ka(){var t=new va(4);return va!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function za(t,e,r,n){var i,a,o,s,u,l=e[0],p=e[1],c=e[2],h=e[3],f=r[0],y=r[1],d=r[2],m=r[3];return (a=l*f+p*y+c*d+h*m)<0&&(a=-a,f=-f,y=-y,d=-d,m=-m),1-a>ma?(i=Math.acos(a),o=Math.sin(i),s=Math.sin((1-n)*i)/o,u=Math.sin(n*i)/o):(s=1-n,u=n),t[0]=s*l+u*f,t[1]=s*p+u*y,t[2]=s*c+u*d,t[3]=s*h+u*m,t}var Ia,Ba,Ea,Pa,Va,Ca,Ma=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=r*r+n*n+i*i+a*a;return o>0&&(o=1/Math.sqrt(o)),t[0]=r*o,t[1]=n*o,t[2]=i*o,t[3]=a*o,t};Ia=xa(),Ba=ba(1,0,0),Ea=ba(0,1,0),Pa=ka(),Va=ka(),Ca=ga();!function(){var t,e=(t=new va(2),va!=Float32Array&&(t[0]=0,t[1]=0),t);}();var Ta=function(t){function e(e){t.call(this,e,da);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new ta(t)},e.prototype.queryRadius=function(t){var e=t;return ha(\"circle-radius\",this,e)+ha(\"circle-stroke-width\",this,e)+fa(this.paint.get(\"circle-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a,o,s){for(var u=ya(t,this.paint.get(\"circle-translate\"),this.paint.get(\"circle-translate-anchor\"),a.angle,o),l=this.paint.get(\"circle-radius\").evaluate(e,r)+this.paint.get(\"circle-stroke-width\").evaluate(e,r),p=\"map\"===this.paint.get(\"circle-pitch-alignment\"),c=p?u:function(t,e){return t.map(function(t){return Fa(t,e)})}(u,s),h=p?l*o:l,f=0,y=n;ft.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError(\"out of range source coordinates for image copy\");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError(\"out of range destination coordinates for image copy\");for(var o=t.data,s=e.data,u=0;u80*r){n=a=t[0],i=o=t[1];for(var y=r;ya&&(a=s),u>o&&(o=u);l=0!==(l=Math.max(a-n,o-i))?1/l:0;}return to(h,f,r,n,i,l),f}function Wa(t,e,r,n,i){var a,o;if(i===bo(t,e,r,n)>0)for(a=e;a=e;a-=n)o=vo(a,t[a],t[a+1],o);return o&&ho(o,o.next)&&(go(o),o=o.next),o}function Qa(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!ho(n,n.next)&&0!==co(n.prev,n,n.next))n=n.next;else{if(go(n),(n=e=n.prev)===n.next)break;r=!0;}}while(r||n!==e);return e}function to(t,e,r,n,i,a,o){if(t){!o&&a&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=so(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,u,l=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||u>0&&n;)0!==s&&(0===u||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,u--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n;}a.nextZ=null,l*=2;}while(o>1)}(i);}(t,n,i,a);for(var s,u,l=t;t.prev!==t.next;)if(s=t.prev,u=t.next,a?ro(t,n,i,a):eo(t))e.push(s.i/r),e.push(t.i/r),e.push(u.i/r),go(t),t=u.next,l=u.next;else if((t=u)===l){o?1===o?to(t=no(t,e,r),e,r,n,i,a,2):2===o&&io(t,e,r,n,i,a):to(Qa(t),e,r,n,i,a,1);break}}}function eo(t){var e=t.prev,r=t,n=t.next;if(co(e,r,n)>=0)return !1;for(var i=t.next.next;i!==t.prev;){if(lo(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&co(i.prev,i,i.next)>=0)return !1;i=i.next;}return !0}function ro(t,e,r,n){var i=t.prev,a=t,o=t.next;if(co(i,a,o)>=0)return !1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,p=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,c=so(s,u,e,r,n),h=so(l,p,e,r,n),f=t.prevZ,y=t.nextZ;f&&f.z>=c&&y&&y.z<=h;){if(f!==t.prev&&f!==t.next&&lo(i.x,i.y,a.x,a.y,o.x,o.y,f.x,f.y)&&co(f.prev,f,f.next)>=0)return !1;if(f=f.prevZ,y!==t.prev&&y!==t.next&&lo(i.x,i.y,a.x,a.y,o.x,o.y,y.x,y.y)&&co(y.prev,y,y.next)>=0)return !1;y=y.nextZ;}for(;f&&f.z>=c;){if(f!==t.prev&&f!==t.next&&lo(i.x,i.y,a.x,a.y,o.x,o.y,f.x,f.y)&&co(f.prev,f,f.next)>=0)return !1;f=f.prevZ;}for(;y&&y.z<=h;){if(y!==t.prev&&y!==t.next&&lo(i.x,i.y,a.x,a.y,o.x,o.y,y.x,y.y)&&co(y.prev,y,y.next)>=0)return !1;y=y.nextZ;}return !0}function no(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!ho(i,a)&&fo(i,n,n.next,a)&&yo(i,a)&&yo(a,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(a.i/r),go(n),go(n.next),n=t=a),n=n.next;}while(n!==t);return n}function io(t,e,r,n,i,a){var o=t;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&po(o,s)){var u=mo(o,s);return o=Qa(o,o.next),u=Qa(u,u.next),to(o,e,r,n,i,a),void to(u,e,r,n,i,a)}s=s.next;}o=o.next;}while(o!==t)}function ao(t,e){return t.x-e.x}function oo(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=p&&i!==n.x&&lo(ar.x)&&yo(n,t)&&(r=n,h=u),n=n.next;return r}(t,e)){var r=mo(e,t);Qa(r,r.next);}}function so(t,e,r,n,i){return (t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function uo(t){var e=t,r=t;do{(e.x=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function po(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&fo(r,r.next,t,e))return !0;r=r.next;}while(r!==t);return !1}(t,e)&&yo(t,e)&&yo(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;}while(r!==t);return n}(t,e)}function co(t,e,r){return (e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function ho(t,e){return t.x===e.x&&t.y===e.y}function fo(t,e,r,n){return !!(ho(t,e)&&ho(r,n)||ho(t,n)&&ho(r,e))||co(t,e,r)>0!=co(t,e,n)>0&&co(r,n,t)>0!=co(r,n,e)>0}function yo(t,e){return co(t.prev,t,t.next)<0?co(t,e,t.next)>=0&&co(t,t.prev,e)>=0:co(t,e,t.prev)<0||co(t,t.next,e)<0}function mo(t,e){var r=new xo(t.i,t.x,t.y),n=new xo(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function vo(t,e,r,n){var i=new xo(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function go(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 xo(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1;}function bo(t,e,r,n){for(var i=0,a=e,o=r-n;an;){if(i-n>600){var o=i-n+1,s=r-n+1,u=Math.log(o),l=.5*Math.exp(2*u/3),p=.5*Math.sqrt(u*l*(o-l)/o)*(s-o/2<0?-1:1),c=Math.max(n,Math.floor(r-s*l/o+p)),h=Math.min(i,Math.floor(r+(o-s)*l/o+p));t(e,r,c,h,a);}var f=e[r],y=n,d=i;for(wo(e,n,r),a(e[i],f)>0&&wo(e,n,i);y0;)d--;}0===a(e[n],f)?wo(e,n,d):wo(e,++d,i),d<=r&&(n=d+1),r<=d&&(i=d-1);}}(t,e,r||0,n||t.length-1,i||Ao);}function wo(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}function Ao(t,e){return te?1:0}function So(t,e){var r=t.length;if(r<=1)return [t];for(var n,i,a=[],o=0;o1)for(var u=0;u0&&(n+=t[i-1].length,r.holes.push(n));}return r},Ya.default=Ja;var Bo=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new Gn,this.indexArray=new si,this.indexArray2=new ui,this.programConfigurations=new Xi(Ha,t.layers,t.zoom),this.segments=new zi,this.segments2=new zi,this.stateDependentLayerIds=this.layers.filter(function(t){return t.isStateDependent()}).map(function(t){return t.id});};Bo.prototype.populate=function(t,e){this.features=[],this.hasPattern=zo(\"fill\",this.layers,e);for(var r=0,n=t;rYi)||t.y===e.y&&(t.y<0||t.y>Yi)}function Oo(t){return t.every(function(t){return t.x<0})||t.every(function(t){return t.x>Yi})||t.every(function(t){return t.y<0})||t.every(function(t){return t.y>Yi})}Fo.prototype.populate=function(t,e){this.features=[],this.hasPattern=zo(\"fill-extrusion\",this.layers,e);for(var r=0,n=t;r=1){var v=f[d-1];if(!Lo(m,v)){p.vertexLength+4>zi.MAX_VERTEX_ARRAY_LENGTH&&(p=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var g=m.sub(v)._perp()._unit(),x=v.dist(m);y+x>32768&&(y=0),To(this.layoutVertexArray,m.x,m.y,g.x,g.y,0,0,y),To(this.layoutVertexArray,m.x,m.y,g.x,g.y,0,1,y),y+=x,To(this.layoutVertexArray,v.x,v.y,g.x,g.y,0,0,y),To(this.layoutVertexArray,v.x,v.y,g.x,g.y,0,1,y);var b=p.vertexLength;this.indexArray.emplaceBack(b,b+2,b+1),this.indexArray.emplaceBack(b+1,b+2,b+3),p.vertexLength+=4,p.primitiveLength+=2;}}}}p.vertexLength+s>zi.MAX_VERTEX_ARRAY_LENGTH&&(p=this.segments.prepareSegment(s,this.layoutVertexArray,this.indexArray));for(var _=[],w=[],A=p.vertexLength,S=0,k=o;S>3;}if(a--,1===n||2===n)o+=t.readSVarint(),s+=t.readSVarint(),1===n&&(e&&u.push(e),e=[]),e.push(new i(o,s));else{if(7!==n)throw new Error(\"unknown command \"+n);e&&e.push(e[0].clone());}}return e&&u.push(e),u},Go.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,a=0,o=1/0,s=-1/0,u=1/0,l=-1/0;t.pos>3;}if(n--,1===r||2===r)(i+=t.readSVarint())s&&(s=i),(a+=t.readSVarint())l&&(l=a);else if(7!==r)throw new Error(\"unknown command \"+r)}return [o,u,s,l]},Go.prototype.toGeoJSON=function(t,e,r){var n,i,a=this.extent*Math.pow(2,r),o=this.extent*t,s=this.extent*e,u=this.loadGeometry(),l=Go.types[this.type];function p(t){for(var e=0;e>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null;}return e}(r));}function $o(t,e,r){if(3===t){var n=new Ho(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n);}}Yo.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error(\"feature index out of bounds\");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new Ko(this._pbf,e,this.extent,this._keys,this._values)};var Wo={VectorTile:function(t,e){this.layers=t.readFields($o,{},e);},VectorTileFeature:Ko,VectorTileLayer:Ho},Qo=Wo.VectorTileFeature.types,ts=63,es=Math.cos(Math.PI/180*37.5),rs=.5,ns=Math.pow(2,14)/rs;function is(t,e,r,n,i,a,o){t.emplaceBack(e.x,e.y,n?1:0,i?1:-1,Math.round(ts*r.x)+128,Math.round(ts*r.y)+128,1+(0===a?0:a<0?-1:1)|(o*rs&63)<<2,o*rs>>6);}var as=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(function(t){return t.id}),this.index=t.index,this.features=[],this.hasPattern=!1,this.layoutVertexArray=new Hn,this.indexArray=new si,this.programConfigurations=new Xi(No,t.layers,t.zoom),this.segments=new zi,this.stateDependentLayerIds=this.layers.filter(function(t){return t.isStateDependent()}).map(function(t){return t.id});};function os(t,e){return (t/e.tileTotal*(e.end-e.start)+e.start)*(ns-1)}as.prototype.populate=function(t,e){this.features=[],this.hasPattern=zo(\"line\",this.layers,e);for(var r=0,n=t;r=2&&t[p-1].equals(t[p-2]);)p--;for(var c=0;cc){var P=d.dist(_);if(P>2*h){var V=d.sub(d.sub(_)._mult(h/P)._round());this.distance+=V.dist(_),this.addCurrentVertex(V,this.distance,A.mult(1),0,0,!1,y,u),_=V;}}var C=_&&w,M=C?r:w?g:x;if(C&&\"round\"===M&&(Bi&&(M=\"bevel\"),\"bevel\"===M&&(B>2&&(M=\"flipbevel\"),B100)z=S.clone().mult(-1);else{var T=A.x*S.y-A.y*S.x>0?-1:1,F=B*A.add(S).mag()/A.sub(S).mag();z._perp()._mult(F*T);}this.addCurrentVertex(d,this.distance,z,0,0,!1,y,u),this.addCurrentVertex(d,this.distance,z.mult(-1),0,0,!1,y,u);}else if(\"bevel\"===M||\"fakeround\"===M){var L=A.x*S.y-A.y*S.x>0,O=-Math.sqrt(B*B-1);if(L?(v=0,m=O):(m=0,v=O),b||this.addCurrentVertex(d,this.distance,A,m,v,!1,y,u),\"fakeround\"===M){for(var D=Math.floor(8*(.5-(I-.5))),U=void 0,j=0;j=0;q--)U=A.mult((q+1)/(D+1))._add(S)._unit(),this.addPieSliceVertex(d,this.distance,U,L,y,u);}w&&this.addCurrentVertex(d,this.distance,S,-m,-v,!1,y,u);}else\"butt\"===M?(b||this.addCurrentVertex(d,this.distance,A,0,0,!1,y,u),w&&this.addCurrentVertex(d,this.distance,S,0,0,!1,y,u)):\"square\"===M?(b||(this.addCurrentVertex(d,this.distance,A,1,1,!1,y,u),this.e1=this.e2=-1),w&&this.addCurrentVertex(d,this.distance,S,-1,-1,!1,y,u)):\"round\"===M&&(b||(this.addCurrentVertex(d,this.distance,A,0,0,!1,y,u),this.addCurrentVertex(d,this.distance,A,1,1,!0,y,u),this.e1=this.e2=-1),w&&(this.addCurrentVertex(d,this.distance,S,-1,-1,!0,y,u),this.addCurrentVertex(d,this.distance,S,0,0,!1,y,u)));if(E&&k2*h){var N=d.add(w.sub(d)._mult(h/R)._round());this.distance+=N.dist(d),this.addCurrentVertex(N,this.distance,S.mult(1),0,0,!1,y,u),d=N;}}b=!1;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,o,s);}},as.prototype.addCurrentVertex=function(t,e,r,n,i,a,o,s){var u,l=this.layoutVertexArray,p=this.indexArray;s&&(e=os(e,s)),u=r.clone(),n&&u._sub(r.perp()._mult(n)),is(l,t,u,a,!1,n,e),this.e3=o.vertexLength++,this.e1>=0&&this.e2>=0&&(p.emplaceBack(this.e1,this.e2,this.e3),o.primitiveLength++),this.e1=this.e2,this.e2=this.e3,u=r.mult(-1),i&&u._sub(r.perp()._mult(i)),is(l,t,u,a,!0,-i,e),this.e3=o.vertexLength++,this.e1>=0&&this.e2>=0&&(p.emplaceBack(this.e1,this.e2,this.e3),o.primitiveLength++),this.e1=this.e2,this.e2=this.e3,e>ns/2&&!s&&(this.distance=0,this.addCurrentVertex(t,this.distance,r,n,i,a,o));},as.prototype.addPieSliceVertex=function(t,e,r,n,i,a){r=r.mult(n?-1:1);var o=this.layoutVertexArray,s=this.indexArray;a&&(e=os(e,a)),is(o,t,r,!1,n,0,e),this.e3=i.vertexLength++,this.e1>=0&&this.e2>=0&&(s.emplaceBack(this.e1,this.e2,this.e3),i.primitiveLength++),n?this.e2=this.e3:this.e1=this.e3;},sn(\"LineBucket\",as,{omit:[\"layers\",\"features\"]});var ss=new Dn({\"line-cap\":new Mn(mt.layout_line[\"line-cap\"]),\"line-join\":new Tn(mt.layout_line[\"line-join\"]),\"line-miter-limit\":new Mn(mt.layout_line[\"line-miter-limit\"]),\"line-round-limit\":new Mn(mt.layout_line[\"line-round-limit\"])}),us={paint:new Dn({\"line-opacity\":new Tn(mt.paint_line[\"line-opacity\"]),\"line-color\":new Tn(mt.paint_line[\"line-color\"]),\"line-translate\":new Mn(mt.paint_line[\"line-translate\"]),\"line-translate-anchor\":new Mn(mt.paint_line[\"line-translate-anchor\"]),\"line-width\":new Tn(mt.paint_line[\"line-width\"]),\"line-gap-width\":new Tn(mt.paint_line[\"line-gap-width\"]),\"line-offset\":new Tn(mt.paint_line[\"line-offset\"]),\"line-blur\":new Tn(mt.paint_line[\"line-blur\"]),\"line-dasharray\":new Ln(mt.paint_line[\"line-dasharray\"]),\"line-pattern\":new Fn(mt.paint_line[\"line-pattern\"]),\"line-gradient\":new On(mt.paint_line[\"line-gradient\"])}),layout:ss},ls=new(function(t){function e(){t.apply(this,arguments);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.possiblyEvaluate=function(e,r){return r=new Sn(Math.floor(r.zoom),{now:r.now,fadeDuration:r.fadeDuration,zoomHistory:r.zoomHistory,transition:r.transition}),t.prototype.possiblyEvaluate.call(this,e,r)},e.prototype.evaluate=function(e,r,n,i){return r=c({},r,{zoom:Math.floor(r.zoom)}),t.prototype.evaluate.call(this,e,r,n,i)},e}(Tn))(us.paint.properties[\"line-width\"].specification);ls.useIntegerZoom=!0;var ps=function(t){function e(e){t.call(this,e,us);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._handleSpecialPaintPropertyUpdate=function(t){\"line-gradient\"===t&&this._updateGradient();},e.prototype._updateGradient=function(){var t=this._transitionablePaint._values[\"line-gradient\"].value.expression;this.gradient=Na(t,\"lineProgress\"),this.gradientTexture=null;},e.prototype.recalculate=function(e){t.prototype.recalculate.call(this,e),this.paint._values[\"line-floorwidth\"]=ls.possiblyEvaluate(this._transitioningPaint._values[\"line-width\"].value,e);},e.prototype.createBucket=function(t){return new as(t)},e.prototype.queryRadius=function(t){var e=t,r=cs(ha(\"line-width\",this,e),ha(\"line-gap-width\",this,e)),n=ha(\"line-offset\",this,e);return r/2+Math.abs(n)+fa(this.paint.get(\"line-translate\"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,a,o,s){var u=ya(t,this.paint.get(\"line-translate\"),this.paint.get(\"line-translate-anchor\"),o.angle,s),l=s/2*cs(this.paint.get(\"line-width\").evaluate(e,r),this.paint.get(\"line-gap-width\").evaluate(e,r)),p=this.paint.get(\"line-offset\").evaluate(e,r);return p&&(n=function(t,e){for(var r=[],n=new i(0,0),a=0;a=3)for(var a=0;a0?e+2*t:t}var hs=Nn([{name:\"a_pos_offset\",components:4,type:\"Int16\"},{name:\"a_data\",components:4,type:\"Uint16\"}]),fs=Nn([{name:\"a_projected_pos\",components:3,type:\"Float32\"}],4),ys=(Nn([{name:\"a_fade_opacity\",components:1,type:\"Uint32\"}],4),Nn([{name:\"a_placed\",components:2,type:\"Uint8\"}],4)),ds=(Nn([{type:\"Int16\",name:\"anchorPointX\"},{type:\"Int16\",name:\"anchorPointY\"},{type:\"Int16\",name:\"x1\"},{type:\"Int16\",name:\"y1\"},{type:\"Int16\",name:\"x2\"},{type:\"Int16\",name:\"y2\"},{type:\"Uint32\",name:\"featureIndex\"},{type:\"Uint16\",name:\"sourceLayerIndex\"},{type:\"Uint16\",name:\"bucketIndex\"},{type:\"Int16\",name:\"radius\"},{type:\"Int16\",name:\"signedDistanceFromAnchor\"}]),Nn([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4)),ms=Nn([{name:\"a_pos\",components:2,type:\"Int16\"},{name:\"a_anchor_pos\",components:2,type:\"Int16\"},{name:\"a_extrude\",components:2,type:\"Int16\"}],4);Nn([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Uint16\",name:\"glyphStartIndex\"},{type:\"Uint16\",name:\"numGlyphs\"},{type:\"Uint32\",name:\"vertexStartIndex\"},{type:\"Uint32\",name:\"lineStartIndex\"},{type:\"Uint32\",name:\"lineLength\"},{type:\"Uint16\",name:\"segment\"},{type:\"Uint16\",name:\"lowerSize\"},{type:\"Uint16\",name:\"upperSize\"},{type:\"Float32\",name:\"lineOffsetX\"},{type:\"Float32\",name:\"lineOffsetY\"},{type:\"Uint8\",name:\"writingMode\"},{type:\"Uint8\",name:\"hidden\"}]),Nn([{type:\"Int16\",name:\"anchorX\"},{type:\"Int16\",name:\"anchorY\"},{type:\"Int16\",name:\"horizontalPlacedTextSymbolIndex\"},{type:\"Int16\",name:\"verticalPlacedTextSymbolIndex\"},{type:\"Uint16\",name:\"key\"},{type:\"Uint16\",name:\"textBoxStartIndex\"},{type:\"Uint16\",name:\"textBoxEndIndex\"},{type:\"Uint16\",name:\"iconBoxStartIndex\"},{type:\"Uint16\",name:\"iconBoxEndIndex\"},{type:\"Uint16\",name:\"featureIndex\"},{type:\"Uint16\",name:\"numGlyphVertices\"},{type:\"Uint16\",name:\"numVerticalGlyphVertices\"},{type:\"Uint16\",name:\"numIconVertices\"},{type:\"Uint32\",name:\"crossTileID\"}]),Nn([{type:\"Float32\",name:\"offsetX\"}]),Nn([{type:\"Int16\",name:\"x\"},{type:\"Int16\",name:\"y\"},{type:\"Int16\",name:\"tileUnitDistanceFromAnchor\"}]);function vs(t,e,r){return t.sections.forEach(function(t){t.text=function(t,e,r){var n=e.layout.get(\"text-transform\").evaluate(r,{});return \"uppercase\"===n?t=t.toLocaleUpperCase():\"lowercase\"===n&&(t=t.toLocaleLowerCase()),An.applyArabicShaping&&(t=An.applyArabicShaping(t)),t}(t.text,e,r);}),t}var gs={\"!\":\"︕\",\"#\":\"#\",$:\"$\",\"%\":\"%\",\"&\":\"&\",\"(\":\"︵\",\")\":\"︶\",\"*\":\"*\",\"+\":\"+\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\"/\":\"/\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\"=\":\"=\",\">\":\"﹀\",\"?\":\"︖\",\"@\":\"@\",\"[\":\"﹇\",\"\\\\\":\"\\",\"]\":\"﹈\",\"^\":\"^\",_:\"︳\",\"`\":\"`\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"~\":\"~\",\"¢\":\"¢\",\"£\":\"£\",\"¥\":\"¥\",\"¦\":\"¦\",\"¬\":\"¬\",\"¯\":\" ̄\",\"–\":\"︲\",\"—\":\"︱\",\"‘\":\"﹃\",\"’\":\"﹄\",\"“\":\"﹁\",\"”\":\"﹂\",\"…\":\"︙\",\"‧\":\"・\",\"₩\":\"₩\",\"、\":\"︑\",\"。\":\"︒\",\"〈\":\"︿\",\"〉\":\"﹀\",\"《\":\"︽\",\"》\":\"︾\",\"「\":\"﹁\",\"」\":\"﹂\",\"『\":\"﹃\",\"』\":\"﹄\",\"【\":\"︻\",\"】\":\"︼\",\"〔\":\"︹\",\"〕\":\"︺\",\"〖\":\"︗\",\"〗\":\"︘\",\"!\":\"︕\",\"(\":\"︵\",\")\":\"︶\",\",\":\"︐\",\"-\":\"︲\",\".\":\"・\",\":\":\"︓\",\";\":\"︔\",\"<\":\"︿\",\">\":\"﹀\",\"?\":\"︖\",\"[\":\"﹇\",\"]\":\"﹈\",\"_\":\"︳\",\"{\":\"︷\",\"|\":\"―\",\"}\":\"︸\",\"⦅\":\"︵\",\"⦆\":\"︶\",\"。\":\"︒\",\"「\":\"﹁\",\"」\":\"﹂\"};var xs=function(t){function e(e,r,n,i){t.call(this,e,r),this.angle=n,void 0!==i&&(this.segment=i);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.clone=function(){return new e(this.x,this.y,this.angle,this.segment)},e}(i);sn(\"Anchor\",xs);var bs=256;function _s(t,e){var r=e.expression;if(\"constant\"===r.kind)return {functionType:\"constant\",layoutSize:r.evaluate(new Sn(t+1))};if(\"source\"===r.kind)return {functionType:\"source\"};for(var n=r.zoomStops,i=0;i0)&&(\"constant\"!==i.value.kind||i.value.value.length>0),u=\"constant\"!==o.value.kind||o.value.value&&o.value.value.length>0,l=n.get(\"symbol-sort-key\");if(this.features=[],s||u){for(var p=e.iconDependencies,c=e.glyphDependencies,h=new Sn(this.zoom),f=0,y=t;f=0;s--)a[s]={x:e[s].x,y:e[s].y,tileUnitDistanceFromAnchor:i},s>0&&(i+=e[s-1].dist(e[s]));for(var u=0;u0;this.addCollisionDebugVertices(a,o,s,u,l?this.collisionCircle:this.collisionBox,i.anchorPoint,r,l);}},Bs.prototype.generateCollisionDebugBuffers=function(){for(var t=0;t0},Bs.prototype.hasIconData=function(){return this.icon.segments.get().length>0},Bs.prototype.hasCollisionBoxData=function(){return this.collisionBox.segments.get().length>0},Bs.prototype.hasCollisionCircleData=function(){return this.collisionCircle.segments.get().length>0},Bs.prototype.addIndicesForPlacedTextSymbol=function(t){for(var e=this.text.placedSymbolArray.get(t),r=e.vertexStartIndex+4*e.numGlyphs,n=e.vertexStartIndex;n1||this.icon.segments.get().length>1))){for(var e=[],r=0;r=0&&this.addIndicesForPlacedTextSymbol(h.horizontalPlacedTextSymbolIndex),h.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedTextSymbol(h.verticalPlacedTextSymbolIndex);var f=this.icon.placedSymbolArray.get(c);if(f.numGlyphs){var y=f.vertexStartIndex;this.icon.indexArray.emplaceBack(y,y+1,y+2),this.icon.indexArray.emplaceBack(y+1,y+2,y+3);}}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray);}},sn(\"SymbolBucket\",Bs,{omit:[\"layers\",\"collisionBoxArray\",\"features\",\"compareText\"]}),Bs.MAX_GLYPHS=65535,Bs.addDynamicAttributes=ks;var Es=new Dn({\"symbol-placement\":new Mn(mt.layout_symbol[\"symbol-placement\"]),\"symbol-spacing\":new Mn(mt.layout_symbol[\"symbol-spacing\"]),\"symbol-avoid-edges\":new Mn(mt.layout_symbol[\"symbol-avoid-edges\"]),\"symbol-sort-key\":new Tn(mt.layout_symbol[\"symbol-sort-key\"]),\"symbol-z-order\":new Mn(mt.layout_symbol[\"symbol-z-order\"]),\"icon-allow-overlap\":new Mn(mt.layout_symbol[\"icon-allow-overlap\"]),\"icon-ignore-placement\":new Mn(mt.layout_symbol[\"icon-ignore-placement\"]),\"icon-optional\":new Mn(mt.layout_symbol[\"icon-optional\"]),\"icon-rotation-alignment\":new Mn(mt.layout_symbol[\"icon-rotation-alignment\"]),\"icon-size\":new Tn(mt.layout_symbol[\"icon-size\"]),\"icon-text-fit\":new Mn(mt.layout_symbol[\"icon-text-fit\"]),\"icon-text-fit-padding\":new Mn(mt.layout_symbol[\"icon-text-fit-padding\"]),\"icon-image\":new Tn(mt.layout_symbol[\"icon-image\"]),\"icon-rotate\":new Tn(mt.layout_symbol[\"icon-rotate\"]),\"icon-padding\":new Mn(mt.layout_symbol[\"icon-padding\"]),\"icon-keep-upright\":new Mn(mt.layout_symbol[\"icon-keep-upright\"]),\"icon-offset\":new Tn(mt.layout_symbol[\"icon-offset\"]),\"icon-anchor\":new Tn(mt.layout_symbol[\"icon-anchor\"]),\"icon-pitch-alignment\":new Mn(mt.layout_symbol[\"icon-pitch-alignment\"]),\"text-pitch-alignment\":new Mn(mt.layout_symbol[\"text-pitch-alignment\"]),\"text-rotation-alignment\":new Mn(mt.layout_symbol[\"text-rotation-alignment\"]),\"text-field\":new Tn(mt.layout_symbol[\"text-field\"]),\"text-font\":new Tn(mt.layout_symbol[\"text-font\"]),\"text-size\":new Tn(mt.layout_symbol[\"text-size\"]),\"text-max-width\":new Tn(mt.layout_symbol[\"text-max-width\"]),\"text-line-height\":new Mn(mt.layout_symbol[\"text-line-height\"]),\"text-letter-spacing\":new Tn(mt.layout_symbol[\"text-letter-spacing\"]),\"text-justify\":new Tn(mt.layout_symbol[\"text-justify\"]),\"text-anchor\":new Tn(mt.layout_symbol[\"text-anchor\"]),\"text-max-angle\":new Mn(mt.layout_symbol[\"text-max-angle\"]),\"text-rotate\":new Tn(mt.layout_symbol[\"text-rotate\"]),\"text-padding\":new Mn(mt.layout_symbol[\"text-padding\"]),\"text-keep-upright\":new Mn(mt.layout_symbol[\"text-keep-upright\"]),\"text-transform\":new Tn(mt.layout_symbol[\"text-transform\"]),\"text-offset\":new Tn(mt.layout_symbol[\"text-offset\"]),\"text-allow-overlap\":new Mn(mt.layout_symbol[\"text-allow-overlap\"]),\"text-ignore-placement\":new Mn(mt.layout_symbol[\"text-ignore-placement\"]),\"text-optional\":new Mn(mt.layout_symbol[\"text-optional\"])}),Ps={paint:new Dn({\"icon-opacity\":new Tn(mt.paint_symbol[\"icon-opacity\"]),\"icon-color\":new Tn(mt.paint_symbol[\"icon-color\"]),\"icon-halo-color\":new Tn(mt.paint_symbol[\"icon-halo-color\"]),\"icon-halo-width\":new Tn(mt.paint_symbol[\"icon-halo-width\"]),\"icon-halo-blur\":new Tn(mt.paint_symbol[\"icon-halo-blur\"]),\"icon-translate\":new Mn(mt.paint_symbol[\"icon-translate\"]),\"icon-translate-anchor\":new Mn(mt.paint_symbol[\"icon-translate-anchor\"]),\"text-opacity\":new Tn(mt.paint_symbol[\"text-opacity\"]),\"text-color\":new Tn(mt.paint_symbol[\"text-color\"]),\"text-halo-color\":new Tn(mt.paint_symbol[\"text-halo-color\"]),\"text-halo-width\":new Tn(mt.paint_symbol[\"text-halo-width\"]),\"text-halo-blur\":new Tn(mt.paint_symbol[\"text-halo-blur\"]),\"text-translate\":new Mn(mt.paint_symbol[\"text-translate\"]),\"text-translate-anchor\":new Mn(mt.paint_symbol[\"text-translate-anchor\"])}),layout:Es},Vs=function(t){function e(e){t.call(this,e,Ps);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.recalculate=function(e){t.prototype.recalculate.call(this,e),\"auto\"===this.layout.get(\"icon-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"icon-rotation-alignment\"]=\"map\":this.layout._values[\"icon-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-rotation-alignment\")&&(\"point\"!==this.layout.get(\"symbol-placement\")?this.layout._values[\"text-rotation-alignment\"]=\"map\":this.layout._values[\"text-rotation-alignment\"]=\"viewport\"),\"auto\"===this.layout.get(\"text-pitch-alignment\")&&(this.layout._values[\"text-pitch-alignment\"]=this.layout.get(\"text-rotation-alignment\")),\"auto\"===this.layout.get(\"icon-pitch-alignment\")&&(this.layout._values[\"icon-pitch-alignment\"]=this.layout.get(\"icon-rotation-alignment\"));},e.prototype.getValueAndResolveTokens=function(t,e){var r,n=this.layout.get(t).evaluate(e,{}),i=this._unevaluatedLayout._values[t];return i.isDataDriven()||yr(i.value)?n:(r=e.properties,n.replace(/{([^{}]+)}/g,function(t,e){return e in r?String(r[e]):\"\"}))},e.prototype.createBucket=function(t){return new Bs(t)},e.prototype.queryRadius=function(){return 0},e.prototype.queryIntersectsFeature=function(){return !1},e}(Un),Cs={paint:new Dn({\"background-color\":new Mn(mt.paint_background[\"background-color\"]),\"background-pattern\":new Ln(mt.paint_background[\"background-pattern\"]),\"background-opacity\":new Mn(mt.paint_background[\"background-opacity\"])})},Ms=function(t){function e(e){t.call(this,e,Cs);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Un),Ts={paint:new Dn({\"raster-opacity\":new Mn(mt.paint_raster[\"raster-opacity\"]),\"raster-hue-rotate\":new Mn(mt.paint_raster[\"raster-hue-rotate\"]),\"raster-brightness-min\":new Mn(mt.paint_raster[\"raster-brightness-min\"]),\"raster-brightness-max\":new Mn(mt.paint_raster[\"raster-brightness-max\"]),\"raster-saturation\":new Mn(mt.paint_raster[\"raster-saturation\"]),\"raster-contrast\":new Mn(mt.paint_raster[\"raster-contrast\"]),\"raster-resampling\":new Mn(mt.paint_raster[\"raster-resampling\"]),\"raster-fade-duration\":new Mn(mt.paint_raster[\"raster-fade-duration\"])})},Fs=function(t){function e(e){t.call(this,e,Ts);}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Un);var Ls=function(t){function e(e){t.call(this,e,{}),this.implementation=e;}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.hasOffscreenPass=function(){return void 0!==this.implementation.prerender||\"3d\"===this.implementation.renderingMode},e.prototype.recalculate=function(){},e.prototype.updateTransitions=function(){},e.prototype.hasTransition=function(){},e.prototype.serialize=function(){},e.prototype.resize=function(){this.viewportFrame&&(this.viewportFrame.destroy(),this.viewportFrame=null);},e.prototype.onAdd=function(t){this.implementation.onAdd&&this.implementation.onAdd(t,t.painter.context.gl);},e.prototype.onRemove=function(t){this.implementation.onRemove&&this.implementation.onRemove(t);},e}(Un),Os={circle:Ta,heatmap:Ka,hillshade:Xa,fill:Po,\"fill-extrusion\":Uo,line:ps,symbol:Vs,background:Ms,raster:Fs};function Ds(t){for(var e=0,r=0,n=0,i=t;n=0;h--){var f=o[h];if(!(c.w>f.w||c.h>f.h)){if(c.x=f.x,c.y=f.y,u=Math.max(u,c.y+c.h),s=Math.max(s,c.x+c.w),c.w===f.w&&c.h===f.h){var y=o.pop();h>1,p=-7,c=r?i-1:0,h=r?-1:1,f=t[e+c];for(c+=h,a=f&(1<<-p)-1,f>>=-p,p+=s;p>0;a=256*a+t[e+c],c+=h,p-=8);for(o=a&(1<<-p)-1,a>>=-p,p+=n;p>0;o=256*o+t[e+c],c+=h,p-=8);if(0===a)a=1-l;else{if(a===u)return o?NaN:1/0*(f?-1:1);o+=Math.pow(2,n),a-=l;}return (f?-1:1)*o*Math.pow(2,a-n)},Hs=function(t,e,r,n,i,a){var o,s,u,l=8*a-i-1,p=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:a-1,y=n?1:-1,d=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=p):(o=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-o))<1&&(o--,u*=2),(e+=o+c>=1?h/u:h*Math.pow(2,1-c))*u>=2&&(o++,u/=2),o+c>=p?(s=0,o=p):o+c>=1?(s=(e*u-1)*Math.pow(2,i),o+=c):(s=e*Math.pow(2,c-1)*Math.pow(2,i),o=0));i>=8;t[r+f]=255&s,f+=y,s/=256,i-=8);for(o=o<0;t[r+f]=255&o,f+=y,o/=256,l-=8);t[r+f-y]|=128*d;},Ys=Js;function Js(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length;}Js.Varint=0,Js.Fixed64=1,Js.Bytes=2,Js.Fixed32=5;function $s(t){return t.type===Js.Bytes?t.readVarint()+t.pos:t.pos+1}function Ws(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function Qs(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.ceil(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i];}function tu(t,e){for(var r=0;r>>8,t[r+2]=e>>>16,t[r+3]=e>>>24;}function cu(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}Js.prototype={destroy:function(){this.buf=null;},readFields:function(t,e,r){for(r=r||this.length;this.pos>3,a=this.pos;this.type=7&n,t(i,e,this),this.pos===a&&this.skip(n);}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=lu(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=cu(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=lu(this.buf,this.pos)+4294967296*lu(this.buf,this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=lu(this.buf,this.pos)+4294967296*cu(this.buf,this.pos+4);return this.pos+=8,t},readFloat:function(){var t=Zs(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=Zs(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,a=r.buf;if(i=a[r.pos++],n=(112&i)>>4,i<128)return Ws(t,n,e);if(i=a[r.pos++],n|=(127&i)<<3,i<128)return Ws(t,n,e);if(i=a[r.pos++],n|=(127&i)<<10,i<128)return Ws(t,n,e);if(i=a[r.pos++],n|=(127&i)<<17,i<128)return Ws(t,n,e);if(i=a[r.pos++],n|=(127&i)<<24,i<128)return Ws(t,n,e);if(i=a[r.pos++],n|=(1&i)<<31,i<128)return Ws(t,n,e);throw new Error(\"Expected varint not more than 10 bytes\")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=function(t,e,r){var n=\"\",i=e;for(;i239?4:u>223?3:u>191?2:1;if(i+p>r)break;1===p?u<128&&(l=u):2===p?128==(192&(a=t[i+1]))&&(l=(31&u)<<6|63&a)<=127&&(l=null):3===p?(a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&((l=(15&u)<<12|(63&a)<<6|63&o)<=2047||l>=55296&&l<=57343)&&(l=null)):4===p&&(a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&((l=(15&u)<<18|(63&a)<<12|(63&o)<<6|63&s)<=65535||l>=1114112)&&(l=null)),null===l?(l=65533,p=1):l>65535&&(l-=65536,n+=String.fromCharCode(l>>>10&1023|55296),l=56320|1023&l),n+=String.fromCharCode(l),i+=p;}return n}(this.buf,this.pos,t);return this.pos=t,e},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){var r=$s(this);for(t=t||[];this.pos127;);else if(e===Js.Bytes)this.pos=this.readVarint()+this.pos;else if(e===Js.Fixed32)this.pos+=4;else{if(e!==Js.Fixed64)throw new Error(\"Unimplemented type: \"+e);this.pos+=8;}},writeTag:function(t,e){this.writeVarint(t<<3|e);},realloc:function(t){for(var e=this.length||16;e268435455||t<0?function(t,e){var r,n;t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0));if(t>=0x10000000000000000||t<-0x10000000000000000)throw new Error(\"Given varint doesn't fit into 10 bytes\");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos]=127&t;}(r,0,e),function(t,e){var r=(7&t)<<4;if(e.buf[e.pos++]|=r|((t>>>=3)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;e.buf[e.pos++]=127&t;}(n,e);}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))));},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t);},writeBoolean:function(t){this.writeVarint(Boolean(t));},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,a=0;a55295&&n<57344){if(!i){n>56319||a+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null;}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128);}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&Qs(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r;},writeFloat:function(t){this.realloc(4),Hs(this.buf,t,this.pos,!0,23,4),this.pos+=4;},writeDouble:function(t){this.realloc(8),Hs(this.buf,t,this.pos,!0,52,8),this.pos+=8;},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&Qs(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n;},writeMessage:function(t,e,r){this.writeTag(t,Js.Bytes),this.writeRawMessage(e,r);},writePackedVarint:function(t,e){this.writeMessage(t,tu,e);},writePackedSVarint:function(t,e){this.writeMessage(t,eu,e);},writePackedBoolean:function(t,e){this.writeMessage(t,iu,e);},writePackedFloat:function(t,e){this.writeMessage(t,ru,e);},writePackedDouble:function(t,e){this.writeMessage(t,nu,e);},writePackedFixed32:function(t,e){this.writeMessage(t,au,e);},writePackedSFixed32:function(t,e){this.writeMessage(t,ou,e);},writePackedFixed64:function(t,e){this.writeMessage(t,su,e);},writePackedSFixed64:function(t,e){this.writeMessage(t,uu,e);},writeBytesField:function(t,e){this.writeTag(t,Js.Bytes),this.writeBytes(e);},writeFixed32Field:function(t,e){this.writeTag(t,Js.Fixed32),this.writeFixed32(e);},writeSFixed32Field:function(t,e){this.writeTag(t,Js.Fixed32),this.writeSFixed32(e);},writeFixed64Field:function(t,e){this.writeTag(t,Js.Fixed64),this.writeFixed64(e);},writeSFixed64Field:function(t,e){this.writeTag(t,Js.Fixed64),this.writeSFixed64(e);},writeVarintField:function(t,e){this.writeTag(t,Js.Varint),this.writeVarint(e);},writeSVarintField:function(t,e){this.writeTag(t,Js.Varint),this.writeSVarint(e);},writeStringField:function(t,e){this.writeTag(t,Js.Bytes),this.writeString(e);},writeFloatField:function(t,e){this.writeTag(t,Js.Fixed32),this.writeFloat(e);},writeDoubleField:function(t,e){this.writeTag(t,Js.Fixed64),this.writeDouble(e);},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e));}};var hu=3;function fu(t,e,r){1===t&&r.readMessage(yu,e);}function yu(t,e,r){if(3===t){var n=r.readMessage(du,{}),i=n.id,a=n.bitmap,o=n.width,s=n.height,u=n.left,l=n.top,p=n.advance;e.push({id:i,bitmap:new ja({width:o+2*hu,height:s+2*hu},a),metrics:{width:o,height:s,left:u,top:l,advance:p}});}}function du(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint());}var mu=hu,vu=function(t,e,r){this.target=t,this.parent=e,this.mapId=r,this.callbacks={},this.callbackID=0,m([\"receive\"],this),this.target.addEventListener(\"message\",this.receive,!1);};function gu(t,e,r){var n=2*Math.PI*6378137/256/Math.pow(2,r);return [t*n-2*Math.PI*6378137/2,e*n-2*Math.PI*6378137/2]}vu.prototype.send=function(t,e,r,n){var i=this,a=r?this.mapId+\":\"+this.callbackID++:null;r&&(this.callbacks[a]=r);var o=[];if(this.target.postMessage({targetMapId:n,sourceMapId:this.mapId,type:t,id:String(a),data:ln(e,o)},o),r)return {cancel:function(){return i.target.postMessage({targetMapId:n,sourceMapId:i.mapId,type:\"\",id:String(a)})}}},vu.prototype.receive=function(t){var e,r=this,n=t.data,i=n.id;if(!n.targetMapId||this.mapId===n.targetMapId){var a=function(t,e){delete r.callbacks[i];var n=[];r.target.postMessage({sourceMapId:r.mapId,type:\"\",id:String(i),error:t?ln(t):null,data:ln(e,n)},n);};if(\"\"===n.type||\"\"===n.type)e=this.callbacks[n.id],delete this.callbacks[n.id],e&&n.error?e(pn(n.error)):e&&e(null,pn(n.data));else if(void 0!==n.id&&this.parent[n.type]){this.callbacks[n.id]=null;var o=this.parent[n.type](n.sourceMapId,pn(n.data),a);o&&null===this.callbacks[n.id]&&(this.callbacks[n.id]=o);}else if(void 0!==n.id&&this.parent.getWorkerSource){var s=n.type.split(\".\"),u=pn(n.data);this.parent.getWorkerSource(n.sourceMapId,s[0],u.source)[s[1]](u,a);}else this.parent[n.type](pn(n.data));}},vu.prototype.remove=function(){this.target.removeEventListener(\"message\",this.receive,!1);};var xu=function(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]));};xu.prototype.setNorthEast=function(t){return this._ne=t instanceof bu?new bu(t.lng,t.lat):bu.convert(t),this},xu.prototype.setSouthWest=function(t){return this._sw=t instanceof bu?new bu(t.lng,t.lat):bu.convert(t),this},xu.prototype.extend=function(t){var e,r,n=this._sw,i=this._ne;if(t instanceof bu)e=t,r=t;else{if(!(t instanceof xu))return Array.isArray(t)?t.every(Array.isArray)?this.extend(xu.convert(t)):this.extend(bu.convert(t)):this;if(e=t._sw,r=t._ne,!e||!r)return this}return n||i?(n.lng=Math.min(e.lng,n.lng),n.lat=Math.min(e.lat,n.lat),i.lng=Math.max(r.lng,i.lng),i.lat=Math.max(r.lat,i.lat)):(this._sw=new bu(e.lng,e.lat),this._ne=new bu(r.lng,r.lat)),this},xu.prototype.getCenter=function(){return new bu((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},xu.prototype.getSouthWest=function(){return this._sw},xu.prototype.getNorthEast=function(){return this._ne},xu.prototype.getNorthWest=function(){return new bu(this.getWest(),this.getNorth())},xu.prototype.getSouthEast=function(){return new bu(this.getEast(),this.getSouth())},xu.prototype.getWest=function(){return this._sw.lng},xu.prototype.getSouth=function(){return this._sw.lat},xu.prototype.getEast=function(){return this._ne.lng},xu.prototype.getNorth=function(){return this._ne.lat},xu.prototype.toArray=function(){return [this._sw.toArray(),this._ne.toArray()]},xu.prototype.toString=function(){return \"LngLatBounds(\"+this._sw.toString()+\", \"+this._ne.toString()+\")\"},xu.prototype.isEmpty=function(){return !(this._sw&&this._ne)},xu.convert=function(t){return !t||t instanceof xu?t:new xu(t)};var bu=function(t,e){if(isNaN(t)||isNaN(e))throw new Error(\"Invalid LngLat object: (\"+t+\", \"+e+\")\");if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error(\"Invalid LngLat latitude value: must be between -90 and 90\")};function _u(t){return 2*Math.PI*6378137*Math.cos(t*Math.PI/180)}function wu(t){return (180+t)/360}function Au(t){return (180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Su(t,e){return t/_u(e)}function ku(t){var e=180-360*t;return 360/Math.PI*Math.atan(Math.exp(e*Math.PI/180))-90}bu.prototype.wrap=function(){return new bu(p(this.lng,-180,180),this.lat)},bu.prototype.toArray=function(){return [this.lng,this.lat]},bu.prototype.toString=function(){return \"LngLat(\"+this.lng+\", \"+this.lat+\")\"},bu.prototype.toBounds=function(t){void 0===t&&(t=0);var e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new xu(new bu(this.lng-r,this.lat-e),new bu(this.lng+r,this.lat+e))},bu.convert=function(t){if(t instanceof bu)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new bu(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&\"object\"==typeof t&&null!==t)return new bu(Number(\"lng\"in t?t.lng:t.lon),Number(t.lat));throw new Error(\"`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]\")};var zu=function(t,e,r){void 0===r&&(r=0),this.x=+t,this.y=+e,this.z=+r;};zu.fromLngLat=function(t,e){void 0===e&&(e=0);var r=bu.convert(t);return new zu(wu(r.lng),Au(r.lat),Su(e,r.lat))},zu.prototype.toLngLat=function(){return new bu(360*this.x-180,ku(this.y))},zu.prototype.toAltitude=function(){return t=this.z,e=this.y,t*_u(ku(e));var t,e;};var Iu=function(t,e,r){this.z=t,this.x=e,this.y=r,this.key=Pu(0,t,e,r);};Iu.prototype.equals=function(t){return this.z===t.z&&this.x===t.x&&this.y===t.y},Iu.prototype.url=function(t,e){var r,n,i,a,o,s=(r=this.x,n=this.y,i=this.z,a=gu(256*r,256*(n=Math.pow(2,i)-n-1),i),o=gu(256*(r+1),256*(n+1),i),a[0]+\",\"+a[1]+\",\"+o[0]+\",\"+o[1]),u=function(t,e,r){for(var n,i=\"\",a=t;a>0;a--)i+=(e&(n=1<this.canonical.z?new Eu(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Eu(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)},Eu.prototype.isChildOf=function(t){if(t.wrap!==this.wrap)return !1;var e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ>e&&t.canonical.y===this.canonical.y>>e},Eu.prototype.children=function(t){if(this.overscaledZ>=t)return [new Eu(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return [new Eu(e,this.wrap,e,r,n),new Eu(e,this.wrap,e,r+1,n),new Eu(e,this.wrap,e,r,n+1),new Eu(e,this.wrap,e,r+1,n+1)]},Eu.prototype.isLessThan=function(t){return this.wrapt.wrap)&&(this.overscaledZt.overscaledZ)&&(this.canonical.xt.canonical.x)&&this.canonical.y=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError(\"out of range source coordinates for DEM data\");return (e+1)*this.stride+(t+1)},Vu.prototype._unpackMapbox=function(t,e,r){return (256*t*256+256*e+r)/10-1e4},Vu.prototype._unpackTerrarium=function(t,e,r){return 256*t+e+r/256-32768},Vu.prototype.getPixels=function(){return new qa({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},Vu.prototype.backfillBorder=function(t,e,r){if(this.dim!==t.dim)throw new Error(\"dem dimension mismatch\");var n=e*this.dim,i=e*this.dim+this.dim,a=r*this.dim,o=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1;}switch(r){case-1:a=o-1;break;case 1:o=a+1;}for(var s=-e*this.dim,u=-r*this.dim,l=a;l=0&&p[3]>=0&&s.insert(o,p[0],p[1],p[2],p[3]);}},Ou.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new Wo.VectorTile(new Ys(this.rawTileData)).layers,this.sourceLayerCoder=new Mu(this.vtLayers?Object.keys(this.vtLayers).sort():[\"_geojsonTileLayer\"])),this.vtLayers},Ou.prototype.query=function(t,e,r){var n=this;this.loadVTLayers();for(var a=t.params||{},o=Yi/t.tileSize/t.scale,s=Er(a.filter),u=t.queryGeometry,l=t.queryPadding*o,p=Du(u),c=this.grid.query(p.minX-l,p.minY-l,p.maxX+l,p.maxY+l),h=Du(t.cameraQueryGeometry),f=this.grid3D.query(h.minX-l,h.minY-l,h.maxX+l,h.maxY+l,function(e,r,n,a){return function(t,e,r,n,a){for(var o=0,s=t;o=u.x&&a>=u.y)return !0}var l=[new i(e,r),new i(e,a),new i(n,a),new i(n,r)];if(t.length>2)for(var p=0,c=l;p=0)return !0;return !1}(a,u)){var l=this.sourceLayerCoder.decode(r),p=this.vtLayers[l].feature(n);if(i(new Sn(this.tileID.overscaledZ),p))for(var c=0;c>u.z,p=new i(u.x*l,u.y*l),c=new i(p.x+l,p.y+l),h=this.segments.prepareSegment(4,r,n);r.emplaceBack(p.x,p.y,p.x,p.y),r.emplaceBack(c.x,p.y,c.x,p.y),r.emplaceBack(p.x,c.y,p.x,c.y),r.emplaceBack(c.x,c.y,c.x,c.y);var f=h.vertexLength;n.emplaceBack(f,f+1,f+2),n.emplaceBack(f+1,f+2,f+3),h.vertexLength+=4,h.primitiveLength+=2;}this.maskedBoundsBuffer=e.createVertexBuffer(r,Cu.members),this.maskedIndexBuffer=e.createIndexBuffer(n);}},ju.prototype.hasData=function(){return \"loaded\"===this.state||\"reloading\"===this.state||\"expired\"===this.state},ju.prototype.patternsLoaded=function(){return this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length},ju.prototype.setExpiryData=function(t){var e=this.expirationTime;if(t.cacheControl){var r=function(t){var e={};if(t.replace(/(?:^|(?:\\s*\\,\\s*))([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)(?:\\=(?:([^\\x00-\\x20\\(\\)<>@\\,;\\:\\\\\"\\/\\[\\]\\?\\=\\{\\}\\x7F]+)|(?:\\\"((?:[^\"\\\\]|\\\\.)*)\\\")))?/g,function(t,r,n,i){var a=n||i;return e[r]=!a||a.toLowerCase(),\"\"}),e[\"max-age\"]){var r=parseInt(e[\"max-age\"],10);isNaN(r)?delete e[\"max-age\"]:e[\"max-age\"]=r;}return e}(t.cacheControl);r[\"max-age\"]&&(this.expirationTime=Date.now()+1e3*r[\"max-age\"]);}else t.expires&&(this.expirationTime=new Date(t.expires).getTime());if(this.expirationTime){var n=Date.now(),i=!1;if(this.expirationTime>n)i=!1;else if(e)if(this.expirationTime=0&&n>=t&&Nu[this.text.charCodeAt(n)];n--)r--;this.text=this.text.substring(t,r),this.sectionIndex=this.sectionIndex.slice(t,r);},Ru.prototype.substring=function(t,e){var r=new Ru;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r},Ru.prototype.toString=function(){return this.text},Ru.prototype.getMaxScale=function(){var t=this;return this.sectionIndex.reduce(function(e,r){return Math.max(e,t.sections[r].scale)},0)};var Nu={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},Ku={};function Gu(t,e,r,n){var i=Math.pow(t-e,2);return n?t=2||512===r?\"@2x\":\"\",a=M.supported?\".webp\":\"$1\";return n.path=n.path.replace(R,\"\"+i+a),n.path=\"/v4\"+n.path,D(n)},t.OverscaledTileID=Eu,t.EXTENT=Yi,t.MercatorCoordinate=zu,t.CanonicalTileID=Iu,t.StructArrayLayout4i8=Xn,t.rasterBoundsAttributes=Cu,t.SegmentVector=zi,t.getVideo=function(t,e){var r,n,i=self.document.createElement(\"video\");i.muted=!0,i.onloadstart=function(){e(null,i);};for(var a=0;a-r/2;){if(--a<0)return !1;s-=e[a].dist(i),i=e[a];}s+=e[a].dist(e[a+1]),a++;for(var l=[],u=0;sn;)u-=l.shift().angleDelta;if(u>o)return !1;a++,s+=c.dist(p);}return !0}function i(e){for(var t=0,r=0;rd){var x=(d-f)/y,w=e.number(m.x,v.x,x),M=e.number(m.y,v.y,x),S=new e.Anchor(w,M,v.angleTo(m),g);return S._round(),!c||o(t,S,p,c,r)?S:void 0}f+=y;}}function u(t,r,n,l,u,h,c,p,f){var d=a(l,h,c),g=s(l,u),m=g*c,v=0===t[0].x||t[0].x===f||0===t[0].y||t[0].y===f;return r-m=0&&P=0&&b=0&&m+f<=d){var T=new e.Anchor(P,b,S,y);T._round(),s&&!o(r,T,u,s,l)||v.push(T);}}g+=M;}c||v.length||h||(v=t(r,g/2,a,s,l,u,h,!0,p));return v}(t,v?r/2*p%r:(g/2+2*h)*c*p%r,r,d,n,m,v,!1,f)}n.prototype.replace=function(e){this._layerConfigs={},this._layers={},this.update(e,[]);},n.prototype.update=function(t,n){for(var o=this,i=0,a=t;i0&&(v=Math.max(10*l,v),this._addLineCollisionCircles(t,r,n,n.segment,y,v,o,i,a,c));}else{if(p){var x=new e.Point(g,f),w=new e.Point(m,f),M=new e.Point(g,d),S=new e.Point(m,d),_=p*Math.PI/180;x._rotate(_),w._rotate(_),M._rotate(_),S._rotate(_),g=Math.min(x.x,w.x,M.x,S.x),m=Math.max(x.x,w.x,M.x,S.x),f=Math.min(x.y,w.y,M.y,S.y),d=Math.max(x.y,w.y,M.y,S.y);}t.emplaceBack(n.x,n.y,g,f,m,d,o,i,a,0,0);}this.boxEndIndex=t.length;};h.prototype._addLineCollisionCircles=function(e,t,r,n,o,i,a,s,l,u){var h=i/2,c=Math.floor(o/h)||1,p=1+.4*Math.log(u)/Math.LN2,f=Math.floor(c*p/2),d=-i/2,g=r,m=n+1,v=d,y=-o/2,x=y-o/4;do{if(--m<0){if(v>y)return;m=0;break}v-=t[m].dist(g),g=t[m];}while(v>x);for(var w=t[m].dist(t[m+1]),M=-f;Mo&&(_+=S-o),!(_=t.length)return;w=t[m].dist(t[m+1]);}var P=_-v,b=t[m],T=t[m+1].sub(b)._unit()._mult(P)._add(b)._round(),I=Math.abs(_-d)0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r);};function p(e,t){return et?1:0}function f(t,r,n){void 0===r&&(r=1),void 0===n&&(n=!1);for(var o=1/0,i=1/0,a=-1/0,s=-1/0,l=t[0],u=0;ua)&&(a=h.x),(!u||h.y>s)&&(s=h.y);}var p=a-o,f=s-i,m=Math.min(p,f),v=m/2,y=new c([],d);if(0===m)return new e.Point(o,i);for(var x=o;xM.d||!M.d)&&(M=_,n&&console.log(\"found best %d after %d probes\",Math.round(1e4*_.d)/1e4,S)),_.max-M.d<=r||(v=_.h/2,y.push(new g(_.p.x-v,_.p.y-v,v,t)),y.push(new g(_.p.x+v,_.p.y-v,v,t)),y.push(new g(_.p.x-v,_.p.y+v,v,t)),y.push(new g(_.p.x+v,_.p.y+v,v,t)),S+=4);}return n&&(console.log(\"num probes: \"+S),console.log(\"best distance: \"+M.d)),M.p}function d(e,t){return t.max-e.max}function g(t,r,n,o){this.p=new e.Point(t,r),this.h=n,this.d=function(t,r){for(var n=!1,o=1/0,i=0;it.y!=c.y>t.y&&t.x<(c.x-h.x)*(t.y-h.y)/(c.y-h.y)+h.x&&(n=!n),o=Math.min(o,e.distToSegmentSquared(t,h,c));}return (n?1:-1)*Math.sqrt(o)}(this.p,o),this.max=this.d+this.h*Math.SQRT2;}c.prototype.push=function(e){this.data.push(e),this.length++,this._up(this.length-1);},c.prototype.pop=function(){if(0!==this.length){var e=this.data[0];return this.length--,this.length>0&&(this.data[0]=this.data[this.length],this._down(0)),this.data.pop(),e}},c.prototype.peek=function(){return this.data[0]},c.prototype._up=function(e){for(var t=this.data,r=this.compare,n=t[e];e>0;){var o=e-1>>1,i=t[o];if(r(n,i)>=0)break;t[e]=i,e=o;}t[e]=n;},c.prototype._down=function(e){for(var t=this.data,r=this.compare,n=this.length>>1,o=t[e];e=0)break;t[e]=a,e=i;}t[e]=o;};var m=e.createCommonjsModule(function(e){e.exports=function(e,t){var r,n,o,i,a,s,l,u;for(r=3&e.length,n=e.length-r,o=t,a=3432918353,s=461845907,u=0;u>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<13|o>>>19))+((5*(o>>>16)&65535)<<16)&4294967295))+((58964+(i>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&e.charCodeAt(u+2))<<16;case 2:l^=(255&e.charCodeAt(u+1))<<8;case 1:o^=l=(65535&(l=(l=(65535&(l^=255&e.charCodeAt(u)))*a+(((l>>>16)*a&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295;}return o^=e.length,o=2246822507*(65535&(o^=o>>>16))+((2246822507*(o>>>16)&65535)<<16)&4294967295,o=3266489909*(65535&(o^=o>>>13))+((3266489909*(o>>>16)&65535)<<16)&4294967295,(o^=o>>>16)>>>0};}),v=e.createCommonjsModule(function(e){e.exports=function(e,t){for(var r,n=e.length,o=t^n,i=0;n>=4;)r=1540483477*(65535&(r=255&e.charCodeAt(i)|(255&e.charCodeAt(++i))<<8|(255&e.charCodeAt(++i))<<16|(255&e.charCodeAt(++i))<<24))+((1540483477*(r>>>16)&65535)<<16),o=1540483477*(65535&o)+((1540483477*(o>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++i;switch(n){case 3:o^=(255&e.charCodeAt(i+2))<<16;case 2:o^=(255&e.charCodeAt(i+1))<<8;case 1:o=1540483477*(65535&(o^=255&e.charCodeAt(i)))+((1540483477*(o>>>16)&65535)<<16);}return o=1540483477*(65535&(o^=o>>>13))+((1540483477*(o>>>16)&65535)<<16),(o^=o>>>15)>>>0};}),y=m,x=m,w=v;function M(t,r,n,o,i,a){t.createArrays();var s=512*t.overscaling;t.tilePixelRatio=e.EXTENT/s,t.compareText={},t.iconsNeedLinear=!1;var l=t.layers[0].layout,u=t.layers[0]._unevaluatedLayout._values,h={};if(\"composite\"===t.textSizeData.functionType){var c=t.textSizeData.zoomRange,p=c.min,f=c.max;h.compositeTextSizes=[u[\"text-size\"].possiblyEvaluate(new e.EvaluationParameters(p)),u[\"text-size\"].possiblyEvaluate(new e.EvaluationParameters(f))];}if(\"composite\"===t.iconSizeData.functionType){var d=t.iconSizeData.zoomRange,g=d.min,m=d.max;h.compositeIconSizes=[u[\"icon-size\"].possiblyEvaluate(new e.EvaluationParameters(g)),u[\"icon-size\"].possiblyEvaluate(new e.EvaluationParameters(m))];}h.layoutTextSize=u[\"text-size\"].possiblyEvaluate(new e.EvaluationParameters(t.zoom+1)),h.layoutIconSize=u[\"icon-size\"].possiblyEvaluate(new e.EvaluationParameters(t.zoom+1)),h.textMaxSize=u[\"text-size\"].possiblyEvaluate(new e.EvaluationParameters(18));for(var v=24*l.get(\"text-line-height\"),y=\"map\"===l.get(\"text-rotation-alignment\")&&\"point\"!==l.get(\"symbol-placement\"),x=l.get(\"text-keep-upright\"),w=0,M=t.features;w=e.EXTENT||l.y<0||l.y>=e.EXTENT||function(t,r,n,o,i,a,s,l,u,c,p,f,d,g,m,v,x,w,M,S,b){var T,I,k=t.addToLineVertexArray(r,n),z=0,C=0,E=0,A=y(o.horizontal?o.horizontal.text:\"\"),L=[];if(o.horizontal){var D=a.layout.get(\"text-rotate\").evaluate(M,{});T=new h(s,n,r,l,u,c,o.horizontal,p,f,d,t.overscaling,D),C+=P(t,r,o.horizontal,a,d,M,g,k,o.vertical?e.WritingMode.horizontal:e.WritingMode.horizontalOnly,L,S,b),o.vertical&&(E+=P(t,r,o.vertical,a,d,M,g,k,e.WritingMode.vertical,L,S,b));}var O=T?T.boxStartIndex:t.collisionBoxArray.length,N=T?T.boxEndIndex:t.collisionBoxArray.length;if(i){var R=function(t,r,n,o,i,a){var s,l,u,h,c=r.image,p=n.layout,f=r.top-1/c.pixelRatio,d=r.left-1/c.pixelRatio,g=r.bottom+1/c.pixelRatio,m=r.right+1/c.pixelRatio;if(\"none\"!==p.get(\"icon-text-fit\")&&i){var v=m-d,y=g-f,x=p.get(\"text-size\").evaluate(a,{})/24,w=i.left*x,M=i.right*x,S=i.top*x,_=M-w,P=i.bottom*x-S,b=p.get(\"icon-text-fit-padding\")[0],T=p.get(\"icon-text-fit-padding\")[1],I=p.get(\"icon-text-fit-padding\")[2],k=p.get(\"icon-text-fit-padding\")[3],z=\"width\"===p.get(\"icon-text-fit\")?.5*(P-y):0,C=\"height\"===p.get(\"icon-text-fit\")?.5*(_-v):0,E=\"width\"===p.get(\"icon-text-fit\")||\"both\"===p.get(\"icon-text-fit\")?_:v,A=\"height\"===p.get(\"icon-text-fit\")||\"both\"===p.get(\"icon-text-fit\")?P:y;s=new e.Point(w+C-k,S+z-b),l=new e.Point(w+C+T+E,S+z-b),u=new e.Point(w+C+T+E,S+z+I+A),h=new e.Point(w+C-k,S+z+I+A);}else s=new e.Point(d,f),l=new e.Point(m,f),u=new e.Point(m,g),h=new e.Point(d,g);var L=n.layout.get(\"icon-rotate\").evaluate(a,{})*Math.PI/180;if(L){var D=Math.sin(L),O=Math.cos(L),N=[O,-D,D,O];s._matMult(N),l._matMult(N),h._matMult(N),u._matMult(N);}return [{tl:s,tr:l,bl:h,br:u,tex:c.paddedRect,writingMode:void 0,glyphOffset:[0,0]}]}(0,i,a,0,o.horizontal,M),F=a.layout.get(\"icon-rotate\").evaluate(M,{});I=new h(s,n,r,l,u,c,i,m,v,!1,t.overscaling,F),z=4*R.length;var B=t.iconSizeData,Z=null;\"source\"===B.functionType?(Z=[e.SIZE_PACK_FACTOR*a.layout.get(\"icon-size\").evaluate(M,{})])[0]>_&&e.warnOnce(t.layerIds[0]+': Value for \"icon-size\" is >= 256. Reduce your \"icon-size\".'):\"composite\"===B.functionType&&((Z=[e.SIZE_PACK_FACTOR*b.compositeIconSizes[0].evaluate(M,{}),e.SIZE_PACK_FACTOR*b.compositeIconSizes[1].evaluate(M,{})])[0]>_||Z[1]>_)&&e.warnOnce(t.layerIds[0]+': Value for \"icon-size\" is >= 256. Reduce your \"icon-size\".'),t.addSymbols(t.icon,R,Z,w,x,M,!1,r,k.lineStartIndex,k.lineLength);}var j=I?I.boxStartIndex:t.collisionBoxArray.length,G=I?I.boxEndIndex:t.collisionBoxArray.length;t.glyphOffsetArray.length>=e.SymbolBucket.MAX_GLYPHS&&e.warnOnce(\"Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907\");t.symbolInstances.emplaceBack(r.x,r.y,L.length>0?L[0]:-1,L.length>1?L[1]:-1,A,O,N,j,G,l,C,E,z,0);}(t,l,s,n,o,t.layers[0],t.collisionBoxArray,r.index,r.sourceLayerIndex,t.index,x,T,z,g,M,I,C,m,r,i,a);};if(\"line\"===E)for(var D=0,O=function(t,r,n,o,i){for(var a=[],s=0;s=o&&p.x>=o||(c.x>=o?c=new e.Point(o,c.y+(p.y-c.y)*((o-c.x)/(p.x-c.x)))._round():p.x>=o&&(p=new e.Point(o,c.y+(p.y-c.y)*((o-c.x)/(p.x-c.x)))._round()),c.y>=i&&p.y>=i||(c.y>=i?c=new e.Point(c.x+(p.x-c.x)*((i-c.y)/(p.y-c.y)),i)._round():p.y>=i&&(p=new e.Point(c.x+(p.x-c.x)*((i-c.y)/(p.y-c.y)),i)._round()),u&&c.equals(u[u.length-1])||(u=[c],a.push(u)),u.push(p)))));}return a}(r.geometry,0,0,e.EXTENT,e.EXTENT);D1){var X=l(J,k,n.vertical||n.horizontal,o,24,w);X&&L(J,X);}}else if(\"Polygon\"===r.type)for(var V=0,W=e.classifyRings(r.geometry,0);V_&&e.warnOnce(t.layerIds[0]+': Value for \"text-size\" is >= 256. Reduce your \"text-size\".'):\"composite\"===d.functionType&&((g=[e.SIZE_PACK_FACTOR*p.compositeTextSizes[0].evaluate(a,{}),e.SIZE_PACK_FACTOR*p.compositeTextSizes[1].evaluate(a,{})])[0]>_||g[1]>_)&&e.warnOnce(t.layerIds[0]+': Value for \"text-size\" is >= 256. Reduce your \"text-size\".'),t.addSymbols(t.text,f,g,s,i,a,u,r,l.lineStartIndex,l.lineLength),h.push(t.text.placedSymbolArray.length-1),4*f.length}function b(e,t,r,n){var o=e.compareText;if(t in o){for(var i=o[t],a=i.length-1;a>=0;a--)if(n.dist(i[a])=b.maxzoom))if(\"none\"!==b.visibility)k(P,this.zoom),(p[b.id]=b.createBucket({index:s.bucketLayerIDs.length,layers:P,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:v,sourceID:this.source})).populate(y,f),s.bucketLayerIDs.push(P.map(function(e){return e.id}));}}}var I=e.mapObject(f.glyphDependencies,function(e){return Object.keys(e).map(Number)});Object.keys(I).length?n.send(\"getGlyphs\",{uid:this.uid,stacks:I},function(e,t){l||(l=e,u=t,E.call(i));}):u={};var z=Object.keys(f.iconDependencies);z.length?n.send(\"getImages\",{icons:z},function(e,t){l||(l=e,h=t,E.call(i));}):h={};var C=Object.keys(f.patternDependencies);function E(){if(l)return o(l);if(u&&h&&c){var t=new T(u),r=new e.ImageAtlas(h,c);for(var n in p){var i=p[n];i instanceof e.SymbolBucket?(k(i.layers,this.zoom),M(i,u,t.positions,h,r.iconPositions,this.showCollisionBoxes)):i.hasPattern&&(i instanceof e.LineBucket||i instanceof e.FillBucket||i instanceof e.FillExtrusionBucket)&&(k(i.layers,this.zoom),i.addFeatures(f,r.patternPositions));}this.status=\"done\",o(null,{buckets:e.values(p).filter(function(e){return !e.isEmpty()}),featureIndex:s,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:t.image,imageAtlas:r,glyphMap:this.returnDependencies?u:null,iconMap:this.returnDependencies?h:null,glyphPositions:this.returnDependencies?t.positions:null});}}C.length?n.send(\"getImages\",{icons:C},function(e,t){l||(l=e,c=t,E.call(i));}):c={},E.call(this);};var z=\"undefined\"!=typeof performance,C={getEntriesByName:function(e){return !!(z&&performance&&performance.getEntriesByName)&&performance.getEntriesByName(e)},mark:function(e){return !!(z&&performance&&performance.mark)&&performance.mark(e)},measure:function(e,t,r){return !!(z&&performance&&performance.measure)&&performance.measure(e,t,r)},clearMarks:function(e){return !!(z&&performance&&performance.clearMarks)&&performance.clearMarks(e)},clearMeasures:function(e){return !!(z&&performance&&performance.clearMeasures)&&performance.clearMeasures(e)}},E=function(e){this._marks={start:[e.url,\"start\"].join(\"#\"),end:[e.url,\"end\"].join(\"#\"),measure:e.url.toString()},C.mark(this._marks.start);};function A(t,r){var n=e.getArrayBuffer(t.request,function(t,n,o,i){t?r(t):n&&r(null,{vectorTile:new e.mvt.VectorTile(new e.Protobuf(n)),rawData:n,cacheControl:o,expires:i});});return function(){n.cancel(),r();}}E.prototype.finish=function(){C.mark(this._marks.end);var e=C.getEntriesByName(this._marks.measure);return 0===e.length&&(C.measure(this._marks.measure,this._marks.start,this._marks.end),e=C.getEntriesByName(this._marks.measure),C.clearMarks(this._marks.start),C.clearMarks(this._marks.end),C.clearMeasures(this._marks.measure)),e},C.Performance=E;var L=function(e,t,r){this.actor=e,this.layerIndex=t,this.loadVectorData=r||A,this.loading={},this.loaded={};};L.prototype.loadTile=function(t,r){var n=this,o=t.uid;this.loading||(this.loading={});var i=!!(t&&t.request&&t.request.collectResourceTiming)&&new C.Performance(t.request),a=this.loading[o]=new I(t);a.abort=this.loadVectorData(t,function(t,s){if(delete n.loading[o],t||!s)return a.status=\"done\",n.loaded[o]=a,r(t);var l=s.rawData,u={};s.expires&&(u.expires=s.expires),s.cacheControl&&(u.cacheControl=s.cacheControl);var h={};if(i){var c=i.finish();c&&(h.resourceTiming=JSON.parse(JSON.stringify(c)));}a.vectorTile=s.vectorTile,a.parse(s.vectorTile,n.layerIndex,n.actor,function(t,n){if(t||!n)return r(t);r(null,e.extend({rawTileData:l.slice(0)},n,u,h));}),n.loaded=n.loaded||{},n.loaded[o]=a;});},L.prototype.reloadTile=function(e,t){var r=this.loaded,n=e.uid,o=this;if(r&&r[n]){var i=r[n];i.showCollisionBoxes=e.showCollisionBoxes;var a=function(e,r){var n=i.reloadCallback;n&&(delete i.reloadCallback,i.parse(i.vectorTile,o.layerIndex,o.actor,n)),t(e,r);};\"parsing\"===i.status?i.reloadCallback=a:\"done\"===i.status&&(i.vectorTile?i.parse(i.vectorTile,this.layerIndex,this.actor,a):a());}},L.prototype.abortTile=function(e,t){var r=this.loading,n=e.uid;r&&r[n]&&r[n].abort&&(r[n].abort(),delete r[n]),t();},L.prototype.removeTile=function(e,t){var r=this.loaded,n=e.uid;r&&r[n]&&delete r[n],t();};var D=function(){this.loaded={};};D.prototype.loadTile=function(t,r){var n=t.uid,o=t.encoding,i=t.rawImageData,a=new e.DEMData(n,i,o);this.loaded=this.loaded||{},this.loaded[n]=a,r(null,a);},D.prototype.removeTile=function(e){var t=this.loaded,r=e.uid;t&&t[r]&&delete t[r];};var O={RADIUS:6378137,FLATTENING:1/298.257223563,POLAR_RADIUS:6356752.3142};function N(e){var t=0;if(e&&e.length>0){t+=Math.abs(R(e[0]));for(var r=1;r2){for(a=0;a=0}(e)===t?e:e.reverse()}var X=e.mvt.VectorTileFeature.prototype.toGeoJSON,V=function(t){this._feature=t,this.extent=e.EXTENT,this.type=t.type,this.properties=t.tags,\"id\"in t&&!isNaN(t.id)&&(this.id=parseInt(t.id,10));};V.prototype.loadGeometry=function(){if(1===this._feature.type){for(var t=[],r=0,n=this._feature.geometry;r>31}function se(e,t){for(var r=e.loadGeometry(),n=e.type,o=0,i=0,a=r.length,s=0;s>1;!function e(t,r,n,o,i,a){for(;i>o;){if(i-o>600){var s=i-o+1,l=n-o+1,u=Math.log(s),h=.5*Math.exp(2*u/3),c=.5*Math.sqrt(u*h*(s-h)/s)*(l-s/2<0?-1:1),p=Math.max(o,Math.floor(n-l*h/s+c)),f=Math.min(i,Math.floor(n+(s-l)*h/s+c));e(t,r,n,p,f,a);}var d=r[2*n+a],g=o,m=i;for(he(t,r,o,n),r[2*i+a]>d&&he(t,r,o,i);gd;)m--;}r[2*o+a]===d?he(t,r,o,m):he(t,r,++m,i),m<=n&&(o=m+1),n<=m&&(i=m-1);}}(e,t,a,n,o,i%2),ue(e,t,r,n,a-1,i+1),ue(e,t,r,a+1,o,i+1);}}function he(e,t,r,n){ce(e,r,n),ce(t,2*r,2*n),ce(t,2*r+1,2*n+1);}function ce(e,t,r){var n=e[t];e[t]=e[r],e[r]=n;}function pe(e,t,r,n){var o=e-r,i=t-n;return o*o+i*i}H.fromVectorTileJs=Q,H.fromGeojsonVt=$,H.GeoJSONWrapper=ee;var fe=function(e){return e[0]},de=function(e){return e[1]},ge=function(e,t,r,n,o){void 0===t&&(t=fe),void 0===r&&(r=de),void 0===n&&(n=64),void 0===o&&(o=Float64Array),this.nodeSize=n,this.points=e;for(var i=e.length<65536?Uint16Array:Uint32Array,a=this.ids=new i(e.length),s=this.coords=new o(2*e.length),l=0;l=r&&s<=o&&l>=n&&l<=i&&h.push(e[d]);else{var g=Math.floor((f+p)/2);s=t[2*g],l=t[2*g+1],s>=r&&s<=o&&l>=n&&l<=i&&h.push(e[g]);var m=(c+1)%2;(0===c?r<=s:n<=l)&&(u.push(f),u.push(g-1),u.push(m)),(0===c?o>=s:i>=l)&&(u.push(g+1),u.push(p),u.push(m));}}return h}(this.ids,this.coords,e,t,r,n,this.nodeSize)},ge.prototype.within=function(e,t,r){return function(e,t,r,n,o,i){for(var a=[0,e.length-1,0],s=[],l=o*o;a.length;){var u=a.pop(),h=a.pop(),c=a.pop();if(h-c<=i)for(var p=c;p<=h;p++)pe(t[2*p],t[2*p+1],r,n)<=l&&s.push(e[p]);else{var f=Math.floor((c+h)/2),d=t[2*f],g=t[2*f+1];pe(d,g,r,n)<=l&&s.push(e[f]);var m=(u+1)%2;(0===u?r-o<=d:n-o<=g)&&(a.push(c),a.push(f-1),a.push(m)),(0===u?r+o>=d:n+o>=g)&&(a.push(f+1),a.push(h),a.push(m));}}return s}(this.ids,this.coords,e,t,r,this.nodeSize)};var me={minZoom:0,maxZoom:16,radius:40,extent:512,nodeSize:64,log:!1,reduce:null,map:function(e){return e}},ve=function(e){this.options=Pe(Object.create(me),e),this.trees=new Array(this.options.maxZoom+1);};function ye(e,t,r,n,o){return {x:e,y:t,zoom:1/0,id:r,parentId:-1,numPoints:n,properties:o}}function xe(e,t){var r=e.geometry.coordinates,n=r[0],o=r[1];return {x:Se(n),y:_e(o),zoom:1/0,index:t,parentId:-1}}function we(e){return {type:\"Feature\",id:e.id,properties:Me(e),geometry:{type:\"Point\",coordinates:[(n=e.x,360*(n-.5)),(t=e.y,r=(180-360*t)*Math.PI/180,360*Math.atan(Math.exp(r))/Math.PI-90)]}};var t,r,n;}function Me(e){var t=e.numPoints,r=t>=1e4?Math.round(t/1e3)+\"k\":t>=1e3?Math.round(t/100)/10+\"k\":t;return Pe(Pe({},e.properties),{cluster:!0,cluster_id:e.id,point_count:t,point_count_abbreviated:r})}function Se(e){return e/360+.5}function _e(e){var t=Math.sin(e*Math.PI/180),r=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return r<0?0:r>1?1:r}function Pe(e,t){for(var r in t)e[r]=t[r];return e}function be(e){return e.x}function Te(e){return e.y}function Ie(e,t,r,n,o,i){var a=o-r,s=i-n;if(0!==a||0!==s){var l=((e-r)*a+(t-n)*s)/(a*a+s*s);l>1?(r=o,n=i):l>0&&(r+=a*l,n+=s*l);}return (a=e-r)*a+(s=t-n)*s}function ke(e,t,r,n){var o={id:void 0===e?null:e,type:t,geometry:r,tags:n,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(e){var t=e.geometry,r=e.type;if(\"Point\"===r||\"MultiPoint\"===r||\"LineString\"===r)ze(e,t);else if(\"Polygon\"===r||\"MultiLineString\"===r)for(var n=0;n0&&(a+=n?(o*u-l*i)/2:Math.sqrt(Math.pow(l-o,2)+Math.pow(u-i,2))),o=l,i=u;}var h=t.length-3;t[2]=1,function e(t,r,n,o){for(var i,a=o,s=n-r>>1,l=n-r,u=t[r],h=t[r+1],c=t[n],p=t[n+1],f=r+3;fa)i=f,a=d;else if(d===a){var g=Math.abs(f-s);go&&(i-r>3&&e(t,r,i,o),t[i+2]=a,n-i>3&&e(t,i,n,o));}(t,0,h,r),t[h+2]=1,t.size=Math.abs(a),t.start=0,t.end=t.size;}function Le(e,t,r,n){for(var o=0;o1?1:r}function Ne(e,t,r,n,o,i,a,s){if(n/=t,i>=(r/=t)&&a=n)return null;for(var l=[],u=0;u=r&&d=n)){var g=[];if(\"Point\"===p||\"MultiPoint\"===p)Re(c,g,r,n,o);else if(\"LineString\"===p)Fe(c,g,r,n,o,!1,s.lineMetrics);else if(\"MultiLineString\"===p)Ze(c,g,r,n,o,!1);else if(\"Polygon\"===p)Ze(c,g,r,n,o,!0);else if(\"MultiPolygon\"===p)for(var m=0;m=r&&a<=n&&(t.push(e[i]),t.push(e[i+1]),t.push(e[i+2]));}}function Fe(e,t,r,n,o,i,a){for(var s,l,u=Be(e),h=0===o?Ge:Je,c=e.start,p=0;pr&&(l=h(u,f,d,m,v,r),a&&(u.start=c+s*l)):y>n?x=r&&(l=h(u,f,d,m,v,r),w=!0),x>n&&y<=n&&(l=h(u,f,d,m,v,n),w=!0),!i&&w&&(a&&(u.end=c+s*l),t.push(u),u=Be(e)),a&&(c+=s);}var M=e.length-3;f=e[M],d=e[M+1],g=e[M+2],(y=0===o?f:d)>=r&&y<=n&&je(u,f,d,g),M=u.length-3,i&&M>=3&&(u[M]!==u[0]||u[M+1]!==u[1])&&je(u,u[0],u[1],u[2]),u.length&&t.push(u);}function Be(e){var t=[];return t.size=e.size,t.start=e.start,t.end=e.end,t}function Ze(e,t,r,n,o,i){for(var a=0;aa.maxX&&(a.maxX=h),c>a.maxY&&(a.maxY=c);}return a}function Ue(e,t,r,n){var o=t.geometry,i=t.type,a=[];if(\"Point\"===i||\"MultiPoint\"===i)for(var s=0;s0&&t.size<(o?a:n))r.numPoints+=t.length/3;else{for(var s=[],l=0;la)&&(r.numSimplified++,s.push(t[l]),s.push(t[l+1])),r.numPoints++;o&&function(e,t){for(var r=0,n=0,o=e.length,i=o-2;n0===t)for(n=0,o=e.length;n24)throw new Error(\"maxZoom should be in the 0-24 range\");if(t.promoteId&&t.generateId)throw new Error(\"promoteId and generateId cannot be used together.\");var n=function(e,t){var r=[];if(\"FeatureCollection\"===e.type)for(var n=0;n=n;u--){var h=+Date.now();s=this._cluster(s,u),this.trees[u]=new ge(s,be,Te,i,Float32Array),r&&console.log(\"z%d: %d clusters in %dms\",u,s.length,+Date.now()-h);}return r&&console.timeEnd(\"total time\"),this},ve.prototype.getClusters=function(e,t){var r=((e[0]+180)%360+360)%360-180,n=Math.max(-90,Math.min(90,e[1])),o=180===e[2]?180:((e[2]+180)%360+360)%360-180,i=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)r=-180,o=180;else if(r>o){var a=this.getClusters([r,n,180,i],t),s=this.getClusters([-180,n,o,i],t);return a.concat(s)}for(var l=this.trees[this._limitZoom(t)],u=[],h=0,c=l.range(Se(r),_e(i),Se(o),_e(n));h>5,r=e%32,n=\"No cluster with the specified id.\",o=this.trees[r];if(!o)throw new Error(n);var i=o.points[t];if(!i)throw new Error(n);for(var a=this.options.radius/(this.options.extent*Math.pow(2,r-1)),s=[],l=0,u=o.within(i.x,i.y,a);l1&&console.time(\"creation\"),p=this.tiles[c]=qe(e,t,r,n,l),this.tileCoords.push({z:t,x:r,y:n}),u)){u>1&&(console.log(\"tile z%d-%d-%d (features: %d, points: %d, simplified: %d)\",t,r,n,p.numFeatures,p.numPoints,p.numSimplified),console.timeEnd(\"creation\"));var f=\"z\"+t;this.stats[f]=(this.stats[f]||0)+1,this.total++;}if(p.source=e,o){if(t===l.maxZoom||t===o)continue;var d=1<1&&console.time(\"clipping\");var g,m,v,y,x,w,M=.5*l.buffer/l.extent,S=.5-M,_=.5+M,P=1+M;g=m=v=y=null,x=Ne(e,h,r-M,r+_,0,p.minX,p.maxX,l),w=Ne(e,h,r+S,r+P,0,p.minX,p.maxX,l),e=null,x&&(g=Ne(x,h,n-M,n+_,1,p.minY,p.maxY,l),m=Ne(x,h,n+S,n+P,1,p.minY,p.maxY,l),x=null),w&&(v=Ne(w,h,n-M,n+_,1,p.minY,p.maxY,l),y=Ne(w,h,n+S,n+P,1,p.minY,p.maxY,l),w=null),u>1&&console.timeEnd(\"clipping\"),s.push(g||[],t+1,2*r,2*n),s.push(m||[],t+1,2*r,2*n+1),s.push(v||[],t+1,2*r+1,2*n),s.push(y||[],t+1,2*r+1,2*n+1);}}},He.prototype.getTile=function(e,t,r){var n=this.options,o=n.extent,i=n.debug;if(e<0||e>24)return null;var a=1<1&&console.log(\"drilling down to z%d-%d-%d\",e,t,r);for(var l,u=e,h=t,c=r;!l&&u>0;)u--,h=Math.floor(h/2),c=Math.floor(c/2),l=this.tiles[Qe(u,h,c)];return l&&l.source?(i>1&&console.log(\"found parent tile z%d-%d-%d\",u,h,c),i>1&&console.time(\"drilling down\"),this.splitTile(l.source,u,h,c,e,t,r),i>1&&console.timeEnd(\"drilling down\"),this.tiles[s]?We(this.tiles[s],o):null):null};var et=function(t){function r(e,r,n){t.call(this,e,r,$e),n&&(this.loadGeoJSON=n);}return t&&(r.__proto__=t),r.prototype=Object.create(t&&t.prototype),r.prototype.constructor=r,r.prototype.loadData=function(e,t){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),this._pendingCallback=t,this._pendingLoadDataParams=e,this._state&&\"Idle\"!==this._state?this._state=\"NeedsLoadData\":(this._state=\"Coalescing\",this._loadData());},r.prototype._loadData=function(){var t=this;if(this._pendingCallback&&this._pendingLoadDataParams){var r=this._pendingCallback,n=this._pendingLoadDataParams;delete this._pendingCallback,delete this._pendingLoadDataParams;var o=!!(n&&n.request&&n.request.collectResourceTiming)&&new C.Performance(n.request);this.loadGeoJSON(n,function(i,a){if(i||!a)return r(i);if(\"object\"!=typeof a)return r(new Error(\"Input data is not a valid GeoJSON object.\"));Z(a,!0);try{t._geoJSONIndex=n.cluster?new ve(function(t){var r=t.superclusterOptions,n=t.clusterProperties;if(!n||!r)return r;for(var o={},i={},a={accumulated:null,zoom:0},s={properties:null},l=Object.keys(n),u=0,h=l;u=0?0:e.button},i.remove=function(t){t.parentNode&&t.parentNode.removeChild(t);};var h=function(){this.images={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.RGBAImage({width:1,height:1}),this.dirty=!0;};h.prototype.isLoaded=function(){return this.loaded},h.prototype.setLoaded=function(t){if(this.loaded!==t&&(this.loaded=t,t)){for(var e=0,i=this.requestors;e=0?1.2:1));}function f(t,e,i,o,r,a,n){for(var s=0;s65535)e(new Error(\"glyphs > 65535 not supported\"));else{var l=a.requests[s];l||(l=a.requests[s]=[],g.loadGlyphRange(i,s,o.url,o.requestTransform,function(t,e){if(e)for(var i in e)a.glyphs[+i]=e[+i];for(var o=0,r=l;othis.height)return t.warnOnce(\"LineAtlas out of space\"),null;for(var a=0,n=0;n=o&&e.x=r&&e.y0&&(l[new t.OverscaledTileID(e.overscaledZ,a,i.z,r,i.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,i.z,n,i.y-1).key]={backfilled:!1}),i.y+10&&(o.resourceTiming=e._resourceTiming,e._resourceTiming=[]),e.fire(new t.Event(\"data\",o));}});},i.prototype.onAdd=function(t){this.map=t,this.load();},i.prototype.setData=function(e){var i=this;return this._data=e,this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this._updateWorkerData(function(e){if(e)i.fire(new t.ErrorEvent(e));else{var o={dataType:\"source\",sourceDataType:\"content\"};i._collectResourceTiming&&i._resourceTiming&&i._resourceTiming.length>0&&(o.resourceTiming=i._resourceTiming,i._resourceTiming=[]),i.fire(new t.Event(\"data\",o));}}),this},i.prototype.getClusterExpansionZoom=function(t,e){return this.dispatcher.send(\"geojson.getClusterExpansionZoom\",{clusterId:t,source:this.id},e,this.workerID),this},i.prototype.getClusterChildren=function(t,e){return this.dispatcher.send(\"geojson.getClusterChildren\",{clusterId:t,source:this.id},e,this.workerID),this},i.prototype.getClusterLeaves=function(t,e,i,o){return this.dispatcher.send(\"geojson.getClusterLeaves\",{source:this.id,clusterId:t,limit:e,offset:i},o,this.workerID),this},i.prototype._updateWorkerData=function(e){var i=this,o=t.extend({},this.workerOptions),r=this._data;\"string\"==typeof r?(o.request=this.map._transformRequest(t.browser.resolveURL(r),t.ResourceType.Source),o.request.collectResourceTiming=this._collectResourceTiming):o.data=JSON.stringify(r),this.workerID=this.dispatcher.send(this.type+\".loadData\",o,function(t,r){i._removed||r&&r.abandoned||(i._loaded=!0,r&&r.resourceTiming&&r.resourceTiming[i.id]&&(i._resourceTiming=r.resourceTiming[i.id].slice(0)),i.dispatcher.send(i.type+\".coalesce\",{source:o.source},null,i.workerID),e(t));},this.workerID);},i.prototype.loadTile=function(e,i){var o=this,r=void 0===e.workerID?\"loadTile\":\"reloadTile\",a={type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:t.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes};e.workerID=this.dispatcher.send(r,a,function(t,a){return e.unloadVectorData(),e.aborted?i(null):t?i(t):(e.loadVectorData(a,o.map.painter,\"reloadTile\"===r),i(null))},this.workerID);},i.prototype.abortTile=function(t){t.aborted=!0;},i.prototype.unloadTile=function(t){t.unloadVectorData(),this.dispatcher.send(\"removeTile\",{uid:t.uid,type:this.type,source:this.id},null,t.workerID);},i.prototype.onRemove=function(){this._removed=!0,this.dispatcher.send(\"removeSource\",{type:this.type,source:this.id},null,this.workerID);},i.prototype.serialize=function(){return t.extend({},this._options,{type:this.type,data:this._data})},i.prototype.hasTransition=function(){return !1},i}(t.Evented),L=function(e){function i(t,i,o,r){e.call(this),this.id=t,this.dispatcher=o,this.coordinates=i.coordinates,this.type=\"image\",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this.setEventedParent(r),this.options=i;}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.load=function(e,i){var o=this;this.fire(new t.Event(\"dataloading\",{dataType:\"source\"})),this.url=this.options.url,t.getImage(this.map._transformRequest(this.url,t.ResourceType.Image),function(r,a){r?o.fire(new t.ErrorEvent(r)):a&&(o.image=a,e&&(o.coordinates=e),i&&i(),o._finishLoading());});},i.prototype.updateImage=function(t){var e=this;return this.image&&t.url?(this.options.url=t.url,this.load(t.coordinates,function(){e.texture=null;}),this):this},i.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.Event(\"data\",{dataType:\"source\",sourceDataType:\"metadata\"})));},i.prototype.onAdd=function(t){this.map=t,this.load();},i.prototype.setCoordinates=function(e){var i=this;this.coordinates=e;var o=e.map(t.MercatorCoordinate.fromLngLat);this.tileID=function(e){for(var i=1/0,o=1/0,r=-1/0,a=-1/0,n=0,s=e;nthis.max){var n=this._getAndRemoveByKey(this.order[0]);n&&this.onRemove(n);}return this},k.prototype.has=function(t){return t.wrapped().key in this.data},k.prototype.getAndRemove=function(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null},k.prototype._getAndRemoveByKey=function(t){var e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value},k.prototype.get=function(t){return this.has(t)?this.data[t.wrapped().key][0].value:null},k.prototype.remove=function(t,e){if(!this.has(t))return this;var i=t.wrapped().key,o=void 0===e?0:this.data[i].indexOf(e),r=this.data[i][o];return this.data[i].splice(o,1),r.timeout&&clearTimeout(r.timeout),0===this.data[i].length&&delete this.data[i],this.onRemove(r.value),this.order.splice(this.order.indexOf(i),1),this},k.prototype.setMaxSize=function(t){for(this.max=t;this.order.length>this.max;){var e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e);}return this};var B=function(t,e,i){this.context=t;var o=t.gl;this.buffer=o.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),t.bindElementBuffer.set(this.buffer),o.bufferData(o.ELEMENT_ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?o.DYNAMIC_DRAW:o.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer;};B.prototype.bind=function(){this.context.bindElementBuffer.set(this.buffer);},B.prototype.updateData=function(t){var e=this.context.gl;this.context.unbindVAO(),this.bind(),e.bufferSubData(e.ELEMENT_ARRAY_BUFFER,0,t.arrayBuffer);},B.prototype.destroy=function(){var t=this.context.gl;this.buffer&&(t.deleteBuffer(this.buffer),delete this.buffer);};var O={Int8:\"BYTE\",Uint8:\"UNSIGNED_BYTE\",Int16:\"SHORT\",Uint16:\"UNSIGNED_SHORT\",Int32:\"INT\",Uint32:\"UNSIGNED_INT\",Float32:\"FLOAT\"},F=function(t,e,i,o){this.length=e.length,this.attributes=i,this.itemSize=e.bytesPerElement,this.dynamicDraw=o,this.context=t;var r=t.gl;this.buffer=r.createBuffer(),t.bindVertexBuffer.set(this.buffer),r.bufferData(r.ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?r.DYNAMIC_DRAW:r.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer;};F.prototype.bind=function(){this.context.bindVertexBuffer.set(this.buffer);},F.prototype.updateData=function(t){var e=this.context.gl;this.bind(),e.bufferSubData(e.ARRAY_BUFFER,0,t.arrayBuffer);},F.prototype.enableAttributes=function(t,e){for(var i=0;i1||(Math.abs(i)>1&&(1===Math.abs(i+r)?i+=r:1===Math.abs(i-r)&&(i-=r)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,i,o),t.neighboringTiles&&t.neighboringTiles[a]&&(t.neighboringTiles[a].backfilled=!0)));}},i.prototype.getTile=function(t){return this.getTileByID(t.key)},i.prototype.getTileByID=function(t){return this._tiles[t]},i.prototype.getZoom=function(t){return t.zoom+t.scaleZoom(t.tileSize/this._source.tileSize)},i.prototype._retainLoadedChildren=function(t,e,i,o){for(var r in this._tiles){var a=this._tiles[r];if(!(o[r]||!a.hasData()||a.tileID.overscaledZ<=e||a.tileID.overscaledZ>i)){for(var n=a.tileID;a&&a.tileID.overscaledZ>e+1;){var s=a.tileID.scaledTo(a.tileID.overscaledZ-1);(a=this._tiles[s.key])&&a.hasData()&&(n=s);}for(var l=n;l.overscaledZ>e;)if(t[(l=l.scaledTo(l.overscaledZ-1)).key]){o[n.key]=n;break}}}},i.prototype.findLoadedParent=function(t,e){for(var i=t.overscaledZ-1;i>=e;i--){var o=t.scaledTo(i);if(!o)return;var r=String(o.key),a=this._tiles[r];if(a&&a.hasData())return a;if(this._cache.has(o))return this._cache.get(o)}},i.prototype.updateCacheSize=function(t){var e=(Math.ceil(t.width/this._source.tileSize)+1)*(Math.ceil(t.height/this._source.tileSize)+1),i=Math.floor(5*e),o=\"number\"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,i):i;this._cache.setMaxSize(o);},i.prototype.handleWrapJump=function(t){var e=(t-(void 0===this._prevLng?t:this._prevLng))/360,i=Math.round(e);if(this._prevLng=t,i){var o={};for(var r in this._tiles){var a=this._tiles[r];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+i),o[a.tileID.key]=a;}for(var n in this._tiles=o,this._timers)clearTimeout(this._timers[n]),delete this._timers[n];for(var s in this._tiles){var l=this._tiles[s];this._setTileReloadTimer(s,l);}}},i.prototype.update=function(e){var o=this;if(this.transform=e,this._sourceLoaded&&!this._paused){var r;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used?this._source.tileID?r=e.getVisibleUnwrappedCoordinates(this._source.tileID).map(function(e){return new t.OverscaledTileID(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)}):(r=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(r=r.filter(function(t){return o._source.hasTile(t)}))):r=[];var a=(this._source.roundZoom?Math.round:Math.floor)(this.getZoom(e)),n=Math.max(a-i.maxOverzooming,this._source.minzoom),s=Math.max(a+i.maxUnderzooming,this._source.minzoom),l=this._updateRetainedTiles(r,a);if(zt(this._source.type)){for(var c={},u={},h=0,p=Object.keys(l);hthis._source.maxzoom){var m=_.children(this._source.maxzoom)[0],g=this.getTile(m);if(g&&g.hasData()){o[m.key]=m;continue}}else{var v=_.children(this._source.maxzoom);if(o[v[0].key]&&o[v[1].key]&&o[v[2].key]&&o[v[3].key])continue}for(var y=f.wasRequested(),x=_.overscaledZ-1;x>=a;--x){var b=_.scaledTo(x);if(r[b.key])break;if(r[b.key]=!0,!(f=this.getTile(b))&&y&&(f=this._addTile(b)),f&&(o[b.key]=b,y=f.wasRequested(),f.hasData()))break}}}return o},i.prototype._addTile=function(e){var i=this._tiles[e.key];if(i)return i;(i=this._cache.getAndRemove(e))&&(this._setTileReloadTimer(e.key,i),i.tileID=e,this._state.initializeTileState(i,this.map?this.map.painter:null),this._cacheTimers[e.key]&&(clearTimeout(this._cacheTimers[e.key]),delete this._cacheTimers[e.key],this._setTileReloadTimer(e.key,i)));var o=Boolean(i);return o||(i=new t.Tile(e,this._source.tileSize*e.overscaleFactor()),this._loadTile(i,this._tileLoaded.bind(this,i,e.key,i.state))),i?(i.uses++,this._tiles[e.key]=i,o||this._source.fire(new t.Event(\"dataloading\",{tile:i,coord:i.tileID,dataType:\"source\"})),i):null},i.prototype._setTileReloadTimer=function(t,e){var i=this;t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);var o=e.getExpiryTimeout();o&&(this._timers[t]=setTimeout(function(){i._reloadTile(t,\"expired\"),delete i._timers[t];},o));},i.prototype._removeTile=function(t){var e=this._tiles[t];e&&(e.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),e.uses>0||(e.hasData()?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))));},i.prototype.clearTiles=function(){for(var t in this._shouldReloadOnResume=!1,this._paused=!1,this._tiles)this._removeTile(t);this._cache.reset();},i.prototype.tilesIn=function(e,i,o){var r=this,a=[],n=this.transform;if(!n)return a;for(var s=o?n.getCameraQueryGeometry(e):e,l=e.map(function(t){return n.pointCoordinate(t)}),c=s.map(function(t){return n.pointCoordinate(t)}),u=this.getIds(),h=1/0,p=1/0,d=-1/0,_=-1/0,f=0,m=c;f=0&&g[1].y+m>=0){var v=l.map(function(t){return s.getTilePoint(t)}),y=c.map(function(t){return s.getTilePoint(t)});a.push({tile:o,tileID:s,queryGeometry:v,cameraQueryGeometry:y,scale:f});}}},y=0;y=t.browser.now())return !0}return !1},i.prototype.setFeatureState=function(t,e,i){t=t||\"_geojsonTileLayer\",this._state.updateState(t,e,i);},i.prototype.removeFeatureState=function(t,e,i){t=t||\"_geojsonTileLayer\",this._state.removeFeatureState(t,e,i);},i.prototype.getFeatureState=function(t,e){return t=t||\"_geojsonTileLayer\",this._state.getState(t,e)},i}(t.Evented);function St(t,e){return t%32-e%32||e-t}function zt(t){return \"raster\"===t||\"image\"===t||\"video\"===t}function Lt(){return new t.window.Worker(Qo.workerUrl)}Ct.maxOverzooming=10,Ct.maxUnderzooming=3;var Pt=function(){this.active={};};Pt.prototype.acquire=function(t){if(!this.workers)for(this.workers=[];this.workers.lengththis.width||o<0||e>this.height)return !r&&[];var n=[];if(t<=0&&e<=0&&this.width<=i&&this.height<=o){if(r)return !0;for(var s=0;s0:n},qt.prototype._queryCircle=function(t,e,i,o,r){var a=t-i,n=t+i,s=e-i,l=e+i;if(n<0||a>this.width||l<0||s>this.height)return !o&&[];var c=[],u={hitTest:o,circle:{x:t,y:e,radius:i},seenUids:{box:{},circle:{}}};return this._forEachCell(a,s,n,l,this._queryCellCircle,c,u,r),o?c.length>0:c},qt.prototype.query=function(t,e,i,o,r){return this._query(t,e,i,o,!1,r)},qt.prototype.hitTest=function(t,e,i,o,r){return this._query(t,e,i,o,!0,r)},qt.prototype.hitTestCircle=function(t,e,i,o){return this._queryCircle(t,e,i,!0,o)},qt.prototype._queryCell=function(t,e,i,o,r,a,n,s){var l=n.seenUids,c=this.boxCells[r];if(null!==c)for(var u=this.bboxes,h=0,p=c;h=u[_+0]&&o>=u[_+1]&&(!s||s(this.boxKeys[d]))){if(n.hitTest)return a.push(!0),!0;a.push({key:this.boxKeys[d],x1:u[_],y1:u[_+1],x2:u[_+2],y2:u[_+3]});}}}var f=this.circleCells[r];if(null!==f)for(var m=this.circles,g=0,v=f;gn*n+s*s},qt.prototype._circleAndRectCollide=function(t,e,i,o,r,a,n){var s=(a-o)/2,l=Math.abs(t-(o+s));if(l>s+i)return !1;var c=(n-r)/2,u=Math.abs(e-(r+c));if(u>c+i)return !1;if(l<=s||u<=c)return !0;var h=l-s,p=u-c;return h*h+p*p<=i*i};var Gt=t.properties.layout;function Wt(e,i,o,r,a){var n=t.identity(new Float32Array(16));return i?(t.identity(n),t.scale(n,n,[1/a,1/a,1]),o||t.rotateZ(n,n,r.angle)):(t.scale(n,n,[r.width/2,-r.height/2,1]),t.translate(n,n,[1,-1,0]),t.multiply(n,n,e)),n}function Xt(e,i,o,r,a){var n=t.identity(new Float32Array(16));return i?(t.multiply(n,n,e),t.scale(n,n,[a,a,1]),o||t.rotateZ(n,n,-r.angle)):(t.scale(n,n,[1,-1,1]),t.translate(n,n,[-1,-1,0]),t.scale(n,n,[2/r.width,2/r.height,1])),n}function Ht(e,i){var o=[e.x,e.y,0,1];re(o,o,i);var r=o[3];return {point:new t.Point(o[0]/r,o[1]/r),signedDistanceFromCamera:r}}function Kt(t,e){var i=t[0]/t[3],o=t[1]/t[3];return i>=-e[0]&&i<=e[0]&&o>=-e[1]&&o<=e[1]}function Yt(e,i,o,r,a,n,s,l){var c=r?e.textSizeData:e.iconSizeData,u=t.evaluateSizeForZoom(c,o.transform.zoom,Gt.properties[r?\"text-size\":\"icon-size\"]),h=[256/o.width*2+1,256/o.height*2+1],p=r?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;p.clear();for(var d=e.lineVertexArray,_=r?e.text.placedSymbolArray:e.icon.placedSymbolArray,f=o.transform.width/o.transform.height,m=!1,g=0;g<_.length;g++){var v=_.get(g);if(v.hidden||v.writingMode===t.WritingMode.vertical&&!m)oe(v.numGlyphs,p);else{m=!1;var y=[v.anchorX,v.anchorY,0,1];if(t.transformMat4(y,y,i),Kt(y,h)){var x=.5+y[3]/o.transform.cameraToCenterDistance*.5,b=t.evaluateSizeForFeature(c,u,v),w=s?b*x:b/x,E=new t.Point(v.anchorX,v.anchorY),T=Ht(E,a).point,I={},C=$t(v,w,!1,l,i,a,n,e.glyphOffsetArray,d,p,T,E,I,f);m=C.useVertical,(C.notEnoughRoom||m||C.needsFlipping&&$t(v,w,!0,l,i,a,n,e.glyphOffsetArray,d,p,T,E,I,f).notEnoughRoom)&&oe(v.numGlyphs,p);}else oe(v.numGlyphs,p);}}r?e.text.dynamicLayoutVertexBuffer.updateData(p):e.icon.dynamicLayoutVertexBuffer.updateData(p);}function Jt(t,e,i,o,r,a,n,s,l,c,u,h){var p=s.glyphStartIndex+s.numGlyphs,d=s.lineStartIndex,_=s.lineStartIndex+s.lineLength,f=e.getoffsetX(s.glyphStartIndex),m=e.getoffsetX(p-1),g=ee(t*f,i,o,r,a,n,s.segment,d,_,l,c,u,h);if(!g)return null;var v=ee(t*m,i,o,r,a,n,s.segment,d,_,l,c,u,h);return v?{first:g,last:v}:null}function Qt(e,i,o,r){if(e===t.WritingMode.horizontal&&Math.abs(o.y-i.y)>Math.abs(o.x-i.x)*r)return {useVertical:!0};return (e===t.WritingMode.vertical?i.yo.x)?{needsFlipping:!0}:null}function $t(e,i,o,r,a,n,s,l,c,u,h,p,d,_){var f,m=i/24,g=e.lineOffsetX*i,v=e.lineOffsetY*i;if(e.numGlyphs>1){var y=e.glyphStartIndex+e.numGlyphs,x=e.lineStartIndex,b=e.lineStartIndex+e.lineLength,w=Jt(m,l,g,v,o,h,p,e,c,n,d,!1);if(!w)return {notEnoughRoom:!0};var E=Ht(w.first.point,s).point,T=Ht(w.last.point,s).point;if(r&&!o){var I=Qt(e.writingMode,E,T,_);if(I)return I}f=[w.first];for(var C=e.glyphStartIndex+1;C0?P.point:te(p,L,S,1,a),R=Qt(e.writingMode,S,D,_);if(R)return R}var M=ee(m*l.getoffsetX(e.glyphStartIndex),g,v,o,h,p,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,c,n,d,!1);if(!M)return {notEnoughRoom:!0};f=[M];}for(var A=0,k=f;A0?1:-1,m=0;r&&(f*=-1,m=Math.PI),f<0&&(m+=Math.PI);for(var g=f>0?l+s:l+s+1,v=g,y=a,x=a,b=0,w=0,E=Math.abs(_);b+w<=E;){if((g+=f)=c)return null;if(x=y,void 0===(y=p[g])){var T=new t.Point(u.getx(g),u.gety(g)),I=Ht(T,h);if(I.signedDistanceFromCamera>0)y=p[g]=I.point;else{var C=g-f;y=te(0===b?n:new t.Point(u.getx(C),u.gety(C)),T,x,E-b+1,h);}}b+=w,w=x.dist(y);}var S=(E-b)/w,z=y.sub(x),L=z.mult(S)._add(x);return L._add(z._unit()._perp()._mult(o*f)),{point:L,angle:m+Math.atan2(y.y-x.y,y.x-x.x),tileDistance:d?{prevTileDistance:g-f===v?0:u.gettileUnitDistanceFromAnchor(g-f),lastSegmentViewportDistance:E-b}:null}}var ie=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function oe(t,e){for(var i=0;iS)ne(e,z,!1);else{var M=this.projectPoint(c,L,P),A=D*T;if(_.length>0){var k=M.x-_[_.length-4],B=M.y-_[_.length-3];if(A*A*2>k*k+B*B)if(z+8-C&&O=this.screenRightBoundary||o<100||e>this.screenBottomBoundary},ae.prototype.isInsideGrid=function(t,e,i,o){return i>=0&&t=0&&e0,T=T&&I.offscreen);var D=P.textCircles;if(D){var R=e.text.placedSymbolArray.get(b.horizontalPlacedTextSymbolIndex),M=t.evaluateSizeForFeature(e.textSizeData,p,R);C=this.collisionIndex.placeCollisionCircles(D,h.get(\"text-allow-overlap\"),a,n,R,e.lineVertexArray,e.glyphOffsetArray,M,i,o,s,\"map\"===h.get(\"text-pitch-alignment\"),y.predicate),w=h.get(\"text-allow-overlap\")||C.circles.length>0,T=T&&C.offscreen;}P.iconFeatureIndex&&(L=P.iconFeatureIndex),P.iconBox&&(E=(S=this.collisionIndex.placeCollisionBox(P.iconBox,h.get(\"icon-allow-overlap\"),n,i,y.predicate)).box.length>0,T=T&&S.offscreen);var A=d||0===b.numGlyphVertices&&0===b.numVerticalGlyphVertices,k=_||0===b.numIconVertices;A||k?k?A||(E=E&&w):w=E&&w:E=w=E&&w,w&&I&&this.collisionIndex.insertCollisionBox(I.box,h.get(\"text-ignore-placement\"),e.bucketInstanceId,z,y.ID),E&&S&&this.collisionIndex.insertCollisionBox(S.box,h.get(\"icon-ignore-placement\"),e.bucketInstanceId,L,y.ID),w&&C&&this.collisionIndex.insertCollisionCircles(C.circles,h.get(\"text-ignore-placement\"),e.bucketInstanceId,z,y.ID),this.placements[b.crossTileID]=new ue(w||g,E||v,T||e.justReloaded),c[b.crossTileID]=!0;}}e.justReloaded=!1;},de.prototype.commit=function(t,e){this.commitTime=e;var i=!1,o=t&&0!==this.fadeDuration?(this.commitTime-t.commitTime)/this.fadeDuration:1,r=t?t.opacities:{};for(var a in this.placements){var n=this.placements[a],s=r[a];s?(this.opacities[a]=new ce(s,o,n.text,n.icon),i=i||n.text!==s.text.placed||n.icon!==s.icon.placed):(this.opacities[a]=new ce(null,o,n.text,n.icon,n.skipFade),i=i||n.text||n.icon);}for(var l in r){var c=r[l];if(!this.opacities[l]){var u=new ce(c,o,!1,!1);u.isHidden()||(this.opacities[l]=u,i=i||c.text.placed||c.icon.placed);}}i?this.lastPlacementChangeTime=e:\"number\"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=t?t.lastPlacementChangeTime:e);},de.prototype.updateLayerOpacities=function(t,e){for(var i={},o=0,r=e;o0||c.numVerticalGlyphVertices>0,d=c.numIconVertices>0;if(p){for(var _=we(h.text),f=(c.numGlyphVertices+c.numVerticalGlyphVertices)/4,m=0;m=0&&(t.text.placedSymbolArray.get(c.verticalPlacedTextSymbolIndex).hidden=h.text.isHidden());}if(d){for(var g=we(h.icon),v=0;vt},de.prototype.setStale=function(){this.stale=!0;};var fe=Math.pow(2,25),me=Math.pow(2,24),ge=Math.pow(2,17),ve=Math.pow(2,16),ye=Math.pow(2,9),xe=Math.pow(2,8),be=Math.pow(2,1);function we(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;var e=t.placed?1:0,i=Math.floor(127*t.opacity);return i*fe+e*me+i*ge+e*ve+i*ye+e*xe+i*be+e}var Ee=function(){this._currentTileIndex=0,this._seenCrossTileIDs={};};Ee.prototype.continuePlacement=function(t,e,i,o,r){for(;this._currentTileIndex2};this._currentPlacementIndex>=0;){var s=i[e[this._currentPlacementIndex]],l=this.placement.collisionIndex.transform.zoom;if(\"symbol\"===s.type&&(!s.minzoom||s.minzoom<=l)&&(!s.maxzoom||s.maxzoom>l)){if(this._inProgressLayer||(this._inProgressLayer=new Ee),this._inProgressLayer.continuePlacement(o[s.source],this.placement,this._showCollisionBoxes,s,n))return;delete this._inProgressLayer;}this._currentPlacementIndex--;}this._done=!0;},Te.prototype.commit=function(t,e){return this.placement.commit(t,e),this.placement};var Ie=512/t.EXTENT/2,Ce=function(t,e,i){this.tileID=t,this.indexedSymbolInstances={},this.bucketInstanceId=i;for(var o=0;ot.overscaledZ)for(var s in n){var l=n[s];l.tileID.isChildOf(t)&&l.findMatches(e.symbolInstances,t,r);}else{var c=n[t.scaledTo(Number(a)).key];c&&c.findMatches(e.symbolInstances,t,r);}}for(var u=0;u1?\"@2x\":\"\",l=t.getJSON(i(t.normalizeSpriteURL(e,s,\".json\"),t.ResourceType.SpriteJSON),function(t,e){l=null,n||(n=t,r=e,u());}),c=t.getImage(i(t.normalizeSpriteURL(e,s,\".png\"),t.ResourceType.SpriteImage),function(t,e){c=null,n||(n=t,a=e,u());});function u(){if(n)o(n);else if(r&&a){var e=t.browser.getImageData(a),i={};for(var s in r){var l=r[s],c=l.width,u=l.height,h=l.x,p=l.y,d=l.sdf,_=l.pixelRatio,f=new t.RGBAImage({width:c,height:u});t.RGBAImage.copy(e,f,{x:h,y:p},{x:0,y:0},{width:c,height:u}),i[s]={data:f,pixelRatio:_,sdf:d};}o(null,i);}}return {cancel:function(){l&&(l.cancel(),l=null),c&&(c.cancel(),c=null);}}}(e.sprite,this.map._transformRequest,function(e,i){if(o._spriteRequest=null,e)o.fire(new t.ErrorEvent(e));else if(i)for(var r in i)o.imageManager.addImage(r,i[r]);o.imageManager.setLoaded(!0),o.fire(new t.Event(\"data\",{dataType:\"style\"}));}):this.imageManager.setLoaded(!0),this.glyphManager.setURL(e.glyphs);var a=At(this.stylesheet.layers);this._order=a.map(function(t){return t.id}),this._layers={};for(var n=0,s=a;n0)throw new Error(\"Unimplemented: \"+r.map(function(t){return t.command}).join(\", \")+\".\");return o.forEach(function(t){\"setTransition\"!==t.command&&i[t.command].apply(i,t.args);}),this.stylesheet=e,!0},i.prototype.addImage=function(e,i){if(this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"An image with this name already exists.\")));this.imageManager.addImage(e,i),this.fire(new t.Event(\"data\",{dataType:\"style\"}));},i.prototype.getImage=function(t){return this.imageManager.getImage(t)},i.prototype.removeImage=function(e){if(!this.getImage(e))return this.fire(new t.ErrorEvent(new Error(\"No image with this name exists.\")));this.imageManager.removeImage(e),this.fire(new t.Event(\"data\",{dataType:\"style\"}));},i.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},i.prototype.addSource=function(e,i,o){var r=this;if(void 0===o&&(o={}),this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(\"There is already a source with this ID\");if(!i.type)throw new Error(\"The type property must be defined, but the only the following properties were given: \"+Object.keys(i).join(\", \")+\".\");if(!([\"vector\",\"raster\",\"geojson\",\"video\",\"image\"].indexOf(i.type)>=0)||!this._validate(t.validateStyle.source,\"sources.\"+e,i,null,o)){this.map&&this.map._collectResourceTiming&&(i.collectResourceTiming=!0);var a=this.sourceCaches[e]=new Ct(e,i,this.dispatcher);a.style=this,a.setEventedParent(this,function(){return {isSourceLoaded:r.loaded(),source:a.serialize(),sourceId:e}}),a.onAdd(this.map),this._changed=!0;}},i.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error(\"There is no source with this ID\");for(var i in this._layers)if(this._layers[i].source===e)return this.fire(new t.ErrorEvent(new Error('Source \"'+e+'\" cannot be removed while layer \"'+i+'\" is using it.')));var o=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],o.fire(new t.Event(\"data\",{sourceDataType:\"metadata\",dataType:\"source\",sourceId:e})),o.setEventedParent(null),o.clearTiles(),o.onRemove&&o.onRemove(this.map),this._changed=!0;},i.prototype.setGeoJSONSourceData=function(t,e){this._checkLoaded(),this.sourceCaches[t].getSource().setData(e),this._changed=!0;},i.prototype.getSource=function(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()},i.prototype.addLayer=function(e,i,o){void 0===o&&(o={}),this._checkLoaded();var r=e.id;if(this.getLayer(r))this.fire(new t.ErrorEvent(new Error('Layer with id \"'+r+'\" already exists on this map')));else{var a;if(\"custom\"===e.type){if(Pe(this,t.validateCustomStyleLayer(e)))return;a=t.createStyleLayer(e);}else{if(\"object\"==typeof e.source&&(this.addSource(r,e.source),e=t.clone(e),e=t.extend(e,{source:r})),this._validate(t.validateStyle.layer,\"layers.\"+r,e,{arrayIndex:-1},o))return;a=t.createStyleLayer(e),this._validateLayer(a),a.setEventedParent(this,{layer:{id:r}});}var n=i?this._order.indexOf(i):this._order.length;if(i&&-1===n)this.fire(new t.ErrorEvent(new Error('Layer with id \"'+i+'\" does not exist on this map.')));else{if(this._order.splice(n,0,r),this._layerOrderChanged=!0,this._layers[r]=a,this._removedLayers[r]&&a.source&&\"custom\"!==a.type){var s=this._removedLayers[r];delete this._removedLayers[r],s.type!==a.type?this._updatedSources[a.source]=\"clear\":(this._updatedSources[a.source]=\"reload\",this.sourceCaches[a.source].pause());}this._updateLayer(a),a.onAdd&&a.onAdd(this.map);}}},i.prototype.moveLayer=function(e,i){if(this._checkLoaded(),this._changed=!0,this._layers[e]){if(e!==i){var o=this._order.indexOf(e);this._order.splice(o,1);var r=i?this._order.indexOf(i):this._order.length;i&&-1===r?this.fire(new t.ErrorEvent(new Error('Layer with id \"'+i+'\" does not exist on this map.'))):(this._order.splice(r,0,e),this._layerOrderChanged=!0);}}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be moved.\")));},i.prototype.removeLayer=function(e){this._checkLoaded();var i=this._layers[e];if(i){i.setEventedParent(null);var o=this._order.indexOf(e);this._order.splice(o,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=i,delete this._layers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],i.onRemove&&i.onRemove(this.map);}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be removed.\")));},i.prototype.getLayer=function(t){return this._layers[t]},i.prototype.setLayerZoomRange=function(e,i,o){this._checkLoaded();var r=this.getLayer(e);r?r.minzoom===i&&r.maxzoom===o||(null!=i&&(r.minzoom=i),null!=o&&(r.maxzoom=o),this._updateLayer(r)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot have zoom extent.\")));},i.prototype.setFilter=function(e,i,o){void 0===o&&(o={}),this._checkLoaded();var r=this.getLayer(e);if(r){if(!t.isEqual(r.filter,i))return null==i?(r.filter=void 0,void this._updateLayer(r)):void(this._validate(t.validateStyle.filter,\"layers.\"+r.id+\".filter\",i,null,o)||(r.filter=t.clone(i),this._updateLayer(r)))}else this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be filtered.\")));},i.prototype.getFilter=function(e){return t.clone(this.getLayer(e).filter)},i.prototype.setLayoutProperty=function(e,i,o,r){void 0===r&&(r={}),this._checkLoaded();var a=this.getLayer(e);a?t.isEqual(a.getLayoutProperty(i),o)||(a.setLayoutProperty(i,o,r),this._updateLayer(a)):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")));},i.prototype.getLayoutProperty=function(e,i){var o=this.getLayer(e);if(o)return o.getLayoutProperty(i);this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style.\")));},i.prototype.setPaintProperty=function(e,i,o,r){void 0===r&&(r={}),this._checkLoaded();var a=this.getLayer(e);a?t.isEqual(a.getPaintProperty(i),o)||(a.setPaintProperty(i,o,r)&&this._updateLayer(a),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.ErrorEvent(new Error(\"The layer '\"+e+\"' does not exist in the map's style and cannot be styled.\")));},i.prototype.getPaintProperty=function(t,e){return this.getLayer(t).getPaintProperty(e)},i.prototype.setFeatureState=function(e,i){this._checkLoaded();var o=e.source,r=e.sourceLayer,a=this.sourceCaches[o],n=parseInt(e.id,10);if(void 0!==a){var s=a.getSource().type;\"geojson\"===s&&r?this.fire(new t.ErrorEvent(new Error(\"GeoJSON sources cannot have a sourceLayer parameter.\"))):\"vector\"!==s||r?isNaN(n)||n<0?this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided and non-negative.\"))):a.setFeatureState(r,n,i):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+o+\"' does not exist in the map's style.\")));},i.prototype.removeFeatureState=function(e,i){this._checkLoaded();var o=e.source,r=this.sourceCaches[o];if(void 0!==r){var a=r.getSource().type,n=\"vector\"===a?e.sourceLayer:void 0,s=parseInt(e.id,10);\"vector\"!==a||n?e.id&&isNaN(s)||s<0?this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be non-negative.\"))):!i||e.id?r.removeFeatureState(n,s,i):this.fire(new t.ErrorEvent(new Error(\"A feature id is requred to remove its specific state property.\"))):this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));}else this.fire(new t.ErrorEvent(new Error(\"The source '\"+o+\"' does not exist in the map's style.\")));},i.prototype.getFeatureState=function(e){this._checkLoaded();var i=e.source,o=e.sourceLayer,r=this.sourceCaches[i],a=parseInt(e.id,10);if(void 0!==r)if(\"vector\"!==r.getSource().type||o){if(!(isNaN(a)||a<0))return r.getFeatureState(o,a);this.fire(new t.ErrorEvent(new Error(\"The feature id parameter must be provided and non-negative.\")));}else this.fire(new t.ErrorEvent(new Error(\"The sourceLayer parameter must be provided for vector source types.\")));else this.fire(new t.ErrorEvent(new Error(\"The source '\"+i+\"' does not exist in the map's style.\")));},i.prototype.getTransition=function(){return t.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},i.prototype.serialize=function(){return t.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:t.mapObject(this.sourceCaches,function(t){return t.serialize()}),layers:this._serializeLayers(this._order)},function(t){return void 0!==t})},i.prototype._updateLayer=function(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&(this._updatedSources[t.source]=\"reload\",this.sourceCaches[t.source].pause()),this._changed=!0;},i.prototype._flattenAndSortRenderedFeatures=function(t){for(var e=[],i=[],o=this._order.length-1;o>=0;o--)for(var r=this._order[o],a=0,n=t;a 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=a_extrude*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}\"),Ve=si(\"uniform float u_overscale_factor;varying float v_placed;varying float v_notUsed;varying float v_radius;varying vec2 v_extrude;varying vec2 v_extrude_scale;void main() {float alpha=0.5;vec4 color=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {color=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {color*=.2;}float extrude_scale_length=length(v_extrude_scale);float extrude_length=length(v_extrude)*extrude_scale_length;float stroke_width=15.0*extrude_scale_length/u_overscale_factor;float radius=v_radius*extrude_scale_length;float distance_to_edge=abs(extrude_length-radius);float opacity_t=smoothstep(-stroke_width,0.0,-distance_to_edge);gl_FragColor=opacity_t*color;}\",\"attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;varying float v_radius;varying vec2 v_extrude;varying vec2 v_extrude_scale;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);highp float padding_factor=1.2;gl_Position.xy+=a_extrude*u_extrude_scale*padding_factor*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;v_radius=abs(a_extrude.y);v_extrude=a_extrude*padding_factor;v_extrude_scale=u_extrude_scale*u_camera_to_center_distance*collision_perspective_ratio;}\"),qe=si(\"uniform highp vec4 u_color;void main() {gl_FragColor=u_color;}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}\"),Ge=si(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_FragColor=color*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);}\"),We=si(\"#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvarying vec2 v_pos;void main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\\n#pragma mapbox: define highp vec4 outline_color\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 outline_color\\n#pragma mapbox: initialize lowp float opacity\\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),Xe=si(\"uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec4 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float pixelRatio=u_scale.x;float tileRatio=u_scale.y;float fromScale=u_scale.z;float toScale=u_scale.w;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=vec2((pattern_br_a.x-pattern_tl_a.x)/pixelRatio,(pattern_br_a.y-pattern_tl_a.y)/pixelRatio);vec2 display_size_b=vec2((pattern_br_b.x-pattern_tl_b.x)/pixelRatio,(pattern_br_b.y-pattern_tl_b.y)/pixelRatio);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}\"),He=si(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec4 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float pixelRatio=u_scale.x;float tileZoomRatio=u_scale.y;float fromScale=u_scale.z;float toScale=u_scale.w;vec2 display_size_a=vec2((pattern_br_a.x-pattern_tl_a.x)/pixelRatio,(pattern_br_a.y-pattern_tl_a.y)/pixelRatio);vec2 display_size_b=vec2((pattern_br_b.x-pattern_tl_b.x)/pixelRatio,(pattern_br_b.y-pattern_tl_b.y)/pixelRatio);gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}\"),Ke=si(\"varying vec4 v_color;void main() {gl_FragColor=v_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color;\\n#pragma mapbox: define highp float base\\n#pragma mapbox: define highp float height\\n#pragma mapbox: define highp vec4 color\\nvoid main() {\\n#pragma mapbox: initialize highp float base\\n#pragma mapbox: initialize highp float height\\n#pragma mapbox: initialize highp vec4 color\\nvec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);}\"),Ye=si(\"uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec4 u_scale;uniform float u_vertical_gradient;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\\n#pragma mapbox: define lowp float base\\n#pragma mapbox: define lowp float height\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float base\\n#pragma mapbox: initialize lowp float height\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float pixelRatio=u_scale.x;float tileRatio=u_scale.y;float fromScale=u_scale.z;float toScale=u_scale.w;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=vec2((pattern_br_a.x-pattern_tl_a.x)/pixelRatio,(pattern_br_a.y-pattern_tl_a.y)/pixelRatio);vec2 display_size_b=vec2((pattern_br_b.x-pattern_tl_b.x)/pixelRatio,(pattern_br_b.y-pattern_tl_b.y)/pixelRatio);base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\\n? a_pos\\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));}\"),Je=si(\"uniform sampler2D u_image;uniform float u_opacity;varying vec2 v_pos;void main() {gl_FragColor=texture2D(u_image,v_pos)*u_opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(0.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}\"),Qe=si(\"#ifdef GL_ES\\nprecision highp float;\\n#endif\\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform float u_maxzoom;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;return (data.r+data.g*256.0+data.b*256.0*256.0)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggeration=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/ pow(2.0,(u_zoom-u_maxzoom)*exaggeration+19.2562-u_zoom);gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}\"),$e=si(\"uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\\n#define PI 3.141592653589793\\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}\"),ti=si(\"#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvarying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;void main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/DEVICE_PIXEL_RATIO)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define ANTIALIASING 1.0/DEVICE_PIXEL_RATIO/2.0\\n#define scale 0.015873016\\nattribute vec4 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_gl_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nvec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=a_pos_normal.xy;mediump vec2 normal=a_pos_normal.zw;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_gl_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),ei=si(\"#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nuniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp float v_lineprogress;void main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/DEVICE_PIXEL_RATIO)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,vec2(v_lineprogress,0.5));gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define MAX_LINE_DISTANCE 32767.0\\n#define ANTIALIASING 1.0/DEVICE_PIXEL_RATIO/2.0\\n#define scale 0.015873016\\nattribute vec4 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_gl_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_lineprogress;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\nvec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_lineprogress=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0/MAX_LINE_DISTANCE;vec2 pos=a_pos_normal.xy;mediump vec2 normal=a_pos_normal.zw;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_gl_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}\"),ii=si(\"uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec4 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\nvoid main() {\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float pixelRatio=u_scale.x;float tileZoomRatio=u_scale.y;float fromScale=u_scale.z;float toScale=u_scale.w;vec2 display_size_a=vec2((pattern_br_a.x-pattern_tl_a.x)/pixelRatio,(pattern_br_a.y-pattern_tl_a.y)/pixelRatio);vec2 display_size_b=vec2((pattern_br_b.x-pattern_tl_b.x)/pixelRatio,(pattern_br_b.y-pattern_tl_b.y)/pixelRatio);vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/DEVICE_PIXEL_RATIO)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x,1.0);float x_b=mod(v_linesofar/pattern_size_b.x,1.0);float y_a=0.5+(v_normal.y*clamp(v_width2.s,0.0,(pattern_size_a.y+2.0)/2.0)/pattern_size_a.y);float y_b=0.5+(v_normal.y*clamp(v_width2.s,0.0,(pattern_size_b.y+2.0)/2.0)/pattern_size_b.y);vec2 pos_a=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,vec2(x_a,y_a));vec2 pos_b=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,vec2(x_b,y_b));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\n#define ANTIALIASING 1.0/DEVICE_PIXEL_RATIO/2.0\\nattribute vec4 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_gl_units_to_pixels;uniform mediump float u_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp vec4 pattern_from\\n#pragma mapbox: define lowp vec4 pattern_to\\nvoid main() {\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize mediump vec4 pattern_from\\n#pragma mapbox: initialize mediump vec4 pattern_to\\nvec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=a_pos_normal.xy;mediump vec2 normal=a_pos_normal.zw;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_gl_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);}\"),oi=si(\"uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/DEVICE_PIXEL_RATIO)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"\\n#define scale 0.015873016\\n#define LINE_DISTANCE_SCALE 2.0\\n#define ANTIALIASING 1.0/DEVICE_PIXEL_RATIO/2.0\\nattribute vec4 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_gl_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\\n#pragma mapbox: define highp vec4 color\\n#pragma mapbox: define lowp float blur\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define mediump float gapwidth\\n#pragma mapbox: define lowp float offset\\n#pragma mapbox: define mediump float width\\n#pragma mapbox: define lowp float floorwidth\\nvoid main() {\\n#pragma mapbox: initialize highp vec4 color\\n#pragma mapbox: initialize lowp float blur\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize mediump float gapwidth\\n#pragma mapbox: initialize lowp float offset\\n#pragma mapbox: initialize mediump float width\\n#pragma mapbox: initialize lowp float floorwidth\\nvec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=a_pos_normal.xy;mediump vec2 normal=a_pos_normal.zw;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_gl_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}\"),ri=si(\"uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}\"),ai=si(\"uniform sampler2D u_texture;\\n#pragma mapbox: define lowp float opacity\\nvarying vec2 v_tex;varying float v_fade_opacity;void main() {\\n#pragma mapbox: initialize lowp float opacity\\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;\\n#pragma mapbox: define lowp float opacity\\nuniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_gl_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;void main() {\\n#pragma mapbox: initialize lowp float opacity\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size[0],a_size[1],u_size_t)/256.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size[0]/256.0;} else if (!u_is_size_zoom_constant && u_is_size_feature_constant) {size=u_size;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_gl_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}\"),ni=si(\"#define SDF_PX 8.0\\n#define EDGE_GAMMA 0.105/DEVICE_PIXEL_RATIO\\nuniform bool u_is_halo;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nuniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;void main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\\n#ifdef OVERDRAW_INSPECTOR\\ngl_FragColor=vec4(1.0);\\n#endif\\n}\",\"const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;\\n#pragma mapbox: define highp vec4 fill_color\\n#pragma mapbox: define highp vec4 halo_color\\n#pragma mapbox: define lowp float opacity\\n#pragma mapbox: define lowp float halo_width\\n#pragma mapbox: define lowp float halo_blur\\nuniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_gl_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;void main() {\\n#pragma mapbox: initialize highp vec4 fill_color\\n#pragma mapbox: initialize highp vec4 halo_color\\n#pragma mapbox: initialize lowp float opacity\\n#pragma mapbox: initialize lowp float halo_width\\n#pragma mapbox: initialize lowp float halo_blur\\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size[0],a_size[1],u_size_t)/256.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size[0]/256.0;} else if (!u_is_size_zoom_constant && u_is_size_feature_constant) {size=u_size;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\\ncamera_to_anchor_distance/u_camera_to_center_distance :\\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_gl_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=vec2(tex.x,tex.y);v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}\");function si(t,e){var i=/#pragma mapbox: ([\\w]+) ([\\w]+) ([\\w]+) ([\\w]+)/g,o={};return {fragmentSource:t=t.replace(i,function(t,e,i,r,a){return o[a]=!0,\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nvarying \"+i+\" \"+r+\" \"+a+\";\\n#else\\nuniform \"+i+\" \"+r+\" u_\"+a+\";\\n#endif\\n\":\"\\n#ifdef HAS_UNIFORM_u_\"+a+\"\\n \"+i+\" \"+r+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"}),vertexSource:e=e.replace(i,function(t,e,i,r,a){var n=\"float\"===r?\"vec2\":\"vec4\",s=a.match(/color/)?\"color\":n;return o[a]?\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float a_\"+a+\"_t;\\nattribute \"+i+\" \"+n+\" a_\"+a+\";\\nvarying \"+i+\" \"+r+\" \"+a+\";\\n#else\\nuniform \"+i+\" \"+r+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = a_\"+a+\";\\n#else\\n \"+i+\" \"+r+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", a_\"+a+\"_t);\\n#else\\n \"+i+\" \"+r+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"define\"===e?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\nuniform lowp float a_\"+a+\"_t;\\nattribute \"+i+\" \"+n+\" a_\"+a+\";\\n#else\\nuniform \"+i+\" \"+r+\" u_\"+a+\";\\n#endif\\n\":\"vec4\"===s?\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+i+\" \"+r+\" \"+a+\" = a_\"+a+\";\\n#else\\n \"+i+\" \"+r+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\":\"\\n#ifndef HAS_UNIFORM_u_\"+a+\"\\n \"+i+\" \"+r+\" \"+a+\" = unpack_mix_\"+s+\"(a_\"+a+\", a_\"+a+\"_t);\\n#else\\n \"+i+\" \"+r+\" \"+a+\" = u_\"+a+\";\\n#endif\\n\"})}}var li=Object.freeze({prelude:ke,background:Be,backgroundPattern:Oe,circle:Fe,clippingMask:Ue,heatmap:Ne,heatmapTexture:Ze,collisionBox:je,collisionCircle:Ve,debug:qe,fill:Ge,fillOutline:We,fillOutlinePattern:Xe,fillPattern:He,fillExtrusion:Ke,fillExtrusionPattern:Ye,extrusionTexture:Je,hillshadePrepare:Qe,hillshade:$e,line:ti,lineGradient:ei,linePattern:ii,lineSDF:oi,raster:ri,symbolIcon:ai,symbolSDF:ni}),ci=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null;};ci.prototype.bind=function(t,e,i,o,r,a,n,s){this.context=t;for(var l=this.boundPaintVertexBuffers.length!==o.length,c=0;!l&&c>16,l>>16],u_pixel_coord_lower:[65535&s,65535&l]}}ui.prototype.draw=function(t,e,i,o,r,a,n,s,l,c,u,h,p,d,_,f){var m,g=t.gl;for(var v in t.program.set(this.program),t.setDepthMode(i),t.setStencilMode(o),t.setColorMode(r),t.setCullFace(a),this.fixedUniforms)this.fixedUniforms[v].set(n[v]);d&&d.setUniforms(t,this.binderUniforms,h,{zoom:p});for(var y=(m={},m[g.LINES]=2,m[g.TRIANGLES]=3,m[g.LINE_STRIP]=1,m)[e],x=0,b=u.get();x0?1-1/(1.001-n):-n),u_contrast_factor:(a=r.paint.get(\"raster-contrast\"),a>0?1/(1-a):1+a),u_spin_weights:Bi(r.paint.get(\"raster-hue-rotate\"))};var a,n;};function Bi(t){t*=Math.PI/180;var e=Math.sin(t),i=Math.cos(t);return [(2*i+1)/3,(-Math.sqrt(3)*e-i+1)/3,(Math.sqrt(3)*e-i+1)/3]}var Oi=function(t,e,i,o,r,a,n,s,l,c){var u=r.transform;return {u_is_size_zoom_constant:+(\"constant\"===t||\"source\"===t),u_is_size_feature_constant:+(\"constant\"===t||\"camera\"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:u.cameraToCenterDistance,u_pitch:u.pitch/360*2*Math.PI,u_rotate_symbol:+i,u_aspect_ratio:u.width/u.height,u_fade_change:r.options.fadeDuration?r.symbolFadeChange:1,u_matrix:a,u_label_plane_matrix:n,u_gl_coord_matrix:s,u_is_text:+l,u_pitch_with_map:+o,u_texsize:c,u_texture:0}},Fi=function(e,i,o,r,a,n,s,l,c,u,h){var p=a.transform;return t.extend(Oi(e,i,o,r,a,n,s,l,c,u),{u_gamma_scale:r?Math.cos(p._pitch)*p.cameraToCenterDistance:1,u_is_halo:+h})},Ui=function(t,e,i){return {u_matrix:t,u_opacity:e,u_color:i}},Ni=function(e,i,o,r,a,n){return t.extend(function(t,e,i,o){var r=i.imageManager.getPattern(t.from),a=i.imageManager.getPattern(t.to),n=i.imageManager.getPixelSize(),s=n.width,l=n.height,c=Math.pow(2,o.tileID.overscaledZ),u=o.tileSize*Math.pow(2,i.transform.tileZoom)/c,h=u*(o.tileID.canonical.x+o.tileID.wrap*c),p=u*o.tileID.canonical.y;return {u_image:0,u_pattern_tl_a:r.tl,u_pattern_br_a:r.br,u_pattern_tl_b:a.tl,u_pattern_br_b:a.br,u_texsize:[s,l],u_mix:e.t,u_pattern_size_a:r.displaySize,u_pattern_size_b:a.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/se(o,1,i.transform.tileZoom),u_pixel_coord_upper:[h>>16,p>>16],u_pixel_coord_lower:[65535&h,65535&p]}}(r,n,o,a),{u_matrix:e,u_opacity:i})},Zi={fillExtrusion:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_lightpos:new t.Uniform3f(e,i.u_lightpos),u_lightintensity:new t.Uniform1f(e,i.u_lightintensity),u_lightcolor:new t.Uniform3f(e,i.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,i.u_vertical_gradient)}},fillExtrusionPattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_lightpos:new t.Uniform3f(e,i.u_lightpos),u_lightintensity:new t.Uniform1f(e,i.u_lightintensity),u_lightcolor:new t.Uniform3f(e,i.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,i.u_vertical_gradient),u_height_factor:new t.Uniform1f(e,i.u_height_factor),u_image:new t.Uniform1i(e,i.u_image),u_texsize:new t.Uniform2f(e,i.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_scale:new t.Uniform4f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade)}},extrusionTexture:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_world:new t.Uniform2f(e,i.u_world),u_image:new t.Uniform1i(e,i.u_image),u_opacity:new t.Uniform1f(e,i.u_opacity)}},fill:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},fillPattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_image:new t.Uniform1i(e,i.u_image),u_texsize:new t.Uniform2f(e,i.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_scale:new t.Uniform4f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade)}},fillOutline:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_world:new t.Uniform2f(e,i.u_world)}},fillOutlinePattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_world:new t.Uniform2f(e,i.u_world),u_image:new t.Uniform1i(e,i.u_image),u_texsize:new t.Uniform2f(e,i.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_scale:new t.Uniform4f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade)}},circle:function(e,i){return {u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_scale_with_map:new t.Uniform1i(e,i.u_scale_with_map),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_extrude_scale:new t.Uniform2f(e,i.u_extrude_scale),u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},collisionBox:xi,collisionCircle:xi,debug:function(e,i){return {u_color:new t.UniformColor(e,i.u_color),u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},clippingMask:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},heatmap:function(e,i){return {u_extrude_scale:new t.Uniform1f(e,i.u_extrude_scale),u_intensity:new t.Uniform1f(e,i.u_intensity),u_matrix:new t.UniformMatrix4f(e,i.u_matrix)}},heatmapTexture:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_world:new t.Uniform2f(e,i.u_world),u_image:new t.Uniform1i(e,i.u_image),u_color_ramp:new t.Uniform1i(e,i.u_color_ramp),u_opacity:new t.Uniform1f(e,i.u_opacity)}},hillshade:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_image:new t.Uniform1i(e,i.u_image),u_latrange:new t.Uniform2f(e,i.u_latrange),u_light:new t.Uniform2f(e,i.u_light),u_shadow:new t.UniformColor(e,i.u_shadow),u_highlight:new t.UniformColor(e,i.u_highlight),u_accent:new t.UniformColor(e,i.u_accent)}},hillshadePrepare:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_image:new t.Uniform1i(e,i.u_image),u_dimension:new t.Uniform2f(e,i.u_dimension),u_zoom:new t.Uniform1f(e,i.u_zoom),u_maxzoom:new t.Uniform1f(e,i.u_maxzoom)}},line:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_ratio:new t.Uniform1f(e,i.u_ratio),u_gl_units_to_pixels:new t.Uniform2f(e,i.u_gl_units_to_pixels)}},lineGradient:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_ratio:new t.Uniform1f(e,i.u_ratio),u_gl_units_to_pixels:new t.Uniform2f(e,i.u_gl_units_to_pixels),u_image:new t.Uniform1i(e,i.u_image)}},linePattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_texsize:new t.Uniform2f(e,i.u_texsize),u_ratio:new t.Uniform1f(e,i.u_ratio),u_image:new t.Uniform1i(e,i.u_image),u_gl_units_to_pixels:new t.Uniform2f(e,i.u_gl_units_to_pixels),u_scale:new t.Uniform4f(e,i.u_scale),u_fade:new t.Uniform1f(e,i.u_fade)}},lineSDF:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_ratio:new t.Uniform1f(e,i.u_ratio),u_gl_units_to_pixels:new t.Uniform2f(e,i.u_gl_units_to_pixels),u_patternscale_a:new t.Uniform2f(e,i.u_patternscale_a),u_patternscale_b:new t.Uniform2f(e,i.u_patternscale_b),u_sdfgamma:new t.Uniform1f(e,i.u_sdfgamma),u_image:new t.Uniform1i(e,i.u_image),u_tex_y_a:new t.Uniform1f(e,i.u_tex_y_a),u_tex_y_b:new t.Uniform1f(e,i.u_tex_y_b),u_mix:new t.Uniform1f(e,i.u_mix)}},raster:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_tl_parent:new t.Uniform2f(e,i.u_tl_parent),u_scale_parent:new t.Uniform1f(e,i.u_scale_parent),u_buffer_scale:new t.Uniform1f(e,i.u_buffer_scale),u_fade_t:new t.Uniform1f(e,i.u_fade_t),u_opacity:new t.Uniform1f(e,i.u_opacity),u_image0:new t.Uniform1i(e,i.u_image0),u_image1:new t.Uniform1i(e,i.u_image1),u_brightness_low:new t.Uniform1f(e,i.u_brightness_low),u_brightness_high:new t.Uniform1f(e,i.u_brightness_high),u_saturation_factor:new t.Uniform1f(e,i.u_saturation_factor),u_contrast_factor:new t.Uniform1f(e,i.u_contrast_factor),u_spin_weights:new t.Uniform3f(e,i.u_spin_weights)}},symbolIcon:function(e,i){return {u_is_size_zoom_constant:new t.Uniform1i(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,i.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,i.u_size_t),u_size:new t.Uniform1f(e,i.u_size),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,i.u_pitch),u_rotate_symbol:new t.Uniform1i(e,i.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,i.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,i.u_fade_change),u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,i.u_label_plane_matrix),u_gl_coord_matrix:new t.UniformMatrix4f(e,i.u_gl_coord_matrix),u_is_text:new t.Uniform1f(e,i.u_is_text),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_texsize:new t.Uniform2f(e,i.u_texsize),u_texture:new t.Uniform1i(e,i.u_texture)}},symbolSDF:function(e,i){return {u_is_size_zoom_constant:new t.Uniform1i(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,i.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,i.u_size_t),u_size:new t.Uniform1f(e,i.u_size),u_camera_to_center_distance:new t.Uniform1f(e,i.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,i.u_pitch),u_rotate_symbol:new t.Uniform1i(e,i.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,i.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,i.u_fade_change),u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,i.u_label_plane_matrix),u_gl_coord_matrix:new t.UniformMatrix4f(e,i.u_gl_coord_matrix),u_is_text:new t.Uniform1f(e,i.u_is_text),u_pitch_with_map:new t.Uniform1i(e,i.u_pitch_with_map),u_texsize:new t.Uniform2f(e,i.u_texsize),u_texture:new t.Uniform1i(e,i.u_texture),u_gamma_scale:new t.Uniform1f(e,i.u_gamma_scale),u_is_halo:new t.Uniform1f(e,i.u_is_halo)}},background:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_opacity:new t.Uniform1f(e,i.u_opacity),u_color:new t.UniformColor(e,i.u_color)}},backgroundPattern:function(e,i){return {u_matrix:new t.UniformMatrix4f(e,i.u_matrix),u_opacity:new t.Uniform1f(e,i.u_opacity),u_image:new t.Uniform1i(e,i.u_image),u_pattern_tl_a:new t.Uniform2f(e,i.u_pattern_tl_a),u_pattern_br_a:new t.Uniform2f(e,i.u_pattern_br_a),u_pattern_tl_b:new t.Uniform2f(e,i.u_pattern_tl_b),u_pattern_br_b:new t.Uniform2f(e,i.u_pattern_br_b),u_texsize:new t.Uniform2f(e,i.u_texsize),u_mix:new t.Uniform1f(e,i.u_mix),u_pattern_size_a:new t.Uniform2f(e,i.u_pattern_size_a),u_pattern_size_b:new t.Uniform2f(e,i.u_pattern_size_b),u_scale_a:new t.Uniform1f(e,i.u_scale_a),u_scale_b:new t.Uniform1f(e,i.u_scale_b),u_pixel_coord_upper:new t.Uniform2f(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,i.u_pixel_coord_lower),u_tile_units_to_pixels:new t.Uniform1f(e,i.u_tile_units_to_pixels)}}};function ji(e,i){for(var o=e.sort(function(t,e){return t.tileID.isLessThan(e.tileID)?-1:e.tileID.isLessThan(t.tileID)?1:0}),r=0;r0){var s=t.browser.now(),l=(s-e.timeAdded)/n,c=i?(s-i.timeAdded)/n:-1,u=o.getSource(),h=a.coveringZoomLevel({tileSize:u.tileSize,roundZoom:u.roundZoom}),p=!i||Math.abs(i.tileID.overscaledZ-h)>Math.abs(e.tileID.overscaledZ-h),d=p&&e.refreshedUponExpiration?1:t.clamp(p?l:1-c,0,1);return e.refreshedUponExpiration&&l>=1&&(e.refreshedUponExpiration=!1),i?{opacity:1,mix:1-d}:{opacity:d,mix:0}}return {opacity:1,mix:0}}function eo(e,i,o){var r=e.context,a=r.gl,n=o.posMatrix,s=e.useProgram(\"debug\"),l=bt.disabled,c=wt.disabled,u=e.colorModeForRenderPass(),h=\"$debug\";s.draw(r,a.LINE_STRIP,l,c,u,Tt.disabled,wi(n,t.Color.red),h,e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);for(var p=function(t,e,i,o){o=o||1;var r,a,n,s,l,c,u,h,p=[];for(r=0,a=t.length;r\":[24,[4,18,20,9,4,0]],\"?\":[18,[3,16,3,17,4,19,5,20,7,21,11,21,13,20,14,19,15,17,15,15,14,13,13,12,9,10,9,7,-1,-1,9,2,8,1,9,0,10,1,9,2]],\"@\":[27,[18,13,17,15,15,16,12,16,10,15,9,14,8,11,8,8,9,6,11,5,14,5,16,6,17,8,-1,-1,12,16,10,14,9,11,9,8,10,6,11,5,-1,-1,18,16,17,8,17,6,19,5,21,5,23,7,24,10,24,12,23,15,22,17,20,19,18,20,15,21,12,21,9,20,7,19,5,17,4,15,3,12,3,9,4,6,5,4,7,2,9,1,12,0,15,0,18,1,20,2,21,3,-1,-1,19,16,18,8,18,6,19,5]],A:[18,[9,21,1,0,-1,-1,9,21,17,0,-1,-1,4,7,14,7]],B:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,-1,-1,4,11,13,11,16,10,17,9,18,7,18,4,17,2,16,1,13,0,4,0]],C:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5]],D:[21,[4,21,4,0,-1,-1,4,21,11,21,14,20,16,18,17,16,18,13,18,8,17,5,16,3,14,1,11,0,4,0]],E:[19,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11,-1,-1,4,0,17,0]],F:[18,[4,21,4,0,-1,-1,4,21,17,21,-1,-1,4,11,12,11]],G:[21,[18,16,17,18,15,20,13,21,9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,18,8,-1,-1,13,8,18,8]],H:[22,[4,21,4,0,-1,-1,18,21,18,0,-1,-1,4,11,18,11]],I:[8,[4,21,4,0]],J:[16,[12,21,12,5,11,2,10,1,8,0,6,0,4,1,3,2,2,5,2,7]],K:[21,[4,21,4,0,-1,-1,18,21,4,7,-1,-1,9,12,18,0]],L:[17,[4,21,4,0,-1,-1,4,0,16,0]],M:[24,[4,21,4,0,-1,-1,4,21,12,0,-1,-1,20,21,12,0,-1,-1,20,21,20,0]],N:[22,[4,21,4,0,-1,-1,4,21,18,0,-1,-1,18,21,18,0]],O:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21]],P:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,14,17,12,16,11,13,10,4,10]],Q:[22,[9,21,7,20,5,18,4,16,3,13,3,8,4,5,5,3,7,1,9,0,13,0,15,1,17,3,18,5,19,8,19,13,18,16,17,18,15,20,13,21,9,21,-1,-1,12,4,18,-2]],R:[21,[4,21,4,0,-1,-1,4,21,13,21,16,20,17,19,18,17,18,15,17,13,16,12,13,11,4,11,-1,-1,11,11,18,0]],S:[20,[17,18,15,20,12,21,8,21,5,20,3,18,3,16,4,14,5,13,7,12,13,10,15,9,16,8,17,6,17,3,15,1,12,0,8,0,5,1,3,3]],T:[16,[8,21,8,0,-1,-1,1,21,15,21]],U:[22,[4,21,4,6,5,3,7,1,10,0,12,0,15,1,17,3,18,6,18,21]],V:[18,[1,21,9,0,-1,-1,17,21,9,0]],W:[24,[2,21,7,0,-1,-1,12,21,7,0,-1,-1,12,21,17,0,-1,-1,22,21,17,0]],X:[20,[3,21,17,0,-1,-1,17,21,3,0]],Y:[18,[1,21,9,11,9,0,-1,-1,17,21,9,11]],Z:[20,[17,21,3,0,-1,-1,3,21,17,21,-1,-1,3,0,17,0]],\"[\":[14,[4,25,4,-7,-1,-1,5,25,5,-7,-1,-1,4,25,11,25,-1,-1,4,-7,11,-7]],\"\\\\\":[14,[0,21,14,-3]],\"]\":[14,[9,25,9,-7,-1,-1,10,25,10,-7,-1,-1,3,25,10,25,-1,-1,3,-7,10,-7]],\"^\":[16,[6,15,8,18,10,15,-1,-1,3,12,8,17,13,12,-1,-1,8,17,8,0]],_:[16,[0,-2,16,-2]],\"`\":[10,[6,21,5,20,4,18,4,16,5,15,6,16,5,17]],a:[19,[15,14,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],b:[19,[4,21,4,0,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],c:[18,[15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],d:[19,[15,21,15,0,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],e:[18,[3,8,15,8,15,10,14,12,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],f:[12,[10,21,8,21,6,20,5,17,5,0,-1,-1,2,14,9,14]],g:[19,[15,14,15,-2,14,-5,13,-6,11,-7,8,-7,6,-6,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],h:[19,[4,21,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],i:[8,[3,21,4,20,5,21,4,22,3,21,-1,-1,4,14,4,0]],j:[10,[5,21,6,20,7,21,6,22,5,21,-1,-1,6,14,6,-3,5,-6,3,-7,1,-7]],k:[17,[4,21,4,0,-1,-1,14,14,4,4,-1,-1,8,8,15,0]],l:[8,[4,21,4,0]],m:[30,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0,-1,-1,15,10,18,13,20,14,23,14,25,13,26,10,26,0]],n:[19,[4,14,4,0,-1,-1,4,10,7,13,9,14,12,14,14,13,15,10,15,0]],o:[19,[8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3,16,6,16,8,15,11,13,13,11,14,8,14]],p:[19,[4,14,4,-7,-1,-1,4,11,6,13,8,14,11,14,13,13,15,11,16,8,16,6,15,3,13,1,11,0,8,0,6,1,4,3]],q:[19,[15,14,15,-7,-1,-1,15,11,13,13,11,14,8,14,6,13,4,11,3,8,3,6,4,3,6,1,8,0,11,0,13,1,15,3]],r:[13,[4,14,4,0,-1,-1,4,8,5,11,7,13,9,14,12,14]],s:[17,[14,11,13,13,10,14,7,14,4,13,3,11,4,9,6,8,11,7,13,6,14,4,14,3,13,1,10,0,7,0,4,1,3,3]],t:[12,[5,21,5,4,6,1,8,0,10,0,-1,-1,2,14,9,14]],u:[19,[4,14,4,4,5,1,7,0,10,0,12,1,15,4,-1,-1,15,14,15,0]],v:[16,[2,14,8,0,-1,-1,14,14,8,0]],w:[22,[3,14,7,0,-1,-1,11,14,7,0,-1,-1,11,14,15,0,-1,-1,19,14,15,0]],x:[17,[3,14,14,0,-1,-1,14,14,3,0]],y:[16,[2,14,8,0,-1,-1,14,14,8,0,6,-4,4,-6,2,-7,1,-7]],z:[17,[14,14,3,0,-1,-1,3,14,14,14,-1,-1,3,0,14,0]],\"{\":[14,[9,25,7,24,6,23,5,21,5,19,6,17,7,16,8,14,8,12,6,10,-1,-1,7,24,6,22,6,20,7,18,8,17,9,15,9,13,8,11,4,9,8,7,9,5,9,3,8,1,7,0,6,-2,6,-4,7,-6,-1,-1,6,8,8,6,8,4,7,2,6,1,5,-1,5,-3,6,-5,7,-6,9,-7]],\"|\":[8,[4,25,4,-7]],\"}\":[14,[5,25,7,24,8,23,9,21,9,19,8,17,7,16,6,14,6,12,8,10,-1,-1,7,24,8,22,8,20,7,18,6,17,5,15,5,13,6,11,10,9,6,7,5,5,5,3,6,1,7,0,8,-2,8,-4,7,-6,-1,-1,8,8,6,6,6,4,7,2,8,1,9,-1,9,-3,8,-5,7,-6,5,-7]],\"~\":[24,[3,6,3,8,4,11,6,12,8,12,10,11,14,8,16,7,18,7,20,8,21,10,-1,-1,3,8,4,10,6,11,8,11,10,10,14,7,16,6,18,6,20,7,21,10,21,12]]};var oo={symbol:function(t,e,i,o){if(\"translucent\"===t.renderPass){var r=wt.disabled,a=t.colorModeForRenderPass();0!==i.paint.get(\"icon-opacity\").constantOr(1)&&Xi(t,e,i,o,!1,i.paint.get(\"icon-translate\"),i.paint.get(\"icon-translate-anchor\"),i.layout.get(\"icon-rotation-alignment\"),i.layout.get(\"icon-pitch-alignment\"),i.layout.get(\"icon-keep-upright\"),r,a),0!==i.paint.get(\"text-opacity\").constantOr(1)&&Xi(t,e,i,o,!0,i.paint.get(\"text-translate\"),i.paint.get(\"text-translate-anchor\"),i.layout.get(\"text-rotation-alignment\"),i.layout.get(\"text-pitch-alignment\"),i.layout.get(\"text-keep-upright\"),r,a),e.map.showCollisionBoxes&&function(t,e,i,o){qi(t,e,i,o,!1),qi(t,e,i,o,!0);}(t,e,i,o);}},circle:function(t,e,i,o){if(\"translucent\"===t.renderPass){var r=i.paint.get(\"circle-opacity\"),a=i.paint.get(\"circle-stroke-width\"),n=i.paint.get(\"circle-stroke-opacity\");if(0!==r.constantOr(1)||0!==a.constantOr(1)&&0!==n.constantOr(1))for(var s=t.context,l=s.gl,c=t.depthModeForSublayer(0,bt.ReadOnly),u=wt.disabled,h=t.colorModeForRenderPass(),p=0;pe.y){var i=t;t=e,e=i;}return {x0:t.x,y0:t.y,x1:e.x,y1:e.y,dx:e.x-t.x,dy:e.y-t.y}}function no(t,e,i,o,r){var a=Math.max(i,Math.floor(e.y0)),n=Math.min(o,Math.ceil(e.y1));if(t.x0===e.x0&&t.y0===e.y0?t.x0+e.dy/t.dy*t.dx0,h=e.dx<0,p=a;pl.dy&&(n=s,s=l,l=n),s.dy>c.dy&&(n=s,s=c,c=n),l.dy>c.dy&&(n=l,l=c,c=n),s.dy&&no(c,s,o,r,a),l.dy&&no(c,l,o,r,a);}ro.prototype.resize=function(e,i){var o=this.context.gl;if(this.width=e*t.browser.devicePixelRatio,this.height=i*t.browser.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(var r=0,a=this.style._order;r=0;this.currentLayer--){var I=this.style._layers[o[this.currentLayer]],C=r[I.source],S=l[I.source];I.source!==s&&C&&(this.clearStencil(),C.getSource().isTileClipped&&this._renderTileClippingMasks(S)),this.renderLayer(this,C,I,S),s=I.source;}for(this.renderPass=\"translucent\",this.currentLayer=0,s=null;this.currentLayer0?e.pop():null},ro.prototype.isPatternMissing=function(t){if(!t)return !1;var e=this.imageManager.getPattern(t.from),i=this.imageManager.getPattern(t.to);return !e||!i},ro.prototype.useProgram=function(t,e){void 0===e&&(e=this.emptyProgramConfiguration),this.cache=this.cache||{};var i=\"\"+t+(e.cacheKey||\"\")+(this._showOverdrawInspector?\"/overdraw\":\"\");return this.cache[i]||(this.cache[i]=new ui(this.context,li[t],e,Zi[t],this._showOverdrawInspector)),this.cache[i]},ro.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault();},ro.prototype.setBaseState=function(){var t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD);};var lo=function(e,i,o){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===o||o,this._minZoom=e||0,this._maxZoom=i||22,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._posMatrixCache={},this._alignedPosMatrixCache={};},co={minZoom:{configurable:!0},maxZoom:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerPoint:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};lo.prototype.clone=function(){var t=new lo(this._minZoom,this._maxZoom,this._renderWorldCopies);return t.tileSize=this.tileSize,t.latRange=this.latRange,t.width=this.width,t.height=this.height,t._center=this._center,t.zoom=this.zoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._unmodified=this._unmodified,t._calcMatrices(),t},co.minZoom.get=function(){return this._minZoom},co.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t));},co.maxZoom.get=function(){return this._maxZoom},co.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t));},co.renderWorldCopies.get=function(){return this._renderWorldCopies},co.renderWorldCopies.set=function(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t;},co.worldSize.get=function(){return this.tileSize*this.scale},co.centerPoint.get=function(){return this.size._div(2)},co.size.get=function(){return new t.Point(this.width,this.height)},co.bearing.get=function(){return -this.angle/Math.PI*180},co.bearing.set=function(e){var i=-t.wrap(e,-180,180)*Math.PI/180;this.angle!==i&&(this._unmodified=!1,this.angle=i,this._calcMatrices(),this.rotationMatrix=t.create$2(),t.rotate(this.rotationMatrix,this.rotationMatrix,this.angle));},co.pitch.get=function(){return this._pitch/Math.PI*180},co.pitch.set=function(e){var i=t.clamp(e,0,60)/180*Math.PI;this._pitch!==i&&(this._unmodified=!1,this._pitch=i,this._calcMatrices());},co.fov.get=function(){return this._fov/Math.PI*180},co.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices());},co.zoom.get=function(){return this._zoom},co.zoom.set=function(t){var e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._constrain(),this._calcMatrices());},co.center.get=function(){return this._center},co.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices());},lo.prototype.coveringZoomLevel=function(t){return (t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize))},lo.prototype.getVisibleUnwrappedCoordinates=function(e){var i=[new t.UnwrappedTileID(0,e)];if(this._renderWorldCopies)for(var o=this.pointCoordinate(new t.Point(0,0)),r=this.pointCoordinate(new t.Point(this.width,0)),a=this.pointCoordinate(new t.Point(this.width,this.height)),n=this.pointCoordinate(new t.Point(0,this.height)),s=Math.floor(Math.min(o.x,r.x,a.x,n.x)),l=Math.floor(Math.max(o.x,r.x,a.x,n.x)),c=s-1;c<=l+1;c++)0!==c&&i.push(new t.UnwrappedTileID(c,e));return i},lo.prototype.coveringTiles=function(e){var i=this.coveringZoomLevel(e),o=i;if(void 0!==e.minzoom&&ie.maxzoom&&(i=e.maxzoom);var r=t.MercatorCoordinate.fromLngLat(this.center),a=Math.pow(2,i),n=new t.Point(a*r.x-.5,a*r.y-.5);return function(e,i,o,r){void 0===r&&(r=!0);var a=1<=0&&l<=a)for(c=i;cn&&(r=n-m);}if(this.lngRange){var g=d.x,v=c.x/2;g-vl&&(o=l-v);}void 0===o&&void 0===r||(this.center=this.unproject(new t.Point(void 0!==o?o:d.x,void 0!==r?r:d.y))),this._unmodified=u,this._constraining=!1;}},lo.prototype._calcMatrices=function(){if(this.height){this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height;var e=this._fov/2,i=Math.PI/2+this._pitch,o=Math.sin(e)*this.cameraToCenterDistance/Math.sin(Math.PI-i-e),r=this.point,a=r.x,n=r.y,s=1.01*(Math.cos(Math.PI/2-this._pitch)*o+this.cameraToCenterDistance),l=new Float64Array(16);t.perspective(l,this._fov,this.width/this.height,1,s),t.scale(l,l,[1,-1,1]),t.translate(l,l,[0,0,-this.cameraToCenterDistance]),t.rotateX(l,l,this._pitch),t.rotateZ(l,l,this.angle),t.translate(l,l,[-a,-n,0]),this.mercatorMatrix=t.scale([],l,[this.worldSize,this.worldSize,this.worldSize]),t.scale(l,l,[1,1,t.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=l;var c=this.width%2/2,u=this.height%2/2,h=Math.cos(this.angle),p=Math.sin(this.angle),d=a-Math.round(a)+h*c+p*u,_=n-Math.round(n)+h*u+p*c,f=new Float64Array(l);if(t.translate(f,f,[d>.5?d-1:d,_>.5?_-1:_,0]),this.alignedProjMatrix=f,l=t.create$1(),t.scale(l,l,[this.width/2,-this.height/2,1]),t.translate(l,l,[1,-1,0]),this.pixelMatrix=t.multiply(new Float64Array(16),l,this.projMatrix),!(l=t.invert(new Float64Array(16),this.pixelMatrix)))throw new Error(\"failed to invert matrix\");this.pixelMatrixInverse=l,this._posMatrixCache={},this._alignedPosMatrixCache={};}},lo.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var e=this.pointCoordinate(new t.Point(0,0)),i=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(i,i,this.pixelMatrix)[3]/this.cameraToCenterDistance},lo.prototype.getCameraPoint=function(){var e=this._pitch,i=Math.tan(e)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.Point(0,i))},lo.prototype.getCameraQueryGeometry=function(e){var i=this.getCameraPoint();if(1===e.length)return [e[0],i];for(var o=i.x,r=i.y,a=i.x,n=i.y,s=0,l=e;s=3&&(this._map.jumpTo({center:[+e[2],+e[1]],zoom:+e[0],bearing:+(e[3]||0),pitch:+(e[4]||0)}),!0)},uo.prototype._updateHashUnthrottled=function(){var e=this.getHashString();try{t.window.history.replaceState(t.window.history.state,\"\",e);}catch(t){}};var ho=function(e){function o(o,r,a,n){void 0===n&&(n={});var s=i.mousePos(r.getCanvasContainer(),a),l=r.unproject(s);e.call(this,o,t.extend({point:s,lngLat:l,originalEvent:a},n)),this._defaultPrevented=!1,this.target=r;}e&&(o.__proto__=e),o.prototype=Object.create(e&&e.prototype),o.prototype.constructor=o;var r={defaultPrevented:{configurable:!0}};return o.prototype.preventDefault=function(){this._defaultPrevented=!0;},r.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(o.prototype,r),o}(t.Event),po=function(e){function o(o,r,a){var n=i.touchPos(r.getCanvasContainer(),a),s=n.map(function(t){return r.unproject(t)}),l=n.reduce(function(t,e,i,o){return t.add(e.div(o.length))},new t.Point(0,0)),c=r.unproject(l);e.call(this,o,{points:n,point:l,lngLats:s,lngLat:c,originalEvent:a}),this._defaultPrevented=!1;}e&&(o.__proto__=e),o.prototype=Object.create(e&&e.prototype),o.prototype.constructor=o;var r={defaultPrevented:{configurable:!0}};return o.prototype.preventDefault=function(){this._defaultPrevented=!0;},r.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(o.prototype,r),o}(t.Event),_o=function(t){function e(e,i,o){t.call(this,e,{originalEvent:o}),this._defaultPrevented=!1;}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var i={defaultPrevented:{configurable:!0}};return e.prototype.preventDefault=function(){this._defaultPrevented=!0;},i.defaultPrevented.get=function(){return this._defaultPrevented},Object.defineProperties(e.prototype,i),e}(t.Event),fo=function(e){this._map=e,this._el=e.getCanvasContainer(),this._delta=0,t.bindAll([\"_onWheel\",\"_onTimeout\",\"_onScrollFrame\",\"_onScrollFinished\"],this);};fo.prototype.isEnabled=function(){return !!this._enabled},fo.prototype.isActive=function(){return !!this._active},fo.prototype.isZooming=function(){return !!this._zooming},fo.prototype.enable=function(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&\"center\"===t.around);},fo.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1);},fo.prototype.onWheel=function(e){if(this.isEnabled()){var i=e.deltaMode===t.window.WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY,o=t.browser.now(),r=o-(this._lastWheelEventTime||0);this._lastWheelEventTime=o,0!==i&&i%4.000244140625==0?this._type=\"wheel\":0!==i&&Math.abs(i)<4?this._type=\"trackpad\":r>400?(this._type=null,this._lastValue=i,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(r*i)<200?\"trackpad\":\"wheel\",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,i+=this._lastValue)),e.shiftKey&&i&&(i/=4),this._type&&(this._lastWheelEvent=e,this._delta-=i,this.isActive()||this._start(e)),e.preventDefault();}},fo.prototype._onTimeout=function(t){this._type=\"wheel\",this._delta-=this._lastValue,this.isActive()||this._start(t);},fo.prototype._start=function(e){if(this._delta){this._frameId&&(this._map._cancelRenderFrame(this._frameId),this._frameId=null),this._active=!0,this._zooming=!0,this._map.fire(new t.Event(\"movestart\",{originalEvent:e})),this._map.fire(new t.Event(\"zoomstart\",{originalEvent:e})),this._finishTimeout&&clearTimeout(this._finishTimeout);var o=i.mousePos(this._el,e);this._around=t.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(o)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=this._map._requestRenderFrame(this._onScrollFrame));}},fo.prototype._onScrollFrame=function(){var e=this;if(this._frameId=null,this.isActive()){var i=this._map.transform;if(0!==this._delta){var o=\"wheel\"===this._type&&Math.abs(this._delta)>4.000244140625?1/450:.01,r=2/(1+Math.exp(-Math.abs(this._delta*o)));this._delta<0&&0!==r&&(r=1/r);var a=\"number\"==typeof this._targetZoom?i.zoomScale(this._targetZoom):i.scale;this._targetZoom=Math.min(i.maxZoom,Math.max(i.minZoom,i.scaleZoom(a*r))),\"wheel\"===this._type&&(this._startZoom=i.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0;}var n=\"number\"==typeof this._targetZoom?this._targetZoom:i.zoom,s=this._startZoom,l=this._easing,c=!1;if(\"wheel\"===this._type&&s&&l){var u=Math.min((t.browser.now()-this._lastWheelEventTime)/200,1),h=l(u);i.zoom=t.number(s,n,h),u<1?this._frameId||(this._frameId=this._map._requestRenderFrame(this._onScrollFrame)):c=!0;}else i.zoom=n,c=!0;i.setLocationAtPoint(this._around,this._aroundPoint),this._map.fire(new t.Event(\"move\",{originalEvent:this._lastWheelEvent})),this._map.fire(new t.Event(\"zoom\",{originalEvent:this._lastWheelEvent})),c&&(this._active=!1,this._finishTimeout=setTimeout(function(){e._zooming=!1,e._map.fire(new t.Event(\"zoomend\",{originalEvent:e._lastWheelEvent})),e._map.fire(new t.Event(\"moveend\",{originalEvent:e._lastWheelEvent})),delete e._targetZoom;},200));}},fo.prototype._smoothOutEasing=function(e){var i=t.ease;if(this._prevEase){var o=this._prevEase,r=(t.browser.now()-o.start)/o.duration,a=o.easing(r+.01)-o.easing(r),n=.27/Math.sqrt(a*a+1e-4)*.01,s=Math.sqrt(.0729-n*n);i=t.bezier(n,s,.25,1);}return this._prevEase={start:t.browser.now(),duration:e,easing:i},i};var mo=function(e,i){this._map=e,this._el=e.getCanvasContainer(),this._container=e.getContainer(),this._clickTolerance=i.clickTolerance||1,t.bindAll([\"_onMouseMove\",\"_onMouseUp\",\"_onKeyDown\"],this);};mo.prototype.isEnabled=function(){return !!this._enabled},mo.prototype.isActive=function(){return !!this._active},mo.prototype.enable=function(){this.isEnabled()||(this._enabled=!0);},mo.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1);},mo.prototype.onMouseDown=function(e){this.isEnabled()&&e.shiftKey&&0===e.button&&(t.window.document.addEventListener(\"mousemove\",this._onMouseMove,!1),t.window.document.addEventListener(\"keydown\",this._onKeyDown,!1),t.window.document.addEventListener(\"mouseup\",this._onMouseUp,!1),i.disableDrag(),this._startPos=this._lastPos=i.mousePos(this._el,e),this._active=!0);},mo.prototype._onMouseMove=function(t){var e=i.mousePos(this._el,t);if(!(this._lastPos.equals(e)||!this._box&&e.dist(this._startPos)180&&(d=180);var _=d/180;c+=h*d*(_/2),Math.abs(i._normalizeBearing(c,0))0&&i-e[0][0]>160;)e.shift();};var yo=t.bezier(0,0,.3,1),xo=function(e,i){this._map=e,this._el=e.getCanvasContainer(),this._state=\"disabled\",this._clickTolerance=i.clickTolerance||1,t.bindAll([\"_onMove\",\"_onMouseUp\",\"_onTouchEnd\",\"_onBlur\",\"_onDragFrame\"],this);};xo.prototype.isEnabled=function(){return \"disabled\"!==this._state},xo.prototype.isActive=function(){return \"active\"===this._state},xo.prototype.enable=function(){this.isEnabled()||(this._el.classList.add(\"mapboxgl-touch-drag-pan\"),this._state=\"enabled\");},xo.prototype.disable=function(){if(this.isEnabled())switch(this._el.classList.remove(\"mapboxgl-touch-drag-pan\"),this._state){case\"active\":this._state=\"disabled\",this._unbind(),this._deactivate(),this._fireEvent(\"dragend\"),this._fireEvent(\"moveend\");break;case\"pending\":this._state=\"disabled\",this._unbind();break;default:this._state=\"disabled\";}},xo.prototype.onMouseDown=function(e){\"enabled\"===this._state&&(e.ctrlKey||0!==i.mouseButton(e)||(i.addEventListener(t.window.document,\"mousemove\",this._onMove,{capture:!0}),i.addEventListener(t.window.document,\"mouseup\",this._onMouseUp),this._start(e)));},xo.prototype.onTouchStart=function(e){\"enabled\"===this._state&&(e.touches.length>1||(i.addEventListener(t.window.document,\"touchmove\",this._onMove,{capture:!0,passive:!1}),i.addEventListener(t.window.document,\"touchend\",this._onTouchEnd),this._start(e)));},xo.prototype._start=function(e){t.window.addEventListener(\"blur\",this._onBlur),this._state=\"pending\",this._startPos=this._mouseDownPos=this._lastPos=i.mousePos(this._el,e),this._inertia=[[t.browser.now(),this._startPos]];},xo.prototype._onMove=function(e){e.preventDefault();var o=i.mousePos(this._el,e);this._lastPos.equals(o)||\"pending\"===this._state&&o.dist(this._mouseDownPos)1400&&(s=1400,n._unit()._mult(s));var l=s/750,c=n.mult(-l/2);this._map.panBy(c,{duration:1e3*l,easing:yo,noMoveStart:!0},{originalEvent:t});}}},xo.prototype._fireEvent=function(e,i){return this._map.fire(new t.Event(e,i?{originalEvent:i}:{}))},xo.prototype._drainInertiaBuffer=function(){for(var e=this._inertia,i=t.browser.now();e.length>0&&i-e[0][0]>160;)e.shift();};var bo=function(e){this._map=e,this._el=e.getCanvasContainer(),t.bindAll([\"_onKeyDown\"],this);};function wo(t){return t*(2-t)}bo.prototype.isEnabled=function(){return !!this._enabled},bo.prototype.enable=function(){this.isEnabled()||(this._el.addEventListener(\"keydown\",this._onKeyDown,!1),this._enabled=!0);},bo.prototype.disable=function(){this.isEnabled()&&(this._el.removeEventListener(\"keydown\",this._onKeyDown),this._enabled=!1);},bo.prototype._onKeyDown=function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var e=0,i=0,o=0,r=0,a=0;switch(t.keyCode){case 61:case 107:case 171:case 187:e=1;break;case 189:case 109:case 173:e=-1;break;case 37:t.shiftKey?i=-1:(t.preventDefault(),r=-1);break;case 39:t.shiftKey?i=1:(t.preventDefault(),r=1);break;case 38:t.shiftKey?o=1:(t.preventDefault(),a=-1);break;case 40:t.shiftKey?o=-1:(a=1,t.preventDefault());break;default:return}var n=this._map,s=n.getZoom(),l={duration:300,delayEndEvents:500,easing:wo,zoom:e?Math.round(s)+e*(t.shiftKey?2:1):s,bearing:n.getBearing()+15*i,pitch:n.getPitch()+10*o,offset:[100*-r,100*-a],center:n.getCenter()};n.easeTo(l,{originalEvent:t});}};var Eo=function(e){this._map=e,t.bindAll([\"_onDblClick\",\"_onZoomEnd\"],this);};Eo.prototype.isEnabled=function(){return !!this._enabled},Eo.prototype.isActive=function(){return !!this._active},Eo.prototype.enable=function(){this.isEnabled()||(this._enabled=!0);},Eo.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1);},Eo.prototype.onTouchStart=function(t){var e=this;this.isEnabled()&&(t.points.length>1||(this._tapped?(clearTimeout(this._tapped),this._tapped=null,this._zoom(t)):this._tapped=setTimeout(function(){e._tapped=null;},300)));},Eo.prototype.onDblClick=function(t){this.isEnabled()&&(t.originalEvent.preventDefault(),this._zoom(t));},Eo.prototype._zoom=function(t){this._active=!0,this._map.on(\"zoomend\",this._onZoomEnd),this._map.zoomTo(this._map.getZoom()+(t.originalEvent.shiftKey?-1:1),{around:t.lngLat},t);},Eo.prototype._onZoomEnd=function(){this._active=!1,this._map.off(\"zoomend\",this._onZoomEnd);};var To=t.bezier(0,0,.15,1),Io=function(e){this._map=e,this._el=e.getCanvasContainer(),t.bindAll([\"_onMove\",\"_onEnd\",\"_onTouchFrame\"],this);};Io.prototype.isEnabled=function(){return !!this._enabled},Io.prototype.enable=function(t){this.isEnabled()||(this._el.classList.add(\"mapboxgl-touch-zoom-rotate\"),this._enabled=!0,this._aroundCenter=!!t&&\"center\"===t.around);},Io.prototype.disable=function(){this.isEnabled()&&(this._el.classList.remove(\"mapboxgl-touch-zoom-rotate\"),this._enabled=!1);},Io.prototype.disableRotation=function(){this._rotationDisabled=!0;},Io.prototype.enableRotation=function(){this._rotationDisabled=!1;},Io.prototype.onStart=function(e){if(this.isEnabled()&&2===e.touches.length){var o=i.mousePos(this._el,e.touches[0]),r=i.mousePos(this._el,e.touches[1]),a=o.add(r).div(2);this._startVec=o.sub(r),this._startAround=this._map.transform.pointLocation(a),this._gestureIntent=void 0,this._inertia=[],i.addEventListener(t.window.document,\"touchmove\",this._onMove,{passive:!1}),i.addEventListener(t.window.document,\"touchend\",this._onEnd);}},Io.prototype._getTouchEventData=function(t){var e=i.mousePos(this._el,t.touches[0]),o=i.mousePos(this._el,t.touches[1]),r=e.sub(o);return {vec:r,center:e.add(o).div(2),scale:r.mag()/this._startVec.mag(),bearing:this._rotationDisabled?0:180*r.angleWith(this._startVec)/Math.PI}},Io.prototype._onMove=function(e){if(2===e.touches.length){var i=this._getTouchEventData(e),o=i.vec,r=i.scale,a=i.bearing;if(!this._gestureIntent){var n=this._rotationDisabled&&1!==r||Math.abs(1-r)>.15;Math.abs(a)>10?this._gestureIntent=\"rotate\":n&&(this._gestureIntent=\"zoom\"),this._gestureIntent&&(this._map.fire(new t.Event(this._gestureIntent+\"start\",{originalEvent:e})),this._map.fire(new t.Event(\"movestart\",{originalEvent:e})),this._startVec=o);}this._lastTouchEvent=e,this._frameId||(this._frameId=this._map._requestRenderFrame(this._onTouchFrame)),e.preventDefault();}},Io.prototype._onTouchFrame=function(){this._frameId=null;var e=this._gestureIntent;if(e){var i=this._map.transform;this._startScale||(this._startScale=i.scale,this._startBearing=i.bearing);var o=this._getTouchEventData(this._lastTouchEvent),r=o.center,a=o.bearing,n=o.scale,s=i.pointLocation(r),l=i.locationPoint(s);\"rotate\"===e&&(i.bearing=this._startBearing+a),i.zoom=i.scaleZoom(this._startScale*n),i.setLocationAtPoint(this._startAround,l),this._map.fire(new t.Event(e,{originalEvent:this._lastTouchEvent})),this._map.fire(new t.Event(\"move\",{originalEvent:this._lastTouchEvent})),this._drainInertiaBuffer(),this._inertia.push([t.browser.now(),n,r]);}},Io.prototype._onEnd=function(e){i.removeEventListener(t.window.document,\"touchmove\",this._onMove,{passive:!1}),i.removeEventListener(t.window.document,\"touchend\",this._onEnd);var o=this._gestureIntent,r=this._startScale;if(this._frameId&&(this._map._cancelRenderFrame(this._frameId),this._frameId=null),delete this._gestureIntent,delete this._startScale,delete this._startBearing,delete this._lastTouchEvent,o){this._map.fire(new t.Event(o+\"end\",{originalEvent:e})),this._drainInertiaBuffer();var a=this._inertia,n=this._map;if(a.length<2)n.snapToNorth({},{originalEvent:e});else{var s=a[a.length-1],l=a[0],c=n.transform.scaleZoom(r*s[1]),u=n.transform.scaleZoom(r*l[1]),h=c-u,p=(s[0]-l[0])/1e3,d=s[2];if(0!==p&&c!==u){var _=.15*h/p;Math.abs(_)>2.5&&(_=_>0?2.5:-2.5);var f=1e3*Math.abs(_/(12*.15)),m=c+_*f/2e3;m<0&&(m=0),n.easeTo({zoom:m,duration:f,easing:To,around:this._aroundCenter?n.getCenter():n.unproject(d),noMoveStart:!0},{originalEvent:e});}else n.snapToNorth({},{originalEvent:e});}}},Io.prototype._drainInertiaBuffer=function(){for(var e=this._inertia,i=t.browser.now();e.length>2&&i-e[0][0]>160;)e.shift();};var Co={scrollZoom:fo,boxZoom:mo,dragRotate:vo,dragPan:xo,keyboard:bo,doubleClickZoom:Eo,touchZoomRotate:Io};var So=function(e){function i(i,o){e.call(this),this._moving=!1,this._zooming=!1,this.transform=i,this._bearingSnap=o.bearingSnap,t.bindAll([\"_renderFrameCallback\"],this);}return e&&(i.__proto__=e),i.prototype=Object.create(e&&e.prototype),i.prototype.constructor=i,i.prototype.getCenter=function(){return this.transform.center},i.prototype.setCenter=function(t,e){return this.jumpTo({center:t},e)},i.prototype.panBy=function(e,i,o){return e=t.Point.convert(e).mult(-1),this.panTo(this.transform.center,t.extend({offset:e},i),o)},i.prototype.panTo=function(e,i,o){return this.easeTo(t.extend({center:e},i),o)},i.prototype.getZoom=function(){return this.transform.zoom},i.prototype.setZoom=function(t,e){return this.jumpTo({zoom:t},e),this},i.prototype.zoomTo=function(e,i,o){return this.easeTo(t.extend({zoom:e},i),o)},i.prototype.zoomIn=function(t,e){return this.zoomTo(this.getZoom()+1,t,e),this},i.prototype.zoomOut=function(t,e){return this.zoomTo(this.getZoom()-1,t,e),this},i.prototype.getBearing=function(){return this.transform.bearing},i.prototype.setBearing=function(t,e){return this.jumpTo({bearing:t},e),this},i.prototype.rotateTo=function(e,i,o){return this.easeTo(t.extend({bearing:e},i),o)},i.prototype.resetNorth=function(e,i){return this.rotateTo(0,t.extend({duration:1e3},e),i),this},i.prototype.snapToNorth=function(t,e){return Math.abs(this.getBearing())e?1:0}),[\"bottom\",\"left\",\"right\",\"top\"])){var n=this.transform,s=n.project(t.LngLat.convert(e)),l=n.project(t.LngLat.convert(i)),c=s.rotate(-o*Math.PI/180),u=l.rotate(-o*Math.PI/180),h=new t.Point(Math.max(c.x,u.x),Math.max(c.y,u.y)),p=new t.Point(Math.min(c.x,u.x),Math.min(c.y,u.y)),d=h.sub(p),_=(n.width-r.padding.left-r.padding.right)/d.x,f=(n.height-r.padding.top-r.padding.bottom)/d.y;if(!(f<0||_<0)){var m=Math.min(n.scaleZoom(n.scale*Math.min(_,f)),r.maxZoom),g=t.Point.convert(r.offset),v=(r.padding.left-r.padding.right)/2,y=(r.padding.top-r.padding.bottom)/2,x=new t.Point(g.x+v,g.y+y).mult(n.scale/n.zoomScale(m));return {center:n.unproject(s.add(l).div(2).sub(x)),zoom:m,bearing:o}}t.warnOnce(\"Map cannot fit within canvas with the given bounds, padding, and/or offset.\");}else t.warnOnce(\"options.padding must be a positive number, or an Object with keys 'bottom', 'left', 'right', 'top'\");},i.prototype.fitBounds=function(t,e,i){return this._fitInternal(this.cameraForBounds(t,e),e,i)},i.prototype.fitScreenCoordinates=function(e,i,o,r,a){return this._fitInternal(this._cameraForBoxAndBearing(this.transform.pointLocation(t.Point.convert(e)),this.transform.pointLocation(t.Point.convert(i)),o,r),r,a)},i.prototype._fitInternal=function(e,i,o){return e?(i=t.extend(e,i)).linear?this.easeTo(i,o):this.flyTo(i,o):this},i.prototype.jumpTo=function(e,i){this.stop();var o=this.transform,r=!1,a=!1,n=!1;return \"zoom\"in e&&o.zoom!==+e.zoom&&(r=!0,o.zoom=+e.zoom),void 0!==e.center&&(o.center=t.LngLat.convert(e.center)),\"bearing\"in e&&o.bearing!==+e.bearing&&(a=!0,o.bearing=+e.bearing),\"pitch\"in e&&o.pitch!==+e.pitch&&(n=!0,o.pitch=+e.pitch),this.fire(new t.Event(\"movestart\",i)).fire(new t.Event(\"move\",i)),r&&this.fire(new t.Event(\"zoomstart\",i)).fire(new t.Event(\"zoom\",i)).fire(new t.Event(\"zoomend\",i)),a&&this.fire(new t.Event(\"rotatestart\",i)).fire(new t.Event(\"rotate\",i)).fire(new t.Event(\"rotateend\",i)),n&&this.fire(new t.Event(\"pitchstart\",i)).fire(new t.Event(\"pitch\",i)).fire(new t.Event(\"pitchend\",i)),this.fire(new t.Event(\"moveend\",i))},i.prototype.easeTo=function(e,i){var o=this;this.stop(),!1===(e=t.extend({offset:[0,0],duration:500,easing:t.ease},e)).animate&&(e.duration=0);var r=this.transform,a=this.getZoom(),n=this.getBearing(),s=this.getPitch(),l=\"zoom\"in e?+e.zoom:a,c=\"bearing\"in e?this._normalizeBearing(e.bearing,n):n,u=\"pitch\"in e?+e.pitch:s,h=r.centerPoint.add(t.Point.convert(e.offset)),p=r.pointLocation(h),d=t.LngLat.convert(e.center||p);this._normalizeCenter(d);var _,f,m=r.project(p),g=r.project(d).sub(m),v=r.zoomScale(l-a);return e.around&&(_=t.LngLat.convert(e.around),f=r.locationPoint(_)),this._zooming=l!==a,this._rotating=n!==c,this._pitching=u!==s,this._prepareEase(i,e.noMoveStart),clearTimeout(this._easeEndTimeoutID),this._ease(function(e){if(o._zooming&&(r.zoom=t.number(a,l,e)),o._rotating&&(r.bearing=t.number(n,c,e)),o._pitching&&(r.pitch=t.number(s,u,e)),_)r.setLocationAtPoint(_,f);else{var p=r.zoomScale(r.zoom-a),d=l>a?Math.min(2,v):Math.max(.5,v),y=Math.pow(d,1-e),x=r.unproject(m.add(g.mult(e*y)).mult(p));r.setLocationAtPoint(r.renderWorldCopies?x.wrap():x,h);}o._fireMoveEvents(i);},function(){e.delayEndEvents?o._easeEndTimeoutID=setTimeout(function(){return o._afterEase(i)},e.delayEndEvents):o._afterEase(i);},e),this},i.prototype._prepareEase=function(e,i){this._moving=!0,i||this.fire(new t.Event(\"movestart\",e)),this._zooming&&this.fire(new t.Event(\"zoomstart\",e)),this._rotating&&this.fire(new t.Event(\"rotatestart\",e)),this._pitching&&this.fire(new t.Event(\"pitchstart\",e));},i.prototype._fireMoveEvents=function(e){this.fire(new t.Event(\"move\",e)),this._zooming&&this.fire(new t.Event(\"zoom\",e)),this._rotating&&this.fire(new t.Event(\"rotate\",e)),this._pitching&&this.fire(new t.Event(\"pitch\",e));},i.prototype._afterEase=function(e){var i=this._zooming,o=this._rotating,r=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,i&&this.fire(new t.Event(\"zoomend\",e)),o&&this.fire(new t.Event(\"rotateend\",e)),r&&this.fire(new t.Event(\"pitchend\",e)),this.fire(new t.Event(\"moveend\",e));},i.prototype.flyTo=function(e,i){var o=this;this.stop(),e=t.extend({offset:[0,0],speed:1.2,curve:1.42,easing:t.ease},e);var r=this.transform,a=this.getZoom(),n=this.getBearing(),s=this.getPitch(),l=\"zoom\"in e?t.clamp(+e.zoom,r.minZoom,r.maxZoom):a,c=\"bearing\"in e?this._normalizeBearing(e.bearing,n):n,u=\"pitch\"in e?+e.pitch:s,h=r.zoomScale(l-a),p=r.centerPoint.add(t.Point.convert(e.offset)),d=r.pointLocation(p),_=t.LngLat.convert(e.center||d);this._normalizeCenter(_);var f=r.project(d),m=r.project(_).sub(f),g=e.curve,v=Math.max(r.width,r.height),y=v/h,x=m.mag();if(\"minZoom\"in e){var b=t.clamp(Math.min(e.minZoom,a,l),r.minZoom,r.maxZoom),w=v/r.zoomScale(b-a);g=Math.sqrt(w/x*2);}var E=g*g;function T(t){var e=(y*y-v*v+(t?-1:1)*E*E*x*x)/(2*(t?y:v)*E*x);return Math.log(Math.sqrt(e*e+1)-e)}function I(t){return (Math.exp(t)-Math.exp(-t))/2}function C(t){return (Math.exp(t)+Math.exp(-t))/2}var S=T(0),z=function(t){return C(S)/C(S+g*t)},L=function(t){return v*((C(S)*(I(e=S+g*t)/C(e))-I(S))/E)/x;var e;},P=(T(1)-S)/g;if(Math.abs(x)<1e-6||!isFinite(P)){if(Math.abs(v-y)<1e-6)return this.easeTo(e,i);var D=ye.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=n!==c,this._pitching=u!==s,this._prepareEase(i,!1),this._ease(function(e){var h=e*P,d=1/z(h);r.zoom=1===e?l:a+r.scaleZoom(d),o._rotating&&(r.bearing=t.number(n,c,e)),o._pitching&&(r.pitch=t.number(s,u,e));var g=1===e?_:r.unproject(f.add(m.mult(L(h))).mult(d));r.setLocationAtPoint(r.renderWorldCopies?g.wrap():g,p),o._fireMoveEvents(i);},function(){return o._afterEase(i)},e),this},i.prototype.isEasing=function(){return !!this._easeFrameId},i.prototype.stop=function(){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var t=this._onEaseEnd;delete this._onEaseEnd,t.call(this);}return this},i.prototype._ease=function(e,i,o){!1===o.animate||0===o.duration?(e(1),i()):(this._easeStart=t.browser.now(),this._easeOptions=o,this._onEaseFrame=e,this._onEaseEnd=i,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback));},i.prototype._renderFrameCallback=function(){var e=Math.min((t.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop();},i.prototype._normalizeBearing=function(e,i){e=t.wrap(e,-180,180);var o=Math.abs(e-i);return Math.abs(e-360-i)180?-360:i<-180?360:0;}},i}(t.Evented),zo=function(e){void 0===e&&(e={}),this.options=e,t.bindAll([\"_updateEditLink\",\"_updateData\",\"_updateCompact\"],this);};zo.prototype.getDefaultPosition=function(){return \"bottom-right\"},zo.prototype.onAdd=function(t){var e=this.options&&this.options.compact;return this._map=t,this._container=i.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-attrib\"),this._innerContainer=i.create(\"div\",\"mapboxgl-ctrl-attrib-inner\",this._container),e&&this._container.classList.add(\"mapboxgl-compact\"),this._updateAttributions(),this._updateEditLink(),this._map.on(\"styledata\",this._updateData),this._map.on(\"sourcedata\",this._updateData),this._map.on(\"moveend\",this._updateEditLink),void 0===e&&(this._map.on(\"resize\",this._updateCompact),this._updateCompact()),this._container},zo.prototype.onRemove=function(){i.remove(this._container),this._map.off(\"styledata\",this._updateData),this._map.off(\"sourcedata\",this._updateData),this._map.off(\"moveend\",this._updateEditLink),this._map.off(\"resize\",this._updateCompact),this._map=void 0;},zo.prototype._updateEditLink=function(){var e=this._editLink;e||(e=this._editLink=this._container.querySelector(\".mapbox-improve-map\"));var i=[{key:\"owner\",value:this.styleOwner},{key:\"id\",value:this.styleId},{key:\"access_token\",value:t.config.ACCESS_TOKEN}];if(e){var o=i.reduce(function(t,e,o){return e.value&&(t+=e.key+\"=\"+e.value+(o=0)return !1;return !0})).length?(this._innerContainer.innerHTML=t.join(\" | \"),this._container.classList.remove(\"mapboxgl-attrib-empty\")):this._container.classList.add(\"mapboxgl-attrib-empty\"),this._editLink=null;}},zo.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add(\"mapboxgl-compact\"):this._container.classList.remove(\"mapboxgl-compact\");};var Lo=function(){t.bindAll([\"_updateLogo\"],this),t.bindAll([\"_updateCompact\"],this);};Lo.prototype.onAdd=function(t){this._map=t,this._container=i.create(\"div\",\"mapboxgl-ctrl\");var e=i.create(\"a\",\"mapboxgl-ctrl-logo\");return e.target=\"_blank\",e.href=\"https://www.mapbox.com/\",e.setAttribute(\"aria-label\",\"Mapbox logo\"),e.setAttribute(\"rel\",\"noopener\"),this._container.appendChild(e),this._container.style.display=\"none\",this._map.on(\"sourcedata\",this._updateLogo),this._updateLogo(),this._map.on(\"resize\",this._updateCompact),this._updateCompact(),this._container},Lo.prototype.onRemove=function(){i.remove(this._container),this._map.off(\"sourcedata\",this._updateLogo),this._map.off(\"resize\",this._updateCompact);},Lo.prototype.getDefaultPosition=function(){return \"bottom-left\"},Lo.prototype._updateLogo=function(t){t&&\"metadata\"!==t.sourceDataType||(this._container.style.display=this._logoRequired()?\"block\":\"none\");},Lo.prototype._logoRequired=function(){if(this._map.style){var t=this._map.style.sourceCaches;for(var e in t){if(t[e].getSource().mapbox_logo)return !0}return !1}},Lo.prototype._updateCompact=function(){var t=this._container.children;if(t.length){var e=t[0];this._map.getCanvasContainer().offsetWidth<250?e.classList.add(\"mapboxgl-compact\"):e.classList.remove(\"mapboxgl-compact\");}};var Po=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1;};Po.prototype.add=function(t){var e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e},Po.prototype.remove=function(t){for(var e=this._currentlyRunning,i=0,o=e?this._queue.concat(e):this._queue;ie.maxZoom)throw new Error(\"maxZoom must be greater than minZoom\");var a=new lo(e.minZoom,e.maxZoom,e.renderWorldCopies);o.call(this,a,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossSourceCollisions=e.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new Po,this._controls=[],this._mapId=t.uniqueId();var n=e.transformRequest;if(this._transformRequest=n?function(t,e){return n(t,e)||{url:t}}:function(t){return {url:t}},\"string\"==typeof e.container){if(this._container=t.window.document.getElementById(e.container),!this._container)throw new Error(\"Container '\"+e.container+\"' not found.\")}else{if(!(e.container instanceof Ro))throw new Error(\"Invalid type: 'container' must be a String or HTMLElement.\");this._container=e.container;}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),t.bindAll([\"_onWindowOnline\",\"_onWindowResize\",\"_contextLost\",\"_contextRestored\"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error(\"Failed to initialize WebGL.\");this.on(\"move\",function(){return r._update(!1)}),this.on(\"moveend\",function(){return r._update(!1)}),this.on(\"zoom\",function(){return r._update(!0)}),void 0!==t.window&&(t.window.addEventListener(\"online\",this._onWindowOnline,!1),t.window.addEventListener(\"resize\",this._onWindowResize,!1)),function(t,e){var o=t.getCanvasContainer(),r=null,a=!1,n=null;for(var s in Co)t[s]=new Co[s](t,e),e.interactive&&e[s]&&t[s].enable(e[s]);i.addEventListener(o,\"mouseout\",function(e){t.fire(new ho(\"mouseout\",t,e));}),i.addEventListener(o,\"mousedown\",function(r){a=!0,n=i.mousePos(o,r);var s=new ho(\"mousedown\",t,r);t.fire(s),s.defaultPrevented||(e.interactive&&!t.doubleClickZoom.isActive()&&t.stop(),t.boxZoom.onMouseDown(r),t.boxZoom.isActive()||t.dragPan.isActive()||t.dragRotate.onMouseDown(r),t.boxZoom.isActive()||t.dragRotate.isActive()||t.dragPan.onMouseDown(r));}),i.addEventListener(o,\"mouseup\",function(e){var i=t.dragRotate.isActive();r&&!i&&t.fire(new ho(\"contextmenu\",t,r)),r=null,a=!1,t.fire(new ho(\"mouseup\",t,e));}),i.addEventListener(o,\"mousemove\",function(e){if(!t.dragPan.isActive()&&!t.dragRotate.isActive()){for(var i=e.target;i&&i!==o;)i=i.parentNode;i===o&&t.fire(new ho(\"mousemove\",t,e));}}),i.addEventListener(o,\"mouseover\",function(e){for(var i=e.target;i&&i!==o;)i=i.parentNode;i===o&&t.fire(new ho(\"mouseover\",t,e));}),i.addEventListener(o,\"touchstart\",function(i){var o=new po(\"touchstart\",t,i);t.fire(o),o.defaultPrevented||(e.interactive&&t.stop(),t.boxZoom.isActive()||t.dragRotate.isActive()||t.dragPan.onTouchStart(i),t.touchZoomRotate.onStart(i),t.doubleClickZoom.onTouchStart(o));},{passive:!1}),i.addEventListener(o,\"touchmove\",function(e){t.fire(new po(\"touchmove\",t,e));},{passive:!1}),i.addEventListener(o,\"touchend\",function(e){t.fire(new po(\"touchend\",t,e));}),i.addEventListener(o,\"touchcancel\",function(e){t.fire(new po(\"touchcancel\",t,e));}),i.addEventListener(o,\"click\",function(r){var a=i.mousePos(o,r);(a.equals(n)||a.dist(n)-1&&this._controls.splice(i,1),e.onRemove(this),this},r.prototype.resize=function(e){var i=this._containerDimensions(),o=i[0],r=i[1];return this._resizeCanvas(o,r),this.transform.resize(o,r),this.painter.resize(o,r),this.fire(new t.Event(\"movestart\",e)).fire(new t.Event(\"move\",e)).fire(new t.Event(\"resize\",e)).fire(new t.Event(\"moveend\",e)),this},r.prototype.getBounds=function(){return this.transform.getBounds()},r.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},r.prototype.setMaxBounds=function(e){return this.transform.setMaxBounds(t.LngLatBounds.convert(e)),this._update()},r.prototype.setMinZoom=function(t){if((t=null==t?0:t)>=0&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error(\"maxZoom must be greater than the current minZoom\")},r.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},r.prototype.setRenderWorldCopies=function(t){return this.transform.renderWorldCopies=t,this._update()},r.prototype.getMaxZoom=function(){return this.transform.maxZoom},r.prototype.project=function(e){return this.transform.locationPoint(t.LngLat.convert(e))},r.prototype.unproject=function(e){return this.transform.pointLocation(t.Point.convert(e))},r.prototype.isMoving=function(){return this._moving||this.dragPan.isActive()||this.dragRotate.isActive()||this.scrollZoom.isActive()},r.prototype.isZooming=function(){return this._zooming||this.scrollZoom.isZooming()},r.prototype.isRotating=function(){return this._rotating||this.dragRotate.isActive()},r.prototype.on=function(t,e,i){var r=this;if(void 0===i)return o.prototype.on.call(this,t,e);var a=function(){var o;if(\"mouseenter\"===t||\"mouseover\"===t){var a=!1;return {layer:e,listener:i,delegates:{mousemove:function(o){var n=r.getLayer(e)?r.queryRenderedFeatures(o.point,{layers:[e]}):[];n.length?a||(a=!0,i.call(r,new ho(t,r,o.originalEvent,{features:n}))):a=!1;},mouseout:function(){a=!1;}}}}if(\"mouseleave\"===t||\"mouseout\"===t){var n=!1;return {layer:e,listener:i,delegates:{mousemove:function(o){(r.getLayer(e)?r.queryRenderedFeatures(o.point,{layers:[e]}):[]).length?n=!0:n&&(n=!1,i.call(r,new ho(t,r,o.originalEvent)));},mouseout:function(e){n&&(n=!1,i.call(r,new ho(t,r,e.originalEvent)));}}}}return {layer:e,listener:i,delegates:(o={},o[t]=function(t){var o=r.getLayer(e)?r.queryRenderedFeatures(t.point,{layers:[e]}):[];o.length&&(t.features=o,i.call(r,t),delete t.features);},o)}}();for(var n in this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(a),a.delegates)this.on(n,a.delegates[n]);return this},r.prototype.off=function(t,e,i){if(void 0===i)return o.prototype.off.call(this,t,e);if(this._delegatedListeners&&this._delegatedListeners[t])for(var r=this._delegatedListeners[t],a=0;a180;){var s=o.locationPoint(e);if(s.x>=0&&s.y>=0&&s.x<=o.width&&s.y<=o.height)break;e.lng>o.center.lng?e.lng-=360:e.lng+=360;}return e}Oo.prototype._rotateCompassArrow=function(){var t=\"rotate(\"+this._map.transform.angle*(180/Math.PI)+\"deg)\";this._compassArrow.style.transform=t;},Oo.prototype.onAdd=function(t){return this._map=t,this.options.showCompass&&(this._map.on(\"rotate\",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new vo(t,{button:\"left\",element:this._compass}),i.addEventListener(this._compass,\"mousedown\",this._handler.onMouseDown),this._handler.enable()),this._container},Oo.prototype.onRemove=function(){i.remove(this._container),this.options.showCompass&&(this._map.off(\"rotate\",this._rotateCompassArrow),i.removeEventListener(this._compass,\"mousedown\",this._handler.onMouseDown),this._handler.disable(),delete this._handler),delete this._map;},Oo.prototype._createButton=function(t,e,o){var r=i.create(\"button\",t,this._container);return r.type=\"button\",r.title=e,r.setAttribute(\"aria-label\",e),r.addEventListener(\"click\",o),r};var Uo={center:\"translate(-50%,-50%)\",top:\"translate(-50%,0)\",\"top-left\":\"translate(0,0)\",\"top-right\":\"translate(-100%,0)\",bottom:\"translate(-50%,-100%)\",\"bottom-left\":\"translate(0,-100%)\",\"bottom-right\":\"translate(-100%,-100%)\",left:\"translate(0,-50%)\",right:\"translate(-100%,-50%)\"};function No(t,e,i){var o=t.classList;for(var r in Uo)o.remove(\"mapboxgl-\"+i+\"-anchor-\"+r);o.add(\"mapboxgl-\"+i+\"-anchor-\"+e);}var Zo,jo=function(e){function o(o,r){if(e.call(this),(o instanceof t.window.HTMLElement||r)&&(o=t.extend({element:o},r)),t.bindAll([\"_update\",\"_onMove\",\"_onUp\",\"_addDragHandler\",\"_onMapClick\"],this),this._anchor=o&&o.anchor||\"center\",this._color=o&&o.color||\"#3FB1CE\",this._draggable=o&&o.draggable||!1,this._state=\"inactive\",o&&o.element)this._element=o.element,this._offset=t.Point.convert(o&&o.offset||[0,0]);else{this._defaultMarker=!0,this._element=i.create(\"div\");var a=i.createNS(\"http://www.w3.org/2000/svg\",\"svg\");a.setAttributeNS(null,\"height\",\"41px\"),a.setAttributeNS(null,\"width\",\"27px\"),a.setAttributeNS(null,\"viewBox\",\"0 0 27 41\");var n=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");n.setAttributeNS(null,\"stroke\",\"none\"),n.setAttributeNS(null,\"stroke-width\",\"1\"),n.setAttributeNS(null,\"fill\",\"none\"),n.setAttributeNS(null,\"fill-rule\",\"evenodd\");var s=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");s.setAttributeNS(null,\"fill-rule\",\"nonzero\");var l=i.createNS(\"http://www.w3.org/2000/svg\",\"g\");l.setAttributeNS(null,\"transform\",\"translate(3.0, 29.0)\"),l.setAttributeNS(null,\"fill\",\"#000000\");for(var c=0,u=[{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"10.5\",ry:\"5.25002273\"},{rx:\"9.5\",ry:\"4.77275007\"},{rx:\"8.5\",ry:\"4.29549936\"},{rx:\"7.5\",ry:\"3.81822308\"},{rx:\"6.5\",ry:\"3.34094679\"},{rx:\"5.5\",ry:\"2.86367051\"},{rx:\"4.5\",ry:\"2.38636864\"}];c5280)Ho(e,c,p/5280,\"mi\");else Ho(e,c,p,\"ft\");}else if(i&&\"nautical\"===i.unit){Ho(e,c,h/1852,\"nm\");}else Ho(e,c,h,\"m\");}function Ho(t,e,i,o){var r,a,n,s=(r=i,a=Math.pow(10,(\"\"+Math.floor(r)).length-1),n=(n=r/a)>=10?10:n>=5?5:n>=3?3:n>=2?2:n>=1?1:function(t){var e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(n),a*n),l=s/i;\"m\"===o&&s>=1e3&&(s/=1e3,o=\"km\"),t.style.width=e*l+\"px\",t.innerHTML=s+o;}Wo.prototype.getDefaultPosition=function(){return \"bottom-left\"},Wo.prototype._onMove=function(){Xo(this._map,this._container,this.options);},Wo.prototype.onAdd=function(t){return this._map=t,this._container=i.create(\"div\",\"mapboxgl-ctrl mapboxgl-ctrl-scale\",t.getContainer()),this._map.on(\"move\",this._onMove),this._onMove(),this._container},Wo.prototype.onRemove=function(){i.remove(this._container),this._map.off(\"move\",this._onMove),this._map=void 0;},Wo.prototype.setUnit=function(t){this.options.unit=t,Xo(this._map,this._container,this.options);};var Ko=function(e){this._fullscreen=!1,e&&e.container&&(e.container instanceof t.window.HTMLElement?this._container=e.container:t.warnOnce(\"Full screen control 'container' must be a DOM element.\")),t.bindAll([\"_onClickFullscreen\",\"_changeIcon\"],this),\"onfullscreenchange\"in t.window.document?this._fullscreenchange=\"fullscreenchange\":\"onmozfullscreenchange\"in t.window.document?this._fullscreenchange=\"mozfullscreenchange\":\"onwebkitfullscreenchange\"in t.window.document?this._fullscreenchange=\"webkitfullscreenchange\":\"onmsfullscreenchange\"in t.window.document&&(this._fullscreenchange=\"MSFullscreenChange\"),this._className=\"mapboxgl-ctrl\";};Ko.prototype.onAdd=function(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=i.create(\"div\",this._className+\" mapboxgl-ctrl-group\"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display=\"none\",t.warnOnce(\"This device does not support fullscreen mode.\")),this._controlContainer},Ko.prototype.onRemove=function(){i.remove(this._controlContainer),this._map=null,t.window.document.removeEventListener(this._fullscreenchange,this._changeIcon);},Ko.prototype._checkFullscreenSupport=function(){return !!(t.window.document.fullscreenEnabled||t.window.document.mozFullScreenEnabled||t.window.document.msFullscreenEnabled||t.window.document.webkitFullscreenEnabled)},Ko.prototype._setupUI=function(){var e=this._fullscreenButton=i.create(\"button\",this._className+\"-icon \"+this._className+\"-fullscreen\",this._controlContainer);e.setAttribute(\"aria-label\",\"Toggle fullscreen\"),e.type=\"button\",this._fullscreenButton.addEventListener(\"click\",this._onClickFullscreen),t.window.document.addEventListener(this._fullscreenchange,this._changeIcon);},Ko.prototype._isFullscreen=function(){return this._fullscreen},Ko.prototype._changeIcon=function(){(t.window.document.fullscreenElement||t.window.document.mozFullScreenElement||t.window.document.webkitFullscreenElement||t.window.document.msFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(this._className+\"-shrink\"),this._fullscreenButton.classList.toggle(this._className+\"-fullscreen\"));},Ko.prototype._onClickFullscreen=function(){this._isFullscreen()?t.window.document.exitFullscreen?t.window.document.exitFullscreen():t.window.document.mozCancelFullScreen?t.window.document.mozCancelFullScreen():t.window.document.msExitFullscreen?t.window.document.msExitFullscreen():t.window.document.webkitCancelFullScreen&&t.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen();};var Yo={closeButton:!0,closeOnClick:!0,className:\"\"},Jo=function(e){function o(i){e.call(this),this.options=t.extend(Object.create(Yo),i),t.bindAll([\"_update\",\"_onClickClose\",\"remove\"],this);}return e&&(o.__proto__=e),o.prototype=Object.create(e&&e.prototype),o.prototype.constructor=o,o.prototype.addTo=function(e){return this._map=e,this._map.on(\"move\",this._update),this.options.closeOnClick&&this._map.on(\"click\",this._onClickClose),this._map.on(\"remove\",this.remove),this._update(),this.fire(new t.Event(\"open\")),this},o.prototype.isOpen=function(){return !!this._map},o.prototype.remove=function(){return this._content&&i.remove(this._content),this._container&&(i.remove(this._container),delete this._container),this._map&&(this._map.off(\"move\",this._update),this._map.off(\"click\",this._onClickClose),this._map.off(\"remove\",this.remove),delete this._map),this.fire(new t.Event(\"close\")),this},o.prototype.getLngLat=function(){return this._lngLat},o.prototype.setLngLat=function(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._update(),this},o.prototype.setText=function(e){return this.setDOMContent(t.window.document.createTextNode(e))},o.prototype.setHTML=function(e){var i,o=t.window.document.createDocumentFragment(),r=t.window.document.createElement(\"body\");for(r.innerHTML=e;i=r.firstChild;)o.appendChild(i);return this.setDOMContent(o)},o.prototype.setDOMContent=function(t){return this._createContent(),this._content.appendChild(t),this._update(),this},o.prototype._createContent=function(){this._content&&i.remove(this._content),this._content=i.create(\"div\",\"mapboxgl-popup-content\",this._container),this.options.closeButton&&(this._closeButton=i.create(\"button\",\"mapboxgl-popup-close-button\",this._content),this._closeButton.type=\"button\",this._closeButton.setAttribute(\"aria-label\",\"Close popup\"),this._closeButton.innerHTML=\"×\",this._closeButton.addEventListener(\"click\",this._onClickClose));},o.prototype._update=function(){var e=this;if(this._map&&this._lngLat&&this._content){this._container||(this._container=i.create(\"div\",\"mapboxgl-popup\",this._map.getContainer()),this._tip=i.create(\"div\",\"mapboxgl-popup-tip\",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(\" \").forEach(function(t){return e._container.classList.add(t)})),this._map.transform.renderWorldCopies&&(this._lngLat=Fo(this._lngLat,this._pos,this._map.transform));var o=this._pos=this._map.project(this._lngLat),r=this.options.anchor,a=function e(i){if(i){if(\"number\"==typeof i){var o=Math.round(Math.sqrt(.5*Math.pow(i,2)));return {center:new t.Point(0,0),top:new t.Point(0,i),\"top-left\":new t.Point(o,o),\"top-right\":new t.Point(-o,o),bottom:new t.Point(0,-i),\"bottom-left\":new t.Point(o,-o),\"bottom-right\":new t.Point(-o,-o),left:new t.Point(i,0),right:new t.Point(-i,0)}}if(i instanceof t.Point||Array.isArray(i)){var r=t.Point.convert(i);return {center:r,top:r,\"top-left\":r,\"top-right\":r,bottom:r,\"bottom-left\":r,\"bottom-right\":r,left:r,right:r}}return {center:t.Point.convert(i.center||[0,0]),top:t.Point.convert(i.top||[0,0]),\"top-left\":t.Point.convert(i[\"top-left\"]||[0,0]),\"top-right\":t.Point.convert(i[\"top-right\"]||[0,0]),bottom:t.Point.convert(i.bottom||[0,0]),\"bottom-left\":t.Point.convert(i[\"bottom-left\"]||[0,0]),\"bottom-right\":t.Point.convert(i[\"bottom-right\"]||[0,0]),left:t.Point.convert(i.left||[0,0]),right:t.Point.convert(i.right||[0,0])}}return e(new t.Point(0,0))}(this.options.offset);if(!r){var n,s=this._container.offsetWidth,l=this._container.offsetHeight;n=o.y+a.bottom.ythis._map.transform.height-l?[\"bottom\"]:[],o.xthis._map.transform.width-s/2&&n.push(\"right\"),r=0===n.length?\"bottom\":n.join(\"-\");}var c=o.add(a[r]).round();i.setTransform(this._container,Uo[r]+\" translate(\"+c.x+\"px,\"+c.y+\"px)\"),No(this._container,r,\"popup\");}},o.prototype._onClickClose=function(){this.remove();},o}(t.Evented);var Qo={version:t.version,supported:e,setRTLTextPlugin:t.setRTLTextPlugin,Map:Ao,NavigationControl:Oo,GeolocateControl:qo,AttributionControl:zo,ScaleControl:Wo,FullscreenControl:Ko,Popup:Jo,Marker:jo,Style:Me,LngLat:t.LngLat,LngLatBounds:t.LngLatBounds,Point:t.Point,MercatorCoordinate:t.MercatorCoordinate,Evented:t.Evented,config:t.config,get accessToken(){return t.config.ACCESS_TOKEN},set accessToken(e){t.config.ACCESS_TOKEN=e;},get baseApiUrl(){return t.config.API_URL},set baseApiUrl(e){t.config.API_URL=e;},get workerCount(){return Pt.workerCount},set workerCount(t){Pt.workerCount=t;},get maxParallelImageRequests(){return t.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(e){t.config.MAX_PARALLEL_IMAGE_REQUESTS=e;},workerUrl:\"\"};return Qo});\n\n//\n\nreturn mapboxgl;\n\n}));\n//# sourceMappingURL=mapbox-gl.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/mapbox-gl/dist/mapbox-gl.js\n// module id = 118\n// module chunks = 0","module.exports = \"(function(){var Module={TOTAL_MEMORY:8*1024*1024,TOTAL_STACK:2*1024*1024,preRun:[],postRun:[],print:function(text){console.log(text)},printErr:function(text){text=Array.prototype.slice.call(arguments).join(\\\" \\\");if(text.indexOf(\\\"pre-main prep time\\\")>=0){return}console.error(text)}};var b;b||(b=eval(\\\"(function() { try { return Module || {} } catch(e) { return {} } })()\\\"));var g={},k;for(k in b)b.hasOwnProperty(k)&&(g[k]=b[k]);var n=!1,p=!1,r=!1,u=!1;if(b.ENVIRONMENT)if(\\\"WEB\\\"===b.ENVIRONMENT)n=!0;else if(\\\"WORKER\\\"===b.ENVIRONMENT)p=!0;else if(\\\"NODE\\\"===b.ENVIRONMENT)r=!0;else if(\\\"SHELL\\\"===b.ENVIRONMENT)u=!0;else throw Error(\\\"The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.\\\");else n=\\\"object\\\"===typeof window,p=\\\"function\\\"===typeof importScripts,r=\\\"object\\\"===typeof process&&\\\"function\\\"===typeof require&&!n&&!p,u=!n&&!r&&!p;if(r){b.print||(b.print=console.log);b.printErr||(b.printErr=console.warn);var v,x;b.read=function(a,c){v||(v=require(\\\"fs\\\"));x||(x=require(\\\"path\\\"));a=x.normalize(a);var d=v.readFileSync(a);return c?d:d.toString()};b.readBinary=function(a){a=b.read(a,!0);a.buffer||(a=new Uint8Array(a));return a};b.load=function(a){aa(read(a))};b.thisProgram||(b.thisProgram=1 0) var gc = undefined\\\");else if(n||p)b.read=function(a){var c=new XMLHttpRequest;c.open(\\\"GET\\\",a,!1);c.send(null);return c.responseText},p&&(b.readBinary=function(a){var c=new XMLHttpRequest;c.open(\\\"GET\\\",a,!1);c.responseType=\\\"arraybuffer\\\";c.send(null);return c.response}),b.readAsync=function(a,c,d){var e=new XMLHttpRequest;e.open(\\\"GET\\\",a,!0);e.responseType=\\\"arraybuffer\\\";e.onload=function(){200==e.status||0==e.status&&e.response?c(e.response):d()};e.onerror=d;e.send(null)},\\\"undefined\\\"!=typeof arguments&&(b.arguments=arguments),\\\"undefined\\\"!==typeof console?(b.print||(b.print=function(a){console.log(a)}),b.printErr||(b.printErr=function(a){console.warn(a)})):b.print||(b.print=function(){}),p&&(b.load=importScripts),\\\"undefined\\\"===typeof b.setWindowTitle&&(b.setWindowTitle=function(a){document.title=a});else throw\\\"Unknown runtime environment. Where are we?\\\";function aa(a){eval.call(null,a)}!b.load&&b.read&&(b.load=function(a){aa(b.read(a))});b.print||(b.print=function(){});b.printErr||(b.printErr=b.print);b.arguments||(b.arguments=[]);b.thisProgram||(b.thisProgram=\\\"./this.program\\\");b.quit||(b.quit=function(a,c){throw c});b.print=b.print;b.e=b.printErr;b.preRun=[];b.postRun=[];for(k in g)g.hasOwnProperty(k)&&(b[k]=g[k]);var g=void 0,A={b:function(a){return tempRet0=a},w:function(){return tempRet0},m:function(){return z},g:function(a){z=a},p:function(a){switch(a){case\\\"i1\\\":case\\\"i8\\\":return 1;case\\\"i16\\\":return 2;case\\\"i32\\\":return 4;case\\\"i64\\\":return 8;case\\\"float\\\":return 4;case\\\"double\\\":return 8;default:return\\\"*\\\"===a[a.length-1]?A.h:\\\"i\\\"===a[0]?(a=parseInt(a.substr(1)),assert_em(0===a%8),a/8):0}},v:function(a){return Math.max(A.p(a),A.h)},B:16,Q:function(a,c){\\\"double\\\"===c||\\\"i64\\\"===c?a&7&&(assert_em(4===(a&7)),a+=4):assert_em(0===(a&3));return a},K:function(a,c,d){return d||\\\"i64\\\"!=a&&\\\"double\\\"!=a?a?Math.min(c||(a?A.v(a):0),A.h):Math.min(c,8):8},j:function(a,c,d){return d&&d.length?b[\\\"dynCall_\\\"+a].apply(null,[c].concat(d)):b[\\\"dynCall_\\\"+a].call(null,c)},d:[],r:function(a){for(var c=0;c>2];a=(c+a+15|0)&-16;C[E>>2]=a;return a>=F&&!ba()?(C[E>>2]=c,0):c},o:function(a,c){return Math.ceil(a/(c?c:16))*(c?c:16)},P:function(a,c,d){return d?+(a>>>0)+4294967296*+(c>>>0):+(a>>>0)+4294967296*+(c|0)},a:8,h:4,C:0};A.addFunction=A.r;A.removeFunction=A.A;var G=0;function assert_em(a,c){a||H(\\\"Assertion failed: \\\"+c)}function ca(a){var c=b[\\\"_\\\"+a];if(!c)try{c=eval(\\\"_\\\"+a)}catch(d){}return c}var da;(function(){var a={stackSave:function(){A.m()},stackRestore:function(){A.g()},arrayToC:function(a){var c=A.f(a.length);I.set(a,c);return c},stringToC:function(a){var c=0;if(null!==a&&void 0!==a&&0!==a){var f=(a.length<<2)+1,c=A.f(f);J(a,K,c,f)}return c}},c={string:a.stringToC,array:a.arrayToC};da=function(a,e,f,h,l){a=ca(a);var m=[],t=0;if(h)for(var w=0;w>0];case\\\"i8\\\":return I[a>>0];case\\\"i16\\\":return L[a>>1];case\\\"i32\\\":return C[a>>2];case\\\"i64\\\":return C[a>>2];case\\\"float\\\":return M[a>>2];case\\\"double\\\":return N[a>>3];default:H(\\\"invalid type for setValue: \\\"+c)}return null}function O(a,c,d,e){var f,h;\\\"number\\\"===typeof a?(f=!0,h=a):(f=!1,h=a.length);var l=\\\"string\\\"===typeof c?c:null,m;4==d?m=e:m=[\\\"function\\\"===typeof P?P:A.q,A.f,A.q,A.u][void 0===d?2:d](Math.max(h,l?1:c.length));if(f){e=m;for(a=m+(h&-4);e>2]=0;for(a=m+h;e>0]=0;return m}if(\\\"i8\\\"===l)return a.subarray||a.slice?K.set(a,m):K.set(new Uint8Array(a),m),m;e=0;for(var t,w;e>0]=q;break;case\\\"i8\\\":I[f>>0]=q;break;case\\\"i16\\\":L[f>>1]=q;break;case\\\"i32\\\":C[f>>2]=q;break;case\\\"i64\\\":tempI64=[q>>>0,(tempDouble=q,1<=+ga(tempDouble)?0>>0:~~+ja((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)];C[f>>2]=tempI64[0];C[f+4>>2]=tempI64[1];break;case\\\"float\\\":M[f>>2]=q;break;case\\\"double\\\":N[f>>3]=q;break;default:H(\\\"invalid type for setValue: \\\"+D)}w!==d&&(t=A.p(d),w=d);e+=t}}return m}function ea(a){var c;if(0===c||!a)return\\\"\\\";for(var d=0,e,f=0;;){e=K[a+f>>0];d|=e;if(0==e&&!c)break;f++;if(c&&f==c)break}c||(c=f);e=\\\"\\\";if(128>d){for(;0=h&&(h=65536+((h&1023)<<10)|a.charCodeAt(++f)&1023);if(127>=h){if(d>=e)break;c[d++]=h}else{if(2047>=h){if(d+1>=e)break;c[d++]=192|h>>6}else{if(65535>=h){if(d+2>=e)break;c[d++]=224|h>>12}else{if(2097151>=h){if(d+3>=e)break;c[d++]=240|h>>18}else{if(67108863>=h){if(d+4>=e)break;c[d++]=248|h>>24}else{if(d+5>=e)break;c[d++]=252|h>>30;c[d++]=128|h>>24&63}c[d++]=128|h>>18&63}c[d++]=128|h>>12&63}c[d++]=128|h>>6&63}c[d++]=128|h&63}}c[d]=0}}function ka(a){for(var c=0,d=0;d=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++c:c=2047>=e?c+2:65535>=e?c+3:2097151>=e?c+4:67108863>=e?c+5:c+6}return c}var la=\\\"undefined\\\"!==typeof TextDecoder?new TextDecoder(\\\"utf-16le\\\"):void 0;b.UTF16ToString=function(a){var c;for(c=a>>1;L[c];)++c;c<<=1;if(32>1];if(0==e)return d;++c;d+=String.fromCharCode(e)}};b.stringToUTF16=function(a,c,d){void 0===d&&(d=2147483647);if(2>d)return 0;d-=2;var e=c;d=d<2*a.length?d/2:a.length;for(var f=0;f>1]=a.charCodeAt(f),c+=2;L[c>>1]=0;return c-e};function ma(a){return a.replace(/__Z[\\\\w\\\\d_]+/g,function(a){var d;a:{var e=b.___cxa_demangle||b.__cxa_demangle;if(e)try{var f=a.substr(1),h=ka(f)+1,l=P(h);J(f,K,l,h);var m=P(4),t=e(l,0,0,m);if(0===fa(m)&&t){d=ea(t);break a}}catch(w){}finally{l&&Q(l),m&&Q(m),t&&Q(t)}else A.c(\\\"warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling\\\");d=a}return a===d?a:a+\\\" [\\\"+d+\\\"]\\\"})}function na(){var a;a:{a=Error();if(!a.stack){try{throw Error(0)}catch(c){a=c}if(!a.stack){a=\\\"(no stack trace available)\\\";break a}}a=a.stack.toString()}b.extraStackTrace&&(a+=\\\"\\\\n\\\"+b.extraStackTrace());return ma(a)}var oa=65536,pa=16777216,qa=16777216;function ra(a,c){0>2]>c)return!1;for(F=Math.max(F,qa);F>2];)536870912>=F?F=ra(2*F,a):F=Math.min(ra((3*F+2147483648)/4,a),c);a=b.reallocBuffer(F);if(!a||a.byteLength!=F)return!1;b.buffer=buffer=a;ua();return!0}var V;try{V=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,\\\"byteLength\\\").get),V(new ArrayBuffer(4))}catch(wa){V=function(a){return a.byteLength}}var xa=b.TOTAL_STACK||5242880,F=b.TOTAL_MEMORY||16777216;F>>16)*e+d*(c>>>16)<<16)|0});Math.O=Math.imul;Math.clz32||(Math.clz32=function(a){a=a>>>0;for(var c=0;32>c;c++)if(a&1<<31-c)return c;return 32});Math.H=Math.clz32;Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)});Math.trunc=Math.trunc;var ga=Math.abs,ja=Math.ceil,ia=Math.floor,ha=Math.min;b.preloadedImages={};b.preloadedAudios={};R=A.a;B=R+69472;za.push()\\n;O([20,3,0,0,159,12,1,0,24,0,0,0,0,0,0,0,20,3,0,0,76,12,1,0,40,0,0,0,0,0,0,0,236,2,0,0,109,12,1,0,20,3,0,0,122,12,1,0,8,0,0,0,0,0,0,0,20,3,0,0,229,12,1,0,24,0,0,0,0,0,0,0,20,3,0,0,193,12,1,0,64,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,89,7,1,0,20,7,1,0,76,7,1,0,83,7,1,0,200,5,1,0,176,6,1,0,195,5,1,0,232,6,1,0,236,6,1,0,20,7,1,0,76,7,1,0,83,7,1,0,107,5,1,0,176,6,1,0,195,5,1,0,232,6,1,0,80,6,1,0,128,6,1,0,195,5,1,0,195,5,1,0,248,5,1,0,40,6,1,0,195,5,1,0,195,5,1,0,200,5,1,0,147,5,1,0,195,5,1,0,195,5,1,0,107,5,1,0,147,5,1,0,195,5,1,0,195,5,1,0,0,16,0,0,0,128,0,0,0,8,0,0,0,64,0,0,0,0,0,0,72,1,0,0,136,1,0,0,124,9,1,0,28,12,1,0,106,169,0,0,186,196,0,0,0,0,0,0,168,13,0,0,140,31,0,0,160,1,40,14,0,0,0,0,0,0,0,0,0,0,17,0,48,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,16,0,0,0,240,93,0,0,120,90,0,0,26,0,0,0,32,6,0,0,192,8,0,0,192,10,1,0,240,10,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,2,88,0,171,0,32,0,187,0,0,0,21,34,160,2,67,34,32,1,152,34,128,2,166,34,192,2,168,34,0,3,169,34,224,2,171,34,32,3,205,34,96,0,242,34,224,1,243,34,0,2,244,34,32,2,246,34,64,2,247,34,96,2,250,34,64,1,251,34,96,1,252,34,128,1,253,34,160,1,254,34,192,1,184,41,128,0,245,41,64,0,222,42,160,0,227,42,224,0,228,42,192,0,229,42,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,13,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,48,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,113,6,113,6,123,6,123,6,123,6,123,6,126,6,126,6,126,6,126,6,0,0,0,0,0,0,0,0,122,6,122,6,122,6,122,6,0,0,0,0,0,0,0,0,121,6,121,6,121,6,121,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,6,134,6,134,6,134,6,0,0,0,0,0,0,0,0,141,6,141,6,140,6,140,6,142,6,142,6,136,6,136,6,152,6,152,6,145,6,145,6,169,6,169,6,169,6,169,6,175,6,175,6,175,6,175,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,186,6,186,6,187,6,187,6,187,6,187,6,192,6,192,6,193,6,193,6,193,6,193,6,190,6,190,6,190,6,190,6,210,6,210,6,211,6,211,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,6,199,6,198,6,198,6,200,6,200,6,0,0,203,6,203,6,197,6,197,6,201,6,201,6,208,6,208,6,208,6,208,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,6,204,6,204,6,204,6,75,6,75,6,76,6,76,6,77,6,77,6,78,6,78,6,79,6,79,6,80,6,80,6,81,6,81,6,82,6,82,6,33,6,34,6,34,6,35,6,35,6,36,6,36,6,37,6,37,6,38,6,38,6,38,6,38,6,39,6,39,6,40,6,40,6,40,6,40,6,41,6,41,6,42,6,42,6,42,6,42,6,43,6,43,6,43,6,43,6,44,6,44,6,44,6,44,6,45,6,45,6,45,6,45,6,46,6,46,6,46,6,46,6,47,6,47,6,48,6,48,6,49,6,49,6,50,6,50,6,51,6,51,6,51,6,51,6,52,6,52,6,52,6,52,6,53,6,53,6,53,6,53,6,54,6,54,6,54,6,54,6,55,6,55,6,55,6,55,6,56,6,56,6,56,6,56,6,57,6,57,6,57,6,57,6,58,6,58,6,58,6,58,6,65,6,65,6,65,6,65,6,66,6,66,6,66,6,66,6,67,6,67,6,67,6,67,6,68,6,68,6,68,6,68,6,69,6,69,6,69,6,69,6,70,6,70,6,70,6,70,6,71,6,71,6,71,6,71,6,72,6,72,6,73,6,73,6,74,6,74,6,74,6,74,6,92,6,92,6,93,6,93,6,94,6,94,6,95,6,95,6,33,17,33,19,1,21,33,23,3,25,33,29,3,31,1,35,3,37,3,41,3,45,3,49,3,53,1,57,1,59,1,61,1,63,3,65,3,69,3,73,3,77,3,81,3,85,3,89,3,93,0,0,0,0,0,0,0,0,0,0,3,0,3,97,3,101,3,105,19,109,3,113,3,117,3,121,1,125,1,127,3,129,4,1,132,1,132,1,132,1,132,1,132,1,68,3,4,1,4,7,4,8,4,8,4,1,0,0,0,0,0,0,0,0,0,0,1,133,1,135,1,137,1,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,9,0,33,0,33,0,0,0,33,0,1,0,1,0,3,0,11,22,11,14,11,2,3,0,3,0,11,6,3,0,3,0,3,0,3,0,3,0,3,0,3,0,11,42,3,0,9,56,1,0,1,0,1,0,9,52,9,50,9,54,1,0,1,0,9,60,1,0,1,0,1,0,1,0,1,0,1,0,9,58,1,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,11,62,3,0,3,0,3,0,3,0,3,0,11,66,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,9,78,11,80,3,0,3,0,11,90,3,0,9,84,11,86,1,0,1,0,1,0,9,144,9,137,9,135,9,139,9,146,1,0,9,142,11,172,1,0,3,0,3,0,11,148,3,0,9,94,9,96,78,4,86,4,94,4,102,4,126,4,134,4,142,4,150,4,158,4,166,4,172,4,180,4,188,4,196,4,204,4,212,4,218,4,226,4,234,4,242,4,245,4,253,4,5,5,13,5,21,5,29,5,25,5,33,5,41,5,49,5,54,5,62,5,70,5,78,5,82,5,90,5,98,5,106,5,114,5,122,5,118,5,126,5,131,5,139,5,145,5,153,5,161,5,169,5,177,5,185,5,193,5,201,5,206,5,214,5,217,5,225,5,233,5,241,5,247,5,255,5,254,5,6,6,14,6,22,6,38,6,30,6,46,6,110,4,110,4,62,6,70,6,54,6,86,6,88,6,96,6,78,6,112,6,118,6,126,6,104,6,142,6,148,6,156,6,134,6,172,6,178,6,186,6,164,6,202,6,208,6,216,6,194,6,232,6,240,6,248,6,224,6,8,7,14,7,22,7,0,7,38,7,44,7,52,7,30,7,68,7,73,7,81,7,60,7,97,7,104,7,112,7,89,7,250,5,120,7,128,7,110,4,136,7,144,7,152,7,110,4,160,7,168,7,176,7,181,7,189,7,196,7,204,7,110,4,185,5,212,7,220,7,228,7,236,7,70,5,252,7,244,7,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,2,8,185,5,10,8,0,8,18,8,185,5,14,8,185,5,24,8,32,8,40,8,70,5,70,5,48,8,56,8,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,61,8,69,8,185,5,185,5,77,8,85,8,93,8,101,8,109,8,185,5,117,8,125,8,133,8,149,8,185,5,157,8,159,8,167,8,141,8,185,5,170,8,190,8,178,8,186,8,198,8,185,5,206,8,212,8,220,8,228,8,185,5,244,8,252,8,4,9,236,8,110,4,110,4,20,9,23,9,31,9,12,9,47,9,39,9,185,5,54,9,185,5,69,9,62,9,77,9,85,9,110,4,93,9,101,9,238,4,109,9,112,9,118,9,125,9,112,9,21,5,133,9,158,4,158,4,158,4,158,4,141,9,158,4,158,4,158,4,157,9,165,9,173,9,181,9,189,9,193,9,201,9,149,9,225,9,233,9,209,9,217,9,241,9,249,9,1,10,9,10,33,10,17,10,25,10,41,10,49,10,64,10,69,10,56,10,77,10,77,10,77,10,77,10,77,10,77,10,77,10,77,10,85,10,93,10,220,8,96,10,104,10,111,10,116,10,124,10,220,8,130,10,129,10,146,10,149,10,220,8,220,8,138,10,220,8,220,8,220,8,220,8,220,8,164,10,172,10,156,10,220,8,220,8,220,8,177,10,220,8,220,8,220,8,220,8,220,8,220,8,220,8,183,10,191,10,220,8,199,10,206,10,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,77,10,77,10,77,10,77,10,214,10,77,10,221,10,228,10,77,10,77,10,77,10,77,10,77,10,77,10,77,10,77,10,220,8,236,10,243,10,247,10,253,10,3,11,11,11,16,11,70,5,32,11,24,11,40,11,158,4,158,4,158,4,48,11,238,4,56,11,185,5,62,11,78,11,70,11,70,11,21,5,86,11,94,11,102,11,110,4,110,11,220,8,220,8,117,11,220,8,220,8,220,8,220,8,220,8,220,8,125,11,131,11,147,11,139,11,250,5,185,5,155,11,56,8,185,5,163,11,171,11,176,11,185,5,185,5,181,11,165,5,220,8,188,11,196,11,204,11,210,11,220,8,204,11,218,11,220,8,196,11,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,226,11,185,5,185,5,185,5,234,11,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,240,11,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,245,11,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,170,8,220,8,220,8,253,11,185,5,0,12,185,5,8,12,14,12,22,12,30,12,35,12,185,5,185,5,39,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,46,12,185,5,53,12,59,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,67,12,185,5,185,5,185,5,75,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,77,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,84,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,91,12,185,5,185,5,185,5,98,12,106,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,111,12,185,5,185,5,119,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,123,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,126,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,129,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,135,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,143,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,148,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,153,12,185,5,185,5,185,5,158,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,166,12,173,12,177,12,185,5,185,5,185,5,184,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,170,8,110,4,198,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,190,12,220,8,206,12,77,9,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,211,12,219,12,158,4,235,12,227,12,185,5,185,5,243,12,251,12,11,13,158,4,16,13,24,13,30,13,110,4,3,13,38,13,46,13,185,5,54,13,70,13,73,13,62,13,81,13,14,6,89,13,96,13,104,13,86,6,120,13,112,13,128,13,185,5,136,13,144,13,152,13,185,5,160,13,168,13,176,13,184,13,192,13,196,13,204,13,238,4,238,4,185,5,212,13,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,220,13,227,13,158,8,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,185,5,185,5,185,5,251,13,185,5,185,12,2,14,7,14,185,5,185,5,185,5,15,14,185,5,185,5,169,8,110,4,37,14,21,14,29,14,185,5,185,5,45,14,53,14,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,58,14,66,14,185,5,70,14,185,5,76,14,80,14,88,14,96,14,103,14,111,14,185,5,185,5,185,5,117,14,141,14,94,4,149,14,157,14,162,14,190,8,125,14,133,14,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,235,13,184,17,184,17,248,17,56,18,120,18,176,18,240,18,48,19,104,19,168,19,212,19,20,20,84,20,100,20,164,20,216,20,24,21,72,21,136,21,200,21,216,21,12,22,68,22,132,22,196,22,4,23,56,23,100,23,164,23,220,23,248,23,56,24,128,10,192,10,0,11,59,11,123,11,64,10,187,11,64,10,221,11,64,10,64,10,64,10,64,10,29,12,219,1,219,1,93,12,157,12,64,10,64,10,64,10,64,10,221,12,253,12,64,10,64,10,61,13,125,13,189,13,253,13,61,14,125,14,189,14,244,14,219,1,219,1,24,15,76,15,219,1,116,15,219,1,219,1,219,1,219,1,161,15,219,1,219,1,219,1,219,1,219,1,219,1,219,1,181,15,219,1,237,15,45,16,219,1,56,16,64,10,64,10,64,10,64,10,64,10,120,16,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,184,16,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,64,10,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,248,16,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,248,16,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,170,14,177,14,185,14,110,4,185,5,185,5,185,5,165,5,201,14,193,14,224,14,209,14,216,14,232,14,106,11,240,14,110,4,110,4,110,4,110,4,104,13,185,5,248,14,0,15,185,5,8,15,16,15,20,15,28,15,185,5,36,15,110,4,70,5,80,5,44,15,185,5,48,15,56,15,72,15,64,15,185,5,80,15,185,5,87,15,110,4,110,4,110,4,110,4,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,78,11,170,8,76,14,110,4,110,4,110,4,110,4,103,15,95,15,106,15,114,15,190,8,122,15,110,4,130,15,138,15,146,15,110,4,110,4,185,5,162,15,170,15,154,15,186,15,193,15,178,15,201,15,209,15,110,4,225,15,217,15,185,5,228,15,236,15,244,15,252,15,4,16,110,4,110,4,185,5,185,5,12,16,110,4,70,5,20,16,238,4,28,16,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,36,16,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,52,16,239,5,60,16,44,16,47,9,68,16,76,16,82,16,106,16,90,16,98,16,110,16,47,9,126,16,118,16,134,16,150,16,142,16,110,4,110,4,157,16,165,16,17,6,173,16,189,16,178,6,197,16,181,16,110,4,110,4,110,4,110,4,185,5,205,16,213,16,110,4,185,5,221,16,229,16,110,4,110,4,110,4,110,4,110,4,185,5,237,16,245,16,110,4,185,5,253,16,5,17,13,17,185,5,29,17,21,17,110,4,45,17,37,17,110,4,110,4,110,4,110,4,110,4,110,4,70,5,238,4,53,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,61,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,83,17,88,17,69,17,77,17,104,17,96,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,169,8,110,4,110,4,110,4,120,17,128,17,136,17,112,17,185,5,185,5,185,5,185,5,185,5,185,5,144,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,152,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,154,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,61,17,190,8,162,17,110,4,110,4,66,14,170,17,185,5,186,17,194,17,202,17,178,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,185,5,210,17,215,17,223,17,110,4,110,4,231,17,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,239,17,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,247,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,255,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,185,5,185,5,7,18,12,18,20,18,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,220,8,220,8,220,8,220,8,220,8,220,8,220,8,125,11,220,8,28,18,220,8,35,18,43,18,49,18,220,8,55,18,220,8,220,8,63,18,110,4,110,4,110,4,110,4,110,4,220,8,220,8,126,10,71,18,110,4,110,4,110,4,110,4,87,18,94,18,99,18,105,18,113,18,121,18,129,18,91,18,137,18,145,18,153,18,158,18,112,18,87,18,94,18,90,18,105,18,166,18,88,18,169,18,91,18,177,18,185,18,193,18,200,18,180,18,188,18,196,18,203,18,183,18,211,18,79,18,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,21,5,227,18,21,5,234,18,241,18,219,18,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,248,18,0,19,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,185,5,185,5,185,5,185,5,185,5,8,19,110,4,70,5,24,19,16,19,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,40,19,48,19,56,19,64,19,72,19,80,19,110,4,32,19,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,220,8,88,19,220,8,220,8,117,11,93,19,97,19,125,11,105,19,110,19,220,8,88,19,220,8,54,18,110,4,118,19,126,19,130,19,138,19,110,4,110,4,110,4,110,4,110,4,220,8,220,8,220,8,220,8,220,8,220,8,220,8,146,19,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,220,8,127,10,154,19,220,8,220,8,220,8,117,11,220,8,220,8,162,19,110,4,88,19,220,8,170,19,220,8,178,19,127,11,110,4,110,4,186,19,194,19,202,19,110,4,126,11,110,4,232,14,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,210,19,185,5,185,5,217,19,185,5,185,5,185,5,225,19,185,5,233,19,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,95,12,185,5,185,5,241,19,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,249,19,1,20,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,158,12,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,8,20,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,15,20,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,22,20,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,78,11,110,4,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,26,20,185,5,185,5,185,5,185,5,185,5,185,5,48,15,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,255,17,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,185,5,185,5,185,5],\\\"i8\\\",4,A.a)\\n;O([185,5,34,20,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,185,5,48,15,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,50,20,42,20,42,20,42,20,110,4,110,4,110,4,110,4,21,5,21,5,21,5,21,5,21,5,21,5,21,5,58,20,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,110,4,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,243,13,66,20,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,12,0,23,0,23,0,23,0,25,0,23,0,23,0,23,0,20,0,21,0,23,0,24,0,23,0,19,0,23,0,23,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,23,0,24,0,24,0,24,0,23,0,23,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,20,0,23,0,21,0,26,0,22,0,26,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,20,0,24,0,21,0,24,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,12,0,23,0,25,0,25,0,25,0,25,0,27,0,23,0,26,0,27,0,5,0,28,0,24,0,16,0,27,0,26,0,27,0,24,0,75,3,139,3,26,0,2,0,23,0,23,0,26,0,11,3,5,0,29,0,203,52,75,52,203,60,23,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,24,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,24,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,2,0,1,0,1,0,2,0,1,0,2,0,1,0,1,0,2,0,1,0,1,0,1,0,2,0,2,0,1,0,1,0,1,0,1,0,2,0,1,0,1,0,2,0,1,0,1,0,1,0,2,0,2,0,2,0,1,0,1,0,2,0,1,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,1,0,2,0,1,0,2,0,2,0,1,0,2,0,1,0,1,0,2,0,1,0,1,0,1,0,2,0,1,0,2,0,1,0,1,0,2,0,2,0,5,0,1,0,2,0,2,0,2,0,5,0,5,0,5,0,5,0,1,0,3,0,2,0,1,0,3,0,2,0,1,0,3,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,1,0,3,0,2,0,1,0,2,0,1,0,1,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,2,0,1,0,1,0,2,0,2,0,1,0,2,0,1,0,1,0,1,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,5,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,26,0,26,0,26,0,26,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,4,0,4,0,4,0,4,0,4,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,4,0,26,0,4,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,1,0,2,0,1,0,2,0,4,0,26,0,1,0,2,0,0,0,0,0,4,0,2,0,2,0,2,0,23,0,1,0,0,0,0,0,0,0,0,0,26,0,26,0,1,0,23,0,1,0,1,0,1,0,0,0,1,0,0,0,1,0,1,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,2,0,2,0,1,0,1,0,1,0,2,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,2,0,2,0,2,0,1,0,2,0,24,0,1,0,2,0,1,0,1,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,27,0,6,0,6,0,6,0,6,0,6,0,7,0,7,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,4,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,23,0,19,0,0,0,0,0,27,0,27,0,25,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,19,0,6,0,23,0,6,0,6,0,23,0,6,0,6,0,23,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,0,16,0,16,0,16,0,16,0,24,0,24,0,24,0,23,0,23,0,25,0,23,0,23,0,27,0,27,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,16,0,0,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,23,0,23,0,23,0,5,0,5,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,16,0,27,0,6,0,6,0,6,0,6,0,6,0,6,0,4,0,4,0,6,0,6,0,27,0,6,0,6,0,6,0,6,0,5,0,5,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,5,0,5,0,27,0,27,0,5,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,16,0,5,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,4,0,4,0,27,0,23,0,23,0,23,0,4,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,4,0,6,0,6,0,6,0,4,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,4,0,6,0,6,0,6,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,0,0,0,0,23,0,0,0,6,0,6,0,16,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,5,0,5,0,6,0,6,0,23,0,23,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,8,0,6,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,8,0,8,0,8,0,6,0,8,0,8,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,5,0,25,0,25,0,203,55,203,53,203,63,203,52,203,60,75,9,27,0,25,0,0,0,0,0,0,0,0,0,5,0,6,0,8,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,0,0,0,0,6,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,0,0,0,0,8,0,8,0,0,0,0,0,8,0,8,0,6,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,5,0,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,6,0,6,0,5,0,5,0,5,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,0,0,5,0,5,0,0,0,5,0,5,0,0,0,0,0,6,0,0,0,8,0,8,0,8,0,6,0,6,0,0,0,0,0,0,0,0,0,6,0,6,0,0,0,0,0,6,0,6,0,6,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,0,0,5,0,0,0,5,0,5,0,6,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,6,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,0,0,6,0,6,0,8,0,0,0,8,0,8,0,6,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,6,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,27,0,5,0,203,52,75,52,203,60,203,55,203,53,203,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,8,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,6,0,5,0,8,0,6,0,8,0,6,0,6,0,6,0,6,0,0,0,0,0,8,0,8,0,0,0,0,0,8,0,8,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,8,0,0,0,0,0,0,0,0,0,5,0,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,203,7,75,30,75,120,27,0,27,0,27,0,27,0,27,0,27,0,25,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,5,0,5,0,0,0,5,0,0,0,5,0,5,0,0,0,0,0,0,0,5,0,5,0,0,0,0,0,0,0,5,0,5,0,5,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,8,0,8,0,6,0,8,0,8,0,0,0,0,0,0,0,8,0,8,0,8,0,0,0,8,0,8,0,8,0,6,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,6,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,5,139,5,203,5,11,6,139,5,203,5,11,6,27,0,6,0,8,0,8,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,5,0,6,0,6,0,6,0,8,0,8,0,8,0,8,0,0,0,6,0,6,0,6,0,0,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,0,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,6,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,6,0,8,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,6,0,5,0,8,0,6,0,8,0,8,0,8,0,8,0,8,0,0,0,6,0,8,0,8,0,0,0,8,0,8,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,0,5,0,6,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,203,7,75,30,75,120,203,52,75,52,203,60,203,55,203,53,203,63,27,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,6,0,8,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,0,0,8,0,8,0,8,0,0,0,8,0,8,0,8,0,6,0,5,0,27,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,8,0,11,204,11,202,75,203,11,201,75,54,75,201,11,53,5,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,8,0,8,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,8,0,8,0,8,0,6,0,6,0,6,0,0,0,6,0,0,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,25,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,23,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,0,0,5,0,0,0,0,0,5,0,5,0,0,0,5,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,0,0,5,0,0,0,5,0,0,0,0,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,6,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,6,0,6,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,4,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,5,0,5,0,5,0,5,0,5,0,27,0,27,0,27,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,27,0,23,0,27,0,27,0,27,0,6,0,6,0,27,0,27,0,27,0,27,0,27,0,27,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,75,52,75,60,75,68,75,76,75,84,75,92,75,100,75,108,75,116,75,44,27,0,6,0,27,0,6,0,27,0,6,0,20,0,21,0,20,0,21,0,8,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,23,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,6,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,27,0,27,0,23,0,23,0,23,0,23,0,23,0,27,0,27,0,27,0,27,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,6,0,6,0,6,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,6,0,8,0,8,0,6,0,6,0,5,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,23,0,23,0,23,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,6,0,6,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,5,0,8,0,8,0,8,0,5,0,5,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,8,0,8,0,6,0,6,0,8,0,8,0,8,0,8,0,8,0,8,0,6,0,5,0,8,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,8,0,8,0,8,0,6,0,27,0,27,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,4,0,5,0,5,0,5,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,6,0,6,0,6,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,203,27,75,30,139,120,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,19,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,12,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,20,0,21,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,23,0,23,0,138,9,202,9,10,10,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,0,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,6,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,23,0,23,0,4,0,23,0,23,0,23,0,25,0,5,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,75,5,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,23,0,23,0,23,0,23,0,23,0,19,0,23,0,23,0,23,0,23,0,6,0,6,0,6,0,16,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,8,0,8,0,8,0,8,0,6,0,6,0,8,0,8,0,8,0,0,0,0,0,0,0,0,0,8,0,8,0,6,0,8,0,8,0,8,0,8,0,8,0,8,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,23,0,23,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,11,3,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,8,0,8,0,6,0,0,0,0,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,4,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,7,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,6,0,8,0,6,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,8,0,8,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,6,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,23,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,8,0,8],\\\"i8\\\",4,A.a+10240)\\n;O([8,0,8,0,8,0,6,0,8,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,23,0,23,0,23,0,23,0,23,0,5,0,8,0,6,0,6,0,6,0,6,0,8,0,8,0,6,0,6,0,8,0,6,0,6,0,6,0,5,0,5,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,8,0,6,0,6,0,8,0,8,0,8,0,6,0,8,0,6,0,6,0,6,0,8,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,23,0,23,0,23,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,5,0,5,0,5,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,8,0,6,0,6,0,0,0,0,0,0,0,23,0,23,0,23,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,4,0,4,0,4,0,4,0,4,0,23,0,23,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,23,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,5,0,5,0,5,0,5,0,6,0,5,0,5,0,5,0,5,0,8,0,8,0,6,0,5,0,5,0,0,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,4,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,4,0,4,0,4,0,4,0,4,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,26,0,26,0,26,0,0,0,0,0,2,0,2,0,2,0,0,0,2,0,2,0,1,0,1,0,1,0,1,0,3,0,26,0,26,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,2,0,2,0,2,0,2,0,2,0,0,0,2,0,2,0,1,0,1,0,1,0,1,0,3,0,26,0,2,0,26,0,26,0,26,0,2,0,2,0,2,0,0,0,2,0,2,0,1,0,1,0,1,0,1,0,3,0,26,0,26,0,26,0,2,0,2,0,2,0,2,0,0,0,0,0,2,0,2,0,1,0,1,0,1,0,1,0,0,0,26,0,26,0,26,0,22,0,23,0,23,0,23,0,24,0,20,0,21,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,24,0,23,0,22,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,12,0,16,0,16,0,16,0,16,0,16,0,0,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,203,2,4,0,0,0,0,0,203,3,11,4,75,4,139,4,203,4,11,5,24,0,24,0,24,0,20,0,21,0,4,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,16,0,16,0,16,0,16,0,16,0,19,0,19,0,19,0,19,0,19,0,19,0,23,0,23,0,28,0,29,0,20,0,28,0,28,0,29,0,20,0,28,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,13,0,14,0,16,0,16,0,16,0,16,0,16,0,12,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,28,0,29,0,23,0,23,0,23,0,23,0,22,0,203,2,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,24,0,24,0,24,0,20,0,21,0,0,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,0,0,0,0,0,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,7,0,7,0,7,0,7,0,6,0,7,0,7,0,7,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,1,0,27,0,1,0,27,0,1,0,27,0,1,0,1,0,1,0,1,0,27,0,2,0,1,0,1,0,1,0,1,0,2,0,5,0,5,0,5,0,5,0,2,0,27,0,27,0,2,0,2,0,1,0,1,0,24,0,24,0,24,0,24,0,24,0,1,0,2,0,2,0,2,0,2,0,27,0,24,0,27,0,27,0,2,0,27,0,139,53,11,54,75,54,139,52,139,56,11,53,11,57,11,61,11,65,75,53,75,69,203,53,203,61,203,69,203,77,139,5,27,0,27,0,1,0,27,0,27,0,27,0,27,0,1,0,27,0,27,0,2,0,1,0,1,0,1,0,2,0,2,0,1,0,1,0,1,0,2,0,27,0,1,0,27,0,27,0,24,0,1,0,1,0,1,0,1,0,1,0,27,0,27,0,138,5,202,5,10,6,74,6,138,6,202,6,10,7,74,7,138,7,202,7,10,8,74,8,202,17,74,30,10,152,74,120,138,5,202,5,10,6,74,6,138,6,202,6,10,7,74,7,138,7,202,7,10,8,74,8,202,17,74,30,10,152,74,120,74,120,74,152,138,120,1,0,2,0,202,6,202,17,138,152,202,120,75,5,27,0,27,0,0,0,0,0,0,0,0,0,24,0,24,0,24,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,27,0,27,0,24,0,27,0,27,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,27,0,27,0,24,0,27,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,20,0,21,0,20,0,21,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,20,0,21,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,24,0,24,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,203,2,11,8,75,8,139,8,203,8,11,9,75,9,139,9,203,9,11,10,75,10,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,203,2,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,11,8,75,8,139,8,203,8,11,9,75,9,139,9,203,9,11,10,75,10,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,11,8,75,8,139,8,203,8,11,9,75,9,139,9,203,9,11,10,75,10,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,24,0,24,0,24,0,20,0,21,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,20,0,21,0,20,0,21,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,20,0,21,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,27,0,27,0,24,0,24,0,24,0,24,0,24,0,24,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,2,0,1,0,1,0,1,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,1,0,1,0,1,0,2,0,1,0,2,0,2,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,4,0,4,0,1,0,1,0,1,0,2,0,1,0,2,0,2,0,27,0,27,0,27,0,27,0,27,0,27,0,1,0,2,0,1,0,2,0,6,0,6,0,6,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,23,0,23,0,23,0,23,0,75,52,23,0,23,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,23,0,28,0,29,0,28,0,29,0,23,0,23,0,23,0,28,0,29,0,23,0,28,0,29,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,19,0,23,0,23,0,19,0,23,0,28,0,29,0,23,0,23,0,28,0,29,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,23,0,23,0,23,0,23,0,23,0,4,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,19,0,19,0,23,0,23,0,23,0,23,0,19,0,23,0,20,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,27,0,138,5,202,5,10,6,74,6,138,6,202,6,10,7,74,7,138,7,6,0,6,0,6,0,6,0,8,0,8,0,19,0,4,0,4,0,4,0,4,0,4,0,27,0,27,0,202,7,74,10,202,12,4,0,5,0,23,0,27,0,27,0,12,0,23,0,23,0,23,0,27,0,4,0,5,0,74,5,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,27,0,27,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,19,0,20,0,21,0,21,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,6,0,6,0,26,0,26,0,4,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,4,0,4,0,4,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,27,0,27,0,139,5,203,5,11,6,75,6,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,203,7,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,27,0,139,10,203,10,11,11,75,11,139,11,203,11,11,12,75,12,139,12,203,12,11,13,75,13,139,13,203,13,11,14,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,75,14,139,14,203,14,11,15,75,15,139,15,203,15,11,16,75,16,139,16,203,16,11,17,75,17,139,17,203,17,5,0,5,0,5,0,5,0,5,0,133,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,5,5,0,5,0,5,7,5,0,5,0,5,0,133,120,5,0,5,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,6,5,0,69,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,121,197,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,120,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,30,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,121,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,122,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,5,5,0,69,7,5,0,197,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,7,5,0,69,120,69,10,197,12,5,0,5,0,5,0,5,0,5,0,5,0,69,15,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,6,5,6,5,6,5,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,7,69,10,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,5,197,5,5,6,5,0,197,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,30,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,120,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,5,5,0,5,0,5,0,5,0,197,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,120,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,6,5,0,5,0,5,0,5,0,5,0,69,30,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,23,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,4,0,4,0,6,0,6,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,5,0,6,0,7,0,7,0,7,0,23,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,138,5,202,5,10,6,74,6,138,6,202,6,10,7,74,7,138,7,74,5,6,0,6,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,4,0,4,0,2,0,5,0,5,0,5,0,5,0,5,0,26,0,26,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,4,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,4,0,26,0,26,0,1,0,2,0,1,0,2,0,5,0,1,0,2,0,1,0,2,0,2,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,2,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,2,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,6,0,5,0,5,0,5,0,6,0,5,0,5,0,5,0,5,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,6,0,6,0,8,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,203,52,75,52,203,60,203,55,203,53,203,63,27,0,27,0,25,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,0,8,0,8,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,23,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,23,0,23,0,5,0,23,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,8,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,4,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,8,0,8,0,6,0,6,0,6,0,6,0,8,0,8,0,6,0,8,0,8,0,8,0,5,0,5,0,5,0,5,0,5,0,6,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,8,0,6,0,6,0,8,0,8,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,8,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,23,0,23,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,27,0,27,0,27,0,5,0,8,0,6,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,5,0,6,0,6,0,6,0,5,0,5,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,5,0,6,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,4,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,6,0,6,0,8,0,8,0,23,0,23,0,5,0,4,0,4,0,8,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,26,0,4,0,4,0,4,0,4,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,5,0,5,0,5,0,8,0,8,0,6,0,8,0,8,0,6,0,8,0,8,0,23,0,8,0,6,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,7,5,0,5,0,5,0,5,0,197,5,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,6,5,0,197,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,24,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,0,0,5,0,5,0,0,0,5,0,5,0,0,0,5],\\\"i8\\\",4,A.a+20480)\\n;O([5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,5,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,21,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,25,0,27,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,20,0,21,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,19,0,19,0,22,0,22,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,20,0,21,0,23,0,23,0,20,0,21,0,23,0,23,0,23,0,23,0,22,0,22,0,22,0,23,0,23,0,23,0,0,0,23,0,23,0,23,0,23,0,19,0,20,0,21,0,20,0,21,0,20,0,21,0,23,0,23,0,23,0,24,0,19,0,24,0,24,0,24,0,0,0,23,0,25,0,23,0,23,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,16,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,0,0,0,0,0,0,25,0,25,0,24,0,26,0,27,0,25,0,25,0,0,0,27,0,24,0,24,0,24,0,24,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,0,16,0,27,0,27,0,0,0,0,0,0,0,23,0,23,0,23,0,25,0,23,0,23,0,23,0,20,0,21,0,23,0,24,0,23,0,19,0,23,0,23,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,23,0,24,0,24,0,24,0,23,0,26,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,20,0,24,0,21,0,24,0,20,0,21,0,23,0,20,0,21,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,4,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,11,176,11,184,75,120,75,128,75,136,75,144,75,152,75,160,75,168,75,176,75,184,139,120,139,128,139,136,139,144,139,152,139,160,139,168,139,176,139,184,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,203,27,75,30,11,128,11,136,11,144,11,152,11,160,11,168,202,7,202,7,202,7,202,7,202,7,202,12,202,17,202,17,202,17,202,17,74,30,10,136,10,152,10,152,10,152,10,152,10,152,74,120,74,152,138,6,202,17,75,52,75,52,139,56,203,60,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,75,5,203,52,27,0,27,0,27,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,202,52,74,52,138,5,138,6,202,17,10,152,74,152,138,152,138,6,202,7,202,17,74,30,10,152,74,120,74,152,138,6,202,7,202,17,74,30,10,152,74,120,138,120,138,152,202,7,138,5,138,5,138,5,202,5,202,5,202,5,202,5,138,6,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,6,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,203,27,75,30,11,128,11,136,11,144,11,152,11,160,11,168,11,176,11,184,0,0,0,0,0,0,0,0,139,5,139,6,203,7,203,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,202,27,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,10,184,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,23,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,138,5,202,5,202,7,74,10,74,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,0,0,0,0,0,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,23,0,139,5,203,5,11,6,203,7,75,10,75,30,75,120,139,120,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,27,0,27,0,139,5,203,5,11,6,75,6,139,6,203,7,75,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,5,203,5,11,6,75,6,75,6,139,6,203,7,75,10,75,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,139,5,139,6,203,7,75,10,75,30,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,139,5,203,7,75,10,75,30,203,5,11,6,0,0,0,0,0,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,23,0,75,160,75,168,75,176,75,184,139,120,139,128,139,136,139,144,139,152,139,160,139,168,139,176,139,184,203,120,203,128,203,136,203,144,203,152,203,160,203,168,203,176,203,184,203,54,75,53,203,52,139,52,203,70,75,52,203,78,139,56,203,60,75,69,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,203,94,75,52,5,0,5,0,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,203,7,75,10,203,12,75,15,203,17,75,20,203,22,0,0,0,0,75,30,11,128,11,136,11,144,11,152,11,160,11,168,11,176,11,184,75,120,75,128,75,136,75,144,75,152,11,3,75,3,139,3,203,3,203,7,75,10,75,30,75,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,6,0,6,0,6,0,0,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,139,5,203,17,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,139,5,203,7,75,10,5,0,5,0,5,0,5,0,5,0,6,0,6,0,0,0,0,0,0,0,0,0,139,5,139,6,203,7,75,10,75,30,23,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,27,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,139,5,203,5,11,6,75,6,203,7,75,10,75,30,75,120,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,139,5,203,5,11,6,75,6,203,7,75,10,75,30,75,120,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,5,203,5,11,6,75,6,203,7,75,10,75,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,5,139,6,203,7,203,17,75,30,75,120,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,203,27,75,30,11,128,11,136,11,144,11,152,11,160,11,168,11,176,11,184,75,52,203,52,139,52,139,56,0,0,75,20,203,22,75,25,203,27,75,30,75,120,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,8,0,6,0,8,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,203,7,75,10,203,12,75,15,203,17,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,8,0,8,0,6,0,6,0,23,0,23,0,16,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,23,0,23,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,5,0,5,0,5,0,5,0,23,0,23,0,23,0,23,0,23,0,6,0,6,0,6,0,23,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,5,0,23,0,5,0,23,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,0,0,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,203,27,75,30,75,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,8,0,8,0,6,0,8,0,6,0,6,0,23,0,23,0,23,0,23,0,23,0,23,0,6,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,8,0,8,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,8,0,8,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,5,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,8,0,8,0,8,0,8,0,0,0,0,0,8,0,8,0,0,0,0,0,8,0,8,0,8,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,8,0,6,0,6,0,6,0,8,0,6,0,5,0,5,0,5,0,5,0,23,0,23,0,23,0,23,0,23,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,23,0,0,0,23,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,8,0,8,0,8,0,8,0,6,0,6,0,8,0,6,0,6,0,5,0,5,0,23,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,0,0,0,0,8,0,8,0,8,0,8,0,6,0,6,0,8,0,6,0,6,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,5,0,5,0,5,0,5,0,6,0,6,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,8,0,6,0,8,0,6,0,6,0,23,0,23,0,23,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,8,0,6,0,8,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,0,6,0,6,0,6,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,203,7,75,10,23,0,23,0,23,0,27,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,6,0,6,0,6,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,203,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,203,27,75,30,0,0,0,0,0,0,23,0,23,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,8,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,8,0,6,0,6,0,8,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,202,52,74,53,202,52,202,52,74,52,138,52,138,56,74,15,202,17,74,6,138,6,202,6,10,7,74,7,138,7,0,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,5,10,6,74,6,138,6,202,6,10,7,74,7,138,7,10,6,74,6,138,6,202,6,10,7,74,7,138,7,74,6,138,6,202,6,10,7,74,7,138,7,138,5,202,5,10,6,74,6,138,6,202,6,10,7,74,7,138,7,138,5,202,5,10,6,74,6,138,6,202,5,10,6,10,6,74,6,138,6,202,6,10,7,74,7,138,7,138,5,202,5,10,6,10,6,74,6,138,6,138,192,138,193,138,5,202,5,10,6,10,6,74,6,138,6,10,6,10,6,74,6,74,6,74,6,74,6,202,6,10,7,10,7,10,7,74,7,74,7,138,7,138,7,138,7,138,7,202,5,10,6,74,6,138,6,202,6,138,5,202,5,10,6,74,6,74,6,138,6,138,6,202,5,10,6,138,5,202,5,138,52,138,56,74,69,138,52,138,56,202,53,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,23,0,23,0,23,0,23,0,23,0,27,0,27,0,27,0,27,0,4,0,4,0,4,0,4,0,23,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,203,7,75,30,139,120,11,121,139,121,11,122,139,122,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,27,0,6,0,6,0,23,0,16,0,16,0,16,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,8,0,8,0,6,0,6,0,6,0,27,0,27,0,27,0,8,0,8,0,8,0,8,0,8,0,8,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,27,0,27,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,6,0,6,0,6,0,6,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,6,0,6,0,6,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,203,7,75,10,203,12,75,15,203,17,75,20,203,22,75,25,203,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,2,137,2,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,0,0,2,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,24,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,24,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,24,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,24,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,24,0,2,0,2,0,2,0,2,0,2,0,2,0,1,0,2,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,27,0,27,0,27,0,27,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,6,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,6,0,27,0,27,0,23,0,23,0,23,0,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,6,0,6,0,0,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,139,5,203,5,11,6,75,6,139,6,203,6,11,7,75,7,139,7,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,73,0,137,0,201,0,9,1,73,1,137,1,201,1,9,2,73,2,137,2,0,0,0,0,0,0,0,0,23,0,23,0,1,0,1,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],\\\"i8\\\",4,A.a+30720)\\n;O([2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,0,0,5,0,0,0,0,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,5,0,5,0,0,0,5,0,5,0,0,0,5,0,0,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,5,0,0,0,5,0,0,0,0,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,0,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,203,2,203,2,11,3,75,3,139,3,203,3,11,4,75,4,139,4,203,4,11,5,75,5,75,5,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,26,0,26,0,26,0,26,0,26,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,0,0,0,0,0,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,0,0,5,0,5,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,12,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,15,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,15,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,197,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,69,6,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,133,7,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,106,3,114,3,122,3,130,3,154,3,162,3,170,3,178,3,138,3,146,3,138,3,146,3,138,3,146,3,138,3,146,3,138,3,146,3,138,3,146,3,184,3,192,3,200,3,208,3,216,3,224,3,220,3,228,3,236,3,244,3,239,3,247,3,138,3,146,3,138,3,146,3,255,3,7,4,138,3,146,3,138,3,146,3,138,3,146,3,13,4,21,4,29,4,37,4,45,4,53,4,61,4,69,4,75,4,83,4,91,4,99,4,107,4,115,4,121,4,129,4,137,4,145,4,153,4,161,4,173,4,169,4,181,4,31,4,31,4,197,4,205,4,189,4,213,4,215,4,223,4,231,4,239,4,240,4,248,4,0,5,8,5,240,4,16,5,21,5,8,5,240,4,29,5,37,5,239,4,42,5,50,5,231,4,55,5,138,3,63,5,67,5,75,5,76,5,84,5,92,5,239,4,100,5,108,5,231,4,239,4,138,3,248,4,231,4,138,3,138,3,114,5,138,3,138,3,120,5,128,5,138,3,138,3,132,5,140,5,138,3,144,5,151,5,138,3,159,5,167,5,174,5,54,5,138,3,138,3,182,5,190,5,198,5,206,5,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,214,5,138,3,222,5,138,3,138,3,138,3,230,5,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,238,5,138,3,138,3,138,3,246,5,246,5,252,4,252,4,138,3,252,5,4,6,222,5,26,6,12,6,12,6,34,6,41,6,18,6,138,3,138,3,138,3,49,6,57,6,138,3,138,3,138,3,59,6,67,6,75,6,138,3,82,6,90,6,138,3,98,6,138,3,138,3,106,6,109,6,55,5,117,6,1,4,125,6,138,3,132,6,138,3,137,6,138,3,138,3,138,3,138,3,143,6,151,6,138,3,138,3,138,3,138,3,138,3,138,3,216,3,159,6,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,167,6,175,6,179,6,203,6,209,6,187,6,195,6,217,6,225,6,229,6,177,5,237,6,245,6,253,6,138,3,5,7,67,6,67,6,67,6,21,7,29,7,37,7,45,7,50,7,58,7,66,7,13,7,74,7,82,7,138,3,88,7,95,7,67,6,67,6,101,7,67,6,98,5,106,7,67,6,114,7,138,3,138,3,64,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,122,7,67,6,67,6,67,6,67,6,67,6,128,7,67,6,67,6,136,7,144,7,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,67,6,67,6,67,6,67,6,160,7,167,7,175,7,152,7,191,7,199,7,207,7,214,7,222,7,230,7,237,7,183,7,67,6,67,6,67,6,245,7,251,7,1,8,9,8,14,8,138,3,138,3,138,3,138,3,138,3,138,3,138,3,21,8,138,3,138,3,138,3,29,8,138,3,138,3,138,3,216,3,37,8,45,8,52,8,138,3,60,8,67,6,67,6,70,6,67,6,67,6,67,6,67,6,67,6,67,6,67,8,73,8,89,8,81,8,138,3,138,3,97,8,230,5,138,3,177,3,138,3,138,3,138,3,138,3,138,3,138,3,67,6,28,8,191,3,138,3,56,8,105,8,138,3,113,8,14,8,138,3,138,3,138,3,138,3,121,8,138,3,138,3,59,6,176,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,67,6,67,6,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,56,8,67,6,98,5,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,128,8,138,3,138,3,133,8,76,5,138,3,138,3,146,5,67,6,58,6,138,3,138,3,141,8,138,3,138,3,138,3,149,8,156,8,12,6,164,8,138,3,138,3,171,8,179,8,138,3,186,8,193,8,138,3,213,4,198,8,138,3,238,4,138,3,206,8,214,8,240,4,138,3,218,8,239,4,226,8,138,3,138,3,138,3,138,3,138,3,138,3,138,3,233,8,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,253,8,241,8,245,8,137,4,137,4,137,4,137,4,137,4,137,4,137,4,137,4,137,4,137,4,137,4,137,4,137,4,137,4,5,9,137,4,137,4,137,4,137,4,13,9,17,9,25,9,33,9,37,9,45,9,137,4,137,4,137,4,49,9,57,9,122,3,65,9,73,9,138,3,138,3,138,3,81,9,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,40,14,40,14,104,14,168,14,40,14,40,14,40,14,40,14,40,14,40,14,224,14,32,15,96,15,112,15,176,15,188,15,40,14,40,14,252,15,40,14,40,14,40,14,52,16,116,16,180,16,244,16,44,17,108,17,172,17,228,17,36,18,100,18,64,10,128,10,192,10,250,10,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,35,11,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,96,11,160,1,160,1,149,11,213,11,21,12,85,12,149,12,213,12,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,85,13,101,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,21,13,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,89,9,138,3,67,6,67,6,97,9,230,5,138,3,232,4,138,3,138,3,138,3,138,3,138,3,138,3,138,3,105,9,138,3,138,3,138,3,112,9,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,120,9,31,4,31,4,31,4,31,4,31,4,31,4,31,4,128,9,132,9,31,4,31,4,31,4,31,4,148,9,140,9,31,4,156,9,31,4,31,4,164,9,170,9,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,178,9,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,239,4,173,8,186,9,193,9,1,4,196,9,138,3,138,3,213,4,204,9,138,3,210,9,1,4,215,9,248,5,138,3,138,3,223,9,138,3,138,3,138,3,138,3,29,8,231,9,1,4,240,4,75,5,238,9,138,3,138,3,138,3,138,3,138,3,173,8,246,9,138,3,138,3,250,9,2,10,138,3,138,3,138,3,138,3,138,3,138,3,6,10,14,10,138,3,138,3,22,10,75,5,50,8,138,3,30,10,138,3,138,3,214,5,38,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,42,10,138,3,138,3,50,10,56,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,62,10,138,3,68,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,74,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,9,5,82,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,89,10,97,10,103,10,138,3,138,3,67,6,67,6,111,10,138,3,138,3,138,3,138,3,138,3,67,6,67,6,103,7,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,113,10,138,3,120,10,138,3,116,10,138,3,123,10,138,3,131,10,135,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,216,3,143,10,216,3,150,10,157,10,165,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,173,10,181,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,31,4,31,4,31,4,31,4,31,4,31,4,189,10,31,4,197,10,197,10,204,10,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,137,4,137,4,137,4,137,4,137,4,137,4,137,4,212,10,31,4,31,4,31,4,31,4,31,4,31,4,31,4,31,4,67,6,220,10,67,6,67,6,70,6,225,10,229,10,67,8,237,10,138,3,138,3,243,10,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,67,6,104,7,251,10,67,6,67,6,67,6,70,6,67,6,67,6,48,8,138,3,220,10,67,6,3,11,67,6,11,11,69,8,138,3,138,3,27,11,35,11,43,11,138,3,68,8,138,3,230,5,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,19,11,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,138,3,19,11,59,11,51,11,51,11,51,11,60,11,60,11,60,11,60,11,216,3,216,3,216,3,216,3,216,3,216,3,216,3,68,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,60,11,105,3,105,3,105,3,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,8,0,7,0,8,0,9,0,7,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,7,0,7,0,7,0,8,0,9,0,10,0,10,0,4,0,4,0,4,0,10,0,10,0,10,49,10,242,10,0,3,0,6,0,3,0,6,0,6,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,6,0,10,0,10,80,10,0,10,208,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,81,10,0,10,210,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,81,10,0,10,210,10,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,18,0,18,0,18,0,7,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,6,0,10,0,4,0,4,0,4,0,4,0,10,0,10,0,10,0,10,0,0,0,10,144,10,0,178,0,10,0,10,0,4,0,4,0,2,0,2,0,10,0,0,0,10,0,10,0,10,0,2,0,0,0,10,144,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10],\\\"i8\\\",4,A.a+40960)\\n;O([10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,10,0,10,0,4,0,1,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,1,0,177,0,1,0,177,0,177,0,1,0,177,0,177,0,1,0,177,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,5,0,5,0,5,0,5,0,5,0,5,0,10,0,10,0,13,0,4,0,4,0,13,0,6,0,13,0,10,0,10,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,13,0,173,8,13,0,13,0,13,0,77,0,13,0,141,0,141,0,141,0,141,0,77,0,141,0,77,0,141,0,77,0,77,0,77,0,77,0,77,0,141,0,141,0,141,0,141,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,45,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,141,0,77,0,77,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,4,0,5,0,5,0,13,0,77,0,77,0,177,0,141,0,141,0,141,0,13,0,141,0,141,0,141,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,141,0,77,0,77,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,141,0,77,0,141,0,77,0,141,0,77,0,77,0,141,0,141,0,13,0,141,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,5,0,10,0,177,0,177,0,177,0,177,0,177,0,177,0,13,0,13,0,177,0,177,0,10,0,177,0,177,0,177,0,177,0,141,0,141,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,77,0,77,0,77,0,13,0,13,0,77,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,173,0,141,0,177,0,77,0,77,0,77,0,141,0,141,0,141,0,141,0,141,0,77,0,77,0,77,0,77,0,141,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,141,0,77,0,141,0,77,0,141,0,77,0,77,0,141,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,13,0,13,0,141,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,141,0,141,0,141,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,141,0,141,0,77,0,77,0,77,0,77,0,141,0,77,0,141,0,141,0,77,0,77,0,77,0,141,0,141,0,77,0,77,0,77,0,77,0,77,0,77,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,1,0,1,0,10,0,10,0,10,0,10,0,33,0,1,0,1,0,1,0,1,0,1,0,177,0,177,0,177,0,177,0,1,0,177,0,177,0,177,0,1,0,177,0,177,0,177,0,177,0,177,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,177,0,177,0,177,0,177,0,1,0,177,0,177,0,177,0,177,0,177,0,129,0,65,0,65,0,65,0,65,0,65,0,129,0,129,0,65,0,129,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,129,0,65,0,1,0,1,0,1,0,177,0,177,0,177,0,1,0,1,0,1,0,1,0,177,0,177,0,5,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,77,0,141,0,141,0,141,0,13,0,141,0,77,0,77,0,141,0,141,0,77,0,77,0,13,0,77,0,77,0,77,0,141,0,77,0,77,0,77,0,77,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,177,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,177,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,4,0,10,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,177,0,0,0,177,0,10,49,10,242,10,49,10,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,49,10,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,177,0,0,0,0,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,177,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,74,0,10,0,10,0,42,0,177,0,177,0,177,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,0,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,177,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,177,0,177,0,0,0,0,0,0,0,177,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,6,0,10,49,10,242,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,9,0,178,0,178,0,178,0,178,0,178,0,18,0,20,8,21,8,19,8,22,8,178,0,178,0,178,0,178,0,178,0,178,0,2,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,3,0,3,0,10,0,10,49,10,242,0,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,178,0,18,4,50,4,160,8,161,8,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,9,0,7,0,171,8,174,8,176,8,172,8,175,8,6,0,4,0,4,0,4,0,4,0,4,0,10,0,10,0,10,0,10,0,10,48,10,240,10,0,10,0,10,0,10,0,10,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,3,0,3,0,10,0,10,49,10,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,0,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,0,0,0,0,0,0,0,10,16,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,0,10,0,10,48,10,240,10,144,10,144,10,144,10,16,10,144,10,144,10,16,10,16,10,144,10,144,10,144,10,144,10,144,10,16,10,0,10,16,10,16,10,16,10,16,10,0,10,0,10,0,10,112,10,112,10,112,10,176,10,176,10,176,10,0,10,0,10,0,10,16,3,0,4,0,10,0,10,144,10,16,10,0,10,0,10,0,10,16,10,16,10,16,10,16,10,0,10,16,10,16,10,16,10,16,10,0,10,16,10,0,10,16,10,0,10,0,10,0,10,0,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,0,10,0,10,0,10,0,10,0,10,16,10,0,10,16,10,48,10,240,10,16,10,16,10,16,10,16,10,16,10,144,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,48,10,240,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,16,10,16,10,0,10,16,10,0,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,0,10,0,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,16,10,0,10,0,10,48,10,240,10,48,10,240,10,0,10,0,10,0,10,0,10,0,10,144,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,0,10,0,10,144,10,16,10,144,10,144,10,16,10,144,10,16,10,16,10,16,10,16,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,16,10,0,10,0,10,0,10,0,10,0,10,16,10,16,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,48,10,240,10,144,10,0,10,0,10,48,10,240,10,0,10,0,10,0,10,0,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,49,10,242,10,49,10,242,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,16,10,16,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,49,10,242,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,16,10,0,10,0,10,48,10,240,10,49,10,242,10,0,10,48,10,240,10,0,10,80,10,16,10,208,10,0,10,0,10,0,10,0,10,0,10,16,10,16,10,48,10,240,10,0,10,0,10,0,10,0,10,0,10,16,10,48,10,240,10,0,10,0,10,0,10,48,10,240,10,48,10,240,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,16,10,0,10,16,10,16,10,16,10,0,10,0,10,16,10,16,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,16,10,144,10,16,10,16,10,48,10,240,10,0,10,0,10,49,10,242,10,0,10,0,10,0,10,0,10,0,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,113,10,50,10,241,10,178,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,0,10,0,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,144,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,16,10,16,10,48,10,240,10,0,10,0,10,0,10,16,10,0,10,0,10,0,10,0,10,16,10,48,10,240,10,48,10,240,10,0,10,48,10,240,10,0,10,0,10,49,10,242,10,49,10,242,10,16,10,0,10,0,10,0,10,0,10,0,10,16,10,144,10,144,10,144,10,16,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,16,10,0,10,0,10,0,10,0,10,16,10,0,10,0,10,0,10,48,10,240,10,48,10,240,10,16,10,0,10,16,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,16,10,0,10,16,10,16,10,16,10,16,10,0,10,0,10,16,10,0,10,16,10,0,10,0,10,16,10,0,10,48,10,240,10,48,10,240,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,0,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,16,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,16,10,16,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,0,10,0,10,0,10,0,10,16,10,16,10,16,10,16,10,0,10,16,10,16,10,0,10,0,10,16,10,16,10,0,10,0,10,0,10,0,10,48,10,240,10,16,10,16,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,16,10,16,10,16,10,16,10,16,10,16,10,48,10,240,10,16,10,16,10,16,10,16,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,16,10,16,10,16,10,16,10,48,10,240,10,16,10,0,10,0,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,0,10,48,10,240,10,16,10,16,10,48,10,240,10,16,10,16,10,16,10,16,10,16,10,16,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,16,10,16,10,16,10,16,10,16,10,16,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,48,10,240,10,0,10,0,10,0,10,0,10,0,10,16,10,0,10,144,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,10,0,10,0,10,48,10,240,10,48,10,240,10,0,10,0,10,0,10,48,10,240,10,0,10,48,10,240,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,48,10,240,10,0,10,0,10,48,10,240,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,9,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,0,10,0,10,49,10,242,10,49,10,242,10,49,10,242,10,49,10,242,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,10,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,96,0,0,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,177,0,0,0,0,0,177,0,177],\\\"i8\\\",4,A.a+51200)\\n;O([177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,177,0,177,0,177,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,177,0,1,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,10,0,10,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,10,0,13,0,13,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,6,0,10,0,6,0,0,0,10,0,6,0,10,0,10,0,10,0,10,49,10,242,10,49,10,242,10,49,10,242,4,0,10,0,10,0,3,0,3,0,10,48,10,240,10,0,0,0,10,0,4,0,4,0,10,0,0,0,0,0,0,0,0,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,178,0,0,0,10,0,10,0,4,0,4,0,4,0,10,0,10,0,10,49,10,242,10,0,3,0,6,0,3,0,6,0,6,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,6,0,10,0,10,80,10,0,10,208,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,81,10,0,10,210,10,0,10,49,10,242,10,0,10,49,10,242,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,10,0,10,0,10,0,4,0,4,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,170,0,170,0,170,0,10,0,10,0,18,0,18,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,177,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,10,0,1,0,177,0,177,0,177,0,1,0,177,0,177,0,1,0,1,0,1,0,1,0,1,0,177,0,177,0,177,0,177,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,177,0,177,0,177,0,1,0,1,0,1,0,1,0,177,0,65,0,129,0,1,0,1,0,129,0,177,0,177,0,1,0,1,0,1,0,1,0,65,0,65,0,65,0,65,0,129,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,65,0,65,0,65,0,65,0,65,0,129,0,1,0,129,0,1,0,129,0,129,0,1,0,1,0,97,0,129,0,129,0,129,0,129,0,129,0,65,0,65,0,65,0,65,0,97,0,65,0,65,0,65,0,65,0,65,0,129,0,65,0,65,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,65,0,129,0,65,0,129,0,129,0,129,0,65,0,65,0,65,0,129,0,65,0,65,0,129,0,65,0,129,0,129,0,65,0,129,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,129,0,129,0,129,0,129,0,65,0,65,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,1,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,177,0,0,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,177,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,0,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,0,178,0,178,0,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,177,0,177,0,177,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,0,0,177,0,177,0,0,0,177,0,177,0,177,0,177,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,65,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,10,0,10,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,13,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,10,0,0,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,178,0,18,0,178,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,177,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,18,0,0,0,0,0,0,0,0,0,0,1,2,7,8,3,9,6,5,4,4,10,10,12,10,10,10,11,10,4,4,4,4,13,14,1,2,4,5,7,15,17,7,9,7,0,7,3,18,21,4,1,34,36,37,39,47,49,39,41,39,1,1,35,50,53,0,33,2,36,37,39,47,49,39,41,39,2,2,35,50,53,1,33,34,38,38,40,48,49,40,40,40,3,3,3,50,53,1,33,34,4,37,39,47,49,74,11,74,4,4,35,18,21,2,33,34,36,5,39,47,49,39,41,76,5,5,35,50,53,3,33,34,6,6,40,48,49,40,40,77,6,6,35,18,21,3,33,34,36,37,7,47,49,7,78,7,7,7,35,50,53,4,33,34,38,38,8,48,49,8,8,8,8,8,35,50,53,4,33,34,4,37,7,47,49,7,9,7,9,9,35,18,21,4,97,98,4,101,135,111,113,135,142,135,10,135,99,18,21,2,33,34,4,37,39,47,49,39,11,39,11,11,35,18,21,2,97,98,100,5,135,111,113,135,142,135,12,135,99,114,117,3,97,98,6,6,136,112,113,136,136,136,13,136,99,18,21,3,33,34,132,37,7,47,49,7,14,7,14,14,35,146,149,4,33,34,36,37,39,15,49,39,41,39,15,39,35,50,53,5,33,34,38,38,40,16,49,40,40,40,16,40,35,50,53,5,33,34,36,37,39,47,17,39,41,39,17,39,35,50,53,6,33,34,18,37,39,47,49,83,20,83,18,18,35,18,21,0,97,98,18,101,135,111,113,135,142,135,19,135,99,18,21,0,33,34,18,37,39,47,49,39,20,39,20,20,35,18,21,0,33,34,21,37,39,47,49,86,23,86,21,21,35,18,21,3,97,98,21,101,135,111,113,135,142,135,22,135,99,18,21,3,33,34,21,37,39,47,49,39,23,39,23,23,35,18,21,3,0,2,17,17,0,0,0,0,0,66,1,1,0,0,0,0,0,2,4,4,19,19,0,1,0,34,52,52,3,3,0,0,0,2,4,4,19,19,0,2,1,0,2,2,0,0,0,0,1,0,1,3,20,20,0,1,1,0,2,2,0,0,0,1,1,0,1,3,5,5,0,1,33,0,33,3,4,4,0,0,1,0,1,3,5,5,0,0,0,1,2,3,4,0,1,0,2,0,0,0,0,0,1,3,3,20,20,0,1,0,1,0,2,21,21,0,2,0,1,3,3,20,20,0,2,0,33,51,51,4,4,0,0,0,33,0,50,5,5,0,0,0,3,17,17,0,0,0,0,32,3,1,1,2,32,32,2,32,3,1,1,2,32,32,1,0,3,5,5,20,0,0,1,32,3,5,5,4,32,32,1,0,3,5,5,20,0,0,2,2,0,1,1,0,0,0,0,2,0,1,1,0,0,0,1,2,0,20,20,19,0,0,1,34,0,4,4,3,0,0,0,34,0,4,4,3,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,20,20,0,1,0,1,0,0,21,21,0,2,0,1,0,0,20,20,0,2,32,1,32,32,4,4,32,1,32,1,32,32,5,5,32,1,1,0,1,1,0,0,0,0,1,0,1,1,20,20,0,1,1,0,1,1,0,0,0,1,1,0,1,1,5,5,0,1,33,0,33,33,4,4,0,0,1,0,1,1,5,5,0,0,1,0,2,2,0,0,0,0,1,0,1,2,19,19,0,1,1,0,2,2,0,0,0,1,33,48,6,4,3,3,48,0,33,48,6,4,5,5,48,3,33,48,6,4,5,5,48,2,33,48,6,4,3,3,48,1,0,1,13,14,0,98,1,1,0,0,0,0,0,98,1,1,0,48,0,4,0,98,84,84,19,48,0,3,48,66,84,84,3,48,48,3,48,66,4,4,19,48,48,4,19,0,1,1,0,0,0,0,35,0,1,1,2,64,0,1,35,0,1,1,2,64,0,0,3,0,3,54,20,64,0,1,83,64,5,54,4,64,64,0,83,64,5,54,4,64,64,1,83,64,6,6,4,64,64,3,0,1,2,5,6,7,8,0,1,9,10,11,12,0,99,0,1,0,0,0,0,0,99,0,1,18,48,0,4,32,99,32,1,2,48,32,3,0,99,85,86,20,48,0,3,48,67,85,86,4,48,48,3,48,67,5,86,20,48,48,4,48,67,85,6,20,48,48,4,0,0,0,0,0,0,0,0,0,1,0,3,0,1,0,1,0,0,2,2,0,0,1,2,0,1,1,2,0,1,1,3,0,0,0,0,0,0,0,0,0,1,0,3,0,1,0,3,0,0,1,2,0,0,1,2,0,1,1,2,0,1,1,3,0,2,4,6,8,10,12,14,0,1,0,0,0,0,0,1,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,2,3,0,1,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,3,3,3,0,3,0,3,3,3,3,3,3,3,3,3,3,0,0,1,0,1,0,1,0,1,0,1,2,3,0,1,0,1,2,3,0,1,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,0,1,0,1,0,1,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,0,1,0,1,2,3,0,1,0,1,0,1,0,1,0,0,0,45,0,3,3,44,3,45,3,4,42,4,4,13,13,13,6,6,31,31,35,35,33,33,40,40,1,1,11,11,55,55,55,0,9,29,19,22,24,26,16,44,45,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,29,0,3,3,3,0,3,44,44,45,4,4,4,4,4,4,4,4,13,13,13,13,13,13,13,6,6,6,6,6,6,6,6,6,31,31,31,31,31,31,31,31,31,35,35,35,33,33,40,1,9,9,9,9,9,9,29,29,11,38,11,19,19,19,11,11,11,11,11,11,22,22,22,22,26,26,26,26,56,21,13,42,17,17,14,44,44,44,44,44,44,44,44,55,47,55,44,45,45,46,46,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,31,0,0,0,0,0,0,0,0,0,0,35,33,1,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,5,12,12,7,7,15,39,50,18,43,43,48,49,20,23,25,27,36,10,8,28,32,34,30,7,37,41,5,12,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,52,51,4,4,4,4,4,4,4,13,13,6,6,31,35,1,1,1,9,9,11,11,11,24,24,26,26,26,22,31,31,35,13,13,35,31,13,3,3,55,55,45,44,44,54,54,13,35,35,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,13,40,9,29,22,24,45,45,31,44,57,0,6,33,11,85,31,1,19,0,4,4,4,31,45,86,88,87,0,0,58,60,60,64,64,61,0,82,0,84,84,0,0,65,79,83,67,67,67,68,62,80,69,70,76,59,59,72,72,75,73,73,73,74,0,0,77,0,0,0,0,0,0,71,63,78,81,66,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0],\\\"i8\\\",4,A.a+61464);var Fa=B;B+=16;b._sbrk=Ga;b._memset=Ha;function Ia(){return!!Ia.n}var Ja=0,Ka={};function Y(){var a=Ja;if(!a)return(A.b(0),0)|0;var c=Ka[a],d=c.type;if(!d)return(A.b(0),a)|0;var e=Array.prototype.slice.call(arguments);b.___cxa_is_pointer_type(d);Y.buffer||(Y.buffer=P(4));C[Y.buffer>>2]=a;for(var a=Y.buffer,f=0;f>2],c.D=a,(A.b(e[f]),a)|0;a=C[a>>2];return(A.b(d),a)|0}b._memcpy=La;E=O(1,\\\"i32\\\",2);S=z=A.o(B);T=S+xa;U=A.o(T);C[E>>2]=U;b.s={Math:Math,Int8Array:Int8Array,Int16Array:Int16Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array,NaN:NaN,Infinity:Infinity,byteLength:V};b.t={abort:H,assert_em:assert_em,enlargeMemory:ba,getTotalMemory:function(){return F},abortOnCannotGrowMemory:function(){H(\\\"Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value \\\"+F+\\\", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 \\\")},invoke_viiiii:function(a,c,d,e,f,h){try{b.dynCall_viiiii(a,c,d,e,f,h)}catch(l){if(\\\"number\\\"!==typeof l&&\\\"longjmp\\\"!==l)throw l;b.setThrew(1,0)}},invoke_vi:function(a,c){try{b.dynCall_vi(a,c)}catch(d){if(\\\"number\\\"!==typeof d&&\\\"longjmp\\\"!==d)throw d;b.setThrew(1,0)}},invoke_iiii:function(a,c,d,e){try{return b.dynCall_iiii(a,c,d,e)}catch(f){if(\\\"number\\\"!==typeof f&&\\\"longjmp\\\"!==f)throw f;b.setThrew(1,0)}},invoke_viiiiii:function(a,c,d,e,f,h,l){try{b.dynCall_viiiiii(a,c,d,e,f,h,l)}catch(m){if(\\\"number\\\"!==typeof m&&\\\"longjmp\\\"!==m)throw m;b.setThrew(1,0)}},invoke_iii:function(a,c,d){try{return b.dynCall_iii(a,c,d)}catch(e){if(\\\"number\\\"!==typeof e&&\\\"longjmp\\\"!==e)throw e;b.setThrew(1,0)}},invoke_viiii:function(a,c,d,e,f){try{b.dynCall_viiii(a,c,d,e,f)}catch(h){if(\\\"number\\\"!==typeof h&&\\\"longjmp\\\"!==h)throw h;b.setThrew(1,0)}},_abort:function(){b.abort()},___setErrNo:function(a){b.___errno_location&&(C[b.___errno_location()>>2]=a);return a},_emscripten_memcpy_big:function(a,c,d){K.set(K.subarray(c,c+d),a);return a},___gxx_personality_v0:function(){},___resumeException:function(a){Ja||(Ja=a);throw a+\\\" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.\\\"},__ZSt18uncaught_exceptionv:Ia,___cxa_find_matching_catch:Y,DYNAMICTOP_PTR:E,tempDoublePtr:Fa,ABORT:G,STACKTOP:z,STACK_MAX:T};var Z=function(global,env,buffer){\\\"almost asm\\\";var a=global.Int8Array;var b=new a(buffer);var c=global.Int16Array;var d=new c(buffer);var e=global.Int32Array;var f=new e(buffer);var g=global.Uint8Array;var h=new g(buffer);var i=global.Uint16Array;var j=new i(buffer);var k=global.Uint32Array;var l=new k(buffer);var m=global.Float32Array;var n=new m(buffer);var o=global.Float64Array;var p=new o(buffer);var q=global.byteLength;var r=env.DYNAMICTOP_PTR|0;var s=env.tempDoublePtr|0;var t=env.ABORT|0;var u=env.STACKTOP|0;var v=env.STACK_MAX|0;var w=0;var x=0;var y=0;var z=0;var A=global.NaN,B=global.Infinity;var C=0,D=0,E=0,F=0,G=0;var H=0;var I=global.Math.floor;var J=global.Math.abs;var K=global.Math.sqrt;var L=global.Math.pow;var M=global.Math.cos;var N=global.Math.sin;var O=global.Math.tan;var P=global.Math.acos;var Q=global.Math.asin;var R=global.Math.atan;var S=global.Math.atan2;var T=global.Math.exp;var U=global.Math.log;var V=global.Math.ceil;var W=global.Math.imul;var X=global.Math.min;var Y=global.Math.max;var Z=global.Math.clz32;var _=env.abort;var $=env.assert_em;var aa=env.enlargeMemory;var ba=env.getTotalMemory;var ca=env.abortOnCannotGrowMemory;var da=env.invoke_viiiii;var ea=env.invoke_vi;var fa=env.invoke_iiii;var ga=env.invoke_viiiiii;var ha=env.invoke_iii;var ia=env.invoke_viiii;var ja=env._abort;var ka=env.___setErrNo;var la=env._emscripten_memcpy_big;var ma=env.___gxx_personality_v0;var na=env.___resumeException;var oa=env.__ZSt18uncaught_exceptionv;var pa=env.___cxa_find_matching_catch;var qa=0;function ra(newBuffer){if(q(newBuffer)&16777215||q(newBuffer)<=16777215||q(newBuffer)>2147483648)return false;b=new a(newBuffer);d=new c(newBuffer);f=new e(newBuffer);h=new g(newBuffer);j=new i(newBuffer);l=new k(newBuffer);n=new m(newBuffer);p=new o(newBuffer);buffer=newBuffer;return true}function ya(a){a=a|0;var b=0;b=u;u=u+a|0;u=u+15&-16;return b|0}function za(){return u|0}function Aa(a){a=a|0;u=a}function Ba(a,b){a=a|0;b=b|0;u=a;v=b}function Ca(a,b){a=a|0;b=b|0;if(!w){w=a;x=b}}function Da(a){a=a|0;H=a}function Ea(){return H|0}function Fa(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0;g=u;u=u+16|0;h=g;f[h>>2]=0;e=Cb(a,b,0,0,h)|0;i=e+1|0;f[h>>2]=0;c=fc(i<<1)|0;Cb(a,b,c,i,h)|0;if((f[h>>2]|0)>0){gc(c);c=0}else d[c+(e<<1)>>1]=0;u=g;return c|0}function Ga(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=u;u=u+16|0;d=e;c=f[17218]|0;if(!c){c=Ja()|0;f[17218]=c}f[d>>2]=0;Oa(c,a,b,-2,d);if((f[d>>2]|0)>0)c=0;else c=mb(f[17218]|0)|0;u=e;return c|0}function Ha(a){a=a|0;var b=0,c=0,d=0;d=u;u=u+16|0;c=d+4|0;b=d;f[c>>2]=0;f[b>>2]=0;nb(f[17218]|0,a,b,c);u=d;return((f[c>>2]|0)>0?0:f[b>>2]|0)|0}function Ia(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0;i=u;u=u+16|0;h=i;f[h>>2]=0;e=f[17219]|0;if(!e){e=Ja()|0;f[17219]=e}sb(f[17218]|0,a,b,e,h);if((f[h>>2]|0)<=0?(g=lb(e)|0,b=g+1|0,c=fc(b<<1)|0,qb(f[17219]|0,c,b,10,h)|0,(f[h>>2]|0)<=0):0)d[c+(g<<1)>>1]=0;else c=0;u=i;return c|0}function Ja(){var a=0,b=0;b=u;u=u+16|0;a=b;f[a>>2]=0;a=Ka(a)|0;u=b;return a|0}function Ka(a){a=a|0;var c=0;do{if((a|0)!=0?(f[a>>2]|0)<=0:0){c=Rb(364)|0;if(!c){f[a>>2]=7;c=0;break}Ic(c|0,0,364)|0;f[c+4>>2]=248;b[c+72>>0]=1;b[c+73>>0]=1;if((f[a>>2]|0)>=1){Ma(c);c=0}}else c=0}while(0);return c|0}function La(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;g=f[a>>2]|0;e=c<<24>>24==0;if(!g)if(!e?(g=Rb(d)|0,f[a>>2]=g,(g|0)!=0):0){f[b>>2]=d;c=1}else c=0;else{c=(f[b>>2]|0)>=(d|0);if(!(e|c)){c=Sb(g,d)|0;if(!c)c=0;else{f[a>>2]=c;f[b>>2]=d;c=1}}else c=c&1}return c|0}function Ma(a){a=a|0;var b=0;if(a|0){f[a>>2]=0;b=f[a+48>>2]|0;if(b|0)Tb(b);b=f[a+52>>2]|0;if(b|0)Tb(b);b=f[a+56>>2]|0;if(b|0)Tb(b);b=f[a+60>>2]|0;if(b|0)Tb(b);b=f[a+64>>2]|0;if(b|0)Tb(b);b=f[a+68>>2]|0;if(b|0)Tb(b);b=f[a+348>>2]|0;if(b|0)Tb(b);Tb(a)}return}function Na(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=0;while(1){if((d|0)>=(a|0)){e=5;break}if((f[b+(d<<3)>>2]|0)>(c|0))break;d=d+1|0}if((e|0)==5)d=a+-1|0;return f[b+(d<<3)+4>>2]&255|0}function Oa(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;a:do{if(g|0?(f[g>>2]|0)<=0:0){if((a|0)==0|(c|0)==0|(d|0)<-1|e+-126<<24>>24<<24>>24>-1){f[g>>2]=1;break}if((d|0)==-1)d=Ub(c)|0;x=a+88|0;if((f[x>>2]|0)==3){Pa(a,c,d,e,g);break}f[a>>2]=0;f[a+8>>2]=c;B=a+20|0;f[B>>2]=d;f[a+12>>2]=d;l=a+16|0;f[l>>2]=d;u=a+97|0;b[u>>0]=e;i=e&1;j=i&255;m=a+120|0;f[m>>2]=j;z=a+136|0;f[z>>2]=1;k=a+76|0;f[k>>2]=0;o=a+80|0;f[o>>2]=0;f[a+228>>2]=0;A=a+336|0;f[A>>2]=0;f[a+340>>2]=0;c=(e&255)>253;v=a+98|0;b[v>>0]=c&1;n=a+124|0;e=a+224|0;if(!d){if(c){b[u>>0]=i;b[v>>0]=0}f[n>>2]=f[96+(j<<2)>>2];f[e>>2]=0;f[z>>2]=0;Qa(a);break}f[e>>2]=-1;c=f[a+60>>2]|0;y=a+140|0;f[y>>2]=(c|0)==0?a+144|0:c;c=a+48|0;e=a+72|0;if(!((La(c,a+24|0,b[e>>0]|0,d)|0)<<24>>24)){f[g>>2]=7;break}f[k>>2]=f[c>>2];if(!((Ra(a)|0)<<24>>24)){f[g>>2]=7;break}w=f[k>>2]|0;r=f[l>>2]|0;k=a+132|0;f[k>>2]=r;d=a+52|0;if(!((La(d,a+28|0,b[e>>0]|0,r)|0)<<24>>24)){f[g>>2]=7;break}f[o>>2]=f[d>>2];j=Sa(a,g)|0;if((f[g>>2]|0)<=0){i=a+244|0;d=f[i>>2]|0;do{if((d|0)>=6){d=d<<4;c=a+44|0;e=a+68|0;if((d|0)<=(f[c>>2]|0)){d=f[e>>2]|0;break}if(!((La(e,c,1,d)|0)<<24>>24)){f[g>>2]=7;break a}else{d=f[e>>2]|0;break}}else d=a+252|0}while(0);f[a+248>>2]=d;f[i>>2]=-1;f[m>>2]=j;s=a+92|0;b:do{switch(j|0){case 0:{f[k>>2]=0;break}case 1:{f[k>>2]=0;break}default:{d=a+116|0;switch(f[x>>2]|0){case 0:{c=200;t=36;break}case 1:{c=216;t=36;break}case 2:{c=184;t=36;break}case 4:{c=168;t=36;break}case 5:{c=f[s>>2]&1|0?104:120;t=36;break}case 6:{c=f[s>>2]&1|0?136:152;t=36;break}default:{}}if((t|0)==36)f[d>>2]=c;p=r+-1|0;i=f[z>>2]|0;if((i|0)<2?(f[n>>2]|0)>=0:0){do{if(b[v>>0]|0){c=f[y>>2]|0;e=f[c>>2]|0;if((e|0)>0)d=b[u>>0]|0;else d=Na(i,c,0)|0;d=d&1;if((r|0)>(e|0)){c=Na(i,c,p)|0;break}else{c=b[u>>0]|0;break}}else{d=b[u>>0]|0;c=d;d=d&1}}while(0);Ta(a,0,r,d,c&1)}else{n=f[o>>2]|0;if((b[v>>0]|0)!=0?(q=f[y>>2]|0,(f[q>>2]|0)<=0):0)d=Na(i,q,0)|0;else d=b[u>>0]|0;e=b[n>>0]|0;d=((d&255)<(e&255)?e:d)&1;m=0;while(1){if((m|0)>0?(b[w+(m+-1)>>0]|0)==7:0){do{if(!(b[v>>0]|0))t=57;else{d=f[y>>2]|0;if((m|0)<(f[d>>2]|0)){t=57;break}d=Na(f[z>>2]|0,d,m)|0}}while(0);if((t|0)==57)d=b[u>>0]|0;d=d&1}k=m;while(1){l=k+1|0;if((l|0)>=(r|0)){t=64;break}c=b[n+l>>0]|0;if(c<<24>>24==e<<24>>24){k=l;continue}if(!(1<>0]&382976)){t=68;break}else k=l}c:do{if((t|0)==64){t=0;e=e&255;do{if(b[v>>0]|0){c=f[y>>2]|0;if((r|0)<=(f[c>>2]|0))break;c=Na(f[z>>2]|0,c,p)|0;j=0;break c}}while(0);c=b[u>>0]|0;j=0}else if((t|0)==68){t=0;e=e&255;j=1}}while(0);i=c&255;i=((e&127)>>>0<(i&127)>>>0?i:e)&1;if(!(e&128))Ta(a,m,l,d,i);else{d=m;while(1){q=n+d|0;b[q>>0]=b[q>>0]&127;if((d|0)<(k|0))d=d+1|0;else break}}if(j){d=i;e=c;m=l}else break}}d=f[a+344>>2]|0;if((d|0)>0){f[g>>2]=d;break a}else{Ua(a);break b}}}}while(0);d:do{if((b[v>>0]|0?f[s>>2]&1|0:0)?((f[x>>2]|0)+-5|0)>>>0<2:0){j=0;while(1){if((j|0)>=(f[z>>2]|0))break d;c=f[y>>2]|0;d=(f[c+(j<<3)>>2]|0)+-1|0;e:do{if(f[c+(j<<3)+4>>2]&255|0){if(!j)e=0;else e=f[c+(j+-1<<3)>>2]|0;c=d;while(1){if((c|0)<(e|0))break e;i=b[w+c>>0]|0;if(!(i<<24>>24))break;if(1<<(i&255)&8194|0)break e;c=c+-1|0}if((c|0)<(d|0))while(1)if((b[w+d>>0]|0)==7)d=d+-1|0;else break;Va(a,d,4)}}while(0);j=j+1|0}}}while(0);d=f[B>>2]|0;if(!(f[s>>2]&2))d=(f[A>>2]|0)+d|0;else d=d-(f[a+352>>2]|0)|0;f[B>>2]=d;Qa(a)}}}while(0);return}function Pa(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;E=a+88|0;f[E>>2]=0;do{if(d){i=Rb(d*7|0)|0;if(!i){f[g>>2]=7;i=0;break}k=i+(d<<2)|0;D=k+(d<<1)|0;l=a+92|0;m=f[l>>2]|0;if(m&1|0)f[l>>2]=m&-4|2;e=e&1;Oa(a,c,d,e,g);if((f[g>>2]|0)<=0){y=ub(a,g)|0;w=a+16|0;x=f[w>>2]|0;Jc(D|0,y|0,x|0)|0;y=a+132|0;z=f[y>>2]|0;A=a+120|0;B=f[A>>2]|0;j=qb(a,k,d,2,g)|0;Bb(a,i,g);C=a+224|0;if((f[g>>2]|0)<=0){f[l>>2]=m;f[E>>2]=5;v=a+72|0;u=b[v>>0]|0;b[v>>0]=0;Oa(a,k,j,e^1,g);b[v>>0]=u;wb(a,g);a:do{if((f[g>>2]|0)<=0){q=f[C>>2]|0;o=a+228|0;p=f[o>>2]|0;k=0;e=0;g=0;while(1){if((g|0)>=(q|0))break;n=f[p+(g*12|0)+4>>2]|0;e=n-e|0;b:do{if((e|0)<2)e=k;else{j=f[p+(g*12|0)>>2]&2147483647;m=j+e|0;e=k;while(1){do{k=j;j=j+1|0;if((j|0)>=(m|0))break b;l=f[i+(j<<2)>>2]|0;k=f[i+(k<<2)>>2]|0;v=l-k|0;if((((v|0)>-1?v:0-v|0)|0)!=1)break}while((b[D+l>>0]|0)==(b[D+k>>0]|0));e=e+1|0}}}while(0);k=e;e=n;g=g+1|0}if(k){e=a+64|0;if(!((La(e,a+40|0,b[a+73>>0]|0,(k+q|0)*12|0)|0)<<24>>24))break;if((q|0)==1){v=f[e>>2]|0;f[v>>2]=f[p>>2];f[v+4>>2]=f[p+4>>2];f[v+8>>2]=f[p+8>>2]}p=f[e>>2]|0;f[o>>2]=p;f[C>>2]=(f[C>>2]|0)+k}v=p+4|0;e=q;while(1){u=e+-1|0;if((e|0)<=0)break a;s=p+(u*12|0)|0;q=p+(u*12|0)+4|0;if(!u)j=f[v>>2]|0;else j=(f[q>>2]|0)-(f[p+((e+-2|0)*12|0)+4>>2]|0)|0;e=f[s>>2]|0;t=e>>>31;e=e&2147483647;if((j|0)<2){j=u+k|0;if(!k)k=0;else{r=p+(j*12|0)|0;f[r>>2]=f[s>>2];f[r+4>>2]=f[s+4>>2];f[r+8>>2]=f[s+8>>2]}}else{m=(t|0)==0;o=j+-1+e|0;r=m?e:o;g=m?-1:1;n=p+(u*12|0)+8|0;o=m?o:e;c:while(1){e=o;while(1){if((e|0)==(r|0))break c;j=f[i+(e<<2)>>2]|0;l=e+g|0;m=f[i+(l<<2)>>2]|0;F=j-m|0;if((((F|0)>-1?F:0-F|0)|0)!=1)break;if((b[D+j>>0]|0)==(b[D+m>>0]|0))e=l;else break}m=k+u|0;F=f[i+(o<<2)>>2]|0;F=(F|0)<(j|0)?F:j;f[p+(m*12|0)>>2]=(h[D+F>>0]^t)<<31|F;f[p+(m*12|0)+4>>2]=f[q>>2];F=e-o|0;f[q>>2]=(f[q>>2]|0)+~((F|0)>-1?F:0-F|0);F=f[n>>2]|0;f[p+(m*12|0)+8>>2]=F&10;f[n>>2]=f[n>>2]&((F|-11)^10);o=l;k=k+-1|0}j=k+u|0;if(k|0){F=p+(j*12|0)|0;f[F>>2]=f[s>>2];f[F+4>>2]=f[s+4>>2];f[F+8>>2]=f[s+8>>2]}e=(f[i+(o<<2)>>2]|0)<(f[i+(r<<2)>>2]|0)?o:r}e=f[i+(e<<2)>>2]|0;f[p+(j*12|0)>>2]=(h[D+e>>0]^t)<<31|e;e=u}}}while(0);F=a+97|0;b[F>>0]=b[F>>0]^1}f[a+8>>2]=c;f[w>>2]=x;f[a+12>>2]=d;f[A>>2]=B;F=f[a+28>>2]|0;Jc(f[a+80>>2]|0,D|0,((x|0)>(F|0)?F:x)|0)|0;f[y>>2]=z;if((f[C>>2]|0)>1)f[A>>2]=2}}else{Oa(a,c,0,e,g);i=0}}while(0);Tb(i);f[E>>2]=3;return}function Qa(a){a=a|0;f[a+104>>2]=0;f[a+112>>2]=0;f[a>>2]=a;return}function Ra(a){a=a|0;var c=0,e=0,g=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;R=u;u=u+640|0;A=R;H=R+504|0;E=f[a+8>>2]|0;F=f[a+48>>2]|0;N=f[a+12>>2]|0;P=a+97|0;O=b[P>>0]|0;c=O&255;O=(O&255)>253;if(O){D=f[a+88>>2]|0;D=(D|0)==5^(D|0)!=6}else D=1;L=a+92|0;Q=f[L>>2]|0;i=Q&2;M=a+16|0;if(Q&4|0)f[M>>2]=0;B=c&1;C=B&255;Q=a+140|0;e=(f[Q>>2]|0)+4|0;if(O){f[e>>2]=B;if((f[a+104>>2]|0)>0?(g=jb(a)|0,g<<24>>24!=10):0){f[(f[Q>>2]|0)+4>>2]=g<<24>>24!=0&1;c=C;e=0}else{c=C;e=1}}else{f[e>>2]=c;c=10;e=0}I=a+136|0;J=a+352|0;z=(i|0)==0;y=-1;g=c;i=0;n=0;G=-1;c=0;a:while(1){x=D|g<<24>>24!=1;if((i|0)>=(N|0)){K=49;break}k=i+1|0;l=j[E+(i<<1)>>1]|0;if(!((k|0)==(N|0)|(l&64512|0)!=55296)){m=j[E+(k<<1)>>1]|0;w=(m&64512|0)==56320;i=w?i+2|0:k;if(w)l=(l<<10)+-56613888+m|0}else i=k;r=Za(a,l)|0;p=r&255;r=r&255;c=1<>0]=p;if((l|0)>65535){b[F+(i+-2)>>0]=18;v=c|262144}else v=c;if(z)w=n;else w=(((l+-8294|0)>>>0<4|((l&-4|0)==8204|(l+-8234|0)>>>0<5))&1)+n|0;m=(y|0)<126;n=(e|0)==1;o=(e|0)==2;k=o?3:e;o=o&m;c=o?v|1048576:v;if(!r){if(!n){v=G;x=y;g=0;e=k;n=w;G=v;y=x;continue}f[(f[Q>>2]|0)+((f[I>>2]|0)+-1<<3)+4>>2]=0;t=G;x=y;g=0;e=0;n=w;c=v;G=t;y=x;continue}s=(r|0)==13;switch(p<<24>>24){case 1:case 13:{if(!n)if(o){b[F+(f[A+(y<<2)>>2]|0)>>0]=21;e=3;c=v|2097152}else{e=k;c=v}else{f[(f[Q>>2]|0)+((f[I>>2]|0)+-1<<3)+4>>2]=1;e=0;c=v}x=y;g=1;n=w;G=s?t:G;y=x;continue a}default:{}}if((r+-19|0)>>>0<3){c=y+1|0;if((c|0)<126){f[A+(c<<2)>>2]=t;b[H+c>>0]=e}if((r|0)!=19){t=G;x=g;y=c;e=3;n=w;c=v;G=t;g=x;continue}b[q>>0]=20;t=G;x=g;y=c;e=2;n=w;c=v;G=t;g=x;continue}switch(p<<24>>24){case 22:{if((y|0)<=-1){s=G;t=e;v=g;x=y;n=w;G=s;e=t;g=v;y=x;continue a}if(m)e=b[H+y>>0]|0;v=G;x=g;y=y+-1|0;n=w;G=v;g=x;continue a}case 7:break;default:{r=G;s=e;t=g;x=y;n=w;c=v;G=r;e=s;g=t;y=x;continue a}}m=(i|0)<(N|0);if((l|0)==13&m?(d[E+(i<<1)>>1]|0)==10:0){r=G;s=e;t=g;x=y;n=w;c=v;G=r;e=s;g=t;y=x;continue}c=f[Q>>2]|0;k=f[I>>2]|0;l=k+-1|0;f[c+(l<<3)>>2]=i;if(!x)f[c+(l<<3)+4>>2]=1;if(f[L>>2]&4|0){f[M>>2]=i;f[J>>2]=w}if(!m){r=G;s=e;t=g;x=y;n=w;c=v;G=r;e=s;g=t;y=x;continue}f[I>>2]=k+1;if(!((kb(a)|0)<<24>>24)){c=0;break}if(O){g=C;e=1;c=B}else{e=0;c=h[P>>0]|0}f[(f[Q>>2]|0)+((f[I>>2]|0)+-1<<3)+4>>2]=c;x=G;y=-1;n=w;c=v;G=x}\\nif((K|0)==49){F=(y|0)>125;g=F?125:y;e=F?2:e;while(1){if((g|0)<=-1)break;if((e|0)==2){K=52;break}e=b[H+g>>0]|0;g=g+-1|0}if((K|0)==52)c=c|1048576;g=f[I>>2]|0;e=g+-1|0;if(f[L>>2]&4){if((f[M>>2]|0)<(N|0)){f[I>>2]=e;g=e}}else{f[(f[Q>>2]|0)+(e<<3)>>2]=N;f[J>>2]=n}if(!x)f[(f[Q>>2]|0)+(g+-1<<3)+4>>2]=1;if(O){b[P>>0]=f[(f[Q>>2]|0)+4>>2];e=0}else e=0;while(1){if((e|0)>=(g|0))break;P=f[96+((f[(f[Q>>2]|0)+(e<<3)+4>>2]&1)<<2)>>2]|c;e=e+1|0;c=P}f[a+124>>2]=(c&128|0)!=0&(b[a+96>>0]|0)!=0&1|c;f[a+128>>2]=G;c=1}u=R;return c|0}function Sa(a,c){a=a|0;c=c|0;var e=0,g=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=u;u=u+5072|0;P=W+2532|0;M=W;Q=f[a+76>>2]|0;V=f[a+80>>2]|0;R=f[a+8>>2]|0;O=f[a+16>>2]|0;N=a+124|0;g=f[N>>2]|0;I=a+98|0;K=a+97|0;U=a+140|0;if((b[I>>0]|0)!=0?(e=f[U>>2]|0,(f[e>>2]|0)<=0):0)i=Na(f[a+136>>2]|0,e,0)|0;else i=b[K>>0]|0;H=a+244|0;f[H>>2]=0;a:do{if((f[c>>2]|0)<=0){e=$a(g)|0;if((e|0)==2){T=a+136|0;if((f[a+88>>2]|0)>>>0>1){i=0;while(1){if((i|0)>=(f[T>>2]|0)){e=2;break a}g=f[U>>2]|0;if(!i)e=0;else e=f[g+(i+-1<<3)>>2]|0;k=f[g+(i<<3)>>2]|0;g=f[g+(i<<3)+4>>2]&255;while(1){if((e|0)>=(k|0))break;b[V+e>>0]=g;e=e+1|0}i=i+1|0}}if(!(g&7985152)){ab(a,P);k=0;b:while(1){if((k|0)>=(f[T>>2]|0)){e=2;break}e=f[U>>2]|0;if(!k)g=0;else g=f[e+(k+-1<<3)>>2]|0;l=f[e+(k<<3)>>2]|0;i=f[e+(k<<3)+4>>2]&255;c:while(1){if((g|0)>=(l|0))break;b[V+g>>0]=i;e=g+1|0;switch(b[Q+g>>0]|0){case 18:{g=e;continue c}case 7:break;default:if(!((cb(P,g)|0)<<24>>24)){S=28;break b}else{g=e;continue c}}if((e|0)>=(O|0)){g=e;continue}if((d[R+(g<<1)>>1]|0)==13?(d[R+(e<<1)>>1]|0)==10:0){g=e;continue}bb(P,i);g=e}k=k+1|0}if((S|0)==28){f[c>>2]=7;e=0}break}ab(a,M);d[P>>1]=i&255;k=0;l=0;c=0;F=0;E=0;B=i;C=i;e=0;i=0;d:while(1){if((i|0)>=(O|0))break;x=Q+i|0;y=b[x>>0]|0;z=F+1|0;v=e|262144;D=V+i|0;A=P+(z<<1)|0;g=C&255;m=e|-2147483648;o=g&127;G=i+1|0;p=(c|0)!=0;n=g&1;q=(c|0)==0;r=(o|0)!=(B&127|0);s=g+2&126;t=(o+1|1)&255;w=(l|c|0)==0;switch(y<<24>>24){case 15:case 12:case 14:case 11:{b[D>>0]=B;e=(y+-11&255)<2?s:t;if(w&(e&255)<126){C=y<<24>>24==12|y<<24>>24==15?e|-128:e;d[A>>1]=C&255;x=B;E=i;y=c;A=l;D=k;F=z;e=v;i=G;B=x;c=y;l=A;k=D;continue d}else{w=C;x=B;y=E;z=F;A=c;D=k;l=(q&1)+l|0;e=v;i=G;C=w;B=x;E=y;F=z;c=A;k=D;continue d}}case 16:{b[D>>0]=B;if(p){t=C;w=B;x=E;y=F;z=c;A=l;D=k;e=v;i=G;C=t;B=w;E=x;F=y;c=z;l=A;k=D;continue d}if(l|0){x=C;y=B;z=E;A=F;D=k;l=l+-1|0;c=0;e=v;i=G;C=x;B=y;E=z;F=A;k=D;continue d}if(!F){y=C;z=B;A=E;D=k;l=0;c=0;F=0;e=v;i=G;C=y;B=z;E=A;k=D;continue d}e=F+-1|0;if((j[P+(F<<1)>>1]|0)>=256){x=C;y=B;z=E;A=F;D=k;l=0;c=0;e=v;i=G;C=x;B=y;E=z;F=A;k=D;continue d}A=B;E=i;D=k;l=0;c=0;F=e;C=d[P+(e<<1)>>1]&255;e=v;i=G;B=A;k=D;continue d}case 21:case 20:{e=f[96+(n<<2)>>2]|e;b[D>>0]=o;if(r){db(M,E,B,C);e=e|-2147482624}else e=e|1024;m=y<<24>>24==20?s:t;if(!(w&(m&255)<126)){b[x>>0]=9;x=C;B=C;y=E;z=F;A=l;D=k;c=c+1|0;i=G;C=x;E=y;F=z;l=A;k=D;continue d}g=k+1|0;if((k|0)>=(f[H>>2]|0))f[H>>2]=g;d[A>>1]=m&255|256;eb(M,m);B=C;E=i;A=c;D=l;k=g;F=z;C=m;e=e|1<<(y&255);i=G;c=A;l=D;continue d}case 22:{if(r){db(M,E,B,C);e=m}do{if(p){b[x>>0]=9;c=c+-1|0;i=E;g=F}else{if(!k){b[x>>0]=9;k=0;c=0;i=E;g=F;break}else g=F;do{F=g;g=g+-1|0}while((j[P+(F<<1)>>1]|0)<256);fb(M);k=k+-1|0;l=0;c=0;e=e|4194304}}while(0);F=d[P+(g<<1)>>1]|0;C=F&255;F=F&255;e=e|f[96+((F&1)<<2)>>2]|1024;b[D>>0]=F&127;F=g;E=i;B=C;i=G;continue d}case 7:{e=e|128;if((b[I>>0]|0)!=0?(J=f[U>>2]|0,(i|0)>=(f[J>>2]|0)):0)g=Na(f[T>>2]|0,J,i)|0;else g=b[K>>0]|0;b[D>>0]=g;if((G|0)>=(O|0)){v=C;w=B;x=E;y=F;z=c;A=l;D=k;i=G;C=v;B=w;E=x;F=y;c=z;l=A;k=D;continue d}if((d[R+(i<<1)>>1]|0)==13?(d[R+(G<<1)>>1]|0)==10:0){v=C;w=B;x=E;y=F;z=c;A=l;D=k;i=G;C=v;B=w;E=x;F=y;c=z;l=A;k=D;continue d}if((b[I>>0]|0)!=0?(L=f[U>>2]|0,(G|0)>=(f[L>>2]|0)):0)g=Na(f[T>>2]|0,L,G)|0;else g=b[K>>0]|0;d[P>>1]=g&255;bb(M,g);D=E;k=0;l=0;c=0;F=0;B=g;C=g;i=G;E=D;continue d}case 18:{b[D>>0]=B;t=C;w=B;x=E;y=F;z=c;A=l;D=k;e=v;i=G;C=t;B=w;E=x;F=y;c=z;l=A;k=D;continue d}default:{if(r){db(M,E,B,C);e=f[((g&128|0)==0?240:232)+(n<<2)>>2]|m}b[D>>0]=C;if(!((cb(M,i)|0)<<24>>24)){S=78;break d}v=C;B=C;w=E;y=F;z=c;A=l;D=k;e=1<>0]|e;i=G;C=v;E=w;F=y;c=z;l=A;k=D;continue d}}}if((S|0)==78){e=-1;break}if(e&8380376)e=f[96+((b[K>>0]&1)<<2)>>2]|e;e=(e&128|0)!=0&(b[a+96>>0]|0)!=0&1|e;f[N>>2]=e;e=$a(e)|0}}else e=0}while(0);u=W;return e|0}function Ta(a,c,e,g,h){a=a|0;c=c|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0;A=u;u=u+32|0;y=A;z=f[a+76>>2]|0;if((f[a+128>>2]|0)>(c|0)){if((b[a+98>>0]|0)!=0?(i=f[a+140>>2]|0,(f[i>>2]|0)<=(c|0)):0)i=Na(f[a+136>>2]|0,i,c)|0;else i=b[a+97>>0]|0;if(i&1)s=((f[a+88>>2]|0)+-5|0)>>>0<2;else s=0}else s=0;f[y+12>>2]=-1;f[y+16>>2]=-1;f[y+24>>2]=c;x=b[(f[a+80>>2]|0)+c>>0]|0;b[y+28>>0]=x;w=f[a+116>>2]|0;x=x&1;f[y>>2]=f[w+(x<<2)>>2];f[y+4>>2]=f[w+8+(x<<2)>>2];if((c|0)==0?(f[a+104>>2]|0)>0:0){x=Wa(a)|0;g=x<<24>>24==4?g:x}i=b[z+c>>0]|0;t=y+8|0;v=a+248|0;w=y+20|0;x=a+244|0;if(i<<24>>24==22?(j=f[x>>2]|0,(j|0)>-1):0){q=f[v>>2]|0;f[t>>2]=f[q+(j<<4)>>2];k=f[q+(j<<4)+4>>2]|0;r=d[q+(j<<4)+12>>1]|0;f[w>>2]=f[q+(j<<4)+8>>2];f[x>>2]=j+-1;j=r}else{f[t>>2]=-1;f[w>>2]=0;Xa(a,y,g,c,c);k=c;j=i<<24>>24==17?(g&255)+1&65535:0}i=e+-1|0;g=-1;l=1;m=c;r=c;a:while(1){b:while(1){q=m;n=j;c:while(1){if((q|0)>(e|0))break a;p=q+1|0;if((q|0)>=(e|0)){j=i;while(1){m=b[z+j>>0]|0;if((j|0)<=(c|0))break;if(!(1<<(m&255)&382976))break;else j=j+-1|0}if((m&-2)<<24>>24==20)break a;else{j=h;o=l}}else{j=b[z+q>>0]|0;if(j<<24>>24==7)f[x>>2]=-1;d:do{if(s){switch(j<<24>>24){case 13:{j=1;break d}case 2:break;default:break d}e:do{if((g|0)<=(q|0)){g=p;while(1){if((g|0)>=(e|0)){g=e;l=1;break e}j=b[z+g>>0]|0;switch(j<<24>>24){case 13:case 1:case 0:{l=j;break e}default:{}}g=g+1|0}}}while(0);j=l<<24>>24==13?5:2}}while(0);j=b[66514+(j&255)>>0]|0;o=l}m=n&65535;l=b[(j&255)+(66539+(m<<4))>>0]|0;j=l&31;l=(l&255)>>>5;l=(q|0)==(e|0)&l<<24>>24==0?1:l&255;if(!(l<<16>>16)){l=o;q=p;n=j;continue}switch(l&7){case 2:{l=o;m=p;r=q;continue a}case 4:break b;case 1:{n=36;break c}case 3:{n=37;break c}default:{l=o;q=p;n=j}}}if((n|0)==36){Xa(a,y,b[66539+(m<<4)+15>>0]|0,k,q);l=o;m=p;k=q;continue}else if((n|0)==37){Xa(a,y,b[66539+(m<<4)+15>>0]|0,k,r);Xa(a,y,4,r,q);l=o;m=p;k=q;continue}}Xa(a,y,b[66539+(m<<4)+15>>0]|0,k,r);k=r;l=o;m=p;r=q}j=a+16|0;if((f[j>>2]|0)==(e|0)?(f[a+112>>2]|0)>0:0){s=Ya(a)|0;h=s<<24>>24==4?h:s}while(1){g=b[z+i>>0]|0;if((i|0)<=(c|0))break;if(!(1<<(g&255)&382976))break;else i=i+-1|0}if((g&-2)<<24>>24==20?(f[j>>2]|0)>(e|0):0){z=(f[x>>2]|0)+1|0;f[x>>2]=z;y=f[v>>2]|0;d[y+(z<<4)+12>>1]=n;f[y+(z<<4)+8>>2]=f[w>>2];f[y+(z<<4)+4>>2]=k;f[y+(z<<4)>>2]=f[t>>2]}else Xa(a,y,h,e,e);u=A;return}function Ua(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;m=f[a+76>>2]|0;o=f[a+80>>2]|0;a:do{if(f[a+124>>2]&8248192|0){i=a+98|0;j=a+97|0;k=a+140|0;l=(b[a+96>>0]|0)!=0;h=a+136|0;a=f[a+132>>2]|0;b:while(1){if((a|0)<=0)break a;while(1){if((a|0)<=0)break;d=a+-1|0;c=b[m+d>>0]|0;if(!(1<<(c&255)&8248192)){a=d;break}e=o+d|0;do{if(l&c<<24>>24==7)a=0;else{if(b[i>>0]|0?(n=f[k>>2]|0,(a|0)>(f[n>>2]|0)):0){a=Na(f[h>>2]|0,n,d)|0;break}a=b[j>>0]|0}}while(0);b[e>>0]=a;a=d}while(1){if((a|0)<=0)continue b;e=a+-1|0;c=b[m+e>>0]|0;d=1<<(c&255);g=o+e|0;if(d&382976|0){b[g>>0]=b[o+a>>0]|0;a=e;continue}if(l&c<<24>>24==7){a=0;break}if(!(d&384))a=e;else{q=17;break}}do{if((q|0)==17){q=0;if(b[i>>0]|0?(p=f[k>>2]|0,(a|0)>(f[p>>2]|0)):0){a=Na(f[h>>2]|0,p,e)|0;break}a=b[j>>0]|0}}while(0);b[g>>0]=a;a=e}}}while(0);return}function Va(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+332|0;d=f[j>>2]|0;k=a+344|0;l=a+348|0;do{if(!d){d=Rb(80)|0;f[l>>2]=d;if(!d){f[k>>2]=7;break}else{f[j>>2]=10;e=d;h=10;i=d;g=6;break}}else{i=f[l>>2]|0;e=i;h=d;g=6}}while(0);a:do{if((g|0)==6){a=a+336|0;d=f[a>>2]|0;do{if((d|0)>=(h|0)){e=Sb(i,h<<4)|0;f[l>>2]=e;if(!e){f[l>>2]=i;f[k>>2]=7;break a}else{f[j>>2]=f[j>>2]<<1;d=f[a>>2]|0;break}}}while(0);f[e+(d<<3)>>2]=b;f[e+(d<<3)+4>>2]=c;f[a>>2]=(f[a>>2]|0)+1}}while(0);return}function Wa(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;e=f[a+100>>2]|0;b=f[a+104>>2]|0;a:while(1){if((b|0)<=0){b=4;g=6;break}d=b+-1|0;c=j[e+(d<<1)>>1]|0;if((b|0)!=1&(c&64512|0)==56320){b=b+-2|0;i=j[e+(b<<1)>>1]|0;h=(i&64512|0)==55296;c=h?c+-56613888+(i<<10)|0:c;b=h?b:d}else b=d;switch(((Za(a,c)|0)&255)<<24>>24){case 0:{b=0;g=6;break a}case 13:case 1:{g=7;break a}case 7:{b=4;break a}default:{}}}if((g|0)!=6)if((g|0)==7)b=1;return b|0}function Xa(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;m=f[c>>2]|0;w=f[c+4>>2]|0;y=a+80|0;z=f[y>>2]|0;x=c+20|0;k=f[x>>2]&255;j=h[(d&255)+(m+(k<<3))>>0]|0;v=j&15;f[x>>2]=v;j=b[w+(j>>>4)>>0]|0;v=b[m+(v<<3)+7>>0]|0;w=c+28|0;x=v&255;a:do{if(!(j<<24>>24))i=e;else{r=c+16|0;p=c+12|0;o=g+-1|0;u=c+8|0;q=d<<24>>24==5;i=e+-1|0;l=a+332|0;s=a+340|0;t=a+336|0;do{switch(j<<24>>24){case 1:{f[u>>2]=e;i=e;break a}case 2:{i=f[u>>2]|0;break a}case 3:{_a(f[a+76>>2]|0,z,f[u>>2]|0,e,(h[w>>0]|0)+1&255);i=e;break a}case 4:{_a(f[a+76>>2]|0,z,f[u>>2]|0,e,(h[w>>0]|0)+2&255);i=e;break a}case 5:{i=f[p>>2]|0;if((i|0)>-1)Va(a,i,1);f[p>>2]=-1;if(f[l>>2]|0?(f[t>>2]|0)>(f[s>>2]|0):0){i=f[r>>2]|0;while(1){i=i+1|0;if((i|0)>=(e|0))break;u=z+i|0;b[u>>0]=(h[u>>0]|0)+254&254}f[s>>2]=f[t>>2];f[r>>2]=-1;if(!q){i=e;break a}Va(a,e,1);f[s>>2]=f[t>>2];i=e;break a}f[r>>2]=-1;if(!(b[m+(k<<3)+7>>0]&1))i=e;else{i=f[u>>2]|0;i=(i|0)>0?i:e}if(!q)break a;Va(a,e,1);f[s>>2]=f[t>>2];break a}case 6:{if((f[l>>2]|0)>0)f[t>>2]=f[s>>2];f[u>>2]=-1;f[p>>2]=-1;f[r>>2]=o;i=e;break a}case 7:{i=f[p>>2]|0;j=(i|0)==-1;if((d<<24>>24==3?(b[(f[a+76>>2]|0)+e>>0]|0)==5:0)?(f[a+88>>2]|0)!=6:0){if(j){f[r>>2]=o;i=e;break a}if((i|0)>-1){Va(a,i,1);f[p>>2]=-2}Va(a,e,1);i=e;break a}if(!j){i=e;break a}f[p>>2]=e;i=e;break a}case 8:{f[r>>2]=o;f[u>>2]=-1;i=e;break a}case 9:{while(1){if((i|0)<=-1)break;if(b[z+i>>0]&1){n=37;break}i=i+-1|0}if((n|0)==37){Va(a,i,4);f[s>>2]=f[t>>2]}f[u>>2]=e;i=e;break a}case 10:{Va(a,e,1);Va(a,e,2);i=e;break a}case 11:{f[t>>2]=f[s>>2];if(!q){i=e;break a}Va(a,e,4);f[s>>2]=f[t>>2];i=e;break a}case 12:{l=(h[w>>0]|0)+x|0;k=l&255;l=l&255;i=f[u>>2]|0;while(1){if((i|0)>=(e|0))break;j=z+i|0;if((h[j>>0]|0)>>>0>>0)b[j>>0]=k;i=i+1|0}f[s>>2]=f[t>>2];f[u>>2]=e;i=e;break a}case 13:{l=b[w>>0]|0;d=l&255;m=d+3|0;n=d+2|0;d=d+1&255;while(1){if((i|0)<(f[u>>2]|0)){i=e;break a}j=b[z+i>>0]|0;b:do{if((j&255|0)==(m|0)){while(1){if((j&255|0)!=(m|0))break;j=i+-1|0;b[z+i>>0]=d;i=j;j=b[z+j>>0]|0}while(1){k=i+-1|0;if(j<<24>>24!=l<<24>>24)break b;i=k;j=b[z+k>>0]|0}}}while(0);b[z+i>>0]=(j&255|0)==(n|0)?l:d;i=i+-1|0}}case 14:{l=(h[w>>0]|0)+1&255;while(1){if((i|0)<(f[u>>2]|0)){i=e;break a}j=z+i|0;k=h[j>>0]|0;if(k>>>0>l>>>0)b[j>>0]=k+254;i=i+-1|0}}default:{i=e;break a}}}while(0)}}while(0);c:do{if(v<<24>>24!=0|(i|0)<(e|0)){j=(h[w>>0]|0)+x&255;if((i|0)<(f[c+24>>2]|0)){_a(f[a+76>>2]|0,f[y>>2]|0,i,g,j);break}while(1){if((i|0)>=(g|0))break c;b[z+i>>0]=j;i=i+1|0}}}while(0);return}function Ya(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,k=0;e=f[a+108>>2]|0;g=f[a+112>>2]|0;b=0;a:while(1){if((b|0)>=(g|0)){b=4;h=6;break}d=b+1|0;c=j[e+(b<<1)>>1]|0;if((d|0)==(g|0)|(c&64512|0)!=55296)b=d;else{k=j[e+(d<<1)>>1]|0;i=(k&64512|0)==56320;c=i?(c<<10)+-56613888+k|0:c;b=i?b+2|0:d}switch(((Za(a,c)|0)&255)<<24>>24){case 0:{b=0;h=6;break a}case 13:case 1:{h=7;break a}case 2:{h=8;break a}case 5:{b=3;break a}default:{}}}if((h|0)!=6)if((h|0)==7)b=1;else if((h|0)==8)b=2;return b|0}function Za(a,b){a=a|0;b=b|0;var c=0,d=0;d=f[a+356>>2]|0;if(!((d|0)!=0?(c=wa[d&0](f[a+360>>2]|0,b)|0,(c|0)!=23):0))c=Zb(f[a+4>>2]|0,b)|0;return(c>>>0>22?10:c)|0}function _a(a,c,d,e,f){a=a|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=0;while(1){if((d|0)>=(e|0))break;h=b[a+d>>0]|0;g=((h<<24>>24==22)<<31>>31)+g|0;if(!g)b[c+d>>0]=f;d=d+1|0;g=g+((h&-2)<<24>>24==20&1)|0}return}function $a(a){a=a|0;if((a&2154498|0)==0?(a&32|0)==0|(a&8249304|0)==0:0)a=0;else a=(a&26220581|0)==0?1:2;return a|0}function ab(a,c){a=a|0;c=c|0;var e=0,g=0,h=0,i=0;f[c>>2]=a;f[c+492>>2]=0;d[c+500>>1]=0;d[c+502>>1]=0;g=a+97|0;h=c+504|0;if((b[a+98>>0]|0)!=0?(e=f[a+140>>2]|0,(f[e>>2]|0)<=0):0){g=f[a+136>>2]|0;i=Na(g,e,0)|0;b[h>>0]=i;e=Na(g,e,0)|0}else{e=b[g>>0]|0;b[h>>0]=e}e=e&1;f[c+508>>2]=e&255;b[c+506>>0]=e;b[c+505>>0]=e;f[c+496>>2]=0;e=f[a+56>>2]|0;g=c+484|0;if(!e){f[g>>2]=c+4;e=20}else{f[g>>2]=e;e=((f[a+32>>2]|0)>>>0)/24|0}f[c+488>>2]=e;i=f[a+88>>2]|0;b[c+2528>>0]=((i|0)==1|(i|0)==6)&1;return}function bb(a,c){a=a|0;c=c|0;f[a+492>>2]=0;d[a+502>>1]=0;b[a+504>>0]=c;c=c&1;f[a+508>>2]=c&255;b[a+506>>0]=c;b[a+505>>0]=c;f[a+496>>2]=0;return}function cb(a,c){a=a|0;c=c|0;var e=0,g=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;s=f[a+492>>2]|0;l=f[a>>2]|0;q=(f[l+76>>2]|0)+c|0;e=b[q>>0]|0;r=a+496+(s<<4)+12|0;n=a+496+(s<<4)+10|0;w=a+484|0;p=a+496+(s<<4)+9|0;t=a+496+(s<<4)+6|0;v=a+496+(s<<4)+4|0;s=a+496+(s<<4)|0;a:do{if(e<<24>>24==10){g=d[(f[l+8>>2]|0)+(c<<1)>>1]|0;i=j[v>>1]|0;k=g&65535;o=j[t>>1]|0;while(1){x=o;o=o+-1|0;if((x|0)<=(i|0))break;if((f[(f[w>>2]|0)+(o*24|0)+4>>2]|0)==(k|0)){u=5;break}}if((u|0)==5){g=gb(a,o,c)|0;if(g<<24>>24==10){u=19;break}b[n>>0]=10;f[r>>2]=g&255;f[s>>2]=c;e=f[(f[a>>2]|0)+80>>2]|0;i=e+c|0;g=h[i>>0]|0;if(g&128){g=g&1;b[p>>0]=g;g=1<>1]|0;while(1){if((e|0)>=(o|0))break;x=(f[w>>2]|0)+(e*24|0)+12|0;d[x>>1]=j[x>>1]|g;e=e+1|0}b[i>>0]=b[i>>0]&127;e=f[(f[a>>2]|0)+80>>2]|0}e=e+(f[(f[w>>2]|0)+(o*24|0)>>2]|0)|0;b[e>>0]=b[e>>0]&127;e=1;break}if((g<<16>>16!=0?(m=(dc(k)|0)&65535,m<<16>>16!=g<<16>>16):0)?(ac(f[l+4>>2]|0,k)|0)==1:0){b:do{if(m<<16>>16<12297){switch(m<<16>>16){case 9002:break;default:break b}if(!((hb(a,12297,c)|0)<<24>>24)){e=0;break a}}else{switch(m<<16>>16){case 12297:break;default:break b}if(!((hb(a,9002,c)|0)<<24>>24)){e=0;break a}}}while(0);if(!((hb(a,m,c)|0)<<24>>24))e=0;else u=19}else u=19}else u=19}while(0);c:do{if((u|0)==19){g=h[(f[(f[a>>2]|0)+80>>2]|0)+c>>0]|0;d:do{if(!(g&128))switch(e<<24>>24){case 0:case 1:case 13:{u=e<<24>>24!=0;b[n>>0]=e;b[p>>0]=e;f[r>>2]=u&1;f[s>>2]=c;e=u&1;u=34;break d}case 2:{b[n>>0]=2;g=b[p>>0]|0;if(!(g<<24>>24))if(!(b[a+2528>>0]|0)){e=0;i=23;g=0;u=28}else{e=0;g=0}else{e=1;i=g<<24>>24==13?5:24;g=1;u=28}if((u|0)==28)b[q>>0]=i;f[r>>2]=g;f[s>>2]=c;u=34;break d}case 5:{b[n>>0]=5;f[r>>2]=1;f[s>>2]=c;e=1;break d}case 17:{e=b[n>>0]|0;if(e<<24>>24!=10){u=34;break d}b[q>>0]=10;e=1;break c}default:{b[n>>0]=e;u=34;break d}}else{g=g&1;i=g&255;if((e+-8&255)>=3)b[q>>0]=i;b[n>>0]=i;b[p>>0]=i;f[r>>2]=g;f[s>>2]=c;e=i;u=34}}while(0);if((u|0)==34)switch(e<<24>>24){case 0:case 1:case 13:break;default:{e=1;break c}}k=1<<(e<<24>>24!=0&1);i=j[t>>1]|0;e=j[v>>1]|0;while(1){if((e|0)>=(i|0)){e=1;break c}g=f[w>>2]|0;if((f[g+(e*24|0)>>2]|0)<(c|0)){x=g+(e*24|0)+12|0;d[x>>1]=j[x>>1]|k}e=e+1|0}}}while(0);return e|0}function db(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var i=0;i=f[a+492>>2]|0;if(!(1<<(h[(f[(f[a>>2]|0)+76>>2]|0)+c>>0]|0)&7864320)){d[a+496+(i<<4)+6>>1]=d[a+496+(i<<4)+4>>1]|0;b[a+496+(i<<4)+8>>0]=g;g=((g&127)>(e&127)?g:e)&1;f[a+496+(i<<4)+12>>2]=g&255;b[a+496+(i<<4)+10>>0]=g;b[a+496+(i<<4)+9>>0]=g;f[a+496+(i<<4)>>2]=c}return}function eb(a,c){a=a|0;c=c|0;var e=0,g=0,h=0;g=a+492|0;h=f[g>>2]|0;e=a+496+(h<<4)|0;b[a+496+(h<<4)+10>>0]=10;a=d[a+496+(h<<4)+6>>1]|0;f[g>>2]=h+1;d[e+22>>1]=a;d[e+20>>1]=a;b[e+24>>0]=c;c=c&1;f[e+28>>2]=c&255;b[e+26>>0]=c;b[e+25>>0]=c;f[e+16>>2]=0;return}function fb(a){a=a|0;var c=0,d=0;d=a+492|0;c=(f[d>>2]|0)+-1|0;f[d>>2]=c;b[a+496+(c<<4)+10>>0]=10;return}function gb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,h=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=f[a+492>>2]|0;q=a+484|0;o=f[q>>2]|0;g=b[a+496+(p<<4)+8>>0]&1;h=g&255;k=a+496+(p<<4)+4|0;p=a+496+(p<<4)+6|0;m=c&65535;i=j[o+(c*24|0)+12>>1]|0;do{if(g<<24>>24!=0|(i&1|0)==0)if(g<<24>>24==0|(i&2|0)==0)if(!(i&3)){d[p>>1]=m;g=10;break}else{i=f[o+(c*24|0)+16>>2]|0;g=(h|0)==(i|0)?g:i&255;i=(j[k>>1]|0|0)!=(c|0);l=6;break}else{i=0;l=6}else{g=0;i=0;l=6}}while(0);a:do{if((l|0)==6){n=o+(c*24|0)|0;b[(f[(f[a>>2]|0)+76>>2]|0)+(f[n>>2]|0)>>0]=g;b[(f[(f[a>>2]|0)+76>>2]|0)+e>>0]=g;ib(a,c,f[n>>2]|0,g);h=d[k>>1]|0;l=h&65535;if(!i){c=m;while(1){d[p>>1]=c;if((c&65535)<=(h&65535))break a;if((f[(f[q>>2]|0)+(((c&65535)+-1|0)*24|0)>>2]|0)==(f[n>>2]|0))c=c+-1<<16>>16;else break a}}a=c;k=0-e|0;h=o+(c*24|0)+4|0;while(1){f[h>>2]=k;h=a+-1|0;if((a|0)<=(l|0))break;i=f[q>>2]|0;if((f[i+(h*24|0)>>2]|0)!=(f[n>>2]|0))break;a=h;k=0;h=i+(h*24|0)+4|0}i=j[p>>1]|0;while(1){c=c+1|0;if((c|0)>=(i|0))break a;h=f[q>>2]|0;if((f[h+(c*24|0)>>2]|0)>=(e|0))break a;h=h+(c*24|0)+4|0;if((f[h>>2]|0)<=0)continue;f[h>>2]=0}}}while(0);return g|0}function hb(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=f[a+492>>2]|0;l=a+496+(k<<4)+6|0;g=d[l>>1]|0;e=g&65535;i=a+488|0;j=a+484|0;if((e|0)>=(f[i>>2]|0)){h=f[a>>2]|0;g=h+56|0;h=h+32|0;if(!((La(g,h,1,e*48|0)|0)<<24>>24))e=0;else{e=f[j>>2]|0;if((e|0)==(a+4|0))Jc(f[g>>2]|0,e|0,480)|0;e=f[g>>2]|0;f[j>>2]=e;f[i>>2]=((f[h>>2]|0)>>>0)/24|0;g=d[l>>1]|0;m=7}}else{e=f[j>>2]|0;m=7}if((m|0)==7){m=g&65535;f[e+(m*24|0)>>2]=c;f[e+(m*24|0)+4>>2]=b&65535;f[e+(m*24|0)+16>>2]=f[a+496+(k<<4)+12>>2];f[e+(m*24|0)+8>>2]=f[a+496+(k<<4)>>2];d[e+(m*24|0)+12>>1]=0;d[l>>1]=g+1<<16>>16;e=1}return e|0}function ib(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,k=0,l=0,m=0,n=0;m=f[(f[a>>2]|0)+76>>2]|0;g=c+1|0;h=e&255;i=a+496+(f[a+492>>2]<<4)+6|0;c=(f[a+484>>2]|0)+(g*24|0)|0;while(1){if((g|0)>=(j[i>>1]|0|0))break;k=c+4|0;if((f[k>>2]|0)<=-1){if((f[c+8>>2]|0)>(d|0))break;l=f[c>>2]|0;if((l|0)>(d|0)){if((h|0)==(f[c+16>>2]|0))break;b[m+l>>0]=e;n=0-(f[k>>2]|0)|0;b[m+n>>0]=e;f[k>>2]=0;ib(a,g,l,e);ib(a,g,n,e)}}c=c+24|0;g=g+1|0}return}function jb(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,k=0;g=f[a+100>>2]|0;h=f[a+104>>2]|0;c=0;e=10;a:while(1){if((c|0)>=(h|0))break;d=c+1|0;b=j[g+(c<<1)>>1]|0;if((d|0)==(h|0)|(b&64512|0)!=55296)c=d;else{k=j[g+(d<<1)>>1]|0;i=(k&64512|0)==56320;b=i?(b<<10)+-56613888+k|0:b;c=i?c+2|0:d}b=Za(a,b)|0;d=b&255;if(e<<24>>24!=10){e=(b&255|0)==7?10:e;continue}switch(d<<24>>24){case 13:case 1:case 0:break;default:{e=10;continue a}}e=d}return e|0}function kb(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;c=f[a+136>>2]|0;d=a+140|0;b=f[d>>2]|0;e=a+60|0;g=a+36|0;if((b|0)==(a+144|0))if((c|0)>=11)if(!((La(e,g,1,160)|0)<<24>>24))b=0;else{c=f[e>>2]|0;f[d>>2]=c;a=c+80|0;do{f[c>>2]=f[b>>2];c=c+4|0;b=b+4|0}while((c|0)<(a|0));b=1}else b=1;else if(!((La(e,g,1,c<<4)|0)<<24>>24))b=0;else{f[d>>2]=f[e>>2];b=1}return b|0}function lb(a){a=a|0;var b=0;do{if(!a)a=0;else{b=f[a>>2]|0;if((b|0)!=(a|0)){if(!b){a=0;break}if((f[b>>2]|0)!=(b|0)){a=0;break}}a=f[a+16>>2]|0}}while(0);return a|0}function mb(a){a=a|0;var b=0;do{if(!a)a=0;else{b=f[a>>2]|0;if((b|0)!=(a|0)){if(!b){a=0;break}if((f[b>>2]|0)!=(b|0)){a=0;break}}a=f[a+136>>2]|0}}while(0);return a|0}function nb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;a:do{if(d|0?(f[d>>2]|0)<=0:0){do{if(a|0){e=f[a>>2]|0;if((e|0)!=(a|0)){if(!e)break;if((f[e>>2]|0)!=(e|0))break}if((b|0)>=0?(f[a+136>>2]|0)>(b|0):0){if(!c)break a;f[c>>2]=f[(f[e+140>>2]|0)+(b<<3)>>2];break a}f[d>>2]=1;break a}}while(0);f[d>>2]=27}}while(0);return}function ob(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:do{if((c|0)!=0?(f[c>>2]|0)<=0:0){do{if(a|0){e=f[a>>2]|0;if((e|0)!=(a|0)){if(!e)break;if((f[e>>2]|0)!=(e|0))break}if((b|0)>=0?(f[e+16>>2]|0)>(b|0):0){d=f[e+140>>2]|0;a=0;while(1)if((f[d+(a<<3)>>2]|0)>(b|0))break;else a=a+1|0;nb(e,a,0,c);break a}f[c>>2]=1;a=-1;break a}}while(0);f[c>>2]=27;a=-1}else a=-1}while(0);return a|0}function pb(a,b,c,e,g,h){a=a|0;b=b|0;c=c|0;e=e|0;g=g|0;h=h|0;var i=0,k=0,l=0,m=0,n=0,o=0,p=0;l=g&65535;g=(e|0)<(b|0);a:do{switch(l&11){case 0:{if(g){f[h>>2]=15;g=b;break a}else{k=b;g=c}while(1){i=k+-1|0;c=k+-2|0;if((k|0)>1?(d[a+(i<<1)>>1]&-1024)<<16>>16==-9216:0)i=(d[a+(c<<1)>>1]&-1024)<<16>>16==-10240?c:i;c=i;do{o=c;c=c+1|0;p=g;g=g+2|0;d[p>>1]=d[a+(o<<1)>>1]|0}while((c|0)<(k|0));if((i|0)>0)k=i;else{g=b;break}}break}case 1:{if(g){f[h>>2]=15;g=b;break a}else{h=b;e=c}while(1){c=h;while(1){i=c+-1|0;g=j[a+(i<<1)>>1]|0;if((c|0)>1&(g&64512|0)==56320){c=c+-2|0;o=j[a+(c<<1)>>1]|0;p=(o&64512|0)==55296;g=p?g+-56613888+(o<<10)|0:g;c=p?c:i}else c=i;if((c|0)<=0){k=0;break}if(!(1<<((Yb(g)|0)<<24>>24)&448)){k=1;break}}i=c;g=e;do{o=i;i=i+1|0;p=g;g=g+2|0;d[p>>1]=d[a+(o<<1)>>1]|0}while((i|0)<(h|0));if(k){h=c;e=g}else{g=b;break}}break}default:{o=(l&8|0)!=0;if(o){i=a;k=b;g=0;while(1){n=i;i=i+2|0;n=j[n>>1]|0;g=((((n+-8294|0)>>>0<4|((n&65532|0)==8204|(n+-8234|0)>>>0<5))^1)&1)+g|0;if((k|0)<=1)break;else k=k+-1|0}a=i+(0-b<<1)|0}else g=b;if((g|0)>(e|0)){f[h>>2]=15;break a}n=(l&1|0)!=0;m=(l&2|0)==0;l=b;while(1){k=l+-1|0;i=j[a+(k<<1)>>1]|0;if((l|0)>1&(i&64512|0)==56320){b=l+-2|0;e=j[a+(b<<1)>>1]|0;h=(e&64512|0)==55296;i=h?i+-56613888+(e<<10)|0:i;k=h?b:k}b:do{if(n&(k|0)>0)do{if(!(1<<((Yb(i)|0)<<24>>24)&448))break b;e=k+-1|0;i=j[a+(e<<1)>>1]|0;if((k|0)>1&(i&64512|0)==56320){k=k+-2|0;h=j[a+(k<<1)>>1]|0;b=(h&64512|0)==55296;i=b?i+-56613888+(h<<10)|0:i;k=b?k:e}else k=e}while((k|0)>0)}while(0);if(o){if((i&-4|0)!=8204)switch(i|0){case 8234:case 8235:case 8236:case 8237:case 8238:case 8294:case 8295:case 8296:case 8297:break;default:p=35}}else p=35;c:do{if((p|0)==35){p=0;if(m)i=k;else{i=cc(i)|0;if(i>>>0<65536){h=1;e=c}else{d[c>>1]=(i>>>10)+55232;h=2;i=i&1023|56320;e=c+2|0}d[e>>1]=i;i=h+k|0;c=c+(h<<1)|0}while(1){if((i|0)>=(l|0))break c;d[c>>1]=d[a+(i<<1)>>1]|0;i=i+1|0;c=c+2|0}}}while(0);if((k|0)>0)l=k;else break}}}}while(0);return g|0}function qb(a,c,e,g,i){a=a|0;c=c|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=u;u=u+16|0;A=C+4|0;B=C;a:do{if((i|0)!=0?(f[i>>2]|0)<=0:0){if(((a|0?(z=f[a+8>>2]|0,z|0):0)?(j=f[a+16>>2]|0,(j|e|0)>=0):0)?(k=(c|0)==0,!(k&(e|0)>0)):0){do{if(!k){if(!(z>>>0>=c>>>0&z>>>0<(c+(e<<1)|0)>>>0)){if(z>>>0>c>>>0)break;if((z+(f[a+12>>2]<<1)|0)>>>0<=c>>>0)break}f[i>>2]=1;j=0;break a}}while(0);if(!j){Wb(c,e,0,i)|0;j=0;break}w=vb(a,i)|0;if((f[i>>2]|0)>0){j=0;break}v=f[a+92>>2]|0;x=g&-13;x=(v&2|0)==0?(v&1|0)==0?g:x|4:x|8;x=((f[a+88>>2]|0)+-3|0)>>>0<4?x:x&-5;v=x&65535;j=(v&4|0)!=0;k=a+76|0;y=v&65533;b:do{if(!(v&16)){if(!j){l=c;j=e;m=0;while(1){if((m|0)>=(w|0))break b;v=(Ab(a,m,A,B)|0)==0;k=z+(f[A>>2]<<1)|0;g=f[B>>2]|0;if(v)k=rb(k,g,l,j,y,i)|0;else k=pb(k,g,l,j,x,i)|0;f[B>>2]=k;l=(l|0)==0?0:l+(k<<1)|0;j=j-k|0;m=m+1|0}}s=f[k>>2]|0;t=a+228|0;v=a+84|0;j=e;r=0;k=c;while(1){if((r|0)>=(w|0))break b;D=Ab(a,r,A,B)|0;l=f[A>>2]|0;q=z+(l<<1)|0;g=f[(f[t>>2]|0)+(r*12|0)+8>>2]|0;g=(g|0)>0?g:0;m=(b[v>>0]|0)!=0;o=j+-1|0;p=k+2|0;n=(j|0)<1;do{if(!D){if(m)g=(b[s+l>>0]|0)!=0|g;l=(g&1|0)==0?(g&4|0)==0?0:8207:8206;m=l<<16>>16==0;if(n|m)j=m?j:o;else{d[k>>1]=l;j=o;k=p}l=rb(q,f[B>>2]|0,k,j,y,i)|0;f[B>>2]=l;k=(k|0)==0?0:k+(l<<1)|0;j=j-l|0;if(b[v>>0]|0)g=(b[s+(l+-1+(f[A>>2]|0))>>0]|0)==0?g:g|2;if(!(g&10))break;if((j|0)>0){d[k>>1]=8207-((g&2)>>>1)<<16>>16;k=k+2|0}j=j+-1|0}else{if(m)g=(1<>2]|0))>>0]&8194|0)==0?g|4:g;l=(g&1|0)==0?(g&4|0)==0?0:8207:8206;m=l<<16>>16==0;if(n|m)j=m?j:o;else{d[k>>1]=l;j=o;k=p}D=pb(q,f[B>>2]|0,k,j,x,i)|0;f[B>>2]=D;k=(k|0)==0?0:k+(D<<1)|0;j=j-D|0;if(b[v>>0]|0)g=(1<>2]|0)>>0]&8194|0)==0?g|8:g;if(!(g&10))break;if((j|0)>0){d[k>>1]=8207-((g&2)>>>1)<<16>>16;k=k+2|0}j=j+-1|0}}while(0);r=r+1|0}}else{if(!j){m=c;k=w;j=e;while(1){l=k+-1|0;if((k|0)<=0)break b;D=(Ab(a,l,A,B)|0)==0;k=z+(f[A>>2]<<1)|0;g=f[B>>2]|0;if(D)g=pb(k,g,m,j,y,i)|0;else g=rb(k,g,m,j,x,i)|0;f[B>>2]=g;m=(m|0)==0?0:m+(g<<1)|0;k=l;j=j-g|0}}r=f[k>>2]|0;k=c;g=w;j=e;while(1){q=g+-1|0;if((g|0)<=0)break b;D=Ab(a,q,A,B)|0;g=f[A>>2]|0;p=z+(g<<1)|0;m=k+2|0;o=j+-1|0;l=(j|0)<1;if(!D){n=f[B>>2]|0;g=(b[r+(g+-1+n)>>0]|0)==0;if(l|g)j=g?j:o;else{d[k>>1]=8206;k=m;j=o}D=pb(p,n,k,j,y,i)|0;f[B>>2]=D;k=(k|0)==0?0:k+(D<<1)|0;j=j-D|0;if(!(b[r+(f[A>>2]|0)>>0]|0)){g=q;continue}if((j|0)>0){d[k>>1]=8206;k=k+2|0}g=q;j=j+-1|0;continue}else{g=(1<>0]&8194|0)!=0;if(l|g)j=g?j:o;else{d[k>>1]=8207;k=m;j=o}D=rb(p,f[B>>2]|0,k,j,x,i)|0;f[B>>2]=D;k=(k|0)==0?0:k+(D<<1)|0;j=j-D|0;if(1<>2]|0))>>0]&8194|0){g=q;continue}if((j|0)>0){d[k>>1]=8207;k=k+2|0}g=q;j=j+-1|0;continue}}}}while(0);j=Wb(c,e,e-j|0,i)|0;break}f[i>>2]=1;j=0}else j=0}while(0);u=C;return j|0}function rb(a,b,c,e,g,h){a=a|0;b=b|0;c=c|0;e=e|0;g=g|0;h=h|0;var i=0,k=0,l=0,m=0;i=(e|0)<(b|0);a:do{switch(g&10){case 0:{if(i){f[h>>2]=15;g=b;break a}else{i=b;g=c;while(1){d[g>>1]=d[a>>1]|0;if((i|0)>1){a=a+2|0;i=i+-1|0;g=g+2|0}else{g=b;break}}}break}case 2:{if(i){f[h>>2]=15;g=b;break a}else{l=0;i=0}do{k=i+1|0;g=j[a+(i<<1)>>1]|0;if((k|0)==(b|0)|(g&64512|0)!=55296)i=k;else{h=j[a+(k<<1)>>1]|0;e=(h&64512|0)==56320;g=e?(g<<10)+-56613888+h|0:g;i=e?i+2|0:k}k=cc(g)|0;m=l+1|0;g=c+(l<<1)|0;if(k>>>0<65536)l=m;else{d[g>>1]=(k>>>10)+55232;l=l+2|0;k=k&1023|56320;g=c+(m<<1)|0}d[g>>1]=k}while((i|0)<(b|0));g=b;break}case 8:{l=e;i=b;b:while(1){k=a;a=a+2|0;k=d[k>>1]|0;c:do{if((k&-4)<<16>>16==8204)g=l;else{switch(k<<16>>16){case 8234:case 8235:case 8236:case 8237:case 8238:case 8294:case 8295:case 8296:case 8297:{g=l;break c}default:{}}g=l+-1|0;if((l|0)<1){m=15;break b}d[c>>1]=k;c=c+2|0}}while(0);if((i|0)<=1)break;else{l=g;i=i+-1|0}}d:do{if((m|0)==15){f[h>>2]=15;while(1){if((i|0)<=1)break d;h=j[a>>1]|0;g=((((h+-8294|0)>>>0<4|((h&65532|0)==8204|(h+-8234|0)>>>0<5))^1)<<31>>31)+g|0;i=i+-1|0;a=a+2|0}}}while(0);g=e-g|0;break}default:{g=0;i=e;e:while(1){k=j[a>>1]|0;if((b|0)==1|(k&64512|0)!=55296)l=1;else{m=j[a+2>>1]|0;l=(m&64512|0)==56320;k=l?(k<<10)+-56613888+m|0:k;l=l?2:1}a=a+(l<<1)|0;b=b-l|0;f:do{if((k&-4|0)!=8204){switch(k|0){case 8234:case 8235:case 8236:case 8237:case 8238:case 8294:case 8295:case 8296:case 8297:break f;default:{}}i=i-l|0;if((i|0)<0)break e;l=cc(k)|0;m=g+1|0;k=c+(g<<1)|0;if(l>>>0<65536)g=m;else{d[k>>1]=(l>>>10)+55232;g=g+2|0;l=l&1023|56320;k=c+(m<<1)|0}d[k>>1]=l}}while(0);if((b|0)<=0)break a}f[h>>2]=15;g=b;while(1){if((g|0)<=0)break;h=j[a>>1]|0;i=((((h+-8294|0)>>>0<4|((h&65532|0)==8204|(h+-8234|0)>>>0<5))^1)<<31>>31)+i|0;g=g+-1|0;a=a+2|0}g=e-i|0}}}while(0);return g|0}function sb(a,c,e,g,i){a=a|0;c=c|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;do{if(i|0?(f[i>>2]|0)<=0:0){if(a|0?(f[a>>2]|0)==(a|0):0){if(!((c|0)>-1&(e|0)>(c|0))){f[i>>2]=1;break}if((e|0)>=0?(f[a+16>>2]|0)>=(e|0):0){if(!g){f[i>>2]=1;break}p=ob(a,c,i)|0;if((p|0)!=(ob(a,e+-1|0,i)|0)){f[i>>2]=1;break}f[g>>2]=0;m=a+8|0;f[g+8>>2]=(f[m>>2]|0)+(c<<1);o=e-c|0;f[g+16>>2]=o;f[g+12>>2]=o;n=g+20|0;f[n>>2]=o;if((b[a+98>>0]|0)!=0?(j=f[a+140>>2]|0,(f[j>>2]|0)<=(c|0)):0){p=f[a+136>>2]|0;i=Na(p,j,c)|0;j=p}else{i=b[a+97>>0]|0;j=f[a+136>>2]|0}p=g+97|0;b[p>>0]=i;f[g+136>>2]=j;f[g+228>>2]=0;f[g+124>>2]=0;f[g+88>>2]=f[a+88>>2];f[g+92>>2]=f[a+92>>2];l=g+352|0;f[l>>2]=0;if((f[a+352>>2]|0)>0){k=c;i=0;while(1){if((k|0)>=(e|0))break;j=d[(f[m>>2]|0)+(k<<1)>>1]|0;if((j&-4)<<16>>16==8204)q=23;else switch(j<<16>>16){case 8234:case 8235:case 8236:case 8237:case 8238:case 8294:case 8295:case 8296:case 8297:{q=23;break}default:{}}if((q|0)==23){q=0;i=i+1|0;f[l>>2]=i}k=k+1|0}f[n>>2]=o-i}f[g+76>>2]=(f[a+76>>2]|0)+c;l=(f[a+80>>2]|0)+c|0;f[g+80>>2]=l;f[g+224>>2]=-1;i=f[a+120>>2]|0;m=g+120|0;n=g+132|0;a:do{if((i|0)==2){tb(g);k=f[n>>2]|0;b:do{if(!k)i=b[p>>0]&1;else{i=b[l>>0]&1;if((k|0)<(o|0)?(b[p>>0]&1)!=i<<24>>24:0){i=2;break}else j=1;while(1){if((j|0)==(k|0))break b;if((b[l+j>>0]&1)==i<<24>>24)j=j+1|0;else{i=2;break}}}}while(0);f[m>>2]=i&255;switch(i&3){case 0:{i=(h[p>>0]|0)+1&254;break}case 1:{i=b[p>>0]|1;break}default:break a}b[p>>0]=i;i=0;q=38}else{f[m>>2]=i;i=f[a+132>>2]|0;i=(i|0)>(c|0)?(i|0)<(e|0)?i-c|0:o:0;q=38}}while(0);if((q|0)==38)f[n>>2]=i;f[g>>2]=a;break}f[i>>2]=1;break}f[i>>2]=27}}while(0);return}function tb(a){a=a|0;var c=0,d=0,e=0,g=0,i=0;d=f[a+76>>2]|0;g=f[a+80>>2]|0;c=f[a+16>>2]|0;i=b[a+97>>0]|0;e=a+132|0;a:do{if((b[d+(c+-1)>>0]|0)!=7){while(1){if((c|0)<=0)break;a=c+-1|0;if(!(1<>0]&8248192))break;else c=a}while(1){if((c|0)<=0)break a;a=c+-1|0;if((b[g+a>>0]|0)==i<<24>>24)c=a;else break}}}while(0);f[e>>2]=c;return}function ub(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;a:do{if((c|0)!=0?(f[c>>2]|0)<=0:0){do{if(a|0){d=f[a>>2]|0;if((d|0)!=(a|0)){if(!d)break;if((f[d>>2]|0)!=(d|0))break}e=f[a+16>>2]|0;if((e|0)<1){f[c>>2]=1;d=0;break a}g=a+132|0;h=f[g>>2]|0;i=a+80|0;if((e|0)==(h|0)){d=f[i>>2]|0;break a}d=a+52|0;if(!((La(d,a+28|0,b[a+72>>0]|0,e)|0)<<24>>24)){f[c>>2]=7;d=0;break a}d=f[d>>2]|0;if((h|0)>0?(j=f[i>>2]|0,(d|0)!=(j|0)):0)Jc(d|0,j|0,h|0)|0;Ic(d+h|0,b[a+97>>0]|0,e-h|0)|0;f[g>>2]=e;f[i>>2]=d;break a}}while(0);f[c>>2]=27;d=0}else d=0}while(0);return d|0}function vb(a,b){a=a|0;b=b|0;var c=0;a:do{if((b|0)!=0?(f[b>>2]|0)<=0:0){do{if(a|0){c=f[a>>2]|0;if((c|0)!=(a|0)){if(!c)break;if((f[c>>2]|0)!=(c|0))break}wb(a,b);if((f[b>>2]|0)>0){a=-1;break a}a=f[a+224>>2]|0;break a}}while(0);f[b>>2]=27;a=-1}else a=-1}while(0);return a|0}function wb(a,c){a=a|0;c=c|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=a+224|0;a:do{if((f[u>>2]|0)<=-1){s=a+97|0;v=a+228|0;t=a+16|0;do{if((f[a+120>>2]|0)==2){p=f[t>>2]|0;r=f[a+80>>2]|0;q=f[a+132>>2]|0;e=0;i=0;g=-2;while(1){j=i+1|0;if((e|0)>=(q|0))break;o=b[r+e>>0]|0;e=e+1|0;i=o<<24>>24==g<<24>>24?i:j;g=o}if((p|0)==(q|0)&(i|0)==1){xb(a,b[r>>0]|0);break}m=(p|0)>(q|0);o=m?j:i;e=a+64|0;if(!((La(e,a+40|0,b[a+73>>0]|0,o*12|0)|0)<<24>>24))break a;n=f[e>>2]|0;l=0;e=126;k=0;i=0;while(1){g=b[r+i>>0]|0;e=(g&255)<(e&255)?g:e;k=(g&255)>(k&255)?g:k;j=i;while(1){j=j+1|0;if((j|0)>=(q|0)){g=0;break}if((b[r+j>>0]|0)!=g<<24>>24){g=1;break}}f[n+(l*12|0)>>2]=i;f[n+(l*12|0)+4>>2]=j-i;f[n+(l*12|0)+8>>2]=0;l=l+1|0;if(!g)break;else i=j}if(m){f[n+(l*12|0)>>2]=q;f[n+(l*12|0)+4>>2]=p-q;q=b[s>>0]|0;e=(q&255)<(e&255)?q:e}f[v>>2]=n;f[u>>2]=o;yb(a,e,k);e=0;g=0;while(1){if((g|0)>=(o|0))break;p=n+(g*12|0)|0;q=f[p>>2]|0;f[p>>2]=h[r+q>>0]<<31|q;p=n+(g*12|0)+4|0;q=(f[p>>2]|0)+e|0;f[p>>2]=q;e=q;g=g+1|0}if((l|0)<(o|0)){r=h[s>>0]|0;s=n+((r&1|0?0:l)*12|0)|0;f[s>>2]=r<<31|f[s>>2]}}else xb(a,b[s>>0]|0)}while(0);e=f[a+336>>2]|0;b:do{if((e|0)>0){s=f[a+348>>2]|0;g=s+(e<<3)|0;e=s;while(1){if(e>>>0>=g>>>0)break b;s=zb(f[u>>2]|0,f[v>>2]|0,f[e>>2]|0,c)|0;s=(f[v>>2]|0)+(s*12|0)+8|0;f[s>>2]=f[s>>2]|f[e+4>>2];e=e+8|0}}}while(0);if((f[a+352>>2]|0)>0){e=f[a+8>>2]|0;i=e+(f[t>>2]<<1)|0;j=e;while(1){if(e>>>0>=i>>>0)break a;g=d[e>>1]|0;if((g&-4)<<16>>16==8204)w=31;else switch(g<<16>>16){case 8234:case 8235:case 8236:case 8237:case 8238:case 8294:case 8295:case 8296:case 8297:{w=31;break}default:{}}if((w|0)==31){w=0;t=zb(f[u>>2]|0,f[v>>2]|0,e-j>>1,c)|0;t=(f[v>>2]|0)+(t*12|0)+8|0;f[t>>2]=(f[t>>2]|0)+-1}e=e+2|0}}}}while(0);return}function xb(a,b){a=a|0;b=b|0;var c=0;c=a+232|0;f[a+228>>2]=c;f[a+224>>2]=1;f[c>>2]=(b&255)<<31;f[a+236>>2]=f[a+16>>2];f[a+240>>2]=0;return}function yb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o;a:do{if(((b|1)&255)<(c&255)){l=b+1<<24>>24;m=f[a+228>>2]|0;i=f[a+80>>2]|0;j=a+132|0;k=a+16|0;g=(((f[j>>2]|0)<(f[k>>2]|0))<<31>>31)+(f[a+224>>2]|0)|0;b=c;b:while(1){b=b+-1<<24>>24;if((b&255)<(l&255))break;else a=0;while(1){while(1){if((a|0)>=(g|0))continue b;if((h[i+(f[m+(a*12|0)>>2]|0)>>0]|0)>=(b&255)){c=a;break}a=a+1|0}while(1){e=c+1|0;if((e|0)>=(g|0)){d=c;break}if((h[i+(f[m+(e*12|0)>>2]|0)>>0]|0)<(b&255)){d=c;break}else c=e}while(1){if((a|0)>=(d|0))break;q=m+(a*12|0)|0;f[n>>2]=f[q>>2];f[n+4>>2]=f[q+4>>2];f[n+8>>2]=f[q+8>>2];p=m+(d*12|0)|0;f[q>>2]=f[p>>2];f[q+4>>2]=f[p+4>>2];f[q+8>>2]=f[p+8>>2];f[p>>2]=f[n>>2];f[p+4>>2]=f[n+4>>2];f[p+8>>2]=f[n+8>>2];d=d+-1|0;a=a+1|0}if((e|0)==(g|0))continue b;else a=c+2|0}}if(!(l&1)){b=(((f[j>>2]|0)==(f[k>>2]|0))<<31>>31)+g|0;a=0;while(1){if((a|0)>=(b|0))break a;p=m+(a*12|0)|0;f[n>>2]=f[p>>2];f[n+4>>2]=f[p+4>>2];f[n+8>>2]=f[p+8>>2];q=m+(b*12|0)|0;f[p>>2]=f[q>>2];f[p+4>>2]=f[q+4>>2];f[p+8>>2]=f[q+8>>2];f[q>>2]=f[n>>2];f[q+4>>2]=f[n+4>>2];f[q+8>>2]=f[n+8>>2];b=b+-1|0;a=a+1|0}}}}while(0);u=o;return}function zb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;g=0;e=0;while(1){if((e|0)>=(a|0)){i=6;break}h=f[b+(e*12|0)+4>>2]|0;j=f[b+(e*12|0)>>2]&2147483647;if((j|0)<=(c|0)?(h-g+j|0)>(c|0):0)break;g=h;e=e+1|0}if((i|0)==6){f[d>>2]=27;e=0}return e|0}function Ab(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;i=u;u=u+16|0;e=i;f[e>>2]=0;do{if(a){g=f[a>>2]|0;if((g|0)!=(a|0)){if(!g){h=5;break}if((f[g>>2]|0)!=(g|0)){h=5;break}}wb(a,e);if((f[e>>2]|0)>0)a=0;else{if((b|0)>=0?(f[a+224>>2]|0)>(b|0):0){a=f[a+228>>2]|0\\n;e=f[a+(b*12|0)>>2]|0;if(c|0)f[c>>2]=e&2147483647;if(d|0){if((b|0)>0)a=(f[a+(b*12|0)+4>>2]|0)-(f[a+((b+-1|0)*12|0)+4>>2]|0)|0;else a=f[a+4>>2]|0;f[d>>2]=a}a=e>>>31;break}f[e>>2]=1;a=0}}else h=5}while(0);if((h|0)==5){f[e>>2]=27;a=0}u=i;return a|0}function Bb(a,b,c){a=a|0;b=b|0;c=c|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:do{if(c|0?(f[c>>2]|0)<=0:0){if(!b){f[c>>2]=1;break}vb(a,c)|0;if((f[c>>2]|0)<1?(p=f[a+228>>2]|0,k=a+224|0,l=p+((f[k>>2]|0)*12|0)|0,m=a+20|0,(f[m>>2]|0)>=1):0){j=p;e=0;c=b;while(1){if(j>>>0>=l>>>0)break;g=f[j>>2]|0;i=f[j+4>>2]|0;if((g|0)>-1)while(1){h=c+4|0;f[c>>2]=g;e=e+1|0;if((e|0)<(i|0)){g=g+1|0;c=h}else{c=h;break}}else{h=i-e+(g&2147483647)|0;while(1){h=h+-1|0;g=c+4|0;f[c>>2]=h;e=e+1|0;if((e|0)>=(i|0)){c=g;break}else c=g}}j=j+12|0}if((f[a+336>>2]|0)>0){e=f[k>>2]|0;g=0;c=0;while(1){if((c|0)>=(e|0))break;o=f[p+(c*12|0)+8>>2]|0;g=((o&5|0)!=0&1)+g+((o&10|0)!=0&1)|0;c=c+1|0}h=f[m>>2]|0;while(1){a=e+-1|0;if(!((e|0)>0&(g|0)>0))break a;m=f[p+(a*12|0)+8>>2]|0;c=h+-1|0;if(!(m&10))c=h;else{f[b+(c<<2)>>2]=-1;g=g+-1|0}if((e|0)>1)l=f[p+((e+-2|0)*12|0)+4>>2]|0;else l=0;k=(g|0)>0;j=f[p+(a*12|0)+4>>2]|0;while(1){e=j+-1|0;h=c+-1|0;i=b+(h<<2)|0;if(!(k&(j|0)>(l|0)))break;f[i>>2]=f[b+(e<<2)>>2];j=e;c=h}if(!(m&5)){h=c;e=a;continue}f[i>>2]=-1;e=a;g=g+-1|0}}if((f[a+352>>2]|0)>0){o=f[k>>2]|0;m=a+8|0;c=0;a=0;e=0;while(1){if((a|0)>=(o|0))break a;n=f[p+(a*12|0)+4>>2]|0;l=n-e|0;g=(f[p+(a*12|0)+8>>2]|0)==0;b:do{if((c|0)==(e|0)&g)c=l+c|0;else{if(g)while(1){if((e|0)>=(n|0))break b;f[b+(c<<2)>>2]=f[b+(e<<2)>>2];e=e+1|0;c=c+1|0}j=f[p+(a*12|0)>>2]|0;i=j&2147483647;j=(j|0)>-1;k=l+-1+i|0;h=0;while(1){if((h|0)>=(l|0))break b;e=j?h+i|0:k-h|0;g=d[(f[m>>2]|0)+(e<<1)>>1]|0;c:do{if((g&-4)<<16>>16!=8204){switch(g<<16>>16){case 8234:case 8235:case 8236:case 8237:case 8238:case 8294:case 8295:case 8296:case 8297:break c;default:{}}f[b+(c<<2)>>2]=e;c=c+1|0}}while(0);h=h+1|0}}}while(0);a=a+1|0;e=n}}}}}while(0);return}function Cb(a,b,c,e,g){a=a|0;b=b|0;c=c|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=u;u=u+656|0;j=o+32|0;l=o+56|0;m=o+28|0;n=o+24|0;k=o;if(!g){n=0;u=o;return n|0}if((Db(f[g>>2]|0)|0)<<24>>24){n=0;u=o;return n|0}if(!((a|0)==0|(b|0)<-1)?(h=(c|0)==0,!((e|0)<0|h&(e|0)!=0)):0){if((b|0)==-1)b=Ub(a)|0;if((b|0)<1){Wb(c,e,0,g)|0;n=0;u=o;return n|0}do{if(!h){if(!(a>>>0<=c>>>0&(a+(b<<1)|0)>>>0>c>>>0)?!(c>>>0<=a>>>0&(c+(e<<1)|0)>>>0>a>>>0):0)break;f[g>>2]=1;n=0;u=o;return n|0}}while(0);f[m>>2]=0;f[n>>2]=0;h=Fb(a,b)|0;if((h|0)>(e|0)){f[g>>2]=15;n=h;u=o;return n|0}h=(b|0)>(h|0)?b:h;if((h|0)>=301){i=Rb(h<<1)|0;if(!i){f[g>>2]=7;n=0;u=o;return n|0}}else{i=l;h=300}Vb(i,a,b)|0;if((h|0)>(b|0))Ic(i+(b<<1)|0,0,h-b<<1|0)|0;Gb(i,b,m,n);Hb(i,b,f[m>>2]|0,f[n>>2]|0);d[k>>1]=8203;d[k+2>>1]=0;f[k+4>>2]=3;f[k+8>>2]=2;f[k+12>>2]=262144;f[k+16>>2]=393216;f[k+20>>2]=0;f[j>>2]=f[k>>2];f[j+4>>2]=f[k+4>>2];f[j+8>>2]=f[k+8>>2];f[j+12>>2]=f[k+12>>2];f[j+16>>2]=f[k+16>>2];f[j+20>>2]=f[k+20>>2];b=Ib(i,b,g,j)|0;Gb(i,b,m,n);Hb(i,b,f[m>>2]|0,f[n>>2]|0);Vb(c,i,Qb(b,e)|0)|0;if((i|0)!=(l|0))Tb(i);if((b|0)>(e|0)){f[g>>2]=15;n=b;u=o;return n|0}else{n=Wb(c,e,b,g)|0;u=o;return n|0}}f[g>>2]=1;n=0;u=o;return n|0}function Db(a){a=a|0;return(a|0)>0|0}function Eb(a){a=a|0;var b=0;b=a&65535;if((a+-1570&65535)<178){b=d[1454+(b+-1570<<1)>>1]|0;return b|0}if(a<<16>>16==8205){b=3;return b|0}if((a+-8301&65535)<3){b=4;return b|0}if((a+1200&65535)<275){b=h[67545+(b+-64336)>>0]|0;return b|0}if((a+400&65535)>=141){b=0;return b|0}b=h[67820+(b+-65136)>>0]|0;return b|0}function Fb(a,b){a=a|0;b=b|0;var c=0,e=0,f=0,g=0,h=0;g=b+-1|0;c=0;f=b;a:while(1){do{if((c|0)>=(b|0))break a;e=d[a+(c<<1)>>1]|0;h=c;c=c+1|0;if((h|0)<(g|0)&e<<16>>16==1604?Ob(d[a+(c<<1)>>1]|0)|0:0)break}while(!(Pb(e)|0));f=f+-1|0}return f|0}function Gb(a,b,c,e){a=a|0;b=b|0;c=c|0;e=e|0;var g=0,h=0;h=0;while(1){g=(h|0)<(b|0);if(g&(d[a+(h<<1)>>1]|0)==32)h=h+1|0;else break}if(g)g=0;else{a=0;f[c>>2]=h;f[e>>2]=a;return}while(1){b=b+-1|0;if((d[a+(b<<1)>>1]|0)!=32)break;else g=g+1|0}f[c>>2]=h;f[e>>2]=g;return}function Hb(a,b,c,e){a=a|0;b=b|0;c=c|0;e=e|0;var f=0,g=0;b=b-e|0;while(1){b=b+-1|0;if((c|0)>=(b|0))break;g=a+(c<<1)|0;f=d[g>>1]|0;e=a+(b<<1)|0;d[g>>1]=d[e>>1]|0;d[e>>1]=f;c=c+1|0}return}function Ib(a,b,c,e){a=a|0;b=b|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=u;u=u+32|0;z=B;j=0;while(1){if((j|0)>=(b|0))break;k=a+(j<<1)|0;g=d[k>>1]|0;i=g&65535;if((g+1200&65535)<176){g=d[820+(i+-64336<<1)>>1]|0;if(g<<16>>16)A=7}else if((g+400&65535)<141){g=d[1172+(i+-65136<<1)>>1]|0;A=7}else A=7;if((A|0)==7){A=0;d[k>>1]=g}j=j+1|0}w=b+-1|0;y=w;m=0;p=Eb(d[a+(w<<1)>>1]|0)|0;j=0;k=0;q=0;r=0;o=0;i=-2;while(1){if((w|0)==-1)break;n=p&65535;if((n&65280|0)==0?((Eb(d[a+(w<<1)>>1]|0)|0)&4)==0:0){v=m;n=i;g=w}else A=13;do{if((A|0)==13){A=0;g=w+-1|0;v=m;x=i;a:while(1){l=(x|0)<0;i=g;while(1){if(!l)break a;if((i|0)==-1){g=-1;v=0;x=3e3;continue a}m=Eb(d[a+(i<<1)>>1]|0)|0;t=(m&4)==0;g=((t^1)<<31>>31)+i|0;if(t){v=m;x=i;continue a}else i=g}}if((j&16)==0|(n&32|0)==0){s=p;t=o;g=w}else{g=a+(w<<1)|0;i=Kb(d[g>>1]|0)|0;if(!(i<<16>>16))g=w;else{d[g>>1]=-1;d[a+(y<<1)>>1]=i;g=y}s=Eb(i)|0;j=k;t=1}if((g|0)>0){if((d[a+(g+-1<<1)>>1]|0)==32){p=d[a+(g<<1)>>1]|0;w=(Lb(p)|0)==0;q=p<<16>>16==1574&w?1:q;r=w?r:1}}else if(!g){p=d[a>>1]|0;w=(Lb(p)|0)==0;q=p<<16>>16==1574&w?1:q;r=w?r:1}m=v&65535;n=j&65535;p=s&65535;w=p&3;o=h[67473+((m&3)<<4)+((n&3)<<2)+w>>0]|0;if((w|0)!=1){l=a+(g<<1)|0;i=d[l>>1]|0;if(Mb(i)|0)if((n&2|0)==0|(m&1|0)==0|(i&-2)<<16>>16==1612)o=0;else o=n>>>4&1^1|m>>>5&1^1}else{i=a+(g<<1)|0;o=o&1;l=i;i=d[i>>1]|0}if(((i^1536)&65535)<256){if(Mb(i)|0){d[l>>1]=o+65136+(h[67537+((i&65535)+-1611)>>0]|0);p=s;o=t;n=x;break}i=p>>>8;if(p&8|0){d[l>>1]=i+64336+o;p=s;o=t;n=x;break}if((i|0)!=0&(p&4|0)==0){d[l>>1]=i+65136+o;p=s;o=t;n=x}else{p=s;o=t;n=x}}else{p=s;o=t;n=x}}}while(0);i=(p&4)==0;k=i?j:k;j=i?p:j;i=i?g:y;l=g+-1|0;if((l|0)==(n|0)){y=i;m=v;p=v;i=-2;w=l;continue}if(!g){y=i;m=v;i=n;w=l;continue}y=i;m=v;p=Eb(d[a+(l<<1)>>1]|0)|0;i=n;w=l}if(o){f[z>>2]=f[e>>2];f[z+4>>2]=f[e+4>>2];f[z+8>>2]=f[e+8>>2];f[z+12>>2]=f[e+12>>2];f[z+16>>2]=f[e+16>>2];f[z+20>>2]=f[e+20>>2];b=Nb(a,b,b,c,z)|0}if(!(q|r)){A=b;u=B;return A|0}A=Jb(b)|0;u=B;return A|0}function Jb(a){a=a|0;return a|0}function Kb(a){a=a|0;switch(a<<16>>16){case 1570:{a=1628;break}case 1571:{a=1629;break}case 1573:{a=1630;break}case 1575:{a=1631;break}default:a=0}return a|0}function Lb(a){a=a|0;return(a+-1587&65535)<4|0}function Mb(a){a=a|0;return(a+-1611&65535)<8|0}function Nb(a,b,c,e,g){a=a|0;b=b|0;c=c|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=(b<<1)+2|0;n=Rb(m)|0;if(!n){f[e>>2]=7;n=0;return n|0}Ic(n|0,0,m|0)|0;c=0;h=0;e=0;while(1){if((e|0)>=(b|0))break;i=d[a+(e<<1)>>1]|0;if(i<<16>>16==-1){c=c+1|0;h=h+-1|0}else d[n+(h<<1)>>1]=i;h=h+1|0;e=e+1|0}while(1){if((c|0)<=-1)break;d[n+(e<<1)>>1]=0;e=e+-1|0;c=c+-1|0}Vb(a,n,b)|0;if(f[g+4>>2]|0){c=Ub(a)|0;if(!(f[g+12>>2]|0)){j=1;k=0;l=14}}else{j=(f[g+12>>2]|0)==0;k=1;l=14}if((l|0)==14){Ic(n|0,0,m|0)|0;c=b;e=0;i=b;while(1){if((i|0)<=-1){c=0;break}h=d[a+(i<<1)>>1]|0;if(k&h<<16>>16==-1|j&h<<16>>16==-2){c=c+1|0;e=e+1|0}else d[n+(c<<1)>>1]=h;c=c+-1|0;i=i+-1|0}while(1){if((c|0)>=(e|0))break;d[n+(c<<1)>>1]=32;c=c+1|0}Vb(a,n,b)|0;c=b}k=(f[g+8>>2]|0)==0;g=(f[g+16>>2]|0)==0;j=g|k^1;if(k|g){Ic(n|0,0,m|0)|0;h=0;c=0;e=0;while(1){if((e|0)>=(b|0))break;i=d[a+(e<<1)>>1]|0;if(k&i<<16>>16==-1|j&i<<16>>16==-2){h=h+-1|0;c=c+1|0}else d[n+(h<<1)>>1]=i;h=h+1|0;e=e+1|0}while(1){if((c|0)<=-1)break;d[n+(e<<1)>>1]=32;e=e+-1|0;c=c+-1|0}Vb(a,n,b)|0;c=b}Tb(n);n=c;return n|0}function Ob(a){a=a|0;a=a+-1570<<16>>16;if((a&65535)>=6){a=0;return a|0}a=43>>>(a&63)&1;return a|0}function Pb(a){a=a|0;return(a&-16)<<16>>16==-400|0}function Qb(a,b){a=a|0;b=b|0;return((a|0)>(b|0)?b:a)|0}function Rb(a){a=a|0;if(!a)a=68880;else a=fc(a)|0;return a|0}function Sb(a,b){a=a|0;b=b|0;do{if((a|0)!=68880)if(!b){gc(a);a=68880;break}else{a=hc(a,b)|0;break}else a=Rb(b)|0}while(0);return a|0}function Tb(a){a=a|0;if((a|0)!=68880)gc(a);return}function Ub(a){a=a|0;var b=0;b=a;while(1)if(!(d[b>>1]|0))break;else b=b+2|0;return b-a>>1|0}function Vb(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<=0)return a|0;Jc(a|0,b|0,c<<1|0)|0;return a|0}function Wb(a,b,c,e){a=a|0;b=b|0;c=c|0;e=e|0;if(!e)return c|0;if((c|0)<0|(Xb(f[e>>2]|0)|0)<<24>>24==0)return c|0;if((c|0)>=(b|0)){f[e>>2]=(c|0)==(b|0)?-124:15;return c|0}d[a+(c<<1)>>1]=0;if((f[e>>2]|0)!=-124)return c|0;f[e>>2]=0;return c|0}function Xb(a){a=a|0;return(a|0)<1|0}function Yb(a){a=a|0;var b=0,c=0,e=0;b=a>>5;c=a&31;do{if(a>>>0>=55296){if(a>>>0<65536){b=((a|0)<56320?320:0)+b|0;e=6;break}if(a>>>0>1114111)b=4536;else{b=(j[1810+((a>>>11)+2080<<1)>>1]|0)+(b&63)|0;e=6}}else e=6}while(0);if((e|0)==6)b=((j[1810+(b<<1)>>1]|0)<<2)+c|0;return d[1810+(b<<1)>>1]&31|0}function Zb(a,b){a=a|0;b=b|0;var c=0,e=0,g=0;g=f[a+20>>2]|0;c=b>>5;e=b&31;do{if(b>>>0>=55296){if(b>>>0<65536){a=((j[g+(((b|0)<56320?320:0)+c<<1)>>1]|0)<<2)+e|0;break}if(b>>>0>1114111){a=(f[a+32>>2]|0)+128|0;break}if((f[a+52>>2]|0)>(b|0)){a=((j[g+((j[g+((b>>>11)+2080<<1)>>1]|0)+(c&63)<<1)>>1]|0)<<2)+e|0;break}else{a=f[a+56>>2]|0;break}}else a=((j[g+(c<<1)>>1]|0)<<2)+e|0}while(0);return d[g+(a<<1)>>1]&31|0}function _b(a){a=a|0;var b=0,c=0,e=0;b=a>>5;c=a&31;do{if(a>>>0>=55296){if(a>>>0<65536){b=((a|0)<56320?320:0)+b|0;e=6;break}if(a>>>0>1114111)b=3624;else{b=(j[43370+((a>>>11)+2080<<1)>>1]|0)+(b&63)|0;e=6}}else e=6}while(0);if((e|0)==6)b=((j[43370+(b<<1)>>1]|0)<<2)+c|0;return $b(a,d[43370+(b<<1)>>1]|0)|0}function $b(a,b){a=a|0;b=b|0;var c=0,d=0;b=b<<16>>16>>13;a:do{if((b|0)==-4){b=0;while(1){if((b|0)>=26)break a;c=f[392+(b<<2)>>2]|0;d=c&2097151;if((d|0)==(a|0))break;if((d|0)>(a|0))break a;else b=b+1|0}a=f[392+(c>>>21<<2)>>2]&2097151}else a=b+a|0}while(0);return a|0}function ac(a,b){a=a|0;b=b|0;var c=0,e=0,g=0;g=f[a+20>>2]|0;c=b>>5;e=b&31;do{if(b>>>0>=55296){if(b>>>0<65536){a=((j[g+(((b|0)<56320?320:0)+c<<1)>>1]|0)<<2)+e|0;break}if(b>>>0>1114111){a=(f[a+32>>2]|0)+128|0;break}if((f[a+52>>2]|0)>(b|0)){a=((j[g+((j[g+((b>>>11)+2080<<1)>>1]|0)+(c&63)<<1)>>1]|0)<<2)+e|0;break}else{a=f[a+56>>2]|0;break}}else a=((j[g+(c<<1)>>1]|0)<<2)+e|0}while(0);return(d[g+(a<<1)>>1]&768)>>>8|0}function bc(a){a=a|0;var b=0,c=0,e=0;b=a>>5;c=a&31;do{if(a>>>0>=55296){if(a>>>0<65536){b=((a|0)<56320?320:0)+b|0;e=6;break}if(a>>>0>1114111)b=3624;else{b=(j[43370+((a>>>11)+2080<<1)>>1]|0)+(b&63)|0;e=6}}else e=6}while(0);if((e|0)==6)b=((j[43370+(b<<1)>>1]|0)<<2)+c|0;b=d[43370+(b<<1)>>1]|0;if(b&768)a=$b(a,b)|0;return a|0}function cc(a){a=a|0;return _b(a)|0}function dc(a){a=a|0;return bc(a)|0}function ec(){return 68904}function fc(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=u;u=u+16|0;n=K;do{if(a>>>0<245){o=a>>>0<11?16:a+11&-8;a=o>>>3;s=f[17242]|0;c=s>>>a;if(c&3|0){a=(c&1^1)+a|0;c=69008+(a<<1<<2)|0;d=c+8|0;e=f[d>>2]|0;g=e+8|0;h=f[g>>2]|0;do{if((c|0)!=(h|0)){if(h>>>0<(f[17246]|0)>>>0)ja();b=h+12|0;if((f[b>>2]|0)==(e|0)){f[b>>2]=c;f[d>>2]=h;break}else ja()}else f[17242]=s&~(1<>2]=J|3;J=e+J+4|0;f[J>>2]=f[J>>2]|1;J=g;u=K;return J|0}r=f[17244]|0;if(o>>>0>r>>>0){if(c|0){i=2<>>12&16;a=a>>>i;d=a>>>5&8;a=a>>>d;g=a>>>2&4;a=a>>>g;c=a>>>1&2;a=a>>>c;b=a>>>1&1;b=(d|i|g|c|b)+(a>>>b)|0;a=69008+(b<<1<<2)|0;c=a+8|0;g=f[c>>2]|0;i=g+8|0;d=f[i>>2]|0;do{if((a|0)!=(d|0)){if(d>>>0<(f[17246]|0)>>>0)ja();e=d+12|0;if((f[e>>2]|0)==(g|0)){f[e>>2]=a;f[c>>2]=d;j=s;break}else ja()}else{j=s&~(1<>2]=o|3;d=g+o|0;f[d+4>>2]=h|1;f[d+h>>2]=h;if(r|0){e=f[17247]|0;b=r>>>3;c=69008+(b<<1<<2)|0;b=1<>2]|0;if(a>>>0<(f[17246]|0)>>>0)ja();else{k=a;l=b}}else{f[17242]=j|b;k=c;l=c+8|0}f[l>>2]=e;f[k+12>>2]=e;f[e+8>>2]=k;f[e+12>>2]=c}f[17244]=h;f[17247]=d;J=i;u=K;return J|0}k=f[17243]|0;if(k){a=(k&0-k)+-1|0;I=a>>>12&16;a=a>>>I;H=a>>>5&8;a=a>>>H;J=a>>>2&4;a=a>>>J;c=a>>>1&2;a=a>>>c;b=a>>>1&1;b=f[69272+((H|I|J|c|b)+(a>>>b)<<2)>>2]|0;a=(f[b+4>>2]&-8)-o|0;c=f[b+16+(((f[b+16>>2]|0)==0&1)<<2)>>2]|0;if(!c){j=b;h=a}else{do{I=(f[c+4>>2]&-8)-o|0;J=I>>>0>>0;a=J?I:a;b=J?c:b;c=f[c+16+(((f[c+16>>2]|0)==0&1)<<2)>>2]|0}while((c|0)!=0);j=b;h=a}e=f[17246]|0;if(j>>>0>>0)ja();i=j+o|0;if(j>>>0>=i>>>0)ja();g=f[j+24>>2]|0;c=f[j+12>>2]|0;do{if((c|0)==(j|0)){a=j+20|0;b=f[a>>2]|0;if(!b){a=j+16|0;b=f[a>>2]|0;if(!b){m=0;break}}while(1){c=b+20|0;d=f[c>>2]|0;if(d|0){b=d;a=c;continue}c=b+16|0;d=f[c>>2]|0;if(!d)break;else{b=d;a=c}}if(a>>>0>>0)ja();else{f[a>>2]=0;m=b;break}}else{d=f[j+8>>2]|0;if(d>>>0>>0)ja();b=d+12|0;if((f[b>>2]|0)!=(j|0))ja();a=c+8|0;if((f[a>>2]|0)==(j|0)){f[b>>2]=c;f[a>>2]=d;m=c;break}else ja()}}while(0);a:do{if(g|0){b=f[j+28>>2]|0;a=69272+(b<<2)|0;c=(m|0)==0;do{if((j|0)==(f[a>>2]|0)){f[a>>2]=m;if(c){f[17243]=k&~(1<>>0>=(f[17246]|0)>>>0){f[g+16+(((f[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=m;if(c)break a;else break}else ja()}while(0);a=f[17246]|0;if(m>>>0>>0)ja();f[m+24>>2]=g;b=f[j+16>>2]|0;do{if(b|0)if(b>>>0>>0)ja();else{f[m+16>>2]=b;f[b+24>>2]=m;break}}while(0);b=f[j+20>>2]|0;if(b|0)if(b>>>0<(f[17246]|0)>>>0)ja();else{f[m+20>>2]=b;f[b+24>>2]=m;break}}}while(0);if(h>>>0<16){J=h+o|0;f[j+4>>2]=J|3;J=j+J+4|0;f[J>>2]=f[J>>2]|1}else{f[j+4>>2]=o|3;f[i+4>>2]=h|1;f[i+h>>2]=h;if(r|0){d=f[17247]|0;b=r>>>3;c=69008+(b<<1<<2)|0;b=1<>2]|0;if(a>>>0<(f[17246]|0)>>>0)ja();else{p=a;q=b}}else{f[17242]=b|s;p=c;q=c+8|0}f[q>>2]=d;f[p+12>>2]=d;f[d+8>>2]=p;f[d+12>>2]=c}f[17244]=h;f[17247]=i}J=j+8|0;u=K;return J|0}}}else if(a>>>0<=4294967231){a=a+11|0;o=a&-8;k=f[17243]|0;if(k){d=0-o|0;a=a>>>8;if(a)if(o>>>0>16777215)i=31;else{q=(a+1048320|0)>>>16&8;C=a<>>16&4;C=C<>>16&2;i=14-(p|q|i)+(C<>>15)|0;i=o>>>(i+7|0)&1|i<<1}else i=0;c=f[69272+(i<<2)>>2]|0;b:do{if(!c){c=0;a=0;C=81}else{a=0;h=o<<((i|0)==31?0:25-(i>>>1)|0);g=0;while(1){e=(f[c+4>>2]&-8)-o|0;if(e>>>0>>0)if(!e){a=c;d=0;e=c;C=85;break b}else{a=c;d=e}e=f[c+20>>2]|0;c=f[c+16+(h>>>31<<2)>>2]|0;g=(e|0)==0|(e|0)==(c|0)?g:e;e=(c|0)==0;if(e){c=g;C=81;break}else h=h<<((e^1)&1)}}}while(0);if((C|0)==81){if((c|0)==0&(a|0)==0){a=2<>>12&16;q=q>>>l;j=q>>>5&8;q=q>>>j;m=q>>>2&4;q=q>>>m;p=q>>>1&2;q=q>>>p;c=q>>>1&1;a=0;c=f[69272+((j|l|m|p|c)+(q>>>c)<<2)>>2]|0}if(!c){j=a;i=d}else{e=c;C=85}}if((C|0)==85)while(1){C=0;c=(f[e+4>>2]&-8)-o|0;q=c>>>0>>0;c=q?c:d;a=q?e:a;e=f[e+16+(((f[e+16>>2]|0)==0&1)<<2)>>2]|0;if(!e){j=a;i=c;break}else{d=c;C=85}}if((j|0)!=0?i>>>0<((f[17244]|0)-o|0)>>>0:0){e=f[17246]|0;if(j>>>0>>0)ja();h=j+o|0;if(j>>>0>=h>>>0)ja();g=f[j+24>>2]|0;c=f[j+12>>2]|0;do{if((c|0)==(j|0)){a=j+20|0;b=f[a>>2]|0;if(!b){a=j+16|0;b=f[a>>2]|0;if(!b){r=0;break}}while(1){c=b+20|0;d=f[c>>2]|0;if(d|0){b=d;a=c;continue}c=b+16|0;d=f[c>>2]|0;if(!d)break;else{b=d;a=c}}if(a>>>0>>0)ja();else{f[a>>2]=0;r=b;break}}else{d=f[j+8>>2]|0;if(d>>>0>>0)ja();b=d+12|0;if((f[b>>2]|0)!=(j|0))ja();a=c+8|0;if((f[a>>2]|0)==(j|0)){f[b>>2]=c;f[a>>2]=d;r=c;break}else ja()}}while(0);c:do{if(g){b=f[j+28>>2]|0;a=69272+(b<<2)|0;c=(r|0)==0;do{if((j|0)==(f[a>>2]|0)){f[a>>2]=r;if(c){s=k&~(1<>>0>=(f[17246]|0)>>>0){f[g+16+(((f[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=r;if(c){s=k;break c}else break}else ja()}while(0);a=f[17246]|0;if(r>>>0>>0)ja();f[r+24>>2]=g;b=f[j+16>>2]|0;do{if(b|0)if(b>>>0>>0)ja();else{f[r+16>>2]=b;f[b+24>>2]=r;break}}while(0);b=f[j+20>>2]|0;if(b)if(b>>>0<(f[17246]|0)>>>0)ja();else{f[r+20>>2]=b;f[b+24>>2]=r;s=k;break}else s=k}else s=k}while(0);do{if(i>>>0>=16){f[j+4>>2]=o|3;f[h+4>>2]=i|1;f[h+i>>2]=i;b=i>>>3;if(i>>>0<256){c=69008+(b<<1<<2)|0;a=f[17242]|0;b=1<>2]|0;if(a>>>0<(f[17246]|0)>>>0)ja();else{x=a;y=b}}else{f[17242]=a|b;x=c;y=c+8|0}f[y>>2]=h;f[x+12>>2]=h;f[h+8>>2]=x;f[h+12>>2]=c;break}b=i>>>8;if(b)if(i>>>0>16777215)b=31;else{I=(b+1048320|0)>>>16&8;J=b<>>16&4;J=J<>>16&2;b=14-(H|I|b)+(J<>>15)|0;b=i>>>(b+7|0)&1|b<<1}else b=0;c=69272+(b<<2)|0;f[h+28>>2]=b;a=h+16|0;f[a+4>>2]=0;f[a>>2]=0;a=1<>2]=h;f[h+24>>2]=c;f[h+12>>2]=h;f[h+8>>2]=h;break}a=i<<((b|0)==31?0:25-(b>>>1)|0);d=f[c>>2]|0;while(1){if((f[d+4>>2]&-8|0)==(i|0)){C=139;break}c=d+16+(a>>>31<<2)|0;b=f[c>>2]|0;if(!b){C=136;break}else{a=a<<1;d=b}}if((C|0)==136)if(c>>>0<(f[17246]|0)>>>0)ja();else{f[c>>2]=h;f[h+24>>2]=d;f[h+12>>2]=h;f[h+8>>2]=h;break}else if((C|0)==139){b=d+8|0;a=f[b>>2]|0;J=f[17246]|0;if(a>>>0>=J>>>0&d>>>0>=J>>>0){f[a+12>>2]=h;f[b>>2]=h;f[h+8>>2]=a;f[h+12>>2]=d;f[h+24>>2]=0;break}else ja()}}else{J=i+o|0;f[j+4>>2]=J|3;J=j+J+4|0;f[J>>2]=f[J>>2]|1}}while(0);J=j+8|0;u=K;return J|0}}}else o=-1}while(0);c=f[17244]|0;if(c>>>0>=o>>>0){b=c-o|0;a=f[17247]|0;if(b>>>0>15){J=a+o|0;f[17247]=J;f[17244]=b;f[J+4>>2]=b|1;f[J+b>>2]=b;f[a+4>>2]=o|3}else{f[17244]=0;f[17247]=0;f[a+4>>2]=c|3;J=a+c+4|0;f[J>>2]=f[J>>2]|1}J=a+8|0;u=K;return J|0}h=f[17245]|0;if(h>>>0>o>>>0){H=h-o|0;f[17245]=H;J=f[17248]|0;I=J+o|0;f[17248]=I;f[I+4>>2]=H|1;f[J+4>>2]=o|3;J=J+8|0;u=K;return J|0}if(!(f[17360]|0)){f[17362]=4096;f[17361]=4096;f[17363]=-1;f[17364]=-1;f[17365]=0;f[17353]=0;a=n&-16^1431655768;f[n>>2]=a;f[17360]=a;a=4096}else a=f[17362]|0;i=o+48|0;j=o+47|0;g=a+j|0;e=0-a|0;k=g&e;if(k>>>0<=o>>>0){J=0;u=K;return J|0}a=f[17352]|0;if(a|0?(x=f[17350]|0,y=x+k|0,y>>>0<=x>>>0|y>>>0>a>>>0):0){J=0;u=K;return J|0}d:do{if(!(f[17353]&4)){c=f[17248]|0;e:do{if(c){d=69416;while(1){a=f[d>>2]|0;if(a>>>0<=c>>>0?(w=d+4|0,(a+(f[w>>2]|0)|0)>>>0>c>>>0):0)break;a=f[d+8>>2]|0;if(!a){C=163;break e}else d=a}b=g-h&e;if(b>>>0<2147483647){a=Hc(b|0)|0;if((a|0)==((f[d>>2]|0)+(f[w>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;C=180;break d}}else{d=a;C=171}}else b=0}else C=163}while(0);do{if((C|0)==163){c=Hc(0)|0;if((c|0)!=(-1|0)?(b=c,t=f[17361]|0,v=t+-1|0,b=((v&b|0)==0?0:(v+b&0-t)-b|0)+k|0,t=f[17350]|0,v=b+t|0,b>>>0>o>>>0&b>>>0<2147483647):0){y=f[17352]|0;if(y|0?v>>>0<=t>>>0|v>>>0>y>>>0:0){b=0;break}a=Hc(b|0)|0;if((a|0)==(c|0)){h=b;g=c;C=180;break d}else{d=a;C=171}}else b=0}}while(0);do{if((C|0)==171){c=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(d|0)!=(-1|0))))if((d|0)==(-1|0)){b=0;break}else{h=b;g=d;C=180;break d}a=f[17362]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=b;g=d;C=180;break d}if((Hc(a|0)|0)==(-1|0)){Hc(c|0)|0;b=0;break}else{h=a+b|0;g=d;C=180;break d}}}while(0);f[17353]=f[17353]|4;C=178}else{b=0;C=178}}while(0);if(((C|0)==178?k>>>0<2147483647:0)?(B=Hc(k|0)|0,y=Hc(0)|0,z=y-B|0,A=z>>>0>(o+40|0)>>>0,!((B|0)==(-1|0)|A^1|B>>>0>>0&((B|0)!=(-1|0)&(y|0)!=(-1|0))^1)):0){h=A?z:b;g=B;C=180}if((C|0)==180){b=(f[17350]|0)+h|0;f[17350]=b;if(b>>>0>(f[17351]|0)>>>0)f[17351]=b;k=f[17248]|0;do{if(k){b=69416;while(1){a=f[b>>2]|0;c=b+4|0;d=f[c>>2]|0;if((g|0)==(a+d|0)){C=190;break}e=f[b+8>>2]|0;if(!e)break;else b=e}if(((C|0)==190?(f[b+12>>2]&8|0)==0:0)?k>>>0>>0&k>>>0>=a>>>0:0){f[c>>2]=d+h;J=k+8|0;J=(J&7|0)==0?0:0-J&7;I=k+J|0;J=(f[17245]|0)+(h-J)|0;f[17248]=I;f[17245]=J;f[I+4>>2]=J|1;f[I+J+4>>2]=40;f[17249]=f[17364];break}b=f[17246]|0;if(g>>>0>>0){f[17246]=g;i=g}else i=b;c=g+h|0;b=69416;while(1){if((f[b>>2]|0)==(c|0)){C=198;break}a=f[b+8>>2]|0;if(!a)break;else b=a}if((C|0)==198?(f[b+12>>2]&8|0)==0:0){f[b>>2]=g;m=b+4|0;f[m>>2]=(f[m>>2]|0)+h;m=g+8|0;m=g+((m&7|0)==0?0:0-m&7)|0;b=c+8|0;b=c+((b&7|0)==0?0:0-b&7)|0;l=m+o|0;j=b-m-o|0;f[m+4>>2]=o|3;do{if((b|0)!=(k|0)){if((b|0)==(f[17247]|0)){J=(f[17244]|0)+j|0;f[17244]=J;f[17247]=l;f[l+4>>2]=J|1;f[l+J>>2]=J;break}a=f[b+4>>2]|0;if((a&3|0)==1){h=a&-8;e=a>>>3;f:do{if(a>>>0>=256){g=f[b+24>>2]|0;d=f[b+12>>2]|0;do{if((d|0)==(b|0)){d=b+16|0;c=d+4|0;a=f[c>>2]|0;if(!a){a=f[d>>2]|0;if(!a){H=0;break}else c=d}while(1){d=a+20|0;e=f[d>>2]|0;if(e|0){a=e;c=d;continue}d=a+16|0;e=f[d>>2]|0;if(!e)break;else{a=e;c=d}}if(c>>>0>>0)ja();else{f[c>>2]=0;H=a;break}}else{e=f[b+8>>2]|0;if(e>>>0>>0)ja();a=e+12|0;if((f[a>>2]|0)!=(b|0))ja();c=d+8|0;if((f[c>>2]|0)==(b|0)){f[a>>2]=d;f[c>>2]=e;H=d;break}else ja()}}while(0);if(!g)break;a=f[b+28>>2]|0;c=69272+(a<<2)|0;d=(H|0)==0;do{if((b|0)!=(f[c>>2]|0))if(g>>>0>=(f[17246]|0)>>>0){f[g+16+(((f[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=H;if(d)break f;else break}else ja();else{f[c>>2]=H;if(!d)break;f[17243]=f[17243]&~(1<>>0>>0)ja();f[H+24>>2]=g;a=b+16|0;c=f[a>>2]|0;do{if(c|0)if(c>>>0>>0)ja();else{f[H+16>>2]=c;f[c+24>>2]=H;break}}while(0);a=f[a+4>>2]|0;if(!a)break;if(a>>>0<(f[17246]|0)>>>0)ja();else{f[H+20>>2]=a;f[a+24>>2]=H;break}}else{c=f[b+8>>2]|0;d=f[b+12>>2]|0;a=69008+(e<<1<<2)|0;do{if((c|0)!=(a|0)){if(c>>>0>>0)ja();if((f[c+12>>2]|0)==(b|0))break;ja()}}while(0);if((d|0)==(c|0)){f[17242]=f[17242]&~(1<>>0>>0)ja();a=d+8|0;if((f[a>>2]|0)==(b|0)){E=a;break}ja()}}while(0);f[c+12>>2]=d;f[E>>2]=c}}while(0);b=b+h|0;e=h+j|0}else e=j;b=b+4|0;f[b>>2]=f[b>>2]&-2;f[l+4>>2]=e|1;f[l+e>>2]=e;b=e>>>3;if(e>>>0<256){c=69008+(b<<1<<2)|0;a=f[17242]|0;b=1<>2]|0;if(a>>>0>=(f[17246]|0)>>>0){I=a;J=b;break}ja()}}while(0);f[J>>2]=l;f[I+12>>2]=l;f[l+8>>2]=I;f[l+12>>2]=c;break}b=e>>>8;do{if(!b)b=0;else{if(e>>>0>16777215){b=31;break}I=(b+1048320|0)>>>16&8;J=b<>>16&4;J=J<>>16&2;b=14-(H|I|b)+(J<>>15)|0;b=e>>>(b+7|0)&1|b<<1}}while(0);d=69272+(b<<2)|0;f[l+28>>2]=b;a=l+16|0;f[a+4>>2]=0;f[a>>2]=0;a=f[17243]|0;c=1<>2]=l;f[l+24>>2]=d;f[l+12>>2]=l;f[l+8>>2]=l;break}a=e<<((b|0)==31?0:25-(b>>>1)|0);d=f[d>>2]|0;while(1){if((f[d+4>>2]&-8|0)==(e|0)){C=265;break}c=d+16+(a>>>31<<2)|0;b=f[c>>2]|0;if(!b){C=262;break}else{a=a<<1;d=b}}if((C|0)==262)if(c>>>0<(f[17246]|0)>>>0)ja();else{f[c>>2]=l;f[l+24>>2]=d;f[l+12>>2]=l;f[l+8>>2]=l;break}else if((C|0)==265){b=d+8|0;a=f[b>>2]|0;J=f[17246]|0;if(a>>>0>=J>>>0&d>>>0>=J>>>0){f[a+12>>2]=l;f[b>>2]=l;f[l+8>>2]=a;f[l+12>>2]=d;f[l+24>>2]=0;break}else ja()}}else{J=(f[17245]|0)+j|0;f[17245]=J;f[17248]=l;f[l+4>>2]=J|1}}while(0);J=m+8|0;u=K;return J|0}b=69416;while(1){a=f[b>>2]|0;if(a>>>0<=k>>>0?(D=a+(f[b+4>>2]|0)|0,D>>>0>k>>>0):0)break;b=f[b+8>>2]|0}e=D+-47|0;a=e+8|0;a=e+((a&7|0)==0?0:0-a&7)|0;e=k+16|0;a=a>>>0>>0?k:a;b=a+8|0;c=g+8|0;c=(c&7|0)==0?0:0-c&7;J=g+c|0;c=h+-40-c|0;f[17248]=J;f[17245]=c;f[J+4>>2]=c|1;f[J+c+4>>2]=40;f[17249]=f[17364];c=a+4|0;f[c>>2]=27;f[b>>2]=f[17354];f[b+4>>2]=f[17355];f[b+8>>2]=f[17356];f[b+12>>2]=f[17357];f[17354]=g;f[17355]=h;f[17357]=0;f[17356]=b;b=a+24|0;do{J=b;b=b+4|0;f[b>>2]=7}while((J+8|0)>>>0>>0);if((a|0)!=(k|0)){g=a-k|0;f[c>>2]=f[c>>2]&-2;f[k+4>>2]=g|1;f[a>>2]=g;b=g>>>3;if(g>>>0<256){c=69008+(b<<1<<2)|0;a=f[17242]|0;b=1<>2]|0;if(a>>>0<(f[17246]|0)>>>0)ja();else{F=a;G=b}}else{f[17242]=a|b;F=c;G=c+8|0}f[G>>2]=k;f[F+12>>2]=k;f[k+8>>2]=F;f[k+12>>2]=c;break}b=g>>>8;if(b)if(g>>>0>16777215)c=31;else{I=(b+1048320|0)>>>16&8;J=b<>>16&4;J=J<>>16&2;c=14-(H|I|c)+(J<>>15)|0;c=g>>>(c+7|0)&1|c<<1}else c=0;d=69272+(c<<2)|0;f[k+28>>2]=c;f[k+20>>2]=0;f[e>>2]=0;b=f[17243]|0;a=1<>2]=k;f[k+24>>2]=d;f[k+12>>2]=k;f[k+8>>2]=k;break}a=g<<((c|0)==31?0:25-(c>>>1)|0);d=f[d>>2]|0;while(1){if((f[d+4>>2]&-8|0)==(g|0)){C=292;break}c=d+16+(a>>>31<<2)|0;b=f[c>>2]|0;if(!b){C=289;break}else{a=a<<1;d=b}}if((C|0)==289)if(c>>>0<(f[17246]|0)>>>0)ja();else{f[c>>2]=k;f[k+24>>2]=d;f[k+12>>2]=k;f[k+8>>2]=k;break}else if((C|0)==292){b=d+8|0;a=f[b>>2]|0;J=f[17246]|0;if(a>>>0>=J>>>0&d>>>0>=J>>>0){f[a+12>>2]=k;f[b>>2]=k;f[k+8>>2]=a;f[k+12>>2]=d;f[k+24>>2]=0;break}else ja()}}}else{J=f[17246]|0;if((J|0)==0|g>>>0>>0)f[17246]=g;f[17354]=g;f[17355]=h;f[17357]=0;f[17251]=f[17360];f[17250]=-1;b=0;do{J=69008+(b<<1<<2)|0;f[J+12>>2]=J;f[J+8>>2]=J;b=b+1|0}while((b|0)!=32);J=g+8|0;J=(J&7|0)==0?0:0-J&7;I=g+J|0;J=h+-40-J|0;f[17248]=I;f[17245]=J;f[I+4>>2]=J|1;f[I+J+4>>2]=40;f[17249]=f[17364]}}while(0);b=f[17245]|0;if(b>>>0>o>>>0){H=b-o|0;f[17245]=H;J=f[17248]|0;I=J+o|0;f[17248]=I;f[I+4>>2]=H|1;f[J+4>>2]=o|3;J=J+8|0;u=K;return J|0}}f[140]=12;J=0;u=K;return J|0}function gc(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(!a)return;c=a+-8|0;h=f[17246]|0;if(c>>>0>>0)ja();a=f[a+-4>>2]|0;b=a&3;if((b|0)==1)ja();d=a&-8;o=c+d|0;a:do{if(!(a&1)){a=f[c>>2]|0;if(!b)return;k=c+(0-a)|0;j=a+d|0;if(k>>>0>>0)ja();if((k|0)==(f[17247]|0)){a=o+4|0;b=f[a>>2]|0;if((b&3|0)!=3){r=k;e=j;m=k;break}f[17244]=j;f[a>>2]=b&-2;f[k+4>>2]=j|1;f[k+j>>2]=j;return}d=a>>>3;if(a>>>0<256){b=f[k+8>>2]|0;c=f[k+12>>2]|0;a=69008+(d<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0>>0)ja();if((f[b+12>>2]|0)!=(k|0))ja()}if((c|0)==(b|0)){f[17242]=f[17242]&~(1<>>0>>0)ja();a=c+8|0;if((f[a>>2]|0)==(k|0))g=a;else ja()}else g=c+8|0;f[b+12>>2]=c;f[g>>2]=b;r=k;e=j;m=k;break}g=f[k+24>>2]|0;c=f[k+12>>2]|0;do{if((c|0)==(k|0)){c=k+16|0;b=c+4|0;a=f[b>>2]|0;if(!a){a=f[c>>2]|0;if(!a){i=0;break}else b=c}while(1){c=a+20|0;d=f[c>>2]|0;if(d|0){a=d;b=c;continue}c=a+16|0;d=f[c>>2]|0;if(!d)break;else{a=d;b=c}}if(b>>>0>>0)ja();else{f[b>>2]=0;i=a;break}}else{d=f[k+8>>2]|0;if(d>>>0>>0)ja();a=d+12|0;if((f[a>>2]|0)!=(k|0))ja();b=c+8|0;if((f[b>>2]|0)==(k|0)){f[a>>2]=c;f[b>>2]=d;i=c;break}else ja()}}while(0);if(g){a=f[k+28>>2]|0;b=69272+(a<<2)|0;c=(i|0)==0;do{if((k|0)==(f[b>>2]|0)){f[b>>2]=i;if(c){f[17243]=f[17243]&~(1<>>0>=(f[17246]|0)>>>0){f[g+16+(((f[g+16>>2]|0)!=(k|0)&1)<<2)>>2]=i;if(c){r=k;e=j;m=k;break a}else break}else ja()}while(0);c=f[17246]|0;if(i>>>0>>0)ja();f[i+24>>2]=g;a=k+16|0;b=f[a>>2]|0;do{if(b|0)if(b>>>0>>0)ja();else{f[i+16>>2]=b;f[b+24>>2]=i;break}}while(0);a=f[a+4>>2]|0;if(a)if(a>>>0<(f[17246]|0)>>>0)ja();else{f[i+20>>2]=a;f[a+24>>2]=i;r=k;e=j;m=k;break}else{r=k;e=j;m=k}}else{r=k;e=j;m=k}}else{r=c;e=d;m=c}}while(0);if(m>>>0>=o>>>0)ja();a=o+4|0;b=f[a>>2]|0;if(!(b&1))ja();if(!(b&2)){a=f[17247]|0;if((o|0)==(f[17248]|0)){q=(f[17245]|0)+e|0;f[17245]=q;f[17248]=r;f[r+4>>2]=q|1;if((r|0)!=(a|0))return;f[17247]=0;f[17244]=0;return}if((o|0)==(a|0)){q=(f[17244]|0)+e|0;f[17244]=q;f[17247]=m;f[r+4>>2]=q|1;f[m+q>>2]=q;return}e=(b&-8)+e|0;d=b>>>3;b:do{if(b>>>0>=256){g=f[o+24>>2]|0;a=f[o+12>>2]|0;do{if((a|0)==(o|0)){c=o+16|0;b=c+4|0;a=f[b>>2]|0;if(!a){a=f[c>>2]|0;if(!a){n=0;break}else b=c}while(1){c=a+20|0;d=f[c>>2]|0;if(d|0){a=d;b=c;continue}c=a+16|0;d=f[c>>2]|0;if(!d)break;else{a=d;b=c}}if(b>>>0<(f[17246]|0)>>>0)ja();else{f[b>>2]=0;n=a;break}}else{b=f[o+8>>2]|0;if(b>>>0<(f[17246]|0)>>>0)ja();c=b+12|0;if((f[c>>2]|0)!=(o|0))ja();d=a+8|0;if((f[d>>2]|0)==(o|0)){f[c>>2]=a;f[d>>2]=b;n=a;break}else ja()}}while(0);if(g|0){a=f[o+28>>2]|0;b=69272+(a<<2)|0;c=(n|0)==0;do{if((o|0)==(f[b>>2]|0)){f[b>>2]=n;if(c){f[17243]=f[17243]&~(1<>>0>=(f[17246]|0)>>>0){f[g+16+(((f[g+16>>2]|0)!=(o|0)&1)<<2)>>2]=n;if(c)break b;else break}else ja()}while(0);c=f[17246]|0;if(n>>>0>>0)ja();f[n+24>>2]=g;a=o+16|0;b=f[a>>2]|0;do{if(b|0)if(b>>>0>>0)ja();else{f[n+16>>2]=b;f[b+24>>2]=n;break}}while(0);a=f[a+4>>2]|0;if(a|0)if(a>>>0<(f[17246]|0)>>>0)ja();else{f[n+20>>2]=a;f[a+24>>2]=n;break}}}else{b=f[o+8>>2]|0;c=f[o+12>>2]|0;a=69008+(d<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<(f[17246]|0)>>>0)ja();if((f[b+12>>2]|0)!=(o|0))ja()}if((c|0)==(b|0)){f[17242]=f[17242]&~(1<>>0<(f[17246]|0)>>>0)ja();a=c+8|0;if((f[a>>2]|0)==(o|0))l=a;else ja()}else l=c+8|0;f[b+12>>2]=c;f[l>>2]=b}}while(0);f[r+4>>2]=e|1;f[m+e>>2]=e;if((r|0)==(f[17247]|0)){f[17244]=e;return}}else{f[a>>2]=b&-2;f[r+4>>2]=e|1;f[m+e>>2]=e}a=e>>>3;if(e>>>0<256){c=69008+(a<<1<<2)|0;b=f[17242]|0;a=1<>2]|0;if(b>>>0<(f[17246]|0)>>>0)ja();else{p=b;q=a}}else{f[17242]=b|a;p=c;q=c+8|0}f[q>>2]=r;f[p+12>>2]=r;f[r+8>>2]=p;f[r+12>>2]=c;return}a=e>>>8;if(a)if(e>>>0>16777215)a=31;else{p=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;a=14-(o|p|a)+(q<>>15)|0;a=e>>>(a+7|0)&1|a<<1}else a=0;d=69272+(a<<2)|0;f[r+28>>2]=a;f[r+20>>2]=0;f[r+16>>2]=0;b=f[17243]|0;c=1<>>1)|0);d=f[d>>2]|0;while(1){if((f[d+4>>2]&-8|0)==(e|0)){a=124;break}c=d+16+(b>>>31<<2)|0;a=f[c>>2]|0;if(!a){a=121;break}else{b=b<<1;d=a}}if((a|0)==121)if(c>>>0<(f[17246]|0)>>>0)ja();else{f[c>>2]=r;f[r+24>>2]=d;f[r+12>>2]=r;f[r+8>>2]=r;break}else if((a|0)==124){a=d+8|0;b=f[a>>2]|0;q=f[17246]|0;if(b>>>0>=q>>>0&d>>>0>=q>>>0){f[b+12>>2]=r;f[a>>2]=r;f[r+8>>2]=b;f[r+12>>2]=d;f[r+24>>2]=0;break}else ja()}}else{f[17243]=b|c;f[d>>2]=r;f[r+24>>2]=d;f[r+12>>2]=r;f[r+8>>2]=r}}while(0);r=(f[17250]|0)+-1|0;f[17250]=r;if(!r)a=69424;else return;while(1){a=f[a>>2]|0;if(!a)break;else a=a+8|0}f[17250]=-1;return}function hc(a,b){a=a|0;b=b|0;var c=0,d=0;if(!a){b=fc(b)|0;return b|0}if(b>>>0>4294967231){f[140]=12;b=0;return b|0}c=ic(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(c|0){b=c+8|0;return b|0}c=fc(b)|0;if(!c){b=0;return b|0}d=f[a+-4>>2]|0;d=(d&-8)-((d&3|0)==0?8:4)|0;Jc(c|0,a|0,(d>>>0>>0?d:b)|0)|0;gc(a);b=c;return b|0}function ic(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=a+4|0;n=f[o>>2]|0;c=n&-8;k=a+c|0;i=f[17246]|0;d=n&3;if(!((d|0)!=1&a>>>0>=i>>>0&a>>>0>>0))ja();e=f[k+4>>2]|0;if(!(e&1))ja();if(!d){if(b>>>0<256){a=0;return a|0}if(c>>>0>=(b+4|0)>>>0?(c-b|0)>>>0<=f[17362]<<1>>>0:0)return a|0;a=0;return a|0}if(c>>>0>=b>>>0){c=c-b|0;if(c>>>0<=15)return a|0;m=a+b|0;f[o>>2]=n&1|b|2;f[m+4>>2]=c|3;o=m+c+4|0;f[o>>2]=f[o>>2]|1;jc(m,c);return a|0}if((k|0)==(f[17248]|0)){m=(f[17245]|0)+c|0;c=m-b|0;d=a+b|0;if(m>>>0<=b>>>0){a=0;return a|0}f[o>>2]=n&1|b|2;f[d+4>>2]=c|1;f[17248]=d;f[17245]=c;return a|0}if((k|0)==(f[17247]|0)){e=(f[17244]|0)+c|0;if(e>>>0>>0){a=0;return a|0}c=e-b|0;d=n&1;if(c>>>0>15){n=a+b|0;m=n+c|0;f[o>>2]=d|b|2;f[n+4>>2]=c|1;f[m>>2]=c;d=m+4|0;f[d>>2]=f[d>>2]&-2;d=n}else{f[o>>2]=d|e|2;d=a+e+4|0;f[d>>2]=f[d>>2]|1;d=0;c=0}f[17244]=c;f[17247]=d;return a|0}if(e&2|0){a=0;return a|0}l=(e&-8)+c|0;if(l>>>0>>0){a=0;return a|0}m=l-b|0;g=e>>>3;a:do{if(e>>>0>=256){h=f[k+24>>2]|0;e=f[k+12>>2]|0;do{if((e|0)==(k|0)){e=k+16|0;d=e+4|0;c=f[d>>2]|0;if(!c){c=f[e>>2]|0;if(!c){j=0;break}else d=e}while(1){e=c+20|0;g=f[e>>2]|0;if(g|0){c=g;d=e;continue}e=c+16|0;g=f[e>>2]|0;if(!g)break;else{c=g;d=e}}if(d>>>0>>0)ja();else{f[d>>2]=0;j=c;break}}else{g=f[k+8>>2]|0;if(g>>>0>>0)ja();c=g+12|0;if((f[c>>2]|0)!=(k|0))ja();d=e+8|0;if((f[d>>2]|0)==(k|0)){f[c>>2]=e;f[d>>2]=g;j=e;break}else ja()}}while(0);if(h|0){c=f[k+28>>2]|0;d=69272+(c<<2)|0;e=(j|0)==0;do{if((k|0)==(f[d>>2]|0)){f[d>>2]=j;if(e){f[17243]=f[17243]&~(1<>>0>=(f[17246]|0)>>>0){f[h+16+(((f[h+16>>2]|0)!=(k|0)&1)<<2)>>2]=j;if(e)break a;else break}else ja()}while(0);e=f[17246]|0;if(j>>>0>>0)ja();f[j+24>>2]=h;c=k+16|0;d=f[c>>2]|0;do{if(d|0)if(d>>>0>>0)ja();else{f[j+16>>2]=d;f[d+24>>2]=j;break}}while(0);c=f[c+4>>2]|0;if(c|0)if(c>>>0<(f[17246]|0)>>>0)ja();else{f[j+20>>2]=c;f[c+24>>2]=j;break}}}else{d=f[k+8>>2]|0;e=f[k+12>>2]|0;c=69008+(g<<1<<2)|0;if((d|0)!=(c|0)){if(d>>>0>>0)ja();if((f[d+12>>2]|0)!=(k|0))ja()}if((e|0)==(d|0)){f[17242]=f[17242]&~(1<>>0>>0)ja();c=e+8|0;if((f[c>>2]|0)==(k|0))h=c;else ja()}else h=e+8|0;f[d+12>>2]=e;f[h>>2]=d}}while(0);c=n&1;if(m>>>0<16){f[o>>2]=c|l|2;o=a+l+4|0;f[o>>2]=f[o>>2]|1;return a|0}else{n=a+b|0;f[o>>2]=c|b|2;f[n+4>>2]=m|3;o=n+m+4|0;f[o>>2]=f[o>>2]|1;jc(n,m);return a|0}return 0}function jc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=a+b|0;c=f[a+4>>2]|0;a:do{if(!(c&1)){g=f[a>>2]|0;if(!(c&3))return;l=a+(0-g)|0;k=g+b|0;i=f[17246]|0;if(l>>>0>>0)ja();if((l|0)==(f[17247]|0)){c=o+4|0;a=f[c>>2]|0;if((a&3|0)!=3){r=l;e=k;break}f[17244]=k;f[c>>2]=a&-2;f[l+4>>2]=k|1;f[l+k>>2]=k;return}d=g>>>3;if(g>>>0<256){c=f[l+8>>2]|0;b=f[l+12>>2]|0;a=69008+(d<<1<<2)|0;if((c|0)!=(a|0)){if(c>>>0>>0)ja();if((f[c+12>>2]|0)!=(l|0))ja()}if((b|0)==(c|0)){f[17242]=f[17242]&~(1<>>0>>0)ja();a=b+8|0;if((f[a>>2]|0)==(l|0))h=a;else ja()}else h=b+8|0;f[c+12>>2]=b;f[h>>2]=c;r=l;e=k;break}g=f[l+24>>2]|0;b=f[l+12>>2]|0;do{if((b|0)==(l|0)){b=l+16|0;c=b+4|0;a=f[c>>2]|0;if(!a){a=f[b>>2]|0;if(!a){j=0;break}else c=b}while(1){b=a+20|0;d=f[b>>2]|0;if(d|0){a=d;c=b;continue}b=a+16|0;d=f[b>>2]|0;if(!d)break;else{a=d;c=b}}if(c>>>0>>0)ja();else{f[c>>2]=0\\n;j=a;break}}else{d=f[l+8>>2]|0;if(d>>>0>>0)ja();a=d+12|0;if((f[a>>2]|0)!=(l|0))ja();c=b+8|0;if((f[c>>2]|0)==(l|0)){f[a>>2]=b;f[c>>2]=d;j=b;break}else ja()}}while(0);if(g){a=f[l+28>>2]|0;c=69272+(a<<2)|0;b=(j|0)==0;do{if((l|0)==(f[c>>2]|0)){f[c>>2]=j;if(b){f[17243]=f[17243]&~(1<>>0>=(f[17246]|0)>>>0){f[g+16+(((f[g+16>>2]|0)!=(l|0)&1)<<2)>>2]=j;if(b){r=l;e=k;break a}else break}else ja()}while(0);b=f[17246]|0;if(j>>>0>>0)ja();f[j+24>>2]=g;a=l+16|0;c=f[a>>2]|0;do{if(c|0)if(c>>>0>>0)ja();else{f[j+16>>2]=c;f[c+24>>2]=j;break}}while(0);a=f[a+4>>2]|0;if(a)if(a>>>0<(f[17246]|0)>>>0)ja();else{f[j+20>>2]=a;f[a+24>>2]=j;r=l;e=k;break}else{r=l;e=k}}else{r=l;e=k}}else{r=a;e=b}}while(0);h=f[17246]|0;if(o>>>0>>0)ja();a=o+4|0;c=f[a>>2]|0;if(!(c&2)){a=f[17247]|0;if((o|0)==(f[17248]|0)){q=(f[17245]|0)+e|0;f[17245]=q;f[17248]=r;f[r+4>>2]=q|1;if((r|0)!=(a|0))return;f[17247]=0;f[17244]=0;return}if((o|0)==(a|0)){q=(f[17244]|0)+e|0;f[17244]=q;f[17247]=r;f[r+4>>2]=q|1;f[r+q>>2]=q;return}e=(c&-8)+e|0;d=c>>>3;b:do{if(c>>>0>=256){g=f[o+24>>2]|0;b=f[o+12>>2]|0;do{if((b|0)==(o|0)){b=o+16|0;c=b+4|0;a=f[c>>2]|0;if(!a){a=f[b>>2]|0;if(!a){n=0;break}else c=b}while(1){b=a+20|0;d=f[b>>2]|0;if(d|0){a=d;c=b;continue}b=a+16|0;d=f[b>>2]|0;if(!d)break;else{a=d;c=b}}if(c>>>0>>0)ja();else{f[c>>2]=0;n=a;break}}else{d=f[o+8>>2]|0;if(d>>>0>>0)ja();a=d+12|0;if((f[a>>2]|0)!=(o|0))ja();c=b+8|0;if((f[c>>2]|0)==(o|0)){f[a>>2]=b;f[c>>2]=d;n=b;break}else ja()}}while(0);if(g|0){a=f[o+28>>2]|0;c=69272+(a<<2)|0;b=(n|0)==0;do{if((o|0)==(f[c>>2]|0)){f[c>>2]=n;if(b){f[17243]=f[17243]&~(1<>>0>=(f[17246]|0)>>>0){f[g+16+(((f[g+16>>2]|0)!=(o|0)&1)<<2)>>2]=n;if(b)break b;else break}else ja()}while(0);b=f[17246]|0;if(n>>>0>>0)ja();f[n+24>>2]=g;a=o+16|0;c=f[a>>2]|0;do{if(c|0)if(c>>>0>>0)ja();else{f[n+16>>2]=c;f[c+24>>2]=n;break}}while(0);a=f[a+4>>2]|0;if(a|0)if(a>>>0<(f[17246]|0)>>>0)ja();else{f[n+20>>2]=a;f[a+24>>2]=n;break}}}else{c=f[o+8>>2]|0;b=f[o+12>>2]|0;a=69008+(d<<1<<2)|0;if((c|0)!=(a|0)){if(c>>>0>>0)ja();if((f[c+12>>2]|0)!=(o|0))ja()}if((b|0)==(c|0)){f[17242]=f[17242]&~(1<>>0>>0)ja();a=b+8|0;if((f[a>>2]|0)==(o|0))m=a;else ja()}else m=b+8|0;f[c+12>>2]=b;f[m>>2]=c}}while(0);f[r+4>>2]=e|1;f[r+e>>2]=e;if((r|0)==(f[17247]|0)){f[17244]=e;return}}else{f[a>>2]=c&-2;f[r+4>>2]=e|1;f[r+e>>2]=e}a=e>>>3;if(e>>>0<256){b=69008+(a<<1<<2)|0;c=f[17242]|0;a=1<>2]|0;if(c>>>0<(f[17246]|0)>>>0)ja();else{p=c;q=a}}else{f[17242]=c|a;p=b;q=b+8|0}f[q>>2]=r;f[p+12>>2]=r;f[r+8>>2]=p;f[r+12>>2]=b;return}a=e>>>8;if(a)if(e>>>0>16777215)a=31;else{p=(a+1048320|0)>>>16&8;q=a<>>16&4;q=q<>>16&2;a=14-(o|p|a)+(q<>>15)|0;a=e>>>(a+7|0)&1|a<<1}else a=0;d=69272+(a<<2)|0;f[r+28>>2]=a;f[r+20>>2]=0;f[r+16>>2]=0;c=f[17243]|0;b=1<>2]=r;f[r+24>>2]=d;f[r+12>>2]=r;f[r+8>>2]=r;return}c=e<<((a|0)==31?0:25-(a>>>1)|0);d=f[d>>2]|0;while(1){if((f[d+4>>2]&-8|0)==(e|0)){a=121;break}b=d+16+(c>>>31<<2)|0;a=f[b>>2]|0;if(!a){a=118;break}else{c=c<<1;d=a}}if((a|0)==118){if(b>>>0<(f[17246]|0)>>>0)ja();f[b>>2]=r;f[r+24>>2]=d;f[r+12>>2]=r;f[r+8>>2]=r;return}else if((a|0)==121){a=d+8|0;c=f[a>>2]|0;q=f[17246]|0;if(!(c>>>0>=q>>>0&d>>>0>=q>>>0))ja();f[c+12>>2]=r;f[a>>2]=r;f[r+8>>2]=c;f[r+12>>2]=d;f[r+24>>2]=0;return}}function kc(a,b){a=a|0;b=b|0;if(a>>>0<9){b=fc(b)|0;return b|0}else{b=lc(a,b)|0;return b|0}return 0}function lc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;a=a>>>0>16?a:16;if(a+-1&a){c=16;while(1)if(c>>>0>>0)c=c<<1;else{a=c;break}}if((-64-a|0)>>>0<=b>>>0){f[140]=12;h=0;return h|0}g=b>>>0<11?16:b+11&-8;c=fc(g+12+a|0)|0;if(!c){h=0;return h|0}e=c+-8|0;do{if(c&a+-1){d=(c+a+-1&0-a)+-8|0;b=e;d=(d-b|0)>>>0>15?d:d+a|0;b=d-b|0;a=c+-4|0;i=f[a>>2]|0;c=(i&-8)-b|0;if(!(i&3)){f[d>>2]=(f[e>>2]|0)+b;f[d+4>>2]=c;a=d;b=d;break}else{i=d+4|0;f[i>>2]=c|f[i>>2]&1|2;c=d+c+4|0;f[c>>2]=f[c>>2]|1;f[a>>2]=b|f[a>>2]&1|2;f[i>>2]=f[i>>2]|1;jc(e,b);a=d;b=d;break}}else{a=e;b=e}}while(0);a=a+4|0;c=f[a>>2]|0;if(c&3|0?(h=c&-8,h>>>0>(g+16|0)>>>0):0){i=h-g|0;h=b+g|0;f[a>>2]=g|c&1|2;f[h+4>>2]=i|3;g=h+i+4|0;f[g>>2]=f[g>>2]|1;jc(h,i)}i=b+8|0;return i|0}function mc(a){a=a|0;return}function nc(a){a=a|0;Dc(a);return}function oc(a){a=a|0;return}function pc(a){a=a|0;return}function qc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;h=u;u=u+64|0;e=h;if(!(uc(a,b)|0))if((b|0)!=0?(g=yc(b,8)|0,(g|0)!=0):0){b=e+4|0;d=b+52|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(d|0));f[e>>2]=g;f[e+8>>2]=a;f[e+12>>2]=-1;f[e+48>>2]=1;xa[f[(f[g>>2]|0)+28>>2]&3](g,e,f[c>>2]|0,1);if((f[e+24>>2]|0)==1){f[c>>2]=f[e+16>>2];b=1}else b=0}else b=0;else b=1;u=h;return b|0}function rc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;if(uc(a,f[b+8>>2]|0)|0)xc(b,c,d,e);return}function sc(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0;do{if(!(uc(a,f[c+8>>2]|0)|0)){if(uc(a,f[c>>2]|0)|0){a=c+32|0;if((f[c+16>>2]|0)!=(d|0)?(h=c+20|0,(f[h>>2]|0)!=(d|0)):0){f[a>>2]=e;f[h>>2]=d;e=c+40|0;f[e>>2]=(f[e>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0)b[c+54>>0]=1;f[c+44>>2]=4;break}if((e|0)==1)f[a>>2]=1}}else wc(c,d,e)}while(0);return}function tc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(uc(a,f[b+8>>2]|0)|0)vc(b,c,d);return}function uc(a,b){a=a|0;b=b|0;return(a|0)==(b|0)|0}function vc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;e=a+16|0;g=f[e>>2]|0;h=a+36|0;i=a+24|0;do{if(g){if((g|0)!=(c|0)){f[h>>2]=(f[h>>2]|0)+1;f[i>>2]=2;b[a+54>>0]=1;break}if((f[i>>2]|0)==2)f[i>>2]=d}else{f[e>>2]=c;f[i>>2]=d;f[h>>2]=1}}while(0);return}function wc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((f[a+4>>2]|0)==(b|0)?(d=a+28|0,(f[d>>2]|0)!=1):0)f[d>>2]=c;return}function xc(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0;b[a+53>>0]=1;do{if((f[a+4>>2]|0)==(d|0)){b[a+52>>0]=1;h=a+16|0;g=f[h>>2]|0;j=a+54|0;k=a+48|0;i=a+24|0;d=a+36|0;if(!g){f[h>>2]=c;f[i>>2]=e;f[d>>2]=1;if(!((e|0)==1&(f[k>>2]|0)==1))break;b[j>>0]=1;break}if((g|0)!=(c|0)){f[d>>2]=(f[d>>2]|0)+1;b[j>>0]=1;break}d=f[i>>2]|0;if((d|0)==2){f[i>>2]=e;d=e}if((d|0)==1&(f[k>>2]|0)==1)b[j>>0]=1}}while(0);return}function yc(a,c){a=a|0;c=c|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=u;u=u+64|0;n=q;p=f[a>>2]|0;o=a+(f[p+-8>>2]|0)|0;p=f[p+-4>>2]|0;f[n>>2]=c;f[n+4>>2]=a;f[n+8>>2]=24;g=n+12|0;h=n+16|0;i=n+20|0;j=n+24|0;k=n+28|0;l=n+32|0;m=n+40|0;a=uc(p,c)|0;c=g;e=c+40|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(e|0));d[g+40>>1]=0;b[g+42>>0]=0;a:do{if(a){f[n+48>>2]=1;va[f[(f[p>>2]|0)+20>>2]&3](p,n,o,o,1,0);a=(f[j>>2]|0)==1?o:0}else{sa[f[(f[p>>2]|0)+24>>2]&3](p,n,o,1,0);switch(f[n+36>>2]|0){case 0:{a=(f[m>>2]|0)==1&(f[k>>2]|0)==1&(f[l>>2]|0)==1?f[i>>2]|0:0;break a}case 1:break;default:{a=0;break a}}if((f[j>>2]|0)!=1?!((f[m>>2]|0)==0&(f[k>>2]|0)==1&(f[l>>2]|0)==1):0){a=0;break}a=f[h>>2]|0}}while(0);u=q;return a|0}function zc(a){a=a|0;Dc(a);return}function Ac(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;if(uc(a,f[b+8>>2]|0)|0)xc(b,c,d,e);else{a=f[a+8>>2]|0;va[f[(f[a>>2]|0)+20>>2]&3](a,b,c,d,e,g)}return}function Bc(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0;do{if(!(uc(a,f[c+8>>2]|0)|0)){h=a+8|0;if(!(uc(a,f[c>>2]|0)|0)){j=f[h>>2]|0;sa[f[(f[j>>2]|0)+24>>2]&3](j,c,d,e,g);break}a=c+32|0;if((f[c+16>>2]|0)!=(d|0)?(i=c+20|0,(f[i>>2]|0)!=(d|0)):0){f[a>>2]=e;e=c+44|0;if((f[e>>2]|0)==4)break;a=c+52|0;b[a>>0]=0;k=c+53|0;b[k>>0]=0;h=f[h>>2]|0;va[f[(f[h>>2]|0)+20>>2]&3](h,c,d,d,1,g);if(b[k>>0]|0)if(!(b[a>>0]|0)){a=3;j=11}else a=3;else{a=4;j=11}if((j|0)==11){f[i>>2]=d;k=c+40|0;f[k>>2]=(f[k>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0)b[c+54>>0]=1}f[e>>2]=a;break}if((e|0)==1)f[a>>2]=1}else wc(c,d,e)}while(0);return}function Cc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(uc(a,f[b+8>>2]|0)|0)vc(b,c,d);else{a=f[a+8>>2]|0;xa[f[(f[a>>2]|0)+28>>2]&3](a,b,c,d)}return}function Dc(a){a=a|0;gc(a);return}function Ec(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=u;u=u+16|0;d=e;f[d>>2]=f[c>>2];a=ua[f[(f[a>>2]|0)+16>>2]&1](a,b,d)|0;if(a)f[c>>2]=f[d>>2];u=e;return a&1|0}function Fc(a){a=a|0;if(!a)a=0;else a=(yc(a,80)|0)!=0;return a&1|0}function Gc(){}function Hc(a){a=a|0;var b=0,c=0;c=a+15&-16|0;b=f[r>>2]|0;a=b+c|0;if((c|0)>0&(a|0)<(b|0)|(a|0)<0){ca()|0;ka(12);return-1}f[r>>2]=a;if((a|0)>(ba()|0)?(aa()|0)==0:0){ka(12);f[r>>2]=b;return-1}return b|0}function Ic(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=a+d|0;c=c&255;if((d|0)>=67){while(a&3){b[a>>0]=c;a=a+1|0}e=h&-4|0;g=e-64|0;i=c|c<<8|c<<16|c<<24;while((a|0)<=(g|0)){f[a>>2]=i;f[a+4>>2]=i;f[a+8>>2]=i;f[a+12>>2]=i;f[a+16>>2]=i;f[a+20>>2]=i;f[a+24>>2]=i;f[a+28>>2]=i;f[a+32>>2]=i;f[a+36>>2]=i;f[a+40>>2]=i;f[a+44>>2]=i;f[a+48>>2]=i;f[a+52>>2]=i;f[a+56>>2]=i;f[a+60>>2]=i;a=a+64|0}while((a|0)<(e|0)){f[a>>2]=i;a=a+4|0}}while((a|0)<(h|0)){b[a>>0]=c;a=a+1|0}return h-d|0}function Jc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0;if((d|0)>=8192)return la(a|0,c|0,d|0)|0;h=a|0;g=a+d|0;if((a&3)==(c&3)){while(a&3){if(!d)return h|0;b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0;d=d-1|0}d=g&-4|0;e=d-64|0;while((a|0)<=(e|0)){f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];f[a+12>>2]=f[c+12>>2];f[a+16>>2]=f[c+16>>2];f[a+20>>2]=f[c+20>>2];f[a+24>>2]=f[c+24>>2];f[a+28>>2]=f[c+28>>2];f[a+32>>2]=f[c+32>>2];f[a+36>>2]=f[c+36>>2];f[a+40>>2]=f[c+40>>2];f[a+44>>2]=f[c+44>>2];f[a+48>>2]=f[c+48>>2];f[a+52>>2]=f[c+52>>2];f[a+56>>2]=f[c+56>>2];f[a+60>>2]=f[c+60>>2];a=a+64|0;c=c+64|0}while((a|0)<(d|0)){f[a>>2]=f[c>>2];a=a+4|0;c=c+4|0}}else{d=g-4|0;while((a|0)<(d|0)){b[a>>0]=b[c>>0]|0;b[a+1>>0]=b[c+1>>0]|0;b[a+2>>0]=b[c+2>>0]|0;b[a+3>>0]=b[c+3>>0]|0;a=a+4|0;c=c+4|0}}while((a|0)<(g|0)){b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0}return h|0}function Kc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;sa[a&3](b|0,c|0,d|0,e|0,f|0)}function Lc(a,b){a=a|0;b=b|0;ta[a&7](b|0)}function Mc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ua[a&1](b|0,c|0,d|0)|0}function Nc(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;va[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function Oc(a,b,c){a=a|0;b=b|0;c=c|0;return wa[a&0](b|0,c|0)|0}function Pc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;xa[a&3](b|0,c|0,d|0,e|0)}function Qc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;_(0)}function Rc(a){a=a|0;_(1)}function Sc(a,b,c){a=a|0;b=b|0;c=c|0;_(2);return 0}function Tc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;_(3)}function Uc(a,b){a=a|0;b=b|0;_(4);return 0}function Vc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;_(5)}var sa=[Qc,sc,Bc,Qc];var ta=[Rc,mc,nc,oc,pc,zc,Rc,Rc];var ua=[Sc,qc];var va=[Tc,rc,Ac,Tc];var wa=[Uc];var xa=[Vc,tc,Cc,Vc];return{setThrew:Ca,_bidi_getParagraphEndIndex:Ha,___cxa_is_pointer_type:Fc,_memset:Ic,_sbrk:Hc,_memcpy:Jc,stackAlloc:ya,_ushape_arabic:Fa,_memalign:kc,getTempRet0:Ea,setTempRet0:Da,_emscripten_get_global_libc:ec,_bidi_getLine:Ia,stackSave:za,___cxa_can_catch:Ec,_free:gc,runPostSets:Gc,establishStackSpace:Ba,stackRestore:Aa,_malloc:fc,_emscripten_replace_memory:ra,_bidi_processText:Ga,stackAlloc:ya,stackSave:za,stackRestore:Aa,establishStackSpace:Ba,setThrew:Ca,setTempRet0:Da,getTempRet0:Ea,dynCall_viiiii:Kc,dynCall_vi:Lc,dynCall_iiii:Mc,dynCall_viiiiii:Nc,dynCall_iii:Oc,dynCall_viiii:Pc}}(b.s,b.t,buffer);b.setThrew=Z.setThrew;b._bidi_getParagraphEndIndex=Z._bidi_getParagraphEndIndex;b.___cxa_is_pointer_type=Z.___cxa_is_pointer_type;var Ha=b._memset=Z._memset,Ga=b._sbrk=Z._sbrk,La=b._memcpy=Z._memcpy;b.stackAlloc=Z.stackAlloc;b._ushape_arabic=Z._ushape_arabic;b._memalign=Z._memalign;b.getTempRet0=Z.getTempRet0;b.setTempRet0=Z.setTempRet0;b._emscripten_get_global_libc=Z._emscripten_get_global_libc;b._bidi_getLine=Z._bidi_getLine;b.stackSave=Z.stackSave;b.___cxa_can_catch=Z.___cxa_can_catch;var Q=b._free=Z._free;b.runPostSets=Z.runPostSets;b.establishStackSpace=Z.establishStackSpace;b.stackRestore=Z.stackRestore;var P=b._malloc=Z._malloc,va=b._emscripten_replace_memory=Z._emscripten_replace_memory;b._bidi_processText=Z._bidi_processText;b.dynCall_viiiii=Z.dynCall_viiiii;b.dynCall_vi=Z.dynCall_vi;b.dynCall_iiii=Z.dynCall_iiii;b.dynCall_viiiiii=Z.dynCall_viiiiii;b.dynCall_iii=Z.dynCall_iii;b.dynCall_viiii=Z.dynCall_viiii;A.f=b.stackAlloc;A.m=b.stackSave;A.g=b.stackRestore;A.I=b.establishStackSpace;A.b=b.setTempRet0;A.w=b.getTempRet0;b.asm=Z;function y(a){this.name=\\\"ExitStatus\\\";this.message=\\\"Program terminated with exit(\\\"+a+\\\")\\\"}y.prototype=Error();y.prototype.constructor=y;var Ma=null;b.callMain=b.G=function(a){function c(){for(var a=0;3>a;a++)e.push(0)}a=a||[];X||(X=!0,W(za));var d=a.length+1,e=[O(Ea(b.thisProgram),\\\"i8\\\",0)];c();for(var f=0;fmergedParagraphLineBreakPoints[mergedParagraphLineBreakPoints.length-1])){mergedParagraphLineBreakPoints.push(lineBreakPoint)}}mergedParagraphLineBreakPoints.push(paragraphEndIndex)}for(var i$2=0,list$1=lineBreakPoints;i$2mergedParagraphLineBreakPoints[mergedParagraphLineBreakPoints.length-1]){mergedParagraphLineBreakPoints.push(lineBreakPoint$1)}}return mergedParagraphLineBreakPoints}function processBidirectionalText(input,lineBreakPoints){if(!input){return[input]}var nDataBytes=(input.length+1)*2;var stringInputPtr=Module._malloc(nDataBytes);Module.stringToUTF16(input,stringInputPtr,nDataBytes);var paragraphCount=Module.ccall(\\\"bidi_processText\\\",\\\"number\\\",[\\\"number\\\",\\\"number\\\"],[stringInputPtr,input.length]);if(paragraphCount===0){Module._free(stringInputPtr);return[input]}var mergedParagraphLineBreakPoints=mergeParagraphLineBreakPoints(lineBreakPoints,paragraphCount);var startIndex=0;var lines=[];for(var i=0,list=mergedParagraphLineBreakPoints;i 1) {\n // this is edge of the world case\n json.regions = arrayMerge(data[0].regions, data[1].regions, function(first, second) {\n return first.country.ISO3 === second.country.ISO3;\n });\n }\n copyright = new T('
' +\n '

General Copyrights:

' +\n '{{@generalCopyrights}}

{{=_val}}

{{/@generalCopyrights}}' +\n '{{@regions}}

{{=_val.country.label}}:

' +\n '{{_val.copyrightImages}}{{/_val.copyrightImages}}' +\n '{{@_val.copyrights}}

{{=_val}}

{{/@_val.copyrights}}{{/@regions}}' +\n '
');\n return copyright.render(json);\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/copyright/copyright.js","define(['services/validators', 'services/converters', 'common/parameterApplications'],\n function(validators, converters, parameterApplications) {\n return {\n create: function() {\n return {\n key: {validator: validators.string},\n boundingBox: {validator: validators.boundingBox, converter: converters.boundingBox},\n protocol: {validator: validators.oneOfValue(['http', 'https'], 'protocol')}\n };\n },\n modifyRequestOptions: function(requestOptions) {\n var boundingBox = requestOptions.boundingBox;\n if (boundingBox) {\n requestOptions.minLon = boundingBox.minLon;\n requestOptions.maxLon = boundingBox.maxLon;\n requestOptions.minLat = boundingBox.minLat;\n requestOptions.maxLat = boundingBox.maxLat;\n delete requestOptions.boundingBox;\n }\n },\n /*\n * At this moment it's impossible to map one field to two and more output fields but we need to do this, e.g.\n * bounding box needs to be mapped to topLeft and btmRight. That's why this method tries to fix this\n */\n modifyFields: function(fields) {\n var resultFields = Object.assign({}, fields);\n\n var coordinateParameterDefinition = {\n application: parameterApplications.PATH\n };\n\n resultFields.minLon = coordinateParameterDefinition;\n resultFields.maxLon = coordinateParameterDefinition;\n resultFields.minLat = coordinateParameterDefinition;\n resultFields.maxLat = coordinateParameterDefinition;\n\n return resultFields;\n }\n };\n });\n\n\n\n// WEBPACK FOOTER //\n// ./services/copyrights/copyrightsParameters.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * This layer groups functionality of\n *
traffic layer \n * and traffic incidents \n * In most situations you will want to use these layers together and refresh them at the same time, so\n * we are providing this layer to make your work easier.\n *\n * If you use this layer there will be only one timer and it will issue only one request to check if\n * traffic data is up to date. If you create layers on your own, each layer will have it's own timer and\n * will check for data freshness on its own. You can specify how ofter the data should be refreshed.\n *\n *\n * @class TomTomTrafficWithIncidentsLayer\n * @extends L.LayerGroup\n * @namespace L\n * @module Map\n * @constructor\n * @param {Object} [options] It accepts all the options that\n * Leaflet's LayerGroup\n * class allows. The additional options, which are TomTom specific, are described below.\n * @param {Object|Boolean} [options.traffic] Options which will be used for traffic and traffic incidents layers.\n * Please refer to the\n * docs \n * to check what options you can use.\n * @param {Number} [options.refresh=30000] The traffic and traffic incidents information changes and needs to be updated\n * periodically. By default, it is refreshed every 30 seconds. This parameter's value represents the time\n * in milliseconds between each update interval. The value must be 30000 or greater.\n */\n\ndefine([\n 'leaflet',\n './trafficRefresher',\n './trafficLayer',\n './trafficIncidentsLayer'\n],\nfunction(\n L,\n trafficRefresher,\n trafficLayer,\n trafficIncidentsLayer\n) {\n\n L.TomTomTrafficWithIncidentsLayer = L.LayerGroup.extend({\n initialize: function(options) {\n L.setOptions(this, options);\n },\n _trafficModelIdCallback: function(trafficModelId) {\n this.trafficLayer.setTrafficModelId(trafficModelId);\n this.incidentsLayer.setTrafficModelId(trafficModelId);\n },\n /**\n * Name of traffic with incidents layer. It can be used to differentiate layers.\n * @property name\n * @default \"trafficWithIncidents\"\n * @type String\n */\n name: 'trafficWithIncidents',\n options: {\n pane: 'tilePane'\n },\n onAdd: function(map) {\n var trafficOptions = L.setOptions({options: {_noRefresher: true}}, this.options);\n this.trafficLayer = trafficLayer(trafficOptions);\n this.incidentsLayer = trafficIncidentsLayer(trafficOptions);\n this.trafficLayerWithIncidents = L.layerGroup([this.trafficLayer, this.incidentsLayer]);\n this.trafficRefresherIntervalId =\n trafficRefresher.addRefresherWithModelId(undefined, this._trafficModelIdCallback, this);\n map.addLayer(this.trafficLayerWithIncidents);\n },\n onRemove: function() {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n this.trafficLayerWithIncidents.remove();\n },\n updateOptions: function(options) {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n this.trafficRefresherIntervalId =\n trafficRefresher.addRefresherWithModelId(options, this._trafficModelIdCallback, this);\n L.setOptions(this, options);\n }\n });\n\n L.tomTomTrafficWithIncidentsLayer = function(options) {\n return new L.TomTomTrafficWithIncidentsLayer(options);\n };\n\n return L.tomTomTrafficWithIncidentsLayer;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/trafficWithIncidents.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Provides the current traffic model id which is the traffic model number needed for the Traffic API -\n * Incidents Layer, and the {{#crossLink \"TrafficIncidents\"}}Traffic API - Incident Details{{/crossLink}}\n * calls.\n *\n * It is updated every minute, and is valid for two minutes before it times out.\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"TrafficModelId/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"TrafficModelId/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * @class TrafficModelId\n * @uses Chain\n * @module Services\n * @uses KeyMixin\n * @uses ProtocolMixin\n * @constructor\n * @param {Object} [options]\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n *\n * @example\n * ```js\n * function callbackFn(response) {\n * console.log(response);\n * }\n * tomtom.trafficModelId()\n * .key(\"\")\n * .go(callbackFn);\n * ```\n */\ndefine(['rest/trafficViewport', 'model/traffic/trafficModelId', './chain', './validators'],\n function(restTrafficViewport, model, chain, validators) {\n 'use strict';\n\n var fields = {\n key: {validator: validators.string},\n protocol: {validator: validators.oneOfValue(['http', 'https'], 'protocol')}\n };\n\n var trafficViewport = restTrafficViewport();\n\n function handleChain(data, callback) {\n trafficViewport.trafficViewport(fields, data, function(response) {\n callback.call(this, model(response));\n });\n }\n\n return function(options) {\n return chain(fields, handleChain, options);\n };\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./services/trafficModelId.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['endpoints', 'rest/request/requestFactory', 'apiKeyNames'],\n function(endpoints, requestFactory, ApiKeyNames) {\n 'use strict';\n\n return function() {\n return {\n trafficViewport: requestFactory.single(endpoints.trafficViewport, ApiKeyNames.traffic)\n };\n };\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./rest/trafficViewport.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine(['../selector'], function(selector) {\n 'use strict';\n return function(json) {\n return selector(json, 'viewpResp.trafficState.@trafficModelId') || -1;\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/traffic/trafficModelId.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Tile layer for Leaflet that shows styled traffic tubes using\n * [Traffic API](https://developer.tomtom.com/traffic-api)\n * from TomTom.\n *\n * @class TomTomTrafficLayer\n * @extends L.TileLayer\n * @module Map\n * @namespace L\n * @constructor\n * @param {Object} [options] It accepts all the options that\n * Leaflet's TileLayer\n * allows.\n * The additional options, which are TomTom specific, are described below.\n * @param {String} [options.key] API key that can be obtained from\n * [TomTom's developer portal](https://developer.tomtom.com).\n * This is a key for the traffic services.\n * @param {\"s1\"|\"s2\"|\"s3\"|\"night\"} [options.style=\"night\"] The traffic layer style to use\n * @param {Number} [options.opacity=0.8] The traffic incidents layer's opacity set by default to 80%.\n * A floating point value between `0` and `1` have to be used, where `1` means no transparency.\n * @param {Boolean} [options.noRefresh] Disables periodic updates of traffic layers.\n * @param {Number} [options.refresh=30000] The traffic incidents information changes and needs to be updated\n * periodically. By default, it is refreshed every 30 seconds. This parameter's value represents the time\n * in milliseconds between each update interval. The value must be 30000 or greater.\n *\n */\n/**\n * Name of traffic layer. It can be used to differentiate layers.\n * @property name\n * @default \"traffic\"\n * @type String\n */\n\n/* jshint nomen:false */\ndefine(['leaflet',\n 'security',\n 'http',\n 'endpoints',\n './trafficRefresher',\n 'requester/analytics',\n './tileSetTransform',\n 'services/utils'],\nfunction(L,\n security,\n http,\n endpoints,\n trafficRefresher,\n analytics,\n tileSetTransform,\n Utils\n) {\n 'use strict';\n\n var trafficStyles = ['s1', 's2', 's3', 'night'];\n\n function getTrafficStyle(trafficLayer) {\n var style = 'night',\n i;\n if (Utils.isString(trafficLayer)) {\n for (i = 0; i < trafficStyles.length; i += 1) {\n if (trafficStyles[i] === trafficLayer.toLowerCase()) {\n return trafficStyles[i];\n }\n }\n }\n return style;\n }\n\n function handleSubdomains(options) {\n if (Utils.isString(options.subdomains)) {\n options.subdomains = options.subdomains.split('');\n }\n }\n\n function loadAnimation() {\n var opacity = 'opacity',\n back = this._bgBuffer;\n back.style[L.DomUtil.TRANSITION] = opacity + ' 10';\n back.style[opacity] = 0.1;\n this._tileContainer.style[opacity] = this.options.opacity;\n }\n\n var emptyTileUrl = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAB9JREFUGBntwQENAAAAwiD7p34ON2AAAAAAAAAAAOcCIQAAAfWivQQAAAAASUVORK5CYII=' //eslint-disable-line\n\n L.TomTomTrafficLayer = L.TileLayer.extend({\n options: {\n attribution: '',\n minZoom: 2,\n maxZoom: 18,\n subdomains: 'abcd',\n reuseTiles: true,\n opacity: 0.8,\n errorTileUrl: emptyTileUrl,\n detectRetina: false,\n trafficModelId: '-1',\n refresh: 30000,\n zIndex: 230\n },\n /**\n * Name of traffic layer. It can be used to differentiate layers.\n * @property name\n * @default \"traffic\"\n * @type String\n */\n name: 'traffic',\n initialize: function(options) {\n var key;\n options = L.setOptions(this, options);\n if (options.bounds) {\n options.bounds = L.latLngBounds(options.bounds);\n }\n security.setKey('services/traffic', options.key);\n key = security.getKey('services/traffic');\n options.accessToken = key;\n this._requestUrl = http.protocol() + '://' + endpoints.trafficLayer +\n '?t={trafficModelId}' + (key ? '&key={accessToken}' : '');\n this._url = this._requestUrl;\n options.style = getTrafficStyle(options.style);\n handleSubdomains(options);\n options.tileSize = options.detectRetina && L.Browser.retina ? 512 : 256;\n if (options.tileSize === 512) {\n options.zoomOffset -= 1;\n options.minZoom = options.minZoom > 0 ? options.minZoom - 1 : 0;\n }\n this.setOpacity(options.opacity);\n\n tileSetTransform.fixTileScale.call(this);\n },\n onAdd: function(map) {\n L.TileLayer.prototype.onAdd.call(this, map);\n if (this._animated) {\n this.on('load', loadAnimation);\n }\n this._updateOpacity();\n this.trafficRefresherIntervalId =\n trafficRefresher.addRefresherWithModelId(undefined, this.setTrafficModelId, this);\n },\n onRemove: function(map) {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n L.TileLayer.prototype.onRemove.call(this, map);\n },\n updateOptions: function(options) {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n this.trafficRefresherIntervalId =\n trafficRefresher.addRefresherWithModelId(options, this.setTrafficModelId, this);\n L.setOptions(this, options);\n },\n setTrafficModelId: function(trafficModelId) {\n if (this.options.trafficModelId !== trafficModelId) {\n this.options.trafficModelId = trafficModelId;\n this.redraw();\n }\n },\n createTile: function(coords, done) {\n var tile;\n if (this.options.trafficModelId === '-1') {\n tile = document.createElement('img');\n tile.src = emptyTileUrl;\n done(null, tile);\n return tile;\n }\n return analytics.customCreateTile(coords, done, this);\n }\n });\n\n L.tomTomTrafficLayer = function(options) {\n return new L.TomTomTrafficLayer(options);\n };\n\n return L.tomTomTrafficLayer;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/trafficLayer.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['endpoints', 'rest/request/requestFactory', 'apiKeyNames'],\n function(endpoints, requestFactory, ApiKeyNames) {\n 'use strict';\n\n return function() {\n return {\n incidentsDetails: requestFactory.single(endpoints.trafficIncidents, ApiKeyNames.traffic)\n };\n };\n });\n\n\n\n// WEBPACK FOOTER //\n// ./rest/trafficIncidents.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine(['../arrayMerge'], function(arrayMerge) {\n 'use strict';\n\n var getFeature;\n var incidentCategories = {\n 0: 'Unknown',\n 1: 'Accident',\n 2: 'Fog',\n 3: 'Dangerous Conditions',\n 4: 'Rain',\n 5: 'Ice',\n 6: 'Jam',\n 7: 'Lane Closed',\n 8: 'Road Closed',\n 9: 'Road Works',\n 10: 'Wind',\n 11: 'Flooding',\n 12: 'Detour',\n 13: 'Cluster'\n };\n\n var incidentSeverities = {0: 'unknown', 1: 'minor', 2: 'moderate', 3: 'major', 4: 'undefined'};\n\n function newFeature(properties, type) {\n return {\n type: 'Feature',\n geometry: {type: type, coordinates: []},\n properties: properties\n };\n }\n\n function newFeatureCollection(properties) {\n var featureCollection = {\n type: 'FeatureCollection',\n features: []\n };\n if (properties) {\n featureCollection.properties = properties;\n }\n return featureCollection;\n }\n\n function setProperty(property, propertyName, properties) {\n if (property) {\n properties[propertyName] = property;\n }\n }\n\n getFeature = function(poi, preserveCluster) {\n var feature, i, properties = {};\n properties.id = poi.id;\n if (poi.cbl && poi.ctr) {\n properties.clusterBounds = [[poi.cbl.y, poi.cbl.x], [poi.ctr.y, poi.ctr.x]];\n }\n if (poi.op) {\n properties.originalPosition = [poi.op.y, poi.op.x];\n }\n if (poi.ic) {\n properties.incidentCategory = incidentCategories[poi.ic];\n }\n if (poi.ty) {\n properties.incidentSeverity = incidentSeverities[poi.ty];\n }\n setProperty(poi.cs, 'clusterSize', properties);\n setProperty(poi.d, 'description', properties);\n setProperty(poi.c, 'incidentCause', properties);\n setProperty(poi.f, 'from', properties);\n setProperty(poi.t, 'to', properties);\n setProperty(poi.r, 'roadNumber', properties);\n setProperty(poi.dl, 'delaySeconds', properties);\n setProperty(poi.l, 'lengthMeters', properties);\n if (poi.cpoi && !preserveCluster) {\n properties.clusterCoordinates = [poi.p.x, poi.p.y];\n feature = newFeatureCollection(properties);\n for (i = 0; i < poi.cpoi.length; i += 1) {\n feature.features.push(getFeature(poi.cpoi[i], false));\n }\n } else {\n if (poi.cpoi) {\n properties.features = poi.cpoi.map(getFeature);\n }\n feature = newFeature(properties, 'Point');\n feature.geometry.coordinates = [poi.p.x, poi.p.y];\n }\n return feature;\n };\n\n return function(preserveCluster) {\n return function(data) {\n var result = newFeatureCollection(null),\n json = data[0] || data,\n i;\n if (!json || !json.tm || !json.tm.poi) {\n return result;\n }\n if (data.length > 1) {\n // this is edge of the world case\n json.tm.poi = arrayMerge(data[0].tm.poi, data[1].tm.poi, function(first, second) {\n return first.id === second.id;\n });\n }\n for (i = 0; i < json.tm.poi.length; i += 1) {\n result.features.push(getFeature(json.tm.poi[i], preserveCluster));\n }\n return result;\n };\n };\n})\n;\n\n\n\n// WEBPACK FOOTER //\n// ./model/traffic/trafficIncidents.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* jshint nomen:false */\n// eslint-disable-next-line no-unused-vars\ndefine(['leaflet', 't', './incidentMarker'], function(L, T, incidentMarker) {\n 'use strict';\n\n var clusterPopupTemplate = new T(\n '
' +\n '
Incidents in this area: {{=incidentsNo}}
' +\n '
' +\n '
{{=features.length}} most severe incidents' +\n ' (Ordered by severity and delay)' +\n '
' +\n '
' +\n '
' +\n '
Category
' +\n '
Length
' +\n '
Streets
' +\n '
' +\n '
' +\n '
' +\n ' {{@features}}' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n ' {{=_val.properties.formattedLength}}' +\n '
' +\n '
' +\n '
From:{{=_val.properties.from}}
' +\n '
To:{{=_val.properties.to}}
' +\n '
' +\n '
' +\n '
' +\n '
' +\n ' {{/@features}}' +\n '
'\n );\n\n function compareDelays(p1, p2) {\n var d1 = p1.delaySeconds || 0;\n var d2 = p2.delaySeconds || 0;\n return d2 - d1;\n }\n\n function compareSeverity(p1, p2, severity) {\n var is1 = p1.incidentSeverity;\n var is2 = p2.incidentSeverity;\n if (is1 === severity) {\n return -1;\n } else if (is2 === severity) {\n return 1;\n }\n return 0;\n }\n\n function featuresComparator(f1, f2) {\n var severities = ['major', 'moderate', 'minor', 'unknown', 'undefined'];\n var severityComparisonResult = 0;\n var i;\n\n var p1 = f1.properties;\n var p2 = f2.properties;\n\n if (p1.incidentSeverity === p2.incidentSeverity) {\n return compareDelays(p1, p2);\n }\n\n for (i = 0; i < severities.length; ++i) {\n severityComparisonResult = compareSeverity(p1, p2, severities[i]);\n if (severityComparisonResult !== 0) {\n return severityComparisonResult;\n }\n }\n\n return severityComparisonResult;\n }\n\n function formatLength(lengthInMeters) {\n if (!lengthInMeters) {\n return '---';\n }\n\n if (lengthInMeters > 1000) {\n return (lengthInMeters / 1000).toPrecision(3) + ' km';\n }\n return lengthInMeters + ' m';\n }\n\n function getIconOptions(feature) {\n var severity = feature.properties.incidentSeverity || 'unknown';\n var clusterSize = feature.properties.clusterSize;\n\n return {\n icon: null,\n popupAnchor: [0, -5],\n background: { iconSize: [20, 20], iconAnchor: [10, 10], icon: 'icon-circle-' + severity },\n content: {\n content: clusterSize < 100 ? clusterSize : '99+',\n iconSize: [20, 20],\n iconAnchor: [0, 0],\n style: { 'color': '#fff', 'font-weight': 'bold', 'font-size': '11px' }\n }\n };\n }\n\n L.Marker.ClusterIncidentMarker = L.Marker.IncidentMarker.extend({\n options: {\n createPopup: true\n },\n onAdd: function(map) {\n this._map = map;\n if (!this.options.createPopup) {\n this.on('click', this._onClick, this);\n }\n L.Marker.prototype.onAdd.call(this, map);\n },\n onRemove: function(map) {\n if (!this.options.createPopup) {\n this.off('click', this._onClick, this);\n }\n L.Marker.prototype.onRemove.call(this, map);\n },\n _onClick: function() {\n if (this.feature.properties.clusterBounds) {\n this._map.fitBounds(this.feature.properties.clusterBounds);\n } else {\n this._map.setZoomAround(this.getLatLng(), this._map.getZoom() + 2);\n }\n },\n _updateIcon: function() {\n this.setIcon(L.svgIcon(getIconOptions(this.feature)));\n },\n _updatePopup: function() {\n var popupContent;\n var featuresToShow;\n if (!this.options.createPopup) {\n return;\n }\n\n featuresToShow = this.feature.properties.features\n .slice(0)\n .sort(featuresComparator)\n .slice(0, 4)\n .map(function(feature) {\n var properties = Object.assign({}, feature.properties, {\n icon: this.iconsMapping[feature.properties.incidentCategory],\n formattedLength: formatLength(feature.properties.lengthMeters)\n });\n return Object.assign({}, feature, {\n properties: properties\n });\n }, this);\n\n popupContent = clusterPopupTemplate.render({\n features: featuresToShow,\n incidentsNo: this.feature.properties.features.length\n });\n\n if (this.getPopup()) {\n this.setPopupContent(popupContent);\n } else {\n this.bindPopup(popupContent, { autoPan: false });\n }\n }\n });\n\n return function(feature, latlng, options) {\n if (!feature || !feature.properties) {\n return null;\n }\n\n return new L.Marker.ClusterIncidentMarker(feature, latlng, {\n createPopup: options.createPopupForCluster\n });\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/markers/clusterIncidentMarker.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * Class that represents a unit of measurement.\n *\n * @class Unit\n * @module Models\n */\ndefine(['./unitTypes'], function(unitTypes) {\n 'use strict';\n function Unit(unit) {\n if (!(unit in unitTypes)) {\n console.warn('Incorrect unit passed: ' + unit + '. Defaulted to metric');\n unit = unitTypes.metric;\n }\n this.unit = unit;\n }\n\n /**\n * Returns the label of the unit.\n * @method getLabel\n * @return {String}\n */\n Unit.prototype.getLabel = function() {\n return this.unit;\n };\n\n return Unit;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./config/unit/unit.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * This is an extension to Leaflet allowing to display TomTom traffic flow layer. It is based on the raster L.TileLayer\n * implementation. The possible options are described below.\n *\n * @class TomTomTrafficFlowLayer\n * @extends L.TileLayer\n * @namespace L\n * @module Map\n * @constructor\n * @param {Object} [options] It accepts all the options that\n * Leaflet's TileLayer\n * allows.\n * The additional options, which are TomTom specific, are described below.\n * @param {\"absolute\"|\"relative\"|\"relative-delay\"} [options.style=\"absolute\"] The traffic flow style to be displayed.\n * It should be set to one of the following values:\n * - `\"absolute\"` makes the colours of the road segments reflect a measured absolute speed.\n * - `\"relative\"` returns a speed relative to the free-flow traffic information, highlighting areas of congestion.\n * - `\"relative-delay\"` displays relative speeds only in places where they are different from the free-flow speed\n * (no green segments shown).\n * @param {Number} [options.opacity=0.7] The traffic flow layer's opacity, set by default to 70%.\n * A floating point value between `0` and `1` have to be used, where `1` means no transparency.\n * @param {Boolean} [options.noRefresh] Disables periodic updates of traffic flow layer.\n * @param {Number} [options.refresh=180000] The traffic flow information changes and needs to be updated periodically.\n * By default, it is refreshed every 3 minutes. This parameter's value represents the time in milliseconds between\n * each update interval. The value must be 30000 or greater.\n */\n/* jshint nomen:false */\ndefine(['leaflet', 'security', 'http', 'endpoints', './animator', './optionsComplementor',\n './trafficRefresher', 'requester/analytics', './tileSetTransform', 'services/utils'],\nfunction(L, security, http, endpoints, animator, optionsComplementor,\n trafficRefresher, analytics, tileSetTransform, Utils) {\n 'use strict';\n\n var trafficFlowStyles = ['absolute', 'relative', 'relative-delay'];\n\n function getTrafficFlowStyle(trafficFlowLayer) {\n var style = 'absolute', i;\n if (Utils.isString(trafficFlowLayer)) {\n for (i = 0; i < trafficFlowStyles.length; i += 1) {\n if (trafficFlowStyles[i] === trafficFlowLayer.toLowerCase()) {\n return trafficFlowStyles[i];\n }\n }\n }\n return style;\n }\n\n L.TomTomTrafficFlowLayer = L.TileLayer.extend({\n options: {\n attribution: '',\n minZoom: 2,\n maxZoom: 18,\n subdomains: 'abcd',\n reuseTiles: true,\n opacity: 0.7,\n style: 'absolute',\n refresh: 180000,\n errorTileUrl: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAB9JREFUGBntwQENAAAAwiD7p34ON2AAAAAAAAAAAOcCIQAAAfWivQQAAAAASUVORK5CYII=', //eslint-disable-line\n detectRetina: false,\n zIndex: 220\n },\n /**\n * Name of traffic flow layer. It can be used to differentiate layers.\n * @property name\n * @default \"trafficFlow\"\n * @type String\n */\n name: 'trafficFlow',\n initialize: function(options) {\n var key;\n options = L.setOptions(this, options);\n if (options.bounds) {\n options.bounds = L.latLngBounds(options.bounds);\n }\n security.setKey('services/trafficFlow', options.key);\n key = security.getKey('services/trafficFlow');\n options.accessToken = key;\n this._url = http.protocol() + '://' + endpoints.trafficFlowLayer + (key ? '?key={accessToken}' : '');\n options.style = getTrafficFlowStyle(options.style);\n optionsComplementor.fillInSubdomainsOptions(options);\n optionsComplementor.fillInTiles512Options(options);\n this.setOpacity(options.opacity);\n\n tileSetTransform.fixTileScale.call(this);\n },\n onAdd: function(map) {\n L.TileLayer.prototype.onAdd.call(this, map);\n if (this._animated) {\n this.on('load', animator.loadAnimationFactory(this));\n }\n this._updateOpacity();\n this.trafficRefresherIntervalId = trafficRefresher.add(this.options, this.redraw.bind(this));\n },\n onRemove: function(map) {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n L.TileLayer.prototype.onRemove.call(this, map);\n },\n updateOptions: function(options) {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n this.trafficRefresherIntervalId = trafficRefresher.add(options, this.redraw.bind(this));\n L.setOptions(this, options);\n },\n createTile: function(coords, done) {\n return analytics.customCreateTile(coords, done, this);\n }\n });\n\n L.tomTomTrafficFlowLayer = function(options) {\n return new L.TomTomTrafficFlowLayer(options);\n };\n\n return L.tomTomTrafficFlowLayer;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/trafficFlowLayer.js","/* jshint nomen:false */\n/**\n * Tile layer for Leaflet that uses the\n * \n * Vector Flow Tiles from Traffic API.\n *\n * The current vector renderer implementation is based on the\n * [Mapbox GL JS library](https://www.mapbox.com/mapbox-gl-js/api/).\n *\n * @example\n * ```js\n * var ttVectorTrafficLayer = new L.TomTomVectorTrafficFlowLayer({\n * key: '',\n * refresh: 30000,\n * basePath: '',\n * style: 'relative'\n * });\n *\n * map.addLayer(ttVectorTrafficLayer);\n * ```\n *\n * @class TomTomVectorTrafficFlowLayer\n * @namespace L\n * @module Map\n * @extends L.TomTomVectorLayer\n * @constructor\n * @param {\"absolute\"|\"relative\"|\"relative-delay\"} [options.style=\"absolute\"] Specifies the style and type of\n * Traffic Flow\n * @param {String} [options.key] Traffic Flow API key that can be obtained from\n * TomTom's developer portal.\n * @param {Integer} [options.refresh=30000] Traffic refresh inteval in milliseconds. The default value is 30 seconds.\n * If a lower value is provided the default value is used.\n */\ndefine([\n 'leaflet',\n './vectorLayer',\n '../labelsLayerMixinFactory',\n 'security',\n 'apiKeyNames'\n],\nfunction(\n L,\n VectorLayer,\n labelsLayerMixinFactory,\n security,\n ApiKeyNames\n) {\n 'use strict';\n\n var TomTomVectorTrafficFlowLayer = VectorLayer.extend({\n defaultOptions: {\n refresh: 30000,\n style: 'absolute',\n basePath: '/sdk'\n },\n /**\n * Name of the vector traffic flow layer. It can be used to differentiate layers.\n * @property name\n * @default \"vectorTrafficFlow\"\n * @type String\n */\n name: 'vectorTrafficFlow',\n layerSourceName: 'vectorTilesTraffic',\n refreshIntervalToken: null,\n initialize: function(options) {\n this.validateOptions(options);\n this.layerOptions = this.getLayerOptions(options);\n VectorLayer.prototype.initialize.call(this, this.layerOptions);\n security.setKey(ApiKeyNames.trafficFlow, this.layerOptions.key);\n this.refresh = this.refresh.bind(this);\n },\n onAdd: function(map) {\n VectorLayer.prototype.onAdd.call(this, map);\n this.bringToFront();\n this.startRefresh();\n },\n onRemove: function(map) {\n this.stopRefresh();\n VectorLayer.prototype.onRemove.call(this, map);\n },\n getLayerOptions: function(opts) {\n var layer = this.defaultOptions.style;\n var options = L.extend({}, this.defaultOptions, opts);\n\n if (['relative', 'relative-delay'].indexOf(options.style) >= 0) {\n layer = options.style;\n }\n\n return L.extend({}, options, {\n style: 'vectorTrafficFlow',\n layer: layer,\n refresh: Math.max(this.defaultOptions.refresh, options.refresh),\n securityKeyName: ApiKeyNames.trafficFlow,\n vector: {\n renderer: {\n refreshExpiredTiles: false\n }\n },\n styleUrlMapping: {\n vectorTrafficFlow: {\n 'absolute': options.basePath + '/styles/flow_absolute.json',\n 'relative': options.basePath + '/styles/flow_relative.json',\n 'relative-delay': options.basePath + '/styles/flow_relative-delay.json'\n }\n }\n });\n },\n validateOptions: function(options) {\n if (options && options.refresh && !Number.isInteger(options.refresh)) {\n throw new Error('The refresh value must be an Integer but ' + typeof options.refresh +\n ' was provided.');\n }\n },\n getSourceCache() {\n var cache = this._glMap &&\n this._glMap.style &&\n this._glMap.style.sourceCaches &&\n this._glMap.style.sourceCaches[this.layerSourceName];\n if (!cache) {\n // we could just return cache, but this could be any falsy type\n return null;\n }\n return cache;\n },\n startRefresh: function() {\n var refreshRate = this.layerOptions.refresh;\n this.stopRefresh();\n if (refreshRate <= 0) {\n return;\n }\n this.refreshIntervalToken = setInterval(this.refresh, refreshRate);\n },\n refresh: function() {\n var i;\n var cache = this.getSourceCache();\n if (!cache) {\n // don't stop refreshing,\n // this could be recovered in the next call\n return;\n }\n // calling cache.reload() is not efficient enough,\n // because it will call _reloadTile with state different than 'expired'\n // and will not force tile to be downladed again.\n for (i in cache._tiles) {\n if (cache._tiles.hasOwnProperty(i)) {\n cache._reloadTile(i, 'expired');\n }\n }\n cache.clearTiles();\n },\n stopRefresh: function() {\n if (this.refreshIntervalToken) {\n this.refreshIntervalToken = clearInterval(this.refreshIntervalToken);\n }\n },\n updateOptions: function(options) {\n if (options.style) {\n this.layerOptions = this.getLayerOptions(options);\n VectorLayer.prototype.updateOptions.call(this, this.layerOptions);\n this.startRefresh();\n }\n }\n });\n\n L.TomTomVectorTrafficFlowLayer = TomTomVectorTrafficFlowLayer\n .extend(labelsLayerMixinFactory('vectorTrafficFlow'));\n\n L.tomTomVectorTrafficFlowLayer = function tomTomVectorTrafficFlowLayer(options) {\n return new L.TomTomVectorTrafficFlowLayer(options);\n };\n\n return L.tomTomVectorTrafficFlowLayer;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/vector/vectorTrafficFlowLayer.js","define(['leaflet', 'mapboxProvider'], function (L, mapboxProvider) {\n\n L.MapboxGL = L.Layer.extend({\n\n initialize: function (options) {\n L.setOptions(this, options);\n\n if (options.renderer && options.renderer.accessToken) {\n mapboxProvider.getMapbox().accessToken = options.renderer.accessToken;\n } else {\n throw new Error('You should provide a Mapbox GL access token as a token option.');\n }\n\n },\n\n _getPane: function () {\n return this._parentPane || this._map.getPanes().tilePane;\n },\n\n _setPane: function (pane) {\n this._parentPane = pane;\n },\n beforeAdd: function(map) {\n map._addZoomLimit(this);\n },\n onAdd: function (map) {\n this._map = map;\n\n if (!this._glContainer) {\n this._initContainer();\n }\n\n this._getPane().appendChild(this._glContainer);\n\n this._initGL();\n\n this._offset = this._map.containerPointToLayerPoint([0, 0]);\n\n // work around https://github.com/mapbox/mapbox-gl-leaflet/issues/47\n if (map.options.zoomAnimation && map._proxy) {\n L.DomEvent.on(map._proxy, L.DomUtil.TRANSITION_END, this._transitionEnd, this);\n }\n\n this._update();\n },\n\n onRemove: function (map) {\n //COM\n //map._removeZoomLimit(this);\n if (this._map.options.zoomAnimation && this._map._proxy) {\n L.DomEvent.off(this._map._proxy, L.DomUtil.TRANSITION_END, this._transitionEnd, this);\n }\n\n this._getPane().removeChild(this._glContainer);\n this._glMap.remove();\n this._glMap = null;\n },\n\n getEvents: function () {\n return {\n move: this._update,\n zoomanim: this._animateZoom, // apply the zoom animation to the \n zoom: this._pinchZoom, // animate every zoom event for smoother pinch-zooming\n zoomstart: this._zoomStart, // flag starting a zoom to disable panning\n zoomend: this._zoomEnd\n };\n },\n\n _initContainer: function () {\n var container = this._glContainer = L.DomUtil.create('div', 'leaflet-gl-layer');\n\n var size = this._map.getSize();\n container.style.width = size.x + 'px';\n container.style.height = size.y + 'px';\n },\n\n _initGL: function () {\n var center = this._map.getCenter();\n\n var options = L.extend({}, this.options.renderer, {\n container: this._glContainer,\n interactive: false,\n center: [center.lng, center.lat],\n zoom: this._map.getZoom() - 1,\n attributionControl: false\n });\n\n this._glMap = new (mapboxProvider.getMapbox()).Map(options);\n\n // allow GL base map to pan beyond min/max latitudes\n this._glMap.transform.latRange = null;\n\n if (this._glMap._canvas.canvas) {\n // older versions of mapbox-gl surfaced the canvas differently\n this._glMap._actualCanvas = this._glMap._canvas.canvas;\n } else {\n this._glMap._actualCanvas = this._glMap._canvas;\n }\n\n // treat child element like L.ImageOverlay\n L.DomUtil.addClass(this._glMap._actualCanvas, 'leaflet-image-layer');\n L.DomUtil.addClass(this._glMap._actualCanvas, 'leaflet-zoom-animated');\n },\n\n _update: function () {\n // update the offset so we can correct for it later when we zoom\n this._offset = this._map.containerPointToLayerPoint([0, 0]);\n\n if (this._zooming) {\n return;\n }\n\n var size = this._map.getSize(),\n container = this._glContainer,\n gl = this._glMap,\n topLeft = this._map.containerPointToLayerPoint([0, 0]);\n\n L.DomUtil.setPosition(container, topLeft);\n\n var center = this._map.getCenter();\n\n // gl.setView([center.lat, center.lng], this._map.getZoom() - 1, 0);\n // calling setView directly causes sync issues because it uses requestAnimFrame\n\n var tr = gl.transform;\n tr.center = mapboxProvider.getMapbox().LngLat.convert([center.lng, center.lat]);\n tr.zoom = this._map.getZoom() - 1;\n\n if (gl.transform.width !== size.x || gl.transform.height !== size.y) {\n container.style.width = size.x + 'px';\n container.style.height = size.y + 'px';\n if (gl._resize !== null && gl._resize !== undefined) {\n gl._resize();\n } else {\n gl.resize();\n }\n } else {\n gl._update();\n }\n },\n\n // update the map constantly during a pinch zoom\n _pinchZoom: function (e) {\n this._glMap.jumpTo({\n zoom: this._map.getZoom() - 1,\n center: this._map.getCenter()\n });\n },\n\n // borrowed from L.ImageOverlay https://github.com/Leaflet/Leaflet/blob/master/src/layer/ImageOverlay.js#L139-L144\n _animateZoom: function (e) {\n var scale = this._map.getZoomScale(e.zoom),\n offset = this._map._latLngToNewLayerPoint(this._map.getBounds().getNorthWest(), e.zoom, e.center);\n\n L.DomUtil.setTransform(this._glMap._actualCanvas, offset.subtract(this._offset), scale);\n },\n\n _zoomStart: function (e) {\n this._zooming = true;\n },\n\n _zoomEnd: function () {\n var scale = this._map.getZoomScale(this._map.getZoom()),\n offset = this._map._latLngToNewLayerPoint(this._map.getBounds().getNorthWest(), this._map.getZoom(), this._map.getCenter());\n\n L.DomUtil.setTransform(this._glMap._actualCanvas, offset.subtract(this._offset), scale);\n this._zooming = false;\n\n this._update();\n },\n\n _transitionEnd: function (e) {\n L.Util.requestAnimFrame(function () {\n var zoom = this._map.getZoom(),\n center = this._map.getCenter(),\n offset = this._map.latLngToContainerPoint(this._map.getBounds().getNorthWest());\n\n // reset the scale and offset\n L.DomUtil.setTransform(this._glMap._actualCanvas, offset, 1);\n\n // enable panning once the gl map is ready again\n this._glMap.once('moveend', L.Util.bind(function () {\n this._zoomEnd();\n }, this));\n\n // update the map position\n this._glMap.jumpTo({\n center: center,\n zoom: zoom - 1\n });\n }, this);\n }\n });\n\n L.mapboxGL = function (options) {\n return new L.MapboxGL(options);\n };\n\n return L.MapboxGL;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// /home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/mapbox-gl-leaflet/leaflet-mapbox-gl.js\n// module id = 138\n// module chunks = 0","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This layer groups functionality of\n * traffic layer \n * and traffic incidents \n * In most situations you will want to use these layers together and refresh them at the same time, so\n * we are providing this layer to make your work easier.\n *\n * If you use this layer there will be only one timer and it will issue only one request to check if\n * traffic data is up to date. If you create layers on your own, each layer will have it's own timer and\n * will check for data freshness on its own. You can specify how ofter the data should be refreshed.\n *\n *\n * @class TomTomTrafficWithIncidentsLayer\n * @extends L.LayerGroup\n * @namespace L\n * @module Map\n * @constructor\n * @param {Object} [options] It accepts all the options that\n * Leaflet's LayerGroup\n * class allows. The additional options, which are TomTom specific, are described below.\n * @param {Object|Boolean} [options.traffic] Options which will be used for traffic and traffic incidents layers.\n * Please refer to the\n * docs \n * to check what options you can use.\n * @param {Number} [options.refresh=30000] The traffic and traffic incidents information changes and needs to be updated\n * periodically. By default, it is refreshed every 30 seconds. This parameter's value represents the time\n * in milliseconds between each update interval. The value must be 30000 or greater.\n */\n\ndefine([\n 'leaflet',\n '../trafficRefresher',\n './vectorTrafficIncidents',\n '../trafficIncidentsLayer'\n],\nfunction(\n L,\n trafficRefresher,\n vectorTrafficIncidents,\n trafficIncidentsLayer\n) {\n\n L.TomTomVectorTrafficWithIncidentsLayer = L.LayerGroup.extend({\n initialize: function(options) {\n L.setOptions(this, options);\n },\n _trafficModelIdCallback: function(trafficModelId) {\n this.vectorTrafficIncidents.setTrafficModelId(trafficModelId);\n this.incidentsLayer.setTrafficModelId(trafficModelId);\n },\n /**\n * Name of traffic with incidents layer. It can be used to differentiate layers.\n * @property name\n * @default \"vectorTrafficWithIncidents\"\n * @type String\n */\n name: 'vectorTrafficWithIncidents',\n options: {\n pane: 'tilePane'\n },\n onAdd: function(map) {\n var trafficOptions = L.setOptions({options: {_noRefresher: true}}, this.options);\n this.vectorTrafficIncidents = vectorTrafficIncidents(trafficOptions);\n this.incidentsLayer = trafficIncidentsLayer(trafficOptions);\n this.trafficLayerWithIncidents = L.layerGroup([this.vectorTrafficIncidents, this.incidentsLayer]);\n this.trafficRefresherIntervalId =\n trafficRefresher.addRefresherWithModelId(undefined, this._trafficModelIdCallback, this);\n map.addLayer(this.trafficLayerWithIncidents);\n },\n onRemove: function() {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n this.trafficLayerWithIncidents.remove();\n },\n updateOptions: function(options) {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n this.trafficRefresherIntervalId =\n trafficRefresher.addRefresherWithModelId(options, this._trafficModelIdCallback, this);\n L.setOptions(this, options);\n }\n });\n\n L.tomTomVectorTrafficWithIncidentsLayer = function(options) {\n return new L.TomTomVectorTrafficWithIncidentsLayer(options);\n };\n\n return L.tomTomVectorTrafficWithIncidentsLayer;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/vector/vectorTrafficWithIncidents.js","/* jshint nomen:false */\n/**\n * Tile layer for Leaflet that uses the\n * Vector Traffic Incidents from TomTom Online Traffic.\n *\n * The current vector renderer implementation is based on the\n * [Mapbox GL JS library](https://www.mapbox.com/mapbox-gl-js/api/).\n *\n * @example\n * ```js\n * var ttVectorTrafficIncidents = new L.TomTomVectorTrafficIncidents({\n * key: '',\n * refresh: 30000,\n * basePath: '',\n * style: 's1'\n * });\n *\n * map.addLayer(ttVectorTrafficIncidents);\n * ```\n *\n * @class TomTomVectorTrafficIncidents\n * @namespace L\n * @module Map\n * @extends L.TomTomVectorLayer\n * @constructor\n * @param {\"s1\"|\"s2\"|\"s3\"|\"night\"} [options.style=\"s1\"] Specifies the style and type of traffic incidents\n * @param {String} [options.key] Traffic Flow API key that can be obtained from\n * TomTom's developer portal.\n * @param {Integer} [options.refresh=30000] Traffic refresh interval in milliseconds. The default value is 30 seconds.\n * If a lower value is provided the default value is used.\n**/\ndefine([\n 'leaflet',\n './vectorLayer',\n '../labelsLayerMixinFactory',\n 'security',\n 'apiKeyNames',\n '../trafficRefresher'],\nfunction(\n L,\n VectorLayer,\n labelsLayerMixinFactory,\n security,\n ApiKeyNames,\n trafficRefresher\n) {\n var TomTomVectorIncidentsLayer;\n\n function replaceTrafficModelIdInUrl(style, trafficModelId) {\n if (!style) {\n return undefined;\n }\n style.sources.vectorTilesTraffic.tiles.forEach(function(elem, index, arr) {\n var regex = /&t=[0-9]\\d+$/;\n var matches = elem.search(regex);\n if (matches > -1) {\n arr[index] = elem.replace(regex, '&t=' + trafficModelId);\n } else {\n arr[index] = elem + '&t=' + trafficModelId;\n }\n }, this);\n return style;\n }\n\n TomTomVectorIncidentsLayer = VectorLayer.extend({\n defaultOptions: {\n refresh: 30000,\n style: 's1',\n basePath: '/sdk',\n preSetStyleCallback: function(style) {\n return Promise.resolve(replaceTrafficModelIdInUrl(style, this.options.trafficModelId));\n }\n },\n name: 'vectorTrafficIncidents',\n layerSourceName: 'vectorTilesTraffic',\n initialize: function(options) {\n options = options || {};\n if (!options.key && !security.getKey(ApiKeyNames.traffic)) {\n throw new Error('Error during Vector Incident Layer initialization - missing API key');\n }\n if (options.key) {\n security.setKey(ApiKeyNames.traffic, options.key);\n }\n this.options = L.extend(this.options, options);\n this.defaultOptions.preSetStyleCallback = this.defaultOptions.preSetStyleCallback.bind(this);\n this.layerOptions = this.getLayerOptions(options);\n VectorLayer.prototype.initialize.call(this, this.layerOptions);\n\n this.refresh = this.refresh.bind(this);\n },\n onAdd: function(map) {\n var that = this;\n this.startRefresh().then(function() {\n VectorLayer.prototype.onAdd.call(that, map);\n that.bringToFront();\n });\n },\n onRemove: function(map) {\n this.stopRefresh();\n VectorLayer.prototype.onRemove.call(this, map);\n },\n getLayerOptions: function(opts) {\n var layer = (opts && opts.style) || this.defaultOptions.style;\n var options = L.extend({}, this.defaultOptions, opts);\n\n return L.extend({}, options, {\n style: 'vectorTrafficIncidents',\n layer: layer,\n refresh: Math.max(this.defaultOptions.refresh, options.refresh),\n securityKeyName: ApiKeyNames.traffic,\n vector: {\n renderer: {\n refreshExpiredTiles: false\n }\n },\n styleUrlMapping: {\n vectorTrafficIncidents: {\n 's1': options.basePath + '/styles/incidents_s1.json',\n 's2': options.basePath + '/styles/incidents_s2.json',\n 's3': options.basePath + '/styles/incidents_s3.json',\n 'night': options.basePath + '/styles/incidents_night.json'\n }\n }\n });\n },\n startRefresh: function() {\n var that = this;\n if (this.options._noRefresher) {\n return Promise.resolve();\n }\n return new Promise(function(resolve) {\n that.trafficRefresherIntervalId =\n trafficRefresher.addRefresherWithModelId(undefined, function(trafficModelId) {\n that.setTrafficModelId(trafficModelId);\n resolve();\n }, that);\n });\n },\n stopRefresh: function() {\n trafficRefresher.remove(this.trafficRefresherIntervalId);\n },\n refresh: function() {\n var style;\n if (this._glMap) {\n style = this._glMap.getStyle();\n if (style) {\n style = replaceTrafficModelIdInUrl(style, this.options.trafficModelId);\n this._glMap.setStyle(style, {\n diff: false,\n securityKeyName: ApiKeyNames.traffic\n });\n }\n }\n },\n setTrafficModelId: function(trafficModelId) {\n if (this.options.trafficModelId !== trafficModelId) {\n this.options.trafficModelId = trafficModelId;\n this.refresh();\n }\n },\n updateOptions: function(options) {\n if (options.style) {\n this.stopRefresh();\n this.layerOptions = this.getLayerOptions(options);\n VectorLayer.prototype.updateOptions.call(this, this.layerOptions);\n this.startRefresh();\n }\n }\n });\n\n L.TomTomVectorIncidentsLayer = TomTomVectorIncidentsLayer.extend(labelsLayerMixinFactory('vectorTrafficIncidents'));\n\n L.tomTomVectorIncidentsLayer = function tomTomVectorIncidentsLayer(options) {\n return new L.TomTomVectorIncidentsLayer(options);\n };\n\n return L.tomTomVectorIncidentsLayer;\n\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/vector/vectorTrafficIncidents.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/* jshint nomen:false */\ndefine(['leaflet', './tileLayer', './labelsLayerMixinFactory'], function(L, tileLayer, labelsLayerMixinFactory) { //eslint-disable-line\n 'use strict';\n var TomTomLabelsLayer;\n\n function layeraddHandler(event) {\n var map = event.target,\n usingRasterTiles = map.hasLayer(map._ttBaseLayers.raster),\n totalTileLayers = map._panes.tilePane.childElementCount,\n totalOverlayLayers = map._panes.overlayPane.childElementCount;\n if (usingRasterTiles && (totalTileLayers > 1 || totalOverlayLayers > 0)) {\n if (!this._container) {\n L.TomTomLayer.prototype.onAdd.call(this, map);\n }\n this.bringToFront();\n }\n }\n\n TomTomLabelsLayer = L.TomTomLayer.extend({\n options: {\n zIndex: 40\n },\n name: 'labels',\n initialize: function(options) {\n var labelsOptions = L.extend({}, options, {layer: 'labels', opacity: 0.9});\n L.TomTomLayer.prototype.initialize.call(this, labelsOptions);\n },\n onAdd: function(map) {\n this._layerAddHandler = layeraddHandler.bind(this);\n map.on('layeradd', this._layerAddHandler);\n },\n onRemove: function(map) {\n map.off('layeradd', this._layerAddHandler);\n if (this._container) {\n L.TomTomLayer.prototype.onRemove.call(this, map);\n }\n },\n bringToFront: function() {\n var pane = this._map._panes.overlayPane;\n if (this._container) {\n pane.appendChild(this._container);\n this._setAutoZIndex(Math.max);\n }\n return this;\n },\n _initContainer: function() {\n var tilePane = this._map._panes.overlayPane;\n var className;\n\n if (!this._container) {\n this._container = L.DomUtil.create('div', 'leaflet-transparent-layer');\n\n this._updateZIndex();\n\n if (this._animated) {\n className = 'leaflet-tile-container';\n\n this._bgBuffer = L.DomUtil.create('div', className, this._container);\n this._tileContainer = L.DomUtil.create('div', className, this._container);\n\n } else {\n this._tileContainer = this._container;\n }\n\n tilePane.appendChild(this._container);\n\n if (this.options.opacity < 1) {\n this._updateOpacity();\n }\n }\n },\n updateOptions: function(options) {\n if (options.style) {\n if (!options.layer) {\n options = L.extend({}, options, {layer: 'labels'});\n }\n L.TomTomLayer.prototype.updateOptions.call(this, options);\n }\n }\n });\n\n L.TomTomLabelsLayer = TomTomLabelsLayer.extend(labelsLayerMixinFactory('raster'));\n\n L.tomTomLabelsLayer = function(options) {\n return new L.TomTomLabelsLayer(options);\n };\n\n return L.tomTomLabelsLayer;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/labelsLayer.js","define(['rest/utils', 'endpoints', 'http', 'security', '../request/requestParamsFactory',\n 'services/routing/matrixParameters', 'apiKeyNames', '../request/asyncRedirectModeCallbackFactory'],\nfunction(\n utils,\n endpoints,\n http,\n security,\n createRequestParams,\n matrixParameters,\n ApiKeyNames,\n asyncRedirectModeCallbackFactory\n) {\n var fields = matrixParameters(), mainPostParamsName = ['origins', 'destinations'];\n\n function getOptionalBodyParams(postParams) {\n var optionalBodyParamsNames = Object.keys(postParams).filter(function(paramName) {\n return mainPostParamsName.indexOf(paramName) === -1;\n });\n\n if (!optionalBodyParamsNames.length) {\n return null;\n }\n\n return optionalBodyParamsNames.reduce(function(accumulator, paramName) {\n accumulator[paramName] = postParams[paramName];\n return accumulator;\n }, {});\n }\n\n function getBodyParams(postParams) {\n var bodyParams = {\n origins: postParams.origins,\n destinations: postParams.destinations\n },\n optionalBodyParams = getOptionalBodyParams(postParams);\n\n if (optionalBodyParams) {\n bodyParams.options = {\n post: optionalBodyParams\n };\n }\n\n return bodyParams;\n }\n\n return function(maxNoOfElementsInBatchRequest) {\n return function(options, originalCallback) {\n var requestParams = createRequestParams(fields, options),\n queryParams = requestParams.queryParams,\n bodyParams = getBodyParams(requestParams.postParams),\n callback = originalCallback,\n endpoint;\n\n queryParams.key = utils.or(options.key, security.getKey(ApiKeyNames.routing));\n queryParams.key = utils.required(queryParams.key);\n\n if (bodyParams.origins.length * bodyParams.destinations.length <= maxNoOfElementsInBatchRequest) {\n endpoint = endpoints.matrixSyncRouting;\n } else {\n endpoint = endpoints.matrixRouting;\n queryParams.redirectMode = 'manual';\n callback = asyncRedirectModeCallbackFactory(originalCallback, options);\n }\n\n http.post({\n url: '{protocol}://' + endpoint,\n queryParameters: queryParams,\n bodyParameters: bodyParams,\n callbackParam: 'callback',\n callback: callback,\n requestType: 'batch',\n fail: options.fail\n });\n };\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./rest/request/matrixFactory.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine([], function() {\n 'use strict';\n\n function newFeature(route) {\n return {\n type: 'Feature',\n properties: {summary: route.summary, sections: route.sections, segmentSummary: []}\n };\n }\n\n function getCoordinates(points) {\n var coordinates = [];\n var i;\n for (i = 0; i < points.length; i += 1) {\n coordinates.push([points[i].longitude, points[i].latitude]);\n }\n return coordinates;\n }\n\n return function(route) {\n var isMultiLineString = route.legs.length > 1;\n\n var feature = newFeature(route);\n var i;\n for (i = 0; i < route.legs.length; i += 1) {\n feature.properties.segmentSummary.push(route.legs[i].summary);\n\n if (route.legs[i].points) {\n feature.geometry = feature.geometry || {\n coordinates: []\n };\n\n if (isMultiLineString) {\n feature.geometry.type = 'MultiLineString';\n feature.geometry.coordinates.push(getCoordinates(route.legs[i].points));\n } else {\n feature.geometry.type = 'LineString';\n feature.geometry.coordinates = getCoordinates(route.legs[i].points);\n }\n }\n }\n if (route.guidance) {\n feature.properties.guidance = route.guidance;\n }\n return feature;\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/routing/helpers/getRouteFeature.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['./routing'], function(routingModel) {\n 'use strict';\n\n return function(data) {\n if (!Array.isArray(data.batchItems)) {\n return null;\n }\n return data.batchItems.map(function(batchItem) {\n if (batchItem.response.error) {\n return { error: batchItem.response.error};\n } else {\n return routingModel(batchItem.response);\n }\n });\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/routing/batchRouting.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine([\n 'leaflet',\n './mapUtils'\n],\nfunction(\n L,\n mapUtils\n) {\n\n function pushToUpdatedLayers(alreadyUpdatedLayers, layer, options) {\n if (layer) {\n layer.updateOptions(options);\n alreadyUpdatedLayers.push(layer);\n }\n }\n\n function getTrafficLayersToSeekFor(options) {\n var layersToSeek = [];\n if (options.traffic) {\n layersToSeek.push('traffic', 'trafficIncidents', 'trafficWithIncidents');\n }\n\n if (options.trafficFlow) {\n layersToSeek.push('trafficFlow');\n }\n return layersToSeek;\n }\n\n function updateTrafficLayer(alreadyUpdatedLayers, layer, options) {\n if (layer.name === 'trafficFlow') {\n pushToUpdatedLayers(alreadyUpdatedLayers, layer, options.trafficFlow);\n } else {\n //updates if layers.name equals traffic, trafficIncidents, trafficWithIncidents\n pushToUpdatedLayers(alreadyUpdatedLayers, layer, options.traffic);\n }\n }\n\n function updateTrafficLayers(alreadyUpdatedLayers, options) {\n var that = this;\n var layersToSeek = getTrafficLayersToSeekFor(options);\n layersToSeek.forEach(function(layerName) {\n var layer = mapUtils.findLayersByName(layerName, that)[0];\n if (layer) {\n updateTrafficLayer(alreadyUpdatedLayers, layer, options);\n }\n });\n }\n\n /**\n * Updates options added currently to map (including inactive base layers).\n * Only the update of the options `style` and `layer` are supported.\n *\n * Also allows to update refresh rate option of traffic layers.\n *\n * @method updateLayersOptions\n * @param {Object} options Options to be updated\n * @param {\"main\"|\"night\"} [options.style] The new base map style to use.\n * By default, the current style is used (i.e. no update of this property).\n * @param {\"basic\"|\"hybrid\"|\"labels\"} [options.layer] The new base map layer to use.\n * By default, the current layer is used (i.e. no update of this property).\n * @param {Object|Boolean} options.traffic Options used to change refresh rate.\n * Please note that minimal refresh rate is 30000 ms, if you provide lower value it will be defaulted to 30000 ms.\n * @param {Object} options.trafficFlow Options used to change refresh rate.\n * Please note that minimal refresh rate is 30000 ms, if you provide lower value it will be defaulted to 30000 ms.\n */\n L.Map.prototype.updateLayersOptions = function(options) {\n var alreadyUpdatedLayers = [];\n pushToUpdatedLayers(alreadyUpdatedLayers, this._ttBaseLayers.raster, options);\n pushToUpdatedLayers(alreadyUpdatedLayers, this._ttBaseLayers.vector, options);\n pushToUpdatedLayers(alreadyUpdatedLayers, this._ttLabelsLayers.vector, options);\n pushToUpdatedLayers(alreadyUpdatedLayers, this._ttLabelsLayers.raster, options);\n updateTrafficLayers.call(this, alreadyUpdatedLayers, options);\n L.Util.setOptions(this, options);\n\n this.eachLayer(function(layer) {\n if (layer.updateOptions && alreadyUpdatedLayers.indexOf(layer) === -1) {\n layer.updateOptions(options);\n }\n });\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./display/layerOptionsUpdater.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/* jshint nomen:false */\ndefine(['leaflet', './vectorLayer', '../labelsLayerMixinFactory'],\n function(L, VectorLayer, labelsLayerMixinFactory) {\n 'use strict';\n\n var TomTomVectorLabelsLayer = VectorLayer.extend({\n name: 'vectorLabels',\n onAdd: function(map) {\n VectorLayer.prototype.onAdd.call(this, map);\n this._bringToFront(map);\n },\n _bringToFront: function(map) {\n var pane = map._panes.overlayPane;\n this._setPane(pane);\n if (this._glContainer) {\n pane.appendChild(this._glContainer);\n }\n return this;\n },\n initialize: function(options) {\n options = L.extend({}, options);\n options.layer = 'labels';\n VectorLayer.prototype.initialize.call(this, options);\n },\n updateOptions: function(options) {\n if (options.style) {\n options = L.extend({}, options, {layer: 'labels'});\n VectorLayer.prototype.updateOptions.call(this, options);\n }\n }\n });\n\n L.TomTomVectorLabelsLayer = TomTomVectorLabelsLayer.extend(labelsLayerMixinFactory('vector'));\n\n L.tomTomVectorLabelsLayer = function(options) {\n return new L.TomTomVectorLabelsLayer(options);\n };\n\n return L.TomTomVectorLabelsLayer;\n });\n\n\n\n// WEBPACK FOOTER //\n// ./display/layers/vector/vectorLabelsLayer.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * This class allows you to add markers to the map. You can specify your own markers\n * or add custom ones.\n *\n * @class TomTomMarkersLayer\n * @extends L.FeatureGroup\n * @namespace L\n * @module Map\n * @constructor\n * @param {Object} options\n */\n/* jshint nomen:false */\ndefine([\n '../map',\n '../svgIcon',\n '../objectUtils',\n './defaultIconsMappingProvider',\n './../../services/utils',\n 'services/popupContentGenerator/pointHTMLContentGenerator',\n './routeDrawer',\n 'services/popupContentGenerator/wrapable',\n 'services/search/nearbySearch',\n 'leaflet.markercluster'\n], function(\n L,\n SvgIcon,\n objectUtils,\n defaultIconsMappingProvider,\n utils,\n pointHTMLContentGenerator,\n RouteDrawer,\n Wrapable,\n nearbySearch\n) {\n 'use strict';\n\n var defaultOptions = {\n background: {\n iconSize: [30, 36],\n iconAnchor: [15, 36],\n icon: 'icon-marker-black',\n noPlainSVG: false\n },\n icon: {\n iconSize: [30, 30],\n iconAnchor: [0, 0],\n icon: 'icon-flag-white',\n noPlainSVG: false\n },\n popupAnchor: [0, -30],\n opacity: 0.8\n };\n\n var icons = defaultIconsMappingProvider.defaultIcons;\n var singleColorIcons = defaultIconsMappingProvider.singleColorIcons;\n\n function shouldUseSingleColorIcon(classification) {\n return objectUtils.hasProperty(singleColorIcons, classification);\n }\n\n function isLowBandwidth(point) {\n return point.a2 !== undefined;\n }\n\n function hasClassification(point) {\n return objectUtils.hasProperty(point, 'poi') && objectUtils.hasProperty(point.poi, 'classifications');\n }\n\n function getClassification(point) {\n var classification = 'fallback';\n if (hasClassification(point)) {\n classification = point.poi.classifications.length > 0 ? point.poi.classifications[0].code : 'fallback';\n } else if (isLowBandwidth(point)) {\n classification = point.cst.length > 0 ? point.cst[0].cd : 'fallback';\n }\n return classification;\n }\n\n /**\n * @ignore\n * If marker layer options enabled support for entry points and addCounterToMainPoint property is set\n * Content with the counter is added\n * @param {Object} point\n * @param {Object} entryPointOptions\n * @return {Object|undefined}\n */\n function getContentForMainMarkerWithEntryPoints(point, entryPointOptions) {\n if (point.entryPoints && entryPointOptions && entryPointOptions.addCounterToMainPoint) {\n return {\n iconSize: [10, 10],\n iconAnchor: [-25, 5],\n content: point.entryPoints.length,\n noPlainSVG: true,\n style: {\n 'color': '#000',\n 'font-weight': 'bold',\n 'font-size': '12px'\n }\n };\n }\n return undefined;\n }\n\n /**\n * @ignore\n * Returns correct marker options for provided classification and color and entryPoints options\n * @param {String} classification\n * @param {Object} point\n * @param {String} color\n * @param {Object} entryPointsOptions\n * @return {Object}\n */\n function getMarkerIconOptions(classification, point, color, entryPointsOptions) {\n var iconName = icons[classification] || icons.fallback;\n var iconOptions = utils.clone(defaultOptions);\n if (shouldUseSingleColorIcon(classification)) {\n iconOptions.icon.icon = 'icon-' + iconName;\n } else {\n iconOptions.icon.icon = 'icon-' + iconName + '-' + color;\n if (color === 'black') {\n iconOptions.background.icon = 'icon-marker-white';\n }\n }\n iconOptions.content = getContentForMainMarkerWithEntryPoints(point, entryPointsOptions);\n return iconOptions;\n }\n\n /**\n * @ignore\n * Returns instance of Icon build for correct point classification and color\n * @param {Object} point\n * @param {String} color\n * @param {Object} entryPointsOptions\n * @return {SvgIcon}\n */\n function getDefaultIcon(point, color, entryPointsOptions) {\n var classification, iconOptions;\n classification = getClassification(point);\n iconOptions = getMarkerIconOptions(classification, point, color, entryPointsOptions);\n return new SvgIcon(iconOptions);\n }\n\n /**\n * @ignore\n * Returns position of the point. Used in marker creation\n * @param {Object} point\n * @return {LatLng}\n */\n function getMarkerPosition(point) {\n var latLngContainer = point;\n if (point.position) {\n latLngContainer = point.position;\n } else if (point.ps) {\n latLngContainer = point.ps.split(' ');\n }\n return utils.convertToLatLng(latLngContainer);\n }\n\n /**\n * @ignore\n * Calls popupHoverContent generator method if it exists and returns output. Used in marker creation.\n * @param {Object} point\n * @param {Object} options\n * @return {String|undefined}\n */\n function getMarkerPopupHoverContent(point, options) {\n return objectUtils.hasProperty(options, 'popupHoverContent') ? options.popupHoverContent(point) : undefined;\n }\n\n /**\n * @ignore\n * Calls popupContent generator method if it exists and returns output. Used in marker creation.\n * @param {Object} point\n * @param {Object} options\n * @param {Object} popupGenerator\n * @return {String}\n */\n function getMarkerPopupContent(point, options, popupGenerator) {\n return objectUtils.hasProperty(options, 'popupContent') ?\n options.popupContent(point) :\n popupGenerator(point);\n }\n\n /**\n * @ignore\n * Returns correct color for markers based on layer options\n * @param {Object} options\n * @param {Boolean} [options.useBlackIcons=false]\n * @return {String}\n */\n function getColor(options) {\n return options.useBlackIcons ? 'black' : 'white';\n }\n\n /**\n * @ignore\n * Returns svg icon for the typical points\n * @param {Object} point\n * @param {Object} options\n * @param {Boolean} [options.useBlackIcons]\n * @return {SvgIcon}\n */\n function getMarkerIcon(point, options) {\n return objectUtils.hasProperty(options, 'icon') ?\n options.icon(point) :\n getDefaultIcon(point, getColor(options), options.entryPoints);\n }\n\n /**\n * @ignore\n * Returns svg icon for the entry points\n * @param {Object} point\n * @param {Object} options\n * @return {SvgIcon}\n */\n function getEntryPointMarkerIcon(point, options) {\n var iconOptions;\n if (objectUtils.hasProperty(options, 'icon')) {\n iconOptions = options.icon(point);\n } else {\n iconOptions = utils.clone(defaultOptions);\n iconOptions.icon.icon = 'icon-ic_map_poi_109-' + getColor(options);\n iconOptions.background.icon = 'icon-marker-green';\n }\n return new SvgIcon(iconOptions);\n }\n\n /**\n * @ignore\n * Calls entry point getEntryPointPopupHoverContent generator method if it exists and returns output. Used in marker\n * creation.\n *\n * @param {Object} entryPoint\n * @param {Object} mainPoint\n * @param {Object} options\n * @return {String}\n */\n function getEntryPointPopupHoverContent(entryPoint, mainPoint, options) {\n return options.entryPoints.popupHoverContent ?\n options.entryPoints.popupHoverContent(entryPoint, mainPoint) :\n undefined;\n }\n\n /**\n * @ignore\n * Calls entry point popupContent generator method if it exists and returns output. Used in marker creation.\n * @param {Object} entryPoint\n * @param {Object} mainPoint\n * @param {Object} options\n * @param {Function} popupGenerator\n * @return {String}\n */\n function getEntryPointPopupContent(entryPoint, mainPoint, options, popupGenerator) {\n return options.entryPoints.popupContent ?\n options.entryPoints.popupContent(entryPoint, mainPoint) :\n popupGenerator(entryPoint, mainPoint);\n }\n\n /**\n * @ignore\n * Creates instance of L.polyline for the spider leg line\n * @param {Array} positions\n * @param {Object} options\n * @return {L.polyline}\n */\n function createSpiderLegLine(positions, options) {\n var lineOptions = {\n weight: 1.5,\n color: options.useBlackIcons ? '#ddd' : '#222',\n opacity: 0.5,\n dashArray: '5, 5'\n };\n return L.polyline(positions, lineOptions);\n }\n\n /**\n * @ignore\n * Creates markers for entry points\n * @param {Array} entryPoints array of entry points data\n * @param {Object} options marker layer options\n * @param {Object} mainPoint main point data object which is passed to popup and title callback for the entry points\n * @param {Function} popupGenerator\n * @return {L.Marker}\n */\n function createMarkersForEntryPoints(entryPoints, options, mainPoint, popupGenerator) {\n return entryPoints.map(function(entryPoint) {\n var entryPointMarkerLayer = L.marker(\n getMarkerPosition(entryPoint), {\n title: getEntryPointPopupHoverContent(entryPoint, mainPoint, options),\n popupContent: getEntryPointPopupContent(entryPoint, mainPoint, options, popupGenerator),\n icon: getEntryPointMarkerIcon(entryPoint, options)\n }\n );\n var popupContent = entryPointMarkerLayer.options.popupContent;\n\n if (popupContent instanceof Wrapable) {\n entryPointMarkerLayer.bindPopup(popupContent.getHtmlElement());\n entryPointMarkerLayer.on('popupclose', popupContent.wrap.bind(popupContent));\n } else {\n entryPointMarkerLayer.bindPopup(popupContent);\n }\n\n return entryPointMarkerLayer;\n });\n }\n\n /**\n * @ignore\n * Draws lines between main point and its entrances\n * @param {Layer} mainMarkerLayer layer of marker which represents main point\n * @param {Array} entryPoints array of layers which represents entry points for the main point\n * @param {Object} options marker layer options\n */\n function drawSpiderLegLines(mainMarkerLayer, entryPoints, options) {\n if (entryPoints.length !== 0) {\n entryPoints.forEach(function(entry) {\n var line = createSpiderLegLine([entry.getLatLng(), mainMarkerLayer.options.point.position], options);\n this._markersWithEntryPointsFeatures.push(line);\n this._map.addLayer(line);\n }.bind(this));\n }\n }\n\n function configureMarkerToShowEntryPointOnClickIfNeeded(markerLayer, point, options) {\n var markerRemoveHandler;\n\n if (options.entryPoints !== undefined && point.entryPoints) {\n markerRemoveHandler = function() {\n if (this._lastClickedMarkerWithEntries === markerLayer) {\n this._removeEntryPoints();\n this._lastClickedMarkerWithEntries = undefined;\n }\n };\n\n markerLayer.on('remove', markerRemoveHandler, this);\n\n markerLayer.on('click', function() {\n var entryPointsMarkers;\n this._removeEntryPoints();\n\n if (this._lastClickedMarkerWithEntries === markerLayer) {\n this._lastClickedMarkerWithEntries = undefined;\n return;\n }\n\n entryPointsMarkers = createMarkersForEntryPoints(\n point.entryPoints, options, point, this._entryPointsPopupGenerator\n );\n entryPointsMarkers.forEach(function(entry) {\n this._markersWithEntryPointsFeatures.push(entry);\n this._map.addLayer(entry);\n }.bind(this));\n\n drawSpiderLegLines.call(this, markerLayer, entryPointsMarkers, options);\n this._lastClickedMarkerWithEntries = markerLayer;\n }, this);\n }\n }\n\n function isSimplePoint(point) {\n return utils.isArray(point) && point.length === 2;\n }\n\n /**\n * @ignore\n * Builds marker from point data\n * @param {Object} options layer options\n * @param {Boolean} [options.useBlackIcons]\n * @param {Object} point point data to create marker from\n */\n function createMarkerFromPoint(options, point) {\n var markerLayer, popupContent;\n if (isSimplePoint(point)) {\n markerLayer = L.marker(getMarkerPosition(point), {\n point: point\n });\n } else {\n markerLayer = L.marker(getMarkerPosition(point), {\n title: getMarkerPopupHoverContent(point, options),\n popupContent: getMarkerPopupContent(point, options, this._regularPopupGenerator),\n icon: getMarkerIcon(point, options),\n point: point\n });\n popupContent = markerLayer.options.popupContent;\n\n if (popupContent instanceof Wrapable) {\n markerLayer.bindPopup(popupContent.getHtmlElement());\n markerLayer.on('popupclose', popupContent.wrap.bind(popupContent));\n } else {\n markerLayer.bindPopup(popupContent);\n }\n }\n\n this._markersLayer.addLayer(markerLayer);\n\n configureMarkerToShowEntryPointOnClickIfNeeded.call(this, markerLayer, point, options);\n }\n\n function extendEntryPointsOptions(options) {\n if (this.options.entryPoints && options.entryPoints) {\n L.Util.extend(this.options.entryPoints, options.entryPoints);\n options.entryPoints = this.options.entryPoints;\n }\n }\n\n function resizeEntryPointMarkerIcon(requestedEntryPoinMarkerPosition, entryPointMarkers, multiplier) {\n function multiply(value) {\n return multiplier * value;\n }\n function updatedElement(element) {\n return Object.assign({}, element, {\n iconSize: element.iconSize.map(multiply),\n iconAnchor: element.iconAnchor.map(multiply)\n });\n }\n entryPointMarkers\n .filter(function(entryPointMarker) {\n return entryPointMarker._latlng &&\n !utils.isArray(entryPointMarker._latlng) &&\n entryPointMarker._latlng.equals(requestedEntryPoinMarkerPosition) &&\n entryPointMarker.options.icon;\n })\n .forEach(function(entryPointMarker) {\n var iconOptions = entryPointMarker.options.icon.options;\n entryPointMarker.refreshIconOptions({\n background: updatedElement(iconOptions.background),\n icon: updatedElement(iconOptions.icon)\n });\n });\n }\n\n function routableClickHandlerFactory(routeContextGetter) {\n return function(mode, point) {\n var routeContext = routeContextGetter();\n\n if (mode === 'start') {\n routeContext.startPoint(point);\n } else if (mode === 'end') {\n routeContext.endPoint(point);\n }\n };\n }\n\n function configureActionsForRegularMarkers(markerLayer, isRoutingEnabled, isSearchNearbyEnabled) {\n var actionsForRegularMarkers = null;\n\n function resizeEntryPoints(value) {\n return function(position) {\n resizeEntryPointMarkerIcon(position, markerLayer._markersWithEntryPointsFeatures, value);\n };\n }\n\n if (isRoutingEnabled) {\n actionsForRegularMarkers = {};\n actionsForRegularMarkers.routing = {\n routeFrom: true,\n routeTo: true,\n routeToEntryPoint: true,\n routeFromEntryPoint: true,\n onEntryPointMouseover: resizeEntryPoints(2),\n onEntryPointMouseout: resizeEntryPoints(0.5),\n onActionClick: routableClickHandlerFactory(markerLayer._getRoutingContext.bind(markerLayer))\n };\n }\n\n if (isSearchNearbyEnabled) {\n actionsForRegularMarkers = actionsForRegularMarkers || {};\n actionsForRegularMarkers.search = {\n searchNearby: true,\n onActionClick: function(position) {\n nearbySearch().center(position).radius(10000).go(function(data) {\n markerLayer.setMarkersData(data).addMarkers();\n });\n }\n };\n }\n\n return actionsForRegularMarkers;\n }\n\n function configureActionsForEntryPointMarkers(markerLayer, isRoutingEnabled) {\n var actionsForEntryPointMarkers = null;\n if (isRoutingEnabled) {\n actionsForEntryPointMarkers = {};\n actionsForEntryPointMarkers.routing = {\n routeFrom: true,\n routeTo: true,\n onActionClick: routableClickHandlerFactory(markerLayer._getRoutingContext.bind(markerLayer))\n };\n }\n\n return actionsForEntryPointMarkers;\n }\n\n function getMarkerName(point) {\n var lowBandwidthName = point.nm ? point.nm : '';\n return point.poi ? point.poi.name : lowBandwidthName;\n }\n\n function getPointId(point) {\n return String(getMarkerPosition(point)) + getMarkerName(point);\n }\n\n L.TomTomMarkersLayer = L.FeatureGroup.extend({\n options: {\n disableClusteringAtZoom: 17,\n removeOutsideVisibleBounds: false,\n enableRoutingActions: false,\n enableSearchActions: false\n },\n /**\n * Sets the markers data which will be used by the\n * {{#crossLink \"L.TomTomMarkersLayer/addMarkers:method\"}}{{/crossLink}} method.\n *\n * This method expects an array of points returned by one of our search calls (e.g. fuzzySearch),\n * or an array of simple points e.g. [[52.005, 25.01], [57.12, 12.06]].\n * ```javascript\n * var map = L.map('map', {key: \"Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.unwrapBbox=false] Changes the bounding box coordinates allowing longitudes that\n * exceeds 180 degrees when is necessary. {{#crossLink \"Search/unwrapBbox:method\"}}More{{/crossLink}}\n *\n * @param {String} options.query Text that will be searched.\n * This parameter is required to be defined either in the options passed to the constructor or using the\n * **query()** method.\n * @param {Boolean} [options.storeResult=false] If is enabled the query will be interpreted as a stored geocode\n * and will be billed according to the terms of use\n * @param {Boolean} [options.typeahead=false] If is enabled the query will be interpreted as a\n * partial input and the **predictive** mode will be used\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {Number} [options.offset=0] Starting offset of the returned results within the full result set\n * @param {Number[]|String|L.LatLng|Object} [options.center] Location where results should be biased\n * @param {String} [options.countrySet] List of country codes for limit the search request to those specific\n * political limits\n * @param {Number} [options.radius=0] The search radius in meters using the coordinates given to the **center**\n * option as origin.\n * @param {Object|Number[]|Object[]|String} [options.boundingBox] The bounding box is an area within the search\n * results needs to limit to. If it is omitted then the whole world will be taken into consideration.\n * @param {String} [options.language=null] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {String} [options.extendedPostalCodesFor] Represent the indexes for which extended postal codes should\n * be included in the results\n */\ndefine(['rest/geocode', 'model/geocode/geocode', 'services/chain', 'services/validators', 'services/converters',\n 'services/worldEdge', 'model/geocode/batchGeocode', './geocodeParameters'],\nfunction(restGeocode, model, chain, validators, converters, worldEdge, batchModel, geocodeParams) {\n 'use strict';\n\n var fields = geocodeParams.create(),\n batchFields = {\n batchItems: {\n validator: validators.arrayOf(fields),\n converter: converters.arrayOf(fields)\n }\n };\n\n var geocode = restGeocode();\n\n function addBoundingBoxParameters(data, boundingBox) {\n data.topLeft = [boundingBox.maxLat, boundingBox.minLon];\n data.btmRight = [boundingBox.minLat, boundingBox.maxLon];\n return data;\n }\n\n function callbackBestResult(bestResult, callback) {\n return function(response) {\n callback(bestResult ? response[0] : response);\n };\n }\n\n function handleBatchChain(data, callback) {\n data.batchItems.forEach(geocodeParams.modifyRequestOptions);\n geocode.batch(geocodeParams.modifyFields(fields), data, function(results) {\n callback.call(this, batchModel(results));\n });\n }\n\n function geocodeQuery(fields) {\n return function(options, callback) {\n return geocode.geocode(geocodeParams.modifyFields(fields), options, callback);\n };\n }\n\n function handleChain(data, callback) {\n geocodeParams.modifyRequestOptions(data);\n worldEdge(geocodeQuery(fields), model, data, callbackBestResult(Boolean(data.bestResult), callback),\n addBoundingBoxParameters);\n }\n\n return function(options) {\n if (Array.isArray(options)) {\n return chain(batchFields, handleBatchChain, {\n batchItems: options\n });\n } else {\n return chain(fields, handleChain, options);\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/geocode/geocode.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['endpoints', 'rest/request/requestFactory',\n 'apiKeyNames'],\nfunction(endpoints, requestFactory, ApiKeyNames) {\n 'use strict';\n\n var searchApiKeyname = ApiKeyNames.search;\n\n return function() {\n return {\n geocode: requestFactory.single(endpoints.geocode, searchApiKeyname),\n batch: requestFactory.batch(100, {\n single: endpoints.batchGeocodeQuery,\n batchSync: endpoints.batchSyncSearch,\n batchSearch: endpoints.batchSearch\n }, searchApiKeyname)\n };\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./rest/geocode.js","define(['services/validators', 'services/converters', 'common/parameterApplications'],\n function(validators, converters, parameterApplications) {\n return {\n create: function() {\n return {\n key: {validator: validators.string},\n query: {validator: validators.string, required: true, application: parameterApplications.PATH},\n\n /**\n * @class Geocode\n * @module Services\n */\n\n /* eslint-disable max-len */\n /**\n * Sets or returns the value of the `storeResult` option.\n *\n * If this option is enabled the query will be interpreted as a stored geocode and will be billed\n * according to the terms of use.\n *\n * @method storeResult\n * @deprecated Announcement date: 1st December 2017. The previous version will be deprecated and taken off-line 1 year after the announcement. Deprecation date: 1st December 2018.\n * @chainable\n * @param {Boolean} [newValue] Enable or disable the option\n * @throws {TypeError} if the given argument cannot be converted into a valid value\n * @return {Boolean} The same service instance or the current option value if no argument was given\n */\n /* eslint-enable max-len */\n storeResult: {validator: validators.bool},\n typeahead: {validator: validators.bool},\n limit: {validator: validators.positiveInteger},\n offset: {validator: validators.naturalInteger, name: 'ofs'},\n language: {validator: validators.languageCode},\n boundingBox: {validator: validators.boundingBox, converter: converters.boundingBox},\n center: {converter: converters.point, validator: validators.point},\n countrySet: {validator: validators.countrySet},\n radius: {validator: validators.naturalInteger},\n bestResult: {validator: validators.bool},\n protocol: {validator: validators.oneOfValue(['http', 'https'], 'protocol')},\n unwrapBbox: {validator: validators.bool, defaultValue: false, required: true}\n };\n },\n modifyRequestOptions: function(data) {\n var bestResult = Boolean(data.bestResult);\n if (bestResult) {\n data.limit = 1;\n data.offset = 0;\n }\n\n if (data.center) {\n data.center = data.center.split(',');\n data.lat = data.center[0];\n data.lon = data.center[1];\n delete data.center;\n }\n },\n modifyFields: function(fields) {\n var resultFields = Object.assign({}, fields);\n if (resultFields.boundingBox) {\n resultFields.topLeft = {};\n resultFields.btmRight = {};\n delete resultFields.boundingBox;\n }\n\n if (resultFields.center) {\n resultFields.lat = {};\n resultFields.lon = {};\n delete resultFields.center;\n }\n return resultFields;\n }\n };\n\n });\n\n\n\n// WEBPACK FOOTER //\n// ./services/geocode/geocodeParameters.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Allows to make request using the TomTom's\n * [Search API - Structured Geocode](https://developer.tomtom.com/search-api/search-api-documentation-geocoding/structured-geocode).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"StructuredGeocode/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"StructuredGeocode/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * @class StructuredGeocode\n * @uses Chain\n * @module Services\n * @uses KeyMixin\n * @uses LimitMixin\n * @uses OffsetMixin\n * @uses LanguageMixin\n * @uses ProtocolMixin\n * @uses BestResultMixin\n * @constructor\n *\n * @param {Object} [options] Options to be passed to the structured geocoding call,\n * or Array of such options objects to perform batch request.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.bestResult=false] Return only one result, the best match result\n *\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {String} options.countryCode 2 or 3 country code letters (e.g.: FR, ES).\n * **This option is required** to be defined here or by using the\n * {{#crossLink \"StructuredGeocode/countryCode:method\"}}{{/crossLink}} method.\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {Number} [options.offset=0] Starting offset of the returned results within the full result set\n * @param {String} [options.language] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {String} [options.streetNumber] Street Number\n * @param {String} [options.streetName] Street name\n * @param {String} [options.crossStreet] Cross street name\n * @param {String} [options.municipality] Municipality (city/town)\n * @param {String} [options.municipalitySubdivision] Municipality subdivision (sub/super city)\n * @param {String} [options.countryTertiarySubdivision] Named area\n * @param {String} [options.countrySecondarySubdivision] County\n * @param {String} [options.countrySubdivision] State or province\n * @param {String} [options.postalCode] Zip or postal code\n *\n * @example\n * ```javascript\n * function callbackFn(result) {\n * console.log(result);\n * };\n * tomtom.structuredGeocode()\n * .countryCode(\"GB\")\n * .callback(callbackFn)\n * .go();\n * ```\n */\n/* eslint-enable max-len */\ndefine(['rest/structuredGeocode', 'model/geocode/geocode', 'services/chain', 'services/validators',\n 'model/geocode/batchGeocode', 'services/converters', './structureGeocodeParameters'],\nfunction(restStructuredGeocode, model, chain, validators, batchModel, converters, structureGeocodeParameters) {\n 'use strict';\n\n var fields = structureGeocodeParameters(),\n batchFields = {\n batchItems: {\n validator: validators.arrayOf(fields),\n converter: converters.arrayOf(fields)\n }\n };\n\n var structuredGeocode = restStructuredGeocode();\n\n function checkBestResult(data) {\n var result = Boolean(data.bestResult);\n delete data.bestResult;\n return result;\n }\n\n function modifyRequestParams(data) {\n var bestResult = checkBestResult(data);\n if (bestResult) {\n data.limit = 1;\n data.offset = 0;\n }\n }\n\n function handleBatchChain(data, callback) {\n data.batchItems.forEach(modifyRequestParams);\n structuredGeocode.batch(fields, data, function(results) {\n callback.call(this, batchModel(results));\n });\n }\n\n function handleChain(data, callback) {\n var bestResult = Boolean(data.bestResult);\n modifyRequestParams(data);\n structuredGeocode.structuredGeocode(fields, data, function(response) {\n if (bestResult) {\n callback.call(this, model(response)[0]);\n } else {\n callback.call(this, model(response));\n }\n });\n }\n\n return function(options) {\n if (Array.isArray(options)) {\n return chain(batchFields, handleBatchChain, {\n batchItems: options\n });\n } else {\n return chain(fields, handleChain, options);\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/structureGeocode/structuredGeocode.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['endpoints', 'rest/request/requestFactory', 'apiKeyNames'],\n function(endpoints, requestFactory, ApiKeyNames) {\n 'use strict';\n\n var searchKeyName = ApiKeyNames.search;\n\n return function() {\n return {\n structuredGeocode: requestFactory.single(endpoints.structuredGeocode, searchKeyName),\n batch: requestFactory.batch(100, {\n single: endpoints.batchStructuredGeocodeQuery,\n batch: endpoints.batchSearch,\n batchSync: endpoints.batchSyncSearch\n }, searchKeyName)\n };\n };\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./rest/structuredGeocode.js","define(['services/validators'], function(validators) {\n return function() {\n return {\n key: {validator: validators.string},\n /**\n * Sets or returns the value of the `countryCode` option.\n *\n * Represents the country's code.\n *\n * @method countryCode\n * @chainable\n * @param {String} [newValue] 2 or 3 country code letters\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n countryCode: {validator: validators.countryCode, required: true},\n limit: {validator: validators.limit},\n offset: {validator: validators.naturalInteger, name: 'ofs'},\n language: {validator: validators.languageCode},\n\n /**\n * Sets or returns the value of the `streetNumber` option.\n *\n * Represents the street's number for the structured address.\n *\n * @method streetNumber\n * @chainable\n * @param {String} [newValue] Street's number\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n streetNumber: {validator: validators.string},\n\n /**\n * Sets or returns the value of the `streetName` option.\n *\n * Represents the street's name for the structured address.\n *\n * @method streetName\n * @chainable\n * @param {String} [newValue] Street's name\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n streetName: {validator: validators.string},\n\n /**\n * Sets or returns the value of the `crossStreet` option.\n *\n * Represents the cross street's name for the structured address.\n *\n * @method crossStreet\n * @chainable\n * @param {String} [newValue] Cross street's name\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n crossStreet: {validator: validators.string},\n\n /**\n * Sets or returns the value of the `municipality` option.\n *\n * Represents the municipality (city/town) for the structured address.\n *\n * @method municipality\n * @chainable\n * @param {String} [newValue] Municipality's name (city/town)\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n municipality: {validator: validators.string},\n\n /**\n * Sets or returns the value of the `municipalitySubdivision` option.\n *\n * Represents the municipality subdivision (sub/super city) for the structured address.\n *\n * @method municipalitySubdivision\n * @chainable\n * @param {String} [newValue] Municipality subdivision (sub/super city)\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n municipalitySubdivision: {validator: validators.string},\n\n /**\n * Sets or returns the value of the `countryTertiarySubdivision` option.\n *\n * Represents the area's name for the structured address.\n *\n * @method countryTertiarySubdivision\n * @chainable\n * @param {String} [newValue] Name of the area\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n countryTertiarySubdivision: {validator: validators.string},\n\n /**\n * Sets or returns the value of the `countrySecondarySubdivision` option.\n *\n * Represents the county's name for the structured address.\n *\n * @method countrySecondarySubdivision\n * @chainable\n * @param {String} [newValue] County's name\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n countrySecondarySubdivision: {validator: validators.string},\n\n /**\n * Sets or returns the value of the `countrySubdivision` option.\n *\n * Represents the state or province's name for the structured address.\n *\n * @method countrySubdivision\n * @chainable\n * @param {String} [newValue] State or province\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n countrySubdivision: {validator: validators.string},\n\n /**\n * Sets or returns the value of the `postalCode` option.\n *\n * Represents the zip code or postal code for the structured address.\n *\n * @method postalCode\n * @chainable\n * @param {String} [newValue] Zip or postal code\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n postalCode: {validator: validators.string},\n\n protocol: {validator: validators.oneOfValue(['http', 'https'], 'protocol')},\n bestResult: {validator: validators.bool}\n };\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/structureGeocode/structureGeocodeParameters.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * It allows to convert geographical coordinates into textual address representation using the TomTom's\n * [Search API - CrossStreet lookup](https://developer.tomtom.com/search-api/search-api-documentation-reverse-geocoding/crossstreet-lookup).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"CrossStreetLookup/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"CrossStreetLookup/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * The final response from service is a JSON object with the following structure:\n *\n * ```js\n * {\n * address: {\n * buildingNumber: 19,\n * streetNumber: 19,\n * street: \"N 2nd St\",\n * streetName: \"N 2nd St\",\n * crossStreet: \"E SANTA CLARA ST\"\n * streetNameAndNumber: \"\",\n * speedLimit: \"\",\n * countryCode: \"US\",\n * countrySubdivision: \"CA\",\n * countrySecondarySubdivision: \"Santa Clara\",\n * countryTertiarySubdivision: \"\",\n * municipality: \"San Jose\",\n * postalCode: \"95113\",\n * municipalitySubdivision: \"San Francisco Bay Area\",\n * freeformAddress: \"E SANTA CLARA ST & N 2nd St, San Jose, CA, 95113\"\n * },\n * position: \"37.337083, -121.8898\"\n * }\n * ```\n *\n * @example\n * ```js\n * tomtom.crossStreetLookup()\n * .position('51.759,19.449')\n * .go()\n * .then(function(response) {\n * console.log(response);\n * });\n * ```\n *\n * @class CrossStreetLookup\n * @module Services\n * @uses Chain\n * @constructor\n * @uses RadiusMixin\n * @uses ProtocolMixin\n * @uses KeyMixin\n * @uses LimitMixin\n * @uses LanguageMixin\n * @uses PositionMixin\n * @uses SpatialKeysMixin\n * @uses HeadingMixin\n *\n * @param {Object} [options] Options to be passed to the cross street lookup call,\n * or Array of such options objects to perform batch request.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n *\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n *\n * @param {String|Array|Object} [options.position] Specific longitude and latitude of the location where the address\n * is supposed to be found.\n * The possible formats are explained in more detail in the\n * {{#crossLink \"CrossStreetLookup/position:method\"}}{{/crossLink}} method.\n * This option is required to make the call.\n *\n * @param {Number} [options.limit=10] Maximum number of responses that should be returned\n * @param {Boolean} [options.spatialKeys=false] If is enable the response will also contain a proprietary geo-spatial\n * key information for a specified location\n * @param {Number} [options.heading] The directional heading of the vehicle in degrees, for travel along a\n * segment of roadway.\n * `0` is North, `90` is East and so on, values range from `-360` to `360`.\n * The precision can include up to one decimal place.\n * @param {Number} [options.radius=10000] The maximum distance in meters from the specified position to consider\n * @param {String} [options.language] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n */\n/* eslint-enable max-len */\ndefine(['./reverseGeocodeBase', './reverseGeocodeParameters', './types'],\n function(reverseGeocodeBase, reverseGeocodeParams, types) {\n 'use strict';\n\n var ReverseGeocodeBasePrototype = reverseGeocodeBase.prototype.constructor;\n\n function CrossStreetLookup(options) {\n ReverseGeocodeBasePrototype.call(this, options);\n this.fields = reverseGeocodeParams(types.crossStreetLookup);\n }\n\n CrossStreetLookup.prototype = new ReverseGeocodeBasePrototype();\n CrossStreetLookup.prototype.constructor = CrossStreetLookup;\n\n return function(options) {\n return (new CrossStreetLookup(options)).construct();\n };\n });\n\n\n\n// WEBPACK FOOTER //\n// ./services/reverseGeocode/crossStreetLookup.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Allows to make search request using the TomTom's\n * [Search API - Points of Interest Search](https://developer.tomtom.com/search-api/search-api-documentation-search/points-interest-search).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"PoiSearch/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"PoiSearch/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * @example\n * ```js\n * function callbackFn(result) {\n * console.log(result);\n * };\n *\n * // Using a callback function\n * tomtom.poiSearch()\n * .key() // this is optional if you defined a global key earlier\n * .query('pizza')\n * .callback(callbackFn)\n * .go();\n *\n * // Or using a Promise\n * tomtom.poiSearch()\n * .key() // this is optional if you defined a global key earlier\n * .query('pizza')\n * .go()\n * .then(callbackFn);\n * ```\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * @class PoiSearch\n * @extends Search\n * @uses ExtendedPostalCodesForMixin\n * @uses CenterMixin\n * @uses RadiusMixin\n * @uses BoundingBoxMixin\n * @uses CountrySetMixin\n * @uses OffsetMixin\n * @uses BestResultMixin\n * @uses ViewMixin\n * @uses QueryMixin\n * @uses TypeaheadMixin\n * @constructor\n * @module Services\n *\n * @param {Object} [options] Options to be passed to the POI search call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.unwrapBbox=false] Changes the bounding box coordinates allowing longitudes that\n * exceeds 180 degrees when is necessary. {{#crossLink \"Search/unwrapBbox:method\"}}More{{/crossLink}}\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {String} [options.view=\"Unified\"] Geopolitical view\n * @param {String} [options.language=null] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n *\n * @param {String} [options.query] Text that will be searched.\n * This parameter is required to be defined either in the options passed to the constructor or using the\n * **query()** method.\n * @param {Boolean} [options.typeahead=false] Enables the **predictive** mode\n * @param {Boolean} [options.bestResult=false] Return only one result, the best match result.\n * @param {Number[]|String|L.LatLng|Object} [options.center] Location where results should be biased\n * @param {Number} [options.radius=0] The search radius in meters using the coordinates given to the **center**\n * option as origin.\n * If the radius is zero the results will not be constrained.\n * @param {Number} [options.offset=0] Starting offset of the returned results within the full result set\n * @param {String} [options.countrySet] List of country codes for limit the search request to those specific\n * political limits\n * @param {Object|Number[]|Object[]|String} [options.boundingBox] The bounding box is an area within the search\n * results needs to limit to. If it is omitted then the whole world will be taken into consideration.\n * @param {String} [options.extendedPostalCodesFor] Represent the indexes for which extended postal codes should\n * be included in the results\n */\n/* eslint-enable */\ndefine(['./search'], function(search) {\n 'use strict';\n\n var SearchPrototype = search.prototype.constructor;\n\n function PoiSearch(options) {\n SearchPrototype.call(this, options);\n\n this.fields.type = {\n defaultValue: this.TYPE.poi,\n visible: false\n };\n }\n\n PoiSearch.prototype = new SearchPrototype();\n PoiSearch.prototype.constructor = PoiSearch;\n\n return function(options) {\n return (new PoiSearch(options)).construct();\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/search/poiSearch.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Allows to make search request using the TomTom's\n * [Search API - Category Search](https://developer.tomtom.com/search-api/search-api-documentation-search/category-search).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"Search/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the {{#crossLink \"Search/go:method\"}}{{/crossLink}}\n * method to handle the response.\n *\n * The list of all supported category codes are available\n * [here](https://developer.tomtom.com/search-api/search-api-documentation/supported-category-codes).\n *\n * @example\n * ```js\n * function callbackFn(result) {\n * console.log(result);\n * };\n *\n * // Using a callback function\n * tomtom.categorySearch()\n * .key() // this is optional if you defined a global key earlier\n * .query(\"restaurant\")\n * .callback(callbackFn)\n * .go();\n *\n * // Or using a Promise\n * tomtom.categorySearch()\n * .key() // this is optional if you defined a global key earlier\n * .query(\"restaurant\")\n * .go()\n * .then(callbackFn);\n * ```\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * @class CategorySearch\n * @extends Search\n * @uses ExtendedPostalCodesForMixin\n * @uses CenterMixin\n * @uses RadiusMixin\n * @uses BoundingBoxMixin\n * @uses CountrySetMixin\n * @uses OffsetMixin\n * @uses BestResultMixin\n * @uses QueryMixin\n * @uses ViewMixin\n * @uses TypeaheadMixin\n * @constructor\n * @module Services\n *\n * @param {Object} [options] Options to be passed to the category search call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.unwrapBbox=false] Changes the bounding box coordinates allowing longitudes that\n * exceeds 180 degrees when is necessary. {{#crossLink \"Search/unwrapBbox:method\"}}More{{/crossLink}}\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {String} [options.view=\"Unified\"] Geopolitical view\n * @param {String} [options.language=null] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n *\n * @param {String} [options.query] Text that will be searched.\n * This parameter is required to be defined either in the options passed to the constructor or using the\n * **query()** method.\n * @param {Boolean} [options.typeahead=false] Enables the **predictive** mode\n * @param {Boolean} [options.bestResult=false] Return only one result, the best match result.\n * @param {Number[]|String|L.LatLng|Object} [options.center] Location where results should be biased\n * @param {Number} [options.radius=0] The search radius in meters using the coordinates given to the **center**\n * option as origin.\n * If the radius is zero the results will not be constrained.\n * @param {Number} [options.offset=0] Starting offset of the returned results within the full result set\n * @param {String} [options.countrySet] List of country codes for limit the search request to those specific\n * political limits\n * @param {Object|Number[]|Object[]|String} [options.boundingBox] The bounding box is an area within the search\n * results needs to limit to. If it is omitted then the whole world will be taken into consideration.\n * @param {String} [options.extendedPostalCodesFor] Represent the indexes for which extended postal codes should\n * be included in the results\n */\ndefine(['./search'], function(search) {\n 'use strict';\n\n var SearchPrototype = search.prototype.constructor;\n\n function CategorySearch(options) {\n SearchPrototype.call(this, options);\n\n this.fields.type = {\n defaultValue: this.TYPE.category,\n visible: false\n };\n }\n\n CategorySearch.prototype = new SearchPrototype();\n CategorySearch.prototype.constructor = CategorySearch;\n\n return function(options) {\n return (new CategorySearch(options)).construct();\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/search/categorySearch.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Allows to make search request using the TomTom's\n * [Search API - Geometry Search](https://developer.tomtom.com/search-api/search-api-documentation-search/geometry-search).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"GeometrySearch/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"GeometrySearch/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * @example\n * ```js\n * var geometryList = [\n * {\n * type: \"POLYGON\",\n * vertices: [\n * \"37.7524152343544,-122.43576049804686\",\n * \"37.70660472542312,-122.43301391601562\",\n * \"37.712059855877314,-122.36434936523438\",\n * \"37.75350561243041,-122.37396240234374\"\n * ]\n * },\n * {\n * type: \"CIRCLE\",\n * position: \"37.71205,-121.36434\",\n * radius: 6000\n * },\n * {\n * type: \"CIRCLE\",\n * position: \"37.31205,-121.36434\",\n * radius: 1000\n * }\n * ];\n *\n * function callbackFn(results) {\n * console.log(results);\n * }\n *\n * // Using a callback function\n * tomtom.geometrySearch()\n * .key() // this is optional if you defined a global key earlier\n * .geometryList(geometryList)\n * .query('pizza')\n * .callback(callbackFn)\n * .go();\n *\n * // Or using a Promise\n * tomtom.geometrySearch()\n * .key() // this is optional if you defined a global key earlier\n * .geometryList(geometryList)\n * .query('pizza')\n * .go()\n * .then(callbackFn);\n * ```\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * @class GeometrySearch\n * @extends Search\n * @uses QueryMixin\n * @uses IdxSetMixin\n * @uses ExtendedPostalCodesForMixin\n * @uses ViewMixin\n * @constructor\n * @module Services\n *\n * @param {Object} [options] Options to be passed to the geometry search call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.unwrapBbox=false] Changes the bounding box coordinates allowing longitudes that\n * exceeds 180 degrees when is necessary. {{#crossLink \"Search/unwrapBbox:method\"}}More{{/crossLink}}\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {String} [options.language=null] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n * @param {String} options.query Text that will be searched.\n * This parameter is required to be defined either in the options passed to the constructor or using the\n * **query()** method.\n * @param {Array} [options.geometryList] Represents the list of geometries for the geometry search\n * @param {String} [options.idxSet] Specify which indexes to utilize for the search\n * @param {String} [options.extendedPostalCodesFor] Represent the indexes for which extended postal codes should\n * be included in the results\n * @param {String} [options.view] Sets the geopolitical view used in the service\n */\n/* eslint-enable */\ndefine(['./search', '../validators', '../converters', 'common/parameterApplications'],\n function(search, validators, converters, parameterApplications) {\n 'use strict';\n\n var searchPrototype = search.prototype.constructor;\n\n function GeometrySearch(options) {\n this.options = options;\n this.fields = {};\n\n this.fields.type = {\n defaultValue: this.TYPE.geometry,\n visible: false,\n application: parameterApplications.PATH\n };\n\n this.fields.key = {\n validator: validators.string\n };\n\n this.fields.query = {\n validator: validators.string,\n required: true,\n application: parameterApplications.PATH\n };\n\n this.fields.limit = {\n validator: validators.limit\n };\n\n this.fields.language = {\n validator: validators.languageCode\n };\n\n this.fields.view = {\n validator: validators.geopolView('search', 'view')\n };\n\n /**\n * Sets or gets the current value of the option \"geometryList\".\n *\n * Its a list of geometries to search in.\n *\n * Currently only two types of geometries are being supported:\n * - Polygons: Groups of coordinates that describes an enclosed area\n * - Circles: Describe a circular area using an unique coordinate and a radius in meters\n *\n * @example\n * ```js\n * // A polygon area\n * [\n * {\n * type: \"POLYGON\",\n * vertices: [\n * \"37.7524152343544,-122.43576049804686\",\n * \"37.70660472542312,-122.43301391601562\",\n * \"37.712059855877314,-122.36434936523438\",\n * \"37.75350561243041,-122.37396240234374\"\n * ]\n * }\n * ];\n * ```\n *\n * @example\n * ```js\n * // A couple of circle areas\n * var geometryList = [\n * {\n * type: \"CIRCLE\",\n * position: \"37.71205,-121.36434\",\n * radius: 6000 // Unit is in meters\n * },\n * {\n * type: \"CIRCLE\",\n * position: \"37.31205,-121.36434\",\n * radius: 1000 // Unit is in meters\n * }\n * ];\n * ```\n *\n * @example\n * ```js\n * // Mixing polygons and circles areas\n * var geometryList = [\n * {\n * type: \"POLYGON\",\n * vertices: [\n * \"37.7524152343544,-122.43576049804686\",\n * \"37.70660472542312,-122.43301391601562\",\n * \"37.712059855877314,-122.36434936523438\",\n * \"37.75350561243041,-122.37396240234374\"\n * ]\n * },\n * {\n * type: \"CIRCLE\",\n * position: \"37.71205,-121.36434\",\n * radius: 6000\n * },\n * {\n * type: \"CIRCLE\",\n * position: \"37.31205,-121.36434\",\n * radius: 1000\n * }\n * ];\n * ```\n *\n * @method geometryList\n * @chainable\n * @param {Object[]} [newValue] List of geometries\n * @throws {TypeError} If the given argument cannot be converted to a valid value\n * @return {Object[]} The same service instance or the current option value if no argument was given\n */\n this.fields.geometryList = {\n validator: validators.geometryList,\n converter: converters.geometryList,\n application: parameterApplications.POST\n };\n\n this.fields.idxSet = {\n validator: validators.string\n };\n\n this.fields.protocol = {validator: validators.protocol};\n\n this.fields.extendedPostalCodesFor = { validator: validators.string };\n\n this.fields.unwrapBbox = {validator: validators.bool, defaultValue: false, required: true};\n }\n\n GeometrySearch.prototype = searchPrototype.prototype;\n GeometrySearch.prototype.constructor = GeometrySearch;\n\n return function(options) {\n return (new GeometrySearch(options)).construct();\n };\n });\n\n\n\n// WEBPACK FOOTER //\n// ./services/search/geometrySearch.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Allows to make search request using the TomTom's\n * [Search API - Low Bandwidth Search](https://developer.tomtom.com/search-api/search-api-documentation-search/low-bandwidth-search).\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"LowBandwidthSearch/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"LowBandwidthSearch/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * @example\n * ```js\n * function callbackFn(results) {\n * console.log(results);\n * }\n *\n * // Using a callback function\n * tomtom.lowBandwidthSearch()\n * .key() // this is optional if you defined a global key earlier\n * .query(\"Amsterdam, The Netherlands\")\n * .callback(callbackFn)\n * .go();\n *\n * // Or using a Promise\n * tomtom.lowBandwidthSearch()\n * .key() // this is optional if you defined a global key earlier\n * .query(\"Amsterdam, The Netherlands\")\n * .go()\n * .then(callbackFn);\n * ```\n *\n * The SDK provides a {{#crossLink \"Promise\"}}{{/crossLink}} polyfill for browsers (IE<9)\n * without native ECMAScript 6 support.\n *\n * @class LowBandwidthSearch\n * @extends Search\n * @uses CenterMixin\n * @uses RadiusMixin\n * @uses BoundingBoxMixin\n * @uses CountrySetMixin\n * @uses OffsetMixin\n * @uses BestResultMixin\n * @uses ViewMixin\n * @uses QueryMixin\n * @uses TypeaheadMixin\n * @uses IdxSetMixin\n * @constructor\n * @module Services\n *\n * @param {Object} [options]\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {\"http\"|\"https\"} [options.protocol=\"https\"] Protocol's type\n * @param {Boolean} [options.unwrapBbox=false] Changes the bounding box coordinates allowing longitudes that\n * exceeds 180 degrees when is necessary. {{#crossLink \"Search/unwrapBbox:method\"}}More{{/crossLink}}\n * @param {Number} [options.limit=10] Maximum number of responses that will be returned\n * @param {String} [options.view=\"Unified\"] Geopolitical view\n * @param {String} [options.language=null] Language to use in the response.\n * The list with all the available codes can be found\n * here.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n *\n * @param {String} [options.query] Text that will be searched.\n * This parameter is required to be defined either in the options passed to the constructor or using the\n * **query()** method.\n * @param {Boolean} [options.typeahead=false] Enables the **predictive** mode\n * @param {Boolean} [options.bestResult=false] Return only one result, the best match result.\n * @param {Number[]|String|L.LatLng|Object} [options.center] Location where results should be biased\n * @param {Number} [options.radius=0] The search radius in meters using the coordinates given to the **center**\n * option as origin.\n * If the radius is zero the results will not be constrained.\n * @param {Number} [options.offset=0] Starting offset of the returned results within the full result set\n * @param {String} [options.countrySet] List of country codes for limit the search request to those specific\n * political limits\n * @param {Object|Number[]|Object[]|String} [options.boundingBox] The bounding box is an area within the search\n * results needs to limit to. If it is omitted then the whole world will be taken into consideration.\n * @param {String} [options.idxSet] Specify which indexes to utilize for the search\n */\n/* eslint-enable */\ndefine(['./search', 'model/search/lowBandwidthSearch', '../validators'], function(search, model, validators) {\n 'use strict';\n\n var SearchPrototype = search.prototype.constructor;\n\n function LowBandwidthSearch(options) {\n SearchPrototype.call(this, options);\n\n this.model = model;\n this.fields.type = {\n defaultValue: this.TYPE.lowBandwidth,\n visible: false\n };\n\n this.fields.idxSet = {\n validator: validators.string\n };\n\n /**\n * @ignore\n * Only lowBandwidthSearch doesn't support extendedPostalCodesFor property\n * That's why related field must be removed\n */\n delete this.fields.extendedPostalCodesFor;\n }\n\n LowBandwidthSearch.prototype = new SearchPrototype();\n LowBandwidthSearch.prototype.constructor = LowBandwidthSearch;\n\n return function(options) {\n return (new LowBandwidthSearch(options)).construct();\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/search/lowBandwidthSearch.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \ndefine(['../selector'], function(selector) {\n 'use strict';\n return function(json) {\n return selector(json, 'r', 'a1, tp, cc, a2, nm, ph, ps, gh, ct, cst, etp');\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/search/lowBandwidthSearch.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/**\n * Allows to make search request using the TomTom's\n * [Search API - Along Route Search](https://developer.tomtom.com/search-api/search-api-documentation-search/along-route-search).\n *\n * The Along Route Search endpoint allows you to perform a fuzzy search for\n * POIs along a specified route. This search is constrained by specifying\n * Detour Time limiting measure.\n *\n * To send the route points this service will use a POST request with the {{#crossLink \"AlongRouteSearch/route:method\"}}route{{/crossLink}} encoded as a JSON payload.\n * The minimum number of route points is 2.\n *\n * @example\n *```js\n * tomtom.alongRouteSearch({\n * limit: 20,\n * maxDetourTime: 120,\n * query: 'gas station',\n * route: [\n * {\n * \"lat\": 37.7524152343544,\n * \"lon\":-122.43576049804686\n * },\n * {\n * \"lat\": 37.70660472542312,\n * \"lon\":-122.43301391601562\n * },\n * [37.712059855877314, -122.36434936523438], // Another valid format\n * new L.LatLng(37.75350561243041, -122.37396240234374) // Leaflet's L.LatLng instances are also allowed\n * ]\n * })\n * .go()\n * .then(function(response) {\n * console.log('SUMMARY:');\n * console.table(response.summary);\n * console.log('RESULTS:');\n * console.table(response.results);\n * });\n * ```\n *\n * For a list of all available format for routes read the documentation for the\n * {{#crossLink \"AlongRouteSearch/route:method\"}}{{/crossLink}} option.\n *\n * @class AlongRouteSearch\n * @module Services\n * @uses Chain\n * @uses KeyMixin\n * @uses LimitMixin\n * @uses ViewMixin\n * @uses QueryMixin\n * @constructor\n *\n * @param {Object} [options]\n * @param {String} [options.key] An API Key issued from Developer Portal.\n * @param {Number} [options.limit=10] Maximum number of responses that should be returned. Maximum number is 20.\n * @param {String} [options.view=\"Unified\"] Geopolitical view\n * @param {String} [options.maxDetourTime] Maximum detour time in seconds.\n * This option is mandatory. For that reason needs to be defined during the instance\n * construction or using the maxDetourTime() setter function.\n * The maximum allowed value is 3600.\n * @param {String} options.query Text that will be searched.\n * This option is mandatory. For that reason needs to be defined during the instance\n * construction or using the query() setter function.\n * @param {Array} options.route The route representation.\n * This option is mandatory. For that reason needs to be defined during the instance\n * construction or using the route() setter function.\n * See more details.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n */\n/* eslint-enable max-len */\ndefine([\n '../chain',\n '../converters',\n '../validators',\n 'rest/search',\n 'common/searchTypes',\n 'common/parameterApplications'\n], function(chain, converters, validators, restSearch, searchTypes, parameterApplications) {\n 'use strict';\n\n var searchType = searchTypes.searchAlongRoute;\n var fields = {\n key: {validator: validators.string},\n /**\n * Sets or gets the maximum detour time in seconds.\n *\n * The maximum allowed value is 3600.\n *\n * @method maxDetourTime\n * @chainable\n * @param {Number} [value] New maximum detour time in seconds.\n * @throws {TypeError} If the given argument cannot be converted to a valid value.\n * @return {Number} The same service instance or the current option value if no argument was given.\n */\n maxDetourTime: { validator: validators.integerInInterval(0, 3600) },\n\n /**\n * Sets or gets the route to search along. The route **should have at least two points**.\n *\n * The following formats are supported:\n *\n * - **String[]**\n * - `[\"52.3,4.8\", \"52.3,4.8\"]`\n * - **Array[]**\n * - `[ [52.3, 4.8], [52.3, 4.8] ]`\n * - **Object[]**\n * - `{lat: 52.3, lon: 4.8}`\n * - `{lat: 53.3, lng: 5.8}`\n * - `{x: 53.3, y: 5.8}`\n * - `{latitude: 53.3, longitude: 5.8}`\n * - `{lat: Function, lng: Function}` The functions should return a numeric value\n *\n * @example\n *```js\n * tomtom.alongRouteSearch()\n * .route([\n * {\n * lat: 37.7524152343544,\n * lon:-122.43576049804686\n * },\n * {\n * lat: 37.70660472542312,\n * lon:-122.43301391601562\n * }\n * ])\n * .go(callback);\n *```\n *\n * @method route\n * @chainable\n * @param {Array} [route] Route representation.\n * @throws {TypeError} If the given argument cannot be converted to a valid value.\n * @return {Array} The same service instance or the current option value if no argument was given.\n */\n route: {\n required: true,\n converter: converters.route,\n validator: validators.route,\n application: parameterApplications.POST\n },\n\n query: {\n required: true,\n validator: validators.string,\n converter: converters.queryString,\n application: parameterApplications.PATH\n },\n\n // A custom \"limit\" docblock is used because the max limit value differs from the used on the\n // other services (100).\n /**\n * Sets or gets the limit of the elements for the response.\n *\n * @method limit\n * @chainable\n * @param {Number} [limit] Maximum number of the elements in response. Maximum number is 20.\n * @throws {TypeError} If the given argument cannot be converted to a valid value.\n * @return {Number} The same service instance or the current option value if no argument was given.\n */\n limit: {\n validator: validators.integerInInterval(0, 20)\n },\n type: {\n validator: validators.string,\n defaultValue: searchType,\n application: parameterApplications.PATH\n }\n };\n\n var batchFields = {\n batchItems: {\n validator: validators.arrayOf(fields),\n converter: converters.arrayOf(fields)\n }\n };\n\n var search = restSearch();\n\n function handleChain(data, callback) {\n data.type = searchType;\n search.search(fields, data, function(response) {\n callback.call(this, response);\n });\n }\n\n function handleBatchChain(data, callback) {\n data.type = searchType;\n search.batch(fields, data, function(response) {\n callback.call(this, response);\n });\n }\n\n return function(options) {\n if (Array.isArray(options)) {\n return chain(batchFields, handleBatchChain, {\n batchItems: options\n });\n } else {\n return chain(fields, handleChain, options);\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/search/alongRouteSearch.js","/**\n * The Flow Segment Data service provides information about the speeds and travel times of the road\n * fragment closest to the given coordinates.\n *\n * @class TrafficFlowSegmentData\n * @module Services\n * @uses Chain\n * @uses KeyMixin\n * @param {Object} options Options to be passed to the flowSegmentData call.\n * @param {String} options.point Coordinates of the point close to the road segment.\n * @param {String} options.key Traffic Flow API key that can be obtained from\n * TomTom's developer portal.\n * @param {String} options.style The type of flow data to be displayed on the tile. Available options: absolute,\n * relative, relative-delay.\n * @param {Number} options.zoom Zoom level. This will affect traffic incident coordinates to present both\n * road sides separately.\n * @param {String} [options.unit=KMPH] Unit of speed. Available options: KMPH, MPH.\n * @param {Number} [options.thickness=10] Segment width multiplier. Accepts values in range from 0 to 20.\n * @param {Function} [options.fail] The callback function to be called on failure.\n * @param {Function} options.callback The callback function to be called on success.\n * @param {Boolean} options.openLr Specifies if response include OpenLR code.\n * @constructor\n */\ndefine(['./validators', 'rest/flowSegmentData', './chain', 'common/parameterApplications'],\n function(validators, restFlowSegmentData, chain, parameterApplications) {\n\n var fields = {\n key: {validator: validators.string},\n\n /**\n * @method zoom\n * @chainable\n * @param {Integer} zoom Zoom level. This will affect traffic incident coordinates to present both road\n * sides separately. Should be in range from 0 to 18.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n zoom: {validator: validators.numberInInterval(0, 18), required: true,\n application: parameterApplications.PATH},\n\n /**\n * @method style\n * @chainable\n * @param {String} style The type of flow data to be displayed on the tile. Available options: absolute,\n * relative, relative-delay.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n style: {validator: validators.oneOfValue(['absolute', 'relative', 'relative-delay'],\n 'traffic flow style'), required: true, application: parameterApplications.PATH},\n\n /**\n * @method point\n * @chainable\n * @param {String} point Coordinates of the point close to the road segment.\n * They have to be comma-separated and calculated using EPSG4326 projection.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n point: {validator: validators.point, required: true},\n\n /**\n * @method unit\n * @chainable\n * @param {String} unit Unit of speed. Avilable values: KMPH, MPH.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n unit: {validator: validators.oneOfValue(['KMPH', 'MPH'])},\n\n /**\n * @method thickness\n * @chainable\n * @param {Integer} thickness Segment width multiplier. Value should be in range from 1 to 20.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n thickness: {validator: validators.numberInInterval(1, 20)},\n\n /**\n * @method openLr\n * @chainable\n * @param {Boolean} openLr Specifies if response include OpenLR code.\n * @throws {TypeError} If the given argument cannot be converted into a valid value\n * @return {String} The same service instance or the current option value if no argument was given\n */\n openLr: {validator: validators.bool}\n };\n\n var flowSegmentData = restFlowSegmentData();\n\n function handleChain(options, callback) {\n return flowSegmentData.flowSegmentData(fields, options, callback);\n }\n\n return function(options) {\n options = options || {};\n options.__serviceType = 'traffic';\n return chain(fields, handleChain, options);\n };\n });\n\n\n\n// WEBPACK FOOTER //\n// ./services/trafficFlowSegmentData.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['endpoints', 'rest/request/requestFactory', 'apiKeyNames'],\n function(endpoints, requestFactory, ApiKeyNames) {\n 'use strict';\n\n return function() {\n return {\n flowSegmentData: requestFactory.single(endpoints.flowSegmentData, ApiKeyNames.traffic)\n };\n };\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./rest/flowSegmentData.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * It allows to retrieve polygons (in GeoJson format) representing administrative borders using ids related to\n * search results entities.\n *\n * @example\n * ```js\n * tomtom.fuzzySearch()\n * .key() // this is optional if you defined a global key earlier\n * .query(\"Amsterdam\")\n * .go()\n * .then(function(response) {\n * var geometryId = response.results[0].dataSources.geometry.id;\n * tomtom.additionalData()\n * .key() // this is optional if you defined a global key earlier\n * .geometries([geometryId])\n * .go().then(function(adpResponse) {\n * console.log(adpResponse);\n * })\n * });\n * ```\n *\n * @class AdditionalData\n * @module Services\n * @uses Chain\n * @uses KeyMixin\n * @uses ViewMixin\n * @uses GeometriesMixin\n * @uses GeometriesZoomMixin\n * @constructor\n *\n * @param {Object} [options]\n * @param {String} [options.key] An API Key issued from Developer Portal\n * @param {String} [options.view=\"Unified\"] Geopolitical view\n * @param {String[]} options.geometries Geometry ids\n * @param {Number} [options.geometriesZoom] Geometries zoom\n */\ndefine(['../chain', '../validators', 'rest/additionalData'], function(chain, validators, restAdditionalData) {\n 'use strict';\n\n var fields = {\n key: {\n validator: validators.string\n },\n geometries: {\n validator: validators.arrayType,\n required: true\n },\n geometriesZoom: {\n validator: validators.geometriesZoom\n }\n };\n\n var additionalData = restAdditionalData();\n\n function handleChain(data, callback) {\n additionalData.additionalData(fields, data, callback);\n }\n\n return function(options) {\n return chain(fields, handleChain, options);\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/search/additionalData.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['endpoints', 'rest/request/requestFactory', 'apiKeyNames'],\n function(endpoints, requestFactory, ApiKeyNames) {\n 'use strict';\n\n return function() {\n return {\n additionalData: requestFactory.single(endpoints.adp, ApiKeyNames.search)\n };\n };\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./rest/additionalData.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/* eslint-disable max-len */\n/* jshint ignore:start */\n/**\n * Calculate reachable range implementation using using the TomTom's Reachable Range API.\n *\n * Allows to make route request using the TomTom's\n * [Routing API - Calculate Reachable Range Documentation](https://developer.tomtom.com/routing-api/routing-api-documentation-routing/calculate-reachable-range).\n *\n * The Calculate Reachable Range service calculates a set of locations that can\n * be reached from the origin point, subject to the available fuel or energy\n * budget that is specified in the request.\n *\n * The information returned is a polygon boundary in counterclockwise orientation\n * and the precise polygon center (the result of map-matching the origin point).\n *\n * @class ReachableRange\n * @module Services\n * @uses KeyMixin\n * @uses Chain\n * @uses CommonRoutingParameters\n * @uses ProtocolMixin\n * @constructor\n *\n * @param {Object} [options] Options to be passed to the routing call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key=global API key] The API key to be used.\n * @param {Function} [options.callback] Callback function to use in case of success\n * @param {Function} [options.fail=default] Callback function to use in case of failure\n * @param {Number} [options.accelerationEfficiency] Specifies the efficiency of converting chemical energy stored in\n * fuel to kinetic energy when the vehicle accelerates (i.e. KineticEnergyGained/ChemicalEnergyConsumed).\n * @param {String} [options.arriveAt] The date and time of arrival at the destination point.\n * @param {Number} [options.auxiliaryPowerInkW] Specifies the amount of power consumed for sustaining auxiliary systems, in kilowatts (kW).\n * @param {Number} [options.auxiliaryPowerInLitersPerHour] Specifies the amount of fuel consumed for sustaining\n * auxiliary systems of the vehicle, in liters per hour. It can be used to specify consumption due to devices\n * and systems such as AC systems, radio, heating, etc.\n * @param {Array|String} [options.avoid] Specifies something that the route calculation should try to avoid when\n * determining the route.\n * @param {Array} [options.constantSpeedConsumptionInLitersPerHundredkm] Colon-delimited list of\n * CombustionConstantSpeedConsumptionPairs, e.g. array of such pairs \"60,7\".\n * @param {Array} [options.constantSpeedConsumptionInkWhPerHundredkm] Colon-delimited list of\n * ElectricConstantSpeedConsumptionPairs, e.g. array of such pairs \"60,7\".\n * @param {Number} [options.currentChargeInkWh] Specifies the current electric energy supply in kilowatt hours (kWh).\n * @param {Number} [options.currentFuelInLiters] Current supply of fuel in liters.\n * @param {Number} [options.decelerationEfficiency] Specifies the efficiency of converting kinetic energy to saved\n * (not consumed) fuel when the vehicle decelerates (i.e. ChemicalEnergySaved/KineticEnergyLost).\n * @param {String} [options.departAt] The date and time of departure from the origin point\n * response.\n * @param {Number} [options.downhillEfficiency] Specifies the efficiency of converting potential energy to\n * saved (not consumed) fuel when the vehicle loses elevation (i.e. ChemicalEnergySaved/PotentialEnergyLost).\n * @param {Number} [options.energyBudgetInkWh] Electric energy budget in kilowatt\n * hours (kWh) that determines maximal range which can be travelled using the\n * specified Electric Consumption Model. Required if vehicleEngineType is\n * electric.\n * @param {Number} [options.fuelBudgetInLiters] Fuel budget in liters that determines\n * maximal range which can be travelled using the specified Combustion\n * Consumption Model. Required if vehicleEngineType is combustion.\n * @param {Number} [options.fuelEnergyDensityInMJoulesPerLiter] Specifies the amount of chemical energy stored\n * in one liter of fuel in megajoules (MJ). It is used in conjunction with the Efficiency parameters for\n * conversions between saved or consumed energy and fuel.\n * @param {String} [options.hilliness] Degree of hilliness for thrilling route.\n * @param {Number} [options.maxChargeInkWh] Specifies the maximum electric energy supply in kilowatt hours (kWh)\n * that may be stored in the vehicle's battery.\n * @param {Array|String} [options.origin] Point from which the range calculation should start.\n * @param {String} [options.protocol] Protocol's type, one of \"http\" or \"https\".\n * @param {String} [options.report] Specifies which data should be reported for diagnosis purposes. Possible values:\n * * effectiveSettings reports the effective parameters or data used when calling the API. In the case of defaulted\n * parameters the default will be reflected where the parameter was not specified by the caller.\n * @param {String} [options.routeType] The type of route requested.\n * @param {String} [options.traffic] consider all available traffic information during routing\n * determining the route.\n * @param {Number} [options.timeBudgetInSec] Time budget in seconds that determines maximal\n * range which can be travelled using driving time.\n * @param {String} [options.travelMode] The mode of travel for the requested route.\n * @param {Number} [options.uphillEfficiency] Specifies the efficiency of converting chemical energy stored in\n * fuel to potential energy when the vehicle gains elevation (i.e. PotentialEnergyGained/ChemicalEnergyConsumed).\n * @param {Number} [options.vehicleAxleWeight] The vehicle axle weight in kg.\n * @param {Boolean} [options.vehicleCommercial] True if vehicle is used for commercial purposes.\n * @param {String} [options.vehicleEngineType] The vehicle engine type.\n * @param {Number} [options.vehicleHeight] The vehicle height in m.\n * @param {Number} [options.vehicleLength] The vehicle length in meters.\n * @param {Array|String} [options.vehicleLoadType] The array of truck cargo classification.\n * @param {Number} [options.vehicleMaxSpeed] The maximal allowed vehicle speed in km/h.\n * @param {Number} [options.vehicleWeight] The vehicle weight in kg.\n * @param {Number} [options.vehicleWidth] The vehicle width in m.\n * @param {String} [options.windingness] Level of turns for thrilling route.\n *\n * @example\n * ```javascript\n * tomtom.reachableRange({\n * origin: '51.776667,19.454722',\n * fuelBudgetInLiters: 5,\n * constantSpeedConsumptionInLitersPerHundredkm: [\"10,20\", \"15,30\"],\n * })\n * .go()\n * .then(function(rangeData) {\n * console.log(L.geoJson(rangeData));\n * })\n * .catch(function(error) {\n * console.error(error);\n * });\n * ```\n */\n/* eslint-enable max-len */\n/* jshint ignore:end */\n\ndefine([\n 'rest/routing',\n 'model/routing/reachableRange',\n 'model/routing/batchReachableRange',\n '../chain',\n '../validators',\n '../converters',\n './reachableRangeParameters'\n], function(\n restRouting,\n reachableRange,\n batchReachableRangeModel,\n chain,\n validators,\n converters,\n reachableRangeParameters\n) {\n var batchFields;\n\n var routing = restRouting();\n var fields = reachableRangeParameters();\n\n batchFields = {\n batchItems: {\n validator: validators.arrayOf(fields),\n converter: converters.arrayOf(fields)\n }\n };\n\n function handleChain(data, callback) {\n routing.calculateReachableRange(fields, data, function(response) {\n callback.call(this, reachableRange(response, data));\n });\n }\n\n function handleBatchChain(data, callback) {\n routing.batchReachableRange(fields, data, function(response) {\n callback.call(this, batchReachableRangeModel(response));\n });\n }\n\n return function(options) {\n if (Array.isArray(options)) {\n return chain(batchFields, handleBatchChain, {\n batchItems: options\n });\n }\n return chain(fields, handleChain, options);\n };\n\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/routing/reachableRange.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['./reachableRange'], function(reachableRangeModel) {\n 'use strict';\n\n return function(data) {\n if (!Array.isArray(data.batchItems)) {\n return null;\n }\n return data.batchItems.map(function(batchItem) {\n if (batchItem.response.error) {\n return { error: batchItem.response.error};\n } else {\n return reachableRangeModel(batchItem.response);\n }\n });\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/routing/batchReachableRange.js","define(['./commonRoutingParameters', '../utils', '../postValidators', '../validators', 'common/parameterApplications'],\n function(commonRoutingParameters, utils, postValidators, validators, parameterApplications) {\n var fields = {\n\n /**\n * Point from which the range calculation should start.\n *\n * @method origin\n * @chainable\n * @param {String} origin Point from which the range calculation should start.\n * @throws {TypeError} if the given argument cannot be converted to a valid value\n * @return {reachableRange|String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n origin: {\n validator: validators.routingLocation,\n application: parameterApplications.PATH\n },\n\n /**\n * Getter and setter for fuelBudgetInLiters.\n *\n * @method fuelBudgetInLiters\n * @chainable\n * @param {Number} fuelBudgetInLiters Fuel budget in liters that\n * determines maximal range which can be travelled using the specified\n * Combustion Consumption Model. Required if _vehicleEngineType_ is\n * _combustion_.\n * @throws {TypeError} if the given argument cannot be converted to a\n * valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n fuelBudgetInLiters: {\n postValidator: [\n postValidators.requiredBudget,\n postValidators.requiredWithSpecificEngineType,\n postValidators.notCommon\n ]\n },\n\n /**\n * Getter and setter for energyBudgetInkWh.\n *\n * @method energyBudgetInkWh\n * @chainable\n * @param {Number} energyBudgetInkWh Electric energy budget in\n * kilowatt hours (kWh) that determines maximal range which can be\n * travelled using the specified Electric Consumption Model.\n * @throws {TypeError} if the given argument cannot be converted to a\n * valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n energyBudgetInkWh: {\n postValidator: [\n postValidators.requiredBudget,\n postValidators.requiredWithSpecificEngineType,\n postValidators.notCommon\n ]\n },\n\n /**\n * Getter and setter for timeBudgetInSec.\n *\n * @method timeBudgetInSec\n * @chainable\n * @param {Number} timeBudgetInSec Time budget in seconds that determines maximal\n * range which can be travelled using driving time.\n * The consumption parameters will only affect eco-routes and thereby indirectly the driving time.\n * @throws {TypeError} if the given argument cannot be converted to a\n * valid value\n * @return {String} Method returns the service instance allowing chaining or current value if\n * argument is omitted.\n */\n timeBudgetInSec: {\n postValidator: [\n postValidators.requiredBudget,\n postValidators.notCommon\n ]\n }\n\n };\n\n fields = utils.extend(fields, commonRoutingParameters);\n\n return function(fieldsToSkip) {\n var result = utils.clone(fields);\n if (fieldsToSkip instanceof Array) {\n fieldsToSkip.forEach(function(field) {\n delete result[field];\n });\n }\n\n return result;\n };\n\n });\n\n\n\n// WEBPACK FOOTER //\n// ./services/routing/reachableRangeParameters.js","/* eslint-disable object-curly-spacing */\n/* eslint-disable no-undef */\n/* eslint-disable own-handles */\n/* eslint-disable no-innerhtml-assign */\n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\n/**\n * Matrix routing service implementation using using the TomTom's\n * [Routing API - Matrix Routing](https://developer.tomtom.com/routing-api/routing-api-documentation/matrix-routing).\n *\n * The Routing API - Matrix Routing service allows calculation of a matrix of route summaries for a set of routes\n * which are defined with origin and destination locations.\n *\n * For every given origin this service calculates\n * the cost of routing from that origin to every given destination. The set of origins and the set of destinations\n * can be thought of as the column and row headers of a table and each cell in the table contains the costs of routing\n * from the origin to the destination for that cell.\n *\n * The following costs are computed for each route:\n * - Travel times\n * - Distances\n *\n * Parameters can be passed to the constructor or provided via convenient methods that can be chained until\n * the method {{#crossLink \"MatrixRouting/go:method\"}}{{/crossLink}} performs the actual call.\n *\n * The call is asynchronous therefore the user have two options for receive the response:\n * - Passing a callback function.\n * - Use the {{#crossLink \"Promise\"}}{{/crossLink}} returned by the\n * {{#crossLink \"MatrixRouting/go:method\"}}{{/crossLink}} method to handle the response.\n *\n * @class MatrixRouting\n * @module Services\n * @uses Chain\n * @uses KeyMixin\n *\n * @constructor\n * @param {Object} [options] Options to be passed to the routing call,\n * or Array of such options objects to perform batch request.\n * @param {String} [options.key=global API key] An API Key issued\n * from Developer Portal\n * @param {Array} [options.origins] A set of origin locations represented by coordinates (lat, lon).\n * At least one origin is required.\n * @param {Array} options.destinations A set of destination locations represented by coordinates (lat, lon).\n * At least one destination is required.\n * @param {String} [options.routeType] The type of route requested.\n * @param {Boolean} [options.traffic] Determines if traffic data should be used to calculate the route\n * @param {String} [options.travelMode] The travel mode for the requested route. The possible values are documented\n * {{#crossLink \"MatrixRouting/travelMode:method\"}}here{{/crossLink}}.\n * @param {String} [options.avoid] Specifies something that the route calculation should try to avoid when\n * determining the route. The possible values are documented\n * {{#crossLink \"MatrixRouting/avoid:method\"}}here{{/crossLink}}.\n * @param {String} [options.departAt] The date and time of departure from the origin point\n * @param {String} [options.arriveAt] The date and time of arrival at the destination point\n * response\n * @param {String} [options.hilliness] Degree of hilliness for thrilling route. The possible values are documented\n * {{#crossLink \"MatrixRouting/hilliness:method\"}}here{{/crossLink}}.\n * @param {Number} [options.vehicleAxleWeight] The vehicle axle weight in kg.\n * @param {Boolean} [options.vehicleCommercial] True if vehicle is used for commercial purposes.\n * @param {String} [computeTravelTimeFor] Setting to _all_ provides additional information regards travel times.\n * @param {String} [options.vehicleEngineType] The vehicle engine type. One of \"combustion\" or \"electric\"\n * @param {Number} [options.vehicleHeight] The vehicle height in m.\n * @param {Number} [options.vehicleLength] The vehicle length in meters.\n * @param {Array|String} [options.vehicleLoadType] The array of truck cargo classification.\n * The possible values are documented {{#crossLink \"MatrixRouting/vehicleLoadType:method\"}}here{{/crossLink}}.\n * @param {Number} [options.vehicleMaxSpeed] The maximal allowed vehicle speed in km/h.\n * @param {Number} [options.vehicleWeight] The vehicle weight in kg.\n * @param {Number} [options.vehicleWidth] The vehicle width in m.\n * @param {String} [options.windingness] Level of turns for thrilling route.\n * The possible values are documented {{#crossLink \"MatrixRouting/windingness:method\"}}here{{/crossLink}}.\n * @param {String} [options.protocol] Protocol's type, one of \"http\" or \"https\".\n *\n * @example\n * ```js\n * var origins = [\n * { point: { latitude: 51.63685, longitude: 19.4171 } },\n * { point: { latitude: 51.63685, longitude: 19 } }\n * ];\n * var destinations = [\n * { point: { latitude: 52.23498, longitude: 21.00849 } },\n * { point: { latitude: 52.63685, longitude: 18 } }\n * ];\n * function callbackFn(routeGeoJson) {\n * console.log(routeGeoJson);\n * }\n * var request = tomtom.matrixRouting({\n * origins: origins,\n * destinations: destinations,\n * traffic: true\n * });\n * request.go()\n * .then(callbackFn);\n * ```\n */\n/* jshint nomen:false */\ndefine([\n 'rest/routing',\n 'model/routing/matrixRouting',\n '../chain',\n './matrixParameters'\n],\nfunction(restRouting, matrixRoutingModel, chain, matrixParameters) {\n 'use strict';\n\n var fields = matrixParameters();\n var routing = restRouting();\n\n function handleChain(data, callback) {\n routing.matrix(data, function(response) {\n callback.call(this, matrixRoutingModel(response));\n });\n }\n\n return function(options) {\n var opt = options || {};\n opt.__serviceType = 'routing';\n\n return chain(fields, handleChain, opt);\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./services/routing/matrixRouting.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */\n/* eslint-disable no-jsdoc */\ndefine(['services/utils'], function(Utils) {\n 'use strict';\n\n return function(data) {\n if (Utils.isString(data)) {\n try {\n data = JSON.parse(data); // aja js has problems and response is not always parsed as it should\n } catch (e) {\n return null;\n }\n }\n if (data.error) {\n return { error: data.error};\n } else if (data.matrix) {\n return data.matrix.map(function(row) {\n return row.map(function(cell) {\n return cell.response;\n });\n });\n }\n return null;\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./model/routing/matrixRouting.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * It creates a foldable settings control panel over the map.\n *\n * @class ControlPanel\n * @namespace L\n * @extends L.Foldable\n * @module Widgets\n * @constructor\n * @param {Object} [options]\n * @param {String} [options.className=\"tomtom-control-panel\"]\n * @param {String} [options.title=null] Title of the container. If it's null the title will be hidden.\n * @param {Object} [options.close]\n * @param {String} [options.close.text] Text displayed in the Close button\n * @param {String} [options.close.image=\"sdk/images/icon-cog.svg\"] Image of the Close button\n * @param {Object} [options.show]\n * @param {String} [options.show.text] Text displayed in the Show button\n * @param {String} [options.show.image=\"sdk/images/icon-cog.svg\"] Image of the Show button\n * @param {Boolean} [options.collapsed=true] Initial state of the foldable widget\n * \n * @example\n* ```javascript\n* var results = [1, 2, 3];\n* var widget = new L.ControlPanel();\n* widget.addTo(map);\n* widget.setContent('Length: ');\n* widget.addContent(results.length);\n* ```\n */\ndefine(['display/map', 'widgets/controls/foldable'],\n function(L) {\n 'use strict';\n\n var icons = {\n cog: L.Icon.Default.imagePath + '/icon-cog.svg'\n };\n\n L.ControlPanel = L.Foldable.extend({\n options: {\n className: 'tomtom-control-panel',\n title: null,\n close: { image: icons.cog },\n show: { image: icons.cog },\n collapsed: true\n }\n });\n\n return function(options) {\n return new L.ControlPanel(options);\n };\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./widgets/controls/controlPanel.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * This module helps you to create a language selector.\n *\n * @class LanguageSelector\n * @static\n * @extends Object\n * @namespace L\n * @module Widgets\n */\ndefine(['display/map'],\n function(L) {\n 'use strict';\n\n function onPropertyChange(e) {\n var value = e.target.options[e.target.selectedIndex].value;\n e.target.localeService.setCurrentLocale(value);\n }\n\n function addOptions(select, values) {\n var option;\n values.forEach(function(value) {\n option = document.createElement('option');\n option.text = value.getLabel();\n option.value = value.getLanguageCode();\n select.add(option);\n });\n }\n\n function setCurrentLocale(select) {\n var i;\n var locale = select.localeService.getCurrentLocale();\n var langCode = locale.getLanguageCode();\n //sets selected index to correct value\n for (i = 0; i < select.options.length; ++i) {\n if (select.options[i].value === langCode) {\n select.selectedIndex = i;\n select.options[i].selected = 'selected';\n }\n }\n }\n\n return {\n /**\n * Returns a {{#crossLink \"HTMLSelectElement\"}}{{/crossLink}} filled with the supported locales.\n *\n * The element has a function bound to its onchange event, which updates the locale configuration\n * of the {{#crossLink \"LocaleService\"}}{{/crossLink}} instance given as the first argument.\n *\n * @method getHtmlElement\n * @param {LocaleService} localeService Locale service which will be bound to the generated dropdown.\n * @param {\"routing\"|\"search\"|\"traffic\"|\"maps\"} [serviceType] Determines the list of languages.\n * - If you do not provide this parameter or you provide an invalid one, all languages will be included.\n * - If you pass a value, only languages specific for the given service's type will be added.\n * @return {HTMLSelectElement}\n */\n getHtmlElement: function(localeService, serviceType) {\n var select;\n if (!localeService) {\n console.error('Locale service not passed to languageSelector!');\n return undefined;\n }\n select = document.createElement('select');\n select.localeService = localeService;\n select.className = 'tomtom-language-selector';\n addOptions(select, L.LocaleService.getLocalesFor(serviceType));\n setCurrentLocale(select);\n select.onchange = onPropertyChange;\n return select;\n }\n };\n });\n\n\n\n// WEBPACK FOOTER //\n// ./widgets/controls/languageSelector.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * The ResultsLit view allows to create foldable results widget on a map.\n *\n * @class ResultsList\n * @namespace L\n * @extends L.Foldable\n * @module Widgets\n * @constructor\n * @param {Object} [options]\n * @param {String} [options.className=\"tomtom-results-list\"]\n * @param {String} [options.title=\"Results\"]\n * @param {String} [options.close={text: \"×\"}]\n * @param {Boolean} [options.closeOnClick=true]\n * @param {Object} [options.show={text: \"show\"}]\n * @param {String} [options.content=\"Fill in the form on the left and press enter to run search.\"]\n */\ndefine(['display/map', 'widgets/controls/foldable'],\n function(L) {\n 'use strict';\n\n L.ResultsList = L.Foldable.extend({\n options: {\n className: 'tomtom-results-list',\n title: 'Results',\n close: { text: '×' },\n closeOnClick: true,\n show: { text: 'show' },\n content: 'Fill in the form on the left and press enter to run search.'\n }\n });\n\n return function(options) {\n return new L.ResultsList(options);\n };\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./widgets/controls/resultsList.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * This widget allows the user to do distance measurements on the map.\n *\n * @example\n * ###### Basic example\n *\n * ```javascript\n * var map = new L.Map('map', {\n * key: \"your-key\",\n * center: [52.373154, 4.890659],\n * zoom: 13\n * });\n * var widget = new L.DistanceMeasurement();\n * widget.addTo(map);\n * ```\n *\n * ###### Using options\n *\n * ```javascript\n * var map = new L.Map('map', {\n * key: \"your-api-key\",\n * center: [52.373154, 4.890659],\n * zoom: 13\n * });\n * var widget = new L.DistanceMeasurement({\n * unitScheme: 'imperial',\n * markerColor: '#99ff99'\n * });\n * map.addControl(widget);\n * ```\n *\n * @class DistanceMeasurement\n * @namespace L\n * @extends L.Control\n * @uses L.Evented\n * @module Widgets\n * @constructor\n * @param {Object} [options]\n * @param {\"topleft\"|\"topright\"|\"bottomleft\"|\"bottomright\"} [options.position=\"topright\"] Decides the location\n * of the widget\n * @param {String} [options.markerColor=\"#000\"] Color of the markers used for each step of the ruler\n * @param {String} [options.lineColor=\"#000\"] Color or the ruler's line\n * @param {\"metric\"|\"imperial\"|null} [options.unitScheme=null] Indicate if the imperial measurement unit should\n * be used for calculate the distances.\n * If the value is null the widget will use the global unit measurement configuration.\n * @param {Boolean} [options.useArc=false] Display great circle arcs instead of rect lines\n */\n/* jshint nomen:false */\ndefine(['display/map', './measurementRuler', './multiMeasurementRuler', 'services/utils'],\n function(L, MeasurementRuler, MultiMeasurementRuler, Utils) {\n 'use strict';\n\n L.DistanceMeasurement = L.Control.extend({\n includes: L.Evented.prototype,\n\n options: {\n position: 'topright',\n markerColor: '#000',\n lineColor: '#000',\n unitScheme: null,\n useArc: false\n },\n\n statics: {\n Events: {\n /**\n * Fired when the user press over the button to activate the widget.\n * After the first click over the map the measurement rule and the distance counter will appear.\n * @event Activated\n * @type String\n *\n * @example\n * ```javascript\n *\n * var widget = (new L.DistanceMeasurement()).addTo(map);\n * widget.on(L.DistanceMeasurement.Events.Activated, function (eventObject) {\n * console.log(eventObject);\n * });\n * ```\n */\n Activated: 'active',\n /**\n * Fired when the user press over the widget's button when is already activated disabling the\n * widget and hiding the measurement controls.\n * @event Deactivated\n * @type String\n */\n Deactivated: 'inactive',\n /**\n * Fired when a new measurement starts.\n * The measurement starts when the user make the first click on the map.\n * @event Started\n * @type String\n */\n Started: 'start',\n /**\n * Fired when the ruler path changes (by adding more segments).\n * @event L.DistanceMeasurement.Events.Changed\n * @param {L.MeasurementRuler} ruler Reference to the ruler instance\n * @param {L.LatLng} newSegment The coordinates of the last new segment added\n * @param {Number} distance Total ruler distance in meters after adding the new segment\n */\n Changed: 'change',\n /**\n * Fired when the user finish an active measurement.\n * @event L.DistanceMeasurement.Events.Finished\n * @param {L.MeasurementRuler} ruler Reference to the ruler instance\n * @param {Number} distance Total ruler distance in meters\n */\n Finished: 'finish',\n /**\n * Fired when the user decide to cancel an active measurement.\n * @event Cancelled\n * @type String\n */\n Cancelled: 'cancel',\n /**\n * Fired when all the measurements are cleared from the screen.\n * @event Reset\n * @type String\n */\n Reset: 'reset',\n /**\n * Fired when the widget is disabled using the\n * {{#crossLink \"L.DistanceMeasurement/disable:method\"}}{{/crossLink}} method.\n * @event Disabled\n * @type String\n */\n Disabled: 'disable',\n /**\n * Fired when the widget is enabled (after had been disabled) using the\n * {{#crossLink \"L.DistanceMeasurement/enable:method\"}}{{/crossLink}} method.\n * @event Enabled\n * @type String\n */\n Enabled: 'enable'\n }\n },\n\n /**\n * @ignore\n * CSS class names used by the elements of this widget.\n * @type {Object}\n */\n _classnames: {\n // Class added to the map container when the widget is activated\n mapContainer: 'leaflet-with-distance-measurement',\n\n // Container of the widget\n container: 'leaflet-bar leaflet-distance-measurement',\n // CSS classes added to the widget container during its lifecycle\n containerActive: 'leaflet-distance-measurement--active',\n containerInProgress: 'leaflet-distance-measurement--in-progress',\n\n // Widget's main button\n onoffButton: 'leaflet-distance-measurement__onoff-button icon-ruler',\n onoffButtonEnabled: 'leaflet-distance-measurement__onoff-button--enabled',\n onoffButtonDisabled: 'leaflet-disabled',\n\n // Container of the widget actions buttons\n actionsButtons: 'leaflet-distance-measurement__actions',\n actionsButtonsVisible: 'leaflet-distance-measurement__actions--visible',\n\n // Action buttons\n finishButton: 'leaflet-distance-measurement__actions__finish',\n cancelButton: 'leaflet-distance-measurement__actions__cancel',\n\n // Class names used for the rulers and ruler labels\n markerLabel: 'leaflet-distance-measurement__ruler__label',\n previewMarkerLabel: 'leaflet-distance-measurement__ruler__label-preview',\n ruler: 'leaflet-distance-measurement__ruler',\n previewRuler: 'leaflet-distance-measurement__ruler-preview'\n },\n\n /**\n * @ignore\n * Leaflet layer where all the magic happen.\n * @type {L.FeatureGroup}\n */\n _layer: null,\n\n /**\n * @ignore\n * Object with references to the DOM elements of the widget.\n * @type {Object}\n */\n _controls: null,\n\n /**\n * @ignore\n * Reference to the leaflet map instance.\n * @type {L.Map}\n */\n _map: null,\n\n /**\n * @ignore\n * This value is TRUE if the widget has been disabled using the disable() method.\n * @type {Boolean}\n */\n _disabled: false,\n\n /**\n * @ignore\n * This value is TRUE if the measurement controls are visible.\n * @type {Boolean}\n */\n _isActivated: false,\n\n /**\n * @ignore\n * This value is TRUE if a measurement is in progress.\n * @type {Boolean}\n */\n _isMeasurementInProgress: false,\n\n /**\n * @ignore\n * Store the status of conflictive map features to be reactivated when this widget is deactivated.\n * @type {Object}\n */\n _previousStatusOfConflictiveFeatures: null,\n\n /**\n * @ignore\n * Current measurement instance.\n * @type {L.MultiMeasurementRuler}\n */\n _activeRulerLayer: null,\n\n /**\n * @ignore\n * Ruler used during a measurement in progress to display a preview segment when the cursor\n * moves over the map.\n * @type {L.MeasurementRuler}\n */\n _previewRulerSegment: null,\n\n /**\n * @ignore\n * Stack of previous measurements.\n * Each time a measurement is finished, the finished ruler is added to this array.\n * @type {L.MultiMeasurementRuler[]}\n */\n _rulerLayerStack: [],\n\n /**\n * @ignore\n * @type String[]\n */\n _supportedUnits: [],\n\n /**\n * The unit service used by the widget to display the distances.\n * @ignore\n * @type UnitService\n */\n _unitService: null,\n\n /**\n * Curated snapshot of the widget's options created at the beginning of each measurement and using it during\n * its lifecycle.\n * This options are used for the active and preview rulers until the measurement finish.\n * That increases stability if the widget's options changes during a measurement.\n * @ignore\n * @type Object\n */\n _activeOptions: null,\n\n initialize: function(options) {\n L.Util.setOptions(this, options);\n this._rulerLayerStack = [];\n this._activeRulerLayer = null;\n this._previewRulerSegment = null;\n this._isMeasurementInProgress = false;\n this._isActivated = false;\n this._disabled = false;\n this._supportedUnits = L.UnitService.getSupportedUnits().map(function(unit) {\n return unit.getLabel();\n });\n // Copying static Events property to instance Events property for compatibility\n this.Events = L.DistanceMeasurement.Events;\n },\n\n /**\n * @ignore\n * Create the DOM elements needed and returns an object with them.\n * @return {Object}\n */\n _createControls: function() {\n var container = L.DomUtil.create('div', this._classnames.container),\n onoffButton = L.DomUtil.create('a', this._classnames.onoffButton, container),\n actionsButtons = L.DomUtil.create('ul', this._classnames.actionsButtons, container),\n finishButton = L.DomUtil.create('li', this._classnames.finishButton, actionsButtons),\n cancelButton = L.DomUtil.create('li', this._classnames.cancelButton, actionsButtons);\n\n // Icons\n finishButton.innerHTML = '✓';\n cancelButton.innerHTML = '×';\n\n onoffButton.href = '#';\n\n // Labels\n onoffButton.title = 'Toggle measurement tool';\n finishButton.title = 'Finish measurement';\n cancelButton.title = 'Cancel measurement';\n\n // For screen readers\n onoffButton.setAttribute('role', 'button');\n onoffButton.setAttribute('aria-label', onoffButton.title);\n finishButton.setAttribute('role', 'button');\n finishButton.setAttribute('aria-label', finishButton.title);\n cancelButton.setAttribute('role', 'button');\n cancelButton.setAttribute('aria-label', cancelButton.title);\n\n return {\n container: container,\n actionsButtons: actionsButtons,\n finishButton: finishButton,\n cancelButton: cancelButton,\n onoffButton: onoffButton\n };\n },\n\n _attachDomEventHandlersToControls: function() {\n L.DomEvent.disableClickPropagation(this._controls.container);\n L.DomEvent.disableScrollPropagation(this._controls.container);\n\n L.DomEvent\n .on(this._controls.onoffButton, 'click', L.DomEvent.stop)\n .on(this._controls.onoffButton, 'click', this.toggleActivation, this);\n L.DomEvent\n .on(this._controls.finishButton, 'click', L.DomEvent.stop)\n .on(this._controls.finishButton, 'click', this._finishMeasurement, this);\n L.DomEvent\n .on(this._controls.cancelButton, 'click', L.DomEvent.stop)\n .on(this._controls.cancelButton, 'click', this._cancelOrResetMeasurement, this);\n },\n\n /**\n * @ignore\n * Attach a click event listener to the given layer.\n * @param {L.Layer|Event} layerOrEvent\n */\n _layerClickListenerOn: function(layerOrEvent) {\n var layer = layerOrEvent.hasOwnProperty('layer') ? layerOrEvent.layer : layerOrEvent;\n layer.on('click', this._mouseClickHandler, this);\n },\n\n /**\n * @ignore\n * Detach the click event listener from the given layer.\n * @param {L.Layer} layer\n */\n _layerClickListenerOff: function(layer) {\n layer.off('click', this._mouseClickHandler, this);\n },\n\n /**\n * @ignore\n * Install click listeners on map and all its existing layers.\n */\n _startListenClicks: function() {\n this._map.eachLayer(this._layerClickListenerOn, this);\n this._map.on('click', this._mouseClickHandler, this);\n this._map.on('layeradd', this._layerClickListenerOn, this);\n },\n\n /**\n * @ignore\n * Remove all the click listeners from map and its existing layers.\n */\n _stopListenClicks: function() {\n this._map.eachLayer(this._layerClickListenerOff, this);\n this._map.off('click', this._mouseClickHandler, this);\n this._map.off('layeradd', this._layerClickListenerOn, this);\n },\n\n /**\n * @ignore\n * Reference: https://leafletjs.com/reference-1.0.3.html#control-onadd\n * @param {L.Map} map\n * @return {HTMLElement} The control's container\n */\n onAdd: function(map) {\n this._unitService = map.getUnitService();\n this._unitService.on(L.UnitService.Events.UNIT_CHANGED, this._onMapMeasurementUnitChanged, this);\n this._controls = this._createControls();\n this._attachDomEventHandlersToControls();\n return this._controls.container;\n },\n\n /**\n * @ignore\n * Reference: https://leafletjs.com/reference-1.0.3.html#layer-onremove\n */\n onRemove: function() {\n this._unitService.off(L.UnitService.Events.UNIT_CHANGED, this._onMapMeasurementUnitChanged, this);\n this.deactivate();\n },\n\n /**\n * @ignore\n * This method is here to redraw the rulers only if the widget doesn't have a valid string in the\n * `unitScheme` option.\n */\n _onMapMeasurementUnitChanged: function() {\n if (this._activeOptions && this._activeOptions.unitScheme === null) {\n this.redrawRulers();\n }\n },\n\n /**\n * Destroy and create again all the visible rulers with the current widget options.\n *\n * Useful when the options are changed and you need to apply them to all the previous measurements.\n *\n * @method redrawRulers\n */\n redrawRulers: function() {\n var that = this, activeLatLngs, lastPreviewLatLng;\n // Recreating active ruler\n if (this._activeRulerLayer) {\n activeLatLngs = this._activeRulerLayer.latLngs.slice(0);\n this._activeRulerLayer.remove();\n this._activeRulerLayer = null;\n this._startActiveRuler();\n this._activeRulerLayer.setLatLngs(activeLatLngs);\n }\n // Recreating preview ruler\n if (this._previewRulerSegment) {\n lastPreviewLatLng = this._previewRulerSegment.getLast();\n this._previewRulerSegment.remove();\n this._previewRulerSegment = null;\n this._redrawRulerPreviewSegment(lastPreviewLatLng);\n }\n // Recreating stacked rulers\n this._rulerLayerStack = this._rulerLayerStack.map(function(ruler) {\n var latLngs = ruler.latLngs.slice(0);\n var newRuler = that._createRuler();\n ruler.remove();\n newRuler.setLatLngs(latLngs);\n return newRuler.addTo(that._map);\n });\n },\n /**\n * @ignore\n * Creates a curated copy of the widget's options.\n * This copy is used across the measurement lifecycle.\n */\n _rebuildCuratedOptionsSnapshot: function() {\n this._activeOptions = L.Util.extend({}, this.options);\n\n if (Utils.isValidValue(this._activeOptions.unitScheme)) {\n if (this._supportedUnits.indexOf(this._activeOptions.unitScheme) === -1) {\n this._activeOptions.unitScheme = null;\n console.warn('The unit scheme given to distanceMeasurement widget is not valid');\n }\n }\n },\n /**\n * Returns the measurement unit that should be used priorizing the configuration given to this widget.\n *\n * This method doesn't validate the value of the option `unitScheme`.\n * @ignore\n * @return {String}\n */\n _getUnitScheme: function() {\n return this._activeOptions.unitScheme || this._unitService.getCurrentUnit().getLabel();\n },\n\n /**\n * Creates the leaflet layer where the ruler, markers and distance labels will use.\n * @ignore\n */\n _addDrawingLayer: function() {\n this._removeDrawingLayer();\n this._layer = L.featureGroup()\n .addTo(this._map);\n },\n\n _removeDrawingLayer: function() {\n if (this._layer) {\n this._layer.removeFrom(this._map);\n this._layer = null;\n }\n },\n\n /**\n * Activate the widget displaying the measurement controls and wait for the user to click over\n * the map to start the first measurement.\n *\n * This method is called automatically when the user press over the widget's main button.\n *\n * @method activate\n */\n activate: function() {\n var mapContainer = this._map.getContainer();\n\n if (this._disabled || this._isActivated) {\n return;\n }\n\n this._isActivated = true;\n\n L.DomUtil.addClass(mapContainer, this._classnames.mapContainer);\n L.DomUtil.addClass(this._controls.actionsButtons, this._classnames.actionsButtonsVisible);\n\n L.DomUtil.addClass(this._controls.container, this._classnames.containerActive);\n\n L.DomUtil.addClass(this._controls.onoffButton, this._classnames.onoffButtonEnabled);\n\n this._addDrawingLayer();\n\n this._disableConflictiveMapFeatures();\n\n this._startListenClicks();\n\n this.fire(L.DistanceMeasurement.Events.Activated);\n },\n\n /**\n * Deactivate the widget cleaning all the rulers over the map and hiding the measurement controls.\n *\n * If a measurement was in progress, it will be cancel first.\n *\n * @method deactivate\n */\n deactivate: function() {\n var mapContainer = this._map.getContainer();\n\n if (!this._isActivated) {\n return;\n }\n\n if (this._isMeasurementInProgress) {\n this._cancelMeasurement();\n }\n\n this._resetMeasurement();\n\n this._isActivated = false;\n\n L.DomUtil.removeClass(mapContainer, this._classnames.mapContainer);\n L.DomUtil.removeClass(this._controls.actionsButtons, this._classnames.actionsButtonsVisible);\n\n L.DomUtil.removeClass(this._controls.container, this._classnames.containerActive);\n\n L.DomUtil.removeClass(this._controls.onoffButton, this._classnames.onoffButtonEnabled);\n\n this._stopListenClicks();\n\n this._removeDrawingLayer();\n\n this._restoreConflictiveMapFeatures();\n\n this.fire(L.DistanceMeasurement.Events.Deactivated);\n\n // Re-focusing the map to restore keyboard navigation\n this._map.getContainer().focus();\n },\n\n /**\n * Activate or deactivate the widget depending of its current state.\n * @method toggleActivation\n * @chainable\n * @return {L.DistanceMeasurement}\n */\n toggleActivation: function() {\n if (this._isActivated) {\n this.deactivate();\n } else {\n this.activate();\n }\n return this;\n },\n\n /**\n * @ignore\n * Store the current active conflict map features status internally to be reactivate later when the widget\n * is deactivated.\n */\n _storeCurrentStatusOfConflictiveMapFeatures: function() {\n this._previousStatusOfConflictiveFeatures = {\n doubleClickZoom: this._map.doubleClickZoom.enabled(),\n boxZoom: this._map.boxZoom.enabled(),\n keyboard: this._map.keyboard.enabled()\n };\n },\n\n /**\n * @ignore\n * Some map features are disabled during the measurement to avoid conflicts with this widget.\n * Those features should be reactivated when the widget is deactivated.\n */\n _disableConflictiveMapFeatures: function() {\n this._storeCurrentStatusOfConflictiveMapFeatures();\n this._map.doubleClickZoom.disable();\n this._map.boxZoom.disable();\n this._map.keyboard.disable();\n },\n\n /**\n * @ignore\n * Restore the map conflict features disabled by _disableConflictiveMapFeatures().\n * Only the features enabled before the activation of this widget will be reactivated.\n */\n _restoreConflictiveMapFeatures: function() {\n if (this._previousStatusOfConflictiveFeatures !== null) {\n if (this._previousStatusOfConflictiveFeatures.doubleClickZoom) {\n this._map.doubleClickZoom.enable();\n }\n\n if (this._previousStatusOfConflictiveFeatures.boxZoom) {\n this._map.boxZoom.enable();\n }\n\n if (this._previousStatusOfConflictiveFeatures.keyboard) {\n this._map.keyboard.enable();\n }\n this._previousStatusOfConflictiveFeatures = null;\n }\n },\n\n /**\n * @ignore\n * Checks if two coordinates points to the same location.\n * @param {L.LatLng} firstLatLon\n * @param {L.LatLng} secondLatLon\n * @return {Boolean}\n */\n _equalLatLng: function(firstLatLon, secondLatLon) {\n if (firstLatLon === secondLatLon) {\n return true;\n }\n if (firstLatLon && secondLatLon) {\n return firstLatLon.equals(secondLatLon);\n }\n return false;\n },\n\n /**\n * @ignore\n * Function called when the user does a click over the map while the widget is active.\n * @param {MouseEvent} event\n */\n _mouseClickHandler: function(event) {\n var latLng = event.latlng;\n\n if (latLng === undefined) {\n return;\n }\n\n if (!this._isMeasurementInProgress) {\n this._startMeasurement(latLng);\n this._activeRulerLayer.addLatLng(latLng);\n\n } else {\n if (this._equalLatLng(this._activeRulerLayer.getLast(), latLng)) {\n return;\n }\n\n latLng = this._translateLatLngToAchieveClosestPath(latLng);\n\n this._redrawRulerPreviewSegment();\n this._activeRulerLayer.addLatLng(latLng);\n this._onChangeMeasurement(latLng);\n }\n },\n\n /**\n * Translate the coordinates horizontally if necessary to put them closer to the end of the current active\n * ruler.\n *\n * The active Ruler is an instance of MultiMeasurementRule which drawn several identical polylines at 360\n * longitude degrees of separation to show the same Ruler multiple times when one coordinate appears more\n * than once on the screen.\n *\n * Leaflet is not limited to 360 longitude degrees and it keeps increasing or decreasing the degrees until\n * is able to reutilize a \"world copy\" (the property \"worldCopyJump\" is set to true by default in this SDK\n * to accomplish that).\n * This means that, in the same map, the coordinates <0,10>, <-0,-350> and <0,370> all represent the exact\n * same place in the world but drawing a line between <0,10> and <0,11> will be very different to the line\n * between <0,10> and <0,371>.\n *\n * To avoid having very long polylines crossing the world, this method adds or subtracts 360 longitude\n * degrees to the given coordinates to put it closer (in pixels) to the last point of one of the active\n * ruler's polylines.\n *\n * @ignore\n * @param {L.LatLng} latLng\n * @return {L.LatLng}\n */\n _translateLatLngToAchieveClosestPath: function(latLng) {\n var lastLatLng = this._activeRulerLayer.getLast(),\n closestLastLatLng = this._activeRulerLayer.getClosestLast(latLng),\n transOffsetDegrees = 360,\n times;\n\n if (Math.round(closestLastLatLng.lng) < Math.round(lastLatLng.lng)) {\n times = Math.ceil((lastLatLng.lng - closestLastLatLng.lng) / transOffsetDegrees);\n return L.latLng(latLng.lat, latLng.lng + (transOffsetDegrees * times));\n\n } else if (Math.round(closestLastLatLng.lng) > Math.round(lastLatLng.lng)) {\n times = Math.ceil((closestLastLatLng.lng - lastLatLng.lng) / transOffsetDegrees);\n return L.latLng(latLng.lat, latLng.lng - (transOffsetDegrees * times));\n }\n\n return latLng;\n },\n\n /**\n * @ignore\n * Update the temporal ruler segment line over the map.\n *\n * Calls to this function will be ignored if:\n * - There's no active ruler on the screen (distance zero).\n * - The coordinates given are undefined.\n * - The coordinates given are the same as the last coordinates of the ruler.\n *\n * @param {L.LatLng} [previewLatLng=undefined] End coordinates of the possible new segment. The start\n * coordinates will be taken from the active ruler coordinates.\n */\n _redrawRulerPreviewSegment: function(previewLatLng) {\n var lastLatLng,\n rulerOptions = {\n rulerClassname: [this._classnames.ruler, this._classnames.previewRuler].join(' '),\n labelClassname: [this._classnames.markerLabel, this._classnames.previewMarkerLabel].join(' '),\n markerColor: this._activeOptions.markerColor,\n lineColor: this._activeOptions.lineColor,\n distanceOffset: this._activeRulerLayer.distance,\n unitScheme: this._getUnitScheme(),\n useArc: this._activeOptions.useArc\n };\n\n if (previewLatLng) {\n lastLatLng = this._activeRulerLayer.getClosestLast(previewLatLng);\n }\n\n if (lastLatLng && previewLatLng && !this._equalLatLng(lastLatLng, previewLatLng)) {\n if (!this._previewRulerSegment) {\n this._previewRulerSegment = new MeasurementRuler(rulerOptions)\n .addTo(this._layer);\n }\n this._previewRulerSegment.setLatLngs([lastLatLng, previewLatLng]);\n\n } else if (this._previewRulerSegment) {\n this._previewRulerSegment.remove();\n this._previewRulerSegment = null;\n }\n },\n\n /**\n * @ignore\n * Function called each time the cursor moves over the map.\n * @param {MouseEvent} event\n */\n _mouseMoveHandler: function(event) {\n this._redrawRulerPreviewSegment(event.latlng);\n },\n\n /**\n * @ignore\n * Creates a new ruler instance base it the widget options.\n * @param {L.LatLng} latLng\n * @return {L.MeasurementRuler}\n */\n _createRuler: function() {\n var rulerOptions = {\n rulerClassname: this._classnames.ruler,\n labelClassname: this._classnames.markerLabel,\n markerColor: this._activeOptions.markerColor,\n lineColor: this._activeOptions.lineColor,\n unitScheme: this._getUnitScheme(),\n useArc: this._activeOptions.useArc\n };\n return new MultiMeasurementRuler(rulerOptions);\n },\n\n /**\n * Creates a new ruler and add it to the current map as an active ruler.\n * @ignore\n * @return {L.MeasurementRuler}\n */\n _startActiveRuler: function() {\n if (this._activeRulerLayer) {\n throw new Error('An active ruler already exist');\n }\n this._activeRulerLayer = this._createRuler().addTo(this._layer);\n return this._activeRulerLayer;\n },\n\n /**\n * Executed when the user does the first click over the map.\n * @ignore\n * @param {L.LatLng} latLng\n */\n _startMeasurement: function(latLng) {\n this._rebuildCuratedOptionsSnapshot();\n\n this._startActiveRuler();\n\n this._isMeasurementInProgress = true;\n\n L.DomUtil.addClass(this._controls.container, this._classnames.containerInProgress);\n\n this.fire(L.DistanceMeasurement.Events.Started, latLng);\n\n this._map.on('mousemove', this._mouseMoveHandler, this);\n this._map.on('dblclick', this._finishMeasurement, this);\n },\n\n /**\n * @ignore\n * Executed when a new ruler segment is added to the path.\n * @param {L.LatLng} latLng New ruler segment end coordinates\n */\n _onChangeMeasurement: function(latLng) {\n this.fire(L.DistanceMeasurement.Events.Changed, {\n ruler: this._activeRulerLayer,\n newSegment: latLng,\n distance: this._activeRulerLayer.distance\n });\n },\n\n _stopMeasurement: function() {\n this._isMeasurementInProgress = false;\n\n L.DomUtil.removeClass(this._controls.container, this._classnames.containerInProgress);\n\n this._map.off('mousemove', this._mouseMoveHandler, this);\n this._map.off('dblclick', this._finishMeasurement, this);\n\n this._redrawRulerPreviewSegment();\n },\n\n /**\n * @ignore\n * Restart the measurement clearing also the ruler, markers and labels from\n * the map.\n */\n _resetMeasurement: function() {\n if (this._activeRulerLayer || this._rulerLayerStack.length > 0) {\n if (this._activeRulerLayer) {\n this._cancelMeasurement();\n }\n if (this._rulerLayerStack.length > 0) {\n this._rulerLayerStack.forEach(function(ruler) {\n ruler.remove();\n });\n this._rulerLayerStack = [];\n }\n this.fire(L.DistanceMeasurement.Events.Reset);\n }\n },\n\n _moveActiveRulerToStack: function() {\n this._rulerLayerStack.push(this._activeRulerLayer);\n this._activeRulerLayer = null;\n },\n\n /**\n * @ignore\n * Called when the user finish the measurement.\n */\n _finishMeasurement: function() {\n if (!this._isMeasurementInProgress) {\n return;\n }\n\n if (this._activeRulerLayer.distance === 0) {\n // If the ruler is empty, the measurement is considered INVALID\n this._cancelMeasurement();\n\n } else {\n this._stopMeasurement();\n this.fire(L.DistanceMeasurement.Events.Finished, {\n ruler: this._activeRulerLayer,\n distance: this._activeRulerLayer.distance\n });\n this._moveActiveRulerToStack();\n }\n },\n\n /**\n * @ignore\n * Called when the user decide to cancel a measurement in progress.\n */\n _cancelMeasurement: function() {\n if (this._isMeasurementInProgress) {\n this._stopMeasurement();\n this._activeRulerLayer.remove();\n this._activeRulerLayer = null;\n this.fire(L.DistanceMeasurement.Events.Cancelled);\n }\n },\n\n /**\n * @ignore\n * Called when the user decide to cancel a measurement in progress or reset the\n * current finished measurement.\n */\n _cancelOrResetMeasurement: function() {\n if (this._isMeasurementInProgress) {\n this._cancelMeasurement();\n } else {\n this._resetMeasurement();\n }\n },\n\n /**\n * Disables the widget's instance to not allowing user interaction.\n * @method disable\n * @chainable\n * @return {L.DistanceMeasurement}\n */\n disable: function() {\n if (!this._disabled) {\n this.deactivate();\n this._disabled = true;\n L.DomUtil.addClass(this._controls.onoffButton, this._classnames.onoffButtonDisabled);\n this.fire(L.DistanceMeasurement.Events.Disabled);\n }\n return this;\n },\n\n /**\n * Re-enables the widget if was previously disabled.\n * @method enable\n * @chainable\n * @return {L.DistanceMeasurement}\n */\n enable: function() {\n if (this._disabled) {\n this._disabled = false;\n L.DomUtil.removeClass(this._controls.onoffButton, this._classnames.onoffButtonDisabled);\n this.fire(L.DistanceMeasurement.Events.Enabled);\n }\n return this;\n }\n });\n\n return function(options) {\n var distanceMeasurement = new L.DistanceMeasurement(options);\n Utils.addDeprecatedProperty(distanceMeasurement, 'EVENTS', 'Events');\n return distanceMeasurement;\n };\n });\n\n\n\n// WEBPACK FOOTER //\n// ./widgets/controls/distanceMeasurement/distanceMeasurement.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * @ignore\n * It create many instances of MeasurementRuler and place the copies to the sides with 360 degrees of\n * longitude difference between each one.\n * This module has almost the same methods of MeasurementRuler to easy implementation.\n */\n/* jshint nomen:false */\ndefine(['display/map', './measurementRuler'], function(L, MeasurementRuler) {\n 'use strict';\n var MultiRuler = L.LayerGroup.extend({\n _rulers: [],\n initialize: function(rulerOptions) {\n this._rulers = [];\n\n // One main rules and 4 clones (two to each side)\n this._createRuler(rulerOptions);\n this._createRuler(rulerOptions);\n this._createRuler(rulerOptions);\n this._createRuler(rulerOptions);\n this._createRuler(rulerOptions);\n L.LayerGroup.prototype.initialize.call(this, this._rulers);\n\n Object.defineProperty(this, 'options', {\n get: function() {\n // Remember that all the rules should have the same configuration\n return this._rulers[0].options;\n }\n });\n\n Object.defineProperty(this, 'distance', {\n get: function() {\n // Remember that all the rules should have the same distance\n return this._rulers[0].distance;\n }\n });\n\n Object.defineProperty(this, 'latLngs', {\n get: function() {\n // Remember that all the rules should have the same properties\n return this._rulers[0].latLngs;\n }\n });\n },\n /**\n * @ignore\n * Adds a new segments to all the rules.\n * @param {L.LatLng} latLng\n */\n addLatLng: function(latLng) {\n var i, offset = 360,\n len = this._rulers.length;\n this._rulers[0].addLatLng(latLng);\n for (i = 1; i + 1 < len; i = i + 2) {\n this._rulers[i].addLatLng(this._getLatLngWithLngOffset(latLng, -offset));\n this._rulers[i + 1].addLatLng(this._getLatLngWithLngOffset(latLng, offset));\n offset += 360;\n }\n },\n /**\n * @ignore\n * Set the ruler path to all the rules.\n * @param {L.LatLng[]} latLngs\n */\n setLatLngs: function(latLngs) {\n var i, offset = 360,\n len = this._rulers.length;\n this._rulers[0].setLatLngs(latLngs);\n for (i = 1; i + 1 < len; i = i + 2) {\n this._rulers[i].setLatLngs(this._getLatLngsWithLngOffset(latLngs, -offset));\n this._rulers[i + 1].setLatLngs(this._getLatLngsWithLngOffset(latLngs, offset));\n offset += 360;\n }\n },\n /**\n * @ignore\n * Returns the last coordinates added to the ruler.\n * @return {L.LatLng}\n */\n getLast: function() {\n return this._rulers[0].getLast();\n },\n /**\n * @ignore\n * Returns the last coordinates of the closest ruler polyline to the given coordinates.\n * @param {L.LatLng} closerLatLng\n * @return {L.LatLng}\n */\n getClosestLast: function(closerLatLng) {\n var lastsLatLngs, closerPoint,\n map = this._map;\n\n closerPoint = map.latLngToContainerPoint(closerLatLng);\n\n lastsLatLngs = this._rulers\n // Creating a distances report\n .map(function(ruler) {\n var rulerLastLatLng = ruler.getLast(),\n rulerLastPoint = map.latLngToContainerPoint(rulerLastLatLng);\n return {latLng: rulerLastLatLng, distance: Math.round(rulerLastPoint.distanceTo(closerPoint))};\n })\n // Sorting points from closest to furthers\n .sort(function(a, b) {\n return a.distance - b.distance;\n });\n\n if (lastsLatLngs.length > 0) {\n return lastsLatLngs[0].latLng;\n }\n\n return null;\n },\n _createRuler: function(rulerOptions) {\n var ruler = new MeasurementRuler(rulerOptions);\n this._rulers.push(ruler);\n return ruler;\n },\n _getLatLngsWithLngOffset: function(latLngs, offset) {\n return latLngs.map(function(latLng) {\n return L.latLng(latLng.lat, latLng.lng + offset);\n });\n },\n _getLatLngWithLngOffset: function(latLng, offset) {\n return L.latLng(latLng.lat, latLng.lng + offset);\n }\n });\n\n return MultiRuler;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./widgets/controls/distanceMeasurement/multiMeasurementRuler.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * This widget allows you to manage many search boxes.\n *\n * @class RouteInputs\n * @namespace L\n * @extends L.Control\n * @uses L.Evented\n * @module Widgets\n * @constructor\n * @param {Object} [options] Options to be passed to the routeInputs control\n * @param {Number} [options.searchBoxes=2] Number of searchBoxes to be created\n * @param {\"topright\"|\"topleft\"|\"bottomright\"|\"bottomleft\"} [options.position=\"topleft\"] Position of\n * the control on the map\n * @param {String} [options.location=L.RouteInputs.Location.Start] Definition of place of creation location control.\n * Should be equal to one of the values in the {{#crossLink \"L.RouteInputs/Location:property\"}}{{/crossLink}}\n * property.\n * @param {String} [options.enableSearchBoxesModifcation=false] Determines whether control should expose\n * functionality of adding or removing waypoints by internal controls\n * @param {String} [options.waypointPlacement=L.RouteInputs.WaypointPlacement.BeforeLast] Determines the place where\n * the new waypoint will added to.\n * Should be equal to one of the values in the\n * {{#crossLink \"L.RouteInputs/WaypointPlacement:property\"}}{{/crossLink}} property.\n * @param {Object} [options.searchOptions] Options for the {{#crossLink \"L.SearchBox\"}}{{/crossLink}} instances\n * @param {Object} [options.searchOptions.collapsible=false] Decide if the search boxes should be collapsed\n *\n * @example\n * ```javascript\n * // Route inputs with two search boxes and location control\n * var widget = new L.RouteInputs({\n * searchBoxes: 2,\n * location: L.RouteInputs.Location.Start\n * })\n * widget.addTo(map);\n * ```\n */\n/* jshint nomen:false */\ndefine(['display/map', 'services/utils', 'widgets/controls/searchBox'], function(L, utils) {\n 'use strict';\n\n var EVENTS = {\n LocationsFound: 'locationsFound',\n LocationsCleared: 'locationsCleared',\n LocationError: 'locationError'\n }, LOCATION = {\n Start: 'start',\n End: 'end'\n }, WAYPOINT_PLACEMENT = {\n Last: 'last',\n BeforeLast: 'beforeLast'\n };\n var routeInputConstructor;\n\n /**\n * @ignore\n * Returns the list of selected locations.\n * @return {Array}\n */\n function getLocationsFromSearchBoxes() {\n return this.searchBoxes.map(function(searchBox) {\n return searchBox.selectedLocation;\n });\n }\n\n function updateSearchBoxIcons() {\n var self = this;\n self.searchBoxes.forEach(function(searchBox, index) {\n var style = self.getIconClassName(index);\n searchBox.setIcon(style);\n });\n }\n\n function updateLocationButton() {\n var locationIconIndex;\n this.searchBoxes.forEach(function(searchBox) {\n searchBox.removeLocationIcon();\n });\n locationIconIndex = this.options.location === LOCATION.Start ? 0 : this.searchBoxes.length - 1;\n this.searchBoxes[locationIconIndex].addLocationIcon();\n }\n\n function showDeleteSearchBoxButton(searchBox) {\n if (searchBox.deleteIcon === undefined) {\n searchBox.deleteIcon = L.DomUtil.create('div', 'icon-trash-black leaflet-control-routeInputs-remove');\n searchBox._container.insertBefore(searchBox.deleteIcon, searchBox.resultsContainer);\n L.DomEvent.on(searchBox.deleteIcon, 'click', function() {\n this.removeInput(searchBox);\n }, this);\n }\n }\n\n function hideDeleteSearchBoxButton(searchBox) {\n if (searchBox.deleteIcon !== undefined) {\n searchBox.deleteIcon.parentNode.removeChild(searchBox.deleteIcon);\n searchBox.deleteIcon = undefined;\n }\n }\n\n function setVisibilityForDeleteButton(callback) {\n var i;\n for (i = 0; i < this.searchBoxes.length; i += 1) {\n callback.call(this, this.searchBoxes[i]);\n }\n }\n\n function updateDeleteSearchBoxButtons() {\n if (this.options.enableSearchBoxesModifcation === true) {\n if (this.searchBoxes.length === this.options.searchBoxes) {\n setVisibilityForDeleteButton.call(this, hideDeleteSearchBoxButton);\n } else {\n setVisibilityForDeleteButton.call(this, showDeleteSearchBoxButton);\n }\n }\n }\n\n function showInsertSearchBoxButton(container) {\n if (this.insertSearchBoxButton === undefined) {\n this.insertSearchBoxButton = L.DomUtil.create('div',\n 'icon-add-black leaflet-control-routeInputs-add',\n container || this.getContainer());\n L.DomEvent.on(this.insertSearchBoxButton, 'click', this.addInput, this);\n }\n }\n\n function hideInsertSearchBoxButton() {\n if (this.insertSearchBoxButton !== undefined) {\n L.DomEvent.off(this.insertSearchBoxButton, 'click', this.addInput);\n this.insertSearchBoxButton.parentNode.removeChild(this.insertSearchBoxButton);\n this.insertSearchBoxButton = undefined;\n }\n }\n\n function updateInsertSearchBoxButton() {\n var i;\n if (this.options.enableSearchBoxesModifcation === true) {\n for (i = 0; i < this.searchBoxes.length; i += 1) {\n if (this.searchBoxes[i].input.value.length === 0) {\n hideInsertSearchBoxButton.call(this);\n return;\n }\n }\n showInsertSearchBoxButton.call(this, null);\n }\n }\n\n L.RouteInputs = L.Control.extend({\n\n includes: L.Evented.prototype,\n\n statics: {\n Events: EVENTS,\n Location: LOCATION,\n WaypointPlacement: WAYPOINT_PLACEMENT\n },\n\n options: {\n searchBoxes: 2,\n position: 'topleft',\n location: LOCATION.Start,\n enableSearchBoxesModifcation: false,\n waypointPlacement: WAYPOINT_PLACEMENT.BeforeLast,\n searchOptions: {\n collapsible: false\n }\n },\n\n initialize: function(options) {\n if (options !== undefined && options.searchOptions !== undefined) {\n utils.addFields(options.searchOptions, this.options.searchOptions);\n delete options.searchOptions;\n }\n L.Util.setOptions(this, options);\n this.searchBoxes = [];\n },\n\n onAdd: function() {\n var i, container = this.createContainer();\n this.searchBoxesContainer = L.DomUtil.create('div', 'leaflet-control-search-boxes', container);\n for (i = 0; i < this.options.searchBoxes; i += 1) {\n this.searchBoxes.push(this.createSearchBox(i));\n }\n return container;\n },\n\n /**\n * Method used to create the container for the search boxes.\n *\n * @method createContainer\n * @return {HTMLElement} Container for search boxes\n */\n createContainer: function() {\n var container = L.DomUtil.create('div', 'leaflet-control-routeInputs');\n L.DomEvent.disableClickPropagation(container);\n L.DomEvent.disableScrollPropagation(container);\n return container;\n },\n\n /**\n * Method used to get search box icon's class name, depending on its position (index).\n *\n * The returned class name should be added to the input.\n *\n * @method getIconClassName\n * @param {Number} index\n * @return {String}\n */\n getIconClassName: function(index) {\n var className = 'icon-flag-black',\n minimumBoxesAchieved = this.options.searchBoxes > this.searchBoxes.length,\n lastSearchBoxIndex = minimumBoxesAchieved ? this.options.searchBoxes - 1 : this.searchBoxes.length - 1;\n if (index === 0) {\n className = 'icon-start-black';\n } else if (index === lastSearchBoxIndex) {\n className = 'icon-end-black';\n }\n return className;\n },\n\n /**\n * Method used to initialize search box by adding element to the container and applying event handlers on\n * it.\n *\n * @method createSearchBox\n * @param {Number} index Index of the search box (starting from `0`)\n * @return {L.SearchBox} Modified search box object\n */\n createSearchBox: function(index) {\n var searchBoxInstance;\n var options = utils.clone(this.options.searchOptions);\n options.location = this.needsLocationIcon(index);\n options.icon = this.getIconClassName(index);\n options.searchOnDragEnd = 'open';\n searchBoxInstance = (new L.SearchBox(options)).addTo(this._map);\n\n this.searchBoxesContainer.insertBefore(\n searchBoxInstance.getContainer(),\n this.searchBoxesContainer.childNodes[index]);\n this.addSearchBoxEventHandlers(searchBoxInstance);\n return searchBoxInstance;\n },\n\n /**\n * Method used to remove given search box from the view by specific index.\n *\n * @method removeSearchBox\n * @param {Number} index Index of the search box (starting from `0`)\n * @return {L.SearchBox} Modified search box object\n */\n removeSearchBox: function(index) {\n var searchBox = this.searchBoxesContainer.childNodes[index];\n searchBox.parentNode.removeChild(searchBox);\n return searchBox;\n },\n\n /**\n * Method used to check if search box needs location element.\n *\n * @method needsLocationIcon\n * @param {Number} searchBoxIndex Index of the given search box (starting from `0`)\n * @return {Boolean} Returns information of presence of location element\n */\n needsLocationIcon: function(searchBoxIndex) {\n var first = this.options.location === LOCATION.Start && searchBoxIndex === 0,\n last = this.options.location === LOCATION.End && searchBoxIndex === this.options.searchBoxes - 1;\n return first || last;\n },\n\n /**\n * Method used to add handlers for given search box. If obtaining user's current location fails,\n * {{#crossLink \"L.RouteInputs/LocationError:event\"}}{{/crossLink}} is fired.\n *\n * @method addSearchBoxEventHandlers\n * @param {L.SearchBox} searchBox Search box instance used to add handlers on it\n */\n addSearchBoxEventHandlers: function(searchBox) {\n var that = this;\n searchBox.on(searchBox.Events.ResultClicked, function(eventObject) {\n that.onLocationChange(eventObject);\n });\n searchBox.on(searchBox.Events.ClearButtonClicked, function(eventObject) {\n that.onLocationChange(eventObject);\n updateInsertSearchBoxButton.call(that);\n });\n searchBox.on(searchBox.Events.SearchInputChanged, function() {\n updateInsertSearchBoxButton.call(that);\n });\n if (searchBox.getLocation()) {\n searchBox.getLocation().on(searchBox.getLocation().Events.LocationError, function(eventObject) {\n that.fire(this.Events.LocationError, eventObject);\n });\n }\n },\n\n /**\n * Method used to manage changing state of search boxes. Depending on the content of the searchBox, there might\n * be fired one of these two events:\n * - {{#crossLink \"L.RouteInputs/LocationsFound:event\"}}{{/crossLink}} or\n * - {{#crossLink \"L.RouteInputs/LocationsCleared:event\"}}{{/crossLink}}\n *\n * @method onLocationChange\n * @param {Object} eventObject Object that contains event's information\n * @param {L.SearchBox} eventObject.target Box instance\n * @param {Object} eventObject.data\n * @param {Number} eventObject.data.position Position of the box\n */\n onLocationChange: function(eventObject) {\n var searchBox = eventObject.target;\n searchBox.selectedLocation = eventObject.data ? eventObject.data.position : undefined;\n\n this.fire(eventObject.data ? this.Events.LocationsFound : this.Events.LocationsCleared, {\n points: getLocationsFromSearchBoxes.call(this)\n });\n },\n\n /**\n * Method used to show notification when looking for current location fails.\n *\n * @method showLocationNotFoundMessageBox\n */\n showLocationNotFoundMessageBox: function() {\n L.messageBox({closeAfter: 1500}).openOn(this._map).setContent('Could not find your location');\n },\n\n /**\n * Method used to add searchBox to the specific position (index).\n *\n * @method addInput\n * @param {Number} [index] Represents position where search box should be added to.\n * Not passing any index will cause adding a searchBox at the end of list or just before the last\n * search box.\n *\n * @example\n * ```javascript\n * var widget = new L.RouteInputs();\n * widget.addTo(map);\n * widget.addInput(0);\n * widget.addInput();\n * ```\n */\n addInput: function(index) {\n if (!isFinite(index)) {\n index = this.searchBoxes.length;\n if (this.options.waypointPlacement === WAYPOINT_PLACEMENT.BeforeLast) {\n index -= 1;\n }\n }\n this.searchBoxes.splice(index, 0, this.createSearchBox(index));\n updateSearchBoxIcons.call(this);\n updateLocationButton.call(this);\n updateDeleteSearchBoxButtons.call(this);\n updateInsertSearchBoxButton.call(this);\n },\n\n /**\n * Method used to remove searchBox from the specific position (index).\n *\n * @method removeInput\n * @param {Number|L.SearchBox} searchBox The index of the searchBox to be deleted or the box instance itself\n *\n * @example\n * ```javascript\n * var widget = new L.RouteInputs();\n * widget.addTo(map)\n * widget.removeInput(0);\n * widget.removeInput();\n * ```\n */\n removeInput: function(searchBox) {\n var nodeList;\n if (searchBox === undefined) {\n searchBox = this.searchBoxes.length - 1;\n } else if (typeof searchBox === 'object') {\n nodeList = Array.prototype.slice.call(this.searchBoxesContainer.children);\n searchBox = nodeList.indexOf(searchBox.getContainer());\n }\n this.removeSearchBox(searchBox);\n this.searchBoxes.splice(searchBox, 1);\n updateSearchBoxIcons.call(this);\n updateLocationButton.call(this);\n updateDeleteSearchBoxButtons.call(this);\n updateInsertSearchBoxButton.call(this);\n\n this.fire(this.Events.LocationsCleared, {points: getLocationsFromSearchBoxes.call(this)});\n },\n\n /**\n * Event that is fired when locations in all searchBoxes are changing.\n *\n * @event LocationsFound\n * @param {Array} points Array of points that represents locations from all searchBoxes, even if they are\n * undefined.\n * @param {String} [type=\"locationsFound\"] Event's name\n * @param {Element} target Event's target.\n *\n * @example\n * ```javascript\n * var routeInputInstance = (new L.RouteInputs()).addTo(map);\n * routeInputInstance.on(L.RouteInputs.Events.LocationsFound, function (eventObject) {\n * console.log(eventObject.points);\n * });\n * ```\n */\n\n /**\n * Event that is fired when locations in all searchBoxes are being removed.\n *\n * @event LocationsCleared\n * @param {Array} points Array of points that represents locations from all searchBoxes, even if they are\n * undefined.\n * @param {String} [type=\"locationsCleared\"] Event's name\n * @param {Element} target Event's target.\n *\n * @example\n * ```javascript\n * var widget = new L.RouteInputs();\n * widget.addTo(map);\n * widget.on(L.RouteInputs.Events.LocationsCleared, function (eventObject) {\n * console.log(eventObject.points);\n * });\n * ```\n */\n\n /**\n * Event that is fired when obtaining user's current location fails.\n *\n * @event LocationError\n * @param {Object} eventObject All failure information\n * @param {String} [type=\"locationError\"] Event's name\n * @param {Element} target Event's target.\n *\n * @example\n * ```javascript\n * var widget = new L.RouteInputs();\n * widget.addTo(map);\n * widget.on(L.RouteInputs.Events.LocationError, function (eventObject) {\n * console.log(eventObject);\n * });\n * ```\n */\n Events: EVENTS\n });\n\n routeInputConstructor = function(options) {\n var routeInputs = new L.RouteInputs(options);\n utils.addDeprecatedProperty(routeInputs, 'Event', 'Events');\n return routeInputs;\n };\n\n /**\n * Determines the position that location icon will be added to.\n *\n * Possible options are:\n *\n * * `Location.Start` - location will be added to the first searchBox in the list.\n * * `Location.End` - location will be added to the last searchBox in the list.\n *\n * @property {Object} Location\n *\n * @example\n * ```javascript\n * var widget = new L.RouteInputs({\n * location: L.RouteInputs.Location.Start\n * });\n * widget.addTo(map);\n * ```\n */\n routeInputConstructor.Location = LOCATION;\n\n /**\n * Determines the position where waypoint will be added to.\n *\n * Possible options are:\n *\n * * `WaypointPlacement.BeforeLast` - new waypoint will be added before the last searchBox.\n * * `WaypointPlacement.Last` - new waypoint will be added as the last element in the list.\n *\n * @property {Object} WaypointPlacement\n *\n * @example\n * ```javascript\n * var widget = new L.RouteInputs({\n * waypointPlacement: L.RouteInputs.WaypointPlacement.BeforeLast\n * });\n * widget.addTo(map);\n * ```\n */\n routeInputConstructor.WaypointPlacement = WAYPOINT_PLACEMENT;\n\n return routeInputConstructor;\n});\n\n\n\n// WEBPACK FOOTER //\n// ./widgets/controls/routeInputs.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * This widget displays a panel with route instructions over the map.\n * \n * This widget requires route data to work correcly. For more information please refer to our \n * \n * Routing example.\n *\n * @class RouteInstructions\n * @namespace L\n * @extends L.Control\n * @module Widgets\n * @constructor\n * @param {Object} [options] Options to configure the widget\n * @param {Number[]} [options.size=[320, 320]] Size of panel. The first element of the array is the width\n * and the second the maximum height. It will fit to the size of the instructions.\n * @param {\"topright\"|\"topleft\"|\"bottomright\"|\"bottomleft\"} [options.position=\"topleft\"] Location of the\n * widget\n * @param {Boolean} [options.instructionGroupsCollapsed=false] Should instruction groups be collapsed on init\n * @param {Boolean} [options.showInstructionGroups=true] Should instruction groups be displayed\n * @param {Boolean} [options.imperialDistance=null] Set this option if you want to use a specific unit\n * measurement system for the new instance of the widget instead of use the default unit\n *\n * @example\n * ```javascript\n * var routeInstructionsInstance = new L.RouteInstructions({\n * size: [270, 268],\n * position: \"topleft\"\n * })\n * routeInstructionsInstance.addTo(map);\n * ```\n */\n/* jshint nomen:false */\ndefine(['display/map', 'unitFormatConverter/unitFormatConverter', '../../config/unit/unitTypes', 'services/utils'],\n function(L, unitFormatConverter, unitTypes, Utils) {\n 'use strict';\n\n var EVENTS = {\n InstructionClickedSelect: 'instructionClickedSelect',\n InstructionClickedDeselect: 'instructionClickedDeselect',\n InstructionHoverOn: 'instructionHoverOn',\n InstructionHoverOff: 'instructionHoverOff',\n InstructionGroupClickedCollapse: 'instructionGroupClickedCollapse',\n InstructionGroupClickedExpand: 'instructionGroupClickedExpand',\n InstructionGroupHoverOn: 'instructionGroupHoverOn',\n InstructionGroupHoverOff: 'instructionGroupHoverOff'\n },\n\n CSS_CLASS_NAME = 'leaflet-control-route-instructions',\n\n MANOUVERS_WITH_LEFT_DRIVING_SIDE_VERSIONS = ['MAKE_UTURN', 'TRY_MAKE_UTURN', 'ROUNDABOUT_RIGHT',\n 'ROUNDABOUT_LEFT', 'ROUNDABOUT_CROSS', 'ROUNDABOUT_BACK'\n ],\n\n iconsMap = {\n 'ARRIVE': 'icon-end-black',\n 'ARRIVE_LEFT': 'icon-end-black',\n 'ARRIVE_RIGHT': 'icon-end-black',\n 'DEPART': 'icon-start-black',\n 'STRAIGHT': 'icon-follow',\n 'KEEP_RIGHT': 'icon-keep_right',\n 'BEAR_RIGHT': 'icon-bear_right',\n 'TURN_RIGHT': 'icon-turn_right',\n 'SHARP_RIGHT': 'icon-sharp_right',\n 'KEEP_LEFT': 'icon-keep_left',\n 'BEAR_LEFT': 'icon-bear_left',\n 'TURN_LEFT': 'icon-turn_left',\n 'SHARP_LEFT': 'icon-sharp_left',\n 'MAKE_UTURN': 'icon-make_uturn',\n 'MAKE_UTURN_LEFT_DRIVING_SIDE': 'icon-make_uturn_left_driving_side',\n 'ENTER_MOTORWAY': 'icon-freeway',\n 'ENTER_FREEWAY': 'icon-freeway',\n 'ENTER_HIGHWAY': 'icon-freeway',\n 'TAKE_EXIT': 'icon-follow',\n 'MOTORWAY_EXIT_LEFT': 'icon-keep_left',\n 'MOTORWAY_EXIT_RIGHT': 'icon-keep_right',\n 'TAKE_FERRY': 'icon-ferry',\n 'ROUNDABOUT_CROSS': 'icon-roundabout_cross',\n 'ROUNDABOUT_CROSS_45': 'icon-roundabout_cross_45',\n 'ROUNDABOUT_RIGHT_135': 'icon-roundabout_right_135',\n 'ROUNDABOUT_CROSS_MINUS_45': 'icon-roundabout_cross_minus_45',\n 'ROUNDABOUT_LEFT_MINUS_135': 'icon-roundabout_left_minus_135',\n 'ROUNDABOUT_RIGHT': 'icon-roundabout_right',\n 'ROUNDABOUT_LEFT': 'icon-roundabout_left',\n 'ROUNDABOUT_BACK': 'icon-roundabout_back',\n 'TRY_MAKE_UTURN': 'make_uturn',\n 'TRY_MAKE_UTURN_LEFT_DRIVING_SIDE': 'icon-make_uturn_left_driving_side',\n 'ROUNDABOUT_CROSS_LEFT_DRIVING_SIDE': 'icon-roundabout_cross_left_driving_side',\n 'ROUNDABOUT_CROSS_45_LEFT_DRIVING_SIDE': 'icon-roundabout_cross_45_left_driving_side',\n 'ROUNDABOUT_RIGHT_135_LEFT_DRIVING_SIDE': 'icon-roundabout_right_135_left_driving_side',\n 'ROUNDABOUT_CROSS_MINUS_45_LEFT_DRIVING_SIDE': 'icon-roundabout_cross_minus_45_left_driving_side',\n 'ROUNDABOUT_LEFT_MINUS_135_LEFT_DRIVING_SIDE': 'icon-roundabout_left_minus_135_left_driving_side',\n 'ROUNDABOUT_RIGHT_LEFT_DRIVING_SIDE': 'icon-roundabout_right_left_driving_side',\n 'ROUNDABOUT_LEFT_LEFT_DRIVING_SIDE': 'icon-roundabout_left_left_driving_side',\n 'ROUNDABOUT_BACK_LEFT_DRIVING_SIDE': 'icon-roundabout_back_left_driving_side',\n 'FOLLOW': 'icon-follow',\n 'WAYPOINT_LEFT': 'icon-flag-black',\n 'WAYPOINT_RIGHT': 'icon-flag-black',\n 'WAYPOINT_REACHED': 'icon-flag-black'\n };\n\n /**\n * @ignore\n * @param {HTMLElement} control\n * @return {HTMLElement}\n */\n function createDOMElements(control) {\n var container = L.DomUtil.create('div', CSS_CLASS_NAME + ' leaflet-control');\n control.container = container;\n container.style.width = control.options.size[0] + 'px';\n container.style.maxHeight = control.options.size[1] + 'px';\n\n L.DomEvent.disableClickPropagation(container);\n L.DomEvent.disableScrollPropagation(container);\n\n container.style.visibility = 'hidden';\n\n return container;\n }\n\n /**\n * @ignore\n * @param {HTMLElement} control\n */\n function clearDOMElements(control) {\n control.container.innerHTML = '';\n }\n\n function createCollapseIconDiv(isInstructionGroupsCollapsed) {\n var collapseIconClass = isInstructionGroupsCollapsed ? 'icon-expand' : 'icon-collapse';\n return L.DomUtil.create('div', CSS_CLASS_NAME + '-collapse-icon ' + collapseIconClass);\n }\n\n function createGroupMessageDiv(instructionGroup) {\n var groupMessageDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-group-message');\n groupMessageDiv.innerHTML = instructionGroup.groupMessage;\n return groupMessageDiv;\n }\n\n function createSeparatorDiv(divToSeparate, instructionDistance, isImperialDistance, separatorCssClass,\n isInstructionGroup) {\n\n var separatorDistanceDiv,\n autoLengthSeparatorDiv,\n instructionSeparatorDiv,\n distanceDiv;\n if (instructionDistance === 0) {\n return;\n }\n separatorDistanceDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-separator-distance', divToSeparate);\n if (isInstructionGroup) {\n L.DomUtil.addClass(separatorDistanceDiv, CSS_CLASS_NAME + '-group-separator-distance');\n }\n autoLengthSeparatorDiv = L.DomUtil.create(\n 'div', CSS_CLASS_NAME + '-auto-length-separator', separatorDistanceDiv);\n instructionSeparatorDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-separator', autoLengthSeparatorDiv);\n L.DomUtil.addClass(instructionSeparatorDiv, separatorCssClass);\n distanceDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-distance', separatorDistanceDiv);\n distanceDiv.innerHTML = unitFormatConverter.formatDistance(instructionDistance, isImperialDistance);\n }\n\n function getIconPathKey(instruction) {\n var iconKey = instruction.maneuver;\n if (instruction.maneuver === 'ROUNDABOUT_CROSS') {\n if (instruction.turnAngleInDecimalDegrees >= 22 && instruction.turnAngleInDecimalDegrees <= 68) {\n iconKey += '_45';\n } else if (instruction.turnAngleInDecimalDegrees <= -22 &&\n instruction.turnAngleInDecimalDegrees >= -68) {\n iconKey += '_MINUS_45';\n }\n }\n if (instruction.maneuver === 'ROUNDABOUT_RIGHT' && instruction.turnAngleInDecimalDegrees >= 122 &&\n instruction.turnAngleInDecimalDegrees <= 158) {\n iconKey += '_135';\n }\n if (instruction.maneuver === 'ROUNDABOUT_LEFT' && instruction.turnAngleInDecimalDegrees >= -158 &&\n instruction.turnAngleInDecimalDegrees <= -122) {\n iconKey += '_MINUS_135';\n }\n if (instruction.drivingSide === 'LEFT' &&\n MANOUVERS_WITH_LEFT_DRIVING_SIDE_VERSIONS.indexOf(instruction.maneuver) !== -1) {\n iconKey += '_LEFT_DRIVING_SIDE';\n }\n return iconKey;\n }\n\n function createInstructionElement(instruction) {\n var messageDiv;\n var instructionElementDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-instruction-element');\n var messageWithIconDiv = L.DomUtil.create('div',\n CSS_CLASS_NAME + '-message-with-icon', instructionElementDiv);\n L.DomUtil.create('div', CSS_CLASS_NAME + '-icon ' +\n iconsMap[getIconPathKey(instruction)], messageWithIconDiv);\n messageDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-message', messageWithIconDiv);\n messageDiv.innerHTML = instruction.message;\n return instructionElementDiv;\n }\n\n function createEventObject(instructionPoints, instructionMessage) {\n var eventObject = {};\n if (instructionPoints.constructor.toString().indexOf('Array') > -1) {\n eventObject.points = instructionPoints;\n } else {\n eventObject.point = instructionPoints;\n }\n if (instructionMessage) {\n eventObject.message = instructionMessage;\n }\n\n return eventObject;\n }\n\n function toggleCssClasses(htmlElement, cssClassesArray) {\n cssClassesArray.forEach(function(className) {\n if (L.DomUtil.hasClass(htmlElement, className)) {\n L.DomUtil.removeClass(htmlElement, className);\n } else {\n L.DomUtil.addClass(htmlElement, className);\n }\n });\n }\n\n function deselectInstruction(container, selectedInstructionClass, control) {\n var selectedInstruction = container.getElementsByClassName(selectedInstructionClass)[0];\n if (selectedInstruction) {\n L.DomUtil.removeClass(selectedInstruction, selectedInstructionClass);\n control.fire(control.Events.InstructionClickedDeselect);\n }\n }\n\n function registerHandlersForInstruction(control, instructionElement, instruction) {\n L.DomEvent.on(instructionElement, 'mouseenter', function() {\n control.fire(control.Events.InstructionHoverOn,\n createEventObject(instruction.point, instruction.message));\n });\n L.DomEvent.on(instructionElement, 'mouseleave', function() {\n control.fire(control.Events.InstructionHoverOff);\n });\n L.DomEvent.on(instructionElement, 'click', function() {\n var selectedInstructionClass;\n control.container.focus();\n selectedInstructionClass = ['selected-instruction'];\n\n if (L.DomUtil.hasClass(instructionElement, selectedInstructionClass)) {\n control.fire(control.Events.InstructionClickedDeselect);\n } else {\n deselectInstruction(control.container, selectedInstructionClass, control);\n control.fire(\n control.Events.InstructionClickedSelect,\n createEventObject(instruction.point, instruction.message)\n );\n }\n\n toggleCssClasses(instructionElement, selectedInstructionClass);\n });\n }\n\n function createInstructions(control, divForInstructions, instructionList, instructionNextToGroup) {\n var nextInstructionOffset = 0;\n var instructionPoints = [];\n var instructionIndex,\n currentInstruction,\n nextInstruction,\n instructionElementDiv,\n separatorCssClassName,\n isImperialDistance = control._shouldUseImperialDistance();\n\n for (instructionIndex = 0; instructionIndex < instructionList.length; instructionIndex += 1) {\n currentInstruction = instructionList[instructionIndex];\n instructionPoints.push(currentInstruction.point);\n nextInstruction = instructionList[instructionIndex + 1];\n instructionElementDiv = createInstructionElement(currentInstruction);\n divForInstructions.appendChild(instructionElementDiv);\n separatorCssClassName = 'separator-between-instructions';\n\n if (nextInstruction !== undefined) {\n nextInstructionOffset = nextInstruction.routeOffsetInMeters;\n } else if (instructionNextToGroup) {\n nextInstructionOffset = instructionNextToGroup.routeOffsetInMeters;\n separatorCssClassName = 'separator-end-group';\n }\n\n createSeparatorDiv(instructionElementDiv,\n nextInstructionOffset - currentInstruction.routeOffsetInMeters,\n isImperialDistance, separatorCssClassName, false);\n registerHandlersForInstruction(control, instructionElementDiv, currentInstruction);\n }\n\n return instructionPoints;\n }\n\n function registerHandlersForGroup(params) {\n L.DomEvent.on(params.groupElementDiv, 'mouseenter', function() {\n params.control.fire(\n params.control.Events.InstructionGroupHoverOn,\n createEventObject(params.groupedInstructionPoints, params.groupMessage)\n );\n });\n L.DomEvent.on(params.groupElementDiv, 'mouseleave', function() {\n params.control.fire(params.control.Events.InstructionGroupHoverOff);\n });\n L.DomEvent.on(params.groupElementDiv, 'click', function() {\n var separator;\n params.control.container.focus();\n separator = params.groupElementDiv.getElementsByClassName(\n 'leaflet-control-route-instructions-separator'\n )[0];\n toggleCssClasses(separator, ['separator-between-instructions', 'separator-end-group']);\n toggleCssClasses(params.collapseIconDiv, ['icon-collapse', 'icon-expand']);\n\n if (params.groupedInstructionsDiv.style.display === 'none') {\n params.groupedInstructionsDiv.style.display = '';\n params.control.fire(\n params.control.Events.InstructionGroupClickedExpand,\n createEventObject(params.groupedInstructionPoints, null)\n );\n } else {\n params.groupedInstructionsDiv.style.display = 'none';\n params.control.fire(\n params.control.Events.InstructionGroupClickedCollapse,\n createEventObject(params.allInstructionsPoints, null)\n );\n }\n });\n }\n\n /**\n * @ignore\n * @param {HTMLElement} control\n * @param {Object} guidance\n */\n function createInstructionsWithGroups(control, guidance) {\n var container = control.container;\n var allInstructionsPoints = [];\n var instructionIndex,\n groupIndex,\n instructionGroup,\n groupElementDiv,\n groupedInstructionsDiv,\n groupMessageWithIconDiv,\n collapseIconDiv,\n groupMessageDiv,\n separatorCssClassName,\n instructionListForGroup,\n groupedInstructionPoints,\n isImperialDistance = control._shouldUseImperialDistance();\n\n for (instructionIndex = 0; instructionIndex < guidance.instructions.length; instructionIndex += 1) {\n allInstructionsPoints.push(guidance.instructions[instructionIndex].point);\n }\n\n for (groupIndex = 0; groupIndex < guidance.instructionGroups.length; groupIndex += 1) {\n instructionGroup = guidance.instructionGroups[groupIndex];\n groupElementDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-group-element', container);\n groupedInstructionsDiv = L.DomUtil.create('div', CSS_CLASS_NAME + '-grouped-instructions', container);\n\n groupMessageWithIconDiv = L.DomUtil.create(\n 'div', CSS_CLASS_NAME + '-group-message-with-icon', groupElementDiv);\n collapseIconDiv = createCollapseIconDiv(control.options.instructionGroupsCollapsed);\n groupMessageDiv = createGroupMessageDiv(instructionGroup);\n groupMessageWithIconDiv.appendChild(collapseIconDiv);\n groupMessageWithIconDiv.appendChild(groupMessageDiv);\n\n separatorCssClassName = control.options.instructionGroupsCollapsed ?\n 'separator-end-group' : 'separator-between-instructions';\n createSeparatorDiv(groupElementDiv, instructionGroup.groupLengthInMeters, isImperialDistance,\n separatorCssClassName, true);\n\n instructionListForGroup = guidance.instructions.slice(instructionGroup.firstInstructionIndex,\n instructionGroup.lastInstructionIndex + 1);\n groupedInstructionPoints = createInstructions(control, groupedInstructionsDiv, instructionListForGroup,\n guidance.instructions[instructionGroup.lastInstructionIndex + 1]);\n\n registerHandlersForGroup({\n control: control,\n groupElementDiv: groupElementDiv,\n groupMessage: instructionGroup.groupMessage,\n groupedInstructionPoints: groupedInstructionPoints,\n collapseIconDiv: collapseIconDiv,\n groupedInstructionsDiv: groupedInstructionsDiv,\n allInstructionsPoints: allInstructionsPoints\n });\n\n if (control.options.instructionGroupsCollapsed) {\n groupedInstructionsDiv.style.display = 'none';\n }\n }\n }\n\n /**\n * @ignore\n * @param {HTMLElement} control\n */\n function updateDOMElements(control) {\n clearDOMElements(control);\n if (control.options.showInstructionGroups) {\n createInstructionsWithGroups(control, control.guidanceData);\n } else {\n createInstructions(control, control.container, control.guidanceData.instructions, null);\n }\n }\n\n function handleUnitChange(event) {\n this.options.imperialDistance = event.unit === 'imperial';\n this._redraw(true);\n }\n\n L.RouteInstructions = L.Control.extend({\n\n includes: L.Evented.prototype,\n\n statics: {\n Events: EVENTS\n },\n\n options: {\n size: [320, 320],\n position: 'topleft',\n instructionGroupsCollapsed: false,\n showInstructionGroups: true,\n imperialDistance: null\n },\n\n /**\n * Leaflet init method executed when adding control to map.\n *\n * Options will be stored inside control.\n *\n * @ignore\n * @method initialize\n * @param {Object} [options] Options to setup control.\n */\n initialize: function(options) {\n L.Util.setOptions(this, options);\n },\n\n /**\n * Leaflet method executed when adding control to map.\n * Map will be stored inside control.\n *\n * @ignore\n * @method onAdd\n * @param {L.Map} map\n * @return {HTMLElement} The main HTML element containing the widget.\n */\n onAdd: function(map) {\n this.unitService = map.getUnitService();\n this.unitService.on(L.UnitService.Events.UNIT_CHANGED, handleUnitChange, this);\n return createDOMElements(this);\n },\n\n onRemove: function() {\n this.unitService.off(L.UnitService.Events.UNIT_CHANGED, handleUnitChange, this);\n },\n\n /**\n * Shows route instructions.\n *\n * By default the instructions will be hidden.\n * Use this method to show the control after data is ready.\n *\n * @method show\n */\n show: function() {\n if (this.guidanceData) {\n this.container.style.visibility = '';\n }\n },\n\n /**\n * Hides the route instructions.\n *\n * By default instructions will be hidden.\n *\n * @method hide\n */\n hide: function() {\n this.container.style.visibility = 'hidden';\n },\n\n /**\n * @ignore\n * First check the configuration for this instance and then the global configuration.\n * The instance configuration has priority.\n *\n * @return {Boolean}\n */\n _shouldUseImperialDistance: function() {\n if (typeof this.options.imperialDistance === 'boolean') {\n return this.options.imperialDistance;\n }\n if (typeof this.isImperialDistance === 'boolean') {\n return this.isImperialDistance;\n }\n return this.unitService.getCurrentUnit().getLabel() === unitTypes.imperial;\n },\n\n _redraw: function() {\n if (this.guidanceData) {\n updateDOMElements(this);\n this.show();\n } else {\n this.hide();\n }\n },\n\n /**\n * Display the route instructions or update the already displayed content.\n *\n * This method should be called to update the instructions displayed after each route calculation.\n *\n * @method updateGuidanceData\n * @param {Object} guidanceData The routing properties object containing instruction groups\n * and instructions.\n * @param {Boolean} [imperial] Display distance using imperial units\n */\n updateGuidanceData: function(guidanceData, imperial) {\n this.guidanceData = guidanceData || this.guidanceData;\n this.isImperialDistance = imperial;\n this._redraw();\n },\n\n /**\n * Method to show instructions with groups if there are any.\n * @method showInstructionGroups\n */\n showInstructionGroups: function() {\n if (this.guidanceData && !this.options.showInstructionGroups) {\n this.options.showInstructionGroups = true;\n updateDOMElements(this);\n }\n },\n\n /**\n * Method to hide instructions groups.\n *\n * Use this method to disable groups. Only instructions will be visible.\n * @method hideInstructionGroups\n */\n hideInstructionGroups: function() {\n if (this.guidanceData && this.options.showInstructionGroups) {\n this.options.showInstructionGroups = false;\n updateDOMElements(this);\n }\n },\n\n /**\n * Event that is fired when instruction is clicked and is not selected.\n *\n * In this case clicked instruction will\n * be marked as selected (selected-instruction css class will be added).\n * If any other instruction is selected,\n * it will be deselect.\n *\n * @event InstructionClickedSelect\n * @param {Object} point Object of point that represents latitude and longitude of instruction location\n * @param {String} message Instruction message\n * @param {String} [type=\"instructionClickedDeselect\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.RouteInstructions())).addTo(map);\n * widget.on(L.RouteInstructions.Events.InstructionClickedSelect, function(event) {\n * console.log(event);\n * });\n * ```\n */\n /**\n * Event that is fired when instruction is clicked and is selected. In this case clicked instruction will\n * be deselect (selected-instruction css class will be removed).\n *\n * @event InstructionClickedDeselect\n * @param {String} [type=\"instructionClickedDeselect\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.RouteInstructions())).addTo(map);\n * widget.on(L.RouteInstructions.Events.InstructionClickedDeselect, function(event) {\n * console.log(event);\n * });\n * ```\n */\n /**\n * Event that is fired when cursor is moving into instruction.\n *\n * @event InstructionHoverOn\n * @param {Object} point Object of point that represents latitude and longitude of instruction location\n * @param {String} message Instruction message\n * @param {String} [type=\"instructionHoverOn\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.RouteInstructions())).addTo(map);\n * widget.on(L.RouteInstructions.Events.InstructionHoverOn, function(event) {\n * console.log(event);\n * });\n * ```\n */\n /**\n * Event that is fired when cursor is moving out of instruction.\n *\n * @event InstructionHoverOff\n * @param {String} [type=\"instructionHoverOff\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.RouteInstructions())).addTo(map);\n * widget.on(L.RouteInstructions.Events.InstructionHoverOff, function(event) {\n * console.log(event);\n * });\n * ```\n */\n /**\n * Event that is fired when group of instructions is clicking and related instructions are collapsing.\n *\n * @event InstructionGroupClickedCollapse\n * @param {Object} points Object with points that represents latitude and longitude of all instruction\n * locations in route\n * @param {String} [type=\"instructionGroupClickedCollapse\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.RouteInstructions())).addTo(map);\n * widget.on(L.RouteInstructions.Events.InstructionGroupClickedCollapse, function(event) {\n * console.log(event);\n * });\n * ```\n */\n /**\n * Event that is fired when group of instructions is clicking and related instructions are expanding.\n *\n * @event InstructionGroupClickedExpand\n * @param {Object} points Object with points that represents latitude and longitude of all instruction\n * locations in group\n * @param {String} [type=\"instructionGroupClickedExpand\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.RouteInstructions())).addTo(map);\n * widget.on(L.RouteInstructions.Events.InstructionGroupClickedExpand, function(event) {\n * console.log(event);\n * });\n * ```\n */\n /**\n * Event that is fired when cursor is moving into group of instructions.\n *\n * @event InstructionGroupHoverOn\n * @param {Array} points Array of objects that contains points (latitude and longitude) of all instructions\n * from this group\n * @param {String} message Group message\n * @param {String} [type=\"instructionGroupHoverOn\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.RouteInstructions())).addTo(map);\n * widget.on(L.RouteInstructions.Events.InstructionGroupHoverOn, function(event) {\n * console.log(event);\n * });\n * ```\n */\n /**\n * Event that is fired when cursor is moving out of group of instructions.\n *\n * @event InstructionGroupHoverOff\n * @param {String} [type=\"instructionGroupHoverOff\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var widget = (new L.RouteInstructions())).addTo(map);\n * widget.on(L.RouteInstructions.Events.InstructionGroupHoverOff, function(event) {\n * console.log(event);\n * });\n * ```\n */\n Events: EVENTS\n });\n\n return function(options) {\n var routeInstructions = new L.RouteInstructions(options);\n Utils.addDeprecatedProperty(routeInstructions, 'Event', 'Events');\n\n return routeInstructions;\n };\n });\n\n\n\n// WEBPACK FOOTER //\n// ./widgets/controls/routeInstructions.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * This module helps you to create a unit measurement selector.\n *\n * @class UnitSelector\n * @static\n * @namespace L\n * @extends Object\n * @module Widgets\n */\ndefine(['display/map'], function(L) {\n 'use strict';\n function onPropertyChange(e) {\n var value = e.target.options[e.target.selectedIndex].value;\n this.unitService.setCurrentUnit(value);\n }\n\n function addOptions(select, values) {\n var option;\n values.forEach(function(value) {\n option = document.createElement('option');\n option.text = value.getLabel();\n option.value = value.getLabel();\n select.add(option);\n });\n }\n\n function setCurrentUnit(select) {\n var i;\n var currentUnit = select.unitService.getCurrentUnit();\n var unitVal = currentUnit.getLabel();\n for (i = 0; i < select.options.length; ++i) {\n if (select.options[i].value === unitVal) {\n select.selectedIndex = i;\n }\n }\n }\n\n return {\n /**\n * Returns a {{#crossLink \"HTMLSelectElement\"}}{{/crossLink}} filled with the supported measurement units.\n *\n * The element has a function bound to its onchange event, which updates the units configuration\n * of the {{#crossLink \"UnitService\"}}{{/crossLink}} instance given as argument.\n *\n * @method getHtmlElement\n * @param {UnitService} unitService Unit service instance which will be bound to the generated dropdown.\n * That means, that if you change value in this select, bound unitService will be updated.\n * @return {HTMLSelectElement}\n */\n getHtmlElement: function(unitService) {\n var select;\n if (!unitService) {\n console.error('Unit service not passed to unitSelector!');\n return undefined;\n }\n select = document.createElement('select');\n select.unitService = unitService;\n select.className = 'tomtom-unit-selector';\n addOptions(select, L.UnitService.getSupportedUnits());\n setCurrentUnit(select);\n select.onchange = onPropertyChange;\n return select;\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./widgets/controls/unitSelector.js","define(['display/map'], function(L) {\n function onPropertyChange(e) {\n this.geopolViewService.setCurrentGeopolView(e.target.value);\n }\n\n function addOptions(select, values) {\n var option;\n values.forEach(function(value) {\n option = document.createElement('option');\n option.text = value.getLabel();\n option.value = value.getCode();\n select.add(option);\n });\n }\n\n function setCurrentGeopolView(select) {\n var i;\n var geopolViewVal = select.geopolViewService.current.code;\n for (i = 0; i < select.options.length; ++i) {\n if (select.options[i].value === geopolViewVal) {\n select.selectedIndex = i;\n }\n }\n }\n /**\n * A module, which helps you to create language selector\n * @module Widgets\n * @class geopolViewSelector\n */\n return {\n /**\n * Options are set for supported geopolViews, onchange event has a bound function,\n * which updates global geopolView for the system (which is stored in GeopolViewService.\n * Refer to https://developer.mozilla.org/en/docs/Web/API/HTMLSelectElement for additional information.\n * @method getHtmlElement\n * @param {GeopolViewService} [geopolViewService] GeopolViewService which will be bound to this select element.\n * That means, that if you change value in this select, bound geopolViewService will be updated. You can provide\n * globalGeopolViewService or geopolViewServices which are bound to map instances.\n * @param {\"search\"|\"maps\"|\"geopolViewSelector\"} serviceType\n * @param {\"raster\"|\"vector\"} [subType] Used to specify the subType of a service,\n * @returns {HTMLSelectElement}\n */\n getHtmlElement: function(geopolViewService, serviceType, subType) {\n var select;\n if (!geopolViewService) {\n console.error('GeopolViewService not passed to geopolViewSelector!');\n return undefined;\n }\n select = document.createElement('select');\n select.geopolViewService = geopolViewService;\n select.className = 'tomtom-geopol-view-selector';\n addOptions(select, L.GeopolViewService.getSupportedViews(serviceType, subType));\n setCurrentGeopolView(select);\n select.addEventListener('change', onPropertyChange);\n return select;\n }\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./widgets/controls/geopolViewSelector.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * The MarkersLayer allows you to display search service results on a map. It is based on Leaflet's\n * [marker cluster plugin](https://github.com/Leaflet/Leaflet.markercluster).\n *\n * The default plugin functionality is enhanced for handling TomTom services responses and\n * {{#crossLink \"L.SearchBox\"}}{{/crossLink}} widget events.\n *\n * @example\n * ```javascript\n * tomtom.key(\"\");\n * tomtom.searchKey(\"\");\n * \n * var map = tomtom.map(\"map\");\n * var searchBoxInstance = (new L.SearchBox()).addTo(map);\n * var markersLayer = (new L.MarkersLayer()).addTo(map);\n *\n * searchBoxInstance.on(L.SearchBox.Events.ResultsFound, function (results) {\n * markersLayer.clearLayers();\n * markersLayer.add(results);\n * });\n * ```\n *\n * @deprecated Please use the\n * TomTomMarkersLayer class instead.\n * @class MarkersLayer\n * @namespace L\n * @module Widgets\n * @extends L.MarkerClusterGroup\n * @constructor\n * @param {Object} [options]\n */\n/* jshint nomen:false */\ndefine(['display/map', 'leaflet.markercluster'], function(L) {\n 'use strict';\n\n function isArray(array) {\n return array && array.constructor.toString().indexOf('Array') > -1;\n }\n\n function hasDataArray(points) {\n return typeof points === 'object' && isArray(points.data);\n }\n\n function convertPoints(points) {\n if (hasDataArray(points)) {\n return points.data;\n }\n if (isArray(points)) {\n return points;\n }\n return [points];\n }\n\n function getFreeFormAddress(object) {\n return object.address ? object.address.freeformAddress : null;\n }\n\n function getTextContent(object) {\n return object.element ? object.element.textContent : null;\n }\n\n function oneOf(first, second, third) {\n return first || second || third;\n }\n\n function getPoiName(object) {\n if (object.poi && object.poi.name) {\n return object.poi.name + ' ';\n }\n return '';\n }\n\n function getText(object) {\n var freeformAddress = getFreeFormAddress(object),\n textContent = getTextContent(object),\n text = oneOf(object.text, freeformAddress, textContent),\n poiName = getPoiName(object);\n return poiName + text;\n }\n\n function hadDataPosition(object) {\n return object.data && object.data.position;\n }\n\n function getObjectType(object) {\n return object.data ? object.data.type : object.type || 'unknown';\n }\n\n function getPointGeometry(object) {\n var result = {}, poiObject;\n if (isArray(object.point)) {\n result.position = {lat: object.point[0], lng: object.point[1]};\n } else if (object.position) {\n result.position = {lat: object.position.lat, lng: object.position.lon};\n } else if (hadDataPosition(object)) {\n result.position = {lat: object.data.position.lat, lng: object.data.position.lon};\n }\n result.type = getObjectType(object.data || object);\n\n poiObject = (object.data || object).poi;\n if (poiObject) {\n if (poiObject.categories) {\n result.poiCategories = poiObject.categories;\n }\n\n if (poiObject.classifications) {\n result.poiClassifications = poiObject.classifications;\n }\n }\n\n return result;\n }\n\n function convertPoint(object) {\n var result, text;\n if (!object) {\n return {};\n }\n result = getPointGeometry(object);\n text = getText(object);\n\n if (text) {\n result.text = text;\n }\n return result;\n }\n\n function isEachIconAFunction(options) {\n return options && options.eachIcon && typeof options.eachIcon === 'function';\n }\n\n function createMarker(object, options) {\n var point = convertPoint(object);\n var marker;\n if (!point || !point.position) {\n return null;\n }\n if (isEachIconAFunction(options)) {\n options.icon = options.eachIcon(point);\n }\n marker = L.marker(point.position, options);\n if (point.text) {\n marker.bindPopup(point.text);\n }\n return marker;\n }\n\n L.MarkersLayer = L.MarkerClusterGroup.extend({\n _onMapUnload: function() {\n this._mapUnloads = true;\n },\n onAdd: function(map) {\n L.MarkerClusterGroup.prototype.onAdd.apply(this, arguments);\n map.on('unload', this._onMapUnload, this);\n },\n onRemove: function(map) {\n L.MarkerClusterGroup.prototype.onRemove.apply(this, arguments);\n map.off('unload', this._onMapUnload, this);\n },\n /**\n * Clear all the markers.\n *\n * It is equivalent of {{#crossLink \"L.LayerGroup\"}}{{/crossLink}}'s clearLayers method.\n *\n * @method remove\n * @chainable\n * @return {L.MarkersLayer}\n */\n remove: function() {\n if (this._mapUnloads) {\n return L.MarkerClusterGroup.prototype.remove.apply(this, arguments);\n }\n this.clearLayers();\n return this;\n },\n /**\n * Method used to add new markers based on the TomTom search service response.\n *\n * [Further reference](http://leafletjs.com/reference-${leaflet.version}.html#marker-options)\n *\n * @method add\n * @chainable\n * @param {Object} points The response from search service or event from searchBox widget.\n * @param {Object} [options] The options to be used when creating a marker.\n * @param {Function} [options.eachIcon] The function called to create each icon. It has one argument which is\n * the point - object containing text, position, type,\n * poiCategories (deprecated, use poiClassifications) if the type is _poi_,\n * and poiClassifications if the type is _poi_\n * @return {L.MarkersLayer}\n */\n add: function(points, options) {\n var data = convertPoints(points),\n i,\n marker;\n for (i = 0; i < data.length; i += 1) {\n marker = createMarker(data[i], options);\n if (marker) {\n this.addLayer(marker);\n }\n }\n return this;\n }\n });\n\n return function(options) {\n return new L.MarkersLayer(options);\n };\n})\n;\n\n\n\n// WEBPACK FOOTER //\n// ./widgets/views/markers.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * The RouteOnMap view allows you to display a route on the map.\n * \n * This widget requires route data to work correcly. For more information please refer to our \n * \n * Routing example.\n *\n * @class RouteOnMap\n * @namespace L\n * @extends L.LayerGroup\n * @module Widgets\n * @uses L.Evented\n * @constructor\n * @param {Object} [options] Options to be passed to the routing view\n * @param {Object} [options.generalMarker] General marker options that applies on all markers\n * @param {L.Icon} [options.generalMarker.icon=default] Default icon for every marker\n * @param {Boolean} [options.generalMarker.draggable=false] Determines default drag behaviour for every marker\n * @param {Object} [options.startMarker] Marker options for starting marker\n * @param {L.Icon} [options.startMarker.icon=default] Icon for start marker\n * @param {Boolean} [options.startMarker.draggable=false] Determines whether start marker should be draggable\n * @param {Object} [options.waypointMarker] Marker options for markers between start and end points\n * @param {L.Icon} [options.waypointMarker.icon=default] Icon for markers between start and end points\n * @param {Boolean} [options.waypointMarker.draggable=false] Determines whether start marker should be draggable\n * @param {Object} [options.endMarker] Marker options for end marker\n * @param {L.Icon} [options.endMarker.icon=default] Icon for end marker\n * @param {Boolean} [options.endMarker.draggable=false] Determines whether end marker should be draggable\n * @param {\"topleft\"|\"topright\"|\"bottomleft\"|\"bottomright\"} [options.position=\"topleft\"]\n * @param {Object} [options.routeStyle={color: '#00d7ff', opacity: 0.8}] A style object used for drawing the\n * polyline route. All the L.Path\n * options are accepted.\n * @param {Object[]} [options.alternativeStyles=[{color: '#ff00d2', opacity: 0.8}, {color: '#b922ff',opacity: 0.8}]]\n * If the option to display alternatives is passed to the service options then there is a need to pass array of\n * L.Path style's options for each\n * alternative route\n * @param {Number} [options.routingDelay=1000] Determines the time in milliseconds that within routing service will\n * be called. Used when user is dragging a marker\n * @param {Function} [options.onEachFeature] A function that will be called for each feature, it takes feature\n * and layer as the attributes. Can be used in example to bind popup to the route\n * @param {Object} [options.serviceOptions] Options to be passed to the routing service. For details check\n * routingService documentation\n *\n * @example\n * ```javascript\n * var routeOnMapView = new L.RouteOnMap({\n * generalMarker: {\n * draggable: true\n * },\n * startMarker: {\n * background: {\n * iconSize: [30, 36],\n * iconAnchor: [15, 36],\n * icon: 'marker'\n * },\n * icon: {\n * iconSize: [30, 30],\n * iconAnchor: [0, 0],\n * icon: 'flag-white'\n * },\n * },\n * waypointMarker: {\n * icon: L.icon({\n * iconUrl: 'waypoint.png',\n * iconSize: [30, 30],\n * iconAnchor: [15, 15]\n * })\n * },\n * endMarker: {\n * icon: L.icon({\n * iconUrl: 'end.png',\n * iconSize: [30, 30],\n * iconAnchor: [15, 15]\n * })\n * },\n * routeStyle: {\n * color: \"#00d7ff\",\n * opacity: 0.8\n * }\n * });\n * routeOnMapView.addTo(map);\n * ```\n */\n/* jshint nomen:false */\ndefine(['display/map', 'services/routing/routing', 'services/reverseGeocode/reverseGeocode',\n 'services/converters', 'services/utils'\n],\nfunction(L, routingService, reverseGeocodeService, converters, utils) {\n 'use strict';\n\n var EVENTS = {\n MarkerDragEnd: 'markerDragEnd',\n Draw: 'draw',\n RouteChanged: 'routeChanged',\n RouteNotFound: 'routeNotFound'\n };\n\n /**\n * @param {String} [type]\n * @return {Object}\n */\n function createMarkerIcon(type) {\n var generalMarkerIcon = {\n background: {\n iconSize: L.Browser.retina ? [34, 34] : [20, 20],\n iconAnchor: L.Browser.retina ? [17, 17] : [10, 10],\n icon: 'icon-shield'\n },\n icon: {\n iconSize: L.Browser.retina ? [30, 30] : [18, 18],\n iconAnchor: L.Browser.retina ? [-2, -2] : [-1, -1],\n icon: 'icon-flag-white'\n }\n };\n if (type === 'start') {\n generalMarkerIcon.icon.icon = 'icon-start-white';\n } else if (type === 'end') {\n generalMarkerIcon.icon.icon = 'icon-end-white';\n }\n return generalMarkerIcon;\n }\n\n function getRouteStyle(style) {\n var styleIndex = 0;\n return function() {\n styleIndex += 1;\n return style[styleIndex % style.length] || style;\n };\n }\n\n function convertPoints(points) {\n var point,\n i;\n for (i = 0; i < points.length; i++) {\n point = points[i];\n points[i] = point ? L.latLng(converters.point(point).split(',')) : undefined;\n }\n return points;\n }\n\n function getIconOptions(points, index, options) {\n var iconOptions = utils.clone(options.generalMarker);\n if (index === 0) {\n utils.addFields(options.startMarker, iconOptions);\n iconOptions.icon = options.startMarker.icon;\n } else if (index === points.length - 1) {\n utils.addFields(options.endMarker, iconOptions);\n iconOptions.icon = options.endMarker.icon;\n } else {\n utils.addFields(options.waypointMarker, iconOptions);\n iconOptions.icon = options.waypointMarker.icon;\n }\n if (options.generalMarker.zIndexOffset) {\n iconOptions.zIndexOffset = options.generalMarker.zIndexOffset;\n }\n return iconOptions;\n }\n\n function onDragListener(points, e, markers, callback) {\n var index = markers.indexOf(e.target);\n points[index] = e.target.getLatLng();\n callback.call(this, points, index);\n }\n\n function getAllFilledLocations(points) {\n var filledLocations = [],\n i;\n for (i = 0; i < points.length; i++) {\n if (points[i] !== undefined) {\n filledLocations.push(points[i]);\n }\n }\n return filledLocations;\n }\n\n function isAtLeastPairOfPoints(points) {\n return points && points.length && points.length > 1;\n }\n\n L.RouteOnMap = L.LayerGroup.extend({\n includes: L.Evented.prototype,\n statics: {\n Events: EVENTS\n },\n options: {\n generalMarker: {\n icon: L.svgIcon(createMarkerIcon()),\n draggable: false\n },\n startMarker: {\n icon: L.svgIcon(createMarkerIcon('start')),\n draggable: false\n },\n waypointMarker: {\n icon: L.svgIcon(createMarkerIcon('waypoint')),\n draggable: false\n },\n endMarker: {\n icon: L.svgIcon(createMarkerIcon('end')),\n draggable: false\n },\n position: 'topleft',\n routeStyle: {\n color: '#00d7ff',\n opacity: 0.8\n },\n alternativeStyles: [\n {\n color: '#ff00d2',\n opacity: 0.8\n },\n {\n color: '#b922ff',\n opacity: 0.8\n }\n ],\n routingDelay: 1000,\n serviceOptions: {}\n },\n\n initialize: function(options) {\n L.Util.setOptions(this, options);\n },\n\n /**\n * Method used to create markers on a map, basing on given points.\n *\n * @method createMarkers\n * @param {Object[]} points List of points to create markers onto\n */\n createMarkers: function(points) {\n var that = this,\n markers = [],\n iconOptions,\n marker,\n point,\n i;\n\n var dragEndHandler = function(event) {\n if (!isAtLeastPairOfPoints(points)) {\n return;\n }\n onDragListener.call(that, points, event, markers, that.onDragEnd);\n };\n\n var dragHandler = function(event) {\n if (!isAtLeastPairOfPoints(points)) {\n return;\n }\n onDragListener.call(that, points, event, markers, that.onDrag);\n };\n\n for (i = 0; i < points.length; i++) {\n point = points[i];\n\n if (point !== undefined) {\n iconOptions = getIconOptions(points, i, this.options);\n marker = L.marker(point, iconOptions);\n markers.push(marker);\n\n if (iconOptions.draggable) {\n marker.on('dragend', dragEndHandler);\n marker.on('drag', dragHandler);\n }\n }\n }\n\n delete this.markers;\n if (markers.length > 0) {\n this.markers = L.featureGroup(markers);\n this.markers.addTo(this._map);\n }\n },\n\n /**\n * Draws a route on the map between given points.\n *\n * This method executes TomTom Routing Service to get a route.\n * If a route is found, it will draws it on the map. If not, a proper notification will be show.\n *\n * @method createRoute\n * @param {String[]|String} points List of points to create a route between.\n * The format expected is:\n * - [\"52.37245,4.89406\", \"51.37245,5.89406\"]\n * - \"52.37245,4.89406:51.37245,5.89406\"\n *\n * Read the Routing Service documentation to get more information about this property format options.\n */\n createRoute: function(points) {\n var that = this;\n this.options.serviceOptions.locations = points;\n routingService(this.options.serviceOptions).go().then(function(routeGeoJson) {\n if (routeGeoJson.features.length > 0) {\n that.drawRouteWithGeoJson(routeGeoJson);\n } else {\n that.clearRoute();\n L.messageBox({\n closeAfter: 1500\n }).openOn(that._map)\n .setContent('Could not find a route.
You might trying to route between continents.');\n }\n }).catch(function(reason) {\n that.fire(that.Events.RouteNotFound, reason);\n });\n },\n\n /**\n * Method executed when the user drag a marker.\n *\n * Allows to look for routes while dragging a marker and within delay\n * equal to the value passed in the option `routingDelay`.\n *\n * @method onDrag\n * @param {String[]|String} points List of points to create a route within.\n * This value will be passed to {{#crossLink \"L.RouteOnMap/createRoute:method\"}}{{/crossLink}}\n * for create the new route.\n */\n onDrag: function(points) {\n var that = this;\n if (this.recalculateRoute === true) {\n setTimeout(function() {\n that.clearRoute();\n that.createRoute(points);\n that.recalculateRoute = true;\n }, this.options.routingDelay);\n this.recalculateRoute = false;\n }\n },\n\n /**\n * Method executed when the user drops a marker (equal to dragEnd event).\n *\n * Redraws route according to given points\n * and executes TomTom Reverse Geocode Service to get human-readable location when marker was dropped. That\n * fires the {{#crossLink \"L.RouteOnMap/L.RouteOnMap.Events.MarkerDragEnd:event\"}}{{/crossLink}} event with\n * service's call result and index of a marker.\n *\n * @method onDragEnd\n * @param {String[]|String} points List of points.\n * The expected format is:\n * - [\"52.37245,4.89406\", \"51.37245,5.89406\"]\n * - \"52.37245,4.89406:51.37245,5.89406\"\n * @param {Number} index Index of the marker that was dropped\n */\n onDragEnd: function(points, index) {\n var that = this;\n this.clearRoute();\n this.createRoute(points);\n this.once(this.Events.RouteChanged, this.fitMapBoundsToRoute, this);\n\n reverseGeocodeService().position(points[index]).go().then(function(result) {\n that.fire(that.Events.MarkerDragEnd, {\n object: result,\n markerIndex: index\n });\n });\n },\n\n /**\n * Method that removes all markers.\n *\n * @method clearMarkers\n */\n clearMarkers: function() {\n if (this.markers) {\n this.markers.clearLayers();\n }\n this.markers = undefined;\n },\n\n /**\n * Method that clears shown route.\n *\n * @method clearMarkers\n */\n clearRoute: function() {\n if (this.routeOnMapLayer) {\n this._map.removeLayer(this.routeOnMapLayer);\n }\n this.routeOnMapLayer = undefined;\n },\n\n /**\n * Method that fits map to the drawn route.\n *\n * @method fitMapBoundsToRoute\n */\n fitMapBoundsToRoute: function() {\n var areaToBoundTo = this.routeOnMapLayer || this.markers;\n if (areaToBoundTo) {\n this._map.fitBounds(areaToBoundTo.getBounds(), {\n padding: [5, 5]\n });\n }\n },\n\n /**\n * Method that draws a route basing on a passed geoJson. Fires the\n * {{#crossLink \"L.RouteOnMap/L.RouteOnMap.Events.RouteChanged:event\"}}{{/crossLink}} event.\n *\n * @method drawRouteWithGeoJson\n * @param {Object} geoJson Represents geoJson data of a route\n */\n drawRouteWithGeoJson: function(geoJson) {\n this.clearRoute();\n this.routeOnMapLayer = L.geoJson(geoJson, {\n onEachFeature: this.options.onEachFeature,\n style: getRouteStyle(this.options.serviceOptions.maxAlternatives > 0 ?\n this.options.alternativeStyles.concat([this.options.routeStyle]) : this.options.routeStyle)\n });\n this._map.addLayer(this.routeOnMapLayer);\n this.fire(this.Events.RouteChanged, {\n object: geoJson.features[0].properties.summary,\n instructions: geoJson.features[0].properties.guidance,\n geoJson: geoJson\n });\n },\n\n /**\n * Method that takes care of redrawing markers and a route.\n *\n * @method drawRoute\n * @param {String[]|String} points List of points to draw a route between.\n * The format expected is:\n * - [\"52.37245,4.89406\", \"51.37245,5.89406\"]\n * - \"52.37245,4.89406:51.37245,5.89406\"\n */\n drawRoute: function(points) {\n this.clear();\n this.recalculateRoute = true;\n this.createMarkers(points);\n\n if (points.length >= 2) {\n this.createRoute(points);\n }\n },\n\n /**\n * The method to draw a route between two or more points.\n *\n * @method draw\n * @param {Object[]} points Array of geographical locations that between route will be drawn. There are\n * multiple formats supported (see more at e.g. _Search_ page in _center_ method). This method also\n * fires the {{#crossLink \"L.RouteOnMap/L.RouteOnMap.Events.Draw:event\"}}{{/crossLink}} event that\n * announces that route is drawn.\n * @example\n * ```javascript\n * var startPoint = {lat: 49.29917, lon: 19.94902};\n * var waypoint = {lat: 42.25917, lon: 19.98902};\n * var endPoint = {lat: 52.23498, lon: 21.00849};\n * var points = [startPoint, waypoint, endPoint];\n * var routeOnMapView = (new L.RouteOnMap()).addTo(map);\n * routeOnMapView.draw(points);\n * ```\n */\n draw: function(points) {\n points = convertPoints(points);\n points = getAllFilledLocations(points);\n this.drawRoute(points);\n this.fitMapBoundsToRoute();\n this.once(this.Events.RouteChanged, this.fitMapBoundsToRoute, this);\n this.fire(this.Events.Draw, {});\n },\n\n /**\n * The method to clear a route and markers.\n *\n * @method clear\n * @example\n * ```javascript\n * var routeOnMapView = (new L.RouteOnMap(optionsForRouteOnMapView)).addTo(map);\n * routeOnMapView.clear();\n * ```\n */\n clear: function() {\n this.clearMarkers();\n this.clearRoute();\n },\n\n /**\n * Event that is fired after dropping the marker. Contains information about marker's position.\n *\n * @event MarkerDragEnd\n * @param {Object} object Information of dropped marker's position (got from reverse geocode service)\n * @param {Number} markerIndex Index of the marker on a map\n * @param {String} [type=\"markerDragEnd\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var routeOnMapView = routeOnMap().addTo(map);\n * routeOnMapView.on(L.RouteOnMap.Events.MarkerDragEnd, function(eventObject) {\n * console.log(eventObject);\n * });\n * ```\n */\n /**\n * Event that is fired after drawing a route on a map.\n *\n * @event Draw\n * @param {String} [type=\"draw\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var routeOnMapView = (new L.RouteOnMap()).addTo(map);\n * routeOnMapView.on(L.RouteOnMap.Events.Draw, function(eventObject) {\n * console.log(eventObject);\n * });\n * ```\n */\n /**\n * Event that is fired when route was changed.\n *\n * @event RouteChanged\n * @param {Object} object Route summary that contains arrival time, departure time, route length, traffic\n * and travel time.\n * @param {String} [type=\"routeChanged\"] Event's name\n * @param {Element} target Event's target\n *\n * @example\n * ```javascript\n * var routeOnMapView = (new L.RouteOnMap()).addTo(map);\n * routeOnMapView.on(L.RouteOnMap.Events.RouteChanged, function(eventObject) {\n * console.log(eventObject);\n * });\n * ```\n */\n Events: EVENTS\n });\n\n return function(options) {\n var routeOnMap = new L.RouteOnMap(options);\n utils.addDeprecatedProperty(routeOnMap, 'Event', 'Events');\n return routeOnMap;\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./widgets/views/routeOnMap.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * Widget to display additional route information in a panel over the map.\n *\n * The panel contains an icon, distance and arrival time for the route.\n * \n * This widget requires route data to work correcly. For more information please refer to our \n * \n * Routing with summary example.\n *\n * @example\n * ```javascript\n * var widget = new L.RouteSummary({\n * size: [270, 268],\n * position: 'topleft'\n * });\n * widget.addTo(map);\n * ```\n *\n * @class RouteSummary\n * @namespace L\n * @extends L.Control\n * @module Widgets\n * @constructor\n * @method routeSummary\n * @param {Object} [options] Options to setup control\n * @param {Number[]} [options.size=[320,320]] Width and height in pixels for the panel\n * @param {\"topleft\"|\"topright\"|\"bottomleft\"|\"bottomright\"} [options.position=\"topleft\"] Where to add view\n * @param {Boolean} [options.imperialDistance=null] Set this option if you want to use a specific unit measurement\n * system for the new instance of the widget.\n * If no unit system is defined upon, the widget will use the global unit measurement configuration.\n */\n/* jshint nomen:false */\ndefine(['display/map', 'unitFormatConverter/unitFormatConverter', '../../config/unit/unitTypes'],\n function(L, unitFormatConverter, unitTypes) {\n 'use strict';\n\n function initPanelResult(className, control) {\n var divPanelRouteResultWrapper = L.DomUtil\n .create('div', className + '-route-result-wrapper', control.divPanelRouteResult);\n control.divPanelRouteResult = L.DomUtil.create('div', className + '-route-result', control._container);\n control.divPanelRouteDeparture = L.DomUtil.create('div', className + '-leave', control.divPanelRouteResult);\n control.divPanelRouteDeparture.innerHTML = 'Leave: now';\n control.divPanelRouteCostModel = L.DomUtil\n .create('div', className + '-route-cost-model', divPanelRouteResultWrapper);\n control.divPanelRouteTime = L.DomUtil.create('div', className + '-route-time', divPanelRouteResultWrapper);\n\n control.divPanelRouteTrafficDelay = L.DomUtil\n .create('div', className + '-route-traffic-delay', divPanelRouteResultWrapper);\n }\n\n function createPanelArriveDistance(className, control, parent) {\n var divPanelRouteArriveDistance = L.DomUtil.create('div', className + '-route-arrive-row', parent);\n var divPanelRouteArriveDistanceLabel = L.DomUtil.create('div', className + '-route-arrive-cell-left',\n divPanelRouteArriveDistance);\n divPanelRouteArriveDistanceLabel.innerHTML = 'Distance:';\n control.divPanelRouteArriveDistanceValue = L.DomUtil.create('div', className + '-route-arrive-cell-right',\n divPanelRouteArriveDistance);\n }\n\n function createPanelArriveTime(className, control, parent) {\n var divPanelRouteArriveTime = L.DomUtil.create('div', className + '-route-arrive-row', parent);\n var divPanelRouteArriveTimeLabel = L.DomUtil\n .create('div', className + '-route-arrive-cell-left', divPanelRouteArriveTime);\n\n divPanelRouteArriveTimeLabel.innerHTML = 'Arrive:';\n\n control.divPanelRouteArriveTimeValue = L.DomUtil\n .create('div', className + '-route-arrive-cell-right', divPanelRouteArriveTime);\n }\n\n function initPanelArrive(className, control) {\n var divPanelRouteArrive = L.DomUtil.create('div', className + '-arrive', control._container);\n createPanelArriveDistance(className, control, divPanelRouteArrive);\n createPanelArriveTime(className, control, divPanelRouteArrive);\n }\n\n function createDOMElements(control) {\n var className = 'leaflet-control-route-summary',\n container = L.DomUtil.create('div', className + ' leaflet-control'),\n divHeading = L.DomUtil.create('div', className + '-heading', container);\n container.style.width = control.options.size[0] + 'px';\n container.style.height = control.options.size[1] + 'px';\n divHeading.innerHTML = 'Route summary';\n L.DomEvent.disableClickPropagation(container);\n L.DomEvent.disableScrollPropagation(container);\n control._container = container;\n initPanelResult(className, control);\n initPanelArrive(className, control);\n container.style.visibility = 'hidden';\n\n return container;\n }\n\n L.RouteSummary = L.Control.extend({\n includes: L.Evented.prototype,\n\n options: {\n size: [320, 320],\n position: 'topleft',\n imperialDistance: null\n },\n\n /**\n * @ignore\n * This store the route summary data currently visible in the widget.\n * @type {Object}\n */\n _currentData: null,\n\n /**\n * @ignore\n * @type {Boolean}\n */\n _currentDataShouldBeImperial: null,\n\n /**\n * Leaflet init method executed when adding control to map.\n * Options will be stored inside control.\n *\n * @ignore\n * @method initialize\n * @param {Object} [options] Options to setup control\n */\n initialize: function(options) {\n L.Util.setOptions(this, options);\n this._attributions = {};\n },\n\n /**\n * Leaflet method executed when adding control to map.\n * Map will be stored inside control.\n *\n * @ignore\n * @method onAdd\n * @param {Object} map The map instance to which control is added.\n * @return {HTMLElement}\n */\n onAdd: function(map) {\n this.unitService = map.getUnitService();\n this.unitService.on(L.UnitService.Events.UNIT_CHANGED, this._redraw, this);\n return createDOMElements(this);\n },\n\n /**\n * @ignore\n */\n onRemove: function() {\n this.unitService.off(L.UnitService.Events.UNIT_CHANGED, this._redraw, this);\n },\n\n /**\n * Hides the route summary.\n *\n * By default the summary will be hidden until the method\n * {{#crossLink \"L.RouteSummary/updateSummaryData:method\"}}{{/crossLink}} is called.\n *\n * @method hide\n */\n hide: function() {\n this._container.style.visibility = 'hidden';\n },\n\n /**\n * Shows the route summary.\n *\n * By default summary will be hidden.\n * Use this method to show the control after data is ready.\n *\n * @method show\n */\n show: function() {\n this._container.style.visibility = '';\n },\n\n /**\n * Method to update data after route is recalculated.\n *\n * Use this method to update data after each route calculation.\n *\n * @method updateSummaryData\n * @param {Object} routeSummary Routing properties object\n * @param {Number} routeSummary.travelTimeInSeconds\n * @param {Number} routeSummary.trafficDelayInSeconds\n * @param {Number} routeSummary.lengthInMeters\n * @param {String|Number} routeSummary.arrivalTime Date in milliseconds or a string in RFC-3339 format\n * @param {Boolean} [useImperial=null] If you set this parameter the unit system will be forced\n * but only for this data\n */\n updateSummaryData: function(routeSummary, useImperial) {\n this._currentData = routeSummary;\n this._currentDataShouldBeImperial = useImperial;\n this._redraw();\n },\n\n _redraw: function() {\n var data = this._currentData,\n useImperial = this._shouldUseImperialDistance(),\n converter = unitFormatConverter;\n if (typeof this._currentDataShouldBeImperial === 'boolean') {\n useImperial = this._currentDataShouldBeImperial;\n }\n if (data) {\n this.divPanelRouteTime.innerHTML = converter.formatTime(data.travelTimeInSeconds);\n this.divPanelRouteTrafficDelay.innerHTML = converter\n .formatTime(data.trafficDelayInSeconds) + ' traffic';\n this.divPanelRouteArriveDistanceValue.innerHTML = converter\n .formatDistance(data.lengthInMeters, useImperial);\n this.divPanelRouteArriveTimeValue.innerHTML = converter.formatHourAndMinute(data.arrivalTime);\n this.show();\n } else {\n this.hide();\n }\n },\n\n /**\n * @ignore\n * First check the configuration for this instance and then the global configuration.\n * The instance configuration has priority.\n *\n * @return {Boolean}\n */\n _shouldUseImperialDistance: function() {\n if (typeof this.options.imperialDistance === 'boolean') {\n return this.options.imperialDistance;\n }\n return this.unitService.getCurrentUnit().getLabel() === unitTypes.imperial;\n }\n });\n\n return function(options) {\n return new L.RouteSummary(options);\n };\n });\n\n\n\n// WEBPACK FOOTER //\n// ./widgets/views/routeSummary.js","/* eslint-disable object-curly-spacing */ \n/* eslint-disable no-undef */ \n/* eslint-disable own-handles */ \n/* eslint-disable no-innerhtml-assign */ \n/* eslint-disable consistent-method-names */ \n/* eslint-disable no-jsdoc */ \n/**\n * The MiniMap allows you to show a smaller map with low zoom level at a corner of the main map.\n *\n * It is based on [Leaflet-MiniMap plugin](https://github.com/Norkart/Leaflet-MiniMap).\n *\n * The default plugin functionality is integrated with TomTom SDK.\n * \n * If you want to use vector source in the MiniMap the basePath must be specified. \n * Keep this in mind when you switch from raster to vector source, for example when opening our examples in CodePen, \n * otherwise the MiniMap will not render properly.\n *\n * @example\n * ```javascript\n * tomtom.key(\"\");\n * var miniMapOptions = {height: 90, width: 120};\n * var map = new L.Map(\"map\");\n * var miniMapControl = new L.TomTomMinimap(miniMapOptions);\n * miniMapControl.addTo(map);\n * ```\n *\n * @example\n * ```javascript\n * var widget = new L.TomTomMinimap({\n * height: 90,\n * width: 120,\n * // zoom difference between the main map and minimaps (defaults to -8)\n * zoomLevelOffset: -8,\n *\n * // below options have default values:\n * toggleDisplay: true, // show a button to hide/show mini-map\n * zoomAnimation: true, // animate zoom changes\n * autoToggleDisplay: true, // hide mini-map automatically if it's not needed\n * mapOptions: {\n * source: [\"raster\", \"vector\"],\n * minZoom: 2, // min zoom of mini-map\n * maxZoom: 4 // max zoom of mini-map\n * basePath: 'basePath/sdk' // used for vector maps\n * }\n * });\n * widget.addTo(map);\n * ```\n *\n * @class TomTomMinimap\n * @namespace L\n * @extends L.Control.MiniMap\n * @module Widgets\n * @constructor\n * @param {Object} [options] Options to be passed to the MiniMap\n * @param {String} [options.position=\"bottomright\"] The standard Leaflet.Control position parameter,\n * used like all the other controls. Defaults to 'bottomright'.\n * @param {Number} [options.width=150] The width of the minimap in pixels\n * @param {Number} [options.height=150] The height of the minimap in pixels\n * @param {Number} [options.collapsedWidth=19] The width in pixels of the toggle marker and the minimap\n * when collapsed\n * @param {Number} [options.collapsedHeight=19] The height in pixels of the toggle marker and the minimap\n * when collapsed\n * @param {Number} [options.zoomLevelOffset=-8] The offset applied to the zoom in the minimap compared\n * to the zoom of the main map. Can be positive or negative.\n * @param {Number} [options.zoomLevelFixed=null] Overrides the offset to apply a fixed zoom level\n * to the minimap regardless of the main map zoom. Set it to any valid zoom level.\n * If unset `zoomLevelOffset` is used instead.\n * @param {Boolean} [options.centerFixed=false] Applies a fixed position to the minimap regardless\n * of the main map's view / position. Prevents panning the minimap, but does allow zooming\n * (both in the minimap and the main map). If the minimap is zoomed, it will always\n * zoom around the centerFixed point. You can pass in a LatLng-equivalent object.\n * @param {Boolean} [options.zoomAnimation=false] Sets whether the minimap should have an animated zoom.\n * (Will cause it to lag a bit after the movement of the main map.)\n * @param {Boolean} [options.toggleDisplay=false] Sets whether the minimap should have a button to minimize it\n * @param {Boolean} [options.autoToggleDisplay=false] Sets whether the minimap should hide automatically\n * if the parent map bounds does not fit within the minimap bounds.\n * Especially useful when `zoomLevelFixed` is set.\n * @param {Boolean} [options.minimized=false] Sets whether the minimap should start in a minimized position\n * @param {Object} [options.aimingRectOptions] Sets the style of the aiming rectangle by passing in\n * a Path.Options object.\n * (Clickable will always be overridden and set to `false`).\n * @param {Object} [options.shadowRectOptions] Sets the style of the aiming shadow rectangle by passing in a\n * Path.Options object.\n * (Clickable will always be overridden and set to `false`).\n * @param {Object} [options.strings] Overrides the default strings allowing for translation\n * @param {Object} [options.mapOptions] Sets Leaflet options for the MiniMap.\n * It does not override the MiniMap default map options but extends them.\n * See regular map options for more details.\n * @param {String} [options.basePath = '/sdk'] Base path for sdk. It will be used in relative paths - it is \n * especially important for maps with vector sources. For instance, if you set this option to `\"/myPath\"`, \n * default urls for styles will be set to `/myPath/styles/basic_main.json`\n */\n/* jshint nomen:false */\ndefine(['display/map', 'leaflet-minimap'],\n function(L, MiniMap) {\n 'use strict';\n var MAP_LAYER_DEFAULT_OPTIONS = {\n zoom: 2,\n minZoom: 2,\n maxZoom: 10\n },\n CONTROL_DEFAULT_OPTIONS = {\n toggleDisplay: true,\n zoomAnimation: true,\n autoToggleDisplay: true,\n zoomLevelOffset: -5\n };\n\n L.TomTomMinimap = MiniMap.extend({\n /**\n * Returns current zoom level of the mini map.\n *\n * @method getZoom\n * @return {Number}\n */\n getZoom: function() {\n return this._miniMap.getZoom();\n },\n /**\n * Add listeners for a particular event type. Event handlers for events with 'map-' prefix\n * are added to minimap map instance directly.\n *\n * @method on\n * @param {String} eventName\n * @param {Function} eventHandler\n * @return {Object} Returns reference to current instance of minimap widget\n */\n on: function(eventName, eventHandler) {\n var regexMatch, mapEventName;\n if (!eventName || !eventHandler) {\n return this;\n }\n regexMatch = /^map-(.+)$/.exec(eventName);\n if (regexMatch) {\n mapEventName = regexMatch[1];\n this._miniMap.on(mapEventName, eventHandler);\n }\n return this;\n },\n _getMinimapBaseLayer: function(source) {\n return this._miniMap.getBaseLayers()[source || this.options.mapOptions.source[0]];\n },\n /**\n * Change a source data for the current mini map. It should be one of the sources provided\n * at creation in a property options.mapOptions.source.\n *\n * @method setMapSource\n * @param {String} source A source of data for the mini map. It has to be one of the\n * {{#crossLink \"L.Map\"}}{{/crossLink}} supported sources.\n */\n setMapSource: function(source) {\n this._miniMap.removeLayer(this._layer);\n this._miniMap.setMapSource(source);\n this._layer = this._getMinimapBaseLayer(source);\n },\n initialize: function(options) {\n /*\n This `dummyLayer` requires few words of explanation. Although it doesn't look like it this is the\n cleanest way to move decision about layer configuration from this file to map.js instance created\n inside MiniMap.onAdd method. Unfortunately, MiniMap plugin requires that a layer needs to be provided\n that's the reason behind this `dummyLayer`. This change was caused by LNS-16272.\n */\n var dummyLayer = new L.LayerGroup();\n MiniMap.prototype.initialize.call(this, dummyLayer, options);\n }\n });\n\n return function(options) {\n\n if (!options) {\n options = {};\n }\n\n options.mapOptions = L.extend(MAP_LAYER_DEFAULT_OPTIONS, options.mapOptions);\n options = L.extend(CONTROL_DEFAULT_OPTIONS, options);\n\n if (options.mapOptions.minZoom > options.mapOptions.maxZoom) {\n options.mapOptions.minZoom = options.mapOptions.maxZoom;\n }\n\n return new L.TomTomMinimap(options);\n };\n });\n\n\n\n// WEBPACK FOOTER //\n// ./widgets/views/miniMap.js","(function(factory,window){if(typeof define===\"function\"&&define.amd){define([\"leaflet\"],factory)}else if(typeof exports===\"object\"){module.exports=factory(require(\"leaflet\"))}if(typeof window!==\"undefined\"&&window.L){window.L.Control.MiniMap=factory(L);window.L.control.minimap=function(layer,options){return new window.L.Control.MiniMap(layer,options)}}})(function(L){var MiniMap=L.Control.extend({includes:L.Evented?L.Evented.prototype:L.Mixin.Events,options:{position:\"bottomright\",toggleDisplay:false,zoomLevelOffset:-5,zoomLevelFixed:false,centerFixed:false,zoomAnimation:false,autoToggleDisplay:false,minimized:false,width:150,height:150,collapsedWidth:19,collapsedHeight:19,aimingRectOptions:{color:\"#ff7800\",weight:1,clickable:false},shadowRectOptions:{color:\"#000000\",weight:1,clickable:false,opacity:0,fillOpacity:0},strings:{hideText:\"Hide MiniMap\",showText:\"Show MiniMap\"},mapOptions:{}},initialize:function(layer,options){L.Util.setOptions(this,options);this.options.aimingRectOptions.clickable=false;this.options.shadowRectOptions.clickable=false;this._layer=layer},onAdd:function(map){this._mainMap=map;this._container=L.DomUtil.create(\"div\",\"leaflet-control-minimap\");this._container.style.width=this.options.width+\"px\";this._container.style.height=this.options.height+\"px\";L.DomEvent.disableClickPropagation(this._container);L.DomEvent.on(this._container,\"mousewheel\",L.DomEvent.stopPropagation);var mapOptions={attributionControl:false,dragging:!this.options.centerFixed,zoomControl:false,zoomAnimation:this.options.zoomAnimation,autoToggleDisplay:this.options.autoToggleDisplay,touchZoom:this.options.centerFixed?\"center\":!this._isZoomLevelFixed(),scrollWheelZoom:this.options.centerFixed?\"center\":!this._isZoomLevelFixed(),doubleClickZoom:this.options.centerFixed?\"center\":!this._isZoomLevelFixed(),boxZoom:!this._isZoomLevelFixed(),crs:map.options.crs};mapOptions=L.Util.extend(this.options.mapOptions,mapOptions);this._miniMap=new L.Map(this._container,mapOptions);this._miniMap.addLayer(this._layer);this._mainMapMoving=false;this._miniMapMoving=false;this._userToggledDisplay=false;this._minimized=false;if(this.options.toggleDisplay){this._addToggleButton()}this._miniMap.whenReady(L.Util.bind(function(){this._aimingRect=L.rectangle(this._mainMap.getBounds(),this.options.aimingRectOptions).addTo(this._miniMap);this._shadowRect=L.rectangle(this._mainMap.getBounds(),this.options.shadowRectOptions).addTo(this._miniMap);this._mainMap.on(\"moveend\",this._onMainMapMoved,this);this._mainMap.on(\"move\",this._onMainMapMoving,this);this._miniMap.on(\"movestart\",this._onMiniMapMoveStarted,this);this._miniMap.on(\"move\",this._onMiniMapMoving,this);this._miniMap.on(\"moveend\",this._onMiniMapMoved,this)},this));return this._container},addTo:function(map){L.Control.prototype.addTo.call(this,map);var center=this.options.centerFixed||this._mainMap.getCenter();this._miniMap.setView(center,this._decideZoom(true));this._setDisplay(this.options.minimized);return this},onRemove:function(map){this._mainMap.off(\"moveend\",this._onMainMapMoved,this);this._mainMap.off(\"move\",this._onMainMapMoving,this);this._miniMap.off(\"moveend\",this._onMiniMapMoved,this);this._miniMap.removeLayer(this._layer)},changeLayer:function(layer){this._miniMap.removeLayer(this._layer);this._layer=layer;this._miniMap.addLayer(this._layer)},_addToggleButton:function(){this._toggleDisplayButton=this.options.toggleDisplay?this._createButton(\"\",this._toggleButtonInitialTitleText(),\"leaflet-control-minimap-toggle-display leaflet-control-minimap-toggle-display-\"+this.options.position,this._container,this._toggleDisplayButtonClicked,this):undefined;this._toggleDisplayButton.style.width=this.options.collapsedWidth+\"px\";this._toggleDisplayButton.style.height=this.options.collapsedHeight+\"px\"},_toggleButtonInitialTitleText:function(){if(this.options.minimized){return this.options.strings.showText}else{return this.options.strings.hideText}},_createButton:function(html,title,className,container,fn,context){var link=L.DomUtil.create(\"a\",className,container);link.innerHTML=html;link.href=\"#\";link.title=title;var stop=L.DomEvent.stopPropagation;L.DomEvent.on(link,\"click\",stop).on(link,\"mousedown\",stop).on(link,\"dblclick\",stop).on(link,\"click\",L.DomEvent.preventDefault).on(link,\"click\",fn,context);return link},_toggleDisplayButtonClicked:function(){this._userToggledDisplay=true;if(!this._minimized){this._minimize()}else{this._restore()}},_setDisplay:function(minimize){if(minimize!==this._minimized){if(!this._minimized){this._minimize()}else{this._restore()}}},_minimize:function(){if(this.options.toggleDisplay){this._container.style.width=this.options.collapsedWidth+\"px\";this._container.style.height=this.options.collapsedHeight+\"px\";this._toggleDisplayButton.className+=\" minimized-\"+this.options.position;this._toggleDisplayButton.title=this.options.strings.showText}else{this._container.style.display=\"none\"}this._minimized=true;this._onToggle()},_restore:function(){if(this.options.toggleDisplay){this._container.style.width=this.options.width+\"px\";this._container.style.height=this.options.height+\"px\";this._toggleDisplayButton.className=this._toggleDisplayButton.className.replace(\"minimized-\"+this.options.position,\"\");this._toggleDisplayButton.title=this.options.strings.hideText}else{this._container.style.display=\"block\"}this._minimized=false;this._onToggle()},_onMainMapMoved:function(e){if(!this._miniMapMoving){var center=this.options.centerFixed||this._mainMap.getCenter();this._mainMapMoving=true;this._miniMap.setView(center,this._decideZoom(true));this._setDisplay(this._decideMinimized())}else{this._miniMapMoving=false}this._aimingRect.setBounds(this._mainMap.getBounds())},_onMainMapMoving:function(e){this._aimingRect.setBounds(this._mainMap.getBounds())},_onMiniMapMoveStarted:function(e){if(!this.options.centerFixed){var lastAimingRect=this._aimingRect.getBounds();var sw=this._miniMap.latLngToContainerPoint(lastAimingRect.getSouthWest());var ne=this._miniMap.latLngToContainerPoint(lastAimingRect.getNorthEast());this._lastAimingRectPosition={sw:sw,ne:ne}}},_onMiniMapMoving:function(e){if(!this.options.centerFixed){if(!this._mainMapMoving&&this._lastAimingRectPosition){this._shadowRect.setBounds(new L.LatLngBounds(this._miniMap.containerPointToLatLng(this._lastAimingRectPosition.sw),this._miniMap.containerPointToLatLng(this._lastAimingRectPosition.ne)));this._shadowRect.setStyle({opacity:1,fillOpacity:.3})}}},_onMiniMapMoved:function(e){if(!this._mainMapMoving){this._miniMapMoving=true;this._mainMap.setView(this._miniMap.getCenter(),this._decideZoom(false));this._shadowRect.setStyle({opacity:0,fillOpacity:0})}else{this._mainMapMoving=false}},_isZoomLevelFixed:function(){var zoomLevelFixed=this.options.zoomLevelFixed;return this._isDefined(zoomLevelFixed)&&this._isInteger(zoomLevelFixed)},_decideZoom:function(fromMaintoMini){if(!this._isZoomLevelFixed()){if(fromMaintoMini){return this._mainMap.getZoom()+this.options.zoomLevelOffset}else{var currentDiff=this._miniMap.getZoom()-this._mainMap.getZoom();var proposedZoom=this._miniMap.getZoom()-this.options.zoomLevelOffset;var toRet;if(currentDiff>this.options.zoomLevelOffset&&this._mainMap.getZoom()this._lastMiniMapZoom){toRet=this._mainMap.getZoom()+1;this._miniMap.setZoom(this._miniMap.getZoom()-1)}else{toRet=this._mainMap.getZoom()}}else{toRet=proposedZoom}this._lastMiniMapZoom=this._miniMap.getZoom();return toRet}}else{if(fromMaintoMini){return this.options.zoomLevelFixed}else{return this._mainMap.getZoom()}}},_decideMinimized:function(){if(this._userToggledDisplay){return this._minimized}if(this.options.autoToggleDisplay){if(this._mainMap.getBounds().contains(this._miniMap.getBounds())){return true}return false}return this._minimized},_isInteger:function(value){return typeof value===\"number\"},_isDefined:function(value){return typeof value!==\"undefined\"},_onToggle:function(){L.Util.requestAnimFrame(function(){L.DomEvent.on(this._container,\"transitionend\",this._fireToggleEvents,this);if(!L.Browser.any3d){L.Util.requestAnimFrame(this._fireToggleEvents,this)}},this)},_fireToggleEvents:function(){L.DomEvent.off(this._container,\"transitionend\",this._fireToggleEvents,this);var data={minimized:this._minimized};this.fire(this._minimized?\"minimize\":\"restore\",data);this.fire(\"toggle\",data)}});L.Map.mergeOptions({miniMapControl:false});L.Map.addInitHook(function(){if(this.options.miniMapControl){this.miniMapControl=(new MiniMap).addTo(this)}});return MiniMap},window);\n\n\n//////////////////\n// WEBPACK FOOTER\n// /home/ubuntu/jenkins/workspace/rp_start_release_npm/jssdk/node_modules/leaflet-minimap/dist/Control.MiniMap.min.js\n// module id = 198\n// module chunks = 0"],"sourceRoot":""}