1/* @preserve 2 * Leaflet 1.3.1, a JS library for interactive maps. http://leafletjs.com 3 * (c) 2010-2017 Vladimir Agafonkin, (c) 2010-2011 CloudMade 4 */ 5!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<n;e++){o=arguments[e];for(i in o)t[i]=o[i]}return t}function e(t,i){var e=Array.prototype.slice;if(t.bind)return t.bind.apply(t,e.call(arguments,1));var n=e.call(arguments,2);return function(){return t.apply(i,n.length?n.concat(e.call(arguments)):arguments)}}function n(t){return t._leaflet_id=t._leaflet_id||++ti,t._leaflet_id}function o(t,i,e){var n,o,s,r;return r=function(){n=!1,o&&(s.apply(e,o),o=!1)},s=function(){n?o=arguments:(t.apply(e,arguments),setTimeout(r,i),n=!0)}}function s(t,i,e){var n=i[1],o=i[0],s=n-o;return t===n&&e?t:((t-o)%s+s)%s+o}function r(){return!1}function a(t,i){var e=Math.pow(10,void 0===i?6:i);return Math.round(t*e)/e}function h(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function u(t){return h(t).split(/\s+/)}function l(t,i){t.hasOwnProperty("options")||(t.options=t.options?Qt(t.options):{});for(var e in i)t.options[e]=i[e];return t.options}function c(t,i,e){var n=[];for(var o in t)n.push(encodeURIComponent(e?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(i&&-1!==i.indexOf("?")?"&":"?")+n.join("&")}function _(t,i){return t.replace(ii,function(t,e){var n=i[e];if(void 0===n)throw new Error("No value provided for variable "+t);return"function"==typeof n&&(n=n(i)),n})}function d(t,i){for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1}function p(t){return window["webkit"+t]||window["moz"+t]||window["ms"+t]}function m(t){var i=+new Date,e=Math.max(0,16-(i-oi));return oi=i+e,window.setTimeout(t,e)}function f(t,i,n){if(!n||si!==m)return si.call(window,e(t,i));t.call(i)}function g(t){t&&ri.call(window,t)}function v(){}function y(t){if("undefined"!=typeof L&&L&&L.Mixin){t=ei(t)?t:[t];for(var i=0;i<t.length;
5i++)t[i]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",(new Error).stack)}}function x(t,i,e){this.x=e?Math.round(t):t,this.y=e?Math.round(i):i}function w(t,i,e){return t instanceof x?t:ei(t)?new x(t[0],t[1]):void 0===t||null===t?t:"object"==typeof t&&"x"in t&&"y"in t?new x(t.x,t.y):new x(t,i,e)}function P(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function b(t,i){return!t||t instanceof P?t:new P(t,i)}function T(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function z(t,i){return t instanceof T?t:new T(t,i)}function M(t,i,e){if(isNaN(t)||isNaN(i))throw new Error("Invalid LatLng object: ("+t+", "+i+")");this.lat=+t,this.lng=+i,void 0!==e&&(this.alt=+e)}function C(t,i,e){return t instanceof M?t:ei(t)&&"object"!=typeof t[0]?3===t.length?new M(t[0],t[1],t[2]):2===t.length?new M(t[0],t[1]):null:void 0===t||null===t?t:"object"==typeof t&&"lat"in t?new M(t.lat,"lng"in t?t.lng:t.lon,t.alt):void 0===i?null:new M(t,i,e)}function Z(t,i,e,n){if(ei(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=i,this._c=e,this._d=n}function S(t,i,e,n){return new Z(t,i,e,n)}function E(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function k(t,i){var e,n,o,s,r,a,h="";for(e=0,o=t.length;e<o;e++){for(n=0,s=(r=t[e]).length;n<s;n++)a=r[n],h+=(n?"L":"M")+a.x+" "+a.y;h+=i?Xi?"z":"x":""}return h||"M0 0"}function I(t){return navigator.userAgent.toLowerCase().indexOf(t)>=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;s<r;s++)G(t,i[s],e,n);return this}function q(t,i,e,n){if("object"==typeof i)for(var o in i)K(t,o,i[o],e);else if(i)for(var s=0,r=(i=u(i)).length;s<r;s++)K(t,i[s],e,n);else{for(var a in t[le])K(t,a,t[le][a]);delete t[le]}return this}function G(t,i,e,o){var s=i+n(e)+(o?"_"+n(o):"");if(t[le]&&t[le][s])return this;var r=function(i){return e.call(o||t,i||window.event)},a=r;Ui&&0===i.indexOf("touch")?A(t,i,r,s):!Vi||"dblclick"!==i||!F||Ui&&Si?"addEventListener"in t?"mousewheel"===i?t.addEventListener("onw
5heel"in t?"wheel":"mousewheel",r,!1):"mouseenter"===i||"mouseleave"===i?(r=function(i){i=i||window.event,ot(t,i)&&a(i)},t.addEventListener("mouseenter"===i?"mouseover":"mouseout",r,!1)):("click"===i&&Ti&&(r=function(t){st(t,a)}),t.addEventListener(i,r,!1)):"attachEvent"in t&&t.attachEvent("on"+i,r):F(t,r,s),t[le]=t[le]||{},t[le][s]=r}function K(t,i,e,o){var s=i+n(e)+(o?"_"+n(o):""),r=t[le]&&t[le][s];if(!r)return this;Ui&&0===i.indexOf("touch")?B(t,i,s):!Vi||"dblclick"!==i||!U||Ui&&Si?"removeEventListener"in t?"mousewheel"===i?t.removeEventListener("onwheel"in t?"wheel":"mousewheel",r,!1):t.removeEventListener("mouseenter"===i?"mouseover":"mouseleave"===i?"mouseout":i,r,!1):"detachEvent"in t&&t.detachEvent("on"+i,r):U(t,s),t[le][s]=null}function Y(t){return t.stopPropagation?t.stopPropagation():t.originalEvent?t.originalEvent._stopped=!0:t.cancelBubble=!0,nt(t),this}function X(t){return G(t,"mousewheel",Y),this}function J(t){return V(t,"mousedown touchstart dblclick",Y),G(t,"click",et),this}function $(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this}function Q(t){return $(t),Y(t),this}function tt(t,i){if(!i)return new x(t.clientX,t.clientY);var e=i.getBoundingClientRect(),n=e.width/i.offsetWidth||1,o=e.height/i.offsetHeight||1;return new x(t.clientX/n-e.left-i.clientLeft,t.clientY/o-e.top-i.clientTop)}function it(t){return Pi?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/ce:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}function et(t){_e[t.type]=!0}function nt(t){var i=_e[t.type];return _e[t.type]=!1,i}function ot(t,i){var e=i.relatedTarget;if(!e)return!0;try{for(;e&&e!==t;)e=e.parentNode}catch(t){return!1}return e!==t}function st(t,i){var e=t.timeStamp||t.originalEvent&&t.originalEvent.timeStamp,n=pi&&e-pi;n&&n>100&&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;n<o;n++)t.classList.add(e[n]);else if(!dt(t,i)){var s=gt(t);ft(t,(s?s+" ":"")+i)}}function mt(t,i){void 0!==t.classList?t.classList.remove(i):ft(t,h((" "+gt(t)+" ").replace(" "+i+" "," ")))}function ft(t,i){void 0===t.className.baseVal?t.className=i:t.className.baseVal=i}function gt(t){return void 0===t.className.baseVal?t.className:t.className.baseVal}function vt(t,i){"opacity"in t.style?t.style.opacity=i:"filter"in t.style&&yt(t,i)}function yt(t,i){var e=!1,n="DXImageTransform.Microsoft.Alpha";try{e=t.filters.item(n)}catch(t){if(1===i)return}i=Math.round(100*i),e?(e.Enabled=100!==i,e.Opacity=i):t.style.filter+=" progid:"+n+"(opacity="+i+")"}function xt(t){for(var i=document.documentElement.style,e=0;e<t.length;e++)if(t[e]in i)return t[e];return!1}function wt(t,i,e){var n=i||new x(0,0);t.style[pe]=(Oi?"translate("+n.x+"px,"+n.y+"px)":"translate3d("+n.x+"px,"+n.y+"px,0)")+(e?" scale("+e+")":"")}function Lt(t,i){t._leaflet_pos=i,Ni?wt(t,i):(t.style.left=i.x+"px",t.style.top=i.y+"px")}function Pt(t){return t._leaflet_pos||new x(0,0)}function bt(){V(window,"dragstart",$)}function Tt(){q(window,"dragstart",$)}function zt(t){for(;-1===t.tabIndex;)t=t.parentNode;t.style&&(Mt(),ve=t,ye=t.style.outline,t.style.outline="none",V(window,"keydown",Mt))}function Mt(){ve&&(ve.style.outline=ye,ve=void 0,ye=void 0,q(window,"keydown",Mt))}function Ct(t,i){if(!i||!t.length)return t.slice();var e=i*i;return t=kt(t,e),t=St(t,e)}function Zt(t,i,e){return Math.sqrt(Rt(t,i,e,!0))}function St(t,i){var e=t.length,n=new(typeof Uint8Array!=void 0+""?Uint8Array:Array)(e);n[0]=n[e-1]=1,Et(t,n,i,0,e-1);var o,s=[];for(o=0;o<e;o++)n[o]&&s.push(t[o]);return s}function Et(t,i,e,n,o){var s,r,a,h=0;for(r=n+1;r<=o-1;r++)(a=Rt(t[r],t[n],t[o],!0))>h&&(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;n<s;n++)Ot(t[n],t[o])>i&&(e.push(t[n]),o=n);return o<s-1&&e.push(t[s-1]),e}function It(t,i,e,n,o){var s,r,a,h=n?Se:Bt(t,e),u=Bt(i,e);for(Se=u;;){if(!(h|u))return[t,i];if(h&u)return!1;a=Bt(r=At(t,i,s=h||u,e,o),e),s===h?(t=r,h=a):(i=r,u=a)}}function At(t,i,e,n,o){var s,r,a=i.x-t.x,h=i.y-t.y,u=n.min,l=n.max;return 8&e?(s=t.x+a*(l.y-t.y)/h,r=l.y):4&e?(s=t.x+a*(u.y-t.y)/h,r=u.y):2&e?(s=l.x,r=t.y+h*(l.x-t.x)/a):1&e&&(s=u.x,r=t.y+h*(u.x-t.x)/a),new x(s,r,o)}function Bt(t,i){var e=0;return t.x<i.min.x?e|=1:t.x>i.max.x&&(e|=2),t.y<i.min.y?e|=4:t.y>i.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;o<u;o++)t[o]._code=Bt(t[o],i);for(r=0;r<4;r++){for(l=_[r],n=[],o=0,s=(u=t.length)-1;o<u;s=o++)a=t[o],h=t[s],a._code&l?h._code&l||((c=At(h,a,l,i,e))._code=Bt(c,i),n.push(c)):(h._code&l&&((c=At(h,a,l,i,e))._code=Bt(c,i),n.push(c)),n.push(a));t=n}return t}function Wt(t,i){var e,n,o,s,r="Feature"===t.type?t.geometry:t,a=r?r.coordinates:null,h=[],u=i&&i.pointToLayer,l=i&&i.coordsToLatLng||Ht;if(!a&&!r)return null;switch(r.type){case"Point":return e=l(a),u?u(t,e):new Xe(e);case"MultiPoint":for(o=0,s=a.length;o<s;o++)e=l(a[o]),h.push(u?u(t,e):new Xe(e));return new qe(h);case"LineString":case"MultiLineString":return n=Ft(a,"LineString"===r.type?0:1,l),new tn(n,i);case"Polygon":case"MultiPolygon":return n=Ft(a,"Polygon"===r.type?1:2,l),new en(n,i);case"GeometryCollection":for(o=0,s=r.geometries.length;o<s;o++){var c=Wt({geometry:r.geometries[o],type:"Feature",properties:t.properties},i);c&&h.push(c)}return new qe(h);default:throw new Error("Invalid GeoJSON object.")}}function Ht(t){return new M(t[1],t[0],t[2])}function Ft(t,i,e){for(var n,o=[],s=0,r=t.length;s<r;s++)n=i?Ft(t[s],i-1,e):(e||Ht)(t[s]),o.push(n);return o}function Ut(t,i){return i="number"==typeof i?i:6,void 0!==t.alt?[a(t.lng,i),a(t.lat,i),a(t.alt,i)]:[a(t.lng,i),a(t.lat,i)]}function Vt(t,i,e,n){for(var o=[],s=0,r=t.length;s<r;s++)o.push(i?Vt(t[s],i-1,e,n):Ut(t[s],n));return!i&&e&&o.push(o[0]),o}function qt(t,e){return t.feature?i({},t.feature,{geometry:e}):Gt(e)}function Gt(t){return"Feature"===t.type||"FeatureCollection"===t.type?t:{type:"Feature",properties:{},geometry:t}}function Kt(t,i){return new nn(t,i)}function Yt(t,i){return new dn(t,i)}function Xt(t){return Yi?new fn(t):null}function Jt(t){return Xi||Ji?new xn(t):null}var $t=Object.freeze;Object.freeze=function(t){return t};var Qt=Object.create||function(){function t(){}return function(i){return t.prototype=i,new t}}(),ti=0,ii=/\{ *([\w_-]+) *\}/g,ei=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},ni="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",oi=0,si=window.requestAnimationFrame||p("RequestAnimationFrame")||m,ri=window.cancelAnimationFrame||p("CancelAnimationFrame")||p("CancelRequestAnimationFrame")||function(t){window.clearTimeout(t)},ai=(Object.freeze||Object)({freeze:$t,extend:i,create:Qt,bind:e,lastId:ti,stamp:n,throttle:o,wrapNum:s,falseFn:r,formatNum:a,trim:h,splitWords:u,setOptions:l,getParamString:c,template:_,isArray:ei,indexOf:d,emptyImageUrl:ni,requestFn:si,cancelFn:ri,requestAnimFrame:f,cancelAnimFrame:g});v.extend=function(t){var e=function(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},n=e.__super__=this.prototype,o=Qt(n);o.constructor=e,e.prototype=o;for(var s in this)this.hasOwnProperty(s)&&"prototype"!==s&&"__super__"!==s&&(e[s]=this[s]);return t.statics&&(i(e,t.statics),delete t.statics),t.includes&&(y(t.includes),i.apply(null,[o].concat(t.includes)),delete t.includes),o.options&&(t.options=i(Qt(o.options),t.options)),i(o,t),o._initHooks=[],o.callInitHooks=function(){if(!this._initHooksCalled){n.c
vendor: 6,244 bytes, line 5
5allInitHooks&&n.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,i=o._initHooks.length;t<i;t++)o._initHooks[t].call(this)}},e},v.include=function(t){return i(this.prototype,t),this},v.mergeOptions=function(t){return i(this.prototype.options,t),this},v.addInitHook=function(t){var i=Array.prototype.slice.call(arguments,1),e="function"==typeof t?t:function(){this[t].apply(this,i)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(e),this};var hi={on:function(t,i,e){if("object"==typeof t)for(var n in t)this._on(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._on(t[o],i,e);return this},off:function(t,i,e){if(t)if("object"==typeof t)for(var n in t)this._off(n,t[n],i);else for(var o=0,s=(t=u(t)).length;o<s;o++)this._off(t[o],i,e);else delete this._events;return this},_on:function(t,i,e){this._events=this._events||{};var n=this._events[t];n||(n=[],this._events[t]=n),e===this&&(e=void 0);for(var o={fn:i,ctx:e},s=n,r=0,a=s.length;r<a;r++)if(s[r].fn===i&&s[r].ctx===e)return;s.push(o)},_off:function(t,i,e){var n,o,s;if(this._events&&(n=this._events[t]))if(i){if(e===this&&(e=void 0),n)for(o=0,s=n.length;o<s;o++){var a=n[o];if(a.ctx===e&&a.fn===i)return a.fn=r,this._firingCount&&(this._events[t]=n=n.slice()),void n.splice(o,1)}}else{for(o=0,s=n.length;o<s;o++)n[o].fn=r;delete this._events[t]}},fire:function(t,e,n){if(!this.listens(t,n))return this;var o=i({},e,{type:t,target:this,sourceTarget:e&&e.sourceTarget||this});if(this._events){var s=this._events[t];if(s){this._firingCount=this._firingCount+1||1;for(var r=0,a=s.length;r<a;r++){var h=s[r];h.fn.call(h.ctx||this,o)}this._firingCount--}}return n&&this._propagateEvent(o),this},listens:function(t,i){var e=this._events&&this._events[t];if(e&&e.length)return!0;if(i)for(var n in this._eventParents)if(this._eventParents[n].listens(t,i))return!0;return!1},once:function(t,i,n){if("object"==typeof t){for(var o in t)this.once(o,t[o],i);return this}var s=e(function(){this.off(t,i,n).off(t,s,n)},this);return this.on(t,i,n).on(t,s,n)},addEventParent:function(t){return this._eventParents=this._eventParents||{},this._eventParents[n(t)]=t,this},removeEventParent:function(t){return this._eventParents&&delete this._eventParents[n(t)],this},_propagateEvent:function(t){for(var e in this._eventParents)this._eventParents[e].fire(t.type,i({layer:t.target,propagatedFrom:t.target},t),!0)}};hi.addEventListener=hi.on,hi.removeEventListener=hi.clearAllEventListeners=hi.off,hi.addOneTimeEventListener=hi.once,hi.fireEvent=hi.fire,hi.hasEventListeners=hi.listens;var ui=v.extend(hi),li=Math.trunc||function(t){return t>0?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.x<e.x,r=o.y>i.y&&n.y<e.y;return s&&r},isValid:function(){return!(!this.min||!this.max)}},T.prototype={extend:function(t){var i,e,n=this._southWest,o=this._northEast;if(t instanceof M)i=t,e=t;else{if(!(t instanceof T))return t?this.extend(C(t)||z(t)):this;if(i=t._southWest,e=t._northEast,!i||!e)return this}return n||o?(n.lat=Math.min(i.lat,n.lat),n.lng=Math.min(i.lng,n.lng),o.lat=Math.max(e.lat,o.lat),o.lng=Math.max(e.lng,o.lng)):(this._southWest=new M(i.lat,i.lng),this._northEast=new M(e.lat,e.lng)),this},pad:function(t){var i=this._southWest,e=this._northEast,n=Math.abs(i.lat-e.lat)*t,o=Math.abs(i.lng-e.lng)*t;return new T(new M(i.lat-n,i.lng-o),new M(e.lat+n,e.lng+o))},getCenter:function(){return new M((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new M(this.getNorth(),this.getWest())},getSouthEast:function(){return new M(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat}
vendor: 2,436 bytes, line 5
5,getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof M||"lat"in t?C(t):z(t);var i,e,n=this._southWest,o=this._northEast;return t instanceof T?(i=t.getSouthWest(),e=t.getNorthEast()):i=e=t,i.lat>=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.lat<e.lat,r=o.lng>i.lng&&n.lng<e.lng;return s&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t,i){return!!t&&(t=z(t),this._southWest.equals(t.getSouthWest(),i)&&this._northEast.equals(t.getNorthEast(),i))},isValid:function(){return!(!this._southWest||!this._northEast)}},M.prototype={equals:function(t,i){return!!t&&(t=C(t),Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng))<=(void 0===i?1e-9:i))},toString:function(t){return"LatLng("+a(this.lat,t)+", "+a(this.lng,t)+")"},distanceTo:function(t){return _i.distance(this,C(t))},wrap:function(){return _i.wrapLatLng(this)},toBounds:function(t){var i=180*t/40075017,e=i/Math.cos(Math.PI/180*this.lat);return z([this.lat-i,this.lng-e],[this.lat+i,this.lng+e])},clone:function(){return new M(this.lat,this.lng,this.alt)}};var ci={latLngToPoint:function(t,i){var e=this.projection.project(t),n=this.scale(i);return this.transformation._transform(e,n)},pointToLatLng:function(t,i){var e=this.scale(i),n=this.transformation.untransform(t,e);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},unproject:function(t){return this.projection.unproject(t)},scale:function(t){return 256*Math.pow(2,t)},zoom:function(t){return Math.log(t/256)/Math.LN2},getProjectedBounds:function(t){if(this.infinite)return null;var i=this.projection.bounds,e=this.scale(t);return new P(this.transformation.transform(i.min,e),this.transformation.transform(i.max,e))},infinite:!1,wrapLatLng:function(t){var i=this.wrapLng?s(t.lng,this.wrapLng,!0):t.lng;return new M(this.wrapLat?s(t.lat,this.wrapLat,!0):t.lat,i,t.alt)},wrapLatLngBounds:function(t){var i=t.getCenter(),e=this.wrapLatLng(i),n=i.lat-e.lat,o=i.lng-e.lng;if(0===n&&0===o)return t;
vendor: 51,693 bytes, line 5
5var s=t.getSouthWest(),r=t.getNorthEast();return new T(new M(s.lat-n,s.lng-o),new M(r.lat-n,r.lng-o))}},_i=i({},ci,{wrapLng:[-180,180],R:6371e3,distance:function(t,i){var e=Math.PI/180,n=t.lat*e,o=i.lat*e,s=Math.sin((i.lat-t.lat)*e/2),r=Math.sin((i.lng-t.lng)*e/2),a=s*s+Math.cos(n)*Math.cos(o)*r*r,h=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return this.R*h}}),di={R:6378137,MAX_LATITUDE:85.0511287798,project:function(t){var i=Math.PI/180,e=this.MAX_LATITUDE,n=Math.max(Math.min(e,t.lat),-e),o=Math.sin(n*i);return new x(this.R*t.lng*i,this.R*Math.log((1+o)/(1-o))/2)},unproject:function(t){var i=180/Math.PI;return new M((2*Math.atan(Math.exp(t.y/this.R))-Math.PI/2)*i,t.x*i/this.R)},bounds:function(){var t=6378137*Math.PI;return new P([-t,-t],[t,t])}()};Z.prototype={transform:function(t,i){return this._transform(t.clone(),i)},_transform:function(t,i){return i=i||1,t.x=i*(this._a*t.x+this._b),t.y=i*(this._c*t.y+this._d),t},untransform:function(t,i){return i=i||1,new x((t.x/i-this._b)/this._a,(t.y/i-this._d)/this._c)}};var pi,mi,fi,gi,vi=i({},_i,{code:"EPSG:3857",projection:di,transformation:function(){var t=.5/(Math.PI*di.R);return S(t,.5,-t,.5)}()}),yi=i({},vi,{code:"EPSG:900913"}),xi=document.documentElement.style,wi="ActiveXObject"in window,Li=wi&&!document.addEventListener,Pi="msLaunchUri"in navigator&&!("documentMode"in document),bi=I("webkit"),Ti=I("android"),zi=I("android 2")||I("android 3"),Mi=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),Ci=Ti&&I("Google")&&Mi<537&&!("AudioNode"in window),Zi=!!window.opera,Si=I("chrome"),Ei=I("gecko")&&!bi&&!Zi&&!wi,ki=!Si&&I("safari"),Ii=I("phantom"),Ai="OTransition"in xi,Bi=0===navigator.platform.indexOf("Win"),Oi=wi&&"transition"in xi,Ri="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!zi,Di="MozPerspective"in xi,Ni=!window.L_DISABLE_3D&&(Oi||Ri||Di)&&!Ai&&!Ii,ji="undefined"!=typeof orientation||I("mobile"),Wi=ji&&bi,Hi=ji&&Ri,Fi=!window.PointerEvent&&window.MSPointerEvent,Ui=!(!window.PointerEvent&&!Fi),Vi=!window.L_NO_TOUCH&&(Ui||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),qi=ji&&Zi,Gi=ji&&Ei,Ki=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,Yi=!!document.createElement("canvas").getContext,Xi=!(!document.createElementNS||!E("svg").createSVGRect),Ji=!Xi&&function(){try{var t=document.createElement("div");t.innerHTML='<v:shape adj="1"/>';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;i<e?this._runFrame(this._easeOut(i/e),t):(this._runFrame(1),this._complete())},_runFrame:function(t,i){var e=this._startPos.add(this._offset.multiplyBy(t));i&&e._round(),Lt(this._el,e),this.fire("step")},_complete:function(){g(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),Le=ui.extend({options:{crs:vi,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(t,i){i=l(this,i),this._initContainer(t),this._initLayout(),this._onResize=e(this._onResize,this),this._initEvents(),i.maxBounds&&this.setMaxBounds(i.maxBounds),void 0!==i.zoom&&(this._zoom=this._limitZoom(i.zoom)),i.center&&void 0!==i.zoom&&this.setView(C(i.center),i.zoom,{reset:!0}),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this.callInitHooks(),this._zoomAnimated=me&&Ni&&!qi&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),V(this._proxy,fe,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(t,e,n){return e=void 0===e?this._zoom:this._limitZoom(e),t=this._limitCenter(C(t),e,this.options.maxBounds),n=n||{},this._stop(),this._loaded&&!n.reset&&!0!==n&&(void 0!==n.animate&&(n.zoom=i({animate:n.animate},n.zoom),n.pan=i({animate:n.animate,duration:n.duration},n.pan)),this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan))?(clearTimeout(this._sizeTimer),this):(this._resetView(t,e),this)},setZoom:function(t,i){return this._loaded?this.setView(this.getCenter(),t,{zoom:i}):(this._zoom=t,this)},zoomIn:function(t,i){return t=t||(Ni?this.options.zoomDelta:1),this.setZoom(this._zoom+t,i)},zoomOut:function(t,i){return t=t||(Ni?this.options.zoomDelta:1),this.setZoom(this._zoom-t,i)},setZoomAround:function(t,i,e){var n=this.getZoomScale(i),o=this.getSize().divideBy(2),s=(t instanceof x?t:this.latLngToContainerPoint(t)).subtract(o).multiplyBy(1-1/n),r=this.containerPointToLatLng(o.add(s));return this.setView(r,i,{zoom:e})},_getBoundsCenterZoom:function(t,i){i=i||{},t=t.getBounds?t.getBounds():z(t);var e=w(i.paddingTopLeft||i.padding||[0,0]),n=w(i.paddingBottomRight||i.padding||[0,0]),o=this.getBoundsZoom(t,!1,e.add(n));if((o="number"==typeof i.maxZoom?Math.min(i.maxZoom,o):o)===1/0)return{center:t.getCenter(),zoom:o};var s=n.subtract(e).divideBy(2),r=this.project(t.getSouthWest(),o),a=this.project(t.getNorthEast(),o);return{center:this.unproject(r.add(a).divideBy(2).add(s),o),zoom:o}},fitBounds:function(t,i){if(!(t=z(t)).isValid())throw new Error("Bounds are not valid.");var e=this._getBoundsCenterZoom(t,i);return this.setView(e.center,e.zoom,i)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,i){return this.setView(t,this._zoom,{pan:i})},panBy:function(t,i){if(t=w(t).round(),i=i||{},!t.x&&!t.y)return this.fire("moveend");if(!0!==i.animate&&!this.getSize().contains(t))return this._resetView(this.unproject(this.project(this.getCenter()).add(t)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new we,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),i.noMoveStart||this.fire("movestart"),!1!==i.animate){pt(this._mapPane,"leaflet-pan-anim");var e=this._getMapPanePos().subtract(t).round();this._panAnim.run(this._mapPane,e,i.duration||.25,i.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},flyTo:function(t,i,e){function n(t){var i=(g*g-m*m+(t?-1:1)*x*x*v*v)/(2*(t?g:m)*x*v),e=Math.sqrt(i*i+1)-i;return e<1e-9?-18:Math.log(e)}function o(t){return(Math.exp(t)-Math.exp(-t))/2}function s(t){return(Math.exp(t)+Math.exp(-t))/2}function r(t){return o(t)/s(t)}function a(t){return m*(s(w)/s(w+y*t))}function h(t){return m*(s(w)*r(w+y*t)-o(w))/x}function u(t){return 1-Math.pow(1-t,1.5)}function l(){var e=(Date.now()-L)/b,n=u(e)*P;e<=1?(this._flyToFrame=f(l,this),this._move(this.unproject(c.add(_.subtract(c).multiplyBy(h(n)/v)),p),this.getScaleZoom(m/a(n),p),{flyTo:!0})):this._move(t,i)._moveEnd(!0)}if(!1===(e=e||{}).animate||!Ni)return this.setView(t,i,e);this._stop();var c=this.project(this.getCenter()),_=this.project(t),d=this.getSize(),p=this._zoom;t=C(t),i=void 0===i?p:i;var m=Math.max(d.x,d.y),g=m*this.getZoomScale(p,i),v=_.distanceTo(c)||1,y=1.42,x=y*y,w=n(0),L=Date.now(),P=(n(1)-w)/y,b=e.duration?1e3*e.duration:1e3*P*.8;return this._moveStart(!0,e.noMoveStart),l.call(this),this},flyToBounds:function(t,i){var e=this._getBoundsCenterZoom(t,i);return this.flyTo(e.center,e.zoom,i)},setMaxBounds:function(t){return(t=z(t)).isValid()?(this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this.options.maxBounds=t,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off("moveend",this._panInsideMaxBounds))},setMinZoom:function(t){var i=this.options.minZoom;return this.options.minZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(t):this},setMaxZoom:function(t){var i=this.options.maxZoom;return this.options.maxZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()>this.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;h<n.length;h++)if(n[h].fire(e,r,!0),r.originalEvent._stopped||!1===n[h].options.bubblingMouseEvents&&-1!==d(this._mouseEvents,e))return}},_draggableMoved:function(t){return(t=t.dragging&&t.dragging.enabled()?t:this).dragging&&t.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var t=0,i=this._handlers.length;t<i;t++)this._handlers[t].disable()},whenReady:function(t,i){return this._loaded?t.call(i||this,{target:this}):this.on("load",t,i),this},_getMapPanePos:function(){return Pt(this._mapPane)||new x(0,0)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(t,i){return(t&&void 0!==i?this._getNewPixelOrigin(t,i):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(t,i){var e=this.getSize()._divideBy(2);return this.project(t,i)._subtract(e)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return this.project(t,i)._subtract(n)},_latLngBoundsToNewLayerBounds:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return b([this.project(t.getSouthWest(),i)._subtract(n),this.project(t.getNorthWest(),i)._subtract(n),this.project(t.getSouthEast(),i)._subtract(n),this.project(t.getNorthEast(),i)._subtract(n)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,i,e){if(!e)return t;var n=this.project(t,i),o=this.getSize().divideBy(2),s=new P(n.subtract(o),n.add(o)),r=this._getBoundsOffset(s,e,i);return r.round().equals([0,0])?t:this.unproject(n.add(r),i)},_limitOffset:function(t,i){if(!i)return t;var e=this.getPixelBounds(),n=new P(e.min.add(t),e.max.add(t));return t.add(this._getBoundsOffset(n,i))},_getBoundsOffset:function(t,i,e){var n=b(this.project(i.getNorthEast(),e),this.project(i.getSouthWest(),e)),o=n.min.subtract(t.min),s=n.max.subtract(t.max);return new x(this._rebound(o.x,-s.x),this._rebound(o.y,-s.y))},_rebound:function(t,i){return t+i>0?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 e<n?-1:n<e?1:0}},initialize:function(t,i,e){l(this,e),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in i)this._addLayer(i[n],n,!0)},onAdd:function(t){this._initLayout(),this._update(),this._map=t,t.on("zoomend",this._checkDisabledLayers,this);for(var i=0;i<this._layers.length;i++)this._layers[i].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(t){return Pe.prototype.addTo.call(this,t),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var t=0;t<this._layers.length;t++)this._layers[t].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(t,i){return this._addLayer(t,i),this._map?this._update():this},addOverlay:function(t,i){return this._addLayer(t,i,!0),this._map?this._update():this},removeLayer:function(t){t.off("add remove",this._onLayerChange,this);var i=this._getLayer(n(t));return i&&this._layers.splice(this._layers.indexOf(i),1),this._map?this._update():this},expand:function(){pt(this._container,"leaflet-control-layers-expanded"),this._form.style.height=null;var t=this._map.getSize().y-(this._container.offsetTop+50);return t<this._form.clientHeight?(pt(this._form,"leaflet-control-layers-scrollbar"),this._form.style.height=t+"px"):mt(this._form,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return mt(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var t="leaflet-control-layers",i=this._container=ht("div",t),e=this.options.collapsed;i.setAttribute("aria-haspopup",!0),J(i),X(i);var n=this._form=ht("form",t+"-list");e&&(this._map.on("click",this.collapse,this),Ti||V(i,{mouseenter:this.expand,mouseleave:this.collapse},this));var o=this._layersLink=ht("a",t+"-toggle",i);o.href="#",o.title="Layers",Vi?(V(o,"click",Q),V(o,"click",this.expand,this)):V(o,"focus",this.expand,this),e||this.expand(),this._baseLayersList=ht("div",t+"-base",n),this._separator=ht("div",t+"-separator",n),this._overlaysList=ht("div",t+"-overlays",n),i.appendChild(n)},_getLayer:function(t){for(var i=0;i<this._layers.length;i++)if(this._layers[i]&&n(this._layers[i].layer)===t)return this._layers[i]},_addLayer:function(t,i,n){this._map&&t.on("add remove",this._onLayerChange,this),this._layers.push({layer:t,name:i,overlay:n}),this.options.sortLayers&&this._layers.sort(e(function(t,i){return this.options.sortFunction(t.layer,i.layer,t.name,i.name)},this)),this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;lt(this._baseLayersList),lt(this._overlaysList),this._layerControlInputs=[];var t,i,e,n,o=0;for(e=0;e<this._layers.length;e++)n=this._layers[e],this._addItem(n),i=i||n.overlay,t=t||!n.overlay,o+=n.overlay?0:1;return this.options.hideSingleBase&&(t=t&&o>1,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='<input type="radio" class="leaflet-control-layers-selector" name="'+t+'"'+(i?' checked="checked"':"")+"/>",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<o.length;s++)this._map.hasLayer(o[s])&&this._map.removeLayer(o[s]);for(s=0;s<n.length;s++)this._map.hasLayer(n[s])||this._map.addLayer(n[s]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var t,i,e=this._layerControlInputs,n=this._map.getZoom(),o=e.length-1;o>=0;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&n<i.options.minZoom||void 0!==i.options.maxZoom&&n>i.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._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(t.shiftKey?3:1))},_zoomOut:function(t){!this._disabled&&this._map._zoom>this._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:'<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'},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)<this.options.clickTolerance||($(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=Pt(this._element).subtract(e),pt(document.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,window.SVGElementInstance&&this._lastTarget instanceof SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),pt(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(e),this._moving=!0,g(this._animRequest),this._lastEvent=t,this._animRequest=f(this._updatePosition,this,!0)))}},_updatePosition:function(){var t={originalEvent:this._lastEvent};this.fire("predrag",t),Lt(this._element,this._newPos),this.fire("drag",t)},_onUp:function(t){!t._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){mt(document.body,"leaflet-dragging"),this._lastTarget&&(mt(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null);for(var t in Ae)q(document,Ae[t],this._onMove,this),q(document,Ie[t],this._onUp,this);Tt(),fi(),this._moved&&this._moving&&(g(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,Be._dragging=!1}}),Oe=(Object.freeze||Object)({simplify:Ct,pointToSegmentDistance:Zt,closestPointOnSegment:function(t,i,e){return Rt(t,i,e)},clipSegment:It,_getEdgeIntersection:At,_getBitCode:Bt,_sqClosestPointOnSegment:Rt,isFlat:Dt,_flat:Nt}),Re=(Object.freeze||Object)({clipPolygon:jt}),De={project:function(t){return new x(t.lng,t.lat)},unproject:function(t){return new M(t.y,t.x)},bounds:new P([-180,-90],[180,90])},Ne={R:6378137,R_MINOR:6356752.314245179,bounds:new P([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var i=Math.PI/180,e=this.R,n=t.lat*i,o=this.R_MINOR/e,s=Math.sqrt(1-o*o),r=s*Math.sin(n),a=Math.tan(Math.PI/4-n/2)/Math.pow((1-r)/(1+r),s/2);return n=-e*Math.log(Math.max(a,1e-10)),new x(t.lng*i*e,n)},unproject:function(t){for(var i,e=180/Math.PI,n=this.R,o=this.R_MINOR/n,s=Math.sqrt(1-o*o),r=Math.exp(-t.y/n),a=Math.PI/2-2*Math.atan(r),h=0,u=.1;h<15&&Math.abs(u)>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;i<e;i++)this.addLayer(t[i])},_addZoomLimit:function(t){!isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[n(t)]=t,this._updateZoomLevels())},_removeZoomLimit:function(t){var i=n(t);this._zoomBoundLayers[i]&&(delete this._zoomBoundLayers[i],this._updateZoomLevels())},_updateZoomLevels:function(){var t=1/0,i=-1/0,e=this._getZoomSpan();for(var n in this._zoomBoundLayers){var o=this._zoomBoundLayers[n].options;t=void 0===o.minZoom?t:Math.min(t,o.minZoom),i=void 0===o.maxZoom?i:Math.max(i,o.maxZoom)}this._layersMaxZoom=i===-1/0?void 0:i,this._layersMinZoom=t===1/0?void 0:t,e!==this._getZoomSpan()&&this.fire("zoomlevelschange"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var Ve=Ue.extend({initialize:function(t,i){l(this,i),this._layers={};var e,n;if(t)for(e=0,n=t.length;e<n;e++)this.addLayer(t[e])},addLayer:function(t){var i=this.getLayerId(t);return this._layers[i]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var i=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[i]&&this._map.removeLayer(this._layers[i]),delete this._layers[i],this},hasLayer:function(t){return!!t&&(t in this._layers||this.getLayerId(t)in this._layers)},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(t){var i,e,n=Array.prototype.slice.call(arguments,1);for(i in this._layers)(e=this._layers[i])[t]&&e[t].apply(e,n);return this},onAdd:function(t){this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t)},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];return this.eachLayer(t.push,t),t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return n(t)}}),qe=Ve.extend({addLayer:function(t){return this.hasLayer(t)?this:(t.addEventParent(this),Ve.prototype.addLayer.call(this,t),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.removeEventParent(this),Ve.prototype.removeLayer.call(this,t),this.fire("layerremove",{layer:t})):this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new T;for(var i in this._layers){var e=this._layers[i];t.extend(e.getBounds?e.getBounds():e.getLatLng())}return t}}),Ge=v.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(t){l(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,i){var e=this._getIconUrl(t);if(!e){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n=this._createImg(e,i&&"IMG"===i.tagName?i:null);return this._setIconStyles(n,t),n},_setIconStyles:function(t,i){var e=this.options,n=e[i+"Size"];"number"==typeof n&&(n=[n,n]);var o=w(n),s=w("shadow"===i&&e.shadowAnchor||e.iconAnchor||o&&o.divideBy(2,!0));t.className="leaflet-marker-"+i+" "+(e.className||""),s&&(t.style.marginLeft=-s.x+"px",t.style.marginTop=-s.y+"px"),o&&(t.style.width=o.x+"px",t.style.height=o.y+"px")},_createImg:function(t,i){return i=i||document.createElement("img"),i.src=t,i},_getIconUrl:function(t){return Ki&&this.options[t+"RetinaUrl"]||this.options[t+"Url"]}}),Ke=Ge.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(t){return Ke.imagePath||(Ke.imagePath=this._detectIconPath()),(this.options.imagePath||Ke.imagePath)+Ge.prototype._getIconUrl.call(this,t)},_detectIconPath:function(){var t=ht("div","leaflet-default-icon-path",document.body),i=at(t,"background-image")||at(t,"backgroundImage");return document.body.removeChild(t),i=null===i||0!==i.indexOf("url")?"":i.replace(/^url\(["']?/,"").replace(/marker-icon\.png["']?\)$/,"")}}),Ye=Ze.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new Be(t,t,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),pt(t,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&mt(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(t){var i=this._marker,e=i._map,n=this._marker.options.autoPanSpeed,o=this._marker.options.autoPanPadding,s=L.DomUtil.getPosition(i._icon),r=e.getPixelBounds(),a=e.getPixelOrigin(),h=b(r.min._subtract(a).add(o),r.max._subtract(a).subtract(o));if(!h.contains(s)){var u=w((Math.max(h.max.x,s.x)-h.max.x)/(r.max.x-h.max.x)-(Math.min(h.min.x,s.x)-h.min.x)/(r.min.x-h.min.x),(Math.max(h.max.y,s.y)-h.max.y)/(r.max.y-h.max.y)-(Math.min(h.min.y,s.y)-h.min.y)/(r.min.y-h.min.y)).multiplyBy(n);e.panBy(u,{animate:!1}),this._draggable._newPos._add(u),this._draggable._startPos._add(u),L.DomUtil.setPosition(i._icon,this._draggable._newPos),this._onDrag(t),this._panRequest=f(this._adjustPan.bind(this,t))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup().fire("movestart").fire("dragstart")},_onPreDrag:function(t){this._marker.options.autoPan&&(g(this._panRequest),this._panRequest=f(this._adjustPan.bind(this,t)))},_onDrag:function(t){var i=this._marker,e=i._shadow,n=Pt(i._icon),o=i._map.layerPointToLatLng(n);e&&Lt(e,n),i._latlng=o,t.latlng=o,t.oldLatLng=this._oldLatLng,i.fire("move",t).fire("drag",t)},_onDragEnd:function(t){g(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",t)}}),Xe=Ue.extend({options:{icon:new Ke,interactive:!0,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10,keyboard:!0,title:"",alt:"",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",bubblingMouseEvents:!1},initialize:function(t,i){l(this,i),this._latlng=C(t)},onAdd:function(t){this._zoomAnimated=this._zoomAnimated&&t.options.markerZoomAnimation,this._zoomAnimated&&t.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(t){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&t.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(t){var i=this._latlng;return this._latlng=C(t),this.update(),this.fire("move",{oldLatLng:i,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,i="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),e=t.icon.createIcon(this._icon),n=!1;e!==this._icon&&(this._icon&&this._removeIcon(),n=!0,t.title&&(e.title=t.title),"IMG"===e.tagName&&(e.alt=t.alt||"")),pt(e,i),t.keyboard&&(e.tabIndex="0"),this._icon=e,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var o=t.icon.createShadow(this._shadow),s=!1;o!==this._shadow&&(this._removeShadow(),s=!0),o&&(pt(o,i),o.alt=""),this._shadow=o,t.opacity<1&&this._updateOpacity(),n&&this.getPane().appendChild(this._icon),this._initInteraction(),o&&s&&this.getPane("shadowPane").appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),ut(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&ut(this._shadow),this._shadow=null},_setPos:function(t){Lt(this._icon,t),this._shadow&&Lt(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(i)},_initInteraction:function(){if(this.options.interactive&&(pt(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),Ye)){var t=this.options.draggable;this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Ye(this),t&&this.dragging.enable()}},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var t=this.options.opacity;vt(this._icon,t),this._shadow&&vt(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}}),Je=Ue.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,f
vendor: 6,016 bytes, line 5
5illRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(t){this._renderer=t.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(t){return l(this,t),this._renderer&&this._renderer._updateStyle(this),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+this._renderer.options.tolerance}}),$e=Je.extend({options:{fill:!0,radius:10},initialize:function(t,i){l(this,i),this._latlng=C(t),this._radius=this.options.radius},setLatLng:function(t){return this._latlng=C(t),this.redraw(),this.fire("move",{latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius},setStyle:function(t){var i=t&&t.radius||this._radius;return Je.prototype.setStyle.call(this,t),this.setRadius(i),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var t=this._radius,i=this._radiusY||t,e=this._clickTolerance(),n=[t+e,i+e];this._pxBounds=new P(this._point.subtract(n),this._point.add(n))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(t){return t.distanceTo(this._point)<=this._radius+this._clickTolerance()}}),Qe=$e.extend({initialize:function(t,e,n){if("number"==typeof e&&(e=i({},n,{radius:e})),l(this,e),this._latlng=C(t),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(t){return this._mRadius=t,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var t=[this._radius,this._radiusY||this._radius];return new T(this._map.layerPointToLatLng(this._point.subtract(t)),this._map.layerPointToLatLng(this._point.add(t)))},setStyle:Je.prototype.setStyle,_project:function(){var t=this._latlng.lng,i=this._latlng.lat,e=this._map,n=e.options.crs;if(n.distance===_i.distance){var o=Math.PI/180,s=this._mRadius/_i.R/o,r=e.project([i+s,t]),a=e.project([i-s,t]),h=r.add(a).divideBy(2),u=e.unproject(h).lat,l=Math.acos((Math.cos(s*o)-Math.sin(i*o)*Math.sin(u*o))/(Math.cos(i*o)*Math.cos(u*o)))/o;(isNaN(l)||0===l)&&(l=s/Math.cos(Math.PI/180*i)),this._point=h.subtract(e.getPixelOrigin()),this._radius=isNaN(l)?0:h.x-e.project([u,t-l]).x,this._radiusY=h.y-r.y}else{var c=n.unproject(n.project(this._latlng).subtract([this._mRadius,0]));this._point=e.latLngToLayerPoint(this._latlng),this._radius=this._point.x-e.latLngToLayerPoint(c).x}this._updateBounds()}}),tn=Je.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,i){l(this,i),this._setLatLngs(t)},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._setLatLngs(t),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(t){for(var i,e,n=1/0,o=null,s=Rt,r=0,a=this._parts.length;r<a;r++)for(var h=this._parts[r],u=1,l=h.length;u<l;u++){var c=s(t,i=h[u-1],e=h[u],!0);c<n&&(n=c,o=s(t,i,e))}return o&&(o.distance=Math.sqrt(n)),o},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a=this._rings[0],h=a.length;if(!h)return null;for(t=0,i=0;t<h-1;t++)i+=a[t].distanceTo(a[t+1])/2;if(0===i)return this._map.layerPointToLatLng(a[0]);for(t=0,n=0;t<h-1;t++)if(o=a[t],s=a[t+1],e=o.distanceTo(s),(n+=e)>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<o;n++)e?(i[n]=C(t[n]),this._bounds.extend(i[n])):i[n]=this._convertLatLngs(t[n]);return i},_project:function(){var t=new P;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,t);var i=this._clickTolerance(),e=new x(i,i);this._bounds.isValid()&&t.isValid()&&(t.min._subtract(e),t.max._add(e),this._pxBounds=t)},_projectLatlngs:function(t,i,e){var n,o,s=t[0]instanceof M,r=t.length;if(s){for(o=[],n=0;n<r;n++)o[n]=this._map.latLngToLayerPoint(t[n]),e.extend(o[n]);i.push(o)}else for(n=0;n<r;n++)this._projectLatlngs(t[n],i,e)},_clipPoints:function(){var t=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else{var i,e,n,o,s,r,a,h=this._parts;for(i=0,n=0,o=this._rings.length;i<o;i++)for(e=0,s=(a=this._rings[i]).length;e<s-1;e++)(r=It(a[e],a[e+1],t,e,!0))&&(h[n]=h[n]||[],h[n].push(r[0]),r[1]===a[e+1]&&e!==s-2||(h[n].push(r[1]),n++))}},_simplifyPoints:function(){for(var t=this._parts,i=this.options.smoothFactor,e=0,n=t.length;e<n;e++)t[e]=Ct(t[e],i)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(t,i){var e,n,o,s,r,a,h=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(e=0,s=this._parts.length;e<s;e++)for(n=0,o=(r=(a=this._parts[e]).length)-1;n<r;o=n++)if((i||0!==n)&&Zt(t,a[o],a[n])<=h)return!0;return!1}});tn._flat=Nt;var en=tn.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length}
vendor: 40,401 bytes, line 5
5,getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a,h,u=this._rings[0],l=u.length;if(!l)return null;for(s=r=a=0,t=0,i=l-1;t<l;i=t++)e=u[t],n=u[i],o=e.y*n.x-n.y*e.x,r+=(e.x+n.x)*o,a+=(e.y+n.y)*o,s+=3*o;return h=0===s?u[0]:[r/s,a/s],this._map.layerPointToLatLng(h)},_convertLatLngs:function(t){var i=tn.prototype._convertLatLngs.call(this,t),e=i.length;return e>=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;o<s;o++)(n=jt(this._rings[o],t,!0)).length&&this._parts.push(n)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(t){var i,e,n,o,s,r,a,h,u=!1;if(!this._pxBounds.contains(t))return!1;for(o=0,a=this._parts.length;o<a;o++)for(s=0,r=(h=(i=this._parts[o]).length)-1;s<h;r=s++)e=i[s],n=i[r],e.y>t.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;i<e;i++)((n=o[i]).geometries||n.geometry||n.features||n.coordinates)&&this.addData(n);return this}var s=this.options;if(s.filter&&!s.filter(t))return this;var r=Wt(t,s);return r?(r.feature=Gt(t),r.defaultOptions=r.options,this.resetStyle(r),s.onEachFeature&&s.onEachFeature(t,r),this.addLayer(r)):this},resetStyle:function(t){return t.options=i({},t.defaultOptions),this._setLayerStyle(t,this.options.style),this},setStyle:function(t){return this.eachLayer(function(i){this._setLayerStyle(i,t)},this)},_setLayerStyle:function(t,i){"function"==typeof i&&(i=i(t.feature)),t.setStyle&&t.setStyle(i)}}),on={toGeoJSON:function(t){return qt(this,{type:"Point",coordinates:Ut(this.getLatLng(),t)})}};Xe.include(on),Qe.include(on),$e.include(on),tn.include({toGeoJSON:function(t){var i=!Dt(this._latlngs),e=Vt(this._latlngs,i?1:0,!1,t);return qt(this,{type:(i?"Multi":"")+"LineString",coordinates:e})}}),en.include({toGeoJSON:function(t){var i=!Dt(this._latlngs),e=i&&!Dt(this._latlngs[0]),n=Vt(this._latlngs,e?2:i?1:0,!0,t);return i||(n=[n]),qt(this,{type:(e?"Multi":"")+"Polygon",coordinates:n})}}),Ve.include({toMultiPoint:function(t){var i=[];return this.eachLayer(function(e){i.push(e.toGeoJSON(t).geometry.coordinates)}),qt(this,{type:"MultiPoint",coordinates:i})},toGeoJSON:function(t){var i=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===i)return this.toMultiPoint(t);var e="GeometryCollection"===i,n=[];return this.eachLayer(function(i){if(i.toGeoJSON){var o=i.toGeoJSON(t);if(e)n.push(o.geometry);else{var s=Gt(o);"FeatureCollection"===s.type?n.push.apply(n,s.features):n.push(s)}}}),e?qt(this,{geometries:n,type:"GeometryCollection"}):{type:"FeatureCollection",features:n}}});var sn=Kt,rn=Ue.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,i,e){this._url=t,this._bounds=z(i),l(this,e)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(pt(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){ut(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&ct(this._image),this},bringToBack:function(){return this._map&&_t(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=z(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t="IMG"===this._url.tagName,i=this._image=t?this._url:ht("img");pt(i,"leaflet-image-layer"),this._zoomAnimated&&pt(i,"leaflet-zoom-animated"),this.options.className&&pt(i,this.options.className),i.onselectstart=r,i.onmousemove=r,i.onload=e(this.fire,this,"load"),i.onerror=e(this._overlayOnError,this,"error"),this.options.crossOrigin&&(i.crossOrigin=""),this.options.zIndex&&this._updateZIndex(),t?this._url=i.src:(i.src=this._url,i.alt=this.options.alt)},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),e=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;wt(this._image,e,i)},_reset:function(){var t=this._image,i=new P(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),e=i.getSize();Lt(t,i.min),t.style.width=e.x+"px",t.style.height=e.y+"px"},_updateOpacity:function(){vt(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)}}),an=rn.extend({options:{autoplay:!0,loop:!0},_initImage:function(){var t="VIDEO"===this._url.tagName,i=this._image=t?this._url:ht("video");if(pt(i,"leaflet-image-layer"),this._zoomAnimated&&pt(i,"leaflet-zoom-animated"),i.onselectstart=r,i.onmousemove=r,i.onloadeddata=e(this.fire,this,"load"),t){for(var n=i.getElementsByTagName("source"),o=[],s=0;s<n.length;s++)o.push(n[s].src);this._url=n.length>0?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;a<this._url.length;a++){var h=ht("source");h.src=this._url[a],i.appendChild(h)}}}}),hn=Ue.extend({options:{offset:[0,7],className:"",pane:"popupPane"},initialize:function(t,i){l(this,t),this._source=i},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&vt(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&vt(this._container,1),this.bringToFront()},onRemove:function(t){t._fadeAnimated?(vt(this._container,0),this._removeTimeout=setTimeout(e(ut,void 0,this._container),200)):ut(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=C(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var t={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&ct(this._container),this},bringToBack:function(){return this._map&&_t(this._container),this},_updateContent:function(){if(this._content){var t=this._contentNode,i="function"==typeof this._content?this._content(this._source||this):this._content;if("string"==typeof i)t.innerHTML=i;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(i)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),i=w(this.options.offset),e=this._getAnchor();this._zoomAnimated?Lt(this._container,t.add(e)):i=i.add(t).add(e);var n=this._containerBottom=-i.y,o=this._containerLeft=-Math.round(this._containerWidth/2)+i.x;this._container.style.bottom=n+"px",this._container.style.left=o+"px"}},_getAnchor:function(){return[0,0]}}),un=hn.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(t){return t.openPopup(this),this},onAdd:function(t){hn.prototype.onAdd.call(this,t),t.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof Je||this._source.on("preclick",Y))},onRemove:function(t){hn.prototype.onRemove.call(this,t),t.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof Je||this._source.off("preclick",Y))},getEvents:function(){var t=hn.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t="leaflet-popup",i=this._container=ht("div",t+" "+(this.options.className||"")+" leaflet-zoom-animated"),e=this._wrapper=ht("div",t+"-content-wrapper",i);if(this._contentNode=ht("div",t+"-content",e),J(e),X(this._contentNode),V(e,"contextmenu",Y),this._tipContainer=ht("div",t+"-tip-container",i),this._tip=ht("div",t+"-tip",this._tipContainer),this.options.closeButton){var n=this._closeButton=ht("a",t+"-close-button",i);n.href="#close",n.innerHTML="×",V(n,"click",this._onCloseButtonClick,this)}},_updateLayout:function(){var t=this._contentNode,i=t.style;i.width="",i.whiteSpace="nowrap";var e=t.offsetWidth;e=Math.min(e,this.options.maxWidth),e=Math.max(e,this.options.minWidth),i.width=e+1+"px",i.whiteSpace="",i.height="";var n=t.offsetHeight,o=this.options.maxHeight;o&&n>o?(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.x<n.x?(s="right",t=t.add(w(h.x+u.x,u.y-a/2+h.y,!0))):(s="left",t=t.subtract(w(r+u.x-h.x,a/2-u.y-h.y,!0))),mt(e,"leaflet-tooltip-right"),mt(e,"leaflet-tooltip-left"),mt(e,"leaflet-tooltip-top"),mt(e,"leaflet-tooltip-bottom"),pt(e,"leaflet-tooltip-"+s),Lt(e,t)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},setOpacity:function(t){this.options.opacity=t,this._container&&vt(this._container,t)},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPosition(i)},_getAnchor:function(){return w(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}});Le.include({openTooltip:function(t,i,e){return t instanceof ln||(t=new ln(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:this.addLayer(t)},closeTooltip:function(t){return t&&this.removeLayer(t),this}}),Ue.include({bindTooltip:function(t,i){return t instanceof ln?(l(t,i),this._tooltip=t,t._source=this):(this._tooltip&&!i||(this._tooltip=new ln(i,this)),this._tooltip.setContent(t)),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(t){if(t||!this._tooltipHandlersAdded){var i=t?"off":"on",e={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?e.add=this._openTooltip:(e.mouseover=this._openTooltip,e.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(e.mousemove=this._moveTooltip),Vi&&(e.click=this._openTooltip)),this[i](e),this._tooltipHandlersAdded=!t}},openTooltip: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._tooltip&&this._map&&(this._tooltip._source=t,this._tooltip.update(),this._map.openTooltip(this._tooltip,i),this._tooltip.options.interactive&&this._tooltip._container&&(pt(this._tooltip._container,"leaflet-clickable"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(mt(this._tooltip._container,"leaflet-clickable"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(t){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(t)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(t){return this._tooltip&&this._tooltip.setContent(t),this},getTooltip:function(){return this._tooltip},_openTooltip:function(t){var i=t.layer||t.target;this._tooltip&&this._map&&this.openTooltip(i,this._tooltip.options.sticky?t.latlng:void 0)},_moveTooltip:function(t){var i,e,n=t.latlng;this._tooltip.options.sticky&&t.originalEvent&&(i=this._map.mouseEventToContainerPoint(t.originalEvent),e=this._map.containerPointToLayerPoint(i),n=this._map.layerPointToLatLng(e)),this._tooltip.setLatLng(n)}});var cn=Ge.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(t){var i=t&&"DIV"===t.tagName?t:document.createElement("div"),e=this.options;if(i.innerHTML=!1!==e.html?e.html:"",e.bgPos){var n=w(e.bgPos);i.style.backgroundPosition=-n.x+"px "+-n.y+"px"}return this._setIconStyles(i,"icon"),i},createShadow:function(){return null}});Ge.Default=Ke;var _n=Ue.extend({options:{tileSize:256,opacity:1,updateWhenIdle:ji,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(t){l(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),ut(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(ct(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(_t(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var t={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=o(this._onMoveEnd,this.options.updateInterval,this)),t.move=this._onMove),this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},createTile:function(){return document.createElement("div")},getTileSize:function(){var t=this.options.tileSize;return t instanceof x?t:new x(t,t)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t){for(var i,e=this.getPane().children,n=-t(-1/0,1/0),o=0,s=e.length;o<s;o++)i=e[o].style.zIndex,e[o]!==this._container&&i&&(n=t(n,+i));isFinite(n)&&(this.options.zIndex=n+t(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!Li){vt(this._container,this.options.opacity);var t=+new Date,i=!1,e=!1;for(var n in this._tiles){var o=this._tiles[n];if(o.current&&o.loaded){var s=Math.min(1,(t-o.loaded)/200);vt(o.el,s),s<1?i=!0:(o.active?e=!0:this._onOpaqueTile(o),o.active=!0)}}e&&!this._noPrune&&this._pruneTiles(),i&&(g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this))}},_onOpaqueTile:r,_initContainer:function(){this._container||(this._container=ht("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var t=this._tileZoom,i=this.options.maxZoom;if(void 0!==t){for(var e in this._levels)this._levels[e].el.children.length||e===t?(this._levels[e].el.style.zIndex=i-Math.abs(t-e),this._onUpdateLevel(e)):(ut(this._levels[e].el),this._removeTilesAtZoom(e),this._onRemoveLevel(e),delete this._levels[e]);var n=this._levels[t],o=this._map;return n||((n=this._levels[t]={}).el=ht("div","leaflet-tile-container leaflet-zoom-animated",this._container),n.el.style.zIndex=i,n.origin=o.project(o.unproject(o.getPixelOrigin()),t).round(),n.zoom=t,this._setZoomTransform(n,o.getCenter(),o.getZoom()),n.el.offsetWidth,this._onCreateLevel(n)),this._level=n,n}},_onUpdateLevel:r,_onRemoveLevel:r,_onCreateLevel:r,_pruneTiles:function(){if(this._map){var t,i,e=this._map.getZoom();if(e>this.options.maxZoom||e<this.options.minZoom)this._removeAllTiles();else{for(t in this._tiles)(i=this._tiles[t]).retain=i.current;for(t in this._tiles)if((i=this._tiles[t]).current&&!i.active){var n=i.coords;this._retainParent(n.x,n.y,n.z,n.z-5)||this._retainChildren(n.x,n.y,n.z,n.z+2)}for(t in this._tiles)this._tiles[t].retain||this._removeTile(t)}}},_removeTilesAtZoom:function(t){for(var i in this._tiles)this._tiles[i].coords.z===t&&this._removeTile(i)},_removeAllTiles:function(){for(var t in this._tiles)this._removeTile(t)},_invalidateAll:function(){for(var t in this._levels)ut(this._levels[t].el),this._onRemoveLevel(t),delete this._levels[t];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(t,i,e,n){var o=Math.floor(t/2),s=Math.floor(i/2),r=e-1,a=new x(+o,+s);a.z=+r;var h=this._tileCoordsToKey(a),u=this._tiles[h];return u&&u.active?(u.retain=!0,!0):(u&&u.loaded&&(u.retain=!0),r>n&&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+1<n&&this._retainChildren(o,s,e+1,n))}},_resetView:function(t){var i=t&&(t.pinch||t.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),i,i)},_animateZoom:function(t){this._setView(t.center,t.zoom,!0,t.noUpdate)},_clampZoom:function(t){var i=this.options;return void 0!==i.minNativeZoom&&t<i.minNativeZoom?i.minNativeZoom:void 0!==i.maxNativeZoom&&i.maxNativeZoom<t?i.maxNativeZoom:t},_setView:function(t,i,e,n){var o=this._clampZoom(Math.round(i));(void 0!==this.options.maxZoom&&o>this.options.maxZoom||void 0!==this.options.minZoom&&o<this.options.minZoom)&&(o=void 0);var s=this.options.updateWhenZooming&&o!==this._tileZoom;n&&!s||(this._tileZoom=o,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==o&&this._update(t),e||this._pruneTiles(),this._noPrune=!!e),this._setZoomTransforms(t,i)},_setZoomTransforms:function(t,i){for(var e in this._levels)this._setZoomTransform(this._levels[e],t,i)},_setZoomTransform:function(t,i,e){var n=this._map.getZoomScale(e,t.zoom),o=t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(i,e)).round();Ni?wt(t.el,o,n):Lt(t.el,o)},_resetGrid:function(){var t=this._map,i=t.options.crs,e=this._tileSize=this.getTileSize(),n=this._tileZoom,o=this._map.getPixelWorldBounds(this._tileZoom);o&&(this._globalTileRange=this._pxBoundsToTileRange(o)),this._wrapX=i.wrapLng&&!this.options.noWrap&&[Math.floor(t.project([0,i.wrapLng[0]],n).x/e.x),Math.ceil(t.project([0,i.wrapLng[1]],n).x/e.y)],this._wrapY=i.wrapLat&&!this.options.noWrap&&[Math.floor(t.project([i.wrapLat[0],0],n).y/e.x),Math.ceil(t.project([i.wrapLat[1],0],n).y/e.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(t){var i=this._map,e=i._animatingZoom?Math.max(i._animateToZoom,i.getZoom()):i.getZoom(),n=i.getZoomScale(e,this._tileZoom),o=i.project(t,this._tileZoom).floor(),s=i.getSize().divideBy(2*n);return new P(o.subtract(s),o.add(s))},_update:function(t){var i=this._map;if(i){var e=this._clampZoom(i.getZoom());if(void 0===t&&(t=i.getCenter()),void 0!==this._tileZoom){var n=this._getTiledPixelBounds(t),o=this._pxBoundsToTileRange(n),s=o.getCenter(),r=[],a=this.options.keepBuffer,h=new P(o.getBottomLeft().subtract([a,-a]),o.getTopRight().add([a,-a]));if(!(isFinite(o.min.x)&&isFinite(o.min.y)&&isFinite(o.max.x)&&isFinite(o.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var u in this._tiles){var l=this._tiles[u].coords;l.z===this._tileZoom&&h.contains(new x(l.x,l.y))||(this._tiles[u].current=!1)}if(Math.abs(e-this._tileZoom)>1)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;_<r.length;_++)this._addTile(r[_],m);this._level.el.appendChild(m)}}}}},_isValidTile:function(t){var i=this._map.options.crs;if(!i.infinite){var e=this._globalTileRange;if(!i.wrapLng&&(t.x<e.min.x||t.x>e.max.x)||!i.wrapLat&&(t.y<e.min.y||t.y>e.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: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<e.length;i++)n.push(Number(e[i]));t.options._dashArray=n}},_requestRedraw:function(t){this._map&&(this._extendRedrawBounds(t),this._redrawRequest=this._redrawRequest||f(this._redraw,this))},_extendRedrawBounds:function(t){if(t._pxBounds){var i=(t.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new P,this._redrawBounds.extend(t._pxBounds.min.subtract([i,i])),this._redrawBounds.extend(t._pxBounds.max.add([i,i]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var t=this._redrawBounds;if(t){var i=t.getSize();this._ctx.clearRect(t.min.x,t.min.y,i.x,i.y)}else this._ctx.clearRect(0,0,this._container.width,this._container.height)},_draw:function(){var t,i=this._redrawBounds;if(this._ctx.save(),i){var e=i.getSize();this._ctx.beginPath(),this._ctx.rect(i.min.x,i.min.y,e.x,e.y),this._ctx.clip()}this._drawing=!0;for(var n=this._drawFirst;n;n=n.next)t=n.layer,(!i||t._pxBounds&&t._pxBounds.intersects(i))&&t._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(t,i){if(this._drawing){var e,n,o,s,r=t._parts,a=r.length,h=this._ctx;if(a){for(this._drawnLayers[t._leaflet_id]=t,h.beginPath(),e=0;e<a;e++){for(n=0,o=r[e].length;n<o;n++)s=r[e][n],h[n?"lineTo":"moveTo"](s.x,s.y);i&&h.closePath()}this._fillStroke(h,t)}}},_updateCircle:function(t){if(this._drawing&&!t._empty()){var i=t._point,e=this._ctx,n=Math.max(Math.round(t._radius),1),o=(Math.max(Math.round(t._radiusY),1)||n)/n;this._drawnLayers[t._leaflet_id]=t,1!==o&&(e.save(),e.scale(1,o)),e.beginPath(),e.arc(i.x,i.y/o,n,0,2*Math.PI,!1),1!==o&&e.restore(),this._fillStroke(e,t)}},_fillStroke:function(t,i){var e=i.options;e.fill&&(t.globalAlpha=e.fillOpacity,t.fillStyle=e.fillColor||e.color,t.fill(e.fillRule||"evenodd")),e.stroke&&0!==e.weight&&(t.setLineDash&&t.setLineDash(i.options&&i.options._dashArray||[]),t.globalAlpha=e.opacity,t.lineWidth=e.weight,t.strokeStyle=e.color,t.lineCap=e.lineCap,t.lineJoin=e.lineJoin,t.stroke())},_onClick:function(t){for(var i,e,n=this._map.mouseEventToLayerPoint(t),o=this._drawFirst;o;o=o.next)(i=o.layer).options.interactive&&i._containsPoint(n)&&!this._map._draggableMoved(i)&&(e=i);e&&(et(t),this._fireEvent([e],t))},_onMouseMove:function(t){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var i=this._map.mouseEventToLayerPoint(t);this._handleMouseHover(t,i)}},_handleMouseOut:function(t){var i=this._hoveredLayer;i&&(mt(this._container,"leaflet-interactive"),this._fireEvent([i],t,"mouseout"),this._hoveredLayer=null)},_handleMouseHover:function(t,i){for(var e,n,o=this._drawFirst;o;o=o.next)(e=o.layer).options.interactive&&e._containsPoint(i)&&(n=e);n!==this._hoveredLayer&&(this._handleMouseOut(t),n&&(pt(this._container,"leaflet-interactive"),this._fireEvent([n],t,"mouseover"),this._hoveredLayer=n)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],t)},_fireEvent:function(t,i,e){this._map._fireDOMEvent(i,e||i.type,t)},_bringToFront:function(t){var i=t._order,e=i.next,n=i.prev;e&&(e.prev=n,n?n.next=e:e&&(this._drawFirst=e),i.prev=this._drawLast,this._drawLast.next=i,i.next=null,this._drawLast=i,this._requestRedraw(t))},_bringToBack:function(t){var i=t._order,e=i.next,n=i.prev;n&&(n.next=e,e?e.prev=n:n&&(this._drawLast=n),i.prev=null,i.next=this._drawFirst,this._drawFirst.prev=i,this._drawFirst=i,this._requestRedraw(t))}}),gn=function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return document.createElement("<lvml:"+t+' class="lvml">')}}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)}
vendor: 2,722 bytes, line 5
5,_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))}
vendor: 13,842 bytes, line 5
5,_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.x<i.min.x&&(t.x=this._viscousLimit(t.x,i.min.x)),t.y<i.min.y&&(t.y=this._viscousLimit(t.y,i.min.y)),t.x>i.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)<Math.abs(s+e)?o:s;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=r},_onDragEnd:function(t){var i=this._map,e=i.options,n=!e.inertia||this._times.length<2;if(i.fire("dragend",t),n)i.fire("moveend");else{this._prunePositions(+new Date);var o=this._lastPos.subtract(this._positions[0]),s=(this._lastTime-this._times[0])/1e3,r=e.easeLinearity,a=o.multiplyBy(r/s),h=a.distanceTo([0,0]),u=Math.min(e.inertiaMaxSpeed,h),l=a.multiplyBy(u/h),c=u/(e.inertiaDeceleration*r),_=l.multiplyBy(-c/2).round();_.x||_.y?(_=i._limitOffset(_,i.options.maxBounds),f(function(){i.panBy(_,{duration:c,easeLinearity:r,noMoveStart:!0,animate:!0})})):i.fire("moveend")}}});Le.addInitHook("addHandler","dragging",bn),Le.mergeOptions({keyboard:!0,keyboardPanDelta:80});var Tn=Ze.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(t){this._map=t,this._setPanDelta(t.options.keyboardPanDelta),this._setZoomDelta(t.options.zoomDelta)},addHooks:function(){var t=this._map._container;t.tabIndex<=0&&(t.tabIndex="0"),V(t,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),q(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var t=document.body,i=document.documentElement,e=t.scrollTop||i.scrollTop,n=t.scrollLeft||i.scrollLeft;this._map._container.focus(),window.scrollTo(n,e)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(t){var i,e,n=this._panKeys={},o=this.keyCodes;for(i=0,e=o.left.length;i<e;i++)n[o.left[i]]=[-1*t,0];for(i=0,e=o.right.length;i<e;i++)n[o.right[i]]=[t,0];for(i=0,e=o.down.length;i<e;i++)n[o.down[i]]=[0,t];for(i=0,e=o.up.length;i<e;i++)n[o.up[i]]=[0,-1*t]},_setZoomDelta:function(t){var i,e,n=this._zoomKeys={},o=this.keyCodes;for(i=0,e=o.zoomIn.length;i<e;i++)n[o.zoomIn[i]]=t;for(i=0,e=o.zoomOut.length;i<e;i++)n[o.zoomOut[i]]=-t},_addHooks:function(){V(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){q(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var i,e=t.keyCode,n=this._map;if(e in this._panKeys){if(n._panAnim&&n._panAnim._inProgress)return;i=this._panKeys[e],t.shiftKey&&(i=w(i).multiplyBy(3)),n.panBy(i),n.options.maxBounds&&n.panInsideBounds(n.options.maxBounds)}else if(e in this._zoomKeys)n.setZoom(n.getZoom()+(t.shiftKey?3:1)*this._zoomKeys[e]);else{if(27!==e||!n._popup||!n._popup.options.closeOnEscapeKey)return;n.closePopup()}Q(t)}}});Le.addInitHook("addHandler","keyboard",Tn),Le.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var zn=Ze.extend({addHooks:function(){V(this._map._container,"mousewheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){q(this._map._container,"mousewheel",this._onWheelScroll,this)},_onWheelScroll:function(t){var i=it(t),n=this._map.options.wheelDebounceTime;this._delta+=i,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var o=Math.max(n-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(e(this._performZoom,this),o),Q(t)},_performZoom:function(){var t=this._map,i=t.getZoom(),e=this._map.options.zoomSnap||0;t._stop();var n=this._delta/(4*this._map.options.wheelPxPerZoomLevel),o=4*Math.log(2/(1+Math.exp(-Math.abs(n))))/Math.LN2,s=e?Math.ceil(o/e)*e:o,r=t._limitZoom(i+(this._delta>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._zoom<i.getMinZoom()&&s<1||this._zoom>i.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.1",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.geoJ
5son=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)}}); 6 7/* MapLibre GL JS is licensed under the 3-Clause BSD License. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v3.6.2/LICENSE.txt */ 8(function (global, factory) { 9typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 10typeof define === 'function' && define.amd ? define(factory) : 11(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.maplibregl = factory()); 12})(this, (function () { 'use strict'; 13 14/* eslint-disable */ 15 16var shared, worker, maplibregl; 17// define gets called three times: one for each chunk. we rely on the order 18// they're imported to know which is which 19function define(_, chunk) { 20 if (!shared) { 21 shared = chunk; 22 } else if (!worker) { 23 worker = chunk; 24 } else { 25 var workerBundleString = 'var sharedChunk = {}; (' + shared + ')(sharedChunk); (' + worker + ')(sharedChunk);' 26 27 var sharedChunk = {}; 28 shared(sharedChunk); 29 maplibregl = chunk(sharedChunk); 30 if (typeof window !== 'undefined') { 31 maplibregl.workerUrl = window.URL.createObjectURL(new Blob([workerBundleString], { type: 'text/javascript' })); 32 } 33 } 34} 35 36 37define(["exports"],(function(t){"use strict";function e(t,e,r,n){return new(r||(r=Promise))((function(i,a){function s(t){try{l(n.next(t));}catch(t){a(t);}}function o(t){try{l(n.throw(t));}catch(t){a(t);}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e);}))).then(s,o);}l((n=n.apply(t,e||[])).next());}))}function r(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}"function"==typeof SuppressedError&&SuppressedError;var n=i;function i(t,e){this.x=t,this.y=e;}i.prototype={clone:function(){return new i(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[2]*this.x+t[3]*this.y;return this.x=t[0]*this.x+t[1]*this.y,this.y=e,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=r*this.x+e*this.y;return this.x=e*this.x-r*this.y,this.y=n,this}
vendor: 4,561 bytes, line 37
37,_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=e.x+r*(this.x-e.x)-n*(this.y-e.y),this.y=i,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},i.convert=function(t){return t instanceof i?t:Array.isArray(t)?new i(t[0],t[1]):t};var a=r(n),s=o;function o(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=e,this.p2x=r,this.p2y=n;}o.prototype={sampleCurveX:function(t){return ((this.ax*t+this.bx)*t+this.cx)*t},sampleCurveY:function(t){return ((this.ay*t+this.by)*t+this.cy)*t},sampleCurveDerivativeX:function(t){return (3*this.ax*t+2*this.bx)*t+this.cx},solveCurveX:function(t,e){if(void 0===e&&(e=1e-6),t<0)return 0;if(t>1)return 1;for(var r=t,n=0;n<8;n++){var i=this.sampleCurveX(r)-t;if(Math.abs(i)<e)return r;var a=this.sampleCurveDerivativeX(r);if(Math.abs(a)<1e-6)break;r-=i/a;}var s=0,o=1;for(r=t,n=0;n<20&&(i=this.sampleCurveX(r),!(Math.abs(i-t)<e));n++)t>i?s=r:o=r,r=.5*(o-s)+s;return r},solve:function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))}};var l=r(s);let u,c;function h(){return null==u&&(u="undefined"!=typeof OffscreenCanvas&&new OffscreenCanvas(1,1).getContext("2d")&&"function"==typeof createImageBitmap),u}function p(){if(null==c&&(c=!1,h())){const t=5,e=new OffscreenCanvas(t,t).getContext("2d",{willReadFrequently:!0});if(e){for(let r=0;r<t*t;r++){const n=4*r;e.fillStyle=`rgb(${n},${n+1},${n+2})`,e.fillRect(r%t,Math.floor(r/t),1,1);}const r=e.getImageData(0,0,t,t).data;for(let e=0;e<t*t*4;e++)if(e%4!=3&&r[e]!==e){c=!0;break}}}return c||!1}function f(t,e,r,n){const i=new l(t,e,r,n);return function(t){return i.solve(t)}}const d=f(.25,.1,.25,1);function y(t,e,r){return Math.min(r,Math.max(e,t))}function m(t,e,r){const n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function g(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}let x=1;function v(t,e,r){const n={};for(const i in t)n[i]=e.call(r||this,t[i],i,t);return n}function b(t,e,r){const n={};for(const i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function w(t){return Array.isArray(t)?t.map(w):"object"==typeof t&&t?v(t,w):t}const _={};function A(t){_[t]||("undefined"!=typeof console&&console.warn(t),_[t]=!0);}function S(t,e,r){return (r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function k(t){let e=0;for(let r,n,i=0,a=t.length,s=a-1;i<a;s=i++)r=t[i],n=t[s],e+=(n.x-r.x)*(r.y+n.y);return e}function I(){return "undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof self&&self instanceof WorkerGlobalScope}let z=null;function M(t){return "undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap}const C="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function B(t,r,n,i,a){return e(this,void 0,void 0,(function*(){if("undefined"==typeof VideoFrame)throw new Error("VideoFrame not supported");const e=new VideoFrame(t,{timestamp:0});try{const s=null==e?void 0:e.format;if(!s||!s.startsWith("BGR")&&!s.startsWith("RGB"))throw new Error(`Unrecognized format ${s}`);const o=s.startsWith("BGR"),l=new Uint8ClampedArray(i*a*4);if(yield e.copyTo(l,function(t,e,r,n,i){const a=4*Math.max(-e,0),s=(Math.max(0,r)-r)*n*4+a,o=4*n,l=Math.max(0,e),u=Math.max(0,r);return {rect:{x:l,y:u,width:Math.min(t.width,e+n)-l,height:Math.min(t.height,r+i)-u},layout:[{offset:s,stride:o}]}}(t,r,n,i,a)),o)for(let t=0;t<l.length;t+=4){const e=l[t];l[t]=l[t+2],l[t+2]=e;}return l}finally{e.close();}}))}let P,V,E,F;const T={now:"undefined"!=typeof performance&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),frame(t){const e=requestAnimationFrame(t);return {cancel:()=>cancelAnimationFrame(e)}},getImageData(t,e=0){return this.getImageCanvasContext(t).getImageData(-e,-e,t.width+2*e,t.height+2*e)},getImageCanvasContext(t){const e=window.document.createElement("canvas"),r=e.getContext("2d",{willReadFrequently:!0});if(!r)throw new Error("failed to create canvas 2d context");return e.width=t.width,e.height=t.height,r.drawImage(t,0,0,t.width,t.height),r},resolveURL:t=>(E||(E=document.createElement("a")),E.href=t,E.href),hardwareConcurrency:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return !!matchMedia&&(null==F&&(F=matchMedia("(prefers-reduced-motion: reduce)")),F.matches)}},$={MAX_PARALLEL_IMAGE_REQUESTS:16,MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:8,MAX_TILE_CACHE_ZOOM_LEVELS:5,REGISTERED_PROTOCOLS:{},WORKER_URL:""};
37class L extends Error{constructor(t,e,r,n){super(`AJAXError: ${e} (${t}): ${r}`),this.status=t,this.statusText=e,this.url=r,this.body=n;}}const D=I()?()=>self.worker&&self.worker.referrer:()=>("blob:"===window.location.protocol?window.parent:window).location.href,O=t=>$.REGISTERED_PROTOCOLS[t.substring(0,t.indexOf("://"))];function U(t,e){const r=new AbortController,n=new Request(t.url,{method:t.method||"GET",body:t.body,credentials:t.credentials,headers:t.headers,cache:t.cache,referrer:D(),signal:r.signal});let i=!1,a=!1;"json"===t.type&&n.headers.set("Accept","application/json");return a||fetch(n).then((r=>r.ok?(r=>{("arrayBuffer"===t.type||"image"===t.type?r.arrayBuffer():"json"===t.type?r.json():r.text()).then((t=>{a||(i=!0,e(null,t,r.headers.get("Cache-Control"),r.headers.get("Expires")));})).catch((t=>{a||e(new Error(t.message));}));})(r):r.blob().then((n=>e(new L(r.status,r.statusText,t.url,n)))))).catch((t=>{20!==t.code&&e(new Error(t.message));})),{cancel:()=>{a=!0,i||r.abort();}}}const R=function(t,e){if(/:\/\//.test(t.url)&&!/^https?:|^file:/.test(t.url)){if(I()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",t,e);if(!I())return (O(t.url)||U)(t,e)}if(!(/^file:/.test(r=t.url)||/^file:/.test(D())&&!/^\w+:/.test(r))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return U(t,e);if(I()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",t,e,void 0,!0)}var r;return function(t,e){const r=new XMLHttpRequest;r.open(t.method||"GET",t.url,!0),"arrayBuffer"!==t.type&&"image"!==t.type||(r.responseType="arraybuffer");for(const e in t.headers)r.setRequestHeader(e,t.headers[e]);return "json"===t.type&&(r.responseType="text",r.setRequestHeader("Accept","application/json")),r.withCredentials="include"===t.credentials,r.onerror=()=>{e(new Error(r.statusText));},r.onload=()=>{if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){let 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 {const n=new Blob([r.response],{type:r.getResponseHeader("Content-Type")});e(new L(r.status,r.statusText,t.url,n));}},r.send(t.body),{cancel:()=>r.abort()}}(t,e)},q=function(t,e){return R(g(t,{type:"arrayBuffer"}),e)};function j(t){if(!t||t.indexOf("://")<=0||0===t.indexOf("data:image/")||0===t.indexOf("blob:"))return !0;const e=new URL(t),r=window.location;return e.protocol===r.protocol&&e.host===r.host}function N(t,e,r){r[t]&&-1!==r[t].indexOf(e)||(r[t]=r[t]||[],r[t].push(e));}function Z(t,e,r){if(r&&r[t]){const n=r[t].indexOf(e);-1!==n&&r[t].splice(n,1);}}class K{constructor(t,e={}){g(this,e),this.type=t;}}class G extends K{constructor(t,e={}){super("error",g({error:t},e));}}class J{on(t,e){return this._listeners=this._listeners||{},N(t,e,this._listeners),this}off(t,e){return Z(t,e,this._listeners),Z(t,e,this._oneTimeListeners),this}once(t,e){return e?(this._oneTimeListeners=this._oneTimeListeners||{},N(t,e,this._oneTimeListeners),this):new Promise((e=>this.once(t,e)))}fire(t,e){"string"==typeof t&&(t=new K(t,e||{}));const r=t.type;if(this.listens(r)){t.target=this;const e=this._listeners&&this._listeners[r]?this._listeners[r].slice():[];for(const r of e)r.call(this,t);const n=this._oneTimeListeners&&this._oneTimeListeners[r]?this._oneTimeListeners[r].slice():[];for(const e of n)Z(r,e,this._oneTimeListeners),e.call(this,t);const i=this._eventedParent;i&&(g(t,"function"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),i.fire(t));}else t instanceof G&&console.error(t.error);return this}listens(t){return this._listeners&&this._listeners[t]&&this._listeners[t].length>0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)}setEventedParent(t,e){return this._eventedParent=t,this._eventedParentData=e,this}}var X={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"}
vendor: 3,526 bytes, line 37
37,bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},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"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{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"},volatile:{type:"boolean",default:!1},"*":{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:{},custom:{}},default:"mapbox"},redFactor:{type:"number",default:1},blueFactor:{type:"number",default:1},greenFactor:{type:"number",default:1},baseShift:{type:"number",default:0},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{required:!0,type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},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
vendor: 10,514 bytes, line 37
37","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},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"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!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",{"!":"icon-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},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:"resolvedImage",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:"padding",default:[2],units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"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:{},"viewport-glyph":{},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:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-variable-anchor-offset":{type:"variableAnchorOffsetCollection",requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!0,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",{"!":"text-variable-anchor"}],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-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,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",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field",{"!":"text-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},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"}},
vendor: 1,289 bytes, line 37
37filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},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
vendor: 14,262 bytes, line 37
37,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},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:"resolvedImage",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:"resolvedImage",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:"resolvedImage",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,overridable:!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:"resolvedImage",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"}},promoteId:{"*":{type:"string"}}};const
37Y=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function H(t,e){const r={};for(const e in t)"ref"!==e&&(r[e]=t[e]);return Y.forEach((t=>{t in e&&(r[t]=e[t]);})),r}function W(t,e){if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return !1;for(let r=0;r<t.length;r++)if(!W(t[r],e[r]))return !1;return !0}if("object"==typeof t&&null!==t&&null!==e){if("object"!=typeof e)return !1;if(Object.keys(t).length!==Object.keys(e).length)return !1;for(const r in t)if(!W(t[r],e[r]))return !1;return !0}return t===e}const Q={setStyle:"setStyle",addLayer:"addLayer",removeLayer:"removeLayer",setPaintProperty:"setPaintProperty",setLayoutProperty:"setLayoutProperty",setFilter:"setFilter",addSource:"addSource",removeSource:"removeSource",setGeoJSONSourceData:"setGeoJSONSourceData",setLayerZoomRange:"setLayerZoomRange",setLayerProperty:"setLayerProperty",setCenter:"setCenter",setZoom:"setZoom",setBearing:"setBearing",setPitch:"setPitch",setSprite:"setSprite",setGlyphs:"setGlyphs",setTransition:"setTransition",setLight:"setLight"};
vendor: 21,248 bytes, line 37
37function tt(t,e,r){r.push({command:Q.addSource,args:[t,e[t]]});}function et(t,e,r){e.push({command:Q.removeSource,args:[t]}),r[t]=!0;}function rt(t,e,r,n){et(t,r,n),tt(t,e,r);}function nt(t,e,r){let n;for(n in t[r])if(Object.prototype.hasOwnProperty.call(t[r],n)&&"data"!==n&&!W(t[r][n],e[r][n]))return !1;for(n in e[r])if(Object.prototype.hasOwnProperty.call(e[r],n)&&"data"!==n&&!W(t[r][n],e[r][n]))return !1;return !0}function it(t,e,r,n,i,a){let s;for(s in e=e||{},t=t||{})Object.prototype.hasOwnProperty.call(t,s)&&(W(t[s],e[s])||r.push({command:a,args:[n,s,e[s],i]}));for(s in e)Object.prototype.hasOwnProperty.call(e,s)&&!Object.prototype.hasOwnProperty.call(t,s)&&(W(t[s],e[s])||r.push({command:a,args:[n,s,e[s],i]}));}function at(t){return t.id}function st(t,e){return t[e.id]=e,t}class ot{constructor(t,e,r,n){this.message=(t?`${t}: `:"")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__);}}function lt(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}class ut extends Error{constructor(t,e){super(e),this.message=e,this.key=t;}}class ct{constructor(t,e=[]){this.parent=t,this.bindings={};for(const[t,r]of e)this.bindings[t]=r;}concat(t){return new ct(this,t)}get(t){if(this.bindings[t])return this.bindings[t];if(this.parent)return this.parent.get(t);throw new Error(`${t} not found in scope.`)}has(t){return !!this.bindings[t]||!!this.parent&&this.parent.has(t)}}const ht={kind:"null"},pt={kind:"number"},ft={kind:"string"},dt={kind:"boolean"},yt={kind:"color"},mt={kind:"object"},gt={kind:"value"},xt={kind:"collator"},vt={kind:"formatted"},bt={kind:"padding"},wt={kind:"resolvedImage"},_t={kind:"variableAnchorOffsetCollection"};function At(t,e){return {kind:"array",itemType:t,N:e}}function St(t){if("array"===t.kind){const e=St(t.itemType);return "number"==typeof t.N?`array<${e}, ${t.N}>`:"value"===t.itemType.kind?"array":`array<${e}>`}return t.kind}const kt=[ht,pt,ft,dt,yt,vt,mt,At(gt),bt,wt,_t];function It(t,e){if("error"===e.kind)return null;if("array"===t.kind){if("array"===e.kind&&(0===e.N&&"value"===e.itemType.kind||!It(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(const t of kt)if(!It(t,e))return null}return `Expected ${St(t)} but found ${St(e)} instead.`}function zt(t,e){return e.some((e=>e.kind===t.kind))}function Mt(t,e){return e.some((e=>"null"===e?null===t:"array"===e?Array.isArray(t):"object"===e?t&&!Array.isArray(t)&&"object"==typeof t:e===typeof t))}function Ct(t,e){return "array"===t.kind&&"array"===e.kind?t.itemType.kind===e.itemType.kind&&"number"==typeof t.N:t.kind===e.kind}const Bt=.96422,Pt=.82521,Vt=4/29,Et=6/29,Ft=3*Et*Et,Tt=Et*Et*Et,$t=Math.PI/180,Lt=180/Math.PI;function Dt(t){return (t%=360)<0&&(t+=360),t}function Ot([t,e,r,n]){let i,a;const s=Rt((.2225045*(t=Ut(t))+.7168786*(e=Ut(e))+.0606169*(r=Ut(r)))/1);t===e&&e===r?i=a=s:(i=Rt((.4360747*t+.3850649*e+.1430804*r)/Bt),a=Rt((.0139322*t+.0971045*e+.7141733*r)/Pt));const o=116*s-16;return [o<0?0:o,500*(i-s),200*(s-a),n]}function Ut(t){return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Rt(t){return t>Tt?Math.pow(t,1/3):t/Ft+Vt}function qt([t,e,r,n]){let i=(t+16)/116,a=isNaN(e)?i:i+e/500,s=isNaN(r)?i:i-r/200;return i=1*Nt(i),a=Bt*Nt(a),s=Pt*Nt(s),[jt(3.1338561*a-1.6168667*i-.4906146*s),jt(-.9787684*a+1.9161415*i+.033454*s),jt(.0719453*a-.2289914*i+1.4052427*s),n]}function jt(t){return (t=t<=.00304?12.92*t:1.055*Math.pow(t,1/2.4)-.055)<0?0:t>1?1:t}function Nt(t){return t>Et?t*t*t:Ft*(t-Vt)}function Zt(t){return parseInt(t.padEnd(2,t),16)/255}function Kt(t,e){return Gt(e?t/100:t,0,1)}function Gt(t,e,r){return Math.min(Math.max(e,t),r)}function Jt(t){return !t.some(Number.isNaN)}const Xt={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};class Yt{constructor(t,e,r,n=1,i=!0){this.r=t,this.g=e,this.b=r,this.a=n,i||(this.r*=n,this.g*=n,this.b*=n,n||this.overwriteGetter("rgb",[t,e,r,n]));}static parse(t){if(t instanceof Yt)return t;if("string"!=typeof t)return;const e=function(t){if("transparent"===(t=t.toLowerCase().trim()))return [0,0,0,0];const e=Xt[t];if(e){const[t,r,n]=e;return [t/255,r/255,n/255,1]}if(t.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(t)){const e=t.length<6?1:2;let r=1;return [Zt(t.slice(r,r+=e)),Zt(t.slice(r,r+=e)),Zt(t.slice(r,r+=e)),Zt(t.slice(r,r+e)||"ff")]}if(t.startsWith("rgb")){const e=t.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(e){const[t,r,n,i,a,s,o,l,u,c,h,p]=e,f=[i||" ",o||" ",c].join("");if(" "===f||" /"===f||",,"===f||",,,"===f){const t=[n,s,u].join(""),e="%%%"===t?100:""===t?255:0;if(e){const t=[Gt(+r/e,0,1),Gt(+a/e,0,1),Gt(+l/e,0,1),h?Kt(+h,p):1];if(Jt(t))return t}}return}}const r=t.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(r){const[t,e,n,i,a,s,o,l,u]=r,c=[n||" ",a||" ",o].join("");if(" "===c||" /"===c||",,"===c||",,,"===c){const t=[+e,Gt(+i,0,100),Gt(+s,0,100),l?Kt(+l,u):1];if(Jt(t))return function([t,e,r,n]){function i(n){const i=(n+t/30)%12,a=e*Math.min(r,1-r);return r-a*Math.max(-1,Math.min(i-3,9-i,1))}return t=Dt(t),e/=100,r/=100,[i(0),i(8),i(4),n]}(t)}}}(t);return e?new Yt(...e,!1):void 0}get rgb(){const{r:t,g:e,b:r,a:n}=this,i=n||1/0;return this.overwriteGetter("rgb",[t/i,e/i,r/i,n])}get hcl(){return this.overwriteGetter("hcl",function(t){const[e,r,n,i]=Ot(t),a=Math.sqrt(r*r+n*n);return [Math.round(1e4*a)?Dt(Math.atan2(n,r)*Lt):NaN,a,e,i]}(this.rgb))}get lab(){return this.overwriteGetter("lab",Ot(this.rgb))}overwriteGetter(t,e){return Object.defineProperty(this,t,{value:e}),e}toString(){const[t,e,r,n]=this.rgb;return `rgba(${[t,e,r].map((t=>Math.round(255*t))).join(",")},${n})`}}Yt.black=new Yt(0,0,0,1),Yt.white=new Yt(1,1,1,1),Yt.transparent=new Yt(0,0,0,0),Yt.red=new Yt(1,0,0,1);class Ht{constructor(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"});}compare(t,e){return this.collator.compare(t,e)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Wt{constructor(t,e,r,n,i){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i;}}class Qt{constructor(t){this.sections=t;}static fromString(t){return new Qt([new Wt(t,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some((t=>0!==t.text.length||t.image&&0!==t.image.name.length))}static factory(t){return t instanceof Qt?t:Qt.fromString(t)}toString(){return 0===this.sections.length?"":this.sections.map((t=>t.text)).join("")}}class te{constructor(t){this.values=t.slice();}static parse(t){if(t instanceof te)return t;if("number"==typeof t)return new te([t,t,t,t]);if(Array.isArray(t)&&!(t.length<1||t.length>4)){for(const e of t)if("number"!=typeof e)return;switch(t.length){case 1:t=[t[0],t[0],t[0],t[0]];break;case 2:t=[t[0],t[1],t[0],t[1]];break;case 3:t=[t[0],t[1],t[2],t[1]];}return new te(t)}}toString(){return JSON.stringify(this.values)}}const ee=new Set(["center","left","right","top","bottom","top-left","top-right","bottom-left","bottom-right"]);class re{constructor(t){this.values=t.slice();}static parse(t){if(t instanceof re)return t;if(Array.isArray(t)&&!(t.length<1)&&t.length%2==0){for(let e=0;e<t.length;e+=2){const r=t[e],n=t[e+1];if("string"!=typeof r||!ee.has(r))return;if(!Array.isArray(n)||2!==n.length||"number"!=typeof n[0]||"number"!=typeof n[1])return}return new re(t)}}toString(){return JSON.stringify(this.values)}}class ne{constructor(t){this.name=t.name,this.available=t.available;}toString(){return this.name}static fromString(t){return t?new ne({name:t,available:!1}):null}}function ie(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 ae(t){if(null===t||"string"==typeof t||"boolean"==typeof t||"number"==typeof t||t instanceof Yt||t instanceof Ht||t instanceof Qt||t instanceof te||t instanceof re||t instanceof ne)return !0;if(Array.isArray(t)){for(const e of t)if(!ae(e))return !1;return !0}if("object"==typeof t){for(const e in t)if(!ae(t[e]))return !1;return !0}return !1}function se(t){if(null===t)return ht;if("string"==typeof t)return ft;if("boolean"==typeof t)return dt;if("number"==typeof t)return pt;if(t instanceof Yt)return yt;if(t instanceof Ht)return xt;if(t instanceof Qt)return vt;if(t instanceof te)return bt;if(t instanceof re)return _t;if(t instanceof ne)return wt;if(Array.isArray(t)){const e=t.length;let r;for(const e of t){const t=se(e);if(r){if(r===t)continue;r=gt;break}r=t;}return At(r||gt,e)}return mt}function oe(t){const e=typeof t;return null===t?"":"string"===e||"number"===e||"boolean"===e?String(t):t instanceof Yt||t instanceof Qt||t instanceof te||t instanceof re||t instanceof ne?t.toString():JSON.stringify(t)}class le{constructor(t,e){this.type=t,this.value=e;}static parse(t,e){if(2!==t.length)return e.error(`'literal' expression requires exactly one argument, but found ${t.length-1} instead.`);if(!ae(t[1]))return e.error("invalid value");const r=t[1];let n=se(r);const i=e.expectedType;return "array"!==n.kind||0!==n.N||!i||"array"!==i.kind||"number"==typeof i.N&&0!==i.N||(n=i),new le(n,r)}evaluate(){return this.value}eachChild(){}outputDefined(){return !0}}class ue{constructor(t){this.name="ExpressionEvaluationError",this.message=t;}toJSON(){return this.message}}const ce={string:ft,number:pt,boolean:dt,object:mt};class he{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");let r,n=1;const i=t[0];if("array"===i){let i,a;if(t.length>2){const r=t[1];if("string"!=typeof r||!(r in ce)||"object"===r)return e.error('The item type argument of "array" must be one of string, number, boolean',1);i=ce[r],n++;}else i=gt;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);a=t[2],n++;}r=At(i,a);}else {if(!ce[i])throw new Error(`Types doesn't contain name = ${i}`);r=ce[i];}const a=[];for(;n<t.length;n++){const r=e.parse(t[n],n,gt);if(!r)return null;a.push(r);}return new he(r,a)}evaluate(t){for(let e=0;e<this.args.length;e++){const r=this.args[e].evaluate(t);if(!It(this.type,se(r)))return r;if(e===this.args.length-1)throw new ue(`Expected value to be of type ${St(this.type)}, but found ${St(se(r))} instead.`)}throw new Error}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}}const pe={"to-boolean":dt,"to-color":yt,"to-number":pt,"to-string":ft};class fe{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");const r=t[0];if(!pe[r])throw new Error(`Can't parse ${r} as it is not part of the known types`);if(("to-boolean"===r||"to-string"===r)&&2!==t.length)return e.error("Expected one argument.");const n=pe[r],i=[];for(let r=1;r<t.length;r++){const n=e.parse(t[r],r,gt);if(!n)return null;i.push(n);}return new fe(n,i)}evaluate(t){switch(this.type.kind){case"boolean":return Boolean(this.args[0].evaluate(t));case"color":{let e,r;for(const n of this.args){if(e=n.evaluate(t),r=null,e instanceof Yt)return e;if("string"==typeof e){const r=t.parseColor(e);if(r)return r}else if(Array.isArray(e)&&(r=e.length<3||e.length>4?`Invalid rbga value ${JSON.stringify(e)}: expected an array containing either three or four numeric values.`:ie(e[0],e[1],e[2],e[3]),!r))return new Yt(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new ue(r||`Could not parse color from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case"padding":{let e;for(const r of this.args){e=r.evaluate(t);const n=te.parse(e);if(n)return n}throw new ue(`Could not parse padding from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case"variableAnchorOffsetCollection":{let e;for(const r of this.args){e=r.evaluate(t);const n=re.parse(e);if(n)return n}throw new ue(`Could not parse variableAnchorOffsetCollection from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case"number":{let e=null;for(const r of this.args){if(e=r.evaluate(t),null===e)return 0;const n=Number(e);if(!isNaN(n))return n}throw new ue(`Could not convert ${JSON.stringify(e)} to number.`)}case"formatted":return Qt.fromString(oe(this.args[0].evaluate(t)));case"resolvedImage":return ne.fromString(oe(this.args[0].evaluate(t)));default:return oe(this.args[0].evaluate(t))}}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}}const de=["Unknown","Point","LineString","Polygon"];class ye{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null;}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?"number"==typeof this.feature.type?de[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(t){let e=this._parseColorCache[t];return e||(e=this._parseColorCache[t]=Yt.parse(t)),e}}class me{constructor(t,e,r=[],n,i=new ct,a=[]){this.registry=t,this.path=r,this.key=r.map((t=>`[${t}]`)).join(""),this.scope=i,this.errors=a,this.expectedType=n,this._isConstant=e;}parse(t,e,r,n,i={}){return e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)}_parse(t,e){function r(t,e,r){return "assert"===r?new he(e,[t]):"coerce"===r?new fe(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", []].');const 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;const i=this.registry[n];if(i){let n=i.parse(t,this);if(!n)return null;if(this.expectedType){const t=this.expectedType,i=n.type;if("string"!==t.kind&&"number"!==t.kind&&"boolean"!==t.kind&&"object"!==t.kind&&"array"!==t.kind||"value"!==i.kind)if("color"!==t.kind&&"formatted"!==t.kind&&"resolvedImage"!==t.kind||"value"!==i.kind&&"string"!==i.kind)if("padding"!==t.kind||"value"!==i.kind&&"number"!==i.kind&&"array"!==i.kind)if("variableAnchorOffsetCollection"!==t.kind||"value"!==i.kind&&"array"!==i.kind){if(this.checkSubtype(t,i))return null}else n=r(n,t,e.typeAnnotation||"coerce");else n=r(n,t,e.typeAnnotation||"coerce");else n=r(n,t,e.typeAnnotation||"coerce");else n=r(n,t,e.typeAnnotation||"assert");}if(!(n instanceof le)&&"resolvedImage"!==n.type.kind&&this._isConstant(n)){const t=new ye;try{n=new le(n.type,n.evaluate(t));}catch(t){return this.error(t.message),null}}return n}return this.error(`Unknown expression "${n}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(void 0===t?"'undefined' value invalid. Use null instead.":"object"==typeof t?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof t} instead.`)}concat(t,e,r){const n="number"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new me(this.registry,this._isConstant,n,e||null,i,this.errors)}error(t,...e){const r=`${this.key}${e.map((t=>`[${t}]`)).join("")}`;this.errors.push(new ut(r,t));}checkSubtype(t,e){const r=It(t,e);return r&&this.error(r),r}}class ge{constructor(t,e,r){this.type=xt,this.locale=r,this.caseSensitive=t,this.diacriticSensitive=e;}static parse(t,e){if(2!==t.length)return e.error("Expected one argument.");const r=t[1];if("object"!=typeof r||Array.isArray(r))return e.error("Collator options argument must be an object.");const n=e.parse(void 0!==r["case-sensitive"]&&r["case-sensitive"],1,dt);if(!n)return null;const i=e.parse(void 0!==r["diacritic-sensitive"]&&r["diacritic-sensitive"],1,dt);if(!i)return null;let a=null;return r.locale&&(a=e.parse(r.locale,1,ft),!a)?null:new ge(n,i,a)}evaluate(t){return new Ht(this.caseSensitive.evaluate(t),this.diacriticSensitive.evaluate(t),this.locale?this.locale.evaluate(t):null)}eachChild(t){t(this.caseSensitive),t(this.diacriticSensitive),this.locale&&t(this.locale);}outputDefined(){return !1}}const xe=8192;function ve(t,e){t[0]=Math.min(t[0],e[0]),t[1]=Math.min(t[1],e[1]),t[2]=Math.max(t[2],e[0]),t[3]=Math.max(t[3],e[1]);}function be(t,e){return !(t[0]<=e[0]||t[2]>=e[2]||t[1]<=e[1]||t[3]>=e[3])}function we(t,e){const r=(180+t[0])/360,n=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t[1]*Math.PI/360)))/360,i=Math.pow(2,e.z);return [Math.round(r*i*xe),Math.round(n*i*xe)]}function _e(t,e,r){const n=t[0]-e[0],i=t[1]-e[1],a=t[0]-r[0],s=t[1]-r[1];return n*s-a*i==0&&n*a<=0&&i*s<=0}function Ae(t,e){let r=!1;for(let s=0,o=e.length;s<o;s++){const o=e[s];for(let e=0,s=o.length;e<s-1;e++){if(_e(t,o[e],o[e+1]))return !1;(i=o[e])[1]>(n=t)[1]!=(a=o[e+1])[1]>n[1]&&n[0]<(a[0]-i[0])*(n[1]-i[1])/(a[1]-i[1])+i[0]&&(r=!r);}}var n,i,a;return r}function Se(t,e){for(let r=0;r<e.length;r++)if(Ae(t,e[r]))return !0;return !1}function ke(t,e,r,n){const i=n[0]-r[0],a=n[1]-r[1],s=(t[0]-r[0])*a-i*(t[1]-r[1]),o=(e[0]-r[0])*a-i*(e[1]-r[1]);return s>0&&o<0||s<0&&o>0}function Ie(t,e,r){for(const u of r)for(let r=0;r<u.length-1;++r)if(0!=(o=[(s=u[r+1])[0]-(a=u[r])[0],s[1]-a[1]])[0]*(l=[(i=e)[0]-(n=t)[0],i[1]-n[1]])[1]-o[1]
vendor: 4,893 bytes, line 37
37*l[0]&&ke(n,i,a,s)&&ke(a,s,n,i))return !0;var n,i,a,s,o,l;return !1}function ze(t,e){for(let r=0;r<t.length;++r)if(!Ae(t[r],e))return !1;for(let r=0;r<t.length-1;++r)if(Ie(t[r],t[r+1],e))return !1;return !0}function Me(t,e){for(let r=0;r<e.length;r++)if(ze(t,e[r]))return !0;return !1}function Ce(t,e,r){const n=[];for(let i=0;i<t.length;i++){const a=[];for(let n=0;n<t[i].length;n++){const s=we(t[i][n],r);ve(e,s),a.push(s);}n.push(a);}return n}function Be(t,e,r){const n=[];for(let i=0;i<t.length;i++){const a=Ce(t[i],e,r);n.push(a);}return n}function Pe(t,e,r,n){if(t[0]<r[0]||t[0]>r[2]){const e=.5*n;let i=t[0]-r[0]>e?-n:r[0]-t[0]>e?n:0;0===i&&(i=t[0]-r[2]>e?-n:r[2]-t[0]>e?n:0),t[0]+=i;}ve(e,t);}function Ve(t,e,r,n){const i=Math.pow(2,n.z)*xe,a=[n.x*xe,n.y*xe],s=[];for(const n of t)for(const t of n){const n=[t.x+a[0],t.y+a[1]];Pe(n,e,r,i),s.push(n);}return s}function Ee(t,e,r,n){const i=Math.pow(2,n.z)*xe,a=[n.x*xe,n.y*xe],s=[];for(const r of t){const t=[];for(const n of r){const r=[n.x+a[0],n.y+a[1]];ve(e,r),t.push(r);}s.push(t);}if(e[2]-e[0]<=i/2){(o=e)[0]=o[1]=1/0,o[2]=o[3]=-1/0;for(const t of s)for(const n of t)Pe(n,e,r,i);}var o;return s}class Fe{constructor(t,e){this.type=dt,this.geojson=t,this.geometries=e;}static parse(t,e){if(2!==t.length)return e.error(`'within' expression requires exactly one argument, but found ${t.length-1} instead.`);if(ae(t[1])){const e=t[1];if("FeatureCollection"===e.type)for(let t=0;t<e.features.length;++t){const r=e.features[t].geometry.type;if("Polygon"===r||"MultiPolygon"===r)return new Fe(e,e.features[t].geometry)}else if("Feature"===e.type){const t=e.geometry.type;if("Polygon"===t||"MultiPolygon"===t)return new Fe(e,e.geometry)}else if("Polygon"===e.type||"MultiPolygon"===e.type)return new Fe(e,e)}return e.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(t){if(null!=t.geometry()&&null!=t.canonicalID()){if("Point"===t.geometryType())return function(t,e){const r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if("Polygon"===e.type){const a=Ce(e.coordinates,n,i),s=Ve(t.geometry(),r,n,i);if(!be(r,n))return !1;for(const t of s)if(!Ae(t,a))return !1}if("MultiPolygon"===e.type){const a=Be(e.coordinates,n,i),s=Ve(t.geometry(),r,n,i);if(!be(r,n))return !1;for(const t of s)if(!Se(t,a))return !1}return !0}(t,this.geometries);if("LineString"===t.geometryType())return function(t,e){const r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if("Polygon"===e.type){const a=Ce(e.coordinates,n,i),s=Ee(t.geometry(),r,n,i);if(!be(r,n))return !1;for(const t of s)if(!ze(t,a))return !1}if("MultiPolygon"===e.type){const a=Be(e.coordinates,n,i),s=Ee(t.geometry(),r,n,i);if(!be(r,n))return !1;for(const t of s)if(!Me(t,a))return !1}return !0}(t,this.geometries)}return !1}eachChild(){}outputDefined(){return !0}}class Te{constructor(t,e){this.type=e.type,this.name=t,this.boundExpression=e;}static parse(t,e){if(2!==t.length||"string"!=typeof t[1])return e.error("'var' expression requires exactly one string literal argument.");const r=t[1];return e.scope.has(r)?new Te(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)}evaluate(t){return this.boundExpression.evaluate(t)}eachChild(){}outputDefined(){return !1}}class $e{constructor(t,e,r,n){this.name=t,this.type=e,this._evaluate=r,this.args=n;}evaluate(t){return this._evaluate(t,this.args)}eachChild(t){this.args.forEach(t);}outputDefined(){return !1}static parse(t,e){const r=t[0],n=$e.definitions[r];if(!n)return e.error(`Unknown expression "${r}". If you wanted a literal array, use ["literal", [...]].`,0);const i=Array.isArray(n)?n[0]:n.type,a=Array.isArray(n)?[[n[1],n[2]]]:n.overloads,s=a.filter((([e])=>!Array.isArray(e)||e.length===t.length-1));let o=null;for(const[n,a]of s){o=new me(e.registry,Le,e.path,null,e.scope);const s=[];let l=!1;for(let e=1;e<t.length;e++){const r=t[e],i=Array.isArray(n)?n[e-1]:n.type,a=o.parse(r,1+s.length,i);if(!a){l=!0;break}s.push(a);}if(!l)if(Array.isArray(n)&&n.length!==s.length)o.error(`Expected ${n.length} arguments, but found ${s.length} instead.`);else {for(let t=0;t<s.length;t++){const e=Array.isArray(n)?n[t]:n.type,r=s[t];o.concat(t+1).checkSubtype(e,r.type);}if(0===o.errors.length)return new $e(r,i,a,s)}}if(1===s.length)e.errors.push(...o.errors);else {const r=(s.length?s:a).map((([t])=>{return e=t,Array.isArray(e)?`(${e.map(St).join(", ")})`:`(${St(e.type)}...)`;var e;})).join(" | "),n=[];for(let r=1;r<t.length;r++){const i=e.parse(t[r],1+n.length);if(!i)return null;n.push(St(i.type));}e.error(`Expected arguments of type ${r}, but found (${n.join(", ")}) instead.`);}return null}static register(t,e){$e.definitions=e;for(const r in e)t[r]=$e;}}function Le(t){if(t instanceof Te)return Le(t.boundExpression);if(t instanceof $e&&"error"===t.name)return !1;
vendor: 5,291 bytes, line 37
37if(t instanceof ge)return !1;if(t instanceof Fe)return !1;const e=t instanceof fe||t instanceof he;let r=!0;return t.eachChild((t=>{r=e?r&&Le(t):r&&t instanceof le;})),!!r&&De(t)&&Ue(t,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}function De(t){if(t instanceof $e){if("get"===t.name&&1===t.args.length)return !1;if("feature-state"===t.name)return !1;if("has"===t.name&&1===t.args.length)return !1;if("properties"===t.name||"geometry-type"===t.name||"id"===t.name)return !1;if(/^filter-/.test(t.name))return !1}if(t instanceof Fe)return !1;let e=!0;return t.eachChild((t=>{e&&!De(t)&&(e=!1);})),e}function Oe(t){if(t instanceof $e&&"feature-state"===t.name)return !1;let e=!0;return t.eachChild((t=>{e&&!Oe(t)&&(e=!1);})),e}function Ue(t,e){if(t instanceof $e&&e.indexOf(t.name)>=0)return !1;let r=!0;return t.eachChild((t=>{r&&!Ue(t,e)&&(r=!1);})),r}function Re(t,e){const r=t.length-1;let n,i,a=0,s=r,o=0;for(;a<=s;)if(o=Math.floor((a+s)/2),n=t[o],i=t[o+1],n<=e){if(o===r||e<i)return o;a=o+1;}else {if(!(n>e))throw new ue("Input is not a number.");s=o-1;}return 0}class qe{constructor(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(const[t,e]of r)this.labels.push(t),this.outputs.push(e);}static parse(t,e){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.");const r=e.parse(t[1],1,pt);if(!r)return null;const n=[];let i=null;e.expectedType&&"value"!==e.expectedType.kind&&(i=e.expectedType);for(let r=1;r<t.length;r+=2){const a=1===r?-1/0:t[r],s=t[r+1],o=r,l=r+1;if("number"!=typeof a)return e.error('Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.',o);if(n.length&&n[n.length-1][0]>=a)return e.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',o);const u=e.parse(s,l,i);if(!u)return null;i=i||u.type,n.push([a,u]);}return new qe(i,r,n)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[Re(e,n)].evaluate(t)}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}}function je(t,e,r){return t+r*(e-t)}function Ne(t,e,r){return t.map(((t,n)=>je(t,e[n],r)))}const Ze={number:je,color:function(t,e,r,n="rgb"){switch(n){case"rgb":{const[n,i,a,s]=Ne(t.rgb,e.rgb,r);return new Yt(n,i,a,s,!1)}case"hcl":{const[n,i,a,s]=t.hcl,[o,l,u,c]=e.hcl;let h,p;if(isNaN(n)||isNaN(o))isNaN(n)?isNaN(o)?h=NaN:(h=o,1!==a&&0!==a||(p=l)):(h=n,1!==u&&0!==u||(p=i));else {let t=o-n;o>n&&t>180?t-=360:o<n&&n-o>180&&(t+=360),h=n+r*t;}const[f,d,y,m]=function([t,e,r,n]){return t=isNaN(t)?0:t*$t,qt([r,Math.cos(t)*e,Math.sin(t)*e,n])}([h,null!=p?p:je(i,l,r),je(a,u,r),je(s,c,r)]);return new Yt(f,d,y,m,!1)}case"lab":{const[n,i,a,s]=qt(Ne(t.lab,e.lab,r));return new Yt(n,i,a,s,!1)}}},array:Ne,padding:function(t,e,r){return new te(Ne(t.values,e.values,r))},variableAnchorOffsetCollection:function(t,e,r){const n=t.values,i=e.values;if(n.length!==i.length)throw new ue(`Cannot interpolate values of different length. from: ${t.toString()}, to: ${e.toString()}`);const a=[];for(let t=0;t<n.length;t+=2){if(n[t]!==i[t])throw new ue(`Cannot interpolate values containing mismatched anchors. from[${t}]: ${n[t]}, to[${t}]: ${i[t]}`);a.push(n[t]);const[e,s]=n[t+1],[o,l]=i[t+1];a.push([je(e,o,r),je(s,l,r)]);}return new re(a)}};class Ke{constructor(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(const[t,e]of i)this.labels.push(t),this.outputs.push(e);}static interpolationFactor(t,e,r,n){let i=0;if("exponential"===t.name)i=Ge(e,t.base,r,n);else if("linear"===t.name)i=Ge(e,1,r,n);else if("cubic-bezier"===t.name){const a=t.controlPoints;i=new l(a[0],a[1],a[2],a[3]).solve(Ge(e,1,r,n));}return i}static parse(t,e){let[r,n,i,...a]=t;if(!Array.isArray(n)||0===n.length)return e.error("Expected an interpolation type expression.",1);if("linear"===n[0])n={name:"linear"};else if("exponential"===n[0]){const t=n[1];if("number"!=typeof t)return e.error("Exponential interpolation requires a numeric base.",1,1);n={name:"exponential",base:t};}else {if("cubic-bezier"!==n[0])return e.error(`Unknown interpolation type ${String(n[0])}`,1,0);{const t=n.slice(1);if(4!==t.length||t.some((t=>"number"!=typeof t||t<0||t>1)))return e.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);n={name:"cubic-bezier",controlPoints:t};}}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,pt),!i)return null;const s=[];let o=null;"interpolate-hcl"===r||"interpolate-lab"===r?o=yt:e.expectedType&&"value"!==e.expectedType.kind&&(o=e.expectedType);for(let t=0;t<a.length;t+=2){const r=a[t],n=a[t+1],i=t+3,l=t+4;if("number"!=typeof r)return e.error('Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not c
37omputed expressions) for the input values.',i);if(s.length&&s[s.length-1][0]>=r)return e.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',i);const u=e.parse(n,l,o);if(!u)return null;o=o||u.type,s.push([r,u]);}return Ct(o,pt)||Ct(o,yt)||Ct(o,bt)||Ct(o,_t)||Ct(o,At(pt))?new Ke(o,r,n,i,s):e.error(`Type ${St(o)} is not interpolatable.`)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);const a=Re(e,n),s=Ke.interpolationFactor(this.interpolation,n,e[a],e[a+1]),o=r[a].evaluate(t),l=r[a+1].evaluate(t);switch(this.operator){case"interpolate":return Ze[this.type.kind](o,l,s);case"interpolate-hcl":return Ze.color(o,l,s,"hcl");case"interpolate-lab":return Ze.color(o,l,s,"lab")}}eachChild(t){t(this.input);for(const e of this.outputs)t(e);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}}function Ge(t,e,r,n){const i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}class Je{constructor(t,e){this.type=t,this.args=e;}static parse(t,e){if(t.length<2)return e.error("Expectected at least one argument.");let r=null;const n=e.expectedType;n&&"value"!==n.kind&&(r=n);const i=[];for(const n of t.slice(1)){const t=e.parse(n,1+i.length,r,void 0,{typeAnnotation:"omit"});if(!t)return null;r=r||t.type,i.push(t);}if(!r)throw new Error("No output type");const a=n&&i.some((t=>It(n,t.type)));return new Je(a?gt:r,i)}evaluate(t){let e,r=null,n=0;for(const i of this.args)if(n++,r=i.evaluate(t),r&&r instanceof ne&&!r.available&&(e||(e=r.name),r=null,n===this.args.length&&(r=e)),null!==r)break;return r}eachChild(t){this.args.forEach(t);}outputDefined(){return this.args.every((t=>t.outputDefined()))}}class Xe{constructor(t,e){this.type=e.type,this.bindings=[].concat(t),this.result=e;}evaluate(t){return this.result.evaluate(t)}eachChild(t){for(const e of this.bindings)t(e[1]);t(this.result);}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found ${t.length-1} instead.`);const r=[];for(let n=1;n<t.length-1;n+=2){const i=t[n];if("string"!=typeof i)return e.error(`Expected string, but found ${typeof i} instead.`,n);if(/[^a-zA-Z0-9_]/.test(i))return e.error("Variable names must contain only alphanumeric characters or '_'.",n);const a=e.parse(t[n+1],n+1);if(!a)return null;r.push([i,a]);}const n=e.parse(t[t.length-1],t.length-1,e.expectedType,r);return n?new Xe(r,n):null}outputDefined(){return this.result.outputDefined()}}class Ye{constructor(t,e,r){this.type=t,this.index=e,this.input=r;}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,pt),n=e.parse(t[2],2,At(e.expectedType||gt));return r&&n?new Ye(n.type.itemType,r,n):null}evaluate(t){const e=this.index.evaluate(t),r=this.input.evaluate(t);if(e<0)throw new ue(`Array index out of bounds: ${e} < 0.`);if(e>=r.length)throw new ue(`Array index out of bounds: ${e} > ${r.length-1}.`);if(e!==Math.floor(e))throw new ue(`Array index must be an integer, but found ${e} instead.`);return r[e]}eachChild(t){t(this.index),t(this.input);}outputDefined(){return !1}}class He{constructor(t,e){this.type=dt,this.needle=t,this.haystack=e;}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,gt),n=e.parse(t[2],2,gt);return r&&n?zt(r.type,[dt,ft,pt,ht,gt])?new He(r,n):e.error(`Expected first argument to be of type boolean, string, number or null, but found ${St(r.type)} instead`):null}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return !1;if(!Mt(e,["boolean","string","number","null"]))throw new ue(`Expected first argument to be of type boolean, string, number or null, but found ${St(se(e))} instead.`);if(!Mt(r,["string","array"]))throw new ue(`Expected second argument to be of type array or string, but found ${St(se(r))} instead.`);return r.indexOf(e)>=0}eachChild(t){t(this.needle),t(this.haystack);}outputDefined(){return !0}}class We{constructor(t,e,r){this.type=pt,this.needle=t,this.haystack=e,this.fromIndex=r;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,gt),n=e.parse(t[2],2,gt);if(!r||!n)return null;if(!zt(r.type,[dt,ft,pt,ht,gt]))return e.error(`Expected first argument to be of type boolean, string, number or null, but found ${St(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,pt);return i?new We(r,n,i):null}return new We(r,n)}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!Mt(e,["boolean","string","number","null"]))throw new ue(`Expected first argument to be of type boolean, string, number or null, but found ${St(se(e))} instead.`);if(!Mt(r,["string","array"]))throw new ue(`Expected second argument to be of type array or string, but found ${St(se(r))} instead.`);if(this.fromIndex){const n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)}eachChild(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex);}outputDefined(){return !1}}class Qe{constructor(t,e,r,n,i,a){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=a;}static parse(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.");let r,n;e.expectedType&&"value"!==e.expectedType.kind&&(n=e.expectedType);const i={},a=[];for(let s=2;s<t.length-1;s+=2){let o=t[s];const l=t[s+1];Array.isArray(o)||(o=[o]);const u=e.concat(s);if(0===o.length)return u.error("Expected at least one branch label.");for(const t of o){if("number"!=typeof t&&"string"!=typeof t)return u.error("Branch labels must be numbers or strings.");if("number"==typeof t&&Math.abs(t)>Number.MAX_SAFE_INTEGER)return u.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if("number"==typeof t&&Math.floor(t)!==t)return u.error("Numeric branch labels must be integer values.");if(r){if(u.checkSubtype(r,se(t)))return null}else r=se(t);if(void 0!==i[String(t)])return u.error("Branch labels must be unique.");i[String(t)]=a.length;}const c=e.parse(l,s,n);if(!c)return null;n=n||c.type,a.push(c);}const s=e.parse(t[1],1,gt);if(!s)return null;const o=e.parse(t[t.length-1],t.length-1,n);return o?"value"!==s.type.kind&&e.concat(1).checkSubtype(r,s.type)?null:new Qe(r,n,s,i,a,o):null}evaluate(t){const e=this.input.evaluate(t);return (se(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)}
vendor: 38,263 bytes, line 37
37eachChild(t){t(this.input),this.outputs.forEach(t),t(this.otherwise);}outputDefined(){return this.outputs.every((t=>t.outputDefined()))&&this.otherwise.outputDefined()}}class tr{constructor(t,e,r){this.type=t,this.branches=e,this.otherwise=r;}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found only ${t.length-1}.`);if(t.length%2!=0)return e.error("Expected an odd number of arguments.");let r;e.expectedType&&"value"!==e.expectedType.kind&&(r=e.expectedType);const n=[];for(let i=1;i<t.length-1;i+=2){const a=e.parse(t[i],i,dt);if(!a)return null;const s=e.parse(t[i+1],i+1,r);if(!s)return null;n.push([a,s]),r=r||s.type;}const i=e.parse(t[t.length-1],t.length-1,r);if(!i)return null;if(!r)throw new Error("Can't infer output type");return new tr(r,n,i)}evaluate(t){for(const[e,r]of this.branches)if(e.evaluate(t))return r.evaluate(t);return this.otherwise.evaluate(t)}eachChild(t){for(const[e,r]of this.branches)t(e),t(r);t(this.otherwise);}outputDefined(){return this.branches.every((([t,e])=>e.outputDefined()))&&this.otherwise.outputDefined()}}class er{constructor(t,e,r,n){this.type=t,this.input=e,this.beginIndex=r,this.endIndex=n;}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,gt),n=e.parse(t[2],2,pt);if(!r||!n)return null;if(!zt(r.type,[At(gt),ft,gt]))return e.error(`Expected first argument to be of type array or string, but found ${St(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,pt);return i?new er(r.type,r,n,i):null}return new er(r.type,r,n)}evaluate(t){const e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!Mt(e,["string","array"]))throw new ue(`Expected first argument to be of type array or string, but found ${St(se(e))} instead.`);if(this.endIndex){const n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)}eachChild(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex);}outputDefined(){return !1}}function rr(t,e){return "=="===t||"!="===t?"boolean"===e.kind||"string"===e.kind||"number"===e.kind||"null"===e.kind||"value"===e.kind:"string"===e.kind||"number"===e.kind||"value"===e.kind}function nr(t,e,r,n){return 0===n.compare(e,r)}function ir(t,e,r){const n="=="!==t&&"!="!==t;return class i{constructor(t,e,r){this.type=dt,this.lhs=t,this.rhs=e,this.collator=r,this.hasUntypedArgument="value"===t.type.kind||"value"===e.type.kind;}static parse(t,e){if(3!==t.length&&4!==t.length)return e.error("Expected two or three arguments.");const r=t[0];let a=e.parse(t[1],1,gt);if(!a)return null;if(!rr(r,a.type))return e.concat(1).error(`"${r}" comparisons are not supported for type '${St(a.type)}'.`);let s=e.parse(t[2],2,gt);if(!s)return null;if(!rr(r,s.type))return e.concat(2).error(`"${r}" comparisons are not supported for type '${St(s.type)}'.`);if(a.type.kind!==s.type.kind&&"value"!==a.type.kind&&"value"!==s.type.kind)return e.error(`Cannot compare types '${St(a.type)}' and '${St(s.type)}'.`);n&&("value"===a.type.kind&&"value"!==s.type.kind?a=new he(s.type,[a]):"value"!==a.type.kind&&"value"===s.type.kind&&(s=new he(a.type,[s])));let o=null;if(4===t.length){if("string"!==a.type.kind&&"string"!==s.type.kind&&"value"!==a.type.kind&&"value"!==s.type.kind)return e.error("Cannot use collator to compare non-string types.");if(o=e.parse(t[3],3,xt),!o)return null}return new i(a,s,o)}evaluate(i){const a=this.lhs.evaluate(i),s=this.rhs.evaluate(i);if(n&&this.hasUntypedArgument){const e=se(a),r=se(s);if(e.kind!==r.kind||"string"!==e.kind&&"number"!==e.kind)throw new ue(`Expected arguments for "${t}" to be (string, string) or (number, number), but found (${e.kind}, ${r.kind}) instead.`)}if(this.collator&&!n&&this.hasUntypedArgument){const t=se(a),r=se(s);if("string"!==t.kind||"string"!==r.kind)return e(i,a,s)}return this.collator?r(i,a,s,this.collator.evaluate(i)):e(i,a,s)}eachChild(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator);}outputDefined(){return !0}}}const ar=ir("==",(function(t,e,r){return e===r}),nr),sr=ir("!=",(function(t,e,r){return e!==r}),(function(t,e,r,n){return !nr(0,e,r,n)})),or=ir("<",(function(t,e,r){return e<r}),(function(t,e,r,n){return n.compare(e,r)<0})),lr=ir(">",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),ur=ir("<=",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),cr=ir(">=",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0}));class hr{constructor(t,e,r,n,i){this.type=ft,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i;}static parse(t,e){if(3!==t.length)return e.error("Expected two arguments.");const r=e.parse(t[1],1,pt);if(!r)return null;const n=t[2];if("object"!=typeof n||Array.isArray(n))return e.error("NumberFormat options argument must be an object.");let i=null;if(n.locale&&(i=e.parse(n.locale,1,ft),!i))return null;let a=null;if(n.currency&&(a=e.parse(n.currency,1,ft),!a))return null;let s=null;if(n["min-fraction-digits"]&&(s=e.parse(n["min-fraction-digits"],1,pt),!s))return null;let o=null;return n["max-fraction-digits"]&&(o=e.parse(n["max-fraction-digits"],1,pt),!o)?null:new hr(r,i,a,s,o)}evaluate(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))}eachChild(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits);}outputDefined(){return !1}}class pr{constructor(t){this.type=vt,this.sections=t;}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");const r=t[1];if(!Array.isArray(r)&&"object"==typeof r)return e.error("First argument must be an image or text section.");const n=[];let i=!1;for(let r=1;r<=t.length-1;++r){const a=t[r];if(i&&"object"==typeof a&&!Array.isArray(a)){i=!1;let t=null;if(a["font-scale"]&&(t=e.parse(a["font-scale"],1,pt),!t))return null;let r=null;if(a["text-font"]&&(r=e.parse(a["text-font"],1,At(ft)),!r))return null;let s=null;if(a["text-color"]&&(s=e.parse(a["text-color"],1,yt),!s))return null;const o=n[n.length-1];o.scale=t,o.font=r,o.textColor=s;}else {const a=e.parse(t[r],1,gt);if(!a)return null;const s=a.type.kind;if("string"!==s&&"value"!==s&&"null"!==s&&"resolvedImage"!==s)return e.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");i=!0,n.push({content:a,scale:null,font:null,textColor:null});}}return new pr(n)}evaluate(t){return new Qt(this.sections.map((e=>{const r=e.content.evaluate(t);return se(r)===wt?new Wt("",r,null,null,null):new Wt(oe(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(","):null,e.textColor?e.textColor.evaluate(t):null)})))}eachChild(t){for(const e of this.sections)t(e.content),e.scale&&t(e.scale),e.font&&t(e.font),e.textColor&&t(e.textColor);}outputDefined(){return !1}}class fr{constructor(t){this.type=wt,this.input=t;}static parse(t,e){if(2!==t.length)return e.error("Expected two arguments.");const r=e.parse(t[1],1,ft);return r?new fr(r):e.error("No image name provided.")}evaluate(t){const e=this.input.evaluate(t),r=ne.fromString(e);return r&&t.availableImages&&(r.available=t.availableImages.indexOf(e)>-1),r}eachChild(t){t(this.input);}outputDefined(){return !1}}class dr{constructor(t){this.type=pt,this.input=t;}static parse(t,e){if(2!==t.length)return e.error(`Expected 1 argument, but found ${t.length-1} instead.`);const 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 ${St(r.type)} instead.`):new dr(r):null}evaluate(t){const e=this.input.evaluate(t);if("string"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new ue(`Expected value to be of type string or array, but found ${St(se(e))} instead.`)}eachChild(t){t(this.input);}outputDefined(){return !1}}const yr={"==":ar,"!=":sr,">":lr,"<":or,">=":cr,"<=":ur,array:he,at:Ye,boolean:he,case:tr,coalesce:Je,collator:ge,format:pr,image:fr,in:He,"index-of":We,interpolate:Ke,"interpolate-hcl":Ke,"interpolate-lab":Ke,length:dr,let:Xe,literal:le,match:Qe,number:he,"number-format":hr,object:he,slice:er,step:qe,string:he,"to-boolean":fe,"to-color":fe,"to-number":fe,"to-string":fe,var:Te,within:Fe};function mr(t,[e,r,n,i]){e=e.evaluate(t),r=r.evaluate(t),n=n.evaluate(t);const a=i?i.evaluate(t):1,s=ie(e,r,n,a);if(s)throw new ue(s);return new Yt(e/255,r/255,n/255,a,!1)}function gr(t,e){return t in e}function xr(t,e){const r=e[t];return void 0===r?null:r}function vr(t){return {type:t}}function br(t){return {result:"success",value:t}}function wr(t){return {result:"error",value:t}}function _r(t){return "data-driven"===t["property-type"]||"cross-faded-data-driven"===t["property-type"]}function Ar(t){return !!t.expression&&t.expression.parameters.indexOf("zoom")>-1}function Sr(t){return !!t.expression&&t.expression.interpolated}function kr(t){return t instanceof Number?"number":t instanceof String?"string":t instanceof Boolean?"boolean":Array.isArray(t)?"array":null===t?"null":typeof t}function Ir(t){return "object"==typeof t&&null!==t&&!Array.isArray(t)}function zr(t){return t}function Mr(t,e){const r="color"===e.type,n=t.stops&&"object"==typeof t.stops[0][0],i=n||!(n||void 0!==t.property),a=t.type||(Sr(e)?"exponential":"interval");if(r||"padding"===e.type){const n=r?Yt.parse:te.parse;(t=lt({},t)).stops&&(t.stops=t.stops.map((t=>[t[0],n(t[1])]))),t.default=n(t.default?t.default:e.default);}if(t.colorSpace&&"rgb"!==(s=t.colorSpace)&&"hcl"!==s&&"lab"!==s)throw new Error(`Unknown color space: "${t.colorSpace}"`);var s;let o,l,u;if("exponential"===a)o=Vr;else if("interval"===a)o=Pr;else if("categorical"===a){o=Br,l=Object.create(null);for(const e of t.stops)l[e[0]]=e[1];u=typeof t.stops[0][0];}else {if("identity"!==a)throw new Error(`Unknown function type "${a}"`);o=Er;}if(n){const r={},n=[];for(let e=0;e<t.stops.length;e++){const i=t.stops[e],a=i[0].zoom;void 0===r[a]&&(r[a]={zoom:a,type:t.type,property:t.property,default:t.default,stops:[]},n.push(a)),r[a].stops.push([i[0].value,i[1]]);}const i=[];for(const t of n)i.push([r[t].zoom,Mr(r[t],e)]);const a={name:"linear"};return {kind:"composite",interpolationType:a,interpolationFactor:Ke.interpolationFactor.bind(void 0,a),zoomStops:i.map((t=>t[0])),evaluate:({zoom:r},n)=>Vr({stops:i,base:t.base},e,r).evaluate(r,n)}}if(i){const r="exponential"===a?{name:"exponential",base:void 0!==t.base?t.base:1}:null;return {kind:"camera",interpolationType:r,interpolationFactor:Ke.interpolationFactor.bind(void 0,r),zoomStops:t.stops.map((t=>t[0])),evaluate:({zoom:r})=>o(t,e,r,l,u)}}return {kind:"source",evaluate(r,n){const i=n&&n.properties?n.properties[t.property]:void 0;return void 0===i?Cr(t.default,e.default):o(t,e,i,l,u)}}}function Cr(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function Br(t,e,r,n,i){return Cr(typeof r===i?n[r]:void 0,t.default,e.default)}function Pr(t,e,r){if("number"!==kr(r))return Cr(t.default,e.default);const 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];const i=Re(t.stops.map((t=>t[0])),r);return t.stops[i][1]}function Vr(t,e,r){const n=void 0!==t.base?t.base:1;if("number"!==kr(r))return Cr(t.default,e.default);const 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];const a=Re(t.stops.map((t=>t[0])),r),s=function(t,e,r,n){const 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]),o=t.stops[a][1],l=t.stops[a+1][1],u=Ze[e.type]||zr;return "function"==typeof o.evaluate?{evaluate(...e){const r=o.evaluate.apply(void 0,e),n=l.evaluate.apply(void 0,e);if(void 0!==r&&void 0!==n)return u(r,n,s,t.colorSpace)}}:u(o,l,s,t.colorSpace)}function Er(t,e,r){switch(e.type){case"color":r=Yt.parse(r);break;case"formatted":r=Qt.fromString(r.toString());break;case"resolvedImage":r=ne.fromString(r.toString());break;case"padding":r=te.parse(r);break;default:kr(r)===e.type||"enum"===e.type&&e.values[r]||(r=void 0);}return Cr(r,t.default,e.default)}$e.register(yr,{error:[{kind:"error"},[ft],(t,[e])=>{throw new ue(e.evaluate(t))}],typeof:[ft,[gt],(t,[e])=>St(se(e.evaluate(t)))],"to-rgba":[At(pt,4),[yt],(t,[e])=>{const[r,n,i,a]=e.evaluate(t).rgb;return [255*r,255*n,255*i,a]}],rgb:[yt,[pt,pt,pt],mr],rgba:[yt,[pt,pt,pt,pt],mr],has:{type:dt,overloads:[[[ft],(t,[e])=>gr(e.evaluate(t),t.properties())],[[ft,mt],(t,[e,r])=>gr(e.evaluate(t),r.evaluate(t))]]},get:{type:gt,overloads:[[[ft],(t,[e])=>xr(e.evaluate(t),t.properties())],[[ft,mt],(t,[e,r])=>xr(e.evaluate(t),r.evaluate(t))]]},"feature-state":[gt,[ft],(t,[e])=>xr(e.evaluate(t),t.featureState||{})],properties:[mt,[],t=>t.properties()],"geometry-type":[ft,[],t=>t.geometryType()],id:[gt,[],t=>t.id()],zoom:[pt,[],t=>t.globals.zoom],"heatmap-density":[pt,[],t=>t.globals.heatmapDensity||0],"line-progress":[pt,[],t=>t.globals.lineProgress||0],accumulated:[gt,[],t=>void 0===t.globals.accumulated?null:t.globals.accumulated],"+":[pt,vr(pt),(t,e)=>{let r=0;for(const n of e)r+=n.evaluate(t);return r}],"*":[pt,vr(pt),(t,e)=>{let r=1;for(const n of e)r*=n.evaluate(t);return r}],"-":{type:pt,overloads:[[[pt,pt],(t,[e,r])=>e.evaluate(t)-r.evaluate(t)],[[pt],(t,[e])=>-e.evaluate(t)]]},"/":[pt,[pt,pt],(t,[e,r])=>e.evaluate(t)/r.evaluate(t)],"%":[pt,[pt,pt],(t,[e,r])=>e.evaluate(t)%r.evaluate(t)],ln2:[pt,[],()=>Math.LN2],pi:[pt,[],()=>Math.PI],e:[pt,[],()=>Math.E],"^":[pt,[pt,pt],(t,[e,r])=>Math.pow(e.evaluate(t),r.evaluate(t))],sqrt:[pt,[pt],(t,[e])=>Math.sqrt(e.evaluate(t))],log10:[pt,[pt],(t,[e])=>Math.log(e.evaluate(t))/Math.LN10],ln:[pt,[pt],(t,[e])=>Math.log(e.evaluate(t))],log2:[pt,[pt],(t,[e])=>Math.log(e.evaluate(t))/Math.LN2],sin:[pt,[pt],(t,[e])=>Math.sin(e.evaluate(t))],cos:[pt,[pt],(t,[e])=>Math.cos(e.evaluate(t))],tan:[pt,[pt],(t,[e])=>Math.tan(e.evaluate(t))],asin:[pt,[pt],(t,[e])=>Math.asin(e.evaluate(t))],acos:[pt,[pt],(t,[e])=>Math.acos(e.evaluate(t))],atan:[pt,[pt],(t,[e])=>Math.atan(e.evaluate(t))],min:[pt,vr(pt),(t,e)=>Math.min(...e.map((e=>e.evaluate(t))))],max:[pt,vr(pt),(t,e)=>Math.max(...e.map((e=>e.evaluate(t))))],abs:[pt,[pt],(t,[e])=>Math.abs(e.evaluate(t))],round:[pt,[pt],(t,[e])=>{const r=e.evaluate(t);return r<0?-Math.round(-r):Math.round(r)}],floor:[pt,[pt],(t,[e])=>Math.floor(e.evaluate(t))],ceil:[pt,[pt],(t,[e])=>Math.ceil(e.evaluate(t))],"filter-==":[dt,[ft,gt],(t,[e,r])=>t.properties()[e.value]===r.value],"filter-id-==":[dt,[gt],(t,[e])=>t.id()===e.value],"filter-type-==":[dt,[ft],(t,[e])=>t.geometryType()===e.value],"filter-<":[dt,[ft,gt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<i}],"filter-id-<":[dt,[gt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r<n}],"filter->":[dt,[ft,gt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>i}],"filter-id->":[dt,[gt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>n}],"filter-<=":[dt,[ft,gt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<=i}],"filter-id-<=":[dt,[gt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r<=n}],"filter->=":[dt,[ft,gt],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>=i}],"filter-id->=":[dt,[gt],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>=n}],"filter-has":[dt,[gt],(t,[e])=>e.value in t.properties()],"filter-has-id":[dt,[],t=>null!==t.id()&&void 0!==t.id()],"filter-type-in":[dt,[At(ft)],(t,[e])=>e.value.indexOf(t.geometryType())>=0],"filter-id-in":[dt,[At(gt)],(t,[e])=>e.value.indexOf(t.id())>=0],"filter-in-small":[dt,[ft,At(gt)],(t,[e,r])=>r.value.indexOf(t.properties()[e.value])>=0],"filter-in-large":[dt,[ft,At(gt)],(t,[e,r])=>function(t,e,r,n){for(;r<=n;){const i=r+n>>1;if(e[i]===t)return !0;e[i]>t?n=i-1:r=i+1;}return !1}(t.properties()[e.value],r.value,0,r.value.length-1)],all:{type:dt,overloads:[[[dt,dt],(t,[e,r])=>e.evaluate(t)&&r.evaluate(t)],[vr(dt),(t,e)=>{for(const r of e)if(!r.evaluate(t))return !1;return !0}]]},any:{type:dt,overloads:[[[dt,dt],(t,[e,r])=>e.evaluate(t)||r.evaluate(t)],[vr(dt),(t,e)=>{for(const r of e)if(r.evaluate(t))return !0;return !1}]]},"!":[dt,[dt],(t,[e])=>!e.evaluate(t)],"is-supported-script":[dt,[ft],(t,[e])=>{const r=t.globals&&t.globals.isSupportedScript;return !r||r(e.evaluate(t))}],upcase:[ft,[ft],(t,[e])=>e.evaluate(t).toUpperCase()],downcase:[ft,[ft],(t,[e])=>e.evaluate(t).toLowerCase()],concat:[ft,vr(gt),(t,e)=>e.map((e=>oe(e.evaluate(t)))).join("")],"resolved-locale":[ft,[xt],(t,[e])=>e.evaluate(t).resolvedLocale()]});class Fr{constructor(t,e){var r;this.expression=t,this._warningHistory={},this._evaluator=new ye,this._defaultValue=e?"color"===(r=e).type&&Ir(r.default)?new Yt(0,0,0,0):"color"===r.type?Yt.parse(r.default)||null:"padding"===r.type?te.parse(r.default)||null:"variableAnchorOffsetCollection"===r.type?re.parse(r.default)||null:void 0===r.default?null:r.default:null,this._enumValues=e&&"enum"===e.type?e.values:null;}evaluateWithoutErrorHandling(t,e,r,n,i,a){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a,this.expression.evaluate(this._evaluator)}evaluate(t,e,r,n,i,a){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a||null;try{const t=this.expression.evaluate(this._evaluator);if(null==t||"number"==typeof t&&t!=t)return this._defaultValue;if(this._enumValues&&!(t in this._enumValues))throw new ue(`Expected value to be one of ${Object.keys(this._enumValues).map((t=>JSON.stringify(t))).join(", ")}, but found ${JSON.stringify(t)} instead.`);return t}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,"undefined"!=typeof console&&console.warn(t.message)),this._defaultValue}}}function Tr(t){return Array.isArray(t)&&t.length>0&&"string"==typeof t[0]&&t[0]in yr}function $r(t,e){const r=new me(yr,Le,[],e?function(t){const e={color:yt,string:ft,number:pt,enum:ft,boolean:dt,formatted:vt,padding:bt,resolvedImage:wt,variableAnchorOffsetCollection:_t};return "array"===t.type?At(e[t.value]||gt,t.length):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?br(new Fr(n,e)):wr(r.errors)}class Lr{constructor(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent="constant"!==t&&!Oe(e.expression);}evaluateWithoutErrorHandling(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)}evaluate(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)}}class Dr{constructor(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent="camera"!==t&&!Oe(e.expression),this.interpolationType=n;}evaluateWithoutErrorHandling(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)}evaluate(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)}interpolationFactor(t,e,r){return this.interpolationType?Ke.interpolationFactor(this.interpolationType,t,e,r):0}}function Or(t,e){const r=$r(t,e);if("error"===r.result)return r;const n=r.value.expression,i=De(n);if(!i&&!_r(e))return wr([new ut("","data expressions not supported")]);const a=Ue(n,["zoom"]);if(!a&&!Ar(e))return wr([new ut("","zoom expressions not supported")]);const s=Rr(n);return s||a?s instanceof ut?wr([s]):s instanceof Ke&&!Sr(e)?wr([new ut("",'"interpolate" expressions cannot be used with this property')]):br(s?new Dr(i?"camera":"composite",r.value,s.labels,s instanceof Ke?s.interpolation:void 0):new Lr(i?"constant":"source",r.value)):wr([new ut("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class Ur{constructor(t,e){this._parameters=t,this._specification=e,lt(this,Mr(this._parameters,this._specification));}static deserialize(t){return new Ur(t._parameters,t._specification)}static serialize(t){return {_parameters:t._parameters,_specification:t._specification}}}function Rr(t){let e=null;if(t instanceof Xe)e=Rr(t.result);else if(t instanceof Je){for(const r of t.args)if(e=Rr(r),e)break}else (t instanceof qe||t instanceof Ke)&&t.input instanceof $e&&"zoom"===t.input.name&&(e=t);return e instanceof ut||t.eachChild((t=>{const r=Rr(t);r instanceof ut?e=r:!e&&r?e=new ut("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):e&&r&&e!==r&&(e=new ut("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'));})),e}function qr(t){if(!0===t||!1===t)return !0;if(!Array.isArray(t)||0===t.length)return !1;switch(t[0]){case"has":return t.length>=2&&"$id"!==t[1]&&"$type"!==t[1];case"in":return t.length>=3&&("string"!=typeof t[1]||Array.isArray(t[2]));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(const e of t.slice(1))if(!qr(e)&&"boolean"!=typeof e)return !1;return !0;default:return !0}}const jr={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function Nr(t){if(null==t)return {filter:()=>!0,needGeometry:!1};qr(t)||(t=Gr(t));const e=$r(t,jr);if("error"===e.result)throw new Error(e.value.map((t=>`${t.key}: ${t.message}`)).join(", "));return {filter:(t,r,n)=>e.value.evaluate(t,r,{},n),needGeometry:Kr(t)}}function Zr(t,e){return t<e?-1:t>e?1:0}function Kr(t){if(!Array.isArray(t))return !1;if("within"===t[0])return !0;for(let e=1;e<t.length;e++)if(Kr(t[e]))return !0;return !1}function Gr(t){if(!t)return !0;const e=t[0];return t.length<=1?"any"!==e:"=="===e?Jr(t[1],t[2],"=="):"!="===e?Hr(Jr(t[1],t[2],"==")):"<"===e||">"===e||"<="===e||">="===e?Jr(t[1],t[2],e):"any"===e?(r=t.slice(1),["any"].concat(r.map(Gr))):"all"===e?["all"].concat(t.slice(1).map(Gr)):"none"===e?["all"].concat(t.slice(1).map(Gr).map(Hr)):"in"===e?Xr(t[1],t.slice(2)):"!in"===e?Hr(Xr(t[1],t.slice(2))):"has"===e?Yr(t[1]):"!has"===e?Hr(Yr(t[1])):"within"!==e||t;var r;}function Jr(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 Xr(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((t=>typeof t!=typeof e[0]))?["filter-in-large",t,["literal",e.sort(Zr)]]:["filter-in-small",t,["literal",e]]}}function Yr(t){switch(t){case"$type":return !0;case"$id":return ["filter-has-id"];default:return ["filter-has",t]}}function Hr(t){return ["!",t]}function Wr(t){const e=typeof t;if("number"===e||"boolean"===e||"string"===e||null==t)return JSON.stringify(t);if(Array.isArray(t)){let e="[";for(const r of t)e+=`${Wr(r)},`;return `${e}]`}const r=Object.keys(t).sort();let n="{";for(let e=0;e<r.length;e++)n+=`${JSON.stringify(r[e])}:${Wr(t[r[e]])},`;return `${n}}`}function Qr(t){let e="";for(const r of Y)e+=`/${Wr(t[r])}`;return e}function tn(t){const e=t.value;return e?[new ot(t.key,e,"constants have been deprecated as of v8")]:[]}function en(t){return t instanceof Number||t instanceof String||t instanceof Boolean?t.valueOf():t}function rn(t){if(Array.isArray(t))return t.map(rn);if(t instanceof Object&&!(t instanceof Number||t instanceof String||t instanceof Boolean)){const e={};for(const r in t)e[r]=rn(t[r]);return e}return en(t)}function nn(t){const e=t.key,r=t.value,n=t.valueSpec||{},i=t.objectElementValidators||{},a=t.style,s=t.styleSpec,o=t.validateSpec;let l=[];const u=kr(r);if("object"!==u)return [new ot(e,r,`object expected, ${u} found`)];for(const t in r){const u=t.split(".")[0],c=n[u]||n["*"];let h;if(i[u])h=i[u];else if(n[u])h=o;else if(i["*"])h=i["*"];else {if(!n["*"]){l.push(new ot(e,r[t],`unknown property "${t}"`));continue}h=o;}l=l.concat(h({key:(e?`${e}.`:e)+t,value:r[t],valueSpec:c,style:a,styleSpec:s,object:r,objectKey:t,validateSpec:o},r));}for(const t in n)i[t]||n[t].required&&void 0===n[t].default&&void 0===r[t]&&l.push(new ot(e,r,`missing required property "${t}"`));return l}function an(t){const e=t.value,r=t.valueSpec,n=t.style,i=t.styleSpec,a=t.key,s=t.arrayElementValidator||t.validateSpec;if("array"!==kr(e))return [new ot(a,e,`array expected, ${kr(e)} found`)];if(r.length&&e.length!==r.length)return [new ot(a,e,`array length ${r.length} expected, length ${e.length} found`)];if(r["min-length"]&&e.length<r["min-length"])return [new ot(a,e,`array length at least ${r["min-length"]} expected, length ${e.length} found`)];let o={type:r.value,values:r.values};i.$version<7&&(o.function=r.function),"object"===kr(r.value)&&(o=r.value);let l=[];for(let r=0;r<e.length;r++)l=l.concat(s({array:e,arrayIndex:r,value:e[r],valueSpec:o,validateSpec:t.validateSpec,style:n,styleSpec:i,key:`${a}[${r}]`}));return l}function sn(t){const e=t.key,r=t.value,n=t.valueSpec;let i=kr(r);return "number"===i&&r!=r&&(i="NaN"),"number"!==i?[new ot(e,r,`number expected, ${i} found`)]:"minimum"in n&&r<n.minimum?[new ot(e,r,`${r} is less than the minimum value ${n.minimum}`)]:"maximum"in n&&r>n.maximum?[new ot(e,r,`${r} is greater than the maximum value ${n.maximum}`)]:[]}function on(t){const e=t.valueSpec,r=en(t.value.type);let n,i,a,s={};const o="categorical"!==r&&void 0===t.value.property,l=!o,u="array"===kr(t.value.stops)&&"array"===kr(t.value.stops[0])&&"object"===kr(t.value.stops[0][0]),c=nn({key:t.key,value:t.value,valueSpec:t.styleSpec.function,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if("identity"===r)return [new ot(t.key,t.value,'identity function may not have a "stops" property')];let e=[];const n=t.value;return e=e.concat(an({key:t.key,value:n,valueSpec:t.valueSpec,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:h})),"array"===kr(n)&&0===n.length&&e.push(new ot(t.key,n,"array must have at least one stop")),e},default:function(t){return t.validateSpec({key:t.key,value:t.value,valueSpec:e,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec})}}});return "identity"===r&&o&&c.push(new ot(t.key,t.value,'missing required property "property"')),"identity"===r||t.value.stops||c.push(new ot(t.key,t.value,'missing required property "stops"')),"exponential"===r&&t.valueSpec.expression&&!Sr(t.valueSpec)&&c.push(new ot(t.key,t.value,"exponential functions not supported")),t.styleSpec.$version>=8&&(l&&!_r(t.valueSpec)?c.push(new ot(t.key,t.value,"property functions not supported")):o&&!Ar(t.valueSpec)&&c.push(new ot(t.key,t.value,"zoom functions not supported"))),"categorical"!==r&&!u||void 0!==t.value.property||c.push(new ot(t.key,t.value,'"property" property is required')),c;function h(t){let r=[];const n=t.value,o=t.key;if("array"!==kr(n))return [new ot(o,n,`array expected, ${kr(n)} found`)];if(2!==n.length)return [new ot(o,n,`array length 2 expected, length ${n.length} found`)];if(u){if("object"!==kr(n[0]))return [new ot(o,n,`object expected, ${kr(n[0])} found`)];if(void 0===n[0].zoom)return [new ot(o,n,"object stop key must have zoom")];if(void 0===n[0].value)return [new ot(o,n,"object stop key must have value")];if(a&&a>en(n[0].zoom))return [new ot(o,n[0].zoom,"stop zoom values must appear in ascending order")];en(n[0].zoom)!==a&&(a=en(n[0].zoom),i=void 0,s={}),r=r.concat(nn({key:`${o}[0]`,value:n[0],valueSpec:{zoom:{}},validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:sn,value:p}}));}else r=r.concat(p({key:`${o}[0]`,value:n[0],valueSpec:{},validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec},n));return Tr(rn(n[1]))?r.concat([new ot(`${o}[1]`,n[1],"expressions are not allowed in function stops.")]):r.concat(t.validateSpec({key:`${o}[1]`,value:n[1],valueSpec:e,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec}))}function p(t,a){const o=kr(t.value),l=en(t.value),u=null!==t.value?t.value:a;if(n){if(o!==n)return [new ot(t.key,u,`${o} stop domain type must match previous stop domain type ${n}`)]}else n=o;if("number"!==o&&"string"!==o&&"boolean"!==o)return [new ot(t.key,u,"stop domain value must be a number, string, or boolean")];if("number"!==o&&"categorical"!==r){let n=`number expected, ${o} found`;return _r(e)&&void 0===r&&(n+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new ot(t.key,u,n)]}return "categorical"!==r||"number"!==o||isFinite(l)&&Math.floor(l)===l?"categorical"!==r&&"number"===o&&void 0!==i&&l<i?[new ot(t.key,u,"stop domain values must appear in ascending order")]:(i=l,"categorical"===r&&l in s?[new ot(t.key,u,"stop domain values must be unique")]:(s[l]=!0,[])):[new ot(t.key,u,`integer expected, found ${l}`)]}}function ln(t){const e=("property"===t.expressionContext?Or:$r)(rn(t.value),t.valueSpec);if("error"===e.result)return e.value.map((e=>new ot(`${t.key}${e.key}`,t.value,e.message)));const r=e.value.expression||e.value._styleExpression.expression;if("property"===t.expressionContext&&"text-font"===t.propertyKey&&!r.outputDefined())return [new ot(t.key,t.value,`Invalid data expression for "${t.propertyKey}". Output values must be contained as literals within the expression.`)];if("property"===t.expressionContext&&"layout"===t.propertyType&&!Oe(r))return [new ot(t.key,t.value,'"feature-state" data expressions are not supported with layout properties.')];if("filter"===t.expressionContext&&!Oe(r))return [new ot(t.key,t.value,'"feature-state" data expressions are not supported with filters.')];if(t.expressionContext&&0===t.expressionContext.indexOf("cluster")){if(!Ue(r,["zoom","feature-state"]))return [new ot(t.key,t.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if("cluster-initial"===t.expressionContext&&!De(r))return [new ot(t.key,t.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return []}function un(t){const e=t.key,r=t.value,n=t.valueSpec,i=[];return Array.isArray(n.values)?-1===n.values.indexOf(en(r))&&i.push(new ot(e,r,`expected one of [${n.values.join(", ")}], ${JSON.stringify(r)} found`)):-1===Object.keys(n.values).indexOf(en(r))&&i.push(new ot(e,r,`expected one of [${Object.keys(n.values).join(", ")}], ${JSON.stringify(r)} found`)),i}function cn(t){return qr(rn(t.value))?ln(lt({},t,{expressionContext:"filter",valueSpec:{value:"boolean"}})):hn(t)}function hn(t){const e=t.value,r=t.key;if("array"!==kr(e))return [new ot(r,e,`array expected, ${kr(e)} found`)];const n=t.styleSpec;let i,a=[];if(e.length<1)return [new ot(r,e,"filter array must have at least 1 element")];switch(a=a.concat(un({key:`${r}[0]`,value:e[0],valueSpec:n.filter_operator,style:t.style,styleSpec:t.styleSpec})),en(e[0])){case"<":case"<=":case">":case">=":e.length>=2&&"$type"===en(e[1])&&a.push(new ot(r,e,`"$type" cannot be use with operator "${e[0]}"`));case"==":case"!=":3!==e.length&&a.push(new ot(r,e,`filter array for operator "${e[0]}" must have 3 elements`));case"in":case"!in":e.length>=2&&(i=kr(e[1]),"string"!==i&&a.push(new ot(`${r}[1]`,e[1],`string expected, ${i} found`)));for(let s=2;s<e.length;s++)i=kr(e[s]),"$type"===en(e[1])?a=a.concat(un({key:`${r}[${s}]`,value:e[s],valueSpec:n.geometry_type,style:t.style,styleSpec:t.styleSpec})):"string"!==i&&"number"!==i&&"boolean"!==i&&a.push(new ot(`${r}[${s}]`,e[s],`string, number, or boolean expected, ${i} found`));break;case"any":case"all":case"none":for(let n=1;n<e.length;n++)a=a.concat(hn({key:`${r}[${n}]`,value:e[n],style:t.style,styleSpec:t.styleSpec}));break;case"has":case"!has":i=kr(e[1]),2!==e.length?a.push(new ot(r,e,`filter array for "${e[0]}" operator must have 2 elements`)):"string"!==i&&a.push(new ot(`${r}[1]`,e[1],`string expected, ${i} found`));break;case"within":i=kr(e[1]),2!==e.length?a.push(new ot(r,e,`filter array for "${e[0]}" operator must have 2 elements`)):"object"!==i&&a.push(new ot(`${r}[1]`,e[1],`object expected, ${i} found`));}return a}function pn(t,e){const r=t.key,n=t.validateSpec,i=t.style,a=t.styleSpec,s=t.value,o=t.objectKey,l=a[`${e}_${t.layerType}`];if(!l)return [];const u=o.match(/^(.*)-transition$/);if("paint"===e&&u&&l[u[1]]&&l[u[1]].transition)return n({key:r,value:s,valueSpec:a.transition,style:i,styleSpec:a});const c=t.valueSpec||l[o];if(!c)return [new ot(r,s,`unknown property "${o}"`)];let h;if("string"===kr(s)&&_r(c)&&!c.tokens&&(h=/^{([^}]+)}$/.exec(s)))return [new ot(r,s,`"${o}" does not support interpolation syntax\nUse an identity property function instead: \`{ "type": "identity", "property": ${JSON.stringify(h[1])} }\`.`)];const p=[];return "symbol"===t.layerType&&("text-field"===o&&i&&!i.glyphs&&p.push(new ot(r,s,'use of "text-field" requires a style "glyphs" property')),"text-font"===o&&Ir(rn(s))&&"identity"===en(s.type)&&p.push(new ot(r,s,'"text-font" does not support identity functions'))),p.concat(n({key:t.key,value:s,valueSpec:c,style:i,styleSpec:a,expressionContext:"property",propertyType:e,propertyKey:o}))}function fn(t){return pn(t,"paint")}function dn(t){return pn(t,"layout")}function yn(t){let e=[];const r=t.value,n=t.key,i=t.style,a=t.styleSpec;r.type||r.ref||e.push(new ot(n,r,'either "type" or "ref" is required'));let s=en(r.type);const o=en(r.ref);if(r.id){const a=en(r.id);for(let s=0;s<t.arrayIndex;s++){const t=i.layers[s];en(t.id)===a&&e.push(new ot(n,r.id,`duplicate layer id "${r.id}", previously used at line ${t.id.__line__}`));}}if("ref"in r){let t;["type","source","source-layer","filter","layout"].forEach((t=>{t in r&&e.push(new ot(n,r[t],`"${t}" is prohibited for ref layers`));})),i.layers.forEach((e=>{en(e.id)===o&&(t=e);})),t?t.ref?e.push(new ot(n,r.ref,"ref cannot reference another ref layer")):s=en(t.type):e.push(new ot(n,r.ref,`ref layer "${o}" not found`));}else if("background"!==s)if(r.source){const t=i.sources&&i.sources[r.source],a=t&&en(t.type);t?"vector"===a&&"raster"===s?e.push(new ot(n,r.source,`layer "${r.id}" requires a raster source`)):"raster-dem"!==a&&"hillshade"===s?e.push(new ot(n,r.source,`layer "${r.id}" requires a raster-dem source`)):"raster"===a&&"raster"!==s?e.push(new ot(n,r.source,`layer "${r.id}" requires a vector source`)):"vector"!==a||r["source-layer"]?"raster-dem"===a&&"hillshade"!==s?e.push(new ot(n,r.source,"raster-dem source can only be used with layer type 'hillshade'.")):"line"!==s||!r.paint||!r.paint["line-gradient"]||"geojson"===a&&t.lineMetrics||e.push(new ot(n,r,`layer "${r.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):e.push(new ot(n,r,`layer "${r.id}" must specify a "source-layer"`)):e.push(new ot(n,r.source,`source "${r.source}" not found`));}else e.push(new ot(n,r,'missing required property "source"'));return e=e.concat(nn({key:n,value:r,valueSpec:a.layer,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{"*":()=>[],type:()=>t.validateSpec({key:`${n}.type`,value:r.type,valueSpec:a.layer.type,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,object:r,objectKey:"type"}),filter:cn,layout:t=>nn({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{"*":t=>dn(lt({layerType:s},t))}}),paint:t=>nn({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{"*":t=>fn(lt({layerType:s},t))}})}})),e}function mn(t){const e=t.value,r=t.key,n=kr(e);return "string"!==n?[new ot(r,e,`string expected, ${n} found`)]:[]}const gn={promoteId:function({key:t,value:e}){if("string"===kr(e))return mn({key:t,value:e});{const r=[];for(const n in e)r.push(...mn({key:`${t}.${n}`,value:e[n]}));return r}}};function xn(t){const e=t.value,r=t.key,n=t.styleSpec,i=t.style,a=t.validateSpec;if(!e.type)return [new ot(r,e,'"type" is required')];const s=en(e.type);let o;switch(s){case"vector":case"raster":return o=nn({key:r,value:e,valueSpec:n[`source_${s.replace("-","_")}`],style:t.style,styleSpec:n,objectElementValidators:gn,validateSpec:a}),o;case"raster-dem":return o=function(t){var e;const r=null!==(e=t.sourceName)&&void 0!==e?e:"",n=t.value,i=t.styleSpec,a=i.source_raster_dem,s=t.style;let o=[];const l=kr(n);if(void 0===n)return o;if("object"!==l)return o.push(new ot("source_raster_dem",n,`object expected, ${l} found`)),o;const u="custom"===en(n.encoding),c=["redFactor","greenFactor","blueFactor","baseShift"],h=t.value.encoding?`"${t.value.encoding}"`:"Default";for(const e in n)!u&&c.includes(e)?o.push(new ot(e,n[e],`In "${r}": "${e}" is only valid when "encoding" is set to "custom". ${h} encoding found`)):a[e]?o=o.concat(t.validateSpec({key:e,value:n[e],valueSpec:a[e],validateSpec:t.validateSpec,style:s,styleSpec:i})):o.push(new ot(e,n[e],`unknown property "${e}"`));return o}({sourceName:r,value:e,style:t.style,styleSpec:n,validateSpec:a}),o;case"geojson":if(o=nn({key:r,value:e,valueSpec:n.source_geojson,style:i,styleSpec:n,validateSpec:a,objectElementValidators:gn}),e.cluster)for(const t in e.clusterProperties){const[n,i]=e.clusterProperties[t],s="string"==typeof n?[n,["accumulated"],["get",t]]:n;o.push(...ln({key:`${r}.${t}.map`,value:i,validateSpec:a,expressionContext:"cluster-map"})),o.push(...ln({key:`${r}.${t}.reduce`,value:s,validateSpec:a,expressionContext:"cluster-reduce"}));}return o;case"video":return nn({key:r,value:e,valueSpec:n.source_video,style:i,validateSpec:a,styleSpec:n});case"image":return nn({key:r,value:e,valueSpec:n.source_image,style:i,validateSpec:a,styleSpec:n});case"canvas":return [new ot(r,null,"Please use runtime APIs to add canvas sources, rather than
37including them in stylesheets.","source.canvas")];default:return un({key:`${r}.type`,value:e.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:i,validateSpec:a,styleSpec:n})}}function vn(t){const e=t.value,r=t.styleSpec,n=r.light,i=t.style;let a=[];const s=kr(e);if(void 0===e)return a;if("object"!==s)return a=a.concat([new ot("light",e,`object expected, ${s} found`)]),a;for(const s in e){const o=s.match(/^(.*)-transition$/);a=a.concat(o&&n[o[1]]&&n[o[1]].transition?t.validateSpec({key:s,value:e[s],valueSpec:r.transition,validateSpec:t.validateSpec,style:i,styleSpec:r}):n[s]?t.validateSpec({key:s,value:e[s],valueSpec:n[s],validateSpec:t.validateSpec,style:i,styleSpec:r}):[new ot(s,e[s],`unknown property "${s}"`)]);}return a}function bn(t){const e=t.value,r=t.styleSpec,n=r.terrain,i=t.style;let a=[];const s=kr(e);if(void 0===e)return a;if("object"!==s)return a=a.concat([new ot("terrain",e,`object expected, ${s} found`)]),a;for(const s in e)a=a.concat(n[s]?t.validateSpec({key:s,value:e[s],valueSpec:n[s],validateSpec:t.validateSpec,style:i,styleSpec:r}):[new ot(s,e[s],`unknown property "${s}"`)]);return a}function wn(t){let e=[];const r=t.value,n=t.key;if(Array.isArray(r)){const i=[],a=[];for(const s in r)r[s].id&&i.includes(r[s].id)&&e.push(new ot(n,r,`all the sprites' ids must be unique, but ${r[s].id} is duplicated`)),i.push(r[s].id),r[s].url&&a.includes(r[s].url)&&e.push(new ot(n,r,`all the sprites' URLs must be unique, but ${r[s].url} is duplicated`)),a.push(r[s].url),e=e.concat(nn({key:`${n}[${s}]`,value:r[s],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:t.validateSpec}));return e}return mn({key:n,value:r})}const _n={"*":()=>[],array:an,boolean:function(t){const e=t.value,r=t.key,n=kr(e);return "boolean"!==n?[new ot(r,e,`boolean expected, ${n} found`)]:[]},number:sn,color:function(t){const e=t.key,r=t.value,n=kr(r);return "string"!==n?[new ot(e,r,`color expected, ${n} found`)]:Yt.parse(String(r))?[]:[new ot(e,r,`color expected, "${r}" found`)]},constants:tn,enum:un,filter:cn,function:on,layer:yn,object:nn,source:xn,light:vn,terrain:bn,string:mn,formatted:function(t){return 0===mn(t).length?[]:ln(t)},resolvedImage:function(t){return 0===mn(t).length?[]:ln(t)},padding:function(t){const e=t.key,r=t.value;if("array"===kr(r)){if(r.length<1||r.length>4)return [new ot(e,r,`padding requires 1 to 4 values; ${r.length} values found`)];const n={type:"number"};let i=[];for(let a=0;a<r.length;a++)i=i.concat(t.validateSpec({key:`${e}[${a}]`,value:r[a],validateSpec:t.validateSpec,valueSpec:n}));return i}return sn({key:e,value:r,valueSpec:{}})},variableAnchorOffsetCollection:function(t){const e=t.key,r=t.value,n=kr(r),i=t.styleSpec;if("array"!==n||r.length<1||r.length%2!=0)return [new ot(e,r,"variableAnchorOffsetCollection requires a non-empty array of even length")];let a=[];for(let n=0;n<r.length;n+=2)a=a.concat(un({key:`${e}[${n}]`,value:r[n],valueSpec:i.layout_symbol["text-anchor"]})),a=a.concat(an({key:`${e}[${n+1}]`,value:r[n+1],valueSpec:{length:2,value:"number"},validateSpec:t.validateSpec,style:t.style,styleSpec:i}));return a},sprite:wn};function An(t){const e=t.value,r=t.valueSpec,n=t.styleSpec;return t.validateSpec=An,r.expression&&Ir(en(e))?on(t):r.expression&&Tr(rn(e))?ln(t):r.type&&_n[r.type]?_n[r.type](t):nn(lt({},t,{valueSpec:r.type?n[r.type]:r}))}function Sn(t){const e=t.value,r=t.key,n=mn(t);return n.length||(-1===e.indexOf("{fontstack}")&&n.push(new ot(r,e,'"glyphs" url must include a "{fontstack}" token')),-1===e.indexOf("{range}")&&n.push(new ot(r,e,'"glyphs" url must include a "{range}" token'))),n}function kn(t,e=X){let r=[];return r=r.concat(An({key:"",value:t,valueSpec:e.$root,styleSpec:e,style:t,validateSpec:An,objectElementValidators:{glyphs:Sn,"*":()=>[]}})),t.constants&&(r=r.concat(tn({key:"constants",value:t.constants,style:t,styleSpec:e,validateSpec:An}))),zn(r)}function In(t){return function(e){return t({...e,validateSpec:An})}}function zn(t){return [].concat(t).sort(((t,e)=>t.line-e.line))}function Mn(t){return function(...e){return zn(t.apply(this,e))}}kn.source=Mn(In(xn)),kn.sprite=Mn(In(wn)),kn.glyphs=Mn(In(Sn)),kn.light=Mn(In(vn)),kn.terrain=Mn(In(bn)),kn.layer=Mn(In(yn)),kn.filter=Mn(In(cn)),kn.paintProperty=Mn(In(fn)),kn.layoutProperty=Mn(In(dn));const Cn=kn,Bn=Cn.light,Pn=Cn.paintProperty,Vn=Cn.layoutProperty;function En(t,e){let r=!1;if(e&&e.length)for(const n of e)t.fire(new G(new Error(n.message))),r=!0;return r}class Fn{constructor(t,e,r){const n=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;const i=new Int32Array(this.arrayBuffer);t=i[0],this.d=(e=i[1])+2*(r=i[2]);for(let t=0;t<this.d*this.d;t++){const e=i[3+t],r=i[3+t+1];n.push(e===r?null:i.subarray(e,r));}const a=i[3+n.length+1];this.keys=i.subarray(i[3+n.length],a),this.bboxes=i.subarray(a),this.insert=this._insertReadonly;}else {this.d=e+2*r;for(let t=0;t<this.d*this.d;t++)n.push([]);this.keys=[],this.bboxes=[];}this.n=e,this.extent=t,this.padding=r,this.scale=e/t,this.uid=0;const i=r/e*t;this.min=-i,this.max=t+i;}
37insert(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertCell,this.uid++,void 0,void 0),this.keys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i);}_insertReadonly(){throw new Error("Cannot insert into a GridIndex created from an ArrayBuffer.")}_insertCell(t,e,r,n,i,a){this.cells[i].push(a);}query(t,e,r,n,i){const a=this.min,s=this.max;if(t<=a&&e<=a&&s<=r&&s<=n&&!i)return Array.prototype.slice.call(this.keys);{const a=[];return this._forEachCell(t,e,r,n,this._queryCell,a,{},i),a}}_queryCell(t,e,r,n,i,a,s,o){const l=this.cells[i];if(null!==l){const i=this.keys,u=this.bboxes;for(let c=0;c<l.length;c++){const h=l[c];if(void 0===s[h]){const l=4*h;(o?o(u[l+0],u[l+1],u[l+2],u[l+3]):t<=u[l+2]&&e<=u[l+3]&&r>=u[l+0]&&n>=u[l+1])?(s[h]=!0,a.push(i[h])):s[h]=!1;}}}}_forEachCell(t,e,r,n,i,a,s,o){const l=this._convertToCellCoord(t),u=this._convertToCellCoord(e),c=this._convertToCellCoord(r),h=this._convertToCellCoord(n);for(let p=l;p<=c;p++)for(let l=u;l<=h;l++){const u=this.d*l+p;if((!o||o(this._convertFromCellCoord(p),this._convertFromCellCoord(l),this._convertFromCellCoord(p+1),this._convertFromCellCoord(l+1)))&&i.call(this,t,e,r,n,u,a,s,o))return}}_convertFromCellCoord(t){return (t-this.padding)/this.scale}_convertToCellCoord(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;const t=this.cells,e=3+this.cells.length+1+1;let r=0;for(let t=0;t<this.cells.length;t++)r+=this.cells[t].length;const n=new Int32Array(e+r+this.keys.length+this.bboxes.length);n[0]=this.extent,n[1]=this.n,n[2]=this.padding;let i=e;for(let e=0;e<t.length;e++){const r=t[e];n[3+e]=i,n.set(r,i),i+=r.length;}return n[3+t.length]=i,n.set(this.keys,i),i+=this.keys.length,n[3+t.length+1]=i,n.set(this.bboxes,i),i+=this.bboxes.length,n.buffer}static serialize(t,e){const r=t.toArrayBuffer();return e&&e.push(r),{buffer:r}}static deserialize(t){return new Fn(t.buffer)}}const Tn={};function $n(t,e,r={}){if(Tn[t])throw new Error(`${t} is already registered.`);Object.defineProperty(e,"_classRegistryKey",{value:t,writeable:!1}),Tn[t]={klass:e,omit:r.omit||[],shallow:r.shallow||[]};}$n("Object",Object),$n("TransferableGridIndex",Fn),$n("Color",Yt),$n("Error",Error),$n("AJAXError",L),$n("ResolvedImage",ne),$n("StylePropertyFunction",Ur),$n("StyleExpression",Fr,{omit:["_evaluator"]}),$n("ZoomDependentExpression",Dr),$n("ZoomConstantExpression",Lr),$n("CompoundExpression",$e,{omit:["_evaluate"]});for(const t in yr)yr[t]._classRegistryKey||$n(`Expression_${t}`,yr[t]);function Ln(t){return t&&"undefined"!=typeof ArrayBuffer&&(t instanceof ArrayBuffer||t.constructor&&"ArrayBuffer"===t.constructor.name)}function Dn(t,e){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 Blob)return t;if(Ln(t))return e&&e.push(t),t;if(M(t))return e&&e.push(t),t;if(ArrayBuffer.isView(t)){const r=t;return e&&e.push(r.buffer),r}if(t instanceof ImageData)return e&&e.push(t.data.buffer),t;if(Array.isArray(t)){const r=[];for(const n of t)r.push(Dn(n,e));return r}if("object"==typeof t){const r=t.constructor,n=r._classRegistryKey;if(!n)throw new Error("can't serialize object of unregistered class");if(!Tn[n])throw new Error(`${n} is not registered.`);const i=r.serialize?r.serialize(t,e):{};if(r.serialize){if(e&&i===e[e.length-1])throw new Error("statically serialized object won't survive transfer of $name property")}else {for(const r in t){if(!t.hasOwnProperty(r))continue;if(Tn[n].omit.indexOf(r)>=0)continue;const a=t[r];i[r]=Tn[n].shallow.indexOf(r)>=0?a:Dn(a,e);}t instanceof Error&&(i.message=t.message);}if(i.$name)throw new Error("$name property is reserved for worker serialization logic.");return "Object"!==n&&(i.$name=n),i}throw new Error("can't serialize object of type "+typeof t)}function On(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 Blob||Ln(t)||M(t)||ArrayBuffer.isView(t)||t instanceof ImageData)return t;if(Array.isArray(t))return t.map(On);if("object"==typeof t){const e=t.$name||"Object";if(!Tn[e])throw new Error(`can't deserialize unregistered class ${e}`);const{klass:r}=Tn[e];if(!r)throw new Error(`can't deserialize unregistered class ${e}`);if(r.deserialize)return r.deserialize(t);const n=Object.create(r.prototype);for(const r of Object.keys(t)){if("$name"===r)continue;const i=t[r];n[r]=Tn[e].shallow.indexOf(r)>=0?i:On(i);}return n}throw new Error("can't deserialize object of type "+typeof t)}class Un{constructor(){this.first=!0;}update(t,e){const 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<r&&(this.lastIntegerZoom=r,this.lastIntegerZoomTime=e),t!==this.lastZoom&&(this.lastZoom=t,this.lastFloorZoom=r,!0))}}const Rn={"Latin-1 Supplement":t=>t>=128&&t<=255,Arabic:t=>t>=1536&&t<=1791,"Arabic Supplement":t=>t>=1872&&t<=1919,"Arabic Extended-A":t=>t>=2208&&t<=2303,"Hangul Jamo":t=>t>=4352&&t<=4607,"Unified Canadian Aboriginal Syllabics":t=>t>=5120&&t<=5759,Khmer:t=>t>=6016&&t<=6143,"Unified Canadian Aboriginal Syllabics Extended":t=>t>=6320&&t<=6399,"General Punctuation":t=>t>=8192&&t<=8303,"Letterlike Symbols":t=>t>=8448&&t<=8527,"Number Forms":t=>t>=8528&&t<=8591,"Miscellaneous Technical":t=>t>=8960&&t<=9215,"Control Pictures":t=>t>=9216&&t<=9279,"Optical Character Recognition":t=>t>=9280&&t<=9311,"Enclosed Alphanumerics":t=>t>=9312&&t<=9471,"Geometric Shapes":t=>t>=9632&&t<=9727,"Miscellaneous Symbols":t=>t>=9728&&t<=9983,"Miscellaneous Symbols and Arrows":t=>t>=11008&&t<=11263,"CJK Radicals Supplement":t=>t>=11904&&t<=12031,"Kangxi Radicals":t=>t>=12032&&t<=12255,"Ideographic Description Characters":t=>t>=12272&&t<=12287,"CJK Symbols and Punctuation":t=>t>=12288&&t<=12351,Hiragana:t=>t>=12352&&t<=12447,Katakana:t=>t>=12448&&t<=12543,Bopomofo:t=>t>=12544&&t<=12591,"Hangul Compatibility Jamo":t=>t>=12592&&t<=12687,Kanbun:t=>t>=12688&&t<=12703,"Bopomofo Extended":t=>t>=12704&&t<=12735,"CJK Strokes":t=>t>
vendor: 3,335 bytes, line 37
37=12736&&t<=12783,"Katakana Phonetic Extensions":t=>t>=12784&&t<=12799,"Enclosed CJK Letters and Months":t=>t>=12800&&t<=13055,"CJK Compatibility":t=>t>=13056&&t<=13311,"CJK Unified Ideographs Extension A":t=>t>=13312&&t<=19903,"Yijing Hexagram Symbols":t=>t>=19904&&t<=19967,"CJK Unified Ideographs":t=>t>=19968&&t<=40959,"Yi Syllables":t=>t>=40960&&t<=42127,"Yi Radicals":t=>t>=42128&&t<=42191,"Hangul Jamo Extended-A":t=>t>=43360&&t<=43391,"Hangul Syllables":t=>t>=44032&&t<=55215,"Hangul Jamo Extended-B":t=>t>=55216&&t<=55295,"Private Use Area":t=>t>=57344&&t<=63743,"CJK Compatibility Ideographs":t=>t>=63744&&t<=64255,"Arabic Presentation Forms-A":t=>t>=64336&&t<=65023,"Vertical Forms":t=>t>=65040&&t<=65055,"CJK Compatibility Forms":t=>t>=65072&&t<=65103,"Small Form Variants":t=>t>=65104&&t<=65135,"Arabic Presentation Forms-B":t=>t>=65136&&t<=65279,"Halfwidth and Fullwidth Forms":t=>t>=65280&&t<=65519};function qn(t){for(const e of t)if(Zn(e.charCodeAt(0)))return !0;return !1}function jn(t){for(const e of t)if(!Nn(e.charCodeAt(0)))return !1;return !0}function Nn(t){return !(Rn.Arabic(t)||Rn["Arabic Supplement"](t)||Rn["Arabic Extended-A"](t)||Rn["Arabic Presentation Forms-A"](t)||Rn["Arabic Presentation Forms-B"](t))}function Zn(t){return !(746!==t&&747!==t&&(t<4352||!(Rn["Bopomofo Extended"](t)||Rn.Bopomofo(t)||Rn["CJK Compatibility Forms"](t)&&!(t>=65097&&t<=65103)||Rn["CJK Compatibility Ideographs"](t)||Rn["CJK Compatibility"](t)||Rn["CJK Radicals Supplement"](t)||Rn["CJK Strokes"](t)||!(!Rn["CJK Symbols and Punctuation"](t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||Rn["CJK Unified Ideographs Extension A"](t)||Rn["CJK Unified Ideographs"](t)||Rn["Enclosed CJK Letters and Months"](t)||Rn["Hangul Compatibility Jamo"](t)||Rn["Hangul Jamo Extended-A"](t)||Rn["Hangul Jamo Extended-B"](t)||Rn["Hangul Jamo"](t)||Rn["Hangul Syllables"](t)||Rn.Hiragana(t)||Rn["Ideographic Description Characters"](t)||Rn.Kanbun(t)||Rn["Kangxi Radicals"](t)||Rn["Katakana Phonetic Extensions"](t)||Rn.Katakana(t)&&12540!==t||!(!Rn["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)||!(!Rn["Small Form Variants"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||Rn["Unified Canadian Aboriginal Syllabics"](t)||Rn["Unified Canadian Aboriginal Syllabics Extended"](t)||Rn["Vertical Forms"](t)||Rn["Yijing Hexagram Symbols"](t)||Rn["Yi Syllables"](t)||Rn["Yi Radicals"](t))))}function Kn(t){return !(Zn(t)||function(t){return !!(Rn["Latin-1 Supplement"](t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||Rn["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)||Rn["Letterlike Symbols"](t)||Rn["Number Forms"](t)||Rn["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)||Rn["Control Pictures"](t)&&9251!==t||Rn["Optical Character Recognition"](t)||Rn["Enclosed Alphanumerics"](t)||Rn["Geometric Shapes"](t)||Rn["Miscellaneous Symbols"](t)&&!(t>=9754&&t<=9759)||Rn["Miscellaneous Symbols and Arrows"](t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>
37=11192&&t<=11243)||Rn["CJK Symbols and Punctuation"](t)||Rn.Katakana(t)||Rn["Private Use Area"](t)||Rn["CJK Compatibility Forms"](t)||Rn["Small Form Variants"](t)||Rn["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 Gn(t){return t>=1424&&t<=2303||Rn["Arabic Presentation Forms-A"](t)||Rn["Arabic Presentation Forms-B"](t)}function Jn(t,e){return !(!e&&Gn(t)||t>=2304&&t<=3583||t>=3840&&t<=4255||Rn.Khmer(t))}function Xn(t){for(const e of t)if(Gn(e.charCodeAt(0)))return !0;return !1}const Yn="deferred",Hn="loading",Wn="loaded";let Qn=null,ti="unavailable",ei=null;const ri=function(t){t&&"string"==typeof t&&t.indexOf("NetworkError")>-1&&(ti="error"),Qn&&Qn(t);};function ni(){ii.fire(new K("pluginStateChange",{pluginStatus:ti,pluginURL:ei}));}const ii=new J,ai=function(){return ti},si=function(){if(ti!==Yn||!ei)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");ti=Hn,ni(),ei&&q({url:ei},(t=>{t?ri(t):(ti=Wn,ni());}));},oi={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>ti===Wn||null!=oi.applyArabicShaping,isLoading:()=>ti===Hn,setState(t){if(!I())throw new Error("Cannot set the state of the rtl-text-plugin when not in the web-worker context");ti=t.pluginStatus,ei=t.pluginURL;},isParsed(){if(!I())throw new Error("rtl-text-plugin is only parsed on the worker-threads");return null!=oi.applyArabicShaping&&null!=oi.processBidirectionalText&&null!=oi.processStyledBidirectionalText},getPluginURL(){if(!I())throw new Error("rtl-text-plugin url can only be queried from the worker threads");return ei}};class li{constructor(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 Un,this.transition={});}isSupportedScript(t){return function(t,e){for(const r of t)if(!Jn(r.charCodeAt(0),e))return !1;return !0}(t,oi.isLoaded())}crossFadingFactor(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const t=this.zoom,e=t-Math.floor(t),r=this.crossFadingFactor();return t>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}}}class ui{constructor(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Ir(t))return new Ur(t,e);if(Tr(t)){const r=Or(t,e);if("error"===r.result)throw new Error(r.value.map((t=>`${t.key}: ${t.message}`)).join(", "));return r.value}{let r=t;return "color"===e.type&&"string"==typeof t?r=Yt.parse(t):"padding"!==e.type||"number"!=typeof t&&!Array.isArray(t)?"variableAnchorOffsetCollection"===e.type&&Array.isArray(t)&&(r=re.parse(t)):r=te.parse(t),{kind:"constant",evaluate:()=>r}}}(void 0===e?t.specification.default:e,t.specification);}isDataDriven(){return "source"===this.expression.kind||"composite"===this.expression.kind}possiblyEvaluate(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)}}class ci{constructor(t){this.property=t,this.value=new ui(t,void 0);}transitioned(t,e){return new pi(this.property,this.value,e,g({},t.transition,this.transition),t.now)}untransitioned(){return new pi(this.property,this.value,null,{},0)}}class hi{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues);}getValue(t){return w(this._values[t].value.value)}setValue(t,e){Object.prototype.hasOwnProperty.call(this._values,t)||(this._values[t]=new ci(this._values[t].property)),this._values[t].value=new ui(this._values[t].property,null===e?void 0:w(e));}getTransition(t){return w(this._values[t].transition)}setTransition(t,e){Object.prototype.hasOwnProperty.call(this._values,t)||(this._values[t]=new ci(this._values[t].property)),this._values[t].transition=w(e)||void 0;}serialize(){const t={};for(const e of Object.keys(this._values)){const r=this.getValue(e);void 0!==r&&(t[e]=r);const n=this.getTransition(e);void 0!==n&&(t[`${e}-transition`]=n);}return t}transitioned(t,e){const r=new fi(this._properties);for(const n of Object.keys(this._values))r._values[n]=this._values[n].transitioned(t,e._values[n]);return r}untransitioned(){const t=new fi(this._properties);for(const e of Object.keys(this._values))t._values[e]=this._values[e].untransitioned();return t}}class pi{constructor(t,e,r,n,i){this.property=t,this.value=e,this.begin=i+n.delay||0,this.end=this.begin+n.duration||0,t.specification.transition&&(n.delay||n.duration)&&(this.prior=r);}possiblyEvaluate(t,e,r){const n=t.now||0,i=this.value.possiblyEvaluate(t,e,r),a=this.prior;if(a){if(n>this.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n<this.begin)return a.possiblyEvaluate(t,e,r);{const s=(n-this.begin)/(this.end-this.begin);return this.property.interpolate(a.possiblyEvaluate(t,e,r),i,function(t){if(t<=0)return 0;if(t>=1)return 1;const e=t*t,r=e*t;
vendor: 25,699 bytes, line 37
37return 4*(t<.5?r:3*(t-e)+r-.75)}(s))}}return i}}class fi{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues);}possiblyEvaluate(t,e,r){const n=new mi(this._properties);for(const i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}hasTransition(){for(const t of Object.keys(this._values))if(this._values[t].prior)return !0;return !1}}class di{constructor(t){this._properties=t,this._values=Object.create(t.defaultPropertyValues);}hasValue(t){return void 0!==this._values[t].value}getValue(t){return w(this._values[t].value)}setValue(t,e){this._values[t]=new ui(this._values[t].property,null===e?void 0:w(e));}serialize(){const t={};for(const e of Object.keys(this._values)){const r=this.getValue(e);void 0!==r&&(t[e]=r);}return t}possiblyEvaluate(t,e,r){const n=new mi(this._properties);for(const i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}}class yi{constructor(t,e,r){this.property=t,this.value=e,this.parameters=r;}isConstant(){return "constant"===this.value.kind}constantOr(t){return "constant"===this.value.kind?this.value.value:t}evaluate(t,e,r,n){return this.property.evaluate(this.value,this.parameters,t,e,r,n)}}class mi{constructor(t){this._properties=t,this._values=Object.create(t.defaultPossiblyEvaluatedValues);}get(t){return this._values[t]}}class gi{constructor(t){this.specification=t;}possiblyEvaluate(t,e){if(t.isDataDriven())throw new Error("Value should not be data driven");return t.expression.evaluate(e)}interpolate(t,e,r){const n=Ze[this.specification.type];return n?n(t,e,r):t}}class xi{constructor(t,e){this.specification=t,this.overrides=e;}possiblyEvaluate(t,e,r,n){return new yi(this,"constant"===t.expression.kind||"camera"===t.expression.kind?{kind:"constant",value:t.expression.evaluate(e,null,{},r,n)}:t.expression,e)}interpolate(t,e,r){if("constant"!==t.value.kind||"constant"!==e.value.kind)return t;if(void 0===t.value.value||void 0===e.value.value)return new yi(this,{kind:"constant",value:void 0},t.parameters);const n=Ze[this.specification.type];if(n){const i=n(t.value.value,e.value.value,r);return new yi(this,{kind:"constant",value:i},t.parameters)}return t}evaluate(t,e,r,n,i,a){return "constant"===t.kind?t.value:t.evaluate(e,r,n,i,a)}}class vi extends xi{possiblyEvaluate(t,e,r,n){if(void 0===t.value)return new yi(this,{kind:"constant",value:void 0},e);if("constant"===t.expression.kind){const i=t.expression.evaluate(e,null,{},r,n),a="resolvedImage"===t.property.specification.type&&"string"!=typeof i?i.name:i,s=this._calculate(a,a,a,e);return new yi(this,{kind:"constant",value:s},e)}if("camera"===t.expression.kind){const r=this._calculate(t.expression.evaluate({zoom:e.zoom-1}),t.expression.evaluate({zoom:e.zoom}),t.expression.evaluate({zoom:e.zoom+1}),e);return new yi(this,{kind:"constant",value:r},e)}return new yi(this,t.expression,e)}evaluate(t,e,r,n,i,a){if("source"===t.kind){const s=t.evaluate(e,r,n,i,a);return this._calculate(s,s,s,e)}return "composite"===t.kind?this._calculate(t.evaluate({zoom:Math.floor(e.zoom)-1},r,n),t.evaluate({zoom:Math.floor(e.zoom)},r,n),t.evaluate({zoom:Math.floor(e.zoom)+1},r,n),e):t.value}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}}interpolate(t){return t}}class bi{constructor(t){this.specification=t;}possiblyEvaluate(t,e,r,n){if(void 0!==t.value){if("constant"===t.expression.kind){const i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new li(Math.floor(e.zoom-1),e)),t.expression.evaluate(new li(Math.floor(e.zoom),e)),t.expression.evaluate(new li(Math.floor(e.zoom+1),e)),e)}}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}}interpolate(t){return t}}class wi{constructor(t){this.specification=t;}possiblyEvaluate(t,e,r,n){return !!t.expression.evaluate(e,null,{},r,n)}interpolate(){return !1}}class _i{constructor(t){this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(const e in t){const r=t[e];r.specification.overridable&&this.overridableProperties.push(e);const n=this.defaultPropertyValues[e]=new ui(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new ci(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({});}}}$n("DataDrivenProperty",xi),$n("DataConstantProperty",gi),$n("CrossFadedDataDrivenProperty",vi),$n("CrossFadedProperty",bi),$n("ColorRampProperty",wi);const Ai="-transition";class Si extends J{constructor(t,e){if(super(),this.id=t.id,this.type=t.type,this._featureFilter={filter:()=>!0,needGeometry:!1},"custom"!==t.type&&(this.metadata=t.metadata,this.minzoom=t.minzoom,this.maxzoom=t.maxzoom,"background"!==t.type&&(this.source=t.source,this.sourceLayer=t["source-layer"],this.filter=t.filter),e.layout&&(this._unevaluatedLayout=new di(e.layout)),e.paint)){this._transitionablePaint=new hi(e.paint);for(const e in t.paint)this.setPaintProperty(e,t.paint[e],{validate:!1});for(const e in t.layout)this.setLayoutProperty(e,t.layout[e],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new mi(e.paint);}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(t){return "visibility"===t?this.visibility:this._unevaluatedLayout.getValue(t)}setLayoutProperty(t,e,r={}){null!=e&&this._validate(Vn,`layers.${this.id}.layout.${t}`,t,e,r)||("visibility"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e);}getPaintProperty(t){return t.endsWith(Ai)?this._transitionablePaint.getTransition(t.slice(0,-11)):this._transitionablePaint.getValue(t)}setPaintProperty(t,e,r={}){if(null!=e&&this._validate(Pn,`layers.${this.id}.paint.${t}`,t,e,r))return !1;if(t.endsWith(Ai))return this._transitionablePaint.setTransition(t.slice(0,-11),e||void 0),!1;{const r=this._transitionablePaint._values[t],n="cross-faded-data-driven"===r.property.specification["property-type"],i=r.value.isDataDriven(),a=r.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);const s=this._transitionablePaint._values[t].value;return s.isDataDriven()||i||n||this._handleOverridablePaintPropertyUpdate(t,a,s)}}_handleSpecialPaintPropertyUpdate(t){}_handleOverridablePaintPropertyUpdate(t,e,r){return !1}isHidden(t){return !!(this.minzoom&&t<this.minzoom)||!!(this.maxzoom&&t>=this.maxzoom)||"none"===this.visibility}updateTransitions(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint);}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e);}serialize(){const 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 this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),b(t,((t,e)=>!(void 0===t||"layout"===e&&!Object.keys(t).length||"paint"===e&&!Object.keys(t).length)))}_validate(t,e,r,n,i={}){return (!i||!1!==i.validate)&&En(this,t.call(Cn,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:X,style:{glyphs:!0,sprite:!0}}))}is3D(){return !1}isTileClipped(){return !1}hasOffscreenPass(){return !1}resize(){}isStateDependent(){for(const t in this.paint._values){const e=this.paint.get(t);if(e instanceof yi&&_r(e.property.specification)&&("source"===e.value.kind||"composite"===e.value.kind)&&e.value.isStateDependent)return !0}return !1}}const ki={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class Ii{constructor(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;}}class zi{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0);}static serialize(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}}static deserialize(t){const e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews());}clear(){this.length=0;}resize(t){this.reserve(t),this.length=t;}reserve(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const e=this.uint8;this._refreshViews(),e&&this.uint8.set(e);}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function Mi(t,e=1){let r=0,n=0;return {members:t.map((t=>{const i=ki[t.type].BYTES_PER_ELEMENT,a=r=Ci(r,Math.max(e,i)),s=t.components||1;return n=Math.max(n,i),r+=i*s,{name:t.name,type:t.type,components:s,offset:a}})),size:Ci(r,Math.max(n,e)),alignment:e}}function Ci(t,e){return Math.ceil(t/e)*e}class Bi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t}}Bi.prototype.bytesPerElement=4,$n("StructArrayLayout2i4",Bi);class Pi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t}}Pi.prototype.bytesPerElement=6,$n("StructArrayLayout3i6",Pi);class Vi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const 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}}Vi.prototype.bytesPerElement=8,$n("StructArrayLayout4i8",Vi);class Ei extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,r,n,i,a)}emplace(t,e,r,n,i,a,s){const o=6*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.int16[o+2]=n,this.int16[o+3]=i,this.int16[o+4]=a,this.int16[o+5]=s,t}}Ei.prototype.bytesPerElement=12,$n("StructArrayLayout2i4i12",Ei);class Fi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,r,n,i,a)}emplace(t,e,r,n,i,a,s){const o=4*t,l=8*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.uint8[l+4]=n,this.uint8[l+5]=i,this.uint8[l+6]=a,this.uint8[l+7]=s,t}}Fi.prototype.bytesPerElement=8,$n("StructArrayLayout2i4ub8",Fi);class Ti extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t}}Ti.prototype.bytesPerElement=8,$n("StructArrayLayout2f8",Ti);class $i extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a,s,o,l,u){const c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,a,s,o,l,u)}emplace(t,e,r,n,i,a,s,o,l,u,c){const h=10*t;return this.uint16[h+0]=e,this.uint16[h+1]=r,this.uint16[h+2]=n,this.uint16[h+3]=i,this.uint16[h+4]=a,this.uint16[h+5]=s,this.uint16[h+6]=o,this.uint16[h+7]=l,this.uint16[h+8]=u,this.uint16[h+9]=c,t}}$i.prototype.bytesPerElement=20,$n("StructArrayLayout10ui20",$i);class Li extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a,s,o,l,u,c,h){const p=this.length;return this.resize(p+1),this.emplace(p,t,e,r,n,i,a,s,o,l,u,c,h)}emplace(t,e,r,n,i,a,s,o,l,u,c,h,p){const f=12*t;return this.int16[f+0]=e,this.int16[f+1]=r,this.int16[f+2]=n,this.int16[f+3]=i,this.uint16[f+4]=a,this.uint16[f+5]=s,this.uint16[f+6]=o,this.uint16[f+7]=l,this.int16[f+8]=u,this.int16[f+9]=c,this.int16[f+10]=h,this.int16[f+11]=p,t}}Li.prototype.bytesPerElement=24,$n("StructArrayLayout4i4ui4i24",Li);class Di extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t}}Di.prototype.bytesPerElement=12,$n("StructArrayLayout3f12",Di);class Oi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint32[1*t+0]=e,t}}Oi.prototype.bytesPerElement=4,$n("StructArrayLayout1ul4",Oi);class Ui extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a,s,o,l){const u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,s,o,l)}emplace(t,e,r,n,i,a,s,o,l,u){const c=10*t,h=5*t;return this.int16[c+0]=e,this.int16[c+1]=r,this.int16[c+2]=n,this.int16[c+3]=i,this.int16[c+4]=a,this.int16[c+5]=s,this.uint32[h+3]=o,this.uint16[c+8]=l,this.uint16[c+9]=u,t}}Ui.prototype.bytesPerElement=20,$n("StructArrayLayout6i1ul2ui20",Ui);class Ri extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i,a){const s=this.length;return this.resize(s+1),this.emplace(s,t,e,r,n,i,a)}emplace(t,e,r,n,i,a,s){const o=6*t;return this.int16[o+0]=e,this.int16[o+1]=r,this.int16[o+2]=n,this.int16[o+3]=i,this.int16[o+4]=a,this.int16[o+5]=s,t}}Ri.prototype.bytesPerElement=12,$n("StructArrayLayout2i2i2i12",Ri);class qi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer);}emplaceBack(t,e,r,n,i){const a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i)}emplace(t,e,r,n,i,a){const s=4*t,o=8*t;return this.float32[s+0]=e,this.float32[s+1]=r,this.float32[s+2]=n,this.int16[o+6]=i,this.int16[o+7]=a,t}}qi.prototype.bytesPerElement=16,$n("StructArrayLayout2f1f2i16",qi);class ji extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const a=12*t,s=3*t;return this.uint8[a+0]=e,this.uint8[a+1]=r,this.float32[s+1]=n,this.float32[s+2]=i,t}}ji.prototype.bytesPerElement=12,$n("StructArrayLayout2ub2f12",ji);class Ni extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t}}Ni.prototype.bytesPerElement=6,$n("StructArrayLayout3ui6",Ni);class Zi extends zi{_refreshViews(){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);}emplaceBack(t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m){const g=this.length;return this.resize(g+1),this.emplace(g,t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m)}emplace(t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m,g){const x=24*t,v=12*t,b=48*t;return this.int16[x+0]=e,this.int16[x+1]=r,this.uint16[x+2]=n,this.uint16[x+3]=i,this.uint32[v+2]=a,this.uint32[v+3]=s,this.uint32[v+4]=o,this.uint16[x+10]=l,this.uint16[x+11]=u,this.uint16[x+12]=c,this.float32[v+7]=h,this.float32[v+8]=p,this.uint8[b+36]=f,this.uint8[b+37]=d,this.uint8[b+38]=y,this.uint32[v+10]=m,this.int16[x+22]=g,t}}Zi.prototype.bytesPerElement=48,$n("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",Zi);class Ki extends zi{_refreshViews(){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);}emplaceBack(t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,A,S,k,I,z){const M=this.length;return this.resize(M+1),this.emplace(M,t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,A,S,k,I,z)}emplace(t,e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,A,S,k,I,z,M){const C=32*t,B=16*t;return this.int16[C+0]=e,this.int16[C+1]=r,this.int16[C+2]=n,this.int16[C+3]=i,this.int16[C+4]=a,this.int16[C+5]=s,this.int16[C+6]=o,this.int16[C+7]=l,this.uint16[C+8]=u,this.uint16[C+9]=c,this.uint16[C+10]=h,this.uint16[C+11]=p,this.uint16[C+12]=f,this.uint16[C+13]=d,this.uint16[C+14]=y,this.uint16[C+15]=m,this.uint16[C+16]=g,this.uint16[C+17]=x,this.uint16[C+18]=v,this.uint16[C+19]=b,this.uint16[C+20]=w,this.uint16[C+21]=_,this.uint16[C+22]=A,this.uint32[B+12]=S,this.float32[B+13]=k,this.float32[B+14]=I,this.uint16[C+30]=z,this.uint16[C+31]=M,t}}Ki.prototype.bytesPerElement=64,$n("StructArrayLayout8i15ui1ul2f2ui64",Ki);class Gi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.float32[1*t+0]=e,t}}Gi.prototype.bytesPerElement=4,$n("StructArrayLayout1f4",Gi);class Ji extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=3*t;return this.uint16[6*t+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t}}Ji.prototype.bytesPerElement=12,$n("StructArrayLayout1ui2f12",Ji);class Xi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e,r){const n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){const i=4*t;return this.uint32[2*t+0]=e,this.uint16[i+2]=r,this.uint16[i+3]=n,t}}Xi.prototype.bytesPerElement=8,$n("StructArrayLayout1ul2ui8",Xi);class Yi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t,e){const r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){const n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t}}Yi.prototype.bytesPerElement=4,$n("StructArrayLayout2ui4",Yi);class Hi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer);}emplaceBack(t){const e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint16[1*t+0]=e,t}}Hi.prototype.bytesPerElement=2,$n("StructArrayLayout1ui2",Hi);class Wi extends zi{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer);}emplaceBack(t,e,r,n){const i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){const 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}}Wi.prototype.bytesPerElement=16,$n("StructArrayLayout4f16",Wi);class Qi extends Ii{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new a(this.anchorPointX,this.anchorPointY)}}Qi.prototype.size=20;class ta extends Ui{get(t){return new Qi(this,t)}}$n("CollisionBoxArray",ta);class ea extends Ii{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(t){this._structArray.uint8[this._pos1+37]=t;}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(t){this._structArray.uint8[this._pos1+38]=t;}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(t){this._structArray.uint32[this._pos4+10]=t;}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}ea.prototype.size=48;class ra extends Zi{get(t){return new ea(this,t)}}$n("PlacedSymbolArray",ra);class na extends Ii{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(t){this._structArray.uint32[this._pos4+12]=t;}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}na.prototype.size=64;class ia extends Ki{get(t){return new na(this,t)}}$n("SymbolInstanceArray",ia);class aa extends Gi{getoffsetX(t){return this.float32[1*t+0]}}$n("GlyphOffsetArray",aa);class sa extends Pi{getx(t){return this.int16[3*t+0]}gety(t){return this.int16[3*t+1]}gettileUnitDistanceFromAnchor(t){return this.int16[3*t+2]}}$n("SymbolLineVertexArray",sa);class oa extends Ii{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}oa.prototype.size=12;class la extends Ji{get(t){return new oa(this,t)}}$n("TextAnchorOffsetArray",la);class ua extends Ii{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}ua.prototype.size=8;class ca extends Xi{get(t){return new ua(this,t)}}$n("FeatureIndexArray",ca);class ha extends Bi{}class pa extends Bi{}class fa extends Bi{}
vendor: 14,528 bytes, line 37
37class da extends Ei{}class ya extends Fi{}class ma extends Ti{}class ga extends $i{}class xa extends Li{}class va extends Di{}class ba extends Oi{}class wa extends Ri{}class _a extends ji{}class Aa extends Ni{}class Sa extends Yi{}const ka=Mi([{name:"a_pos",components:2,type:"Int16"}],4),{members:Ia}=ka;class za{constructor(t=[]){this.segments=t;}prepareSegment(t,e,r,n){let i=this.segments[this.segments.length-1];return t>za.MAX_VERTEX_ARRAY_LENGTH&&A(`Max vertices per segment is ${za.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${t}`),(!i||i.vertexLength+t>za.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}get(){return this.segments}destroy(){for(const t of this.segments)for(const e in t.vaos)t.vaos[e].destroy();}static simpleSegment(t,e,r,n){return new za([{vertexOffset:t,primitiveOffset:e,vertexLength:r,primitiveLength:n,vaos:{},sortKey:0}])}}function Ma(t,e){return 256*(t=y(Math.floor(t),0,255))+y(Math.floor(e),0,255)}za.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,$n("SegmentVector",za);const Ca=Mi([{name:"a_pattern_from",components:4,type:"Uint16"},{name:"a_pattern_to",components:4,type:"Uint16"},{name:"a_pixel_ratio_from",components:1,type:"Uint16"},{name:"a_pixel_ratio_to",components:1,type:"Uint16"}]);var Ba={exports:{}},Pa={exports:{}};Pa.exports=function(t,e){var r,n,i,a,s,o,l,u;for(n=t.length-(r=3&t.length),i=e,s=3432918353,o=461845907,u=0;u<n;)l=255&t.charCodeAt(u)|(255&t.charCodeAt(++u))<<8|(255&t.charCodeAt(++u))<<16|(255&t.charCodeAt(++u))<<24,++u,i=27492+(65535&(a=5*(65535&(i=(i^=l=(65535&(l=(l=(65535&l)*s+(((l>>>16)*s&65535)<<16)&4294967295)<<15|l>>>17))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(a>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(u+2))<<16;case 2:l^=(255&t.charCodeAt(u+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(u)))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<15|l>>>17))*o+(((l>>>16)*o&65535)<<16)&4294967295;}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0};var Va=Pa.exports,Ea={exports:{}};Ea.exports=function(t,e){for(var r,n=t.length,i=e^n,a=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(a)|(255&t.charCodeAt(++a))<<8|(255&t.charCodeAt(++a))<<16|(255&t.charCodeAt(++a))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++a;switch(n){case 3:i^=(255&t.charCodeAt(a+2))<<16;case 2:i^=(255&t.charCodeAt(a+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(a)))+((1540483477*(i>>>16)&65535)<<16);}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0};var Fa=Va,Ta=Ea.exports;Ba.exports=Fa,Ba.exports.murmur3=Fa,Ba.exports.murmur2=Ta;var $a=r(Ba.exports);class La{constructor(){this.ids=[],this.positions=[],this.indexed=!1;}add(t,e,r,n){this.ids.push(Da(t)),this.positions.push(e,r,n);}getPositions(t){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");const e=Da(t);let r=0,n=this.ids.length-1;for(;r<n;){const t=r+n>>1;this.ids[t]>=e?n=t:r=t+1;}const i=[];for(;this.ids[r]===e;)i.push({index:this.positions[3*r],start:this.positions[3*r+1],end:this.positions[3*r+2]}),r++;return i}static serialize(t,e){const r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return Oa(r,n,0,r.length-1),e&&e.push(r.buffer,n.buffer),{ids:r,positions:n}}static deserialize(t){const e=new La;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e}}function Da(t){const e=+t;return !isNaN(e)&&e<=Number.MAX_SAFE_INTEGER?e:$a(String(t))}function Oa(t,e,r,n){for(;r<n;){const i=t[r+n>>1];let a=r-1,s=n+1;for(;;){do{a++;}while(t[a]<i);do{s--;}while(t[s]>i);if(a>=s)break;Ua(t,a,s),Ua(e,3*a,3*s),Ua(e,3*a+1,3*s+1),Ua(e,3*a+2,3*s+2);}s-r<n-s?(Oa(t,e,r,s),r=s+1):(Oa(t,e,s+1,n),n=s);}}function Ua(t,e,r){const n=t[e];t[e]=t[r],t[r]=n;}$n("FeaturePositionMap",La);class Ra{constructor(t,e){this.gl=t.gl,this.location=e;}}class qa extends Ra{constructor(t,e){super(t,e),this.current=0;}set(t){this.current!==t&&(this.current=t,this.gl.uniform1f(this.location,t));}}class ja extends Ra{constructor(t,e){super(t,e),this.current=[0,0,0,0];}set(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]));}}class Na extends Ra{constructor(t,e){super(t,e),this.current=Yt.transparent;}set(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));}}const Za=new Float32Array(16);function Ka(t){return [Ma(255*t.r,255*t.g),Ma(255*t.b,255*t.a)]}class Ga{constructor(t,e,r){this.value=t,this.uniformNames=e.map((t=>`u_${t}`)),this.type=r;}setUniform(t,e,r){t.set(r.constantOr(this.value));}getBinding(t,e,r){return "color"===this.type?new Na(t,e):new qa(t,e)}}class Ja{constructor(t,e){this.uniformNames=e.map((t=>`u_${t}`)),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1;}setConstantPatternPositions(t,e){this.pixelRatioFrom=e.pixelRatio,this.pixelRatioTo=t.pixelRatio,this.patternFrom=e.tlbr,this.patternTo=t.tlbr;}setUniform(t,e,r,n){const i="u_pattern_to"===n?this.patternTo:"u_pattern_from"===n?this.patternFrom:"u_pixel_ratio_to"===n?this.pixelRatioTo:"u_pixel_ratio_from"===n?this.pixelRatioFrom:null;i&&t.set(i);}getBinding(t,e,r){return "u_pattern"===r.substr(0,9)?new ja(t,e):new qa(t,e)}}class Xa{constructor(t,e,r,n){this.expression=t,this.type=r,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:"Float32",components:"color"===r?2:1,offset:0}))),this.paintVertexArray=new n;}populatePaintArray(t,e,r,n,i){const a=this.paintVertexArray.length,s=this.expression.evaluate(new li(0),e,{},n,[],i);this.paintVertexArray.resize(t),this._setPaintValue(a,t,s);}updatePaintArray(t,e,r,n){const i=this.expression.evaluate({zoom:0},r,n);this._setPaintValue(t,e,i);}_setPaintValue(t,e,r){if("color"===this.type){const n=Ka(r);for(let r=t;r<e;r++)this.paintVertexArray.emplace(r,n[0],n[1]);}else {for(let n=t;n<e;n++)this.paintVertexArray.emplace(n,r);this.maxValue=Math.max(this.maxValue,Math.abs(r));}}upload(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();}}class Ya{constructor(t,e,r,n,i,a){this.expression=t,this.uniformNames=e.map((t=>`u_${t}_t`)),this.type=r,this.useIntegerZoom=n,this.zoom=i,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:"Float32",components:"color"===r?4:2,offset:0}))),this.paintVertexArray=new a;}populatePaintArray(t,e,r,n,i){const a=this.expression.evaluate(new li(this.zoom),e,{},n,[],i),s=this.expression.evaluate(new li(this.zoom+1),e,{},n,[],i),o=this.paintVertexArray.length;this.paintVertexArray.resize(t),this._setPaintValue(o,t,a,s);}updatePaintArray(t,e,r,n){const i=this.expression.evaluate({zoom:this.zoom},r,n),a=this.expression.evaluate({zoom:this.zoom+1},r,n);this._setPaintValue(t,e,i,a);}_setPaintValue(t,e,r,n){if("color"===this.type){const i=Ka(r),a=Ka(n);for(let r=t;r<e;r++)this.paintVertexArray.emplace(r,i[0],i[1],a[0],a[1]);}else {for(let i=t;i<e;i++)this.paintVertexArray.emplace(i,r,n);this.maxValue=Math.max(this.maxValue,Math.abs(r),Math.abs(n));}}upload(t){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=t.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent));}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy();}setUniform(t,e){const r=this.useIntegerZoom?Math.floor(e.zoom):e.zoom,n=y(this.expression.interpolationFactor(r,this.zoom,this.zoom+1),0,1);t.set(n);}getBinding(t,e,r){return new qa(t,e)}}class Ha{constructor(t,e,r,n,i,a){this.expression=t,this.type=e,this.useIntegerZoom=r,this.zoom=n,this.layerId=a,this.zoomInPaintVertexArray=new i,this.zoomOutPaintVertexArray=new i;}populatePaintArray(t,e,r){const n=this.zoomInPaintVertexArray.length;this.zoomInPaintVertexArray.resize(t),this.zoomOutPaintVertexArray.resize(t),this._setPaintValues(n,t,e.patterns&&e.patterns[this.layerId],r);}updatePaintArray(t,e,r,n,i){this._setPaintValues(t,e,r.patterns&&r.patterns[this.layerId],i);}_setPaintValues(t,e,r,n){if(!n||!r)return;const{min:i,mid:a,max:s}=r,o=n[i],l=n[a],u=n[s];if(o&&l&&u)for(let r=t;r<e;r++)this.zoomInPaintVertexArray.emplace(r,l.tl[0],l.tl[1],l.br[0],l.br[1],o.tl[0],o.tl[1],o.br[0],o.br[1],l.pixelRatio,o.pixelRatio),this.zoomOutPaintVertexArray.emplace(r,l.tl[0],l.tl[1],l.br[0],l.br[1],u.tl[0],u.tl[1],u.br[0],u.br[1],l.pixelRatio,u.pixelRatio);}upload(t){this.zoomInPaintVertexArray&&this.zoomInPaintVertexArray.arrayBuffer&&this.zoomOutPaintVertexArray&&this.zoomOutPaintVertexArray.arrayBuffer&&(this.zoomInPaintVertexBuffer=t.createVertexBuffer(this.zoomInPaintVertexArray,Ca.members,this.expression.isStateDependent),this.zoomOutPaintVertexBuffer=t.createVertexBuffer(this.zoomOutPaintVertexArray,Ca.members,this.expression.isStateDependent));}destroy(){this.zoomOutPaintVertexBuffer&&this.zoomOutPaintVertexBuffer.destroy(),this.zoomInPaintVertexBuffer&&this.zoomInPaintVertexBuffer.destroy();}}class Wa{constructor(t,e,r){this.binders={},this._buffers=[];const n=[];for(const i in t.paint._values){if(!r(i))continue;const a=t.paint.get(i);if(!(a instanceof yi&&_r(a.property.specification)))continue;const s=ts(i,t.type),o=a.value,l=a.property.specification.type,u=a.property.useIntegerZoom,c=a.property.specification["property-type"],h="cross-faded"===c||"cross-faded-data-driven"===c;if("constant"===o.kind)this.binders[i]=h?new Ja(o.value,s):new Ga(o.value,s,l),n.push(`/u_${i}`);else if("source"===o.kind||h){const r=es(i,l,"source");this.binders[i]=h?new Ha(o,l,u,e,r,t.id):new Xa(o,s,l,r),n.push(`/a_${i}`);}else {const t=es(i,l,"composite");this.binders[i]=new Ya(o,s,l,u,e,t),n.push(`/z_${i}`);}}this.cacheKey=n.sort().join("");}getMaxValue(t){const e=this.binders[t];return e instanceof Xa||e instanceof Ya?e.maxValue:0}populatePaintArrays(t,e,r,n,i){for(const a in this.binders){const s=this.binders[a];(s instanceof Xa||s instanceof Ya||s instanceof Ha)&&s.populatePaintArray(t,e,r,n,i);}}setConstantPatternPositions(t,e){for(const r in this.binders){const n=this.binders[r];n instanceof Ja&&n.setConstantPatternPositions(t,e);}}updatePaintArrays(t,e,r,n,i){let a=!1;for(const s in t){const o=e.getPositions(s);for(const e of o){const o=r.feature(e.index);for(const r in this.binders){const l=this.binders[r];if((l instanceof Xa||l instanceof Ya||l instanceof Ha)&&!0===l.expression.isStateDependent){const u=n.paint.get(r);l.expression=u.value,l.updatePaintArray(e.start,e.end,o,t[s],i),a=!0;}}}}return a}defines(){const t=[];for(const e in this.binders){const r=this.binders[e];(r instanceof Ga||r instanceof Ja)&&t.push(...r.uniformNames.map((t=>`#define HAS_UNIFORM_${t}`)));}return t}getBinderAttributes(){const t=[];for(const e in this.binders){const r=this.binders[e];if(r instanceof Xa||r instanceof Ya)for(let e=0;e<r.paintVertexAttributes.length;e++)t.push(r.paintVertexAttributes[e].name);else if(r instanceof Ha)for(let e=0;e<Ca.members.length;e++)t.push(Ca.members[e].name);}return t}getBinderUniforms(){const t=[];for(const e in this.binders){const r=this.binders[e];if(r instanceof Ga||r instanceof Ja||r instanceof Ya)for(const e of r.uniformNames)t.push(e);}return t}getPaintVertexBuffers(){return this._buffers}getUniforms(t,e){const r=[];for(const n in this.binders){const i=this.binders[n];if(i instanceof Ga||i instanceof Ja||i instanceof Ya)for(const a of i.uniformNames)if(e[a]){const s=i.getBinding(t,e[a],a);r.push({name:a,property:n,binding:s});}}return r}setUniforms(t,e,r,n){for(const{name:t,property:i,binding:a}of e)this.binders[i].setUniform(a,n,r.get(i),t);}updatePaintBuffers(t){this._buffers=[];for(const e in this.binders){const r=this.binders[e];if(t&&r instanceof Ha){const e=2===t.fromScale?r.zoomInPaintVertexBuffer:r.zoomOutPaintVertexBuffer;e&&this._buffers.push(e);}else (r instanceof Xa||r instanceof Ya)&&r.paintVertexBuffer&&this._buffers.push(r.paintVertexBuffer);}}upload(t){for(const e in this.binders){const r=this.binders[e];(r instanceof Xa||r instanceof Ya||r instanceof Ha)&&r.upload(t);}this.updatePaintBuffers();}destroy(){for(const t in this.binders){const e=this.binders[t];(e instanceof Xa||e instanceof Ya||e instanceof Ha)&&e.destroy();}}}class Qa{constructor(t,e,r=(()=>!0)){this.programConfigurations={};for(const n of t)this.programConfigurations[n.id]=new Wa(n,e,r);this.needsUpload=!1,this._featureMap=new La,this._bufferOffset=0;}populatePaintArrays(t,e,r,n,i,a){for(const r in this.programConfigurations)this.programConfigurations[r].populatePaintArrays(t,e,n,i,a);void 0!==e.id&&this._featureMap.add(e.id,r,this._bufferOffset,t),this._bufferOffset=t,this.needsUpload=!0;}updatePaintArrays(t,e,r,n){for(const i of r)this.needsUpload=this.programConfigurations[i.id].updatePaintArrays(t,this._featureMap,e,i,n)||this.needsUpload;}get(t){return this.programConfigurations[t]}upload(t){if(this.needsUpload){for(const e in this.programConfigurations)this.programConfigurations[e].upload(t);this.needsUpload=!1;}}destroy(){for(const t in this.programConfigurations)this.programConfigurations[t].destroy();}}function ts(t,e){return {"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-extrusion-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"]}[t]||[t.replace(`${e}
37-`,"").replace(/-/g,"_")]}function es(t,e,r){const n={color:{source:Ti,composite:Wi},number:{source:Gi,composite:Ti}},i=function(t){return {"line-pattern":{source:ga,composite:ga},"fill-pattern":{source:ga,composite:ga},"fill-extrusion-pattern":{source:ga,composite:ga}}[t]}(t);return i&&i[r]||n[e][r]}$n("ConstantBinder",Ga),$n("CrossFadedConstantBinder",Ja),$n("SourceExpressionBinder",Xa),$n("CrossFadedCompositeBinder",Ha),$n("CompositeExpressionBinder",Ya),$n("ProgramConfiguration",Wa,{omit:["_buffers"]}),$n("ProgramConfigurationSet",Qa);const rs=8192,ns=Math.pow(2,14)-1,is=-ns-1;function as(t){const e=rs/t.extent,r=t.loadGeometry();for(let t=0;t<r.length;t++){const n=r[t];for(let t=0;t<n.length;t++){const r=n[t],i=Math.round(r.x*e),a=Math.round(r.y*e);r.x=y(i,is,ns),r.y=y(a,is,ns),(i<r.x||i>r.x+1||a<r.y||a>r.y+1)&&A("Geometry exceeds allowed extent, reduce your vector tile buffer size");}}return r}function ss(t,e){return {type:t.type,id:t.id,properties:t.properties,geometry:e?as(t):[]}}function os(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2);}class ls{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new pa,this.indexArray=new Aa,this.segments=new za,this.programConfigurations=new Qa(t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){const n=this.layers[0],i=[];let a=null,s=!1;"circle"===n.type&&(a=n.layout.get("circle-sort-key"),s=!a.isConstant());for(const{feature:e,id:n,index:o,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=ss(e,t);if(!this.layers[0]._featureFilter.filter(new li(this.zoom),u,r))continue;const c=s?a.evaluate(u,{},r):void 0,h={id:n,properties:e.properties,type:e.type,sourceLayerIndex:l,index:o,geometry:t?u.geometry:as(e),patterns:{},sortKey:c};i.push(h);}s&&i.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of i){const{geometry:i,index:a,sourceLayerIndex:s}=n,o=t[a].feature;this.addFeature(n,i,a,r),e.featureIndex.insert(o,i,a,s,this.index);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Ia),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}addFeature(t,e,r,n){for(const r of e)for(const e of r){const r=e.x,n=e.y;if(r<0||r>=rs||n<0||n>=rs)continue;const i=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),a=i.vertexLength;os(this.layoutVertexArray,r,n,-1,-1),os(this.layoutVertexArray,r,n,1,-1),os(this.layoutVertexArray,r,n,1,1),os(this.layoutVertexArray,r,n,-1,1),this.indexArray.emplaceBack(a,a+1,a+2),this.indexArray.emplaceBack(a,a+3,a+2),i.vertexLength+=4,i.primitiveLength+=2;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},n);}}function us(t,e){for(let r=0;r<t.length;r++)if(xs(e,t[r]))return !0;for(let r=0;r<e.length;r++)if(xs(t,e[r]))return !0;return !!fs(t,e)}function cs(t,e,r){return !!xs(t,e)||!!ys(e,t,r)}function hs(t,e){if(1===t.length)return gs(e,t[0]);for(let r=0;r<e.length;r++){const n=e[r];for(let e=0;e<n.length;e++)if(xs(t,n[e]))return !0}for(let r=0;r<t.length;r++)if(gs(e,t[r]))return !0;for(let r=0;r<e.length;r++)if(fs(t,e[r]))return !0;return !1}function ps(t,e,r){if(t.length>1){if(fs(t,e))return !0;for(let n=0;n<e.length;n++)if(ys(e[n],t,r))return !0}for(let n=0;n<t.length;n++)if(ys(t[n],e,r))return !0;return !1}function fs(t,e){if(0===t.length||0===e.length)return !1;for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1];for(let t=0;t<e.length-1;t++)if(ds(n,i,e[t],e[t+1]))return !0}return !1}function ds(t,e,r,n){return S(t,r,n)!==S(e,r,n)&&S(t,e,r)!==S(t,e,n)}function ys(t,e,r){const n=r*r;if(1===e.length)return t.distSqr(e[0])<n;for(let r=1;r<e.length;r++)if(ms(t,e[r-1],e[r])<n)return !0;return !1}function ms(t,e,r){const n=e.distSqr(r);if(0===n)return t.distSqr(e);const i=((t.x-e.x)*(r.x-e.x)+(t.y-e.y)*(r.y-e.y))/n;return t.distSqr(i<0?e:i>1?r:r.sub(e)._mult(i)._add(e))}function gs(t,e){let r,n,i,a=!1;for(let s=0;s<t.length;s++){r=t[s];for(let t=0,s=r.length-1;t<r.length;s=t++)n=r[t],i=r[s],n.y>e.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 xs(t,e){let r=!1;for(let n=0,i=t.length-1;n<t.length;i=n++){const a=t[n],s=t[i];a.y>e.y!=s.y>e.y&&e.x<(s.x-a.x)*(e.y-a.y)/(s.y-a.y)+a.x&&(r=!r);}return r}function vs(t,e,r){const n=r[0],i=r[2];if(t.x<n.x&&e.x<n.x||t.x>i.x&&e.x>i.x||t.y<n.y&&e.y<n.y||t.y>i.y&&e.y>i.y)return !1;const a=S(t,e,r[0]);return a!==S(t,e,r[1])||a!==S(t,e,r[2])||a!==S(t,e,r[3])}function bs(t,e,r){const n=e.paint.get(t).value;return "constant"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function ws(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function _s(t,e,r,n,i){if(!e[0]&&!e[1])return t;const s=a.convert(e)._mult(i);"viewport"===r&&s._rotate(-n);const o=[];for(let e=0;e<t.length;e++)o.push(t[e].sub(s));return o}let As,Ss;$n("CircleBucket",ls,{omit:["layers"]});var ks={get paint(){return Ss=Ss||new _i({"circle-radius":new xi(X.paint_circle["circle-radius"]),"circle-color":new xi(X.paint_circle["circle-color"]),"circle-blur":new xi(X.paint_circle["circle-blur"]),"circle-opacity":new xi(X.paint_circle["circle-opacity"]),"circle-translate":new gi(X.paint_circle["circle-translate"]),"circle-translate-anchor":new gi(X.paint_circle["circle-translate-anchor"]),"circle-pitch-scale":new gi(X.paint_circle["circle-pitch-scale"]),"circle-pitch-alignment":new gi(X.paint_circle["circle-pitch-alignment"]),"circle-stroke-width":new xi(X.paint_circle["circle-stroke-width"]),"circle-stroke-color":new xi(X.paint_circle["circle-stroke-color"]),"circle-stroke-opacity":new xi(X.paint_circle["circle-stroke-opacity"])})},get layout(){return As=As||new _i({"circle-sort-key":new xi(X.layout_circle["circle-sort-key"])})}},Is=1e-6,zs="undefined"!=typeof Float32Array?Float32Array:Array;function Ms(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Cs(t,e,r){var n=e[0],i=e[1],a=e[2],s=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],f=e[10],d=e[11],y=e[12],m=e[13],g=e[14],x=e[15],v=r[0],b=r[1],w=r[2],_=r[3];return t[0]=v*n+b*o+w*h+_*y,t[1]=v*i+b*l+w*p+_*m,t[2]=v*a+b*u+w*f+_*g,t[3]=v*s+b*c+w*d+_*x,t[4]=(v=r[4])*n+(b=r[5])*o+(w=r[6])*h+(_=r[7])*y,t[5]=v*i+b*l+w*p+_*m,t[6]=v*a+b*u+w*f+_*g,t[7]=v*s+b*c+w*d+_*x,t[8]=(v=r[8])*n+(b=r[9])*o+(w=r[10])*h+(_=r[11])*y,t[9]=v*i+b*l+w*p+_*m,t[10]=v*a+b*u+w*f+_*g,t[11]=v*s+b*c+w*d+_*x,t[12]=(v=r[12])*n+(b=r[13])*o+(w=r[14])*h+(_=r[15])*y,t[13]=v*i+b*l+w*p+_*m,t[14]=v*a+b*u+w*f+_*g,t[15]=v*s+b*c+w*d+_*x,t}Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});var Bs,Ps=Cs;function Vs(t,e,r){var n=e[0],i=e[1],a=e[2],s=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*s,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*s,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*s,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*s,t}Bs=new zs(4),zs!=Float32Array&&(Bs[0]=0,Bs[1]=0,Bs[2]=0,Bs[3]=0);class Es extends Si{constructor(t){super(t,ks);}createBucket(t){return new ls(t)}queryRadius(t){const e=t;return bs("circle-radius",this,e)+bs("circle-stroke-width",this,e)+ws(this.paint.get("circle-translate"))}queryIntersectsFeature(t,e,r,n,i,a,s,o){const l=_s(t,this.paint.get("circle-translate"),this.paint.get("circle-translate-anchor"),a.angle,s),u=this.paint.get("circle-radius").evaluate(e,r)+this.paint.get("circle-stroke-width").evaluate(e,r),c="map"===this.paint.get("circle-pitch-alignment"),h=c?l:function(t,e){return t.map((t=>Fs(t,e)))}(l,o),p=c?u*s:u;for(const t of n)for(const e of t){const t=c?e:Fs(e,o);let r=p;const n=Vs([],[e.x,e.y,0,1],o);if("viewport"===this.paint.get("circle-pitch-scale")&&"map"===this.paint.get("circle-pitch-alignment")?r*=n[3]/a.cameraToCenterDistance:"map"===this.paint.get("circle-pitch-scale")&&"viewport"===this.paint.get("circle-pitch-alignment")&&(r*=a.cameraToCenterDistance/n[3]),cs(h,t,r))return !0}return !1}}function Fs(t,e){const r=Vs([],[t.x,t.y,0,1],e);return new a(r[0]/r[3],r[1]/r[3])}class Ts extends ls{}let $s;$n("HeatmapBucket",Ts,{omit:["layers"]});var Ls={get paint(){return $s=$s||new _i({"heatmap-radius":new xi(X.paint_heatmap["heatmap-radius"]),"heatmap-weight":new xi(X.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new gi(X.paint_heatmap["heatmap-intensity"]),"heatmap-color":new wi(X.paint_heatmap["heatmap-color"]),"heatmap-opacity":new gi(X.paint_heatmap["heatmap-opacity"])})}};function Ds(t,{width:e,height:r},n,i){if(i){if(i instanceof Uint8ClampedArray)i=new Uint8Array(i.buffer);else if(i.length!==e*r*n)throw new RangeError(`mismatched image size. expected: ${i.length} but got: ${e*r*n}`)}else i=new Uint8Array(e*r*n);return t.width=e,t.height=r,t.data=i,t}function Os(t,{width:e,height:r},n){if(e===t.width&&r===t.height)return;const i=Ds({},{width:e,height:r},n);Us(t,i,{x:0,y:0},{x:0,y:0},{width:Math.min(t.width,e),height:Math.min(t.height,r)},n),t.width=e,t.height=r,t.data=i.data;}function Us(t,e,r,n,i,a){if(0===i.width||0===i.height)return e;if(i.width>t.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");const s=t.data,o=e.data;if(s===o)throw new Error("srcData equals dstData, so image is already copied");for(let l=0;l<i.height;l++){const u=((r.y+l)*t.width+r.x)*a,c=((n.y+l)*e.width+n.x)*a;for(let t=0;t<i.width*a;t++)o[c+t]=s[u+t];}return e}class Rs{constructor(t,e){Ds(this,t,1,e);}resize(t){Os(this,t,1);}clone(){return new Rs({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(t,e,r,n,i){Us(t,e,r,n,i,1);}}class qs{constructor(t,e){Ds(this,t,4,e);}resize(t){Os(this,t,4);}replace(t,e){e?this.data.set(t):this.data=t instanceof Uint8ClampedArray?new Uint8Array(t.buffer):t;}clone(){return new qs({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(t,e,r,n,i){Us(t,e,r,n,i,4);}}function js(t){const e={},r=t.resolution||256,n=t.clips?t.clips.length:1,i=t.image||new qs({width:r,height:n});if(Math.log(r)/Math.LN2%1!=0)throw new Error(`width is not a power of 2 - ${r}`);const a=(r,n,a)=>{e[t.evaluationKey]=a;const s=t.expression.evaluate(e);i.data[r+n+0]=Math.floor(255*s.r/s.a),i.data[r+n+1]=Math.floor(255*s.g/s.a),i.data[r+n+2]=Math.floor(255*s.b/s.a),i.data[r+n+3]=Math.floor(255*s.a);};if(t.clips)for(let e=0,i=0;e<n;++e,i+=4*r)for(let n=0,s=0;n<r;n++,s+=4){const o=n/(r-1),{start:l,end:u}=t.clips[e];a(i,s,l*(1-o)+u*o);}else for(let t=0,e=0;t<r;t++,e+=4)a(0,e,t/(r-1));return i}
37$n("AlphaImage",Rs),$n("RGBAImage",qs);class Ns extends Si{createBucket(t){return new Ts(t)}constructor(t){super(t,Ls),this._updateColorRamp();}_handleSpecialPaintPropertyUpdate(t){"heatmap-color"===t&&this._updateColorRamp();}_updateColorRamp(){this.colorRamp=js({expression:this._transitionablePaint._values["heatmap-color"].value.expression,evaluationKey:"heatmapDensity",image:this.colorRamp}),this.colorRampTexture=null;}resize(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null);}queryRadius(){return 0}queryIntersectsFeature(){return !1}hasOffscreenPass(){return 0!==this.paint.get("heatmap-opacity")&&"none"!==this.visibility}}let Zs;var Ks={get paint(){return Zs=Zs||new _i({"hillshade-illumination-direction":new gi(X.paint_hillshade["hillshade-illumination-direction"]),"hillshade-illumination-anchor":new gi(X.paint_hillshade["hillshade-illumination-anchor"]),"hillshade-exaggeration":new gi(X.paint_hillshade["hillshade-exaggeration"]),"hillshade-shadow-color":new gi(X.paint_hillshade["hillshade-shadow-color"]),"hillshade-highlight-color":new gi(X.paint_hillshade["hillshade-highlight-color"]),"hillshade-accent-color":new gi(X.paint_hillshade["hillshade-accent-color"])})}};class Gs extends Si{constructor(t){super(t,Ks);}hasOffscreenPass(){return 0!==this.paint.get("hillshade-exaggeration")&&"none"!==this.visibility}}const Js=Mi([{name:"a_pos",components:2,type:"Int16"}],4),{members:Xs}=Js;var Ys={exports:{}};function Hs(t,e,r){r=r||2;var n,i,a,s,o,l,u,c=e&&e.length,h=c?e[0]*r:t.length,p=Ws(t,0,h,r,!0),f=[];if(!p||p.next===p.prev)return f;if(c&&(p=function(t,e,r,n){var i,a,s,o=[];for(i=0,a=e.length;i<a;i++)(s=Ws(t,e[i]*n,i<a-1?e[i+1]*n:t.length,n,!1))===s.next&&(s.steiner=!0),o.push(uo(s));for(o.sort(ao),i=0;i<o.length;i++)r=so(o[i],r);return r}(t,e,p,r)),t.length>80*r){n=a=t[0],i=s=t[1];for(var d=r;d<h;d+=r)(o=t[d])<n&&(n=o),(l=t[d+1])<i&&(i=l),o>a&&(a=o),l>s&&(s=l);u=0!==(u=Math.max(a-n,s-i))?32767/u:0;}return to(p,f,r,n,i,u,0),f}function Ws(t,e,r,n,i){var a,s;if(i===Ao(t,e,r,n)>0)for(a=e;a<r;a+=n)s=bo(a,t[a],t[a+1],s);else for(a=r-n;a>=e;a-=n)s=bo(a,t[a],t[a+1],s);return s&&fo(s,s.next)&&(wo(s),s=s.next),s}function Qs(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!fo(n,n.next)&&0!==po(n.prev,n,n.next))n=n.next;else {if(wo(n),(n=e=n.prev)===n.next)break;r=!0;}}while(r||n!==e);return e}function to(t,e,r,n,i,a,s){if(t){!s&&a&&function(t,e,r,n){var i=t;do{0===i.z&&(i.z=lo(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,s,o,l,u=1;do{for(r=t,t=null,a=null,s=0;r;){for(s++,n=r,o=0,e=0;e<u&&(o++,n=n.nextZ);e++);for(l=u;o>0||l>0&&n;)0!==o&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,o--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n;}a.nextZ=null,u*=2;}while(s>1)}(i);}(t,n,i,a);for(var o,l,u=t;t.prev!==t.next;)if(o=t.prev,l=t.next,a?ro(t,n,i,a):eo(t))e.push(o.i/r|0),e.push(t.i/r|0),e.push(l.i/r|0),wo(t),t=l.next,u=l.next;else if((t=l)===u){s?1===s?to(t=no(Qs(t),e,r),e,r,n,i,a,2):2===s&&io(t,e,r,n,i,a):to(Qs(t),e,r,n,i,a,1);break}}}function eo(t){var e=t.prev,r=t,n=t.next;if(po(e,r,n)>=0)return !1;for(var i=e.x,a=r.x,s=n.x,o=e.y,l=r.y,u=n.y,c=i<a?i<s?i:s:a<s?a:s,h=o<l?o<u?o:u:l<u?l:u,p=i>a?i>s?i:s:a>s?a:s,f=o>l?o>u?o:u:l>u?l:u,d=n.next;d!==e;){if(d.x>=c&&d.x<=p&&d.y>=h&&d.y<=f&&co(i,o,a,l,s,u,d.x,d.y)&&po(d.prev,d,d.next)>=0)return !1;d=d.next;}return !0}function ro(t,e,r,n){var i=t.prev,a=t,s=t.next;if(po(i,a,s)>=0)return !1;for(var o=i.x,l=a.x,u=s.x,c=i.y,h=a.y,p=s.y,f=o<l?o<u?o:u:l<u?l:u,d=c<h?c<p?c:p:h<p?h:p,y=o>l?o>u?o:u:l>u?l:u,m=c>h?c>p?c:p:h>p?h:p,g=lo(f,d,e,r,n),x=lo(y,m,e,r,n),v=t.prevZ,b=t.nextZ;v&&v.z>=g&&b&&b.z<=x;){if(v.x>=f&&v.x<=y&&v.y>=d&&v.y<=m&&v!==i&&v!==s&&co(o,c,l,h,u,p,v.x,v.y)&&po(v.prev,v,v.next)>=0)return !1;if(v=v.prevZ,b.x>=f&&b.x<=y&&b.y>=d&&b.y<=m&&b!==i&&b!==s&&co(o,c,l,h,u,p,b.x,b.y)&&po(b.prev,b,b.next)>=0)return !1;b=b.nextZ;}for(;v&&v.z>=g;){if(v.x>=f&&v.x<=y&&v.y>=d&&v.y<=m&&v!==i&&v!==s&&co(o,c,l,h,u,p,v.x,v.y)&&po(v.prev,v,v.next)>=0)return !1;v=v.prevZ;}for(;b&&b.z<=x;){if(b.x>=f&&b.x<=y&&b.y>=d&&b.y<=m&&b!==i&&b!==s&&co(o,c,l,h,u,p,b.x,b.y)&&po(b.prev,b,b.next)>=0)return !1;
vendor: 1,839 bytes, line 37
37b=b.nextZ;}return !0}function no(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!fo(i,a)&&yo(i,n,n.next,a)&&xo(i,a)&&xo(a,i)&&(e.push(i.i/r|0),e.push(n.i/r|0),e.push(a.i/r|0),wo(n),wo(n.next),n=t=a),n=n.next;}while(n!==t);return Qs(n)}function io(t,e,r,n,i,a){var s=t;do{for(var o=s.next.next;o!==s.prev;){if(s.i!==o.i&&ho(s,o)){var l=vo(s,o);return s=Qs(s,s.next),l=Qs(l,l.next),to(s,e,r,n,i,a,0),void to(l,e,r,n,i,a,0)}o=o.next;}s=s.next;}while(s!==t)}function ao(t,e){return t.x-e.x}function so(t,e){var r=function(t,e){var r,n=e,i=t.x,a=t.y,s=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var o=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(o<=i&&o>s&&(s=o,r=n.x<n.next.x?n:n.next,o===i))return r}n=n.next;}while(n!==e);if(!r)return null;var l,u=r,c=r.x,h=r.y,p=1/0;n=r;do{i>=n.x&&n.x>=c&&i!==n.x&&co(a<h?i:s,a,c,h,a<h?s:i,a,n.x,n.y)&&(l=Math.abs(a-n.y)/(i-n.x),xo(n,t)&&(l<p||l===p&&(n.x>r.x||n.x===r.x&&oo(r,n)))&&(r=n,p=l)),n=n.next;}while(n!==u);return r}(t,e);if(!r)return e;var n=vo(r,t);return Qs(n,n.next),Qs(r,r.next)}function oo(t,e){return po(t.prev,t,e.prev)<0&&po(e.next,t,t.next)<0}function lo(t,e,r,n,i){return (t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*i|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-n)*i|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function uo(t){var e=t,r=t;do{(e.x<r.x||e.x===r.x&&e.y<r.y)&&(r=e),e=e.next;}while(e!==t);return r}function co(t,e,r,n,i,a,s,o){return (i-s)*(e-o)>=(t-s)*(a-o)&&(t-s)*(n-o)>=(r-s)*(e-o)&&(r-s)*(a-o)>=(i-s)*(n-o)}function ho(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&&yo(r,r.next,t,e))return !0;r=r.next;}while(r!==t);return !1}(t,e)&&(xo(t,e)&&xo(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>
vendor: 9,151 bytes, line 37
37a&&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)&&(po(t.prev,t,e.prev)||po(t,e.prev,e))||fo(t,e)&&po(t.prev,t,t.next)>0&&po(e.prev,e,e.next)>0)}function po(t,e,r){return (e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function fo(t,e){return t.x===e.x&&t.y===e.y}function yo(t,e,r,n){var i=go(po(t,e,r)),a=go(po(t,e,n)),s=go(po(r,n,t)),o=go(po(r,n,e));return i!==a&&s!==o||!(0!==i||!mo(t,r,e))||!(0!==a||!mo(t,n,e))||!(0!==s||!mo(r,t,n))||!(0!==o||!mo(r,e,n))}function mo(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function go(t){return t>0?1:t<0?-1:0}function xo(t,e){return po(t.prev,t,t.next)<0?po(t,e,t.next)>=0&&po(t,t.prev,e)>=0:po(t,e,t.prev)<0||po(t,t.next,e)<0}function vo(t,e){var r=new _o(t.i,t.x,t.y),n=new _o(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 bo(t,e,r,n){var i=new _o(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 wo(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 _o(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1;}function Ao(t,e,r,n){for(var i=0,a=e,s=r-n;a<r;a+=n)i+=(t[s]-t[a])*(t[a+1]+t[s+1]),s=a;return i}Ys.exports=Hs,Ys.exports.default=Hs,Hs.deviation=function(t,e,r,n){var i=e&&e.length,a=Math.abs(Ao(t,0,i?e[0]*r:t.length,r));if(i)for(var s=0,o=e.length;s<o;s++)a-=Math.abs(Ao(t,e[s]*r,s<o-1?e[s+1]*r:t.length,r));var l=0;for(s=0;s<n.length;s+=3){var u=n[s]*r,c=n[s+1]*r,h=n[s+2]*r;l+=Math.abs((t[u]-t[h])*(t[c+1]-t[u+1])-(t[u]-t[c])*(t[h+1]-t[u+1]));}return 0===a&&0===l?0:Math.abs((l-a)/a)},Hs.flatten=function(t){for(var e=t[0][0].length,r={vertices:[],holes:[],dimensions:e},n=0,i=0;i<t.length;i++){for(var a=0;a<t[i].length;a++)for(var s=0;s<e;s++)r.vertices.push(t[i][a][s]);i>0&&r.holes.push(n+=t[i-1].length);}return r};var So=r(Ys.exports);function ko(t,e,r,n,i){Io(t,e,r||0,n||t.length-1,i||Mo);}function Io(t,e,r,n,i){for(;n>r;){if(n-r>600){var a=n-r+1,s=e-r+1,o=Math.log(a),l=.5*Math.exp(2*o/3),u=.5*Math.sqrt(o*l*(a-l)/a)*(s-a/2<0?-1:1);Io(t,e,Math.max(r,Math.floor(e-s*l/a+u)),Math.min(n,Math.floor(e+(a-s)*l/a+u)),i);}var c=t[e],h=r,p=n;for(zo(t,r,e),i(t[n],c)>0&&zo(t,r,n);h<p;){for(zo(t,h,p),h++,p--;i(t[h],c)<0;)h++;for(;i(t[p],c)>0;)p--;}0===i(t[r],c)?zo(t,r,p):zo(t,++p,n),p<=e&&(r=p+1),e<=p&&(n=p-1);}}function zo(t,e,r){var n=t[e];t[e]=t[r],t[r]=n;}function Mo(t,e){return t<e?-1:t>e?1:0}function Co(t,e){const r=t.length;if(r<=1)return [t];const n=[];let i,a;for(let e=0;e<r;e++){const r=k(t[e]);0!==r&&(t[e].area=Math.abs(r),void 0===a&&(a=r<0),a===r<0?(i&&n.push(i),i=[t[e]]):i.push(t[e]));}if(i&&n.push(i),e>1)for(let t=0;t<n.length;t++)n[t].length<=e||(ko(n[t],e,1,n[t].length-1,Bo),n[t]=n[t].slice(0,e));return n}function Bo(t,e){return e.area-t.area}function Po(t,e,r){const n=r.patternDependencies;let i=!1;for(const r of e){const e=r.paint.get(`${t}-pattern`);e.isConstant()||(i=!0);const a=e.constantOr(null);a&&(i=!0,n[a.to]=!0,n[a.from]=!0);}return i}function Vo(t,e,r,n,i){const a=i.patternDependencies;for(const s of e){const e=s.paint.get(`${t}-pattern`).value;if("constant"!==e.kind){let t=e.evaluate({zoom:n-1},r,{},i.availableImages),o=e.evaluate({zoom:n},r,{},i.availableImages),l=e.evaluate({zoom:n+1},r,{},i.availableImages);t=t&&t.name?t.name:t,o=o&&o.name?o.name:o,l=l&&l.name?l.name:l,a[t]=!0,a[o]=!0,a[l]=!0,r.patterns[s.id]={min:t,mid:o,max:l};}}return r}class Eo{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new fa,this.indexArray=new Aa,this.indexArray2=new Sa,this.programConfigurations=new Qa(t.layers,t.zoom),this.segments=new za,this.segments2=new za,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){this.hasPattern=Po("fill",this.layers,e);const n=this.layers[0].layout.get("fill-sort-key"),i=!n.isConstant(),a=[];for(const{feature:s,id:o,index:l,sourceLayerIndex:u}of t){const t=this.layers[0]._featureFilter.needGeometry,c=ss(s,t);if(!this.layers[0]._featureFilter.filter(new li(this.zoom),c,r))continue;const h=i?n.evaluate(c,{},r,e.availableImages):void 0,p={id:o,properties:s.properties,type:s.type,sourceLayerIndex:u,index:l,geometry:t?c.geometry:as(s),patterns:{},sortKey:h};a.push(p);}i&&a.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of a){const{geometry:i,index:a,sourceLayerIndex:s}=n;if(this.hasPattern){const t=Vo("fill",this.layers,n,this.zoom,e);this.patternFeatures.push(t);}else this.addFeature(n,i,a,r,{});e.featureIndex.insert(t[a].feature,i,a,s,this.index);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);}addFeatures(t,e,r){for(const t of this.patternFeatures)this.addFeature(t,t.geometry,t.index,e,r);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Xs),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.indexBuffer2=t.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy());}addFeature(t,e,r,n,i){for(const t of Co(e,500)){let e=0;for(const r of t)e+=r.length;const r=this.segments.prepareSegment(e,this.layoutVertexArray,this.indexArray),n=r.vertexLength,i=[],a=[];for(const e of t){if(0===e.length)continue;e!==t[0]&&a.push(i.length/2);const r=this.segments2.prepareSegment(e.length,this.layoutVertexArray,this.indexArray2),n=r.vertexLength;this.layoutVertexArray.emplaceBack(e[0].x,e[0].y),this.indexArray2.emplaceBack(n+e.length-1,n),i.push(e[0].x),i.push(e[0].y);for(let t=1;t<e.length;t++)this.layoutVertexArray.emplaceBack(e[t].x,e[t].y),this.indexArray2.emplaceBack(n+t-1,n+t),i.push(e[t].x),i.push(e[t].y);r.vertexLength+=e.length,r.primitiveLength+=e.length;}const s=So(i,a);for(let t=0;t<s.length;t+=3)this.indexArray.emplaceBack(n+s[t],n+s[t+1],n+s[t+2]);r.vertexLength+=e,r.primitiveLength+=s.length/3;}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,n);}}let Fo,To;$n("FillBucket",Eo,{omit:["layers","patternFeatures"]});var $o={get paint(){return To=To||new _i({"fill-antialias":new gi(X.paint_fill["fill-antialias"]),"fill-opacity":new xi(X.paint_fill["fill-opacity"]),"fill-color":new xi(X.paint_fill["fill-color"]),"fill-outline-color":new xi(X.paint_fill["fill-outline-color"]),"fill-translate":new gi(X.paint_fill["fill-translate"]),"fill-translate-anchor":new gi(X.paint_fill["fill-translate-anchor"]),"fill-pattern":new vi(X.paint_fill["fill-pattern"])})},get layout(){return Fo=Fo||new _i({"fill-sort-key":new xi(X.layout_fill["fill-sort-key"])})}};class Lo extends Si{constructor(t){super(t,$o);}recalculate(t,e){super.recalculate(t,e);const r=this.paint._values["fill-outline-color"];"constant"===r.value.kind&&void 0===r.value.value&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"]);}createBucket(t){return new Eo(t)}queryRadius(){return ws(this.paint.get("fill-translate"))}queryIntersectsFeature(t,e,r,n,i,a,s){return hs(_s(t,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),a.angle,s),n)}isTileClipped(){return !0}}const Do=Mi([{name:"a_pos",components:2,type:"Int16"},{name:"a_normal_ed",components:4,type:"Int16"}],4),Oo=Mi([{name:"a_centroid",components:2,type:"Int16"}],4),{members:Uo}=Do;var Ro={},qo=n,jo=No;function No(t,e,r,n,i){this.properties={},this.extent=r,this.type=0,this._pbf=t,this._geometry=-1,this._keys=n,this._values=i,t.readFields(Zo,this,e);}function Zo(t,e,r){1==t?e.id=r.readVarint():2==t?function(t,e){for(var r=t.readVarint()+t.pos;t.pos<r;){var n=e._keys[t.readVarint()],i=e._values[t.readVarint()];e.properties[n]=i;}}(r,e):3==t?e.type=r.readVarint():4==t&&(e._geometry=r.pos);}function Ko(t){for(var e,r,n=0,i=0,a=t.length,s=a-1;i<a;s=i++)n+=((r=t[s]).x-(e=t[i]).x)*(e.y+r.y);return n}No.types=["Unknown","Point","LineString","Polygon"],No.prototype.loadGeometry=function(){var t=this._pbf;t.pos=this._geometry;for(var e,r=t.readVarint()+t.pos,n=1,i=0,a=0,s=0,o=[];t.pos<r;){if(i<=0){var l=t.readVarint();n=7&l,i=l>>3;}if(i--,1===n||2===n)a+=t.readSVarint(),s+=t.readSVarint(),1===n&&(e&&o.push(e),e=[]),e.push(new qo(a,s));else {if(7!==n)throw new Error("unknown command "+n);e&&e.push(e[0].clone());}}return e&&o.push(e),o},No.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,s=1/0,o=-1/0,l=1/0,u=-1/0;t.pos<e;){if(n<=0){var c=t.readVarint();r=7&c,n=c>>3;}if(n--,1===r||2===r)(i+=t.readSVarint())<s&&(s=i),i>
vendor: 9,070 bytes, line 37
37o&&(o=i),(a+=t.readSVarint())<l&&(l=a),a>u&&(u=a);else if(7!==r)throw new Error("unknown command "+r)}return [s,l,o,u]},No.prototype.toGeoJSON=function(t,e,r){var n,i,a=this.extent*Math.pow(2,r),s=this.extent*t,o=this.extent*e,l=this.loadGeometry(),u=No.types[this.type];function c(t){for(var e=0;e<t.length;e++){var r=t[e];t[e]=[360*(r.x+s)/a-180,360/Math.PI*Math.atan(Math.exp((180-360*(r.y+o)/a)*Math.PI/180))-90];}}switch(this.type){case 1:var h=[];for(n=0;n<l.length;n++)h[n]=l[n][0];c(l=h);break;case 2:for(n=0;n<l.length;n++)c(l[n]);break;case 3:for(l=function(t){var e=t.length;if(e<=1)return [t];for(var r,n,i=[],a=0;a<e;a++){var s=Ko(t[a]);0!==s&&(void 0===n&&(n=s<0),n===s<0?(r&&i.push(r),r=[t[a]]):r.push(t[a]));}return r&&i.push(r),i}(l),n=0;n<l.length;n++)for(i=0;i<l[n].length;i++)c(l[n][i]);}1===l.length?l=l[0]:u="Multi"+u;var p={type:"Feature",geometry:{type:u,coordinates:l},properties:this.properties};return "id"in this&&(p.id=this.id),p};var Go=jo,Jo=Xo;function Xo(t,e){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=t,this._keys=[],this._values=[],this._features=[],t.readFields(Yo,this,e),this.length=this._features.length;}function Yo(t,e,r){15===t?e.version=r.readVarint():1===t?e.name=r.readString():5===t?e.extent=r.readVarint():2===t?e._features.push(r.pos):3===t?e._keys.push(r.readString()):4===t&&e._values.push(function(t){for(var e=null,r=t.readVarint()+t.pos;t.pos<r;){var n=t.readVarint()>>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));}Xo.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 Go(this._pbf,e,this.extent,this._keys,this._values)};var Ho=Jo;function Wo(t,e,r){if(3===t){var n=new Ho(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n);}}Ro.VectorTile=function(t,e){this.layers=t.readFields(Wo,{},e);},Ro.VectorTileFeature=jo,Ro.VectorTileLayer=Jo;const Qo=Ro.VectorTileFeature.types,tl=Math.pow(2,13);function el(t,e,r,n,i,a,s,o){t.emplaceBack(e,r,2*Math.floor(n*tl)+s,i*tl*2,a*tl*2,Math.round(o));}class rl{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new da,this.centroidVertexArray=new ha,this.indexArray=new Aa,this.programConfigurations=new Qa(t.layers,t.zoom),this.segments=new za,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){this.features=[],this.hasPattern=Po("fill-extrusion",this.layers,e);for(const{feature:n,id:i,index:a,sourceLayerIndex:s}of t){const t=this.layers[0]._featureFilter.needGeometry,o=ss(n,t);if(!this.layers[0]._featureFilter.filter(new li(this.zoom),o,r))continue;const l={id:i,sourceLayerIndex:s,index:a,geometry:t?o.geometry:as(n),properties:n.properties,type:n.type,patterns:{}};this.hasPattern?this.features.push(Vo("fill-extrusion",this.layers,l,this.zoom,e)):this.addFeature(l,l.geometry,a,r,{}),e.featureIndex.insert(n,l.geometry,a,s,this.index,!0);}}addFeatures(t,e,r){for(const t of this.features){const{geometry:n}=t;this.addFeature(t,n,t.index,e,r);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.centroidVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Uo),this.centroidVertexBuffer=t.createVertexBuffer(this.centroidVertexArray,Oo.members,!0),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy());}addFeature(t,e,r,n,i){const a={x:0,y:0,vertexCount:0};for(const r of Co(e,500)){let e=0;for(const t of r)e+=t.length;let n=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(const t of r){if(0===t.length)continue;if(il(t))continue;let e=0;for(let r=0;r<t.length;r++){const i=t[r];if(r>=1){const s=t[r-1];if(!nl(i,s)){n.vertexLength+4>za.MAX_VERTEX_ARRAY_LENGTH&&(n=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));const t=i.sub(s)._perp()._unit(),r=s.dist(i);e+r>32768&&(e=0),el(this.layoutVertexArray,i.x,i.y,t.x,t.y,0,0,e),el(this.layoutVertexArray,i.x,i.y,t.x,t.y,0,1,e),a.x+=2*i.x,a.y+=2*i.y,a.vertexCount+=2,e+=r,el(this.layoutVertexArray,s.x,s.y,t.x,t.y,0,0,e),el(this.layoutVertexArray,s.x,s.y,t.x,t.y,0,1,e),a.x+=2*s.x,a.y+=2*s.y,a.vertexCount+=2;const o=n.vertexLength;this.indexArray.emplaceBack(o,o+2,o+1),this.indexArray.emplaceBack(o+1,o+2,o+3),n.vertexLength+=4,n.primitiveLength+=2;}}}}if(n.vertexLength+e>za.MAX_VERTEX_ARRAY_LENGTH&&(n=this.segments.prepareSegment(e,this.layoutVertexArray,this.indexArray)),"Polygon"!==Qo[t.type])continue;const i=[],s=[],o=n.vertexLength;for(const t of r)if(0!==t.length){t!==r[0]&&s.push(i.length/2);for(let e=0;e<t.length;e++){const r=t[e];el(this.layoutVertexArray,r.x,r.y,0,0,1,1,0),a.x+=r.x,a.y+=r.y,a.vertexCount+=1,i.push(r.x),i.push(r.y);}}const l=So(i,s);for(let t=0;t<l.length;t+=3)this.indexArray.emplaceBack(o+l[t],o+l[t+2],o+l[t+1]);n.primitiveLength+=l.length/3,n.vertexLength+=e;}for(let t=0;t<a.vertexCount;t++)this.centroidVertexArray.emplaceBack(Math.floor(a.x/a.vertexCount),Math.floor(a.y/a.vertexCount));this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,n);}}function nl(t,e){return t.x===e.x&&(t.x<0||t.x>rs)||t.y===e.y&&(t.y<0||t.y>rs)}function il(t){return t.every((t=>t.x<0))||t.every((t=>t.x>rs))||t.every((t=>t.y<0))||t.every((t=>t.y>rs))}let al;$n("FillExtrusionBucket",rl,{omit:["layers","features"]});var sl={get paint(){return al=al||new _i({"fill-extrusion-opacity":new gi(X["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new xi(X["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new gi(X["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new gi(X["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new vi(X["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new xi(X["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new xi(X["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new gi(X["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class ol extends Si{constructor(t){super(t,sl);}createBucket(t){return new rl(t)}queryRadius(){return ws(this.paint.get("fill-extrusion-translate"))}is3D(){return !0}queryIntersectsFeature(t,e,r,n,i,s,o,l){const u=_s(t,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),s.angle,o),c=this.paint.get("fill-extrusion-height").evaluate(e,r),h=this.paint.get("fill-extrusion-base").evaluate(e,r),p=function(t,e,r,n){const i=[];for(const r of t){const t=[r.x,r.y,0,1];Vs(t,t,e),i.push(new a(t[0]/t[3],t[1]/t[3]));}return i}(u,l),f=function(t,e,r,n){const i=[],s=[],o=n[8]*e,l=n[9]*e,u=n[10]*e,c=n[11]*e,h=n[8]*r,p=n[9]*r,f=n[10]*r,d=n[11]*r;for(const e of t){const t=[],r=[];for(const i of e){const e=i.x,s=i.y,y=n[0]*e+n[4]*s+n[12],m=n[1]*e+n[5]*s+n[13],g=n[2]*e+n[6]*s+n[14],x=n[3]*e+n[7]*s+n[15],v=g+u,b=x+c,w=y+h,_=m+p,A=g+f,S=x+d,k=new a((y+o)/b,(m+l)/b);k.z=v/b,t.push(k);const I=new a(w/S,_/S);I.z=A/S,r.push(I);}i.push(t),s.push(r);}return [i,s]}(n,h,c,l);return function(t,e,r){let n=1/0;hs(r,e)&&(n=ul(r,e[0]));for(let i=0;i<e.length;i++){const a=e[i],s=t[i];for(let t=0;t<a.length-1;t++){const e=a[t],i=[e,a[t+1],s[t+1],s[t],e];us(r,i)&&(n=Math.min(n,ul(r,i)));}}return n!==1/0&&n}(f[0],f[1],p)}}function ll(t,e){return t.x*e.x+t.y*e.y}function ul(t,e){if(1===t.length){let r=0;const n=e[r++];let i;for(;!i||n.equals(i);)if(i=e[r++],!i)return 1/0;for(;r<e.length;r++){const a=e[r],s=t[0],o=i.sub(n),l=a.sub(n),u=s.sub(n),c=ll(o,o),h=ll(o,l),p=ll(l,l),f=ll(u,o),d=ll(u,l),y=c*p-h*h,m=(p*f-h*d)/y,g=(c*d-h*f)/y,x=n.z*(1-m-g)+i.z*m+a.z*g;if(isFinite(x))return x}return 1/0}{let t=1/0;for(const r of e)t=Math.min(t,r.z);return t}}const cl=Mi([{name:"a_pos_normal",components:2,type:"Int16"},{name:"a_data",components:4,type:"Uint8"}],4),{members:hl}=cl,pl=Mi([{name:"a_uv_x",components:1,type:"Float32"},{name:"a_split_index",components:1,type:"Float32"}]),{members:fl}=pl,dl=Ro.VectorTileFeature.types,yl=Math.cos(Math.PI/180*37.5),ml=Math.pow(2,14)/.5;class gl{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={}
vendor: 4,907 bytes, line 37
37,this.layers.forEach((t=>{this.gradients[t.id]={};})),this.layoutVertexArray=new ya,this.layoutVertexArray2=new ma,this.indexArray=new Aa,this.programConfigurations=new Qa(t.layers,t.zoom),this.segments=new za,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id));}populate(t,e,r){this.hasPattern=Po("line",this.layers,e);const n=this.layers[0].layout.get("line-sort-key"),i=!n.isConstant(),a=[];for(const{feature:e,id:s,index:o,sourceLayerIndex:l}of t){const t=this.layers[0]._featureFilter.needGeometry,u=ss(e,t);if(!this.layers[0]._featureFilter.filter(new li(this.zoom),u,r))continue;const c=i?n.evaluate(u,{},r):void 0,h={id:s,properties:e.properties,type:e.type,sourceLayerIndex:l,index:o,geometry:t?u.geometry:as(e),patterns:{},sortKey:c};a.push(h);}i&&a.sort(((t,e)=>t.sortKey-e.sortKey));for(const n of a){const{geometry:i,index:a,sourceLayerIndex:s}=n;if(this.hasPattern){const t=Vo("line",this.layers,n,this.zoom,e);this.patternFeatures.push(t);}else this.addFeature(n,i,a,r,{});e.featureIndex.insert(t[a].feature,i,a,s,this.index);}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r);}addFeatures(t,e,r){for(const t of this.patternFeatures)this.addFeature(t,t.geometry,t.index,e,r);}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return !this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(0!==this.layoutVertexArray2.length&&(this.layoutVertexBuffer2=t.createVertexBuffer(this.layoutVertexArray2,fl)),this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,hl),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0;}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy());}lineFeatureClips(t){if(t.properties&&Object.prototype.hasOwnProperty.call(t.properties,"mapbox_clip_start")&&Object.prototype.hasOwnProperty.call(t.properties,"mapbox_clip_end"))return {start:+t.properties.mapbox_clip_start,end:+t.properties.mapbox_clip_end}}addFeature(t,e,r,n,i){const a=this.layers[0].layout,s=a.get("line-join").evaluate(t,{}),o=a.get("line-cap"),l=a.get("line-miter-limit"),u=a.get("line-round-limit");this.lineClips=this.lineFeatureClips(t);for(const r of e)this.addLine(r,t,s,o,l,u);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,n);}addLine(t,e,r,n,i,a){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let e=0;e<t.length-1;e++)this.totalDistance+=t[e].dist(t[e+1]);this.updateScaledDistance(),this.maxLineLength=Math.max(this.maxLineLength,this.totalDistance);}const s="Polygon"===dl[e.type];let o=t.length;for(;o>=2&&t[o-1].equals(t[o-2]);)o--;let l=0;for(;l<o-1&&t[l].equals(t[l+1]);)l++;if(o<(s?3:2))return;"bevel"===r&&(i=1.05);const u=this.overscaling<=16?15*rs/(512*this.overscaling):0,c=this.segments.prepareSegment(10*o,this.layoutVertexArray,this.indexArray);let h,p,f,d,y;this.e1=this.e2=-1,s&&(h=t[o-2],y=t[l].sub(h)._unit()._perp());for(let e=l;e<o;e++){if(f=e===o-1?s?t[l+1]:void 0:t[e+1],f&&t[e].equals(f))continue;y&&(d=y),h&&(p=h),h=t[e],y=f?f.sub(h)._unit()._perp():d,d=d||y;let m=d.add(y);0===m.x&&0===m.y||m._unit();const g=d.x*y.x+d.y*y.y,x=m.x*y.x+m.y*y.y,v=0!==x?1/x:1/0,b=2*Math.sqrt(2-2*x),w=x<yl&&p&&f,_=d.x*y.y-d.y*y.x>0;if(w&&e>l){const t=h.dist(p);if(t>2*u){const e=h.sub(h.sub(p)._mult(u/t)._round());this.updateDistance(p,e),this.addCurrentVertex(e,d,0,0,c),p=e;}}const A=p&&f;let S=A?r:s?"butt":n;if(A&&"round"===S&&(v<a?S="miter":v<=2&&(S="fakeround")),"miter"===S&&v>i&&(S="bevel"),"bevel"===S&&(v>2&&(S="flipbevel"),v<i&&(S="miter")),p&&this.updateDistance(p,h),"miter"===S)m._mult(v),this.addCurrentVertex(h,m,0,0,c);else if("flipbevel"===S){if(v>100)m=y.mult(-1);else {const t=v*d.add(y).mag()/d.sub(y).mag();m._perp()._mult(t*(_?-1:1));}this.addCurrentVertex(h,m,0,0,c),this.addCurrentVertex(h,m.mult(-1),0,0,c);}else if("bevel"===S||"fakeround"===S){const t=-Math.sqrt(v*v-1),e=_?t:0,r=_?0:t;if(p&&this.addCurrentVertex(h,d,e,r,c),"fakeround"===S){const t=Math.round(180*b/Math.PI/20);for(let e=1;e<t;e++){let r=e/t;if(.5!==r){const t=r-.5;r+=r*t*(r-1)*((1.0904+g*(g*(3.55645-1.43519*g)-3.2452))*t*t+(.848013+g*(.215638*g-1.06021)));}const n=y.sub(d)._mult(r)._add(d)._unit()._mult(_?-1:1);this.addHalfVertex(h,n.x,n.y,!1,_,0,c);}}f&&this.addCurrentVertex(h,y,-e,-r,c);}else if("butt"===S)this.addCurrentVertex(h,m,0,0,c);else if("square"===S){const t=p?1:-1;this.addCurrentVertex(h,m,t,t,c);}else "round"===S&&(p&&(this.addCurrentVertex(h,d,0,0,c),this.addCurrentVertex(h,d,1,1,c,!0)),f&&(this.addCurrentVertex(h,y,-1,-1,c,!0),this.addCurrentVertex(h,y,0,0,c)));if(w&&e<o-1){const t=h.dist(f);if(t>
vendor: 10,527 bytes, line 37
372*u){const e=h.add(f.sub(h)._mult(u/t)._round());this.updateDistance(h,e),this.addCurrentVertex(e,y,0,0,c),h=e;}}}}addCurrentVertex(t,e,r,n,i,a=!1){const s=e.y*n-e.x,o=-e.y-e.x*n;this.addHalfVertex(t,e.x+e.y*r,e.y-e.x*r,a,!1,r,i),this.addHalfVertex(t,s,o,a,!0,-n,i),this.distance>ml/2&&0===this.totalDistance&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(t,e,r,n,i,a));}addHalfVertex({x:t,y:e},r,n,i,a,s,o){const l=.5*(this.lineClips?this.scaledDistance*(ml-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((t<<1)+(i?1:0),(e<<1)+(a?1:0),Math.round(63*r)+128,Math.round(63*n)+128,1+(0===s?0:s<0?-1:1)|(63&l)<<2,l>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);const u=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,u),o.primitiveLength++),a?this.e2=u:this.e1=u;}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance;}updateDistance(t,e){this.distance+=t.dist(e),this.updateScaledDistance();}}let xl,vl;$n("LineBucket",gl,{omit:["layers","patternFeatures"]});var bl={get paint(){return vl=vl||new _i({"line-opacity":new xi(X.paint_line["line-opacity"]),"line-color":new xi(X.paint_line["line-color"]),"line-translate":new gi(X.paint_line["line-translate"]),"line-translate-anchor":new gi(X.paint_line["line-translate-anchor"]),"line-width":new xi(X.paint_line["line-width"]),"line-gap-width":new xi(X.paint_line["line-gap-width"]),"line-offset":new xi(X.paint_line["line-offset"]),"line-blur":new xi(X.paint_line["line-blur"]),"line-dasharray":new bi(X.paint_line["line-dasharray"]),"line-pattern":new vi(X.paint_line["line-pattern"]),"line-gradient":new wi(X.paint_line["line-gradient"])})},get layout(){return xl=xl||new _i({"line-cap":new gi(X.layout_line["line-cap"]),"line-join":new xi(X.layout_line["line-join"]),"line-miter-limit":new gi(X.layout_line["line-miter-limit"]),"line-round-limit":new gi(X.layout_line["line-round-limit"]),"line-sort-key":new xi(X.layout_line["line-sort-key"])})}};class wl extends xi{possiblyEvaluate(t,e){return e=new li(Math.floor(e.zoom),{now:e.now,fadeDuration:e.fadeDuration,zoomHistory:e.zoomHistory,transition:e.transition}),super.possiblyEvaluate(t,e)}evaluate(t,e,r,n){return e=g({},e,{zoom:Math.floor(e.zoom)}),super.evaluate(t,e,r,n)}}let _l;class Al extends Si{constructor(t){super(t,bl),this.gradientVersion=0,_l||(_l=new wl(bl.paint.properties["line-width"].specification),_l.useIntegerZoom=!0);}_handleSpecialPaintPropertyUpdate(t){if("line-gradient"===t){const t=this.gradientExpression();this.stepInterpolant=!!function(t){return void 0!==t._styleExpression}(t)&&t._styleExpression.expression instanceof qe,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER;}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(t,e){super.recalculate(t,e),this.paint._values["line-floorwidth"]=_l.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,t);}createBucket(t){return new gl(t)}queryRadius(t){const e=t,r=Sl(bs("line-width",this,e),bs("line-gap-width",this,e)),n=bs("line-offset",this,e);return r/2+Math.abs(n)+ws(this.paint.get("line-translate"))}queryIntersectsFeature(t,e,r,n,i,s,o){const l=_s(t,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),s.angle,o),u=o/2*Sl(this.paint.get("line-width").evaluate(e,r),this.paint.get("line-gap-width").evaluate(e,r)),c=this.paint.get("line-offset").evaluate(e,r);return c&&(n=function(t,e){const r=[];for(let n=0;n<t.length;n++){const i=t[n],s=[];for(let t=0;t<i.length;t++){const r=i[t-1],n=i[t],o=i[t+1],l=0===t?new a(0,0):n.sub(r)._unit()._perp(),u=t===i.length-1?new a(0,0):o.sub(n)._unit()._perp(),c=l._add(u)._unit(),h=c.x*u.x+c.y*u.y;0!==h&&c._mult(1/h),s.push(c._mult(e)._add(n));}r.push(s);}return r}(n,c*o)),function(t,e,r){for(let n=0;n<e.length;n++){const i=e[n];if(t.length>=3)for(let e=0;e<i.length;e++)if(xs(t,i[e]))return !0;if(ps(t,i,r))return !0}return !1}(l,n,u)}isTileClipped(){return !0}}function Sl(t,e){return e>0?e+2*t:t}const kl=Mi([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),Il=Mi([{name:"a_projected_pos",components:3,type:"Float32"}],4);Mi([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);const zl=Mi([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"}]);Mi([{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"}]);const Ml=Mi([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),Cl=Mi([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function Bl(t,e,r){return t.sections.forEach((t=>{t.text=function(t,e,r){const n=e.layout.get("text-transform").evaluate(r,{});return "uppercase"===n?t=t.toLocaleUpperCase():"lowercase"===n&&(t=t.toLocaleLowerCase()),oi.applyArabicShaping&&(t=oi.applyArabicShaping(t)),t}(t.text,e,r);})),t}Mi([{name:"triangle",components:3,type:"Uint16"}]),Mi([{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:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),Mi([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",name:"collisionCircleDiameter"},{type:"Uint16",name:"textAnchorOffsetStartIndex"},{type:"Uint16",name:"textAnchorOffsetEndIndex"}]),Mi([{type:"Float32",name:"offsetX"}]),Mi([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),Mi([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);const Pl={"!":"ï¸","#":"ï¼",$:"ï¼","%":"ï¼
","&":"ï¼","(":"︵",")":"︶","*":"ï¼","+":"ï¼",",":"ï¸","-":"︲",".":"ã»","/":"ï¼",":":"ï¸",";":"ï¸","<":"︿","=":"ï¼",">":"ï¹","?":"ï¸","@":"ï¼ ","[":"ï¹","\\":"ï¼¼","]":"ï¹","^":"ï¼¾",_:"︳","`":"ï½","{":"︷","|":"â","}":"︸","~":"ï½","¢":"ï¿ ","£":"ï¿¡","Â¥":"ï¿¥","¦":"¦","¬":"ï¿¢","¯":"ï¿£","â":"︲","â":"︱","â":"ï¹","â":"ï¹","â":"ï¹","â":"ï¹","â¦":"ï¸","â§":"ã»","â©":"₩","ã":"ï¸","ã":"ï¸","ã":"︿","ã":"ï¹","ã":"︽","ã":"︾","ã":"ï¹","ã":"ï¹","ã":"ï¹","ã":"ï¹","ã":"︻","ã":"︼","ã":"︹","ã":"︺","ã":"ï¸","ã":"ï¸","ï¼":"ï¸","ï¼":"︵","ï¼":"︶","ï¼":"ï¸","ï¼":"︲","ï¼":"ã»","ï¼":"ï¸","ï¼":"ï¸","ï¼":"︿","ï¼":"ï¹","ï¼":"ï¸","ï¼»":"ï¹","ï¼½":"ï¹","_":"︳","ï½":"︷","ï½":"â","ï½":"︸","ï½":"︵","ï½ ":"︶","。":"ï¸","ï½¢":"ï¹","ï½£":"ï¹"};var Vl=24,El=$l,Fl=function(t,e,r,n,i){var a,s,o=8*i-n-1,l=(1<<o)-1,u=l>>1,c=-7,h=r?i-1:0,p=r?-1:1,f=t[e+h];for(h+=p,a=f&(1<<-c)-1,f>>=-c,c+=o;c>0;a=256*a+t[e+h],h+=p,c-=8);for(s=a&(1<<-c)-1,a>>=-c,c+=n;c>0;s=256*s+t[e+h],h+=p,c-=8);if(0===a)a=1-u;else {if(a===l)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,n),a-=u;}return (f?-1:1)*s*Math.pow(2,a-n)},Tl=function(t,e,r,n,i,a){var s,o,l,u=8*a-i-1,c=(1<<u)-1,h=c>>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:a-1,d=n?1:-1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,s=c):(s=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-s))<1&&(s--,l*=2),(e+=s+h>=1?p/l:p*Math.pow(2,1-h))*l>=2&&(s++,l/=2),s+h>=c?(o=0,s=c):s+h>=1?(o=(e*l-1)*Math.pow(2,i),s+=h):(o=e*Math.pow(2,h-1)*Math.pow(2,i),s=0));i>=8;t[r+f]=255&o,f+=d,o/=256,i-=8);for(s=s<<i|o,u+=i;u>0;t[r+f]=255&s,f+=d,s/=256,u-=8);t[r+f-d]|=128*y;};function $l(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length;}$l.Varint=0,$l.Fixed64=1,$l.Bytes=2,$l.Fixed32=5;var Ll=4294967296,Dl=1/Ll,Ol="undefined"==typeof TextDecoder?null:new TextDecoder("utf8");function Ul(t){return t.type===$l.Bytes?t.readVarint()+t.pos:t.pos+1}function Rl(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function ql(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(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 jl(t,e){for(var r=0;r<t.length;r++)e.writeVarint(t[r]);}function Nl(t,e){for(var r=0;r<t.length;r++)e.writeSVarint(t[r]);}function Zl(t,e){for(var r=0;r<t.length;r++)e.writeFloat(t[r]);}function Kl(t,e){for(var r=0;r<t.length;r++)e.writeDouble(t[r]);}function Gl(t,e){for(var r=0;r<t.length;r++)e.writeBoolean(t[r]);}function Jl(t,e){for(var r=0;r<t.length;r++)e.writeFixed32(t[r]);}function Xl(t,e){for(var r=0;r<t.length;r++)e.writeSFixed32(t[r]);}function Yl(t,e){for(var r=0;r<t.length;
vendor: 4,125 bytes, line 37
37r++)e.writeFixed64(t[r]);}function Hl(t,e){for(var r=0;r<t.length;r++)e.writeSFixed64(t[r]);}function Wl(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+16777216*t[e+3]}function Ql(t,e,r){t[r]=e,t[r+1]=e>>>8,t[r+2]=e>>>16,t[r+3]=e>>>24;}function tu(t,e){return (t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}$l.prototype={destroy:function(){this.buf=null;},readFields:function(t,e,r){for(r=r||this.length;this.pos<r;){var n=this.readVarint(),i=n>>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=Wl(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=tu(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=Wl(this.buf,this.pos)+Wl(this.buf,this.pos+4)*Ll;return this.pos+=8,t},readSFixed64:function(){var t=Wl(this.buf,this.pos)+tu(this.buf,this.pos+4)*Ll;return this.pos+=8,t},readFloat:function(){var t=Fl(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=Fl(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(n=(112&(i=a[r.pos++]))>>4,i<128)return Rl(t,n,e);if(n|=(127&(i=a[r.pos++]))<<3,i<128)return Rl(t,n,e);if(n|=(127&(i=a[r.pos++]))<<10,i<128)return Rl(t,n,e);if(n|=(127&(i=a[r.pos++]))<<17,i<128)return Rl(t,n,e);if(n|=(127&(i=a[r.pos++]))<<24,i<128)return Rl(t,n,e);if(n|=(1&(i=a[r.pos++]))<<31,i<128)return Rl(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=this.pos;return this.pos=t,t-e>=12&&Ol?function(t,e,r){return Ol.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){for(var n="",i=e;i<r;){var a,s,o,l=t[i],u=null,c=l>239?4:l>223?3:l>191?2:1;if(i+c>r)break;1===c?l<128&&(u=l):2===c?128==(192&(a=t[i+1]))&&(u=(31&l)<<6|63&a)<=127&&(u=null):3===c?(s=t[i+2],128==(192&(a=t[i+1]))&&128==(192&s)&&((u=(15&l)<<12|(63&a)<<6|63&s)<=2047||u>=55296&&u<=57343)&&(u=null)):4===c&&(s=t[i+2],o=t[i+3],128==(192&(a=t[i+1]))&&128==(192&s)&&128==(192&o)&&((u=(15&l)<<18|(63&a)<<12|(63&s)<<6|63&o)<=65535||u>=1114112)&&(u=null)),null===u?(u=65533,c=1):u>65535&&(u-=65536,n+=String.fromCharCode(u>>>10&1023|55296),u=56320|1023&u),n+=String.fromCharCode(u),i+=c;}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==$l.Bytes)return t.push(this.readVarint(e));var r=Ul(this);for(t=t||[];this.pos<r;)t.push(this.readVarint(e));return t},readPackedSVarint:function(t){if(this.type!==$l.Bytes)return t.push(this.readSVarint());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readSVarint());return t},readPackedBoolean:function(t){if(this.type!==$l.Bytes)return t.push(this.readBoolean());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readBoolean());return t},readPackedFloat:function(t){if(this.type!==$l.Bytes)return t.push(this.readFloat());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readFloat());return t},readPackedDouble:function(t){if(this.type!==$l.Bytes)return t.push(this.readDouble());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readDouble());return t},readPackedFixed32:function(t){if(this.type!==$l.Bytes)return t.push(this.readFixed32());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readFixed32());return t},readPackedSFixed32:function(t){if(this.type!==$l.Bytes)return t.push(this.readSFixed32());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed32());return t},readPackedFixed64:function(t){if(this.type!==$l.Bytes)return t.push(this.readFixed64());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readFixed64());return t}
vendor: 4,361 bytes, line 37
37,readPackedSFixed64:function(t){if(this.type!==$l.Bytes)return t.push(this.readSFixed64());var e=Ul(this);for(t=t||[];this.pos<e;)t.push(this.readSFixed64());return t},skip:function(t){var e=7&t;if(e===$l.Varint)for(;this.buf[this.pos++]>127;);else if(e===$l.Bytes)this.pos=this.readVarint()+this.pos;else if(e===$l.Fixed32)this.pos+=4;else {if(e!==$l.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;e<this.pos+t;)e*=2;if(e!==this.length){var r=new Uint8Array(e);r.set(this.buf),this.buf=r,this.length=e;}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(t){this.realloc(4),Ql(this.buf,t,this.pos),this.pos+=4;},writeSFixed32:function(t){this.realloc(4),Ql(this.buf,t,this.pos),this.pos+=4;},writeFixed64:function(t){this.realloc(8),Ql(this.buf,-1&t,this.pos),Ql(this.buf,Math.floor(t*Dl),this.pos+4),this.pos+=8;},writeSFixed64:function(t){this.realloc(8),Ql(this.buf,-1&t,this.pos),Ql(this.buf,Math.floor(t*Dl),this.pos+4),this.pos+=8;},writeVarint:function(t){(t=+t||0)>268435455||t<0?function(t,e){var r,n;if(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)),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,r.buf[r.pos]=127&(t>>>=7);}(r,0,e),function(t,e){var r=(7&t)<<4;e.buf[e.pos++]|=r|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(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;a<e.length;a++){if((n=e.charCodeAt(a))>55295&&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&&ql(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r;},writeFloat:function(t){this.realloc(4),Tl(this.buf,t,this.pos,!0,23,4),this.pos+=4;},writeDouble:function(t){this.realloc(8),Tl(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<e;r++)this.buf[this.pos++]=t[r];},writeRawMessage:function(t,e){this.pos++;var r=this.pos;t(e,this);var n=this.pos-r;n>=128&&ql(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n;},writeMessage:function(t,e,r){this.writeTag(t,$l.Bytes),this.writeRawMessage(e,r);},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,jl,e);},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,Nl,e);},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,Gl,e);},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,Zl,e);},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,Kl,e);},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,Jl,e);},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,Xl,e);},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,Yl,e);},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,Hl,e);},writeBytesField:function(t,e){this.writeTag(t,$l.Bytes),this.writeBytes(e);},writeFixed32Field:function(t,e){this.writeTag(t,$l.Fixed32),this.writeFixed32(e);},writeSFixed32Field:function(t,e){this.writeTag(t,$l.Fixed32),this.writeSFixed32(e);},writeFixed64Field:function(t,e){this.writeTag(t,$l.Fixed64),this.writeFixed64
vendor: 7,053 bytes, line 37
37(e);},writeSFixed64Field:function(t,e){this.writeTag(t,$l.Fixed64),this.writeSFixed64(e);},writeVarintField:function(t,e){this.writeTag(t,$l.Varint),this.writeVarint(e);},writeSVarintField:function(t,e){this.writeTag(t,$l.Varint),this.writeSVarint(e);},writeStringField:function(t,e){this.writeTag(t,$l.Bytes),this.writeString(e);},writeFloatField:function(t,e){this.writeTag(t,$l.Fixed32),this.writeFloat(e);},writeDoubleField:function(t,e){this.writeTag(t,$l.Fixed64),this.writeDouble(e);},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e));}};var eu=r(El);const ru=3;function nu(t,e,r){1===t&&r.readMessage(iu,e);}function iu(t,e,r){if(3===t){const{id:t,bitmap:n,width:i,height:a,left:s,top:o,advance:l}=r.readMessage(au,{});e.push({id:t,bitmap:new Rs({width:i+2*ru,height:a+2*ru},n),metrics:{width:i,height:a,left:s,top:o,advance:l}});}}function au(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());}const su=ru;function ou(t){let e=0,r=0;for(const n of t)e+=n.w*n.h,r=Math.max(r,n.w);t.sort(((t,e)=>e.h-t.h));const n=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),r),h:1/0}];let i=0,a=0;for(const e of t)for(let t=n.length-1;t>=0;t--){const r=n[t];if(!(e.w>r.w||e.h>r.h)){if(e.x=r.x,e.y=r.y,a=Math.max(a,e.y+e.h),i=Math.max(i,e.x+e.w),e.w===r.w&&e.h===r.h){const e=n.pop();t<n.length&&(n[t]=e);}else e.h===r.h?(r.x+=e.w,r.w-=e.w):e.w===r.w?(r.y+=e.h,r.h-=e.h):(n.push({x:r.x+e.w,y:r.y,w:r.w-e.w,h:e.h}),r.y+=e.h,r.h-=e.h);break}}return {w:i,h:a,fill:e/(i*a)||0}}const lu=1;class uu{constructor(t,{pixelRatio:e,version:r,stretchX:n,stretchY:i,content:a}){this.paddedRect=t,this.pixelRatio=e,this.stretchX=n,this.stretchY=i,this.content=a,this.version=r;}get tl(){return [this.paddedRect.x+lu,this.paddedRect.y+lu]}get br(){return [this.paddedRect.x+this.paddedRect.w-lu,this.paddedRect.y+this.paddedRect.h-lu]}get tlbr(){return this.tl.concat(this.br)}get displaySize(){return [(this.paddedRect.w-2*lu)/this.pixelRatio,(this.paddedRect.h-2*lu)/this.pixelRatio]}}class cu{constructor(t,e){const r={},n={};this.haveRenderCallbacks=[];const i=[];this.addImages(t,r,i),this.addImages(e,n,i);const{w:a,h:s}=ou(i),o=new qs({width:a||1,height:s||1});for(const e in t){const n=t[e],i=r[e].paddedRect;qs.copy(n.data,o,{x:0,y:0},{x:i.x+lu,y:i.y+lu},n.data);}for(const t in e){const r=e[t],i=n[t].paddedRect,a=i.x+lu,s=i.y+lu,l=r.data.width,u=r.data.height;qs.copy(r.data,o,{x:0,y:0},{x:a,y:s},r.data),qs.copy(r.data,o,{x:0,y:u-1},{x:a,y:s-1},{width:l,height:1}),qs.copy(r.data,o,{x:0,y:0},{x:a,y:s+u},{width:l,height:1}),qs.copy(r.data,o,{x:l-1,y:0},{x:a-1,y:s},{width:1,height:u}),qs.copy(r.data,o,{x:0,y:0},{x:a+l,y:s},{width:1,height:u});}this.image=o,this.iconPositions=r,this.patternPositions=n;}addImages(t,e,r){for(const n in t){const i=t[n],a={x:0,y:0,w:i.data.width+2*lu,h:i.data.height+2*lu};r.push(a),e[n]=new uu(a,i),i.hasRenderCallback&&this.haveRenderCallbacks.push(n);}}patchUpdatedImages(t,e){t.dispatchRenderCallbacks(this.haveRenderCallbacks);for(const r in t.updatedImages)this.patchUpdatedImage(this.iconPositions[r],t.getImage(r),e),this.patchUpdatedImage(this.patternPositions[r],t.getImage(r),e);}patchUpdatedImage(t,e,r){if(!t||!e)return;if(t.version===e.version)return;t.version=e.version;const[n,i]=t.tl;r.update(e.data,void 0,{x:n,y:i});}}var hu;$n("ImagePosition",uu),$n("ImageAtlas",cu),t.ai=void 0,(hu=t.ai||(t.ai={}))[hu.none=0]="none",hu[hu.horizontal=1]="horizontal",hu[hu.vertical=2]="vertical",hu[hu.horizontalOnly=3]="horizontalOnly";const pu=-17;class fu{constructor(){this.scale=1,this.fontStack="",this.imageName=null;}static forText(t,e){const r=new fu;return r.scale=t||1,r.fontStack=e,r}static forImage(t){const e=new fu;return e.imageName=t,e}}class du{constructor(){this.text="",this.sectionIndex=[],this.sections=[],this.imageSectionID=null;}static fromFeature(t,e){const r=new du;for(let n=0;n<t.sections.length;n++){const i=t.sections[n];i.image?r.addImageSection(i):r.addTextSection(i,e);}return r}length(){return this.text.length}getSection(t){return this.sections[this.sectionIndex[t]]}getSectionIndex(t){return this.sectionIndex[t]}getCharCode(t){return this.text.charCodeAt(t)}verticalizePunctuation(){this.text=function(t){let e="";for(let r=0;r<t.length;r++){const n=t.charCodeAt(r+1)||null,i=t.charCodeAt(r-1)||null;e+=n&&Kn(n)&&!Pl[t[r+1]]||i&&Kn(i)&&!Pl[t[r-1]]||!Pl[t[r]]?t[r]:Pl[t[r]];}return e}(this.text);}trim(){let t=0;for(let e=0;e<this.text.length&&mu[this.text.charCodeAt(e)];e++)t++;let e=this.text.length;for(let r=this.text.length-1;r>=0&&r>=t&&mu[this.text.charCodeAt(r)];r--)e--;this.text=this.text.substring(t,e),this.sectionIndex=this.sectionIndex.slice(t,e);}substring(t,e){const r=new du;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce(((t,e)=>Math.max(t,this.sections[e].scale)),0)}addTextSection(t,e){this.text+=t.text,this.sections.push(fu.forText(t.scale,t.fontStack||e));const r=this.sections.length-1;for(let e=0;e<t.text.length;++e)this.sectionIndex.push(r);}addImageSection(t){const e=t.image?t.image.name:"";if(0===e.length)return void A("Can't add FormattedSection with an empty image.");const r=this.getNextImageSectionCharCode();r?(this.text+=String.fromCharCode(r),this.sections.push(fu.forImage(e)),this.sectionIndex.push(this.sections.length-1)):A("Reached maximum number of images 6401");}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function yu(e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m){const g=du.fromFeature(e,a);let x;p===t.ai.vertical&&g.verticalizePunctuation();const{processBidirectionalText:v,processStyledBidirectionalText:b}=oi;if(v&&1===g.sections.length){x=[];const t=v(g.toString(),Au(g,c,s,r,i,d,y));for(const e of t){const t=new du;t.text=e,t.sections=g.sections;for(let r=0;r<e.length;r++)t.sectionIndex.push(0);x.push(t);}}else if(b){x=[];const t=b(g.text,g.sectionIndex,Au(g,c,s,r,i,d,y));for(const e of t){const t=new du;t.text=e[0],t.sectionIndex=e[1],t.sections=g.sections,x.push(t);}}else x=function(t,e){const r=[],n=t.text;let i=0;for(const n of e)r.push(t.substring(i,n)),i=n;return i<n.length&&r.push(t.substring(i,n.length)),r}(g,Au(g,c,s,r,i,d,y));const w=[],_={positionedLines:w,text:g.toString(),top:h[1],bottom:h[1],left:h[0],right:h[0],writingMode:p,iconsInText:!1,verticalizable:!1};return function(e,r,n,i,a,s,o,l,u,c,h,p){let f=0,d=pu,y=0,m=0;const g="right"===l?1:"left"===l?0:.5;let x=0;for(const o of a){o.trim();const a=o.getMaxScale(),l=(a-1)*Vl,b={positionedGlyphs:[],lineOffset:0};e.positionedLines[x]=b;const w=b.positionedGlyphs;let _=0;if(!o.length()){d+=s,++x;continue}for(let s=0;s<o.length();s++){const y=o.getSection(s),m=o.getSectionIndex(s),g=o.getCharCode(s);let x=0,b=null,A=null,S=null,k=Vl;
37const I=!(u===t.ai.horizontal||!h&&!Zn(g)||h&&(mu[g]||(v=g,Rn.Arabic(v)||Rn["Arabic Supplement"](v)||Rn["Arabic Extended-A"](v)||Rn["Arabic Presentation Forms-A"](v)||Rn["Arabic Presentation Forms-B"](v))));if(y.imageName){const t=i[y.imageName];if(!t)continue;S=y.imageName,e.iconsInText=e.iconsInText||!0,A=t.paddedRect;const r=t.displaySize;y.scale=y.scale*Vl/p,b={width:r[0],height:r[1],left:lu,top:-su,advance:I?r[1]:r[0]},x=l+(Vl-r[1]*y.scale),k=b.advance;const n=I?r[0]*y.scale-Vl*a:r[1]*y.scale-Vl*a;n>0&&n>_&&(_=n);}else {const t=n[y.fontStack],e=t&&t[g];if(e&&e.rect)A=e.rect,b=e.metrics;else {const t=r[y.fontStack],e=t&&t[g];if(!e)continue;b=e.metrics;}x=(a-y.scale)*Vl;}I?(e.verticalizable=!0,w.push({glyph:g,imageName:S,x:f,y:d+x,vertical:I,scale:y.scale,fontStack:y.fontStack,sectionIndex:m,metrics:b,rect:A}),f+=k*y.scale+c):(w.push({glyph:g,imageName:S,x:f,y:d+x,vertical:I,scale:y.scale,fontStack:y.fontStack,sectionIndex:m,metrics:b,rect:A}),f+=b.advance*y.scale+c);}0!==w.length&&(y=Math.max(f-c,y),ku(w,0,w.length-1,g,_)),f=0;const A=s*a+_;b.lineOffset=Math.max(_,l),d+=A,m=Math.max(A,m),++x;}var v;const b=d-pu,{horizontalAlign:w,verticalAlign:_}=Su(o);((function(t,e,r,n,i,a,s,o,l){const u=(e-r)*i;let c=0;
vendor: 24,000 bytes, line 37
37c=a!==s?-o*n-pu:(-n*l+.5)*s;for(const e of t)for(const t of e.positionedGlyphs)t.x+=u,t.y+=c;}))(e.positionedLines,g,w,_,y,m,s,b,a.length),e.top+=-_*b,e.bottom=e.top+b,e.left+=-w*y,e.right=e.left+y;}(_,r,n,i,x,o,l,u,p,c,f,m),!function(t){for(const e of t)if(0!==e.positionedGlyphs.length)return !1;return !0}(w)&&_}const mu={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},gu={10:!0,32:!0,38:!0,40:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0};function xu(t,e,r,n,i,a){if(e.imageName){const t=n[e.imageName];return t?t.displaySize[0]*e.scale*Vl/a+i:0}{const n=r[e.fontStack],a=n&&n[t];return a?a.metrics.advance*e.scale+i:0}}function vu(t,e,r,n){const i=Math.pow(t-e,2);return n?t<e?i/2:2*i:i+Math.abs(r)*r}function bu(t,e,r){let n=0;return 10===t&&(n-=1e4),r&&(n+=150),40!==t&&65288!==t||(n+=50),41!==e&&65289!==e||(n+=50),n}function wu(t,e,r,n,i,a){let s=null,o=vu(e,r,i,a);for(const t of n){const n=vu(e-t.x,r,i,a)+t.badness;n<=o&&(s=t,o=n);}return {index:t,x:e,priorBreak:s,badness:o}}function _u(t){return t?_u(t.priorBreak).concat(t.index):[]}function Au(t,e,r,n,i,a,s){if("point"!==a)return [];if(!t)return [];const o=[],l=function(t,e,r,n,i,a){let s=0;for(let r=0;r<t.length();r++){const o=t.getSection(r);s+=xu(t.getCharCode(r),o,n,i,e,a);}return s/Math.max(1,Math.ceil(s/r))}(t,e,r,n,i,s),u=t.text.indexOf("â")>=0;let c=0;for(let r=0;r<t.length();r++){const a=t.getSection(r),p=t.getCharCode(r);if(mu[p]||(c+=xu(p,a,n,i,e,s)),r<t.length()-1){const e=!((h=p)<11904||!(Rn["Bopomofo Extended"](h)||Rn.Bopomofo(h)||Rn["CJK Compatibility Forms"](h)||Rn["CJK Compatibility Ideographs"](h)||Rn["CJK Compatibility"](h)||Rn["CJK Radicals Supplement"](h)||Rn["CJK Strokes"](h)||Rn["CJK Symbols and Punctuation"](h)||Rn["CJK Unified Ideographs Extension A"](h)||Rn["CJK Unified Ideographs"](h)||Rn["Enclosed CJK Letters and Months"](h)||Rn["Halfwidth and Fullwidth Forms"](h)||Rn.Hiragana(h)||Rn["Ideographic Description Characters"](h)||Rn["Kangxi Radicals"](h)||Rn["Katakana Phonetic Extensions"](h)||Rn.Katakana(h)||Rn["Vertical Forms"](h)||Rn["Yi Radicals"](h)||Rn["Yi Syllables"](h)));(gu[p]||e||a.imageName)&&o.push(wu(r+1,c,l,o,bu(p,t.getCharCode(r+1),e&&u),!1));}}var h;return _u(wu(t.length(),c,l,o,0,!0))}function Su(t){let e=.5,r=.5;switch(t){case"right":case"top-right":case"bottom-right":e=1;break;case"left":case"top-left":case"bottom-left":e=0;}switch(t){case"bottom":case"bottom-right":case"bottom-left":r=1;break;case"top":case"top-right":case"top-left":r=0;}return {horizontalAlign:e,verticalAlign:r}}function ku(t,e,r,n,i){if(!n&&!i)return;const a=t[r],s=(t[r].x+a.metrics.advance*a.scale)*n;for(let n=e;n<=r;n++)t[n].x-=s,t[n].y+=i;}function Iu(t,e,r){const{horizontalAlign:n,verticalAlign:i}=Su(r),a=e[0]-t.displaySize[0]*n,s=e[1]-t.displaySize[1]*i;return {image:t,top:s,bottom:s+t.displaySize[1],left:a,right:a+t.displaySize[0]}}function zu(t,e,r,n,i,a){const s=t.image;let o;if(s.content){const t=s.content,e=s.pixelRatio||1;o=[t[0]/e,t[1]/e,s.displaySize[0]-t[2]/e,s.displaySize[1]-t[3]/e];}const l=e.left*a,u=e.right*a;let c,h,p,f;"width"===r||"both"===r?(f=i[0]+l-n[3],h=i[0]+u+n[1]):(f=i[0]+(l+u-s.displaySize[0])/2,h=f+s.displaySize[0]);const d=e.top*a,y=e.bottom*a;return "height"===r||"both"===r?(c=i[1]+d-n[0],p=i[1]+y+n[2]):(c=i[1]+(d+y-s.displaySize[1])/2,p=c+s.displaySize[1]),{image:s,top:c,right:h,bottom:p,left:f,collisionPadding:o}}const Mu=255,Cu=128,Bu=Mu*Cu;function Pu(t,e){const{expression:r}=e;if("constant"===r.kind)return {kind:"constant",layoutSize:r.evaluate(new li(t+1))};if("source"===r.kind)return {kind:"source"};{const{zoomStops:e,interpolationType:n}=r;let i=0;for(;i<e.length&&e[i]<=t;)i++;i=Math.max(0,i-1);let a=i;for(;a<e.length&&e[a]<t+1;)a++;a=Math.min(e.length-1,a);const s=e[i],o=e[a];return "composite"===r.kind?{kind:"composite",minZoom:s,maxZoom:o,interpolationType:n}:{kind:"camera",minZoom:s,maxZoom:o,minSize:r.evaluate(new li(s)),maxSize:r.evaluate(new li(o)),interpolationType:n}}}function Vu(t,e,r){let n="never";const i=t.get(e);return i?n=i:t.get(r)&&(n="always"),n}const Eu=Ro.VectorTileFeature.types,Fu=[{name:"a_fade_opacity",components:1,type:"Uint8",offset:0}];function Tu(t,e,r,n,i,a,s,o,l,u,c,h,p){const f=o?Math.min(Bu,Math.round(o[0])):0,d=o?Math.min(Bu,Math.round(o[1])):0;t.emplaceBack(e,r,Math.round(32*n),Math.round(32*i),a,s,(f<<1)+(l?1:0),d,16*u,16*c,256*h,256*p);}function $u(t,e,r){t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r),t.emplaceBack(e.x,e.y,r);}function Lu(t){for(const e of t.sections)if(Xn(e.text))return !0;return !1}class Du{constructor(t){this.layoutVertexArray=new xa,this.indexArray=new Aa,this.programConfigurations=t,this.segments=new za,this.dynamicLayoutVertexArray=new va,this.opacityVertexArray=new ba,this.hasVisibleVertices=!1,this.placedSymbolArray=new ra;}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.indexArray.length&&0===this.dynamicLayoutVertexArray.length&&0===this.opacityVertexArray.length}upload(t,e,r,n){this.isEmpty()||(r&&(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,kl.members),this.indexBuffer=t.createIndexBuffer(this.indexArray,e),this.dynamicLayoutVertexBuffer=t.createVertexBuffer(this.dynamicLayoutVertexArray,Il.members,!0),this.opacityVertexBuffer=t.createVertexBuffer(this.opacityVertexArray,Fu,!0),this.opacityVertexBuffer.itemSize=1),(r||n)&&this.programConfigurations.upload(t));}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer.destroy(),this.opacityVertexBuffer.destroy());}}$n("SymbolBuffers",Du);class Ou{constructor(t,e,r){this.layoutVertexArray=new t,this.layoutAttributes=e,this.indexArray=new r,this.segments=new za,this.collisionVertexArray=new _a;}upload(t){this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=t.createVertexBuffer(this.collisionVertexArray,zl.members,!0);}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy());}}$n("CollisionBuffers",Ou);class Uu{constructor(e){this.collisionBoxArray=e.collisionBoxArray,this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=Ms([]),this.placementViewportMatrix=Ms([]);const r=this.layers[0]._unevaluatedLayout._values;this.textSizeData=Pu(this.zoom,r["text-size"]),this.iconSizeData=Pu(this.zoom,r["icon-size"]);const n=this.layers[0].layout,i=n.get("symbol-sort-key"),a=n.get("symbol-z-order");this.canOverlap="never"!==Vu(n,"text-overlap","text-allow-overlap")||"never"!==Vu(n,"icon-overlap","icon-allow-overlap")||n.get("text-ignore-placement")||n.get("icon-ignore-placement"),this.sortFeaturesByKey="viewport-y"!==a&&!i.isConstant(),this.sortFeaturesByY=("viewport-y"===a||"auto"===a&&!this.sortFeaturesByKey)&&this.canOverlap,"point"===n.get("symbol-placement")&&(this.writingModes=n.get("text-writing-mode").map((e=>t.ai[e]))),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id)),this.sourceID=e.sourceID;}createArrays(){this.text=new Du(new Qa(this.layers,this.zoom,(t=>/^text/.test(t)))),this.icon=new Du(new Qa(this.layers,this.zoom,(t=>/^icon/.test(t)))),this.glyphOffsetArray=new aa,this.lineVertexArray=new sa,this.symbolInstances=new ia,this.textAnchorOffsets=new la;}calculateGlyphDependencies(t,e,r,n,i){for(let a=0;a<t.length;a++)if(e[t.charCodeAt(a)]=!0,(r||n)&&i){const r=Pl[t.charAt(a)];r&&(e[r.charCodeAt(0)]=!0);}}populate(e,r,n){const i=this.layers[0],a=i.layout,s=a.get("text-font"),o=a.get("text-field"),l=a.get("icon-image"),u=("constant"!==o.value.kind||o.value.value instanceof Qt&&!o.value.value.isEmpty()||o.value.value.toString().length>0)&&("constant"!==s.value.kind||s.value.value.length>0),c="constant"!==l.value.kind||!!l.value.value||Object.keys(l.parameters).length>0,h=a.get("symbol-sort-key");if(this.features=[],!u&&!c)return;const p=r.iconDependencies,f=r.glyphDependencies,d=r.availableImages,y=new li(this.zoom);for(const{feature:r,id:o,index:l,sourceLayerIndex:m}of e){const e=i._featureFilter.needGeometry,g=ss(r,e);if(!i._featureFilter.filter(y,g,n))continue;let x,v;if(e||(g.geometry=as(r)),u){const t=i.getValueAndResolveTokens("text-field",g,n,d),e=Qt.factory(t);Lu(e)&&(this.hasRTLText=!0),(!this.hasRTLText||"unavailable"===ai()||this.hasRTLText&&oi.isParsed())&&(x=Bl(e,i,g));}if(c){const t=i.getValueAndResolveTokens("icon-image",g,n,d);v=t instanceof ne?t:ne.fromString(t);}if(!x&&!v)continue;const b=this.sortFeaturesByKey?h.evaluate(g,{},n):void 0;if(this.features.push({id:o,text:x,icon:v,index:l,sourceLayerIndex:m,geometry:g.geometry,properties:r.properties,type:Eu[r.type],sortKey:b}),v&&(p[v.name]=!0),x){const e=s.evaluate(g,{},n).join(","),r="viewport"!==a.get("text-rotation-alignment")&&"point"!==a.get("symbol-placement");this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(t.ai.vertical)>=0;for(const t of x.sections)if(t.image)p[t.image.name]=!0;else {const n=qn(x.toString()),i=t.fontStack||e,a=f[i]=f[i]||{};this.calculateGlyphDependencies(t.text,a,r,this.allowVerticalPlacement,n);}}}"line"===a.get("symbol-placement")&&(this.features=function(t){const e={},r={},n=[];let i=0;function a(e){n.push(t[e]),i++;}function s(t,e,i){const a=r[t];return delete r[t],r[e]=a,n[a].geometry[0].pop(),n[a].geometry[0]=n[a].geometry[0].concat(i[0]),a}function o(t,r,i){const a=e[r];return delete e[r],e[t]=a,n[a].geometry[0].shift(),n[a].geometry[0]=i[0].concat(n[a].geometry[0]),a}function l(t,e,r){const n=r?e[0][e[0].length-1]:e[0][0];return `${t}:${n.x}:${n.y}`}for(let u=0;u<t.length;u++){const c=t[u],h=c.geometry,p=c.text?c.text.toString():null;if(!p){a(u);continue}const f=l(p,h),d=l(p,h,!0);if(f in r&&d in e&&r[f]!==e[d]){const t=o(f,d,h),i=s(f,d,n[t].geometry);delete e[f],delete r[d],r[l(p,n[i].geometry,!0)]=i,n[t].geometry=null;}else f in r?s(f,d,h):d in e?o(f,d,h):(a(u),e[f]=i-1,r[d]=i-1);}return n.filter((t=>t.geometry))}(this.features)),this.sortFeaturesByKey&&this.features.sort(((t,e)=>t.sortKey-e.sortKey));}update(t,e,r){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(t,e,this.layers,r),this.icon.programConfigurations.updatePaintArrays(t,e,this.layers,r));}isEmpty(){return 0===this.symbolInstances.length&&!this.hasRTLText}uploadPending(){return !this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(t){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(t),this.iconCollisionBox.upload(t)),this.text.upload(t,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(t,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0;}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy();}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData();}addToLineVertexArray(t,e){const r=this.lineVertexArray.length;if(void 0!==t.segment){let r=t.dist(e[t.segment+1]),n=t.dist(e[t.segment]);const i={};for(let n=t.segment+1;n<e.length;n++)i[n]={x:e[n].x,y:e[n].y,tileUnitDistanceFromAnchor:r},n<e.length-1&&(r+=e[n+1].dist(e[n]));for(let r=t.segment||0;r>=0;r--)i[r]={x:e[r].x,y:e[r].y,tileUnitDistanceFromAnchor:n},r>0&&(n+=e[r-1].dist(e[r]));for(let t=0;t<e.length;t++){const e=i[t];this.lineVertexArray.emplaceBack(e.x,e.y,e.tileUnitDistanceFromAnchor);}}return {lineStartIndex:r,lineLength:this.lineVertexArray.length-r}}addSymbols(e,r,n,i,a,s,o,l,u,c,h,p){const f=e.indexArray,d=e.layoutVertexArray,y=e.segments.prepareSegment(4*r.length,d,f,this.canOverlap?s.sortKey:void 0),m=this.glyphOffsetArray.length,g=y.vertexLength,x=this.allowVerticalPlacement&&o===t.ai.vertical?Math.PI/2:0,v=s.text&&s.text.sections;for(let t=0;t<r.length;t++){const{tl:i,tr:a,bl:o,br:u,tex:c,pixelOffsetTL:h,pixelOffsetBR:m,minFontScaleX:g,minFontScaleY:b,glyphOffset:w,isSDF:_,sectionIndex:A}=r[t],S=y.vertexLength,k=w[1];Tu(d,l.x,l.y,i.x,k+i.y,c.x,c.y,n,_,h.x,h.y,g,b),Tu(d,l.x,l.y,a.x,k+a.y,c.x+c.w,c.y,n,_,m.x,h.y,g,b),Tu(d,l.x,l.y,o.x,k+o.y,c.x,c.y+c.h,n,_,h.x,m.y,g,b),Tu(d,l.x,l.y,u.x,k+u.y,c.x+c.w,c.y+c.h,n,_,m.x,m.y,g,b),$u(e.dynamicLayoutVertexArray,l,x),f.emplaceBack(S,S+1,S+2),f.emplaceBack(S+1,S+2,S+3),y.vertexLength+=4,y.primitiveLength+=2,this.glyphOffsetArray.emplaceBack(w[0]),t!==r.length-1&&A===r[t+1].sectionIndex||e.programConfigurations.populatePaintArrays(d.length,s,s.index,{},p,v&&v[A]);}e.placedSymbolArray.emplaceBack(l.x,l.y,m,this.glyphOffsetArray.length-m,g,u,c,l.segment,n?n[0]:0,n?n[1]:0,i[0],i[1],o,0,!1,0,h);}_addCollisionDebugVertex(t,e,r,n,i,a){return e.emplaceBack(0,0),t.emplaceBack(r.x,r.y,n,i,Math.round(a.x),Math.round(a.y))}addCollisionDebugVertices(t,e,r,n,i,s,o){const l=i.segments.prepareSegment(4,i.layoutVertexArray,i.indexArray),u=l.vertexLength,c=i.layoutVertexArray,h=i.collisionVertexArray,p=o.anchorX,f=o.anchorY;this._addCollisionDebugVertex(c,h,s,p,f,new a(t,e)),this._addCollisionDebugVertex(c,h,s,p,f,new a(r,e)),this._addCollisionDebugVertex(c,h,s,p,f,new a(r,n)),this._addCollisionDebugVertex(c,h,s,p,f,new a(t,n)),l.vertexLength+=4;const d=i.indexArray;d.emplaceBack(u,u+1),d.emplaceBack(u+1,u+2),d.emplaceBack(u+2,u+3),d.emplaceBack(u+3,u),l.primitiveLength+=4;}addDebugCollisionBoxes(t,e,r,n){for(let i=t;i<e;i++){const t=this.collisionBoxArray.get(i);this.addCollisionDebugVertices(t.x1,t.y1,t.x2,t.y2,n?this.textCollisionBox:this.iconCollisionBox,t.anchorPoint,r);}}generateCollisionDebugBuffers(){this.hasDebugData()&&this.destroyDebugData(),this.textCollisionBox=new Ou(wa,Ml.members,Sa),this.iconCollisionBox=new Ou(wa,Ml.members,Sa);for(let t=0;t<this.symbolInstances.length;t++){const e=this.symbolInstances.get(t);this.addDebugCollisionBoxes(e.textBoxStartIndex,e.textBoxEndIndex,e,!0),this.addDebugCollisionBoxes(e.verticalTextBoxStartIndex,e.verticalTextBoxEndIndex,e,!0),this.addDebugCollisionBoxes(e.iconBoxStartIndex,e.iconBoxEndIndex,e,!1),this.addDebugCollisionBoxes(e.verticalIconBoxStartIndex,e.verticalIconBoxEndIndex,e,!1);}}_deserializeCollisionBoxesForSymbol(t,e,r,n,i,a,s,o,l){const u={};for(let n=e;n<r;n++){const e=t.get(n);u.textBox={x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,anchorPointX:e.anchorPointX,anchorPointY:e.anchorPointY},u.textFeatureIndex=e.featureIndex;break}for(let e=n;e<i;e++){const r=t.get(e);u.verticalTextBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,anchorPointX:r.anchorPointX,anchorPointY:r.anchorPointY},u.verticalTextFeatureIndex=r.featureIndex;break}for(let e=a;e<s;e++){const r=t.get(e);u.iconBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,anchorPointX:r.anchorPointX,anchorPointY:r.anchorPointY},u.iconFeatureIndex=r.featureIndex;break}for(let e=o;e<l;e++){const r=t.get(e);u.verticalIconBox={x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2,anchorPointX:r.anchorPointX,anchorPointY:r.anchorPointY},u.verticalIconFeatureIndex=r.featureIndex;break}return u}deserializeCollisionBoxes(t){this.collisionArrays=[];for(let e=0;e<this.symbolInstances.length;e++){const r=this.symbolInstances.get(e);this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(t,r.textBoxStartIndex,r.textBoxEndIndex,r.verticalTextBoxStartIndex,r.verticalTextBoxEndIndex,r.iconBoxStartIndex,r.iconBoxEndIndex,r.verticalIconBoxStartIndex,r.verticalIconBoxEndIndex));}}hasTextData(){return this.text.segments.get().length>0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(t,e){const r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs;for(let e=r.vertexStartIndex;e<n;e+=4)t.indexArray.emplaceBack(e,e+1,e+2),t.indexArray.emplaceBack(e+1,e+2,e+3);}getSortedSymbolIndexes(t){if(this.sortedAngle===t&&void 0!==this.symbolInstanceIndexes)return this.symbolInstanceIndexes;const e=Math.sin(t),r=Math.cos(t),n=[],i=[],a=[];for(let t=0;t<this.symbolInstances.length;++t){a.push(t);const s=this.symbolInstances.get(t);n.push(0|Math.round(e*s.anchorX+r*s.anchorY)),i.push(s.featureIndex);}return a.sort(((t,e)=>n[t]-n[e]||i[e]-i[t])),a}addToSortKeyRanges(t,e){const r=this.sortKeyRanges[this.sortKeyRanges.length-1];r&&r.sortKey===e?r.symbolInstanceEnd=t+1:this.sortKeyRanges.push({sortKey:e,symbolInstanceStart:t,symbolInstanceEnd:t+1});}sortFeatures(t){if(this.sortFeaturesByY&&this.sortedAngle!==t&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const t of this.symbolInstanceIndexes){const e=this.symbolInstances.get(t);this.featureSortOrder.push(e.featureIndex),[e.rightJustifiedTextSymbolIndex,e.centerJustifiedTextSymbolIndex,e.leftJustifiedTextSymbolIndex].forEach(((t,e,r)=>{t>=0&&r.indexOf(t)===e&&this.addIndicesForPlacedSymbol(this.text,t);})),e.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,e.verticalPlacedTextSymbolIndex),e.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.placedIconSymbolIndex),e.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.verticalPlacedIconSymbolIndex);}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray);}}}let Ru,qu;$n("SymbolBucket",Uu,{omit:["layers","collisionBoxArray","features","compareText"]}),Uu.MAX_GLYPHS=65535,Uu.addDynamicAttributes=$u;var ju={get paint(){return qu=qu||new _i({"icon-opacity":new xi(X.paint_symbol["icon-opacity"]),"icon-color":new xi(X.paint_symbol["icon-color"]),"icon-halo-color":new xi(X.paint_symbol["icon-halo-color"]),"icon-halo-width":new xi(X.paint_symbol["icon-halo-width"]),"icon-halo-blur":new xi(X.paint_symbol["icon-halo-blur"]),"icon-translate":new gi(X.paint_symbol["icon-translate"]),"icon-translate-anchor":new gi(X.paint_symbol["icon-translate-anchor"]),"text-opacity":new xi(X.paint_symbol["text-opacity"]),"text-color":new xi(X.paint_symbol["text-color"],{runtimeType:yt,getOverride:t=>t.textColor,hasOverride:t=>!!t.textColor}),"text-halo-color":new xi(X.paint_symbol["text-halo-color"]),"text-halo-width":new xi(X.paint_symbol["text-halo-width"]),"text-halo-blur":new xi(X.paint_symbol["text-halo-blur"]),"text-translate":new gi(X.paint_symbol["text-translate"]),"text-translate-anchor":new gi(X.paint_symbol["text-translate-anchor"])})},get layout(){return Ru=Ru||new _i({"symbol-placement":new gi(X.layout_symbol["symbol-placement"]),"symbol-spacing":new gi(X.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new gi(X.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new xi(X.layout_symbol["symbol-sort-key"]),"symbol-z-order":new gi(X.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new gi(X.layout_symbol["icon-allow-overlap"]),"icon-overlap":new gi(X.layout_symbol["icon-overlap"]),"icon-ignore-placement":new gi(X.layout_symbol["icon-ignore-placement"]),"icon-optional":new gi(X.layout_symbol["icon-optional"]),"icon-rotation-alignment":new gi(X.layout_symbol["icon-rotation-alignment"]),"icon-size":new xi(X.layout_symbol["icon-size"]),"icon-text-fit":new gi(X.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new gi(X.layout_symbol["icon-text-fit-padding"]),"icon-image":new xi(X.layout_symbol["icon-image"]),"icon-rotate":new xi(X.layout_symbol["icon-rotate"]),"icon-padding":new xi(X.layout_symbol["icon-padding"]),"icon-keep-upright":new gi(X.layout_symbol["icon-keep-upright"]),"icon-offset":new xi(X.layout_symbol["icon-offset"]),"icon-anchor":new xi(X.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new gi(X.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new gi(X.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new gi(X.layout_symbol["text-rotation-alignment"]),"text-field":new xi(X.layout_symbol["text-field"]),"text-font":new xi(X.layout_symbol["text-font"]),"text-size":new xi(X.layout_symbol["text-size"]),"text-max-width":new xi(X.layout_symbol["text-max-width"]),"text-line-height":new gi(X.layout_symbol["text-line-height"]),"text-letter-spacing":new xi(X.layout_symbol["text-letter-spacing"]),"text-justify":new xi(X.layout_symbol["text-justify"]),"text-radial-offset":new xi(X.layout_symbol["text-radial-offset"]),"text-variable-anchor":new gi(X.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new xi(X.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new xi(X.layout_symbol["text-anchor"]),"text-max-angle":new gi(X.layout_symbol["text-max-angle"]),"text-writing-mode":new gi(X.layout_symbol["text-writing-mode"]),"text-rotate":new xi(X.layout_symbol["text-rotate"]),"text-padding":new gi(X.layout_symbol["text-padding"]),"text-keep-upright":new gi(X.layout_symbol["text-keep-upright"]),"text-transform":new xi(X.layout_symbol["text-transform"]),"text-offset":new xi(X.layout_symbol["text-offset"]),"text-allow-overlap":new gi(X.layout_symbol["text-allow-overlap"]),"text-overlap":new gi(X.layout_symbol["text-overlap"]),"text-ignore-placement":new gi(X.layout_symbol["text-ignore-placement"]),"text-optional":new gi(X.layout_symbol["text-optional"])})}};class Nu{constructor(t){if(void 0===t.property.overrides)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=t.property.overrides?t.property.overrides.runtimeType:ht,this.defaultValue=t;}evaluate(t){if(t.formattedSection){const e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default}eachChild(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression);}outputDefined(){return !1}serialize(){return null}}$n("FormatSectionOverride",Nu,{omit:["defaultValue"]});class Zu extends Si{constructor(t){super(t,ju);}recalculate(t,e){if(super.recalculate(t,e),"auto"===this.layout.get("icon-rotation-alignment")&&(this.layout._values["icon-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-rotation-alignment")&&(this.layout._values["text-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-pitch-alignment")&&(this.layout._values["text-pitch-alignment"]="map"===this.layout.get("text-rotation-alignment")?"map":"viewport"),"auto"===this.layout.get("icon-pitch-alignment")&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),"point"===this.layout.get("symbol-placement")){const t=this.layout.get("text-writing-mode");if(t){const e=[];for(const r of t)e.indexOf(r)<0&&e.push(r);this.layout._values["text-writing-mode"]=e;}else this.layout._values["text-writing-mode"]=["horizontal"];}this._setPaintOverrides();}getValueAndResolveTokens(t,e,r,n){const i=this.layout.get(t).evaluate(e,{},r,n),a=this._unevaluatedLayout._values[t];return a.isDataDriven()||Tr(a.value)||!i?i:function(t,e){return e.replace(/{([^{}]+)}/g,((e,r)=>t&&r in t?String(t[r]):""))}(e.properties,i)}createBucket(t){return new Uu(t)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(const t of ju.paint.overridableProperties){if(!
vendor: 4,128 bytes, line 37
37Zu.hasPaintOverride(this.layout,t))continue;const e=this.paint.get(t),r=new Nu(e),n=new Fr(r,e.property.specification);let i=null;i="constant"===e.value.kind||"source"===e.value.kind?new Lr("source",n):new Dr("composite",n,e.value.zoomStops),this.paint._values[t]=new yi(e.property,i,e.parameters);}}_handleOverridablePaintPropertyUpdate(t,e,r){return !(!this.layout||e.isDataDriven()||r.isDataDriven())&&Zu.hasPaintOverride(this.layout,t)}static hasPaintOverride(t,e){const r=t.get("text-field"),n=ju.paint.properties[e];let i=!1;const a=t=>{for(const e of t)if(n.overrides&&n.overrides.hasOverride(e))return void(i=!0)};if("constant"===r.value.kind&&r.value.value instanceof Qt)a(r.value.value.sections);else if("source"===r.value.kind){const t=e=>{i||(e instanceof le&&se(e.value)===vt?a(e.value.sections):e instanceof pr?a(e.sections):e.eachChild(t));},e=r.value;e._styleExpression&&t(e._styleExpression.expression);}return i}}let Ku;var Gu={get paint(){return Ku=Ku||new _i({"background-color":new gi(X.paint_background["background-color"]),"background-pattern":new bi(X.paint_background["background-pattern"]),"background-opacity":new gi(X.paint_background["background-opacity"])})}};class Ju extends Si{constructor(t){super(t,Gu);}}let Xu;var Yu={get paint(){return Xu=Xu||new _i({"raster-opacity":new gi(X.paint_raster["raster-opacity"]),"raster-hue-rotate":new gi(X.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new gi(X.paint_raster["raster-brightness-min"]),"raster-brightness-max":new gi(X.paint_raster["raster-brightness-max"]),"raster-saturation":new gi(X.paint_raster["raster-saturation"]),"raster-contrast":new gi(X.paint_raster["raster-contrast"]),"raster-resampling":new gi(X.paint_raster["raster-resampling"]),"raster-fade-duration":new gi(X.paint_raster["raster-fade-duration"])})}};class Hu extends Si{constructor(t){super(t,Yu);}}class Wu extends Si{constructor(t){super(t,{}),this.onAdd=t=>{this.implementation.onAdd&&this.implementation.onAdd(t,t.painter.context.gl);},this.onRemove=t=>{this.implementation.onRemove&&this.implementation.onRemove(t,t.painter.context.gl);},this.implementation=t;}is3D(){return "3d"===this.implementation.renderingMode}hasOffscreenPass(){return void 0!==this.implementation.prerender}recalculate(){}updateTransitions(){}hasTransition(){return !1}serialize(){throw new Error("Custom layers cannot be serialized")}}class Qu{constructor(t){this._callback=t,this._triggered=!1,"undefined"!=typeof MessageChannel&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._callback();});}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout((()=>{this._triggered=!1,this._callback();}),0));}remove(){delete this._channel,this._callback=()=>{};}}const tc=6371008.8;class ec{constructor(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")}wrap(){return new ec(m(this.lng,-180,180),this.lat)}toArray(){return [this.lng,this.lat]}toString(){return `LngLat(${this.lng}, ${this.lat})`}distanceTo(t){const e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return tc*Math.acos(Math.min(i,1))}static convert(t){if(t instanceof ec)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new ec(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&"object"==typeof t&&null!==t)return new ec(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: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]")}}const rc=2*Math.PI*tc;function nc(t){return rc*Math.cos(t*Math.PI/180)}function ic(t){return (180+t)/360}function ac(t){return (180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function sc(t,e){return t/nc(e)}function oc(t){return 360*t-180}function lc(t){return 360/Math.PI*Math.atan(Math.exp((180-360*t)*Math.PI/180)
vendor: 12,509 bytes, line 37
37)-90}class uc{constructor(t,e,r=0){this.x=+t,this.y=+e,this.z=+r;}static fromLngLat(t,e=0){const r=ec.convert(t);return new uc(ic(r.lng),ac(r.lat),sc(e,r.lat))}toLngLat(){return new ec(oc(this.x),lc(this.y))}toAltitude(){return this.z*nc(lc(this.y))}meterInMercatorCoordinateUnits(){return 1/rc*(t=lc(this.y),1/Math.cos(t*Math.PI/180));var t;}}function cc(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]}class hc{constructor(t,e,r){if(t<0||t>25||r<0||r>=Math.pow(2,t)||e<0||e>=Math.pow(2,t))throw new Error(`x=${e}, y=${r}, z=${t} outside of bounds. 0<=x<${Math.pow(2,t)}, 0<=y<${Math.pow(2,t)} 0<=z<=25 `);this.z=t,this.x=e,this.y=r,this.key=dc(0,t,t,e,r);}equals(t){return this.z===t.z&&this.x===t.x&&this.y===t.y}url(t,e,r){const n=(a=this.y,s=this.z,o=cc(256*(i=this.x),256*(a=Math.pow(2,s)-a-1),s),l=cc(256*(i+1),256*(a+1),s),o[0]+","+o[1]+","+l[0]+","+l[1]);var i,a,s,o,l;const u=function(t,e,r){let n,i="";for(let a=t;a>0;a--)n=1<<a-1,i+=(e&n?1:0)+(r&n?2:0);return i}(this.z,this.x,this.y);return t[(this.x+this.y)%t.length].replace(/{prefix}/g,(this.x%16).toString(16)+(this.y%16).toString(16)).replace(/{z}/g,String(this.z)).replace(/{x}/g,String(this.x)).replace(/{y}/g,String("tms"===r?Math.pow(2,this.z)-this.y-1:this.y)).replace(/{ratio}/g,e>1?"@2x":"").replace(/{quadkey}/g,u).replace(/{bbox-epsg-3857}/g,n)}isChildOf(t){const e=this.z-t.z;return e>0&&t.x===this.x>>e&&t.y===this.y>>e}getTilePoint(t){const e=Math.pow(2,this.z);return new a((t.x*e-this.x)*rs,(t.y*e-this.y)*rs)}toString(){return `${this.z}/${this.x}/${this.y}`}}class pc{constructor(t,e){this.wrap=t,this.canonical=e,this.key=dc(t,e.z,e.z,e.x,e.y);}}class fc{constructor(t,e,r,n,i){if(t<r)throw new Error(`overscaledZ should be >= z; overscaledZ = ${t}; z = ${r}`);this.overscaledZ=t,this.wrap=e,this.canonical=new hc(r,+n,+i),this.key=dc(e,t,r,n,i);}clone(){return new fc(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(t){return this.overscaledZ===t.overscaledZ&&this.wrap===t.wrap&&this.canonical.equals(t.canonical)}scaledTo(t){if(t>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${t}; overscaledZ = ${this.overscaledZ}`);const e=this.canonical.z-t;return t>this.canonical.z?new fc(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new fc(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)}calculateScaledKey(t,e){if(t>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${t}; overscaledZ = ${this.overscaledZ}`);const r=this.canonical.z-t;return t>this.canonical.z?dc(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):dc(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)}isChildOf(t){if(t.wrap!==this.wrap)return !1;const e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ<this.overscaledZ&&t.canonical.x===this.canonical.x>>e&&t.canonical.y===this.canonical.y>>e}children(t){if(this.overscaledZ>=t)return [new fc(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return [new fc(e,this.wrap,e,r,n),new fc(e,this.wrap,e,r+1,n),new fc(e,this.wrap,e,r,n+1),new fc(e,this.wrap,e,r+1,n+1)]}isLessThan(t){return this.wrap<t.wrap||!(this.wrap>t.wrap)&&(this.overscaledZ<t.overscaledZ||!(this.overscaledZ>t.overscaledZ)&&(this.canonical.x<t.canonical.x||!(this.canonical.x>t.canonical.x)&&this.canonical.y<t.canonical.y))}wrapped(){return new fc(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)}unwrapTo(t){return new fc(this.overscaledZ,t,this.canonical.z,this.canonical.x,this.canonical.y)}overscaleFactor(){return Math.pow(2,this.overscaledZ-this.canonical.z)}toUnwrapped(){return new pc(this.wrap,this.canonical)}toString(){return `${this.overscaledZ}/${this.canonical.x}/${this.canonical.y}`}getTilePoint(t){return this.canonical.getTilePoint(new uc(t.x-this.wrap,t.y))}}function dc(t,e,r,n,i){(t*=2)<0&&(t=-1*t-1);const a=1<<r;return (a*a*t+a*i+n).toString(36)+r.toString(36)+e.toString(36)}$n("CanonicalTileID",hc),$n("OverscaledTileID",fc,{omit:["posMatrix"]});class yc{constructor(t,e,r,n=1,i=1,a=1,s=0){if(this.uid=t,e.height!==e.width)throw new RangeError("DEM tiles must be square");if(r&&!["mapbox","terrarium","custom"].includes(r))return void A(`"${r}" is not a valid encoding type. Valid types include "mapbox", "terrarium" and "custom".`);this.stride=e.height;const o=this.dim=e.height-2;switch(this.data=new Uint32Array(e.data.buffer),r){case"terrarium":this.redFactor=256,this.greenFactor=1,this.blueFactor=1/256,this.baseShift=32768;break;case"custom":this.redFactor=n,this.greenFactor=i,this.blueFactor=a,this.baseShift=s;break;default:this.redFactor=6553.6,this.greenFactor=25.6,this.blueFactor=.1,this.baseShift=1e4;}for(let t=0;t<o;t++)this.data[this._idx(-1,t)]=this.data[this._idx(0,t)],this.data[this._idx(o,t)]=this.data[this._idx(o-1,t)],this.data[this._idx(t,-1)]=this.data[this._idx(t,0)],this.data[this._idx(t,o)]=this.data[this._idx(t,o-1)];this.data[this._idx(-1,-1)]=this.data[this._idx(0,0)],this.data[this._idx(o,-1)]=this.data[this._idx(o-1,0)],this.data[this._idx(-1,o)]=this.data[this._idx(0,o-1)],this.data[this._idx(o,o)]=this.data[this._idx(o-1,o-1)],this.min=Number.MAX_SAFE_INTEGER,this.max=Number.MIN_SAFE_INTEGER;for(let t=0;t<o;t++)for(let e=0;e<o;e++){const r=this.get(t,e);r>this.max&&(this.max=r),r<this.min&&(this.min=r);}}get(t,e){const r=new Uint8Array(this.data.buffer),n=4*this._idx(t,e);return this.unpack(r[n],r[n+1],r[n+2])}getUnpackVector(){return [this.redFactor,this.greenFactor,this.blueFactor,this.baseShift]}_idx(t,e){if(t<-1||t>=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)}unpack(t,e,r){return t*this.redFactor+e*this.greenFactor+r*this.blueFactor-this.baseShift}getPixels(){return new qs({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(t,e,r){if(this.dim!==t.dim)throw new Error("dem dimension mismatch");let n=e*this.dim,i=e*this.dim+this.dim,a=r*this.dim,s=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1;}switch(r){case-1:a=s-1;break;case 1:s=a+1;}const o=-e*this.dim,l=-r*this.dim;for(let e=a;e<s;e++)for(let r=n;r<i;r++)this.data[this._idx(r,e)]=t.data[this._idx(r+o,e+l)];}}$n("DEMData",yc);class mc{constructor(t){this._stringToNumber={},this._numberToString=[];for(let e=0;e<t.length;e++){const r=t[e];this._stringToNumber[r]=e,this._numberToString[e]=r;}}encode(t){return this._stringToNumber[t]}decode(t){if(t>=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${t} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[t]}}class gc{constructor(t,e,r,n,i){this.type="Feature",this._vectorTileFeature=t,t._z=e,t._x=r,t._y=n,this.properties=t.properties,this.id=i;}get geometry(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(t){this._geometry=t;}toJSON(){const t={geometry:this.geometry};for(const e in this)"_geometry"!==e&&"_vectorTileFeature"!==e&&(t[e]=this[e]);return t}}class xc{constructor(t,e){this.tileID=t,this.x=t.canonical.x,this.y=t.canonical.y,this.z=t.canonical.z,this.grid=new Fn(rs,16,0),this.grid3D=new Fn(rs,16,0),this.featureIndexArray=new ca,this.promoteId=e;}insert(t,e,r,n,i,a){const s=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(r,n,i);const o=a?this.grid3D:this.grid;for(let t=0;t<e.length;t++){const r=e[t],n=[1/0,1/0,-1/0,-1/0];for(let t=0;t<r.length;t++){const e=r[t];n[0]=Math.min(n[0],e.x),n[1]=Math.min(n[1],e.y),n[2]=Math.max(n[2],e.x),n[3]=Math.max(n[3],e.y);}n[0]<rs&&n[1]<rs&&n[2]>=0&&n[3]>=0&&o.insert(s,n[0],n[1],n[2],n[3]);}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new Ro.VectorTile(new eu(this.rawTileData)).layers,this.sourceLayerCoder=new mc(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers}query(t,e,r,n){this.loadVTLayers();const i=t.params||{},s=rs/t.tileSize/t.scale,o=Nr(i.filter),l=t.queryGeometry,u=t.queryPadding*s,c=bc(l),h=this.grid.query(c.minX-u,c.minY-u,c.maxX+u,c.maxY+u),p=bc(t.cameraQueryGeometry),f=this.grid3D.query(p.minX-u,p.minY-u,p.maxX+u,p.maxY+u,((e,r,n,i)=>function(t,e,r,n,i){for(const a of t)if(e<=a.x&&r<=a.y&&n>=a.x&&i>=a.y)return !0;const s=[new a(e,r),new a(e,i),new a(n,i),new a(n,r)];if(t.length>2)for(const e of s)if(xs(t,e))return !0;for(let e=0;e<t.length-1;e++)if(vs(t[e],t[e+1],s))return !0;return !1}(t.cameraQueryGeometry,e-u,r-u,n+u,i+u)));for(const t of f)h.push(t);h.sort(wc);const d={};let y;for(let a=0;a<h.length;a++){const u=h[a];if(u===y)continue;y=u;const c=this.featureIndexArray.get(u);let p=null;this.loadMatchingFeature(d,c.bucketIndex,c.sourceLayerIndex,c.featureIndex,o,i.layers,i.availableImages,e,r,n,((e,r,n)=>(p||(p=as(e)),r.queryIntersectsFeature(l,e,n,p,this.z,t.transform,s,t.pixelPosMatrix))));}return d}loadMatchingFeature(t,e,r,n,i,a,s,o,l,u,c){const h=this.bucketLayerIDs[e];if(a&&!function(t,e){for(let r=0;r<t.length;r++)if(e.indexOf(t[r])>=0)return !0;return !1}(a,h))return;const p=this.sourceLayerCoder.decode(r),f=this.vtLayers[p].feature(n);if(i.needGeometry){const t=ss(f,!0);if(!i.filter(new li(this.tileID.overscaledZ),t,this.tileID.canonical))return}else if(!i.filter(new li(this.tileID.overscaledZ),f))return;const d=this.getId(f,p);for(let e=0;e<h.length;e++){const r=h[e];if(a&&a.indexOf(r)<0)continue;const i=o[r];if(!i)continue;let p={};d&&u&&(p=u.getState(i.sourceLayer||"_geojsonTileLayer",d));const y=g({},l[r]);y.paint=vc(y.paint,i.paint,f,p,s),y.layout=vc(y.layout,i.layout,f,p,s);const m=!c||c(f,i,p);if(!m)continue;const x=new gc(f,this.z,this.x,this.y,d);x.layer=y;let v=t[r];void 0===v&&(v=t[r]=[]),v.push({featureIndex:n,feature:x,intersectionZ:m});}}lookupSymbolFeatures(t,e,r,n,i,a,s,o){const l={};this.loadVTLayers();const u=Nr(i);for(const i of t)this.loadMatchingFeature(l,r,n,i,u,a,s,o,e);return l}hasLayer(t){for(const e of this.bucketLayerIDs)for(const r of e)if(t===r)return !0;return !1}getId(t,e){let r=t.id;return this.promoteId&&(r=t.properties["string"==typeof this.promoteId?this.promoteId:this.promoteId[e]],"boolean"==typeof r&&(r=Number(r))),r}}function vc(t,e,r,n,i){return v(t,((t,a)=>{const s=e instanceof mi?e.get(a):null;return s&&s.evaluate?s.evaluate(r,n,i):s}))}function bc(t){let e=1/0,r=1/0,n=-1/0,i=-1/0;for(const a of t)e=Math.min(e,a.x),r=Math.min(r,a.y),n=Math.max(n,a.x),i=Math.max(i,a.y);return {minX:e,minY:r,maxX:n,maxY:i}}function wc(t,e){return e-t}function _c(t,e,r,n,i){const s=[];for(let o=0;o<t.length;o++){const l=t[o];let u;for(let t=0;t<l.length-1;t++){let o=l[t],c=l[t+1];o.x<e&&c.x<e||(o.x<e?o=new a(e,o.y+(e-o.x)/(c.x-o.x)*(c.y-o.y))._round():c.x<e&&(c=new a(e,o.y+(e-o.x)/(c.x-o.x)*(c.y-o.y))._round()),o.y<r&&c.y<r||(o.y<r?o=new a(o.x+(r-o.y)/(c.y-o.y)*(c.x-o.x),r)._round():c.y<r&&(c=new a(o.x+(r-o.y)/(c.y-o.y)*(c.x-o.x),r)._round()),o.x>=n&&c.x>=n||(o.x>=n?o=new a(n,o.y+(n-o.x)/(c.x-o.x)*(c.y-o.y))._round():c.x>=n&&(c=new a(n,o.y+(n-o.x)/(c.x-o.x)*(c.y-o.y))._round()),o.y>=i&&c.y>=i||(o.y>=i?o=new a(o.x+(i-o.y)/(c.y-o.y)*(c.x-o.x),i)._round():c.y>=i&&(c=new a(o.x+(i-o.y)/(c.y-o.y)*(c.x-o.x),i)._round()),u&&o.equals(u[u.length-1])||(u=[o],s.push(u)),u.push(c)))));}}return s}$n("FeatureIndex",xc,{omit:["rawTileData","sourceLayerCoder"]});class Ac extends a{constructor(t,e,r,n){super(t,e),this.angle=r,void 0!==n&&(this.segment=n);}clone(){return new Ac(this.x,this.y,this.angle,this.segment)}}function Sc(t,e,r,n,i){if(void 0===e.segment||0===r)return !0;let a=e,s=e.segment+1,o=0;for(;o>-r/2;){if(s--,s<0)return !1;o-=t[s].dist(a),a=t[s];}o+=t[s].dist(t[s+1]),s++;const l=[];let u=0;for(;o<r/2;){const e=t[s],r=t[s+1];if(!r)return !1;let a=t[s-1].angleTo(e)-e.angleTo(r);for(a=Math.abs((a+3*Math.PI)%(2*Math.PI)-Math.PI),l.push({distance:o,angleDelta:a}),u+=a;o-l[0].distance>n;)u-=l.shift().angleDelta;if(u>i)return !1;s++,o+=e.dist(r);}return !0}function kc(t){let e=0;for(let r=0;r<t.length-1;r++)e+=t[r].dist(t[r+1]);return e}function Ic(t,e,r){return t?.6*e*r:0}function zc(t,e){return Math.max(t?t.right-t.left:0,e?e.right-e.left:0)}function Mc(t,e,r,n,i,a){const s=Ic(r,i,a),o=zc(r,n)*a;let l=0;const u=kc(t)/2;for(let r=0;r<t.length-1;r++){const n=t[r],i=t[r+1],a=n.dist(i);if(l+a>
37u){const c=(u-l)/a,h=Ze.number(n.x,i.x,c),p=Ze.number(n.y,i.y,c),f=new Ac(h,p,i.angleTo(n),r);return f._round(),!s||Sc(t,f,o,s,e)?f:void 0}l+=a;}}function Cc(t,e,r,n,i,a,s,o,l){const u=Ic(n,a,s),c=zc(n,i),h=c*s,p=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-h<e/4&&(e=h+e/4),Bc(t,p?e/2*o%e:(c/2+2*a)*s*o%e,e,u,r,h,p,!1,l)}function Bc(t,e,r,n,i,a,s,o,l){const u=a/2,c=kc(t);let h=0,p=e-r,f=[];for(let e=0;e<t.length-1;e++){const s=t[e],o=t[e+1],d=s.dist(o),y=o.angleTo(s);for(;p+r<h+d;){p+=r;const m=(p-h)/d,g=Ze.number(s.x,o.x,m),x=Ze.number(s.y,o.y,m);if(g>=0&&g<l&&x>=0&&x<l&&p-u>=0&&p+u<=c){const r=new Ac(g,x,y,e);r._round(),n&&!Sc(t,r,a,n,i)||f.push(r);}}h+=d;}return o||f.length||s||(f=Bc(t,h/2,r,n,i,a,s,!0,l)),f}$n("Anchor",Ac);const Pc=lu;function Vc(t,e,r,n){const i=[],s=t.image,o=s.pixelRatio,l=s.paddedRect.w-2*Pc,u=s.paddedRect.h-2*Pc,c=t.right-t.left,h=t.bottom-t.top,p=s.stretchX||[[0,l]],f=s.stretchY||[[0,u]],d=(t,e)=>t+e[1]-e[0],y=p.reduce(d,0),m=f.reduce(d,0),g=l-y,x=u-m;let v=0,b=y,w=0,_=m,A=0,S=g,k=0,I=x;if(s.content&&n){const t=s.content;v=Ec(p,0,t[0]),w=Ec(f,0,t[1]),b=Ec(p,t[0],t[2]),_=Ec(f,t[1],t[3]),A=t[0]-v,k=t[1]-w,S=t[2]-t[0]-b,I=t[3]-t[1]-_;}const z=(n,i,l,u)=>{const p=Tc(n.stretch-v,b,c,t.left),f=$c(n.fixed-A,S,n.stretch,y),d=Tc(i.stretch-w,_,h,t.top),g=$c(i.fixed-k,I,i.stretch,m),x=Tc(l.stretch-v,b,c,t.left),z=$c(l.fixed-A,S,l.stretch,y),M=Tc(u.stretch-w,_,h,t.top),C=$c(u.fixed-k,I,u.stretch,m),B=new a(p,d),P=new a(x,d),V=new a(x,M),E=new a(p,M),F=new a(f/o,g/o),T=new a(z/o,C/o),$=e*Math.PI/180;if($){const t=Math.sin($),e=Math.cos($),r=[e,-t,t,e];B._matMult(r),P._matMult(r),E._matMult(r),V._matMult(r);}const L=n.stretch+n.fixed,D=i.stretch+i.fixed;return {tl:B,tr:P,bl:E,br:V,tex:{x:s.paddedRect.x+Pc+L,y:s.paddedRect.y+Pc+D,w:l.stretch+l.fixed-L,h:u.stretch+u.fixed-D},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:F,pixelOffsetBR:T,minFontScaleX:S/o/c,minFontScaleY:I/o/h,isSDF:r}};if(n&&(s.stretchX||s.stretchY)){const t=Fc(p,g,y),e=Fc(f,x,m);for(let r=0;r<t.length-1;r++){const n=t[r],a=t[r+1];for(let t=0;t<e.length-1;t++)i.push(z(n,e[t],a,e[t+1]));}}else i.push(z({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:l+1},{fixed:0,stretch:u+1}));return i}function Ec(t,e,r){let n=0;for(const i of t)n+=Math.max(e,Math.min(r,i[1]))-Math.max(e,Math.min(r,i[0]));return n}function Fc(t,e,r){const n=[{fixed:-Pc,stretch:0}];for(const[e,r]of t){const t=n[n.length-1];n.push({fixed:e-t.stretch,stretch:t.stretch}),n.push({fixed:e-t.stretch,stretch:t.stretch+(r-e)});}return n.push({fixed:e+Pc,stretch:r}),n}function Tc(t,e,r,n){return t/e*r+n}function $c(t,e,r,n){return t-e*r/n}class Lc{constructor(t,e,r,n,i,s,o,l,u,c){if(this.boxStartIndex=t.length,u){let t=s.top,e=s.bottom;const r=s.collisionPadding;r&&(t-=r[1],e+=r[3]);let n=e-t;n>0&&(n=Math.max(10,n),this.circleDiameter=n);}else {let u=s.top*o-l[0],h=s.bottom*o+l[2],p=s.left*o-l[3],f=s.right*o+l[1];const d=s.collisionPadding;if(d&&(p-=d[0]*o,u-=d[1]*o,f+=d[2]*o,h+=d[3]*o),c){const t=new a(p,u),e=new a(f,u),r=new a(p,h),n=new a(f,h),i=c*Math.PI/180;t._rotate(i),e._rotate(i),r._rotate(i),n._rotate(i),p=Math.min(t.x,e.x,r.x,n.x),f=Math.max(t.x,e.x,r.x,n.x),u=Math.min(t.y,e.y,r.y,n.y),h=Math.max(t.y,e.y,r.y,n.y);}t.emplaceBack(e.x,e.y,p,u,f,h,r,n,i);}this.boxEndIndex=t.length;}}class Dc{constructor(t=[],e=Oc){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t);}push(t){this.data.push(t),this.length++,this._up(this.length-1);}pop(){if(0===this.length)return;const t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:r}=this,n=e[t];for(;t>0;){const i=t-1>>1,a=e[i];if(r(n,a)>=0)break;e[t]=a,t=i;}e[t]=n;}_down(t){const{data:e,compare:r}=this,n=this.length>>1,i=e[t];for(;t<n;){let n=1+(t<<1),a=e[n];const s=n+1;if(s<this.length&&r(e[s],a)<0&&(n=s,a=e[s]),r(a,i)>=0)break;e[t]=a,t=n;}e[t]=i;}}function Oc(t,e){return t<e?-1:t>e?1:0}function Uc(t,e=1,r=!1){let n=1/0,i=1/0,s=-1/0,o=-1/0;const l=t[0];for(let t=0;t<l.length;t++){const e=l[t];
vendor: 5,979 bytes, line 37
37(!t||e.x<n)&&(n=e.x),(!t||e.y<i)&&(i=e.y),(!t||e.x>s)&&(s=e.x),(!t||e.y>o)&&(o=e.y);}const u=Math.min(s-n,o-i);let c=u/2;const h=new Dc([],Rc);if(0===u)return new a(n,i);for(let e=n;e<s;e+=u)for(let r=i;r<o;r+=u)h.push(new qc(e+c,r+c,c,t));let p=function(t){let e=0,r=0,n=0;const i=t[0];for(let t=0,a=i.length,s=a-1;t<a;s=t++){const a=i[t],o=i[s],l=a.x*o.y-o.x*a.y;r+=(a.x+o.x)*l,n+=(a.y+o.y)*l,e+=3*l;}return new qc(r/e,n/e,0,t)}(t),f=h.length;for(;h.length;){const n=h.pop();(n.d>p.d||!p.d)&&(p=n,r&&console.log("found best %d after %d probes",Math.round(1e4*n.d)/1e4,f)),n.max-p.d<=e||(c=n.h/2,h.push(new qc(n.p.x-c,n.p.y-c,c,t)),h.push(new qc(n.p.x+c,n.p.y-c,c,t)),h.push(new qc(n.p.x-c,n.p.y+c,c,t)),h.push(new qc(n.p.x+c,n.p.y+c,c,t)),f+=4);}return r&&(console.log(`num probes: ${f}`),console.log(`best distance: ${p.d}`)),p.p}function Rc(t,e){return e.max-t.max}function qc(t,e,r,n){this.p=new a(t,e),this.h=r,this.d=function(t,e){let r=!1,n=1/0;for(let i=0;i<e.length;i++){const a=e[i];for(let e=0,i=a.length,s=i-1;e<i;s=e++){const i=a[e],o=a[s];i.y>t.y!=o.y>t.y&&t.x<(o.x-i.x)*(t.y-i.y)/(o.y-i.y)+i.x&&(r=!r),n=Math.min(n,ms(t,i,o));}}return (r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2;}var jc;t.aq=void 0,(jc=t.aq||(t.aq={}))[jc.center=1]="center",jc[jc.left=2]="left",jc[jc.right=3]="right",jc[jc.top=4]="top",jc[jc.bottom=5]="bottom",jc[jc["top-left"]=6]="top-left",jc[jc["top-right"]=7]="top-right",jc[jc["bottom-left"]=8]="bottom-left",jc[jc["bottom-right"]=9]="bottom-right";const Nc=7,Zc=Number.POSITIVE_INFINITY;function Kc(t,e){return e[1]!==Zc?function(t,e,r){let n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case"top-right":case"top-left":case"top":i=r-Nc;break;case"bottom-right":case"bottom-left":case"bottom":i=-r+Nc;}switch(t){case"top-right":case"bottom-right":case"right":n=-e;break;case"top-left":case"bottom-left":case"left":n=e;}return [n,i]}(t,e[0],e[1]):function(t,e){let r=0,n=0;e<0&&(e=0);const i=e/Math.SQRT2;switch(t){case"top-right":case"top-left":n=i-Nc;break;case"bottom-right":case"bottom-left":n=-i+Nc;break;case"bottom":n=-e+Nc;break;case"top":n=e-Nc;}switch(t){case"top-right":case"bottom-right":r=-i;break;case"top-left":case"bottom-left":r=i;break;case"left":r=e;break;case"right":r=-e;}return [r,n]}(t,e[0])}function Gc(t,e,r){var n;const i=t.layout,a=null===(n=i.get("text-variable-anchor-offset"))||void 0===n?void 0:n.evaluate(e,{},r);if(a){const t=a.values,e=[];for(let r=0;r<t.length;r+=2){const n=e[r]=t[r],i=t[r+1].map((t=>t*Vl));n.startsWith("top")?i[1]-=Nc:n.startsWith("bottom")&&(i[1]+=Nc),e[r+1]=i;}return new re(e)}const s=i.get("text-variable-anchor");if(s){let n;n=void 0!==t._unevaluatedLayout.getValue("text-radial-offset")?[i.get("text-radial-offset").evaluate(e,{},r)*Vl,Zc]:i.get("text-offset").evaluate(e,{},r).map((t=>t*Vl));const a=[];for(const t of s)a.push(t,Kc(t,n));return new re(a)}return null}function Jc(t){switch(t){case"right":case"top-right":case"bottom-right":return "right";case"left":case"top-left":case"bottom-left":return "left"}return "center"}function Xc(e,r,n,i,a,s,o,l,u,c,h){let p=s.textMaxSize.evaluate(r,{});void 0===p&&(p=o);const f=e.layers[0].layout,d=f.get("icon-offset").evaluate(r,{},h),y=Hc(n.horizontal),m=o/24,g=e.tilePixelRatio*m,x=e.tilePixelRatio*p/24,v=e.tilePixelRatio*l,b=e.tilePixelRatio*f.get("symbol-spacing"),w=f.get("text-padding")*e.tilePixelRatio,_=function(t,e,r,n=1){const i=t.get("icon-padding").evaluate(e,{},r),a=i&&i.values;return [a[0]*n,a[1]*n,a[2]*n,a[3]*n]}(f,r,h,e.tilePixelRatio),S=f.get("text-max-angle")/180*Math.PI,k="viewport"!==f.get("text-rotation-alignment")&&"point"!==f.get("symbol-placement"),I="map"===f.get("icon-rotation-alignment")&&"point"!==f.get("symbol-placement"),z=f.get("symbol-placement"),M=b/2,C=f.get("icon-text-fit");let B;i&&"none"!==C&&(e.allowVerticalPlacement&&n.vertical&&(B=zu(i,n.vertical,C,f.get("icon-text-fit-padding"),d,m)),y&&(i=zu(i,y,C,f.get("icon-text-fit-padding"),d,m)));const P=(l,p)=>{p.x<0||p.x>=rs||p.y<0||p.y>=rs||function(e,r,n,i,a,s,o,l,u,c,h,p,f,d,y,m,g,x,v,b,w,_,S,k,I){const z=e.addToLineVertexArray(r,n);let M,C,B,P,V=0,E=0,F=0,T=0,$=-1,L=-1;const D={};let O=$a("");if(e.allowVerticalPlacement&&i.vertical){const t=l.layout.get("text-rotate").evaluate(w,{},k)+90;B=new Lc(u,r,c,h,p,i.vertical,f,d,y,t),o&&(P=new Lc(u,r,c,h,p,o,g,x,y,t));}if(a){const n=l.layout.get("icon-rotate").evaluate(w,{}),i="none"!==l.layout.get("icon-text-fit"),s=Vc(a,n,S,i),f=o?Vc(o,n,S,i):void 0;C=new Lc(u,r,c,h,p,a,g,x,!1,n),V=4*s.length;const d=e.iconSizeData;let y=null;"source"===d.kind?(y=[Cu*l.layout.get("icon-size").evaluate(w,{})],y[0]>Bu&&A(`${e.layerIds[0]}: Value for "icon-size" is >= ${Mu}. Reduce your "icon-size".`)):"composite"===d.kind&&(y=[Cu*_.compositeIconSizes[0].evaluate(w,{},k),Cu*_.compositeIconSizes[1].evaluate(w,{},k)],(y[0]>Bu||y[1]>Bu)&&A(`${e.layerIds[0]}: Value for "icon-size" is >= ${Mu}. Reduce your "icon-size".`)),e.addSymbols(e.icon,s,y,b,v,w,t.ai.none,r,z.lineStartIndex,z.lineLength,-1,k),$=e.icon.placedSymbolArray.length-1,f&&(E=4*f.length,e.addSymbols(e.icon,f,y,b,v,w,t.ai.vertical,r,z.lineStartIndex,z.lineLength,-1,k),L=e.icon.placedSymbolArray.length-1);}const U=Object.keys(i.horizontal);for(const n of U){const a=i.horizontal[n];if(!M){O=$a(a.text);const t=l.layout.get("text-rotate").evaluate(w,{},k);M=new Lc(u,r,c,h,p,a,f,d,y,t);}const o=1===a.positionedLines.length;if(F+=Yc(e,r,a,s,l,y,w,m,z,i.vertical?t.ai.horizontal:t.ai.horizontalOnly,o?U:[n],D,$,_,k),o)break}i.vertical&&(T+=Yc(e,r,i.vertical,s,l,y,w,m,z,t.ai.vertical,["vertical"],D,L,_,k));const R=M?M.boxStartIndex:e.collisionBoxArray.length,q=M?M.boxEndIndex:e.collisionBoxArray.length,j=B?B.boxStartIndex:e.collisionBoxArray.length,N=B?B.boxEndIndex:e.collisionBoxArray.length,Z=C?C.boxStartIndex:e.collisionBoxArray.length,K=C?C.boxEndIndex:e.collisionBoxArray.length,G=P?P.boxStartIndex:e.collisionBoxArray.length,J=P?P.boxEndIndex:e.collisionBoxArray.length;let X=-1;const Y=(t,e)=>
vendor: 2,465 bytes, line 37
37t&&t.circleDiameter?Math.max(t.circleDiameter,e):e;X=Y(M,X),X=Y(B,X),X=Y(C,X),X=Y(P,X);const H=X>-1?1:0;H&&(X*=I/Vl),e.glyphOffsetArray.length>=Uu.MAX_GLYPHS&&A("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),void 0!==w.sortKey&&e.addToSortKeyRanges(e.symbolInstances.length,w.sortKey);const W=Gc(l,w,k),[Q,tt]=function(e,r){const n=e.length,i=null==r?void 0:r.values;if((null==i?void 0:i.length)>0)for(let r=0;r<i.length;r+=2){const n=i[r+1];e.emplaceBack(t.aq[i[r]],n[0],n[1]);}return [n,e.length]}(e.textAnchorOffsets,W);e.symbolInstances.emplaceBack(r.x,r.y,D.right>=0?D.right:-1,D.center>=0?D.center:-1,D.left>=0?D.left:-1,D.vertical||-1,$,L,O,R,q,j,N,Z,K,G,J,c,F,T,V,E,H,0,f,X,Q,tt);}(e,p,l,n,i,a,B,e.layers[0],e.collisionBoxArray,r.index,r.sourceLayerIndex,e.index,g,[w,w,w,w],k,u,v,_,I,d,r,s,c,h,o);};if("line"===z)for(const t of _c(r.geometry,0,0,rs,rs)){const r=Cc(t,b,S,n.vertical||y,i,24,x,e.overscaling,rs);for(const n of r)y&&Wc(e,y.text,M,n)||P(t,n);}else if("line-center"===z){for(const t of r.geometry)if(t.length>1){const e=Mc(t,S,n.vertical||y,i,24,x);e&&P(t,e);}}else if("Polygon"===r.type)for(const t of Co(r.geometry,0)){const e=Uc(t,16);P(t[0],new Ac(e.x,e.y,0));}else if("LineString"===r.type)for(const t of r.geometry)P(t,new Ac(t[0].x,t[0].y,0));else if("Point"===r.type)for(const t of r.geometry)for(const e of t)P([e],new Ac(e.x,e.y,0));}function Yc(t,e,r,n,i,s,o,l,u,c,h,p,f,d,y){const m=function(t,e,r,n,i,s,o,l){const u=n.layout.get("text-rotate").evaluate(s,{})*Math.PI/180,c=[];for(const t of e.positionedLines)for(const n of t.positionedGlyphs){if(!n.rect)continue;const s=n.rect||{};let h=su+1,p=!0,f=1,d=0;const y=(i||l)&&n.vertical,m=n.metrics.advance*n.scale/2;if(l&&e.verticalizable&&(d=t.lineOffset/2-(n.imageName?-(Vl-n.metrics.width*n.scale)/2:(n.scale-1)*Vl)),n.imageName){const t=o[n.imageName];p=t.sdf,f=t.pixelRatio,h=lu/f;}const g=i?[n.x+m,n.y]:[0,0];let x=i?[0,0]:[n.x+m+r[0],n.y+r[1]-d],v=[0,0];y&&(v=x,x=[0,0]);const b=n.metrics.isDoubleResolution?2:1,w=(n.metrics.left-h)*n.scale-m+x[0],_=(-n.metrics.top-h)*n.scale+x[1],A=w+s.w/b*n.scale/f,S=_+s.h/b*n.scale/f,k=new a(w,_),I=new a(A,_),z=new a(w,S),M=new a(A,S);if(y){const t=new a(-m,m-pu),e=-Math.PI/2,r=Vl/2-m,i=new a(5-pu-r,-(n.imageName?r:0)),s=new a(...v);k._rotateAround(e,t)._add(i)._add(s),I._rotateAround(e,t)._add(i)._add(s),z._rotateAround(e,t)._add(i)._add(s),M._rotateAround(e,t)._add(i)._add(s);}
vendor: 6,318 bytes, line 37
37if(u){const t=Math.sin(u),e=Math.cos(u),r=[e,-t,t,e];k._matMult(r),I._matMult(r),z._matMult(r),M._matMult(r);}const C=new a(0,0),B=new a(0,0);c.push({tl:k,tr:I,bl:z,br:M,tex:s,writingMode:e.writingMode,glyphOffset:g,sectionIndex:n.sectionIndex,isSDF:p,pixelOffsetTL:C,pixelOffsetBR:B,minFontScaleX:0,minFontScaleY:0});}return c}(0,r,l,i,s,o,n,t.allowVerticalPlacement),g=t.textSizeData;let x=null;"source"===g.kind?(x=[Cu*i.layout.get("text-size").evaluate(o,{})],x[0]>Bu&&A(`${t.layerIds[0]}: Value for "text-size" is >= ${Mu}. Reduce your "text-size".`)):"composite"===g.kind&&(x=[Cu*d.compositeTextSizes[0].evaluate(o,{},y),Cu*d.compositeTextSizes[1].evaluate(o,{},y)],(x[0]>Bu||x[1]>Bu)&&A(`${t.layerIds[0]}: Value for "text-size" is >= ${Mu}. Reduce your "text-size".`)),t.addSymbols(t.text,m,x,l,s,o,c,e,u.lineStartIndex,u.lineLength,f,y);for(const e of h)p[e]=t.text.placedSymbolArray.length-1;return 4*m.length}function Hc(t){for(const e in t)return t[e];return null}function Wc(t,e,r,n){const i=t.compareText;if(e in i){const t=i[e];for(let e=t.length-1;e>=0;e--)if(n.dist(t[e])<r)return !0}else i[e]=[];return i[e].push(n),!1}const Qc=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class th{static from(t){if(!(t instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");const[e,r]=new Uint8Array(t,0,2);if(219!==e)throw new Error("Data does not appear to be in a KDBush format.");const n=r>>4;if(1!==n)throw new Error(`Got v${n} data when expected v1.`);const i=Qc[15&r];if(!i)throw new Error("Unrecognized array type.");const[a]=new Uint16Array(t,2,1),[s]=new Uint32Array(t,4,1);return new th(s,a,i,t)}constructor(t,e=64,r=Float64Array,n){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+e,2),65535),this.ArrayType=r,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;const i=Qc.indexOf(this.ArrayType),a=2*t*this.ArrayType.BYTES_PER_ELEMENT,s=t*this.IndexArrayType.BYTES_PER_ELEMENT,o=(8-s%8)%8;if(i<0)throw new Error(`Unexpected typed array class: ${r}.`);n&&n instanceof ArrayBuffer?(this.data=n,this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+s+o,2*t),this._pos=2*t,this._finished=!0):(this.data=new ArrayBuffer(8+a+s+o),this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+s+o,2*t),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+i]),new Uint16Array(this.data,2,1)[0]=e,new Uint32Array(this.data,4,1)[0]=t);}add(t,e){const r=this._pos>>1;return this.ids[r]=r,this.coords[this._pos++]=t,this.coords[this._pos++]=e,r}finish(){const t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return eh(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,e,r,n){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:i,coords:a,nodeSize:s}=this,o=[0,i.length-1,0],l=[];for(;o.length;){const u=o.pop()||0,c=o.pop()||0,h=o.pop()||0;if(c-h<=s){for(let s=h;s<=c;s++){const o=a[2*s],u=a[2*s+1];o>=t&&o<=r&&u>=e&&u<=n&&l.push(i[s]);}continue}const p=h+c>>1,f=a[2*p],d=a[2*p+1];f>=t&&f<=r&&d>=e&&d<=n&&l.push(i[p]),(0===u?t<=f:e<=d)&&(o.push(h),o.push(p-1),o.push(1-u)),(0===u?r>=f:n>=d)&&(o.push(p+1),o.push(c),o.push(1-u));}return l}within(t,e,r){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:n,coords:i,nodeSize:a}=this,s=[0,n.length-1,0],o=[],l=r*r;for(;s.length;){const u=s.pop()||0,c=s.pop()||0,h=s.pop()||0;if(c-h<=a){for(let r=h;r<=c;r++)ah(i[2*r],i[2*r+1],t,e)<=l&&o.push(n[r]);continue}const p=h+c>>1,f=i[2*p],d=i[2*p+1];ah(f,d,t,e)<=l&&o.push(n[p]),(0===u?t-r<=f:e-r<=d)&&(s.push(h),s.push(p-1),s.push(1-u)),(0===u?t+r>=f:e+r>=d)&&(s.push(p+1),s.push(c),s.push(1-u));}return o}}function eh(t,e,r,n,i,a){if(i-n<=r)return;const s=n+i>>1;rh(t,e,s,n,i,a),eh(t,e,r,n,s-1,1-a),eh(t,e,r,s+1,i,1-a);}function rh(t,e,r,n,i,a){for(;i>n;){if(i-n>600){const s=i-n+1,o=r-n+1,l=Math.log(s),u=.5*Math.exp(2*l/3),c=.5*Math.sqrt(l*u*(s-u)/s)*(o-s/2<0?-1:1);rh(t,e,r,Math.max(n,Math.floor(r-o*u/s+c)),Math.min(i,Math.floor(r+(s-o)*u/s+c)),a);}const s=e[2*r+a];let o=n,l=i;for(nh(t,e,n,r),e[2*i+a]>s&&nh(t,e,n,i);o<l;){for(nh(t,e,o,l),o++,l--;e[2*o+a]<s;)o++;for(;e[2*l+a]>s;)l--;}e[2*n+a]===s?nh(t,e,n,l):(l++,nh(t,e,l,i)),l<=r&&(n=l+1),r<=l&&(i=l-1);}}function nh(t,e,r,n){ih(t,r,n),ih(e,2*r,2*n),ih(e,2*r+1,2*n+1);}function ih(t,e,r){const n=t[e];t[e]=t[r],t[r]=n;}function ah(t,e,r,n){const i=t-r,a=e-n;return i*i+a*a}var sh;t.bh=void 0,(sh=t.bh||(t.bh={})).create="create",sh.load="load",sh.fullLoad="fullLoad";let oh=null,lh=[];const uh=1e3/60,ch="loadTime",hh="fullLoadTime",ph={mark(t){performance.mark(t);},frame(t){const e=t;null!=oh&&lh.push(e-oh),oh=e;},clearMetrics(){oh=null,lh=[],performance.clearMeasures(ch),performance.clearMeasures(hh);for(const e in t.bh)performance.clearMarks(t.bh[e]);},getPerformanceMetrics(){performance.measure(ch,t.bh.create,t.bh.load),performance.measure(hh,t.bh.create,t.bh.fullLoad);const e=performance.getEntriesByName(ch)[0].duration,r=performance.getEntriesByName(hh)[0].duration,n=lh.length,i=1/(lh.reduce(((t,e)=>t+e),0)/n/1e3),a=lh.filter((t=>t>uh)).reduce(((t,e)=>t+(e-uh)/uh),0);return {loadTime:e,fullLoadTime:r,fps:i,percentDroppedFrames:a/(n+a)*100,totalFrames:n}}};t.$=function(t,e,r){var n,i,a,s,o,l,u,c,h,p,f,d,y=r[0],m=r[1],g=r[2];return e===t?(t[12]=e[0]*y+e[4]*m+e[8]*g+e[12],t[13]=e[1]*y+e[5]*m+e[9]*g+e[13],t[14]=e[2]*y+e[6]*m+e[10]*g+e[14],t[15]=e[3]*y+e[7]*m+e[11]*g+e[15]):(i=e[1],a=e[2],s=e[3],o=e[4],l=e[5],u=e[6],c=e[7],h=e[8],p=e[9],f=e[10],d=e[11],t[0]=n=e[0],t[1]=i,t[2]=a,t[3]=s,t[4]=o,t[5]=l,t[6]=u,t[7]=c,t[8]=h,t[9]=p,t[10]=f,t[11]=d,t[12]=n*y+o*m+h*g+e[12],t[13]=i*y+l*m+p*g+e[13],t[14]=a*y+u*m+f*g+e[14],t[15]=s*y+c*m+d*g+e[15]),t},t.A=zs,t.B=Ze,t.C=class{constructor(t,e,r){this.receive=t=>{const e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if("<cancel>"===e.type){delete this.tasks[r];const t=this.cancelCallbacks[r];delete this.cancelCallbacks[r],t&&t();}else I()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e);},this.process=()=>
37{if(!this.taskQueue.length)return;const t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(t,e);},this.target=t,this.parent=e,this.mapId=r,this.callbacks={},this.tasks={},this.taskQueue=[],this.cancelCallbacks={},this.invoker=new Qu(this.process),this.target.addEventListener("message",this.receive,!1),this.globalScope=I()?t:window;}send(t,e,r,n,i=!1){const a=Math.round(1e18*Math.random()).toString(36).substring(0,10);r&&(this.callbacks[a]=r);const s=[],o={id:a,type:t,hasCallback:!!r,targetMapId:n,mustQueue:i,sourceMapId:this.mapId,data:Dn(e,s)};return this.target.postMessage(o,{transfer:s}),{cancel:()=>{r&&delete this.callbacks[a],this.target.postMessage({id:a,type:"<cancel>",targetMapId:n,sourceMapId:this.mapId});}}}processTask(t,e){if("<response>"===e.type){const r=this.callbacks[t];delete this.callbacks[t],r&&(e.error?r(On(e.error)):r(null,On(e.data)));}else {let r=!1;const n=[],i=e.hasCallback?(e,i)=>{r=!0,delete this.cancelCallbacks[t];const a={id:t,type:"<response>",sourceMapId:this.mapId,error:e?Dn(e):null,data:Dn(i,n)};this.target.postMessage(a,{transfer:n});}:t=>{r=!0;};let a=null;const s=On(e.data);if(this.parent[e.type])a=this.parent[e.type](e.sourceMapId,s,i);else if("getWorkerSource"in this.parent){const t=e.type.split(".");a=this.parent.getWorkerSource(e.sourceMapId,t[0],s.source)[t[1]](s,i);}else i(new Error(`Could not find function ${e.type}`));!r&&a&&a.cancel&&(this.cancelCallbacks[t]=a.cancel);}}remove(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1);}},t.D=gi,t.E=J,t.F=function(t,e){const r={};for(let n=0;n<e.length;n++){const i=e[n];i in t&&(r[i]=t[i]);}return r},t.G=ic,t.H=ac,t.I=uu,t.J=h,t.K=p,t.L=ec,t.M=B,t.N=rs,t.O=fc,t.P=a,t.Q=Mi,t.R=qs,t.S=za,t.T=hi,t.U=uc,t.V=class extends Vi{},t.W=hc,t.X=function(t,e){const r=window.document.createElement("video");r.muted=!0,r.onloadstart=function(){e(null,r);};for(let e=0;e<t.length;e++){const n=window.document.createElement("source");j(t[e])||(r.crossOrigin="Anonymous"),n.src=t[e],r.appendChild(n);}return {cancel:()=>{}}},t.Y=ot,t.Z=function(){var t=new zs(16);return zs!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t._=e,t.a=M,t.a$=class extends Hi{},t.a0=function(t,e,r){var n=r[0],i=r[1],a=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*a,t[9]=e[9]*a,t[10]=e[10]*a,t[11]=e[11]*a,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},t.a1=Cs,t.a2=function(){return x++},t.a3=ta,t.a4=Uu,t.a5=function(){oi.isLoading()||oi.isLoaded()||"deferred"!==ai()||si();},t.a6=Nr,t.a7=ss,t.a8=li,t.a9=gc,t.aA=ri,t.aB=function(t){t=t.slice();const e=Object.create(null);for(let r=0;r<t.length;r++)e[t[r].id]=t[r];for(let r=0;r<t.length;r++)"ref"in t[r]&&(t[r]=H(t[r],e[t[r].ref]));return t},t.aC=function(t){if("custom"===t.type)return new Wu(t);switch(t.type){case"background":return new Ju(t);case"circle":return new Es(t);case"fill":return new Lo(t);case"fill-extrusion":return new ol(t);case"heatmap":return new Ns(t);case"hillshade":return new Gs(t);case"line":return new Al(t);case"raster":return new Hu(t);case"symbol":return new Zu(t)}},t.aD=w,t.aE=function(t,e){if(!t)return [{command:Q.setStyle,args:[e]}];let r=[];try{if(!W(t.version,e.version))return [{command:Q.setStyle,args:[e]}];W(t.center,e.center)||r.push({command:Q.setCenter,args:[e.center]}),W(t.zoom,e.zoom)||r.push({command:Q.setZoom,args:[e.zoom]}),W(t.bearing,e.bearing)||r.push({command:Q.setBearing,args:[e.bearing]}),W(t.pitch,e.pitch)||r.push({command:Q.setPitch,args:[e.pitch]}),W(t.sprite,e.sprite)||r.push({command:Q.setSprite,args:[e.sprite]}),W(t.glyphs,e.glyphs)||r.push({command:Q.setGlyphs,args:[e.glyphs]}),W(t.transition,e.transition)||r.push({command:Q.setTransition,args:[e.transition]}),W(t.light,e.light)||r.push({command:Q.setLight,args:[e.light]});const n={},i=[];!function(t,e,r,n){let i;for(i in e=e||{},t=t||{})Object.prototype.hasOwnProperty.call(t,i)&&(Object.prototype.hasOwnProperty.call(e,i)||et(i,r,n));for(i in e)Object.prototype.hasOwnProperty.call(e,i)&&(Object.prototype.hasOwnProperty.call(t,i)?W(t[i],e[i])||("geojson"===t[i].type&&"geojson"===e[i].type&&nt
37(t,e,i)?r.push({command:Q.setGeoJSONSourceData,args:[i,e[i].data]}):rt(i,e,r,n)):tt(i,e,r));}(t.sources,e.sources,i,n);const a=[];t.layers&&t.layers.forEach((t=>{n[t.source]?r.push({command:Q.removeLayer,args:[t.id]}):a.push(t);})),r=r.concat(i),function(t,e,r){e=e||[];const n=(t=t||[]).map(at),i=e.map(at),a=t.reduce(st,{}),s=e.reduce(st,{}),o=n.slice(),l=Object.create(null);let u,c,h,p,f,d,y;for(u=0,c=0;u<n.length;u++)h=n[u],Object.prototype.hasOwnProperty.call(s,h)?c++:(r.push({command:Q.removeLayer,args:[h]}),o.splice(o.indexOf(h,c),1));for(u=0,c=0;u<i.length;u++)h=i[i.length-1-u],o[o.length-1-u]!==h&&(Object.prototype.hasOwnProperty.call(a,h)?(r.push({command:Q.removeLayer,args:[h]}),o.splice(o.lastIndexOf(h,o.length-c),1)):c++,d=o[o.length-u],r.push({command:Q.addLayer,args:[s[h],d]}),o.splice(o.length-u,0,h),l[h]=!0);for(u=0;u<i.length;u++)if(h=i[u],p=a[h],f=s[h],!l[h]&&!W(p,f))if(W(p.source,f.source)&&W(p["source-layer"],f["source-layer"])&&W(p.type,f.type)){for(y in it(p.layout,f.layout,r,h,null,Q.setLayoutProperty),it(p.paint,f.paint,r,h,null,Q.setPaintProperty),W(p.filter,f.filter)||r.push({command:Q.setFilter,args:[h,f.filter]}),W(p.minzoom,f.minzoom)&&W(p.maxzoom,f.maxzoom)||r.push({command:Q.setLayerZoomRange,args:[h,f.minzoom,f.maxzoom]}),p)Object.prototype.hasOwnProperty.call(p,y)&&"layout"!==y&&"paint"!==y&&"filter"!==y&&"metadata"!==y&&"minzoom"!==y&&"maxzoom"!==y&&(0===y.indexOf("paint.")?it(p[y],f[y],r,h,y.slice(6),Q.setPaintProperty):W(p[y],f[y])||r.push({command:Q.setLayerProperty,args:[h,y,f[y]]}));for(y in f)Object.prototype.hasOwnProperty.call(f,y)&&!Object.prototype.hasOwnProperty.call(p,y)&&"layout"!==y&&"paint"!==y&&"filter"!==y&&"metadata"!==y&&"minzoom"!==y&&"maxzoom"!==y&&(0===y.indexOf("paint.")?it(p[y],f[y],r,h,y.slice(6),Q.setPaintProperty):W(p[y],f[y])||r.push({command:Q.setLayerProperty,args:[h,y,f[y]]}));}else r.push({command:Q.removeLayer,args:[h]}),d=o[o.lastIndexOf(h)+1],r.push({command:Q.addLayer,args:[f,d]});}(a,e.layers,r);}catch(t){console.warn("Unable to compute style diff:",t),r=[{command:Q.setStyle,args:[e]}];}return r},t.aF=function(t){const e=[],r=t.id;return void 0===r&&e.push({message:`layers.${r}: missing required property "id"`}),void 0===t.render&&e.push({message:`layers.${r}: missing required method "render"`}),t.renderingMode&&"2d"!==t.renderingMode&&"3d"!==t.renderingMode&&e.push({message:`layers.${r}: property "renderingMode" must be either "2d" or "3d"`}),e},t.aG=function t(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return !1;for(let n=0;n<e.length;n++)if(!t(e[n],r[n]))return !1;return !0}if("object"==typeof e&&null!==e&&null!==r){if("object"!=typeof r)return !1;if(Object.keys(e).length!==Object.keys(r).length)return !1;for(const n in e)if(!t(e[n],r[n]))return !1;return !0}return e===r},t.aH=v,t.aI=b,t.aJ=ii,t.aK=function(t){return t({pluginStatus:ti,pluginURL:ei}),ii.on("pluginStateChange",t),t},t.aL=class extends Ra{constructor(t,e){super(t,e),this.current=0;}set(t){this.current!==t&&(this.current=t,this.gl.uniform1i(this.location,t));}},t.aM=qa,t.aN=class extends Ra{constructor(t,e){super(t,e),this.current=Za;}set(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(let e=1;e<16;e++)if(t[e]!==this.current[e]){this.current=t,this.gl.uniformMatrix4fv(this.location,!1,t);break}}},t.aO=ja,t.aP=class extends Ra{constructor(t,e){super(t,e),this.current=[0,0,0];}set(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]));}},t.aQ=class extends Ra{constructor(t,e){super(t,e),this.current=[0,0];}set(t){t[0]===this.current[0]&&t[1]===this.current[1]||(this.current=t,this.gl.uniform2f(this.location,t[0],t[1]));}},t.aR=Na,t.aS=function(t,e,r,n,i,a,s){var o=1/(e-r),l=1/(n-i),u=1/(a-s);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*u,t[11]=0,t[12]=(e+r)*o,t[13]=(i+n)*l,t[14]=(s+a)*u,t[15]=1,t},t.aT=Yt,t.aU=Ps,t.aV=class extends qi{},t.aW=Cl,t.aX=class extends Ni{},t.aY=function(t){return t<=1?1:Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))},t.aZ=js,t.a_=ha,t.aa=function(t){const e={};if(t.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,((t,r,n,i)=>{const a=n||i;return e[r]=!a||a.toLowerCase(),""})),e["max-age"]){const t=parseInt(e["max-age"],10);isNaN(t)?delete e["max-age"]:e["max-age"]=t;}return e},t.ab=function(t,e){const r=[];for(const n in t)n in e||r.push(n);return r},t.ac=function(t){if(null==z){const e=t.navigator?t.navigator.userAgent:null;z=!!t.safari||!(!e||!(/\b(iPad|iPhone|iPod)\b/.test(e)||e.match("Safari")&&!e.match("Chrome")));}return z},t.ad=y,t.ae=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[0],s=e[1],o=e[2],l=e[3],u=e[4],c=e[5],h=e[6],p=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=a*i+u*n,t[1]=s*i+c*n,t[2]=o*i+h*n,t[3]=l*i+p*n,t[4]=u*i-a*n,t[5]=c*i-s*n,t[6]=h*i-o*n,t[7]=p*i-l*n,t},t.af=function(t){var e=new zs(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.ag=Vs,t.ah=function(t,e){let r=0,n=0;if("constant"===t.kind)n=t.layoutSize;else if("source"!==t.kind){const{interpolationType:i,minZoom:a,maxZoom:s}=t,o=i?y(Ke.interpolationFactor(i,e,a,s),0,1):0;"camera"===t.kind?n=Ze.number(t.minSize,t.maxSize,o):r=o;}return {uSizeT:r,uSize:n}},t.aj=function(t,{uSize:e,uSizeT:r},{lowerSize:n,upperSize:i}){return "source"===t.kind?n/Cu:"composite"===t.kind?Ze.number(n/Cu,i/Cu,r):e},t.ak=$u,t.al=function(t,e,r,n){const i=e.y-t.y,s=e.x-t.x,o=n.y-r.y,l=n.x-r.x,u=o*s-l*i;if(0===u)return null;
vendor: 5,729 bytes, line 37
37const c=(l*(t.y-r.y)-o*(t.x-r.x))/u;return new a(t.x+c*s,t.y+c*i)},t.am=_c,t.an=us,t.ao=Ms,t.ap=Vl,t.ar=Vu,t.as=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],s=e[4],o=e[5],l=e[6],u=e[7],c=e[8],h=e[9],p=e[10],f=e[11],d=e[12],y=e[13],m=e[14],g=e[15],x=r*o-n*s,v=r*l-i*s,b=r*u-a*s,w=n*l-i*o,_=n*u-a*o,A=i*u-a*l,S=c*y-h*d,k=c*m-p*d,I=c*g-f*d,z=h*m-p*y,M=h*g-f*y,C=p*g-f*m,B=x*C-v*M+b*z+w*I-_*k+A*S;return B?(t[0]=(o*C-l*M+u*z)*(B=1/B),t[1]=(i*M-n*C-a*z)*B,t[2]=(y*A-m*_+g*w)*B,t[3]=(p*_-h*A-f*w)*B,t[4]=(l*I-s*C-u*k)*B,t[5]=(r*C-i*I+a*k)*B,t[6]=(m*b-d*A-g*v)*B,t[7]=(c*A-p*b+f*v)*B,t[8]=(s*M-o*I+u*S)*B,t[9]=(n*I-r*M-a*S)*B,t[10]=(d*_-y*b+g*x)*B,t[11]=(h*b-c*_-f*x)*B,t[12]=(o*k-s*z-l*S)*B,t[13]=(r*z-n*k+i*S)*B,t[14]=(y*v-d*w-m*x)*B,t[15]=(c*w-h*v+p*x)*B,t):null},t.at=Jc,t.au=Su,t.av=th,t.aw=function(){const t={},e=X.$version;for(const r in X.$root){const n=X.$root[r];if(n.required){let i=null;i="version"===r?e:"array"===n.type?[]:{},null!=i&&(t[r]=i);}}return t},t.ax=Q,t.ay=Un,t.az=D,t.b=function(t,e){const r=new Blob([new Uint8Array(t)],{type:"image/png"});createImageBitmap(r).then((t=>{e(null,t);})).catch((t=>{e(new Error(`Could not load image because of ${t.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`));}));},t.b0=Aa,t.b1=function(t,e){var r=t[0],n=t[1],i=t[2],a=t[3],s=t[4],o=t[5],l=t[6],u=t[7],c=t[8],h=t[9],p=t[10],f=t[11],d=t[12],y=t[13],m=t[14],g=t[15],x=e[0],v=e[1],b=e[2],w=e[3],_=e[4],A=e[5],S=e[6],k=e[7],I=e[8],z=e[9],M=e[10],C=e[11],B=e[12],P=e[13],V=e[14],E=e[15];return Math.abs(r-x)<=Is*Math.max(1,Math.abs(r),Math.abs(x))&&Math.abs(n-v)<=Is*Math.max(1,Math.abs(n),Math.abs(v))&&Math.abs(i-b)<=Is*Math.max(1,Math.abs(i),Math.abs(b))&&Math.abs(a-w)<=Is*Math.max(1,Math.abs(a),Math.abs(w))&&Math.abs(s-_)<=Is*Math.max(1,Math.abs(s),Math.abs(_))&&Math.abs(o-A)<=Is*Math.max(1,Math.abs(o),Math.abs(A))&&Math.abs(l-S)<=Is*Math.max(1,Math.abs(l),Math.abs(S))&&Math.abs(u-k)<=Is*Math.max(1,Math.abs(u),Math.abs(k))&&Math.abs(c-I)<=Is*Math.max(1,Math.abs(c),Math.abs(I))&&Math.abs(h-z)<=Is*Math.max(1,Math.abs(h),Math.abs(z))&&Math.abs(p-M)<=Is*Math.max(1,Math.abs(p),Math.abs(M))&&Math.abs(f-C)<=Is*Math.max(1,Math.abs(f),Math.abs(C))&&Math.abs(d-B)<=Is*Math.max(1,Math.abs(d),Math.abs(B))&&Math.abs(y-P)<=Is*Math.max(1,Math.abs(y),Math.abs(P))&&Math.abs(m-V)<=Is*Math.max(1,Math.abs(m),Math.abs(V))&&Math.abs(g-E)<=Is*Math.max(1,Math.abs(g),Math.abs(E))},t.b2=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},t.b3=function(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t[3]=e[3]*r[3],t},t.b4=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]},t.b5=m,t.b6=pc,t.b7=sc,t.b8=function(t,e,r,n,i){var a,s=1/Math.tan(e/2);return t[0]=s/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=s,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=i&&i!==1/0?(t[10]=(i+n)*(a=1/(n-i)),t[14]=2*i*n*a):(t[10]=-1,t[14]=-2*n),t},t.b9=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[4],s=e[5],o=e[6],l=e[7],u=e[8],c=e[9],h=e[10],p=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=a*i+u*n,t[5]=s*i+c*n,t[6]=o*i+h*n,t[7]=l*i+p*n,t[8]=u*i-a*n,t[9]=c*i-s*n,t[10]=h*i-o*n,t[11]=p*i-l*n,t},t.bA=n,t.bB=El,t.bC=$r,t.bD=oi,t.ba=f,t.bb=d,t.bc=function(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},t.bd=class extends Pi{},t.be=tc,t.bf=oc,t.bg=ph,t.bi=L,t.bj=function(t,e,r=!1){if(ti===Yn||ti===Hn||ti===Wn)throw new Error("setRTLTextPlugin cannot be called multiple times.");ei=T.resolveURL(t),ti=Yn,Qn=e,ni(),r||si();},t.bk=ai,t.bl=function(t,e){const r={};for(let n=0;n<t.length;n++){const i=e&&e[t[n].id]||Qr(t[n]);e&&(e[t[n].id]=i);let a=r[i];a||(a=r[i]=[]),a.push(t[n]);}const n=[];for(const t in r)n.push(r[t]);return n},t.bm=$n,t.bn=mc,t.bo=xc,t.bp=cu,t.bq=function(e){e.bucket.createArrays(),e.bucket.tilePixelRatio=rs/(512*e.bucket.overscaling),e.bucket.compareText={},e.bucket.iconsNeedLinear=!1;const r=e.bucket.layers[0],n=r.layout,i=r._unevaluatedLayout._values,a={layoutIconSize:i["icon-size"].possiblyEvaluate(new li(e.bucket.zoom+1),e.canonical),layoutTextSize:i["text-size"].possiblyEvaluate(new li(e.bucket.zoom+1),e.canonical),textMaxSize:i["text-size"].possiblyEvaluate(new li(18))};if("composite"===e.bucket.textSizeData.kind){const{minZoom:t,maxZoom:r}=e.bucket.textSizeData;a.compositeTextSizes=[i["text-size"].possiblyEvaluate(new li(t),e.canonical),i["text-size"].possiblyEvaluate(new li(r),e.canonical)];}if("composite"===e.bucket.iconSizeData.kind){const{minZoom:t,maxZoom:r}=e.bucket.iconSizeData;a.compositeIconSizes=[i["icon-size"].possiblyEvaluate(new li(t),e.canonical),i["icon-size"].possiblyEvaluate(new li(r),e.canonical)];}const s=n.get("text-line-height")*Vl,o="viewport"!==n.get("text-rotation-alignment")&&"point"!==n.get("symbol-placement"),l=n.get("text-keep-upright"),u=n.get("text-size");for(const i of e.bucket.features){const c=n.get("text-font").evaluate(i,{},e.canonical).join(","),h=u.evaluate(i,{},e.canonical),p=a.layoutTextSize.evaluate(i,{},e.canonical),f=a.layoutIconSize.evaluate(i,{},e.canonical),d={horizontal:{},vertical:void 0},y=i.text;let m,g=[0,0];if(y){const a=y.toString(),u=n.get("text-letter-spacing").evaluate(i,{},e.canonical)*Vl,f=jn(a)?u:0,m=n.get("text-anchor").evaluate(i,{},e.canonical),x=Gc(r,i,e.canonical);if(!x){const t=n.get("text-radial-offset").evaluate(i,{},e.canonical);g=t?Kc(m,[t*Vl,Zc]):n.get("text-offset").evaluate(i,{},e.canonical).map((t=>t*Vl));}
37let v=o?"center":n.get("text-justify").evaluate(i,{},e.canonical);const b=n.get("symbol-placement"),w="point"===b?n.get("text-max-width").evaluate(i,{},e.canonical)*Vl:0,_=()=>{e.bucket.allowVerticalPlacement&&qn(a)&&(d.vertical=yu(y,e.glyphMap,e.glyphPositions,e.imagePositions,c,w,s,m,"left",f,g,t.ai.vertical,!0,b,p,h));};if(!o&&x){const r=new Set;if("auto"===v)for(let t=0;t<x.values.length;t+=2)r.add(Jc(x.values[t]));else r.add(v);let n=!1;for(const i of r)if(!d.horizontal[i])if(n)d.horizontal[i]=d.horizontal[0];else {const r=yu(y,e.glyphMap,e.glyphPositions,e.imagePositions,c,w,s,"center",i,f,g,t.ai.horizontal,!1,b,p,h);r&&(d.horizontal[i]=r,n=1===r.positionedLines.length);}_();}else {"auto"===v&&(v=Jc(m));const r=yu(y,e.glyphMap,e.glyphPositions,e.imagePositions,c,w,s,m,v,f,g,t.ai.horizontal,!1,b,p,h);r&&(d.horizontal[v]=r),_(),qn(a)&&o&&l&&(d.vertical=yu(y,e.glyphMap,e.glyphPositions,e.imagePositions,c,w,s,m,v,f,g,t.ai.vertical,!1,b,p,h));}}let x=!1;if(i.icon&&i.icon.name){const t=e.imageMap[i.icon.name];t&&(m=Iu(e.imagePositions[i.icon.name],n.get("icon-offset").evaluate(i,{},e.canonical),n.get("icon-anchor").evaluate(i,{},e.canonical)),x=!!t.sdf,void 0===e.bucket.sdfIcons?e.bucket.sdfIcons=x:e.bucket.sdfIcons!==x&&A("Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer"),(t.pixelRatio!==e.bucket.pixelRatio||0!==n.get("icon-rotate").constantOr(1))&&(e.bucket.iconsNeedLinear=!0));}const v=Hc(d.horizontal)||d.vertical;e.bucket.iconsInText=!!v&&v.iconsInText,(v||m)&&Xc(e.bucket,i,d,m,e.imageMap,a,p,f,g,x,e.canonical);}e.showCollisionBoxes&&e.bucket.generateCollisionDebugBuffers();},t.br=gl,t.bs=Eo,t.bt=rl,t.bu=class{constructor(t){this._marks={start:[t.url,"start"].join("#"),end:[t.url,"end"].join("#"),measure:t.url.toString()},performance.mark(this._marks.start);}finish(){performance.mark(this._marks.end);let t=performance.getEntriesByName(this._marks.measure);return 0===t.length&&(performance.measure(this._marks.measure,this._marks.start,this._marks.end),t=performance.getEntriesByName(this._marks.measure),performance.clearMarks(this._marks.start),performance.clearMarks(this._marks.end),performance.clearMeasures(this._marks.measure)),t}},t.bv=eu,t.bw=Ro,t.bx=function(t,r,n,i,a){return e(this,void 0,void 0,(function*(){if(p())try{return yield B(t,r,n,i,a)}catch(t){}return function(t,e,r,n,i){const a=t.width,s=t.height;P&&V||(P=new OffscreenCanvas(a,s),V=P.getContext("2d",{willReadFrequently:!0})),P.width=a,P.height=s,V.drawImage(t,0,0,a,s);const o=V.getImageData(e,r,n,i);return V.clearRect(0,0,a,s),o.data}(t,r,n,i,a)}))},t.by=yc,t.bz=r,t.c=$,t.d=function(t,e){const r=new Image;r.onload=()=>{e(null,r),URL.revokeObjectURL(r.src),r.onload=null,window.requestAnimationFrame((()=>{r.src=C;}));},r.onerror=()=>e(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));const n=new Blob([new Uint8Array(t)],{type:"image/png"});r.src=t.byteLength?URL.createObjectURL(n):C;},t.e=g,t.f=function(t,e){return R(g(t,{type:"json"}),e)},t.g=O,t.h=T,t.i=I,t.j=G,t.k=K,t.l=q,t.m=R,t.n=function(t){return new eu(t).readFields(nu,[])},t.o=function(t,e,r){if(!t.length)return r(null,[]);let n=t.length;const i=new Array(t.length);let a=null;t.forEach(((t,s)=>{e(t,((t,e)=>{t&&(a=t),i[s]=e,0==--n&&r(a,i);}));}));},t.p=ou,t.q=Rs,t.r=_i,t.s=j,t.t=Bn,t.u=Rn,t.v=X,t.w=A,t.x=En,t.y=Cn,t.z=function([t,e,r]){return e+=90,e*=Math.PI/180,r*=Math.PI/180,{x:t*Math.cos(e)*Math.sin(r),y:t*Math.sin(e)*Math.sin(r),z:t*Math.cos(r)}};})); 38 39define(["./shared"],(function(e){"use strict";class t{constructor(e){this.keyCache={},e&&this.replace(e);}replace(e){this._layerConfigs={},this._layers={},this.update(e,[]);}update(t,i){for(const i of t){this._layerConfigs[i.id]=i;const t=this._layers[i.id]=e.aC(i);t._featureFilter=e.a6(t.filter),this.keyCache[i.id]&&delete this.keyCache[i.id];}for(const e of i)delete this.keyCache[e],delete this._layerConfigs[e],delete this._layers[e];this.familiesBySource={};const o=e.bl(Object.values(this._layerConfigs),this.keyCache);for(const e of o){const t=e.map((e=>this._layers[e.id])),i=t[0];if("none"===i.visibility)continue;const o=i.source||"";let r=this.familiesBySource[o];r||(r=this.familiesBySource[o]={});const s=i.sourceLayer||"_geojsonTileLayer";let n=r[s];
39n||(n=r[s]=[]),n.push(t);}}}class i{constructor(t){const i={},o=[];for(const e in t){const r=t[e],s=i[e]={};for(const e in r){const t=r[+e];if(!t||0===t.bitmap.width||0===t.bitmap.height)continue;const i={x:0,y:0,w:t.bitmap.width+2,h:t.bitmap.height+2};o.push(i),s[e]={rect:i,metrics:t.metrics};}}const{w:r,h:s}=e.p(o),n=new e.q({width:r||1,height:s||1});for(const o in t){const r=t[o];for(const t in r){const s=r[+t];if(!s||0===s.bitmap.width||0===s.bitmap.height)continue;const a=i[o][t].rect;e.q.copy(s.bitmap,n,{x:0,y:0},{x:a.x+1,y:a.y+1},s.bitmap);}}this.image=n,this.positions=i;}}e.bm("GlyphAtlas",i);class o{constructor(t){this.tileID=new e.O(t.tileID.overscaledZ,t.tileID.wrap,t.tileID.canonical.z,t.tileID.canonical.x,t.tileID.canonical.y),this.uid=t.uid,this.zoom=t.zoom,this.pixelRatio=t.pixelRatio,this.tileSize=t.tileSize,this.source=t.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=t.showCollisionBoxes,this.collectResourceTiming=!!t.collectResourceTiming,this.returnDependencies=!!t.returnDependencies,this.promoteId=t.promoteId,this.inFlightDependencies=[],this.dependencySentinel=-1;}parse(t,o,s,n,a){this.status="parsing",this.data=t,this.collisionBoxArray=new e.a3;const l=new e.bn(Object.keys(t.layers).sort()),c=new e.bo(this.tileID,this.promoteId);c.bucketLayerIDs=[];const h={},u={featureIndex:c,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:s},d=o.familiesBySource[this.source];for(const i in d){const o=t.layers[i];if(!o)continue;1===o.version&&e.w(`Vector tile source "${this.source}" layer "${i}" does not use vector tile spec v2 and therefore may have some rendering errors.`);const n=l.encode(i),a=[];for(let e=0;e<o.length;e++){const t=o.feature(e),r=c.getId(t,i);a.push({feature:t,id:r,index:e,sourceLayerIndex:n});}for(const t of d[i]){const i=t[0];i.source!==this.source&&e.w(`layer.source = ${i.source} does not equal this.source = ${this.source}`),i.minzoom&&this.zoom<Math.floor(i.minzoom)||i.maxzoom&&this.zoom>=i.maxzoom||"none"!==i.visibility&&(r(t,this.zoom,s),(h[i.id]=i.createBucket({index:c.bucketLayerIDs.length,layers:t,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:n,sourceID:this.source})).populate(a,u,this.tileID.canonical),c.bucketLayerIDs.push(t.map((e=>e.id))));}}let p,f,g,m;const y=e.aH(u.glyphDependencies,(e=>Object.keys(e).map(Number)));this.inFlightDependencies.forEach((e=>null==e?void 0:e.cancel())),this.inFlightDependencies=[];const v=++this.dependencySentinel;Object.keys(y).length?this.inFlightDependencies.push(n.send("getGlyphs",{uid:this.uid,stacks:y,source:this.source,tileID:this.tileID,type:"glyphs"},((e,t)=>{v===this.dependencySentinel&&(p||(p=e,f=t,b.call(this)));}))):f={};const w=Object.keys(u.iconDependencies);w.length?this.inFlightDependencies.push(n.send("getImages",{icons:w,source:this.source,tileID:this.tileID,type:"icons"},((e,t)=>{v===this.dependencySentinel&&(p||(p=e,g=t,b.call(this)));}))):g={};const x=Object.keys(u.patternDependencies);function b(){if(p)return a(p);if(f&&g&&m){const t=new i(f),o=new e.bp(g,m);for(const i in h){const n=h[i];n instanceof e.a4?(r(n.layers,this.zoom,s),e.bq({bucket:n,glyphMap:f,glyphPositions:t.positions,imageMap:g,imagePositions:o.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):n.hasPattern&&(n instanceof e.br||n instanceof e.bs||n instanceof e.bt)&&(r(n.layers,this.zoom,s),n.addFeatures(u,this.tileID.canonical,o.patternPositions));}this.status="done",a(null,{buckets:Object.values(h).filter((e=>!e.isEmpty())),featureIndex:c,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:t.image,imageAtlas:o,glyphMap:this.returnDependencies?f:null,iconMap:this.returnDependencies?g:null,glyphPositions:this.returnDependencies?t.positions:null});}}x.length?this.inFlightDependencies.push(n.send("getImages",{icons:x,source:this.source,tileID:this.tileID,type:"patterns"},((e,t)=>{v===this.dependencySentinel&&(p||(p=e,m=t,b.call(this)));}))):m={},b.call(this);}}function r(t,i,o){const r=new e.a8(i);for(const e of t)e.recalculate(r,o);}function s(t,i){const o=e.l(t.request,((o,r,s,n)=>{if(o)i(o);else if(r)try{const t=new e.bw.VectorTile(new e.bv(r));i(null,{vectorTile:t,rawData:r,cacheControl:s,expires:n});}catch(e){const o=new Uint8Array(r);let s=`Unable to parse the tile at ${t.request.url}, `;s+=31===o[0]&&139===o[1]?"please make sure the data is not gzipped and that you have configured the relevant header in the server":`got error: ${e.messge}`,i(new Error(s));}}));return ()=>{o.cancel(),i();}}class n{constructor(e,t,i,o){this.actor=e,this.layerIndex=t,this.availableImages=i,this.loadVectorData=o||s,this.fetching={},this.loading={},this.loaded={};}loadTile(t,i){const r=t.uid;this.loading||(this.loading={});const s=!!(t&&t.request&&t.request.collectResourceTiming)&&new e.bu(t.request),n=this.loading[r]=new o(t);n.abort=this.loadVectorData(t,((t,o)=>{if(delete this.loading[r],t||!o)return n.status="done",this.loaded[r]=n,i(t);const a=o.rawData,l={};o.expires&&(l.expires=o.expires),o.cacheControl&&(l.cacheControl=o.c
39acheControl);const c={};if(s){const e=s.finish();e&&(c.resourceTiming=JSON.parse(JSON.stringify(e)));}n.vectorTile=o.vectorTile,n.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,((t,o)=>{if(delete this.fetching[r],t||!o)return i(t);i(null,e.e({rawTileData:a.slice(0)},o,l,c));})),this.loaded=this.loaded||{},this.loaded[r]=n,this.fetching[r]={rawTileData:a,cacheControl:l,resourceTiming:c};}));}reloadTile(t,i){const o=this.loaded,r=t.uid;if(o&&o[r]){const s=o[r];s.showCollisionBoxes=t.showCollisionBoxes,"parsing"===s.status?s.parse(s.vectorTile,this.layerIndex,this.availableImages,this.actor,((t,o)=>{if(t||!o)return i(t,o);let s;if(this.fetching[r]){const{rawTileData:t,cacheControl:i,resourceTiming:n}=this.fetching[r];delete this.fetching[r],s=e.e({rawTileData:t.slice(0)},o,i,n);}else s=o;i(null,s);})):"done"===s.status&&(s.vectorTile?s.parse(s.vectorTile,this.layerIndex,this.availableImages,this.actor,i):i());}}abortTile(e,t){const i=this.loading,o=e.uid;i&&i[o]&&i[o].abort&&(i[o].abort(),delete i[o]),t();}removeTile(e,t){const i=this.loaded,o=e.uid;i&&i[o]&&delete i[o],t();}}class a{constructor(){this.loaded={};}loadTile(t,i){return e._(this,void 0,void 0,(function*(){const{uid:o,encoding:r,rawImageData:s,redFactor:n,greenFactor:a,blueFactor:l,baseShift:c}=t,h=s.width+2,u=s.height+2,d=e.a(s)?new e.R({width:h,height:u},yield e.bx(s,-1,-1,h,u)):s,p=new e.by(o,d,r,n,a,l,c);this.loaded=this.loaded||{},this.loaded[o]=p,i(null,p);}))}removeTile(e){const t=this.loaded,i=e.uid;t&&t[i]&&delete t[i];}}function l(e,t){if(0!==e.length){c(e[0],t);for(var i=1;i<e.length;i++)c(e[i],!t);}}function c(e,t){for(var i=0,o=0,r=0,s=e.length,n=s-1;r<s;n=r++){var a=(e[r][0]-e[n][0])*(e[n][1]+e[r][1]),l=i+a;o+=Math.abs(i)>=Math.abs(a)?i-l+a:a-l+i,i=l;}i+o>=0!=!!t&&e.reverse();}var h=e.bz((function e(t,i){var o,r=t&&t.type;if("FeatureCollection"===r)for(o=0;o<t.features.length;o++)e(t.features[o],i);else if("GeometryCollection"===r)for(o=0;o<t.geometries.length;o++)e(t.geometries[o],i);else if("Feature"===r)e(t.geometry,i);else if("Polygon"===r)l(t.coordinates,i);else if("MultiPolygon"===r)for(o=0;o<t.coordinates.length;o++)l(t.coordinates[o],i);return t}));const u=e.bw.VectorTileFeature.prototype.toGeoJSON;var d={exports:{}},p=e.bA,f=e.bw.VectorTileFeature,g=m;function m(e,t){this.options=t||{},this.features=e,this.length=e.length;}function y(e,t){this.id="number"==typeof e.id?e.id:void 0,this.type=e.type,this.rawGeometry=1===e.type?[e.geometry]:e.geometry,this.properties=e.tags,this.extent=t||4096;}m.prototype.feature=function(e){return new y(this.features[e],this.options.extent)},y.prototype.loadGeometry=function(){var e=this.rawGeometry;this.geometry=[];for(var t=0;t<e.length;t++){for(var i=e[t],o=[],r=0;r<i.length;r++)o.push(new p(i[r][0],i[r][1]));this.geometry.push(o);}return this.geometry},y.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var e=this.geometry,t=1/0,i=-1/0,o=1/0,r=-1/0,s=0;s<e.length;s++)for(var n=e[s],a=0;a<n.length;a++){var l=n[a];t=Math.min(t,l.x),i=Math.max(i,l.x),o=Math.min(o,l.y),r=Math.max(r,l.y);}return [t,o,i,r]},y.prototype.toGeoJSON=f.prototype.toGeoJSON;var v=e.bB,w=g;function x(e){var t=new v;return function(e,t){for(var i in e.layers)t.writeMessage(3,b,e.layers[i]);}(e,t),t.finish()}function b(e,t){var i;t.writeVarintField(15,e.version||1),t.writeStringField(1,e.name||""),t.writeVarintField(5,e.extent||4096);var o={keys:[],values:[],keycache:{},valuecache:{}};for(i=0;i<e.length;i++)o.feature=e.feature(i),t.writeMessage(2,S,o);var r=o.keys;for(i=0;i<r.length;i++)t.writeStringField(3,r[i]);var s=o.values;for(i=0;i<s.length;i++)t.writeMessage(4,_,s[i]);}function S(e,t){var i=e.feature;void 0!==i.id&&t.writeVarintField(1,i.id),t.writeMessage(2,M,e),t.writeVarintField(3,i.type),t.writeMessage(4,T,i);}function M(e,t){var i=e.feature,o=e.keys,r=e.values,s=e.keycache,n=e.valuecache;for(var a in i.properties){var l=i.properties[a],c=s[a];if(null!==l){void 0===c&&(o.push(a),s[a]=c=o.length-1),t.writeVarint(c);var h=typeof l;"string"!==h&&"boolean"!==h&&"number"!==h&&(l=JSON.stringify(l));var u=h+":"+l,d=n[u];void 0===d&&(r.push(l),n[u]=d=r.length-1),t.writeVarint(d);}}}function I(e,t){return (t<<3)+(7&e)}function P(e){return e<<1^e>>31}function T(e,t){for(var i=e.loadGeometry(),o=e.type,r=0,s=0,n=i.length,a=0;a<n;a++){var l=i[a],c=1;1===o&&(c=l.length),t.writeVarint(I(1,c));for(var h=3===o?l.length-1:l.length,u=0;u<h;u++){1===u&&1!==o&&t.writeVarint(I(2,h-1));var d=l[u].x-r,p=l[u].y-s;t.writeVarint(P(d)),t.writeVarint(P(p)),r+=d,s+=p;}3===o&&t.writeVarint(I(7,1));}}function _(e,t){var i=typeof e;"string"===i?t.writeStringField(1,e):"boolean"===i?t.writeBooleanField(7,e):"number"===i&&(e%1!=0?t.writeDoubleField(3,e):e<0?t.writeSVarintField(6,e):t.writeVarintField(5,e));}d.exports=x,d.exports.fromVectorTileJs=x,d.exports.fromGeojsonVt=function(e,t){t=t||{};var i={};for(var o in e)i[o]=new w(e[o].features,t),i[o].name=o,i[o].version=t.version,i[o].extent=t.extent;return x({layers:i})},d.exports.GeoJSONWrapper=w;
vendor: 4,920 bytes, line 39
39var k=e.bz(d.exports);const D={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:e=>e},O=Math.fround||(C=new Float32Array(1),e=>(C[0]=+e,C[0]));var C;const L=3,F=5,z=6;class N{constructor(e){this.options=Object.assign(Object.create(D),e),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[];}load(e){const{log:t,minZoom:i,maxZoom:o}=this.options;t&&console.time("total time");const r=`prepare ${e.length} points`;t&&console.time(r),this.points=e;const s=[];for(let t=0;t<e.length;t++){const i=e[t];if(!i.geometry)continue;const[o,r]=i.geometry.coordinates,n=O(Z(o)),a=O(G(r));s.push(n,a,1/0,t,-1,1),this.options.reduce&&s.push(0);}let n=this.trees[o+1]=this._createTree(s);t&&console.timeEnd(r);for(let e=o;e>=i;e--){const i=+Date.now();n=this.trees[e]=this._createTree(this._cluster(n,e)),t&&console.log("z%d: %d clusters in %dms",e,n.numItems,+Date.now()-i);}return t&&console.timeEnd("total time"),this}getClusters(e,t){let i=((e[0]+180)%360+360)%360-180;const o=Math.max(-90,Math.min(90,e[1]));let r=180===e[2]?180:((e[2]+180)%360+360)%360-180;const s=Math.max(-90,Math.min(90,e[3]));if(e[2]-e[0]>=360)i=-180,r=180;else if(i>r){const e=this.getClusters([i,o,180,s],t),n=this.getClusters([-180,o,r,s],t);return e.concat(n)}const n=this.trees[this._limitZoom(t)],a=n.range(Z(i),G(s),Z(r),G(o)),l=n.data,c=[];for(const e of a){const t=this.stride*e;c.push(l[t+F]>1?E(l,t,this.clusterProps):this.points[l[t+L]]);}return c}getChildren(e){const t=this._getOriginId(e),i=this._getOriginZoom(e),o="No cluster with the specified id.",r=this.trees[i];if(!r)throw new Error(o);const s=r.data;if(t*this.stride>=s.length)throw new Error(o);const n=this.options.radius/(this.options.extent*Math.pow(2,i-1)),a=r.within(s[t*this.stride],s[t*this.stride+1],n),l=[];for(const t of a){const i=t*this.stride;s[i+4]===e&&l.push(s[i+F]>1?E(s,i,this.clusterProps):this.points[s[i+L]]);}if(0===l.length)throw new Error(o);return l}getLeaves(e,t,i){const o=[];return this._appendLeaves(o,e,t=t||10,i=i||0,0),o}getTile(e,t,i){const o=this.trees[this._limitZoom(e)],r=Math.pow(2,e),{extent:s,radius:n}=this.options,a=n/s,l=(i-a)/r,c=(i+1+a)/r,h={features:[]};return this._addTileFeatures(o.range((t-a)/r,l,(t+1+a)/r,c),o.data,t,i,r,h),0===t&&this._addTileFeatures(o.range(1-a/r,l,1,c),o.data,r,i,r,h),t===r-1&&this._addTileFeatures(o.range(0,l,a/r,c),o.data,-1,i,r,h),h.features.length?h:null}getClusterExpansionZoom(e){let t=this._getOriginZoom(e)-1;for(;t<=this.options.maxZoom;){const i=this.getChildren(e);if(t++,1!==i.length)break;e=i[0].properties.cluster_id;}return t}_appendLeaves(e,t,i,o,r){const s=this.getChildren(t);for(const t of s){const s=t.properties;if(s&&s.cluster?r+s.point_count<=o?r+=s.point_count:r=this._appendLeaves(e,s.cluster_id,i,o,r):r<o?r++:e.push(t),e.length===i)break}return r}_createTree(t){const i=new e.av(t.length/this.stride|0,this.options.nodeSize,Float32Array);for(let e=0;e<t.length;e+=this.stride)i.add(t[e],t[e+1]);return i.finish(),i.data=t,i}_addTileFeatures(e,t,i,o,r,s){for(const n of e){const e=n*this.stride,a=t[e+F]>1;let l,c,h;if(a)l=j(t,e,this.clusterProps),c=t[e],h=t[e+1];else {const i=this.points[t[e+L]];l=i.properties;const[o,r]=i.geometry.coordinates;c=Z(o),h=G(r);}const u={type:1,geometry:[[Math.round(this.options.extent*(c*r-i)),Math.round(this.options.extent*(h*r-o))]],tags:l};let d;d=a||this.options.generateId?t[e+L]:this.points[t[e+L]].id,void 0!==d&&(u.id=d),s.features.push(u);}}_limitZoom(e){return Math.max(this.options.minZoom,Math.min(Math.floor(+e),this.options.maxZoom+1))}_cluster(e,t){const{radius:i,extent:o,reduce:r,minPoints:s}=this.options,n=i/(o*Math.pow(2,t)),a=e.data,l=[],c=this.stride;for(let i=0;i<a.length;i+=c){if(a[i+2]<=t)continue;a[i+2]=t;const o=a[i],h=a[i+1],u=e.within(a[i],a[i+1],n),d=a[i+F];let p=d;for(const e of u){const i=e*c;a[i+2]>t&&(p+=a[i+F]);}if(p>d&&p>=s){let e,s=o*d,n=h*d,f=-1;const g=((i/c|0)<<5)+(t+1)+this.points.length;for(const o of u){const l=o*c;if(a[l+2]<=t)continue;a[l+2]=t;const h=a[l+F];s+=a[l]*h,n+=a[l+1]*h,a[l+4]=g,r&&(e||(e=this._map(a,i,!0),f=this.clusterProps.length,this.clusterProps.push(e)),r(e,this._map(a,l)));}a[i+4]=g,l.push(s/p,n/p,1/0,g,-1,p),r&&l.push(f);}else {for(let e=0;e<c;e++)l.push(a[i+e]);if(p>1)for(const e of u){const i=e*c;if(!(a[i+2]<=t)){a[i+2]=t;for(let e=0;e<c;e++)l.push(a[i+e]);}}}}return l}_getOriginId(e){return e-this.points.length>>5}_getOriginZoom(e){return (e-this.points.length)%32}_map(e,t,i){if(e[t+F]>1){const o=this.clusterProps[e[t+z]];return i?Object.assign({},o):o}const o=this.points[e[t+L]].properties,r=this.options.map(o);return i&&r===o?Object.assign({},r):r}}function E(e,t,i){return {type:"Feature",id:e[t+L],properties:j(e,t,i),geometry:{type:"Point",coordinates:[(o=e[t],360*(o-.5)),J(e[t+1])]}};var o;}function j(e,t,i){const o=e[t+F],r=o>=1e4?`${Math.round(o/1e3)}
39k`:o>=1e3?Math.round(o/100)/10+"k":o,s=e[t+z],n=-1===s?{}:Object.assign({},i[s]);return Object.assign(n,{cluster:!0,cluster_id:e[t+L],point_count:o,point_count_abbreviated:r})}function Z(e){return e/360+.5}function G(e){const t=Math.sin(e*Math.PI/180),i=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return i<0?0:i>1?1:i}function J(e){const t=(180-360*e)*Math.PI/180;return 360*Math.atan(Math.exp(t))/Math.PI-90}function Y(e,t,i,o){for(var r,s=o,n=i-t>>1,a=i-t,l=e[t],c=e[t+1],h=e[i],u=e[i+1],d=t+3;d<i;d+=3){var p=A(e[d],e[d+1],l,c,h,u);if(p>s)r=d,s=p;else if(p===s){var f=Math.abs(d-n);f<a&&(r=d,a=f);}}s>o&&(r-t>3&&Y(e,t,r,o),e[r+2]=s,i-r>3&&Y(e,r,i,o));}function A(e,t,i,o,r,s){var n=r-i,a=s-o;if(0!==n||0!==a){var l=((e-i)*n+(t-o)*a)/(n*n+a*a);l>1?(i=r,o=s):l>0&&(i+=n*l,o+=a*l);}return (n=e-i)*n+(a=t-o)*a}function V(e,t,i,o){var r={id:void 0===e?null:e,type:t,geometry:i,tags:o,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(e){var t=e.geometry,i=e.type;if("Point"===i||"MultiPoint"===i||"LineString"===i)B(e,t);else if("Polygon"===i||"MultiLineString"===i)for(var o=0;o<t.length;o++)B(e,t[o]);else if("MultiPolygon"===i)for(o=0;o<t.length;o++)for(var r=0;r<t[o].length;r++)B(e,t[o][r]);}(r),r}function B(e,t){for(var i=0;i<t.length;i+=3)e.minX=Math.min(e.minX,t[i]),e.minY=Math.min(e.minY,t[i+1]),e.maxX=Math.max(e.maxX,t[i]),e.maxY=Math.max(e.maxY,t[i+1]);}function X(e,t,i,o){if(t.geometry){var r=t.geometry.coordinates,s=t.geometry.type,n=Math.pow(i.tolerance/((1<<i.maxZoom)*i.extent),2),a=[],l=t.id;if(i.promoteId?l=t.properties[i.promoteId]:i.generateId&&(l=o||0),"Point"===s)q(r,a);else if("MultiPoint"===s)for(var c=0;c<r.length;c++)q(r[c],a);else if("LineString"===s)R(r,a,n,!1);else if("MultiLineString"===s){if(i.lineMetrics){for(c=0;c<r.length;c++)R(r[c],a=[],n,!1),e.push(V(l,"LineString",a,t.properties));return}W(r,a,n,!1);}else if("Polygon"===s)W(r,a,n,!0);else {if("MultiPolygon"!==s){if("GeometryCollection"===s){for(c=0;c<t.geometry.geometries.length;c++)X(e,{id:l,geometry:t.geometry.geometries[c],properties:t.properties},i,o);return}throw new Error("Input data is not a valid GeoJSON object.")}for(c=0;c<r.length;c++){var h=[];W(r[c],h,n,!0),a.push(h);}}e.push(V(l,s,a,t.properties));}}function q(e,t){t.push($(e[0])),t.push(U(e[1])),t.push(0);}function R(e,t,i,o){for(var r,s,n=0,a=0;a<e.length;a++){var l=$(e[a][0]),c=U(e[a][1]);t.push(l),t.push(c),t.push(0),a>0&&(n+=o?(r*c-l*s)/2:Math.sqrt(Math.pow(l-r,2)+Math.pow(c-s,2))),r=l,s=c;}var h=t.length-3;t[2]=1,Y(t,0,h,i),t[h+2]=1,t.size=Math.abs(n),t.start=0,t.end=t.size;}function W(e,t,i,o){for(var r=0;r<e.length;r++){var s=[];R(e[r],s,i,o),t.push(s);}}function $(e){return e/360+.5}function U(e){var t=Math.sin(e*Math.PI/180),i=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return i<0?0:i>1?1:i}function H(e,t,i,o,r,s,n,a){if(o/=t,s>=(i/=t)&&n<o)return e;if(n<i||s>=o)return null;for(var l=[],c=0;c<e.length;c++){var h=e[c],u=h.geometry,d=h.type,p=0===r?h.minX:h.minY,f=0===r?h.maxX:h.maxY;if(p>=i&&f<o)l.push(h);else if(!(f<i||p>=o)){var g=[];if("Point"===d||"MultiPoint"===d)K(u,g,i,o,r);else if("LineString"===d)Q(u,g,i,o,r,!1,a.lineMetrics);else if("MultiLineString"===d)te(u,g,i,o,r,!1);else if("Polygon"===d)te(u,g,i,o,r,!0);else if("MultiPolygon"===d)for(var m=0;m<u.length;m++){var y=[];te(u[m],y,i,o,r,!0),y.length&&g.push(y);}if(g.length){if(a.lineMetrics&&"LineString"===d){for(m=0;m<g.length;m++)l.push(V(h.id,d,g[m],h.tags));continue}"LineString"!==d&&"MultiLineString"!==d||(1===g.length?(d="LineString",g=g[0]):d="MultiLineString"),"Point"!==d&&"MultiPoint"!==d||(d=3===g.length?"Point":"MultiPoint"),l.push(V(h.id,d,g,h.tags));}}}return l.length?l:null}function K(e,t,i,o,r){for(var s=0;s<e.length;s+=3){var n=e[s+r];n>=i&&n<=o&&(t.push(e[s]),t.push(e[s+1]),t.push(e[s+2]));}}function Q(e,t,i,o,r,s,n){for(var a,l,c=ee(e),h=0===r?oe:re,u=e.start,d=0;d<e.length-3;d+=3){var p=e[d],f=e[d+1],g=e[d+2],m=e[d+3],y=e[d+4],v=0===r?p:f,w=0===r?m:y,x=!1;n&&(a=Math.sqrt(Math.pow(p-m,2)+Math.pow(f-y,2))),v<i?w>i&&(l=h(c,p,f,m,y,i),n&&(c.start=u+a*l)):v>o?w<o&&(l=h(c,p,f,m,y,o),n&&(c.start=u+a*l)):ie(c,p,f,g),w<i&&v>=i&&(l=h(c,p,f,m,y,i),x=!0),w>
vendor: 4,213 bytes, line 39
39o&&v<=o&&(l=h(c,p,f,m,y,o),x=!0),!s&&x&&(n&&(c.end=u+a*l),t.push(c),c=ee(e)),n&&(u+=a);}var b=e.length-3;p=e[b],f=e[b+1],g=e[b+2],(v=0===r?p:f)>=i&&v<=o&&ie(c,p,f,g),b=c.length-3,s&&b>=3&&(c[b]!==c[0]||c[b+1]!==c[1])&&ie(c,c[0],c[1],c[2]),c.length&&t.push(c);}function ee(e){var t=[];return t.size=e.size,t.start=e.start,t.end=e.end,t}function te(e,t,i,o,r,s){for(var n=0;n<e.length;n++)Q(e[n],t,i,o,r,s,!1);}function ie(e,t,i,o){e.push(t),e.push(i),e.push(o);}function oe(e,t,i,o,r,s){var n=(s-t)/(o-t);return e.push(s),e.push(i+(r-i)*n),e.push(1),n}function re(e,t,i,o,r,s){var n=(s-i)/(r-i);return e.push(t+(o-t)*n),e.push(s),e.push(1),n}function se(e,t){for(var i=[],o=0;o<e.length;o++){var r,s=e[o],n=s.type;if("Point"===n||"MultiPoint"===n||"LineString"===n)r=ne(s.geometry,t);else if("MultiLineString"===n||"Polygon"===n){r=[];for(var a=0;a<s.geometry.length;a++)r.push(ne(s.geometry[a],t));}else if("MultiPolygon"===n)for(r=[],a=0;a<s.geometry.length;a++){for(var l=[],c=0;c<s.geometry[a].length;c++)l.push(ne(s.geometry[a][c],t));r.push(l);}i.push(V(s.id,n,r,s.tags));}return i}function ne(e,t){var i=[];i.size=e.size,void 0!==e.start&&(i.start=e.start,i.end=e.end);for(var o=0;o<e.length;o+=3)i.push(e[o]+t,e[o+1],e[o+2]);return i}function ae(e,t){if(e.transformed)return e;var i,o,r,s=1<<e.z,n=e.x,a=e.y;for(i=0;i<e.features.length;i++){var l=e.features[i],c=l.geometry,h=l.type;if(l.geometry=[],1===h)for(o=0;o<c.length;o+=2)l.geometry.push(le(c[o],c[o+1],t,s,n,a));else for(o=0;o<c.length;o++){var u=[];for(r=0;r<c[o].length;r+=2)u.push(le(c[o][r],c[o][r+1],t,s,n,a));l.geometry.push(u);}}return e.transformed=!0,e}function le(e,t,i,o,r,s){return [Math.round(i*(e*o-r)),Math.round(i*(t*o-s))]}function ce(e,t,i,o,r){for(var s=t===r.maxZoom?0:r.tolerance/((1<<t)*r.extent),n={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:i,y:o,z:t,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0},a=0;a<e.length;a++){n.numFeatures++,he(n,e[a],s,r);var l=e[a].minX,c=e[a].minY,h=e[a].maxX,u=e[a].maxY;l<n.minX&&(n.minX=l),c<n.minY&&(n.minY=c),h>n.maxX&&(n.maxX=h),u>n.maxY&&(n.maxY=u);}return n}function he(e,t,i,o){var r=t.geometry,s=t.type,n=[];if("Point"===s||"MultiPoint"===s)for(var a=0;a<r.length;a+=3)n.push(r[a]),n.push(r[a+1]),e.numPoints++,e.numSimplified++;else if("LineString"===s)ue(n,r,e,i,!1,!1);else if("MultiLineString"===s||"Polygon"===s)for(a=0;a<r.length;a++)ue(n,r[a],e,i,"Polygon"===s,0===a);else if("MultiPolygon"===s)for(var l=0;l<r.length;l++){var c=r[l];for(a=0;a<c.length;a++)ue(n,c[a],e,i,!0,0===a);}if(n.length){var h=t.tags||null;if("LineString"===s&&o.lineMetrics){for(var u in h={},t.tags)h[u]=t.tags[u];h.mapbox_clip_start=r.start/r.size,h.mapbox_clip_end=r.end/r.size;}var d={geometry:n,type:"Polygon"===s||"MultiPolygon"===s?3:"LineString"===s||"MultiLineString"===s?2:1,tags:h};null!==t.id&&(d.id=t.id),e.features.push(d);}}function ue(e,t,i,o,r,s){var n=o*o;if(o>0&&t.size<(r?n:o))i.numPoints+=t.length/3;else {for(var a=[],l=0;l<t.length;l+=3)(0===o||t[l+2]>n)&&(i.numSimplified++,a.push(t[l]),a.push(t[l+1])),i.numPoints++;r&&function(e,t){for(var i=0,o=0,r=e.length,s=r-2;o<r;s=o,o+=2)i+=(e[o]-e[s])*(e[o+1]+e[s+1]);if(i>0===t)for(o=0,r=e.length;o<r/2;o+=2){var n=e[o],a=e[o+1];e[o]=e[r-2-o],e[o+1]=e[r-1-o],e[r-2-o]=n,e[r-1-o]=a;}}(a,s),e.push(a);}}function de(e,t){var i=(t=this.options=function(e,t){for(var i in t)e[i]=t[i];return e}(Object.create(this.options),t)).debug;if(i&&console.time("preprocess data"),t.maxZoom<0||t.maxZoom>24)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 o=function(e,t){var i=[];if("FeatureCollection"===e.type)for(var o=0;o<e.features.length;o++)X(i,e.features[o],t,o);else X(i,"Feature"===e.type?e:{geometry:e},t);return i}(e,t);this.tiles={},this.tileCoords=[],i&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",t.indexMaxZoom,t.indexMaxPoints),console.time("generate tiles"),this.stats={},this.total=0),o=function(e,t){var i=t.buffer/t.extent,o=e,r=H(e,1,-1-i,i,0,-1,2,t),s=H(e,1,1-i,2+i,0,-1,2,t);return (r||s)&&(o=H(e,1,-i,1+i,0,-1,2,t)||[],r&&(o=se(r,1).concat(o)),s&&(o=o.c
39oncat(se(s,-1)))),o}(o,t),o.length&&this.splitTile(o,0,0,0),i&&(o.length&&console.log("features: %d, points: %d",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd("generate tiles"),console.log("tiles generated:",this.total,JSON.stringify(this.stats)));}function pe(e,t,i){return 32*((1<<e)*i+t)+e}function fe(e,t){return t?e.properties[t]:e.id}function ge(e,t){if(null==e)return !0;if("Feature"===e.type)return null!=fe(e,t);if("FeatureCollection"===e.type){const i=new Set;for(const o of e.features){const e=fe(o,t);if(null==e)return !1;if(i.has(e))return !1;i.add(e);}return !0}return !1}function me(e,t){const i=new Map;if(null==e);else if("Feature"===e.type)i.set(fe(e,t),e);else for(const o of e.features)i.set(fe(o,t),o);return i}de.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},de.prototype.splitTile=function(e,t,i,o,r,s,n){for(var a=[e,t,i,o],l=this.options,c=l.debug;a.length;){o=a.pop(),i=a.pop(),t=a.pop(),e=a.pop();var h=1<<t,u=pe(t,i,o),d=this.tiles[u];if(!d&&(c>1&&console.time("creation"),d=this.tiles[u]=ce(e,t,i,o,l),this.tileCoords.push({z:t,x:i,y:o}),c)){c>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",t,i,o,d.numFeatures,d.numPoints,d.numSimplified),console.timeEnd("creation"));var p="z"+t;this.stats[p]=(this.stats[p]||0)+1,this.total++;}if(d.source=e,r){if(t===l.maxZoom||t===r)continue;var f=1<<r-t;if(i!==Math.floor(s/f)||o!==Math.floor(n/f))continue}else if(t===l.indexMaxZoom||d.numPoints<=l.indexMaxPoints)continue;if(d.source=null,0!==e.length){c>1&&console.time("clipping");var g,m,y,v,w,x,b=.5*l.buffer/l.extent,S=.5-b,M=.5+b,I=1+b;g=m=y=v=null,w=H(e,h,i-b,i+M,0,d.minX,d.maxX,l),x=H(e,h,i+S,i+I,0,d.minX,d.maxX,l),e=null,w&&(g=H(w,h,o-b,o+M,1,d.minY,d.maxY,l),m=H(w,h,o+S,o+I,1,d.minY,d.maxY,l),w=null),x&&(y=H(x,h,o-b,o+M,1,d.minY,d.maxY,l),v=H(x,h,o+S,o+I,1,d.minY,d.maxY,l),x=null),c>1&&console.timeEnd("clipping"),a.push(g||[],t+1,2*i,2*o),a.push(m||[],t+1,2*i,2*o+1),a.push(y||[],t+1,2*i+1,2*o),a.push(v||[],t+1,2*i+1,2*o+1);}}},de.prototype.getTile=function(e,t,i){var o=this.options,r=o.extent,s=o.debug;if(e<0||e>24)return null;var n=1<<e,a=pe(e,t=(t%n+n)%n,i);if(this.tiles[a])return ae(this.tiles[a],r);s>1&&console.log("drilling down to z%d-%d-%d",e,t,i);for(var l,c=e,h=t,u=i;!l&&c>0;)c--,h=Math.floor(h/2),u=Math.floor(u/2),l=this.tiles[pe(c,h,u)];return l&&l.source?(s>1&&console.log("found parent tile z%d-%d-%d",c,h,u),s>1&&console.time("drilling down"),this.splitTile(l.source,c,h,u,e,t,i),s>1&&console.timeEnd("drilling down"),this.tiles[a]?ae(this.tiles[a],r):null):null};class ye extends n{constructor(t,i,o,r){super(t,i,o),this._dataUpdateable=new Map,this.loadGeoJSON=(t,i)=>{const{promoteId:o}=t;if(t.request)return e.f(t.request,((e,t,r,s)=>{this._dataUpdateable=ge(t,o)?me(t,o):void 0,i(e,t,r,s);}));if("string"==typeof t.data)try{const e=JSON.parse(t.data);this._dataUpdateable=ge(e,o)?me(e,o):void 0,i(null,e);}catch(e){i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));}else t.dataDiff?this._dataUpdateable?(function(e,t,i){var o,r,s,n;if(t.removeAll&&e.clear(),t.remove)for(const i of t.remove)e.delete(i);if(t.add)for(const o of t.add){const t=fe(o,i);null!=t&&e.set(t,o);}if(t.update)for(const i of t.update){let t=e.get(i.id);if(null==t)continue;const a=!i.removeAllProperties&&((null===(o=i.removeProperties)||void 0===o?void 0:o.length)>0||(null===(r=i.addOrUpdateProperties)||void 0===r?void 0:r.length)>0);if((i.newGeometry||i.removeAllProperties||a)&&(t=Object.assign({},t),e.set(i.id,t),a&&(t.properties=Object.assign({},t.properties))),i.newGeometry&&(t.geometry=i.newGeometry),i.removeAllProperties)t.properties={};else if((null===(s=i.removeProperties)||void 0===s?void 0:s.length)>0)for(const e of i.removeProperties)Object.prototype.hasOwnProperty.call(t.properties,e)&&delete t.properties[e];if((null===(n=i.addOrUpdateProperties)||void 0===n?void 0:n.length)>0)for(const{key:e,value:o}of i.addOrUpdateProperties)t.properties[e]=o;}}(this._dataUpdateable,t.dataDiff,o),i(null,{type:"FeatureCollection",features:Array.from(this._dataUpdateable.values())})):i(new Error(`Cannot update existing geojson data in ${t.source}`)):i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));return {cancel:()=>{}}},this.loadVectorData=this.loadGeoJSONTile,r&&(this.loadGeoJSON=r);}loadGeoJSONTile(t,i){const o=t.tileID.canonical;if(!this._geoJSONIndex)return i(null,null);const r=this._geoJSONIndex.getTile(o.z,o.x,o.y);if(!r)return i(null,null);const s=new class{constructor(t){this.layers={_geojsonTileLayer:this},this.name="_geojsonTileLayer",this.extent=e.N,this.length=t.length,this._features=t;}feature(t){return new class{constructor(t){this._feature=t,this.extent=e.N,this.type=t.type,this.properties=t.tags,"id"in t&&!isNaN(t.id)&&(this.id=p
39arseInt(t.id,10));}loadGeometry(){if(1===this._feature.type){const t=[];for(const i of this._feature.geometry)t.push([new e.P(i[0],i[1])]);return t}{const t=[];for(const i of this._feature.geometry){const o=[];for(const t of i)o.push(new e.P(t[0],t[1]));t.push(o);}return t}}toGeoJSON(e,t,i){return u.call(this,e,t,i)}}(this._features[t])}}(r.features);let n=k(s);0===n.byteOffset&&n.byteLength===n.buffer.byteLength||(n=new Uint8Array(n)),i(null,{vectorTile:s,rawData:n.buffer});}loadData(t,i){var o;null===(o=this._pendingRequest)||void 0===o||o.cancel(),this._pendingCallback&&this._pendingCallback(null,{abandoned:!0});const r=!!(t&&t.request&&t.request.collectResourceTiming)&&new e.bu(t.request);this._pendingCallback=i,this._pendingRequest=this.loadGeoJSON(t,((o,s)=>{if(delete this._pendingCallback,delete this._pendingRequest,o||!s)return i(o);if("object"!=typeof s)return i(new Error(`Input data given to '${t.source}' is not a valid GeoJSON object.`));{h(s,!0);try{if(t.filter){const i=e.bC(t.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if("error"===i.result)throw new Error(i.value.map((e=>`${e.key}: ${e.message}`)).join(", "));const o=s.features.filter((e=>i.value.evaluate({zoom:0},e)));s={type:"FeatureCollection",features:o};}this._geoJSONIndex=t.cluster?new N(function({superclusterOptions:t,clusterProperties:i}){if(!i||!t)return t;const o={},r={},s={accumulated:null,zoom:0},n={properties:null},a=Object.keys(i);for(const t of a){const[s,n]=i[t],a=e.bC(n),l=e.bC("string"==typeof s?[s,["accumulated"],["get",t]]:s);o[t]=a.value,r[t]=l.value;}return t.map=e=>{n.properties=e;const t={};for(const e of a)t[e]=o[e].evaluate(s,n);return t},t.reduce=(e,t)=>{n.properties=t;for(const t of a)s.accumulated=e[t],e[t]=r[t].evaluate(s,n);},t}(t)).load(s.features):function(e,t){return new de(e,t)}(s,t.geojsonVtOptions);}catch(o){return i(o)}this.loaded={};const n={};if(r){const e=r.finish();e&&(n.resourceTiming={},n.resourceTiming[t.source]=JSON.parse(JSON.stringify(e)));}i(null,n);}}));}reloadTile(e,t){const i=this.loaded;return i&&i[e.uid]?super.reloadTile(e,t):this.loadTile(e,t)}removeSource(e,t){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),t();}getClusterExpansionZoom(e,t){try{t(null,this._geoJSONIndex.getClusterExpansionZoom(e.clusterId));}catch(e){t(e);}}getClusterChildren(e,t){try{t(null,this._geoJSONIndex.getChildren(e.clusterId));}catch(e){t(e);}}getClusterLeaves(e,t){try{t(null,this._geoJSONIndex.getLeaves(e.clusterId,e.limit,e.offset));}catch(e){t(e);}}}class ve{constructor(t){this.self=t,this.actor=new e.C(t,this),this.layerIndexes={},this.availableImages={},this.workerSourceTypes={vector:n,geojson:ye},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(e,t)=>{if(this.workerSourceTypes[e])throw new Error(`Worker source with name "${e}" already registered.`);this.workerSourceTypes[e]=t;},this.self.registerRTLTextPlugin=t=>{if(e.bD.isParsed())throw new Error("RTL text plugin already registered.");e.bD.applyArabicShaping=t.applyArabicShaping,e.bD.processBidirectionalText=t.processBidirectionalText,e.bD.processStyledBidirectionalText=t.processStyledBidirectionalText;};}setReferrer(e,t){this.referrer=t;}setImages(e,t,i){this.availableImages[e]=t;for(const i in this.workerSources[e]){const o=this.workerSources[e][i];for(const e in o)o[e].availableImages=t;}i();}setLayers(e,t,i){this.getLayerIndex(e).replace(t),i();}updateLayers(e,t,i){this.getLayerIndex(e).update(t.layers,t.removedIds),i();}loadTile(e,t,i){this.getWorkerSource(e,t.type,t.source).loadTile(t,i);}loadDEMTile(e,t,i){this.getDEMWorkerSource(e,t.source).loadTile(t,i);}reloadTile(e,t,i){this.getWorkerSource(e,t.type,t.source).reloadTile(t,i);}abortTile(e,t,i){this.getWorkerSource(e,t.type,t.source).abortTile(t,i);}removeTile(e,t,i){this.getWorkerSource(e,t.type,t.source).removeTile(t,i);}removeDEMTile(e,t){this.getDEMWorkerSource(e,t.source).removeTile(t);}removeSource(e,t,i){if(!this.workerSources[e]||!this.workerSources[e][t.type]||!this.workerSources[e][t.type][t.source])return;const o=this.workerSources[e][t.type][t.source];delete this.workerSources[e][t.type][t.source],void 0!==o.removeSource?o.removeSource(t,i):i();}loadWorkerSource(e,t,i){try{this.self.importScripts(t.url),i();}catch(e){i(e.toString());}}syncRTLPluginState(t,i,o){try{e.bD.setState(i);const t=e.bD.getPluginURL();if(e.bD.isLoaded()&&!e.bD.isParsed()&&null!=t){this.self.importScripts(t);const i=e.bD.isParsed();o(i?void 0:new Error(`RTL Text Plugin failed to import scripts from ${t}`),i);}}catch(e){o(e.toString());}}getAvailableImages(e){let t=this.availableImages[e];return t||(t=[]),t}getLayerIndex(e){let i=this.layerIndexes[e];
39return i||(i=this.layerIndexes[e]=new t),i}getWorkerSource(e,t,i){return this.workerSources[e]||(this.workerSources[e]={}),this.workerSources[e][t]||(this.workerSources[e][t]={}),this.workerSources[e][t][i]||(this.workerSources[e][t][i]=new this.workerSourceTypes[t]({send:(t,i,o)=>{this.actor.send(t,i,o,e);}},this.getLayerIndex(e),this.getAvailableImages(e))),this.workerSources[e][t][i]}getDEMWorkerSource(e,t){return this.demWorkerSources[e]||(this.demWorkerSources[e]={}),this.demWorkerSources[e][t]||(this.demWorkerSources[e][t]=new a),this.demWorkerSources[e][t]}}return e.i()&&(self.worker=new ve(self)),ve})); 40 41define(["./shared"],(function(t){"use strict";var e="3.6.2";class i{static testProp(t){if(!i.docStyle)return t[0];for(let e=0;e<t.length;e++)if(t[e]in i.docStyle)return t[e];return t[0]}static create(t,e,i){const s=window.document.createElement(t);return void 0!==e&&(s.className=e),i&&i.appendChild(s),s}static createNS(t,e){return window.document.createElementNS(t,e)}static disableDrag(){i.docStyle&&i.selectProp&&(i.userSelect=i.docStyle[i.selectProp],i.docStyle[i.selectProp]="none");}static enableDrag(){i.docStyle&&i.selectProp&&(i.docStyle[i.selectProp]=i.userSelect);}static setTransform(t,e){t.style[i.transformProp]=e;}static addEventListener(t,e,i,s={}){t.addEventListener(e,i,"passive"in s?s:s.capture);}static removeEventListener(t,e,i,s={}){t.removeEventListener(e,i,"passive"in s?s:s.capture);}static suppressClickInternal(t){t.preventDefault(),t.stopPropagation(),window.removeEventListener("click",i.suppressClickInternal,!0);}static suppressClick(){window.addEventListener("click",i.suppressClickInternal,!0),window.setTimeout((()=>{window.removeEventListener("click",i.suppressClickInternal,!0);}),0);}static mousePos(e,i){const s=e.getBoundingClientRect();return new t.P(i.clientX-s.left-e.clientLeft,i.clientY-s.top-e.clientTop)}static touchPos(e,i){const s=e.getBoundingClientRect(),a=[];for(let o=0;o<i.length;o++)a.push(new t.P(i[o].clientX-s.left-e.clientLeft,i[o].clientY-s.top-e.clientTop));return a}static mouseButton(t){return t.button}static remove(t){t.parentNode&&t.parentNode.removeChild(t);}}i.docStyle="undefined"!=typeof window&&window.document&&window.document.documentElement.style,i.selectProp=i.testProp(["userSelect","MozUserSelect","WebkitUserSelect","msUserSelect"]),i.transformProp=i.testProp(["transform","WebkitTransform"]);const s={supported:!1,testSupport:function(t){!r&&o&&(n?l(t):a=t);}};let a,o,r=!1,n=!1;function l(t){const e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,o),t.isContextLost())return;s.supported=!0;}catch(t){}t.deleteTexture(e),r=!0;}var h,c;"undefined"!=typeof document&&(o=document.createElement("img"),o.onload=function(){a&&l(a),a=null,n=!0;},o.onerror=function(){r=!0,a=null;},o.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA="),function(e){let i,a,o,r;e.resetRequestQueue=()=>{i=[],a=0,o=0,r={};},e.addThrottleControl=t=>{const e=o++;return r[e]=t,e},e.removeThrottleControl=t=>{delete r[t],h();},e.getImage=(t,e,o=!0)=>{s.supported&&(t.headers||(t.headers={}),t.headers.accept="image/webp,*/*");const r={requestParameters:t,supportImageRefresh:o,callback:e,cancelled:!1,completed:!1,cancel:()=>{r.completed||r.cancelled||(r.cancelled=!0,r.innerRequest&&(r.innerRequest.cancel(),a--),h());}};return i.push(r),h(),r};const n=e=>{const{requestParameters:i,supportImageRefresh:s,callback:a}=e;return t.e(i,{type:"image"}),(!1!==s||t.i()||t.g(i.url)||i.headers&&!Object.keys(i.headers).reduce(((t,e)=>t&&"accept"===e),!0)?t.m:c)(i,((t,i,s,o)=>{l(e,a,t,i,s,o);}))},l=(e,i,s,o,r,n)=>{s?i(s):o instanceof HTMLImageElement||t.a(o)?i(null,o):o&&((e,i)=>{"function"==typeof createImageBitmap?t.b(e,i):t.d(e,i);})(o,((t,e)=>{null!=t?i(t):null!=e&&i(null,e,{cacheControl:r,expires:n});})),e.cancelled||(e.completed=!0,a--,h());},h=()=>{const e=(()=>{const t=Object.keys(r);let e=!1;if(t.length>0)for(const i of t)if(e=r[i](),e)break;return e})()?t.c.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:t.c.MAX_PARALLEL_IMAGE_REQUESTS;for(let t=a;t<e&&i.length>0;t++){const e=i.shift();if(e.cancelled){t--;continue}const s=n(e);a++,e.innerRequest=s;}},c=(e,i)=>{const s=new Image,a=e.url;let o=!1;const r=e.credentials;return r&&"include"===r?s.crossOrigin="use-credentials":(r&&"same-origin"===r||!t.s(a))&&(s.crossOrigin="anonymous"),s.fetchPriority="high",s.onload=()=>{i(null,s),s.onerror=s.onload=null;},s.onerror=()=>{o||i(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.")),s.onerror=s.onload=null;},s.src=a,{cancel:()=>{o=!0,s.src="";}}};}(h||(h={})),h.resetRequestQueue(),function(t){t.Glyphs="Glyphs",t.Image="Image",t.Source="Source",t.SpriteImage="SpriteImage",t.SpriteJSON="SpriteJSON",t.Style="Style",t.Tile="Tile",t.Unknown="Unknown";}(c||(c={}));class u{constructor(t){this._transformRequestFn=t;}transformRequest(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}}
41normalizeSpriteURL(t,e,i){const s=function(t){const e=t.match(d);if(!e)throw new Error(`Unable to parse URL "${t}"`);return {protocol:e[1],authority:e[2],path:e[3]||"/",params:e[4]?e[4].split("&"):[]}}(t);return s.path+=`${e}${i}`,function(t){const e=t.params.length?`?${t.params.join("&")}`:"";return `${t.protocol}://${t.authority}${t.path}${e}`}(s)}setTransformRequest(t){this._transformRequestFn=t;}}const d=/^(\w+):\/\/([^/?]*)(\/[^?]+)?\??(.+)?/;function _(e){var i=new t.A(3);return i[0]=e[0],i[1]=e[1],i[2]=e[2],i}var p,m=function(t,e,i){return t[0]=e[0]-i[0],t[1]=e[1]-i[1],t[2]=e[2]-i[2],t};p=new t.A(3),t.A!=Float32Array&&(p[0]=0,p[1]=0,p[2]=0);var f=function(t){var e=t[0],i=t[1];return e*e+i*i};function g(t){const e=[];if("string"==typeof t)e.push({id:"default",url:t});else if(t&&t.length>0){const i=[];for(const{id:s,url:a}of t){const t=`${s}${a}`;-1===i.indexOf(t)&&(i.push(t),e.push({id:s,url:a}));}}return e}function v(e,i,s,a,o){if(a)return void e(a);if(o!==Object.values(i).length||o!==Object.values(s).length)return;const r={};for(const e in i){r[e]={};const a=t.h.getImageCanvasContext(s[e]),o=i[e];for(const t in o){const{width:i,height:s,x:n,y:l,sdf:h,pixelRatio:c,stretchX:u,stretchY:d,content:_}=o[t];r[e][t]={data:null,pixelRatio:c,sdf:h,stretchX:u,stretchY:d,content:_,spriteData:{width:i,height:s,x:n,y:l,context:a}};}}e(null,r);}!function(){var e=new t.A(2);t.A!=Float32Array&&(e[0]=0,e[1]=0);}();class x{constructor(t,e,i,s){this.context=t,this.format=i,this.texture=t.gl.createTexture(),this.update(e,s);}update(e,i,s){const{width:a,height:o}=e,r=!(this.size&&this.size[0]===a&&this.size[1]===o||s),{context:n}=this,{gl:l}=n;if(this.useMipmap=Boolean(i&&i.useMipmap),l.bindTexture(l.TEXTURE_2D,this.texture),n.pixelStoreUnpackFlipY.set(!1),n.pixelStoreUnpack.set(1),n.pixelStoreUnpackPremultiplyAlpha.set(this.format===l.RGBA&&(!i||!1!==i.premultiply)),r)this.size=[a,o],e instanceof HTMLImageElement||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement||e instanceof ImageData||t.a(e)?l.texImage2D(l.TEXTURE_2D,0,this.format,this.format,l.UNSIGNED_BYTE,e):l.texImage2D(l.TEXTURE_2D,0,this.format,a,o,0,this.format,l.UNSIGNED_BYTE,e.data);else {const{x:i,y:r}=s||{x:0,y:0};e instanceof HTMLImageElement||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement||e instanceof ImageData||t.a(e)?l.texSubImage2D(l.TEXTURE_2D,0,i,r,l.RGBA,l.UNSIGNED_BYTE,e):l.texSubImage2D(l.TEXTURE_2D,0,i,r,a,o,l.RGBA,l.UNSIGNED_BYTE,e.data);}this.useMipmap&&this.isSizePowerOfTwo()&&l.generateMipmap(l.TEXTURE_2D);}bind(t,e,i){const{context:s}=this,{gl:a}=s;a.bindTexture(a.TEXTURE_2D,this.texture),i!==a.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(i=a.LINEAR),t!==this.filter&&(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,t),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,i||t),this.filter=t),e!==this.wrap&&(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,e),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,e),this.wrap=e);}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){const{gl:t}=this.context;t.deleteTexture(this.texture),this.texture=null;}}function y(t){const{userImage:e}=t;return !!(e&&e.render&&e.render())&&(t.data.replace(new Uint8Array(e.data.buffer)),!0)}class b extends t.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.R({width:1,height:1}),this.dirty=!0;}isLoaded(){return this.loaded}setLoaded(t){if(this.loaded!==t&&(this.loaded=t,t)){for(const{ids:t,callback:e}of this.requestors)this._notify(t,e);this.requestors=[];}}getImage(e){const i=this.images[e];if(i&&!i.data&&i.spriteData){const e=i.spriteData;i.data=new t.R({width:e.width,height:e.height},e.context.getImageData(e.x,e.y,e.width,e.height).data),i.spriteData=null;}return i}addImage(t,e){if(this.images[t])throw new Error(`Image id ${t} already exist, use updateImage instead`);this._validate(t,e)&&(this.images[t]=e);}_validate(e,i){let s=!0;const a=i.data||i.spriteData;return this._validateStretch(i.stretchX,a&&a.width)||(this.fire(new t.j(new Error(`Image "${e}
41" has invalid "stretchX" value`))),s=!1),this._validateStretch(i.stretchY,a&&a.height)||(this.fire(new t.j(new Error(`Image "${e}" has invalid "stretchY" value`))),s=!1),this._validateContent(i.content,i)||(this.fire(new t.j(new Error(`Image "${e}" has invalid "content" value`))),s=!1),s}_validateStretch(t,e){if(!t)return !0;let i=0;for(const s of t){if(s[0]<i||s[1]<s[0]||e<s[1])return !1;i=s[1];}return !0}_validateContent(t,e){if(!t)return !0;if(4!==t.length)return !1;const i=e.spriteData,s=i&&i.width||e.data.width,a=i&&i.height||e.data.height;return !(t[0]<0||s<t[0]||t[1]<0||a<t[1]||t[2]<0||s<t[2]||t[3]<0||a<t[3]||t[2]<t[0]||t[3]<t[1])}updateImage(t,e,i=!0){const s=this.getImage(t);if(i&&(s.data.width!==e.data.width||s.data.height!==e.data.height))throw new Error(`size mismatch between old image (${s.data.width}x${s.data.height}) and new image (${e.data.width}x${e.data.height}).`);e.version=s.version+1,this.images[t]=e,this.updatedImages[t]=!0;}removeImage(t){const e=this.images[t];delete this.images[t],delete this.patterns[t],e.userImage&&e.userImage.onRemove&&e.userImage.onRemove();}listImages(){return Object.keys(this.images)}getImages(t,e){let i=!0;if(!this.isLoaded())for(const e of t)this.images[e]||(i=!1);this.isLoaded()||i?this._notify(t,e):this.requestors.push({ids:t,callback:e});}_notify(e,i){const s={};for(const i of e){let e=this.getImage(i);e||(this.fire(new t.k("styleimagemissing",{id:i})),e=this.getImage(i)),e?s[i]={data:e.data.clone(),pixelRatio:e.pixelRatio,sdf:e.sdf,version:e.version,stretchX:e.stretchX,stretchY:e.stretchY,content:e.content,hasRenderCallback:Boolean(e.userImage&&e.userImage.render)}:t.w(`Image "${i}" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.`);}i(null,s);}getPixelSize(){const{width:t,height:e}=this.atlasImage;return {width:t,height:e}}getPattern(e){const i=this.patterns[e],s=this.getImage(e);if(!s)return null;if(i&&i.position.version===s.version)return i.position;if(i)i.position.version=s.version;else {const i={w:s.data.width+2,h:s.data.height+2,x:0,y:0},a=new t.I(i,s);this.patterns[e]={bin:i,position:a};}return this._updatePatternAtlas(),this.patterns[e].position}bind(t){const e=t.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new x(t,this.atlasImage,e.RGBA),this.atlasTexture.bind(e.LINEAR,e.CLAMP_TO_EDGE);}_updatePatternAtlas(){const e=[];for(const t in this.patterns)e.push(this.patterns[t].bin);const{w:i,h:s}=t.p(e),a=this.atlasImage;a.resize({width:i||1,height:s||1});for(const e in this.patterns){const{bin:i}=this.patterns[e],s=i.x+1,o=i.y+1,r=this.getImage(e).data,n=r.width,l=r.height;t.R.copy(r,a,{x:0,y:0},{x:s,y:o},{width:n,height:l}),t.R.copy(r,a,{x:0,y:l-1},{x:s,y:o-1},{width:n,height:1}),t.R.copy(r,a,{x:0,y:0},{x:s,y:o+l},{width:n,height:1}),t.R.copy(r,a,{x:n-1,y:0},{x:s-1,y:o},{width:1,height:l}),t.R.copy(r,a,{x:0,y:0},{x:s+n,y:o},{width:1,height:l});}this.dirty=!0;}beginFrame(){this.callbackDispatchedThisFrame={};}dispatchRenderCallbacks(e){for(const i of e){if(this.callbackDispatchedThisFrame[i])continue;this.callbackDispatchedThisFrame[i]=!0;const e=this.getImage(i);e||t.w(`Image with ID: "${i}" was not found`),y(e)&&this.updateImage(i,e);}}}const w=1e20;function T(t,e,i,s,a,o,r,n,l){for(let h=e;h<e+s;h++)I(t,i*o+h,o,a,r,n,l);for(let h=i;h<i+a;h++)I(t,h*o+e,1,s,r,n,l);}function I(t,e,i,s,a,o,r){o[0]=0,r[0]=-w,r[1]=w,a[0]=t[e];for(let n=1,l=0,h=0;n<s;n++){a[n]=t[e+n*i];const s=n*n;do{const t=o[l];h=(a[n]-a[t]+s-t*t)/(n-t)/2;}while(h<=r[l]&&--l>-1);l++,o[l]=n,r[l]=h,r[l+1]=w;}for(let n=0,l=0;n<s;n++){for(;r[l+1]<n;)l++;const s=o[l],h=n-s;t[e+n*i]=a[s]+h*h;}}class E{constructor(t,e){this.requestManager=t,this.localIdeographFontFamily=e,this.entries={};}setURL(t){this.url=t;}getGlyphs(e,i){const s=[];for(const t in e)for(const i of e[t])s.push({stack:t,id:i});t.o(s,(({stack:t,id:e},i)=>{let s=this.entries[t];s||(s=this.entries[t]={glyphs:{},requests:{},ranges:{}});let a=s.glyphs[e];if(void 0!==a)return void i(null,{stack:t,id:e,glyph:a});if(a=this._tinySDF(s,t,e),a)return s.glyphs[e]=a,void i(null,{stack:t,id:e,glyph:a});const o=Math.floor(e/256);if(256*o>65535)return void i(new Error("glyphs > 65535 not supported"));if(s.ranges[o])return void i(null,{stack:t,id:e,glyph:a});if(!this.url)return void i(new Error("glyphsUrl is not set"));let r=s.requests[o];r||(r=s.requests[o]=[],E.loadGlyphRange(t,o,this.url,this.requestManager,((t,e)=>{if(e){for(const t in e)this._doesCharSupportLocalGlyph(+t)||(s.glyphs[+t]=e[+t]);s.ranges[o]=!0;}for(const i of r)i(t,e);delete s.requests[o];}))),r.push(((s,a)=>{s?i(s):a&&i(null,{stack:t,id:e,glyph:a[e]||null});}));}),((t,e)=>{if(t)i(t);else if(e){const t={};for(const{stack:i,id:s,glyph:a}of e)(t[i]||(t[i]={}))[s]=a&&{id:a.id,bitmap:a.bitmap.clone(),metrics:a.metrics};i(null,t);}}));}_doesCharSupportLocalGlyph(e){return !!this.localIdeographFontFamily&&
vendor: 9,003 bytes, line 41
41(t.u["CJK Unified Ideographs"](e)||t.u["Hangul Syllables"](e)||t.u.Hiragana(e)||t.u.Katakana(e))}_tinySDF(e,i,s){const a=this.localIdeographFontFamily;if(!a)return;if(!this._doesCharSupportLocalGlyph(s))return;let o=e.tinySDF;if(!o){let t="400";/bold/i.test(i)?t="900":/medium/i.test(i)?t="500":/light/i.test(i)&&(t="200"),o=e.tinySDF=new E.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:a,fontWeight:t});}const r=o.draw(String.fromCharCode(s));return {id:s,bitmap:new t.q({width:r.width||60,height:r.height||60},r.data),metrics:{width:r.glyphWidth/2||24,height:r.glyphHeight/2||24,left:r.glyphLeft/2+.5||0,top:r.glyphTop/2-27.5||-8,advance:r.glyphAdvance/2||24,isDoubleResolution:!0}}}}E.loadGlyphRange=function(e,i,s,a,o){const r=256*i,n=r+255,l=a.transformRequest(s.replace("{fontstack}",e).replace("{range}",`${r}-${n}`),c.Glyphs);t.l(l,((e,i)=>{if(e)o(e);else if(i){const e={};for(const s of t.n(i))e[s.id]=s;o(null,e);}}));},E.TinySDF=class{constructor({fontSize:t=24,buffer:e=3,radius:i=8,cutoff:s=.25,fontFamily:a="sans-serif",fontWeight:o="normal",fontStyle:r="normal"}={}){this.buffer=e,this.cutoff=s,this.radius=i;const n=this.size=t+4*e,l=this._createCanvas(n),h=this.ctx=l.getContext("2d",{willReadFrequently:!0});h.font=`${r} ${o} ${t}px ${a}`,h.textBaseline="alphabetic",h.textAlign="left",h.fillStyle="black",this.gridOuter=new Float64Array(n*n),this.gridInner=new Float64Array(n*n),this.f=new Float64Array(n),this.z=new Float64Array(n+1),this.v=new Uint16Array(n);}_createCanvas(t){const e=document.createElement("canvas");return e.width=e.height=t,e}draw(t){const{width:e,actualBoundingBoxAscent:i,actualBoundingBoxDescent:s,actualBoundingBoxLeft:a,actualBoundingBoxRight:o}=this.ctx.measureText(t),r=Math.ceil(i),n=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(o-a))),l=Math.min(this.size-this.buffer,r+Math.ceil(s)),h=n+2*this.buffer,c=l+2*this.buffer,u=Math.max(h*c,0),d=new Uint8ClampedArray(u),_={data:d,width:h,height:c,glyphWidth:n,glyphHeight:l,glyphTop:r,glyphLeft:0,glyphAdvance:e};if(0===n||0===l)return _;const{ctx:p,buffer:m,gridInner:f,gridOuter:g}=this;p.clearRect(m,m,n,l),p.fillText(t,m,m+r);const v=p.getImageData(m,m,n,l);g.fill(w,0,u),f.fill(0,0,u);for(let t=0;t<l;t++)for(let e=0;e<n;e++){const i=v.data[4*(t*n+e)+3]/255;if(0===i)continue;const s=(t+m)*h+e+m;if(1===i)g[s]=0,f[s]=w;else {const t=.5-i;g[s]=t>0?t*t:0,f[s]=t<0?t*t:0;}}T(g,0,0,h,c,h,this.f,this.v,this.z),T(f,m,m,n,l,h,this.f,this.v,this.z);for(let t=0;t<u;t++){const e=Math.sqrt(g[t])-Math.sqrt(f[t]);d[t]=Math.round(255-255*(e/this.radius+this.cutoff));}return _}};class S{constructor(){this.specification=t.v.light.position;}possiblyEvaluate(e,i){return t.z(e.expression.evaluate(i))}interpolate(e,i,s){return {x:t.B.number(e.x,i.x,s),y:t.B.number(e.y,i.y,s),z:t.B.number(e.z,i.z,s)}}}let C;class P extends t.E{constructor(e){super(),C=C||new t.r({anchor:new t.D(t.v.light.anchor),position:new S,color:new t.D(t.v.light.color),intensity:new t.D(t.v.light.intensity)}),this._transitionable=new t.T(C),this.setLight(e),this._transitioning=this._transitionable.untransitioned();}getLight(){return this._transitionable.serialize()}setLight(e,i={}){if(!this._validate(t.t,e,i))for(const t in e){const i=e[t];t.endsWith("-transition")?this._transitionable.setTransition(t.slice(0,-11),i):this._transitionable.setValue(t,i);}}updateTransitions(t){this._transitioning=this._transitionable.transitioned(t,this._transitioning);}hasTransition(){return this._transitioning.hasTransition()}recalculate(t){this.properties=this._transitioning.possiblyEvaluate(t);}_validate(e,i,s){return (!s||!1!==s.validate)&&t.x(this,e.call(t.y,t.e({value:i,style:{glyphs:!0,sprite:!0},styleSpec:t.v})))}}class D{constructor(t,e){this.width=t,this.height=e,this.nextRow=0,this.data=new Uint8Array(this.width*this.height),this.dashEntry={};}getDash(t,e){const i=t.join(",")+String(e);return this.dashEntry[i]||(this.dashEntry[i]=this.addDash(t,e)),this.dashEntry[i]}getDashRanges(t,e,i){const s=[];let a=t.length%2==1?-t[t.length-1]*i:0,o=t[0]*i,r=!0;s.push({left:a,right:o,isDash:r,zeroLength:0===t[0]});let n=t[0];for(let e=1;e<t.length;e++){r=!r;const l=t[e];a=n*i,n+=l,o=n*i,s.push({left:a,right:o,isDash:r,zeroLength:0===l});}return s}addRoundDash(t,e,i){const s=e/2;for(let e=-i;e<=i;e++){const a=this.width*(this.nextRow+i+e);let o=0,r=t[o];for(let n=0;n<this.width;n++){n/r.right>1&&(r=t[++o]);const l=Math.abs(n-r.left),h=Math.abs(n-r.right),c=Math.min(l,h);let u;const d=e/i*(s+1);if(r.isDash){const t=s-Math.abs(d);u=Math.sqrt(c*c+t*t);}else u=s-Math.sqrt(c*c+d*d);this.data[a+n]=Math.max(0,Math.min(255,u+128));}}}addRegularDash(t){for(let e=t.length-1;e>=0;--e){const i=t[e],s=t[e+1];i.zeroLength?t.splice(e,1):s&&s.isDash===i.isDash&&(s.left=i.left,t.splice(e,1));}const e=t[0],i=t[t.length-1];e.isDash===i.isDash&&(e.left=i.left-this.width,i.right=e.right+this.width);const s=this.width*this.nextRow;let a=0,o=t[a];for(let e=0;e<this.width;e++){e/o.right>1&&(o=t[++a]);const i=Math.abs(e-o.left),r=Math.abs(e-o.right),n=Math.min(i,r);this.data[s+e]=Math.max(0,Math.min(255,(o.isDash?n:-n)+128));}}addDash(e,i){const s=i?7:0,a=2*s+1;if(this.nextRow+a>this.height)return t.w("LineAtlas out of space"),null;let o=0;for(let t=0;t<e.length;t++)o+=e[t];if(0!==o){const t=this.width/o,a=this.getDashRanges(e,this.width,t);i?this.addRoundDash(a,t,s):this.addRegularDash(a);}const r={y:(this.nextRow+s+.5)/this.height,height:2*s/this.height,width:o};return this.nextRow+=a,this.dirty=!0,r}bind(t){const e=t.gl;this.texture?(e.bindTexture(e.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,e.texSubImage2D(e.TEXTURE_2D,0,0,0,this.width,this.height,e.ALPHA,e.UNSIGNED_BYTE,this.data))):(this.texture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,this.texture),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.REPEAT),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texImage2D(e.TEXTURE_2D,0,e.ALPHA,this.width,this.height,0,e.ALPHA,e.UNSIGNED_BYTE,this.data));}}class M{constructor(e,i,s){this.workerPool=e,this.actors=[],this.currentActor=0,this.id=s;const a=this.workerPool.acquire(s);for(let e=0;e<a.length;e++){const o=new t.C(a[e],i,s);o.name=`Worker ${e}`,this.actors.push(o);}if(!this.actors.length)throw new Error("No actors found")}broadcast(e,i,s){t.o(this.actors,((t,s)=>{t.send(e,i,s);}),s=s||function(){});}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(t=!0){this.actors.forEach((t=>{t.remove();})),this.actors=[],t&&this.workerPool.release(this.id);}}function z(e,i,s){const a=function(i,a){if(i)return s(i);if(a){const i=t.F(t.e(a,e),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);a.vector_layers&&(i.vectorLayers=a.vector_layers,i.vectorLayerIds=i.vectorLayers.map((t=>t.id))),s(null,i);}};return e.url?t.f(i.transformRequest(e.url,c.Source),a):t.h.frame((()=>a(null,e)))}class L{constructor(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):Array.isArray(t)&&(4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1])));}setNorthEast(e){return this._ne=e instanceof t.L?new t.L(e.lng,e.lat):t.L.convert(e),this}setSouthWest(e){return this._sw=e instanceof t.L?new t.L(e.lng,e.lat):t.L.convert(e),this}extend(e){const i=this._sw,s=this._ne;let a,o;if(e instanceof t.L)a=e,o=e;else {if(!(e instanceof L))return Array.isArray(e)?4===e.length||e.every(Array.isArray)?this.extend(L.convert(e)):this.extend(t.L.convert(e)):e&&("lng"in e||"lon"in e)&&"lat"in e?this.extend(t.L.convert(e)):this;if(a=e._sw,o=e._ne,!a||!o)return this}return i||s?(i.lng=Math.min(a.lng,i.lng),i.lat=Math.min(a.lat,i.lat),s.lng=Math.max(o.lng,s.lng),s.lat=Math.max(o.lat,s.lat)):(this._sw=new t.L(a.lng,a.lat),this._ne=new t.L(o.lng,o.lat)),this}getCenter(){return new t.L((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new t.L(this.getWest(),this.getNorth())}getSouthEast(){return new t.L(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return [this._sw.toArray(),this._ne.toArray()]}toString(){return `LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return !(this._sw&&this._ne)}contains(e){const{lng:i,lat:s}=t.L.convert(e);let a=this._sw.lng<=i&&i<=this._ne.lng;return this._sw.lng>this._ne.lng&&(a=this._sw.lng>=i&&i>=this._ne.lng),this._sw.lat<=s&&s<=this._ne.lat&&a}static convert(t){return t instanceof L?t:t?new L(t):t}static fromLngLat(e,i=0){const s=360*i/40075017,a=s/Math.cos(Math.PI/180*e.lat);return new L(new t.L(e.lng-a,e.lat-s),new t.L(e.lng+a,e.lat+s))}}class A{constructor(t,e,i){this.bounds=L.convert(this.validateBounds(t)),this.minzoom=e||0,this.maxzoom=i||24;}
41validateBounds(t){return Array.isArray(t)&&4===t.length?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]}contains(e){const i=Math.pow(2,e.z),s=Math.floor(t.G(this.bounds.getWest())*i),a=Math.floor(t.H(this.bounds.getNorth())*i),o=Math.ceil(t.G(this.bounds.getEast())*i),r=Math.ceil(t.H(this.bounds.getSouth())*i);return e.x>=s&&e.x<o&&e.y>=a&&e.y<r}}class R extends t.E{constructor(e,i,s,a){if(super(),this.load=()=>{this._loaded=!1,this.fire(new t.k("dataloading",{dataType:"source"})),this._tileJSONRequest=z(this._options,this.map._requestManager,((e,i)=>{this._tileJSONRequest=null,this._loaded=!0,this.map.style.sourceCaches[this.id].clearTiles(),e?this.fire(new t.j(e)):i&&(t.e(this,i),i.bounds&&(this.tileBounds=new A(i.bounds,this.minzoom,this.maxzoom)),this.fire(new t.k("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new t.k("data",{dataType:"source",sourceDataType:"content"})));}));},this.serialize=()=>t.e({},this._options),this.id=e,this.dispatcher=s,this.type="vector",this.minzoom=0,this.maxzoom=22,this.scheme="xyz",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,t.e(this,t.F(i,["url","scheme","tileSize","promoteId"])),this._options=t.e({type:"vector"},i),this._collectResourceTiming=i.collectResourceTiming,512!==this.tileSize)throw new Error("vector tile sources must have a tileSize of 512");this.setEventedParent(a);}loaded(){return this._loaded}hasTile(t){return !this.tileBounds||this.tileBounds.contains(t.canonical)}onAdd(t){this.map=t,this.load();}setSourceProperty(t){this._tileJSONRequest&&this._tileJSONRequest.cancel(),t(),this.load();}setTiles(t){return this.setSourceProperty((()=>{this._options.tiles=t;})),this}setUrl(t){return this.setSourceProperty((()=>{this.url=t,this._options.url=t;})),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);}loadTile(t,e){const i=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),s={request:this.map._requestManager.transformRequest(i,c.Tile),uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,tileSize:this.tileSize*t.tileID.overscaleFactor(),type:this.t
41ype,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};function a(i,s){return delete t.request,t.aborted?e(null):i&&404!==i.status?e(i):(s&&s.resourceTiming&&(t.resourceTiming=s.resourceTiming),this.map._refreshExpiredTiles&&s&&t.setExpiryData(s),t.loadVectorData(s,this.map.painter),e(null),void(t.reloadCallback&&(this.loadTile(t,t.reloadCallback),t.reloadCallback=null)))}s.request.collectResourceTiming=this._collectResourceTiming,t.actor&&"expired"!==t.state?"loading"===t.state?t.reloadCallback=e:t.request=t.actor.send("reloadTile",s,a.bind(this)):(t.actor=this.dispatcher.getActor(),t.request=t.actor.send("loadTile",s,a.bind(this)));}abortTile(t){t.request&&(t.request.cancel(),delete t.request),t.actor&&t.actor.send("abortTile",{uid:t.uid,type:this.type,source:this.id},void 0);}unloadTile(t){t.unloadVectorData(),t.actor&&t.actor.send("removeTile",{uid:t.uid,type:this.type,source:this.id},void 0);}hasTransition(){return !1}}class k extends t.E{constructor(e,i,s,a){super(),this.id=e,this.dispatcher=s,this.setEventedParent(a),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=t.e({type:"raster"},i),t.e(this,t.F(i,["url","scheme","tileSize"]));}load(){this._loaded=!1,this.fire(new t.k("dataloading",{dataType:"source"})),this._tileJSONRequest=z(this._options,this.map._requestManager,((e,i)=>{this._tileJSONRequest=null,this._loaded=!0,e?this.fire(new t.j(e)):i&&(t.e(this,i),i.bounds&&(this.tileBounds=new A(i.bounds,this.minzoom,this.maxzoom)),this.fire(new t.k("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new t.k("data",{dataType:"source",sourceDataType:"content"})));}));}loaded(){return this._loaded}onAdd(t){this.map=t,this.load();}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null);}setSourceProperty(t){this._tileJSONRequest&&this._tileJSONRequest.cancel(),t(),this.load();}setTiles(t){return this.setSourceProperty((()=>{this._options.tiles=t;})),this}serialize(){return t.e({},this._options)}hasTile(t){return !this.tileBounds||this.tileBounds.contains(t.canonical)}loadTile(t,e){const i=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);t.request=h.getImage(this.map._requestManager.transformRequest(i,c.Tile),((i,s,a)=>{if(delete t.request,t.aborted)t.state="unloaded",e(null);else if(i)t.state="errored",e(i);else if(s){this.map._refreshExpiredTiles&&a&&t.setExpiryData(a);const i=this.map.painter.context,o=i.gl;t.texture=this.map.painter.getTileTexture(s.width),t.texture?t.texture.update(s,{useMipmap:!0}):(t.texture=new x(i,s,o.RGBA,{useMipmap:!0}),t.texture.bind(o.LINEAR,o.CLAMP_TO_EDGE,o.LINEAR_MIPMAP_NEAREST),i.extTextureFilterAnisotropic&&o.texParameterf(o.TEXTURE_2D,i.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,i.extTextureFilterAnisotropicMax)),t.state="loaded",e(null);}}),this.map._refreshExpiredTiles);}abortTile(t,e){t.request&&(t.request.cancel(),delete t.request),e();}unloadTile(t,e){t.texture&&this.map.painter.saveTileTexture(t.texture),e();}hasTransition(){return !1}}class F extends k{constructor(e,i,s,a){super(e,i,s,a),this.type="raster-dem",this.maxzoom=22,this._options=t.e({type:"raster-dem"},i),this.encoding=i.encoding||"mapbox",this.redFactor=i.redFactor,this.greenFactor=i.greenFactor,this.blueFactor=i.blueFactor,this.baseShift=i.baseShift;}loadTile(e,i){const s=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),a=this.map._requestManager.transformRequest(s,c.Tile);function o(t,s){t&&(e.state="errored",i(t)),s&&(e.dem=s,e.needsHillshadePrepare=!0,e.needsTerrainPrepare=!0,e.state="loaded",i(null));}e.neighboringTiles=this._getNeighboringTiles(e.tileID),e.request=h.getImage(a,((s,a,r)=>t._(this,void 0,void 0,(function*(){if(delete e.request,e.aborted)e.state="unloaded",i(null);else if(s)e.state="errored",i(s);else if(a){this.map._refreshExpiredTiles&&e.setExpiryData(r);const i=t.a(a)&&t.J()?a:yield function(e){return t._(this,void 0,void 0,(function*(){if("undefined"!=typeof VideoFrame&&t.K()){const i=e.width+2,s=e.height+2;try{return new t.R({width:i,height:s},yield t.M(e,-1,-1,i,s))}catch(t){}}return t.h.getImageData(e,1)}))}(a),s={uid:e.uid,coord:e.tileID,source:this.id,rawImageData:i,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};e.actor&&"expired"!==e.state||(e.actor=this.dispatcher.getActor(),e.actor.send("loadDEMTile",s,o));}}))),this.map._refreshExpiredTiles);}_getNeighboringTiles(e){const i=e.canonical,s=Math.pow(2,i.z),a=(i.x-1+s)%s,o=0===i.x?e.wrap-1:e.wrap,r=(i.x+1+s)%s,n=i.x+1===s?e.wrap+1:e.wrap,l={};return l[new t.O(e.overscaledZ,o,i.z,a,i.y).key]={backfilled:!1},l[new t.O(e.overscaledZ,n,i.z,r,i.y).key]={backfilled:!1},i.y>0&&(l[new t.O(e.overscaledZ,o,i.z,a,i.y-1).key]={backfilled:!1},l[new t.O(e.overscaledZ,e.wrap,i.z,i.x,i.y-1).key]={backfilled:!1},l[new t.O(e.overscaledZ,n,i.z,r,i.y-1).key]={backfilled:!1}),i.y+1<s&&(l[new t.O(e.overscaledZ,o,i.z,a,i.y+1).key]={backfilled:!1},l[new t.O(e.overscaledZ,e.wrap,i.z,i.x,i.y+1).key]={backfilled:!1},l[new t.O(e.overscaledZ,n,i.z,r,i.y+1).key]={backfilled:!1}),l}unloadTile(t){t.demTexture&&this.map.painter.saveTileTexture(t.demTexture),t.fbo&&(t.fbo.destroy(),delete t.fbo),t.dem&&delete t.dem,delete t.neighboringTiles,t.state="unloaded",t.actor&&t.actor.send("removeDEMTile",{uid:t.uid,source:this.id});}}class B extends t.E{constructor(e,i,s,a){super(),this.load=()=>{this._updateWorkerData();},this.serialize=()=>t.e({}
41,this._options,{type:this.type,data:this._data}),this.id=e,this.type="geojson",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._removed=!1,this._pendingLoads=0,this.actor=s.getActor(),this.setEventedParent(a),this._data=i.data,this._options=t.e({},i),this._collectResourceTiming=i.collectResourceTiming,void 0!==i.maxzoom&&(this.maxzoom=i.maxzoom),i.type&&(this.type=i.type),i.attribution&&(this.attribution=i.attribution),this.promoteId=i.promoteId;const o=t.N/this.tileSize;this.workerOptions=t.e({source:this.id,cluster:i.cluster||!1,geojsonVtOptions:{buffer:(void 0!==i.buffer?i.buffer:128)*o,tolerance:(void 0!==i.tolerance?i.tolerance:.375)*o,extent:t.N,maxZoom:this.maxzoom,lineMetrics:i.lineMetrics||!1,generateId:i.generateId||!1},superclusterOptions:{maxZoom:void 0!==i.clusterMaxZoom?i.clusterMaxZoom:this.maxzoom-1,minPoints:Math.max(2,i.clusterMinPoints||2),extent:t.N,radius:(i.clusterRadius||50)*o,log:!1,generateId:i.generateId||!1},clusterProperties:i.clusterProperties,filter:i.filter},i.workerOptions),"string"==typeof this.promoteId&&(this.workerOptions.promoteId=this.promoteId);}onAdd(t){this.map=t,this.load();}setData(t){return this._data=t,this._updateWorkerData(),this}updateData(t){return this._updateWorkerData(t),this}setClusterOptions(t){return this.workerOptions.cluster=t.cluster,t&&(void 0!==t.clusterRadius&&(this.workerOptions.superclusterOptions.radius=t.clusterRadius),void 0!==t.clusterMaxZoom&&(this.workerOptions.superclusterOptions.maxZoom=t.clusterMaxZoom)),this._updateWorkerData(),this}getClusterExpansionZoom(t,e){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:t,source:this.id},e),this}getClusterChildren(t,e){return this.actor.send("geojson.getClusterChildren",{clusterId:t,source:this.id},e),this}getClusterLeaves(t,e,i,s){return this.actor.send("geojson.getClusterLeaves",{source:this.id,clusterId:t,limit:e,offset:i},s),this}_updateWorkerData(e){const i=t.e({},this.workerOptions);e?i.dataDiff=e:"string"==typeof this._data?(i.request=this.map._requestManager.transformRequest(t.h.resolveURL(this._data),c.Source),i.request.collectResourceTiming=this._collectResourceTiming):i.data=JSON.stringify(this._data),this._pendingLoads++,this.fire(new t.k("dataloading",{dataType:"source"})),this.actor.send(`${this.type}.loadData`,i,((e,i)=>{if(this._pendingLoads--,this._removed||i&&i.abandoned)return void this.fire(new t.k("dataabort",{dataType:"source"}));let s=null;if(i&&i.resourceTiming&&i.resourceTiming[this.id]&&(s=i.resourceTiming[this.id].slice(0)),e)return void this.fire(new t.j(e));const a={dataType:"source"};this._collectResourceTiming&&s&&s.length>0&&t.e(a,{resourceTiming:s}),this.fire(new t.k("data",Object.assign(Object.assign({},a),{sourceDataType:"metadata"}))),this.fire(new t.k("data",Object.assign(Object.assign({},a),{sourceDataType:"content"})));}));}loaded(){return 0===this._pendingLoads}loadTile(t,e){const i=t.actor?"reloadTile":"loadTile";t.actor=this.actor;const s={type:this.type,uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};t.request=this.actor.send(i,s,((s,a)=>(delete t.request,t.unloadVectorData(),t.aborted?e(null):s?e(s):(t.loadVectorData(a,this.map.painter,"reloadTile"===i),e(null)))));}abortTile(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0;}unloadTile(t){t.unloadVectorData(),this.actor.send("removeTile",{uid:t.uid,type:this.t
41ype,source:this.id});}onRemove(){this._removed=!0,this.actor.send("removeSource",{type:this.type,source:this.id});}hasTransition(){return !1}}var O=t.Q([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class N extends t.E{constructor(e,i,s,a){super(),this.load=(e,i)=>{this._loaded=!1,this.fire(new t.k("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=h.getImage(this.map._requestManager.transformRequest(this.url,c.Image),((s,a)=>{this._request=null,this._loaded=!0,s?this.fire(new t.j(s)):a&&(this.image=a,e&&(this.coordinates=e),i&&i(),this._finishLoading());}));},this.prepare=()=>{if(0===Object.keys(this.tiles).length||!this.image)return;const e=this.map.painter.context,i=e.gl;this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,O.members)),this.boundsSegments||(this.boundsSegments=t.S.simpleSegment(0,0,4,2)),this.texture||(this.texture=new x(e,this.image,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));let s=!1;for(const t in this.tiles){const e=this.tiles[t];"loaded"!==e.state&&(e.state="loaded",e.texture=this.texture,s=!0);}s&&this.fire(new t.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}));},this.serialize=()=>({type:"image",url:this.options.url,coordinates:this.coordinates}),this.id=e,this.dispatcher=s,this.coordinates=i.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(a),this.options=i;}loaded(){return this._loaded}updateImage(t){return t.url?(this._request&&(this._request.cancel(),this._request=null),this.options.url=t.url,this.load(t.coordinates,(()=>{this.texture=null;})),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.k("data",{dataType:"source",sourceDataType:"metadata"})));}onAdd(t){this.map=t,this.load();}onRemove(){this._request&&(this._request.cancel(),this._request=null);}setCoordinates(e){this.coordinates=e;const i=e.map(t.U.fromLngLat);this.tileID=function(e){let i=1/0,s=1/0,a=-1/0,o=-1/0;for(const t of e)i=Math.min(i,t.x),s=Math.min(s,t.y),a=Math.max(a,t.x),o=Math.max(o,t.y);const r=Math.max(a-i,o-s),n=Math.max(0,Math.floor(-Math.log(r)/Math.LN2)),l=Math.pow(2,n);return new t.W(n,Math.floor((i+a)/2*l),Math.floor((s+o)/2*l))}(i),this.minzoom=this.maxzoom=this.tileID.z;const s=i.map((t=>this.tileID.getTilePoint(t)._round()));return this._boundsArray=new t.V,this._boundsArray.emplaceBack(s[0].x,s[0].y,0,0),this._boundsArray.emplaceBack(s[1].x,s[1].y,t.N,0),this._boundsArray.emplaceBack(s[3].x,s[3].y,0,t.N),this._boundsArray.emplaceBack(s[2].x,s[2].y,t.N,t.N),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new t.k("data",{dataType:"source",sourceDataType:"content"})),this}loadTile(t,e){this.tileID&&this.tileID.equals(t.tileID.canonical)?(this.tiles[String(t.tileID.wrap)]=t,t.buckets={},e(null)):(t.state="errored",e(null));}hasTransition(){return !1}}class U extends N{constructor(e,i,s,a){super(e,i,s,a),this.load=()=>{this._loaded=!1;const e=this.options;this.urls=[];for(const t of e.urls)this.urls.push(this.map._requestManager.transformRequest(t,c.Source).url);t.X(this.urls,((e,i)=>{this._loaded=!0,e?this.fire(new t.j(e)):i&&(this.video=i,this.video.loop=!0,this.video.addEventListener("playing",(()=>{this.map.triggerRepaint();})),this.map&&this.video.play(),this._finishLoading());}));},this.prepare=()=>{if(0===Object.keys(this.tiles).length||this.video.readyState<2)return;const e=this.map.painter.context,i=e.gl;this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,O.members)),this.boundsSegments||(this.boundsSegments=t.S.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE),i.texSubImage2D(i.TEXTURE_2D,0,0,0,i.RGBA,i.UNSIGNED_BYTE,this.video)):(this.texture=new x(e,this.video,i.RGBA),this.texture.bind(i.LINEAR,i.CLAMP_TO_EDGE));let s=!1;for(const t in this.tiles){const e=this.tiles[t];"loaded"!==e.state&&(e.state="loaded",e.texture=this.texture,s=!0);}s&&this.fire(new t.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}));},this.serialize=()=>({type:"video",urls:this.urls,coordinates:this.coordinates}),this.roundZoom=!0,this.type="video",this.options=i;}pause(){this.video&&this.video.pause();}play(){this.video&&this.video.play();}seek(e){if(this.video){const i=this.video.seekable;e<i.start(0)||e>i.end(0)?this.fire(new t.j(new t.Y(`sources.${this.id}`,null,`Playback for this video can be set only between the ${i.start(0)} and ${i.end(0)}-second mark.`))):this.video.currentTime=e;}}getVideo(){return this.video}
vendor: 9,551 bytes, line 41
41onAdd(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)));}hasTransition(){return this.video&&!this.video.paused}}class Z extends N{constructor(e,i,s,a){super(e,i,s,a),this.load=()=>{this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.j(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint();},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1);},this._finishLoading());},this.prepare=()=>{let e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),this._hasInvalidDimensions())return;if(0===Object.keys(this.tiles).length)return;const i=this.map.painter.context,s=i.gl;this.boundsBuffer||(this.boundsBuffer=i.createVertexBuffer(this._boundsArray,O.members)),this.boundsSegments||(this.boundsSegments=t.S.simpleSegment(0,0,4,2)),this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new x(i,this.canvas,s.RGBA,{premultiply:!0});let a=!1;for(const t in this.tiles){const e=this.tiles[t];"loaded"!==e.state&&(e.state="loaded",e.texture=this.texture,a=!0);}a&&this.fire(new t.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}));},this.serialize=()=>({type:"canvas",coordinates:this.coordinates}),i.coordinates?Array.isArray(i.coordinates)&&4===i.coordinates.length&&!i.coordinates.some((t=>!Array.isArray(t)||2!==t.length||t.some((t=>"number"!=typeof t))))||this.fire(new t.j(new t.Y(`sources.${e}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.j(new t.Y(`sources.${e}`,null,'missing required property "coordinates"'))),i.animate&&"boolean"!=typeof i.animate&&this.fire(new t.j(new t.Y(`sources.${e}`,null,'optional "animate" property must be a boolean value'))),i.canvas?"string"==typeof i.canvas||i.canvas instanceof HTMLCanvasElement||this.fire(new t.j(new t.Y(`sources.${e}`,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.j(new t.Y(`sources.${e}`,null,'missing required property "canvas"'))),this.options=i,this.animate=void 0===i.animate||i.animate;}getCanvas(){return this.canvas}onAdd(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play();}onRemove(){this.pause();}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const t of [this.canvas.width,this.canvas.height])if(isNaN(t)||t<=0)return !0;return !1}}const G={},j=t=>{switch(t){case"geojson":return B;case"image":return N;case"raster":return k;case"raster-dem":return F;case"vector":return R;case"video":return U;case"canvas":return Z}return G[t]};function V(e,i){const s=t.Z();return t.$(s,s,[1,1,0]),t.a0(s,s,[.5*e.width,.5*e.height,1]),t.a1(s,s,e.calculatePosMatrix(i.toUnwrapped()))}function q(t,e,i,s,a,o){const r=function(t,e,i){if(t)for(const s of t){const t=e[s];if(t&&t.source===i&&"fill-extrusion"===t.type)return !0}else for(const t in e){const s=e[t];if(s.source===i&&"fill-extrusion"===s.type)return !0}return !1}(a&&a.layers,e,t.id),n=o.maxPitchScaleFactor(),l=t.tilesIn(s,n,r);l.sort($);const h=[];for(const s of l)h.push({wrappedTileID:s.tileID.wrapped().key,queryResults:s.tile.queryRenderedFeatures(e,i,t._state,s.queryGeometry,s.cameraQueryGeometry,s.scale,a,o,n,V(t.transform,s.tileID))});const c=function(t){const e={},i={};for(const s of t){const t=s.queryResults,a=s.wrappedTileID,o=i[a]=i[a]||{};for(const i in t){const s=t[i],a=o[i]=o[i]||{},r=e[i]=e[i]||[];for(const t of s)a[t.featureIndex]||(a[t.featureIndex]=!0,r.push(t));}}return e}(h);for(const e in c)c[e].forEach((e=>{const i=e.feature,s=t.getFeatureState(i.layer["source-layer"],i.id);i.source=i.layer.source,i.layer["source-layer"]&&(i.sourceLayer=i.layer["source-layer"]),i.state=s;}));return c}function $(t,e){const i=t.tileID,s=e.tileID;return i.overscaledZ-s.overscaledZ||i.canonical.y-s.canonical.y||i.wrap-s.wrap||i.canonical.x-s.canonical.x}class W{constructor(e,i){this.timeAdded=0,this.fadeEndTime=0,this.tileID=e,this.uid=t.a2(),this.uses=0,this.tileSize=i,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state="loading";}registerFadeDuration(t){const e=t+this.timeAdded;e<this.fadeEndTime||(this.fadeEndTime=e);}wasRequested(){return "errored"===this.state||"loaded"===this.state||"reloading"===this.state}clearTextures(t){this.demTexture&&t.saveTileTexture(this.demTexture),this.demTexture=null;}loadVectorData(e,i,s){if(this.hasData()&&this.unloadVectorData(),this.state="loaded",e){e.featureIndex&&(this.latestFeatureIndex=e.featureIndex,e.rawTileData?(this.latestRawTileData=e.rawTileData,this.latestFeatureIndex.rawTileData=e.rawTileData):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData)),this.collisionBoxArray=e.collisionBoxArray,this.buckets=function(t,e){const i={};if(!e)return i;for(const s of t){const t=s.layerIds.map((t=>e.getLayer(t))).filter(Boolean);if(0!==t.length){s.layers=t,s.stateDependentLayerIds&&(s.stateDependentLayers=s.stateDependentLayerIds.map((e=>t.filter((t=>t.id===e))[0])));for(const e of t)i[e.id]=s;}}return i}(e.buckets,i.style),this.hasSymbolBuckets=!1;for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.a4){if(this.hasSymbolBuckets=!0,!s)break;i.justReloaded=!0;}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const e in this.buckets){const i=this.buckets[e];if(i instanceof t.a4&&i.hasRTLText){this.hasRTLText=!0,t.a5();break}}this.queryPadding=0;for(const t in this.buckets){const e=this.buckets[t];this.queryPadding=Math.max(this.queryPadding,i.style.getLayer(t).queryRadius(e));}e.imageAtlas&&(this.imageAtlas=e.imageAtlas),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage);}else this.collisionBoxArray=new t.a3;}unloadVectorData(){for(const t in this.buckets)this.buckets[t].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state="unloaded";}getBucket(t){return this.buckets[t.id]}upload(t){for(const e in this.buckets){const i=this.buckets[e];i.uploadPending()&&i.upload(t);}const e=t.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new x(t,this.imageAtlas.image,e.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new x(t,this.glyphAtlasImage,e.ALPHA),this.glyphAtlasImage=null);}prepare(t){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture);}queryRenderedFeatures(t,e,i,s,a,o,r,n,l,h){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:s,cameraQueryGeometry:a,scale:o,tileSize:this.tileSize,pixelPosMatrix:h,transform:n,params:r,queryPadding:this.queryPadding*l},t,e,i):{}}querySourceFeatures(e,i){const s=this.latestFeatureIndex;if(!s||!s.rawTileData)return;const a=s.loadVTLayers(),o=i&&i.sourceLayer?i.sourceLayer:"",r=a._geojsonTileLayer||a[o];if(!r)return;const n=t.a6(i&&i.filter),{z:l,x:h,y:c}=this.tileID.canonical,u={z:l,x:h,y:c};for(let i=0;i<r.length;i++){const a=r.feature(i);if(n.needGeometry){const e=t.a7(a,!0);if(!n.filter(new t.a8(this.tileID.overscaledZ),e,this.tileID.canonical))continue}else if(!n.filter(new t.a8(this.tileID.overscaledZ),a))continue;const d=s.getId(a,o),_=new t.a9(a,l,h,c,d);_.tile=u,e.push(_);}}hasData(){return "loaded"===this.state||"reloading"===this.state||"expired"===this.state}patternsLoaded(){return this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length}setExpiryData(e){const i=this.expirationTime;if(e.cacheControl){const i=t.aa(e.cacheControl);i["max-age"]&&(this.expirationTime=Date.now()+1e3*i["max-age"]);}else e.expires&&(this.expirationTime=new Date(e.expires).getTime());if(this.expirationTime){const t=Date.now();let e=!1;if(this.expirationTime>t)e=!1;else if(i)if(this.expirationTime<i)e=!0;else {const s=this.expirationTime-i;s?this.expirationTime=t+Math.max(s,3e4):e=!0;}else e=!0;e?(this.expiredRequestCount++,this.state="expired"):this.expiredRequestCount=0;}}getExpiryTimeout(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-(new Date).getTime(),Math.pow(2,31)-1)}setFeatureState(t,e){if(!this.latestFeatureIndex||!this.latestFeatureIndex.rawTileData||0===Object.keys(t).length)return;const i=this.latestFeatureIndex.loadVTLayers();for(const s in this.buckets){if(!e.style.hasLayer(s))continue;const a=this.buckets[s],o=a.layers[0].sourceLayer||"_geojsonTileLayer",r=i[o],n=t[o];if(!r||!n||0===Object.keys(n).length)continue;a.update(n,r,this.imageAtlas&&this.imageAtlas.patternPositions||{});const l=e&&e.style&&e.style.getLayer(s);l&&(this.queryPadding=Math.max(this.queryPadding,l.queryRadius(a)));}}holdingForFade(){return void 0!==this.symbolFadeHoldUntil}symbolFadeFinished(){return !this.symbolFadeHoldUntil||this.symbolFadeHoldUntil<t.h.now()}clearFadeHold(){this.symbolFadeHoldUntil=void 0;}setHoldDuration(e){this.symbolFadeHoldUntil=t.h.now()+e;}
vendor: 4,792 bytes, line 41
41setDependencies(t,e){const i={};for(const t of e)i[t]=!0;this.dependencies[t]=i;}hasDependency(t,e){for(const i of t){const t=this.dependencies[i];if(t)for(const i of e)if(t[i])return !0}return !1}}class H{constructor(t,e){this.max=t,this.onRemove=e,this.reset();}reset(){for(const t in this.data)for(const e of this.data[t])e.timeout&&clearTimeout(e.timeout),this.onRemove(e.value);return this.data={},this.order=[],this}add(t,e,i){const s=t.wrapped().key;void 0===this.data[s]&&(this.data[s]=[]);const a={value:e,timeout:void 0};if(void 0!==i&&(a.timeout=setTimeout((()=>{this.remove(t,a);}),i)),this.data[s].push(a),this.order.push(s),this.order.length>this.max){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}has(t){return t.wrapped().key in this.data}getAndRemove(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null}_getAndRemoveByKey(t){const 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}getByKey(t){const e=this.data[t];return e?e[0].value:null}get(t){return this.has(t)?this.data[t.wrapped().key][0].value:null}remove(t,e){if(!this.has(t))return this;const i=t.wrapped().key,s=void 0===e?0:this.data[i].indexOf(e),a=this.data[i][s];return this.data[i].splice(s,1),a.timeout&&clearTimeout(a.timeout),0===this.data[i].length&&delete this.data[i],this.onRemove(a.value),this.order.splice(this.order.indexOf(i),1),this}setMaxSize(t){for(this.max=t;this.order.length>this.max;){const t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t);}return this}filter(t){const e=[];for(const i in this.data)for(const s of this.data[i])t(s.value)||e.push(s);for(const t of e)this.remove(t.value.tileID,t);}}class X{constructor(){this.state={},this.stateChanges={},this.deletedStates={};}updateState(e,i,s){const a=String(i);if(this.stateChanges[e]=this.stateChanges[e]||{},this.stateChanges[e][a]=this.stateChanges[e][a]||{},t.e(this.stateChanges[e][a],s),null===this.deletedStates[e]){this.deletedStates[e]={};for(const t in this.state[e])t!==a&&(this.deletedStates[e][t]=null);}else if(this.deletedStates[e]&&null===this.deletedStates[e][a]){this.deletedStates[e][a]={};for(const t in this.state[e][a])s[t]||(this.deletedStates[e][a][t]=null);}else for(const t in s)this.deletedStates[e]&&this.deletedStates[e][a]&&null===this.deletedStates[e][a][t]&&delete this.deletedStates[e][a][t];}removeFeatureState(t,e,i){if(null===this.deletedStates[t])return;const s=String(e);if(this.deletedStates[t]=this.deletedStates[t]||{},i&&void 0!==e)null!==this.deletedStates[t][s]&&(this.deletedStates[t][s]=this.deletedStates[t][s]||{},this.deletedStates[t][s][i]=null);else if(void 0!==e)if(this.stateChanges[t]&&this.stateChanges[t][s])for(i in this.deletedStates[t][s]={},this.stateChanges[t][s])this.deletedStates[t][s][i]=null;else this.deletedStates[t][s]=null;else this.deletedStates[t]=null;}getState(e,i){const s=String(i),a=t.e({},(this.state[e]||{})[s],(this.stateChanges[e]||{})[s]);if(null===this.deletedStates[e])return {};if(this.deletedStates[e]){const t=this.deletedStates[e][i];if(null===t)return {};for(const e in t)delete a[e];}return a}initializeTileState(t,e){t.setFeatureState(this.state,e);}coalesceChanges(e,i){const s={};for(const e in this.stateChanges){this.state[e]=this.state[e]||{};const i={};for(const s in this.stateChanges[e])this.state[e][s]||(this.state[e][s]={}),t.e(this.state[e][s],this.stateChanges[e][s]),i[s]=this.state[e][s];s[e]=i;}for(const e in this.deletedStates){this.state[e]=this.state[e]||{};const i={};if(null===this.deletedStates[e])for(const t in this.state[e])i[t]={},this.state[e][t]={};else for(const t in this.deletedStates[e]){if(null===this.deletedStates[e][t])this.state[e][t]={};else for(const i of Object.keys(this.deletedStates[e][t]))delete this.state[e][t][i];i[t]=this.state[e][t];}s[e]=s[e]||{},t.e(s[e],i);}if(this.stateChanges={},this.deletedStates={},0!==Object.keys(s).length)for(const t in e)e[t].setFeatureState(s,i);}}class K extends t.E{constructor(t,e,i){super(),this.id=t,this.dispatcher=i,this.on("data",(t=>{"source"===t.dataType&&"metadata"===t.sourceDataType&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&"source"===t.dataType&&"content"===t.sourceDataType&&(this.reload(),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0);})),this.on("dataloading",(()=>{this._sourceErrored=!1;})),this.on("error",(()=>{this._sourceErrored=this._source.loaded();})),this._source=((t,e,i,s)=>{const a=new(j(e.type))(t,e,i,s);if(a.id!==t)throw new Error(`Expected Source id to be ${t} instead of ${a.id}`);return a})(t,e,i,this),this._tiles={},this._cache=new H(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={}
vendor: 4,460 bytes, line 41
41,this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new X,this._didEmitContent=!1,this._updated=!1;}onAdd(t){this.map=t,this._maxTileCacheSize=t?t._maxTileCacheSize:null,this._maxTileCacheZoomLevels=t?t._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(t);}onRemove(t){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(t);}loaded(){if(this._sourceErrored)return !0;if(!this._sourceLoaded)return !1;if(!this._source.loaded())return !1;if(!(void 0===this.used&&void 0===this.usedForTerrain||this.used||this.usedForTerrain))return !0;if(!this._updated)return !1;for(const t in this._tiles){const e=this._tiles[t];if("loaded"!==e.state&&"errored"!==e.state)return !1}return !0}getSource(){return this._source}pause(){this._paused=!0;}resume(){if(!this._paused)return;const t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform,this.terrain);}_loadTile(t,e){return this._source.loadTile(t,e)}_unloadTile(t){if(this._source.unloadTile)return this._source.unloadTile(t,(()=>{}))}_abortTile(e){this._source.abortTile&&this._source.abortTile(e,(()=>{})),this._source.fire(new t.k("dataabort",{tile:e,coord:e.tileID,dataType:"source"}));}serialize(){return this._source.serialize()}prepare(t){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(const e in this._tiles){const i=this._tiles[e];i.upload(t),i.prepare(this.map.style.imageManager);}}getIds(){return Object.values(this._tiles).map((t=>t.tileID)).sort(Q).map((t=>t.key))}getRenderableIds(e){const i=[];for(const t in this._tiles)this._isIdRenderable(t,e)&&i.push(this._tiles[t]);return e?i.sort(((e,i)=>{const s=e.tileID,a=i.tileID,o=new t.P(s.canonical.x,s.canonical.y)._rotate(this.transform.angle),r=new t.P(a.canonical.x,a.canonical.y)._rotate(this.transform.angle);return s.overscaledZ-a.overscaledZ||r.y-o.y||r.x-o.x})).map((t=>t.tileID.key)):i.map((t=>t.tileID)).sort(Q).map((t=>t.key))}hasRenderableParent(t){const e=this.findLoadedParent(t,0);return !!e&&this._isIdRenderable(e.tileID.key)}_isIdRenderable(t,e){return this._tiles[t]&&this._tiles[t].hasData()&&!this._coveredTiles[t]&&(e||!this._tiles[t].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else {this._cache.reset();for(const t in this._tiles)"errored"!==this._tiles[t].state&&this._reloadTile(t,"reloading");}}_reloadTile(t,e){const i=this._tiles[t];i&&("loading"!==i.state&&(i.state=e),this._loadTile(i,this._tileLoaded.bind(this,i,t,e)));}_tileLoaded(e,i,s,a){if(a)return e.state="errored",void(404!==a.status?this._source.fire(new t.j(a,{tile:e})):this.update(this.transform,this.terrain));e.timeAdded=t.h.now(),"expired"===s&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(i,e),"raster-dem"===this.getSource().type&&e.dem&&this._backfillDEM(e),this._state.initializeTileState(e,this.map?this.map.painter:null),e.aborted||this._source.fire(new t.k("data",{dataType:"source",tile:e,coord:e.tileID}));}_backfillDEM(t){const e=this.getRenderableIds();for(let s=0;s<e.length;s++){const a=e[s];if(t.neighboringTiles&&t.neighboringTiles[a]){const e=this.getTileByID(a);i(t,e),i(e,t);}}function i(t,e){t.needsHillshadePrepare=!0,t.needsTerrainPrepare=!0;let i=e.tileID.canonical.x-t.tileID.canonical.x;const s=e.tileID.canonical.y-t.tileID.canonical.y,a=Math.pow(2,t.tileID.canonical.z),o=e.tileID.key;0===i&&0===s||Math.abs(s)>1||(Math.abs(i)>1&&(1===Math.abs(i+a)?i+=a:1===Math.abs(i-a)&&(i-=a)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,i,s),t.neighboringTiles&&t.neighboringTiles[o]&&(t.neighboringTiles[o].backfilled=!0)));}}getTile(t){return this.getTileByID(t.key)}getTileByID(t){return this._tiles[t]}_retainLoadedChildren(t,e,i,s){for(const a in this._tiles){let o=this._tiles[a];if(s[a]||!o.hasData()||o.tileID.overscaledZ<=e||o.tileID.overscaledZ>i)continue;let r=o.tileID;for(;o&&o.tileID.overscaledZ>e+1;){const t=o.tileID.scaledTo(o.tileID.overscaledZ-1);o=this._tiles[t.key],o&&o.hasData()&&(r=t);}let n=r;for(;n.overscaledZ>e;)if(n=n.scaledTo(n.overscaledZ-1),t[n.key]){s[r.key]=r;break}}}findLoadedParent(t,e){if(t.key in this._loadedParentTiles){const i=this._loadedParentTiles[t.key];return i&&i.tileID.overscaledZ>=e?i:null}for(let i=t.overscaledZ-1;i>=e;i--){const e=t.scaledTo(i),s=this._getLoadedTile(e);
vendor: 4,100 bytes, line 41
41if(s)return s}}_getLoadedTile(t){const e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(t.wrapped().key)}updateCacheSize(e){const i=Math.ceil(e.width/this._source.tileSize)+1,s=Math.ceil(e.height/this._source.tileSize)+1,a=Math.floor(i*s*(null===this._maxTileCacheZoomLevels?t.c.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),o="number"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,a):a;this._cache.setMaxSize(o);}handleWrapJump(t){const e=Math.round((t-(void 0===this._prevLng?t:this._prevLng))/360);if(this._prevLng=t,e){const t={};for(const i in this._tiles){const s=this._tiles[i];s.tileID=s.tileID.unwrapTo(s.tileID.wrap+e),t[s.tileID.key]=s;}this._tiles=t;for(const t in this._timers)clearTimeout(this._timers[t]),delete this._timers[t];for(const t in this._tiles)this._setTileReloadTimer(t,this._tiles[t]);}}update(e,i){if(this.transform=e,this.terrain=i,!this._sourceLoaded||this._paused)return;let s;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?s=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((e=>new t.O(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y))):(s=e.coveringTiles({tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:i}),this._source.hasTile&&(s=s.filter((t=>this._source.hasTile(t))))):s=[];const a=e.coveringZoomLevel(this._source),o=Math.max(a-K.maxOverzooming,this._source.minzoom),r=Math.max(a+K.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){const t={};for(const e of s)if(e.canonical.z>this._source.minzoom){const i=e.scaledTo(e.canonical.z-1);t[i.key]=i;const s=e.scaledTo(Math.max(this._source.minzoom,Math.min(e.canonical.z,5)));t[s.key]=s;}s=s.concat(Object.values(t));}const n=0===s.length&&!this._updated&&this._didEmitContent;this._updated=!0,n&&this.fire(new t.k("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));const l=this._updateRetainedTiles(s,a);if(Y(this._source.type)){const e={},n={},h=Object.keys(l),c=t.h.now();for(const t of h){const i=l[t],s=this._tiles[t];if(!s||0!==s.fadeEndTime&&s.fadeEndTime<=c)continue;const a=this.findLoadedParent(i,o);a&&(this._addTile(a.tileID),e[a.tileID.key]=a.tileID),n[t]=i;}this._retainLoadedChildren(n,a,r,l);for(const t in e)l[t]||(this._coveredTiles[t]=!0,l[t]=e[t]);if(i){const t={},e={};for(const i of s)this._tiles[i.key].hasData()?t[i.key]=i:e[i.key]=i;for(const i in e){const s=e[i].children(this._source.maxzoom);this._tiles[s[0].key]&&this._tiles[s[1].key]&&this._tiles[s[2].key]&&this._tiles[s[3].key]&&(t[s[0].key]=l[s[0].key]=s[0],t[s[1].key]=l[s[1].key]=s[1],t[s[2].key]=l[s[2].key]=s[2],t[s[3].key]=l[s[3].key]=s[3],delete e[i]);}for(const i in e){const s=this.findLoadedParent(e[i],this._source.minzoom);if(s){t[s.tileID.key]=l[s.tileID.key]=s.tileID;for(const e in t)t[e].isChildOf(s.tileID)&&delete t[e];}}for(const e in this._tiles)t[e]||(this._coveredTiles[e]=!0);}}for(const t in l)this._tiles[t].clearFadeHold();const h=t.ab(this._tiles,l);for(const t of h){const e=this._tiles[t];e.hasSymbolBuckets&&!e.holdingForFade()?e.setHoldDuration(this.map._fadeDuration):e.hasSymbolBuckets&&!e.symbolFadeFinished()||this._removeTile(t);}this._updateLoadedParentTileCache();}releaseSymbolFadeTiles(){for(const t in this._tiles)this._tiles[t].holdingForFade()&&this._removeTile(t);}_updateRetainedTiles(t,e){const i={},s={},a=Math.max(e-K.maxOverzooming,this._source.minzoom),o=Math.max(e+K.maxUnderzooming,this._source.minzoom),r={};for(const s of t){const t=this._addTile(s);i[s.key]=s,t.hasData()||e<this._source.maxzoom&&(r[s.key]=s);}this._retainLoadedChildren(r,e,o,i);for(const o of t){let t=this._tiles[o.key];if(t.hasData())continue;if(e+1>this._source.maxzoom){const t=o.children(this._source.maxzoom)[0],e=this.getTile(t);if(e&&e.hasData()){i[t.key]=t;continue}}else {const t=o.children(this._source.maxzoom);
vendor: 10,438 bytes, line 41
41if(i[t[0].key]&&i[t[1].key]&&i[t[2].key]&&i[t[3].key])continue}let r=t.wasRequested();for(let e=o.overscaledZ-1;e>=a;--e){const a=o.scaledTo(e);if(s[a.key])break;if(s[a.key]=!0,t=this.getTile(a),!t&&r&&(t=this._addTile(a)),t){const e=t.hasData();if((r||e)&&(i[a.key]=a),r=t.wasRequested(),e)break}}}return i}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(const t in this._tiles){const e=[];let i,s=this._tiles[t].tileID;for(;s.overscaledZ>0;){if(s.key in this._loadedParentTiles){i=this._loadedParentTiles[s.key];break}e.push(s.key);const t=s.scaledTo(s.overscaledZ-1);if(i=this._getLoadedTile(t),i)break;s=t;}for(const t of e)this._loadedParentTiles[t]=i;}}_addTile(e){let i=this._tiles[e.key];if(i)return i;i=this._cache.getAndRemove(e),i&&(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)));const s=i;return i||(i=new W(e,this._source.tileSize*e.overscaleFactor()),this._loadTile(i,this._tileLoaded.bind(this,i,e.key,i.state))),i.uses++,this._tiles[e.key]=i,s||this._source.fire(new t.k("dataloading",{tile:i,coord:i.tileID,dataType:"source"})),i}_setTileReloadTimer(t,e){t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);const i=e.getExpiryTimeout();i&&(this._timers[t]=setTimeout((()=>{this._reloadTile(t,"expired"),delete this._timers[t];}),i));}_removeTile(t){const 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()&&"reloading"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))));}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const t in this._tiles)this._removeTile(t);this._cache.reset();}tilesIn(e,i,s){const a=[],o=this.transform;if(!o)return a;const r=s?o.getCameraQueryGeometry(e):e,n=e.map((t=>o.pointCoordinate(t,this.terrain))),l=r.map((t=>o.pointCoordinate(t,this.terrain))),h=this.getIds();let c=1/0,u=1/0,d=-1/0,_=-1/0;for(const t of l)c=Math.min(c,t.x),u=Math.min(u,t.y),d=Math.max(d,t.x),_=Math.max(_,t.y);for(let e=0;e<h.length;e++){const s=this._tiles[h[e]];if(s.holdingForFade())continue;const r=s.tileID,p=Math.pow(2,o.zoom-s.tileID.overscaledZ),m=i*s.queryPadding*t.N/s.tileSize/p,f=[r.getTilePoint(new t.U(c,u)),r.getTilePoint(new t.U(d,_))];if(f[0].x-m<t.N&&f[0].y-m<t.N&&f[1].x+m>=0&&f[1].y+m>=0){const t=n.map((t=>r.getTilePoint(t))),e=l.map((t=>r.getTilePoint(t)));a.push({tile:s,tileID:r,queryGeometry:t,cameraQueryGeometry:e,scale:p});}}return a}getVisibleCoordinates(t){const e=this.getRenderableIds(t).map((t=>this._tiles[t].tileID));for(const t of e)t.posMatrix=this.transform.calculatePosMatrix(t.toUnwrapped());return e}hasTransition(){if(this._source.hasTransition())return !0;if(Y(this._source.type)){const e=t.h.now();for(const t in this._tiles)if(this._tiles[t].fadeEndTime>=e)return !0}return !1}setFeatureState(t,e,i){this._state.updateState(t=t||"_geojsonTileLayer",e,i);}removeFeatureState(t,e,i){this._state.removeFeatureState(t=t||"_geojsonTileLayer",e,i);}getFeatureState(t,e){return this._state.getState(t=t||"_geojsonTileLayer",e)}setDependencies(t,e,i){const s=this._tiles[t];s&&s.setDependencies(e,i);}reloadTilesForDependencies(t,e){for(const i in this._tiles)this._tiles[i].hasDependency(t,e)&&this._reloadTile(i,"reloading");this._cache.filter((i=>!i.hasDependency(t,e)));}}function Q(t,e){const i=Math.abs(2*t.wrap)-+(t.wrap<0),s=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||s-i||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function Y(t){return "raster"===t||"image"===t||"video"===t}K.maxOverzooming=10,K.maxUnderzooming=3;const J="mapboxgl_preloaded_worker_pool";class tt{constructor(){this.active={};}acquire(e){if(!this.workers)for(this.workers=[];this.workers.length<tt.workerCount;)this.workers.push(new Worker(t.c.WORKER_URL));return this.active[e]=!0,this.workers.slice()}release(t){delete this.active[t],0===this.numActive()&&(this.workers.forEach((t=>{t.terminate();})),this.workers=null);}isPreloaded(){return !!this.active[J]}numActive(){return Object.keys(this.active).length}}const et=Math.floor(t.h.hardwareConcurrency/2);let it;function st(){return it||(it=new tt),it}tt.workerCount=t.ac(globalThis)?Math.max(Math.min(et,3),1):1;class at{constructor(t,e){this.reset(t,e);}reset(t,e){this.points=t||[],this._distances=[0];for(let t=1;t<this.points.length;t++)this._distances[t]=this._distances[t-1]+this.points[t].dist(this.points[t-1]);this.length=this._distances[this._distances.length-1],this.padding=Math.min(e||0,.5*this.length),this.paddedLength=this.length-2*this.padding;}lerp(e){if(1===this.points.length)return this.points[0];e=t.ad(e,0,1);let i=1,s=this._distances[i];const a=e*this.paddedLength+this.padding;for(;s<a&&i<this._distances.length;)s=this._distances[++i];const o=i-1,r=this._distances[o],n=s-r,l=n>0?(a-r)/n:0;return this.points[o].mult(1-l).add(this.points[i].mult(l))}}function ot(t,e){let i=!0;return "always"===t||"never"!==t&&"never"!==e||(i=!1),i}class rt{constructor(t,e,i){const s=this.boxCells=[],a=this.circleCells=[];this.xCellCount=Math.ceil(t/i),this.yCellCount=Math.ceil(e/i);for(let t=0;t<this.xCellCount*this.yCellCount;t++)s.push([]),a.push([]);this.circleKeys=[],this.boxKeys=[],this.bboxes=[],this.circles=[],this.width=t,this.height=e,this.xScale=this.xCellCount/t,this.yScale=this.yCellCount/e,this.boxUid=0,this.circleUid=0;}keysLength(){return this.boxKeys.length+this.circleKeys.length}insert(t,e,i,s,a){this._forEachCell(e,i,s,a,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(e),this.bboxes.push(i),this.bboxes.push(s),this.bboxes.push(a);}insertCircle(t,e,i,s){this._forEachCell(e-s,i-s,e+s,i+s,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(e),this.circles.push(i),this.circles.push(s);}_insertBoxCell(t,e,i,s,a,o){this.boxCells[a].push(o);}_insertCircleCell(t,e,i,s,a,o){this.circleCells[a].push(o);}_query(t,e,i,s,a,o,r){if(i<0||t>this.width||s<0||e>this.height)return [];const n=[];if(t<=0&&e<=0&&this.width<=i&&this.height<=s){if(a)return [{key:null,x1:t,y1:e,x2:i,y2:s}];for(let t=0;t<this.boxKeys.length;t++)n.push({key:this.boxKeys[t],x1:this.bboxes[4*t],y1:this.bboxes[4*t+1],x2:this.bboxes[4*t+2],y2:this.bboxes[4*t+3]});for(let t=0;t<this.circleKeys.length;t++){const e=this.circles[3*t],i=this.circles[3*t+1],s=this.circles[3*t+2];n.push({key:this.circleKeys[t],x1:e-s,y1:i-s,x2:e+s,y2:i+s});}}else this._forEachCell(t,e,i,s,this._queryCell,n,{hitTest:a,overlapMode:o,seenUids:{box:{},circle:{}}},r);return n}query(t,e,i,s){return this._query(t,e,i,s,!1,null)}hitTest(t,e,i,s,a,o){return this._query(t,e,i,s,!0,a,o).length>0}hitTestCircle(t,e,i,s,a){const o=t-i,r=t+i,n=e-i,l=e+i;if(r<0||o>this.width||l<0||n>this.height)return !1;const h=[];return this._forEachCell(o,n,r,l,this._queryCellCircle,h,{hitTest:!0,overlapMode:s,circle:{x:t,y:e,radius:i},seenUids:{box:{},circle:{}}},a),h.length>0}_queryCell(t,e,i,s,a,o,r,n){const{seenUids:l,hitTest:h,overlapMode:c}=r,u=this.boxCells[a];if(null!==u){const a=this.bboxes;for(const r of u)if(!l.box[r]){l.box[r]=!0;const u=4*r,d=this.boxKeys[r];if(t<=a[u+2]&&e<=a[u+3]&&i>=a[u+0]&&s>=a[u+1]&&(!n||n(d))&&(!h||!ot(c,d.overlapMode))&&(o.push({key:d,x1:a[u],y1:a[u+1],x2:a[u+2],y2:a[u+3]}),h))return !0}}const d=this.circleCells[a];if(null!==d){const a=this.circles;for(const r of d)if(!l.circle[r]){l.circle[r]=!0;const u=3*r,d=this.circleKeys[r];if(this._circleAndRectCollide(a[u],a[u+1],a[u+2],t,e,i,s)&&(!n||n(d))&&(!h||!ot(c,d.overlapMode))){const t=a[u],e=a[u+1],i=a[u+2];if(o.push({key:d,x1:t-i,y1:e-i,x2:t+i,y2:e+i}),h)return !0}}}return !1}_queryCellCircle(t,e,i,s,a,o,r,n){const{circle:l,seenUids:h,overlapMode:c}=r,u=this.boxCells[a];if(null!==u){const t=this.bboxes;for(const e of u)if(!h.box[e]){h.box[e]=!0;const i=4*e,s=this.boxKeys[e];if(this._circleAndRectCollide(l.x,l.y,l.radius,t[i+0],t[i+1],t[i+2],t[i+3])&&(!n||n(s))&&!ot(c,s.overlapMode))return o.push(!0),!0}}const d=this.circleCells[a];if(null!==d){const t=this.circles;for(const e of d)if(!h.circle[e]){h.circle[e]=!0;const i=3*e,s=this.circleKeys[e];if(this._circlesCollide(t[i],t[i+1],t[i+2],l.x,l.y,l.radius)&&(!n||n(s))&&!ot(c,s.overlapMode))return o.push(!0),!0}}}_forEachCell(t,e,i,s,a,o,r,n){const l=this._convertToXCellCoord(t),h=this._convertToYCellCoord(e),c=this._convertToXCellCoord(i),u=this._convertToYCellCoord(s);for(let d=l;d<=c;d++)for(let l=h;l<=u;l++)if(a.call(this,t,e,i,s,this.xCellCount*l+d,o,r,n))return}_convertToXCellCoord(t){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(t*this.xScale)))}_convertToYCellCoord(t){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(t*this.yScale)))}_circlesCollide(t,e,i,s,a,o){const r=s-t,n=a-e,l=i+o;return l*l>r*r+n*n}_circleAndRectCollide(t,e,i,s,a,o,r){const n=(o-s)/2,l=Math.abs(t-(s+n));if(l>n+i)return !1;const h=(r-a)/2,c=Math.abs(e-(a+h));if(c>h+i)return !1;if(l<=n||c<=h)return !0;const u=l-n,d=c-h;return u*u+d*d<=i*i}}function nt(e,i,s,a,o){const r=t.Z();return i?(t.a0(r,r,[1/o,1/o,1]),s||t.ae(r,r,a.angle)):t.a1(r,a.labelPlaneMatrix,e),r}function lt(e,i,s,a,o){if(i){const i=t.af(e);return t.a0(i,i,[o,o,1]),s||t.ae(i,i,-a.angle),i}return a.glCoordMatrix}function ht(e,i,s){let a;s?(a=[e.x,e.y,s(e.x,e.y),1],t.ag(a,a,i)):(a=[e.x,e.y,0,1],Tt(a,a,i));const o=a[3];return {point:new t.P(a[0]/o,a[1]/o),signedDistanceFromCamera:o}}function ct(t,e){return .5+t/e*.5}function ut(t,e){const i=t[0]/t[3],s=t[1]/t[3];return i>=-e[0]&&i<=e[0]&&s>=-e[1]&&s<=e[1]}function dt(e,i,s,a,o,r,n,l,h,c){const u=a?e.textSizeData:e.iconSizeData,d=t.ah(u,s.transform.zoom),_=[256/s.width*2+1,256/s.height*2+1],p=a?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;p.clear();const m=e.lineVertexArray,f=a?e.text.placedSymbolArray:e.icon.placedSymbolArray,g=s.transform.width/s.transform.height;let v=!1;for(let a=0;a<f.length;a++){const x=f.get(a);if(x.hidden||x.writingMode===t.ai.vertical&&!v){wt(x.numGlyphs,p);continue}let y;if(v=!1,c?(y=[x.anchorX,x.anchorY,c(x.anchorX,x.anchorY),1],t.ag(y,y,i)):(y=[x.anchorX,x.anchorY,0,1],Tt(y,y,i)),!ut(y,_)){wt(x.numGlyphs,p);continue}const b=ct(s.transform.cameraToCenterDistance,y[3]),w=t.aj(u,d,x),T=n?w/b:w*b,I=new t.P(x.anchorX,x.anchorY),E=ht(I,o,
41c).point,S={projections:{},offsets:{}},C=mt(x,T,!1,l,i,o,r,e.glyphOffsetArray,m,p,E,I,S,g,h,c);v=C.useVertical,(C.notEnoughRoom||v||C.needsFlipping&&mt(x,T,!0,l,i,o,r,e.glyphOffsetArray,m,p,E,I,S,g,h,c).notEnoughRoom)&&wt(x.numGlyphs,p);}a?e.text.dynamicLayoutVertexBuffer.updateData(p):e.icon.dynamicLayoutVertexBuffer.updateData(p);}function _t(t,e,i,s,a,o,r,n,l,h,c,u,d){const _=n.glyphStartIndex+n.numGlyphs,p=n.lineStartIndex,m=n.lineStartIndex+n.lineLength,f=e.getoffsetX(n.glyphStartIndex),g=e.getoffsetX(_-1),v=yt(t*f,i,s,a,o,r,n.segment,p,m,l,h,c,u,d);if(!v)return null;const x=yt(t*g,i,s,a,o,r,n.segment,p,m,l,h,c,u,d);return x?{first:v,last:x}:null}function pt(e,i,s,a){return e===t.ai.horizontal&&Math.abs(s.y-i.y)>Math.abs(s.x-i.x)*a?{useVertical:!0}:(e===t.ai.vertical?i.y<s.y:i.x>s.x)?{needsFlipping:!0}:null}function mt(e,i,s,a,o,r,n,l,h,c,u,d,_,p,m,f){const g=i/24,v=e.lineOffsetX*g,x=e.lineOffsetY*g;let y;if(e.numGlyphs>1){const t=e.glyphStartIndex+e.numGlyphs,i=e.lineStartIndex,o=e.lineStartIndex+e.lineLength,c=_t(g,l,v,x,s,u,d,e,h,r,_,m,f);if(!c)return {notEnoughRoom:!0};const b=ht(c.first.point,n,f).point,w=ht(c.last.point,n,f).point;if(a&&!s){const t=pt(e.writingMode,b,w,p);if(t)return t}y=[c.first];for(let a=e.glyphStartIndex+1;a<t-1;a++)y.push(yt(g*l.getoffsetX(a),v,x,s,u,d,e.segment,i,o,h,r,_,m,f));y.push(c.last);}else {if(a&&!s){const i=ht(d,o,f).point,s=e.lineStartIndex+e.segment+1,a=new t.P(h.getx(s),h.gety(s)),r=ht(a,o,f),n=r.signedDistanceFromCamera>0?r.point:ft(d,a,i,1,o,f),l=pt(e.writingMode,i,n,p);if(l)return l}const i=yt(g*l.getoffsetX(e.glyphStartIndex),v,x,s,u,d,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,h,r,_,m,f);if(!i)return {notEnoughRoom:!0};y=[i];}for(const e of y)t.ak(c,e.point,e.angle);return {}}function ft(t,e,i,s,a,o){const r=ht(t.add(t.sub(e)._unit()),a,o).point,n=i.sub(r);return i.add(n._mult(s/n.mag()))}
41function gt(e,i){const{projectionCache:s,lineVertexArray:a,labelPlaneMatrix:o,tileAnchorPoint:r,distanceFromAnchor:n,getElevation:l,previousVertex:h,direction:c,absOffsetX:u}=i;if(s.projections[e])return s.projections[e];const d=new t.P(a.getx(e),a.gety(e)),_=ht(d,o,l);if(_.signedDistanceFromCamera>0)return s.projections[e]=_.point,_.point;const p=e-c;return ft(0===n?r:new t.P(a.getx(p),a.gety(p)),d,h,u-n+1,o,l)}function vt(t,e,i){return t._unit()._perp()._mult(e*i)}function xt(e,i,s,a,o,r,n,l){const{projectionCache:h,direction:c}=l;if(h.offsets[e])return h.offsets[e];const u=s.add(i);if(e+c<a||e+c>=o)return h.offsets[e]=u,u;const d=gt(e+c,l),_=vt(d.sub(s),n,c),p=s.add(_),m=d.add(_);return h.offsets[e]=t.al(r,u,p,m)||u,h.offsets[e]}function yt(t,e,i,s,a,o,r,n,l,h,c,u,d,_){const p=s?t-e:t+e;let m=p>0?1:-1,f=0;s&&(m*=-1,f=Math.PI),m<0&&(f+=Math.PI);let g,v,x=m>0?n+r:n+r+1,y=a,b=a,w=0,T=0;const I=Math.abs(p),E=[];let S;for(;w+T<=I;){if(x+=m,x<n||x>=l)return null;w+=T,b=y,v=g;const t={projectionCache:u,lineVertexArray:h,labelPlaneMatrix:c,tileAnchorPoint:o,distanceFromAnchor:w,getElevation:_,previousVertex:b,direction:m,absOffsetX:I};if(y=gt(x,t),0===i)E.push(b),S=y.sub(b);else {let e;const s=y.sub(b);e=0===s.mag()?vt(gt(x+m,t).sub(y),i,m):vt(s,i,m),v||(v=b.add(e)),g=xt(x,e,y,n,l,v,i,t),E.push(v),S=g.sub(v);}T=S.mag();}const C=S._mult((I-w)/T)._add(v||b),P=f+Math.atan2(y.y-b.y,y.x-b.x);return E.push(C),{point:C,angle:d?P:0,path:E}}const bt=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function wt(t,e){for(let i=0;i<t;i++){const t=e.length;e.resize(t+4),e.float32.set(bt,3*t);}}function Tt(t,e,i){const s=e[0],a=e[1];return t[0]=i[0]*s+i[4]*a+i[12],t[1]=i[1]*s+i[5]*a+i[13],t[3]=i[3]*s+i[7]*a+i[15],t}const It=100;class Et{constructor(t,e=new rt(t.width+200,t.height+200,25),i=new rt(t.width+200,t.height+200,25)){this.transform=t,this.grid=e,this.ignoredGrid=i,this.pitchfactor=Math.cos(t._pitch)*t.cameraToCenterDistance,this.screenRightBoundary=t.width+It,this.screenBottomBoundary=t.height+It,this.gridRightBoundary=t.width+200,this.gridBottomBoundary=t.height+200,this.perspectiveRatioCutoff=.6;}placeCollisionBox(t,e,i,s,a,o){const r=this.projectAndGetPerspectiveRatio(s,t.anchorPointX,t.anchorPointY,o),n=i*r.perspectiveRatio,l=t.x1*n+r.point.x,h=t.y1*n+r.point.y,c=t.x2*n+r.point.x,u=t.y2*n+r.point.y;return !this.isInsideGrid(l,h,c,u)||"always"!==e&&this.grid.hitTest(l,h,c,u,e,a)||r.perspectiveRatio<this.perspectiveRatioCutoff?{box:[],offscreen:!1}:{box:[l,h,c,u],offscreen:this.isOffscreen(l,h,c,u)}}placeCollisionCircles(e,i,s,a,o,r,n,l,h,c,u,d,_,p){const m=[],f=new t.P(i.anchorX,i.anchorY),g=ht(f,r,p),v=ct(this.transform.cameraToCenterDistance,g.signedDistanceFromCamera),x=(c?o/v:o*v)/t.ap,y=ht(f,n,p).point,b=_t(x,a,i.lineOffsetX*x,i.lineOffsetY*x,!1,y,f,i,s,n,{projections:{},offsets:{}},!1,p);let w=!1,T=!1,I=!0;if(b){const i=.5*d*v+_,s=new t.P(-100,-100),a=new t.P(this.screenRightBoundary,this.screenBottomBoundary),o=new at,r=b.first,n=b.last;let c=[];for(let t=r.path.length-1;t>=1;t--)c.push(r.path[t]);for(let t=1;t<n.path.length;t++)c.push(n.path[t]);const f=2.5*i;if(l){const t=c.map((t=>ht(t,l,p)));c=t.some((t=>t.signedDistanceFromCamera<=0))?[]:t.map((t=>t.point));}let g=[];if(c.length>0){const e=c[0].clone(),i=c[0].clone();for(let t=1;t<c.length;t++)e.x=Math.min(e.x,c[t].x),e.y=Math.min(e.y,c[t].y),i.x=Math.max(i.x,c[t].x),i.y=Math.max(i.y,c[t].y);g=e.x>=s.x&&i.x<=a.x&&e.y>=s.y&&i.y<=a.y?[c]:i.x<s.x||e.x>a.x||i.y<s.y||e.y>a.y?[]:t.am([c],s.x,s.y,a.x,a.y);}for(const t of g){o.reset(t,.25*i);let s=0;s=o.length<=.5*i?1:Math.ceil(o.paddedLength/f)+1;for(let t=0;t<s;t++){const a=t/Math.max(s-1,1),r=o.lerp(a),n=r.x+It,l=r.y+It;m.push(n,l,i,0);const c=n-i,d=l-i,_=n+i,p=l+i;if(I=I&&this.isOffscreen(c,d,_,p),T=T||this.isInsideGrid(c,d,_,p),"always"!==e&&this.grid.hitTestCircle(n,l,i,e,u)&&(w=!0,!h))return {circles:[],offscreen:!1,collisionDetected:w}}}}return {circles:!h&&w||!T||v<this.perspectiveRatioCutoff?[]:m,offscreen:I,collisionDetected:w}}queryRenderedSymbols(e){if(0===e.length||0===this.grid.keysLength()&&0===this.ignoredGrid.keysLength())return {};const i=[];let s=1/0,a=1/0,o=-1/0,r=-1/0;for(const n of e){const e=new t.P(n.x+It,n.y+It);s=Math.min(s,e.x),a=Math.min(a,e.y),o=Math.max(o,e.x),r=Math.max(r,e.y),i.push(e);}const n=this.grid.query(s,a,o,r).concat(this.ignoredGrid.query(s,a,o,r)),l={},h={};for(const e of n){const s=e.key;if(void 0===l[s.bucketInstanceId]&&(l[s.bucketInstanceId]={}),l[s.bucketInstanceId][s.featureIndex])continue;const a=[new t.P(e.x1,e.y1),new t.P(e.x2,e.y1),new t.P(e.x2,e.y2),new t.P(e.x1,e.y2)];t.an(i,a)&&(l[s.bucketInstanceId][s.featureIndex]=!0,void 0===h[s.bucketInstanceId]&&(h[s.bucketInstanceId]=[]),h[s.bucketInstanceId].push(s.featureIndex));}return h}insertCollisionBox(t,e,i,s,a,o){(i?this.ignoredGrid:this.grid).insert({bucketInstanceId:s,featureIndex:a,collisionGroupID:o,overlapMode:e},t[0],t[1],t[2],t[3]);}insertCollisionCircles(t,e,i,s,a,o){const r=i?this.ignoredGrid:this.grid,n={bucketInstanceId:s,featureIndex:a,collisionGroupID:o,overlapMode:e};for(let e=0;e<t.length;
41e+=4)r.insertCircle(n,t[e],t[e+1],t[e+2]);}projectAndGetPerspectiveRatio(e,i,s,a){let o;return a?(o=[i,s,a(i,s),1],t.ag(o,o,e)):(o=[i,s,0,1],Tt(o,o,e)),{point:new t.P((o[0]/o[3]+1)/2*this.transform.width+It,(-o[1]/o[3]+1)/2*this.transform.height+It),perspectiveRatio:.5+this.transform.cameraToCenterDistance/o[3]*.5}}isOffscreen(t,e,i,s){return i<It||t>=this.screenRightBoundary||s<It||e>this.screenBottomBoundary}isInsideGrid(t,e,i,s){return i>=0&&t<this.gridRightBoundary&&s>=0&&e<this.gridBottomBoundary}getViewportMatrix(){const e=t.ao([]);return t.$(e,e,[-100,-100,0]),e}}function St(e,i,s){return i*(t.N/(e.tileSize*Math.pow(2,s-e.tileID.overscaledZ)))}class Ct{constructor(t,e,i,s){this.opacity=t?Math.max(0,Math.min(1,t.opacity+(t.placed?e:-e))):s&&i?1:0,this.placed=i;}isHidden(){return 0===this.opacity&&!this.placed}}class Pt{constructor(t,e,i,s,a){this.text=new Ct(t?t.text:null,e,i,a),this.icon=new Ct(t?t.icon:null,e,s,a);}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class Dt{constructor(t,e,i){this.text=t,this.icon=e,this.skipFade=i;}}class Mt{constructor(){this.invProjMatrix=t.Z(),this.viewportMatrix=t.Z(),this.circles=[];}}class zt{constructor(t,e,i,s,a){this.bucketInstanceId=t,this.featureIndex=e,this.sourceLayerIndex=i,this.bucketIndex=s,this.tileID=a;}}class Lt{constructor(t){this.crossSourceCollisions=t,this.maxGroupID=0,this.collisionGroups={};}get(t){if(this.crossSourceCollisions)return {ID:0,predicate:null};if(!this.collisionGroups[t]){const e=++this.maxGroupID;this.collisionGroups[t]={ID:e,predicate:t=>t.collisionGroupID===e};}return this.collisionGroups[t]}}function At(e,i,s,a,o){const{horizontalAlign:r,verticalAlign:n}=t.au(e);return new t.P(-(r-.5)*i+a[0]*o,-(n-.5)*s+a[1]*o)}function Rt(e,i,s,a,o,r){const{x1:n,x2:l,y1:h,y2:c,anchorPointX:u,anchorPointY:d}=e,_=new t.P(i,s);return a&&_._rotate(o?r:-r),{x1:n+_.x,y1:h+_.y,x2:l+_.x,y2:c+_.y,anchorPointX:u,anchorPointY:d}}class kt{constructor(t,e,i,s,a){this.transform=t.clone(),this.terrain=e,this.collisionIndex=new Et(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=i,this.retainedQueryData={},this.collisionGroups=new Lt(s),this.collisionCircleArrays={},this.prevPlacement=a,a&&(a.prevPlacement=void 0),this.placedOrientations={};}getBucketParts(e,i,s,a){const o=s.getBucket(i),r=s.latestFeatureIndex;if(!o||!r||i.id!==o.layerIds[0])return;const n=s.collisionBoxArray,l=o.layers[0].layout,h=Math.pow(2,this.transform.zoom-s.tileID.overscaledZ),c=s.tileSize/t.N,u=this.transform.calculatePosMatrix(s.tileID.toUnwrapped()),d="map"===l.get("text-pitch-alignment"),_="map"===l.get("text-rotation-alignment"),p=St(s,1,this.transform.zoom),m=nt(u,d,_,this.transform,p);let f=null;if(d){const e=lt(u,d,_,this.transform,p);f=t.a1([],this.transform.labelPlaneMatrix,e);}this.retainedQueryData[o.bucketInstanceId]=new zt(o.bucketInstanceId,r,o.sourceLayerIndex,o.index,s.tileID);const g={bucket:o,layout:l,posMatrix:u,textLabelPlaneMatrix:m,labelToScreenMatrix:f,scale:h,textPixelRatio:c,holdingForFade:s.holdingForFade(),collisionBoxArray:n,partiallyEvaluatedTextSize:t.ah(o.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(o.sourceID)};if(a)for(const t of o.sortKeyRanges){const{sortKey:i,symbolInstanceStart:s,symbolInstanceEnd:a}=t;e.push({sortKey:i,symbolInstanceStart:s,symbolInstanceEnd:a,parameters:g});}else e.push({symbolInstanceStart:0,symbolInstanceEnd:o.symbolInstances.length,parameters:g});}attemptAnchorPlacement(e,i,s,a,o,r,n,l,h,c,u,d,_,p,m,f){const g=t.aq[e.textAnchor],v=[e.textOffset0,e.textOffset1],x=At(g,s,a,v,o),y=this.collisionIndex.placeCollisionBox(Rt(i,x.x,x.y,r,n,this.transform.angle),u,l,h,c.predicate,f);if((!m||0!==this.collisionIndex.placeCollisionBox(Rt(m,x.x,x.y,r,n,this.transform.angle),u,l,h,c.predicate,f).box.length)&&y.box.length>0){let t;if(this.prevPlacement&&this.prevPlacement.variableOffsets[d.crossTileID]&&this.prevPlacement.placements[d.crossTileID]&&this.prevPlacement.placements[d.crossTileID].text&&(t=this.prevPlacement.variableOffsets[d.crossTileID].anchor),0===d.crossTileID)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[d.crossTileID]={textOffset:v,width:s,height:a,anchor:g,textBoxScale:o,prevAnchor:t},this.markUsedJustification(_,g,d,p),_.allowVerticalPlacement&&(this.markUsedOrientation(_,p,d),this.placedOrientations[d.crossTileID]=p),{shift:x,placedGlyphBoxes:y}}}placeLayerBucketPart(e,i,s){const{bucket:a,layout:o,posMatrix:r,textLabelPlaneMatr
41ix:n,labelToScreenMatrix:l,textPixelRatio:h,holdingForFade:c,collisionBoxArray:u,partiallyEvaluatedTextSize:d,collisionGroup:_}=e.parameters,p=o.get("text-optional"),m=o.get("icon-optional"),f=t.ar(o,"text-overlap","text-allow-overlap"),g="always"===f,v=t.ar(o,"icon-overlap","icon-allow-overlap"),x="always"===v,y="map"===o.get("text-rotation-alignment"),b="map"===o.get("text-pitch-alignment"),w="none"!==o.get("icon-text-fit"),T="viewport-y"===o.get("symbol-z-order"),I=g&&(x||!a.hasIconData()||m),E=x&&(g||!a.hasTextData()||p);!a.collisionArrays&&u&&a.deserializeCollisionBoxes(u);const S=this.retainedQueryData[a.bucketInstanceId].tileID,C=this.terrain?(t,e)=>this.terrain.getElevation(S,t,e):null,P=(e,u)=>{var x,T;if(i[e.crossTileID])return;if(c)return void(this.placements[e.crossTileID]=new Dt(!1,!1,!1));let S=!1,P=!1,D=!0,M=null,z={box:null,offscreen:null},L={box:null,offscreen:null},A=null,R=null,k=null,F=0,B=0,O=0;u.textFeatureIndex?F=u.textFeatureIndex:e.useRuntimeCollisionCircles&&(F=e.featureIndex),u.verticalTextFeatureIndex&&(B=u.verticalTextFeatureIndex);const N=u.textBox;if(N){const i=i=>{let s=t.ai.horizontal;if(a.allowVerticalPlacement&&!i&&this.prevPlacement){const t=this.prevPlacement.placedOrientations[e.crossTileID];t&&(this.placedOrientations[e.crossTileID]=t,s=t,this.markUsedOrientation(a,s,e));}return s},s=(i,s)=>{if(a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&u.verticalTextBox){for(const e of a.writingModes)if(e===t.ai.vertical?(z=s(),L=z):z=i(),z&&z.box&&z.box.length)break}else z=i();},o=e.textAnchorOffsetStartIndex,n=e.textAnchorOffsetEndIndex;if(n===o){const o=(t,i)=>{const s=this.collisionIndex.placeCollisionBox(t,f,h,r,_.predicate,C);return s&&s.box&&s.box.length&&(this.markUsedOrientation(a,i,e),this.placedOrientations[e.crossTileID]=i),s};s((()=>o(N,t.ai.horizontal)),(()=>{const i=u.verticalTextBox;return a.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&i?o(i,t.ai.vertical):{box:null,offscreen:null}})),i(z&&z.box&&z.box.length);}else {let l=t.aq[null===(T=null===(x=this.prevPlacement)||void 0===x?void 0:x.variableOffsets[e.crossTileID])||void 0===T?void 0:T.anchor];const c=(t,i,s)=>{const c=t.x2-t.x1,u=t.y2-t.y1,d=e.textBoxScale,p=w&&"never"===v?i:null;let m={box:[],offscreen:!1},g="never"===f?1:2,x="never";l&&g++;for(let i=0;i<g;i++){for(let i=o;i<n;i++){const o=a.textAnchorOffsets.get(i);if(l&&o.textAnchor!==l)continue;const n=this.attemptAnchorPlacement(o,t,c,u,d,y,b,h,r,_,x,e,a,s,p,C);if(n&&(m=n.placedGlyphBoxes,m&&m.box&&m.box.length))return S=!0,M=n.shift,m}l?l=null:x=f;}return m};s((()=>c(N,u.iconBox,t.ai.horizontal)),(()=>{const i=u.verticalTextBox;return a.allowVerticalPlacement&&!(z&&z.box&&z.box.length)&&e.numVerticalGlyphVertices>0&&i?c(i,u.verticalIconBox,t.ai.vertical):{box:null,offscreen:null}})),z&&(S=z.box,D=z.offscreen);const d=i(z&&z.box);if(!S&&this.prevPlacement){const t=this.prevPlacement.variableOffsets[e.crossTileID];t&&(this.variableOffsets[e.crossTileID]=t,this.markUsedJustification(a,t.anchor,e,d));}}}if(A=z,S=A&&A.box&&A.box.length>0,D=A&&A.offscreen,e.useRuntimeCollisionCircles){const i=a.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),h=t.aj(a.textSizeData,d,i),c=o.get("text-padding");R=this.collisionIndex.placeCollisionCircles(f,i,a.lineVertexArray,a.glyphOffsetArray,h,r,n,l,s,b,_.predicate,e.collisionCircleDiameter,c,C),R.circles.length&&R.collisionDetected&&!s&&t.w("Collisions detected, but collision boxes are not shown"),S=g||R.circles.length>0&&!R.collisionDetected,D=D&&R.offscreen;}if(u.iconFeatureIndex&&(O=u.iconFeatureIndex),u.iconBox){const t=t=>{const e=w&&M?Rt(t,M.x,M.y,y,b,this.transform.angle):t;return this.collisionIndex.placeCollisionBox(e,v,h,r,_.predicate,C)};L&&L.box&&L.box.length&&u.verticalIconBox?(k=t(u.verticalIconBox),P=k.box.length>0):(k=t(u.iconBox),P=k.box.length>0),D=D&&k.offscreen;}const U=p||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,Z=m||0===e.numIconVertices;if(U||Z?Z?U||(P=P&&S):S=P&&S:P=S=P&&S,S&&A&&A.box&&this.collisionIndex.insertCollisionBox(A.box,f,o.get("text-ignore-placement"),a.bucketInstanceId,L&&L.box&&B?B:F,_.ID),P&&k&&this.collisionIndex.insertCollisionBox(k.box,v,o.get("icon-ignore-placement"),a.bucketInstanceId,O,_.ID),R&&(S&&this.collisionIndex.insertCollisionCircles(R.circles,f,o.get("text-ignore-placement"),a.bucketInstanceId,F,_.ID),s)){const t=a.bucketInstanceId;let e=this.collisionCircleArrays[t];void 0===e&&(e=this.collisionCircleArrays[t]=new Mt);for(let t=0;t<R.circles.length;t+=4)e.circles.push(R.circles[t+0]),e.circles.push(R.circles[t+1]),e.circles.push(R.circles[t+2]),e.circles.push(R.collisionDetected?1:0);}if(0===e.crossTileID)throw new Error("symbolInstance.crossTileID can't be 0");if(0===a.bucketInstanceId)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[e.crossTileID]=new Dt(S||I,P||E,D||a.justReloaded),i[e.crossTileID]=!0;};
vendor: 10,613 bytes, line 41
41if(T){if(0!==e.symbolInstanceStart)throw new Error("bucket.bucketInstanceId should be 0");const t=a.getSortedSymbolIndexes(this.transform.angle);for(let e=t.length-1;e>=0;--e){const i=t[e];P(a.symbolInstances.get(i),a.collisionArrays[i]);}}else for(let t=e.symbolInstanceStart;t<e.symbolInstanceEnd;t++)P(a.symbolInstances.get(t),a.collisionArrays[t]);if(s&&a.bucketInstanceId in this.collisionCircleArrays){const e=this.collisionCircleArrays[a.bucketInstanceId];t.as(e.invProjMatrix,r),e.viewportMatrix=this.collisionIndex.getViewportMatrix();}a.justReloaded=!1;}markUsedJustification(e,i,s,a){let o;o=a===t.ai.vertical?s.verticalPlacedTextSymbolIndex:{left:s.leftJustifiedTextSymbolIndex,center:s.centerJustifiedTextSymbolIndex,right:s.rightJustifiedTextSymbolIndex}[t.at(i)];const r=[s.leftJustifiedTextSymbolIndex,s.centerJustifiedTextSymbolIndex,s.rightJustifiedTextSymbolIndex,s.verticalPlacedTextSymbolIndex];for(const t of r)t>=0&&(e.text.placedSymbolArray.get(t).crossTileID=o>=0&&t!==o?0:s.crossTileID);}markUsedOrientation(e,i,s){const a=i===t.ai.horizontal||i===t.ai.horizontalOnly?i:0,o=i===t.ai.vertical?i:0,r=[s.leftJustifiedTextSymbolIndex,s.centerJustifiedTextSymbolIndex,s.rightJustifiedTextSymbolIndex];for(const t of r)e.text.placedSymbolArray.get(t).placedOrientation=a;s.verticalPlacedTextSymbolIndex&&(e.text.placedSymbolArray.get(s.verticalPlacedTextSymbolIndex).placedOrientation=o);}commit(t){this.commitTime=t,this.zoomAtLastRecencyCheck=this.transform.zoom;const e=this.prevPlacement;let i=!1;this.prevZoomAdjustment=e?e.zoomAdjustment(this.transform.zoom):0;const s=e?e.symbolFadeChange(t):1,a=e?e.opacities:{},o=e?e.variableOffsets:{},r=e?e.placedOrientations:{};for(const t in this.placements){const e=this.placements[t],o=a[t];o?(this.opacities[t]=new Pt(o,s,e.text,e.icon),i=i||e.text!==o.text.placed||e.icon!==o.icon.placed):(this.opacities[t]=new Pt(null,s,e.text,e.icon,e.skipFade),i=i||e.text||e.icon);}for(const t in a){const e=a[t];if(!this.opacities[t]){const a=new Pt(e,s,!1,!1);a.isHidden()||(this.opacities[t]=a,i=i||e.text.placed||e.icon.placed);}}for(const t in o)this.variableOffsets[t]||!this.opacities[t]||this.opacities[t].isHidden()||(this.variableOffsets[t]=o[t]);for(const t in r)this.placedOrientations[t]||!this.opacities[t]||this.opacities[t].isHidden()||(this.placedOrientations[t]=r[t]);if(e&&void 0===e.lastPlacementChangeTime)throw new Error("Last placement time for previous placement is not defined");i?this.lastPlacementChangeTime=t:"number"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=e?e.lastPlacementChangeTime:t);}updateLayerOpacities(t,e){const i={};for(const s of e){const e=s.getBucket(t);e&&s.latestFeatureIndex&&t.id===e.layerIds[0]&&this.updateBucketOpacities(e,i,s.collisionBoxArray);}}updateBucketOpacities(e,i,s){e.hasTextData()&&(e.text.opacityVertexArray.clear(),e.text.hasVisibleVertices=!1),e.hasIconData()&&(e.icon.opacityVertexArray.clear(),e.icon.hasVisibleVertices=!1),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexArray.clear(),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexArray.clear();const a=e.layers[0],o=a.layout,r=new Pt(null,0,!1,!1,!0),n=o.get("text-allow-overlap"),l=o.get("icon-allow-overlap"),h=a._unevaluatedLayout.hasValue("text-variable-anchor")||a._unevaluatedLayout.hasValue("text-variable-anchor-offset"),c="map"===o.get("text-rotation-alignment"),u="map"===o.get("text-pitch-alignment"),d="none"!==o.get("icon-text-fit"),_=new Pt(null,0,n&&(l||!e.hasIconData()||o.get("icon-optional")),l&&(n||!e.hasTextData()||o.get("text-optional")),!0);!e.collisionArrays&&s&&(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData())&&e.deserializeCollisionBoxes(s);const p=(t,e,i)=>{for(let s=0;s<e/4;s++)t.opacityVertexArray.emplaceBack(i);t.hasVisibleVertices=t.hasVisibleVertices||i!==qt;};for(let s=0;s<e.symbolInstances.length;s++){const a=e.symbolInstances.get(s),{numHorizontalGlyphVertices:o,numVerticalGlyphVertices:n,crossTileID:l}=a;let m=this.opacities[l];i[l]?m=r:m||(m=_,this.opacities[l]=m),i[l]=!0;const f=a.numIconVertices>0,g=this.placedOrientations[a.crossTileID],v=g===t.ai.vertical,x=g===t.ai.horizontal||g===t.ai.horizontalOnly;if(o>0||n>0){const t=Vt(m.text);p(e.text,o,v?qt:t),p(e.text,n,x?qt:t);const i=m.text.isHidden();[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex].forEach((t=>{t>=0&&(e.text.placedSymbolArray.get(t).hidden=i||v?1:0);})),a.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).hidden=i||x?1:0);const s=this.variableOffsets[a.crossTileID];s&&this.markUsedJustification(e,s.anchor,a,g);const r=this.placedOrientations[a.crossTileID];r&&(this.markUsedJustification(e,"left",a,r),this.markUsedOrientation(e,r,a));}if(f){const t=Vt(m.icon),i=!(d&&a.verticalPlacedIconSymbolIndex&&v);a.placedIconSymbolIndex>=0&&(p(e.icon,a.numIconVertices,i?t:qt),e.icon.placedSymbolArray.get(a.placedIconSymbolIndex).hidden=m.icon.isHidden()),a.verticalPlacedIconSymbolIndex>=0&&(p(e.icon,a.numVerticalIconVertices,i?qt:t),e.icon.placedSymbolArray.get(a.verticalPlacedIconSymbolIndex).hidden=m.icon.isHidden());}if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){const i=e.collisionArrays[s];if(i){let s=new t.P(0,0);if(i.textBox||i.verticalTextBox){let t=!0;if(h){const e=this.variableOffsets[l];e?(s=At(e.anchor,e.width,e.height,e.textOffset,e.textBoxScale),c&&s._rotate(u?this.transform.angle:-this.transform.angle)):t=!1;}i.textBox&&Ft(e.textCollisionBox.collisionVertexArray,m.text.placed,!t||v,s.x,s.y),i.verticalTextBox&&Ft(e.textCollisionBox.collisionVertexArray,m.text.placed,!t||x,s.x,s.y);}const a=Boolean(!x&&i.verticalIconBox);i.iconBox&&Ft(e.iconCollisionBox.collisionVertexArray,m.icon.placed,a,d?s.x:0,d?s.y:0),i.verticalIconBox&&Ft(e.iconCollisionBox.collisionVertexArray,m.icon.placed,!a,d?s.x:0,d?s.y:0);}}}if(e.sortFeatures(this.transform.angle),this.retainedQueryData[e.bucketInstanceId]&&(this.retainedQueryData[e.bucketInstanceId].featureSortOrder=e.featureSortOrder),e.hasTextData()&&e.text.opacityVertexBuffer&&e.text.opacityVertexBuffer.updateData(e.text.opacityVertexArray),e.hasIconData()&&e.icon.opacityVertexBuffer&&e.icon.opacityVertexBuffer.updateData(e.icon.opacityVertexArray),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexBuffer&&e.iconCollisionBox.collisionVertexBuffer.updateData(e.iconCollisionBox.collisionVertexArray),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexBuffer&&e.textCollisionBox.collisionVertexBuffer.updateData(e.textCollisionBox.collisionVertexArray),e.text.opacityVertexArray.length!==e.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${e.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${e.text.layoutVertexArray.length}) / 4`);if(e.icon.opacityVertexArray.length!==e.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${e.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${e.icon.layoutVertexArray.length}) / 4`);if(e.bucketInstanceId in this.collisionCircleArrays){const t=this.collisionCircleArrays[e.bucketInstanceId];e.placementInvProjMatrix=t.invProjMatrix,e.placementViewportMatrix=t.viewportMatrix,e.collisionCircleArray=t.circles,delete this.collisionCircleArrays[e.bucketInstanceId];}}symbolFadeChange(t){return 0===this.fadeDuration?1:(t-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(t){return Math.max(0,(this.transform.zoom-t)/1.5)}hasTransitions(t){return this.stale||t-this.lastPlacementChangeTime<this.fadeDuration}stillRecent(t,e){const i=this.zoomAtLastRecencyCheck===e?1-this.zoomAdjustment(e):1;return this.zoomAtLastRecencyCheck=e,this.commitTime+this.fadeDuration*i>t}setStale(){this.stale=!0;}}function Ft(t,e,i,s,a){t.emplaceBack(e?1:0,i?1:0,s||0,a||0),t.emplaceBack(e?1:0,i?1:0,s||0,a||0),t.emplaceBack(e?1:0,i?1:0,s||0,a||0),t.emplaceBack(e?1:0,i?1:0,s||0,a||0);}const Bt=Math.pow(2,25),Ot=Math.pow(2,24),Nt=Math.pow(2,17),Ut=Math.pow(2,16),Zt=Math.pow(2,9),Gt=Math.pow(2,8),jt=Math.pow(2,1);function Vt(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;const e=t.placed?1:0,i=Math.floor(127*t.opacity);return i*Bt+e*Ot+i*Nt+e*Ut+i*Zt+e*Gt+i*jt+e}const qt=0;class $t{constructor(t){this._sortAcrossTiles="viewport-y"!==t.layout.get("symbol-z-order")&&!t.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[];}continuePlacement(t,e,i,s,a){const o=this._bucketParts;for(;this._currentTileIndex<t.length;)if(e.getBucketParts(o,s,t[this._currentTileIndex],this._sortAcrossTiles),this._currentTileIndex++,a())return !0;for(this._sortAcrossTiles&&(this._sortAcrossTiles=!1,o.sort(((t,e)=>t.sortKey-e.sortKey)));this._currentPartIndex<o.length;)if(e.placeLayerBucketPart(o[this._currentPartIndex],this._seenCrossTileIDs,i),this._currentPartIndex++,a())return !0;return !1}}class Wt{constructor(t,e,i,s,a,o,r,n){this.placement=new kt(t,e,o,r,n),this._currentPlacementIndex=i.length-1,this._forceFullPlacement=s,this._showCollisionBoxes=a,this._done=!1;}isDone(){return this._done}continuePlacement(e,i,s){const a=t.h.now(),o=()=>!this._forceFullPlacement&&t.h.now()-a>2;for(;this._currentPlacementIndex>=0;){const t=i[e[this._currentPlacementIndex]],a=this.placement.collisionIndex.transform.zoom;if("symbol"===t.type&&(!t.minzoom||t.minzoom<=a)&&(!t.maxzoom||t.maxzoom>a)){if(this._inProgressLayer||(this._inProgressLayer=new $t(t)),this._inProgressLayer.continuePlacement(s[t.source],this.placement,this._showCollisionBoxes,t,o))return;delete this._inProgressLayer;}this._currentPlacementIndex--;}this._done=!0;}commit(t){return this.placement.commit(t),this.placement}}const Ht=512/t.N/2;class Xt{constructor(e,i,s){this.tileID=e,this.bucketInstanceId=s,this._symbolsByKey={};const a=new Map;for(let t=0;t<i.length;t++){const e=i.get(t),s=e.key,o=a.get(s);o?o.push(e):a.set(s,[e]);}for(const[e,i]of a){const s={positions:i.map((t=>({x:Math.floor(t.anchorX*Ht),y:Math.floor(t.anchorY*Ht)}))),crossTileIDs:i.map((t=>t.crossTileID))};if(s.positions.length>128){const e=new t.av(s.positions.length,16,Uint16Array);for(const{x:t,y:i}of s.positions)e.add(t,i);e.finish(),delete s.positions,s.index=e;}this._symbolsByKey[e]=s;}}getScaledCoordinates(e,i){const{x:s,y:a,z:o}=this.tileID.canonical,{x:r,y:n,z:l}=i.canonical,h=Ht/Math.pow(2,l-o),c=(n*t.N+e.anchorY)*h,u=a*t.N*Ht;return {x:Math.floor((r*t.N+e.anchorX)*h-s*t.N*Ht),y:Math.floor(c-u)}}
41findMatches(t,e,i){const s=this.tileID.canonical.z<e.canonical.z?1:Math.pow(2,this.tileID.canonical.z-e.canonical.z);for(let a=0;a<t.length;a++){const o=t.get(a);if(o.crossTileID)continue;const r=this._symbolsByKey[o.key];if(!r)continue;const n=this.getScaledCoordinates(o,e);if(r.index){const t=r.index.range(n.x-s,n.y-s,n.x+s,n.y+s).sort();for(const e of t){const t=r.crossTileIDs[e];if(!i[t]){i[t]=!0,o.crossTileID=t;break}}}else if(r.positions)for(let t=0;t<r.positions.length;t++){const e=r.positions[t],a=r.crossTileIDs[t];if(Math.abs(e.x-n.x)<=s&&Math.abs(e.y-n.y)<=s&&!i[a]){i[a]=!0,o.crossTileID=a;break}}}}getCrossTileIDsLists(){return Object.values(this._symbolsByKey).map((({crossTileIDs:t})=>t))}}class Kt{constructor(){this.maxCrossTileID=0;}generate(){return ++this.maxCrossTileID}}class Qt{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0;}handleWrapJump(t){const e=Math.round((t-this.lng)/360);if(0!==e)for(const t in this.indexes){const i=this.indexes[t],s={};for(const t in i){const a=i[t];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+e),s[a.tileID.key]=a;}this.indexes[t]=s;}this.lng=t;}addBucket(t,e,i){if(this.indexes[t.overscaledZ]&&this.indexes[t.overscaledZ][t.key]){if(this.indexes[t.overscaledZ][t.key].bucketInstanceId===e.bucketInstanceId)return !1;this.removeBucketCrossTileIDs(t.overscaledZ,this.indexes[t.overscaledZ][t.key]);}for(let t=0;t<e.symbolInstances.length;t++)e.symbolInstances.get(t).crossTileID=0;this.usedCrossTileIDs[t.overscaledZ]||(this.usedCrossTileIDs[t.overscaledZ]={});const s=this.usedCrossTileIDs[t.overscaledZ];for(const i in this.indexes){const a=this.indexes[i];if(Number(i)>t.overscaledZ)for(const i in a){const o=a[i];o.tileID.isChildOf(t)&&o.findMatches(e.symbolInstances,t,s);}else {const o=a[t.scaledTo(Number(i)).key];o&&o.findMatches(e.symbolInstances,t,s);}}for(let t=0;t<e.symbolInstances.length;t++){const a=e.symbolInstances.get(t);a.crossTileID||(a.crossTileID=i.generate(),s[a.crossTileID]=!0);}return void 0===this.indexes[t.overscaledZ]&&(this.indexes[t.overscaledZ]={}),this.indexes[t.overscaledZ][t.key]=new Xt(t,e.symbolInstances,e.bucketInstanceId),!0}removeBucketCrossTileIDs(t,e){for(const i of e.getCrossTileIDsLists())for(const e of i)delete this.usedCrossTileIDs[t][e];}removeStaleBuckets(t){let e=!1;for(const i in this.indexes){const s=this.indexes[i];for(const a in s)t[s[a].bucketInstanceId]||(this.removeBucketCrossTileIDs(i,s[a]),delete s[a],e=!0);}return e}}class Yt{constructor(){this.layerIndexes={},this.crossTileIDs=new Kt,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={};}addLayer(t,e,i){let s=this.layerIndexes[t.id];void 0===s&&(s=this.layerIndexes[t.id]=new Qt);let a=!1;const o={};s.handleWrapJump(i);for(const i of e){const e=i.getBucket(t);e&&t.id===e.layerIds[0]&&(e.bucketInstanceId||(e.bucketInstanceId=++this.maxBucketInstanceId),s.addBucket(i.tileID,e,this.crossTileIDs)&&(a=!0),o[e.bucketInstanceId]=!0);}return s.removeStaleBuckets(o)&&(a=!0),a}pruneUnusedLayers(t){const e={};t.forEach((t=>{e[t]=!0;}));for(const t in this.layerIndexes)e[t]||delete this.layerIndexes[t];}}const Jt=(e,i)=>t.x(e,i&&i.filter((t=>"source.canvas"!==t.identifier))),te=t.F(t.ax,["addLayer","removeLayer","setPaintProperty","setLayoutProperty","setFilter","addSource","removeSource","setLayerZoomRange","setLight","setTransition","setGeoJSONSourceData","setGlyphs","setSprite"]),ee=t.F(t.ax,["setCenter","setZoom","setBearing","setPitch"]),ie=t.aw();class se extends t.E{constructor(e,i={}){super(),this.map=e,this.dispatcher=new M(st(),this,e._getMapId()),this.imageManager=new b,this.imageManager.setEventedParent(this),this.glyphManager=new E(e._requestManager,i.localIdeographFontFamily),this.lineAtlas=new D(256,512),this.crossTileSymbolIndex=new Yt,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new t.ay,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast("setReferrer",t.az());const s=this;this._rtlTextPluginCallback=se.registerForPluginStateChange((e=>{s.dispatcher.broadcast("syncRTLPluginState",{pluginStatus:e.pluginStatus,pluginURL:e.pluginURL},((e,i)=>{if(t.aA(e),i&&i.every((t=>t)))for(const t in s.sourceCaches){const e=s.sourceCaches[t].getSource().type;"vector"!==e&&"geojson"!==e||s.sourceCaches[t].reload();}}));})),this.on("data",(t=>{if("source"!==t.dataType||"metadata"!==t.sourceDataType)return;const e=this.sourceCaches[t.sourceId];if(!e)return;const i=e.getSource();if(i&&i.vectorLayerIds)for(const t in this._layers){const e=this._layers[t];
41e.source===i.id&&this._validateLayer(e);}}));}loadURL(e,i={},s){this.fire(new t.k("dataloading",{dataType:"style"})),i.validate="boolean"!=typeof i.validate||i.validate;const a=this.map._requestManager.transformRequest(e,c.Style);this._request=t.f(a,((e,a)=>{this._request=null,e?this.fire(new t.j(e)):a&&this._load(a,i,s);}));}loadJSON(e,i={},s){this.fire(new t.k("dataloading",{dataType:"style"})),this._request=t.h.frame((()=>{this._request=null,i.validate=!1!==i.validate,this._load(e,i,s);}));}loadEmpty(){this.fire(new t.k("dataloading",{dataType:"style"})),this._load(ie,{validate:!1});}_load(e,i,s){var a;const o=i.transformStyle?i.transformStyle(s,e):e;if(!i.validate||!Jt(this,t.y(o))){this._loaded=!0,this.stylesheet=o;for(const t in o.sources)this.addSource(t,o.sources[t],{validate:!1});o.sprite?this._loadSprite(o.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(o.glyphs),this._createLayers(),this.light=new P(this.stylesheet.light),this.map.setTerrain(null!==(a=this.stylesheet.terrain)&&void 0!==a?a:null),this.fire(new t.k("data",{dataType:"style"})),this.fire(new t.k("style.load"));}}_createLayers(){const e=t.aB(this.stylesheet.layers);this.dispatcher.broadcast("setLayers",e),this._order=e.map((t=>t.id)),this._layers={},this._serializedLayers=null;for(const i of e){const e=t.aC(i);e.setEventedParent(this,{layer:{id:i.id}}),this._layers[i.id]=e;}}_loadSprite(e,i=!1,s=void 0){this.imageManager.setLoaded(!1),this._spriteRequest=function(e,i,s,a){const o=g(e),r=o.length,n=s>1?"@2x":"",l={},u={},d={};for(const{id:e,url:s}of o){const o=i.transformRequest(i.normalizeSpriteURL(s,n,".json"),c.SpriteJSON),_=`${e}_${o.url}`;l[_]=t.f(o,((t,i)=>{delete l[_],u[e]=i,v(a,u,d,t,r);}));const p=i.transformRequest(i.normalizeSpriteURL(s,n,".png"),c.SpriteImage),m=`${e}_${p.url}`;l[m]=h.getImage(p,((t,i)=>{delete l[m],d[e]=i,v(a,u,d,t,r);}));}return {cancel(){for(const t of Object.values(l))t.cancel();}}}(e,this.map._requestManager,this.map.getPixelRatio(),((e,a)=>{if(this._spriteRequest=null,e)this.fire(new t.j(e));else if(a)for(const t in a){this._spritesImagesIds[t]=[];const e=this._spritesImagesIds[t]?this._spritesImagesIds[t].filter((t=>!(t in a))):[];for(const t of e)this.imageManager.removeImage(t),this._changedImages[t]=!0;for(const e in a[t]){const s="default"===t?e:`${t}:${e}`;this._spritesImagesIds[t].push(s),s in this.imageManager.images?this.imageManager.updateImage(s,a[t][e],!1):this.imageManager.addImage(s,a[t][e]),i&&(this._changedImages[s]=!0);}}this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),i&&(this._changed=!0),this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new t.k("data",{dataType:"style"})),s&&s(e);}));}_unloadSprite(){for(const t of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(t),this._changedImages[t]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new t.k("data",{dataType:"style"}));}_validateLayer(e){const i=this.sourceCaches[e.source];if(!i)return;const s=e.sourceLayer;if(!s)return;const a=i.getSource();("geojson"===a.type||a.vectorLayerIds&&-1===a.vectorLayerIds.indexOf(s))&&this.fire(new t.j(new Error(`Source layer "${s}" does not exist on source "${a.id}" as specified by style layer "${e.id}".`)));}loaded(){if(!this._loaded)return !1;if(Object.keys(this._updatedSources).length)return !1;for(const t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return !1;return !!this.imageManager.isLoaded()}_serializeByIds(t){const e=this._serializedAllLayers();if(!t||0===t.length)return Object.values(e);const i=[];for(const s of t)e[s]&&i.push(e[s]);return i}_serializedAllLayers(){let t=this._serializedLayers;if(t)return t;t=this._serializedLayers={};const e=Object.keys(this._layers);for(const i of e){const e=this._layers[i];"custom"!==e.type&&(t[i]=e.serialize());}return t}hasTransitions(){if(this.light&&this.light.hasTransition())return !0;for(const t in this.sourceCaches)if(this.sourceCaches[t].hasTransition())return !0;for(const t in this._layers)if(this._layers[t].hasTransition())return !0;return !1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(e){if(!this._loaded)return;const i=this._changed;if(this._changed){const t=Object.keys(this._updatedLayers),i=Object.keys(this._removedLayers);(t.length||i.length)&&this._updateWorkerLayers(t,i);for(const t in this._updatedSources){const e=this._updatedSources[t];if("reload"===e)this._reloadSource(t);else {if("clear"!==e)throw new Error(`Invalid action ${e}`);this._clearSource(t);}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(const t in this._updatedPaintProps)this._layers[t].updateTransitions(e);this.light.updateTransitions(e),this._resetUpdates();}const s={};for(const t in this.sourceCaches){const e=this.sourceCaches[t];s[t]=e.used,e.used=!1;}for(const t of this._order){const i=this._layers[t];
41i.recalculate(e,this._availableImages),!i.isHidden(e.zoom)&&i.source&&(this.sourceCaches[i.source].used=!0);}for(const e in s){const i=this.sourceCaches[e];s[e]!==i.used&&i.fire(new t.k("data",{sourceDataType:"visibility",dataType:"source",sourceId:e}));}this.light.recalculate(e),this.z=e.zoom,i&&this.fire(new t.k("data",{dataType:"style"}));}_updateTilesForChangedImages(){const t=Object.keys(this._changedImages);if(t.length){for(const e in this.sourceCaches)this.sourceCaches[e].reloadTilesForDependencies(["icons","patterns"],t);this._changedImages={};}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(const t in this.sourceCaches)this.sourceCaches[t].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1;}}_updateWorkerLayers(t,e){this.dispatcher.broadcast("updateLayers",{layers:this._serializeByIds(t),removedIds:e});}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1;}setState(e,i={}){this._checkLoaded();const s=this.serialize();if(e=i.transformStyle?i.transformStyle(s,e):e,Jt(this,t.y(e)))return !1;(e=t.aD(e)).layers=t.aB(e.layers);const a=t.aE(s,e).filter((t=>!(t.command in ee)));if(0===a.length)return !1;const o=a.filter((t=>!(t.command in te)));if(o.length>0)throw new Error(`Unimplemented: ${o.map((t=>t.command)).join(", ")}.`);for(const t of a)"setTransition"!==t.command&&this[t.command].apply(this,t.args);return this.stylesheet=e,this._serializedLayers=null,!0}addImage(e,i){if(this.getImage(e))return this.fire(new t.j(new Error(`An image named "${e}" already exists.`)));this.imageManager.addImage(e,i),this._afterImageUpdated(e);}updateImage(t,e){this.imageManager.updateImage(t,e);}getImage(t){return this.imageManager.getImage(t)}removeImage(e){if(!this.getImage(e))return this.fire(new t.j(new Error(`An image named "${e}" does not exist.`)));this.imageManager.removeImage(e),this._afterImageUpdated(e);}_afterImageUpdated(e){this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new t.k("data",{dataType:"style"}));}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(e,i,s={}){if(this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error(`Source "${e}" already exists.`);if(!i.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(i).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(i.type)>=0&&this._validate(t.y.source,`sources.${e}`,i,null,s))return;this.map&&this.map._collectResourceTiming&&(i.collectResourceTiming=!0);const a=this.sourceCaches[e]=new K(e,i,this.dispatcher);a.style=this,a.setEventedParent(this,(()=>({isSourceLoaded:a.loaded(),source:a.serialize(),sourceId:e}))),a.onAdd(this.map),this._changed=!0;}removeSource(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error("There is no source with this ID");for(const i in this._layers)if(this._layers[i].source===e)return this.fire(new t.j(new Error(`Source "${e}" cannot be removed while layer "${i}" is using it.`)));const i=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],i.fire(new t.k("data",{sourceDataType:"metadata",dataType:"source",sourceId:e})),i.setEventedParent(null),i.onRemove(this.map),this._changed=!0;}setGeoJSONSourceData(t,e){if(this._checkLoaded(),void 0===this.sourceCaches[t])throw new Error(`There is no source with this ID=${t}`);const i=this.sourceCaches[t].getSource();if("geojson"!==i.type)throw new Error(`geojsonSource.type is ${i.type}, which is !== 'geojson`);i.setData(e),this._changed=!0;}getSource(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()}addLayer(e,i,s={}){this._checkLoaded();const a=e.id;if(this.getLayer(a))return void this.fire(new t.j(new Error(`Layer "${a}" already exists on this map.`)));let o;if("custom"===e.type){if(Jt(this,t.aF(e)))return;o=t.aC(e);}else {if("source"in e&&"object"==typeof e.source&&(this.addSource(a,e.source),e=t.aD(e),e=t.e(e,{source:a}
vendor: 6,055 bytes, line 41
41)),this._validate(t.y.layer,`layers.${a}`,e,{arrayIndex:-1},s))return;o=t.aC(e),this._validateLayer(o),o.setEventedParent(this,{layer:{id:a}});}const r=i?this._order.indexOf(i):this._order.length;if(i&&-1===r)this.fire(new t.j(new Error(`Cannot add layer "${a}" before non-existing layer "${i}".`)));else {if(this._order.splice(r,0,a),this._layerOrderChanged=!0,this._layers[a]=o,this._removedLayers[a]&&o.source&&"custom"!==o.type){const t=this._removedLayers[a];delete this._removedLayers[a],t.type!==o.type?this._updatedSources[o.source]="clear":(this._updatedSources[o.source]="reload",this.sourceCaches[o.source].pause());}this._updateLayer(o),o.onAdd&&o.onAdd(this.map);}}moveLayer(e,i){if(this._checkLoaded(),this._changed=!0,!this._layers[e])return void this.fire(new t.j(new Error(`The layer '${e}' does not exist in the map's style and cannot be moved.`)));if(e===i)return;const s=this._order.indexOf(e);this._order.splice(s,1);const a=i?this._order.indexOf(i):this._order.length;i&&-1===a?this.fire(new t.j(new Error(`Cannot move layer "${e}" before non-existing layer "${i}".`))):(this._order.splice(a,0,e),this._layerOrderChanged=!0);}removeLayer(e){this._checkLoaded();const i=this._layers[e];if(!i)return void this.fire(new t.j(new Error(`Cannot remove non-existing layer "${e}".`)));i.setEventedParent(null);const s=this._order.indexOf(e);this._order.splice(s,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=i,delete this._layers[e],this._serializedLayers&&delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],i.onRemove&&i.onRemove(this.map);}getLayer(t){return this._layers[t]}getLayersOrder(){return [...this._order]}hasLayer(t){return t in this._layers}setLayerZoomRange(e,i,s){this._checkLoaded();const a=this.getLayer(e);a?a.minzoom===i&&a.maxzoom===s||(null!=i&&(a.minzoom=i),null!=s&&(a.maxzoom=s),this._updateLayer(a)):this.fire(new t.j(new Error(`Cannot set the zoom range of non-existing layer "${e}".`)));}setFilter(e,i,s={}){this._checkLoaded();const a=this.getLayer(e);if(a){if(!t.aG(a.filter,i))return null==i?(a.filter=void 0,void this._updateLayer(a)):void(this._validate(t.y.filter,`layers.${a.id}.filter`,i,null,s)||(a.filter=t.aD(i),this._updateLayer(a)))}else this.fire(new t.j(new Error(`Cannot filter non-existing layer "${e}".`)));}getFilter(e){return t.aD(this.getLayer(e).filter)}setLayoutProperty(e,i,s,a={}){this._checkLoaded();const o=this.getLayer(e);o?t.aG(o.getLayoutProperty(i),s)||(o.setLayoutProperty(i,s,a),this._updateLayer(o)):this.fire(new t.j(new Error(`Cannot style non-existing layer "${e}".`)));}getLayoutProperty(e,i){const s=this.getLayer(e);if(s)return s.getLayoutProperty(i);this.fire(new t.j(new Error(`Cannot get style of non-existing layer "${e}".`)));}setPaintProperty(e,i,s,a={}){this._checkLoaded();const o=this.getLayer(e);o?t.aG(o.getPaintProperty(i),s)||(o.setPaintProperty(i,s,a)&&this._updateLayer(o),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.j(new Error(`Cannot style non-existing layer "${e}".`)));}getPaintProperty(t,e){return this.getLayer(t).getPaintProperty(e)}setFeatureState(e,i){this._checkLoaded();const s=e.source,a=e.sourceLayer,o=this.sourceCaches[s];if(void 0===o)return void this.fire(new t.j(new Error(`The source '${s}' does not exist in the map's style.`)));const r=o.getSource().type;"geojson"===r&&a?this.fire(new t.j(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):"vector"!==r||a?(void 0===e.id&&this.fire(new t.j(new Error("The feature id parameter must be provided."))),o.setFeatureState(a,e.id,i)):this.fire(new t.j(new Error("The sourceLayer parameter must be provided for vector source types.")));}removeFeatureState(e,i){this._checkLoaded();const s=e.source,a=this.sourceCaches[s];if(void 0===a)return void this.fire(new t.j(new Error(`The source '${s}' does not exist in the map's style.`)));const o=a.getSource().type,r="vector"===o?e.sourceLayer:void 0;"vector"!==o||r?i&&"string"!=typeof e.id&&"number"!=typeof e.id?this.fire(new t.j(new Error("A feature id is required to remove its specific state property."))):a.removeFeatureState(r,e.id,i):this.fire(new t.j(new Error("The sourceLayer parameter must be provided for vector source types.")));}getFeatureState(e){this._checkLoaded();const i=e.source,s=e.sourceLayer,a=this.sourceCaches[i];if(void 0!==a)return "vector"!==a.getSource().type||s?(void 0===e.id&&this.fire(new t.j(new Error("The feature id parameter must be provided."))),a.getFeatureState(s,e.id)):void this.fire(new t.j(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new t.j(new Error(`The source '${i}' does not exist in the map's style.`)));}getTransition(){return t.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;const e=t.aH(this.sourceCaches,(t=>t.serialize())),i=this._serializeByIds(this._order),s=this.map.getTerrain()||void 0,a=this.stylesheet;return t.aI({version:a.version,name:a.name,metadata:a.metadata,light:a.light,center:a.center,zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,sprite:a.sprite,glyphs:a.glyphs,transition:a.transition,sources:e,layers:i,terrain:s},(t=>void 0!==t))}_updateLayer(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&"raster"!==this.sourceCaches[t.source].getSource().type&&(this._updatedSources[t.source]="reload",this.sourceCaches[t.source].pause()),this._serializedLayers=null,this._changed=!0;}_flattenAndSortRenderedFeatures(t){const e=t=>"fill-extrusion"===this._layers[t].type,i={},s=[];for(let a=this._order.length-1;a>=0;a--){const o=this._order[a];if(e(o)){i[o]=a;for(const e of t){const t=e[o];if(t)for(const e of t)s.push(e);}}}s.sort(((t,e)=>e.intersectionZ-t.intersectionZ));const a=[];for(let o=this._order.length-1;o>=0;o--){const r=this._order[o];if(e(r))for(let t=s.length-1;t>=0;t--){const e=s[t].feature;if(i[e.layer.id]<o)break;a.push(e),s.pop();}else for(const e of t){const t=e[r];if(t)for(const e of t)a.push(e.feature);}}return a}
41queryRenderedFeatures(e,i,s){i&&i.filter&&this._validate(t.y.filter,"queryRenderedFeatures.filter",i.filter,null,i);const a={};if(i&&i.layers){if(!Array.isArray(i.layers))return this.fire(new t.j(new Error("parameters.layers must be an Array."))),[];for(const e of i.layers){const i=this._layers[e];if(!i)return this.fire(new t.j(new Error(`The layer '${e}' does not exist in the map's style and cannot be queried for features.`))),[];a[i.source]=!0;}}const o=[];i.availableImages=this._availableImages;const r=this._serializedAllLayers();for(const t in this.sourceCaches)i.layers&&!a[t]||o.push(q(this.sourceCaches[t],this._layers,r,e,i,s));return this.placement&&o.push(function(t,e,i,s,a,o,r){const n={},l=o.queryRenderedSymbols(s),h=[];for(const t of Object.keys(l).map(Number))h.push(r[t]);h.sort($);for(const i of h){const s=i.featureIndex.lookupSymbolFeatures(l[i.bucketInstanceId],e,i.bucketIndex,i.sourceLayerIndex,a.filter,a.layers,a.availableImages,t);for(const t in s){const e=n[t]=n[t]||[],a=s[t];a.sort(((t,e)=>{const s=i.featureSortOrder;if(s){const i=s.indexOf(t.featureIndex);return s.indexOf(e.featureIndex)-i}return e.featureIndex-t.featureIndex}));for(const t of a)e.push(t);}}for(const e in n)n[e].forEach((s=>{const a=s.feature,o=i[t[e].source].getFeatureState(a.layer["source-layer"],a.id);a.source=a.layer.source,a.layer["source-layer"]&&(a.sourceLayer=a.layer["source-layer"]),a.state=o;}));return n}(this._layers,r,this.sourceCaches,e,i,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(o)}querySourceFeatures(e,i){i&&i.filter&&this._validate(t.y.filter,"querySourceFeatures.filter",i.filter,null,i);const s=this.sourceCaches[e];return s?function(t,e){const i=t.getRenderableIds().map((e=>t.getTileByID(e))),s=[],a={};for(let t=0;t<i.length;t++){const o=i[t],r=o.tileID.canonical.key;a[r]||(a[r]=!0,o.querySourceFeatures(s,e));}return s}(s,i):[]}addSourceType(t,e,i){return j(t)?i(new Error(`A source type called "${t}" already exists.`)):(((t,e)=>{G[t]=e;})(t,e),e.workerSourceURL?void this.dispatcher.broadcast("loadWorkerSource",{name:t,url:e.workerSourceURL},i):i(null,null))}getLight(){return this.light.getLight()}setLight(e,i={}){this._checkLoaded();const s=this.light.getLight();let a=!1;for(const i in e)if(!t.aG(e[i],s[i])){a=!0;break}if(!a)return;const o={now:t.h.now(),transition:t.e({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(e,i),this.light.updateTransitions(o);}_validate(e,i,s,a,o={}){return (!o||!1!==o.validate)&&Jt(this,e.call(t.y,t.e({key:i,style:this.serialize(),value:s,styleSpec:t.v},a)))}_remove(e=!0){this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),t.aJ.off("pluginStateChange",this._rtlTextPluginCallback);for(const t in this._layers)this._layers[t].setEventedParent(null);for(const t in this.sourceCaches){const e=this.sourceCaches[t];e.setEventedParent(null),e.onRemove(this.map);}this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove(e);}_clearSource(t){this.sourceCaches[t].clearTiles();}_reloadSource(t){this.sourceCaches[t].resume(),this.sourceCaches[t].reload();}_updateSources(t){for(const e in this.sourceCaches)this.sourceCaches[e].update(t,this.map.terrain);}_generateCollisionBoxes(){for(const t in this.sourceCaches)this._reloadSource(t);}_updatePlacement(e,i,s,a,o=!1){let r=!1,n=!1;const l={};for(const t of this._order){const i=this._layers[t];if("symbol"!==i.type)continue;if(!l[i.source]){const t=this.sourceCaches[i.source];l[i.source]=t.getRenderableIds(!0).map((e=>t.getTileByID(e))).sort(((t,e)=>e.tileID.overscaledZ-t.tileID.overscaledZ||(t.tileID.isLessThan(e.tileID)?-1:1)));}const s=this.crossTileSymbolIndex.addLayer(i,l[i.source],e.center.lng);r=r||s;}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((o=o||this._layerOrderChanged||0===s)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(t.h.now(),e.zoom))&&(this.pauseablePlacement=new Wt(e,this.map.terrain,this._order,o,i,s,a,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,l),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(t.h.now()),n=!0),r&&this.pauseablePlacement.placement.setStale()),n||r)for(const t of this._order){const e=this._layers[t];"symbol"===e.type&&this.placement.updateLayerOpacities(e,l[e.source]);}return !this.pauseablePlacement.isDone()||this.placement.hasTransitions(t.h.now())}_releaseSymbolFadeTiles(){for(const t in this.sourceCaches)this.sourceCaches[t].releaseSymbolFadeTiles();}getImages(t,e,i){this.imageManager.getImages(e.icons,i),this._updateTilesForChangedImages();const s=this.sourceCaches[e.source];s&&s.setDependencies(e.tileID.key,e.type,e.icons);}getGlyphs(t,e,i){this.glyphManager.getGlyphs(e.stacks,i);const s=this.sourceCaches[e.source];s&&s.setDependencies(e.tileID.key,e.type,[""]);}getResource(e,i,s){return t.m(i,s)}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(e,i={}
vendor: 4,984 bytes, line 41
41){this._checkLoaded(),e&&this._validate(t.y.glyphs,"glyphs",e,null,i)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=e,this.glyphManager.entries={},this.glyphManager.setURL(e));}addSprite(e,i,s={},a){this._checkLoaded();const o=[{id:e,url:i}],r=[...g(this.stylesheet.sprite),...o];this._validate(t.y.sprite,"sprite",r,null,s)||(this.stylesheet.sprite=r,this._loadSprite(o,!0,a));}removeSprite(e){this._checkLoaded();const i=g(this.stylesheet.sprite);if(i.find((t=>t.id===e))){if(this._spritesImagesIds[e])for(const t of this._spritesImagesIds[e])this.imageManager.removeImage(t),this._changedImages[t]=!0;i.splice(i.findIndex((t=>t.id===e)),1),this.stylesheet.sprite=i.length>0?i:void 0,delete this._spritesImagesIds[e],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new t.k("data",{dataType:"style"}));}else this.fire(new t.j(new Error(`Sprite "${e}" doesn't exists on this map.`)));}getSprite(){return g(this.stylesheet.sprite)}setSprite(e,i={},s){this._checkLoaded(),e&&this._validate(t.y.sprite,"sprite",e,null,i)||(this.stylesheet.sprite=e,e?this._loadSprite(e,!0,s):(this._unloadSprite(),s&&s(null)));}}se.registerForPluginStateChange=t.aK;var ae=t.Q([{name:"a_pos",type:"Int16",components:2}]),oe="attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;varying float v_depth;void main() {float extent=8192.0;float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/extent;gl_Position=u_matrix*vec4(a_pos3d.xy,get_elevation(a_pos3d.xy)-ele_delta,1.0);v_depth=gl_Position.z/gl_Position.w;}";const re={prelude:ne("#ifdef GL_ES\nprecision mediump float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\n","#ifdef GL_ES\nprecision highp float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}\n#ifdef TERRAIN3D\nuniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth;\n#endif\nconst highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) {\n#ifdef TERRAIN3D\nhighp float d=unpack(texture2D(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0));\n#else\nreturn 1.0;\n#endif\n}float calculate_visibility(vec4 pos) {\n#ifdef TERRAIN3D\nvec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0;\n#else\nreturn 1.0;\n#endif\n}float ele(vec2 pos) {\n#ifdef TERRAIN3D\nvec4 rgb=(texture2D(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;\n#else\nreturn 0.0;\n#endif\n}float get_elevation(vec2 pos) {\n#ifdef TERRAIN3D\nvec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration;\n#else\nreturn 0.0;\n#endif\n}"),background:ne("uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),backgroundPattern:ne("uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;
41uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}"),circle:ne("varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main(void) {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);float ele=get_elevation(circle_center);v_visibility=calculate_visibility(u_matrix*vec4(circle_center,ele,1.0));if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,ele,1);} else {gl_Position=u_matrix*vec4(circle_center,ele,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);}"),clippingMask:ne("void main() {gl_FragColor=vec4(1.0);}","attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),heatmap:ne("uniform highp float u_intensity;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#define GAUSS_COEF 0.3989422804014327\nvoid main() {\n#pragma mapbox: initialize highp float weight\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#pragma mapbox: define mediump float radius\nconst highp float ZERO=1.0/255.0/16.0;\n#define GAUSS_COEF 0.3989422804014327\nvoid main(void) {\n#pragma mapbox: initialize highp float weight\n#pragma mapbox: initialize mediump float radius\nvec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,0,1);gl_Position=u_matrix*pos;}"),heatmapTexture:ne("uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*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;}"),collisionBox:ne("varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 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;attribute vec2 a_shift;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,get_elevation(a_pos),1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}"),collisionCircle:ne("varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}","attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),debug:ne("uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}","attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,get_elevation(a_pos),1);}"),fill:ne("#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);}"),fillOutline:ne("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\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;}"),fillOutlinePattern:ne("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 vec3 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\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_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\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_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 tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;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;}"),fillPattern:ne("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform 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 vec3 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\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_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\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_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 tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;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);}"),fillExtrusion:ne("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;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;\n#ifdef TERRAIN3D\nattribute vec2 a_centroid;\n#endif\nvarying 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;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+heig
41ht_terrain3d_offset;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);v_color*=u_opacity;}"),fillExtrusionPattern:ne("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\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_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\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_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 vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;\n#ifdef TERRAIN3D\nattribute vec2 a_centroid;\n#endif\nvarying 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\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_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\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_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 tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;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));v_lighting*=u_opacity;}"),hillshadePrepare:ne("#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 vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/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 exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,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;}"),hillshade:ne("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;
41\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;}"),line:ne("uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;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\nvoid 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/u_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 scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;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\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 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=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;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;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}"),lineGradient:ne("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid 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/u_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,v_uv);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv;\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\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;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;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}"),linePattern:ne("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_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 pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_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 tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;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 aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_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*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));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\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\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 float floorwidth\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_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 lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 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=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;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;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}"),lineSDF:ne("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;
41uniform 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/u_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\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_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_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\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 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=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;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;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_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);}"),raster:ne("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;}"),symbolIcon:ne("uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid 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 vec4 a_pixeloffset;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;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_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;\n#pragma mapbox: define lowp float opacity\nvoid 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;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);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_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,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),ele,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,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),z,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;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}"),symbolSDF:ne("#define SDF_PX 8.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\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\nvoid 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\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 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 inner_edge=(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);inner_edge=inner_edge+gamma*gamma_scale;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);if (u_is_halo) {lowp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha=min(smoothstep(halo_edge-gamma_scaled,halo_edge+gamma_scaled,dist),1.0-alpha);}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 vec4 a_pixeloffset;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 mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_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;\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\nvoid 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;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;float ele=get_elevation(a_pos);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_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,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),ele,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,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),z,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}"),symbolTextAndIcon:ne("#define SDF_PX 8.0\n#define SDF 1.0\n#define ICON 0.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\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\nvoid 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\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;
41gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;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;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_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;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\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\nvoid 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;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);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_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,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=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,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,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),z,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}"),terrain:ne("uniform sampler2D u_texture;varying vec2 v_texture_pos;void main() {gl_FragColor=texture2D(u_texture,v_texture_pos);}",oe),terrainDepth:ne("varying float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {gl_FragColor=pack(v_depth);}",oe),terrainCoords:ne("precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;varying vec2 v_texture_pos;void main() {vec4 rgba=texture2D(u_texture,v_texture_pos);gl_FragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}",oe)};
vendor: 11,103 bytes, line 41
41function ne(t,e){const i=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,s=e.match(/attribute ([\w]+) ([\w]+)/g),a=t.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),o=e.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),r=o?o.concat(a):a,n={};return {fragmentSource:t=t.replace(i,((t,e,i,s,a)=>(n[a]=!0,"define"===e?`\n#ifndef HAS_UNIFORM_u_${a}\nvarying ${i} ${s} ${a};\n#else\nuniform ${i} ${s} u_${a};\n#endif\n`:`\n#ifdef HAS_UNIFORM_u_${a}\n ${i} ${s} ${a} = u_${a};\n#endif\n`))),vertexSource:e=e.replace(i,((t,e,i,s,a)=>{const o="float"===s?"vec2":"vec4",r=a.match(/color/)?"color":o;return n[a]?"define"===e?`\n#ifndef HAS_UNIFORM_u_${a}\nuniform lowp float u_${a}_t;\nattribute ${i} ${o} a_${a};\nvarying ${i} ${s} ${a};\n#else\nuniform ${i} ${s} u_${a};\n#endif\n`:"vec4"===r?`\n#ifndef HAS_UNIFORM_u_${a}\n ${a} = a_${a};\n#else\n ${i} ${s} ${a} = u_${a};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${a}\n ${a} = unpack_mix_${r}(a_${a}, u_${a}_t);\n#else\n ${i} ${s} ${a} = u_${a};\n#endif\n`:"define"===e?`\n#ifndef HAS_UNIFORM_u_${a}\nuniform lowp float u_${a}_t;\nattribute ${i} ${o} a_${a};\n#else\nuniform ${i} ${s} u_${a};\n#endif\n`:"vec4"===r?`\n#ifndef HAS_UNIFORM_u_${a}\n ${i} ${s} ${a} = a_${a};\n#else\n ${i} ${s} ${a} = u_${a};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${a}\n ${i} ${s} ${a} = unpack_mix_${r}(a_${a}, u_${a}_t);\n#else\n ${i} ${s} ${a} = u_${a};\n#endif\n`})),staticAttributes:s,staticUniforms:r}}class le{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null;}bind(t,e,i,s,a,o,r,n,l){this.context=t;let h=this.boundPaintVertexBuffers.length!==s.length;for(let t=0;!h&&t<s.length;t++)this.boundPaintVertexBuffers[t]!==s[t]&&(h=!0);!this.vao||this.boundProgram!==e||this.boundLayoutVertexBuffer!==i||h||this.boundIndexBuffer!==a||this.boundVertexOffset!==o||this.boundDynamicVertexBuffer!==r||this.boundDynamicVertexBuffer2!==n||this.boundDynamicVertexBuffer3!==l?this.freshBind(e,i,s,a,o,r,n,l):(t.bindVertexArray.set(this.vao),r&&r.bind(),a&&a.dynamicDraw&&a.bind(),n&&n.bind(),l&&l.bind());}freshBind(t,e,i,s,a,o,r,n){const l=t.numAttributes,h=this.context,c=h.gl;this.vao&&this.destroy(),this.vao=h.createVertexArray(),h.bindVertexArray.set(this.vao),this.boundProgram=t,this.boundLayoutVertexBuffer=e,this.boundPaintVertexBuffers=i,this.boundIndexBuffer=s,this.boundVertexOffset=a,this.boundDynamicVertexBuffer=o,this.boundDynamicVertexBuffer2=r,this.boundDynamicVertexBuffer3=n,e.enableAttributes(c,t);for(const e of i)e.enableAttributes(c,t);o&&o.enableAttributes(c,t),r&&r.enableAttributes(c,t),n&&n.enableAttributes(c,t),e.bind(),e.setVertexAttribPointers(c,t,a);for(const e of i)e.bind(),e.setVertexAttribPointers(c,t,a);o&&(o.bind(),o.setVertexAttribPointers(c,t,a)),s&&s.bind(),r&&(r.bind(),r.setVertexAttribPointers(c,t,a)),n&&(n.bind(),n.setVertexAttribPointers(c,t,a)),h.currentNumAttributes=l;}destroy(){this.vao&&(this.context.deleteVertexArray(this.vao),this.vao=null);}}function he(t){const e=[];for(let i=0;i<t.length;i++){if(null===t[i])continue;const s=t[i].split(" ");e.push(s.pop());}return e}class ce{constructor(e,i,s,a,o,r){const n=e.gl;this.program=n.createProgram();const l=he(i.staticAttributes),h=s?s.getBinderAttributes():[],c=l.concat(h),u=re.prelude.staticUniforms?he(re.prelude.staticUniforms):[],d=i.staticUniforms?he(i.staticUniforms):[],_=s?s.getBinderUniforms():[],p=u.concat(d).concat(_),m=[];for(const t of p)m.indexOf(t)<0&&m.push(t);const f=s?s.defines():[];o&&f.push("#define OVERDRAW_INSPECTOR;"),r&&f.push("#define TERRAIN3D;");const g=f.concat(re.prelude.fragmentSource,i.fragmentSource).join("\n"),v=f.concat(re.prelude.vertexSource,i.vertexSource).join("\n"),x=n.createShader(n.FRAGMENT_SHADER);if(n.isContextLost())return void(this.failedToCreate=!0);if(n.shaderSource(x,g),n.compileShader(x),!n.getShaderParameter(x,n.COMPILE_STATUS))throw new Error(`Could not compile fragment shader: ${n.getShaderInfoLog(x)}`);n.attachShader(this.program,x);const y=n.createShader(n.VERTEX_SHADER);if(n.isContextLost())return void(this.failedToCreate=!0);if(n.shaderSource(y,v),n.compileShader(y),!n.getShaderParameter(y,n.COMPILE_STATUS))throw new Error(`Could not compile vertex shader: ${n.getShaderInfoLog(y)}`);n.attachShader(this.program,y),this.attributes={};const b={};this.numAttributes=c.length;for(let t=0;t<this.numAttributes;t++)c[t]&&(n.bindAttribLocation(this.program,t,c[t]),this.attributes[c[t]]=t);if(n.linkProgram(this.program),!n.getProgramParameter(this.program,n.LINK_STATUS))throw new Error(`Program failed to link: ${n.getProgramInfoLog(this.program)}`);n.deleteShader(y),n.deleteShader(x);for(let t=0;t<m.length;t++){const e=m[t];if(e&&!b[e]){const t=n.getUniformLocation(this.program,e);t&&(b[e]=t);}}this.fixedUniforms=a(e,b),this.terrainUniforms=((e,i)=>({u_depth:new t.aL(e,i.u_depth),u_terrain:new t.aL(e,i.u_terrain),u_terrain_dim:new t.aM(e,i.u_terrain_dim),u_terrain_matrix:new t.aN(e,i.u_terrain_matrix),u_terrain_unpack:new t.aO(e,i.u_terrain_unpack),u_terrain_exaggeration:new t.aM(e,i.u_terrain_exaggeration)}))(e,b),this.binderUniforms=s?s.getUniforms(e,b):[];}draw(t,e,i,s,a,o,r,n,l,h,c,u,d,_,p,m,f,g){const v=t.gl;if(this.failedToCreate)return;if(t.program.set(this.program),t.setDepthMode(i),t.setStencilMode(s),t.setColorMode(a),t.setCullFace(o),n){t.activeTexture.set(v.TEXTURE2),v.bindTexture(v.TEXTURE_2D,n.depthTexture),t.activeTexture.set(v.TEXTURE3),v.bindTexture(v.TEXTURE_2D,n.texture);for(const t in this.terrainUniforms)this.terrainUniforms[t].set(n[t]);}for(const t in this.fixedUniforms)this.fixedUniforms[t].set(r[t]);p&&p.setUniforms(t,this.binderUniforms,d,{zoom:_});let x=0;switch(e){case v.LINES:x=2;break;case v.TRIANGLES:x=3;break;case v.LINE_STRIP:x=1;}for(const i of u.get()){const s=i.vaos||(i.vaos={});(s[l]||(s[l]=new le)).bind(t,this,h,p?p.getPaintVertexBuffers():[],c,i.vertexOffset,m,f,g),v.drawElements(e,i.primitiveLength*x,v.UNSIGNED_SHORT,i.primitiveOffset*x*2);}}}function ue(t,e,i){const s=1/St(i,1,e.transform.tileZoom),a=Math.pow(2,i.tileID.overscaledZ),o=i.tileSize*Math.pow(2,e.transform.tileZoom)/a,r=o*(i.tileID.canonical.x+i.tileID.wrap*a),n=o*i.tileID.canonical.y;return {u_image:0,u_texsize:i.imageAtlasTexture.size,u_scale:[s,t.fromScale,t.toScale],u_fade:t.t,u_pixel_coord_upper:[r>>16,n>>16],u_pixel_coord_lower:[65535&r,65535&n]}}const de=(e,i,s,a)=>{const o=i.style.light,r=o.properties.get("position"),n=[r.x,r.y,r.z],l=function(){var e=new t.A(9);return t.A!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}();"viewport"===o.properties.get("anchor")&&function(t,e){var i=Math.sin(e),s=Math.cos(e);t[0]=s,t[1]=i,t[2]=0,t[3]=-i,t[4]=s,t[5]=0,t[6]=0,t[7]=0,t[8]=1;}(l,-i.transform.angle),function(t,e,i){var s=e[0],a=e[1],o=e[2];t[0]=s*i[0]+a*i[3]+o*i[6],t[1]=s*i[1]+a*i[4]+o*i[7],t[2]=s*i[2]+a*i[5]+o*i[8];}(n,n,l);const h=o.properties.get("color");return {u_matrix:e,u_lightpos:n,u_lightintensity:o.properties.get("intensity"),u_lightcolor:[h.r,h.g,h.b],u_vertical_gradient:+s,u_opacity:a}},_e=(e,i,s,a,o,r,n)=>t.e(de(e,i,s,a),ue(r,i,n),{u_height_factor:-Math.pow(2,o.overscaledZ)/n.tileSize/8}),pe=t=>({u_matrix:t}),me=(e,i,s,a)=>t.e(pe(e),ue(s,i,a)),fe=(t,e)=>({u_matrix:t,u_world:e}),ge=(e,i,s,a,o)=>t.e(me(e,i,s,a),{u_world:o}),ve=(t,e,i,s)=>{const a=t.transform;let o,r;if("map"===s.paint.get("circle-pitch-alignment")){const t=St(i,1,a.zoom);o=!0,r=[t,t];}else o=!1,r=a.pixelsToGLUnits;return {u_camera_to_center_distance:a.cameraToCenterDistance,u_scale_with_map:+("map"===s.paint.get("circle-pitch-scale")),u_matrix:t.translatePosMatrix(e.posMatrix,i,s.paint.get("circle-translate"),s.paint.get("circle-translate-anchor")),u_pitch_with_map:+o,u_device_pixel_ratio:t.pixelRatio,u_extrude_scale:r}},xe=(t,e,i)=>{const s=St(i,1,e.zoom),a=Math.pow(2,e.zoom-i.tileID.overscaledZ),o=i.tileID.overscaleFactor();return {u_matrix:t,u_camera_to_center_distance:e.cameraToCenterDistance,u_pixels_to_tile_units:s,u_extrude_scale:[e.pixelsToGLUnits[0]/(s*a),e.pixelsToGLUnits[1]/(s*a)],u_overscale_factor:o}},ye=(t,e,i=1)=>({u_matrix:t,u_color:e,u_overlay:0,u_overlay_scale:i}),be=t=>({u_matrix:t}),we=(t,e,i,s)=>({u_matrix:t,u_extrude_scale:St(e,1,i),u_intensity:s});function Te(e,i){const s=Math.pow(2,i.canonical.z),a=i.canonical.y;return [new t.U(0,a/s).toLngLat().lat,new t.U(0,(a+1)/s).toLngLat().lat]}const Ie=(t,e,i,s)=>{const a=t.transform;return {u_matrix:De(t,e,i,s),u_ratio:1/St(e,1,a.zoom),u_device_pixel_ratio:t.pixelRatio,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]]}},Ee=(e,i,s,a,o)=>t.e(Ie(e,i,s,o),{u_image:0,u_image_height:a}),Se=(t,e,i,s,a)=>{const o=t.transform,r=Pe(e,o);return {u_matrix:De(t,e,i,a),u_texsize:e.imageAtlasTexture.size,u_ratio:1/St(e,1,o.zoom),u_device_pixel_ratio:t.pixelRatio,u_image:0,u_scale:[r,s.fromScale,s.toScale],u_fade:s.t,u_units_to_pixels:[1/o.pixelsToGLUnits[0],1/o.pixelsToGLUnits[1]]}},Ce=(e,i,s,a,o,r)=>{const n=e.lineAtlas,l=Pe(i,e.transform),h="round"===s.layout.get("line-cap"),c=n.getDash(a.from,h),u=n.getDash(a.to,h),d=c.width*o.fromScale,_=u.width*o.toScale;return t.e(Ie(e,i,s,r),{u_patternscale_a:[l/d,-c.height/2],u_patternscale_b:[l/_,-u.height/2],u_sdfgamma:n.width/(256*Math.min(d,_)*e.pixelRatio)/2,u_image:0,u_tex_y_a:c.y,u_tex_y_b:u.y,u_mix:o.t})};function Pe(t,e){return 1/St(t,1,e.tileZoom)}function De(t,e,i,s){return t.translatePosMatrix(s?s.posMatrix:e.tileID.posMatrix,e,i.paint.get("line-translate"),i.paint.get("line-translate-anchor"))}const Me=(t,e,i,s,a)=>{return {u_matrix:t,u_tl_parent:e,u_scale_parent:i,u_buffer_scale:1,u_fade_t:s.mix,u_opacity:s.opacity*a.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:a.paint.get("raster-brightness-min"),u_brightness_high:a.paint.get("raster-brightness-max"),u_saturation_factor:(r=a.paint.get("raster-saturation"),r>0?1-1/(1.001-r):-r),u_contrast_factor:(o=a.paint.get("raster-contrast"),o>0?1/(1-o):1+o),u_spin_weights:ze(a.paint.get("raster-hue-rotate"))};var o,r;};function ze(t){t*=Math.PI/180;const 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]}const Le=(t,e,i,s,a,o,r,n,l,h)=>{const c=a.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:c.cameraToCenterDistance,u_pitch:c.pitch/360*2*Math.PI,u_rotate_symbol:+i,u_aspect_ratio:c.width/c.height,u_fade_change:a.options.fadeDuration?a.symbolFadeChange:1,u_matrix:o,u_label_plane_matrix:r,u_coord_matrix:n,u_is_text:+l,u_pitch_with_map:+s,u_texsize:h,u_texture:0}},Ae=(e,i,s,a,o,r,n,l,h,c,u)=>{const d=o.transform;return t.e(Le(e,i,s,a,o,r,n,l,h,c),{u_gamma_scale:a?Math.cos(d._pitch)*d.cameraToCenterDistance:1,u_device_pixel_ratio:o.pixelRatio,u_is_halo:+u})},Re=(e,i,s,a,o,r,n,l,h,c)=>t.e(Ae(e,i,s,a,o,r,n,l,!0,h,!0),{u_texsize_icon:c,u_texture_icon:1}),ke=(t,e,i)=>({u_matrix:t,u_opacity:e,u_color:i}),Fe=(e,i,s,a,o,r)=>
vendor: 6,360 bytes, line 41
41t.e(function(t,e,i,s){const a=i.imageManager.getPattern(t.from.toString()),o=i.imageManager.getPattern(t.to.toString()),{width:r,height:n}=i.imageManager.getPixelSize(),l=Math.pow(2,s.tileID.overscaledZ),h=s.tileSize*Math.pow(2,i.transform.tileZoom)/l,c=h*(s.tileID.canonical.x+s.tileID.wrap*l),u=h*s.tileID.canonical.y;return {u_image:0,u_pattern_tl_a:a.tl,u_pattern_br_a:a.br,u_pattern_tl_b:o.tl,u_pattern_br_b:o.br,u_texsize:[r,n],u_mix:e.t,u_pattern_size_a:a.displaySize,u_pattern_size_b:o.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/St(s,1,i.transform.tileZoom),u_pixel_coord_upper:[c>>16,u>>16],u_pixel_coord_lower:[65535&c,65535&u]}}(a,r,s,o),{u_matrix:e,u_opacity:i}),Be={fillExtrusion:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_lightpos:new t.aP(e,i.u_lightpos),u_lightintensity:new t.aM(e,i.u_lightintensity),u_lightcolor:new t.aP(e,i.u_lightcolor),u_vertical_gradient:new t.aM(e,i.u_vertical_gradient),u_opacity:new t.aM(e,i.u_opacity)}),fillExtrusionPattern:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_lightpos:new t.aP(e,i.u_lightpos),u_lightintensity:new t.aM(e,i.u_lightintensity),u_lightcolor:new t.aP(e,i.u_lightcolor),u_vertical_gradient:new t.aM(e,i.u_vertical_gradient),u_height_factor:new t.aM(e,i.u_height_factor),u_image:new t.aL(e,i.u_image),u_texsize:new t.aQ(e,i.u_texsize),u_pixel_coord_upper:new t.aQ(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.aQ(e,i.u_pixel_coord_lower),u_scale:new t.aP(e,i.u_scale),u_fade:new t.aM(e,i.u_fade),u_opacity:new t.aM(e,i.u_opacity)}),fill:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix)}),fillPattern:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_image:new t.aL(e,i.u_image),u_texsize:new t.aQ(e,i.u_texsize),u_pixel_coord_upper:new t.aQ(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.aQ(e,i.u_pixel_coord_lower),u_scale:new t.aP(e,i.u_scale),u_fade:new t.aM(e,i.u_fade)}),fillOutline:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_world:new t.aQ(e,i.u_world)}),fillOutlinePattern:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_world:new t.aQ(e,i.u_world),u_image:new t.aL(e,i.u_image),u_texsize:new t.aQ(e,i.u_texsize),u_pixel_coord_upper:new t.aQ(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.aQ(e,i.u_pixel_coord_lower),u_scale:new t.aP(e,i.u_scale),u_fade:new t.aM(e,i.u_fade)}),circle:(e,i)=>({u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_scale_with_map:new t.aL(e,i.u_scale_with_map),u_pitch_with_map:new t.aL(e,i.u_pitch_with_map),u_extrude_scale:new t.aQ(e,i.u_extrude_scale),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_matrix:new t.aN(e,i.u_matrix)}),collisionBox:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_pixels_to_tile_units:new t.aM(e,i.u_pixels_to_tile_units),u_extrude_scale:new t.aQ(e,i.u_extrude_scale),u_overscale_factor:new t.aM(e,i.u_overscale_factor)}),collisionCircle:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_inv_matrix:new t.aN(e,i.u_inv_matrix),u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_viewport_size:new t.aQ(e,i.u_viewport_size)}),debug:(e,i)=>({u_color:new t.aR(e,i.u_color),u_matrix:new t.aN(e,i.u_matrix),u_overlay:new t.aL(e,i.u_overlay),u_overlay_scale:new t.aM(e,i.u_overlay_scale)}),clippingMask:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix)}),heatmap:(e,i)=>({u_extrude_scale:new t.aM(e,i.u_extrude_scale),u_intensity:new t.aM(e,i.u_intensity),u_matrix:new t.aN(e,i.u_matrix)}),heatmapTexture:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_world:new t.aQ(e,i.u_world),u_image:new t.aL(e,i.u_image),u_color_ramp:new t.aL(e,i.u_color_ramp),u_opacity:new t.aM(e,i.u_opacity)}),hillshade:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_image:new t.aL(e,i.u_image),u_latrange:new t.aQ(e,i.u_latrange),u_light:new t.aQ(e,i.u_light),u_shadow:new t.aR(e,i.u_shadow),u_highlight:new t.aR(e,i.u_highlight),u_accent:new t.aR(e,i.u_accent)}),hillshadePrepare:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_image:new t.aL(e,i.u_image),u_dimension:new t.aQ(e,i.u_dimension),u_zoom:new t.aM(e,i.u_zoom),u_unpack:new t.aO(e,i.u_unpack)}),line:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_ratio:new t.aM(e,i.u_ratio),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.aQ(e,i.u_units_to_pixels)}),lineGradient:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_ratio:new t.aM(e,i.u_ratio),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.aQ(e,i.u_units_to_pixels),u_image:new t.aL(e,i.u_image),u_image_height:new t.aM(e,i.u_image_height)}),linePattern:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_texsize:new t.aQ(e,i.u_texsize),u_ratio:new t.aM(e,i.u_ratio),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_image:new t.aL(e,i.u_image),u_units_to_pixels:new t.aQ(e,i.u_units_to_pixels),u_scale:new t.aP(e,i.u_scale),u_fade:new t.aM(e,i.u_fade)}),lineSDF:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_ratio:new t.aM(e,i.u_ratio),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_units_to_pixels:new t.aQ(e,i.u_units_to_pixels),u_patternscale_a:new t.aQ(e,i.u_patternscale_a),u_patternscale_b:new t.aQ(e,i.u_patternscale_b),u_sdfgamma:new t.aM(e,i.u_sdfgamma),u_image:new t.aL(e,i.u_image),u_tex_y_a:new t.aM(e,i.u_tex_y_a),u_tex_y_b:new t.aM(e,i.u_tex_y_b),u_mix:new t.aM(e,i.u_mix)}),raster:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_tl_parent:new t.aQ(e,i.u_tl_parent),u_scale_parent:new t.aM(e,i.u_scale_parent),u_buffer_scale:new t.aM(e,i.u_buffer_scale),u_fade_t:new t.aM(e,i.u_fade_t),u_opacity:new t.aM(e,i.u_opacity),u_image0:new t.aL(e,i.u_image0),u_image1:new t.aL(e,i.u_image1),u_brightness_low:new t.aM(e,i.u_brightness_low),u_brightness_high:new t.aM(e,i.u_brightness_high),u_saturation_factor:new t.aM(e,i.u_saturation_factor),u_contrast_factor:new t.aM(e,i.u_contrast_factor),u_spin_weights:new t.aP(e,i.u_spin_weights)}),symbolIcon:(e,i)=>({u_is_size_zoom_constant:new t.aL(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.aL(e,i.u_is_size_feature_constant),u_size_t:new t.aM(e,i.u_size_t),u_size:new t.aM(e,i.u_size),u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_pitch:new t.aM(e,i.u_pitch),u_rotate_symbol:new t.aL(e,i.u_rotate_symbol),u_aspect_ratio:new t.aM(e,i.u_aspect_ratio),u_fade_change:new t.aM(e,i.u_fade_change),u_matrix:new t.aN(e,i.u_matrix),u_label_plane_matrix:new t.aN(e,i.u_label_plane_matrix
vendor: 18,952 bytes, line 41
41),u_coord_matrix:new t.aN(e,i.u_coord_matrix),u_is_text:new t.aL(e,i.u_is_text),u_pitch_with_map:new t.aL(e,i.u_pitch_with_map),u_texsize:new t.aQ(e,i.u_texsize),u_texture:new t.aL(e,i.u_texture)}),symbolSDF:(e,i)=>({u_is_size_zoom_constant:new t.aL(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.aL(e,i.u_is_size_feature_constant),u_size_t:new t.aM(e,i.u_size_t),u_size:new t.aM(e,i.u_size),u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_pitch:new t.aM(e,i.u_pitch),u_rotate_symbol:new t.aL(e,i.u_rotate_symbol),u_aspect_ratio:new t.aM(e,i.u_aspect_ratio),u_fade_change:new t.aM(e,i.u_fade_change),u_matrix:new t.aN(e,i.u_matrix),u_label_plane_matrix:new t.aN(e,i.u_label_plane_matrix),u_coord_matrix:new t.aN(e,i.u_coord_matrix),u_is_text:new t.aL(e,i.u_is_text),u_pitch_with_map:new t.aL(e,i.u_pitch_with_map),u_texsize:new t.aQ(e,i.u_texsize),u_texture:new t.aL(e,i.u_texture),u_gamma_scale:new t.aM(e,i.u_gamma_scale),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_is_halo:new t.aL(e,i.u_is_halo)}),symbolTextAndIcon:(e,i)=>({u_is_size_zoom_constant:new t.aL(e,i.u_is_size_zoom_constant),u_is_size_feature_constant:new t.aL(e,i.u_is_size_feature_constant),u_size_t:new t.aM(e,i.u_size_t),u_size:new t.aM(e,i.u_size),u_camera_to_center_distance:new t.aM(e,i.u_camera_to_center_distance),u_pitch:new t.aM(e,i.u_pitch),u_rotate_symbol:new t.aL(e,i.u_rotate_symbol),u_aspect_ratio:new t.aM(e,i.u_aspect_ratio),u_fade_change:new t.aM(e,i.u_fade_change),u_matrix:new t.aN(e,i.u_matrix),u_label_plane_matrix:new t.aN(e,i.u_label_plane_matrix),u_coord_matrix:new t.aN(e,i.u_coord_matrix),u_is_text:new t.aL(e,i.u_is_text),u_pitch_with_map:new t.aL(e,i.u_pitch_with_map),u_texsize:new t.aQ(e,i.u_texsize),u_texsize_icon:new t.aQ(e,i.u_texsize_icon),u_texture:new t.aL(e,i.u_texture),u_texture_icon:new t.aL(e,i.u_texture_icon),u_gamma_scale:new t.aM(e,i.u_gamma_scale),u_device_pixel_ratio:new t.aM(e,i.u_device_pixel_ratio),u_is_halo:new t.aL(e,i.u_is_halo)}),background:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_opacity:new t.aM(e,i.u_opacity),u_color:new t.aR(e,i.u_color)}),backgroundPattern:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_opacity:new t.aM(e,i.u_opacity),u_image:new t.aL(e,i.u_image),u_pattern_tl_a:new t.aQ(e,i.u_pattern_tl_a),u_pattern_br_a:new t.aQ(e,i.u_pattern_br_a),u_pattern_tl_b:new t.aQ(e,i.u_pattern_tl_b),u_pattern_br_b:new t.aQ(e,i.u_pattern_br_b),u_texsize:new t.aQ(e,i.u_texsize),u_mix:new t.aM(e,i.u_mix),u_pattern_size_a:new t.aQ(e,i.u_pattern_size_a),u_pattern_size_b:new t.aQ(e,i.u_pattern_size_b),u_scale_a:new t.aM(e,i.u_scale_a),u_scale_b:new t.aM(e,i.u_scale_b),u_pixel_coord_upper:new t.aQ(e,i.u_pixel_coord_upper),u_pixel_coord_lower:new t.aQ(e,i.u_pixel_coord_lower),u_tile_units_to_pixels:new t.aM(e,i.u_tile_units_to_pixels)}),terrain:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_texture:new t.aL(e,i.u_texture),u_ele_delta:new t.aM(e,i.u_ele_delta)}),terrainDepth:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_ele_delta:new t.aM(e,i.u_ele_delta)}),terrainCoords:(e,i)=>({u_matrix:new t.aN(e,i.u_matrix),u_texture:new t.aL(e,i.u_texture),u_terrain_coords_id:new t.aM(e,i.u_terrain_coords_id),u_ele_delta:new t.aM(e,i.u_ele_delta)})};class Oe{constructor(t,e,i){this.context=t;const s=t.gl;this.buffer=s.createBuffer(),this.dynamicDraw=Boolean(i),this.context.unbindVAO(),t.bindElementBuffer.set(this.buffer),s.bufferData(s.ELEMENT_ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?s.DYNAMIC_DRAW:s.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer;}bind(){this.context.bindElementBuffer.set(this.buffer);}updateData(t){const e=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),e.bufferSubData(e.ELEMENT_ARRAY_BUFFER,0,t.arrayBuffer);}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}const Ne={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class Ue{constructor(t,e,i,s){this.length=e.length,this.attributes=i,this.itemSize=e.bytesPerElement,this.dynamicDraw=s,this.context=t;const a=t.gl;this.buffer=a.createBuffer(),t.bindVertexBuffer.set(this.buffer),a.bufferData(a.ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?a.DYNAMIC_DRAW:a.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer;}bind(){this.context.bindVertexBuffer.set(this.buffer);}updateData(t){if(t.length!==this.length)throw new Error(`Length of new data is ${t.length}, which doesn't match current length of ${this.length}`);const e=this.context.gl;this.bind(),e.bufferSubData(e.ARRAY_BUFFER,0,t.arrayBuffer);}enableAttributes(t,e){for(let i=0;i<this.attributes.length;i++){const s=e.attributes[this.attributes[i].name];void 0!==s&&t.enableVertexAttribArray(s);}}setVertexAttribPointers(t,e,i){for(let s=0;s<this.attributes.length;s++){const a=this.attributes[s],o=e.attributes[a.name];void 0!==o&&t.vertexAttribPointer(o,a.components,t[Ne[a.type]],!1,this.itemSize,a.offset+this.itemSize*(i||0));}}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer);}}const Ze=new WeakMap;function Ge(t){var e;if(Ze.has(t))return Ze.get(t);{const i=null===(e=t.getParameter(t.VERSION))||void 0===e?void 0:e.startsWith("WebGL 2.0");return Ze.set(t,i),i}}class je{constructor(t){this.gl=t.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1;}get(){return this.current}set(t){}getDefault(){return this.default}setDefault(){this.set(this.default);}}class Ve extends je{getDefault(){return t.aT.transparent}set(t){const e=this.current;(t.r!==e.r||t.g!==e.g||t.b!==e.b||t.a!==e.a||this.dirty)&&(this.gl.clearColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1);}}class qe extends je{getDefault(){return 1}set(t){(t!==this.current||this.dirty)&&(this.gl.clearDepth(t),this.current=t,this.dirty=!1);}}class $e extends je{getDefault(){return 0}set(t){(t!==this.current||this.dirty)&&(this.gl.clearStencil(t),this.current=t,this.dirty=!1);}}class We extends je{getDefault(){return [!0,!0,!0,!0]}set(t){const e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||t[3]!==e[3]||this.dirty)&&(this.gl.colorMask(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1);}}class He extends je{getDefault(){return !0}set(t){(t!==this.current||this.dirty)&&(this.gl.depthMask(t),this.current=t,this.dirty=!1);}}class Xe extends je{getDefault(){return 255}set(t){(t!==this.current||this.dirty)&&(this.gl.stencilMask(t),this.current=t,this.dirty=!1);}}class Ke extends je{getDefault(){return {func:this.gl.ALWAYS,ref:0,mask:255}}set(t){const e=this.current;(t.func!==e.func||t.ref!==e.ref||t.mask!==e.mask||this.dirty)&&(this.gl.stencilFunc(t.func,t.ref,t.mask),this.current=t,this.dirty=!1);}}class Qe extends je{getDefault(){const t=this.gl;return [t.KEEP,t.KEEP,t.KEEP]}set(t){const e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||this.dirty)&&(this.gl.stencilOp(t[0],t[1],t[2]),this.current=t,this.dirty=!1);}}class Ye extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;t?e.enable(e.STENCIL_TEST):e.disable(e.STENCIL_TEST),this.current=t,this.dirty=!1;}}class Je extends je{getDefault(){return [0,1]}set(t){const e=this.current;(t[0]!==e[0]||t[1]!==e[1]||this.dirty)&&(this.gl.depthRange(t[0],t[1]),this.current=t,this.dirty=!1);}}class ti extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;t?e.enable(e.DEPTH_TEST):e.disable(e.DEPTH_TEST),this.current=t,this.dirty=!1;}}class ei extends je{getDefault(){return this.gl.LESS}set(t){(t!==this.current||this.dirty)&&(this.gl.depthFunc(t),this.current=t,this.dirty=!1);}}class ii extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;t?e.enable(e.BLEND):e.disable(e.BLEND),this.current=t,this.dirty=!1;}}class si extends je{getDefault(){const t=this.gl;return [t.ONE,t.ZERO]}set(t){const e=this.current;(t[0]!==e[0]||t[1]!==e[1]||this.dirty)&&(this.gl.blendFunc(t[0],t[1]),this.current=t,this.dirty=!1);}}class ai extends je{getDefault(){return t.aT.transparent}set(t){const e=this.current;(t.r!==e.r||t.g!==e.g||t.b!==e.b||t.a!==e.a||this.dirty)&&(this.gl.blendColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1);}}class oi extends je{getDefault(){return this.gl.FUNC_ADD}set(t){(t!==this.current||this.dirty)&&(this.gl.blendEquation(t),this.current=t,this.dirty=!1);}}class ri extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;t?e.enable(e.CULL_FACE):e.disable(e.CULL_FACE),this.current=t,this.dirty=!1;}}class ni extends je{getDefault(){return this.gl.BACK}set(t){(t!==this.current||this.dirty)&&(this.gl.cullFace(t),this.current=t,this.dirty=!1);}}class li extends je{getDefault(){return this.gl.CCW}set(t){(t!==this.current||this.dirty)&&(this.gl.frontFace(t),this.current=t,this.dirty=!1);}}class hi extends je{getDefault(){return null}set(t){(t!==this.current||this.dirty)&&(this.gl.useProgram(t),this.current=t,this.dirty=!1);}}class ci extends je{getDefault(){return this.gl.TEXTURE0}set(t){(t!==this.current||this.dirty)&&(this.gl.activeTexture(t),this.current=t,this.dirty=!1);}}class ui extends je{getDefault(){const t=this.gl;return [0,0,t.drawingBufferWidth,t.drawingBufferHeight]}set(t){const e=this.current;(t[0]!==e[0]||t[1]!==e[1]||t[2]!==e[2]||t[3]!==e[3]||this.dirty)&&(this.gl.viewport(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1);}}class di extends je{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.bindFramebuffer(e.FRAMEBUFFER,t),this.current=t,this.dirty=!1;}}class _i extends je{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.bindRenderbuffer(e.RENDERBUFFER,t),this.current=t,this.dirty=!1;}}class pi extends je{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.bindTexture(e.TEXTURE_2D,t),this.current=t,this.dirty=!1;}}class mi extends je{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.bindBuffer(e.ARRAY_BUFFER,t),this.current=t,this.dirty=!1;}}class fi extends je{getDefault(){return null}set(t){const e=this.gl;e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t),this.current=t,this.dirty=!1;}}class gi extends je{getDefault(){return null}set(t){var e;if(t===this.current&&!this.dirty)return;const i=this.gl;Ge(i)?i.bindVertexArray(t):null===(e=i.getExtension("OES_vertex_array_object"))||void 0===e||e.bindVertexArrayOES(t),this.current=t,this.dirty=!1;}}class vi extends je{getDefault(){return 4}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.pixelStorei(e.UNPACK_ALIGNMENT,t),this.current=t,this.dirty=!1;}}class xi extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t),this.current=t,this.dirty=!1;}}class yi extends je{getDefault(){return !1}set(t){if(t===this.current&&!this.dirty)return;const e=this.gl;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,t),this.current=t,this.dirty=!1;}}class bi extends je{constructor(t,e){super(t),this.context=t,this.parent=e;}getDefault(){return null}}class wi extends bi{setDirty(){this.dirty=!0;}set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const e=this.gl;e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0),this.current=t,this.dirty=!1;}}class Ti extends bi{set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const e=this.gl;e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,t),this.current=t,this.dirty=!1;}}class Ii extends bi{set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const e=this.gl;e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.RENDERBUFFER,t),this.current=t,this.dirty=!1;}}class Ei{constructor(t,e,i,s,a){this.context=t,this.width=e,this.height=i;const o=t.gl,r=this.framebuffer=o.createFramebuffer();if(this.colorAttachment=new wi(t,r),s)this.depthAttachment=a?new Ii(t,r):new Ti(t,r);else if(a)throw new Error("Stencil cannot be setted without depth");if(o.checkFramebufferStatus(o.FRAMEBUFFER)!==o.FRAMEBUFFER_COMPLETE)throw new Error("Framebuffer is not complete")}destroy(){const t=this.context.gl,e=this.colorAttachment.get();if(e&&t.deleteTexture(e),this.depthAttachment){const e=this.depthAttachment.get();e&&t.deleteRenderbuffer(e);}t.deleteFramebuffer(this.framebuffer);}}class Si{constructor(t,e,i){this.blendFunction=t,this.blendColor=e,this.mask=i;}}Si.Replace=[1,0],Si.disabled=new Si(Si.Replace,t.aT.transparent,[!1,!1,!1,!1]),Si.unblended=new Si(Si.Replace,t.aT.transparent,[!0,!0,!0,!0]),Si.alphaBlended=new Si([1,771],t.aT.transparent,[!0,!0,!0,!0]);class Ci{constructor(t){var e,i;if(this.gl=t,this.clearColor=new Ve(this),this.clearDepth=new qe(this),this.clearStencil=new $e(this),this.colorMask=new We(this),this.depthMask=new He(this),this.stencilMask=new Xe(this),this.stencilFunc=new Ke(this),this.stencilOp=new Qe(this),this.stencilTest=new Ye(this),this.depthRange=new Je(this),this.depthTest=new ti(this),this.depthFunc=new ei(this),this.blend=new ii(this),this.blendFunc=new si(this),this.blendColor=new ai(this),this.blendEquation=new oi(this),this.cullFace=new ri(this),this.cullFaceSide=new ni(this),this.frontFace=new li(this),this.program=new hi(this),this.activeTexture=new ci(this),this.viewport=new ui(this),this.bindFramebuffer=new di(this),this.bindRenderbuffer=new _i(this),this.bindTexture=new pi(this),this.bindVertexBuffer=new mi(this),this.bindElementBuffer=new fi(this),this.bindVertexArray=new gi(this),this.pixelStoreUnpack=new vi(this),this.pixelStoreUnpackPremultiplyAlpha=new xi(this),this.pixelStoreUnpackFlipY=new yi(this),this.extTextureFilterAnisotropic=t.getExtension("EXT_texture_filter_anisotropic")||t.getExtension("MOZ_EXT_texture_filter_anisotropic")||t.getExtension("WEBKIT_EXT_texture_filter_anisotropic"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=t.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.maxTextureSize=t.getParameter(t.MAX_TEXTURE_SIZE),Ge(t)){this.HALF_FLOAT=t.HALF_FLOAT;const s=t.getExtension("EXT_color_buffer_half_float");this.RGBA16F=null!==(e=t.RGBA16F)&&void 0!==e?e:null==s?void 0:s.RGBA16F_EXT,this.RGB16F=null!==(i=t.RGB16F)&&void 0!==i?i:null==s?void 0:s.RGB16F_EXT,t.getExtension("EXT_color_buffer_float");}else {t.getExtension("EXT_color_buffer_half_float"),t.getExtension("OES_texture_half_float_linear");const e=t.getExtension("OES_texture_half_float");this.HALF_FLOAT=null==e?void 0:e.HALF_FLOAT_OES;}}setDefault(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault();}setDirty(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.bindVertexArray.dirty=!0,this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0;}createIndexBuffer(t,e){return new Oe(this,t,e)}createVertexBuffer(t,e,i){return new Ue(this,t,e,i)}createRenderbuffer(t,e,i){const s=this.gl,a=s.createRenderbuffer();return this.bindRenderbuffer.set(a),s.renderbufferStorage(s.RENDERBUFFER,t,e,i),this.bindRenderbuffer.set(null),a}createFramebuffer(t,e,i,s){return new Ei(this,t,e,i,s)}clear({color:t,depth:e,stencil:i}){const s=this.gl;let a=0;t&&(a|=s.COLOR_BUFFER_BIT,this.clearColor.set(t),this.colorMask.set([!0,!0,!0,!0])),void 0!==e&&(a|=s.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(e),this.depthMask.set(!0)),void 0!==i&&(a|=s.STENCIL_BUFFER_BIT,this.clearStencil.set(i),this.stencilMask.set(255)),s.clear(a);}setCullFace(t){!1===t.enable?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(t.mode),this.frontFace.set(t.frontFace));}setDepthMode(t){t.func!==this.gl.ALWAYS||t.mask?(this.depthTest.set(!0),this.depthFunc.set(t.func),this.depthMask.set(t.mask),this.depthRange.set(t.range)):this.depthTest.set(!1);}setStencilMode(t){t.test.func!==this.gl.ALWAYS||t.mask?(this.stencilTest.set(!0),this.stencilMask.set(t.mask),this.stencilOp.set([t.fail,t.depthFail,t.pass]),this.stencilFunc.set({func:t.test.func,ref:t.ref,mask:t.test.mask})):this.stencilTest.set(!1);}setColorMode(e){t.aG(e.blendFunction,Si.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(e.blendFunction),this.blendColor.set(e.blendColor)),this.colorMask.set(e.mask);}createVertexArray(){var t;return Ge(this.gl)?this.gl.createVertexArray():null===(t=this.gl.getExtension("OES_vertex_array_object"))||void 0===t?void 0:t.createVertexArrayOES()}deleteVertexArray(t){var e;return Ge(this.gl)?this.gl.deleteVertexArray(t):null===(e=this.gl.getExtension("OES_vertex_array_object"))||void 0===e?void 0:e.deleteVertexArrayOES(t)}unbindVAO(){this.bindVertexArray.set(null);}}class Pi{constructor(t,e,i){this.func=t,this.mask=e,this.range=i;}}Pi.ReadOnly=!1,Pi.ReadWrite=!0,Pi.disabled=new Pi(519,Pi.ReadOnly,[0,1]);const Di=7680;class Mi{constructor(t,e,i,s,a,o){this.test=t,this.ref=e,this.mask=i,this.fail=s,this.depthFail=a,this.pass=o;}}Mi.disabled=new Mi({func:519,mask:0},0,0,Di,Di,Di);class zi{constructor(t,e,i){this.enable=t,this.mode=e,this.frontFace=i;}}let Li;function Ai(e,i,s,a,o,r,n){const l=e.context,h=l.gl,c=e.useProgram("collisionBox"),u=[];let d=0,_=0;for(let p=0;p<a.length;p++){const m=a[p],f=i.getTile(m),g=f.getBucket(s);if(!g)continue;let v=m.posMatrix;0===o[0]&&0===o[1]||(v=e.translatePosMatrix(m.posMatrix,f,o,r));const x=n?g.textCollisionBox:g.iconCollisionBox,y=g.collisionCircleArray;
41if(y.length>0){const i=t.Z(),s=v;t.aU(i,g.placementInvProjMatrix,e.transform.glCoordMatrix),t.aU(i,i,g.placementViewportMatrix),u.push({circleArray:y,circleOffset:_,transform:s,invTransform:i,coord:m}),d+=y.length/4,_=d;}x&&c.draw(l,h.LINES,Pi.disabled,Mi.disabled,e.colorModeForRenderPass(),zi.disabled,xe(v,e.transform,f),e.style.map.terrain&&e.style.map.terrain.getTerrainData(m),s.id,x.layoutVertexBuffer,x.indexBuffer,x.segments,null,e.transform.zoom,null,null,x.collisionVertexBuffer);}if(!n||!u.length)return;const p=e.useProgram("collisionCircle"),m=new t.aV;m.resize(4*d),m._trim();let f=0;for(const t of u)for(let e=0;e<t.circleArray.length/4;e++){const i=4*e,s=t.circleArray[i+0],a=t.circleArray[i+1],o=t.circleArray[i+2],r=t.circleArray[i+3];m.emplace(f++,s,a,o,r,0),m.emplace(f++,s,a,o,r,1),m.emplace(f++,s,a,o,r,2),m.emplace(f++,s,a,o,r,3);}(!Li||Li.length<2*d)&&(Li=function(e){const i=2*e,s=new t.aX;s.resize(i),s._trim();for(let t=0;t<i;t++){const e=6*t;s.uint16[e+0]=4*t+0,s.uint16[e+1]=4*t+1,s.uint16[e+2]=4*t+2,s.uint16[e+3]=4*t+2,s.uint16[e+4]=4*t+3,s.uint16[e+5]=4*t+0;}return s}(d));const g=l.createIndexBuffer(Li,!0),v=l.createVertexBuffer(m,t.aW.members,!0);for(const i of u){const a={u_matrix:i.transform,u_inv_matrix:i.invTransform,u_camera_to_center_distance:(x=e.transform).cameraToCenterDistance,u_viewport_size:[x.width,x.height]};p.draw(l,h.TRIANGLES,Pi.disabled,Mi.disabled,e.colorModeForRenderPass(),zi.disabled,a,e.style.map.terrain&&e.style.map.terrain.getTerrainData(i.coord),s.id,v,g,t.S.simpleSegment(0,2*i.circleOffset,i.circleArray.length,i.circleArray.length/2),null,e.transform.zoom,null,null,null);}var x;v.destroy(),g.destroy();}zi.disabled=new zi(!1,1029,2305),zi.backCCW=new zi(!0,1029,2305);const Ri=t.ao(new Float32Array(16));function ki(e,i,s,a,o,r){const{horizontalAlign:n,verticalAlign:l}=t.au(e);return new t.P((-(n-.5)*i/o+a[0])*r,(-(l-.5)*s/o+a[1])*r)}function Fi(e,i,s,a,o,r,n,l,h,c,u){const d=e.text.placedSymbolArray,_=e.text.dynamicLayoutVertexArray,p=e.icon.dynamicLayoutVertexArray,m={};_.clear();for(let p=0;p<d.length;p++){const f=d.get(p),g=f.hidden||!f.crossTileID||e.allowVerticalPlacement&&!f.placedOrientation?null:a[f.crossTileID];if(g){const a=new t.P(f.anchorX,f.anchorY),d=ht(a,s?n:r,u),p=ct(o.cameraToCenterDistance,d.signedDistanceFromCamera);let v=t.aj(e.textSizeData,h,f)*p/t.ap;s&&(v*=e.tilePixelRatio/l);const{width:x,height:y,anchor:b,textOffset:w,textBoxScale:T}=g,I=ki(b,x,y,w,T,v),E=s?ht(a.add(I),r,u).point:d.point.add(i?I.rotate(-o.angle):I),S=e.allowVerticalPlacement&&f.placedOrientation===t.ai.vertical?Math.PI/2:0;for(let e=0;e<f.numGlyphs;e++)t.ak(_,E,S);c&&f.associatedIconIndex>=0&&(m[f.associatedIconIndex]={shiftedAnchor:E,angle:S});}else wt(f.numGlyphs,_);}if(c){p.clear();const i=e.icon.placedSymbolArray;for(let e=0;e<i.length;e++){const s=i.get(e);if(s.hidden)wt(s.numGlyphs,p);else {const i=m[e];if(i)for(let e=0;e<s.numGlyphs;e++)t.ak(p,i.shiftedAnchor,i.angle);else wt(s.numGlyphs,p);}}e.icon.dynamicLayoutVertexBuffer.updateData(p);}e.text.dynamicLayoutVertexBuffer.updateData(_);}function Bi(t,e,i){return i.iconsInText&&e?"symbolTextAndIcon":t?"symbolSDF":"symbolIcon"}function Oi(e,i,s,a,o,r,n,l,h,c,u,d){const _=e.context,p=_.gl,m=e.transform,f="map"===l,g="map"===h,v="viewport"!==l&&"point"!==s.layout.get("symbol-placement"),x=f&&!g&&!v,y=!s.layout.get("symbol-sort-key").isConstant();let b=!1;const w=e.depthModeForSublayer(0,Pi.ReadOnly),T=s._unevaluatedLayout.hasValue("text-variable-anchor")||s._unevaluatedLayout.hasValue("text-variable-anchor-offset"),I=[];for(const l of a){const a=i.getTile(l),h=a.getBucket(s);if(!h)continue;const u=o?h.text:h.icon;if(!u||!u.segments.get().length||!u.hasVisibleVertices)continue;const d=u.programConfigurations.get(s.id),_=o||h.sdfIcons,w=o?h.textSizeData:h.iconSizeData,E=g||0!==m.pitch,S=e.useProgram(Bi(_,o,h),d),C=t.ah(w,m.zoom),P=e.style.map.terrain&&e.style.map.terrain.getTerrainData(l);let D,M,z,L,A=[0,0],R=null;if(o)M=a.glyphAtlasTexture,z=p.LINEAR,D=a.glyphAtlasTexture.size,h.iconsInText&&(A=a.imageAtlasTexture.size,R=a.imageAtlasTexture,L=E||e.options.rotating||e.options.zooming||"composite"===w.kind||"camera"===w.kind?p.LINEAR:p.NEAREST);else {const t=1!==s.layout.get("icon-size").constantOr(0)||h.iconsNeedLinear;M=a.imageAtlasTexture,z=_||e.options.rotating||e.options.zooming||t||E?p.LINEAR:p.NEAREST,D=a.imageAtlasTexture.size;}const k=St(a,1,e.transform.zoom),F=nt(l.posMatrix,g,f,e.transform,k),B=lt(l.posMatrix,g,f,e.transform,k),O=T&&h.hasTextData(),N="none"!==s.layout.get("icon-text-fit")&&O&&h.hasIconData();if(v){const t=e.style.map.terrain?(t,i)=>e.style.map.terrain.getElevation(l,t,i):null,i="map"===s.layout.get("text-rotation-alignment");dt(h,l.posMatrix,e,o,F,B,g,c,i,t);}const U=e.translatePosMatrix(l.posMatrix,a,r,n),Z=v||o&&T||N?Ri:F,G=e.translatePosMatrix(B,a,r,n,!0),j=_&&0!==s.paint.get(o?"text-halo-width":"icon-halo-width").constantOr(1);let V;V=_?h.iconsInText?Re(w.kind,C,x,g,e,U,Z,G,D,A):Ae(w.kind,C,x,g,e,U,Z,G,o,D,!0):Le(w.kind,C,x,g,e,U,Z,G,o,D);const q={program:S,buffers:u,uniformValues:V,atlasTexture:M,atlasTextureIcon:R,atlasInterpolation:z,atlasInterpolationIcon:L,isSDF:_,hasHalo:j};if(y&&h.canOverlap){b=!0;const e=u.segments.get();for(const i of e)I.push({segments:new t.S([i]),sortKey:i.sortKey,state:q,terrainData:P});}else I.push({segments:u.segments,sortKey:0,state:q,terrainData:P});}b&&I.sort(((t,e)=>t.sortKey-e.sortKey));for(const t of I){const i=t.state;if(_.activeTexture.set(p.TEXTURE0),i.atlasTexture.bind(i.atlasInterpolation,p.CLAMP_TO_EDGE),i.atlasTextureIcon&&(_.activeTexture.set(p.TEXTURE1),i.atlasTextureIcon&&i.atlasTextureIcon.bind(i.atlasInterpolationIcon,p.CLAMP_TO_EDGE)),i.isSDF){const a=i.uniformValues;i.hasHalo&&(a.u_is_halo=1,Ni(i.buffers,t.segments,s,e,i.program,w,u,d,a,t.terrainData)),a.u_is_halo=0;}Ni(i.buffers,t.segments,s,e,i.program,w,u,d,i.uniformValues,t.terrainData);}}
vendor: 15,784 bytes, line 41
41function Ni(t,e,i,s,a,o,r,n,l,h){const c=s.context;a.draw(c,c.gl.TRIANGLES,o,r,n,zi.disabled,l,h,i.id,t.layoutVertexBuffer,t.indexBuffer,e,i.paint,s.transform.zoom,t.programConfigurations.get(i.id),t.dynamicLayoutVertexBuffer,t.opacityVertexBuffer);}function Ui(t,e,i,s,a){if(!i||!s||!s.imageAtlas)return;const o=s.imageAtlas.patternPositions;let r=o[i.to.toString()],n=o[i.from.toString()];if(!r&&n&&(r=n),!n&&r&&(n=r),!r||!n){const t=a.getPaintProperty(e);r=o[t],n=o[t];}r&&n&&t.setConstantPatternPositions(r,n);}function Zi(t,e,i,s,a,o,r){const n=t.context.gl,l="fill-pattern",h=i.paint.get(l),c=h&&h.constantOr(1),u=i.getCrossfadeParameters();let d,_,p,m,f;r?(_=c&&!i.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",d=n.LINES):(_=c?"fillPattern":"fill",d=n.TRIANGLES);const g=h.constantOr(null);for(const h of s){const s=e.getTile(h);if(c&&!s.patternsLoaded())continue;const v=s.getBucket(i);if(!v)continue;const x=v.programConfigurations.get(i.id),y=t.useProgram(_,x),b=t.style.map.terrain&&t.style.map.terrain.getTerrainData(h);c&&(t.context.activeTexture.set(n.TEXTURE0),s.imageAtlasTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE),x.updatePaintBuffers(u)),Ui(x,l,g,s,i);const w=b?h:null,T=t.translatePosMatrix(w?w.posMatrix:h.posMatrix,s,i.paint.get("fill-translate"),i.paint.get("fill-translate-anchor"));if(r){m=v.indexBuffer2,f=v.segments2;const e=[n.drawingBufferWidth,n.drawingBufferHeight];p="fillOutlinePattern"===_&&c?ge(T,t,u,s,e):fe(T,e);}else m=v.indexBuffer,f=v.segments,p=c?me(T,t,u,s):pe(T);y.draw(t.context,d,a,t.stencilModeForClipping(h),o,zi.disabled,p,b,i.id,v.layoutVertexBuffer,m,f,i.paint,t.transform.zoom,x);}}function Gi(t,e,i,s,a,o,r){const n=t.context,l=n.gl,h="fill-extrusion-pattern",c=i.paint.get(h),u=c.constantOr(1),d=i.getCrossfadeParameters(),_=i.paint.get("fill-extrusion-opacity"),p=c.constantOr(null);for(const c of s){const s=e.getTile(c),m=s.getBucket(i);if(!m)continue;const f=t.style.map.terrain&&t.style.map.terrain.getTerrainData(c),g=m.programConfigurations.get(i.id),v=t.useProgram(u?"fillExtrusionPattern":"fillExtrusion",g);u&&(t.context.activeTexture.set(l.TEXTURE0),s.imageAtlasTexture.bind(l.LINEAR,l.CLAMP_TO_EDGE),g.updatePaintBuffers(d)),Ui(g,h,p,s,i);const x=t.translatePosMatrix(c.posMatrix,s,i.paint.get("fill-extrusion-translate"),i.paint.get("fill-extrusion-translate-anchor")),y=i.paint.get("fill-extrusion-vertical-gradient"),b=u?_e(x,t,y,_,c,d,s):de(x,t,y,_);v.draw(n,n.gl.TRIANGLES,a,o,r,zi.backCCW,b,f,i.id,m.layoutVertexBuffer,m.indexBuffer,m.segments,i.paint,t.transform.zoom,g,t.style.map.terrain&&m.centroidVertexBuffer);}}function ji(t,e,i,s,a,o,r){const n=t.context,l=n.gl,h=i.fbo;if(!h)return;const c=t.useProgram("hillshade"),u=t.style.map.terrain&&t.style.map.terrain.getTerrainData(e);n.activeTexture.set(l.TEXTURE0),l.bindTexture(l.TEXTURE_2D,h.colorAttachment.get()),c.draw(n,l.TRIANGLES,a,o,r,zi.disabled,((t,e,i,s)=>{const a=i.paint.get("hillshade-shadow-color"),o=i.paint.get("hillshade-highlight-color"),r=i.paint.get("hillshade-accent-color");let n=i.paint.get("hillshade-illumination-direction")*(Math.PI/180);"viewport"===i.paint.get("hillshade-illumination-anchor")&&(n-=t.transform.angle);const l=!t.options.moving;return {u_matrix:s?s.posMatrix:t.transform.calculatePosMatrix(e.tileID.toUnwrapped(),l),u_image:0,u_latrange:Te(0,e.tileID),u_light:[i.paint.get("hillshade-exaggeration"),n],u_shadow:a,u_highlight:o,u_accent:r}})(t,i,s,u?e:null),u,s.id,t.rasterBoundsBuffer,t.quadTriangleIndexBuffer,t.rasterBoundsSegments);}function Vi(e,i,s,a,o,r){const n=e.context,l=n.gl,h=i.dem;if(h&&h.data){const c=h.dim,u=h.stride,d=h.getPixels();if(n.activeTexture.set(l.TEXTURE1),n.pixelStoreUnpackPremultiplyAlpha.set(!1),i.demTexture=i.demTexture||e.getTileTexture(u),i.demTexture){const t=i.demTexture;t.update(d,{premultiply:!1}),t.bind(l.NEAREST,l.CLAMP_TO_EDGE);}else i.demTexture=new x(n,d,l.RGBA,{premultiply:!1}),i.demTexture.bind(l.NEAREST,l.CLAMP_TO_EDGE);n.activeTexture.set(l.TEXTURE0);let _=i.fbo;if(!_){const t=new x(n,{width:c,height:c,data:null},l.RGBA);t.bind(l.LINEAR,l.CLAMP_TO_EDGE),_=i.fbo=n.createFramebuffer(c,c,!0,!1),_.colorAttachment.set(t.texture);}n.bindFramebuffer.set(_.framebuffer),n.viewport.set([0,0,c,c]),e.useProgram("hillshadePrepare").draw(n,l.TRIANGLES,a,o,r,zi.disabled,((e,i)=>{const s=i.stride,a=t.Z();return t.aS(a,0,t.N,-t.N,0,0,1),t.$(a,a,[0,-t.N,0]),{u_matrix:a,u_image:1,u_dimension:[s,s],u_zoom:e.overscaledZ,u_unpack:i.getUnpackVector()}})(i.tileID,h),null,s.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments),i.needsHillshadePrepare=!1;}}function qi(e,i,s,a,o,r){const n=a.paint.get("raster-fade-duration");if(!r&&n>0){const a=t.h.now(),r=(a-e.timeAdded)/n,l=i?(a-i.timeAdded)/n:-1,h=s.getSource(),c=o.coveringZoomLevel({tileSize:h.tileSize,roundZoom:h.roundZoom}),u=!i||Math.abs(i.tileID.overscaledZ-c)>Math.abs(e.tileID.overscaledZ-c),d=u&&e.refreshedUponExpiration?1:t.ad(u?r:1-l,0,1);return e.refreshedUponExpiration&&r>=1&&(e.refreshedUponExpiration=!1),i?{opacity:1,mix:1-d}:{opacity:d,mix:0}}return {opacity:1,mix:0}}const $i=new t.aT(1,0,0,1),Wi=new t.aT(0,1,0,1),Hi=new t.aT(0,0,1,1),Xi=new t.aT(1,0,1,1),Ki=new t.aT(0,1,1,1);function Qi(t,e,i,s){Ji(t,0,e+i/2,t.transform.width,i,s);}function Yi(t,e,i,s){Ji(t,e-i/2,0,i,t.transform.height,s);}function Ji(t,e,i,s,a,o){const r=t.context,n=r.gl;n.enable(n.SCISSOR_TEST),n.scissor(e*t.pixelRatio,i*t.pixelRatio,s*t.pixelRatio,a*t.pixelRatio),r.clear({color:o}),n.disable(n.SCISSOR_TEST);}function ts(e,i,s){const a=e.context,o=a.gl,r=s.posMatrix,n=e.useProgram("debug"),l=Pi.disabled,h=Mi.disabled,c=e.colorModeForRenderPass(),u="$debug",d=e.style.map.terrain&&e.style.map.terrain.getTerrainData(s);a.activeTexture.set(o.TEXTURE0);const _=i.getTileByID(s.key).latestRawTileData,p=Math.floor((_&&_.byteLength||0)/1024),m=i.getTile(s).tileSize,f=512/Math.min(m,512)*(s.overscaledZ/e.transform.zoom)*.5;let g=s.canonical.toString();s.overscaledZ!==s.canonical.z&&(g+=` => ${s.overscaledZ}`),function(t,e){t.initDebugOverlayCanvas();const i=t.debugOverlayCanvas,s=t.context.gl,a=t.debugOverlayCanvas.getContext("2d");a.clearRect(0,0,i.width,i.height),a.shadowColor="white",a.shadowBlur=2,a.lineWidth=1.5,a.strokeStyle="white",a.textBaseline="top",a.font="bold 36px Open Sans, sans-serif",a.fillText(e,5,5),a.strokeText(e,5,5),t.debugOverlayTexture.update(i),t.debugOverlayTexture.bind(s.LINEAR,s.CLAMP_TO_EDGE);}(e,`${g} ${p}kB`),n.draw(a,o.TRIANGLES,l,h,Si.alphaBlended,zi.disabled,ye(r,t.aT.transparent,f),null,u,e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments),n.draw(a,o.LINE_STRIP,l,h,c,zi.disabled,ye(r,t.aT.red),d,u,e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);}function es(t,e,i){const s=t.context,a=s.gl,o=t.colorModeForRenderPass(),r=new Pi(a.LEQUAL,Pi.ReadWrite,t.depthRangeFor3D),n=t.useProgram("terrain"),l=e.getTerrainMesh();s.bindFramebuffer.set(null),s.viewport.set([0,0,t.width,t.height]);for(const h of i){const i=t.renderToTexture.getTexture(h),c=e.getTerrainData(h.tileID);s.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,i.texture);const u={u_matrix:t.transform.calculatePosMatrix(h.tileID.toUnwrapped()),u_texture:0,u_ele_delta:e.getMeshFrameDelta(t.transform.zoom)};n.draw(s,a.TRIANGLES,r,Mi.disabled,o,zi.backCCW,u,c,"terrain",l.vertexBuffer,l.indexBuffer,l.segments);}}class is{constructor(e,i){this.context=new Ci(e),this.transform=i,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:t.Z(),renderTime:0},this.setup(),this.numSublayers=K.maxUnderzooming+K.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Yt;}resize(t,e,i){if(this.width=Math.floor(t*i),this.height=Math.floor(e*i),this.pixelRatio=i,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const t of this.style._order)this.style._layers[t].resize();}setup(){const e=this.context,i=new t.a_;i.emplaceBack(0,0),i.emplaceBack(t.N,0),i.emplaceBack(0,t.N),i.emplaceBack(t.N,t.N),this.tileExtentBuffer=e.createVertexBuffer(i,ae.members),this.tileExtentSegments=t.S.simpleSegment(0,0,4,2);const s=new t.a_;s.emplaceBack(0,0),s.emplaceBack(t.N,0),s.emplaceBack(0,t.N),s.emplaceBack(t.N,t.N),this.debugBuffer=e.createVertexBuffer(s,ae.members),this.debugSegments=t.S.simpleSegment(0,0,4,5);const a=new t.V;a.emplaceBack(0,0,0,0),a.emplaceBack(t.N,0,t.N,0),a.emplaceBack(0,t.N,0,t.N),a.emplaceBack(t.N,t.N,t.N,t.N),this.rasterBoundsBuffer=e.createVertexBuffer(a,O.members),this.rasterBoundsSegments=t.S.simpleSegment(0,0,4,2);const o=new t.a_;o.emplaceBack(0,0),o.emplaceBack(1,0),o.emplaceBack(0,1),o.emplaceBack(1,1),this.viewportBuffer=e.createVertexBuffer(o,ae.members),this.viewportSegments=t.S.simpleSegment(0,0,4,2);const r=new t.a$;r.emplaceBack(0),r.emplaceBack(1),r.emplaceBack(3),r.emplaceBack(2),r.emplaceBack(0),this.tileBorderIndexBuffer=e.createIndexBuffer(r);const n=new t.b0;n.emplaceBack(0,1,2),n.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=e.createIndexBuffer(n);const l=this.context.gl;this.stencilClearMode=new Mi({func:l.ALWAYS,mask:0},0,255,l.ZERO,l.ZERO,l.ZERO);}clearStencil(){const e=this.context,i=e.gl;this.nextStencilID=1,this.currentStencilSource=void 0;const s=t.Z();t.aS(s,0,this.width,this.height,0,0,1),t.a0(s,s,[i.drawingBufferWidth,i.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(e,i.TRIANGLES,Pi.disabled,this.stencilClearMode,Si.disabled,zi.disabled,be(s),null,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments);}_renderTileClippingMasks(t,e){if(this.currentStencilSource===t.source||!t.isTileClipped()||!e||!e.length)return;this.currentStencilSource=t.source;const i=this.context,s=i.gl;this.nextStencilID+e.length>256&&this.clearStencil(),i.setColorMode(Si.disabled),i.setDepthMode(Pi.disabled);const a=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(const t of e){const e=this._tileClippingMaskIDs[t.key]=this.nextStencilID++,o=this.style.map.terrain&&this.style.map.terrain.getTerrainData(t);a.draw(i,s.TRIANGLES,Pi.disabled,new Mi({func:s.ALWAYS,mask:0},e,255,s.KEEP,s.KEEP,s.REPLACE),Si.disabled,zi.disabled,be(t.posMatrix),o,"$clipping",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments);}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const t=this.nextStencilID++,e=this.context.gl;return new Mi({func:e.NOTEQUAL,mask:255},t,255,e.KEEP,e.KEEP,e.REPLACE)}stencilModeForClipping(t){const e=this.context.gl;return new Mi({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)}stencilConfigForOverlap(t){const e=this.context.gl,i=t.sort(((t,e)=>e.overscaledZ-t.overscaledZ)),s=i[i.length-1].overscaledZ,a=i[0].overscaledZ-s+1;if(a>1){this.currentStencilSource=void 0,this.nextStencilID+a>256&&this.clearStencil();const t={};for(let i=0;i<a;i++)t[i+s]=new Mi({func:e.GEQUAL,mask:255},i+this.nextStencilID,255,e.KEEP,e.KEEP,e.REPLACE);return this.nextStencilID+=a,[t,i]}return [{[s]:Mi.disabled},i]}colorModeForRenderPass(){const e=this.context.gl;if(this._showOverdrawInspector){const i=1/8;return new Si([e.CONSTANT_COLOR,e.ONE],new t.aT(i,i,i,0),[!0,!0,!0,!0])}return "opaque"===this.renderPass?Si.unblended:Si.alphaBlended}depthModeForSublayer(t,e,i){if(!this.opaquePassEnabledForLayer())return Pi.disabled;const s=1-((1+this.currentLayer)*this.numSublayers+t)*this.depthEpsilon;return new Pi(i||this.context.gl.LEQUAL,e,[s,s])}opaquePassEnabledForLayer(){return this.currentLayer<this.opaquePassCutoff}render(e,i){this.style=e,this.options=i,this.lineAtlas=e.lineAtlas,this.imageManager=e.imageManager,this.glyphManager=e.glyphManager,this.symbolFadeChange=e.placement.symbolFadeChange(t.h.now()),this.imageManager.beginFrame();const s=this.style._order,a=this.style.sourceCaches,o={},r={},n={};for(const t in a){const e=a[t];e.used&&e.prepare(this.context),o[t]=e.getVisibleCoordinates(),r[t]=o[t].slice().reverse(),n[t]=e.getVisibleCoordinates(!0).reverse();}this.opaquePassCutoff=1/0;for(let t=0;t<s.length;t++)if(this.style._layers[s[t]].is3D()){this.opaquePassCutoff=t;break}if(this.renderToTexture){this.renderToTexture.prepareForRender(this.style,this.transform.zoom),this.opaquePassCutoff=0;const e=this.style.map.terrain.sourceCache.tilesAfterTime(this.terrainFacilitator.renderTime);(this.terrainFacilitator.dirty||!t.b1(this.terrainFacilitator.matrix,this.transform.projMatrix)||e.length)&&(t.b2(this.terrainFacilitator.matrix,this.transform.projMatrix),this.terrainFacilitator.renderTime=Date.now(),this.terrainFacilitator.dirty=!1,function(e,i){const s=e.context,a=s.gl,o=Si.unblended,r=new Pi(a.LEQUAL,Pi.ReadWrite,[0,1]),n=i.getTerrainMesh(),l=i.sourceCache.getRenderableTiles(),h=e.useProgram("terrainDepth");s.bindFramebuffer.set(i.getFramebuffer("depth").framebuffer),s.viewport.set([0,0,e.width/devicePixelRatio,e.height/devicePixelRatio]),s.clear({color:t.aT.transparent,depth:1});for(const t of l){const l=i.getTerrainData(t.tileID),c={u_matrix:e.transform.calculatePosMatrix(t.tileID.toUnwrapped()),u_ele_delta:i.getMeshFrameDelta(e.transform.zoom)};h.draw(s,a.TRIANGLES,r,Mi.disabled,o,zi.backCCW,c,l,"terrain",n.vertexBuffer,n.indexBuffer,n.segments);}s.bindFramebuffer.set(null),s.viewport.set([0,0,e.width,e.height]);}(this,this.style.map.terrain),function(e,i){const s=e.context,a=s.gl,o=Si.unblended,r=new Pi(a.LEQUAL,Pi.ReadWrite,[0,1]),n=i.getTerrainMesh(),l=i.getCoordsTexture(),h=i.sourceCache.getRenderableTiles(),c=e.useProgram("terrainCoords");s.bindFramebuffer.set(i.getFramebuffer("coords").framebuffer),s.viewport.set([0,0,e.width/devicePixelRatio,e.height/devicePixelRatio]),s.clear({color:t.aT.transparent,depth:1}),i.coordsIndex=[];for(const t of h){const h=i.getTerrainData(t.tileID);s.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,l.texture);const u={u_matrix:e.transform.calculatePosMatrix(t.tileID.toUnwrapped()),u_terrain_coords_id:(255-i.coordsIndex.length)/255,u_texture:0,u_ele_delta:i.getMeshFrameDelta(e.transform.zoom)};c.draw(s,a.TRIANGLES,r,Mi.disabled,o,zi.backCCW,u,h,"terrain",n.vertexBuffer,n.indexBuffer,n.segments),i.coordsIndex.push(t.tileID.key);}s.bindFramebuffer.set(null),s.viewport.set([0,0,e.width,e.height]);}(this,this.style.map.terrain));}this.renderPass="offscreen";for(const t of s){const e=this.style._layers[t];if(!e.hasOffscreenPass()||e.isHidden(this.transform.zoom))continue;const i=r[e.source];("custom"===e.type||i.length)&&this.renderLayer(this,a[e.source],e,i);}if(this.context.bindFramebuffer.set(null),this.context.clear({color:i.showOverdrawInspector?t.aT.black:t.aT.transparent,depth:1}),this.clearStencil(),this._showOverdrawInspector=i.showOverdrawInspector,this.depthRangeFor3D=[0,1-(e._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=s.length-1;this.currentLayer>=0;this.currentLayer--){const t=this.style._layers[s[this.currentLayer]],e=a[t.source],i=o[t.source];this._renderTileClippingMasks(t,i),this.renderLayer(this,e,t,i);}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayer<s.length;this.currentLayer++){const t=this.style._layers[s[this.currentLayer]],e=a[t.source];if(this.renderToTexture&&this.renderToTexture.renderLayer(t))continue;const i=("symbol"===t.type?n:r)[t.source];this._renderTileClippingMasks(t,o[t.source]),this.renderLayer(this,e,t,i);}if(this.options.showTileBoundaries){const t=function(t,e){let i=null;const s=Object.values(t._layers).flatMap((i=>i.source&&!i.isHidden(e)?[t.sourceCaches[i.source]]:[])),a=s.filter((t=>"vector"===t.getSource().type)),o=s.filter((t=>"vector"!==t.getSource().type)),r=t=>{(!i||i.getSource().maxzoom<t.getSource().maxzoom)&&(i=t);};return a.forEach((t=>r(t))),i||o.forEach((t=>r(t))),i}(this.style,this.transform.zoom);
41t&&function(t,e,i){for(let s=0;s<i.length;s++)ts(t,e,i[s]);}(this,t,t.getVisibleCoordinates());}this.options.showPadding&&function(t){const e=t.transform.padding;Qi(t,t.transform.height-(e.top||0),3,$i),Qi(t,e.bottom||0,3,Wi),Yi(t,e.left||0,3,Hi),Yi(t,t.transform.width-(e.right||0),3,Xi);const i=t.transform.centerPoint;!function(t,e,i,s){Ji(t,e-1,i-10,2,20,s),Ji(t,e-10,i-1,20,2,s);}(t,i.x,t.transform.height-i.y,Ki);}(this),this.context.setDefault();}renderLayer(e,i,s,a){if(!s.isHidden(this.transform.zoom)&&("background"===s.type||"custom"===s.type||(a||[]).length))switch(this.id=s.id,s.type){case"symbol":!function(e,i,s,a,o){if("translucent"!==e.renderPass)return;const r=Mi.disabled,n=e.colorModeForRenderPass();(s._unevaluatedLayout.hasValue("text-variable-anchor")||s._unevaluatedLayout.hasValue("text-variable-anchor-offset"))&&function(e,i,s,a,o,r,n){const l=i.transform,h="map"===o,c="map"===r;for(const o of e){const e=a.getTile(o),r=e.getBucket(s);if(!r||!r.text||!r.text.segments.get().length)continue;const u=t.ah(r.textSizeData,l.zoom),d=St(e,1,i.transform.zoom),_=nt(o.posMatrix,c,h,i.transform,d),p="none"!==s.layout.get("icon-text-fit")&&r.hasIconData();if(u){const t=Math.pow(2,l.zoom-e.tileID.overscaledZ);Fi(r,h,c,n,l,_,o.posMatrix,t,u,p,i.style.map.terrain?(t,e)=>i.style.map.terrain.getElevation(o,t,e):null);}}}(a,e,s,i,s.layout.get("text-rotation-alignment"),s.layout.get("text-pitch-alignment"),o),0!==s.paint.get("icon-opacity").constantOr(1)&&Oi(e,i,s,a,!1,s.paint.get("icon-translate"),s.paint.get("icon-translate-anchor"),s.layout.get("icon-rotation-alignment"),s.layout.get("icon-pitch-alignment"),s.layout.get("icon-keep-upright"),r,n),0!==s.paint.get("text-opacity").constantOr(1)&&Oi(e,i,s,a,!0,s.paint.get("text-translate"),s.paint.get("text-translate-anchor"),s.layout.get("text-rotation-alignment"),s.layout.get("text-pitch-alignment"),s.layout.get("text-keep-upright"),r,n),i.map.showCollisionBoxes&&(Ai(e,i,s,a,s.paint.get("text-translate"),s.paint.get("text-translate-anchor"),!0),Ai(e,i,s,a,s.paint.get("icon-translate"),s.paint.get("icon-translate-anchor"),!1));}(e,i,s,a,this.style.placement.variableOffsets);break;case"circle":!function(e,i,s,a){if("translucent"!==e.renderPass)return;const o=s.paint.get("circle-opacity"),r=s.paint.get("circle-stroke-width"),n=s.paint.get("circle-stroke-opacity"),l=!s.layout.get("circle-sort-key").isConstant();if(0===o.constantOr(1)&&(0===r.constantOr(1)||0===n.constantOr(1)))return;const h=e.context,c=h.gl,u=e.depthModeForSublayer(0,Pi.ReadOnly),d=Mi.disabled,_=e.colorModeForRenderPass(),p=[];for(let o=0;o<a.length;o++){const r=a[o],n=i.getTile(r),h=n.getBucket(s);if(!h)continue;const c=h.programConfigurations.get(s.id),u=e.useProgram("circle",c),d=h.layoutVertexBuffer,_=h.indexBuffer,m=e.style.map.terrain&&e.style.map.terrain.getTerrainData(r),f={programConfiguration:c,program:u,layoutVertexBuffer:d,indexBuffer:_,uniformValues:ve(e,r,n,s),terrainData:m};if(l){const e=h.segments.get();for(const i of e)p.push({segments:new t.S([i]),sortKey:i.sortKey,state:f});}else p.push({segments:h.segments,sortKey:0,state:f});}l&&p.sort(((t,e)=>t.sortKey-e.sortKey));for(const t of p){const{programConfiguration:i,program:a,layoutVertexBuffer:o,indexBuffer:r,uniformValues:n,terrainData:l}=t.state;a.draw(h,c.TRIANGLES,u,d,_,zi.disabled,n,l,s.id,o,r,t.segments,s.paint,e.transform.zoom,i);}}(e,i,s,a);break;case"heatmap":!function(e,i,s,a){if(0!==s.paint.get("heatmap-opacity"))if("offscreen"===e.renderPass){const o=e.context,r=o.gl,n=Mi.disabled,l=new Si([r.ONE,r.ONE],t.aT.transparent,[!0,!0,!0,!0]);!function(t,e,i){const s=t.gl;t.activeTexture.set(s.TEXTURE1),t.viewport.set([0,0,e.width/4,e.height/4]);let a=i.heatmapFbo;if(a)s.bindTexture(s.TEXTURE_2D,a.colorAttachment.get()),t.bindFramebuffer.set(a.framebuffer);else {const o=s.createTexture();s.bindTexture(s.TEXTURE_2D,o),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),a=i.heatmapFbo=t.createFramebuffer(e.width/4,e.height/4,!1,!1),function(t,e,
41i,s){var a,o;const r=t.gl,n=null!==(a=t.HALF_FLOAT)&&void 0!==a?a:r.UNSIGNED_BYTE,l=null!==(o=t.RGBA16F)&&void 0!==o?o:r.RGBA;r.texImage2D(r.TEXTURE_2D,0,l,e.width/4,e.height/4,0,r.RGBA,n,null),s.colorAttachment.set(i);}(t,e,o,a);}}(o,e,s),o.clear({color:t.aT.transparent});for(let t=0;t<a.length;t++){const h=a[t];if(i.hasRenderableParent(h))continue;const c=i.getTile(h),u=c.getBucket(s);if(!u)continue;const d=u.programConfigurations.get(s.id),_=e.useProgram("heatmap",d),{zoom:p}=e.transform;_.draw(o,r.TRIANGLES,Pi.disabled,n,l,zi.disabled,we(h.posMatrix,c,p,s.paint.get("heatmap-intensity")),null,s.id,u.layoutVertexBuffer,u.indexBuffer,u.segments,s.paint,e.transform.zoom,d);}o.viewport.set([0,0,e.width,e.height]);}else "translucent"===e.renderPass&&(e.context.setColorMode(e.colorModeForRenderPass()),function(e,i){const s=e.context,a=s.gl,o=i.heatmapFbo;if(!o)return;s.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,o.colorAttachment.get()),s.activeTexture.set(a.TEXTURE1);let r=i.colorRampTexture;r||(r=i.colorRampTexture=new x(s,i.colorRamp,a.RGBA)),r.bind(a.LINEAR,a.CLAMP_TO_EDGE),e.useProgram("heatmapTexture").draw(s,a.TRIANGLES,Pi.disabled,Mi.disabled,e.colorModeForRenderPass(),zi.disabled,((e,i,s,a)=>{const o=t.Z();t.aS(o,0,e.width,e.height,0,0,1);const r=e.context.gl;return {u_matrix:o,u_world:[r.drawingBufferWidth,r.drawingBufferHeight],u_image:0,u_color_ramp:1,u_opacity:i.paint.get("heatmap-opacity")}})(e,i),null,i.id,e.viewportBuffer,e.quadTriangleIndexBuffer,e.viewportSegments,i.paint,e.transform.zoom);}(e,s));}(e,i,s,a);break;case"line":!function(e,i,s,a){if("translucent"!==e.renderPass)return;const o=s.paint.get("line-opacity"),r=s.paint.get("line-width");if(0===o.constantOr(1)||0===r.constantOr(1))return;const n=e.depthModeForSublayer(0,Pi.ReadOnly),l=e.colorModeForRenderPass(),h=s.paint.get("line-dasharray"),c=s.paint.get("line-pattern"),u=c.constantOr(1),d=s.paint.get("line-gradient"),_=s.getCrossfadeParameters(),p=u?"linePattern":h?"lineSDF":d?"lineGradient":"line",m=e.context,f=m.gl;let g=!0;for(const o of a){const a=i.getTile(o);if(u&&!a.patternsLoaded())continue;const r=a.getBucket(s);if(!r)continue;const v=r.programConfigurations.get(s.id),y=e.context.program.get(),b=e.useProgram(p,v),w=g||b.program!==y,T=e.style.map.terrain&&e.style.map.terrain.getTerrainData(o),I=c.constantOr(null);if(I&&a.imageAtlas){const t=a.imageAtlas,e=t.patternPositions[I.to.toString()],i=t.patternPositions[I.from.toString()];e&&i&&v.setConstantPatternPositions(e,i);}const E=T?o:null,S=u?Se(e,a,s,_,E):h?Ce(e,a,s,h,_,E):d?Ee(e,a,s,r.lineClipsArray.length,E):Ie(e,a,s,E);if(u)m.activeTexture.set(f.TEXTURE0),a.imageAtlasTexture.bind(f.LINEAR,f.CLAMP_TO_EDGE),v.updatePaintBuffers(_);else if(h&&(w||e.lineAtlas.dirty))m.activeTexture.set(f.TEXTURE0),e.lineAtlas.bind(m);else if(d){const a=r.gradients[s.id];let n=a.texture;if(s.gradientVersion!==a.version){let l=256;if(s.stepInterpolant){const s=i.getSource().maxzoom,a=o.canonical.z===s?Math.ceil(1<<e.transform.maxZoom-o.canonical.z):1;l=t.ad(t.aY(r.maxLineLength/t.N*1024*a),256,m.maxTextureSize);}a.gradient=t.aZ({expression:s.gradientExpression(),evaluationKey:"lineProgress",resolution:l,image:a.gradient||void 0,clips:r.lineClipsArray}),a.texture?a.texture.update(a.gradient):a.texture=new x(m,a.gradient,f.RGBA),a.version=s.gradientVersion,n=a.texture;}m.activeTexture.set(f.TEXTURE0),n.bind(s.stepInterpolant?f.NEAREST:f.LINEAR,f.CLAMP_TO_EDGE);}b.draw(m,f.TRIANGLES,n,e.stencilModeForClipping(o),l,zi.disabled,S,T,s.id,r.layoutVertexBuffer,r.indexBuffer,r.segments,s.paint,e.transform.zoom,v,r.layoutVertexBuffer2),g=!1;}}(e,i,s,a);break;case"fill":!function(e,i,s,a){const o=s.paint.get("fill-color"),r=s.paint.get("fill-opacity");if(0===r.constantOr(1))return;const n=e.colorModeForRenderPass(),l=s.paint.get("fill-pattern"),h=e.opaquePassEnabledForLayer()&&!l.constantOr(1)&&1===o.constantOr(t.aT.transparent).a&&1===r.constantOr(0)?"opaque":"translucent";if(e.renderPass===h){const t=e.depthModeForSublayer(1,"opaque"===e.renderPass?Pi.ReadWrite:Pi.ReadOnly);Zi(e,i,s,a,t,n,!1);}if("translucent"===e.renderPass&&s.paint.get("fill-antialias")){const t=e.depthModeForSublayer(s.getPaintProperty("fill-outline-color")?2:0,Pi.ReadOnly);Zi(e,i,s,a,t,n,!0);}}(e,i,s,a);break;
vendor: 15,501 bytes, line 41
41case"fill-extrusion":!function(t,e,i,s){const a=i.paint.get("fill-extrusion-opacity");if(0!==a&&"translucent"===t.renderPass){const o=new Pi(t.context.gl.LEQUAL,Pi.ReadWrite,t.depthRangeFor3D);if(1!==a||i.paint.get("fill-extrusion-pattern").constantOr(1))Gi(t,e,i,s,o,Mi.disabled,Si.disabled),Gi(t,e,i,s,o,t.stencilModeFor3D(),t.colorModeForRenderPass());else {const a=t.colorModeForRenderPass();Gi(t,e,i,s,o,Mi.disabled,a);}}}(e,i,s,a);break;case"hillshade":!function(t,e,i,s){if("offscreen"!==t.renderPass&&"translucent"!==t.renderPass)return;const a=t.context,o=t.depthModeForSublayer(0,Pi.ReadOnly),r=t.colorModeForRenderPass(),[n,l]="translucent"===t.renderPass?t.stencilConfigForOverlap(s):[{},s];for(const s of l){const a=e.getTile(s);void 0!==a.needsHillshadePrepare&&a.needsHillshadePrepare&&"offscreen"===t.renderPass?Vi(t,a,i,o,Mi.disabled,r):"translucent"===t.renderPass&&ji(t,s,a,i,o,n[s.overscaledZ],r);}a.viewport.set([0,0,t.width,t.height]);}(e,i,s,a);break;case"raster":!function(t,e,i,s){if("translucent"!==t.renderPass)return;if(0===i.paint.get("raster-opacity"))return;if(!s.length)return;const a=t.context,o=a.gl,r=e.getSource(),n=t.useProgram("raster"),l=t.colorModeForRenderPass(),[h,c]=r instanceof N?[{},s]:t.stencilConfigForOverlap(s),u=c[c.length-1].overscaledZ,d=!t.options.moving;for(const s of c){const c=t.depthModeForSublayer(s.overscaledZ-u,1===i.paint.get("raster-opacity")?Pi.ReadWrite:Pi.ReadOnly,o.LESS),_=e.getTile(s);_.registerFadeDuration(i.paint.get("raster-fade-duration"));const p=e.findLoadedParent(s,0),m=qi(_,p,e,i,t.transform,t.style.map.terrain);let f,g;const v="nearest"===i.paint.get("raster-resampling")?o.NEAREST:o.LINEAR;a.activeTexture.set(o.TEXTURE0),_.texture.bind(v,o.CLAMP_TO_EDGE,o.LINEAR_MIPMAP_NEAREST),a.activeTexture.set(o.TEXTURE1),p?(p.texture.bind(v,o.CLAMP_TO_EDGE,o.LINEAR_MIPMAP_NEAREST),f=Math.pow(2,p.tileID.overscaledZ-_.tileID.overscaledZ),g=[_.tileID.canonical.x*f%1,_.tileID.canonical.y*f%1]):_.texture.bind(v,o.CLAMP_TO_EDGE,o.LINEAR_MIPMAP_NEAREST);const x=t.style.map.terrain&&t.style.map.terrain.getTerrainData(s),y=x?s:null,b=y?y.posMatrix:t.transform.calculatePosMatrix(s.toUnwrapped(),d),w=Me(b,g||[0,0],f||1,m,i);r instanceof N?n.draw(a,o.TRIANGLES,c,Mi.disabled,l,zi.disabled,w,x,i.id,r.boundsBuffer,t.quadTriangleIndexBuffer,r.boundsSegments):n.draw(a,o.TRIANGLES,c,h[s.overscaledZ],l,zi.disabled,w,x,i.id,t.rasterBoundsBuffer,t.quadTriangleIndexBuffer,t.rasterBoundsSegments);}}(e,i,s,a);break;case"background":!function(t,e,i,s){const a=i.paint.get("background-color"),o=i.paint.get("background-opacity");if(0===o)return;const r=t.context,n=r.gl,l=t.transform,h=l.tileSize,c=i.paint.get("background-pattern");if(t.isPatternMissing(c))return;const u=!c&&1===a.a&&1===o&&t.opaquePassEnabledForLayer()?"opaque":"translucent";if(t.renderPass!==u)return;const d=Mi.disabled,_=t.depthModeForSublayer(0,"opaque"===u?Pi.ReadWrite:Pi.ReadOnly),p=t.colorModeForRenderPass(),m=t.useProgram(c?"backgroundPattern":"background"),f=s||l.coveringTiles({tileSize:h,terrain:t.style.map.terrain});c&&(r.activeTexture.set(n.TEXTURE0),t.imageManager.bind(t.context));const g=i.getCrossfadeParameters();for(const e of f){const l=s?e.posMatrix:t.transform.calculatePosMatrix(e.toUnwrapped()),u=c?Fe(l,o,t,c,{tileID:e,tileSize:h},g):ke(l,o,a),f=t.style.map.terrain&&t.style.map.terrain.getTerrainData(e);m.draw(r,n.TRIANGLES,_,d,p,zi.disabled,u,f,i.id,t.tileExtentBuffer,t.quadTriangleIndexBuffer,t.tileExtentSegments);}}(e,0,s,a);break;case"custom":!function(t,e,i){const s=t.context,a=i.implementation;if("offscreen"===t.renderPass){const e=a.prerender;e&&(t.setCustomLayerDefaults(),s.setColorMode(t.colorModeForRenderPass()),e.call(a,s.gl,t.transform.customLayerMatrix()),s.setDirty(),t.setBaseState());}else if("translucent"===t.renderPass){t.setCustomLayerDefaults(),s.setColorMode(t.colorModeForRenderPass()),s.setStencilMode(Mi.disabled);const e="3d"===a.renderingMode?new Pi(t.context.gl.LEQUAL,Pi.ReadWrite,t.depthRangeFor3D):t.depthModeForSublayer(0,Pi.ReadOnly);s.setDepthMode(e),a.render(s.gl,t.transform.customLayerMatrix()),s.setDirty(),t.setBaseState(),s.bindFramebuffer.set(null);}}(e,0,s);}}translatePosMatrix(e,i,s,a,o){if(!s[0]&&!s[1])return e;const r=o?"map"===a?this.transform.angle:0:"viewport"===a?-this.transform.angle:0;if(r){const t=Math.sin(r),e=Math.cos(r);s=[s[0]*e-s[1]*t,s[0]*t+s[1]*e];}const n=[o?s[0]:St(i,s[0],this.transform.zoom),o?s[1]:St(i,s[1],this.transform.zoom),0],l=new Float32Array(16);return t.$(l,e,n),l}saveTileTexture(t){const e=this._tileTextures[t.size[0]];e?e.push(t):this._tileTextures[t.size[0]]=[t];}getTileTexture(t){const e=this._tileTextures[t];return e&&e.length>0?e.pop():null}isPatternMissing(t){if(!t)return !1;if(!t.from||!t.to)return !0;const e=this.imageManager.getPattern(t.from.toString()),i=this.imageManager.getPattern(t.to.toString());return !e||!i}useProgram(t,e){this.cache=this.cache||{};const i=t+(e?e.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"")+(this.style.map.terrain?"/terrain":"");return this.cache[i]||(this.cache[i]=new ce(this.context,re[t],e,Be[t],this._showOverdrawInspector,this.style.map.terrain)),this.cache[i]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault();}setBaseState(){const 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);}initDebugOverlayCanvas(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new x(this.context,this.debugOverlayCanvas,this.context.gl.RGBA));}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy();}overLimit(){const{drawingBufferWidth:t,drawingBufferHeight:e}=this.context.gl;return this.width!==t||this.height!==e}}class ss{constructor(t,e){this.points=t,this.planes=e;}static fromInvProjectionMatrix(e,i,s){const a=Math.pow(2,s),o=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((s=>{const o=1/(s=t.ag([],s,e))[3]/i*a;return t.b3(s,s,[o,o,1/s[3],o])})),r=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((t=>{const e=function(t,e){var i=e[0],s=e[1],a=e[2],o=i*i+s*s+a*a;return o>0&&(o=1/Math.sqrt(o)),t[0]=e[0]*o,t[1]=e[1]*o,t[2]=e[2]*o,t}([],function(t,e,i){var s=e[0],a=e[1],o=e[2],r=i[0],n=i[1],l=i[2];return t[0]=a*l-o*n,t[1]=o*r-s*l,t[2]=s*n-a*r,t}([],m([],o[t[0]],o[t[1]]),m([],o[t[2]],o[t[1]]))),i=-((s=e)[0]*(a=o[t[1]])[0]+s[1]*a[1]+s[2]*a[2]);var s,a;return e.concat(i)}));return new ss(o,r)}}class as{constructor(t,e){this.min=t,this.max=e,this.center=function(t,e,i){return t[0]=.5*e[0],t[1]=.5*e[1],t[2]=.5*e[2],t}([],function(t,e,i){return t[0]=e[0]+i[0],t[1]=e[1]+i[1],t[2]=e[2]+i[2],t}([],this.min,this.max));}quadrant(t){const e=[t%2==0,t<2],i=_(this.min),s=_(this.max);for(let t=0;t<e.length;t++)i[t]=e[t]?this.min[t]:this.center[t],s[t]=e[t]?this.center[t]:this.max[t];return s[2]=this.max[2],new as(i,s)}distanceX(t){return Math.max(Math.min(this.max[0],t[0]),this.min[0])-t[0]}distanceY(t){return Math.max(Math.min(this.max[1],t[1]),this.min[1])-t[1]}intersects(e){const i=[[this.min[0],this.min[1],this.min[2],1],[this.max[0],this.min[1],this.min[2],1],[this.max[0],this.max[1],this.min[2],1],[this.min[0],this.max[1],this.min[2],1],[this.min[0],this.min[1],this.max[2],1],[this.max[0],this.min[1],this.max[2],1],[this.max[0],this.max[1],this.max[2],1],[this.min[0],this.max[1],this.max[2],1]];let s=!0;for(let a=0;a<e.planes.length;a++){const o=e.planes[a];let r=0;for(let e=0;e<i.length;e++)t.b4(o,i[e])>=0&&r++;if(0===r)return 0;r!==i.length&&(s=!1);}if(s)return 2;for(let t=0;t<3;t++){let i=Number.MAX_VALUE,s=-Number.MAX_VALUE;for(let a=0;a<e.points.length;a++){const o=e.points[a][t]-this.min[t];i=Math.min(i,o),s=Math.max(s,o);}if(s<0||i>this.max[t]-this.min[t])return 0}return 1}}class os{constructor(t=0,e=0,i=0,s=0){if(isNaN(t)||t<0||isNaN(e)||e<0||isNaN(i)||i<0||isNaN(s)||s<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=t,this.bottom=e,this.left=i,this.right=s;}interpolate(e,i,s){return null!=i.top&&null!=e.top&&(this.top=t.B.number(e.top,i.top,s)),null!=i.bottom&&null!=e.bottom&&(this.bottom=t.B.number(e.bottom,i.bottom,s)),null!=i.left&&null!=e.left&&(this.left=t.B.number(e.left,i.left,s)),null!=i.right&&null!=e.right&&(this.right=t.B.number(e.right,i.right,s)),this}getCenter(e,i){const s=t.ad((this.left+e-this.right)/2,0,e),a=t.ad((this.top+i-this.bottom)/2,0,i);return new t.P(s,a)}equals(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right}clone(){return new os(this.top,this.bottom,this.left,this.right)}toJSON(){return {top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}class rs{constructor(e,i,s,a,o){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===o||!!o,this._minZoom=e||0,this._maxZoom=i||22,this._minPitch=null==s?0:s,this._maxPitch=null==a?60:a,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.L(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new os,this._posMatrixCache={},this._alignedPosMatrixCache={},this._minEleveationForCurrentTile=0;}clone(){const t=new rs(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.apply(this),t}apply(t){this.tileSize=t.tileSize,this.latRange=t.latRange,this.width=t.width,this.height=t.height,this._center=t._center,this._elevation=t._elevation,this._minEleveationForCurrentTile=t._minEleveationForCurrentTile,this.zoom=t.zoom,this.angle=t.angle,this._fov=t._fov,this._pitch=t._pitch,this._unmodified=t._unmodified,this._edgeInsets=t._edgeInsets.clone(),this._calcMatrices();}get minZoom(){return this._minZoom}set minZoom(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t));}get maxZoom(){return this._maxZoom}set maxZoom(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t));}get minPitch(){return this._minPitch}set minPitch(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t));}get maxPitch(){return this._maxPitch}set maxPitch(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t));}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t;}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new t.P(this.width,this.height)}get bearing(){return -this.angle/Math.PI*180}set bearing(e){const i=-t.b5(e,-180,180)*Math.PI/180;this.angle!==i&&(this._unmodified=!1,this.angle=i,this._calcMatrices(),this.rotationMatrix=function(){var e=new t.A(4);return t.A!=Float32Array&&(e[1]=0,e[2]=0),e[0]=1,e[3]=1,e}(),function(t,e,i){var s=e[0],a=e[1],o=e[2],r=e[3],n=Math.sin(i),l=Math.cos(i);t[0]=s*l+o*n,t[1]=a*l+r*n,t[2]=s*-n+o*l,t[3]=a*-n+r*l;}(this.rotationMatrix,this.rotationMatrix,this.angle));}get pitch(){return this._pitch/Math.PI*180}set pitch(e){const i=t.ad(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==i&&(this._unmodified=!1,this._pitch=i,this._calcMatrices());}get fov(){return this._fov/Math.PI*180}set fov(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices());}get zoom(){return this._zoom}set zoom(t){const e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.tileZoom=Math.max(0,Math.floor(e)),this.scale=this.zoomScale(e),this._constrain(),this._calcMatrices());}get center(){return this._center}set center(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices());}get elevation(){return this._elevation}set elevation(t){t!==this._elevation&&(this._elevation=t,this._constrain(),this._calcMatrices());}get padding(){return this._edgeInsets.toJSON()}set padding(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices());}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(t){return this._edgeInsets.equals(t)}interpolatePadding(t,e,i){this._unmodified=!1,this._edgeInsets.interpolate(t,e,i),this._constrain(),this._calcMatrices();}coveringZoomLevel(t){const e=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,e)}getVisibleUnwrappedCoordinates(e){const i=[new t.b6(0,e)];if(this._renderWorldCopies){const s=this.pointCoordinate(new t.P(0,0)),a=this.pointCoordinate(new t.P(this.width,0)),o=this.pointCoordinate(new t.P(this.width,this.height)),r=this.pointCoordinate(new t.P(0,this.height)),n=Math.floor(Math.min(s.x,a.x,o.x,r.x)),l=Math.floor(Math.max(s.x,a.x,o.x,r.x)),h=1;for(let s=n-h;s<=l+h;s++)0!==s&&i.push(new t.b6(s,e));}return i}coveringTiles(e){var i,s;let a=this.coveringZoomLevel(e);const o=a;if(void 0!==e.minzoom&&a<e.minzoom)return [];void 0!==e.maxzoom&&a>e.maxzoom&&(a=e.maxzoom);const r=this.pointCoordinate(this.getCameraPoint()),n=t.U.fromLngLat(this.center),l=Math.pow(2,a),h=[l*r.x,l*r.y,0],c=[l*n.x,l*n.y,0],u=ss.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,a);let d=e.minzoom||0;!e.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(d=a);const _=e.terrain?2/Math.min(this.tileSize,e.tileSize)*this.tileSize:3,p=t=>({aabb:new as([t*l,0,0],[(t+1)*l,l,0]),zoom:0,x:0,y:0,wrap:t,fullyVisible:!1}),m=[],g=[],v=a,x=e.reparseOverscaled?o:a;if(this._renderWorldCopies)for(let t=1;t<=3;t++)m.push(p(-t)),m.push(p(t));for(m.push(p(0));m.length>0;){const a=m.pop(),o=a.x,r=a.y;let n=a.fullyVisible;if(!n){const t=a.aabb.intersects(u);if(0===t)continue;n=2===t;}const l=e.terrain?h:c,p=a.aabb.distanceX(l),y=a.aabb.distanceY(l),b=Math.max(Math.abs(p),Math.abs(y));if(a.zoom===v||b>_+(1<<v-a.zoom)-2&&a.zoom>=d){const e=v-a.zoom,i=h[0]-.5-(o<<e),s=h[1]-.5-(r<<e);g.push({tileID:new t.O(a.zoom===v?x:a.zoom,a.wrap,a.zoom,o,r),distanceSq:f([c[0]-.5-o,c[1]-.5-r]),tileDistanceToCamera:Math.sqrt(i*i+s*s)});}else for(let l=0;l<4;l++){const h=(o<<1)+l%2,c=(r<<1)+(l>>1),u=a.zoom+1;let d=a.aabb.quadrant(l);if(e.terrain){const o=new t.O(u,a.wrap,u,h,c),r=e.terrain.getMinMaxElevation(o),n=null!==(i=r.minElevation)&&void 0!==i?i:this.elevation,l=null!==(s=r.maxElevation)&&void 0!==s?s:this.elevation;d=new as([d.min[0],d.min[1],n],[d.max[0],d.max[1],l]);}m.push({aabb:d,zoom:u,x:h,y:c,wrap:a.wrap,fullyVisible:n});}}return g.sort(((t,e)=>t.distanceSq-e.distanceSq)).map((t=>t.tileID))}resize(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices();}get unmodified(){return this._unmodified}zoomScale(t){return Math.pow(2,t)}scaleZoom(t){return Math.log(t)/Math.LN2}project(e){const i=t.ad(e.lat,-this.maxValidLatitude,this.maxValidLatitude);return new t.P(t.G(e.lng)*this.worldSize,t.H(i)*this.worldSize)}unproject(e){return new t.U(e.x/this.worldSize,e.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}getCameraPosition(){return {lngLat:this.pointLocation(this.getCameraPoint()),alt
41itude:Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter+this.elevation}}recalculateZoom(e){const i=this.pointLocation(this.centerPoint,e),s=e.getElevationForLngLatZoom(i,this.tileZoom);if(!(this.elevation-s))return;const a=this.getCameraPosition(),o=t.U.fromLngLat(a.lngLat,a.altitude),r=t.U.fromLngLat(i,s),n=o.x-r.x,l=o.y-r.y,h=o.z-r.z,c=Math.sqrt(n*n+l*l+h*h),u=this.scaleZoom(this.cameraToCenterDistance/c/this.tileSize);this._elevation=s,this._center=i,this.zoom=u;}setLocationAtPoint(e,i){const s=this.pointCoordinate(i),a=this.pointCoordinate(this.centerPoint),o=this.locationCoordinate(e),r=new t.U(o.x-(s.x-a.x),o.y-(s.y-a.y));this.center=this.coordinateLocation(r),this._renderWorldCopies&&(this.center=this.center.wrap());}locationPoint(t,e){return e?this.coordinatePoint(this.locationCoordinate(t),e.getElevationForLngLatZoom(t,this.tileZoom),this.pixelMatrix3D):this.coordinatePoint(this.locationCoordinate(t))}pointLocation(t,e){return this.coordinateLocation(this.pointCoordinate(t,e))}locationCoordinate(e){return t.U.fromLngLat(e)}coordinateLocation(t){return t&&t.toLngLat()}pointCoordinate(e,i){if(i){const t=i.pointCoordinate(e);if(null!=t)return t}const s=[e.x,e.y,0,1],a=[e.x,e.y,1,1];t.ag(s,s,this.pixelMatrixInverse),t.ag(a,a,this.pixelMatrixInverse);const o=s[3],r=a[3],n=s[1]/o,l=a[1]/r,h=s[2]/o,c=a[2]/r,u=h===c?0:(0-h)/(c-h);return new t.U(t.B.number(s[0]/o,a[0]/r,u)/this.worldSize,t.B.number(n,l,u)/this.worldSize)}coordinatePoint(e,i=0,s=this.pixelMatrix){const a=[e.x*this.worldSize,e.y*this.worldSize,i,1];return t.ag(a,a,s),new t.P(a[0]/a[3],a[1]/a[3])}getBounds(){const e=Math.max(0,this.height/2-this.getHorizon());return (new L).extend(this.pointLocation(new t.P(0,e))).extend(this.pointLocation(new t.P(this.width,e))).extend(this.pointLocation(new t.P(this.width,this.height))).extend(this.pointLocation(new t.P(0,this.height)))}getMaxBounds(){return this.latRange&&2===this.latRange.length&&this.lngRange&&2===this.lngRange.length?new L([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null}getHorizon(){return Math.tan(Math.PI/2-this._pitch)*this.cameraToCenterDistance*.85}setMaxBounds(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude]);}calculatePosMatrix(e,i=!1){const s=e.key,a=i?this._alignedPosMatrixCache:this._posMatrixCache;if(a[s])return a[s];const o=e.canonical,r=this.worldSize/this.zoomScale(o.z),n=o.x+Math.pow(2,o.z)*e.wrap,l=t.ao(new Float64Array(16));return t.$(l,l,[n*r,o.y*r,0]),t.a0(l,l,[r/t.N,r/t.N,1]),t.a1(l,i?this.alignedProjMatrix:this.projMatrix,l),a[s]=new Float32Array(l),a[s]}customLayerMatrix(){return this.mercatorMatrix.slice()}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let e,i,s,a,o=-90,r=90,n=-180,l=180;const h=this.size,c=this._unmodified;if(this.latRange){const i=this.latRange;o=t.H(i[1])*this.worldSize,r=t.H(i[0])*this.worldSize,e=r-o<h.y?h.y/(r-o):0;}if(this.lngRange){const e=this.lngRange;n=t.b5(t.G(e[0])*this.worldSize,0,this.worldSize),l=t.b5(t.G(e[1])*this.worldSize,0,this.worldSize),l<n&&(l+=this.worldSize),i=l-n<h.x?h.x/(l-n):0;}const u=this.point,d=Math.max(i||0,e||0);if(d)return this.center=this.unproject(new t.P(i?(l+n)/2:u.x,e?(r+o)/2:u.y)),this.zoom+=this.scaleZoom(d),this._unmodified=c,void(this._constraining=!1);if(this.latRange){const t=u.y,e=h.y/2;t-e<o&&(a=o+e),t+e>r&&(a=r-e);}if(this.lngRange){const e=(n+l)/2,i=t.b5(u.x,e-this.worldSize/2,e+this.worldSize/2),a=h.x/2;i-a<n&&(s=n+a),i+a>l&&(s=l-a);}void 0===s&&void 0===a||(this.center=this.unproject(new t.P(void 0!==s?s:u.x,void 0!==a?a:u.y)).wrap()),this._unmodified=c,this._constraining=!1;}_calcMatrices(){if(!this.height)return;const e=this.centerOffset,i=this.point.x,s=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=t.b7(1,this.center.lat)*this.worldSize;let a=t.ao(new Float64Array(16));t.a0(a,a,[this.width/2,-this.height/2,1]),t.$(a,a,[1,-1,0]),this.labelPlaneMatr
vendor: 19,454 bytes, line 41
41ix=a,a=t.ao(new Float64Array(16)),t.a0(a,a,[1,-1,1]),t.$(a,a,[-1,-1,0]),t.a0(a,a,[2/this.width,2/this.height,1]),this.glCoordMatrix=a;const o=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch),r=Math.min(this.elevation,this._minEleveationForCurrentTile),n=o-r*this._pixelPerMeter/Math.cos(this._pitch),l=r<0?n:o,h=Math.PI/2+this._pitch,c=this._fov*(.5+e.y/this.height),u=Math.sin(c)*l/Math.sin(t.ad(Math.PI-h-c,.01,Math.PI-.01)),d=this.getHorizon(),_=2*Math.atan(d/this.cameraToCenterDistance)*(.5+e.y/(2*d)),p=Math.sin(_)*l/Math.sin(t.ad(Math.PI-h-_,.01,Math.PI-.01)),m=Math.min(u,p),f=1.01*(Math.cos(Math.PI/2-this._pitch)*m+l),g=this.height/50;a=new Float64Array(16),t.b8(a,this._fov,this.width/this.height,g,f),a[8]=2*-e.x/this.width,a[9]=2*e.y/this.height,t.a0(a,a,[1,-1,1]),t.$(a,a,[0,0,-this.cameraToCenterDistance]),t.b9(a,a,this._pitch),t.ae(a,a,this.angle),t.$(a,a,[-i,-s,0]),this.mercatorMatrix=t.a0([],a,[this.worldSize,this.worldSize,this.worldSize]),t.a0(a,a,[1,1,this._pixelPerMeter]),this.pixelMatrix=t.a1(new Float64Array(16),this.labelPlaneMatrix,a),t.$(a,a,[0,0,-this.elevation]),this.projMatrix=a,this.invProjMatrix=t.as([],a),this.pixelMatrix3D=t.a1(new Float64Array(16),this.labelPlaneMatrix,a);const v=this.width%2/2,x=this.height%2/2,y=Math.cos(this.angle),b=Math.sin(this.angle),w=i-Math.round(i)+y*v+b*x,T=s-Math.round(s)+y*x+b*v,I=new Float64Array(a);if(t.$(I,I,[w>.5?w-1:w,T>.5?T-1:T,0]),this.alignedProjMatrix=I,a=t.as(new Float64Array(16),this.pixelMatrix),!a)throw new Error("failed to invert matrix");this.pixelMatrixInverse=a,this._posMatrixCache={},this._alignedPosMatrixCache={};}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;const e=this.pointCoordinate(new t.P(0,0)),i=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.ag(i,i,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){const e=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.P(0,e))}getCameraQueryGeometry(e){const i=this.getCameraPoint();if(1===e.length)return [e[0],i];{let s=i.x,a=i.y,o=i.x,r=i.y;for(const t of e)s=Math.min(s,t.x),a=Math.min(a,t.y),o=Math.max(o,t.x),r=Math.max(r,t.y);return [new t.P(s,a),new t.P(o,a),new t.P(o,r),new t.P(s,r),new t.P(s,a)]}}}function ns(t,e){let i,s=!1,a=null,o=null;const r=()=>{a=null,s&&(t.apply(o,i),a=setTimeout(r,e),s=!1);};return (...t)=>(s=!0,o=this,i=t,a||r(),a)}class ls{constructor(t){this._getCurrentHash=()=>{const t=window.location.hash.replace("#","");if(this._hashName){let e;return t.split("&").map((t=>t.split("="))).forEach((t=>{t[0]===this._hashName&&(e=t);})),(e&&e[1]||"").split("/")}return t.split("/")},this._onHashChange=()=>{const t=this._getCurrentHash();if(t.length>=3&&!t.some((t=>isNaN(t)))){const e=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(t[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:e,pitch:+(t[4]||0)}),!0}return !1},this._updateHashUnthrottled=()=>{const t=window.location.href.replace(/(#.+)?$/,this.getHashString());try{window.history.replaceState(window.history.state,null,t);}catch(t){}},this._updateHash=ns(this._updateHashUnthrottled,300),this._hashName=t&&encodeURIComponent(t);}addTo(t){return this._map=t,addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this}remove(){return removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),delete this._map,this}getHashString(t){const e=this._map.getCenter(),i=Math.round(100*this._map.getZoom())/100,s=Math.ceil((i*Math.LN2+Math.log(512/360/.5))/Math.LN10),a=Math.pow(10,s),o=Math.round(e.lng*a)/a,r=Math.round(e.lat*a)/a,n=this._map.getBearing(),l=this._map.getPitch();let h="";if(h+=t?`/${o}/${r}/${i}`:`${i}/${r}/${o}`,(n||l)&&(h+="/"+Math.round(10*n)/10),l&&(h+=`/${Math.round(l)}`),this._hashName){const t=this._hashName;let e=!1;const i=window.location.hash.slice(1).split("&").map((i=>{const s=i.split("=")[0];return s===t?(e=!0,`${s}=${h}`):i})).filter((t=>t));return e||i.push(`${t}=${h}`),`#${i.join("&")}`}return `#${h}`}}const hs={linearity:.3,easing:t.ba(0,0,.3,1)},cs=t.e({deceleration:2500,maxSpeed:1400},hs),us=t.e({deceleration:20,maxSpeed:1400},hs),ds=t.e({deceleration:1e3,maxSpeed:360},hs),_s=t.e({deceleration:1e3,maxSpeed:90},hs);class ps{constructor(t){this._map=t,this.clear();}clear(){this._inertiaBuffer=[];}record(e){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:t.h.now(),settings:e});}_drainInertiaBuffer(){const e=this._inertiaBuffer,i=t.h.now();for(;e.length>0&&i-e[0].time>160;)e.shift();}_onMoveEnd(e){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const i={zoom:0,bearing:0,pitch:0,pan:new t.P(0,0),pinchAround:void 0,around:void 0};for(const{settings:t}of this._inertiaBuffer)i.zoom+=t.zoomDelta||0,i.bearing+=t.bearingDelta||0,i.pitch+=t.pitchDelta||0,t.panDelta&&i.pan._add(t.panDelta),t.around&&(i.around=t.around),t.pinchAround&&(i.pinchAround=t.pinchAround);const s=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,a={};if(i.pan.mag()){const o=fs(i.pan.mag(),s,t.e({},cs,e||{}));a.offset=i.pan.mult(o.amount/i.pan.mag()),a.center=this._map.transform.center,ms(a,o);}if(i.zoom){const t=fs(i.zoom,s,us);a.zoom=this._map.transform.zoom+t.amount,ms(a,t);}if(i.bearing){const e=fs(i.bearing,s,ds);a.bearing=this._map.transform.bearing+t.ad(e.amount,-179,179),ms(a,e);}if(i.pitch){const t=fs(i.pitch,s,_s);a.pitch=this._map.transform.pitch+t.amount,ms(a,t);}if(a.zoom||a.bearing){const t=void 0===i.pinchAround?i.around:i.pinchAround;a.around=t?this._map.unproject(t):this._map.getCenter();}return this.clear(),t.e(a,{noMoveStart:!0})}}function ms(t,e){(!t.duration||t.duration<e.duration)&&(t.duration=e.duration,t.easing=e.easing);}function fs(e,i,s){const{maxSpeed:a,linearity:o,deceleration:r}=s,n=t.ad(e*o/(i/1e3),-a,a),l=Math.abs(n)/(r*o);return {easing:s.easing,duration:1e3*l,amount:n*(l/2)}}class gs extends t.k{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(e,s,a,o={}){const r=i.mousePos(s.getCanvasContainer(),a),n=s.unproject(r);super(e,t.e({point:r,lngLat:n,originalEvent:a},o)),this._defaultPrevented=!1,this.target=s;}}class vs extends t.k{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(e,s,a){const o="touchend"===e?a.changedTouches:a.touches,r=i.touchPos(s.getCanvasContainer(),o),n=r.map((t=>s.unproject(t))),l=r.reduce(((t,e,i,s)=>t.add(e.div(s.length))),new t.P(0,0));super(e,{points:r,point:l,lngLats:n,lngLat:s.unproject(l),originalEvent:a}),this._defaultPrevented=!1;}}class xs extends t.k{preventDefault(){this._defaultPrevented=!0;}get defaultPrevented(){return this._defaultPrevented}constructor(t,e,i){super(t,{originalEvent:i}),this._defaultPrevented=!1;}}class ys{constructor(t,e){this._map=t,this._clickTolerance=e.clickTolerance;}reset(){delete this._mousedownPos;}wheel(t){return this._firePreventable(new xs(t.type,this._map,t))}mousedown(t,e){return this._mousedownPos=e,this._firePreventable(new gs(t.type,this._map,t))}mouseup(t){this._map.fire(new gs(t.type,this._map,t));}click(t,e){this._mousedownPos&&this._mousedownPos.dist(e)>=this._clickTolerance||this._map.fire(new gs(t.type,this._map,t));}dblclick(t){return this._firePreventable(new gs(t.type,this._map,t))}mouseover(t){this._map.fire(new gs(t.type,this._map,t));}mouseout(t){this._map.fire(new gs(t.type,this._map,t));}touchstart(t){return this._firePreventable(new vs(t.type,this._map,t))}touchmove(t){this._map.fire(new vs(t.type,this._map,t));}touchend(t){this._map.fire(new vs(t.type,this._map,t));}touchcancel(t){this._map.fire(new vs(t.type,this._map,t));}_firePreventable(t){if(this._map.fire(t),t.defaultPrevented)return {}}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class bs{constructor(t){this._map=t;}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent;}mousemove(t){this._map.fire(new gs(t.type,this._map,t));}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1;}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new gs("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent);}contextmenu(t){this._delayContextMenu?this._contextMenuEvent=t:this._ignoreContextMenu||this._map.fire(new gs(t.type,this._map,t)),this._map.listens("contextmenu")&&t.preventDefault();}isEnabled(){return !0}isActive(){return !1}enable(){}disable(){}}class ws{constructor(t){this._map=t;}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return {lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(e){return this.transform.pointLocation(t.P.convert(e),this._map.terrain)}}class Ts{constructor(t,e){this._map=t,this._tr=new ws(t),this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=e.clickTolerance||1;}isEnabled(){return !!this._enabled}isActive(){return !!this._active}enable(){this.isEnabled()||(this._enabled=!0);}disable(){this.isEnabled()&&(this._enabled=!1);}mousedown(t,e){this.isEnabled()&&t.shiftKey&&0===t.button&&(i.disableDrag(),this._startPos=this._lastPos=e,this._active=!0);}mousemoveWindow(t,e){if(!this._active)return;const s=e;if(this._lastPos.equals(s)||!this._box&&s.dist(this._startPos)<this._clickTolerance)return;const a=this._startPos;this._lastPos=s,this._box||(this._box=i.create("div","maplibregl-boxzoom",this._container),this._container.classList.add("maplibregl-crosshair"),this._fireEvent("boxzoomstart",t));const o=Math.min(a.x,s.x),r=Math.max(a.x,s.x),n=Math.min(a.y,s.y),l=Math.max(a.y,s.y);i.setTransform(this._box,`translate(${o}px,${n}px)`),this._box.style.width=r-o+"px",this._box.style.height=l-n+"px";}mouseupWindow(e,s){if(!this._active)return;if(0!==e.button)return;const a=this._startPos,o=s;if(this.reset(),i.suppressClick(),a.x!==o.x||a.y!==o.y)return this._map.fire(new t.k("boxzoomend",{originalEvent:e})),{cameraAnimation:t=>t.fitScreenCoordinates(a,o,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",e);}keydown(t){this._active&&27===t.keyCode&&(this.reset(),this._fireEvent("boxzoomcancel",t));}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(i.remove(this._box),this._box=null),i.enableDrag(),delete this._startPos,delete this._lastPos;}_fireEvent(e,i){return this._map.fire(new t.k(e,{originalEvent:i}))}}function Is(t,e){if(t.length!==e.length)throw new Error(`The number of touches and points are not equal - touches ${t.length}, points ${e.length}`);const i={};for(let s=0;s<t.length;s++)i[t[s].identifier]=e[s];return i}class Es{constructor(t){this.reset(),this.numTouches=t.numTouches;}reset(){delete this.centroid,delete this.startTime,delete this.touches,this.aborted=!1;}touchstart(e,i,s){(this.centroid||s.length>this.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=e.timeStamp),s.length===this.numTouches&&(this.centroid=function(e){const i=new t.P(0,0);for(const t of e)i._add(t);return i.div(e.length)}(i),this.touches=Is(s,i)));}touchmove(t,e,i){if(this.aborted||!this.centroid)return;const s=Is(i,e);for(const t in this.touches){const e=s[t];(!e||e.dist(this.touches[t])>30)&&(this.aborted=!0);}}touchend(t,e,i){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),0===i.length){const t=!this.aborted&&this.centroid;if(this.reset(),t)return t}}}class Ss{constructor(t){this.singleTap=new Es(t),this.numTaps=t.numTaps,this.reset();}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset();}touchstart(t,e,i){this.singleTap.touchstart(t,e,i);}touchmove(t,e,i){this.singleTap.touchmove(t,e,i);}touchend(t,e,i){const s=this.singleTap.touchend(t,e,i);if(s){const e=t.timeStamp-this.lastTime<500,i=!this.lastTap||this.lastTap.dist(s)<30;if(e&&i||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=s,this.count===this.numTaps)return this.reset(),s}}}class Cs{constructor(t){this._tr=new ws(t),this._zoomIn=new Ss({numTouches:1,numTaps:2}),this._zoomOut=new Ss({numTouches:2,numTaps:1}),this.reset();}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset();}touchstart(t,e,i){this._zoomIn.touchstart(t,e,i),this._zoomOut.touchstart(t,e,i);}touchmove(t,e,i){this._zoomIn.touchmove(t,e,i),this._zoomOut.touchmove(t,e,i);}touchend(t,e,i){const s=this._zoomIn.touchend(t,e,i),a=this._zoomOut.touchend(t,e,i),o=this._tr;return s?(this._active=!0,t.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:e=>e.easeTo({duration:300,zoom:o.zoom+1,around:o.unproject(s)},{originalEvent:t})}):a?(this._active=!0,t.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:e=>e.easeTo({duration:300,zoom:o.zoom-1,around:o.unproject(a)},{originalEvent:t})}):void 0}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Ps{constructor(t){this._enabled=!!t.enable,this._moveStateManager=t.moveStateManager,this._clickTolerance=t.clickTolerance||1,this._moveFunction=t.move,this._activateOnStart=!!t.activateOnStart,t.assignEvents(this),this.reset();}reset(t){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(t);}_move(...t){const e=this._moveFunction(...t);if(e.bearingDelta||e.pitchDelta||e.around||e.panDelta)return this._active=!0,e}dragStart(t,e){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(t)&&(this._moveStateManager.startMove(t),this._lastPoint=e.length?e[0]:e,this._activateOnStart&&this._lastPoint&&(this._active=!0));}dragMove(t,e){if(!this.isEnabled())return;const i=this._lastPoint;if(!i)return;if(t.preventDefault(),!this._moveStateManager.isValidMoveEvent(t))return void this.reset(t);const s=e.length?e[0]:e;return !this._moved&&s.dist(i)<this._clickTolerance?void 0:(this._moved=!0,this._lastPoint=s,this._move(i,s))}dragEnd(t){this.isEnabled()&&this._lastPoint&&this._moveStateManager.isValidEndEvent(t)&&(this._moved&&i.suppressClick(),this.reset(t));}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}getClickTolerance(){return this._clickTolerance}}const Ds={0:1,2:2};class Ms{constructor(t){this._correctEvent=t.checkCorrectEvent;}startMove(t){const e=i.mouseButton(t);this._eventButton=e;}endMove(t){delete this._eventButton;}isValidStartEvent(t){return this._correctEvent(t)}isValidMoveEvent(t){return !function(t,e){const i=Ds[e];return void 0===t.buttons||(t.buttons&i)!==i}(t,this._eventButton)}isValidEndEvent(t){return i.mouseButton(t)===this._eventButton}}class zs{constructor(){this._firstTouch=void 0;}_isOneFingerTouch(t){return 1===t.targetTouches.length}_isSameTouchEvent(t){return t.targetTouches[0].identifier===this._firstTouch}startMove(t){this._firstTouch=t.targetTouches[0].identifier;}endMove(t){delete this._firstTouch;}isValidStartEvent(t){return this._isOneFingerTouch(t)}isValidMoveEvent(t){return this._isOneFingerTouch(t)&&this._isSameTouchEvent(t)}isValidEndEvent(t){return this._isOneFingerTouch(t)&&this._isSameTouchEvent(t)}}const Ls=t=>{t.mousedown=t.dragStart,t.mousemoveWindow=t.dragMove,t.mouseup=t.dragEnd,t.contextmenu=function(t){t.preventDefault();};},As=({enable:t,clickTolerance:e,bearingDegreesPerPixelMoved:s=.8})=>{const a=new Ms({checkCorrectEvent:t=>0===i.mouseButton(t)&&t.ctrlKey||2===i.mouseButton(t)});return new Ps({clickTolerance:e,move:(t,e)=>({bearingDelta:(e.x-t.x)*s}),moveStateManager:a,enable:t,assignEvents:Ls})},Rs=({enable:t,clickTolerance:e,pitchDegreesPerPixelMoved:s=-.5})=>{const a=new Ms({checkCorrectEvent:t=>0===i.mouseButton(t)&&t.ctrlKey||2===i.mouseButton(t)});return new Ps({clickTolerance:e,move:(t,e)=>({pitchDelta:(e.y-t.y)*s}),moveStateManager:a,enable:t,assignEvents:Ls})};class ks{constructor(t,e){this._minTouches=t.cooperativeGestures?2:1,this._clickTolerance=t.clickTolerance||1,this._map=e,this.reset();}reset(){this._active=!1,this._touches={},this._sum=new t.P(0,0),setTimeout((()=>{this._cancelCooperativeMessage=!1;}),200);}touchstart(t,e,i){return this._calculateTransform(t,e,i)}touchmove(t,e,i){if(this._map._cooperativeGestures&&(2===this._minTouches&&i.length<2&&!this._cancelCooperativeMessage?this._map._onCooperativeGesture(t,!1,i.length):this._cancelCooperativeMessage||(this._cancelCooperativeMessage=!0)),this._active&&!(i.length<this._minTouches))return t.preventDefault(),this._calculateTransform(t,e,i)}touchend(t,e,i){this._calculateTransform(t,e,i),this._active&&i.length<this._minTouches&&this.reset();}touchcancel(){this.reset();}_calculateTransform(e,i,s){s.length>0&&(this._active=!0);const a=Is(s,i),o=new t.P(0,0),r=new t.P(0,0);let n=0;for(const t in a){const e=a[t],i=this._touches[t];i&&(o._add(e),r._add(e.sub(i)),n++,a[t]=e);}if(this._touches=a,n<this._minTouches||!r.mag())return;const l=r.div(n);return this._sum._add(l),this._sum.mag()<this._clickTolerance?void 0:{around:o.div(n),panDelta:l}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Fs{constructor(){this.reset();}reset(){this._active=!1,delete this._firstTwoTouches;}touchstart(t,e,i){this._firstTwoTouches||i.length<2||(this._firstTwoTouches=[i[0].identifier,i[1].identifier],this._start([e[0],e[1]]));}touchmove(t,e,i){if(!this._firstTwoTouches)return;t.preventDefault();const[s,a]=this._firstTwoTouches,o=Bs(i,e,s),r=Bs(i,e,a);if(!o||!r)return;const n=this._aroundCenter?null:o.add(r).div(2);return this._move([o,r],n,t)}touchend(t,e,s){if(!this._firstTwoTouches)return;const[a,o]=this._firstTwoTouches,r=Bs(s,e,a),n=Bs(s,e,o);r&&n||(this._active&&i.suppressClick(),this.reset());}touchcancel(){this.reset();}enable(t){this._enabled=!0,this._aroundCenter=!!t&&"center"===t.around;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}function Bs(t,e,i){for(let s=0;s<t.length;s++)if(t[s].identifier===i)return e[s]}function Os(t,e){return Math.log(t/e)/Math.LN2}class Ns extends Fs{reset(){super.reset(),delete this._distance,delete this._startDistance;}_start(t){this._startDistance=this._distance=t[0].dist(t[1]);}_move(t,e){const i=this._distance;if(this._distance=t[0].dist(t[1]),this._active||!(Math.abs(Os(this._distance,this._startDistance))<.1))return this._active=!0,{zoomDelta:Os(this._distance,i),pinchAround:e}}}function Us(t,e){return 180*t.angleWith(e)/Math.PI}class Zs extends Fs{reset(){super.reset(),delete this._minDiameter,delete this._startVector,delete this._vector;}_start(t){this._startVector=this._vector=t[0].sub(t[1]),this._minDiameter=t[0].dist(t[1]);}_move(t,e){const i=this._vector;if(this._vector=t[0].sub(t[1]),this._active||!this._isBelowThreshold(this._vector))return this._active=!0,{bearingDelta:Us(this._vector,i),pinchAround:e}}_isBelowThreshold(t){this._minDiameter=Math.min(this._minDiameter,t.mag());const e=25/(Math.PI*this._minDiameter)*360,i=Us(t,this._startVector);return Math.abs(i)<e}}function Gs(t){return Math.abs(t.y)>Math.abs(t.x)}class js extends Fs{constructor(t){super(),this._map=t;}
41reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints;}touchstart(t,e,i){super.touchstart(t,e,i),this._currentTouchCount=i.length;}_start(t){this._lastPoints=t,Gs(t[0].sub(t[1]))&&(this._valid=!1);}_move(t,e,i){if(this._map._cooperativeGestures&&this._currentTouchCount<3)return;const s=t[0].sub(this._lastPoints[0]),a=t[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(s,a,i.timeStamp),this._valid?(this._lastPoints=t,this._active=!0,{pitchDelta:(s.y+a.y)/2*-.5}):void 0}gestureBeginsVertically(t,e,i){if(void 0!==this._valid)return this._valid;const s=t.mag()>=2,a=e.mag()>=2;if(!s&&!a)return;if(!s||!a)return void 0===this._firstMove&&(this._firstMove=i),i-this._firstMove<100&&void 0;const o=t.y>0==e.y>0;return Gs(t)&&Gs(e)&&o}}const Vs={panStep:100,bearingStep:15,pitchStep:10};class qs{constructor(t){this._tr=new ws(t);const e=Vs;this._panStep=e.panStep,this._bearingStep=e.bearingStep,this._pitchStep=e.pitchStep,this._rotationDisabled=!1;}reset(){this._active=!1;}keydown(t){if(t.altKey||t.ctrlKey||t.metaKey)return;let e=0,i=0,s=0,a=0,o=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(),a=-1);break;case 39:t.shiftKey?i=1:(t.preventDefault(),a=1);break;case 38:t.shiftKey?s=1:(t.preventDefault(),o=-1);break;case 40:t.shiftKey?s=-1:(t.preventDefault(),o=1);break;default:return}return this._rotationDisabled&&(i=0,s=0),{cameraAnimation:r=>{const n=this._tr;r.easeTo({duration:300,easeId:"keyboardHandler",easing:$s,zoom:e?Math.round(n.zoom)+e*(t.shiftKey?2:1):n.zoom,bearing:n.bearing+i*this._bearingStep,pitch:n.pitch+s*this._pitchStep,offset:[-a*this._panStep,-o*this._panStep],center:n.center},{originalEvent:t});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0;}enableRotation(){this._rotationDisabled=!1;}}function $s(t){return t*(2-t)}const Ws=4.000244140625;class Hs{constructor(t,e){this._onTimeout=t=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(t);},this._map=t,this._tr=new ws(t),this._el=t.getCanvasContainer(),this._triggerRenderFrame=e,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222;}setZoomRate(t){this._defaultZoomRate=t;}setWheelZoomRate(t){this._wheelZoomRate=t;}isEnabled(){return !!this._enabled}isActive(){return !!this._active||void 0!==this._finishTimeout}isZooming(){return !!this._zooming}enable(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!t&&"center"===t.around);}disable(){this.isEnabled()&&(this._enabled=!1);}wheel(e){if(!this.isEnabled())return;if(this._map._cooperativeGestures){if(!e[this._map._metaKey])return;e.preventDefault();}let i=e.deltaMode===WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY;const s=t.h.now(),a=s-(this._lastWheelEventTime||0);this._lastWheelEventTime=s,0!==i&&i%Ws==0?this._type="wheel":0!==i&&Math.abs(i)<4?this._type="trackpad":a>400?(this._type=null,this._lastValue=i,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(a*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._active||this._start(e)),e.preventDefault();}_start(e){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const s=i.mousePos(this._el,e),a=this._tr;this._around=t.L.convert(this._aroundCenter?a.center:a.unproject(s)),this._aroundPoint=a.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._triggerRenderFrame());}renderFrame(){if(!this._frameId)return;if(this._frameId=null,!this.isActive())return;const e=this._tr.transform;if(0!==this._delta){const t="wheel"===this._type&&Math.abs(this._delta)>Ws?this._wheelZoomRate:this._defaultZoomRate;let i=2/(1+Math.exp(-Math.abs(this._delta*t)));this._delta<0&&0!==i&&(i=1/i);const s="number"==typeof this._targetZoom?e.zoomScale(this._targetZoom):e.scale;this._targetZoom=Math.min(e.maxZoom,Math.max(e.minZoom,e.scaleZoom(s*i))),"wheel"===this._type&&(this._startZoom=e.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0;}const i="number"==typeof this._targetZoom?this._targetZoom:e.zoom,s=this._startZoom,a=this._easing;let o,r=!1;if("wheel"===this._type&&s&&a){const e=Math.min((t.h.now()-this._lastWheelEventTime)/200,1),n=a(e);o=t.B.number(s,i,n),e<1?this._frameId||(this._frameId=!0):r=!0;}else o=i,r=!0;return this._active=!0,r&&(this._active=!1,this._finishTimeout=setTimeout((()=>
41{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout;}),200)),{noInertia:!0,needsRenderFrame:!r,zoomDelta:o-e.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(e){let i=t.bb;if(this._prevEase){const e=this._prevEase,s=(t.h.now()-e.start)/e.duration,a=e.easing(s+.01)-e.easing(s),o=.27/Math.sqrt(a*a+1e-4)*.01,r=Math.sqrt(.0729-o*o);i=t.ba(o,r,.25,1);}return this._prevEase={start:t.h.now(),duration:e,easing:i},i}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);}}class Xs{constructor(t,e){this._clickZoom=t,this._tapZoom=e;}enable(){this._clickZoom.enable(),this._tapZoom.enable();}disable(){this._clickZoom.disable(),this._tapZoom.disable();}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class Ks{constructor(t){this._tr=new ws(t),this.reset();}reset(){this._active=!1;}dblclick(t,e){return t.preventDefault(),{cameraAnimation:i=>{i.easeTo({duration:300,zoom:this._tr.zoom+(t.shiftKey?-1:1),around:this._tr.unproject(e)},{originalEvent:t});}}}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Qs{constructor(){this._tap=new Ss({numTouches:1,numTaps:1}),this.reset();}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset();}touchstart(t,e,i){if(!this._swipePoint)if(this._tapTime){const s=e[0],a=t.timeStamp-this._tapTime<500,o=this._tapPoint.dist(s)<30;a&&o?i.length>0&&(this._swipePoint=s,this._swipeTouch=i[0].identifier):this.reset();}else this._tap.touchstart(t,e,i);}touchmove(t,e,i){if(this._tapTime){if(this._swipePoint){if(i[0].identifier!==this._swipeTouch)return;const s=e[0],a=s.y-this._swipePoint.y;return this._swipePoint=s,t.preventDefault(),this._active=!0,{zoomDelta:a/128}}}else this._tap.touchmove(t,e,i);}touchend(t,e,i){if(this._tapTime)this._swipePoint&&0===i.length&&this.reset();else {const s=this._tap.touchend(t,e,i);s&&(this._tapTime=t.timeStamp,this._tapPoint=s);}}touchcancel(){this.reset();}enable(){this._enabled=!0;}disable(){this._enabled=!1,this.reset();}isEnabled(){return this._enabled}isActive(){return this._active}}class Ys{constructor(t,e,i){this._el=t,this._mousePan=e,this._touchPan=i;}enable(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("maplibregl-touch-drag-pan");}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("maplibregl-touch-drag-pan");}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class Js{constructor(t,e,i){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=e,this._mousePitch=i;}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable();}disable(){this._mouseRotate.disable(),this._mousePitch.disable();}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class ta{constructor(t,e,i,s){this._el=t,this._touchZoom=e,this._touchRotate=i,this._tapDragZoom=s,this._rotationDisabled=!1,this._enabled=!0;}enable(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add("maplibregl-touch-zoom-rotate");}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("maplibregl-touch-zoom-rotate");}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable();}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable();}}const ea=t=>t.zoom||t.drag||t.pitch||t.rotate;class ia extends t.k{}function sa(t){return t.panDelta&&t.panDelta.mag()||t.zoomDelta||t.bearingDelta||t.pitchDelta}class aa{constructor(t,e){this.handleWindowEvent=t=>{this.handleEvent(t,`${t.type}Window`);},this.handleEvent=(t,e)=>{if("blur"===t.type)return void this.stop(!0);this._updatingCamera=!0;const s="renderFrame"===t.type?void 0:t,a={needsRenderFrame:!1},o={},r={},n=t.touches,l=n?this._getMapTouches(n):void 0,h=l?i.touchPos(this._el,l):i.mousePos(this._el,t);for(const{handlerName:i,handler:n,allowed:c}of this._handlers){if(!n.isEnabled())continue;let u;this._blockedByActive(r,c,i)?n.reset():n[e||t.type]&&(u=n[e||t.type](t,h,l),this.mergeHandlerResult(a,o,u,i,s),u&&u.needsRenderFrame&&this._triggerRe
vendor: 10,769 bytes, line 41
41nderFrame()),(u||n.isActive())&&(r[i]=n);}const c={};for(const t in this._previousActiveHandlers)r[t]||(c[t]=s);this._previousActiveHandlers=r,(Object.keys(c).length||sa(a))&&(this._changes.push([a,o,c]),this._triggerRenderFrame()),(Object.keys(r).length||sa(a))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:u}=a;u&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],u(this._map));},this._map=t,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new ps(t),this._bearingSnap=e.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(e);const s=this._el;this._listeners=[[s,"touchstart",{passive:!0}],[s,"touchmove",{passive:!1}],[s,"touchend",void 0],[s,"touchcancel",void 0],[s,"mousedown",void 0],[s,"mousemove",void 0],[s,"mouseup",void 0],[document,"mousemove",{capture:!0}],[document,"mouseup",void 0],[s,"mouseover",void 0],[s,"mouseout",void 0],[s,"dblclick",void 0],[s,"click",void 0],[s,"keydown",{capture:!1}],[s,"keyup",void 0],[s,"wheel",{passive:!1}],[s,"contextmenu",void 0],[window,"blur",void 0]];for(const[t,e,s]of this._listeners)i.addEventListener(t,e,t===document?this.handleWindowEvent:this.handleEvent,s);}destroy(){for(const[t,e,s]of this._listeners)i.removeEventListener(t,e,t===document?this.handleWindowEvent:this.handleEvent,s);}_addDefaultHandlers(t){const e=this._map,s=e.getCanvasContainer();this._add("mapEvent",new ys(e,t));const a=e.boxZoom=new Ts(e,t);this._add("boxZoom",a),t.interactive&&t.boxZoom&&a.enable();const o=new Cs(e),r=new Ks(e);e.doubleClickZoom=new Xs(r,o),this._add("tapZoom",o),this._add("clickZoom",r),t.interactive&&t.doubleClickZoom&&e.doubleClickZoom.enable();const n=new Qs;this._add("tapDragZoom",n);const l=e.touchPitch=new js(e);this._add("touchPitch",l),t.interactive&&t.touchPitch&&e.touchPitch.enable(t.touchPitch);const h=As(t),c=Rs(t);e.dragRotate=new Js(t,h,c),this._add("mouseRotate",h,["mousePitch"]),this._add("mousePitch",c,["mouseRotate"]),t.interactive&&t.dragRotate&&e.dragRotate.enable();const u=(({enable:t,clickTolerance:e})=>{const s=new Ms({checkCorrectEvent:t=>0===i.mouseButton(t)&&!t.ctrlKey});return new Ps({clickTolerance:e,move:(t,e)=>({around:e,panDelta:e.sub(t)}),activateOnStart:!0,moveStateManager:s,enable:t,assignEvents:Ls})})(t),d=new ks(t,e);e.dragPan=new Ys(s,u,d),this._add("mousePan",u),this._add("touchPan",d,["touchZoom","touchRotate"]),t.interactive&&t.dragPan&&e.dragPan.enable(t.dragPan);const _=new Zs,p=new Ns;e.touchZoomRotate=new ta(s,p,_,n),this._add("touchRotate",_,["touchPan","touchZoom"]),this._add("touchZoom",p,["touchPan","touchRotate"]),t.interactive&&t.touchZoomRotate&&e.touchZoomRotate.enable(t.touchZoomRotate);const m=e.scrollZoom=new Hs(e,(()=>this._triggerRenderFrame()));this._add("scrollZoom",m,["mousePan"]),t.interactive&&t.scrollZoom&&e.scrollZoom.enable(t.scrollZoom);const f=e.keyboard=new qs(e);this._add("keyboard",f),t.interactive&&t.keyboard&&e.keyboard.enable(),this._add("blockableMapEvent",new bs(e));}_add(t,e,i){this._handlers.push({handlerName:t,handler:e,allowed:i}),this._handlersById[t]=e;}stop(t){if(!this._updatingCamera){for(const{handler:t}of this._handlers)t.reset();this._inertia.clear(),this._fireEvents({},{},t),this._changes=[];}}isActive(){for(const{handler:t}of this._handlers)if(t.isActive())return !0;return !1}isZooming(){return !!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return !!this._eventsInProgress.rotate}isMoving(){return Boolean(ea(this._eventsInProgress))||this.isZooming()}_blockedByActive(t,e,i){for(const s in t)if(s!==i&&(!e||e.indexOf(s)<0))return !0;return !1}_getMapTouches(t){const e=[];for(const i of t)this._el.contains(i.target)&&e.push(i);return e}mergeHandlerResult(e,i,s,a,o){if(!s)return;t.e(e,s);const r={handlerName:a,originalEvent:s.originalEvent||o};void 0!==s.zoomDelta&&(i.zoom=r),void 0!==s.panDelta&&(i.drag=r),void 0!==s.pitchDelta&&(i.pitch=r),void 0!==s.bearingDelta&&(i.rotate=r);}_applyChanges(){const e={},i={},s={};for(const[a,o,r]of this._changes)a.panDelta&&(e.panDelta=(e.panDelta||new t.P(0,0))._add(a.panDelta)),a.zoomDelta&&(e.zoomDelta=(e.zoomDelta||0)+a.zoomDelta),a.bearingDelta&&(e.bearingDelta=(e.bearingDelta||0)+a.bearingDelta),a.pitchDelta&&(e.pitchDelta=(e.pitchDelta||0)+a.pitchDelta),void 0!==a.around&&(e.around=a.around),void 0!==a.pinchAround&&(e.pinchAround=a.pinchAround),a.noInertia&&(e.noInertia=a.noInertia),t.e(i,o),t.e(s,r);this._updateMapTransform(e,i,s),this._changes=[];}_updateMapTransform(t,e,i){const s=this._map,a=s._getTransformForUpdate(),o=s.terrain;if(!(sa(t)||o&&this._terrainMovement))return this._fireEvents(e,i,!0);let{panDelta:r,zoomDelta:n,bearingDelta:l,pitchDelta:h,around:c,pinchAround:u}=t;void 0!==u&&(c=u),s._stop(!0),c=c||s.transform.centerPoint;const d=a.pointLocation(r?c.sub(r):c);l&&(a.bearing+=l),h&&(a.pitch+=h),n&&(a.zoom+=n),o?this._terrainMovement||!e.drag&&!e.zoom?e.drag&&this._terrainMovement?a.center=a.pointLocation(a.centerPoint.sub(r)):a.setLocationAtPoint(d,c):(this._terrainMovement=!0,this._map._elevationFreeze=!0,a.setLocationAtPoint(d,c),this._map.once("moveend",(()=>{this._map._elevationFreeze=!1,this._terrainMovement=!1,a.recalculateZoom(s.terrain);}))):a.setLocationAtPoint(d,c),s._applyUpdatedTransform(a),this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(e,i,!0);}_fireEvents(e,i,s){const a=ea(this._eventsInProgress),o=ea(e),r={};for(const t in e){const{originalEvent:i}=e[t];this._eventsInProgress[t]||(r[`${t}start`]=i),this._eventsInProgress[t]=e[t];}!a&&o&&this._fireEvent("movestart",o.originalEvent);for(const t in r)this._fireEvent(t,r[t]);o&&this._fireEvent("move",o.originalEvent);for(const t in e){const{originalEvent:i}=e[t];this._fireEvent(t,i);}const n={};let l;for(const t in this._eventsInProgress){const{handlerName:e,originalEvent:s}=this._eventsInProgress[t];this._handlersById[e].isActive()||(delete this._eventsInProgress[t],l=i[e]||s,n[`${t}end`]=l);}for(const t in n)this._fireEvent(t,n[t]);const h=ea(this._eventsInProgress);if(s&&(a||o)&&!h){this._updatingCamera=!0;const e=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),i=t=>0!==t&&-this._bearingSnap<t&&t<this._bearingSnap;!e||!e.essential&&t.h.prefersReducedMotion?(this._map.fire(new t.k("moveend",{originalEvent:l})),i(this._map.getBearing())&&this._map.resetNorth()):(i(e.bearing||this._map.getBearing())&&(e.bearing=0),e.freezeElevation=!0,this._map.easeTo(e,{originalEvent:l})),this._updatingCamera=!1;}}_fireEvent(e,i){this._map.fire(new t.k(e,i?{originalEvent:i}:{}));}_requestFrame(){return this._map.triggerRepaint(),this._map._renderTaskQueue.add((t=>{delete this._frameId,this.handleEvent(new ia("renderFrame",{timeStamp:t})),this._applyChanges();}))}_triggerRenderFrame(){void 0===this._frameId&&(this._frameId=this._requestFrame());}}class oa extends t.E{constructor(e,i){super(),this._renderFrameCallback=()=>{const e=Math.min((t.h.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop();},this._moving=!1,this._zooming=!1,this.transform=e,this._bearingSnap=i.bearingSnap,this.on("moveend",(()=>{delete this._requestedCameraState;}));}getCenter(){return new t.L(this.transform.center.lng,this.transform.center.lat)}setCenter(t,e){return this.jumpTo({center:t},e)}panBy(e,i,s){return e=t.P.convert(e).mult(-1),this.panTo(this.transform.center,t.e({offset:e},i),s)}panTo(e,i,s){return this.easeTo(t.e({center:e},i),s)}getZoom(){return this.transform.zoom}setZoom(t,e){return this.jumpTo({zoom:t},e),this}zoomTo(e,i,s){return this.easeTo(t.e({zoom:e},i),s)}zoomIn(t,e){return this.zoomTo(this.getZoom()+1,t,e),this}zoomOut(t,e){return this.zoomTo(this.getZoom()-1,t,e),this}getBearing(){return this.transform.bearing}setBearing(t,e){return this.jumpTo({bearing:t},e),this}getPadding(){return this.transform.padding}setPadding(t,e){return this.jumpTo({padding:t},e),this}rotateTo(e,i,s){return this.easeTo(t.e({bearing:e},i),s)}resetNorth(e,i){return this.rotateTo(0,t.e({duration:1e3},e),i),this}resetNorthPitch(e,i){return this.easeTo(t.e({bearing:0,pitch:0,duration:1e3},e),i),this}snapToNorth(t,e){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(t,e):this}getPitch(){return this.transform.pitch}setPitch(t,e){return this.jumpTo({pitch:t},e),this}cameraForBounds(t,e){t=L.convert(t);const i=e&&e.bearing||0;return this._cameraForBoxAndBearing(t.getNorthWest(),t.getSouthEast(),i,e)}_cameraForBoxAndBearing(e,i,s,a){const o={top:0,bottom:0,right:0,left:0};if("number"==typeof(a=t.e({padding:o,offset:[0,0],maxZoom:this.transform.maxZoom},a)).padding){const t=a.padding;a.padding={top:t,bottom:t,right:t,left:t};}a.padding=t.e(o,a.padding);const r=this.transform,n=r.padding,l=r.project(t.L.convert(e)),h=r.project(t.L.convert(i)),c=l.rotate(-s*Math.PI/180),u=h.rotate(-s*Math.PI/180),d=new t.P(Math.max(c.x,u.x),Math.max(c.y,u.y)),_=new t.P(Math.min(c.x,u.x),Math.min(c.y,u.y)),p=d.sub(_),m=(r.width-(n.left+n.right+a.padding.left+a.padding.right))/p.x,f=(r.height-(n.top+n.bottom+a.padding.top+a.padding.bottom))/p.y;if(f<0||m<0)return void t.w("Map cannot fit within canvas with the given bounds, padding, and/or offset.");const g=Math.min(r.scaleZoom(r.scale*Math.min(m,f)),a.maxZoom),v=t.P.convert(a.offset),x=new t.P((a.padding.left-a.padding.right)/2,(a.padding.top-a.padding.bottom)/2).rotate(s*Math.PI/180),y=v.add(x).mult(r.scale/r.zoomScale(g));return {center:r.unproject(l.add(h).div(2).sub(y)),zoom:g,bearing:s}}fitBounds(t,e,i){return this._fitInternal(this.cameraForBounds(t,e),e,i)}fitScreenCoordinates(e,i,s,a,o){return this._fitInternal(this._cameraForBoxAndBearing(this.transform.pointLocation(t.P.convert(e)),this.transform.pointLocation(t.P.convert(i)),s,a),a,o)}_fitInternal(e,i,s){return e?(delete(i=t.e(e,i)).padding,i.linear?this.easeTo(i,s):this.flyTo(i,s)):this}jumpTo(e,i){this.stop();const s=this._getTransformForUpdate();let a=!1,o=!1,r=!1;return "zoom"in e&&s.zoom!==+e.zoom&&(a=!0,s.zoom=+e.zoom),void 0!==e.center&&(s.center=t.L.convert(e.center)),"bearing"in e&&s.bearing!==+e.bearing&&(o=!0,s.bearing=+e.bearing),"pitch"in e&&s.pitch!==+e.pitch&&(r=!0,s.pitch=+e.pitch),null==e.padding||s.isPaddingEqual(e.padding)||(s.padding=e.padding),this._applyUpdatedTransform(s),this.fire(new t.k("movestart",i)).fire(new t.k("move",i)),a&&this.fire(new t.k("zoomstart",i)).fire(new t.k("zoom",i)).fire(new t.k("zoomend",i)),o&&this.fire(new t.k("rotatestart",i)).fire(new t.k("rotate",i)).fire(new t.k("rotateend",i)),r&&this.fire(new t.k("pitchstart",i)).fire(new t.k("pitch",i)).fire(new t.k("pitchend",
41i)),this.fire(new t.k("moveend",i))}calculateCameraOptionsFromTo(e,i,s,a=0){const o=t.U.fromLngLat(e,i),r=t.U.fromLngLat(s,a),n=r.x-o.x,l=r.y-o.y,h=r.z-o.z,c=Math.hypot(n,l,h);if(0===c)throw new Error("Can't calculate camera options with same From and To");const u=Math.hypot(n,l),d=this.transform.scaleZoom(this.transform.cameraToCenterDistance/c/this.transform.tileSize),_=180*Math.atan2(n,-l)/Math.PI;let p=180*Math.acos(u/c)/Math.PI;return p=h<0?90-p:90+p,{center:r.toLngLat(),zoom:d,pitch:p,bearing:_}}easeTo(e,i){this._stop(!1,e.easeId),(!1===(e=t.e({offset:[0,0],duration:500,easing:t.bb},e)).animate||!e.essential&&t.h.prefersReducedMotion)&&(e.duration=0);const s=this._getTransformForUpdate(),a=this.getZoom(),o=this.getBearing(),r=this.getPitch(),n=this.getPadding(),l="zoom"in e?+e.zoom:a,h="bearing"in e?this._normalizeBearing(e.bearing,o):o,c="pitch"in e?+e.pitch:r,u="padding"in e?e.padding:s.padding,d=t.P.convert(e.offset);let _=s.centerPoint.add(d);const p=s.pointLocation(_),m=t.L.convert(e.center||p);this._normalizeCenter(m);const f=s.project(p),g=s.project(m).sub(f),v=s.zoomScale(l-a);let x,y;e.around&&(x=t.L.convert(e.around),y=s.locationPoint(x));const b={moving:this._moving,zooming:this._zooming,rotating:this._rotating,pitching:this._pitching};return this._zooming=this._zooming||l!==a,this._rotating=this._rotating||o!==h,this._pitching=this._pitching||c!==r,this._padding=!s.isPaddingEqual(u),this._easeId=e.easeId,this._prepareEase(i,e.noMoveStart,b),this.terrain&&this._prepareElevation(m),this._ease((p=>{if(this._zooming&&(s.zoom=t.B.number(a,l,p)),this._rotating&&(s.bearing=t.B.number(o,h,p)),this._pitching&&(s.pitch=t.B.number(r,c,p)),this._padding&&(s.interpolatePadding(n,u,p),_=s.centerPoint.add(d)),this.terrain&&!e.freezeElevation&&this._updateElevation(p),x)s.setLocationAtPoint(x,y);else {const t=s.zoomScale(s.zoom-a),e=l>a?Math.min(2,v):Math.max(.5,v),i=Math.pow(e,1-p),o=s.unproject(f.add(g.mult(p*i)).mult(t));s.setLocationAtPoint(s.renderWorldCopies?o.wrap():o,_);}this._applyUpdatedTransform(s),this._fireMoveEvents(i);}),(t=>{this.terrain&&this._finalizeElevation(),this._afterEase(i,t);}),e),this}_prepareEase(e,i,s={}){this._moving=!0,i||s.moving||this.fire(new t.k("movestart",e)),this._zooming&&!s.zooming&&this.fire(new t.k("zoomstart",e)),this._rotating&&!s.rotating&&this.fire(new t.k("rotatestart",e)),this._pitching&&!s.pitching&&this.fire(new t.k("pitchstart",e));}_prepareElevation(t){this._elevationCenter=t,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(t,this.transform.tileZoom),this._elevationFreeze=!0;}_updateElevation(e){this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);const i=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(e<1&&i!==this._elevationTarget){const t=this._elevationTarget-this._elevationStart;this._elevationStart+=e*(t-(i-(t*e+this._elevationStart))/(1-e)),this._elevationTarget=i;}this.transform.elevation=t.B.number(this._elevationStart,this._elevationTarget,e);}_finalizeElevation(){this._elevationFreeze=!1,this.transform.recalculateZoom(this.terrain);}_getTransformForUpdate(){return this.transformCameraUpdate?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_applyUpdatedTransform(t){if(!this.transformCameraUpdate)return;const e=t.clone(),{center:i,zoom:s,pitch:a,bearing:o,elevation:r}=this.transformCameraUpdate(e);i&&(e.center=i),void 0!==s&&(e.zoom=s),void 0!==a&&(e.pitch=a),void 0!==o&&(e.bearing=o),void 0!==r&&(e.elevation=r),this.transform.apply(e);}_fireMoveEvents(e){this.fire(new t.k("move",e)),this._zooming&&this.fire(new t.k("zoom",e)),this._rotating&&this.fire(new t.k("rotate",e)),this._pitching&&this.fire(new t.k("pitch",e));}_afterEase(e,i){if(this._easeId&&i&&this._easeId===i)return;delete this._easeId;const s=this._zooming,a=this._rotating,o=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,s&&this.fire(new t.k("zoomend",e)),a&&this.fire(new t.k("rotateend",e)),o&&this.fire(new t.k("pitchend",e)),this.fire(new t.k("moveend",e));}flyTo(e,i){if(!e.essential&&t.h.prefersReducedMotion){const s=t.F(e,["center","zoom","bearing","pitch","around"]);return this.jumpTo(s,i)}
41this.stop(),e=t.e({offset:[0,0],speed:1.2,curve:1.42,easing:t.bb},e);const s=this._getTransformForUpdate(),a=this.getZoom(),o=this.getBearing(),r=this.getPitch(),n=this.getPadding(),l="zoom"in e?t.ad(+e.zoom,s.minZoom,s.maxZoom):a,h="bearing"in e?this._normalizeBearing(e.bearing,o):o,c="pitch"in e?+e.pitch:r,u="padding"in e?e.padding:s.padding,d=s.zoomScale(l-a),_=t.P.convert(e.offset);let p=s.centerPoint.add(_);const m=s.pointLocation(p),f=t.L.convert(e.center||m);this._normalizeCenter(f);const g=s.project(m),v=s.project(f).sub(g);let x=e.curve;const y=Math.max(s.width,s.height),b=y/d,w=v.mag();if("minZoom"in e){const i=t.ad(Math.min(e.minZoom,a,l),s.minZoom,s.maxZoom),o=y/s.zoomScale(i-a);x=Math.sqrt(o/w*2);}const T=x*x;function I(t){const e=(b*b-y*y+(t?-1:1)*T*T*w*w)/(2*(t?b:y)*T*w);return Math.log(Math.sqrt(e*e+1)-e)}function E(t){return (Math.exp(t)-Math.exp(-t))/2}function S(t){return (Math.exp(t)+Math.exp(-t))/2}const C=I(!1);let P=function(t){return S(C)/S(C+x*t)},D=function(t){return y*((S(C)*(E(e=C+x*t)/S(e))-E(C))/T)/w;var e;},M=(I(!0)-C)/x;if(Math.abs(w)<1e-6||!isFinite(M)){if(Math.abs(y-b)<1e-6)return this.easeTo(e,i);const t=b<y?-1:1;M=Math.abs(Math.log(b/y))/x,D=function(){return 0},P=function(e){return Math.exp(t*x*e)};}return e.duration="duration"in e?+e.duration:1e3*M/("screenSpeed"in e?+e.screenSpeed/x:+e.speed),e.maxDuration&&e.duration>e.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=o!==h,this._pitching=c!==r,this._padding=!s.isPaddingEqual(u),this._prepareEase(i,!1),this.terrain&&this._prepareElevation(f),this._ease((d=>{const m=d*M,x=1/P(m);s.zoom=1===d?l:a+s.scaleZoom(x),this._rotating&&(s.bearing=t.B.number(o,h,d)),this._pitching&&(s.pitch=t.B.number(r,c,d)),this._padding&&(s.interpolatePadding(n,u,d),p=s.centerPoint.add(_)),this.terrain&&!e.freezeElevation&&this._updateElevation(d);const y=1===d?f:s.unproject(g.add(v.mult(D(m))).mult(x));s.setLocationAtPoint(s.renderWorldCopies?y.wrap():y,p),this._applyUpdatedTransform(s),this._fireMoveEvents(i);}),(()=>{this.terrain&&this._finalizeElevation(),this._afterEase(i);}),e),this}isEasing(){return !!this._easeFrameId}stop(){return this._stop()}_stop(t,e){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){const t=this._onEaseEnd;delete this._onEaseEnd,t.call(this,e);}if(!t){const t=this.handlers;t&&t.stop(!1);}return this}_ease(e,i,s){!1===s.animate||0===s.duration?(e(1),i()):(this._easeStart=t.h.now(),this._easeOptions=s,this._onEaseFrame=e,this._onEaseEnd=i,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback));}_normalizeBearing(e,i){e=t.b5(e,-180,180);const s=Math.abs(e-i);return Math.abs(e-360-i)<s&&(e-=360),Math.abs(e+360-i)<s&&(e+=360),e}_normalizeCenter(t){const e=this.transform;if(!e.renderWorldCopies||e.lngRange)return;const i=t.lng-e.center.lng;t.lng+=i>180?-360:i<-180?360:0;}queryTerrainElevation(e){return this.terrain?this.terrain.getElevationForLngLatZoom(t.L.convert(e),this.transform.tileZoom)-this.transform.elevation:null}}class ra{constructor(t={}){this._toggleAttribution=()=>{this._container.classList.contains("maplibregl-compact")&&(this._container.classList.contains("maplibregl-compact-show")?(this._container.setAttribute("open",""),this._container.classList.remove("maplibregl-compact-show")):(this._container.classList.add("maplibregl-compact-show"),this._container.removeAttribute("open")));},this._updateData=t=>{!t||"metadata"!==t.sourceDataType&&"visibility"!==t.sourceDataType&&"style"!==t.dataType&&"terrain"!==t.type||this._updateAttributions();},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1===this._compact?this._container.setAttribute("open",""):this._container.classList.contains("maplibregl-compact")||this._container.classList.contains("maplibregl-attrib-empty")||(this._container.setAttribute("open",""),this._container.classList.add("maplibregl-compact","maplibregl-compact-show")):(this._container.setAttribute("open",""),this._container.classList.contains("maplibregl-compact")&&this._container.classList.remove("maplibregl-compact","maplibregl-compact-show"));},this._updateCompactMinimize=()=>{this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show");},this.options=t;}getDefaultPosition(){return "bottom-right"}onAdd(t){return this._map=t,this._compact=this.options&&this.options.compact,this._container=i.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=i.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=i.create("div","maplibregl-ctrl-attrib-inner",this._container),this._updateAttributions(),this._updateCompact(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("terrain",this._updateData),this._map.on("resize",this._updateCompact),this._map.on("drag",this._updateCompactMinimize),this._container}onRemove(){i.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("terrain",this._updateData),this._map.off("resize",this._updateCompact),this._map.off("drag",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0;}_setElementTitle(t,e){const i=this._map._getUIString(`AttributionControl.${e}`);t.title=i,t.setAttribute("aria-label",i);}_updateAttributions(){if(!this._map.style)return;let t=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?t=t.concat(this.options.customAttribution.map((t=>"string"!=typeof t?"":t))):"string"==typeof this.options.customAttribution&&t.push(this.options.customAttribution)),this._map.style.stylesheet){const t=this._map.style.stylesheet;this.styleOwner=t.owner,this.styleId=t.id;}const e=this._map.style.sourceCaches;for(const i in e){const s=e[i];if(s.used||s.usedForTerrain){const e=s.getSource();e.attribution&&t.indexOf(e.attribution)<0&&t.push(e.attribution);}}t=t.filter((t=>String(t).trim())),t.sort(((t,e)=>t.length-e.length)),t=t.filter(((e,i)=>{for(let s=i+1;s<t.length;s++)if(t[s].indexOf(e)>=0)return !1;return !0}));const i=t.join(" | ");i!==this._attribHTML&&(this._attribHTML=i,t.length?(this._innerContainer.innerHTML=i,this._container.classList.remove("maplibregl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty"),this._updateCompact(),this._editLink=null);}}class na{constructor(t={}){this._updateCompact=()=>{const t=this._container.children;if(t.length){const e=t[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1!==this._compact&&e.classList.add("maplibregl-compact"):e.classList.remove("maplibregl-compact");}},this.options=t;}getDefaultPosition(){return "bottom-left"}onAdd(t){this._map=t,this._compact=this.options&&this.options.compact,this._container=i.create("div","maplibregl-ctrl");const e=i.create("a","maplibregl-ctrl-logo");return e.target="_blank",e.rel="noopener nofollow",e.href="https://maplibre.org/",e.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),e.setAttribute("rel","noopener nofollow"),this._container.appendChild(e),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){i.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0;}}class la{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1;}add(t){const e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e}remove(t){const e=this._currentlyRunning,i=e?this._queue.concat(e):this._queue;
vendor: 14,908 bytes, line 41
41for(const e of i)if(e.id===t)return void(e.cancelled=!0)}run(t=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");const e=this._currentlyRunning=this._queue;this._queue=[];for(const i of e)if(!i.cancelled&&(i.callback(t),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1;}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[];}}const ha={"AttributionControl.ToggleAttribution":"Toggle attribution","AttributionControl.MapFeedback":"Map feedback","FullscreenControl.Enter":"Enter fullscreen","FullscreenControl.Exit":"Exit fullscreen","GeolocateControl.FindMyLocation":"Find my location","GeolocateControl.LocationNotAvailable":"Location not available","LogoControl.Title":"Mapbox logo","NavigationControl.ResetBearing":"Reset bearing to north","NavigationControl.ZoomIn":"Zoom in","NavigationControl.ZoomOut":"Zoom out","ScaleControl.Feet":"ft","ScaleControl.Meters":"m","ScaleControl.Kilometers":"km","ScaleControl.Miles":"mi","ScaleControl.NauticalMiles":"nm","TerrainControl.enableTerrain":"Enable terrain","TerrainControl.disableTerrain":"Disable terrain"};var ca=t.Q([{name:"a_pos3d",type:"Int16",components:3}]);class ua extends t.E{constructor(t){super(),this.sourceCache=t,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,t.usedForTerrain=!0,t.tileSize=this.tileSize*2**this.deltaZoom;}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null;}update(e,i){this.sourceCache.update(e,i),this._renderableTilesKeys=[];const s={};for(const a of e.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:i}))s[a.key]=!0,this._renderableTilesKeys.push(a.key),this._tiles[a.key]||(a.posMatrix=new Float64Array(16),t.aS(a.posMatrix,0,t.N,0,t.N,0,1),this._tiles[a.key]=new W(a,this.tileSize));for(const t in this._tiles)s[t]||delete this._tiles[t];}freeRtt(t){for(const e in this._tiles){const i=this._tiles[e];(!t||i.tileID.equals(t)||i.tileID.isChildOf(t)||t.isChildOf(i.tileID))&&(i.rtt=[]);}}getRenderableTiles(){return this._renderableTilesKeys.map((t=>this.getTileByID(t)))}getTileByID(t){return this._tiles[t]}getTerrainCoords(e){const i={};for(const s of this._renderableTilesKeys){const a=this._tiles[s].tileID;if(a.canonical.equals(e.canonical)){const a=e.clone();a.posMatrix=new Float64Array(16),t.aS(a.posMatrix,0,t.N,0,t.N,0,1),i[s]=a;}else if(a.canonical.isChildOf(e.canonical)){const o=e.clone();o.posMatrix=new Float64Array(16);const r=a.canonical.z-e.canonical.z,n=a.canonical.x-(a.canonical.x>>r<<r),l=a.canonical.y-(a.canonical.y>>r<<r),h=t.N>>r;t.aS(o.posMatrix,0,h,0,h,0,1),t.$(o.posMatrix,o.posMatrix,[-n*h,-l*h,0]),i[s]=o;}else if(e.canonical.isChildOf(a.canonical)){const o=e.clone();o.posMatrix=new Float64Array(16);const r=e.canonical.z-a.canonical.z,n=e.canonical.x-(e.canonical.x>>r<<r),l=e.canonical.y-(e.canonical.y>>r<<r),h=t.N>>r;t.aS(o.posMatrix,0,t.N,0,t.N,0,1),t.$(o.posMatrix,o.posMatrix,[n*h,l*h,0]),t.a0(o.posMatrix,o.posMatrix,[1/2**r,1/2**r,0]),i[s]=o;}}return i}getSourceTile(t,e){const i=this.sourceCache._source;let s=t.overscaledZ-this.deltaZoom;if(s>i.maxzoom&&(s=i.maxzoom),s<i.minzoom)return null;this._sourceTileCache[t.key]||(this._sourceTileCache[t.key]=t.scaledTo(s).key);let a=this.sourceCache.getTileByID(this._sourceTileCache[t.key]);if((!a||!a.dem)&&e)for(;s>=i.minzoom&&(!a||!a.dem);)a=this.sourceCache.getTileByID(t.scaledTo(s--).key);return a}tilesAfterTime(t=Date.now()){return Object.values(this._tiles).filter((e=>e.timeAdded>=t))}}class da{constructor(t,e,i){this.painter=t,this.sourceCache=new ua(e),this.options=i,this.exaggeration="number"==typeof i.exaggeration?i.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024;}getDEMElevation(e,i,s,a=t.N){var o;if(!(i>=0&&i<a&&s>=0&&s<a))return 0;const r=this.getTerrainData(e),n=null===(o=r.tile)||void 0===o?void 0:o.dem;if(!n)return 0;const l=function(t,e,i){var s=e[0],a=e[1];return t[0]=i[0]*s+i[4]*a+i[12],t[1]=i[1]*s+i[5]*a+i[13],t}([],[i/a*t.N,s/a*t.N],r.u_terrain_matrix),h=[l[0]*n.dim,l[1]*n.dim],c=Math.floor(h[0]),u=Math.floor(h[1]),d=h[0]-c,_=h[1]-u;return n.get(c,u)*(1-d)*(1-_)+n.get(c+1,u)*d*(1-_)+n.get(c,u+1)*(1-d)*_+n.get(c+1,u+1)*d*_}getElevationForLngLatZoom(e,i){const{tileID:s,mercatorX:a,mercatorY:o}=this._getOverscaledTileIDFromLngLatZoom(e,i);return this.getElevation(s,a%t.N,o%t.N,t.N)}getElevation(e,i,s,a=t.N){return this.getDEMElevation(e,i,s,a)*this.exaggeration}getTerrainData(e){if(!this._emptyDemTexture){const e=this.painter.context,i=new t.R({width:1,height:1},new Uint8Array(4));this._emptyDepthTexture=new x(e,i,e.gl.RGBA,{premultiply:!1}),this._emptyDemUnpack=[0,0,0,0],this._emptyDemTexture=new x(e,new t.R({width:1,height:1}),e.gl.RGBA,{premultiply:!1}),this._emptyDemTexture.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),this._emptyDemMatrix=t.ao([]);}const i=this.sourceCache.getSourceTile(e,!0);if(i&&i.dem&&(!i.demTexture||i.needsTerrainPrepare)){const t=this.painter.context;i.demTexture=this.painter.getTileTexture(i.dem.stride),i.demTexture?i.demTexture.update(i.dem.getPixels(),{premultiply:!1}):i.demTexture=new x(t,i.dem.getPixels(),t.gl.RGBA,{premultiply:!1}),i.demTexture.bind(t.gl.NEAREST,t.gl.CLAMP_TO_EDGE),i.needsTerrainPrepare=!1;}const s=i&&i+i.tileID.key+e.key;if(s&&!this._demMatrixCache[s]){const s=this.sourceCache.sourceCache._source.maxzoom;let a=e.canonical.z-i.tileID.canonical.z;e.overscaledZ>e.canonical.z&&(e.canonical.z>=s?a=e.canonical.z-s:t.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));const o=e.canonical.x-(e.canonical.x>>a<<a),r=e.canonical.y-(e.canonical.y>>a<<a),n=t.bc(new Float64Array(16),[1/(t.N<<a),1/(t.N<<a),0]);t.$(n,n,[o*t.N,r*t.N,0]),this._demMatrixCache[e.key]={matrix:n,coord:e};}return {u_depth:2,u_terrain:3,u_terrain_dim:i&&i.dem&&i.dem.dim||1,u_terrain_matrix:s?this._demMatrixCache[e.key].matrix:this._emptyDemMatrix,u_terrain_unpack:i&&i.dem&&i.dem.getUnpackVector()||this._emptyDemUnpack,u_terrain_exaggeration:this.exaggeration,texture:(i&&i.demTexture||this._emptyDemTexture).texture,depthTexture:(this._fboDepthTexture||this._emptyDepthTexture).texture,tile:i}}getFramebuffer(t){const e=this.painter,i=e.width/devicePixelRatio,s=e.height/devicePixelRatio;return !this._fbo||this._fbo.width===i&&this._fbo.height===s||(this._fbo.destroy(),this._fboCoordsTexture.destroy(),this._fboDepthTexture.destroy(),delete this._fbo,delete this._fboDepthTexture,delete this._fboCoordsTexture),this._fboCoordsTexture||(this._fboCoordsTexture=new x(e.context,{width:i,height:s,data:null},e.context.gl.RGBA,{premultiply:!1}),this._fboCoordsTexture.bind(e.context.gl.NEAREST,e.context.gl.CLAMP_TO_EDGE)),this._fboDepthTexture||(this._fboDepthTexture=new x(e.context,{width:i,height:s,data:null},e.context.gl.RGBA,{premultiply:!1}),this._fboDepthTexture.bind(e.context.gl.NEAREST,e.context.gl.CLAMP_TO_EDGE)),this._fbo||(this._fbo=e.context.createFramebuffer(i,s,!0,!1),this._fbo.depthAttachment.set(e.context.createRenderbuffer(e.context.gl.DEPTH_COMPONENT16,i,s))),this._fbo.colorAttachment.set("coords"===t?this._fboCoordsTexture.texture:this._fboDepthTexture.texture),this._fbo}getCoordsTexture(){const e=this.painter.context;if(this._coordsTexture)return this._coordsTexture;const i=new Uint8Array(this._coordsTextureSize*this._coordsTextureSize*4);for(let t=0,e=0;t<this._coordsTextureSize;t++)for(let s=0;s<this._coordsTextureSize;s++,e+=4)i[e+0]=255&s,i[e+1]=255&t,i[e+2]=s>>8<<4|t>>8,i[e+3]=0;const s=new t.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(i.buffer)),a=new x(e,s,e.gl.RGBA,{premultiply:!1});return a.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),this._coordsTexture=a,a}pointCoordinate(e){const i=new Uint8Array(4),s=this.painter.context,a=s.gl;s.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),a.readPixels(e.x,this.painter.height/devicePixelRatio-e.y-1,1,1,a.RGBA,a.UNSIGNED_BYTE,i),s.bindFramebuffer.set(null);const o=i[0]+(i[2]>>4<<8),r=i[1]+((15&i[2])<<8),n=this.coordsIndex[255-i[3]],l=n&&this.sourceCache.getTileByID(n);if(!l)return null;const h=this._coordsTextureSize,c=(1<<l.tileID.canonical.z)*h;return new t.U(this._allowMercatorOverflow(e,(l.tileID.canonical.x*h+o)/c),(l.tileID.canonical.y*h+r)/c,this.getElevation(l.tileID,o,r,h))}getTerrainMesh(){if(this._mesh)return this._mesh;const e=this.painter.context,i=new t.bd,s=new t.b0,a=this.meshSize,o=t.N/a,r=a*a;for(let t=0;t<=a;t++)for(let e=0;e<=a;e++)i.emplaceBack(e*o,t*o,0);for(let t=0;t<r;t+=a+1)for(let e=0;e<a;e++)s.emplaceBack(e+t,a+e+t+1,a+e+t+2),s.emplaceBack(e+t,a+e+t+2,e+t+1);const n=i.length,l=n+2*(a+1);for(const e of [0,1])for(let s=0;s<=a;s++)for(const a of [0,1])i.emplaceBack(s*o,e*t.N,a);for(let t=0;t<2*a;t+=2)s.emplaceBack(l+t,l+t+1,l+t+3),s.emplaceBack(l+t,l+t+3,l+t+2),s.emplaceBack(n+t,n+t+3,n+t+1),s.emplaceBack(n+t,n+t+2,n+t+3);const h=i.length,c=h+2*(a+1);for(const e of [0,1])for(let s=0;s<=a;s++)for(const a of [0,1])i.emplaceBack(e*t.N,s*o,a);for(let t=0;t<2*a;t+=2)s.emplaceBack(h+t,h+t+1,h+t+3),s.emplaceBack(h+t,h+t+3,h+t+2),s.emplaceBack(c+t,c+t+3,c+t+1),s.emplaceBack(c+t,c+t+2,c+t+3);return this._mesh={indexBuffer:e.createIndexBuffer(s),vertexBuffer:e.createVertexBuffer(i,ca.members),segments:t.S.simpleSegment(0,0,i.length,s.length)},this._mesh}getMeshFrameDelta(e){return 2*Math.PI*t.be/Math.pow(2,e)/5}getMinTileElevationForLngLatZoom(t,e){var i;const{tileID:s}=this._getOverscaledTileIDFromLngLatZoom(t,e);return null!==(i=this.getMinMaxElevation(s).minElevation)&&void 0!==i?i:0}getMinMaxElevation(t){const e=this.getTerrainData(t).tile,i={minElevation:null,maxElevation:null};return e&&e.dem&&(i.minElevation=e.dem.min*this.exaggeration,i.maxElevation=e.dem.max*this.exaggeration),i}_getOverscaledTileIDFromLngLatZoom(e,i){const s=t.U.fromLngLat(e.wrap()),a=(1<<i)*t.N,o=s.x*a,r=s.y*a,n=Math.floor(o/t.N),l=Math.floor(r/t.N);return {tileID:new t.O(i,0,i,n,l),mercatorX:o,mercatorY:r}}_allowMercatorOverflow(e,i){const s=e.x<this.painter.width/2;let a=t.bf(i);const o=this.painter.transform.center.lng;return s&&Math.sign(a)>0&&Math.sign(o)<0||!s&&Math.sign(a)<0&&Math.sign(o)>0?(a=360*Math.sign(o)+a,t.G(a)):i}}class _a{constructor(t,e,i){this._context=t,this._size=e,this._tileSize=i,this._objects=[],this._recentlyUsed=[],this._stamp=0;}destruct(){for(const t of this._objects)t.texture.destroy(),t.fbo.destroy();}_createObject(t){const e=this._context.createFramebuffer(this._tileSize,this._tileSize,!0,!0),i=new x(this._context,{width:this._tileSize,height:this._tileSize,data:null},this._context.gl.RGBA);return i.bind(this._context.gl.LINEAR,this._context.gl.CLAMP_TO_EDGE),e.depthAttachment.set(this._context.createRenderbuffer(this._context.gl.DEPTH_STENCIL,this._tileSize,this._tileSize)),e.colorAttachment.set(i.texture),{id:t,fbo:e,texture:i,stamp:-1,inUse:!1}}getObjectForId(t){return this._objects[t]}useObject(t){t.inUse=!0,this._recentlyUsed=this._recentlyUsed.filter((e=>t.id!==e)),this._recentlyUsed.push(t.id);}stampObject(t){t.stamp=++this._stamp;}getOrCreateFreeObject(){for(const t of this._recentlyUsed)if(!this._objects[t].inUse)return this._objects[t];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");const t=this._createObject(this._objects.length);return this._objects.push(t),t}freeObject(t){t.inUse=!1;}freeAllObjects(){for(const t of this._objects)this.freeObject(t);}isFull(){return !(this._objects.length<this._size)&&!1===this._objects.some((t=>!t.inUse))}}const pa={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class ma{constructor(t,e){this.painter=t,this.terrain=e,this.pool=new _a(t.context,30,e.sourceCache.tileSize*e.qualityFactor);}destruct(){this.pool.destruct();}getTexture(t){return this.pool.getObjectForId(t.rtt[this._stacks.length-1].id).texture}prepareForRender(t,e){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=t._order.filter((i=>!t._layers[i].isHidden(e))),this._coordsDescendingInv={};for(const e in t.sourceCaches){this._coordsDescendingInv[e]={};const i=t.sourceCaches[e].getVisibleCoordinates();for(const t of i){const i=this.terrain.sourceCache.getTerrainCoords(t);for(const t in i)this._coordsDescendingInv[e][t]||(this._coordsDescendingInv[e][t]=[]),this._coordsDescendingInv[e][t].push(i[t]);}}this._coordsDescendingInvStr={};for(const e of t._order){const i=t._layers[e],s=i.source;if(pa[i.type]&&!this._coordsDescendingInvStr[s]){this._coordsDescendingInvStr[s]={};for(const t in this._coordsDescendingInv[s])this._coordsDescendingInvStr[s][t]=this._coordsDescendingInv[s][t].map((t=>t.key)).sort().join();}}for(const t of this._renderableTiles)for(const e in this._coordsDescendingInvStr){const i=this._coordsDescendingInvStr[e][t.tileID.key];i&&i!==t.rttCoords[e]&&(t.rtt=[]);}}renderLayer(e){if(e.isHidden(this.painter.transform.zoom))return !1;const i=e.type,s=this.painter,a=this._renderableLayerIds[this._renderableLayerIds.length-1]===e.id;if(pa[i]&&(this._prevType&&pa[this._prevType]||this._stacks.push([]),this._prevType=i,this._stacks[this._stacks.length-1].push(e.id),!a))return !0;if(pa[this._prevType]||pa[i]&&a){this._prevType=i;const e=this._stacks.length-1,a=this._stacks[e]||[];for(const i of this._renderableTiles){if(this.pool.isFull()&&(es(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(i),i.rtt[e]){const t=this.pool.getObjectForId(i.rtt[e].id);if(t.stamp===i.rtt[e].stamp){this.pool.useObject(t);continue}}const o=this.pool.getOrCreateFreeObject();this.pool.useObject(o),this.pool.stampObject(o),i.rtt[e]={id:o.id,stamp:o.stamp},s.context.bindFramebuffer.set(o.fbo.framebuffer),s.context.clear({color:t.aT.transparent,stencil:0}),s.currentStencilSource=void 0;for(let t=0;t<a.length;t++){const e=s.style._layers[a[t]],r=e.source?this._coordsDescendingInv[e.source][i.tileID.key]:[i.tileID];s.context.viewport.set([0,0,o.fbo.width,o.fbo.height]),s._renderTileClippingMasks(e,r),s.renderLayer(s,s.style.sourceCaches[e.source],e,r),e.source&&(i.rttCoords[e.source]=this._coordsDescendingInvStr[e.source][i.tileID.key]);}}return es(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects(),pa[i]}return !1}}const fa=e,ga={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:60,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:void 0,bearingSnap:7,clickTolerance:3,pitchWithRotate:!0,hash:!1,attributionControl:!0,maplibreLogo:!1,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,maxTileC
41acheSize:null,maxTileCacheZoomLevels:t.c.MAX_TILE_CACHE_ZOOM_LEVELS,localIdeographFontFamily:"sans-serif",transformRequest:null,transformCameraUpdate:null,fadeDuration:300,crossSourceCollisions:!0,validateStyle:!0,maxCanvasSize:[4096,4096]},va=t=>{t.touchstart=t.dragStart,t.touchmoveWindow=t.dragMove,t.touchend=t.dragEnd;},xa={showCompass:!0,showZoom:!0,visualizePitch:!1};class ya{constructor(e,s,a=!1){this.mousedown=e=>{this.startMouse(t.e({},e,{ctrlKey:!0,preventDefault:()=>e.preventDefault()}),i.mousePos(this.element,e)),i.addEventListener(window,"mousemove",this.mousemove),i.addEventListener(window,"mouseup",this.mouseup);},this.mousemove=t=>{this.moveMouse(t,i.mousePos(this.element,t));},this.mouseup=t=>{this.mouseRotate.dragEnd(t),this.mousePitch&&this.mousePitch.dragEnd(t),this.offTemp();},this.touchstart=t=>{1!==t.targetTouches.length?this.reset():(this._startPos=this._lastPos=i.touchPos(this.element,t.targetTouches)[0],this.startTouch(t,this._startPos),i.addEventListener(window,"touchmove",this.touchmove,{passive:!1}),i.addEventListener(window,"touchend",this.touchend));},this.touchmove=t=>{1!==t.targetTouches.length?this.reset():(this._lastPos=i.touchPos(this.element,t.targetTouches)[0],this.moveTouch(t,this._lastPos));},this.touchend=t=>{0===t.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)<this._clickTolerance&&this.element.click(),delete this._startPos,delete this._lastPos,this.offTemp();},this.reset=()=>{this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),this.touchRotate.reset(),this.touchPitch&&this.touchPitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp();},this._clickTolerance=10;const o=e.dragRotate._mouseRotate.getClickTolerance(),r=e.dragRotate._mousePitch.getClickTolerance();this.element=s,this.mouseRotate=As({clickTolerance:o,enable:!0}),this.touchRotate=(({enable:t,clickTolerance:e,bearingDegreesPerPixelMoved:i=.8})=>{const s=new zs;return new Ps({clickTolerance:e,move:(t,e)=>({bearingDelta:(e.x-t.x)*i}),moveStateManager:s,enable:t,assignEvents:va})})({clickTolerance:o,enable:!0}),this.map=e,a&&(this.mousePitch=Rs({clickTolerance:r,enable:!0}),this.touchPitch=(({enable:t,clickTolerance:e,pitchDegreesPerPixelMoved:i=-.5})=>{const s=new zs;return new Ps({clickTolerance:e,move:(t,e)=>({pitchDelta:(e.y-t.y)*i}),moveStateManager:s,enable:t,assignEvents:va})})({clickTolerance:r,enable:!0})),i.addEventListener(s,"mousedown",this.mousedown),i.addEventListener(s,"touchstart",this.touchstart,{passive:!1}),i.addEventListener(s,"touchcancel",this.reset);}startMouse(t,e){this.mouseRotate.dragStart(t,e),this.mousePitch&&this.mousePitch.dragStart(t,e),i.disableDrag();}startTouch(t,e){this.touchRotate.dragStart(t,e),this.touchPitch&&this.touchPitch.dragStart(t,e),i.disableDrag();}moveMouse(t,e){const i=this.map,{bearingDelta:s}=this.mouseRotate.dragMove(t,e)||{};if(s&&i.setBearing(i.getBearing()+s),this.mousePitch){const{pitchDelta:s}=this.mousePitch.dragMove(t,e)||{};s&&i.setPitch(i.getPitch()+s);}}moveTouch(t,e){const i=this.map,{bearingDelta:s}=this.touchRotate.dragMove(t,e)||{};if(s&&i.setBearing(i.getBearing()+s),this.touchPitch){const{pitchDelta:s}=this.touchPitch.dragMove(t,e)||{};s&&i.setPitch(i.getPitch()+s);}}off(){const t=this.element;i.removeEventListener(t,"mousedown",this.mousedown),i.removeEventListener(t,"touchstart",this.touchstart,{passive:!1}),i.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),i.removeEventListener(window,"touchend",this.touchend),i.removeEventListener(t,"touchcancel",this.reset),this.offTemp();}offTemp(){i.enableDrag(),i.removeEventListener(window,"mousemove",this.mousemove),i.removeEventListener(window,"mouseup",this.mouseup),i.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),i.removeEventListener(window,"touchend",this.touchend);}}let ba;function wa(e,i,s){if(e=new t.L(e.lng,e.lat),i){const a=new t.L(e.lng-360,e.lat),o=new t.L(e.lng+360,e.lat),r=s.locationPoint(e).distSqr(i);s.locationPoint(a).distSqr(i)<r?e=a:s.locationPoint(o).distSqr(i)<r&&(e=o);}for(;Math.abs(e.lng-s.center.lng)>180;){const t=s.locationPoint(e);if(t.x>=0&&t.y>=0&&t.x<=s.width&&t.y<=s.height)break;e.lng>s.center.lng?e.lng-=360:e.lng+=360;}return e}
41const Ta={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 Ia(t,e,i){const s=t.classList;for(const t in Ta)s.remove(`maplibregl-${i}-anchor-${t}`);s.add(`maplibregl-${i}-anchor-${e}`);}class Ea extends t.E{constructor(e){if(super(),this._onKeyPress=t=>{const e=t.code,i=t.charCode||t.keyCode;"Space"!==e&&"Enter"!==e&&32!==i&&13!==i||this.togglePopup();},this._onMapClick=t=>{const e=t.originalEvent.target,i=this._element;this._popup&&(e===i||i.contains(e))&&this.togglePopup();},this._update=t=>{if(!this._map)return;const e=this._map.loaded()&&!this._map.isMoving();("terrain"===(null==t?void 0:t.type)||"render"===(null==t?void 0:t.type)&&!e)&&this._map.once("render",this._update),this._map.transform.renderWorldCopies&&(this._lngLat=wa(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset);let s="";"viewport"===this._rotationAlignment||"auto"===this._rotationAlignment?s=`rotateZ(${this._rotation}deg)`:"map"===this._rotationAlignment&&(s=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let a="";"viewport"===this._pitchAlignment||"auto"===this._pitchAlignment?a="rotateX(0deg)":"map"===this._pitchAlignment&&(a=`rotateX(${this._map.getPitch()}deg)`),t&&"moveend"!==t.type||(this._pos=this._pos.round()),i.setTransform(this._element,`${Ta[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${a} ${s}`),this._map.terrain&&!this._opacityTimeout&&(this._opacityTimeout=setTimeout((()=>{const t=this._map.unproject(this._pos),e=40075016.686*Math.abs(Math.cos(this._lngLat.lat*Math.PI/180))/Math.pow(2,this._map.transform.tileZoom+8);this._element.style.opacity=t.distanceTo(this._lngLat)>20*e?"0.2":"1.0",this._opacityTimeout=null;}),100));},this._onMove=e=>{if(!this._isDragging){const t=this._clickTolerance||this._map._clickTolerance;this._isDragging=e.point.dist(this._pointerdownPos)>=t;}this._isDragging&&(this._pos=e.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none","pending"===this._state&&(this._state="active",this.fire(new t.k("dragstart"))),this.fire(new t.k("drag")));},this._onUp=()=>{this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),"active"===this._state&&this.fire(new t.k("dragend")),this._state="inactive";},this._addDragHandler=t=>{this._element.contains(t.originalEvent.target)&&(t.preventDefault(),this._positionDelta=t.point.sub(this._pos).add(this._offset),this._pointerdownPos=t.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp));},this._anchor=e&&e.anchor||"center",this._color=e&&e.color||"#3FB1CE",this._scale=e&&e.scale||1,this._draggable=e&&e.draggable||!1,this._clickTolerance=e&&e.clickTolerance||0,this._isDragging=!1,this._state="inactive",this._rotation=e&&e.rotation||0,this._rotationAlignment=e&&e.rotationAlignment||"auto",this._pitchAlignment=e&&e.pitchAlignment&&"auto"!==e.pitchAlignment?e.pitchAlignment:this._rotationAlignment,e&&e.element)this._element=e.element,this._offset=t.P.convert(e&&e.offset||[0,0]);else {this._defaultMarker=!0,this._element=i.create("div"),this._element.setAttribute("aria-label","Map marker");const s=i.createNS("http://www.w3.org/2000/svg","svg"),a=41,o=27;s.setAttributeNS(null,"display","block"),s.setAttributeNS(null,"height",`${a}px`),s.setAttributeNS(null,"width",`${o}px`),s.setAttributeNS(null,"viewBox",`0 0 ${o} ${a}`);const r=i.createNS("http://www.w3.org/2000/svg","g");r.setAttributeNS(null,"stroke","none"),r.setAttributeNS(null,"stroke-width","1"),r.setAttributeNS(null,"fill","none"),r.setAttributeNS(null,"fill-rule","evenodd");
vendor: 4,228 bytes, line 41
41const n=i.createNS("http://www.w3.org/2000/svg","g");n.setAttributeNS(null,"fill-rule","nonzero");const l=i.createNS("http://www.w3.org/2000/svg","g");l.setAttributeNS(null,"transform","translate(3.0, 29.0)"),l.setAttributeNS(null,"fill","#000000");const h=[{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"}];for(const t of h){const e=i.createNS("http://www.w3.org/2000/svg","ellipse");e.setAttributeNS(null,"opacity","0.04"),e.setAttributeNS(null,"cx","10.5"),e.setAttributeNS(null,"cy","5.80029008"),e.setAttributeNS(null,"rx",t.rx),e.setAttributeNS(null,"ry",t.ry),l.appendChild(e);}const c=i.createNS("http://www.w3.org/2000/svg","g");c.setAttributeNS(null,"fill",this._color);const u=i.createNS("http://www.w3.org/2000/svg","path");u.setAttributeNS(null,"d","M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"),c.appendChild(u);const d=i.createNS("http://www.w3.org/2000/svg","g");d.setAttributeNS(null,"opacity","0.25"),d.setAttributeNS(null,"fill","#000000");const _=i.createNS("http://www.w3.org/2000/svg","path");_.setAttributeNS(null,"d","M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"),d.appendChild(_);const p=i.createNS("http://www.w3.org/2000/svg","g");p.setAttributeNS(null,"transform","translate(6.0, 7.0)"),p.setAttributeNS(null,"fill","#FFFFFF");const m=i.createNS("http://www.w3.org/2000/svg","g");m.setAttributeNS(null,"transform","translate(8.0, 8.0)");const f=i.createNS("http://www.w3.org/2000/svg","circle");f.setAttributeNS(null,"fill","#000000"),f.setAttributeNS(null,"opacity","0.25"),f.setAttributeNS(null,"cx","5.5"),f.setAttributeNS(null,"cy","5.5"),f.setAttributeNS(null,"r","5.4999962");const g=i.createNS("http://www.w3.org/2000/svg","circle");g.setAttributeNS(null,"fill","#FFFFFF"),g.setAttributeNS(null,"cx","5.5"),g.setAttributeNS(null,"cy","5.5"),g.setAttributeNS(null,"r","5.4999962"),m.appendChild(f),m.appendChild(g),n.appendChild(l),n.appendChild(c),n.appendChild(d),n.appendChild(p),n.appendChild(m),s.appendChild(n),s.setAttributeNS(null,"height",a*this._scale+"px"),s.setAttributeNS(null,"width",o*this._scale+"px"),this._element.appendChild(s),this._offset=t.P.convert(e&&e.offset||[0,-14]);}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",(t=>{t.preventDefault();})),this._element.addEventListener("mousedown",(t=>{t.preventDefault();})),Ia(this._element,this._anchor,"marker"),e&&e.className)for(const t of e.className.split(" "))this._element.classList.add(t);this._popup=null;}addTo(t){return this.remove(),this._map=t,t.getCanvasContainer().appendChild(this._element),t.on("move",this._update),t.on("moveend",this._update),t.on("terrain",this._update),this.setDraggable(this._draggable),this._update(),this._map.on("click",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",this._update),this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler),this._map.off("mouseup",this._onUp),this._map.off("touchend",this._onUp),this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),delete this._map),i.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}
41setLngLat(e){return this._lngLat=t.L.convert(e),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(t){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),t){if(!("offset"in t.options)){const e=38.1,i=13.5,s=Math.abs(i)/Math.SQRT2;t.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-e],"bottom-left":[s,-1*(e-i+s)],"bottom-right":[-s,-1*(e-i+s)],left:[i,-1*(e-i)],right:[-i,-1*(e-i)]}:this._offset;}this._popup=t,this._lngLat&&this._popup.setLngLat(this._lngLat),this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress);}return this}getPopup(){return this._popup}togglePopup(){const t=this._popup;return t?(t.isOpen()?t.remove():t.addTo(this._map),this):this}getOffset(){return this._offset}setOffset(e){return this._offset=t.P.convert(e),this._update(),this}addClassName(t){this._element.classList.add(t);}removeClassName(t){this._element.classList.remove(t);}toggleClassName(t){return this._element.classList.toggle(t)}setDraggable(t){return this._draggable=!!t,this._map&&(t?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(t){return this._rotation=t||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(t){return this._rotationAlignment=t||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(t){return this._pitchAlignment=t&&"auto"!==t?t:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}}const Sa={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0};let Ca=0,Pa=!1;const Da={maxWidth:100,unit:"metric"};function Ma(t,e,i){const s=i&&i.maxWidth||100,a=t._container.clientHeight/2,o=t.unproject([0,a]),r=t.unproject([s,a]),n=o.distanceTo(r);if(i&&"imperial"===i.unit){const i=3.2808*n;i>5280?za(e,s,i/5280,t._getUIString("ScaleControl.Miles")):za(e,s,i,t._getUIString("ScaleControl.Feet"));}else i&&"nautical"===i.unit?za(e,s,n/1852,t._getUIString("ScaleControl.NauticalMiles")):n>=1e3?za(e,s,n/1e3,t._getUIString("ScaleControl.Kilometers")):za(e,s,n,t._getUIString("ScaleControl.Meters"));}function za(t,e,i,s){const a=function(t){const e=Math.pow(10,`${Math.floor(t)}`.length-1);let i=t/e;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:i>=1?1:function(t){const e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(i),e*i}(i);t.style.width=e*(a/i)+"px",t.innerHTML=`${a} ${s}`;}const La={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px"},Aa=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function Ra(e){if(e){if("number"==typeof e){const i=Math.round(Math.abs(e)/Math.SQRT2);return {center:new t.P(0,0),top:new t.P(0,e),"top-left":new t.P(i,i),"top-right":new t.P(-i,i),bottom:new t.P(0,-e),"bottom-left":new t.P(i,-i),"bottom-right":new t.P(-i,-i),left:new t.P(e,0),right:new t.P(-e,0)}}if(e instanceof t.P||Array.isArray(e)){const i=t.P.convert(e);return {center:i,top:i,"top-left":i,"top-right":i,bottom:i,"bottom-left":i,"bottom-right":i,left:i,right:i}}return {center:t.P.convert(e.center||[0,0]),top:t.P.convert(e.top||[0,0]),"top-left":t.P.convert(e["top-left"]||[0,0]),"top-right":t.P.convert(e["top-right"]||[0,0]),bottom:t.P.convert(e.bottom||[0,0]),"bottom-left":t.P.convert(e["bottom-left"]||[0,0]),"bottom-right":t.P.convert(e["bottom-right"]||[0,0]),left:t.P.convert(e.left||[0,0]),right:t.P.convert(e.right||[0,0])}}return Ra(new t.P(0,0))}const ka={extend:(e,...i)=>t.e(e,...i),run(t){t();},logToElement(t,e=!1,i="log"){const s=window.document.getElementById(i);s&&(e&&(s.innerHTML=""),s.innerHTML+=`<br>${t}`);}},Fa=e;class Ba{static get version(){return Fa}static get workerCount(){return tt.workerCount}static set workerCount(t){tt.workerCount=t;}static get maxParallelImageRequests(){return t.c.MAX_PARALLEL_IMAGE_REQUESTS}static set maxParallelImageRequests(e){t.c.MAX_PARALLEL_IMAGE_REQUESTS=e;}static get workerUrl(){return t.c.WORKER_URL}static set workerUrl(e){t.c.WORKER_URL=e;}static addProtocol(e,i){t.c.REGISTERED_PROTOCOLS[e]=i;}static removeProtocol(e){delete t.c.REGISTERED_PROTOCOLS[e];}}return Ba.Map=class extends oa{constructor(e){if(t.bg.mark(t.bh.create),null!=(e=t.e({}
41,ga,e)).minZoom&&null!=e.maxZoom&&e.minZoom>e.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(null!=e.minPitch&&null!=e.maxPitch&&e.minPitch>e.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(null!=e.minPitch&&e.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(null!=e.maxPitch&&e.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(super(new rs(e.minZoom,e.maxZoom,e.minPitch,e.maxPitch,e.renderWorldCopies),{bearingSnap:e.bearingSnap}),this._cooperativeGesturesOnWheel=t=>{this._onCooperativeGesture(t,t[this._metaKey],1);},this._contextLost=e=>{e.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new t.k("webglcontextlost",{originalEvent:e}));},this._contextRestored=e=>{this._setupPainter(),this.resize(),this._update(),this.fire(new t.k("webglcontextrestored",{originalEvent:e}));},this._onMapScroll=t=>{if(t.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update();},this._interactive=e.interactive,this._cooperativeGestures=e.cooperativeGestures,this._metaKey=0===navigator.platform.indexOf("Mac")?"metaKey":"ctrlKey",this._maxTileCacheSize=e.maxTileCacheSize,this._maxTileCacheZoomLevels=e.maxTileCacheZoomLevels,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._antialias=e.antialias,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 la,this._controls=[],this._mapId=t.a2(),this._locale=t.e({},ha,e.locale),this._clickTolerance=e.clickTolerance,this._overridePixelRatio=e.pixelRatio,this._maxCanvasSize=e.maxCanvasSize,this.transformCameraUpdate=e.transformCameraUpdate,this._imageQueueHandle=h.addThrottleControl((()=>this.isMoving())),this._requestManager=new u(e.transformRequest),"string"==typeof e.container){if(this._container=document.getElementById(e.container),!this._container)throw new Error(`Container '${e.container}' not found.`)}else {if(!(e.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=e.container;}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",(()=>this._update(!1))),this.on("moveend",(()=>this._update(!1))),this.on("zoom",(()=>this._update(!0))),this.on("terrain",(()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0);})),this.once("idle",(()=>{this._idleTriggered=!0;})),"undefined"!=typeof window){addEventListener("online",this._onWindowOnline,!1);let t=!1;const e=ns((t=>{this._trackResize&&!this._removed&&this.resize(t)._update();}),50);this._resizeObserver=new ResizeObserver((i=>{t?e(i):t=!0;})),this._resizeObserver.observe(this._container);}this.handlers=new aa(this,e),this._cooperativeGestures&&this._setupCooperativeGestures(),this._hash=e.hash&&new ls("string"==typeof e.hash&&e.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),e.bounds&&(this.resize(),this.fitBounds(e.bounds,t.e({},e.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=e.localIdeographFontFamily,this._validateStyle=e.validateStyle,e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new ra({customAttribution:e.customAttribution})),e.maplibreLogo&&this.addControl(new na,e.logoPosition),this.on("style.load",(()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet);})),this.on("data",(e=>{this._update("style"===e.dataType),this.fire(new t.k(`${e.dataType}data`,e));})),this.on("dataloading",(e=>{this.fire(new t.k(`${e.dataType}dataloading`,e));})),this.on("dataabort",(e=>{this.fire(new t.k("sourcedataabort",e));}));}_getMapId(){return this._mapId}addControl(e,i){if(void 0===i&&(i=e.getDefaultPosition?e.getDefaultPosition():"top-right"),!e||!e.onAdd)return this.fire(new t.j(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));const s=e.onAdd(this);this._controls.push(e);const a=this._controlPositions[i];return -1!==i.indexOf("bottom")?a.insertBefore(s,a.firstChild):a.appendChild(s),this}
vendor: 4,499 bytes, line 41
41removeControl(e){if(!e||!e.onRemove)return this.fire(new t.j(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));const i=this._controls.indexOf(e);return i>-1&&this._controls.splice(i,1),e.onRemove(this),this}hasControl(t){return this._controls.indexOf(t)>-1}calculateCameraOptionsFromTo(t,e,i,s){return null==s&&this.terrain&&(s=this.terrain.getElevationForLngLatZoom(i,this.transform.tileZoom)),super.calculateCameraOptionsFromTo(t,e,i,s)}resize(e){var i;const s=this._containerDimensions(),a=s[0],o=s[1],r=this._getClampedPixelRatio(a,o);if(this._resizeCanvas(a,o,r),this.painter.resize(a,o,r),this.painter.overLimit()){const t=this.painter.context.gl;this._maxCanvasSize=[t.drawingBufferWidth,t.drawingBufferHeight];const e=this._getClampedPixelRatio(a,o);this._resizeCanvas(a,o,e),this.painter.resize(a,o,e);}this.transform.resize(a,o),null===(i=this._requestedCameraState)||void 0===i||i.resize(a,o);const n=!this._moving;return n&&(this.stop(),this.fire(new t.k("movestart",e)).fire(new t.k("move",e))),this.fire(new t.k("resize",e)),n&&this.fire(new t.k("moveend",e)),this}_getClampedPixelRatio(t,e){const{0:i,1:s}=this._maxCanvasSize,a=this.getPixelRatio(),o=t*a,r=e*a;return Math.min(o>i?i/o:1,r>s?s/r:1)*a}getPixelRatio(){var t;return null!==(t=this._overridePixelRatio)&&void 0!==t?t:devicePixelRatio}setPixelRatio(t){this._overridePixelRatio=t,this.resize();}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(t){return this.transform.setMaxBounds(L.convert(t)),this._update()}setMinZoom(t){if((t=null==t?-2:t)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()<t&&this.setZoom(t),this;throw new Error("minZoom must be between -2 and the current maxZoom, inclusive")}getMinZoom(){return this.transform.minZoom}setMaxZoom(t){if((t=null==t?22:t)>=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")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(t){if((t=null==t?0:t)<0)throw new Error("minPitch must be greater than or equal to 0");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()<t&&this.setPitch(t),this;throw new Error("minPitch must be between 0 and the current maxPitch, inclusive")}getMinPitch(){return this.transform.minPitch}setMaxPitch(t){if((t=null==t?60:t)>85)throw new Error("maxPitch must be less than or equal to 85");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t&&this.setPitch(t),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(t){return this.transform.renderWorldCopies=t,this._update()}getCooperativeGestures(){return this._cooperativeGestures}setCooperativeGestures(t){return this._cooperativeGestures=t,this._cooperativeGestures?this._setupCooperativeGestures():this._destroyCooperativeGestures(),this}project(e){return this.transform.locationPoint(t.L.convert(e),this.style&&this.terrain)}unproject(e){return this.transform.pointLocation(t.P.convert(e),this.terrain)}isMoving(){var t;return this._moving||(null===(t=this.handlers)||void 0===t?void 0:t.isMoving())}isZooming(){var t;return this._zooming||(null===(t=this.handlers)||void 0===t?void 0:t.isZooming())}isRotating(){var t;return this._rotating||(null===(t=this.handlers)||void 0===t?void 0:t.isRotating())}_createDelegatedListener(t,e,i){if("mouseenter"===t||"mouseover"===t){let s=!1;const a=a=>{const o=this.getLayer(e)?this.queryRenderedFeatures(a.point,{layers:[e]}):[];o.length?s||(s=!0,i.call(this,new gs(t,this,a.originalEvent,{features:o}))):s=!1;};return {layer:e,listener:i,delegates:{mousemove:a,mouseout:()=>{s=!1;}}}}if("mouseleave"===t||"mouseout"===t){let s=!1;const a=a=>{(this.getLayer(e)?this.queryRenderedFeatures(a.point,{layers:[e]}):[]).length?s=!0:s&&(s=!1,i.call(this,new gs(t,this,a.originalEvent)));},o=e=>{s&&(s=!1,i.call(this,new gs(t,this,e.originalEvent)));};return {layer:e,listener:i,delegates:{mousemove:a,mouseout:o}}}{const s=t=>{const s=this.getLayer(e)?this.queryRenderedFeatures(t.point,{layers:[e]}):[];s.length&&(t.features=s,i.call(this,t),delete t.features);};return {layer:e,listener:i,delegates:{[t]:s}}}}
41on(t,e,i){if(void 0===i)return super.on(t,e);const s=this._createDelegatedListener(t,e,i);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(s);for(const t in s.delegates)this.on(t,s.delegates[t]);return this}once(t,e,i){if(void 0===i)return super.once(t,e);const s=this._createDelegatedListener(t,e,i);for(const t in s.delegates)this.once(t,s.delegates[t]);return this}off(t,e,i){return void 0===i?super.off(t,e):(this._delegatedListeners&&this._delegatedListeners[t]&&(s=>{const a=this._delegatedListeners[t];for(let t=0;t<a.length;t++){const s=a[t];if(s.layer===e&&s.listener===i){for(const t in s.delegates)this.off(t,s.delegates[t]);return a.splice(t,1),this}}})(),this)}queryRenderedFeatures(e,i){if(!this.style)return [];let s;const a=e instanceof t.P||Array.isArray(e),o=a?e:[[0,0],[this.transform.width,this.transform.height]];if(i=i||(a?{}:e)||{},o instanceof t.P||"number"==typeof o[0])s=[t.P.convert(o)];else {const e=t.P.convert(o[0]),i=t.P.convert(o[1]);s=[e,new t.P(i.x,e.y),i,new t.P(e.x,i.y),e];}return this.style.queryRenderedFeatures(s,i,this.transform)}querySourceFeatures(t,e){return this.style.querySourceFeatures(t,e)}setStyle(e,i){return !1!==(i=t.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._val
vendor: 8,503 bytes, line 41
41idateStyle},i)).diff&&i.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&e?(this._diffStyle(e,i),this):(this._localIdeographFontFamily=i.localIdeographFontFamily,this._updateStyle(e,i))}setTransformRequest(t){return this._requestManager.setTransformRequest(t),this}_getUIString(t){const e=this._locale[t];if(null==e)throw new Error(`Missing UI string '${t}'`);return e}_updateStyle(t,e){if(e.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",(()=>this._updateStyle(t,e)));const i=this.style&&e.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!t)),t?(this.style=new se(this,e||{}),this.style.setEventedParent(this,{style:this.style}),"string"==typeof t?this.style.loadURL(t,e,i):this.style.loadJSON(t,e,i),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new se(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty());}_diffStyle(e,i){if("string"==typeof e){const s=this._requestManager.transformRequest(e,c.Style);t.f(s,((e,s)=>{e?this.fire(new t.j(e)):s&&this._updateDiff(s,i);}));}else "object"==typeof e&&this._updateDiff(e,i);}_updateDiff(e,i){try{this.style.setState(e,i)&&this._update(!0);}catch(s){t.w(`Unable to perform style diff: ${s.message||s.error||s}. Rebuilding the style from scratch.`),this._updateStyle(e,i);}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():t.w("There is no style added to the map.")}addSource(t,e){return this._lazyInitEmptyStyle(),this.style.addSource(t,e),this._update(!0)}isSourceLoaded(e){const i=this.style&&this.style.sourceCaches[e];if(void 0!==i)return i.loaded();this.fire(new t.j(new Error(`There is no source with ID '${e}'`)));}setTerrain(e){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),e){const i=this.style.sourceCaches[e.source];if(!i)throw new Error(`cannot load terrain, because there exists no source with ID: ${e.source}`);for(const i in this.style._layers){const s=this.style._layers[i];"hillshade"===s.type&&s.source===e.source&&t.w("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.");}this.terrain=new da(this.painter,i,e),this.painter.renderToTexture=new ma(this.painter,this.terrain),this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._terrainDataCallback=t=>{"style"===t.dataType?this.terrain.sourceCache.freeRtt():"source"===t.dataType&&t.tile&&(t.sourceId!==e.source||this._elevationFreeze||(this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.terrain.sourceCache.freeRtt(t.tile.tileID));},this.style.on("data",this._terrainDataCallback);}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform._minEleveationForCurrentTile=0,this.transform.elevation=0;return this.fire(new t.k("terrain",{terrain:e})),this}getTerrain(){var t,e;return null!==(e=null===(t=this.terrain)||void 0===t?void 0:t.options)&&void 0!==e?e:null}areTilesLoaded(){const t=this.style&&this.style.sourceCaches;for(const e in t){const i=t[e]._tiles;for(const t in i){const e=i[t];if("loaded"!==e.state&&"errored"!==e.state)return !1}}return !0}addSourceType(t,e,i){return this._lazyInitEmptyStyle(),this.style.addSourceType(t,e,i)}removeSource(t){return this.style.removeSource(t),this._update(!0)}getSource(t){return this.style.getSource(t)}addImage(e,i,s={}){const{pixelRatio:a=1,sdf:o=!1,stretchX:r,stretchY:n,content:l}=s;if(this._lazyInitEmptyStyle(),!(i instanceof HTMLImageElement||t.a(i))){if(void 0===i.width||void 0===i.height)return this.fire(new t.j(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));{const{width:s,height:h,data:c}=i,u=i;return this.style.addImage(e,{data:new t.R({width:s,height:h},new Uint8Array(c)),pixelRatio:a,stretchX:r,stretchY:n,content:l,sdf:o,version:0,userImage:u}),u.onAdd&&u.onAdd(this,e),this}}{const{width:s,height:h,data:c}=t.h.getImageData(i);this.style.addImage(e,{data:new t.R({width:s,height:h},c),pixelRatio:a,stretchX:r,stretchY:n,content:l,sdf:o,version:0});}}updateImage(e,i){const s=this.style.getImage(e);if(!s)return this.fire(new t.j(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));const a=i instanceof HTMLImageElement||t.a(i)?t.h.getImageData(i):i,{width:o,height:r,data:n}=a;if(void 0===o||void 0===r)return this.fire(new t.j(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));if(o!==s.data.width||r!==s.data.height)return this.fire(new t.j(new Error("The width and height of the updated image must be that same as the previous version of the image")));const l=!(i instanceof HTMLImageElement||t.a(i));return s.data.replace(n,l),this.style.updateImage(e,s),this}getImage(t){return this.style.getImage(t)}hasImage(e){return e?!!this.style.getImage(e):(this.fire(new t.j(new Error("Missing required image id"))),!1)}removeImage(t){this.style.removeImage(t);}loadImage(t,e){h.getImage(this._requestManager.transformRequest(t,c.Image),e);}listImages(){return this.style.listImages()}addLayer(t,e){return this._lazyInitEmptyStyle(),this.style.addLayer(t,e),this._update(!0)}moveLayer(t,e){return this.style.moveLayer(t,e),this._update(!0)}removeLayer(t){return this.style.removeLayer(t),this._update(!0)}getLayer(t){return this.style.getLayer(t)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(t,e,i){return this.style.setLayerZoomRange(t,e,i),this._update(!0)}setFilter(t,e,i={}){return this.style.setFilter(t,e,i),this._update(!0)}getFilter(t){return this.style.getFilter(t)}setPaintProperty(t,e,i,s={}){return this.style.setPaintProperty(t,e,i,s),this._update(!0)}getPaintProperty(t,e){return this.style.getPaintProperty(t,e)}setLayoutProperty(t,e,i,s={}){return this.style.setLayoutProperty(t,e,i,s),this._update(!0)}getLayoutProperty(t,e){return this.style.getLayoutProperty(t,e)}setGlyphs(t,e={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(t,e),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(t,e,i={}){return this._lazyInitEmptyStyle(),this.style.addSprite(t,e,i,(t=>{t||this._update(!0);})),this}removeSprite(t){return this._lazyInitEmptyStyle(),this.style.removeSprite(t),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(t,e={}){return this._lazyInitEmptyStyle(),this.style.setSprite(t,e,(t=>{t||this._update(!0);})),this}setLight(t,e={}){return this._lazyInitEmptyStyle(),this.style.setLight(t,e),this._update(!0)}getLight(){return this.style.getLight()}setFeatureState(t,e){return this.style.setFeatureState(t,e),this._update()}removeFeatureState(t,e){return this.style.removeFeatureState(t,e),this._update()}getFeatureState(t){return this.style.getFeatureState(t)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let t=0,e=0;return this._container&&(t=this._container.clientWidth||400,e=this._container.clientHeight||300),[t,e]}_setupContainer(){const t=this._container;t.classList.add("maplibregl-map");const e=this._canvasContainer=i.create("div","maplibregl-canvas-container",t);this._interactive&&e.classList.add("maplibregl-interactive"),this._canvas=i.create("canvas","maplibregl-canvas",e),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex","0"),this._canvas.setAttribute("aria-label","Map"),this._canvas.setAttribute("role","regi
41on");const s=this._containerDimensions(),a=this._getClampedPixelRatio(s[0],s[1]);this._resizeCanvas(s[0],s[1],a);const o=this._controlContainer=i.create("div","maplibregl-control-container",t),r=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach((t=>{r[t]=i.create("div",`maplibregl-ctrl-${t} `,o);})),this._container.addEventListener("scroll",this._onMapScroll,!1);}_setupCooperativeGestures(){this._cooperativeGesturesScreen=i.create("div","maplibregl-cooperative-gesture-screen",this._container);let t="boolean"!=typeof this._cooperativeGestures&&this._cooperativeGestures.windowsHelpText?this._cooperativeGestures.windowsHelpText:"Use Ctrl + scroll to zoom the map";0===navigator.platform.indexOf("Mac")&&(t="boolean"!=typeof this._cooperativeGestures&&this._cooperativeGestures.macHelpText?this._cooperativeGestures.macHelpText:"Use â + scroll to zoom the map"),this._cooperativeGesturesScreen.innerHTML=`\n <div class="maplibregl-desktop-message">${t}</div>\n <div class="maplibregl-mobile-message">${"boolean"!=typeof this._cooperativeGestures&&this._cooperativeGestures.mobileHelpText?this._cooperativeGestures.mobileHelpText:"Use two fingers to move the map"}</div>\n `,this._cooperativeGesturesScreen.setAttribute("aria-hidden","true"),this._canvasContainer.addEventListener("wheel",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.add("maplibregl-cooperative-gestures");}_destroyCooperativeGestures(){i.remove(this._cooperativeGesturesScreen),this._canvasContainer.removeEventListener("wheel",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.remove("maplibregl-cooperative-gestures");}_resizeCanvas(t,e,i){this._canvas.width=Math.floor(i*t),this._canvas.height=Math.floor(i*e),this._canvas.style.width=`${t}px`,this._canvas.style.height=`${e}px`;}_setupPainter(){const t={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1};let e=null;this._canvas.addEventListener("webglcontextcreationerror",(i=>{e={requestedAttributes:t},i&&(e.statusMessage=i.statusMessage,e.type=i.type);}),{once:!0});const i=this._canvas.getContext("webgl2",t)||this._canvas.getContext("webgl",t);if(!i){const t="Failed to initialize WebGL";throw e?(e.message=t,new Error(JSON.stringify(e))):new Error(t)}this.painter=new is(i,this.transform),s.testSupport(i);}_onCooperativeGesture(t,e,i){return !e&&i<2&&(this._cooperativeGesturesScreen.classList.add("maplibregl-show"),setTimeout((()=>{this._cooperativeGesturesScreen.classList.remove("maplibregl-show");}),100)),!1}loaded(){return !this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(t){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||t,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(t){return this._update(),this._renderTaskQueue.add(t)}_cancelRenderFrame(t){this._renderTaskQueue.remove(t);}_render(e){const i=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(e),this._removed)return;let s=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;const e=this.transform.zoom,a=t.h.now();this.style.zoomHistory.update(e,a);const o=new t.a8(e,{now:a,fadeDuration:i,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),r=o.crossFadingFactor();1===r&&r===this._crossFadingFactor||(s=!0,this._crossFadingFactor=r),this.style.update(o);}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.sourceCache.update(this.transform,this.terrain),this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._elevationFreeze||(this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform._minEleveationForCurrentTile=0,this.transform.elevation=0),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,i,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:i,showPadding:this.showPadding}),this.fire(new t.k("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,t.bg.mark(t.bh.load),this.fire(new t.k("load"))),this.style&&(this.style.hasTransitions()||s)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();const a=this._sourcesDirty||this._styleDirty||this._placementDirty;return a||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new t.k("idle")),!this._loaded||this._fullyLoaded||a||(this._fullyLoaded=!0,t.bg.mark(t.bh.fullLoad)),this}redraw(){return this.style&&(this._frame&&(this._frame.cancel(),this._frame=null),this._render(0)),this}remove(){var e;this._hash&&this._hash.remove();for(const t of this._controls)t.onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),"undefined"!=typeof window&&removeEventListener("online",this._onWindowOnline,!1),h.removeThrottleControl(this._imageQueueHandle),null===(e=this._resizeObserver)||void 0===e||e.disconnect();const s=this.painter.context.gl.getExtension("WEBGL_lose_context");s&&s.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),i.remove(this._canvasContainer),i.remove(this._controlContainer),this._cooperativeGestures&&this._destroyCooperativeGestures(),this._container.classList.remove("maplibregl-map"),t.bg.clearMetrics(),this._removed=!0,this.fire(new t.k("remove"));}triggerRepaint(){this.style&&!this._frame&&(this._frame=t.h.frame((e=>{t.bg.frame(e),this._frame=null,this._render(e);})));}get showTileBoundaries(){return !!this._showTileBoundaries}set showTileBoundaries(t){this._showTileBoundaries!==t&&(this._showTileBoundaries=t,this._update());}get showPadding(){return !!this._showPadding}set showPadding(t){this._showPadding!==t&&(this._showPadding=t,this._update());}get showCollisionBoxes(){return !!this._showCollisionBoxes}set showCollisionBoxes(t){this._showCollisionBoxes!==t&&(this._showCollisionBoxes=t,t?this.style._generateCollisionBoxes():this._update());}get showOverdrawInspector(){return !!this._showOverdrawInspector}set showOverdrawInspector(t){this._showOverdrawInspector!==t&&(this._showOverdrawInspector=t,this._update());}get repaint(){return !!this._repaint}set repaint(t){this._repaint!==t&&(this._repaint=t,this.triggerRepaint());}get vertices(){return !!this._vertices}set vertices(t){this._vertices=t,this._update();}get version(){return fa}getCameraTargetElevation(){return this.transform.elevation}}
vendor: 6,750 bytes, line 41
41,Ba.NavigationControl=class{constructor(e){this._updateZoomButtons=()=>{const t=this._map.getZoom(),e=t===this._map.getMaxZoom(),i=t===this._map.getMinZoom();this._zoomInButton.disabled=e,this._zoomOutButton.disabled=i,this._zoomInButton.setAttribute("aria-disabled",e.toString()),this._zoomOutButton.setAttribute("aria-disabled",i.toString());},this._rotateCompassArrow=()=>{const t=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=t;},this._setButtonTitle=(t,e)=>{const i=this._map._getUIString(`NavigationControl.${e}`);t.title=i,t.setAttribute("aria-label",i);},this.options=t.e({},xa,e),this._container=i.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",(t=>t.preventDefault())),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",(t=>this._map.zoomIn({},{originalEvent:t}))),i.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",(t=>this._map.zoomOut({},{originalEvent:t}))),i.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",(t=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:t}):this._map.resetNorth({},{originalEvent:t});})),this._compassIcon=i.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"));}onAdd(t){return this._map=t,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new ya(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){i.remove(this._container),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map;}_createButton(t,e){const s=i.create("button",t,this._container);return s.type="button",s.addEventListener("click",e),s}},Ba.GeolocateControl=class extends t.E{constructor(e){super(),this._onSuccess=e=>{if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.k("outofmaxbounds",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&"OFF"!==this._watchState&&this._updateMarker(e),this.options.trackUserLocation&&"ACTIVE_LOCK"!==this._watchState||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new t.k("geolocate",e)),this._finish();}},this._updateCamera=e=>{const i=new t.L(e.coords.longitude,e.coords.latitude),s=e.coords.accuracy,a=this._map.getBearing(),o=t.e({bearing:a},this.options.fitBoundsOptions),r=L.fromLngLat(i,s);this._map.fitBounds(r,o,{geolocateSource:!0});},this._updateMarker=e=>{if(e){const i=new t.L(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(i).addTo(this._map),this._userLocationDotMarker.setLngLat(i).addTo(this._map),this._accuracy=e.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius();}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove();},this._onZoom=()=>{this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius();},this._onError=e=>{if(this._map){if(this.options.trackUserLocation)if(1===e.code){this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;const t=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=t,this._geolocateButton.setAttribute("aria-label",t),void 0!==this._geolocationWatchID&&this._clearWatch();}else {if(3===e.code&&Pa)return;this._setErrorState();}"OFF"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new t.k("error",e)),this._finish();}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0;},this._setupUI=e=>{if(this._map){if(this._container.addEventListener("contextmenu",(t=>t.preventDefault())),this._geolocateButton=i.create("button","maplibregl-ctrl-geolocate",this._container),i.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",!1===e){t.w("Geolocation support is not available so the GeolocateControl will be disabled.");const e=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=e,this._geolocateButton.setAttribute("aria-label",e);}else {const t=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.title=t,this._geolocateButton.setAttribute("aria-label",t);}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","fal
41se"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=i.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new Ea({element:this._dotElement}),this._circleElement=i.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Ea({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",(e=>{e.geolocateSource||"ACTIVE_LOCK"!==this._watchState||e.originalEvent&&"resize"===e.originalEvent.type||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new t.k("trackuserlocationend")));}));}},this.options=t.e({},Sa,e);}onAdd(t){return this._map=t,this._container=i.create("div","maplibregl-ctrl maplibregl-ctrl-group"),function(t,e=!1){void 0===ba||e?void 0!==window.navigator.permissions?window.navigator.permissions.query({name:"geolocation"}).then((e=>{ba="denied"!==e.state,t(ba);})).catch((()=>{ba=!!window.navigator.geolocation,t(ba);})):(ba=!!window.navigator.geolocation,t(ba)):t(ba);}(this._setupUI),this._container}onRemove(){void 0!==this._geolocationWatchID&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),i.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,Ca=0,Pa=!1;}_isOutOfMapMaxBounds(t){const e=this._map.getMaxBounds(),i=t.coords;return e&&(i.longitude<e.getWest()||i.longitude>e.getEast()||i.latitude<e.getSouth()||i.latitude>e.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"ACTIVE_ERROR":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadius(){const t=this._map.getBounds(),e=t.getSouthEast(),i=t.getNorthEast(),s=e.distanceTo(i),a=Math.ceil(this._accuracy/(s/this._map._container.clientHeight)*2);this._circleElement.style.width=`${a}px`,this._circleElement.style.height=`${a}px`;}trigger(){if(!this._setup)return t.w("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new t.k("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":Ca--,Pa=!1,this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this.fire(new t.k("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.k("trackuserlocationstart"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"OFF":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if("OFF"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){let t;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),Ca++,Ca>1?(t={maximumAge:6e5,timeout:0},Pa=!0):(t=this.options.positionOptions,Pa=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,t);}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return !0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","fal
41se"),this.options.showUserLocation&&this._updateMarker(null);}},Ba.AttributionControl=ra,Ba.LogoControl=na,Ba.ScaleControl=class{constructor(e){this._onMove=()=>{Ma(this._map,this._container,this.options);},this.setUnit=t=>{this.options.unit=t,Ma(this._map,this._container,this.options);},this.options=t.e({},Da,e);}getDefaultPosition(){return "bottom-left"}onAdd(t){return this._map=t,this._container=i.create("div","maplibregl-ctrl maplibregl-ctrl-scale",t.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){i.remove(this._container),this._map.off("move",this._onMove),this._map=void 0;}},Ba.FullscreenControl=class extends t.E{constructor(e={}){super(),this._onFullscreenChange=()=>{(window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement)===this._container!==this._fullscreen&&this._handleFullscreenChange();},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen();},this._fullscreen=!1,e&&e.container&&(e.container instanceof HTMLElement?this._container=e.container:t.w("Full screen control 'container' must be a DOM element.")),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in document&&(this._fullscreenchange="MSFullscreenChange");}onAdd(t){return this._map=t,this._container||(this._container=this._map.getContainer()),this._controlContainer=i.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){i.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange);}_setupUI(){const t=this._fullscreenButton=i.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);i.create("span","maplibregl-ctrl-icon",t).setAttribute("aria-hidden","true"),t.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange);}_updateTitle(){const t=this._getTitle();this._fullscreenButton.setAttribute("aria-label",t),this._fullscreenButton.title=t;}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._updateTitle(),this._fullscreen?(this.fire(new t.k("fullscreenstart")),this._map._cooperativeGestures&&(this._prevCooperativeGestures=this._map._cooperativeGestures,this._map.setCooperativeGestures())):(this.fire(new t.k("fullscreenend")),this._prevCooperativeGestures&&(this._map.setCooperativeGestures(this._prevCooperativeGestures),delete this._prevCooperativeGestures));}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen();}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen();}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize();}},Ba.TerrainControl=class{constructor(t){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon();},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.disableTerrain")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.enableTerrain"));},this.options=t;}onAdd(t){return this._map=t,this._container=i.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=i.create("button","maplibregl-ctrl-terrain",this._container),i.create("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.t
41ype="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){i.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0;}},Ba.Popup=class extends t.E{constructor(e){super(),this.remove=()=>(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("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),delete this._map),this.fire(new t.k("close")),this),this._onMouseUp=t=>{this._update(t.point);},this._onMouseMove=t=>{this._update(t.point);},this._onDrag=t=>{this._update(t.point);},this._update=t=>{if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=i.create("div","maplibregl-popup",this._map.getContainer()),this._tip=i.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(const t of this.options.className.split(" "))this._container.classList.add(t);this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer");}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=wa(this._lngLat,this._pos,this._map.transform)),this._trackPointer&&!t)return;const e=this._pos=this._trackPointer&&t?t:this._map.project(this._lngLat);let s=this.options.anchor;const a=Ra(this.options.offset);if(!s){const t=this._container.offsetWidth,i=this._container.offsetHeight;let o;o=e.y+a.bottom.y<i?["top"]:e.y>this._map.transform.height-i?["bottom"]:[],e.x<t/2?o.push("left"):e.x>this._map.transform.width-t/2&&o.push("right"),s=0===o.length?"bottom":o.join("-");}const o=e.add(a[s]).round();i.setTransform(this._container,`${Ta[s]} translate(${o.x}px,${o.y}px)`),Ia(this._container,s,"popup");},this._onClose=()=>{this.remove();},this.options=t.e(Object.create(La),e);}addTo(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")):this._map.on("move",this._update),this.fire(new t.k("open")),this}isOpen(){return !!this._map}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=t.L.convert(e),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.remove("maplibregl-track-pointer")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")),this}getElement(){return this._container}setText(t){return this.setDOMContent(document.createTextNode(t))}setHTML(t){const e=document.createDocumentFragment(),i=document.createElement("body");let s;for(i.innerHTML=t;s=i.firstChild,s;)e.appendChild(s);return this.setDOMContent(e)}getMaxWidth(){var t;return null===(t=this._container)||void 0===t?void 0:t.style.maxWidth}setMaxWidth(t){return this.options.maxWidth=t,this._update(),this}setDOMContent(t){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=i.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(t),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(t){this._container&&this._container.classList.add(t);}removeClassName(t){this._container&&this._container.classList.remove(t);}setOffset(t){return this.options.offset=t,this._update(),this}toggleClassName(t){if(this._container)return this._container.classList.toggle(t)}_createCloseButton(){this.options.closeButton&&(this._closeButton=i.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose));}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const t=this._container.querySelector(Aa);t&&t.focus();}},Ba.Marker=Ea,Ba.Style=se,Ba.LngLat=t.L,Ba.LngLatBounds=L,Ba.Point=t.P,Ba.MercatorCoordinate=t.U,Ba.Evented=t.
41E,Ba.AJAXError=t.bi,Ba.config=t.c,Ba.CanvasSource=Z,Ba.GeoJSONSource=B,Ba.ImageSource=N,Ba.RasterDEMTileSource=F,Ba.RasterTileSource=k,Ba.VectorTileSource=R,Ba.VideoSource=U,Ba.setRTLTextPlugin=t.bj,Ba.getRTLTextPluginStatus=t.bk,Ba.prewarm=function(){st().acquire(J);},Ba.clearPrewarmedResources=function(){const t=it;t&&(t.isPreloaded()&&1===t.numActive()?(t.release(J),it=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"));},ka.extend(Ba,{isSafari:t.ac,getPerformanceMetrics:t.bg.getPerformanceMetrics}),Ba})); 42 43// 44// Our custom intro provides a specialized "define()" function, called by the 45// AMD modules below, that sets up the worker blob URL and then executes the 46// main module, storing its exported value as 'maplibregl' 47 48 49var maplibregl$1 = maplibregl; 50 51return maplibregl$1; 52 53})); 54//# sourceMappingURL=maplibre-gl.js.map 55(function (root, factory) { 56 if (typeof define === 'function' && define.amd) { 57 // AMD 58 define(['leaflet', 'maplibre-gl'], factory); 59 } else if (typeof exports === 'object') { 60 // Node, CommonJS-like 61 module.exports = factory(require('leaflet'), require('maplibre-gl')); 62 } else { 63 // Browser globals (root is window) 64 root.returnExports = factory(root.L, root.maplibregl); 65 } 66}(typeof globalThis !== 'undefined' ? globalThis : this || self, function (L, maplibregl) { 67 L.MaplibreGL = L.Layer.extend({ 68 options: { 69 updateInterval: 32, 70 // How much to extend the overlay view (relative to map size) 71 // e.g. 0.1 would be 10% of map view in each direction 72 padding: 0.1, 73 // whether or not to register the mouse and keyboard 74 // events on the maplibre overlay 75 interactive: false, 76 // set the tilepane as the default pane to draw gl tiles 77 pane: 'tilePane' 78 }, 79 80 initialize: function (options) { 81 L.setOptions(this, options); 82 83 // setup throttling the update event when panning 84 this._throttledUpdate = L.Util.throttle(this._update, this.options.updateInterval, this); 85 }, 86 87 onAdd: function (map) { 88 if (!this._container) { 89 this._initContainer(); 90 } 91 92 var paneName = this.getPaneName(); 93 map.getPane(paneName).appendChild(this._container); 94 95 this._initGL(); 96 97 this._offset = this._map.containerPointToLayerPoint([0, 0]); 98 99 // work around https://github.com/mapbox/mapbox-gl-leaflet/issues/47 100 if (map.options.zoomAnimation) { 101 L.DomEvent.on(map._proxy, L.DomUtil.TRANSITION_END, this._transitionEnd, this); 102 } 103 }, 104 105 onRemove: function (map) { 106 if (this._map._proxy && this._map.options.zoomAnimation) { 107 L.DomEvent.off(this._map._proxy, L.DomUtil.TRANSITION_END, this._transitionEnd, this); 108 } 109 var paneName = this.getPaneName(); 110 map.getPane(paneName).removeChild(this._container); 111 112 this._glMap.remove(); 113 this._glMap = null; 114 }, 115 116 getEvents: function () { 117 return { 118 move: this._throttledUpdate, // sensibly throttle updating while panning 119 zoomanim: this._animateZoom, // applys the zoom animation to the <canvas> 120 zoom: this._pinchZoom, // animate every zoom event for smoother pinch-zooming 121 zoomstart: this._zoomStart, // flag starting a zoom to disable panning 122 zoomend: this._zoomEnd, 123 resize: this._resize 124 }; 125 }, 126 127 getMaplibreMap: function () { 128 return this._glMap; 129 }, 130 131 getCanvas: function () { 132 return this._glMap.getCanvas(); 133 }, 134 135 getSize: function () { 136 return this._map.getSize().multiplyBy(1 + this.options.padding * 2); 137 }, 138 139 getBounds: function () {
140 var halfSize = this.getSize().multiplyBy(0.5); 141 var center = this._map.latLngToContainerPoint(this._map.getCenter()); 142 return L.latLngBounds( 143 this._map.containerPointToLatLng(center.subtract(halfSize)), 144 this._map.containerPointToLatLng(center.add(halfSize)) 145 ); 146 }, 147 148 getContainer: function () { 149 return this._container; 150 }, 151 152 // returns the pane name set in options if it is a valid pane, defaults to tilePane 153 getPaneName: function () { 154 return this._map.getPane(this.options.pane) ? this.options.pane : 'tilePane'; 155 }, 156 157 _roundPoint: function(p) { 158 return {x: Math.round(p.x), y: Math.round(p.y)}; 159 }, 160 161 _initContainer: function () { 162 var container = this._container = L.DomUtil.create('div', 'leaflet-gl-layer'); 163 164 var size = this.getSize(); 165 var offset = this._map.getSize().multiplyBy(this.options.padding); 166 container.style.width = size.x + 'px'; 167 container.style.height = size.y + 'px'; 168 169 var topLeft = this._map.containerPointToLayerPoint([0, 0]).subtract(offset); 170 171 L.DomUtil.setPosition(container, this._roundPoint(topLeft)); 172 }, 173 174 _initGL: function () { 175 var center = this._map.getCenter(); 176 177 var options = L.extend({}, this.options, { 178 container: this._container, 179 center: [center.lng, center.lat], 180 zoom: this._map.getZoom() - 1, 181 attributionControl: false 182 }); 183 184 this._glMap = new maplibregl.Map(options); 185 186 // allow GL base map to pan beyond min/max latitudes 187 this._glMap.transform.latRange = null; 188 this._glMap.transform.maxValidLatitude = Infinity; 189 190 this._transformGL(this._glMap); 191 192 if (this._glMap._canvas.canvas) { 193 // older versions of mapbox-gl surfaced the canvas differently 194 this._glMap._actualCanvas = this._glMap._canvas.canvas; 195 } else { 196 this._glMap._actualCanvas = this._glMap._canvas; 197 } 198 199 // treat child <canvas> element like L.ImageOverlay 200 var canvas = this._glMap._actualCanvas; 201 L.DomUtil.addClass(canvas, 'leaflet-image-layer'); 202 L.DomUtil.addClass(canvas, 'leaflet-zoom-animated'); 203 if (this.options.interactive) { 204 L.DomUtil.addClass(canvas, 'leaflet-interactive'); 205 } 206 if (this.options.className) { 207 L.DomUtil.addClass(canvas, this.options.className); 208 } 209 }, 210 211 _update: function (e) { 212 // update the offset so we can correct for it later when we zoom 213 this._offset = this._map.containerPointToLayerPoint([0, 0]); 214 215 if (this._zooming) { 216 return; 217 } 218 219 var size = this.getSize(), 220 container = this._container, 221 gl = this._glMap, 222 offset = this._map.getSize().multiplyBy(this.options.padding), 223 topLeft = this._map.containerPointToLayerPoint([0, 0]).subtract(offset); 224 225 L.DomUtil.setPosition(container, this._roundPoint(topLeft)); 226 227 this._transformGL(gl); 228 229 if (gl.transform.width !== size.x || gl.transform.height !== size.y) { 230 container.style.width = size.x + 'px'; 231 container.style.height = size.y + 'px'; 232 if (gl._resize !== null && gl._resize !== undefined){ 233 gl._resize(); 234 } else { 235 gl.resize(); 236 } 237 } else { 238 // older versions of mapbox-gl surfaced update publicly 239 if (gl._update !== null && gl._update !== undefined){ 240 gl._update(); 241 } else { 242 gl.update(); 243 } 244 } 245 }, 246 247 _transformGL: function (gl) { 248 var center = this._map.getCenter(); 249 250 // gl.setView([center.lat, center.lng], this._map.getZoom() - 1, 0);
251 // calling setView directly causes sync issues because it uses requestAnimFrame 252 253 var tr = gl.transform; 254 tr.center = maplibregl.LngLat.convert([center.lng, center.lat]); 255 tr.zoom = this._map.getZoom() - 1; 256 }, 257 258 // update the map constantly during a pinch zoom 259 _pinchZoom: function (e) { 260 this._glMap.jumpTo({ 261 zoom: this._map.getZoom() - 1, 262 center: this._map.getCenter() 263 }); 264 }, 265 266 // borrowed from L.ImageOverlay 267 // https://github.com/Leaflet/Leaflet/blob/master/src/layer/ImageOverlay.js#L139-L144 268 _animateZoom: function (e) { 269 var scale = this._map.getZoomScale(e.zoom); 270 var padding = this._map.getSize().multiplyBy(this.options.padding * scale); 271 var viewHalf = this.getSize()._divideBy(2); 272 // corrections for padding (scaled), adapted from 273 // https://github.com/Leaflet/Leaflet/blob/master/src/map/Map.js#L1490-L1508 274 var topLeft = this._map.project(e.center, e.zoom) 275 ._subtract(viewHalf) 276 ._add(this._map._getMapPanePos() 277 .add(padding))._round(); 278 var offset = this._map.project(this._map.getBounds().getNorthWest(), e.zoom) 279 ._subtract(topLeft); 280 281 L.DomUtil.setTransform( 282 this._glMap._actualCanvas, 283 offset.subtract(this._offset), 284 scale 285 ); 286 }, 287 288 _zoomStart: function (e) { 289 this._zooming = true; 290 }, 291 292 _zoomEnd: function () { 293 var scale = this._map.getZoomScale(this._map.getZoom()); 294 295 L.DomUtil.setTransform( 296 this._glMap._actualCanvas, 297 // https://github.com/mapbox/mapbox-gl-leaflet/pull/130 298 null, 299 scale 300 ); 301 302 this._zooming = false; 303 304 this._update(); 305 }, 306 307 _transitionEnd: function (e) { 308 L.Util.requestAnimFrame(function () { 309 var zoom = this._map.getZoom(); 310 var center = this._map.getCenter(); 311 var offset = this._map.latLngToContainerPoint( 312 this._map.getBounds().getNorthWest() 313 ); 314 315 // reset the scale and offset 316 L.DomUtil.setTransform(this._glMap._actualCanvas, offset, 1); 317 318 // enable panning once the gl map is ready again 319 this._glMap.once('moveend', L.Util.bind(function () { 320 this._zoomEnd(); 321 }, this)); 322 323 // update the map position 324 this._glMap.jumpTo({ 325 center: center, 326 zoom: zoom - 1 327 }); 328 }, this); 329 }, 330 331 _resize: function (e) { 332 this._transitionEnd(e); 333 } 334 }); 335 336 L.maplibreGL = function (options) { 337 return new L.MaplibreGL(options); 338 }; 339 340})); 341(function (root, factory) { 342 if (typeof define === 'function' && define.amd) { 343 // AMD. Register as an anonymous module. 344 define(['leaflet'], factory); 345 } else if (typeof modules === 'object' && module.exports) { 346 // define a Common JS module that relies on 'leaflet' 347 module.exports = factory(require('leaflet')); 348 } else { 349 // Assume Leaflet is loaded into global object L already 350 factory(L); 351 } 352}(this, function (L) { 353 'use strict'; 354 355 L.TileLayer.Provider = L.TileLayer.extend({ 356 initialize: function (arg, options) { 357 var providers = L.TileLayer.Provider.providers; 358 var parts = arg.split('.'); 359 360 var providerName = parts[0]; 361 var variantName = parts[1]; 362 363 if (!providers[providerName]) { 364 throw 'No such provider (' + providerName + ')'; 365 } 366 367 var provider = { 368 url: providers[providerName].url, 369 options: providers[providerName].options 370 }; 371 372 373 374 // overwrite values in provider from variant. 375 if (variantName && 'variants' in providers[providerName]) { 376 if (!(variantName in providers[providerName].variants)) { 377 throw 'No such variant of ' + providerName + ' (' + variantName + ')'; 378 } 379 var variant = providers[providerName].variants[variantName]; 380 var variantOptions; 381 if (typeof variant === 'string') { 382 variantOptions = { 383 variant: variant 384 }; 385 } else { 386 variantOptions = variant.options; 387 } 388 provider = { 389 url: variant.url || provider.url, 390 options: L.Util.extend({}, provider.options, variantOptions) 391 }; 392 } 393 394 // replace attribution placeholders with their values from toplevel provider attribution, 395 // recursively 396 var attributionReplacer = function (attr) { 397 if (attr.indexOf('{attribution.') === -1) { 398 return attr; 399 } 400 return attr.replace(/\{attribution.(\w*)\}/g, 401 function (match, attributionName) { 402 return attributionReplacer(providers[attributionName].options.attribution); 403 } 404 ); 405 }; 406 provider.options.attribution = attributionReplacer(provider.options.attribution); 407 408 // Compute final options combining provider options with any user overrides 409 var layerOpts = L.Util.extend({}, provider.options, options); 410 L.TileLayer.prototype.initialize.call(this, provider.url, layerOpts); 411 } 412 }); 413 414 /** 415 * Definition of providers. 416 * see http://leafletjs.com/reference.html#tilelayer for options in the options map. 417 */ 418 419 L.TileLayer.Provider.providers = { 420 OpenStreetMap: { 421 url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', 422 options: { 423 maxZoom: 19, 424 attribution: 425 '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' 426 }, 427 variants: { 428 Mapnik: {}, 429 DE: { 430 url: 'https://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png', 431 options: { 432 maxZoom: 18 433 } 434 }, 435 CH: { 436 url: 'https://tile.osm.ch/switzerland/{z}/{x}/{y}.png', 437 options: { 438 maxZoom: 18, 439 bounds: [[45, 5], [48, 11]] 440 } 441 }, 442 France: { 443 url: 'https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', 444 options: { 445 maxZoom: 20, 446 attribution: '© Openstreetmap France | {attribution.OpenStreetMap}' 447 } 448 }, 449 HOT: { 450 url: 'https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', 451 options: { 452 attribution: 453 '{attribution.OpenStreetMap}, ' + 454 'Tiles style by <a href="https://www.hotosm.org/" target="_blank">Humanitarian OpenStreetMap Team</a> ' + 455 'hosted by <a href="https://openstreetmap.fr/" target="_blank">OpenStreetMap France</a>' 456 } 457 }, 458 BZH: { 459 url: 'https://tile.openstreetmap.bzh/br/{z}/{x}/{y}.png', 460 options: { 461 attribution: '{attribution.OpenStreetMap}, Tiles courtesy of <a href="http://www.openstreetmap.bzh/" target="_blank">Breton OpenStreetMap Team</a>', 462 bounds: [[46.2, -5.5], [50, 0.7]] 463 } 464 } 465 } 466 }, 467 OpenSeaMap: { 468 url: 'https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png', 469 options: { 470 attribution: 'Map data: © <a href="http://www.openseamap.org">OpenSeaMap</a> contributors' 471 } 472 }, 473 OpenPtMap: { 474 url: 'http://openptmap.org/tiles/{z}/{x}/{y}.png', 475 options: { 476 maxZoom: 17, 477 attribution: 'Map data: © <a href="http://www.openptmap.org">OpenPtMap</a> contributors' 478 } 479 }, 480 OpenTopoMap: { 481 url: 'https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png', 482 options: { 483 maxZoom: 17, 484 attribution: 'Map data: {attribution.OpenStreetMap}, <a href="http://viewfinderpanoramas.org">SRTM</a> | Map style: © <a href="https://opentopomap.org">OpenTopoMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' 485 } 486 }, 487 OpenRailwayMap: { 488 url: 'https://{s}.tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png', 489 options: { 490 maxZoom: 19, 491 attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © <a href="https://www.OpenRailwayMap.org">OpenRailwayMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' 492 } 493 }, 494 OpenFireMap: { 495 url: 'http://openfiremap.org/hytiles/{z}/{x}/{y}.png', 496 options: { 497 maxZoom: 19, 498 attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © <a href="http://www.openfiremap.org">OpenFireMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' 499 } 500 }, 501 SafeCast: { 502 url: 'https://s3.amazonaws.com/te512.safecast.org/{z}/{x}/{y}.png', 503 options: { 504 maxZoom: 16, 505 attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © <a href="https://blog.safecast.org/about/">SafeCast</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)' 506 } 507 }, 508 Thunderforest: { 509 url: 'https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}', 510 options: { 511 attribution: 512 '© <a href="http://www.thunderforest.com/">Thunderforest</a>, {attribution.OpenStreetMap}', 513 variant: 'cycle', 514 apikey: '<insert your api key here>', 515 maxZoom: 22 516 }, 517 variants: { 518 OpenCycleMap: 'cycle', 519 Transport: { 520 options: { 521 variant: 'transport' 522 } 523 }, 524 TransportDark: { 525 options: { 526 variant: 'transport-dark' 527 } 528 }, 529 SpinalMap: { 530 options: { 531 variant: 'spinal-map' 532 } 533 }, 534 Landscape: 'landscape', 535 Outdoors: 'outdoors',
vendor: 14,546 bytes, lines 536-1057
536 Pioneer: 'pioneer', 537 MobileAtlas: 'mobile-atlas', 538 Neighbourhood: 'neighbourhood' 539 } 540 }, 541 CyclOSM: { 542 url: 'https://dev.{s}.tile.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png', 543 options: { 544 maxZoom: 20, 545 attribution: '<a href="https://github.com/cyclosm/cyclosm-cartocss-style/releases" title="CyclOSM - Open Bicycle render">CyclOSM</a> | Map data: {attribution.OpenStreetMap}' 546 } 547 }, 548 OpenMapSurfer: { 549 url: 'https://maps.heigit.org/openmapsurfer/tiles/{variant}/webmercator/{z}/{x}/{y}.png', 550 options: { 551 maxZoom: 19, 552 variant: 'roads', 553 attribution: 'Imagery from <a href="http://giscience.uni-hd.de/">GIScience Research Group @ University of Heidelberg</a> | Map data ' 554 }, 555 variants: { 556 Roads: { 557 options: { 558 variant: 'roads', 559 attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' 560 } 561 }, 562 Hybrid: { 563 options: { 564 variant: 'hybrid', 565 attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' 566 } 567 }, 568 AdminBounds: { 569 options: { 570 variant: 'adminb', 571 maxZoom: 18, 572 attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' 573 } 574 }, 575 ContourLines: { 576 options: { 577 variant: 'asterc', 578 maxZoom: 18, 579 minZoom: 13, 580 attribution: '{attribution.OpenMapSurfer} <a href="https://lpdaac.usgs.gov/products/aster_policies">ASTER GDEM</a>' 581 } 582 }, 583 Hillshade: { 584 options: { 585 variant: 'asterh', 586 maxZoom: 18, 587 attribution: '{attribution.OpenMapSurfer} <a href="https://lpdaac.usgs.gov/products/aster_policies">ASTER GDEM</a>, <a href="http://srtm.csi.cgiar.org/">SRTM</a>' 588 } 589 }, 590 ElementsAtRisk: { 591 options: { 592 variant: 'elements_at_risk', 593 attribution: '{attribution.OpenMapSurfer}{attribution.OpenStreetMap}' 594 } 595 } 596 } 597 }, 598 Hydda: { 599 url: 'https://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png', 600 options: { 601 maxZoom: 18, 602 variant: 'full', 603 attribution: 'Tiles courtesy of <a href="http://openstreetmap.se/" target="_blank">OpenStreetMap Sweden</a> — Map data {attribution.OpenStreetMap}' 604 }, 605 variants: { 606 Full: 'full', 607 Base: 'base', 608 RoadsAndLabels: 'roads_and_labels' 609 } 610 }, 611 MapBox: { 612 url: 'https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/{z}/{x}/{y}?access_token={accessToken}', 613 options: { 614 attribution: 615 '<a href="https://www.mapbox.com/about/maps/" target="_blank">© Mapbox</a> ' + 616 '{attribution.OpenStreetMap} ' + 617 '<a href="https://www.mapbox.com/map-feedback/" target="_blank">Improve this map</a>', 618 subdomains: 'abcd', 619 id: 'mapbox.streets', 620 accessToken: '<insert your access token here>', 621 maxZoom: 25, 622 tileSize: 512, 623 zoomOffset: -1, 624 } 625 }, 626 Stamen: { 627 url: 'https://tiles.stadiamaps.com/tiles/stamen_toner/{z}/{x}/{y}{r}.{ext}', 628 options: { 629 attribution: 630 'Map tiles by <a href="http://stamen.com">Stamen Design</a>, ' + 631 '<a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a> — ' + 632 'Map data {attribution.OpenStreetMap}', 633 subdomains: 'abcd', 634 minZoom: 0, 635 maxZoom: 20, 636 variant: 'toner', 637 ext: 'png' 638 }, 639 variants: { 640 Toner: 'toner', 641 TonerBackground: 'toner-background', 642 TonerHybrid: 'toner-hybrid', 643 TonerLines: 'toner-lines', 644 TonerLabels: 'toner-labels', 645 TonerLite: 'toner-lite', 646 Watercolor: { 647 url: 'https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}', 648 options: { 649 variant: 'watercolor', 650 ext: 'jpg', 651 minZoom: 1, 652 maxZoom: 16 653 } 654 }, 655 Terrain: { 656 options: { 657 variant: 'terrain', 658 minZoom: 0, 659 maxZoom: 18 660 } 661 }, 662 TerrainBackground: { 663 options: { 664 variant: 'terrain-background', 665 minZoom: 0, 666 maxZoom: 18 667 } 668 }, 669 TerrainLabels: { 670 options: { 671 variant: 'terrain-labels', 672 minZoom: 0, 673 maxZoom: 18 674 } 675 }, 676 TopOSMRelief: { 677 url: 'https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}', 678 options: { 679 variant: 'toposm-color-relief', 680 ext: 'jpg', 681 bounds: [[22, -132], [51, -56]] 682 } 683 }, 684 TopOSMFeatures: { 685 options: { 686 variant: 'toposm-features', 687 bounds: [[22, -132], [51, -56]], 688 opacity: 0.9 689 } 690 } 691 } 692 }, 693 TomTom: { 694 url: 'https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}', 695 options: { 696 variant: 'basic', 697 maxZoom: 22, 698 attribution: 699 '<a href="https://tomtom.com" target="_blank">© 1992 - ' + new Date().getFullYear() + ' TomTom.</a> ', 700 subdomains: 'abcd', 701 style: 'main', 702 ext: 'png', 703 apikey: '<insert your API key here>', 704 }, 705 variants: { 706 Basic: 'basic', 707 Hybrid: 'hybrid', 708 Labels: 'labels' 709 } 710 }, 711 Esri: { 712 url: 'https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}', 713 options: { 714 variant: 'World_Street_Map', 715 attribution: 'Tiles © Esri' 716 }, 717 variants: { 718 WorldStreetMap: { 719 options: { 720 attribution: 721 '{attribution.Esri} — ' + 722 'Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012' 723 } 724 }, 725 DeLorme: { 726 options: { 727 variant: 'Specialty/DeLorme_World_Base_Map', 728 minZoom: 1, 729 maxZoom: 11, 730 attribution: '{attribution.Esri} — Copyright: ©2012 DeLorme' 731 } 732 }, 733 WorldTopoMap: { 734 options: { 735 variant: 'World_Topo_Map', 736 attribution: 737 '{attribution.Esri} — ' + 738 'Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community' 739 } 740 }, 741 WorldImagery: { 742 options: { 743 variant: 'World_Imagery', 744 attribution: 745 '{attribution.Esri} — ' + 746 'Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community' 747 } 748 }, 749 WorldTerrain: { 750 options: { 751 variant: 'World_Terrain_Base', 752 maxZoom: 13, 753 attribution: 754 '{attribution.Esri} — ' + 755 'Source: USGS, Esri, TANA, DeLorme, and NPS' 756 } 757 }, 758 WorldShadedRelief: { 759 options: { 760 variant: 'World_Shaded_Relief', 761 maxZoom: 13, 762 attribution: '{attribution.Esri} — Source: Esri' 763 } 764 }, 765 WorldPhysical: { 766 options: { 767 variant: 'World_Physical_Map', 768 maxZoom: 8, 769 attribution: '{attribution.Esri} — Source: US National Park Service' 770 } 771 }, 772 OceanBasemap: { 773 options: { 774 variant: 'Ocean_Basemap', 775 maxZoom: 13, 776 attribution: '{attribution.Esri} — Sources: GEBCO, NOAA, CHS, OSU, UNH, CSUMB, National Geographic, DeLorme, NAVTEQ, and Esri' 777 } 778 }, 779 NatGeoWorldMap: { 780 options: { 781 variant: 'NatGeo_World_Map', 782 maxZoom: 16, 783 attribution: '{attribution.Esri} — National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC' 784 } 785 }, 786 WorldGrayCanvas: { 787 options: { 788 variant: 'Canvas/World_Light_Gray_Base', 789 maxZoom: 16, 790 attribution: '{attribution.Esri} — Esri, DeLorme, NAVTEQ' 791 } 792 } 793 } 794 }, 795 OpenWeatherMap: { 796 url: 'http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}', 797 options: { 798 maxZoom: 19, 799 attribution: 'Map data © <a href="http://openweathermap.org">OpenWeatherMap</a>', 800 apiKey:'<insert your api key here>', 801 opacity: 0.5 802 }, 803 variants: { 804 Clouds: 'clouds', 805 CloudsClassic: 'clouds_cls', 806 Precipitation: 'precipitation', 807 PrecipitationClassic: 'precipitation_cls', 808 Rain: 'rain', 809 RainClassic: 'rain_cls', 810 Pressure: 'pressure', 811 PressureContour: 'pressure_cntr', 812 Wind: 'wind', 813 Temperature: 'temp', 814 Snow: 'snow' 815 } 816 }, 817 HERE: { 818 /* 819 * HERE maps, formerly Nokia maps. 820 * These basemaps are free, but you need an API key. Please sign up at 821 * https://developer.here.com/plans 822 */ 823 url: 824 'https://{s}.{base}.maps.api.here.com/maptile/2.1/' + 825 '{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?' + 826 'app_id={app_id}&app_code={app_code}&lg={language}', 827 options: { 828 attribution: 829 'Map © 1987-' + new Date().getFullYear() + ' <a href="http://developer.here.com">HERE</a>', 830 subdomains: '1234', 831 mapID: 'newest', 832 'app_id': '<insert your app_id here>', 833 'app_code': '<insert your app_code here>', 834 base: 'base', 835 variant: 'normal.day', 836 maxZoom: 20, 837 type: 'maptile', 838 language: 'eng', 839 format: 'png8', 840 size: '256' 841 }, 842 variants: { 843 normalDay: 'normal.day', 844 normalDayCustom: 'normal.day.custom', 845 normalDayGrey: 'normal.day.grey', 846 normalDayMobile: 'normal.day.mobile', 847 normalDayGreyMobile: 'normal.day.grey.mobile', 848 normalDayTransit: 'normal.day.transit', 849 normalDayTransitMobile: 'normal.day.transit.mobile', 850 normalDayTraffic: { 851 options: { 852 variant: 'normal.traffic.day', 853 base: 'traffic', 854 type: 'traffictile' 855 } 856 }, 857 normalNight: 'normal.night', 858 normalNightMobile: 'normal.night.mobile', 859 normalNightGrey: 'normal.night.grey', 860 normalNightGreyMobile: 'normal.night.grey.mobile', 861 normalNightTransit: 'normal.night.transit', 862 normalNightTransitMobile: 'normal.night.transit.mobile', 863 reducedDay: 'reduced.day', 864 reducedNight: 'reduced.night', 865 basicMap: { 866 options: { 867 type: 'basetile' 868 } 869 }, 870 mapLabels: { 871 options: { 872 type: 'labeltile', 873 format: 'png' 874 } 875 }, 876 trafficFlow: { 877 options: { 878 base: 'traffic', 879 type: 'flowtile' 880 } 881 }, 882 carnavDayGrey: 'carnav.day.grey', 883 hybridDay: { 884 options: { 885 base: 'aerial', 886 variant: 'hybrid.day' 887 } 888 }, 889 hybridDayMobile: { 890 options: { 891 base: 'aerial', 892 variant: 'hybrid.day.mobile' 893 } 894 }, 895 hybridDayTransit: { 896 options: { 897 base: 'aerial', 898 variant: 'hybrid.day.transit' 899 } 900 }, 901 hybridDayGrey: { 902 options: { 903 base: 'aerial', 904 variant: 'hybrid.grey.day' 905 } 906 }, 907 hybridDayTraffic: { 908 options: { 909 variant: 'hybrid.traffic.day', 910 base: 'traffic', 911 type: 'traffictile' 912 } 913 }, 914 pedestrianDay: 'pedestrian.day', 915 pedestrianNight: 'pedestrian.night', 916 satelliteDay: { 917 options: { 918 base: 'aerial', 919 variant: 'satellite.day' 920 } 921 }, 922 terrainDay: { 923 options: { 924 base: 'aerial', 925 variant: 'terrain.day' 926 } 927 }, 928 terrainDayMobile: { 929 options: { 930 base: 'aerial', 931 variant: 'terrain.day.mobile' 932 } 933 } 934 } 935 }, 936 FreeMapSK: { 937 url: 'http://t{s}.freemap.sk/T/{z}/{x}/{y}.jpeg', 938 options: { 939 minZoom: 8, 940 maxZoom: 16, 941 subdomains: '1234', 942 bounds: [[47.204642, 15.996093], [49.830896, 22.576904]], 943 attribution: 944 '{attribution.OpenStreetMap}, vizualization CC-By-SA 2.0 <a href="http://freemap.sk">Freemap.sk</a>' 945 } 946 }, 947 MtbMap: { 948 url: 'http://tile.mtbmap.cz/mtbmap_tiles/{z}/{x}/{y}.png', 949 options: { 950 attribution: 951 '{attribution.OpenStreetMap} & USGS' 952 } 953 }, 954 CartoDB: { 955 url: 'https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png?key={apiKey}', 956 options: { 957 attribution: '{attribution.OpenStreetMap} © <a href="https://carto.com/attributions">CARTO</a>', 958 subdomains: 'abcd', 959 maxZoom: 19, 960 variant: 'light_all' 961 }, 962 variants: { 963 Positron: 'light_all', 964 PositronNoLabels: 'light_nolabels', 965 PositronOnlyLabels: 'light_only_labels', 966 DarkMatter: 'dark_all', 967 DarkMatterNoLabels: 'dark_nolabels', 968 DarkMatterOnlyLabels: 'dark_only_labels', 969 Voyager: 'rastertiles/voyager', 970 VoyagerNoLabels: 'rastertiles/voyager_nolabels', 971 VoyagerOnlyLabels: 'rastertiles/voyager_only_labels', 972 VoyagerLabelsUnder: 'rastertiles/voyager_labels_under' 973 } 974 }, 975 HikeBike: { 976 url: 'https://tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png', 977 options: { 978 maxZoom: 19, 979 attribution: '{attribution.OpenStreetMap}', 980 variant: 'hikebike' 981 }, 982 variants: { 983 HikeBike: {}, 984 HillShading: { 985 options: { 986 maxZoom: 15, 987 variant: 'hillshading' 988 } 989 } 990 } 991 }, 992 BasemapAT: { 993 url: 'https://maps{s}.wien.gv.at/basemap/{variant}/normal/google3857/{z}/{y}/{x}.{format}', 994 options: { 995 maxZoom: 19, 996 attribution: 'Datenquelle: <a href="https://www.basemap.at">basemap.at</a>', 997 subdomains: ['', '1', '2', '3', '4'], 998 format: 'png', 999 bounds: [[46.358770, 8.782379], [49.037872, 17.189532]], 1000 variant: 'geolandbasemap' 1001 }, 1002 variants: { 1003 basemap: { 1004 options: { 1005 maxZoom: 20, // currently only in Vienna 1006 variant: 'geolandbasemap' 1007 } 1008 }, 1009 grau: 'bmapgrau', 1010 overlay: 'bmapoverlay', 1011 highdpi: { 1012 options: { 1013 variant: 'bmaphidpi', 1014 format: 'jpeg' 1015 } 1016 }, 1017 orthofoto: { 1018 options: { 1019 maxZoom: 20, // currently only in Vienna 1020 variant: 'bmaporthofoto30cm', 1021 format: 'jpeg' 1022 } 1023 } 1024 } 1025 }, 1026 nlmaps: { 1027 url: 'https://geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png', 1028 options: { 1029 minZoom: 6, 1030 maxZoom: 19, 1031 bounds: [[50.5, 3.25], [54, 7.6]], 1032 attribution: 'Kaartgegevens © <a href="kadaster.nl">Kadaster</a>' 1033 }, 1034 variants: { 1035 'standaard': 'brtachtergrondkaart', 1036 'pastel': 'brtachtergrondkaartpastel', 1037 'grijs': 'brtachtergrondkaartgrijs', 1038 'luchtfoto': { 1039 'url': 'https://geodata.nationaalgeoregister.nl/luchtfoto/rgb/wmts/1.0.0/2016_ortho25/EPSG:3857/{z}/{x}/{y}.png', 1040 } 1041 } 1042 }, 1043 NASAGIBS: { 1044 url: 'https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{maxZoom}/{z}/{y}/{x}.{format}', 1045 options: { 1046 attribution: 1047 'Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System ' + 1048 '(<a href="https://earthdata.nasa.gov">ESDIS</a>) with funding provided by NASA/HQ.', 1049 bounds: [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], 1050 minZoom: 1, 1051 maxZoom: 9, 1052 format: 'jpg', 1053 time: '', 1054 tilematrixset: 'GoogleMapsCompatible_Level' 1055 }, 1056 variants: { 1057 ModisTerraTrueColorCR: 'MODIS_Terra_CorrectedReflectance_True
1057Color', 1058 ModisTerraBands367CR: 'MODIS_Terra_CorrectedReflectance_Bands367', 1059 ViirsEarthAtNight2012: { 1060 options: { 1061 variant: 'VIIRS_CityLights_2012', 1062 maxZoom: 8 1063 } 1064 }, 1065 ModisTerraLSTDay: { 1066 options: { 1067 variant: 'MODIS_Terra_Land_Surface_Temp_Day', 1068 format: 'png', 1069 maxZoom: 7, 1070 opacity: 0.75 1071 } 1072 }, 1073 ModisTerraSnowCover: { 1074 options: { 1075 variant: 'MODIS_Terra_Snow_Cover', 1076 format: 'png', 1077 maxZoom: 8, 1078 opacity: 0.75 1079 } 1080 }, 1081 ModisTerraAOD: { 1082 options: { 1083 variant: 'MODIS_Terra_Aerosol', 1084 format: 'png', 1085 maxZoom: 6, 1086 opacity: 0.75 1087 } 1088 }, 1089 ModisTerraChlorophyll: { 1090 options: { 1091 variant: 'MODIS_Terra_Chlorophyll_A', 1092 format: 'png', 1093 maxZoom: 7, 1094 opacity: 0.75 1095 } 1096 } 1097 } 1098 }, 1099 NLS: { 1100 // NLS maps are copyright National library of Scotland. 1101 // http://maps.nls.uk/projects/api/index.html 1102 // Please contact NLS for anything other than non-commercial low volume usage 1103 // 1104 // Map sources: Ordnance Survey 1:1m to 1:63K, 1920s-1940s 1105 // z0-9 - 1:1m 1106 // z10-11 - quarter inch (1:253440) 1107 // z12-18 - one inch (1:63360) 1108 url: 'https://nls-{s}.tileserver.com/nls/{z}/{x}/{y}.jpg', 1109 options: { 1110 attribution: '<a href="http://geo.nls.uk/maps/">National Library of Scotland Historic Maps</a>', 1111 bounds: [[49.6, -12], [61.7, 3]], 1112 minZoom: 1, 1113 maxZoom: 18, 1114 subdomains: '0123', 1115 } 1116 }, 1117 JusticeMap: { 1118 // Justice Map (http://www.justicemap.org/) 1119 // Visualize race and income data for your community, county and country. 1120 // Includes tools for data journalists, bloggers and community activists. 1121 url: 'http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png', 1122 options: { 1123 attribution: '<a href="http://www.justicemap.org/terms.php">Justice Map</a>', 1124 // one of 'county', 'tract', 'block' 1125 size: 'county', 1126 // Bounds for USA, including Alaska and Hawaii 1127 bounds: [[14, -180], [72, -56]] 1128 }, 1129 variants: { 1130 income: 'income', 1131 americanIndian: 'indian', 1132 asian: 'asian', 1133 black: 'black', 1134 hispanic: 'hispanic', 1135 multi: 'multi', 1136 nonWhite: 'nonwhite', 1137 white: 'white', 1138 plurality: 'plural' 1139 } 1140 }, 1141 Wikimedia: { 1142 url: 'https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}{r}.png', 1143 options: { 1144 attribution: '<a href="https://wikimediafoundation.org/wiki/Maps_Terms_of_Use">Wikimedia</a>', 1145 minZoom: 1, 1146 maxZoom: 19 1147 } 1148 }, 1149 GeoportailFrance: { 1150 url: 'https://wxs.ign.fr/{apikey}
1150/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}', 1151 options: { 1152 attribution: '<a target="_blank" href="https://www.geoportail.gouv.fr/">Geoportail France</a>', 1153 bounds: [[-75, -180], [81, 180]], 1154 minZoom: 2, 1155 maxZoom: 18, 1156 // Get your own geoportail apikey here : http://professionnels.ign.fr/ign/contrats/ 1157 // NB : 'choisirgeoportail' is a demonstration key that comes with no guarantee 1158 apikey: 'choisirgeoportail', 1159 format: 'image/jpeg', 1160 style : 'normal', 1161 variant: 'GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN-EXPRESS.STANDARD' 1162 }, 1163 variants: { 1164 parcels: { 1165 options : { 1166 variant: 'CADASTRALPARCELS.PARCELS', 1167 maxZoom: 20, 1168 style : 'bdparcellaire', 1169 format: 'image/png' 1170 } 1171 }, 1172 ignMaps: 'GEOGRAPHICALGRIDSYSTEMS.MAPS', 1173 maps: 'GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN-EXPRESS.STANDARD', 1174 orthos: { 1175 options: { 1176 maxZoom: 19, 1177 variant: 'ORTHOIMAGERY.ORTHOPHOTOS' 1178 } 1179 } 1180 } 1181 }, 1182 OneMapSG: { 1183 url: 'https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png', 1184 options: { 1185 variant: 'Default', 1186 minZoom: 11, 1187 maxZoom: 18, 1188 bounds: [[1.56073, 104.11475], [1.16, 103.502]], 1189 attribution: '<img src="https://docs.onemap.sg/maps/images/oneMap64-01.png" style="height:20px;width:20px;"/> New OneMap | Map data © contributors, <a href="http://SLA.gov.sg">Singapore Land Authority</a>' 1190 }, 1191 variants: { 1192 Default: 'Default', 1193 Night: 'Night', 1194 Original: 'Original', 1195 Grey: 'Grey', 1196 LandLot: 'LandLot' 1197 } 1198 } 1199 }; 1200 1201 L.tileLayer.provider = function (provider, options) { 1202 return new L.TileLayer.Provider(provider, options); 1203 }; 1204 1205 return L; 1206})); 1207 1208(function ($) { 1209 1210 class GeoJsonAutocomplete { 1211 constructor(inputElement, options = {}) { 1212 this.inputElement = inputElement; 1213 this.settings = Object.assign({ 1214 geojsonServiceAddress: "https://nominatim.openstreetmap.org/search", 1215 placeholderMessage: "Search...", 1216 foundRecordsMessage: "showing results.", 1217 limit: 10, 1218 notFoundMessage: "not found.", 1219 notFoundHint: "Make sure your search criteria is correct and try again.", 1220 drawColor: "blue", 1221 pointGeometryZoomLevel: -1, 1222 pagingActive: true, 1223 map_obj: null, 1224 onSelect: null, // this is the callback 1225 }, options); 1226 1227 this.activeResult = -1; 1228 this.resultCount = 0; 1229 this.lastSearch = ""; 1230 this.searchLayer = null; 1231 this.focusLayer = null; 1232 this.searchLayerType = 0; 1233 this.features = []; 1234 this.featureCollection = []; 1235 this.offset = 0; 1236 this.collapseOnBlur = true; 1237 1238 this._init(); 1239 } 1240 1241 _init() { 1242 const $input = $(this.inputElement); 1243 $input.parent().addClass("searchContainer wpgmp-autocomplete-wrapper"); 1244 $input.val(""); 1245 1246 $input.on("keyup", this._debounce((e) => this._handleKeyUp(e), 300)); 1247 $input.on("focus", () => this._showResults()); 1248 $input.on("blur", (e) => this._handleBlur(e)); 1249 } 1250 1251 _handleKeyUp(event) { 1252 const target = $(event.target); 1253 const keyCode = event.keyCode; 1254 1255 switch (keyCode) { 1256 case 13: 1257 this._search(target); 1258 break; 1259 case 38: 1260 this._prevResult(target); 1261 break; 1262 case 40: 1263 this._nextResult(target); 1264 break; 1265 case 37: 1266 case 39: 1267 break; 1268 default: 1269 if (target.val().length > 0) { 1270 this.offset = 0; 1271 this._fetchResults(false, target); 1272 } else { 1273 this._clearResults(target); 1274 } 1275 break; 1276 } 1277 } 1278 1279 _fetchResults(withPaging, target) { 1280 this.activeResult = -1; 1281 this.features = []; 1282 this.featureCollection = []; 1283 this.lastSearch = target.val(); 1284 1285 const query = { 1286 q: this.lastSearch, 1287 limit: this.settings.limit + (withPaging ? 1 : 0), 1288 format: "json", 1289 addressdetails: 1, 1290 }; 1291 1292 if (this.settings.pagingActive) query.offset = this.offset; 1293 1294 $.getJSON(this.settings.geojsonServiceAddress, query) 1295 .done((json) => { 1296 this.resultCount = json.length; 1297 this.features = json; 1298 this.featureCollection = withPaging ? json.slice(0, json.length - 1) : json; 1299 this._renderDropdown(withPaging, target); 1300 }) 1301 .fail(() => this._handleNoResults(target)); 1302 } 1303 1304 _renderDropdown(withPaging, target) { 1305 const $parent = $(target).parent(); 1306 $parent.find(".resultsDiv").remove(); 1307 1308 const $resultsDiv = $(` 1309 <div class='result resultsDiv'> 1310 <ul class='list resultList wpgmp-autosuggest-results'></ul> 1311 </div> 1312 `); 1313 $parent.append($resultsDiv); 1314 1315 const $list = $resultsDiv.find("ul"); 1316 1317 const loopCount = this.features.length - (withPaging ? 1 : 0); 1318 1319 for (let i = 0; i < loopCount; i++) { 1320 const feature = this.features[i]; 1321 const $item = $(` 1322 <li class='listResult listElement${i}' data-index='${i}'>
1323 <span class='content listElementContent${i}'> 1324 <strong>${feature.display_name}</strong><br/> 1325 <small>${feature.lat}, ${feature.lon}</small> 1326 </span> 1327 </li> 1328 `); 1329 $list.append($item); 1330 1331 $item.on("mouseenter", () => this._highlightItem(i, target)); 1332 $item.on("mouseleave", () => this._unhighlightItem(i, target)); 1333 $item.on("mousedown", () => this._selectItem(i, target)); 1334 } 1335 1336 // You can also add paging and styling logic here. 1337 } 1338 1339 _highlightItem(index, target) { 1340 $(target).parent().find(`.listElement${index}`).addClass("mouseover"); 1341 } 1342 1343 _unhighlightItem(index, target) { 1344 $(target).parent().find(`.listElement${index}`).removeClass("mouseover"); 1345 } 1346 1347 _selectItem(index, target) { 1348 this.activeResult = index; 1349 this._fillSearchBox(target); 1350 } 1351 1352 _showResults() { 1353 $(this.inputElement).parent().find(".wpgmp-autosuggest-results").show(); 1354 } 1355 1356 _handleBlur(e) { 1357 const input = e.target; 1358 const resultsDiv = $(input).closest('.searchContainer').find('.resultsDiv'); 1359 1360 setTimeout(() => { 1361 // Only hide if mouse is NOT on the results dropdown 1362 if (this.collapseOnBlur && !resultsDiv.is(':hover')) { 1363 resultsDiv.find('.wpgmp-autosuggest-results').hide(); 1364 } else { 1365 this.collapseOnBlur = true; 1366 $(input).focus(); // optional: re-focus if needed 1367 } 1368 }, 150); 1369 } 1370 1371 1372 _clearResults(target) { 1373 this.activeResult = -1; 1374 this.features = []; 1375 this.lastSearch = ""; 1376 $(target).parent().find(".resultsDiv").remove(); 1377 } 1378 1379 _handleNoResults(target) { 1380 this._clearResults(target); 1381 $(target).parent().append(`<div class='resultsDiv'><i>${this.lastSearch} ${this.settings.notFoundMessage}</i><p><small>${this.settings.notFoundHint}</small></p></div>`); 1382 } 1383 1384 _search(target) { 1385 this._fetchResults(this.settings.pagingActive, target); 1386 } 1387 1388 _prevResult(target) { 1389 if (this.resultCount <= 0) return; 1390 if (this.activeResult > 0) this.activeResult--; 1391 this._fillSearchBox(target); 1392 } 1393 1394 _nextResult(target) { 1395 if (this.resultCount <= 0) return; 1396 if (this.activeResult < this.resultCount - 1) this.activeResult++; 1397 this._fillSearchBox(target); 1398 } 1399 1400 _fillSearchBox(target) { 1401 const feature = this.features[this.activeResult]; 1402 if (!feature) return; 1403 1404 if (this.settings && typeof this.settings.onSelect === 'function') { 1405 this.settings.onSelect({ 1406 target, // input element 1407 feature, // selected GeoJSON result 1408 }); 1409 } 1410 1411 1412 } 1413 1414 _debounce(fn, delay) { 1415 let timer = null; 1416 return function (...args) { 1417 clearTimeout(timer); 1418 timer = setTimeout(() => fn.apply(this, args), delay); 1419 }; 1420 } 1421 } 1422 1423 1424 $.fn.GeoJsonAutocomplete = function (userOptions) { 1425 return this.each(function () { 1426 if (!this._geoJsonAutocompleteInstance) { 1427 this._geoJsonAutocompleteInstance = new GeoJsonAutocomplete(this, userOptions); 1428 } 1429 }); 1430 }; 1431 })(jQuery); 1432 1433(function (factory) { 1434 if (typeof define === 'function' && define.amd) { 1435 // AMD 1436 define(['leaflet'], factory); 1437 } else if (typeof module !== 'undefined') { 1438 // Node/CommonJS 1439 module.exports = factory(require('leaflet')); 1440 } else { 1441 // Browser globals 1442 if (typeof window.L === 'undefined') { 1443 throw new Error('Leaflet must be loaded first'); 1444 } 1445 factory(window.L); 1446 } 1447}(function (L) { 1448 L.Control.Fullscreen = L.Control.extend({ 1449 options: { 1450 position: 'topleft', 1451 title: { 1452 'false': 'View Fullscreen', 1453 'true': 'Exit Fullscreen' 1454 } 1455 }, 1456 1457 onAdd: function (map) { 1458 var container = L.DomUtil.create('div', 'leaflet-control-fullscreen leaflet-bar leaflet-control'); 1459 1460 this.link = L.DomUtil.create('a', 'leaflet-control-fullscreen-button leaflet-bar-part', container); 1461 this.link.href = '#'; 1462 1463 this._map = map; 1464 this._map.on('fullscreenchange', this._toggleTitle, this); 1465 this._toggleTitle(); 1466 1467 L.DomEvent.on(this.link, 'click', this._click, this); 1468 1469 return container; 1470 }, 1471 1472 _click: function (e) { 1473 L.DomEvent.stopPropagation(e); 1474 L.DomEvent.preventDefault(e); 1475 this._map.toggleFullscreen(this.options); 1476 }, 1477 1478 _toggleTitle: function() { 1479 this.link.title = this.options.title[this._map.isFullscreen()]; 1480 } 1481 }); 1482 1483 L.Map.include({ 1484 isFullscreen: function () { 1485 return this._isFullscreen || false; 1486 }, 1487 1488 toggleFullscreen: function (options) { 1489 var container = this.getContainer(); 1490 if (this.isFullscreen()) { 1491 if (options && options.pseudoFullscreen) { 1492 this._disablePseudoFullscreen(container); 1493 } else if (document.exitFullscreen) { 1494 document.exitFullscreen(); 1495 } else if (document.mozCancelFullScreen) { 1496 document.mozCancelFullScreen(); 1497 } else if (document.webkitCancelFullScreen) { 1498 document.webkitCancelFullScreen(); 1499 } else if (document.msExitFullscreen) { 1500 document.msExitFullscreen(); 1501 } else { 1502 this._disablePseudoFullscreen(container); 1503 } 1504 } else { 1505 if (options && options.pseudoFullscreen) { 1506 this._enablePseudoFullscreen(container); 1507 } else if (container.requestFullscreen) { 1508 container.requestFullscreen(); 1509 } else if (container.mozRequestFullScreen) { 1510 container.mozRequestFullScreen(); 1511 } else if (container.webkitRequestFullscreen) { 1512 container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); 1513 } else if (container.msRequestFullscreen) { 1514 container.msRequestFullscreen(); 1515 } else { 1516 this._enablePseudoFullscreen(container); 1517 } 1518 } 1519 1520 }, 1521 1522 _enablePseudoFullscreen: function (container) { 1523 L.DomUtil.addClass(container, 'leaflet-pseudo-fullscreen'); 1524 this._setFullscreen(true); 1525 this.fire('fullscreenchange'); 1526 }, 1527 1528 _disablePseudoFullscreen: function (container) { 1529 L.DomUtil.removeClass(container, 'leaflet-pseudo-fullscreen'); 1530 this._setFullscreen(false); 1531 this.fire('fullscreenchange'); 1532 }, 1533 1534 _setFullscreen: function(fullscreen) { 1535 this._isFullscreen = fullscreen; 1536 var container = this.getContainer(); 1537 if (fullscreen) { 1538 L.DomUtil.addClass(container, 'leaflet-fullscreen-on'); 1539 } else { 1540 L.DomUtil.removeClass(container, 'leaflet-fullscreen-on'); 1541 } 1542 this.invalidateSize(); 1543 }, 1544 1545 _onFullscreenChange: function (e) { 1546 var fullscreenElement = 1547 document.fullscreenElement || 1548 document.mozFullScreenElement || 1549 document.webkitFullscreenElement || 1550 document.msFullscreenElement; 1551 1552 if (fullscreenElement === this.getContainer() && !this._isFullscreen) { 1553 this._setFullscreen(true); 1554 this.fire('fullscreenchange'); 1555 } else if (fullscreenElement !== this.getContainer() && this._isFullscreen) { 1556 this._setFullscreen(false); 1557 this.fire('fullscreenchange'); 1558 } 1559 } 1560 }); 1561 1562 L.Map.mergeOptions({ 1563 fullscreenControl: false 1564 }); 1565 1566 L.Map.addInitHook(function () { 1567 if (this.options.fullscreenControl) { 1568 this.fullscreenControl = new L.Control.Fullscreen(this.options.fullscreenControl); 1569 this.addControl(this.fullscreenControl); 1570 } 1571 1572 var fullscreenchange; 1573 1574 if ('onfullscreenchange' in document) { 1575 fullscreenchange = 'fullscreenchange'; 1576 } else if ('onmozfullscreenchange' in document) { 1577 fullscreenchange = 'mozfullscreenchange'; 1578 } else if ('onwebkitfullscreenchange' in document) { 1579 fullscreenchange = 'webkitfullscreenchange'; 1580 } else if ('onmsfullscreenchange' in document) { 1581 fullscreenchange = 'MSFullscreenChange'; 1582 } 1583 1584 if (fullscreenchange) { 1585 var onFullscreenChange = L.bind(this._onFullscreenChange, this); 1586 1587 this.whenReady(function () { 1588 L.DomEvent.on(document, fullscreenchange, onFullscreenChange); 1589 }); 1590 1591 this.on('unload', function () { 1592 L.DomEvent.off(document, fullscreenchange, onFullscreenChange); 1593 }); 1594 } 1595 }); 1596 1597 L.control.fullscreen = function (options) { 1598 return new L.Control.Fullscreen(options); 1599 }; 1600})); 1601/*! 1602Copyright (c) 2016 Dominik Moritz 1603 1604This file is part of the leaflet locate control. It is licensed under the MIT license. 1605You can find the project at: https://github.com/domoritz/leaflet-locatecontrol 1606*/ 1607(function (factory, window) { 1608 // see https://github.com/Leaflet/Leaflet/blob/master/PLUGIN-GUIDE.md#module-loaders 1609 // for details on how to structure a leaflet plugin. 1610 1611 // define an AMD module that relies on 'leaflet' 1612 if (typeof define === 'function' && define.amd) { 1613 define(['leaflet'], factory); 1614 1615 // define a Common JS module that relies on 'leaflet' 1616 } else if (typeof exports === 'object') { 1617 if (typeof window !== 'undefined' && window.L) { 1618 module.exports = factory(L); 1619 } else { 1620 module.exports = factory(require('leaflet')); 1621 } 1622 } 1623 1624 // attach your plugin to the global 'L' variable 1625 if (typeof window !== 'undefined' && window.L){ 1626 window.L.Control.Locate = factory(L); 1627 } 1628} (function (L) { 1629 var LDomUtilApplyClassesMethod = function(method, element, classNames) { 1630 classNames = classNames.split(' ');
1631 classNames.forEach(function(className) { 1632 L.DomUtil[method].call(this, element, className); 1633 }); 1634 }; 1635 1636 var addClasses = function(el, names) { LDomUtilApplyClassesMethod('addClass', el, names); }; 1637 var removeClasses = function(el, names) { LDomUtilApplyClassesMethod('removeClass', el, names); }; 1638 1639 /** 1640 * Compatible with L.Circle but a true marker instead of a path 1641 */ 1642 var LocationMarker = L.Marker.extend({ 1643 initialize: function (latlng, options) { 1644 L.Util.setOptions(this, options); 1645 this._latlng = latlng; 1646 this.createIcon(); 1647 }, 1648 1649 /** 1650 * Create a styled circle location marker 1651 */ 1652 createIcon: function() { 1653 var opt = this.options; 1654 1655 var style = ''; 1656 1657 if (opt.color !== undefined) { 1658 style += 'stroke:'+opt.color+';'; 1659 } 1660 if (opt.weight !== undefined) { 1661 style += 'stroke-width:'+opt.weight+';'; 1662 } 1663 if (opt.fillColor !== undefined) { 1664 style += 'fill:'+opt.fillColor+';'; 1665 } 1666 if (opt.fillOpacity !== undefined) { 1667 style += 'fill-opacity:'+opt.fillOpacity+';'; 1668 } 1669 if (opt.opacity !== undefined) { 1670 style += 'opacity:'+opt.opacity+';'; 1671 } 1672 1673 var icon = this._getIconSVG(opt, style); 1674 1675 this._locationIcon = L.divIcon({ 1676 className: icon.className, 1677 html: icon.svg, 1678 iconSize: [icon.w,icon.h], 1679 }); 1680 1681 this.setIcon(this._locationIcon); 1682 }, 1683 1684 /** 1685 * Return the raw svg for the shape 1686 * 1687 * Split so can be easily overridden 1688 */ 1689 _getIconSVG: function(options, style) { 1690 var r = options.radius; 1691 var w = options.weight; 1692 var s = r + w; 1693 var s2 = s * 2; 1694 var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="'+s2+'" height="'+s2+'" version="1.1" viewBox="-'+s+' -'+s+' '+s2+' '+s2+'">' + 1695 '<circle r="'+r+'" style="'+style+'" />' + 1696 '</svg>'; 1697 return { 1698 className: 'leaflet-control-locate-location', 1699 svg: svg, 1700 w: s2, 1701 h: s2 1702 }; 1703 }, 1704 1705 setStyle: function(style) { 1706 L.Util.setOptions(this, style); 1707 this.createIcon(); 1708 } 1709 }); 1710 1711 var CompassMarker = LocationMarker.extend({ 1712 initialize: function (latlng, heading, options) { 1713 L.Util.setOptions(this, options); 1714 this._latlng = latlng; 1715 this._heading = heading; 1716 this.createIcon(); 1717 }, 1718 1719 setHeading: function(heading) { 1720 this._heading = heading; 1721 }, 1722 1723 /** 1724 * Create a styled arrow compass marker 1725 */ 1726 _getIconSVG: function(options, style) { 1727 var r = options.radius; 1728 var w = (options.width + options.weight); 1729 var h = (r+options.depth + options.weight)*2; 1730 var path = 'M0,0 l'+(options.width/2)+','+options.depth+' l-'+(w)+',0 z'; 1731 var svgstyle = 'transform: rotate('+this._heading+'deg)'; 1732 var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="'+(w)+'" height="'+h+'" version="1.1" viewBox="-'+(w/2)+' 0 '+w+' '+h+'" style="'+svgstyle+'">'+ 1733 '<path d="'+path+'" style="'+style+'" />'+ 1734 '</svg>'; 1735 return { 1736 className: 'leaflet-control-locate-heading', 1737 svg: svg, 1738 w: w, 1739 h: h 1740 }; 1741 }, 1742 }); 1743 1744 1745 var LocateControl = L.Control.extend({ 1746 options: { 1747 /** Position of the control */ 1748 position: 'topleft', 1749 /** The layer that the user's location should be drawn on. By default creates a new layer. */ 1750 layer: undefined, 1751 /** 1752 * Automatically sets the map view (zoom and pan) to the user's location as it updates. 1753 * While the map is following the user's location, the control is in the `following` state, 1754 * which changes the style of the control and the circle marker. 1755 * 1756 * Possible values: 1757 * - false: never updates the map view when location changes. 1758 * - 'once': set the view when the location is first determined 1759 * - 'always': always updates the map view when location changes. 1760 * The map view follows the user's location. 1761 * - 'untilPan': like 'always', except stops updating the 1762 * view if the user has manually panned the map. 1763 * The map view follows the user's location until she pans. 1764 * - 'untilPanOrZoom': (default) like 'always', except stops updating the 1765 * view if the user has manually panned the map. 1766 * The map view follows the user's location until she pans. 1767 */
1768 setView: 'untilPanOrZoom', 1769 /** Keep the current map zoom level when setting the view and only pan. */ 1770 keepCurrentZoomLevel: false, 1771 /** 1772 * This callback can be used to override the viewport tracking 1773 * This function should return a LatLngBounds object. 1774 * 1775 * For example to extend the viewport to ensure that a particular LatLng is visible: 1776 * 1777 * getLocationBounds: function(locationEvent) { 1778 * return locationEvent.bounds.extend([-33.873085, 151.219273]); 1779 * }, 1780 */ 1781 getLocationBounds: function (locationEvent) { 1782 return locationEvent.bounds; 1783 }, 1784 /** Smooth pan and zoom to the location of the marker. Only works in Leaflet 1.0+. */ 1785 flyTo: false, 1786 /** 1787 * The user location can be inside and outside the current view when the user clicks on the 1788 * control that is already active. Both cases can be configures separately. 1789 * Possible values are: 1790 * - 'setView': zoom and pan to the current location 1791 * - 'stop': stop locating and remove the location marker 1792 */ 1793 clickBehavior: { 1794 /** What should happen if the user clicks on the control while the location is within the current view. */ 1795 inView: 'stop', 1796 /** What should happen if the user clicks on the control while the location is outside the current view. */ 1797 outOfView: 'setView', 1798 /** 1799 * What should happen if the user clicks on the control while the location is within the current view 1800 * and we could be following but are not. Defaults to a special value which inherits from 'inView'; 1801 */ 1802 inViewNotFollowing: 'inView', 1803 }, 1804 /** 1805 * If set, save the map bounds just before centering to the user's 1806 * location. When control is disabled, set the view back to the 1807 * bounds that were saved. 1808 */ 1809 returnToPrevBounds: false, 1810 /** 1811 * Keep a cache of the location after the user deactivates the control. If set to false, the user has to wait 1812 * until the locate API returns a new location before they see where they are again. 1813 */ 1814 cacheLocation: true, 1815 /** If set, a circle that shows the location accuracy is drawn. */ 1816 drawCircle: true, 1817 /** If set, the marker at the users' location is drawn. */ 1818 drawMarker: true, 1819 /** If set and supported then show the compass heading */ 1820 showCompass: true, 1821 /** The class to be used to create the marker. For example L.CircleMarker or L.Marker */ 1822 markerClass: LocationMarker, 1823 /** The class us be used to create the compass bearing arrow */ 1824 compassClass: CompassMarker, 1825 /** Accuracy circle style properties. NOTE these styles should match the css animations styles */ 1826 circleStyle: { 1827 className: 'leaflet-control-locate-circle', 1828 color: '#136AEC', 1829 fillColor: '#136AEC', 1830 fillOpacity: 0.15, 1831 weight: 0 1832 }, 1833 /** Inner marker style properties. Only works if your marker class supports `setStyle`. */ 1834 markerStyle: { 1835 className: 'leaflet-control-locate-marker', 1836 color: '#fff', 1837 fillColor: '#2A93EE', 1838 fillOpacity: 1, 1839 weight: 3, 1840 opacity: 1, 1841 radius: 9 1842 }, 1843 /** Compass */ 1844 compassStyle: { 1845 fillColor: '#2A93EE', 1846 fillOpacity: 1, 1847 weight: 0, 1848 color: '#fff', 1849 opacity: 1, 1850 radius: 9, // How far is the arrow is from the center of of the marker 1851 width: 9, // Width of the arrow 1852 depth: 6 // Length of the arrow 1853 }, 1854 /** 1855 * Changes to accuracy circle and inner marker while following. 1856 * It is only necessary to provide the properties that should change. 1857 */ 1858 followCircleStyle: {}, 1859 followMarkerStyle: {
1860 // color: '#FFA500', 1861 // fillColor: '#FFB000' 1862 }, 1863 followCompassStyle: {}, 1864 /** The CSS class for the icon. For example fa-location-arrow or fa-map-marker */ 1865 icon: 'fa fa-map-marker', 1866 iconLoading: 'fa fa-spinner fa-spin', 1867 /** The element to be created for icons. For example span or i */ 1868 iconElementTag: 'span', 1869 /** Padding around the accuracy circle. */ 1870 circlePadding: [0, 0], 1871 /** Use metric units. */ 1872 metric: true, 1873 /** 1874 * This callback can be used in case you would like to override button creation behavior. 1875 * This is useful for DOM manipulation frameworks such as angular etc. 1876 * This function should return an object with HtmlElement for the button (link property) and the icon (icon property). 1877 */ 1878 createButtonCallback: function (container, options) { 1879 var link = L.DomUtil.create('a', 'leaflet-bar-part leaflet-bar-part-single', container); 1880 link.title = options.strings.title; 1881 var icon = L.DomUtil.create(options.iconElementTag, options.icon, link); 1882 return { link: link, icon: icon }; 1883 }, 1884 /** This event is called in case of any location error that is not a time out error. */ 1885 onLocationError: function(err, control) { 1886 alert(err.message); 1887 }, 1888 /** 1889 * This event is called when the user's location is outside the bounds set on the map. 1890 * The event is called repeatedly when the location changes. 1891 */ 1892 onLocationOutsideMapBounds: function(control) { 1893 control.stop(); 1894 alert(control.options.strings.outsideMapBoundsMsg); 1895 }, 1896 /** Display a pop-up when the user click on the inner marker. */ 1897 showPopup: true, 1898 strings: { 1899 title: "Show me where I am", 1900 metersUnit: "meters", 1901 feetUnit: "feet", 1902 popup: "You are within {distance} {unit} from this point", 1903 outsideMapBoundsMsg: "You seem located outside the boundaries of the map" 1904 }, 1905 /** The default options passed to leaflets locate method. */ 1906 locateOptions: { 1907 maxZoom: Infinity, 1908 watch: true, // if you overwrite this, visualization cannot be updated 1909 setView: false // have to set this to false because we have to 1910 // do setView manually 1911 } 1912 }, 1913 1914 initialize: function (options) { 1915 // set default options if nothing is set (merge one step deep) 1916 for (var i in options) { 1917 if (typeof this.options[i] === 'object') { 1918 L.extend(this.options[i], options[i]); 1919 } else { 1920 this.options[i] = options[i]; 1921 } 1922 } 1923 1924 // extend the follow marker style and circle from the normal style 1925 this.options.followMarkerStyle = L.extend({}, this.options.markerStyle, this.options.followMarkerStyle); 1926 this.options.followCircleStyle = L.extend({}, this.options.circleStyle, this.options.followCircleStyle); 1927 this.options.followCompassStyle = L.extend({}, this.options.compassStyle, this.options.followCompassStyle); 1928 }, 1929 1930 /** 1931 * Add control to map. Returns the container for the control. 1932 */ 1933 onAdd: function (map) { 1934 var container = L.DomUtil.create('div', 1935 'leaflet-control-locate leaflet-bar leaflet-control'); 1936 1937 this._layer = this.options.layer || new L.LayerGroup(); 1938 this._layer.addTo(map); 1939 this._event = undefined; 1940 this._compassHeading = null; 1941 this._prevBounds = null; 1942 1943 var linkAndIcon = this.options.createButtonCallback(container, this.options); 1944 this._link = linkAndIcon.link; 1945 this._icon = linkAndIcon.icon; 1946 1947 L.DomEvent 1948 .on(this._link, 'click', L.DomEvent.stopPropagation) 1949 .on(this._link, 'click', L.DomEvent.preventDefault) 1950 .on(this._link, 'click', this._onClick, this) 1951 .on(this._link, 'dblclick', L.DomEvent.stopPropagation); 1952 1953 this._resetVariables(); 1954 1955 this._map.on('unload', this._unload, this); 1956 1957 return container; 1958 }, 1959 1960 /** 1961 * This method is called when the user clicks on the control. 1962 */ 1963 _onClick: function() { 1964 this._justClicked = true; 1965 var wasFollowing = this._isFollowing(); 1966 this._userPanned = false;
1967 this._userZoomed = false; 1968 1969 if (this._active && !this._event) { 1970 // click while requesting 1971 this.stop(); 1972 } else if (this._active && this._event !== undefined) { 1973 var behaviors = this.options.clickBehavior; 1974 var behavior = behaviors.outOfView; 1975 if (this._map.getBounds().contains(this._event.latlng)) { 1976 behavior = wasFollowing ? behaviors.inView : behaviors.inViewNotFollowing; 1977 } 1978 1979 // Allow inheriting from another behavior 1980 if (behaviors[behavior]) { 1981 behavior = behaviors[behavior]; 1982 } 1983 1984 switch (behavior) { 1985 case 'setView': 1986 this.setView(); 1987 break; 1988 case 'stop': 1989 this.stop(); 1990 if (this.options.returnToPrevBounds) { 1991 var f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds; 1992 f.bind(this._map)(this._prevBounds); 1993 } 1994 break; 1995 } 1996 } else { 1997 if (this.options.returnToPrevBounds) { 1998 this._prevBounds = this._map.getBounds(); 1999 } 2000 this.start(); 2001 } 2002 2003 this._updateContainerStyle(); 2004 }, 2005 2006 /** 2007 * Starts the plugin: 2008 * - activates the engine 2009 * - draws the marker (if coordinates available) 2010 */ 2011 start: function() { 2012 this._activate(); 2013 2014 if (this._event) { 2015 this._drawMarker(this._map); 2016 2017 // if we already have a location but the user clicked on the control 2018 if (this.options.setView) { 2019 this.setView(); 2020 } 2021 } 2022 this._updateContainerStyle(); 2023 }, 2024 2025 /** 2026 * Stops the plugin: 2027 * - deactivates the engine 2028 * - reinitializes the button 2029 * - removes the marker 2030 */ 2031 stop: function() { 2032 this._deactivate(); 2033 2034 this._cleanClasses(); 2035 this._resetVariables(); 2036 2037 this._removeMarker(); 2038 }, 2039 2040 /** 2041 * Keep the control active but stop following the location 2042 */ 2043 stopFollowing: function() { 2044 this._userPanned = true; 2045 this._updateContainerStyle(); 2046 this._drawMarker(); 2047 }, 2048 2049 /** 2050 * This method launches the location engine. 2051 * It is called before the marker is updated, 2052 * event if it does not mean that the event will be ready. 2053 * 2054 * Override it if you want to add more functionalities. 2055 * It should set the this._active to true and do nothing if 2056 * this._active is true. 2057 */ 2058 _activate: function() { 2059 if (!this._active) { 2060 this._map.locate(this.options.locateOptions); 2061 this._active = true; 2062 2063 // bind event listeners 2064 this._map.on('locationfound', this._onLocationFound, this); 2065 this._map.on('locationerror', this._onLocationError, this); 2066 this._map.on('dragstart', this._onDrag, this); 2067 this._map.on('zoomstart', this._onZoom, this); 2068 this._map.on('zoomend', this._onZoomEnd, this); 2069 if (this.options.showCompass) { 2070 if ('ondeviceorientationabsolute' in window) { 2071 L.DomEvent.on(window, 'deviceorientationabsolute', this._onDeviceOrientation, this); 2072 } else if ('ondeviceorientation' in window) { 2073 L.DomEvent.on(window, 'deviceorientation', this._onDeviceOrientation, this); 2074 } 2075 } 2076 } 2077 }, 2078 2079 /** 2080 * Called to stop the location engine. 2081 * 2082 * Override it to shutdown any functionalities you added on start. 2083 */ 2084 _deactivate: function() { 2085 this._map.stopLocate(); 2086 this._active = false;
2087 2088 if (!this.options.cacheLocation) { 2089 this._event = undefined; 2090 } 2091 2092 // unbind event listeners 2093 this._map.off('locationfound', this._onLocationFound, this); 2094 this._map.off('locationerror', this._onLocationError, this); 2095 this._map.off('dragstart', this._onDrag, this); 2096 this._map.off('zoomstart', this._onZoom, this); 2097 this._map.off('zoomend', this._onZoomEnd, this); 2098 if (this.options.showCompass) { 2099 this._compassHeading = null; 2100 if ('ondeviceorientationabsolute' in window) { 2101 L.DomEvent.off(window, 'deviceorientationabsolute', this._onDeviceOrientation, this); 2102 } else if ('ondeviceorientation' in window) { 2103 L.DomEvent.off(window, 'deviceorientation', this._onDeviceOrientation, this); 2104 } 2105 } 2106 }, 2107 2108 /** 2109 * Zoom (unless we should keep the zoom level) and an to the current view. 2110 */ 2111 setView: function() { 2112 this._drawMarker(); 2113 if (this._isOutsideMapBounds()) { 2114 this._event = undefined; // clear the current location so we can get back into the bounds 2115 this.options.onLocationOutsideMapBounds(this); 2116 } else { 2117 if (this.options.keepCurrentZoomLevel) { 2118 var f = this.options.flyTo ? this._map.flyTo : this._map.panTo; 2119 f.bind(this._map)([this._event.latitude, this._event.longitude]); 2120 } else { 2121 var f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds; 2122 // Ignore zoom events while setting the viewport as these would stop following 2123 this._ignoreEvent = true; 2124 f.bind(this._map)(this.options.getLocationBounds(this._event), { 2125 padding: this.options.circlePadding, 2126 maxZoom: this.options.locateOptions.maxZoom 2127 }); 2128 L.Util.requestAnimFrame(function(){ 2129 // Wait until after the next animFrame because the flyTo can be async 2130 this._ignoreEvent = false; 2131 }, this); 2132 2133 } 2134 } 2135 }, 2136 2137 /** 2138 * 2139 */ 2140 _drawCompass: function() { 2141 if (!this._event) { 2142 return; 2143 } 2144 2145 var latlng = this._event.latlng; 2146 2147 if (this.options.showCompass && latlng && this._compassHeading !== null) { 2148 var cStyle = this._isFollowing() ? this.options.followCompassStyle : this.options.compassStyle; 2149 if (!this._compass) { 2150 this._compass = new this.options.compassClass(latlng, this._compassHeading, cStyle).addTo(this._layer); 2151 } else { 2152 this._compass.setLatLng(latlng); 2153 this._compass.setHeading(this._compassHeading); 2154 // If the compassClass can be updated with setStyle, update it. 2155 if (this._compass.setStyle) { 2156 this._compass.setStyle(cStyle); 2157 } 2158 } 2159 // 2160 } 2161 if (this._compass && (!this.options.showCompass || this._compassHeading === null)) { 2162 this._compass.removeFrom(this._layer); 2163 this._compass = null; 2164 } 2165 }, 2166 2167 /** 2168 * Draw the marker and accuracy circle on the map. 2169 * 2170 * Uses the event retrieved from onLocationFound from the map. 2171 */ 2172 _drawMarker: function() { 2173 if (this._event.accuracy === undefined) { 2174 this._event.accuracy = 0; 2175 } 2176 2177 var radius = this._event.accuracy; 2178 var latlng = this._event.latlng; 2179 2180 // circle with the radius of the location's accuracy 2181 if (this.options.drawCircle) { 2182 var style = this._isFollowing() ? this.options.followCircleStyle : this.options.circleStyle; 2183 2184 if (!this._circle) { 2185 this._circle = L.circle(latlng, radius, style).addTo(this._layer); 2186 } else { 2187 this._circle.setLatLng(latlng).setRadius(radius).setStyle(style); 2188 } 2189 } 2190 2191 var distance, unit; 2192 if (this.options.metric) { 2193 distance = radius.toFixed(0); 2194 unit = this.options.strings.metersUnit; 2195 } else { 2196 distance = (radius * 3.2808399).toFixed(0); 2197 unit = this.options.strings.feetUnit; 2198 } 2199 2200 // small inner marker 2201 if (this.options.drawMarker) { 2202 var mStyle = this._isFollowing() ? this.options.followMarkerStyle : this.options.markerStyle; 2203 if (!this._marker) { 2204 this._marker = new this.options.markerClass(latlng, mStyle).addTo(this._layer); 2205 } else { 2206 this._marker.setLatLng(latlng); 2207 // If the markerClass can be updated with setStyle, update it. 2208 if (this._marker.setStyle) { 2209 this._marker.setStyle(mStyle); 2210 } 2211 } 2212 } 2213 2214 this._drawCompass(); 2215 2216 var t = this.options.strings.popup; 2217 if (this.options.showPopup && t && this._marker) { 2218 this._marker 2219 .bindPopup(L.Util.template(t, {distance: distance, unit: unit})) 2220 ._popup.setLatLng(latlng); 2221 } 2222 if (this.options.showPopup && t && this._compass) { 2223 this._compass 2224 .bindPopup(L.Util.template(t, {distance: distance, unit: unit})) 2225 ._popup.setLatLng(latlng); 2226 } 2227 }, 2228 2229 /** 2230 * Remove the marker from map. 2231 */ 2232 _removeMarker: function() { 2233 this._layer.clearLayers(); 2234 this._marker = undefined; 2235 this._circle = undefined; 2236 }, 2237 2238 /** 2239 * Unload the plugin and all event listeners. 2240 * Kind of the opposite of onAdd. 2241 */ 2242 _unload: function() { 2243 this.stop(); 2244 this._map.off('unload', this._unload, this); 2245 }, 2246 2247 /** 2248 * Sets the compass heading 2249 */ 2250 _setCompassHeading: function(angle) { 2251 if (!isNaN(parseFloat(angle)) && isFinite(angle)) { 2252 angle = Math.round(angle); 2253 2254 this._compassHeading = angle;
2255 L.Util.requestAnimFrame(this._drawCompass, this); 2256 } else { 2257 this._compassHeading = null; 2258 } 2259 }, 2260 2261 /** 2262 * If the compass fails calibration just fail safely and remove the compass 2263 */ 2264 _onCompassNeedsCalibration: function() { 2265 this._setCompassHeading(); 2266 }, 2267 2268 /** 2269 * Process and normalise compass events 2270 */ 2271 _onDeviceOrientation: function(e) { 2272 if (!this._active) { 2273 return; 2274 } 2275 2276 if (e.webkitCompassHeading) { 2277 // iOS 2278 this._setCompassHeading(e.webkitCompassHeading); 2279 } else if (e.absolute && e.alpha) { 2280 // Android 2281 this._setCompassHeading(360 - e.alpha) 2282 } 2283 }, 2284 2285 /** 2286 * Calls deactivate and dispatches an error. 2287 */ 2288 _onLocationError: function(err) { 2289 // ignore time out error if the location is watched 2290 if (err.code == 3 && this.options.locateOptions.watch) { 2291 return; 2292 } 2293 2294 this.stop(); 2295 this.options.onLocationError(err, this); 2296 }, 2297 2298 /** 2299 * Stores the received event and updates the marker. 2300 */ 2301 _onLocationFound: function(e) { 2302 // no need to do anything if the location has not changed 2303 if (this._event && 2304 (this._event.latlng.lat === e.latlng.lat && 2305 this._event.latlng.lng === e.latlng.lng && 2306 this._event.accuracy === e.accuracy)) { 2307 return; 2308 } 2309 2310 if (!this._active) { 2311 // we may have a stray event 2312 return; 2313 } 2314 2315 this._event = e; 2316 2317 this._drawMarker(); 2318 this._updateContainerStyle(); 2319 2320 switch (this.options.setView) { 2321 case 'once': 2322 if (this._justClicked) { 2323 this.setView(); 2324 } 2325 break; 2326 case 'untilPan': 2327 if (!this._userPanned) { 2328 this.setView(); 2329 } 2330 break; 2331 case 'untilPanOrZoom': 2332 if (!this._userPanned && !this._userZoomed) { 2333 this.setView(); 2334 } 2335 break; 2336 case 'always': 2337 this.setView(); 2338 break; 2339 case false: 2340 // don't set the view 2341 break; 2342 } 2343 2344 this._justClicked = false; 2345 }, 2346 2347 /** 2348 * When the user drags. Need a separate event so we can bind and unbind event listeners. 2349 */ 2350 _onDrag: function() { 2351 // only react to drags once we have a location 2352 if (this._event && !this._ignoreEvent) { 2353 this._userPanned = true; 2354 this._updateContainerStyle(); 2355 this._drawMarker(); 2356 } 2357 }, 2358 2359 /** 2360 * When the user zooms. Need a separate event so we can bind and unbind event listeners. 2361 */ 2362 _onZoom: function() { 2363 // only react to drags once we have a location 2364 if (this._event && !this._ignoreEvent) { 2365 this._userZoomed = true; 2366 this._updateContainerStyle(); 2367 this._drawMarker(); 2368 } 2369 }, 2370 2371 /** 2372 * After a zoom ends update the compass and handle sideways zooms 2373 */ 2374 _onZoomEnd: function() { 2375 if (this._event) { 2376 this._drawCompass(); 2377 } 2378 2379 if (this._event && !this._ignoreEvent) { 2380 // If we have zoomed in and out and ended up sideways treat it as a pan 2381 if (this._marker && !this._map.getBounds().pad(-.3).contains(this._marker.getLatLng())) { 2382 this._userPanned = true; 2383 this._updateContainerStyle(); 2384 this._drawMarker(); 2385 } 2386 } 2387 }, 2388 2389 /** 2390 * Compute whether the map is following the user location with pan and zoom. 2391 */ 2392 _isFollowing: function() { 2393 if (!this._active) { 2394 return false;
2395 } 2396 2397 if (this.options.setView === 'always') { 2398 return true; 2399 } else if (this.options.setView === 'untilPan') { 2400 return !this._userPanned; 2401 } else if (this.options.setView === 'untilPanOrZoom') { 2402 return !this._userPanned && !this._userZoomed; 2403 } 2404 }, 2405 2406 /** 2407 * Check if location is in map bounds 2408 */ 2409 _isOutsideMapBounds: function() { 2410 if (this._event === undefined) { 2411 return false; 2412 } 2413 return this._map.options.maxBounds && 2414 !this._map.options.maxBounds.contains(this._event.latlng); 2415 }, 2416 2417 /** 2418 * Toggles button class between following and active. 2419 */ 2420 _updateContainerStyle: function() { 2421 if (!this._container) { 2422 return; 2423 } 2424 2425 if (this._active && !this._event) { 2426 // active but don't have a location yet 2427 this._setClasses('requesting'); 2428 } else if (this._isFollowing()) { 2429 this._setClasses('following'); 2430 } else if (this._active) { 2431 this._setClasses('active'); 2432 } else { 2433 this._cleanClasses(); 2434 } 2435 }, 2436 2437 /** 2438 * Sets the CSS classes for the state. 2439 */ 2440 _setClasses: function(state) { 2441 if (state == 'requesting') { 2442 removeClasses(this._container, "active following"); 2443 addClasses(this._container, "requesting"); 2444 2445 removeClasses(this._icon, this.options.icon); 2446 addClasses(this._icon, this.options.iconLoading); 2447 } else if (state == 'active') { 2448 removeClasses(this._container, "requesting following"); 2449 addClasses(this._container, "active"); 2450 2451 removeClasses(this._icon, this.options.iconLoading); 2452 addClasses(this._icon, this.options.icon); 2453 } else if (state == 'following') { 2454 removeClasses(this._container, "requesting"); 2455 addClasses(this._container, "active following"); 2456 2457 removeClasses(this._icon, this.options.iconLoading); 2458 addClasses(this._icon, this.options.icon); 2459 } 2460 }, 2461 2462 /** 2463 * Removes all classes from button. 2464 */ 2465 _cleanClasses: function() { 2466 L.DomUtil.removeClass(this._container, "requesting"); 2467 L.DomUtil.removeClass(this._container, "active"); 2468 L.DomUtil.removeClass(this._container, "following"); 2469 2470 removeClasses(this._icon, this.options.iconLoading); 2471 addClasses(this._icon, this.options.icon); 2472 }, 2473 2474 /** 2475 * Reinitializes state variables. 2476 */ 2477 _resetVariables: function() { 2478 // whether locate is active or not 2479 this._active = false; 2480 2481 // true if the control was clicked for the first time 2482 // we need this so we can pan and zoom once we have the location 2483 this._justClicked = false; 2484 2485 // true if the user has panned the map after clicking the control 2486 this._userPanned = false; 2487 2488 // true if the user has zoomed the map after clicking the control 2489 this._userZoomed = false; 2490 } 2491 }); 2492 2493 L.control.locate = function (options) { 2494 return new L.Control.Locate(options); 2495 }; 2496 2497 return LocateControl; 2498}, window));
vendor: 564,710 bytes, lines 2499-2514
2499(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(_dereq_,module,exports){function corslite(url,callback,cors){var sent=false;if(typeof window.XMLHttpRequest==="undefined"){return callback(Error("Browser not supported"))}if(typeof cors==="undefined"){var m=url.match(/^\s*https?:\/\/[^\/]*/);cors=m&&m[0]!==location.protocol+"//"+location.hostname+(location.port?":"+location.port:"")}var x=new window.XMLHttpRequest;function isSuccessful(status){return status>=200&&status<300||status===304}if(cors&&!("withCredentials"in x)){x=new window.XDomainRequest;var original=callback;callback=function(){if(sent){original.apply(this,arguments)}else{var that=this,args=arguments;setTimeout(function(){original.apply(that,args)},0)}}}function loaded(){if(x.status===undefined||isSuccessful(x.status))callback.call(x,null,x);else callback.call(x,x,null)}if("onload"in x){x.onload=loaded}else{x.onreadystatechange=function readystate(){if(x.readyState===4){loaded()}}}x.onerror=function error(evt){callback.call(this,evt||true,null);callback=function(){}};x.onprogress=function(){};x.ontimeout=function(evt){callback.call(this,evt,null);callback=function(){}};x.onabort=function(evt){callback.call(this,evt,null);callback=function(){}};x.open("GET",url,true);x.send(null);sent=true;return x}if(typeof module!=="undefined")module.exports=corslite},{}],2:[function(_dereq_,module,exports){"use strict";var polyline={};function py2_round(value){return Math.floor(Math.abs(value)+.5)*Math.sign(value)}function encode(current,previous,factor){current=py2_round(current*factor);previous=py2_round(previous*factor);var coordinate=current-previous;coordinate<<=1;if(current-previous<0){coordinate=~coordinate}var output="";while(coordinate>=32){output+=String.fromCharCode((32|coordinate&31)+63);coordinate>>=5}output+=String.fromCharCode(coordinate+63);return output}polyline.decode=function(str,precision){var index=0,lat=0,lng=0,coordinates=[],shift=0,result=0,byte=null,latitude_change,longitude_change,factor=Math.pow(10,precision||5);while(index<str.length){byte=null;shift=0;result=0;do{byte=str.charCodeAt(index++)-63;result|=(byte&31)<<shift;shift+=5}while(byte>=32);latitude_change=result&1?~(result>>1):result>>1;shift=result=0;do{byte=str.charCodeAt(index++)-63;result|=(byte&31)<<shift;shift+=5}while(byte>=32);longitude_change=result&1?~(result>>1):result>>1;lat+=latitude_change;lng+=longitude_change;coordinates.push([lat/factor,lng/factor])}return coordinates};polyline.encode=function(coordinates,precision){if(!coordinates.length){return""}var factor=Math.pow(10,precision||5),output=encode(coordinates[0][0],0,factor)+encode(coordinates[0][1],0,factor);for(var i=1;i<coordinates.length;i++){var a=coordinates[i],b=coordinates[i-1];output+=encode(a[0],b[0],factor);output+=encode(a[1],b[1],factor)}return output};function flipped(coords){var flipped=[];for(var i=0;i<coords.length;i++){flipped.push(coords[i].slice().reverse())}return flipped}polyline.fromGeoJSON=function(geojson,precision){if(geojson&&geojson.type==="Feature"){geojson=geojson.geometry}if(!geojson||geojson.type!=="LineString"){throw new Error("Input must be a GeoJSON LineString")}return polyline.encode(flipped(geojson.coordinates),precision)};polyline.toGeoJSON=function(str,precision){var coords=polyline.decode(str,precision);return{type:"LineString",coordinates:flipped(coords)}};if(typeof module==="object"&&module.exports){module.exports=polyline}},{}],3:[function(_dereq_,module,exports){var languages=_dereq_("./languages");var instructions=languages.instructions;var grammars=languages.grammars;var abbreviations=languages.abbreviations;module.exports=function(version){Object.keys(instructions).forEach(function(code){if(!instructions[code][version]){throw"invalid version "+version+": "+code+" not supported"}});return{capitalizeFirstLetter:function(language,string){return string.charAt(0).toLocaleUpperCase(language)+string.slice(1)},ordinalize:function(language,number){if(!language)throw new Error("No language code provided");return instructions[language][version].constants.ordinalize[number.toString()]||""},directionFromDegree:function(language,degree){if(!language)throw new Error("No language code provided");if(!degree&°ree!==0){return""}else if(degree>=0&°ree<=20){return instructions[language][version].constants.direction.north}else if(degree>20&°ree<70){return instructions[language][version].constants.direction.northeast}else if(degree>=70&°ree<=110){return instructions[language][version].constants.direction.east}else if(degree>110&°ree<160){return instructions[language][version].constants.direction.southeast}else if(degree>=160&°ree<=200){return instructions[language][version].constants.direction.south}else if(degree>200&°ree<250){return instructions[language][version].constants.direction.southwest}else if(degree>=250&°ree<=290){return instructions[language][version].constants.direction.west}else if(degree>290&°ree<340){return instructions[language][version].constants.direction.northwest}else if(degree>=340&°ree<=360){return instructions[language][version].constants.direction.north}else{throw new Error("Degree "+degree+" invalid")}},laneConfig:function(step){if(!step.intersections||!step.intersections[0].lanes)throw new Error("No lanes object");var config=[];var currentLaneValidity=null;step.intersections[0].lanes.forEach(function(lane){if(currentLaneValidity===null||currentLaneValidity!==lane.valid){if(lane.valid){config.push("o")}else{config.push("x")}currentLaneValidity=lane.valid}});return config.join("")},getWayName:function(language,step,options){var classes=options?options.classes||[]:[];if(typeof step!=="object")throw new Error("step must be an Object");if(!language)throw new Error("No language code provided");if(!Array.isArray(classes))throw new Error("classes must be an Array or undefined");var wayName;var name=step.name||"";var ref=(step.ref||"").split(";")[0];if(name===step.ref){name=""}name=name.replace(" ("+step.ref+")","");var wayMotorway=classes.indexOf("motorway")!==-1;if(name&&ref&&name!==ref&&!wayMotorway){var phrase=instructions[language][version].phrase["name and ref"]||instructions.en[version].phrase["name and ref"];wayName=this.tokenize(language,phrase,{name:name,ref:ref},options)}else if(name&&ref&&wayMotorway&&/\d/.test(ref)){wayName=options&&options.formatToken?options.formatToken("ref",ref):ref}else if(!name&&ref){wayName=options&&options.formatToken?options.formatToken("ref",ref):ref}else{wayName=options&&options.formatToken?options.formatToken("name",name):name}return wayName},compile:function(language,step,opts){if(!language)throw new Error("No language code provided");if(languages.supportedCodes.indexOf(language)===-1)throw new Error("language code "+language+" not loaded");if(!step.maneuver)throw new Error("No step maneuver provided");var options=opts||{};var type=step.maneuver.type;var modifier=step.maneuver.modifier;var mode=step.mode;var side=step.driving_side;if(!type){throw new Error("Missing step maneuver type")}if(type!=="depart"&&type!=="arrive"&&!modifier){throw new Error("Missing step maneuver modifier")}if(!instructions[language][version][type]){console.log("Encountered unknown instruction type: "+type);type="turn"}var instructionObject;if(instructions[language][version].modes[mode]){instructionObject=instructions[language][version].modes[mode]}else{var omitSide=type==="off ramp"&&modifier.indexOf(side)>=0;if(instructions[language][version][type][modifier]&&!omitSide){instructionObject=instructions[language][version][type][modifier]}else{instructionObject=instructions[language][version][type].default}}var laneInstruction;switch(type){case"use lane":laneInstruction=instructions[language][version].constants.lanes[this.laneConfig(step)];if(!laneInstruction){instructionObject=instructions[language][version]["use lane"].no_lanes}break;case"rotary":case"roundabout":if(step.rotary_name&&step.maneuver.exit&&instructionObject.name_exit){instructionObject=instructionObject.name_exit}else if(step.rotary_name&&instructionObject.name){instructionObject=instructionObject.name}else if(step.maneuver.exit&&instructionObject.exit){instructionObject=instructionObject.exit}else{instructionObject=instructionObject.default}break;default:}var wayName=this.getWayName(language,step,options);var instruction;if(step.destinations&&step.exits&&instructionObject.exit_destination){instruction=instructionObject.exit_destination}else if(step.destinations&&instructionObject.destination){instruction=instructionObject.destination}else if(step.exits&&instructionObject.exit){instruction=instructionObject.exit}else if(wayName&&instructionObject.name){instruction=instructionObject.name}else if(options.waypointName&&instructionObject.named){instruction=instructionObject.named}else{instruction=instructionObject.default}var destinations=step.destinations&&step.destinations.split(": ");var destinationRef=destinations&&destinations[0].split(",")[0];var destination=destinations&&destinations[1]&&destinations[1].split(",")[0];var firstDestination;if(destination&&destinationRef){firstDestination=destinationRef+": "+destination}else{firstDestination=destinationRef||destination||""}var nthWaypoint=options.legIndex>=0&&options.legIndex!==options.legCount-1?this.ordinalize(language,options.legIndex+1):"";var replaceTokens={way_name:wayName,destination:firstDestination,exit:(step.exits||"").split(";")[0],exit_number:this.ordinalize(language,step.maneuver.exit||1),rotary_name:step.rotary_name,lane_instruction:laneInstruction,modifier:instructions[language][version].constants.modifier[modifier],direction:this.directionFromDegree(language,step.maneuver.bearing_after),nth:nthWaypoint,waypoint_name:options.waypointName};return this.tokenize(language,instruction,replaceTokens,options)},grammarize:function(language,name,grammar){if(!language)throw new Error("No language code provided");if(name&&grammar&&grammars&&grammars[language]&&grammars[language][version]){var rules=grammars[language][version][grammar];if(rules){var n=" "+name+" ";var flags=grammars[language].meta.regExpFlags||"";rules.forEach(function(rule){var re=new RegExp(rule[0],flags);n=n.replace(re,rule[1])});return n.trim()}}return name},abbreviations:abbreviations,tokenize:function(language,instruction,tokens,options){if(!language)throw new Error("No language code provided");var that=this;var startedWithToken=false;var output=instruction.replace(/\{(\w+)(?::(\w+))?\}/g,function(token,tag,grammar,offset){var value=tokens[tag];if(typeof value==="undefined"){return token}value=that.grammarize(language,value,grammar);if(offset===0&&instructions[language].meta.capitalizeFirstLetter){startedWithToken=true;value=that.capitalizeFirstLetter(language,value)}if(options&&options.formatToken){value=options.formatToken(tag,value)}return value}).replace(/ {2}/g," ");if(!startedWithToken&&instructions[language].meta.capitalizeFirstLetter){return this.capitalizeFirstLetter(language,output)}return output}}}},{"./languages":4}],4:[function(_dereq_,module,exports){var instructionsDa=_dereq_("./languages/translations/da.json");var instructionsDe=_dereq_("./languages/translations/de.json");var instructionsEn=_dereq_("./languages/translations/en.json");var instructionsEo=_dereq_("./languages/translations/eo.json");var instructionsEs=_dereq_("./languages/translations/es.json");var instructionsEsEs=_dereq_("./languages/translations/es-ES.json");var instructionsFi=_dereq_("./languages/translations/fi.json");var instructionsFr=_dereq_("./languages/translations/fr.json");var instructionsHe=_dereq_("./languages/translations/he.json");var instructionsId=_dereq_("./languages/translations/id.json");var instructionsIt=_dereq_("./languages/translations/it.json");var instructionsKo=_dereq_("./languages/translations/ko.json");var instructionsMy=_dereq_("./languages/translations/my.json");var instructionsNl=_dereq_("./languages/translations/nl.json");var instructionsNo=_dereq_("./languages/translations/no.json");var instructionsPl=_dereq_("./languages/translations/pl.json");var instructionsPtBr=_dereq_("./languages/translations/pt-BR.json");var instructionsPtPt=_dereq_("./languages/translations/pt-PT.json");var instructionsRo=_dereq_("./languages/translations/ro.json");var instructionsRu=_dereq_("./languages/translations/ru.json");var instructionsSv=_dereq_("./languages/translations/sv.json");var instructionsTr=_dereq_("./languages/translations/tr.json");var instructionsUk=_dereq_("./languages/translations/uk.json");var instructionsVi=_dereq_("./languages/translations/vi.json");var instructionsZhHans=_dereq_("./languages/translations/zh-Hans.json");var grammarFr=_dereq_("./languages/grammar/fr.json");var grammarRu=_dereq_("./languages/grammar/ru.json");var abbreviationsBg=_dereq_("./languages/abbreviations/bg.json");var abbreviationsCa=_dereq_("./languages/abbreviations/ca.json");var abbreviationsDa=_dereq_("./languages/abbreviations/da.json");var ebbreviationsDe=_dereq_("./languages/abbreviations/de.json");var abbreviationsEn=_dereq_("./languages/abbreviations/en.json");var abbreviationsEs=_dereq_("./languages/abbreviations/es.json");var abbreviationsFr=_dereq_("./languages/abbreviations/fr.json");var abbreviationsHe=_dereq_("./languages/abbreviations/he.json");var abbreviationsHu=_dereq_("./languages/abbreviations/hu.json");var abbreviationsLt=_dereq_("./languages/abbreviations/lt.json");var abbreviationsNl=_dereq_("./languages/abbreviations/nl.json");var abbreviationsRu=_dereq_("./languages/abbreviations/ru.json");var abbreviationsSl=_dereq_("./languages/abbreviations/sl.json");var abbreviationsSv=_dereq_("./languages/abbreviations/sv.json");var abbreviationsUk=_dereq_("./languages/abbreviations/uk.json");var abbreviationsVi=_dereq_("./languages/abbreviations/vi.json");var instructions={da:instructionsDa,de:instructionsDe,en:instructionsEn,eo:instructionsEo,es:instructionsEs,"es-ES":instructionsEsEs,fi:instructionsFi,fr:instructionsFr,he:instructionsHe,id:instructionsId,it:instructionsIt,ko:instructionsKo,my:instructionsMy,nl:instructionsNl,no:instructionsNo,pl:instructionsPl,"pt-BR":instructionsPtBr,"pt-PT":instructionsPtPt,ro:instructionsRo,ru:instructionsRu,sv:instructionsSv,tr:instructionsTr,uk:instructionsUk,vi:instructionsVi,"zh-Hans":instructionsZhHans};var grammars={fr:grammarFr,ru:grammarRu};var abbreviations={bg:abbreviationsBg,ca:abbreviationsCa,da:abbreviationsDa,de:ebbreviationsDe,en:abbreviationsEn,es:abbreviationsEs,fr:abbreviationsFr,he:abbreviationsHe,hu:abbreviationsHu,lt:abbreviationsLt,nl:abbreviationsNl,ru:abbreviationsRu,sl:abbreviationsSl,sv:abbreviationsSv,uk:abbreviationsUk,vi:abbreviationsVi};module.exports={supportedCodes:Object.keys(instructions),instructions:instructions,grammars:grammars,abbreviations:abbreviations}},{"./languages/abbreviations/bg.json":5,"./languages/abbreviations/ca.json":6,"./languages/abbreviations/da.json":7,"./languages/abbreviations/de.json":8,"./languages/abbreviations/en.json":9,"./languages/abbreviations/es.json":10,"./languages/abbreviations/fr.json":11,"./languages/abbreviations/he.json":12,"./languages/abbreviations/hu.json":13,"./languages/abbreviations/lt.json":14,"./languages/abbreviations/nl.json":15,"./languages/abbreviations/ru.json":16,"./languages/abbreviations/sl.json":17,"./languages/abbreviations/sv.json":18,"./languages/abbreviations/uk.json":19,"./languages/abbreviations/vi.json":20,"./languages/grammar/fr.json":21,"./languages/grammar/ru.json":22,"./languages/translations/da.json":23,"./languages/translations/de.json":24,"./languages/translations/en.json":25,"./languages/translations/eo.json":26,"./languages/translations/es-ES.json":27,"./languages/translations/es.json":28,"./languages/translations/fi.json":29,"./languages/translations/fr.json":30,"./languages/translations/he.json":31,"./languages/translations/id.json":32,"./languages/translations/it.json":33,"./languages/translations/ko.json":34,"./languages/translations/my.json":35,"./languages/translations/nl.json":36,"./languages/translations/no.json":37,"./languages/translations/pl.json":38,"./languages/translations/pt-BR.json":39,"./languages/translations/pt-PT.json":40,"./languages/translations/ro.json":41,"./languages/translations/ru.json":42,"./languages/translations/sv.json":43,"./languages/translations/tr.json":44,"./languages/translations/uk.json":45,"./languages/translations/vi.json":46,"./languages/translations/zh-Hans.json":47}],5:[function(_dereq_,module,exports){module.exports={abbreviations:{"междÑнаÑоден":"Ðежд","ÑÑаÑÑи":"СÑÑÑ","вÑзел":"ÐÑз","пазаÑ":"Mkt","ÑвеÑиÑвеÑи":"СвСв","ÑеÑÑÑа":"ÑеÑ","ÑилÑм":"Ум","апаÑÑаменÑи":"ап","езеÑо":"Ðз","ÑвеÑи":"Св","ÑенÑÑÑ":"Ц-Ñ","паÑк":"Ðк","маÑÑÑÑÑ":"Ð-Ñ","плоÑад":"Ðл","наÑионален":"ÐаÑ","ÑÑилиÑе":"УÑ","Ñека":"Рек","поÑок":"Ð-к","Ñайон":"Ð -н","кÑепоÑÑ":"Ð-Ñ","памеÑник":"Ðам","ÑнивеÑÑиÑеÑ":"Уни","ÐÑÑÑ ":"ÐÑ","ÑоÑка":"ТоÑ","планина":"Ðл","Ñело":"Ñ.","виÑоÑини":"виÑ","младÑи":"Ðл","ÑÑанÑиÑ":"С-Ñ","пÑÐ¾Ñ Ð¾Ð´":"ÐÑÐ¾Ñ ","баÑа":"ÐÑ"},classifications:{"ÑоÑиÑане":"ШоÑ","плавен":"Ðл","мÑÑÑо":"ÐÑ","ÑеÑаÑа":"ТеÑ","магиÑÑÑала":"Ð-ла","плоÑад":"Ðл","пеÑ":"ÐеÑ","залив":"Ð-в","пÑÑека":"Ð-ка","плаÑно":"Ðл","ÑлиÑа":"Ул","алеÑ":"Ðл","пеÑÐµÑ Ð¾Ð´Ð½Ð°":"ÐеÑ","ÑоÑка":"ТÑ","задминаване":"Ðадм","кÑÑгово":"ÐÑ","вÑÑÑ ":"ÐÑ","ÑÑд":"Сд","бÑлеваÑд":"ÐÑл","пÑÑ":"ÐÑÑ","ÑкоÑоÑÑна":"СкоÑ","моÑÑ":"Ðо"},directions:{"ÑевеÑозапад":"СÐ","ÑевеÑоизÑок":"СÐ","Ñгозапад":"ЮÐ","ÑгоизÑок":"ЮÐ","ÑевеÑ":"С","изÑок":"Ð","Ñг":"Ю"}}},{}],6:[function(_dereq_,module,exports){module.exports={abbreviations:{comunicacions:"Com.","entitat de població":"Nucli",disseminat:"Diss.","cap de municipi":"Cap",indret:"Indr.",comarca:"Cca.","relleu del litoral":"Lit.",municipi:"Mun.","xarxa hidrogrà fica":"Curs Fluv.",equipament:"Equip.",orografia:"Orogr.",barri:"Barri","edificació":"Edif.","edificació històrica":"Edif. Hist.","entitat descentralitzada":"E.M.D.","element hidrogrà fic":"Hidr."},classifications:{rotonda:"Rot.",carrerada:"Ca.","jardÃ":"J.",paratge:"Pge.",pont:"Pont",lloc:"Lloc",rambla:"Rbla.",cases:"Cses.",barranc:"Bnc.",plana:"Plana","polÃgon":"Pol.",muralla:"Mur.","enllaç":"Ellaç","antiga carretera":"Actra",glorieta:"Glor.",autovia:"Autv.","prolongació":"Prol.","calçada":"Cda.",carretera:"Ctra.",pujada:"Pda.",torrent:"T.",disseminat:"Disse",barri:"B.","cinturó":"Cinto",passera:"Psera",sender:"Send.",carrer:"C.","sèquia":"Sèq.",blocs:"Bloc",rambleta:"Rblt.",partida:"Par.",costa:"Cos.",sector:"Sec.","corraló":"Crral","urbanització":"Urb.",autopista:"Autp.",grup:"Gr.",platja:"Pja.",jardins:"J.",complex:"Comp.",portals:"Ptals",finca:"Fin.",travessera:"Trav.","plaça":"Pl.",travessia:"Trv.","polÃgon industrial":"PI.",passatge:"Ptge.",apartaments:"Apmt.",mirador:"Mira.",antic:"Antic","accés":"Acc.","colònia":"Col.",corriol:"Crol.",portal:"Ptal.",porta:"Pta.",port:"Port","carreró":"Cró.",riera:"Ra.","circumval·lació":"Cval.",baixada:"Bda.",placeta:"Plta.",escala:"Esc.","gran via":"GV",rial:"Rial",conjunt:"Conj.",avinguda:"Av.",esplanada:"Esp.",cantonada:"Cant.",ronda:"Rda.",corredor:"Cdor.",drecera:"Drec.","passadÃs":"PdÃs.",viaducte:"Vdct.",passeig:"Pg.","veïnat":"Veï."},directions:{sudest:"SE",sudoest:"SO",nordest:"NE",nordoest:"NO",est:"E",nord:"N",oest:"O",sud:"S"}}},{}],7:[function(_dereq_,module,exports){module.exports={abbreviations:{skole:"Sk.",ved:"v.",centrum:"C.",sankt:"Skt.",vestre:"v.",hospital:"Hosp.","stræde":"Str.",nordre:"Nr.",plads:"Pl.",universitet:"Uni.","vænge":"vg.",station:"St."},classifications:{avenue:"Ave",gammel:"Gl.",dronning:"Dronn.","sønder":"Sdr.","nørre":"Nr.",vester:"V.",vestre:"V.","øster":"Ã.","østre":"Ã.",boulevard:"Boul."},directions:{"sydøst":"SÃ",nordvest:"NV",syd:"S","nordøst":"NÃ",sydvest:"SV",vest:"V",nord:"N","øst":"Ã"}}},{}],8:[function(_dereq_,module,exports){module.exports={abbreviations:{},classifications:{},directions:{osten:"O",nordosten:"NO","süden":"S",nordwest:"NW",norden:"N","südost":"SO","südwest":"SW",westen:"W"}}},{}],9:[function(_dereq_,module,exports){module.exports={abbreviations:{square:"Sq",centre:"Ctr",sister:"Sr",lake:"Lk",fort:"Ft",route:"Rte",william:"Wm",national:"Natâl",junction:"Jct",center:"Ctr",saint:"St",saints:"SS",station:"Sta",mount:"Mt",junior:"Jr",mountain:"Mtn",heights:"Hts",university:"Univ",school:"Sch",international:"Intâl",apartments:"Apts",crossing:"Xing",creek:"Crk",township:"Twp",downtown:"Dtwn",father:"Fr",senior:"Sr",point:"Pt",river:"Riv",market:"Mkt",village:"Vil",park:"Pk",memorial:"Mem"},classifications:{place:"Pl",circle:"Cir",bypass:"Byp",motorway:"Mwy",crescent:"Cres",road:"Rd",cove:"Cv",lane:"Ln",square:"Sq",street:"St",freeway:"Fwy",walk:"Wk",plaza:"Plz",parkway:"Pky",avenue:"Ave",pike:"Pk",drive:"Dr",highway:"Hwy",footway:"Ftwy",point:"Pt",court:"Ct",terrace:"Ter",walkway:"Wky",alley:"Aly",expressway:"Expy",bridge:"Br",boulevard:"Blvd",turnpike:"Tpk"},directions:{southeast:"SE",northwest:"NW",south:"S",west:"W",southwest:"SW",north:"N",east:"E",northeast:"NE"}}},{}],10:[function(_dereq_,module,exports){module.exports={abbreviations:{segunda:"2ª",octubre:"8bre",doctores:"Drs",doctora:"Dra",internacional:"Intl",doctor:"Dr",segundo:"2º","señorita":"Srta",doctoras:"Drs",primera:"1ª",primero:"1º",san:"S",colonia:"Col","doña":"Dña",septiembre:"7bre",diciembre:"10bre","señor":"Sr",ayuntamiento:"Ayto","señora":"Sra",tercera:"3ª",tercero:"3º",don:"D",santa:"Sta",ciudad:"Cdad",noviembre:"9bre",departamento:"Dep"},classifications:{camino:"Cmno",avenida:"Av",paseo:"Pº",autopista:"Auto",calle:"C",plaza:"Pza",carretera:"Crta"},directions:{este:"E",noreste:"NE",sur:"S",suroeste:"SO",noroeste:"NO",oeste:"O",sureste:"SE",norte:"N"}}},{}],11:[function(_dereq_,module,exports){module.exports={abbreviations:{"allée":"All","aérodrome":"Aérod","aéroport":"Aérop"},classifications:{centrale:"Ctrale",campings:"Camp.",urbains:"Urb.",mineure:"Min.",publique:"Publ.","supérieur":"Sup.","fédération":"Féd.","notre-dame":"ND",saint:"St","centre hospitalier régional":"CHR",exploitation:"Exploit.","général":"Gal",civiles:"Civ.",maritimes:"Marit.",aviation:"Aviat.",iii:"3","archéologique":"Archéo.",musical:"Music.",musicale:"Music.",immeuble:"Imm.",xv:"15","hôtel":"Hôt.",alpine:"Alp.",communale:"Commun.",v:"5",global:"Glob.","université":"Univ.","confédéral":"Conféd.",xx:"20",x:"10",piscine:"Pisc.",dimanche:"di.",fleuve:"Flv",postaux:"Post.",musicienne:"Music.","département":"Dépt","février":"Févr.",municipales:"Munic.",province:"Prov.","communautés":"Commtés",barrage:"Barr.",mercredi:"me.","présidentes":"Pdtes","cafétérias":"Cafét.","théâtral":"Thé.",viticulteur:"Vitic.",poste:"Post.","spécialisée":"Spéc.",agriculture:"Agric.",infirmier:"Infirm.",animation:"Anim.",mondiale:"Mond.","arrêt":"Arr.",zone:"zon.",municipaux:"Munic.",grand:"Gd",janvier:"Janv.",fondateur:"Fond.","première":"1re",municipale:"Munic.",direction:"Dir.",anonyme:"Anon.","départementale":"Dépt",moyens:"Moy.",novembre:"Nov.",jardin:"Jard.",petites:"Pet.","privé":"Priv.",centres:"Ctres",forestier:"Forest.",xiv:"14",africaines:"Afric.",sergent:"Sgt","européenne":"Eur.","privée":"Priv.","café":"Cfé",xix:"19",hautes:"Htes",major:"Mjr",vendredi:"ve.","municipalité":"Munic.","sous-préfecture":"Ss-préf.","spéciales":"Spéc.",secondaires:"Second.",viie:"7e",moyenne:"Moy.",commerciale:"Commerc.","région":"Rég.","américaines":"Amér.","américains":"Amér.",service:"Sce",professeur:"Prof.","départemental":"Dépt","hôtels":"Hôt.",mondiales:"Mond.",ire:"1re",caporal:"Capo.",militaire:"Milit.","lycée d'enseignement professionnel":"LEP",adjudant:"Adj.","médicale":"Méd.","conférences":"Confér.",universelle:"Univ.",xiie:"12e","supérieures":"Sup.",naturel:"Natur.","société nationale":"SN",hospitalier:"Hosp.",culturelle:"Cult.","américain":"Amér.","son altesse royale":"S.A.R.","infirmière":"Infirm.",viii:"8",fondatrice:"Fond.",madame:"Mme","métropolitain":"Métrop.",ophtalmologues:"Ophtalmos",xviie:"18e",viiie:"8e","commerçante":"Commerç.","centre d'enseignement du second degré":"CES",septembre:"Sept.",agriculteur:"Agric.",xiii:"13",pontifical:"Pontif.","cafétéria":"Cafét.",prince:"Pce",vie:"6e",archiduchesse:"Archid.",occidental:"Occ.",spectacles:"Spect.",camping:"Camp.","métro":"Mº",arrondissement:"Arrond.",viticole:"Vitic.",ii:"2","siècle":"Si.",chapelles:"Chap.",centre:"Ctre","sapeur-pompiers":"Sap.-pomp.","établissements":"Ãtabts","société anonyme":"SA",directeurs:"Dir.",vii:"7",culturel:"Cult.",central:"Ctral","métropolitaine":"Métrop.",administrations:"Admin.",amiraux:"Amir.",sur:"s/",premiers:"1ers","provence-alpes-côte d'azur":"PACA","cathédrale":"Cathéd.",iv:"4",postale:"Post.",social:"Soc.","spécialisé":"Spéc.",district:"Distr.",technologique:"Techno.",viticoles:"Vitic.",ix:"9","protégés":"Prot.",historiques:"Hist.",sous:"s/s",national:"Nal",ambassade:"Amb.","cafés":"Cfés",agronomie:"Agro.",sapeurs:"Sap.",petits:"Pet.",monsieur:"M.",boucher:"Bouch.",restaurant:"Restau.","lycée":"Lyc.",urbaine:"Urb.","préfecture":"Préf.",districts:"Distr.",civil:"Civ.","protégées":"Prot.",sapeur:"Sap.","théâtre":"Thé.","collège":"Coll.",mardi:"ma.","mémorial":"Mémor.",africain:"Afric.","républicaine":"Républ.",sociale:"Soc.","spécial":"Spéc.",technologie:"Techno.",charcuterie:"Charc.",commerces:"Commerc.",fluviale:"Flv",parachutistes:"Para.",primaires:"Prim.",directions:"Dir.","présidentiel":"Pdtl",nationales:"Nales","après":"apr.",samedi:"sa.","unité":"U.",xxiii:"23","associé":"Assoc.","électrique":"Ãlectr.",populaire:"Pop.",asiatique:"Asiat.",navigable:"Navig.","présidente":"Pdte",xive:"14e","associés":"Assoc.",pompiers:"Pomp.",agricoles:"Agric.","élém":"Ãlém.","décembre":"Déc.","son altesse":"S.Alt.","après-midi":"a.-m.",mineures:"Min.",juillet:"Juil.",aviatrices:"Aviat.",fondation:"Fond.",pontificaux:"Pontif.",temple:"Tple","européennes":"Eur.","régionale":"Rég.",informations:"Infos",mondiaux:"Mond.",infanterie:"Infant.","archéologie":"Archéo.",dans:"d/",hospice:"Hosp.",spectacle:"Spect.","hôtels-restaurants":"Hôt.-Rest.","hôtel-restaurant":"Hôt.-Rest.","hélicoptère":"hélico",xixe:"19e",cliniques:"Clin.",docteur:"Dr",secondaire:"Second.",municipal:"Munic.","générale":"Gale","château":"Chât.","commerçant":"Commerç.",avril:"Avr.",clinique:"Clin.",urbaines:"Urb.",navale:"Nav.",navigation:"Navig.",asiatiques:"Asiat.",pontificales:"Pontif.",administrative:"Admin.",syndicat:"Synd.",lundi:"lu.",petite:"Pet.",maritime:"Marit.","métros":"Mº",enseignement:"Enseign.",fluviales:"Flv",historique:"Hist.","comtés":"Ctés","résidentiel":"Résid.",international:"Int.","supérieure":"Sup.","centre hospitalier universitaire":"CHU","confédération":"Conféd.",boucherie:"Bouch.",fondatrices:"Fond.","médicaux":"Méd.","européens":"Eur.",orientaux:"Ori.",naval:"Nav.","étang":"Ãtg",provincial:"Prov.",junior:"Jr","départementales":"Dépt",musique:"Musiq.",directrices:"Dir.","maréchal":"Mal",civils:"Civ.","protégé":"Prot.","établissement":"Ãtabt",trafic:"Traf.",aviateur:"Aviat.",archives:"Arch.",africains:"Afric.",maternelle:"Matern.",industrielle:"Ind.",administratif:"Admin.",oriental:"Ori.",universitaire:"Univ.",majeur:"Maj.",haute:"Hte",communal:"Commun.",petit:"Pet.",commune:"Commun.",exploitant:"Exploit.","conférence":"Confér.",monseigneur:"Mgr",pharmacien:"Pharm.",jeudi:"je.",primaire:"Prim.","hélicoptères":"hélicos",agronomique:"Agro.","médecin":"Méd.",ve:"5e",pontificale:"Pontif.",ier:"1er","cinéma":"Ciné",fluvial:"Flv",occidentaux:"Occ.","commerçants":"Commerç.",banque:"Bq",moyennes:"Moy.",pharmacienne:"Pharm.","démocratique":"Dém.","cinémas":"Cinés","spéciale":"Spéc.","présidents":"Pdts",directrice:"Dir.",vi:"6",basse:"Bas.",xve:"15e","état":"Ã.",aviateurs:"Aviat.",majeurs:"Maj.",infirmiers:"Infirm.","église":"Ãgl.","confédérale":"Conféd.",xxie:"21e",comte:"Cte","européen":"Eur.",union:"U.",pharmacie:"Pharm.","infirmières":"Infirm.","comté":"Cté",sportive:"Sport.","deuxième":"2e",xvi:"17",haut:"Ht","médicales":"Méd.","développé":"Dévelop.","bâtiment":"Bât.",commerce:"Commerc.",ive:"4e",associatif:"Assoc.",rural:"Rur.","cimetière":"Cim.","régional":"Rég.",ferroviaire:"Ferr.",vers:"v/","mosquée":"Mosq.",mineurs:"Min.",nautique:"Naut.","châteaux":"Chât.",sportif:"Sport.",mademoiselle:"Mle","école":"Ãc.",doyen:"Doy.",industriel:"Ind.",chapelle:"Chap.","sociétés":"Stés",internationale:"Int.","coopératif":"Coop.",hospices:"Hosp.",xxii:"22",parachutiste:"Para.",alpines:"Alp.",civile:"Civ.",xvie:"17e","états":"Ã.","musée":"Msée",centrales:"Ctrales",globaux:"Glob.","supérieurs":"Sup.",syndicats:"Synd.","archevêque":"Archev.",docteurs:"Drs","bibliothèque":"Biblio.",lieutenant:"Lieut.","république":"Rép.","vétérinaire":"Vét.","départementaux":"Dépt",premier:"1er",fluviaux:"Flv","animé":"Anim.",orientales:"Ori.",technologiques:"Techno.",princesse:"Pse","routière":"Rout.","coopérative":"Coop.",scolaire:"Scol.","écoles":"Ãc.",football:"Foot",territoriale:"Territ.",commercial:"Commerc.",mineur:"Min.","millénaires":"Mill.",association:"Assoc.",catholique:"Cathol.",administration:"Admin.",mairie:"Mair.",portuaire:"Port.",tertiaires:"Terti.","théâtrale":"Thé.",palais:"Pal.","troisième":"3e",directeur:"Dir.","vétérinaires":"Vét.","faculté":"Fac.",occidentales:"Occ.",viticulteurs:"Vitic.",xvii:"18",occidentale:"Occ.",amiral:"Amir.",professionnel:"Profess.",administratives:"Admin.",commerciales:"Commerc.",saints:"Sts",agronomes:"Agro.",stade:"Std","sous-préfet":"Ss-préf.",senior:"Sr",agronome:"Agro.",terrain:"Terr.",catholiques:"Cathol.","résidentielle":"Résid.",grands:"Gds",exploitants:"Exploit.",xiiie:"13e",croix:"Cx","généraux":"Gaux","crédit":"Créd.","cimetières":"Cim.",antenne:"Ant.","médical":"Méd.","collèges":"Coll.",musicien:"Music.",apostolique:"Apost.",postal:"Post.",territorial:"Territ.",urbanisme:"Urb.","préfectorale":"Préf.",fondateurs:"Fond.",information:"Info.","églises":"Ãgl.",ophtalmologue:"Ophtalmo","congrégation":"Congrég.",charcutier:"Charc.","étage":"ét.",consulat:"Consul.",public:"Publ.","ferrée":"Ferr.",matin:"mat.","société anonyme à responsabilité limitée":"SARL",monuments:"Mmts",protection:"Prot.",universel:"Univ.",nationale:"Nale","président":"Pdt",provinciale:"Prov.",agriculteurs:"Agric.","préfectoral":"Préf.",xxe:"20e",alpins:"Alp.",avant:"av.",infirmerie:"Infirm.","deux mil":"2000",rurale:"Rur.",administratifs:"Admin.",octobre:"Oct.",archipel:"Archip.","communauté":"Commté",globales:"Glob.",alpin:"Alp.","numéros":"Nºˢ","lieutenant-colonel":"Lieut.-Col.","jésus-christ":"J.-C.",agricole:"Agric.","sa majesté":"S.Maj.",associative:"Assoc.",xxi:"21","présidentielle":"Pdtle",moyen:"Moy.","fédéral":"Féd.",professionnelle:"Profess.",tertiaire:"Terti.",ixe:"9e","hôpital":"Hôp.",technologies:"Techno.",iiie:"3e","développement":"Dévelop.",monument:"Mmt","forestière":"Forest.","numéro":"Nº",viticulture:"Vitic.","traversière":"Traver.",technique:"Tech.","électriques":"Ãlectr.",militaires:"Milit.",pompier:"Pomp.","américaine":"Amér.","préfet":"Préf.","congrégations":"Congrég.","pâtissier":"Pâtiss.",mondial:"Mond.",ophtalmologie:"Ophtalm.",sainte:"Ste",africaine:"Afric.",aviatrice:"Aviat.",doyens:"Doy.","société":"Sté",majeures:"Maj.",orientale:"Ori.","ministère":"Min.",archiduc:"Archid.",territoire:"Territ.",techniques:"Tech.","île-de-france":"IDF",globale:"Glob.",xe:"10e",xie:"11e",majeure:"Maj.",commerciaux:"Commerc.",maire:"Mair.","spéciaux":"Spéc.",grande:"Gde",messieurs:"MM",colonel:"Col.","millénaire":"Mill.",xi:"11",urbain:"Urb.","fédérale":"Féd.","ferré":"Ferr.","rivière":"Riv.","républicain":"Républ.",grandes:"Gdes","régiment":"Régim.",hauts:"Hts","catégorie":"Catég.",basses:"Bas.",xii:"12",agronomiques:"Agro.",iie:"2e","protégée":"Prot.","sapeur-pompier":"Sap.-pomp."},directions:{"est-nord-est":"ENE", 2500"nord-est":"NE",ouest:"O","sud-est":"SE","est-sud-est":"ESE","nord-nord-est":"NNE",sud:"S","nord-nord-ouest":"NNO","nord-ouest":"NO",nord:"N","ouest-sud-ouest":"OSO","ouest-nord-ouest":"ONO","sud-ouest":"SO","sud-sud-est":"SSE","sud-sud-ouest":"SSO",est:"E"}}},{}],12:[function(_dereq_,module,exports){module.exports={abbreviations:{"ש×ר×ת":"ש×'"},classifications:{},directions:{}}},{}],13:[function(_dereq_,module,exports){module.exports={abbreviations:{},classifications:{},directions:{kelet:"K","északkelet":"ÃK","dél":"D","északnyugat":"ÃNY","észak":"Ã","délkelet":"DK","délnyugat":"DNY",nyugat:"NY"}}},{}],14:[function(_dereq_,module,exports){module.exports={abbreviations:{apartamentai:"Apt","aukÅ¡tumos":"AukÅ¡",centras:"Ctr","ežeras":"Ež",fortas:"Ft",greitkelis:"Grtkl",juosta:"Jst",kaimas:"Km",kalnas:"Kln",kelias:"Kl",kiemelis:"Kml",miestelis:"Mstl","miesto centras":"M.Ctr",mokykla:"Mok",nacionalinis:"Nac",paminklas:"Pmkl",parkas:"Pk",pusratis:"Psrt","sankryža":"Skrž","sesÄ":"SesÄ",skveras:"Skv",stotis:"St","Å¡v":"Å v",tarptautinis:"Trptaut","taÅ¡kas":"TÅ¡k","tÄvas":"TÄv",turgus:"Tgs",universitetas:"Univ","upÄ":"Up",upelis:"Up",vieta:"Vt"},classifications:{"aikÅ¡tÄ":"a.","alÄja":"al.",aplinkkelis:"aplinkl.",autostrada:"auto.",bulvaras:"b.","gatvÄ":"g.",kelias:"kel.","krantinÄ":"krant.",prospektas:"pr.",plentas:"pl.",skersgatvis:"skg.",takas:"tak.",tiltas:"tlt."},directions:{"pietÅ«s":"P",vakarai:"V","Å¡iaurÄ":"Å ","Å¡iaurÄs vakarai":"Å V","pietryÄiai":"PR","Å¡iaurÄs rytai":"Å R",rytai:"R",pietvakariai:"PV"}}},{}],15:[function(_dereq_,module,exports){module.exports={abbreviations:{centrum:"Cntrm",nationaal:"Natâl",berg:"Brg",meer:"Mr",kruising:"Krsng",toetreden:"Ttrdn"},classifications:{bypass:"Pass",brug:"Br",straat:"Str",rechtbank:"Rbank",snoek:"Snk",autobaan:"Baan",terras:"Trrs",punt:"Pt",plaza:"Plz",rijden:"Rijd",parkway:"Pky",inham:"Nham",snelweg:"Weg","halve maan":"Maan",cirkel:"Crkl",laan:"Ln",rijbaan:"Strook",weg:"Weg",lopen:"Lpn",autoweg:"Weg",boulevard:"Blvd",plaats:"Plts",steeg:"Stg",voetpad:"Stoep"},directions:{noordoost:"NO",westen:"W",zuiden:"Z",zuidwest:"ZW",oost:"O",zuidoost:"ZO",noordwest:"NW",noorden:"N"}}},{}],16:[function(_dereq_,module,exports){module.exports={abbreviations:{"апоÑÑола":"ап.","апоÑÑолов":"апп.","великомÑÑеника":"вмÑ","великомÑÑениÑÑ":"вмÑ.","владение":"вл.","гоÑод":"г.","деÑевнÑ":"д.","имени":"им.","мÑÑеника":"мÑ.","мÑÑеников":"мÑÑ.","мÑÑениÑ":"мÑÑ.","мÑÑениÑÑ":"мÑ.","озеÑо":"о.","поÑÑлок":"п.","пÑеподобного":"пÑп.","пÑеподобнÑÑ ":"пÑпп.","Ñека":"Ñ.","ÑвÑÑиÑелей":"ÑвÑÑ.","ÑвÑÑиÑелÑ":"ÑвÑ.","ÑвÑÑенномÑÑеника":"ÑÑмÑ.","ÑвÑÑенномÑÑеников":"ÑÑмÑÑ.","ÑÑанÑиÑ":"ÑÑ.","ÑÑаÑÑок":"ÑÑ."},classifications:{"пÑоезд":"пÑ-д","пÑоÑпекÑ":"пÑ.","пеÑеÑлок":"пеÑ.","набеÑежнаÑ":"наб.","плоÑадÑ":"пл.","ÑоÑÑе":"Ñ.","бÑлÑваÑ":"б.","ÑÑпик":"ÑÑп.","ÑлиÑа":"Ñл."},directions:{"воÑÑок":"Ð","ÑевеÑо-воÑÑок":"СÐ","Ñго-воÑÑок":"ЮÐ","Ñго-запад":"ЮÐ","ÑевеÑо-запад":"СÐ","ÑевеÑ":"С","запад":"Ð","Ñг":"Ю"}}},{}],17:[function(_dereq_,module,exports){module.exports={abbreviations:{},classifications:{},directions:{vzhod:"V",severovzhod:"SV",jug:"J",severozahod:"SZ",sever:"S",jugovzhod:"JV",jugozahod:"JZ",zahod:"Z"}}},{}],18:[function(_dereq_,module,exports){module.exports={abbreviations:{sankta:"s:ta",gamla:"G:la",sankt:"s:t"},classifications:{Bro:"Br"},directions:{norr:"N","sydöst":"SO","väster":"V","öster":"O","nordväst":"NV","sydväst":"SV","söder":"S","nordöst":"NO"}}},{}],19:[function(_dereq_,module,exports){module.exports={abbreviations:{},classifications:{},directions:{"ÑÑ Ñд":"Ð¡Ñ ","пÑвнÑÑний ÑÑ Ñд":"ÐÐ½Ð¡Ñ ","пÑвденÑ":"Ðд","пÑвнÑÑний Ð·Ð°Ñ Ñд":"ÐнÐд","пÑвнÑÑ":"Ðн","пÑвденний ÑÑ Ñд":"ÐÐ´Ð¡Ñ ","пÑвденний Ð·Ð°Ñ Ñд":"ÐдÐÑ ","Ð·Ð°Ñ Ñд":"ÐÑ "}}},{}],20:[function(_dereq_,module,exports){module.exports={abbreviations:{"viá»n bảo tà ng":"VBT","thá» trấn":"Tt","Äại há»c":"ÄH","cÄn cứ không quan":"CCKQ","câu lạc bá»":"CLB","bưu Äiá»n":"BÄ","khách sạn":"KS","khu du lá»ch":"KDL","khu công nghiá»p":"KCN","khu nghá» mát":"KNM","thá» xã":"Tx","khu chung cư":"KCC","phi trưá»ng":"PT","trung tâm":"TT","tá»ng công ty":"TCty","trung há»c cÆ¡ sá»":"THCS","sân bay quá»c tế":"SBQT","trung há»c phá» thông":"THPT","cao Äẳng":"CÄ","công ty":"Cty","sân bay":"SB","thà nh phá»":"Tp","công viên":"CV","sân váºn Äá»ng":"SVÄ","linh mục":"LM","vưá»n quá»c gia":"VQG"},classifications:{"huyá»n lá»":"HL","ÄÆ°á»ng tá»nh":"ÄT","quá»c lá»":"QL","xa lá»":"XL","hương lá»":"HL","tá»nh lá»":"TL","ÄÆ°á»ng huyá»n":"ÄH","ÄÆ°á»ng cao tá»c":"ÄCT","Äại lá»":"ÄL","viá»t nam":"VN","quảng trưá»ng":"QT","ÄÆ°á»ng bá»":"ÄB"},directions:{"tây":"T",nam:"N","Äông nam":"ÄN","Äông bắc":"ÄB","tây nam":"TN","Äông":"Ä","bắc":"B"}}},{}],21:[function(_dereq_,module,exports){module.exports={meta:{regExpFlags:"gi"},v5:{article:[["^ Acc[èe]s "," lâaccès "],["^ Aire "," lâaire "],["^ All[ée]e "," lâallée "],["^ Anse "," lâanse "],["^ (L['â])?Autoroute "," lâautoroute "],["^ Avenue "," lâavenue "],["^ Barreau "," le barreau "],["^ Boulevard "," le boulevard "],["^ Chemin "," le chemin "],["^ Petit[\\- ]Chemin "," le petit chemin "],["^ Cit[ée] "," la cité "],["^ Clos "," le clos "],["^ Corniche "," la corniche "],["^ Cour "," la cour "],["^ Cours "," le cours "],["^ D[ée]viation "," la déviation "],["^ Entr[ée]e "," lâentrée "],["^ Esplanade "," lâesplanade "],["^ Galerie "," la galerie "],["^ Impasse "," lâimpasse "],["^ Lotissement "," le lotissement "],["^ Mont[ée]e "," la montée "],["^ Parc "," le parc "],["^ Parvis "," le parvis "],["^ Passage "," le passage "],["^ Place "," la place "],["^ Petit[\\- ]Pont "," le petit-pont "],["^ Pont "," le pont "],["^ Promenade "," la promenade "],["^ Quai "," le quai "],["^ Rocade "," la rocade "],["^ Rond[\\- ]?Point "," le rond-point "],["^ Route "," la route "],["^ Rue "," la rue "],["^ Grande Rue "," la grande rue "],["^ Sente "," la sente "],["^ Sentier "," le sentier "],["^ Sortie "," la sortie "],["^ Souterrain "," le souterrain "],["^ Square "," le square "],["^ Terrasse "," la terrasse "],["^ Traverse "," la traverse "],["^ Tunnel "," le tunnel "],["^ Viaduc "," le viaduc "],["^ Villa "," la villa "],["^ Village "," le village "],["^ Voie "," la voie "],[" ([dl])'"," $1â"]],preposition:[["^ Le "," du "],["^ Les "," des "],["^ La "," de La "],["^ Acc[èe]s "," de lâaccès "],["^ Aire "," de lâaire "],["^ All[ée]e "," de lâallée "],["^ Anse "," de lâanse "],["^ (L['â])?Autoroute "," de lâautoroute "],["^ Avenue "," de lâavenue "],["^ Barreau "," du barreau "],["^ Boulevard "," du boulevard "],["^ Chemin "," du chemin "],["^ Petit[\\- ]Chemin "," du petit chemin "],["^ Cit[ée] "," de la cité "],["^ Clos "," du clos "],["^ Corniche "," de la corniche "],["^ Cour "," de la cour "],["^ Cours "," du cours "],["^ D[ée]viation "," de la déviation "],["^ Entr[ée]e "," de lâentrée "],["^ Esplanade "," de lâesplanade "],["^ Galerie "," de la galerie "],["^ Impasse "," de lâimpasse "],["^ Lotissement "," du lotissement "],["^ Mont[ée]e "," de la montée "],["^ Parc "," du parc "],["^ Parvis "," du parvis "],["^ Passage "," du passage "],["^ Place "," de la place "],["^ Petit[\\- ]Pont "," du petit-pont "],["^ Pont "," du pont "],["^ Promenade "," de la promenade "],["^ Quai "," du quai "],["^ Rocade "," de la rocade "],["^ Rond[\\- ]?Point "," du rond-point "],["^ Route "," de la route "],["^ Rue "," de la rue "],["^ Grande Rue "," de la grande rue "],["^ Sente "," de la sente "],["^ Sentier "," du sentier "],["^ Sortie "," de la sortie "],["^ Souterrain "," du souterrain "],["^ Square "," du square "],["^ Terrasse "," de la terrasse "],["^ Traverse "," de la traverse "],["^ Tunnel "," du tunnel "],["^ Viaduc "," du viaduc "],["^ Villa "," de la villa "],["^ Village "," du village "],["^ Voie "," de la voie "],["^ ([AÃÃEÃÃÃÃIÃÃOÃUÃÃÃYŸÃÅ])"," dâ$1"],["^ (\\S)"," de $1"],[" ([dl])'"," $1â"]],rotary:[["^ Le "," le rond-point du "],["^ Les "," le rond-point des "],["^ La "," le rond-point de La "],["^ Acc[èe]s "," le rond-point de lâaccès "],["^ Aire "," le rond-point de lâaire "],["^ All[ée]e "," le rond-point de lâallée "],["^ Anse "," le rond-point de lâanse "],["^ (L['â])?Autoroute "," le rond-point de lâautoroute "],["^ Avenue "," le rond-point de lâavenue "],["^ Barreau "," le rond-point du barreau "],["^ Boulevard "," le rond-point du boulevard "],["^ Chemin "," le rond-point du chemin "],["^ Petit[\\- ]Chemin "," le rond-point du petit chemin "],["^ Cit[ée] "," le rond-point de la cité "],["^ Clos "," le rond-point du clos "],["^ Corniche "," le rond-point de la corniche "],["^ Cour "," le rond-point de la cour "],["^ Cours "," le rond-point du cours "],["^ D[ée]viation "," le rond-point de la déviation "],["^ Entr[ée]e "," le rond-point de lâentrée "],["^ Esplanade "," le rond-point de lâesplanade "],["^ Galerie "," le rond-point de la galerie "],["^ Impasse "," le rond-point de lâimpasse "],["^ Lotissement "," le rond-point du lotissement "],["^ Mont[ée]e "," le rond-point de la montée "],["^ Parc "," le rond-point du parc "],["^ Parvis "," le rond-point du parvis "],["^ Passage "," le rond-point du passage "],["^ Place "," le rond-point de la place "],["^ Petit[\\- ]Pont "," le rond-point du petit-pont "],["^ Pont "," le rond-point du pont "],["^ Promenade "," le rond-point de la promenade "],["^ Quai "," le rond-point du quai "],["^ Rocade "," le rond-point de la rocade "],["^ Rond[\\- ]?Point "," le rond-point "],["^ Route "," le rond-point de la route "],["^ Rue "," le rond-point de la rue "],["^ Grande Rue "," le rond-point de la grande rue "],["^ Sente "," le rond-point de la sente "],["^ Sentier "," le rond-point du sentier "],["^ Sortie "," le rond-point de la sortie "],["^ Souterrain "," le rond-point du souterrain "],["^ Square "," le rond-point du square "],["^ Terrasse "," le rond-point de la terrasse "],["^ Traverse "," le rond-point de la traverse "],["^ Tunnel "," le rond-point du tunnel "],["^ Viaduc "," le rond-point du viaduc "],["^ Villa "," le rond-point de la villa "],["^ Village "," le rond-point du village "],["^ Voie "," le rond-point de la voie "],["^ ([AÃÃEÃÃÃÃIÃÃOÃUÃÃÃYŸÃÅ])"," le rond-point dâ$1"],["^ (\\S)"," le rond-point de $1"],[" ([dl])'"," $1â"]],arrival:[["^ Le "," au "],["^ Les "," aux "],["^ La "," à La "],["^ (\\S)"," à $1"],[" ([dl])'"," $1â"]]}}},{}],22:[function(_dereq_,module,exports){module.exports={meta:{regExpFlags:""},v5:{accusative:[['^ ([«"])'," ÑÑаÑÑа $1"],["^ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1ÑÑ Ð°Ð»Ð»ÐµÑ "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1ÑÑ Ð°Ð»Ð»ÐµÑ "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1ÑÑ Ð°Ð»Ð»ÐµÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1-Ñ $2ÑÑ Ð°Ð»Ð»ÐµÑ "],["^ [Ðа]Ð»Ð»ÐµÑ "," Ð°Ð»Ð»ÐµÑ "],["^ (\\S+)аÑ-(\\S+)Ð°Ñ [УÑ]лиÑа "," $1ÑÑ-$2ÑÑ ÑлиÑÑ "],["^ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ÑÑ ÑлиÑÑ "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1ÑÑ ÑлиÑÑ "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1ÑÑ ÑлиÑÑ "],["^ (\\d+)-Ñ [УÑ]лиÑа "," $1-Ñ ÑлиÑÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1-Ñ $2ÑÑ ÑлиÑÑ "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ÑÑ $2ÑÑ ÑлиÑÑ "],["^ (\\S+[вн])а [УÑ]лиÑа "," $1Ñ ÑлиÑÑ "],["^ (\\S+)Ð°Ñ (\\S+[вн])а [УÑ]лиÑа "," $1ÑÑ $2Ñ ÑлиÑÑ "],["^ ÐанÑÑÐ»Ð°Ð²Ð»Ñ [УÑ]лиÑа "," ÐанÑÑÐ»Ð°Ð²Ð»Ñ ÑлиÑÑ "],["^ ÐобÑÑÐ½Ñ [УÑ]лиÑа "," ÐобÑÑÐ½Ñ ÑлиÑÑ "],["^ ÐÑдогоÑа [УÑ]лиÑа "," ÐÑдогоÑÑ ÑлиÑÑ "],["^ [УÑ]лиÑа "," ÑлиÑÑ "],["^ (\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-Ñ Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\d+)-(\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-$2-Ñ Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ÑÑ Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ÑÑ Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ÑÑ Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-Ñ $2ÑÑ Ð»Ð¸Ð½Ð¸Ñ "],["^ [Ðл]Ð¸Ð½Ð¸Ñ "," Ð»Ð¸Ð½Ð¸Ñ "],["^ (\\d+)-(\\d+)-Ñ [Ðл]инии "," $1-$2-Ñ Ð»Ð¸Ð½Ð¸Ð¸ "],["^ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ÑÑ Ð½Ð°Ð±ÐµÑежнÑÑ "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ÑÑ Ð½Ð°Ð±ÐµÑежнÑÑ "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ÑÑ Ð½Ð°Ð±ÐµÑежнÑÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1-Ñ $2ÑÑ Ð½Ð°Ð±ÐµÑежнÑÑ "],["^ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," набеÑежнÑÑ "],["^ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1ÑÑ Ð¿Ð»Ð¾ÑÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1ÑÑ Ð¿Ð»Ð¾ÑÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1ÑÑ Ð¿Ð»Ð¾ÑÐ°Ð´Ñ "],["^ (\\S+[вн])а [Ðп]лоÑÐ°Ð´Ñ "," $1Ñ Ð¿Ð»Ð¾ÑÐ°Ð´Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1-Ñ $2ÑÑ Ð¿Ð»Ð¾ÑÐ°Ð´Ñ "],["^ [Ðп]лоÑÐ°Ð´Ñ "," плоÑÐ°Ð´Ñ "],["^ (\\S+)Ð°Ñ [Ðп]ÑоÑека "," $1ÑÑ Ð¿ÑоÑÐµÐºÑ "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1ÑÑ Ð¿ÑоÑÐµÐºÑ "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1ÑÑ Ð¿ÑоÑÐµÐºÑ "],["^ (\\d+)-Ñ [Ðп]ÑоÑека "," $1-Ñ Ð¿ÑоÑÐµÐºÑ "],["^ [Ðп]ÑоÑека "," пÑоÑÐµÐºÑ "],["^ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1ÑÑ ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1ÑÑ ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1ÑÑ ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1-Ñ $2ÑÑ ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ [ÐÑ]ÑÑакада "," ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ÑÑ Ð¼Ð°Ð³Ð¸ÑÑÑÐ°Ð»Ñ "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ÑÑ Ð¼Ð°Ð³Ð¸ÑÑÑÐ°Ð»Ñ "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ÑÑ Ð¼Ð°Ð³Ð¸ÑÑÑÐ°Ð»Ñ "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ÑÑ $2ÑÑ Ð¼Ð°Ð³Ð¸ÑÑÑÐ°Ð»Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1-Ñ $2ÑÑ Ð¼Ð°Ð³Ð¸ÑÑÑÐ°Ð»Ñ "],["^ [Ðм]агиÑÑÑÐ°Ð»Ñ "," магиÑÑÑÐ°Ð»Ñ "],["^ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1ÑÑ ÑазвÑÐ·ÐºÑ "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1ÑÑ ÑазвÑÐ·ÐºÑ "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1ÑÑ ÑазвÑÐ·ÐºÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1-Ñ $2ÑÑ ÑазвÑÐ·ÐºÑ "],["^ [Ð Ñ]азвÑзка "," ÑазвÑÐ·ÐºÑ "],["^ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1ÑÑ ÑÑаÑÑÑ "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1ÑÑ ÑÑаÑÑÑ "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1ÑÑ ÑÑаÑÑÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1-Ñ $2ÑÑ ÑÑаÑÑÑ "],["^ [ТÑ]ÑаÑÑа "," ÑÑаÑÑÑ "],["^ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ÑÑ $2доÑÐ¾Ð³Ñ "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1ÑÑ $2доÑÐ¾Ð³Ñ "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1ÑÑ $2доÑÐ¾Ð³Ñ "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ÑÑ $2ÑÑ $3доÑÐ¾Ð³Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1-Ñ $2ÑÑ $3доÑÐ¾Ð³Ñ "],["^ ([Ðа]вÑо)?[Ðд]оÑога "," $1доÑÐ¾Ð³Ñ "],["^ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1ÑÑ Ð´Ð¾ÑÐ¾Ð¶ÐºÑ "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1ÑÑ Ð´Ð¾ÑÐ¾Ð¶ÐºÑ "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1ÑÑ Ð´Ð¾ÑÐ¾Ð¶ÐºÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1-Ñ $2ÑÑ Ð´Ð¾ÑÐ¾Ð¶ÐºÑ "],["^ [Ðд]оÑожка "," доÑÐ¾Ð¶ÐºÑ "],["^ (\\S+)Ð°Ñ [Ðк]оÑа "," $1ÑÑ ÐºÐ¾ÑÑ "],["^ (\\S+)Ð°Ñ [Ð¥Ñ ]оÑда "," $1ÑÑ Ñ Ð¾ÑÐ´Ñ "],["^ [Ðд]Ñбл[еÑ]Ñ "," дÑблÑÑ "]],dative:[['^ ([«"])'," ÑÑаÑÑа $1"],["^ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1ой аллее "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1Ñей аллее "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1ей аллее "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1-й $2ой аллее "],["^ [Ðа]Ð»Ð»ÐµÑ "," аллее "],["^ (\\S+)аÑ-(\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой-$2ой ÑлиÑе "],["^ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой ÑлиÑе "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1Ñей ÑлиÑе "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1ей ÑлиÑе "],["^ (\\d+)-Ñ [УÑ]лиÑа "," $1-й ÑлиÑе "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1-й $2ой ÑлиÑе "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой $2ой ÑлиÑе "],["^ (\\S+[вн])а [УÑ]лиÑа "," $1ой ÑлиÑе "],["^ (\\S+)Ð°Ñ (\\S+[вн])а [УÑ]лиÑа "," $1ой $2ой ÑлиÑе "],["^ ÐанÑÑÐ»Ð°Ð²Ð»Ñ [УÑ]лиÑа "," ÐанÑÑлавлей ÑлиÑе "],["^ ÐобÑÑÐ½Ñ [УÑ]лиÑа "," ÐобÑÑней ÑлиÑе "],["^ ÐÑдогоÑа [УÑ]лиÑа "," ÐÑдогоÑей ÑлиÑе "],["^ [УÑ]лиÑа "," ÑлиÑе "],["^ (\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-$2-й линии "],["^ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ой линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1Ñей линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ей линии "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й $2ой линии "],["^ [Ðл]Ð¸Ð½Ð¸Ñ "," линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]инии "," $1-$2-й линиÑм "],["^ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ой набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1Ñей набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ей набеÑежной "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1-й $2ой набеÑежной "],["^ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," набеÑежной "],["^ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1Ñей плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1ей плоÑади "],["^ (\\S+[вн])а [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1-й $2ой плоÑади "],["^ [Ðп]лоÑÐ°Ð´Ñ "," плоÑади "],["^ (\\S+)Ð°Ñ [Ðп]ÑоÑека "," $1ой пÑоÑеке "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1Ñей пÑоÑеке "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1ей пÑоÑеке "],["^ (\\d+)-Ñ [Ðп]ÑоÑека "," $1-й пÑоÑеке "],["^ [Ðп]ÑоÑека "," пÑоÑеке "],["^ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1ой ÑÑÑакаде "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1Ñей ÑÑÑакаде "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1ей ÑÑÑакаде "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1-й $2ой ÑÑÑакаде "],["^ [ÐÑ]ÑÑакада "," ÑÑÑакаде "],["^ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1Ñей магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ей магиÑÑÑали "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой $2ой магиÑÑÑали "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1-й $2ой магиÑÑÑали "],["^ [Ðм]агиÑÑÑÐ°Ð»Ñ "," магиÑÑÑали "],["^ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1ой ÑазвÑзке "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1Ñей ÑазвÑзке "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1ей ÑазвÑзке "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1-й $2ой ÑазвÑзке "],["^ [Ð Ñ]азвÑзка "," ÑазвÑзке "],["^ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1ой ÑÑаÑÑе "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1Ñей ÑÑаÑÑе "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1ей ÑÑаÑÑе "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1-й $2ой ÑÑаÑÑе "],["^ [ТÑ]ÑаÑÑа "," ÑÑаÑÑе "],["^ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2доÑоге "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1Ñей $2доÑоге "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1ей $2доÑоге "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2ой $3доÑоге "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1-й $2ой $3доÑоге "],["^ ([Ðа]вÑо)?[Ðд]оÑога "," $1доÑоге "],["^ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1ой доÑожке "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1Ñей доÑожке "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1ей доÑожке "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1-й $2ой доÑожке "],["^ [Ðд]оÑожка "," доÑожке "],["^ (\\S+)во [Ðп]оле "," $1Ð²Ñ Ð¿Ð¾Ð»Ñ "],["^ (\\S+)Ð°Ñ [Ðк]оÑа "," $1ой коÑе "],["^ (\\S+)Ð°Ñ [Ð¥Ñ ]оÑда "," $1ой Ñ Ð¾Ñде "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑок "," $1Ð¾Ð¼Ñ Ð¿ÑоÑÐ¾ÐºÑ "],["^ (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1ÐµÐ¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1Ð¾Ð¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1Ð¾Ð¼Ñ $2Ñ Ð±ÑлÑваÑÑ "],["^ (\\d+)-й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð±ÑлÑваÑÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1-Ð¼Ñ $2Ñ Ð±ÑлÑваÑÑ "],["^ [Ðб]ÑлÑÐ²Ð°Ñ "," бÑлÑваÑÑ "],["^ [Ðд]Ñбл[еÑ]Ñ "," дÑблÑÑÑ "],["^ (\\S+н)ий [Ðз]аезд "," $1ÐµÐ¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й [Ðз]аезд "," $1Ð¾Ð¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+[еÑо]в) [Ðз]аезд "," $1Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+[иÑ]н) [Ðз]аезд "," $1Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðз]аезд "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðз]аезд "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðз]аезд "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðз]аезд "," $1Ð¾Ð¼Ñ $2Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðз]аезд "," $1Ð¾Ð¼Ñ $2Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+н)ий [Ðз]аезд "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðз]аезд "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðз]аезд "," $1-Ð¼Ñ $2Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðз]аезд "," $1-Ð¼Ñ $2Ñ Ð·Ð°ÐµÐ·Ð´Ñ "],["^ [Ðз]аезд "," Ð·Ð°ÐµÐ·Ð´Ñ "],["^ (\\S+н)ий [Ðм]оÑÑ "," $1ÐµÐ¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1Ð¾Ð¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+[еÑо]в) [Ðм]оÑÑ "," $1Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+[иÑ]н) [Ðм]оÑÑ "," $1Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðм]оÑÑ "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1Ð¾Ð¼Ñ $2Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1Ð¾Ð¼Ñ $2Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\d+)-й [Ðм]оÑÑ "," $1-Ð¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\d+)-й (\\S+н)ий [Ðм]оÑÑ "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1-Ð¼Ñ $2Ñ Ð¼Ð¾ÑÑÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1-Ð¼Ñ $2Ñ Ð¼Ð¾ÑÑÑ "],["^ [Ðм]оÑÑ "," моÑÑÑ "],["^ (\\S+н)ий [Ðо]Ð±Ñ Ð¾Ð´ "," $1ÐµÐ¼Ñ Ð¾Ð±Ñ Ð¾Ð´Ñ "],["^ (\\S+)[иоÑ]й [Ðо]Ð±Ñ Ð¾Ð´ "," $1Ð¾Ð¼Ñ Ð¾Ð±Ñ Ð¾Ð´Ñ "],["^ [Ðо]Ð±Ñ Ð¾Ð´ "," Ð¾Ð±Ñ Ð¾Ð´Ñ "],["^ (\\S+н)ий [Ðп]аÑк "," $1ÐµÐ¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+)[иоÑ]й [Ðп]аÑк "," $1Ð¾Ð¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+[иÑ]н) [Ðп]аÑк "," $1Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]аÑк "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]аÑк "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]аÑк "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]аÑк "," $1Ð¾Ð¼Ñ $2Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\d+)-й (\\S+н)ий [Ðп]аÑк "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]аÑк "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿Ð°ÑÐºÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]аÑк "," $1-Ð¼Ñ $2Ñ Ð¿Ð°ÑÐºÑ "],["^ [Ðп]аÑк "," паÑÐºÑ "],["^ (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1омÑ-$2Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-Ð¼Ñ $2омÑ-$3Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+н)ий [Ðп]еÑеÑлок "," $1ÐµÐ¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]еÑеÑлок "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й [Ðп]еÑеÑлок "," $1-Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й (\\S+н)ий [Ðп]еÑеÑлок "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1-Ð¼Ñ $2Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1-Ð¼Ñ $2Ñ Ð¿ÐµÑеÑÐ»ÐºÑ "],["^ [Ðп]еÑеÑлок "," пеÑеÑÐ»ÐºÑ "],["^ [Ðп]одÑезд "," подÑÐµÐ·Ð´Ñ "],["^ (\\S+[еÑо]в)-(\\S+)[иоÑ]й [Ðп]Ñоезд "," $1Ñ-$2Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+н)ий [Ðп]Ñоезд "," $1ÐµÐ¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+[еÑо]в) [Ðп]Ñоезд "," $1Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+[иÑ]н) [Ðп]Ñоезд "," $1Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]Ñоезд "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й [Ðп]Ñоезд "," $1-Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+н)ий [Ðп]Ñоезд "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1-Ð¼Ñ $2Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1-Ð¼Ñ $2Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-Ð¼Ñ $2ÐµÐ¼Ñ $3Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ $3Ð¾Ð¼Ñ Ð¿ÑÐ¾ÐµÐ·Ð´Ñ "],["^ [Ðп]Ñоезд "," пÑÐ¾ÐµÐ·Ð´Ñ "],["^ (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ÐµÐ¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1Ð¾Ð¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑоÑпекÑÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-Ð¼Ñ $2Ñ Ð¿ÑоÑпекÑÑ "],["^ [Ðп]ÑоÑÐ¿ÐµÐºÑ "," пÑоÑпекÑÑ "],["^ (\\S+н)ий [Ðп]ÑÑепÑовод "," $1ÐµÐ¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1Ð¾Ð¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1Ð¾Ð¼Ñ $2Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1-Ð¼Ñ $2ÐµÐ¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1-Ð¼Ñ $2Ñ Ð¿ÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ [Ðп]ÑÑепÑовод "," пÑÑепÑÐ¾Ð²Ð¾Ð´Ñ "],["^ (\\S+н)ий [СÑ]пÑÑк "," $1ÐµÐ¼Ñ ÑпÑÑÐºÑ "],["^ (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1Ð¾Ð¼Ñ ÑпÑÑÐºÑ "],["^ (\\S+[еÑо]в) [СÑ]пÑÑк "," $1Ñ ÑпÑÑÐºÑ "],["^ (\\S+[иÑ]н) [СÑ]пÑÑк "," $1Ñ ÑпÑÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]пÑÑк "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ ÑпÑÑÐºÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ ÑпÑÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ ÑпÑÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1Ð¾Ð¼Ñ $2Ñ ÑпÑÑÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1Ð¾Ð¼Ñ $2Ñ ÑпÑÑÐºÑ "],["^ (\\d+)-й (\\S+н)ий [СÑ]пÑÑк "," $1-Ð¼Ñ $2ÐµÐ¼Ñ ÑпÑÑÐºÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ ÑпÑÑÐºÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1-Ð¼Ñ $2Ñ ÑпÑÑÐºÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1-Ð¼Ñ $2Ñ ÑпÑÑÐºÑ "],["^ [СÑ]пÑÑк "," ÑпÑÑÐºÑ "],["^ (\\S+н)ий [СÑ]Ñезд "," $1ÐµÐ¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й [СÑ]Ñезд "," $1Ð¾Ð¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+[иÑ]н) [СÑ]Ñезд "," $1Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]Ñезд "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]Ñезд "," $1Ð¾Ð¼Ñ $2Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+н)ий [СÑ]Ñезд "," $1-Ð¼Ñ $2ÐµÐ¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑÐµÐ·Ð´Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]Ñезд "," $1-Ð¼Ñ $2Ñ ÑÑÐµÐ·Ð´Ñ "],["^ [СÑ]Ñезд "," ÑÑÐµÐ·Ð´Ñ "],["^ (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ÐµÐ¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1Ð¾Ð¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1Ð¾Ð¼Ñ $2Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-Ð¼Ñ $2ÐµÐ¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-Ð¼Ñ $2Ñ ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1ÐµÐ¼Ñ ÑÑакÑÑ "],["^ (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1Ð¾Ð¼Ñ ÑÑакÑÑ "],["^ (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1Ñ ÑÑакÑÑ "],["^ (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1Ñ ÑÑакÑÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ ÑÑакÑÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ ÑÑакÑÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑакÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1Ð¾Ð¼Ñ $2Ñ ÑÑакÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1Ð¾Ð¼Ñ $2Ñ ÑÑакÑÑ "],["^ (\\d+)-й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1-Ð¼Ñ $2ÐµÐ¼Ñ ÑÑакÑÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑакÑÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1-Ð¼Ñ $2Ñ ÑÑакÑÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1-Ð¼Ñ $2Ñ ÑÑакÑÑ "],["^ [ТÑ]ÑÐ°ÐºÑ "," ÑÑакÑÑ "],["^ (\\S+н)ий [ТÑ]Ñпик "," $1ÐµÐ¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1Ð¾Ð¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+[еÑо]в) [ТÑ]Ñпик "," $1Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+[иÑ]н) [ТÑ]Ñпик "," $1Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]Ñпик "," $1Ð¾Ð¼Ñ $2ÐµÐ¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ÐµÐ¼Ñ $2Ð¾Ð¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1Ð¾Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1Ð¾Ð¼Ñ $2Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1Ð¾Ð¼Ñ $2Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\d+)-й [ТÑ]Ñпик "," $1-Ð¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\d+)-й (\\S+н)ий [ТÑ]Ñпик "," $1-Ð¼Ñ $2ÐµÐ¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1-Ð¼Ñ $2Ð¾Ð¼Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1-Ð¼Ñ $2Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1-Ð¼Ñ $2Ñ ÑÑÐ¿Ð¸ÐºÑ "],["^ [ТÑ]Ñпик "," ÑÑÐ¿Ð¸ÐºÑ "],["^ (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1Ð¼Ñ $2колÑÑÑ "],["^ (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1Ð¼Ñ $2колÑÑÑ "],["^ (\\S+[ео])е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1Ð¼Ñ $2Ð¼Ñ $3колÑÑÑ "],["^ (\\S+Ñе) (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1Ð¼Ñ $2Ð¼Ñ $3колÑÑÑ "],["^ (\\d+)-е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-Ð¼Ñ $2Ð¼Ñ $3колÑÑÑ "],["^ (\\d+)-е (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-Ð¼Ñ $2Ð¼Ñ $3колÑÑÑ "],["^ ([Ðп]олÑ)?[Ðк]олÑÑо "," $1колÑÑÑ "],["^ (\\S+[ео])е [ШÑ]оÑÑе "," $1Ð¼Ñ ÑоÑÑе "],["^ (\\S+Ñе) [ШÑ]оÑÑе "," $1Ð¼Ñ ÑоÑÑе "],["^ (\\S+[ео])е (\\S+[ео])е [ШÑ]оÑÑе "," $1Ð¼Ñ $2Ð¼Ñ ÑоÑÑе "],["^ (\\S+Ñе) (\\S+[ео])е [ШÑ]оÑÑе "," $1Ð¼Ñ $2Ð¼Ñ ÑоÑÑе "],["^ (\\d+)-е (\\S+[ео])е [ШÑ]оÑÑе "," $1-Ð¼Ñ $2Ð¼Ñ ÑоÑÑе "],["^ (\\d+)-е (\\S+Ñе) [ШÑ]оÑÑе "," $1-Ð¼Ñ $2Ð¼Ñ ÑоÑÑе "],[" ([ТÑ])ÑеÑÐ¾Ð¼Ñ "," $1ÑеÑÑÐµÐ¼Ñ "],["([жÑ])Ð¾Ð¼Ñ ","$1ÑÐµÐ¼Ñ "],["([жÑ])ой ","$1ей "]], 2501genitive:[['^ ([«"])'," ÑÑаÑÑа $1"],["^ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1ой аллеи "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1Ñей аллеи "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1ей аллеи "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1-й $2ой аллеи "],["^ [Ðа]Ð»Ð»ÐµÑ "," аллеи "],["^ (\\S+)аÑ-(\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой-$2ой ÑлиÑÑ "],["^ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой ÑлиÑÑ "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1Ñей ÑлиÑÑ "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1ей ÑлиÑÑ "],["^ (\\d+)-Ñ [УÑ]лиÑа "," $1-й ÑлиÑÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1-й $2ой ÑлиÑÑ "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой $2ой ÑлиÑÑ "],["^ (\\S+[вн])а [УÑ]лиÑа "," $1ой ÑлиÑÑ "],["^ (\\S+)Ð°Ñ (\\S+[вн])а [УÑ]лиÑа "," $1ой $2ой ÑлиÑÑ "],["^ ÐанÑÑÐ»Ð°Ð²Ð»Ñ [УÑ]лиÑа "," ÐанÑÑлавлей ÑлиÑÑ "],["^ ÐобÑÑÐ½Ñ [УÑ]лиÑа "," ÐобÑÑней ÑлиÑÑ "],["^ ÐÑдогоÑа [УÑ]лиÑа "," ÐÑдогоÑей ÑлиÑÑ "],["^ [УÑ]лиÑа "," ÑлиÑÑ "],["^ (\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-$2-й линии "],["^ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ой линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1Ñей линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ей линии "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й $2ой линии "],["^ [Ðл]Ð¸Ð½Ð¸Ñ "," линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]инии "," $1-$2-й линий "],["^ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ой набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1Ñей набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ей набеÑежной "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1-й $2ой набеÑежной "],["^ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," набеÑежной "],["^ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1Ñей плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1ей плоÑади "],["^ (\\S+[вн])а [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1-й $2ой плоÑади "],["^ [Ðп]лоÑÐ°Ð´Ñ "," плоÑади "],["^ (\\S+)Ð°Ñ [Ðп]ÑоÑека "," $1ой пÑоÑеки "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1Ñей пÑоÑеки "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1ей пÑоÑеки "],["^ (\\d+)-Ñ [Ðп]ÑоÑека "," $1-й пÑоÑеки "],["^ [Ðп]ÑоÑека "," пÑоÑеки "],["^ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1ой ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1Ñей ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1ей ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1-й $2ой ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ [ÐÑ]ÑÑакада "," ÑÑÑÐ°ÐºÐ°Ð´Ñ "],["^ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1Ñей магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ей магиÑÑÑали "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой $2ой магиÑÑÑали "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1-й $2ой магиÑÑÑали "],["^ [Ðм]агиÑÑÑÐ°Ð»Ñ "," магиÑÑÑали "],["^ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1ой ÑазвÑзки "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1Ñей ÑазвÑзки "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1ей ÑазвÑзки "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1-й $2ой ÑазвÑзки "],["^ [Ð Ñ]азвÑзка "," ÑазвÑзки "],["^ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1ой ÑÑаÑÑÑ "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1Ñей ÑÑаÑÑÑ "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1ей ÑÑаÑÑÑ "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1-й $2ой ÑÑаÑÑÑ "],["^ [ТÑ]ÑаÑÑа "," ÑÑаÑÑÑ "],["^ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2доÑоги "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1Ñей $2доÑоги "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1ей $2доÑоги "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2ой $3доÑоги "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1-й $2ой $3доÑоги "],["^ ([Ðа]вÑо)?[Ðд]оÑога "," $1доÑоги "],["^ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1ой доÑожки "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1Ñей доÑожки "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1ей доÑожки "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1-й $2ой доÑожки "],["^ [Ðд]оÑожка "," доÑожки "],["^ (\\S+)во [Ðп]оле "," $1ва Ð¿Ð¾Ð»Ñ "],["^ (\\S+)Ð°Ñ [Ðк]оÑа "," $1ой коÑÑ "],["^ (\\S+)Ð°Ñ [Ð¥Ñ ]оÑда "," $1ой Ñ Ð¾ÑÐ´Ñ "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑок "," $1ого пÑоÑока "],["^ (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1его бÑлÑваÑа "],["^ (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ого бÑлÑваÑа "],["^ (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1ого бÑлÑваÑа "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1ого $2его бÑлÑваÑа "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1его $2ого бÑлÑваÑа "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ого $2ого бÑлÑваÑа "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1ого $2ого бÑлÑваÑа "],["^ (\\d+)-й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1-го $2его бÑлÑваÑа "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1-го $2ого бÑлÑваÑа "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1-го $2ого бÑлÑваÑа "],["^ [Ðб]ÑлÑÐ²Ð°Ñ "," бÑлÑваÑа "],["^ [Ðд]Ñбл[еÑ]Ñ "," дÑблÑÑа "],["^ (\\S+н)ий [Ðз]аезд "," $1его заезда "],["^ (\\S+)[иоÑ]й [Ðз]аезд "," $1ого заезда "],["^ (\\S+[еÑо]в) [Ðз]аезд "," $1а заезда "],["^ (\\S+[иÑ]н) [Ðз]аезд "," $1а заезда "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðз]аезд "," $1ого $2его заезда "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðз]аезд "," $1его $2ого заезда "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðз]аезд "," $1ого $2ого заезда "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðз]аезд "," $1ого $2а заезда "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðз]аезд "," $1ого $2а заезда "],["^ (\\d+)-й (\\S+н)ий [Ðз]аезд "," $1-го $2его заезда "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðз]аезд "," $1-го $2ого заезда "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðз]аезд "," $1-го $2а заезда "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðз]аезд "," $1-го $2а заезда "],["^ [Ðз]аезд "," заезда "],["^ (\\S+н)ий [Ðм]оÑÑ "," $1его моÑÑа "],["^ (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ого моÑÑа "],["^ (\\S+[еÑо]в) [Ðм]оÑÑ "," $1а моÑÑа "],["^ (\\S+[иÑ]н) [Ðм]оÑÑ "," $1а моÑÑа "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðм]оÑÑ "," $1ого $2его моÑÑа "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1его $2ого моÑÑа "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ого $2ого моÑÑа "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1ого $2а моÑÑа "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1ого $2а моÑÑа "],["^ (\\d+)-й [Ðм]оÑÑ "," $1-го моÑÑа "],["^ (\\d+)-й (\\S+н)ий [Ðм]оÑÑ "," $1-го $2его моÑÑа "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1-го $2ого моÑÑа "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1-го $2а моÑÑа "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1-го $2а моÑÑа "],["^ [Ðм]оÑÑ "," моÑÑа "],["^ (\\S+н)ий [Ðо]Ð±Ñ Ð¾Ð´ "," $1его Ð¾Ð±Ñ Ð¾Ð´Ð° "],["^ (\\S+)[иоÑ]й [Ðо]Ð±Ñ Ð¾Ð´ "," $1ого Ð¾Ð±Ñ Ð¾Ð´Ð° "],["^ [Ðо]Ð±Ñ Ð¾Ð´ "," Ð¾Ð±Ñ Ð¾Ð´Ð° "],["^ (\\S+н)ий [Ðп]аÑк "," $1его паÑка "],["^ (\\S+)[иоÑ]й [Ðп]аÑк "," $1ого паÑка "],["^ (\\S+[иÑ]н) [Ðп]аÑк "," $1ого паÑка "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]аÑк "," $1ого $2его паÑка "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]аÑк "," $1его $2ого паÑка "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]аÑк "," $1ого $2ого паÑка "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]аÑк "," $1ого $2ого паÑка "],["^ (\\d+)-й (\\S+н)ий [Ðп]аÑк "," $1-го $2его паÑка "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]аÑк "," $1-го $2ого паÑка "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]аÑк "," $1-го $2ого паÑка "],["^ [Ðп]аÑк "," паÑка "],["^ (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ого-$2ого пеÑеÑлка "],["^ (\\d+)-й (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-го $2ого-$3ого пеÑеÑлка "],["^ (\\S+н)ий [Ðп]еÑеÑлок "," $1его пеÑеÑлка "],["^ (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ого пеÑеÑлка "],["^ (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1а пеÑеÑлка "],["^ (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1а пеÑеÑлка "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]еÑеÑлок "," $1ого $2его пеÑеÑлка "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1его $2ого пеÑеÑлка "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ого $2ого пеÑеÑлка "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1ого $2а пеÑеÑлка "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1ого $2а пеÑеÑлка "],["^ (\\d+)-й [Ðп]еÑеÑлок "," $1-го пеÑеÑлка "],["^ (\\d+)-й (\\S+н)ий [Ðп]еÑеÑлок "," $1-го $2его пеÑеÑлка "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-го $2ого пеÑеÑлка "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1-го $2а пеÑеÑлка "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1-го $2а пеÑеÑлка "],["^ [Ðп]еÑеÑлок "," пеÑеÑлка "],["^ [Ðп]одÑезд "," подÑезда "],["^ (\\S+[еÑо]в)-(\\S+)[иоÑ]й [Ðп]Ñоезд "," $1а-$2ого пÑоезда "],["^ (\\S+н)ий [Ðп]Ñоезд "," $1его пÑоезда "],["^ (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ого пÑоезда "],["^ (\\S+[еÑо]в) [Ðп]Ñоезд "," $1а пÑоезда "],["^ (\\S+[иÑ]н) [Ðп]Ñоезд "," $1а пÑоезда "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]Ñоезд "," $1ого $2его пÑоезда "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1его $2ого пÑоезда "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ого $2ого пÑоезда "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1ого $2а пÑоезда "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1ого $2а пÑоезда "],["^ (\\d+)-й [Ðп]Ñоезд "," $1-го пÑоезда "],["^ (\\d+)-й (\\S+н)ий [Ðп]Ñоезд "," $1-го $2его пÑоезда "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-го $2ого пÑоезда "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1-го $2а пÑоезда "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1-го $2а пÑоезда "],["^ (\\d+)-й (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-го $2его $3ого пÑоезда "],["^ (\\d+)-й (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-го $2ого $3ого пÑоезда "],["^ [Ðп]Ñоезд "," пÑоезда "],["^ (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1его пÑоÑпекÑа "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ого пÑоÑпекÑа "],["^ (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ого пÑоÑпекÑа "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ого $2его пÑоÑпекÑа "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1его $2ого пÑоÑпекÑа "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ого $2ого пÑоÑпекÑа "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ого $2ого пÑоÑпекÑа "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-го $2его пÑоÑпекÑа "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-го $2ого пÑоÑпекÑа "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-го $2ого пÑоÑпекÑа "],["^ [Ðп]ÑоÑÐ¿ÐµÐºÑ "," пÑоÑпекÑа "],["^ (\\S+н)ий [Ðп]ÑÑепÑовод "," $1его пÑÑепÑовода "],["^ (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ого пÑÑепÑовода "],["^ (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1ого пÑÑепÑовода "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1ого $2его пÑÑепÑовода "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1его $2ого пÑÑепÑовода "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ого $2ого пÑÑепÑовода "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1ого $2ого пÑÑепÑовода "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1-го $2его пÑÑепÑовода "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1-го $2ого пÑÑепÑовода "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1-го $2ого пÑÑепÑовода "],["^ [Ðп]ÑÑепÑовод "," пÑÑепÑовода "],["^ (\\S+н)ий [СÑ]пÑÑк "," $1его ÑпÑÑка "],["^ (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ого ÑпÑÑка "],["^ (\\S+[еÑо]в) [СÑ]пÑÑк "," $1а ÑпÑÑка "],["^ (\\S+[иÑ]н) [СÑ]пÑÑк "," $1а ÑпÑÑка "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]пÑÑк "," $1ого $2его ÑпÑÑка "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1его $2ого ÑпÑÑка "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ого $2ого ÑпÑÑка "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1ого $2а ÑпÑÑка "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1ого $2а ÑпÑÑка "],["^ (\\d+)-й (\\S+н)ий [СÑ]пÑÑк "," $1-го $2его ÑпÑÑка "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1-го $2ого ÑпÑÑка "],["^ (\\d+)-й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1-го $2а ÑпÑÑка "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1-го $2а ÑпÑÑка "],["^ [СÑ]пÑÑк "," ÑпÑÑка "],["^ (\\S+н)ий [СÑ]Ñезд "," $1его ÑÑезда "],["^ (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ого ÑÑезда "],["^ (\\S+[иÑ]н) [СÑ]Ñезд "," $1ого ÑÑезда "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]Ñезд "," $1ого $2его ÑÑезда "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]Ñезд "," $1его $2ого ÑÑезда "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ого $2ого ÑÑезда "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]Ñезд "," $1ого $2ого ÑÑезда "],["^ (\\d+)-й (\\S+н)ий [СÑ]Ñезд "," $1-го $2его ÑÑезда "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1-го $2ого ÑÑезда "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]Ñезд "," $1-го $2ого ÑÑезда "],["^ [СÑ]Ñезд "," ÑÑезда "],["^ (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1его ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ого $2его ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1его $2ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ого $2ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ого $2ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-го $2его ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-го $2ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-го $2ого ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," ÑÐ¾Ð½Ð½ÐµÐ»Ñ "],["^ (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1ем ÑÑакÑа "],["^ (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ого ÑÑакÑа "],["^ (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1а ÑÑакÑа "],["^ (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1а ÑÑакÑа "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1ого $2его ÑÑакÑа "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1его $2ого ÑÑакÑа "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ого $2ого ÑÑакÑа "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1ого $2а ÑÑакÑа "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1ого $2а ÑÑакÑа "],["^ (\\d+)-й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1-го $2его ÑÑакÑа "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1-го $2ого ÑÑакÑа "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1-го $2а ÑÑакÑа "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1-го $2а ÑÑакÑа "],["^ [ТÑ]ÑÐ°ÐºÑ "," ÑÑакÑа "],["^ (\\S+н)ий [ТÑ]Ñпик "," $1его ÑÑпика "],["^ (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ого ÑÑпика "],["^ (\\S+[еÑо]в) [ТÑ]Ñпик "," $1а ÑÑпика "],["^ (\\S+[иÑ]н) [ТÑ]Ñпик "," $1а ÑÑпика "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]Ñпик "," $1ого $2его ÑÑпика "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1его $2ого ÑÑпика "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ого $2ого ÑÑпика "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1ого $2а ÑÑпика "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1ого $2а ÑÑпика "],["^ (\\d+)-й [ТÑ]Ñпик "," $1-го ÑÑпика "],["^ (\\d+)-й (\\S+н)ий [ТÑ]Ñпик "," $1-го $2его ÑÑпика "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1-го $2ого ÑÑпика "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1-го $2а ÑÑпика "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1-го $2а ÑÑпика "],["^ [ТÑ]Ñпик "," ÑÑпика "],["^ (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1го $2колÑÑа "],["^ (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1го $2колÑÑа "],["^ (\\S+[ео])е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1го $2го $3колÑÑа "],["^ (\\S+Ñе) (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1го $2го $3колÑÑа "],["^ (\\d+)-е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-го $2го $3колÑÑа "],["^ (\\d+)-е (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-го $2го $3колÑÑа "],["^ ([Ðп]олÑ)?[Ðк]олÑÑо "," $1колÑÑа "],["^ (\\S+[ео])е [ШÑ]оÑÑе "," $1го ÑоÑÑе "],["^ (\\S+Ñе) [ШÑ]оÑÑе "," $1го ÑоÑÑе "],["^ (\\S+[ео])е (\\S+[ео])е [ШÑ]оÑÑе "," $1го $2го ÑоÑÑе "],["^ (\\S+Ñе) (\\S+[ео])е [ШÑ]оÑÑе "," $1го $2го ÑоÑÑе "],["^ (\\d+)-е (\\S+[ео])е [ШÑ]оÑÑе "," $1-го $2го ÑоÑÑе "],["^ (\\d+)-е (\\S+Ñе) [ШÑ]оÑÑе "," $1-го $2го ÑоÑÑе "],[" ([ТÑ])ÑеÑого "," $1ÑеÑÑего "],["([жÑ])ого ","$1Ñего "]],prepositional:[['^ ([«"])'," ÑÑаÑÑа $1"],["^ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1ой аллее "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1Ñей аллее "],["^ (\\S+)ÑÑ [Ðа]Ð»Ð»ÐµÑ "," $1ей аллее "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðа]Ð»Ð»ÐµÑ "," $1-й $2ой аллее "],["^ [Ðа]Ð»Ð»ÐµÑ "," аллее "],["^ (\\S+)аÑ-(\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой-$2ой ÑлиÑе "],["^ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой ÑлиÑе "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1Ñей ÑлиÑе "],["^ (\\S+)ÑÑ [УÑ]лиÑа "," $1ей ÑлиÑе "],["^ (\\d+)-Ñ [УÑ]лиÑа "," $1-й ÑлиÑе "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1-й $2ой ÑлиÑе "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [УÑ]лиÑа "," $1ой $2ой ÑлиÑе "],["^ (\\S+[вн])а [УÑ]лиÑа "," $1ой ÑлиÑе "],["^ (\\S+)Ð°Ñ (\\S+[вн])а [УÑ]лиÑа "," $1ой $2ой ÑлиÑе "],["^ ÐанÑÑÐ»Ð°Ð²Ð»Ñ [УÑ]лиÑа "," ÐанÑÑлавлей ÑлиÑе "],["^ ÐобÑÑÐ½Ñ [УÑ]лиÑа "," ÐобÑÑней ÑлиÑе "],["^ ÐÑдогоÑа [УÑ]лиÑа "," ÐÑдогоÑей ÑлиÑе "],["^ [УÑ]лиÑа "," ÑлиÑе "],["^ (\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-$2-й линии "],["^ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ой линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1Ñей линии "],["^ (\\S+)ÑÑ [Ðл]Ð¸Ð½Ð¸Ñ "," $1ей линии "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðл]Ð¸Ð½Ð¸Ñ "," $1-й $2ой линии "],["^ [Ðл]Ð¸Ð½Ð¸Ñ "," линии "],["^ (\\d+)-(\\d+)-Ñ [Ðл]инии "," $1-$2-й линиÑÑ "],["^ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ой набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1Ñей набеÑежной "],["^ (\\S+)ÑÑ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1ей набеÑежной "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," $1-й $2ой набеÑежной "],["^ [Ðн]абеÑÐµÐ¶Ð½Ð°Ñ "," набеÑежной "],["^ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1Ñей плоÑади "],["^ (\\S+)ÑÑ [Ðп]лоÑÐ°Ð´Ñ "," $1ей плоÑади "],["^ (\\S+[вн])а [Ðп]лоÑÐ°Ð´Ñ "," $1ой плоÑади "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðп]лоÑÐ°Ð´Ñ "," $1-й $2ой плоÑади "],["^ [Ðп]лоÑÐ°Ð´Ñ "," плоÑади "],["^ (\\S+)Ð°Ñ [Ðп]ÑоÑека "," $1ой пÑоÑеке "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1Ñей пÑоÑеке "],["^ (\\S+)ÑÑ [Ðп]ÑоÑека "," $1ей пÑоÑеке "],["^ (\\d+)-Ñ [Ðп]ÑоÑека "," $1-й пÑоÑеке "],["^ [Ðп]ÑоÑека "," пÑоÑеке "],["^ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1ой ÑÑÑакаде "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1Ñей ÑÑÑакаде "],["^ (\\S+)ÑÑ [ÐÑ]ÑÑакада "," $1ей ÑÑÑакаде "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ÐÑ]ÑÑакада "," $1-й $2ой ÑÑÑакаде "],["^ [ÐÑ]ÑÑакада "," ÑÑÑакаде "],["^ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1Ñей магиÑÑÑали "],["^ (\\S+)ÑÑ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ей магиÑÑÑали "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1ой $2ой магиÑÑÑали "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðм]агиÑÑÑÐ°Ð»Ñ "," $1-й $2ой магиÑÑÑали "],["^ [Ðм]агиÑÑÑÐ°Ð»Ñ "," магиÑÑÑали "],["^ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1ой ÑазвÑзке "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1Ñей ÑазвÑзке "],["^ (\\S+)ÑÑ [Ð Ñ]азвÑзка "," $1ей ÑазвÑзке "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ð Ñ]азвÑзка "," $1-й $2ой ÑазвÑзке "],["^ [Ð Ñ]азвÑзка "," ÑазвÑзке "],["^ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1ой ÑÑаÑÑе "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1Ñей ÑÑаÑÑе "],["^ (\\S+)ÑÑ [ТÑ]ÑаÑÑа "," $1ей ÑÑаÑÑе "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [ТÑ]ÑаÑÑа "," $1-й $2ой ÑÑаÑÑе "],["^ [ТÑ]ÑаÑÑа "," ÑÑаÑÑе "],["^ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2доÑоге "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1Ñей $2доÑоге "],["^ (\\S+)ÑÑ ([Ðа]вÑо)?[Ðд]оÑога "," $1ей $2доÑоге "],["^ (\\S+)Ð°Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1ой $2ой $3доÑоге "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ ([Ðа]вÑо)?[Ðд]оÑога "," $1-й $2ой $3доÑоге "],["^ ([Ðа]вÑо)?[Ðд]оÑога "," $1доÑоге "],["^ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1ой доÑожке "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1Ñей доÑожке "],["^ (\\S+)ÑÑ [Ðд]оÑожка "," $1ей доÑожке "],["^ (\\d+)-Ñ (\\S+)Ð°Ñ [Ðд]оÑожка "," $1-й $2ой доÑожке "],["^ [Ðд]оÑожка "," доÑожке "],["^ (\\S+)во [Ðп]оле "," $1вом поле "],["^ (\\S+)Ð°Ñ [Ðк]оÑа "," $1ой коÑе "],["^ (\\S+)Ð°Ñ [Ð¥Ñ ]оÑда "," $1ой Ñ Ð¾Ñде "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑок "," $1ом пÑоÑоке "],["^ (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1ем бÑлÑваÑе "],["^ (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ом бÑлÑваÑе "],["^ (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1ом бÑлÑваÑе "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1ом $2ем бÑлÑваÑе "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ем $2ом бÑлÑваÑе "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1ом $2ом бÑлÑваÑе "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1ом $2ом бÑлÑваÑе "],["^ (\\d+)-й (\\S+н)ий [Ðб]ÑлÑÐ²Ð°Ñ "," $1-м $2ем бÑлÑваÑе "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðб]ÑлÑÐ²Ð°Ñ "," $1-м $2ом бÑлÑваÑе "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðб]ÑлÑÐ²Ð°Ñ "," $1-м $2ом бÑлÑваÑе "],["^ [Ðб]ÑлÑÐ²Ð°Ñ "," бÑлÑваÑе "],["^ [Ðд]Ñбл[еÑ]Ñ "," дÑблÑÑе "],["^ (\\S+н)ий [Ðз]аезд "," $1ем заезде "],["^ (\\S+)[иоÑ]й [Ðз]аезд "," $1ом заезде "],["^ (\\S+[еÑо]в) [Ðз]аезд "," $1ом заезде "],["^ (\\S+[иÑ]н) [Ðз]аезд "," $1ом заезде "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðз]аезд "," $1ом $2ем заезде "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðз]аезд "," $1ем $2ом заезде "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðз]аезд "," $1ом $2ом заезде "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðз]аезд "," $1ом $2ом заезде "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðз]аезд "," $1ом $2ом заезде "],["^ (\\d+)-й (\\S+н)ий [Ðз]аезд "," $1-м $2ем заезде "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðз]аезд "," $1-м $2ом заезде "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðз]аезд "," $1-м $2ом заезде "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðз]аезд "," $1-м $2ом заезде "],["^ [Ðз]аезд "," заезде "],["^ (\\S+н)ий [Ðм]оÑÑ "," $1ем моÑÑÑ "],["^ (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ом моÑÑÑ "],["^ (\\S+[еÑо]в) [Ðм]оÑÑ "," $1ом моÑÑÑ "],["^ (\\S+[иÑ]н) [Ðм]оÑÑ "," $1ом моÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðм]оÑÑ "," $1ом $2ем моÑÑÑ "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ем $2ом моÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1ом $2ом моÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1ом $2ом моÑÑÑ "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1ом $2ом моÑÑÑ "],["^ (\\d+)-й [Ðм]оÑÑ "," $1-м моÑÑÑ "],["^ (\\d+)-й (\\S+н)ий [Ðм]оÑÑ "," $1-м $2ем моÑÑÑ "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðм]оÑÑ "," $1-м $2ом моÑÑÑ "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðм]оÑÑ "," $1-м $2ом моÑÑÑ "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðм]оÑÑ "," $1-м $2ом моÑÑÑ "],["^ [Ðм]оÑÑ "," моÑÑÑ "],["^ (\\S+н)ий [Ðо]Ð±Ñ Ð¾Ð´ "," $1ем Ð¾Ð±Ñ Ð¾Ð´Ðµ "],["^ (\\S+)[иоÑ]й [Ðо]Ð±Ñ Ð¾Ð´ "," $1ом Ð¾Ð±Ñ Ð¾Ð´Ðµ "],["^ [Ðо]Ð±Ñ Ð¾Ð´ "," Ð¾Ð±Ñ Ð¾Ð´Ðµ "],["^ (\\S+н)ий [Ðп]аÑк "," $1ем паÑке "],["^ (\\S+)[иоÑ]й [Ðп]аÑк "," $1ом паÑке "],["^ (\\S+[иÑ]н) [Ðп]аÑк "," $1ом паÑке "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]аÑк "," $1ом $2ем паÑке "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]аÑк "," $1ем $2ом паÑке "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]аÑк "," $1ом $2ом паÑке "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]аÑк "," $1ом $2ом паÑке "],["^ (\\d+)-й (\\S+н)ий [Ðп]аÑк "," $1-м $2ем паÑке "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]аÑк "," $1-м $2ом паÑке "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]аÑк "," $1-м $2ом паÑке "],["^ [Ðп]аÑк "," паÑке "],["^ (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ом-$2ом пеÑеÑлке "],["^ (\\d+)-й (\\S+)[иоÑ]й-(\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-м $2ом-$3ом пеÑеÑлке "],["^ (\\S+н)ий [Ðп]еÑеÑлок "," $1ем пеÑеÑлке "],["^ (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ом пеÑеÑлке "],["^ (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1ом пеÑеÑлке "],["^ (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1ом пеÑеÑлке "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]еÑеÑлок "," $1ом $2ем пеÑеÑлке "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ем $2ом пеÑеÑлке "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1ом $2ом пеÑеÑлке "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1ом $2ом пеÑеÑлке "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1ом $2ом пеÑеÑлке "],["^ (\\d+)-й [Ðп]еÑеÑлок "," $1-м пеÑеÑлке "],["^ (\\d+)-й (\\S+н)ий [Ðп]еÑеÑлок "," $1-м $2ем пеÑеÑлке "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]еÑеÑлок "," $1-м $2ом пеÑеÑлке "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]еÑеÑлок "," $1-м $2ом пеÑеÑлке "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]еÑеÑлок "," $1-м $2ом пеÑеÑлке "],["^ [Ðп]еÑеÑлок "," пеÑеÑлке "],["^ [Ðп]одÑезд "," подÑезде "],["^ (\\S+[еÑо]в)-(\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ом-$2ом пÑоезде "],["^ (\\S+н)ий [Ðп]Ñоезд "," $1ем пÑоезде "],["^ (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ом пÑоезде "],["^ (\\S+[еÑо]в) [Ðп]Ñоезд "," $1ом пÑоезде "],["^ (\\S+[иÑ]н) [Ðп]Ñоезд "," $1ом пÑоезде "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]Ñоезд "," $1ом $2ем пÑоезде "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ем $2ом пÑоезде "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1ом $2ом пÑоезде "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1ом $2ом пÑоезде "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1ом $2ом пÑоезде "],["^ (\\d+)-й [Ðп]Ñоезд "," $1-м пÑоезде "],["^ (\\d+)-й (\\S+н)ий [Ðп]Ñоезд "," $1-м $2ем пÑоезде "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-м $2ом пÑоезде "],["^ (\\d+)-й (\\S+[еÑо]в) [Ðп]Ñоезд "," $1-м $2ом пÑоезде "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]Ñоезд "," $1-м $2ом пÑоезде "],["^ (\\d+)-й (\\S+н)ий (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-м $2ем $3ом пÑоезде "],["^ (\\d+)-й (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]Ñоезд "," $1-м $2ом $3ом пÑоезде "],["^ [Ðп]Ñоезд "," пÑоезде "],["^ (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ем пÑоÑпекÑе "],["^ (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ом пÑоÑпекÑе "],["^ (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ом пÑоÑпекÑе "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ом $2ем пÑоÑпекÑе "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ем $2ом пÑоÑпекÑе "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ом $2ом пÑоÑпекÑе "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1ом $2ом пÑоÑпекÑе "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-м $2ем пÑоÑпекÑе "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-м $2ом пÑоÑпекÑе "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑоÑÐ¿ÐµÐºÑ "," $1-м $2ом пÑоÑпекÑе "],["^ [Ðп]ÑоÑÐ¿ÐµÐºÑ "," пÑоÑпекÑе "],["^ (\\S+н)ий [Ðп]ÑÑепÑовод "," $1ем пÑÑепÑоводе "],["^ (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ом пÑÑепÑоводе "],["^ (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1ом пÑÑепÑоводе "],["^ (\\S+)[иоÑ]й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1ом $2ем пÑÑепÑоводе "],["^ (\\S+н)ий (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ем $2ом пÑÑепÑоводе "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1ом $2ом пÑÑепÑоводе "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1ом $2ом пÑÑепÑоводе "],["^ (\\d+)-й (\\S+н)ий [Ðп]ÑÑепÑовод "," $1-м $2ем пÑÑепÑоводе "],["^ (\\d+)-й (\\S+)[иоÑ]й [Ðп]ÑÑепÑовод "," $1-м $2ом пÑÑепÑоводе "],["^ (\\d+)-й (\\S+[иÑ]н) [Ðп]ÑÑепÑовод "," $1-м $2ом пÑÑепÑоводе "],["^ [Ðп]ÑÑепÑовод "," пÑÑепÑоводе "],["^ (\\S+н)ий [СÑ]пÑÑк "," $1ем ÑпÑÑке "],["^ (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ом ÑпÑÑке "],["^ (\\S+[еÑо]в) [СÑ]пÑÑк "," $1ом ÑпÑÑке "],["^ (\\S+[иÑ]н) [СÑ]пÑÑк "," $1ом ÑпÑÑке "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]пÑÑк "," $1ом $2ем ÑпÑÑке "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ем $2ом ÑпÑÑке "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1ом $2ом ÑпÑÑке "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1ом $2ом ÑпÑÑке "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1ом $2ом ÑпÑÑке "],["^ (\\d+)-й (\\S+н)ий [СÑ]пÑÑк "," $1-м $2ем ÑпÑÑке "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]пÑÑк "," $1-м $2ом ÑпÑÑке "],["^ (\\d+)-й (\\S+[еÑо]в) [СÑ]пÑÑк "," $1-м $2ом ÑпÑÑке "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]пÑÑк "," $1-м $2ом ÑпÑÑке "],["^ [СÑ]пÑÑк "," ÑпÑÑке "],["^ (\\S+н)ий [СÑ]Ñезд "," $1ем ÑÑезде "],["^ (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ом ÑÑезде "],["^ (\\S+[иÑ]н) [СÑ]Ñезд "," $1ом ÑÑезде "],["^ (\\S+)[иоÑ]й (\\S+н)ий [СÑ]Ñезд "," $1ом $2ем ÑÑезде "],["^ (\\S+н)ий (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ем $2ом ÑÑезде "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1ом $2ом ÑÑезде "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [СÑ]Ñезд "," $1ом $2ом ÑÑезде "],["^ (\\d+)-й (\\S+н)ий [СÑ]Ñезд "," $1-м $2ем ÑÑезде "],["^ (\\d+)-й (\\S+)[иоÑ]й [СÑ]Ñезд "," $1-м $2ом ÑÑезде "],["^ (\\d+)-й (\\S+[иÑ]н) [СÑ]Ñезд "," $1-м $2ом ÑÑезде "],["^ [СÑ]Ñезд "," ÑÑезде "],["^ (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ем Ñоннеле "],["^ (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ом Ñоннеле "],["^ (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ом Ñоннеле "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ом $2ем Ñоннеле "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ем $2ом Ñоннеле "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ом $2ом Ñоннеле "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1ом $2ом Ñоннеле "],["^ (\\d+)-й (\\S+н)ий [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-м $2ем Ñоннеле "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-м $2ом Ñоннеле "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," $1-м $2ом Ñоннеле "],["^ [ТÑ][Ñо]Ð½Ð½ÐµÐ»Ñ "," Ñоннеле "],["^ (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1ем ÑÑакÑе "],["^ (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ом ÑÑакÑе "],["^ (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1ом ÑÑакÑе "],["^ (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1ом ÑÑакÑе "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1ом $2ем ÑÑакÑе "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ем $2ом ÑÑакÑе "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1ом $2ом ÑÑакÑе "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1ом $2ом ÑÑакÑе "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1ом $2ом ÑÑакÑе "],["^ (\\d+)-й (\\S+н)ий [ТÑ]ÑÐ°ÐºÑ "," $1-м $2ем ÑÑакÑе "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]ÑÐ°ÐºÑ "," $1-м $2ом ÑÑакÑе "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]ÑÐ°ÐºÑ "," $1-м $2ом ÑÑакÑе "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]ÑÐ°ÐºÑ "," $1-м $2ом ÑÑакÑе "],["^ [ТÑ]ÑÐ°ÐºÑ "," ÑÑакÑе "],["^ (\\S+н)ий [ТÑ]Ñпик "," $1ем ÑÑпике "],["^ (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ом ÑÑпике "],["^ (\\S+[еÑо]в) [ТÑ]Ñпик "," $1ом ÑÑпике "],["^ (\\S+[иÑ]н) [ТÑ]Ñпик "," $1ом ÑÑпике "],["^ (\\S+)[иоÑ]й (\\S+н)ий [ТÑ]Ñпик "," $1ом $2ем ÑÑпике "],["^ (\\S+н)ий (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ем $2ом ÑÑпике "],["^ (\\S+)[иоÑ]й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1ом $2ом ÑÑпике "],["^ (\\S+)[иоÑ]й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1ом $2ом ÑÑпике "],["^ (\\S+)[иоÑ]й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1ом $2ом ÑÑпике "],["^ (\\d+)-й [ТÑ]Ñпик "," $1-м ÑÑпике "],["^ (\\d+)-й (\\S+н)ий [ТÑ]Ñпик "," $1-м $2ем ÑÑпике "],["^ (\\d+)-й (\\S+)[иоÑ]й [ТÑ]Ñпик "," $1-м $2ом ÑÑпике "],["^ (\\d+)-й (\\S+[еÑо]в) [ТÑ]Ñпик "," $1-м $2ом ÑÑпике "],["^ (\\d+)-й (\\S+[иÑ]н) [ТÑ]Ñпик "," $1-м $2ом ÑÑпике "],["^ [ТÑ]Ñпик "," ÑÑпике "],["^ (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1м $2колÑÑе "],["^ (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1м $2колÑÑе "],["^ (\\S+[ео])е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1м $2м $3колÑÑе "],["^ (\\S+Ñе) (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1м $2м $3колÑÑе "],["^ (\\d+)-е (\\S+[ео])е ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-м $2м $3колÑÑе "],["^ (\\d+)-е (\\S+Ñе) ([Ðп]олÑ)?[Ðк]олÑÑо "," $1-м $2м $3колÑÑе "],["^ ([Ðп]олÑ)?[Ðк]олÑÑо "," $1колÑÑе "],["^ (\\S+[ео])е [ШÑ]оÑÑе "," $1м ÑоÑÑе "],["^ (\\S+Ñе) [ШÑ]оÑÑе "," $1м ÑоÑÑе "],["^ (\\S+[ео])е (\\S+[ео])е [ШÑ]оÑÑе "," $1м $2м ÑоÑÑе "],["^ (\\S+Ñе) (\\S+[ео])е [ШÑ]оÑÑе "," $1м $2м ÑоÑÑе "],["^ (\\d+)-е (\\S+[ео])е [ШÑ]оÑÑе "," $1-м $2м ÑоÑÑе "],["^ (\\d+)-е (\\S+Ñе) [ШÑ]оÑÑе "," $1-м $2м ÑоÑÑе "],[" ([ТÑ])ÑеÑом "," $1ÑеÑÑем "],["([жÑ])ом ","$1Ñем "]]}}},{}],23:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"første",2:"anden",3:"tredje",4:"fjerde",5:"femte",6:"sjette",7:"syvende",8:"ottende",9:"niende",10:"tiende"},direction:{north:"Nord",northeast:"Nordøst",east:"Ãst",southeast:"Sydøst",south:"Syd",southwest:"Sydvest",west:"Vest",northwest:"Nordvest"},modifier:{left:"venstresving",right:"højresving","sharp left":"skarpt venstresving","sharp right":"skarpt højresving","slight left":"svagt venstresving","slight right":"svagt højresving",straight:"ligeud",uturn:"U-vending"},lanes:{xo:"Hold til højre",ox:"Hold til venstre",xox:"Benyt midterste spor",oxo:"Hold til højre eller venstre"}},modes:{ferry:{default:"Tag færgen",name:"Tag færgen {way_name}",destination:"Tag færgen i retning {destination}"}},phrase:{"two linked by distance":"{instruction_one} derefter, efter {distance}, {instruction_two}","two linked":"{instruction_one}, derefter {instruction_two}","one in distance":"Efter {distance} {instruction_one}","name and ref":"{name} ({ref})","exit with number":"afkørsel {exit}"},arrive:{default:{default:"Du er ankommet til din {nth} destination",upcoming:"Du vil ankomme til din {nth} destination",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}"},left:{default:"Du er ankommet til din {nth} destination, som befinder sig til venstre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ venstre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til venstre"},right:{default:"Du er ankommet til din {nth} destination, som befinder sig til højre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ højre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til højre"},"sharp left":{default:"Du er ankommet til din {nth} destination, som befinder sig til venstre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ venstre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til venstre"},"sharp right":{default:"Du er ankommet til din {nth} destination, som befinder sig til højre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ højre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til højre"},"slight right":{default:"Du er ankommet til din {nth} destination, som befinder sig til højre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ højre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til højre"},"slight left":{default:"Du er ankommet til din {nth} destination, som befinder sig til venstre",upcoming:"Du vil ankomme til din {nth} destination pÃ¥ venstre hÃ¥nd",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, som befinder sig til venstre"},straight:{default:"Du er ankommet til din {nth} destination, der befinder sig lige frem",upcoming:"Du vil ankomme til din {nth} destination foran dig",short:"Du er ankommet","short-upcoming":"Du vil ankomme",named:"Du er ankommet til {waypoint_name}, der befinder sig lige frem"}},continue:{default:{default:"Drej til {modifier}",name:"Drej til {modifier} videre ad {way_name}",destination:"Drej til {modifier} mod {destination}",exit:"Drej til {modifier} ad {way_name}"},straight:{default:"Fortsæt ligeud", 2502name:"Fortsæt ligeud ad {way_name}",destination:"Fortsæt mod {destination}",distance:"Fortsæt {distance} ligeud",namedistance:"Fortsæt {distance} ad {way_name}"},"sharp left":{default:"Drej skarpt til venstre",name:"Drej skarpt til venstre videre ad {way_name}",destination:"Drej skarpt til venstre mod {destination}"},"sharp right":{default:"Drej skarpt til højre",name:"Drej skarpt til højre videre ad {way_name}",destination:"Drej skarpt til højre mod {destination}"},"slight left":{default:"Drej left til venstre",name:"Drej let til venstre videre ad {way_name}",destination:"Drej let til venstre mod {destination}"},"slight right":{default:"Drej let til højre",name:"Drej let til højre videre ad {way_name}",destination:"Drej let til højre mod {destination}"},uturn:{default:"Foretag en U-vending",name:"Foretag en U-vending tilbage ad {way_name}",destination:"Foretag en U-vending mod {destination}"}},depart:{default:{default:"Kør mod {direction}",name:"Kør mod {direction} ad {way_name}",namedistance:"Fortsæt {distance} ad {way_name}mod {direction}"}},"end of road":{default:{default:"Drej til {modifier}",name:"Drej til {modifier} ad {way_name}",destination:"Drej til {modifier} mof {destination}"},straight:{default:"Fortsæt ligeud",name:"Fortsæt ligeud ad {way_name}",destination:"Fortsæt ligeud mod {destination}"},uturn:{default:"Foretag en U-vending for enden af vejen",name:"Foretag en U-vending ad {way_name} for enden af vejen",destination:"Foretag en U-vending mod {destination} for enden af vejen"}},fork:{default:{default:"Hold til {modifier} ved udfletningen",name:"Hold mod {modifier} pÃ¥ {way_name}",destination:"Hold mod {modifier} mod {destination}"},"slight left":{default:"Hold til venstre ved udfletningen",name:"Hold til venstre pÃ¥ {way_name}",destination:"Hold til venstre mod {destination}"},"slight right":{default:"Hold til højre ved udfletningen",name:"Hold til højre pÃ¥ {way_name}",destination:"Hold til højre mod {destination}"},"sharp left":{default:"Drej skarpt til venstre ved udfletningen",name:"Drej skarpt til venstre ad {way_name}",destination:"Drej skarpt til venstre mod {destination}"},"sharp right":{default:"Drej skarpt til højre ved udfletningen",name:"Drej skarpt til højre ad {way_name}",destination:"Drej skarpt til højre mod {destination}"},uturn:{default:"Foretag en U-vending",name:"Foretag en U-vending ad {way_name}",destination:"Foretag en U-vending mod {destination}"}},merge:{default:{default:"Flet til {modifier}",name:"Flet til {modifier} ad {way_name}",destination:"Flet til {modifier} mod {destination}"},straight:{default:"Flet",name:"Flet ind pÃ¥ {way_name}",destination:"Flet ind mod {destination}"},"slight left":{default:"Flet til venstre",name:"Flet til venstre ad {way_name}",destination:"Flet til venstre mod {destination}"},"slight right":{default:"Flet til højre",name:"Flet til højre ad {way_name}",destination:"Flet til højre mod {destination}"},"sharp left":{default:"Flet til venstre",name:"Flet til venstre ad {way_name}",destination:"Flet til venstre mod {destination}"},"sharp right":{default:"Flet til højre",name:"Flet til højre ad {way_name}",destination:"Flet til højre mod {destination}"},uturn:{default:"Foretag en U-vending",name:"Foretag en U-vending ad {way_name}",destination:"Foretag en U-vending mod {destination}"}},"new name":{default:{default:"Fortsæt {modifier}",name:"Fortsæt {modifier} ad {way_name}",destination:"Fortsæt {modifier} mod {destination}"},straight:{default:"Fortsæt ligeud",name:"Fortsæt ad {way_name}",destination:"Fortsæt mod {destination}"},"sharp left":{default:"Drej skarpt til venstre",name:"Drej skarpt til venstre ad {way_name}",destination:"Drej skarpt til venstre mod {destination}"},"sharp right":{default:"Drej skarpt til højre",name:"Drej skarpt til højre ad {way_name}",destination:"Drej skarpt til højre mod {destination}"},"slight left":{default:"Fortsæt til venstre",name:"Fortsæt til venstre ad {way_name}",destination:"Fortsæt til venstre mod {destination}"},"slight right":{default:"Fortsæt til højre",name:"Fortsæt til højre ad {way_name}",destination:"Fortsæt til højre mod {destination}"},uturn:{default:"Foretag en U-vending",name:"Foretag en U-vending ad {way_name}",destination:"Foretag en U-vending mod {destination}"}},notification:{default:{default:"Fortsæt {modifier}",name:"Fortsæt {modifier} ad {way_name}",destination:"Fortsæt {modifier} mod {destination}"},uturn:{default:"Foretag en U-vending",name:"Foretag en U-vending ad {way_name}",destination:"Foretag en U-vending mod {destination}"}},"off ramp":{default:{default:"Tag afkørslen",name:"Tag afkørslen ad {way_name}",destination:"Tag afkørslen mod {destination}",exit:"Vælg afkørsel {exit}",exit_destination:"Vælg afkørsel {exit} mod {destination}"},left:{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}",exit:"Vælg afkørsel {exit} til venstre",exit_destination:"Vælg afkørsel {exit} til venstre mod {destination}\n"},right:{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}",exit:"Vælg afkørsel {exit} til højre",exit_destination:"Vælg afkørsel {exit} til højre mod {destination}"},"sharp left":{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}",exit:"Vælg afkørsel {exit} til venstre",exit_destination:"Vælg afkørsel {exit} til venstre mod {destination}\n"},"sharp right":{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}",exit:"Vælg afkørsel {exit} til højre",exit_destination:"Vælg afkørsel {exit} til højre mod {destination}"},"slight left":{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}",exit:"Vælg afkørsel {exit} til venstre",exit_destination:"Vælg afkørsel {exit} til venstre mod {destination}\n"},"slight right":{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}",exit:"Vælg afkørsel {exit} til højre",exit_destination:"Vælg afkørsel {exit} til højre mod {destination}"}},"on ramp":{default:{default:"Tag afkørslen",name:"Tag afkørslen ad {way_name}",destination:"Tag afkørslen mod {destination}"},left:{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}"},right:{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}"},"sharp left":{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}"},"sharp right":{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}"},"slight left":{default:"Tag afkørslen til venstre",name:"Tag afkørslen til venstre ad {way_name}",destination:"Tag afkørslen til venstre mod {destination}"},"slight right":{default:"Tag afkørslen til højre",name:"Tag afkørslen til højre ad {way_name}",destination:"Tag afkørslen til højre mod {destination}"}},rotary:{default:{default:{default:"Kør ind i rundkørslen",name:"Tag rundkørslen og kør fra ad {way_name}",destination:"Tag rundkørslen og kør mod {destination}"},name:{default:"Kør ind i {rotary_name}",name:"Kør ind i {rotary_name} og kør ad {way_name} ",destination:"Kør ind i {rotary_name} og kør mod {destination}"},exit:{default:"Tag rundkørslen og forlad ved {exit_number} afkørsel",name:"Tag rundkørslen og forlad ved {exit_number} afkørsel ad {way_name}",destination:"Tag rundkørslen og forlad ved {exit_number} afkørsel mod {destination}"},name_exit:{default:"Kør ind i {rotary_name} og forlad ved {exit_number} afkørsel",name:"Kør ind i {rotary_name} og forlad ved {exit_number} afkørsel ad {way_name}",destination:"Kør ind i {rotary_name} og forlad ved {exit_number} afkørsel mod {destination}"}}},roundabout:{default:{exit:{default:"Tag rundkørslen og forlad ved {exit_number} afkørsel",name:"Tag rundkørslen og forlad ved {exit_number} afkørsel ad {way_name}",destination:"Tag rundkørslen og forlad ved {exit_number} afkørsel mod {destination}"},default:{default:"Kør ind i rundkørslen",name:"Tag rundkørslen og kør fra ad {way_name}",destination:"Tag rundkørslen og kør mod {destination}"}}},"roundabout turn":{default:{default:"Foretag et {modifier}",name:"Foretag et {modifier} ad {way_name}",destination:"Foretag et {modifier} mod {destination}"},left:{default:"Drej til venstre",name:"Drej til venstre ad {way_name}",destination:"Drej til venstre mod {destination}"},right:{default:"Drej til højre",name:"Drej til højre ad {way_name}",destination:"Drej til højre mod {destination}"},straight:{default:"Fortsæt ligeud",name:"Fortsæt ligeud ad {way_name}",destination:"Fortsæt ligeud mod {destination}"}},"exit roundabout":{default:{default:"Forlad rundkørslen",name:"Forlad rundkørslen ad {way_name}",destination:"Forlad rundkørslen mod {destination}"}},"exit rotary":{default:{default:"Forlad rundkørslen",name:"Forlad rundkørslen ad {way_name}",destination:"Forlad rundkørslen mod {destination}"}},turn:{default:{default:"Foretag et {modifier}",name:"Foretag et {modifier} ad {way_name}",destination:"Foretag et {modifier} mod {destination}"},left:{default:"Drej til venstre",name:"Drej til venstre ad {way_name}",destination:"Drej til venstre mod {destination}"},right:{default:"Drej til højre",name:"Drej til højre ad {way_name}",destination:"Drej til højre mod {destination}"},straight:{default:"Fortsæt ligeud",name:"Kør ligeud ad {way_name}",destination:"Kør ligeud mod {destination}"}},"use lane":{no_lanes:{default:"Fortsæt ligeud"},default:{default:"{lane_instruction}"}}}}},{}],24:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"erste",2:"zweite",3:"dritte",4:"vierte",5:"fünfte",6:"sechste",7:"siebente",8:"achte",9:"neunte",10:"zehnte"},direction:{north:"Norden",northeast:"Nordosten",east:"Osten",southeast:"Südosten",south:"Süden",southwest:"Südwesten",west:"Westen",northwest:"Nordwesten"},modifier:{left:"links",right:"rechts","sharp left":"scharf links","sharp right":"scharf rechts","slight left":"leicht links","slight right":"leicht rechts",straight:"geradeaus",uturn:"180°-Wendung"},lanes:{xo:"Rechts halten",ox:"Links halten",xox:"Mittlere Spur nutzen",oxo:"Rechts oder links halten"}},modes:{ferry:{default:"Fähre nehmen",name:"Fähre nehmen {way_name}",destination:"Fähre nehmen Richtung {destination}"}},phrase:{"two linked by distance":"{instruction_one} danach in {distance} {instruction_two}","two linked":"{instruction_one} danach {instruction_two}","one in distance":"In {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"Sie haben Ihr {nth} Ziel erreicht",upcoming:"Sie haben Ihr {nth} Ziel erreicht",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}"},left:{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich links"},right:{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich rechts"},"sharp left":{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich links"},"sharp right":{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich rechts"},"slight right":{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich rechts",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich rechts"},"slight left":{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich links",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich links"},straight:{default:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich geradeaus",upcoming:"Sie haben Ihr {nth} Ziel erreicht, es befindet sich geradeaus",short:"Sie haben Ihr {nth} Ziel erreicht","short-upcoming":"Sie haben Ihr {nth} Ziel erreicht",named:"Sie haben Ihr {waypoint_name}, es befindet sich geradeaus"}},continue:{default:{default:"{modifier} abbiegen",name:"{modifier} weiterfahren auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}",exit:"{modifier} abbiegen auf {way_name}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Weiterfahren in Richtung {destination}",distance:"Geradeaus weiterfahren für {distance}",namedistance:"Geradeaus weiterfahren auf {way_name} für {distance}"},"sharp left":{default:"Scharf links",name:"Scharf links weiterfahren auf {way_name}",destination:"Scharf links Richtung {destination}"},"sharp right":{default:"Scharf rechts",name:"Scharf rechts weiterfahren auf {way_name}",destination:"Scharf rechts Richtung {destination}"},"slight left":{default:"Leicht links",name:"Leicht links weiter auf {way_name}",destination:"Leicht links weiter Richtung {destination}"},"slight right":{default:"Leicht rechts weiter",name:"Leicht rechts weiter auf {way_name}",destination:"Leicht rechts weiter Richtung {destination}"},uturn:{default:"180°-Wendung",name:"180°-Wendung auf {way_name}",destination:"180°-Wendung Richtung {destination}"}},depart:{default:{default:"Fahren Sie Richtung {direction}",name:"Fahren Sie Richtung {direction} auf {way_name}",namedistance:"Fahren Sie Richtung {direction} auf {way_name} für {distance}"}},"end of road":{default:{default:"{modifier} abbiegen",name:"{modifier} abbiegen auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Geradeaus weiterfahren Richtung {destination}"},uturn:{default:"180°-Wendung am Ende der StraÃe",name:"180°-Wendung auf {way_name} am Ende der StraÃe",destination:"180°-Wendung Richtung {destination} am Ende der StraÃe"}},fork:{default:{default:"{modifier} halten an der Gabelung",name:"{modifier} halten an der Gabelung auf {way_name}",destination:"{modifier} halten an der Gabelung Richtung {destination}"},"slight left":{default:"Links halten an der Gabelung",name:"Links halten an der Gabelung auf {way_name}",destination:"Links halten an der Gabelung Richtung {destination}"},"slight right":{default:"Rechts halten an der Gabelung",name:"Rechts halten an der Gabelung auf {way_name}",destination:"Rechts halten an der Gabelung Richtung {destination}"},"sharp left":{default:"Scharf links abbiegen an der Gabelung",name:"Scharf links auf {way_name}",destination:"Scharf links Richtung {destination}"},"sharp right":{default:"Scharf rechts abbiegen an der Gabelung",name:"Scharf rechts auf {way_name}",destination:"Scharf rechts Richtung {destination}"},uturn:{default:"180°-Wendung",name:"180°-Wendung auf {way_name}",destination:"180°-Wendung Richtung {destination}"}},merge:{default:{default:"{modifier} auffahren",name:"{modifier} auffahren auf {way_name}",destination:"{modifier} auffahren Richtung {destination}"},straight:{default:"geradeaus auffahren",name:"geradeaus auffahren auf {way_name}",destination:"geradeaus auffahren Richtung {destination}"},"slight left":{default:"Leicht links auffahren",name:"Leicht links auffahren auf {way_name}",destination:"Leicht links auffahren Richtung {destination}"},"slight right":{default:"Leicht rechts auffahren",name:"Leicht rechts auffahren auf {way_name}",destination:"Leicht rechts auffahren Richtung {destination}"},"sharp left":{default:"Scharf links auffahren",name:"Scharf links auffahren auf {way_name}",destination:"Scharf links auffahren Richtung {destination}"},"sharp right":{default:"Scharf rechts auffahren",name:"Scharf rechts auffahren auf {way_name}",destination:"Scharf rechts auffahren Richtung {destination}"},uturn:{default:"180°-Wendung",name:"180°-Wendung auf {way_name}",destination:"180°-Wendung Richtung {destination}"}},"new name":{default:{default:"{modifier} weiterfahren",name:"{modifier} weiterfahren auf {way_name}",destination:"{modifier} weiterfahren Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Weiterfahren auf {way_name}",destination:"Weiterfahren in Richtung {destination}"},"sharp left":{default:"Scharf links",name:"Scharf links auf {way_name}",destination:"Scharf links Richtung {destination}"},"sharp right":{default:"Scharf rechts",name:"Scharf rechts auf {way_name}",destination:"Scharf rechts Richtung {destination}"},"slight left":{default:"Leicht links weiter",name:"Leicht links weiter auf {way_name}",destination:"Leicht links weiter Richtung {destination}"},"slight right":{default:"Leicht rechts weiter",name:"Leicht rechts weiter auf {way_name}",destination:"Leicht rechts weiter Richtung {destination}"},uturn:{default:"180°-Wendung",name:"180°-Wendung auf {way_name}",destination:"180°-Wendung Richtung {destination}"}},notification:{default:{default:"{modifier} weiterfahren",name:"{modifier} weiterfahren auf {way_name}",destination:"{modifier} weiterfahren Richtung {destination}"},uturn:{default:"180°-Wendung",name:"180°-Wendung auf {way_name}",destination:"180°-Wendung Richtung {destination}"}},"off ramp":{default:{default:"Ausfahrt nehmen",name:"Ausfahrt nehmen auf {way_name}",destination:"Ausfahrt nehmen Richtung {destination}",exit:"Ausfahrt {exit} nehmen",exit_destination:"Ausfahrt {exit} nehmen Richtung {destination}"},left:{default:"Ausfahrt links nehmen",name:"Ausfahrt links nehmen auf {way_name}",destination:"Ausfahrt links nehmen Richtung {destination}",exit:"Ausfahrt {exit} links nehmen",exit_destination:"Ausfahrt {exit} links nehmen Richtung {destination}"},right:{default:"Ausfahrt rechts nehmen",name:"Ausfahrt rechts nehmen Richtung {way_name}",destination:"Ausfahrt rechts nehmen Richtung {destination}",exit:"Ausfahrt {exit} rechts nehmen",exit_destination:"Ausfahrt {exit} nehmen Richtung {destination}"},"sharp left":{default:"Ausfahrt links nehmen",name:"Ausfahrt links Seite nehmen auf {way_name}",destination:"Ausfahrt links nehmen Richtung {destination}",exit:"Ausfahrt {exit} links nehmen",exit_destination:"Ausfahrt{exit} links nehmen Richtung {destination}"},"sharp right":{default:"Ausfahrt rechts nehmen",name:"Ausfahrt rechts nehmen auf {way_name}",destination:"Ausfahrt rechts nehmen Richtung {destination}",exit:"Ausfahrt {exit} rechts nehmen",exit_destination:"Ausfahrt {exit} nehmen Richtung {destination}"},"slight left":{default:"Ausfahrt links nehmen",name:"Ausfahrt links nehmen auf {way_name}",destination:"Ausfahrt links nehmen Richtung {destination}",exit:"Ausfahrt {exit} nehmen",exit_destination:"Ausfahrt {exit} links nehmen Richtung {destination}"},"slight right":{default:"Ausfahrt rechts nehmen",name:"Ausfahrt rechts nehmen auf {way_name}",destination:"Ausfahrt rechts nehmen Richtung {destination}",exit:"Ausfahrt {exit} rechts nehmen",exit_destination:"Ausfahrt {exit} nehmen Richtung {destination}"}},"on ramp":{default:{default:"Auffahrt nehmen",name:"Auffahrt nehmen auf {way_name}",destination:"Auffahrt nehmen Richtung {destination}"},left:{default:"Auffahrt links nehmen",name:"Auffahrt links nehmen auf {way_name}",destination:"Auffahrt links nehmen Richtung {destination}"},right:{default:"Auffahrt rechts nehmen",name:"Auffahrt rechts nehmen auf {way_name}",destination:"Auffahrt rechts nehmen Richtung {destination}"},"sharp left":{default:"Auffahrt links nehmen",name:"Auffahrt links nehmen auf {way_name}",destination:"Auffahrt links nehmen Richtung {destination}"},"sharp right":{default:"Auffahrt rechts nehmen",name:"Auffahrt rechts nehmen auf {way_name}",destination:"Auffahrt rechts nehmen Richtung {destination}"},"slight left":{default:"Auffahrt links Seite nehmen",name:"Auffahrt links nehmen auf {way_name}",destination:"Auffahrt links nehmen Richtung {destination}"},"slight right":{default:"Auffahrt rechts nehmen",name:"Auffahrt rechts nehmen auf {way_name}",destination:"Auffahrt rechts nehmen Richtung {destination}"}},rotary:{default:{default:{default:"In den Kreisverkehr fahren",name:"Im Kreisverkehr die Ausfahrt auf {way_name} nehmen",destination:"Im Kreisverkehr die Ausfahrt Richtung {destination} nehmen"},name:{default:"In {rotary_name} fahren",name:"In {rotary_name} die Ausfahrt auf {way_name} nehmen",destination:"In {rotary_name} die Ausfahrt Richtung {destination} nehmen"},exit:{default:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen",name:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen auf {way_name}",destination:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen Richtung {destination}"},name_exit:{default:"In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen",name:"In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen auf {way_name}",destination:"In den Kreisverkehr fahren und {exit_number} Ausfahrt nehmen Richtung {destination}"}}},roundabout:{default:{exit:{default:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen",name:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen auf {way_name}",destination:"Im Kreisverkehr die {exit_number} Ausfahrt nehmen Richtung {destination}"},default:{default:"In den Kreisverkehr fahren",name:"Im Kreisverkehr die Ausfahrt auf {way_name} nehmen",destination:"Im Kreisverkehr die Ausfahrt Richtung {destination} nehmen"}}},"roundabout turn":{default:{default:"{modifier} abbiegen",name:"{modifier} abbiegen auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}"},left:{default:"Links abbiegen",name:"Links abbiegen auf {way_name}",destination:"Links abbiegen Richtung {destination}"},right:{default:"Rechts abbiegen",name:"Rechts abbiegen auf {way_name}",destination:"Rechts abbiegen Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Geradeaus weiterfahren Richtung {destination}"}},"exit roundabout":{default:{default:"{modifier} abbiegen",name:"{modifier} abbiegen auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}"},left:{default:"Links abbiegen",name:"Links abbiegen auf {way_name}",destination:"Links abbiegen Richtung {destination}"},right:{default:"Rechts abbiegen",name:"Rechts abbiegen auf {way_name}",destination:"Rechts abbiegen Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Geradeaus weiterfahren Richtung {destination}"}},"exit rotary":{default:{default:"{modifier} abbiegen",name:"{modifier} abbiegen auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}"},left:{default:"Links abbiegen",name:"Links abbiegen auf {way_name}",destination:"Links abbiegen Richtung {destination}"},right:{default:"Rechts abbiegen",name:"Rechts abbiegen auf {way_name}",destination:"Rechts abbiegen Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Geradeaus weiterfahren Richtung {destination}"}},turn:{default:{default:"{modifier} abbiegen",name:"{modifier} abbiegen auf {way_name}",destination:"{modifier} abbiegen Richtung {destination}"},left:{default:"Links abbiegen",name:"Links abbiegen auf {way_name}",destination:"Links abbiegen Richtung {destination}"},right:{default:"Rechts abbiegen",name:"Rechts abbiegen auf {way_name}",destination:"Rechts abbiegen Richtung {destination}"},straight:{default:"Geradeaus weiterfahren",name:"Geradeaus weiterfahren auf {way_name}",destination:"Geradeaus weiterfahren Richtung {destination}"}},"use lane":{no_lanes:{default:"Geradeaus weiterfahren"},default:{default:"{lane_instruction}"}}}}},{}],25:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1st",2:"2nd",3:"3rd",4:"4th",5:"5th",6:"6th",7:"7th",8:"8th",9:"9th",10:"10th"},direction:{north:"north",northeast:"northeast",east:"east",southeast:"southeast",south:"south",southwest:"southwest",west:"west",northwest:"northwest"},modifier:{left:"left",right:"right","sharp left":"sharp left","sharp right":"sharp right","slight left":"slight left","slight right":"slight right",straight:"straight",uturn:"U-turn"},lanes:{xo:"Keep right",ox:"Keep left",xox:"Keep in the middle",oxo:"Keep left or right"}},modes:{ferry:{default:"Take the ferry",name:"Take the ferry {way_name}",destination:"Take the ferry towards {destination}"}},phrase:{"two linked by distance":"{instruction_one}, then, in {distance}, {instruction_two}","two linked":"{instruction_one}, then {instruction_two}","one in distance":"In {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"You have arrived at your {nth} destination",upcoming:"You will arrive at your {nth} destination",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}"},left:{default:"You have arrived at your {nth} destination, on the left",upcoming:"You will arrive at your {nth} destination, on the left",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the left"},right:{default:"You have arrived at your {nth} destination, on the right",upcoming:"You will arrive at your {nth} destination, on the right",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the right"},"sharp left":{default:"You have arrived at your {nth} destination, on the left",upcoming:"You will arrive at your {nth} destination, on the left",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the left"},"sharp right":{default:"You have arrived at your {nth} destination, on the right",upcoming:"You will arrive at your {nth} destination, on the right",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the right"},"slight right":{default:"You have arrived at your {nth} destination, on the right",upcoming:"You will arrive at your {nth} destination, on the right",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the right"},"slight left":{default:"You have arrived at your {nth} destination, on the left",upcoming:"You will arrive at your {nth} destination, on the left",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, on the left"},straight:{default:"You have arrived at your {nth} destination, straight ahead",upcoming:"You will arrive at your {nth} destination, straight ahead",short:"You have arrived","short-upcoming":"You will arrive",named:"You have arrived at {waypoint_name}, straight ahead"}},continue:{default:{default:"Turn {modifier}",name:"Turn {modifier} to stay on {way_name}",destination:"Turn {modifier} towards {destination}",exit:"Turn {modifier} onto {way_name}"},straight:{default:"Continue straight",name:"Continue straight to stay on {way_name}",destination:"Continue towards {destination}",distance:"Continue straight for {distance}",namedistance:"Continue on {way_name} for {distance}"},"sharp left":{default:"Make a sharp left",name:"Make a sharp left to stay on {way_name}",destination:"Make a sharp left towards {destination}"},"sharp right":{default:"Make a sharp right",name:"Make a sharp right to stay on {way_name}",destination:"Make a sharp right towards {destination}"},"slight left":{default:"Make a slight left",name:"Make a slight left to stay on {way_name}",destination:"Make a slight left towards {destination}"},"slight right":{default:"Make a slight right",name:"Make a slight right to stay on {way_name}",destination:"Make a slight right towards {destination}"},uturn:{default:"Make a U-turn",name:"Make a U-turn and continue on {way_name}",destination:"Make a U-turn towards {destination}"}},depart:{default:{default:"Head {direction}",name:"Head {direction} on {way_name}",namedistance:"Head {direction} on {way_name} for {distance}"}},"end of road":{default:{default:"Turn {modifier}",name:"Turn {modifier} onto {way_name}",destination:"Turn {modifier} towards {destination}"},straight:{default:"Continue straight",name:"Continue straight onto {way_name}",destination:"Continue straight towards {destination}"},uturn:{default:"Make a U-turn at the end of the road",name:"Make a U-turn onto {way_name} at the end of the road",destination:"Make a U-turn towards {destination} at the end of the road"}},fork:{default:{default:"Keep {modifier} at the fork",name:"Keep {modifier} onto {way_name}",destination:"Keep {modifier} towards {destination}"},"slight left":{default:"Keep left at the fork",name:"Keep left onto {way_name}",destination:"Keep left towards {destination}"},"slight right":{default:"Keep right at the fork",name:"Keep right onto {way_name}",destination:"Keep right towards {destination}"},"sharp left":{default:"Take a sharp left at the fork",name:"Take a sharp left onto {way_name}",destination:"Take a sharp left towards {destination}"},"sharp right":{default:"Take a sharp right at the fork",name:"Take a sharp right onto {way_name}",destination:"Take a sharp right towards {destination}"},uturn:{default:"Make a U-turn",name:"Make a U-turn onto {way_name}",destination:"Make a U-turn towards {destination}"}},merge:{default:{default:"Merge {modifier}",name:"Merge {modifier} onto {way_name}",destination:"Merge {modifier} towards {destination}"},straight:{default:"Merge",name:"Merge onto {way_name}",destination:"Merge towards {destination}"},"slight left":{default:"Merge left",name:"Merge left onto {way_name}",destination:"Merge left towards {destination}"},"slight right":{default:"Merge right",name:"Merge right onto {way_name}",destination:"Merge right towards {destination}"},"sharp left":{default:"Merge left",name:"Merge left onto {way_name}",destination:"Merge left towards {destination}"},"sharp right":{default:"Merge right",name:"Merge right onto {way_name}",destination:"Merge right towards {destination}"},uturn:{default:"Make a U-turn",name:"Make a U-turn onto {way_name}",destination:"Make a U-turn towards {destination}"}},"new name":{default:{default:"Continue {modifier}",name:"Continue {modifier} onto {way_name}",destination:"Continue {modifier} towards {destination}"},straight:{default:"Continue straight",name:"Continue onto {way_name}",destination:"Continue towards {destination}"},"sharp left":{default:"Take a sharp left",name:"Take a sharp left onto {way_name}",destination:"Take a sharp left towards {destination}"},"sharp right":{default:"Take a sharp right",name:"Take a sharp right onto {way_name}",destination:"Take a sharp right towards {destination}"},"slight left":{default:"Continue slightly left",name:"Continue slightly left onto {way_name}", 2503destination:"Continue slightly left towards {destination}"},"slight right":{default:"Continue slightly right",name:"Continue slightly right onto {way_name}",destination:"Continue slightly right towards {destination}"},uturn:{default:"Make a U-turn",name:"Make a U-turn onto {way_name}",destination:"Make a U-turn towards {destination}"}},notification:{default:{default:"Continue {modifier}",name:"Continue {modifier} onto {way_name}",destination:"Continue {modifier} towards {destination}"},uturn:{default:"Make a U-turn",name:"Make a U-turn onto {way_name}",destination:"Make a U-turn towards {destination}"}},"off ramp":{default:{default:"Take the ramp",name:"Take the ramp onto {way_name}",destination:"Take the ramp towards {destination}",exit:"Take exit {exit}",exit_destination:"Take exit {exit} towards {destination}"},left:{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},right:{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"},"sharp left":{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},"sharp right":{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"},"slight left":{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},"slight right":{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"}},"on ramp":{default:{default:"Take the ramp",name:"Take the ramp onto {way_name}",destination:"Take the ramp towards {destination}"},left:{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}"},right:{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}"},"sharp left":{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}"},"sharp right":{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}"},"slight left":{default:"Take the ramp on the left",name:"Take the ramp on the left onto {way_name}",destination:"Take the ramp on the left towards {destination}"},"slight right":{default:"Take the ramp on the right",name:"Take the ramp on the right onto {way_name}",destination:"Take the ramp on the right towards {destination}"}},rotary:{default:{default:{default:"Enter the traffic circle",name:"Enter the traffic circle and exit onto {way_name}",destination:"Enter the traffic circle and exit towards {destination}"},name:{default:"Enter {rotary_name}",name:"Enter {rotary_name} and exit onto {way_name}",destination:"Enter {rotary_name} and exit towards {destination}"},exit:{default:"Enter the traffic circle and take the {exit_number} exit",name:"Enter the traffic circle and take the {exit_number} exit onto {way_name}",destination:"Enter the traffic circle and take the {exit_number} exit towards {destination}"},name_exit:{default:"Enter {rotary_name} and take the {exit_number} exit",name:"Enter {rotary_name} and take the {exit_number} exit onto {way_name}",destination:"Enter {rotary_name} and take the {exit_number} exit towards {destination}"}}},roundabout:{default:{exit:{default:"Enter the traffic circle and take the {exit_number} exit",name:"Enter the traffic circle and take the {exit_number} exit onto {way_name}",destination:"Enter the traffic circle and take the {exit_number} exit towards {destination}"},default:{default:"Enter the traffic circle",name:"Enter the traffic circle and exit onto {way_name}",destination:"Enter the traffic circle and exit towards {destination}"}}},"roundabout turn":{default:{default:"Make a {modifier}",name:"Make a {modifier} onto {way_name}",destination:"Make a {modifier} towards {destination}"},left:{default:"Turn left",name:"Turn left onto {way_name}",destination:"Turn left towards {destination}"},right:{default:"Turn right",name:"Turn right onto {way_name}",destination:"Turn right towards {destination}"},straight:{default:"Continue straight",name:"Continue straight onto {way_name}",destination:"Continue straight towards {destination}"}},"exit roundabout":{default:{default:"Exit the traffic circle",name:"Exit the traffic circle onto {way_name}",destination:"Exit the traffic circle towards {destination}"}},"exit rotary":{default:{default:"Exit the traffic circle",name:"Exit the traffic circle onto {way_name}",destination:"Exit the traffic circle towards {destination}"}},turn:{default:{default:"Make a {modifier}",name:"Make a {modifier} onto {way_name}",destination:"Make a {modifier} towards {destination}"},left:{default:"Turn left",name:"Turn left onto {way_name}",destination:"Turn left towards {destination}"},right:{default:"Turn right",name:"Turn right onto {way_name}",destination:"Turn right towards {destination}"},straight:{default:"Go straight",name:"Go straight onto {way_name}",destination:"Go straight towards {destination}"}},"use lane":{no_lanes:{default:"Continue straight"},default:{default:"{lane_instruction}"}}}}},{}],26:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1.",2:"2.",3:"3.",4:"4.",5:"5.",6:"6.",7:"7.",8:"8.",9:"9.",10:"10."},direction:{north:"norden",northeast:"nord-orienten",east:"orienten",southeast:"sud-orienten",south:"suden",southwest:"sud-okcidenten",west:"okcidenten",northwest:"nord-okcidenten"},modifier:{left:"maldekstren",right:"dekstren","sharp left":"maldekstregen","sharp right":"dekstregen","slight left":"maldekstreten","slight right":"dekstreten",straight:"rekten",uturn:"turniÄu malantaÅen"},lanes:{xo:"Veturu dekstre",ox:"Veturu maldekstre",xox:"Veturu meze",oxo:"Veturu dekstre aÅ maldekstre"}},modes:{ferry:{default:"EnpramiÄu",name:"EnpramiÄu {way_name}",destination:"EnpramiÄu direkte al {destination}"}},phrase:{"two linked by distance":"{instruction_one} kaj post {distance} {instruction_two}","two linked":"{instruction_one} kaj sekve {instruction_two}","one in distance":"Post {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"elveturejo {exit}"},arrive:{default:{default:"Vi atingis vian {nth} celon",upcoming:"Vi atingos vian {nth} celon",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}"},left:{default:"Vi atingis vian {nth} celon Äe maldekstre",upcoming:"Vi atingos vian {nth} celon Äe maldekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe maldekstre"},right:{default:"Vi atingis vian {nth} celon Äe dekstre",upcoming:"Vi atingos vian {nth} celon Äe dekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe dekstre"},"sharp left":{default:"Vi atingis vian {nth} celon Äe maldekstre",upcoming:"Vi atingos vian {nth} celon Äe maldekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe maldekstre"},"sharp right":{default:"Vi atingis vian {nth} celon Äe dekstre",upcoming:"Vi atingos vian {nth} celon Äe dekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe dekstre"},"slight right":{default:"Vi atingis vian {nth} celon Äe dekstre",upcoming:"Vi atingos vian {nth} celon Äe dekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe dekstre"},"slight left":{default:"Vi atingis vian {nth} celon Äe maldekstre",upcoming:"Vi atingos vian {nth} celon Äe maldekstre",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name}, Äe maldekstre"},straight:{default:"Vi atingis vian {nth} celon",upcoming:"Vi atingos vian {nth} celon rekte",short:"Vi atingis","short-upcoming":"Vi atingos",named:"Vi atingis {waypoint_name} antaÅe"}},continue:{default:{default:"Veturu {modifier}",name:"Veturu {modifier} al {way_name}",destination:"Veturu {modifier} direkte al {destination}",exit:"Veturu {modifier} direkte al {way_name}"},straight:{default:"Veturu rekten",name:"Veturu rekten al {way_name}",destination:"Veturu rekten direkte al {destination}",distance:"Veturu rekten dum {distance}",namedistance:"Veturu rekten al {way_name} dum {distance}"},"sharp left":{default:"TurniÄu ege maldekstren",name:"TurniÄu ege maldekstren al {way_name}",destination:"TurniÄu ege maldekstren direkte al {destination}"},"sharp right":{default:"TurniÄu ege dekstren",name:"TurniÄu ege dekstren al {way_name}",destination:"TurniÄu ege dekstren direkte al {destination}"},"slight left":{default:"TurniÄu ete maldekstren",name:"TurniÄu ete maldekstren al {way_name}",destination:"TurniÄu ete maldekstren direkte al {destination}"},"slight right":{default:"TurniÄu ete dekstren",name:"TurniÄu ete dekstren al {way_name}",destination:"TurniÄu ete dekstren direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen",name:"TurniÄu malantaÅen al {way_name}",destination:"TurniÄu malantaÅen direkte al {destination}"}},depart:{default:{default:"DirektiÄu {direction}",name:"DirektiÄu {direction} al {way_name}",namedistance:"DirektiÄu {direction} al {way_name} tra {distance}"}},"end of road":{default:{default:"Veturu {modifier}",name:"Veturu {modifier} direkte al {way_name}",destination:"Veturu {modifier} direkte al {destination}"},straight:{default:"Veturu rekten",name:"Veturu rekten al {way_name}",destination:"Veturu rekten direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen Äe fino de la vojo",name:"TurniÄu malantaÅen al {way_name} Äe fino de la vojo",destination:"TurniÄu malantaÅen direkte al {destination} Äe fino de la vojo"}},fork:{default:{default:"DaÅru {modifier} Äe la vojforko",name:"Pluu {modifier} al {way_name}",destination:"Pluu {modifier} direkte al {destination}"},"slight left":{default:"Maldekstren Äe la vojforko",name:"Pluu maldekstren al {way_name}",destination:"Pluu maldekstren direkte al {destination}"},"slight right":{default:"Dekstren Äe la vojforko",name:"Pluu dekstren al {way_name}",destination:"Pluu dekstren direkte al {destination}"},"sharp left":{default:"Ege maldekstren Äe la vojforko",name:"TurniÄu ege maldekstren al {way_name}",destination:"TurniÄu ege maldekstren direkte al {destination}"},"sharp right":{default:"Ege dekstren Äe la vojforko",name:"TurniÄu ege dekstren al {way_name}",destination:"TurniÄu ege dekstren direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen",name:"TurniÄu malantaÅen al {way_name}",destination:"TurniÄu malantaÅen direkte al {destination}"}},merge:{default:{default:"Enveturu {modifier}",name:"Enveturu {modifier} al {way_name}",destination:"Enveturu {modifier} direkte al {destination}"},straight:{default:"Enveturu",name:"Enveturu al {way_name}",destination:"Enveturu direkte al {destination}"},"slight left":{default:"Enveturu de maldekstre",name:"Enveturu de maldekstre al {way_name}",destination:"Enveturu de maldekstre direkte al {destination}"},"slight right":{default:"Enveturu de dekstre",name:"Enveturu de dekstre al {way_name}",destination:"Enveturu de dekstre direkte al {destination}"},"sharp left":{default:"Enveturu de maldekstre",name:"Enveture de maldekstre al {way_name}",destination:"Enveturu de maldekstre direkte al {destination}"},"sharp right":{default:"Enveturu de dekstre",name:"Enveturu de dekstre al {way_name}",destination:"Enveturu de dekstre direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen",name:"TurniÄu malantaÅen al {way_name}",destination:"TurniÄu malantaÅen direkte al {destination}"}},"new name":{default:{default:"Pluu {modifier}",name:"Pluu {modifier} al {way_name}",destination:"Pluu {modifier} direkte al {destination}"},straight:{default:"Veturu rekten",name:"Veturu rekten al {way_name}",destination:"Veturu rekten direkte al {destination}"},"sharp left":{default:"TurniÄu ege maldekstren",name:"TurniÄu ege maldekstren al {way_name}",destination:"TurniÄu ege maldekstren direkte al {destination}"},"sharp right":{default:"TurniÄu ege dekstren",name:"TurniÄu ege dekstren al {way_name}",destination:"TurniÄu ege dekstren direkte al {destination}"},"slight left":{default:"Pluu ete maldekstren",name:"Pluu ete maldekstren al {way_name}",destination:"Pluu ete maldekstren direkte al {destination}"},"slight right":{default:"Pluu ete dekstren",name:"Pluu ete dekstren al {way_name}",destination:"Pluu ete dekstren direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen",name:"TurniÄu malantaÅen al {way_name}",destination:"TurniÄu malantaÅen direkte al {destination}"}},notification:{default:{default:"Pluu {modifier}",name:"Pluu {modifier} al {way_name}",destination:"Pluu {modifier} direkte al {destination}"},uturn:{default:"TurniÄu malantaÅen",name:"TurniÄu malantaÅen al {way_name}",destination:"TurniÄu malantaÅen direkte al {destination}"}},"off ramp":{default:{default:"DirektiÄu al enveturejo",name:"DirektiÄu al enveturejo al {way_name}",destination:"DirektiÄu al enveturejo direkte al {destination}",exit:"DirektiÄu al elveturejo {exit}",exit_destination:"DirektiÄu al elveturejo {exit} direkte al {destination}"},left:{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}",exit:"DirektiÄu al elveturejo {exit} Äe maldekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe maldekstre direkte al {destination}"},right:{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}",exit:"DirektiÄu al {exit} elveturejo Äe ldekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe dekstre direkte al {destination}"},"sharp left":{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}",exit:"DirektiÄu al {exit} elveturejo Äe maldekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe maldekstre direkte al {destination}"},"sharp right":{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}",exit:"DirektiÄu al elveturejo {exit} Äe dekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe dekstre direkte al {destination}"},"slight left":{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}",exit:"DirektiÄu al {exit} elveturejo Äe maldekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe maldekstre direkte al {destination}"},"slight right":{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}",exit:"DirektiÄu al {exit} elveturejo Äe ldekstre",exit_destination:"DirektiÄu al elveturejo {exit} Äe dekstre direkte al {destination}"}},"on ramp":{default:{default:"DirektiÄu al enveturejo",name:"DirektiÄu al enveturejo al {way_name}",destination:"DirektiÄu al enveturejo direkte al {destination}"},left:{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}"},right:{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}"},"sharp left":{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}"},"sharp right":{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}"},"slight left":{default:"DirektiÄu al enveturejo Äe maldekstre",name:"DirektiÄu al enveturejo Äe maldekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe maldekstre al {destination}"},"slight right":{default:"DirektiÄu al enveturejo Äe dekstre",name:"DirektiÄu al enveturejo Äe dekstre al {way_name}",destination:"DirektiÄu al enveturejo Äe dekstre al {destination}"}},rotary:{default:{default:{default:"Enveturu trafikcirklegon",name:"Enveturu trafikcirklegon kaj elveturu al {way_name}",destination:"Enveturu trafikcirklegon kaj elveturu direkte al {destination}"},name:{default:"Enveturu {rotary_name}",name:"Enveturu {rotary_name} kaj elveturu al {way_name}",destination:"Enveturu {rotary_name} kaj elveturu direkte al {destination}"},exit:{default:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo",name:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo al {way_name}",destination:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo direkte al {destination}"},name_exit:{default:"Enveturu {rotary_name} kaj sekve al {exit_number} elveturejo",name:"Enveturu {rotary_name} kaj sekve al {exit_number} elveturejo al {way_name}",destination:"Enveturu {rotary_name} kaj sekve al {exit_number} elveturejo direkte al {destination}"}}},roundabout:{default:{exit:{default:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo",name:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo al {way_name}",destination:"Enveturu trafikcirklegon kaj sekve al {exit_number} elveturejo direkte al {destination}"},default:{default:"Enveturu trafikcirklegon",name:"Enveturu trafikcirklegon kaj elveturu al {way_name}",destination:"Enveturu trafikcirklegon kaj elveturu direkte al {destination}"}}},"roundabout turn":{default:{default:"Veturu {modifier}",name:"Veturu {modifier} al {way_name}",destination:"Veturu {modifier} direkte al {destination}"},left:{default:"TurniÄu maldekstren",name:"TurniÄu maldekstren al {way_name}",destination:"TurniÄu maldekstren direkte al {destination}"},right:{default:"TurniÄu dekstren",name:"TurniÄu dekstren al {way_name}",destination:"TurniÄu dekstren direkte al {destination}"},straight:{default:"Pluu rekten",name:"Veturu rekten al {way_name}",destination:"Veturu rekten direkte al {destination}"}},"exit roundabout":{default:{default:"Elveturu trafikcirklegon",name:"Elveturu trafikcirklegon al {way_name}",destination:"Elveturu trafikcirklegon direkte al {destination}"}},"exit rotary":{default:{default:"Eliru trafikcirklegon",name:"Elveturu trafikcirklegon al {way_name}",destination:"Elveturu trafikcirklegon direkte al {destination}"}},turn:{default:{default:"Veturu {modifier}",name:"Veturu {modifier} al {way_name}",destination:"Veturu {modifier} direkte al {destination}"},left:{default:"TurniÄu maldekstren",name:"TurniÄu maldekstren al {way_name}",destination:"TurniÄu maldekstren direkte al {destination}"},right:{default:"TurniÄu dekstren",name:"TurniÄu dekstren al {way_name}",destination:"TurniÄu dekstren direkte al {destination}"},straight:{default:"Veturu rekten",name:"Veturu rekten al {way_name}",destination:"Veturu rekten direkte al {destination}"}},"use lane":{no_lanes:{default:"Pluu rekten"},default:{default:"{lane_instruction}"}}}}},{}],27:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1ª",2:"2ª",3:"3ª",4:"4ª",5:"5ª",6:"6ª",7:"7ª",8:"8ª",9:"9ª",10:"10ª"},direction:{north:"norte",northeast:"noreste",east:"este",southeast:"sureste",south:"sur",southwest:"suroeste",west:"oeste",northwest:"noroeste"},modifier:{left:"a la izquierda",right:"a la derecha","sharp left":"cerrada a la izquierda","sharp right":"cerrada a la derecha","slight left":"ligeramente a la izquierda","slight right":"ligeramente a la derecha",straight:"recto",uturn:"cambio de sentido"},lanes:{xo:"Mantente a la derecha",ox:"Mantente a la izquierda",xox:"Mantente en el medio",oxo:"Mantente a la izquierda o a la derecha"}},modes:{ferry:{default:"Coge el ferry",name:"Coge el ferry {way_name}",destination:"Coge el ferry hacia {destination}"}},phrase:{"two linked by distance":"{instruction_one} y luego en {distance}, {instruction_two}","two linked":"{instruction_one} y luego {instruction_two}","one in distance":"A {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"salida {exit}"},arrive:{default:{default:"Has llegado a tu {nth} destino",upcoming:"Vas a llegar a tu {nth} destino",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}"},left:{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},right:{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"sharp left":{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},"sharp right":{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"slight right":{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"slight left":{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},straight:{default:"Has llegado a tu {nth} destino, en frente",upcoming:"Vas a llegar a tu {nth} destino, en frente",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, en frente"}},continue:{default:{default:"Gire {modifier}",name:"Cruce {modifier} en {way_name}",destination:"Gire {modifier} hacia {destination}",exit:"Gire {modifier} en {way_name}"},straight:{default:"Continúa recto",name:"Continúa en {way_name}",destination:"Continúa hacia {destination}",distance:"Continúa recto por {distance}",namedistance:"Continúa recto en {way_name} por {distance}"},"sharp left":{default:"Gire a la izquierda",name:"Gire a la izquierda en {way_name}",destination:"Gire a la izquierda hacia {destination}"},"sharp right":{default:"Gire a la derecha",name:"Gire a la derecha en {way_name}",destination:"Gire a la derecha hacia {destination}"},"slight left":{default:"Gire a la izquierda",name:"Doble levemente a la izquierda en {way_name}",destination:"Gire a la izquierda hacia {destination}"},"slight right":{default:"Gire a la izquierda",name:"Doble levemente a la derecha en {way_name}",destination:"Gire a la izquierda hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido y continúa en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},depart:{default:{default:"DirÃgete al {direction}",name:"DirÃgete al {direction} por {way_name}",namedistance:"DirÃgete al {direction} en {way_name} por {distance}"}},"end of road":{default:{default:"Al final de la calle gira {modifier}",name:"Al final de la calle gira {modifier} por {way_name}",destination:"Al final de la calle gira {modifier} hacia {destination}"},straight:{default:"Al final de la calle continúa recto",name:"Al final de la calle continúa recto por {way_name}",destination:"Al final de la calle continúa recto hacia {destination}"},uturn:{default:"Al final de la calle haz un cambio de sentido",name:"Al final de la calle haz un cambio de sentido en {way_name}",destination:"Al final de la calle haz un cambio de sentido hacia {destination}"}},fork:{default:{default:"Mantente {modifier} en el cruce",name:"Mantente {modifier} por {way_name}",destination:"Mantente {modifier} hacia {destination}"},"slight left":{default:"Mantente a la izquierda en el cruce",name:"Mantente a la izquierda por {way_name}",destination:"Mantente a la izquierda hacia {destination}"},"slight right":{default:"Mantente a la derecha en el cruce",name:"Mantente a la derecha por {way_name}",destination:"Mantente a la derecha hacia {destination}"},"sharp left":{default:"Gira la izquierda en el cruce",name:"Gira a la izquierda por {way_name}",destination:"Gira a la izquierda hacia {destination}"},"sharp right":{default:"Gira a la derecha en el cruce",name:"Gira a la derecha por {way_name}",destination:"Gira a la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},merge:{default:{default:"Incorpórate {modifier}",name:"Incorpórate {modifier} por {way_name}",destination:"Incorpórate {modifier} hacia {destination}"},straight:{default:"Incorpórate",name:"Incorpórate por {way_name}",destination:"Incorpórate hacia {destination}"},"slight left":{default:"Incorpórate a la izquierda",name:"Incorpórate a la izquierda por {way_name}",destination:"Incorpórate a la izquierda hacia {destination}"},"slight right":{default:"Incorpórate a la derecha",name:"Incorpórate a la derecha por {way_name}",destination:"Incorpórate a la derecha hacia {destination}"},"sharp left":{default:"Incorpórate a la izquierda",name:"Incorpórate a la izquierda por {way_name}",destination:"Incorpórate a la izquierda hacia {destination}"},"sharp right":{default:"Incorpórate a la derecha",name:"Incorpórate a la derecha por {way_name}",destination:"Incorpórate a la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},"new name":{default:{default:"Continúa {modifier}",name:"Continúa {modifier} por {way_name}",destination:"Continúa {modifier} hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa por {way_name}",destination:"Continúa hacia {destination}"},"sharp left":{default:"Gira a la izquierda",name:"Gira a la izquierda por {way_name}",destination:"Gira a la izquierda hacia {destination}"},"sharp right":{default:"Gira a la derecha",name:"Gira a la derecha por {way_name}",destination:"Gira a la derecha hacia {destination}"},"slight left":{default:"Continúa ligeramente por la izquierda",name:"Continúa ligeramente por la izquierda por {way_name}",destination:"Continúa ligeramente por la izquierda hacia {destination}"},"slight right":{default:"Continúa ligeramente por la derecha",name:"Continúa ligeramente por la derecha por {way_name}",destination:"Continúa ligeramente por la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},notification:{default:{default:"Continúa {modifier}",name:"Continúa {modifier} por {way_name}",destination:"Continúa {modifier} hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},"off ramp":{default:{default:"Coge la cuesta abajo",name:"Coge la cuesta abajo por {way_name}",destination:"Coge la cuesta abajo hacia {destination}",exit:"Coge la cuesta abajo {exit}",exit_destination:"Coge la cuesta abajo {exit} hacia {destination}"},left:{default:"Coge la cuesta abajo de la izquierda",name:"Coge la cuesta abajo de la izquierda por {way_name}",destination:"Coge la cuesta abajo de la izquierda hacia {destination}",exit:"Coge la cuesta abajo {exit} a tu izquierda",exit_destination:"Coge la cuesta abajo {exit} a tu izquierda hacia {destination}"},right:{default:"Coge la cuesta abajo de la derecha",name:"Coge la cuesta abajo de la derecha por {way_name}",destination:"Coge la cuesta abajo de la derecha hacia {destination}",exit:"Coge la cuesta abajo {exit}",exit_destination:"Coge la cuesta abajo {exit} hacia {destination}"},"sharp left":{default:"Coge la cuesta abajo de la izquierda",name:"Coge la cuesta abajo de la izquierda por {way_name}",destination:"Coge la cuesta abajo de la izquierda hacia {destination}",exit:"Coge la cuesta abajo {exit} a tu izquierda",exit_destination:"Coge la cuesta abajo {exit} a tu izquierda hacia {destination}"},"sharp right":{default:"Coge la cuesta abajo de la derecha",name:"Coge la cuesta abajo de la derecha por {way_name}",destination:"Coge la cuesta abajo de la derecha hacia {destination}",exit:"Coge la cuesta abajo {exit}",exit_destination:"Coge la cuesta abajo {exit} hacia {destination}"},"slight left":{default:"Coge la cuesta abajo de la izquierda",name:"Coge la cuesta abajo de la izquierda por {way_name}",destination:"Coge la cuesta abajo de la izquierda hacia {destination}",exit:"Coge la cuesta abajo {exit} a tu izquierda",exit_destination:"Coge la cuesta abajo {exit} a tu izquierda hacia {destination}"},"slight right":{default:"Coge la cuesta abajo de la derecha",name:"Coge la cuesta abajo de la derecha por {way_name}",destination:"Coge la cuesta abajo de la derecha hacia {destination}",exit:"Coge la cuesta abajo {exit}",exit_destination:"Coge la cuesta abajo {exit} hacia {destination}"}},"on ramp":{default:{default:"Coge la cuesta",name:"Coge la cuesta por {way_name}",destination:"Coge la cuesta hacia {destination}"},left:{default:"Coge la cuesta de la izquierda",name:"Coge la cuesta de la izquierda por {way_name}",destination:"Coge la cuesta de la izquierda hacia {destination}"},right:{default:"Coge la cuesta de la derecha",name:"Coge la cuesta de la derecha por {way_name}",destination:"Coge la cuesta de la derecha hacia {destination}"},"sharp left":{default:"Coge la cuesta de la izquierda",name:"Coge la cuesta de la izquierda por {way_name}",destination:"Coge la cuesta de la izquierda hacia {destination}"},"sharp right":{default:"Coge la cuesta de la derecha",name:"Coge la cuesta de la derecha por {way_name}",destination:"Coge la cuesta de la derecha hacia {destination}"},"slight left":{default:"Coge la cuesta de la izquierda",name:"Coge la cuesta de la izquierda por {way_name}",destination:"Coge la cuesta de la izquierda hacia {destination}"},"slight right":{default:"Coge la cuesta de la derecha",name:"Coge la cuesta de la derecha por {way_name}",destination:"Coge la cuesta de la derecha hacia {destination}"}},rotary:{default:{default:{default:"Incorpórate en la rotonda",name:"En la rotonda sal por {way_name}",destination:"En la rotonda sal hacia {destination}"},name:{default:"En {rotary_name}",name:"En {rotary_name} sal por {way_name}",destination:"En {rotary_name} sal hacia {destination}"},exit:{default:"En la rotonda toma la {exit_number} salida", 2504name:"En la rotonda toma la {exit_number} salida por {way_name}",destination:"En la rotonda toma la {exit_number} salida hacia {destination}"},name_exit:{default:"En {rotary_name} toma la {exit_number} salida",name:"En {rotary_name} toma la {exit_number} salida por {way_name}",destination:"En {rotary_name} toma la {exit_number} salida hacia {destination}"}}},roundabout:{default:{exit:{default:"En la rotonda toma la {exit_number} salida",name:"En la rotonda toma la {exit_number} salida por {way_name}",destination:"En la rotonda toma la {exit_number} salida hacia {destination}"},default:{default:"Incorpórate en la rotonda",name:"Incorpórate en la rotonda y sal en {way_name}",destination:"Incorpórate en la rotonda y sal hacia {destination}"}}},"roundabout turn":{default:{default:"Siga {modifier}",name:"Siga {modifier} en {way_name}",destination:"Siga {modifier} hacia {destination}"},left:{default:"Gire a la izquierda",name:"Gire a la izquierda en {way_name}",destination:"Gire a la izquierda hacia {destination}"},right:{default:"Gire a la derecha",name:"Gire a la derecha en {way_name}",destination:"Gire a la derecha hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa recto por {way_name}",destination:"Continúa recto hacia {destination}"}},"exit roundabout":{default:{default:"Sal la rotonda",name:"Toma la salida por {way_name}",destination:"Toma la salida hacia {destination}"}},"exit rotary":{default:{default:"Sal la rotonda",name:"Toma la salida por {way_name}",destination:"Toma la salida hacia {destination}"}},turn:{default:{default:"Gira {modifier}",name:"Gira {modifier} por {way_name}",destination:"Gira {modifier} hacia {destination}"},left:{default:"Gira a la izquierda",name:"Gira a la izquierda por {way_name}",destination:"Gira a la izquierda hacia {destination}"},right:{default:"Gira a la derecha",name:"Gira a la derecha por {way_name}",destination:"Gira a la derecha hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa recto por {way_name}",destination:"Continúa recto hacia {destination}"}},"use lane":{no_lanes:{default:"Continúa recto"},default:{default:"{lane_instruction}"}}}}},{}],28:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1ª",2:"2ª",3:"3ª",4:"4ª",5:"5ª",6:"6ª",7:"7ª",8:"8ª",9:"9ª",10:"10ª"},direction:{north:"norte",northeast:"noreste",east:"este",southeast:"sureste",south:"sur",southwest:"suroeste",west:"oeste",northwest:"noroeste"},modifier:{left:"izquierda",right:"derecha","sharp left":"cerrada a la izquierda","sharp right":"cerrada a la derecha","slight left":"levemente a la izquierda","slight right":"levemente a la derecha",straight:"recto",uturn:"cambio de sentido"},lanes:{xo:"Mantente a la derecha",ox:"Mantente a la izquierda",xox:"Mantente en el medio",oxo:"Mantente a la izquierda o derecha"}},modes:{ferry:{default:"Coge el ferry",name:"Coge el ferry {way_name}",destination:"Coge el ferry a {destination}"}},phrase:{"two linked by distance":"{instruction_one} y luego a {distance}, {instruction_two}","two linked":"{instruction_one} y luego {instruction_two}","one in distance":"A {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"salida {exit}"},arrive:{default:{default:"Has llegado a tu {nth} destino",upcoming:"Vas a llegar a tu {nth} destino",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}"},left:{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},right:{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"sharp left":{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},"sharp right":{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"slight right":{default:"Has llegado a tu {nth} destino, a la derecha",upcoming:"Vas a llegar a tu {nth} destino, a la derecha",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la derecha"},"slight left":{default:"Has llegado a tu {nth} destino, a la izquierda",upcoming:"Vas a llegar a tu {nth} destino, a la izquierda",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, a la izquierda"},straight:{default:"Has llegado a tu {nth} destino, en frente",upcoming:"Vas a llegar a tu {nth} destino, en frente",short:"Has llegado","short-upcoming":"Vas a llegar",named:"Has llegado a {waypoint_name}, en frente"}},continue:{default:{default:"Gira a {modifier}",name:"Cruza a la{modifier} en {way_name}",destination:"Gira a {modifier} hacia {destination}",exit:"Gira a {modifier} en {way_name}"},straight:{default:"Continúa recto",name:"Continúa en {way_name}",destination:"Continúa hacia {destination}",distance:"Continúa recto por {distance}",namedistance:"Continúa recto en {way_name} por {distance}"},"sharp left":{default:"Gira a la izquierda",name:"Gira a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},"sharp right":{default:"Gira a la derecha",name:"Gira a la derecha en {way_name}",destination:"Gira a la derecha hacia {destination}"},"slight left":{default:"Gira a la izquierda",name:"Dobla levemente a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},"slight right":{default:"Gira a la izquierda",name:"Dobla levemente a la derecha en {way_name}",destination:"Gira a la izquierda hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido y continúa en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},depart:{default:{default:"Ve a {direction}",name:"Ve a {direction} en {way_name}",namedistance:"Ve a {direction} en {way_name} por {distance}"}},"end of road":{default:{default:"Gira a {modifier}",name:"Gira a {modifier} en {way_name}",destination:"Gira a {modifier} hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa recto en {way_name}",destination:"Continúa recto hacia {destination}"},uturn:{default:"Haz un cambio de sentido al final de la via",name:"Haz un cambio de sentido en {way_name} al final de la via",destination:"Haz un cambio de sentido hacia {destination} al final de la via"}},fork:{default:{default:"Mantente {modifier} en el cruza",name:"Mantente {modifier} en {way_name}",destination:"Mantente {modifier} hacia {destination}"},"slight left":{default:"Mantente a la izquierda en el cruza",name:"Mantente a la izquierda en {way_name}",destination:"Mantente a la izquierda hacia {destination}"},"slight right":{default:"Mantente a la derecha en el cruza",name:"Mantente a la derecha en {way_name}",destination:"Mantente a la derecha hacia {destination}"},"sharp left":{default:"Gira a la izquierda en el cruza",name:"Gira a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},"sharp right":{default:"Gira a la derecha en el cruza",name:"Gira a la derecha en {way_name}",destination:"Gira a la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},merge:{default:{default:"Incorpórate a {modifier}",name:"Incorpórate a {modifier} en {way_name}",destination:"Incorpórate a {modifier} hacia {destination}"},straight:{default:"Incorpórate",name:"Incorpórate a {way_name}",destination:"Incorpórate hacia {destination}"},"slight left":{default:"Incorpórate a la izquierda",name:"Incorpórate a la izquierda en {way_name}",destination:"Incorpórate a la izquierda hacia {destination}"},"slight right":{default:"Incorpórate a la derecha",name:"Incorpórate a la derecha en {way_name}",destination:"Incorpórate a la derecha hacia {destination}"},"sharp left":{default:"Incorpórate a la izquierda",name:"Incorpórate a la izquierda en {way_name}",destination:"Incorpórate a la izquierda hacia {destination}"},"sharp right":{default:"Incorpórate a la derecha",name:"Incorpórate a la derecha en {way_name}",destination:"Incorpórate a la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},"new name":{default:{default:"Continúa {modifier}",name:"Continúa {modifier} en {way_name}",destination:"Continúa {modifier} hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa en {way_name}",destination:"Continúa hacia {destination}"},"sharp left":{default:"Gira a la izquierda",name:"Gira a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},"sharp right":{default:"Gira a la derecha",name:"Gira a la derecha en {way_name}",destination:"Gira a la derecha hacia {destination}"},"slight left":{default:"Continúa levemente a la izquierda",name:"Continúa levemente a la izquierda en {way_name}",destination:"Continúa levemente a la izquierda hacia {destination}"},"slight right":{default:"Continúa levemente a la derecha",name:"Continúa levemente a la derecha en {way_name}",destination:"Continúa levemente a la derecha hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},notification:{default:{default:"Continúa {modifier}",name:"Continúa {modifier} en {way_name}",destination:"Continúa {modifier} hacia {destination}"},uturn:{default:"Haz un cambio de sentido",name:"Haz un cambio de sentido en {way_name}",destination:"Haz un cambio de sentido hacia {destination}"}},"off ramp":{default:{default:"Toma la salida",name:"Toma la salida en {way_name}",destination:"Toma la salida hacia {destination}",exit:"Toma la salida {exit}",exit_destination:"Toma la salida {exit} hacia {destination}"},left:{default:"Toma la salida en la izquierda",name:"Toma la salida en la izquierda en {way_name}",destination:"Toma la salida en la izquierda en {destination}",exit:"Toma la salida {exit} en la izquierda",exit_destination:"Toma la salida {exit} en la izquierda hacia {destination}"},right:{default:"Toma la salida en la derecha",name:"Toma la salida en la derecha en {way_name}",destination:"Toma la salida en la derecha hacia {destination}",exit:"Toma la salida {exit} en la derecha",exit_destination:"Toma la salida {exit} en la derecha hacia {destination}"},"sharp left":{default:"Ve cuesta abajo en la izquierda",name:"Ve cuesta abajo en la izquierda en {way_name}",destination:"Ve cuesta abajo en la izquierda hacia {destination}",exit:"Toma la salida {exit} en la izquierda",exit_destination:"Toma la salida {exit} en la izquierda hacia {destination}"},"sharp right":{default:"Ve cuesta abajo en la derecha",name:"Ve cuesta abajo en la derecha en {way_name}",destination:"Ve cuesta abajo en la derecha hacia {destination}",exit:"Toma la salida {exit} en la derecha",exit_destination:"Toma la salida {exit} en la derecha hacia {destination}"},"slight left":{default:"Ve cuesta abajo en la izquierda",name:"Ve cuesta abajo en la izquierda en {way_name}",destination:"Ve cuesta abajo en la izquierda hacia {destination}",exit:"Toma la salida {exit} en la izquierda",exit_destination:"Toma la salida {exit} en la izquierda hacia {destination}"},"slight right":{default:"Toma la salida en la derecha",name:"Toma la salida en la derecha en {way_name}",destination:"Toma la salida en la derecha hacia {destination}",exit:"Toma la salida {exit} en la derecha",exit_destination:"Toma la salida {exit} en la derecha hacia {destination}"}},"on ramp":{default:{default:"Toma la rampa",name:"Toma la rampa en {way_name}",destination:"Toma la rampa hacia {destination}"},left:{default:"Toma la rampa en la izquierda",name:"Toma la rampa en la izquierda en {way_name}",destination:"Toma la rampa en la izquierda hacia {destination}"},right:{default:"Toma la rampa en la derecha",name:"Toma la rampa en la derecha en {way_name}",destination:"Toma la rampa en la derecha hacia {destination}"},"sharp left":{default:"Toma la rampa en la izquierda",name:"Toma la rampa en la izquierda en {way_name}",destination:"Toma la rampa en la izquierda hacia {destination}"},"sharp right":{default:"Toma la rampa en la derecha",name:"Toma la rampa en la derecha en {way_name}",destination:"Toma la rampa en la derecha hacia {destination}"},"slight left":{default:"Toma la rampa en la izquierda",name:"Toma la rampa en la izquierda en {way_name}",destination:"Toma la rampa en la izquierda hacia {destination}"},"slight right":{default:"Toma la rampa en la derecha",name:"Toma la rampa en la derecha en {way_name}",destination:"Toma la rampa en la derecha hacia {destination}"}},rotary:{default:{default:{default:"Entra en la rotonda",name:"Entra en la rotonda y sal en {way_name}",destination:"Entra en la rotonda y sal hacia {destination}"},name:{default:"Entra en {rotary_name}",name:"Entra en {rotary_name} y sal en {way_name}",destination:"Entra en {rotary_name} y sal hacia {destination}"},exit:{default:"Entra en la rotonda y toma la {exit_number} salida",name:"Entra en la rotonda y toma la {exit_number} salida a {way_name}",destination:"Entra en la rotonda y toma la {exit_number} salida hacia {destination}"},name_exit:{default:"Entra en {rotary_name} y coge la {exit_number} salida",name:"Entra en {rotary_name} y coge la {exit_number} salida en {way_name}",destination:"Entra en {rotary_name} y coge la {exit_number} salida hacia {destination}"}}},roundabout:{default:{exit:{default:"Entra en la rotonda y toma la {exit_number} salida",name:"Entra en la rotonda y toma la {exit_number} salida a {way_name}",destination:"Entra en la rotonda y toma la {exit_number} salida hacia {destination}"},default:{default:"Entra en la rotonda",name:"Entra en la rotonda y sal en {way_name}",destination:"Entra en la rotonda y sal hacia {destination}"}}},"roundabout turn":{default:{default:"Sigue {modifier}",name:"Sigue {modifier} en {way_name}",destination:"Sigue {modifier} hacia {destination}"},left:{default:"Gira a la izquierda",name:"Gira a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},right:{default:"Gira a la derecha",name:"Gira a la derecha en {way_name}",destination:"Gira a la derecha hacia {destination}"},straight:{default:"Continúa recto",name:"Continúa recto en {way_name}",destination:"Continúa recto hacia {destination}"}},"exit roundabout":{default:{default:"Sal la rotonda",name:"Sal la rotonda en {way_name}",destination:"Sal la rotonda hacia {destination}"}},"exit rotary":{default:{default:"Sal la rotonda",name:"Sal la rotonda en {way_name}",destination:"Sal la rotonda hacia {destination}"}},turn:{default:{default:"Sigue {modifier}",name:"Sigue {modifier} en {way_name}",destination:"Sigue {modifier} hacia {destination}"},left:{default:"Gira a la izquierda",name:"Gira a la izquierda en {way_name}",destination:"Gira a la izquierda hacia {destination}"},right:{default:"Gira a la derecha",name:"Gira a la derecha en {way_name}",destination:"Gira a la derecha hacia {destination}"},straight:{default:"Ve recto",name:"Ve recto en {way_name}",destination:"Ve recto hacia {destination}"}},"use lane":{no_lanes:{default:"Continúa recto"},default:{default:"{lane_instruction}"}}}}},{}],29:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1.",2:"2.",3:"3.",4:"4.",5:"5.",6:"6.",7:"7.",8:"8.",9:"9.",10:"10."},direction:{north:"pohjoiseen",northeast:"koilliseen",east:"itään",southeast:"kaakkoon",south:"etelään",southwest:"lounaaseen",west:"länteen",northwest:"luoteeseen"},modifier:{left:"vasemmall(e/a)",right:"oikeall(e/a)","sharp left":"jyrkästi vasempaan","sharp right":"jyrkästi oikeaan","slight left":"loivasti vasempaan","slight right":"loivasti oikeaan",straight:"suoraan eteenpäin",uturn:"U-käännös"},lanes:{xo:"Pysy oikealla",ox:"Pysy vasemmalla",xox:"Pysy keskellä",oxo:"Pysy vasemmalla tai oikealla"}},modes:{ferry:{default:"Aja lautalle",name:"Aja lautalle {way_name}",destination:"Aja lautalle, jonka määränpää on {destination}"}},phrase:{"two linked by distance":"{instruction_one}, sitten {distance} päästä, {instruction_two}","two linked":"{instruction_one}, sitten {instruction_two}","one in distance":"{distance} päästä, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"{exit}"},arrive:{default:{default:"Olet saapunut {nth} määränpäähäsi",upcoming:"Saavut {nth} määränpäähäsi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}"},left:{default:"Olet saapunut {nth} määränpäähäsi, joka on vasemmalla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on vasemmalla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on vasemmalla puolellasi"},right:{default:"Olet saapunut {nth} määränpäähäsi, joka on oikealla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on oikealla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on oikealla puolellasi"},"sharp left":{default:"Olet saapunut {nth} määränpäähäsi, joka on vasemmalla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on vasemmalla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on vasemmalla puolellasi"},"sharp right":{default:"Olet saapunut {nth} määränpäähäsi, joka on oikealla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on oikealla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on oikealla puolellasi"},"slight right":{default:"Olet saapunut {nth} määränpäähäsi, joka on oikealla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on oikealla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on oikealla puolellasi"},"slight left":{default:"Olet saapunut {nth} määränpäähäsi, joka on vasemmalla puolellasi",upcoming:"Saavut {nth} määränpäähäsi, joka on vasemmalla puolellasi",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on vasemmalla puolellasi"},straight:{default:"Olet saapunut {nth} määränpäähäsi, joka on suoraan edessäsi",upcoming:"Saavut {nth} määränpäähäsi, suoraan edessä",short:"Olet saapunut","short-upcoming":"Saavut",named:"Olet saapunut määränpäähän {waypoint_name}, joka on suoraan edessäsi"}},continue:{default:{default:"Käänny {modifier}",name:"Käänny {modifier} pysyäksesi tiellä {way_name}",destination:"Käänny {modifier} suuntana {destination}",exit:"Käänny {modifier} tielle {way_name}"},straight:{default:"Jatka suoraan eteenpäin",name:"Jatka suoraan pysyäksesi tiellä {way_name}",destination:"Jatka suuntana {destination}",distance:"Jatka suoraan {distance}",namedistance:"Jatka tiellä {way_name} {distance}"},"sharp left":{default:"Jatka jyrkästi vasempaan",name:"Jatka jyrkästi vasempaan pysyäksesi tiellä {way_name}",destination:"Jatka jyrkästi vasempaan suuntana {destination}"},"sharp right":{default:"Jatka jyrkästi oikeaan",name:"Jatka jyrkästi oikeaan pysyäksesi tiellä {way_name}",destination:"Jatka jyrkästi oikeaan suuntana {destination}"},"slight left":{default:"Jatka loivasti vasempaan",name:"Jatka loivasti vasempaan pysyäksesi tiellä {way_name}",destination:"Jatka loivasti vasempaan suuntana {destination}"},"slight right":{default:"Jatka loivasti oikeaan",name:"Jatka loivasti oikeaan pysyäksesi tiellä {way_name}",destination:"Jatka loivasti oikeaan suuntana {destination}"},uturn:{default:"Tee U-käännös",name:"Tee U-käännös ja jatka tietä {way_name}",destination:"Tee U-käännös suuntana {destination}"}},depart:{default:{default:"Aja {direction}",name:"Aja tietä {way_name} {direction}",namedistance:"Aja {distance} {direction} tietä {way_name} "}},"end of road":{default:{default:"Käänny {modifier}",name:"Käänny {modifier} tielle {way_name}",destination:"Käänny {modifier} suuntana {destination}"},straight:{default:"Jatka suoraan eteenpäin",name:"Jatka suoraan eteenpäin tielle {way_name}",destination:"Jatka suoraan eteenpäin suuntana {destination}"},uturn:{default:"Tien päässä tee U-käännös",name:"Tien päässä tee U-käännös tielle {way_name}",destination:"Tien päässä tee U-käännös suuntana {destination}"}},fork:{default:{default:"Jatka tienhaarassa {modifier}",name:"Jatka {modifier} tielle {way_name}",destination:"Jatka {modifier} suuntana {destination}"},"slight left":{default:"Pysy vasemmalla tienhaarassa",name:"Pysy vasemmalla tielle {way_name}",destination:"Pysy vasemmalla suuntana {destination}"},"slight right":{default:"Pysy oikealla tienhaarassa",name:"Pysy oikealla tielle {way_name}",destination:"Pysy oikealla suuntana {destination}"},"sharp left":{default:"Käänny tienhaarassa jyrkästi vasempaan",name:"Käänny tienhaarassa jyrkästi vasempaan tielle {way_name}",destination:"Käänny tienhaarassa jyrkästi vasempaan suuntana {destination}"},"sharp right":{default:"Käänny tienhaarassa jyrkästi oikeaan",name:"Käänny tienhaarassa jyrkästi oikeaan tielle {way_name}",destination:"Käänny tienhaarassa jyrkästi oikeaan suuntana {destination}"},uturn:{default:"Tee U-käännös",name:"Tee U-käännös tielle {way_name}",destination:"Tee U-käännös suuntana {destination}"}},merge:{default:{default:"Liity {modifier}",name:"Liity {modifier}, tielle {way_name}",destination:"Liity {modifier}, suuntana {destination}"},straight:{default:"Liity",name:"Liity tielle {way_name}",destination:"Liity suuntana {destination}"},"slight left":{default:"Liity vasemmalle",name:"Liity vasemmalle, tielle {way_name}",destination:"Liity vasemmalle, suuntana {destination}"},"slight right":{default:"Liity oikealle",name:"Liity oikealle, tielle {way_name}",destination:"Liity oikealle, suuntana {destination}"},"sharp left":{default:"Liity vasemmalle",name:"Liity vasemmalle, tielle {way_name}",destination:"Liity vasemmalle, suuntana {destination}"},"sharp right":{default:"Liity oikealle",name:"Liity oikealle, tielle {way_name}",destination:"Liity oikealle, suuntana {destination}"},uturn:{default:"Tee U-käännös",name:"Tee U-käännös tielle {way_name}",destination:"Tee U-käännös suuntana {destination}"}},"new name":{default:{default:"Jatka {modifier}",name:"Jatka {modifier} tielle {way_name}",destination:"Jatka {modifier} suuntana {destination}"},straight:{default:"Jatka suoraan eteenpäin",name:"Jatka tielle {way_name}",destination:"Jatka suuntana {destination}"},"sharp left":{default:"Käänny jyrkästi vasempaan",name:"Käänny jyrkästi vasempaan tielle {way_name}",destination:"Käänny jyrkästi vasempaan suuntana {destination}"},"sharp right":{default:"Käänny jyrkästi oikeaan",name:"Käänny jyrkästi oikeaan tielle {way_name}",destination:"Käänny jyrkästi oikeaan suuntana {destination}"},"slight left":{default:"Jatka loivasti vasempaan",name:"Jatka loivasti vasempaan tielle {way_name}",destination:"Jatka loivasti vasempaan suuntana {destination}"},"slight right":{default:"Jatka loivasti oikeaan",name:"Jatka loivasti oikeaan tielle {way_name}",destination:"Jatka loivasti oikeaan suuntana {destination}"},uturn:{default:"Tee U-käännös",name:"Tee U-käännös tielle {way_name}",destination:"Tee U-käännös suuntana {destination}"}},notification:{default:{default:"Jatka {modifier}",name:"Jatka {modifier} tielle {way_name}",destination:"Jatka {modifier} suuntana {destination}"},uturn:{default:"Tee U-käännös",name:"Tee U-käännös tielle {way_name}",destination:"Tee U-käännös suuntana {destination}"}},"off ramp":{default:{default:"Aja erkanemiskaistalle",name:"Aja erkanemiskaistaa tielle {way_name}",destination:"Aja erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit}",exit_destination:"Ota poistuminen {exit}, suuntana {destination}"},left:{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} vasemmalla",exit_destination:"Ota poistuminen {exit} vasemmalla, suuntana {destination}"},right:{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} oikealla",exit_destination:"Ota poistuminen {exit} oikealla, suuntana {destination}"},"sharp left":{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} vasemmalla",exit_destination:"Ota poistuminen {exit} vasemmalla, suuntana {destination}"},"sharp right":{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} oikealla",exit_destination:"Ota poistuminen {exit} oikealla, suuntana {destination}"},"slight left":{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} vasemmalla",exit_destination:"Ota poistuminen {exit} vasemmalla, suuntana {destination}"},"slight right":{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}",exit:"Ota poistuminen {exit} oikealla",exit_destination:"Ota poistuminen {exit} oikealla, suuntana {destination}"}},"on ramp":{default:{default:"Aja erkanemiskaistalle",name:"Aja erkanemiskaistaa tielle {way_name}",destination:"Aja erkanemiskaistalle suuntana {destination}"},left:{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}"},right:{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}"},"sharp left":{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}"},"sharp right":{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}"},"slight left":{default:"Aja vasemmalla olevalle erkanemiskaistalle",name:"Aja vasemmalla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja vasemmalla olevalle erkanemiskaistalle suuntana {destination}"},"slight right":{default:"Aja oikealla olevalle erkanemiskaistalle",name:"Aja oikealla olevaa erkanemiskaistaa tielle {way_name}",destination:"Aja oikealla olevalle erkanemiskaistalle suuntana {destination}"}},rotary:{default:{default:{default:"Aja liikenneympyrään",name:"Aja liikenneympyrään ja valitse erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään ja valitse erkanemiskaista suuntana {destination}"},name:{default:"Aja liikenneympyrään {rotary_name}",name:"Aja liikenneympyrään {rotary_name} ja valitse erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään {rotary_name} ja valitse erkanemiskaista suuntana {destination}"},exit:{default:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista",name:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista suuntana {destination}"},name_exit:{default:"Aja liikenneympyrään {rotary_name} ja valitse {exit_number} erkanemiskaista",name:"Aja liikenneympyrään {rotary_name} ja valitse {exit_number} erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään {rotary_name} ja valitse {exit_number} erkanemiskaista suuntana {destination}"}}},roundabout:{default:{exit:{default:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista",name:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään ja valitse {exit_number} erkanemiskaista suuntana {destination}"},default:{default:"Aja liikenneympyrään",name:"Aja liikenneympyrään ja valitse erkanemiskaista tielle {way_name}",destination:"Aja liikenneympyrään ja valitse erkanemiskaista suuntana {destination}"}}},"roundabout turn":{default:{default:"Käänny {modifier}",name:"Käänny {modifier} tielle {way_name}",destination:"Käänny {modifier} suuntana {destination}"},left:{default:"Käänny vasempaan",name:"Käänny vasempaan tielle {way_name}",destination:"Käänny vasempaan suuntana {destination}"},right:{default:"Käänny oikeaan",name:"Käänny oikeaan tielle {way_name}",destination:"Käänny oikeaan suuntana {destination}"},straight:{default:"Jatka suoraan eteenpäin",name:"Jatka suoraan eteenpäin tielle {way_name}",destination:"Jatka suoraan eteenpäin suuntana {destination}"}},"exit roundabout":{default:{default:"Poistu liikenneympyrästä",name:"Poistu liikenneympyrästä tielle {way_name}",destination:"Poistu liikenneympyrästä suuntana {destination}"}},"exit rotary":{default:{default:"Poistu liikenneympyrästä",name:"Poistu liikenneympyrästä tielle {way_name}",destination:"Poistu liikenneympyrästä suuntana {destination}"}},turn:{default:{default:"Käänny {modifier}",name:"Käänny {modifier} tielle {way_name}",destination:"Käänny {modifier} suuntana {destination}"},left:{default:"Käänny vasempaan",name:"Käänny vasempaan tielle {way_name}",destination:"Käänny vasempaan suuntana {destination}"},right:{default:"Käänny oikeaan",name:"Käänny oikeaan tielle {way_name}",destination:"Käänny oikeaan suuntana {destination}"},straight:{default:"Aja suoraan eteenpäin",name:"Aja suoraan eteenpäin tielle {way_name}",destination:"Aja suoraan eteenpäin suuntana {destination}"}},"use lane":{no_lanes:{default:"Jatka suoraan eteenpäin"},default:{default:"{lane_instruction}"}}}}},{}],30:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"première",2:"seconde",3:"troisième",4:"quatrième",5:"cinquième",6:"sixième",7:"septième",8:"huitième",9:"neuvième",10:"dixième"},direction:{north:"le nord",northeast:"le nord-est",east:"lâest",southeast:"le sud-est",south:"le sud",southwest:"le sud-ouest",west:"lâouest",northwest:"le nord-ouest"},modifier:{left:"à gauche",right:"à droite","sharp left":"franchement à gauche","sharp right":"franchement à droite","slight left":"légèrement à gauche","slight right":"légèrement à droite",straight:"tout droit",uturn:"demi-tour"},lanes:{xo:"Tenir la droite",ox:"Tenir la gauche",xox:"Rester au milieu",oxo:"Tenir la gauche ou la droite"}},modes:{ferry:{default:"Prendre le ferry",name:"Prendre le ferry {way_name:article}",destination:"Prendre le ferry en direction {destination:preposition}"}},phrase:{"two linked by distance":"{instruction_one}, puis, dans {distance}, {instruction_two}","two linked":"{instruction_one}, puis {instruction_two}","one in distance":"Dans {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"sortie n°{exit}"},arrive:{default:{ 2505default:"Vous êtes arrivé à votre {nth} destination",upcoming:"Vous arriverez à votre {nth} destination",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé {waypoint_name:arrival}"},left:{default:"Vous êtes arrivé à votre {nth} destination, sur la gauche",upcoming:"Vous arriverez à votre {nth} destination, sur la gauche",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé {waypoint_name:arrival}, sur la gauche"},right:{default:"Vous êtes arrivé à votre {nth} destination, sur la droite",upcoming:"Vous arriverez à votre {nth} destination, sur la droite",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé à {waypoint_name:arrival}, sur la droite"},"sharp left":{default:"Vous êtes arrivé à votre {nth} destination, sur la gauche",upcoming:"Vous arriverez à votre {nth} destination, sur la gauche",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé {waypoint_name:arrival}, sur la gauche"},"sharp right":{default:"Vous êtes arrivé à votre {nth} destination, sur la droite",upcoming:"Vous arriverez à votre {nth} destination, sur la droite",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé {waypoint_name:arrival}, sur la droite"},"slight right":{default:"Vous êtes arrivé à votre {nth} destination, sur la droite",upcoming:"Vous arriverez à votre {nth} destination, sur la droite",short:"Vous êtes arrivé","short-upcoming":"Vous arriverez",named:"Vous êtes arrivé {waypoint_name:arrival}, sur la droite"},"slight left":{default:"Vous êtes arrivé à votre {nth} destination, sur la gauche",upcoming:"Vous arriverez à votre {nth} destination, sur la gauche",short:"Vous êtes arrivé","short-upcoming":"Vous êtes arrivé",named:"Vous êtes arrivé {waypoint_name:arrival}, sur la gauche"},straight:{default:"Vous êtes arrivé à votre {nth} destination, droit devant",upcoming:"Vous arriverez à votre {nth} destination, droit devant",short:"Vous êtes arrivé","short-upcoming":"Vous êtes arrivé",named:"Vous êtes arrivé {waypoint_name:arrival}, droit devant"}},continue:{default:{default:"Tourner {modifier}",name:"Tourner {modifier} pour rester sur {way_name:article}",destination:"Tourner {modifier} en direction {destination:preposition}",exit:"Tourner {modifier} sur {way_name:article}"},straight:{default:"Continuer tout droit",name:"Continuer tout droit pour rester sur {way_name:article}",destination:"Continuer tout droit en direction {destination:preposition}",distance:"Continuer tout droit sur {distance}",namedistance:"Continuer sur {way_name:article} sur {distance}"},"sharp left":{default:"Tourner franchement à gauche",name:"Tourner franchement à gauche pour rester sur {way_name:article}",destination:"Tourner franchement à gauche en direction {destination:preposition}"},"sharp right":{default:"Tourner franchement à droite",name:"Tourner franchement à droite pour rester sur {way_name:article}",destination:"Tourner franchement à droite en direction {destination:preposition}"},"slight left":{default:"Tourner légèrement à gauche",name:"Tourner légèrement à gauche pour rester sur {way_name:article}",destination:"Tourner légèrement à gauche en direction {destination:preposition}"},"slight right":{default:"Tourner légèrement à droite",name:"Tourner légèrement à droite pour rester sur {way_name:article}",destination:"Tourner légèrement à droite en direction {destination:preposition}"},uturn:{default:"Faire demi-tour",name:"Faire demi-tour et continuer sur {way_name:article}",destination:"Faire demi-tour en direction {destination:preposition}"}},depart:{default:{default:"Se diriger vers {direction}",name:"Se diriger vers {direction} sur {way_name:article}",namedistance:"Se diriger vers {direction} sur {way_name:article} sur {distance}"}},"end of road":{default:{default:"Tourner {modifier}",name:"Tourner {modifier} sur {way_name:article}",destination:"Tourner {modifier} en direction {destination:preposition}"},straight:{default:"Continuer tout droit",name:"Continuer tout droit sur {way_name:article}",destination:"Continuer tout droit en direction {destination:preposition}"},uturn:{default:"Faire demi-tour à la fin de la route",name:"Faire demi-tour à la fin {way_name:preposition}",destination:"Faire demi-tour à la fin de la route en direction {destination:preposition}"}},fork:{default:{default:"Tenir {modifier} à lâembranchement",name:"Tenir {modifier} sur {way_name:article}",destination:"Tenir {modifier} en direction {destination:preposition}"},"slight left":{default:"Tenir la gauche à lâembranchement",name:"Tenir la gauche sur {way_name:article}",destination:"Tenir la gauche en direction {destination:preposition}"},"slight right":{default:"Tenir la droite à lâembranchement",name:"Tenir la droite sur {way_name:article}",destination:"Tenir la droite en direction {destination:preposition}"},"sharp left":{default:"Tourner franchement à gauche à lâembranchement",name:"Tourner franchement à gauche sur {way_name:article}",destination:"Tourner franchement à gauche en direction {destination:preposition}"},"sharp right":{default:"Tourner franchement à droite à lâembranchement",name:"Tourner franchement à droite sur {way_name:article}",destination:"Tourner franchement à droite en direction {destination:preposition}"},uturn:{default:"Faire demi-tour",name:"Faire demi-tour sur {way_name:article}",destination:"Faire demi-tour en direction {destination:preposition}"}},merge:{default:{default:"Sâinsérer {modifier}",name:"Sâinsérer {modifier} sur {way_name:article}",destination:"Sâinsérer {modifier} en direction {destination:preposition}"},straight:{default:"Sâinsérer",name:"Sâinsérer sur {way_name:article}",destination:"Sâinsérer en direction {destination:preposition}"},"slight left":{default:"Sâinsérer légèrement à gauche",name:"Sâinsérer légèrement à gauche sur {way_name:article}",destination:"Sâinsérer légèrement à gauche en direction {destination:preposition}"},"slight right":{default:"Sâinsérer légèrement à droite",name:"Sâinsérer légèrement à droite sur {way_name:article}",destination:"Sâinsérer à droite en direction {destination:preposition}"},"sharp left":{default:"Sâinsérer à gauche",name:"Sâinsérer à gauche sur {way_name:article}",destination:"Sâinsérer à gauche en direction {destination:preposition}"},"sharp right":{default:"Sâinsérer à droite",name:"Sâinsérer à droite sur {way_name:article}",destination:"Sâinsérer à droite en direction {destination:preposition}"},uturn:{default:"Faire demi-tour",name:"Faire demi-tour sur {way_name:article}",destination:"Faire demi-tour en direction {destination:preposition}"}},"new name":{default:{default:"Continuer {modifier}",name:"Continuer {modifier} sur {way_name:article}",destination:"Continuer {modifier} en direction {destination:preposition}"},straight:{default:"Continuer tout droit",name:"Continuer tout droit sur {way_name:article}",destination:"Continuer tout droit en direction {destination:preposition}"},"sharp left":{default:"Tourner franchement à gauche",name:"Tourner franchement à gauche sur {way_name:article}",destination:"Tourner franchement à gauche en direction {destination:preposition}"},"sharp right":{default:"Tourner franchement à droite",name:"Tourner franchement à droite sur {way_name:article}",destination:"Tourner franchement à droite en direction {destination:preposition}"},"slight left":{default:"Continuer légèrement à gauche",name:"Continuer légèrement à gauche sur {way_name:article}",destination:"Continuer légèrement à gauche en direction {destination:preposition}"},"slight right":{default:"Continuer légèrement à droite",name:"Continuer légèrement à droite sur {way_name:article}",destination:"Continuer légèrement à droite en direction {destination:preposition}"},uturn:{default:"Faire demi-tour",name:"Faire demi-tour sur {way_name:article}",destination:"Faire demi-tour en direction {destination:preposition}"}},notification:{default:{default:"Continuer {modifier}",name:"Continuer {modifier} sur {way_name:article}",destination:"Continuer {modifier} en direction {destination:preposition}"},uturn:{default:"Faire demi-tour",name:"Faire demi-tour sur {way_name:article}",destination:"Faire demi-tour en direction {destination:preposition}"}},"off ramp":{default:{default:"Prendre la sortie",name:"Prendre la sortie sur {way_name:article}",destination:"Prendre la sortie en direction {destination:preposition}",exit:"Prendre la sortie {exit}",exit_destination:"Prendre la sortie {exit} en direction {destination:preposition}"},left:{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la gauche",exit_destination:"Prendre la sortie {exit} sur la gauche en direction {destination:preposition}"},right:{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la droite",exit_destination:"Prendre la sortie {exit} sur la droite en direction {destination:preposition}"},"sharp left":{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la gauche",exit_destination:"Prendre la sortie {exit} sur la gauche en direction {destination:preposition}"},"sharp right":{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la droite",exit_destination:"Prendre la sortie {exit} sur la droite en direction {destination:preposition}"},"slight left":{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la gauche",exit_destination:"Prendre la sortie {exit} sur la gauche en direction {destination:preposition}"},"slight right":{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}",exit:"Prendre la sortie {exit} sur la droite",exit_destination:"Prendre la sortie {exit} sur la droite en direction {destination:preposition}"}},"on ramp":{default:{default:"Prendre la sortie",name:"Prendre la sortie sur {way_name:article}",destination:"Prendre la sortie en direction {destination:preposition}"},left:{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}"},right:{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}"},"sharp left":{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}"},"sharp right":{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}"},"slight left":{default:"Prendre la sortie à gauche",name:"Prendre la sortie à gauche sur {way_name:article}",destination:"Prendre la sortie à gauche en direction {destination:preposition}"},"slight right":{default:"Prendre la sortie à droite",name:"Prendre la sortie à droite sur {way_name:article}",destination:"Prendre la sortie à droite en direction {destination:preposition}"}},rotary:{default:{default:{default:"Prendre le rond-point",name:"Prendre le rond-point, puis sortir sur {way_name:article}",destination:"Prendre le rond-point, puis sortir en direction {destination:preposition}"},name:{default:"Prendre {rotary_name:rotary}",name:"Prendre {rotary_name:rotary}, puis sortir par {way_name:article}",destination:"Prendre {rotary_name:rotary}, puis sortir en direction {destination:preposition}"},exit:{default:"Prendre le rond-point, puis la {exit_number} sortie",name:"Prendre le rond-point, puis la {exit_number} sortie sur {way_name:article}",destination:"Prendre le rond-point, puis la {exit_number} sortie en direction {destination:preposition}"},name_exit:{default:"Prendre {rotary_name:rotary}, puis la {exit_number} sortie",name:"Prendre {rotary_name:rotary}, puis la {exit_number} sortie sur {way_name:article}",destination:"Prendre {rotary_name:rotary}, puis la {exit_number} sortie en direction {destination:preposition}"}}},roundabout:{default:{exit:{default:"Prendre le rond-point, puis la {exit_number} sortie",name:"Prendre le rond-point, puis la {exit_number} sortie sur {way_name:article}",destination:"Prendre le rond-point, puis la {exit_number} sortie en direction {destination:preposition}"},default:{default:"Prendre le rond-point",name:"Prendre le rond-point, puis sortir sur {way_name:article}",destination:"Prendre le rond-point, puis sortir en direction {destination:preposition}"}}},"roundabout turn":{default:{default:"Tourner {modifier}",name:"Tourner {modifier} sur {way_name:article}",destination:"Tourner {modifier} en direction {destination:preposition}"},left:{default:"Tourner à gauche",name:"Tourner à gauche sur {way_name:article}",destination:"Tourner à gauche en direction {destination:preposition}"},right:{default:"Tourner à droite",name:"Tourner à droite sur {way_name:article}",destination:"Tourner à droite en direction {destination:preposition}"},straight:{default:"Continuer tout droit",name:"Continuer tout droit sur {way_name:article}",destination:"Continuer tout droit en direction {destination:preposition}"}},"exit roundabout":{default:{default:"Sortir du rond-point",name:"Sortir du rond-point sur {way_name:article}",destination:"Sortir du rond-point en direction {destination:preposition}"}},"exit rotary":{default:{default:"Sortir du rond-point",name:"Sortir du rond-point sur {way_name:article}",destination:"Sortir du rond-point en direction {destination:preposition}"}},turn:{default:{default:"Tourner {modifier}",name:"Tourner {modifier} sur {way_name:article}",destination:"Tourner {modifier} en direction {destination:preposition}"},left:{default:"Tourner à gauche",name:"Tourner à gauche sur {way_name:article}",destination:"Tourner à gauche en direction {destination:preposition}"},right:{default:"Tourner à droite",name:"Tourner à droite sur {way_name:article}",destination:"Tourner à droite en direction {destination:preposition}"},straight:{default:"Aller tout droit",name:"Aller tout droit sur {way_name:article}",destination:"Aller tout droit en direction {destination:preposition}"}},"use lane":{no_lanes:{default:"Continuer tout droit"},default:{default:"{lane_instruction}"}}}}},{}],31:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"ר×ש×× ×",2:"×©× ××",3:"ש××ש×ת",4:"ר×××¢×ת",5:"×××ש×ת",6:"ש×ש×ת",7:"ש×××¢×ת",8:"ש××× ×ת",9:"תש××¢×ת",10:"עש×ר×ת"},direction:{north:"צפ××",northeast:"צפ×× ××ר×",east:"××ר×",southeast:"×ר×× ××ר×",south:"×ר××",southwest:"×ר×× ×ער×",west:"×ער×",northwest:"צפ×× ×ער×"},modifier:{left:"ש××××",right:"×××× ×","sharp left":"××× ×©××××","sharp right":"××× ×××× ×","slight left":"×§×× ×©××××","slight right":"×§×× ×××× ×",straight:"×שר",uturn:"×¤× ××ת פרס×"},lanes:{xo:"××צ×× ×××××",ox:"××צ×× ×ש×××",xox:"×××©× ×× ×ª×× ×××צע×",oxo:"××צ×× ××××× ×× ×ש×××"}},modes:{ferry:{default:"×¢×× ×¢× ×××¢××רת",name:"×¢×× ×¢× ×××¢××רת {way_name}",destination:"×¢×× ×¢× ×××¢××רת ×××××× {destination}"}},phrase:{"two linked by distance":"{instruction_one}, ×××, ××¢××{distance}, {instruction_two}","two linked":"{instruction_one}, ××× {instruction_two}","one in distance":"××¢×× {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"×צ××× {exit}"},arrive:{default:{default:"××עת ×× ×××¢× ×{nth} ש××",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש××",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name}"},left:{default:"××עת ×× ×××¢× ×{nth} ש×× ×ש××××",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ×ש××××",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ×ש××××"},right:{default:"××עת ×× ×××¢× ×{nth} ש×× ××××× ×",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ××××× ×",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ××××× ×"},"sharp left":{default:"××עת ×× ×××¢× ×{nth} ש×× ×ש××××",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ×ש××××",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ×ש××××"},"sharp right":{default:"××עת ×× ×××¢× ×{nth} ש×× ××××× ×",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ××××× ×",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ××××× ×"},"slight right":{default:"××עת ×× ×××¢× ×{nth} ש×× ××××× ×",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ××××× ×",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ××××× ×"},"slight left":{default:"××עת ×× ×××¢× ×{nth} ש×× ×ש××××",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש×× ×ש××××",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name} ש×× ×ש××××"},straight:{default:"××עת ×× ×××¢× ×{nth} ש××, ×××ש×",upcoming:"××ª× ×ª×××¢ ×× ×××¢× ×{nth} ש××, ×××ש×",short:"××עת","short-upcoming":"ת×××¢",named:"××עת ×× {waypoint_name}, ×××ש×"}},continue:{default:{default:"×¤× × {modifier}",name:"×¤× × {modifier} ××× ×××ש×ר ×{way_name}",destination:"×¤× × {modifier} ×××××× {destination}",exit:"×¤× × {modifier} ×¢× {way_name}"},straight:{default:"×××©× ×שר",name:"×××©× ×שר ××× ×××ש×ר ×¢× {way_name}",destination:"×××©× ×××××× {destination}",distance:"×××©× ×שר ××××¨× {distance}",namedistance:"×××©× ×¢× {way_name} ××××¨× {distance}"},"sharp left":{default:"×¤× × ××××ת ש××××",name:"×¤× × ××××ת ש×××× ××× ×××ש×ר ×¢× {way_name}",destination:"×¤× × ××××ת ש×××× ×××××× {destination}"},"sharp right":{default:"×¤× × ××××ת ×××× ×",name:"×¤× × ××××ת ×××× × ××× ×××ש×ר ×¢× {way_name}",destination:"×¤× × ××××ת ×××× × ×××××× {destination}"},"slight left":{default:"×¤× × ×§××ת ש××××",name:"×¤× × ×§××ת ש×××× ××× ×××ש×ר ×¢× {way_name}",destination:"×¤× × ×§××ת ש×××× ×××××× {destination}"},"slight right":{default:"×¤× × ×§××ת ×××× ×",name:"×¤× × ×§××ת ×××× × ××× ×××ש×ר ×¢× {way_name}",destination:"×¤× × ×§××ת ×××× × ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת פרס×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ××××©× ×¢× {way_name}",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination}"}},depart:{default:{default:"×ת×××× × {direction}",name:"×ת×××× × {direction} ×¢× {way_name}",namedistance:"×ת×××× × {direction} ×¢× {way_name} ××××¨× {distance}"}},"end of road":{default:{default:"×¤× × {modifier}",name:"×¤× × {modifier} ×¢× {way_name}",destination:"×¤× × {modifier} ×××××× {destination}"},straight:{default:"×××©× ×שר",name:"×××©× ×שר ×¢× {way_name}",destination:"×××©× ×שר ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת ×¤×¨×¡× ×ס××£ ××ר×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ×¢× {way_name} ×ס××£ ××ר×",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination} ×ס××£ ××ר×"}},fork:{default:{default:"××צ×× {modifier} ××תפצ××ת",name:"××צ×× {modifier} ×¢× {way_name}",destination:"××צ×× {modifier} ×××××× {destination}"},"slight left":{default:"××צ×× ×ש××× ××תפצ××ת",name:"××צ×× ×ש××× ×¢× {way_name}",destination:"××צ×× ×ש××× ×××××× {destination}"},"slight right":{default:"××צ×× ×××× × ××תפצ××ת",name:"××צ×× ××××× ×¢× {way_name}",destination:"××צ×× ××××× ×××××× {destination}"},"sharp left":{default:"×¤× × ××××ת ש×××× ××תפצ××ת",name:"×¤× × ××××ת ש×××× ×¢× {way_name}",destination:"×¤× × ××××ת ש×××× ×××××× {destination}"},"sharp right":{default:"×¤× × ××××ת ×××× × ××תפצ××ת",name:"×¤× × ××××ת ×××× × ×¢× {way_name}",destination:"×¤× × ××××ת ×××× × ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת פרס×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ×¢× {way_name}",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination}"}},merge:{default:{default:"×שת×× {modifier}",name:"×שת×× {modifier} ×¢× {way_name}",destination:"×שת×× {modifier} ×××××× {destination}"},straight:{default:"×שת××",name:"×שת×× ×¢× {way_name}",destination:"×שת×× ×××××× {destination}"},"slight left":{default:"×שת×× ×©××××",name:"×שת×× ×©×××× ×¢× {way_name}",destination:"×שת×× ×©×××× ×××××× {destination}"},"slight right":{default:"×שת×× ×××× ×",name:"×שת×× ×××× × ×¢× {way_name}",destination:"×שת×× ×××× × ×××××× {destination}"},"sharp left":{default:"×שת×× ×©××××",name:"×שת×× ×©×××× ×¢× {way_name}",destination:"×שת×× ×©×××× ×××××× {destination}"},"sharp right":{default:"×שת×× ×××× ×",name:"×שת×× ×××× × ×¢× {way_name}",destination:"×שת×× ×××× × ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת פרס×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ×¢× {way_name}",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination}"}},"new name":{default:{default:"×××©× {modifier}",name:"×××©× {modifier} ×¢× {way_name}",destination:"×××©× {modifier} ×××××× {destination}"},straight:{default:"×××©× ×שר",name:"×××©× ×¢× {way_name}",destination:"×××©× ×××××× {destination}"},"sharp left":{default:"×¤× × ××××ת ש××××",name:"×¤× × ××××ת ש×××× ×¢× {way_name}",destination:"×¤× × ××××ת ש×××× ×××××× {destination}"},"sharp right":{default:"×¤× × ××××ת ×××× ×",name:"×¤× × ××××ת ×××× × ×¢× {way_name}",destination:"×¤× × ××××ת ×××× × ×××××× {destination}"},"slight left":{default:"×××©× ×× ×××× ×§×× ×©××××",name:"×××©× ×× ×××× ×§×× ×©×××× ×¢× {way_name}",destination:"×××©× ×× ×××× ×§×× ×©×××× ×××××× {destination}"},"slight right":{default:"×××©× ×× ×××× ×§×× ×××× ×",name:"×××©× ×× ×××× ×§×× ×××× × ×¢× {way_name}",destination:"×××©× ×× ×××× ×§×× ×××× × ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת פרס×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ×¢× {way_name}",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination}"}},notification:{default:{default:"×××©× {modifier}",name:"×××©× {modifier} ×¢× {way_name}",destination:"×××©× {modifier} ×××××× {destination}"},uturn:{default:"×¤× × ×¤× ××ת פרס×",name:"×¤× × ×¤× ××ת ×¤×¨×¡× ×¢× {way_name}",destination:"×¤× × ×¤× ××ת ×¤×¨×¡× ×××××× {destination}"}},"off ramp":{default:{default:"×¦× ××צ×××",name:"×¦× ××צ××× ×¢× {way_name}",destination:"×¦× ××צ××× ×××××× {destination}",exit:"×¦× ××צ××× {exit}",exit_destination:"×¦× ××צ××× {exit} ×××××× {destination}"},left:{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}",exit:"×¦× ××צ××× {exit} ×ש××××",exit_destination:"×¦× ××צ××× {exit} ×ש×××× ×××××× {destination}"},right:{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}",exit:"×¦× ××צ××× {exit} ××××× ×",exit_destination:"×¦× ××צ××× {exit} ××××× × ×××××× {destination}"},"sharp left":{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}",exit:"×¦× ××צ××× {exit} ×ש××××",exit_destination:"×¦× ××צ××× {exit} ×ש×××× ×××××× {destination}"},"sharp right":{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}",exit:"×¦× ××צ××× {exit} ××××× ×",exit_destination:"×¦× ××צ××× {exit} ××××× × ×××××× {destination}"},"slight left":{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}",exit:"×¦× ××צ××× {exit} ×ש××××",exit_destination:"×¦× ××צ××× {exit} ×ש×××× ×××××× {destination}"},"slight right":{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}",exit:"×¦× ××צ××× {exit} ××××× ×",exit_destination:"×¦× ××צ××× {exit} ××××× × ×××××× {destination}"}},"on ramp":{default:{default:"×¦× ××צ×××",name:"×¦× ××צ××× ×¢× {way_name}",destination:"×¦× ××צ××× ×××××× {destination}"},left:{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}"},right:{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}"},"sharp left":{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}"},"sharp right":{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}"},"slight left":{default:"×¦× ××צ××× ×©×ש××××",name:"×¦× ××צ××× ×©×ש×××× ×¢× {way_name}",destination:"×¦× ××צ××× ×©×ש×××× ×××××× {destination}"},"slight right":{default:"×¦× ××צ××× ×©××××× ×",name:"×¦× ××צ××× ×©××××× × ×¢× {way_name}",destination:"×¦× ××צ××× ×©××××× × ×××××× {destination}"}},rotary:{default:{default:{default:"×שת×× ×××¢×× ××ª× ××¢×",name:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ×¢× {way_name}",destination:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ×××××× {destination}"},name:{default:"×××× ×¡ ×{rotary_name}",name:"×××× ×¡ ×{rotary_name} ××¦× ×¢× {way_name}",destination:"×××× ×¡ ×{rotary_name} ××¦× ×××××× {destination}"},exit:{default:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number}",name:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number} ×{way_name}",destination:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number} ×××××× {destination}"},name_exit:{default:"×××× ×¡ ×{rotary_name} ××¦× ××צ××× ×{exit_number}",name:"×××× ×¡ ×{rotary_name} ××¦× ××צ××× ×{exit_number} ×{way_name}",destination:"×××× ×¡ ×{rotary_name} ××¦× ××צ××× ×{exit_number} ×××××× {destination}"}}},roundabout:{default:{exit:{default:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number}",name:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number} ×{way_name}",destination:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ××צ××× {exit_number} ×××××× {destination}"},default:{default:"×שת×× ×××¢×× ××ª× ××¢×",name:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ×¢× {way_name}",destination:"×שת×× ×××¢×× ××ª× ××¢× ××¦× ×××××× {destination}"}}},"roundabout turn":{default:{default:"×¤× × {modifier}",name:"×¤× × {modifier} ×¢× {way_name}",destination:"×¤× × {modifier} ×××××× {destination}"},left:{default:"×¤× × ×©××××",name:"×¤× × ×©×××× ×{way_name}",destination:"×¤× × ×©×××× ×××××× {destination}"},right:{default:"×¤× × ×××× ×",name:"×¤× × ×××× × ×{way_name}",destination:"×¤× × ×××× × ×××××× {destination}"},straight:{default:"×××©× ×שר",name:"×××©× ×שר ×¢× {way_name}",destination:"×××©× ×שר ×××××× {destination}"}},"exit roundabout":{default:{default:"×¦× ×××¢×× ××ª× ××¢×",name:"×¦× ×××¢×× ××ª× ××¢× ×{way_name}",destination:"×¦× ×××¢×× ××ª× ××¢× ×××××× {destination}"}},"exit rotary":{default:{default:"×¦× ×××¢×× ××ª× ××¢×",name:"×¦× ×××¢×× ××ª× ××¢× ×{way_name}",destination:"×¦× ×××¢×× ××ª× ××¢× ×××××× {destination}"}},turn:{default:{default:"×¤× × {modifier}",name:"×¤× × {modifier} ×¢× {way_name}",destination:"×¤× × {modifier} ×××××× {destination}"},left:{default:"×¤× × ×©××××",name:"×¤× × ×©×××× ×{way_name}",destination:"×¤× × ×©×××× ×××××× {destination}"},right:{default:"×¤× × ×××× ×",name:"×¤× × ×××× × ×{way_name}",destination:"×¤× × ×××× × ×××××× {destination}"},straight:{default:"×××©× ×שר",name:"×××©× ×שר ×{way_name}",destination:"×××©× ×שר ×××××× {destination}"}},"use lane":{no_lanes:{default:"×××©× ×שר"},default:{default:"{lane_instruction}"}}}}},{}],32:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10"},direction:{north:"utara",northeast:"timur laut",east:"timur",southeast:"tenggara",south:"selatan",southwest:"barat daya",west:"barat",northwest:"barat laut"},modifier:{left:"kiri",right:"kanan","sharp left":"tajam kiri","sharp right":"tajam kanan","slight left":"agak ke kiri","slight right":"agak ke kanan",straight:"lurus",uturn:"putar balik"},lanes:{xo:"Tetap di kanan",ox:"Tetap di kiri",xox:"Tetap di tengah",oxo:"Tetap di kiri atau kanan"}},modes:{ferry:{default:"Naik ferry",name:"Naik ferry di {way_name}",destination:"Naik ferry menuju {destination}"}},phrase:{"two linked by distance":"{instruction_one}, then, in {distance}, {instruction_two}","two linked":"{instruction_one}, then {instruction_two}","one in distance":"In {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"Anda telah tiba di tujuan ke-{nth}",upcoming:"Anda telah tiba di tujuan ke-{nth}",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}"},left:{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kiri"},right:{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kanan"},"sharp left":{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kiri"},"sharp right":{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kanan"},"slight right":{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kanan",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kanan"},"slight left":{default:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",upcoming:"Anda telah tiba di tujuan ke-{nth}, di sebelah kiri",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, di sebelah kiri"},straight:{default:"Anda telah tiba di tujuan ke-{nth}, lurus saja",upcoming:"Anda telah tiba di tujuan ke-{nth}, lurus saja",short:"Anda telah tiba di tujuan ke-{nth}","short-upcoming":"Anda telah tiba di tujuan ke-{nth}",named:"Anda telah tiba di {waypoint_name}, lurus saja"}},continue:{default:{default:"Belok {modifier}",name:"Terus {modifier} ke {way_name}",destination:"Belok {modifier} menuju {destination}",exit:"Belok {modifier} ke {way_name}"},straight:{default:"Lurus terus",name:"Terus ke {way_name}",destination:"Terus menuju {destination}",distance:"Continue straight for {distance}",namedistance:"Continue on {way_name} for {distance}"},"sharp left":{default:"Belok kiri tajam",name:"Make a sharp left to stay on {way_name}",destination:"Belok kiri tajam menuju {destination}"},"sharp right":{default:"Belok kanan tajam",name:"Make a sharp right to stay on {way_name}",destination:"Belok kanan tajam menuju {destination}"},"slight left":{default:"Tetap agak di kiri",name:"Tetap agak di kiri ke {way_name}",destination:"Tetap agak di kiri menuju {destination}"},"slight right":{default:"Tetap agak di kanan",name:"Tetap agak di kanan ke {way_name}",destination:"Tetap agak di kanan menuju {destination}"},uturn:{default:"Putar balik",name:"Putar balik ke arah {way_name}",destination:"Putar balik menuju {destination}"}},depart:{default:{default:"Arah {direction}",name:"Arah {direction} di {way_name}",namedistance:"Head {direction} on {way_name} for {distance}"}},"end of road":{default:{default:"Belok {modifier}",name:"Belok {modifier} ke {way_name}",destination:"Belok {modifier} menuju {destination}"},straight:{default:"Lurus terus",name:"Tetap lurus ke {way_name} ",destination:"Tetap lurus menuju {destination}"},uturn:{default:"Putar balik di akhir jalan",name:"Putar balik di {way_name} di akhir jalan",destination:"Putar balik menuju {destination} di akhir jalan"}},fork:{default:{default:"Tetap {modifier} di pertigaan",name:"Tetap {modifier} di pertigaan ke {way_name}",destination:"Tetap {modifier} di pertigaan menuju {destination}"},"slight left":{default:"Tetap di kiri pada pertigaan",name:"Tetap di kiri pada pertigaan ke arah {way_name}",destination:"Tetap di kiri pada pertigaan menuju {destination}"},"slight right":{default:"Tetap di kanan pada pertigaan", 2506name:"Tetap di kanan pada pertigaan ke arah {way_name}",destination:"Tetap di kanan pada pertigaan menuju {destination}"},"sharp left":{default:"Belok kiri pada pertigaan",name:"Belok kiri tajam ke arah {way_name}",destination:"Belok kiri tajam menuju {destination}"},"sharp right":{default:"Belok kanan pada pertigaan",name:"Belok kanan tajam ke arah {way_name}",destination:"Belok kanan tajam menuju {destination}"},uturn:{default:"Putar balik",name:"Putar balik ke arah {way_name}",destination:"Putar balik menuju {destination}"}},merge:{default:{default:"Bergabung {modifier}",name:"Bergabung {modifier} ke arah {way_name}",destination:"Bergabung {modifier} menuju {destination}"},straight:{default:"Bergabung lurus",name:"Bergabung lurus ke arah {way_name}",destination:"Bergabung lurus menuju {destination}"},"slight left":{default:"Bergabung di kiri",name:"Bergabung di kiri ke arah {way_name}",destination:"Bergabung di kiri menuju {destination}"},"slight right":{default:"Bergabung di kanan",name:"Bergabung di kanan ke arah {way_name}",destination:"Bergabung di kanan menuju {destination}"},"sharp left":{default:"Bergabung di kiri",name:"Bergabung di kiri ke arah {way_name}",destination:"Bergabung di kiri menuju {destination}"},"sharp right":{default:"Bergabung di kanan",name:"Bergabung di kanan ke arah {way_name}",destination:"Bergabung di kanan menuju {destination}"},uturn:{default:"Putar balik",name:"Putar balik ke arah {way_name}",destination:"Putar balik menuju {destination}"}},"new name":{default:{default:"Lanjutkan {modifier}",name:"Lanjutkan {modifier} menuju {way_name}",destination:"Lanjutkan {modifier} menuju {destination}"},straight:{default:"Lurus terus",name:"Terus ke {way_name}",destination:"Terus menuju {destination}"},"sharp left":{default:"Belok kiri tajam",name:"Belok kiri tajam ke arah {way_name}",destination:"Belok kiri tajam menuju {destination}"},"sharp right":{default:"Belok kanan tajam",name:"Belok kanan tajam ke arah {way_name}",destination:"Belok kanan tajam menuju {destination}"},"slight left":{default:"Lanjut dengan agak ke kiri",name:"Lanjut dengan agak di kiri ke {way_name}",destination:"Tetap agak di kiri menuju {destination}"},"slight right":{default:"Tetap agak di kanan",name:"Tetap agak di kanan ke {way_name}",destination:"Tetap agak di kanan menuju {destination}"},uturn:{default:"Putar balik",name:"Putar balik ke arah {way_name}",destination:"Putar balik menuju {destination}"}},notification:{default:{default:"Lanjutkan {modifier}",name:"Lanjutkan {modifier} menuju {way_name}",destination:"Lanjutkan {modifier} menuju {destination}"},uturn:{default:"Putar balik",name:"Putar balik ke arah {way_name}",destination:"Putar balik menuju {destination}"}},"off ramp":{default:{default:"Ambil jalan melandai",name:"Ambil jalan melandai ke {way_name}",destination:"Ambil jalan melandai menuju {destination}",exit:"Take exit {exit}",exit_destination:"Take exit {exit} towards {destination}"},left:{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},right:{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"},"sharp left":{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},"sharp right":{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"},"slight left":{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}",exit:"Take exit {exit} on the left",exit_destination:"Take exit {exit} on the left towards {destination}"},"slight right":{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}",exit:"Take exit {exit} on the right",exit_destination:"Take exit {exit} on the right towards {destination}"}},"on ramp":{default:{default:"Ambil jalan melandai",name:"Ambil jalan melandai ke {way_name}",destination:"Ambil jalan melandai menuju {destination}"},left:{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}"},right:{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}"},"sharp left":{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}"},"sharp right":{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}"},"slight left":{default:"Ambil jalan yang melandai di sebelah kiri",name:"Ambil jalan melandai di sebelah kiri ke arah {way_name}",destination:"Ambil jalan melandai di sebelah kiri menuju {destination}"},"slight right":{default:"Ambil jalan melandai di sebelah kanan",name:"Ambil jalan melandai di sebelah kanan ke {way_name}",destination:"Ambil jalan melandai di sebelah kanan menuju {destination}"}},rotary:{default:{default:{default:"Masuk bundaran",name:"Masuk bundaran dan keluar arah {way_name}",destination:"Masuk bundaran dan keluar menuju {destination}"},name:{default:"Masuk {rotary_name}",name:"Masuk {rotary_name} dan keluar arah {way_name}",destination:"Masuk {rotary_name} dan keluar menuju {destination}"},exit:{default:"Masuk bundaran dan ambil jalan keluar {exit_number}",name:"Masuk bundaran dan ambil jalan keluar {exit_number} arah {way_name}",destination:"Masuk bundaran dan ambil jalan keluar {exit_number} menuju {destination}"},name_exit:{default:"Masuk {rotary_name} dan ambil jalan keluar {exit_number}",name:"Masuk {rotary_name} dan ambil jalan keluar {exit_number} arah {way_name}",destination:"Masuk {rotary_name} dan ambil jalan keluar {exit_number} menuju {destination}"}}},roundabout:{default:{exit:{default:"Masuk bundaran dan ambil jalan keluar {exit_number}",name:"Masuk bundaran dan ambil jalan keluar {exit_number} arah {way_name}",destination:"Masuk bundaran dan ambil jalan keluar {exit_number} menuju {destination}"},default:{default:"Masuk bundaran",name:"Masuk bundaran dan keluar arah {way_name}",destination:"Masuk bundaran dan keluar menuju {destination}"}}},"roundabout turn":{default:{default:"Lakukan {modifier}",name:"Lakukan {modifier} ke arah {way_name}",destination:"Lakukan {modifier} menuju {destination}"},left:{default:"Belok kiri",name:"Belok kiri ke {way_name}",destination:"Belok kiri menuju {destination}"},right:{default:"Belok kanan",name:"Belok kanan ke {way_name}",destination:"Belok kanan menuju {destination}"},straight:{default:"Lurus terus",name:"Tetap lurus ke {way_name} ",destination:"Tetap lurus menuju {destination}"}},"exit roundabout":{default:{default:"Lakukan {modifier}",name:"Lakukan {modifier} ke arah {way_name}",destination:"Lakukan {modifier} menuju {destination}"},left:{default:"Belok kiri",name:"Belok kiri ke {way_name}",destination:"Belok kiri menuju {destination}"},right:{default:"Belok kanan",name:"Belok kanan ke {way_name}",destination:"Belok kanan menuju {destination}"},straight:{default:"Lurus terus",name:"Tetap lurus ke {way_name} ",destination:"Tetap lurus menuju {destination}"}},"exit rotary":{default:{default:"Lakukan {modifier}",name:"Lakukan {modifier} ke arah {way_name}",destination:"Lakukan {modifier} menuju {destination}"},left:{default:"Belok kiri",name:"Belok kiri ke {way_name}",destination:"Belok kiri menuju {destination}"},right:{default:"Belok kanan",name:"Belok kanan ke {way_name}",destination:"Belok kanan menuju {destination}"},straight:{default:"Lurus",name:"Lurus arah {way_name}",destination:"Lurus menuju {destination}"}},turn:{default:{default:"Lakukan {modifier}",name:"Lakukan {modifier} ke arah {way_name}",destination:"Lakukan {modifier} menuju {destination}"},left:{default:"Belok kiri",name:"Belok kiri ke {way_name}",destination:"Belok kiri menuju {destination}"},right:{default:"Belok kanan",name:"Belok kanan ke {way_name}",destination:"Belok kanan menuju {destination}"},straight:{default:"Lurus",name:"Lurus arah {way_name}",destination:"Lurus menuju {destination}"}},"use lane":{no_lanes:{default:"Lurus terus"},default:{default:"{lane_instruction}"}}}}},{}],33:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1ª",2:"2ª",3:"3ª",4:"4ª",5:"5ª",6:"6ª",7:"7ª",8:"8ª",9:"9ª",10:"10ª"},direction:{north:"nord",northeast:"nord-est",east:"est",southeast:"sud-est",south:"sud",southwest:"sud-ovest",west:"ovest",northwest:"nord-ovest"},modifier:{left:"sinistra",right:"destra","sharp left":"sinistra","sharp right":"destra","slight left":"sinistra leggermente","slight right":"destra leggermente",straight:"dritto",uturn:"inversione a U"},lanes:{xo:"Mantieni la destra",ox:"Mantieni la sinistra",xox:"Rimani in mezzo",oxo:"Mantieni la destra o la sinistra"}},modes:{ferry:{default:"Prendi il traghetto",name:"Prendi il traghetto {way_name}",destination:"Prendi il traghetto verso {destination}"}},phrase:{"two linked by distance":"{instruction_one}, poi tra {distance},{instruction_two}","two linked":"{instruction_one}, poi {instruction_two}","one in distance":"tra {distance} {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"Sei arrivato alla tua {nth} destinazione",upcoming:"Sei arrivato alla tua {nth} destinazione",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"Sei arrivato a {waypoint_name}"},left:{default:"sei arrivato alla tua {nth} destinazione, sulla sinistra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla sinistra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla sinistra"},right:{default:"sei arrivato alla tua {nth} destinazione, sulla destra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla destra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla destra"},"sharp left":{default:"sei arrivato alla tua {nth} destinazione, sulla sinistra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla sinistra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla sinistra"},"sharp right":{default:"sei arrivato alla tua {nth} destinazione, sulla destra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla destra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla destra"},"slight right":{default:"sei arrivato alla tua {nth} destinazione, sulla destra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla destra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla destra"},"slight left":{default:"sei arrivato alla tua {nth} destinazione, sulla sinistra",upcoming:"sei arrivato alla tua {nth} destinazione, sulla sinistra",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, sulla sinistra"},straight:{default:"sei arrivato alla tua {nth} destinazione, si trova davanti a te",upcoming:"sei arrivato alla tua {nth} destinazione, si trova davanti a te",short:"Sei arrivato alla tua {nth} destinazione","short-upcoming":"Sei arrivato alla tua {nth} destinazione",named:"sei arrivato a {waypoint_name}, si trova davanti a te"}},continue:{default:{default:"Gira a {modifier}",name:"Gira a {modifier} per stare su {way_name}",destination:"Gira a {modifier} verso {destination}",exit:"Gira a {modifier} in {way_name}"},straight:{default:"Continua dritto",name:"Continua dritto per stare su {way_name}",destination:"Continua verso {destination}",distance:"Continua dritto per {distance}",namedistance:"Continua su {way_name} per {distance}"},"sharp left":{default:"Svolta a sinistra",name:"Fai una stretta curva a sinistra per stare su {way_name}",destination:"Svolta a sinistra verso {destination}"},"sharp right":{default:"Svolta a destra",name:"Fau una stretta curva a destra per stare su {way_name}",destination:"Svolta a destra verso {destination}"},"slight left":{default:"Fai una leggera curva a sinistra",name:"Fai una leggera curva a sinistra per stare su {way_name}",destination:"Fai una leggera curva a sinistra verso {destination}"},"slight right":{default:"Fai una leggera curva a destra",name:"Fai una leggera curva a destra per stare su {way_name}",destination:"Fai una leggera curva a destra verso {destination}"},uturn:{default:"Fai un'inversione a U",name:"Fai un'inversione ad U poi continua su {way_name}",destination:"Fai un'inversione a U verso {destination}"}},depart:{default:{default:"Continua verso {direction}",name:"Continua verso {direction} in {way_name}",namedistance:"Head {direction} on {way_name} for {distance}"}},"end of road":{default:{default:"Gira a {modifier}",name:"Gira a {modifier} in {way_name}",destination:"Gira a {modifier} verso {destination}"},straight:{default:"Continua dritto",name:"Continua dritto in {way_name}",destination:"Continua dritto verso {destination}"},uturn:{default:"Fai un'inversione a U alla fine della strada",name:"Fai un'inversione a U in {way_name} alla fine della strada",destination:"Fai un'inversione a U verso {destination} alla fine della strada"}},fork:{default:{default:"Mantieni la {modifier} al bivio",name:"Mantieni la {modifier} al bivio in {way_name}",destination:"Mantieni la {modifier} al bivio verso {destination}"},"slight left":{default:"Mantieni la sinistra al bivio",name:"Mantieni la sinistra al bivio in {way_name}",destination:"Mantieni la sinistra al bivio verso {destination}"},"slight right":{default:"Mantieni la destra al bivio",name:"Mantieni la destra al bivio in {way_name}",destination:"Mantieni la destra al bivio verso {destination}"},"sharp left":{default:"Svolta a sinistra al bivio",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},"sharp right":{default:"Svolta a destra al bivio",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},uturn:{default:"Fai un'inversione a U",name:"Fai un'inversione a U in {way_name}",destination:"Fai un'inversione a U verso {destination}"}},merge:{default:{default:"Immettiti a {modifier}",name:"Immettiti {modifier} in {way_name}",destination:"Immettiti {modifier} verso {destination}"},straight:{default:"Immettiti a dritto",name:"Immettiti dritto in {way_name}",destination:"Immettiti dritto verso {destination}"},"slight left":{default:"Immettiti a sinistra",name:"Immettiti a sinistra in {way_name}",destination:"Immettiti a sinistra verso {destination}"},"slight right":{default:"Immettiti a destra",name:"Immettiti a destra in {way_name}",destination:"Immettiti a destra verso {destination}"},"sharp left":{default:"Immettiti a sinistra",name:"Immettiti a sinistra in {way_name}",destination:"Immettiti a sinistra verso {destination}"},"sharp right":{default:"Immettiti a destra",name:"Immettiti a destra in {way_name}",destination:"Immettiti a destra verso {destination}"},uturn:{default:"Fai un'inversione a U",name:"Fai un'inversione a U in {way_name}",destination:"Fai un'inversione a U verso {destination}"}},"new name":{default:{default:"Continua a {modifier}",name:"Continua a {modifier} in {way_name}",destination:"Continua a {modifier} verso {destination}"},straight:{default:"Continua dritto",name:"Continua in {way_name}",destination:"Continua verso {destination}"},"sharp left":{default:"Svolta a sinistra",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},"sharp right":{default:"Svolta a destra",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},"slight left":{default:"Continua leggermente a sinistra",name:"Continua leggermente a sinistra in {way_name}",destination:"Continua leggermente a sinistra verso {destination}"},"slight right":{default:"Continua leggermente a destra",name:"Continua leggermente a destra in {way_name} ",destination:"Continua leggermente a destra verso {destination}"},uturn:{default:"Fai un'inversione a U",name:"Fai un'inversione a U in {way_name}",destination:"Fai un'inversione a U verso {destination}"}},notification:{default:{default:"Continua a {modifier}",name:"Continua a {modifier} in {way_name}",destination:"Continua a {modifier} verso {destination}"},uturn:{default:"Fai un'inversione a U",name:"Fai un'inversione a U in {way_name}",destination:"Fai un'inversione a U verso {destination}"}},"off ramp":{default:{default:"Prendi la rampa",name:"Prendi la rampa in {way_name}",destination:"Prendi la rampa verso {destination}",exit:"Prendi l'uscita {exit}",exit_destination:"Prendi l'uscita {exit} verso {destination}"},left:{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}",exit:"Prendi l'uscita {exit} a sinistra",exit_destination:"Prendi la {exit} uscita a sinistra verso {destination}"},right:{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}",exit:"Prendi la {exit} uscita a destra",exit_destination:"Prendi la {exit} uscita a destra verso {destination}"},"sharp left":{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}",exit:"Prendi l'uscita {exit} a sinistra",exit_destination:"Prendi la {exit} uscita a sinistra verso {destination}"},"sharp right":{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}",exit:"Prendi la {exit} uscita a destra",exit_destination:"Prendi la {exit} uscita a destra verso {destination}"},"slight left":{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}",exit:"Prendi l'uscita {exit} a sinistra",exit_destination:"Prendi la {exit} uscita a sinistra verso {destination}"},"slight right":{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}",exit:"Prendi la {exit} uscita a destra",exit_destination:"Prendi la {exit} uscita a destra verso {destination}"}},"on ramp":{default:{default:"Prendi la rampa",name:"Prendi la rampa in {way_name}",destination:"Prendi la rampa verso {destination}"},left:{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}"},right:{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}"},"sharp left":{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}"},"sharp right":{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}"},"slight left":{default:"Prendi la rampa a sinistra",name:"Prendi la rampa a sinistra in {way_name}",destination:"Prendi la rampa a sinistra verso {destination}"},"slight right":{default:"Prendi la rampa a destra",name:"Prendi la rampa a destra in {way_name}",destination:"Prendi la rampa a destra verso {destination}"}},rotary:{default:{default:{default:"Immettiti nella rotonda",name:"Immettiti nella ritonda ed esci in {way_name}",destination:"Immettiti nella ritonda ed esci verso {destination}"},name:{default:"Immettiti in {rotary_name}",name:"Immettiti in {rotary_name} ed esci su {way_name}",destination:"Immettiti in {rotary_name} ed esci verso {destination}"},exit:{default:"Immettiti nella rotonda e prendi la {exit_number} uscita",name:"Immettiti nella rotonda e prendi la {exit_number} uscita in {way_name}",destination:"Immettiti nella rotonda e prendi la {exit_number} uscita verso {destination}"},name_exit:{default:"Immettiti in {rotary_name} e prendi la {exit_number} uscita",name:"Immettiti in {rotary_name} e prendi la {exit_number} uscita in {way_name}",destination:"Immettiti in {rotary_name} e prendi la {exit_number} uscita verso {destination}"}}},roundabout:{default:{exit:{default:"Immettiti nella rotonda e prendi la {exit_number} uscita",name:"Immettiti nella rotonda e prendi la {exit_number} uscita in {way_name}",destination:"Immettiti nella rotonda e prendi la {exit_number} uscita verso {destination}"},default:{default:"Entra nella rotonda",name:"Entra nella rotonda e prendi l'uscita in {way_name}",destination:"Entra nella rotonda e prendi l'uscita verso {destination}"}}},"roundabout turn":{default:{default:"Fai una {modifier}",name:"Fai una {modifier} in {way_name}",destination:"Fai una {modifier} verso {destination}"},left:{default:"Svolta a sinistra",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},right:{default:"Gira a destra",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},straight:{default:"Continua dritto",name:"Continua dritto in {way_name}",destination:"Continua dritto verso {destination}"}},"exit roundabout":{default:{default:"Fai una {modifier}",name:"Fai una {modifier} in {way_name}",destination:"Fai una {modifier} verso {destination}"},left:{default:"Svolta a sinistra",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},right:{default:"Gira a destra",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},straight:{default:"Continua dritto",name:"Continua dritto in {way_name}",destination:"Continua dritto verso {destination}"}},"exit rotary":{default:{default:"Fai una {modifier}",name:"Fai una {modifier} in {way_name}",destination:"Fai una {modifier} verso {destination}"},left:{default:"Svolta a sinistra",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},right:{default:"Gira a destra",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},straight:{default:"Prosegui dritto",name:"Continua su {way_name}",destination:"Continua verso {destination}"}},turn:{default:{default:"Fai una {modifier}",name:"Fai una {modifier} in {way_name}",destination:"Fai una {modifier} verso {destination}"},left:{default:"Svolta a sinistra",name:"Svolta a sinistra in {way_name}",destination:"Svolta a sinistra verso {destination}"},right:{default:"Gira a destra",name:"Svolta a destra in {way_name}",destination:"Svolta a destra verso {destination}"},straight:{default:"Prosegui dritto",name:"Continua su {way_name}",destination:"Continua verso {destination}"}},"use lane":{no_lanes:{default:"Continua dritto"},default:{default:"{lane_instruction}"}}}}},{}],34:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:false},v5:{constants:{ordinalize:{1:"첫ë²ì©¨",2:"ëë²ì§¸",3:"ì¸ë²ì§¸",4:"ë¤ë²ì©¨",5:"ë¤ì¯ë²ì§¸",6:"ì¬ì¯ë²ì§¸",7:"ì¼ê³±ë²ì§¸",8:"ì¬ëë²ì§¸",9:"ìíë²ì§¸",10:"ì´ë²ì§¸"},direction:{north:"ë¶ìª½",northeast:"ë¶ë쪽",east:"ë쪽",southeast:"ë¨ë쪽",south:"ë¨ìª½",southwest:"ë¨ì쪽",west:"ì쪽",northwest:"ë¶ì쪽"},modifier:{left:"ì¢íì ",right:"ì°íì ","sharp left":"ë°ë¡ì¢íì ","sharp right":"ë°ë¡ì°íì ","slight left":"ì¡°ê¸ì¼ìª½","slight right":"ì¡°ê¸ì¤ë¥¸ìª½",straight:"ì§ì§",uturn:"ì í´"},lanes:{xo:"ì°ì¸¡ì°¨ì ì ì§",ox:"ì¢ì¸¡ì°¨ì ì ì§",xox:"ì¤ìì ì§",oxo:"ê³ì ì¢ì¸¡ ëë ì°ì¸¡ ì°¨ì "}},modes:{ferry:{default:"í리를 íìì¤",name:"í리를 íìì¤ {way_name}",destination:"í리를 íê³ {destination}ê¹ì§ ê°ì¸ì."}},phrase:{"two linked by distance":"{instruction_one}, ê·¸ë¦¬ê³ , {distance} ìì, {instruction_two}","two linked":"{instruction_one}, ê·¸ë¦¬ê³ {instruction_two}","one in distance":"{distance} ë´ì, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"{exit}ë²ì¼ë¡ ëê°ì¸ì."},arrive:{default:{default:" {nth}목ì ì§ì ëì°©íììµëë¤.",upcoming:"{nth}목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"ëì°©í ìì ì ëë¤.",named:"ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},left:{default:"ì¢ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì¢ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì¢ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},right:{default:"ì°ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì°ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì°ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},"sharp left":{default:"ì¢ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì¢ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì¢ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},"sharp right":{default:"ì°ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì°ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì°ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},"slight right":{default:"ì°ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì°ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì°ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},"slight left":{default:"ì¢ì¸¡ì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì¢ì¸¡ì {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì¢ì¸¡ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."},straight:{default:"ë°ë¡ ìì {nth} 목ì ì§ê° ììµëë¤.",upcoming:"ì§ì§íìë©´ {nth} 목ì ì§ì ëì°©í ìì ì ëë¤.",short:"ëì°©íììµëë¤","short-upcoming":"목ì ì§ì ê³§ ëì°©í ìì ì ëë¤.",named:"ì ë©´ì ê²½ì ì§ {waypoint_name}ì ëì°©íììµëë¤."}},continue:{default:{default:"{modifier} íì ",name:"{modifier} íì íê³ {way_name}ë¡ ì§ì§í´ 주ì¸ì.",destination:"{modifier} íì íê³ {destination}ê¹ì§ ê°ì¸ì.",exit:"{way_name} 쪽ì¼ë¡ {modifier} íì íì¸ì."},straight:{default:"ê³ì ì§ì§í´ 주ì¸ì.",name:"{way_name} ë¡ ê³ì ì§ì§í´ 주ì¸ì.",destination:"{destination}ê¹ì§ ì§ì§í´ 주ì¸ì.",distance:"{distance}ê¹ì§ ì§ì§í´ 주ì¸ì.",namedistance:"{distance}ê¹ì§ {way_name}ë¡ ê°ì£¼ì¸ì."},"sharp left":{default:"ê¸ì¢íì íì¸ì.",name:"ê¸ì¢íì íì í {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì¢íì íì í {destination}ë¡ ê°ì¸ì."},"sharp right":{default:"ê¸ì°íì íì¸ì.",name:"ê¸ì°íì íê³ {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì°íì íì í {destination}ë¡ ê°ì¸ì."},"slight left":{default:"ì½ê° ì¢íì íì¸ì.",name:"ì½ê° ì¢íì íê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì½ê° ì¢íì íì í {destination}ë¡ ê°ì¸ì."},"slight right":{default:"ì½ê° ì°íì íì¸ì.",name:"ì½ê° ì°íì íê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì½ê° ì°íì íì í {destination}ë¡ ê°ì¸ì."},uturn:{default:"ì í´ íì¸ì",name:"ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì í´íì í {destination}ë¡ ê°ì¸ì."}},depart:{default:{default:"{direction}ë¡ ê°ì¸ì",name:"{direction} ë¡ ê°ì {way_name} 를 ì´ì©íì¸ì. ",namedistance:"{direction}ë¡ ê°ì{way_name} 를 {distance}ê¹ì§ ê°ì¸ì."}},"end of road":{default:{default:"{modifier} íì íì¸ì.",name:"{modifier}íì íê³ {way_name}ë¡ ê°ì¸ì.",destination:"{modifier}íì íì í {destination}ë¡ ê°ì¸ì."},straight:{default:"ê³ì ì§ì§í´ 주ì¸ì.",name:"{way_name}ë¡ ê³ì ì§ì§í´ 주ì¸ì.",destination:"{destination}ê¹ì§ ì§ì§í´ 주ì¸ì."},uturn:{default:"ëë¡ ëê¹ì§ ê°ì ì í´í´ 주ì¸ì.",name:"ëë¡ ëê¹ì§ ê°ì ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ëë¡ ëê¹ì§ ê°ì ì í´í´ì {destination} ê¹ì§ ê°ì¸ì."}},fork:{default:{default:"ê°ë¦¼ê¸¸ìì {modifier} ì¼ë¡ ê°ì¸ì.",name:"{modifier}íê³ {way_name}ë¡ ê°ì¸ì.",destination:"{modifier}íê³ {destination}ê¹ì§ ê°ì¸ì."},"slight left":{default:"ê°ë¦¼ê¸¸ìì ì¢íì íì¸ì.",name:"ì¢íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¢íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"slight right":{default:"ê°ë¦¼ê¸¸ìì ì°íì íì¸ì.",name:"ì°íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì°íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"sharp left":{default:"ê°ë¦¼ê¸¸ìì ê¸ì¢íì íì¸ì.",name:"ê¸ì¢íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì¢íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"sharp right":{default:"ê°ë¦¼ê¸¸ìì ê¸ì°íì íì¸ì.",name:"ê¸ì°íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì°íì í´ì {destination}ê¹ì§ ê°ì¸ì."},uturn:{default:"ì í´íì¸ì.",name:"ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì í´í´ì {destination}ê¹ì§ ê°ì¸ì."}},merge:{default:{default:"{modifier} í©ë¥",name:"{modifier} í©ë¥íì¬ {way_name}ë¡ ê°ì¸ì.",destination:"{modifier} í©ë¥íì¬ {destination}ë¡ ê°ì¸ì."},straight:{default:"í©ë¥",name:"{way_name}ë¡ í©ë¥íì¸ì.",destination:"{destination}ë¡ í©ë¥íì¸ì."},"slight left":{default:"ì¢ì¸¡ì¼ë¡ í©ë¥íì¸ì.",name:"ì¢ì¸¡{way_name}ë¡ í©ë¥íì¸ì.",destination:"ì¢ì¸¡ì¼ë¡ í©ë¥íì¬ {destination}ê¹ì§ ê°ì¸ì."},"slight right":{default:"ì°ì¸¡ì¼ë¡ í©ë¥íì¸ì.",name:"ì°ì¸¡{way_name}ë¡ í©ë¥íì¸ì.",destination:"ì°ì¸¡ì¼ë¡ í©ë¥íì¬ {destination}ê¹ì§ ê°ì¸ì."},"sharp left":{default:"ì¢ì¸¡ì¼ë¡ í©ë¥íì¸ì.",name:"ì¢ì¸¡{way_name}ë¡ í©ë¥íì¸ì.",destination:"ì¢ì¸¡ì¼ë¡ í©ë¥íì¬ {destination}ê¹ì§ ê°ì¸ì."},"sharp right":{default:"ì°ì¸¡ì¼ë¡ í©ë¥íì¸ì.",name:"ì°ì¸¡{way_name}ë¡ í©ë¥íì¸ì.",destination:"ì°ì¸¡ì¼ë¡ í©ë¥íì¬ {destination}ê¹ì§ ê°ì¸ì."},uturn:{default:"ì í´íì¸ì.",name:"ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì í´í´ì {destination}ê¹ì§ ê°ì¸ì."}},"new name":{default:{default:"{modifier} ì ì§íì¸ì.",name:"{modifier} ì ì§í´ì {way_name}ë¡ ê°ì¸ì.",destination:"{modifier} ì ì§í´ì {destination}ê¹ì§ ê°ì¸ì."},straight:{default:"ì§ì§í´ì£¼ì¸ì.",name:"{way_name}ë¡ ê³ì ê°ì¸ì.",destination:"{destination}ê¹ì§ ê³ì ê°ì¸ì."},"sharp left":{default:"ê¸ì¢íì íì¸ì.",name:"ê¸ì¢íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì¢íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"sharp right":{default:"ê¸ì°íì íì¸ì.",name:"ê¸ì°íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ê¸ì°íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"slight left":{default:"ì½ê° ì¢íì í´ì¸ì.",name:"ì½ê° ì¢íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì½ê° ì¢íì í´ì {destination}ê¹ì§ ê°ì¸ì."},"slight right":{default:"ì½ê° ì°íì í´ì¸ì.",name:"ì½ê° ì°íì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì½ê° ì°íì í´ì {destination}ê¹ì§ ê°ì¸ì."},uturn:{default:"ì í´í´ì£¼ì¸ì.",name:"ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì í´í´ì {destination}ê¹ì§ ê°ì¸ì."}},notification:{default:{default:"{modifier} íì¸ì.",name:"{modifier}í´ì {way_name}ë¡ ê°ì¸ì.",destination:"{modifier}í´ì {destination}ê¹ì§ ê°ì¸ì."},uturn:{default:"ì í´íì¸ì.",name:"ì í´í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì í´í´ì {destination}ê¹ì§ ê°ì¸ì."}},"off ramp":{default:{default:"ë¨íë¡ ì§ì¶í´ 주ì¸ì..",name:"ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¶êµ¬ë¡ ëê°ì {destination}ê¹ì§ ê°ì¸ì."},left:{default:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."},right:{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."},"sharp left":{default:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."},"sharp right":{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."},"slight left":{default:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¼ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."},"slight right":{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ 주ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì.",exit:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ëê°ì¸ì.",exit_destination:"{exit} ì¤ë¥¸ìª½ì ì¶êµ¬ë¡ ê°ëì {destination}ê¹ì§ ê°ì¸ì."} 2507},"on ramp":{default:{default:"ë¨íë¡ ì§ì í´ ì£¼ì¸ì..",name:"ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},left:{default:"ì¼ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},right:{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},"sharp left":{default:"ì¼ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},"sharp right":{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},"slight left":{default:"ì¼ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¼ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."},"slight right":{default:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ ì£¼ì¸ì.",name:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ì¤ë¥¸ìª½ì ë¨íë¡ ì§ì í´ì {destination}ê¹ì§ ê°ì¸ì."}},rotary:{default:{default:{default:"ë¡í°ë¦¬ë¡ ì§ì íì¸ì.",name:"ë¡í°ë¦¬ë¡ ì§ì í´ì {way_name} ëê°ì¸ì.",destination:"ë¡í°ë¦¬ë¡ ì§ì í´ì {destination}ë¡ ëê°ì¸ì."},name:{default:"{rotary_name}ë¡ ì§ì íì¸ì.",name:"{rotary_name}ë¡ ì§ì í´ì {way_name}ë¡ ëê°ì¸ì.",destination:"{rotary_name}ë¡ ì§ì í´ì {destination}ë¡ ëê°ì¸ì."},exit:{default:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number} ì¶êµ¬ë¡ ëê°ì¸ì.",name:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number} ì¶êµ¬ë¡ ëê° {way_name}ë¡ ê°ì¸ì.",destination:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number} ì¶êµ¬ë¡ ëê° {destination}ë¡ ê°ì¸ì."},name_exit:{default:"{rotary_name}ë¡ ì§ì í´ì {exit_number}ë² ì¶êµ¬ë¡ ëê°ì¸ì.",name:"{rotary_name}ë¡ ì§ì í´ì {exit_number}ë² ì¶êµ¬ë¡ ëê° {way_name}ë¡ ê°ì¸ì.",destination:"{rotary_name}ë¡ ì§ì í´ì {exit_number}ë² ì¶êµ¬ë¡ ëê° {destination}ë¡ ê°ì¸ì."}}},roundabout:{default:{exit:{default:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number}ë¡ ëê°ì¸ì.",name:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number}ë¡ ëê°ì {way_name}ë¡ ê°ì¸ì.",destination:"ë¡í°ë¦¬ë¡ ì§ì í´ì {exit_number}ë¡ ëê°ì {destination}ë¡ ê°ì¸ì."},default:{default:"ë¡í°ë¦¬ë¡ ì§ì íì¸ì.",name:"ë¡í°ë¦¬ë¡ ì§ì í´ì {way_name} ëê°ì¸ì.",destination:"ë¡í°ë¦¬ë¡ ì§ì í´ì {destination}ë¡ ëê°ì¸ì."}}},"roundabout turn":{default:{default:"{modifier} íì¸ì.",name:"{modifier} íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"{modifier} íìê³ {destination}ê¹ì§ ê°ì¸ì."},left:{default:"ì¢íì íì¸ì.",name:"ì¢íì íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì¢íì íìê³ {destination}ê¹ì§ ê°ì¸ì."},right:{default:"ì°íì íì¸ì.",name:"ì°íì íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì°íì íìê³ {destination}ê¹ì§ ê°ì¸ì."},straight:{default:"ì§ì§ íì¸ì.",name:"ì§ì§íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì§ì§íìê³ {destination}ê¹ì§ ê°ì¸ì."}},"exit roundabout":{default:{default:"ë¡í리ìì ì§ì¶íì¸ì.",name:"ë¡í리ìì ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ë¡í리ìì ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì."}},"exit rotary":{default:{default:"ë¡í리ìì ì§ì¶íì¸ì.",name:"ë¡í리ìì ì§ì¶í´ì {way_name}ë¡ ê°ì¸ì.",destination:"ë¡í리ìì ì§ì¶í´ì {destination}ê¹ì§ ê°ì¸ì."}},turn:{default:{default:"{modifier} íì¸ì.",name:"{modifier} íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"{modifier} íìê³ {destination}ê¹ì§ ê°ì¸ì."},left:{default:"ì¢íì íì¸ì.",name:"ì¢íì íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì¢íì íìê³ {destination}ê¹ì§ ê°ì¸ì."},right:{default:"ì°íì íì¸ì.",name:"ì°íì íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì°íì íìê³ {destination}ê¹ì§ ê°ì¸ì."},straight:{default:"ì§ì§ íì¸ì.",name:"ì§ì§íìê³ {way_name}ë¡ ê°ì¸ì.",destination:"ì§ì§íìê³ {destination}ê¹ì§ ê°ì¸ì."}},"use lane":{no_lanes:{default:"ì§ì§íì¸ì."},default:{default:"{lane_instruction}"}}}}},{}],35:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:false},v5:{constants:{ordinalize:{1:"ááá",2:"áá¯ááá",3:"áááá",4:"á áá¯áá³",5:"áá¥á¥á",6:"ááá",7:"ááá±á",8:"á¡áá",9:"ááá",10:"ááá"},direction:{north:"á±á»áá¬áá¹á¡ááá¹",northeast:"á¡á±áá½áá±á»áá¬áá¹á¡ááá¹",east:"á¡á±áá½áá¡ááá¹",southeast:"á¡á±áá½áá±áá¬áá¹á¡ááá¹",south:"á±áá¬áá¹á¡ááá¹",southwest:"á¡á±áá¬áá¹á±áá¬áá¹á¡ááá¹",west:"á¡á±áá¬áá¹á¡ááá¹",northwest:"á¡á±áá¬áá¹á±á»áá¬áá¹á¡ááá¹"},modifier:{left:"ááá¹ááá¹",right:"áá¬ááá¹","sharp left":"ááá¹ááá¹ á±áá¬áá¹á·ááºáá³á¸","sharp right":"áá¬ááá¹ á±áá¬áá¹áááºáá³á¸","slight left":"ááá¹ááá¹ á¡ááá¹á¸ááá¹","slight right":"áá¬ááá¹ á¡ááá¹á¸ááá¹",straight:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸",uturn:"á-á±áá¼á"},lanes:{xo:"áá¬ááá¹ááá¯áááá¹áá¼á¬á¸áá«",ox:"ááá¹ááá¹ááá¯áááá¹áá¼á¬á¸áá«",xox:"á¡ááá¹áá¼áá¹ááá¹á±ááá«",oxo:"ááá¹ ááá¯áááá¯áá¹ áá¬ááá¹ááá¯á ááá¹áá¼á¬á¸áá«"}},modes:{ferry:{default:"ááá¹áá® á á®á¸áá¼á¬á¸áá«",name:"{way_name}ááᯠááá¹áá®á á®á¸áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯á ááá¹áá®á á®á¸áá¼á¬á¸áá«"}},phrase:{"two linked by distance":"{instruction_one}á»áá®á¸á±áá¬áá¹ {distance}á¡áá¼áá¹á¸ {instruction_two}","two linked":"{instruction_one}á»áá®á¸á±áá¬áá¹ {instruction_two}","one in distance":"{distance}á¡áá¼áá¹á¸ {instruction_one}","name and ref":"{name}( {ref})","exit with number":"{exit}áá½áá¼áá¹áá«"},arrive:{default:{default:"{nth}ááá¹ áá¼á¬á¸ááá¯á±áᬠááá®á¸ááá¹á¸ááá¯áá¹ááá¯áá±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áá±áá¬áá¹áááá¹á·ááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name} áá½á¬ á±áá¬áá¹áá½áá»áá®"},left:{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áááá¹á·ááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name}áá½á¬ááá¹ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},right:{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áá¬{nth} ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áááá¹á·ááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name} áá½á¬áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},"sharp left":{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áá½áá»áá®",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name}áá½á¬ááá¹ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},"sharp right":{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áá¬{nth} ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áááá¹á·ááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name} áá½á¬áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},"slight right":{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áá¬{nth} ááá®á¸ááá¹á¸ááá¯áá¹ááá¯á áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áááá¹á·ááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹ááá½á¿áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name} áá½á¬áá¬ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},"slight left":{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹ááá¹áá¼áá¹á±áá¬áá¹áá½áá»áá®",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áá½áá»áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name}áá½á¬ááá¹ááá¹á±áá¼ááᬠá±áá¬áá¹áá½áá»áá®"},straight:{default:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹á·ááá¹á·áá¼á¬á¸áá¬áá¬áá¹áá½áá»áá®",upcoming:"ááá¹ áá¼á¬á¸ááá¯á±áᬠ{nth}ááá®á¸ááá¹á¸ááá¯áá¹ááá¯áááá¹á·ááá¹á·áá¼á¬á¸áá¬áá¬áá¹áá½áááá¹",short:"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áá½áá»áá®","short-upcoming":"ááá¹áá¼á¬á¸ááá¯á±áᬠá±ááá¬ááá¯á á±áá¬áá¹áááá¹á·ááá¹",named:"ááá¹ ááá¹ {waypoint_name}áá½á¬ááá¹á·ááá¹á·áá¼á¬á¸áᬠá±áá¬áá¹áá½áá»áá®"}},continue:{default:{default:"{modifier}ááá¯áá½áá¹á·áá«",name:"{way_name}ââá±áááá¼áá¹á±áááá¹ {modifier}ááá¯áá½áá¹á·áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠáá½áá¹ááá«",exit:"{way_name}ââá±ááááá¯á {modifier}ááá¯áá½áá¹á·áá«"},straight:{default:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸ ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±áááá¼áá¹á±áááá¹ááá¹ááá¹á·ááá¹áá¼á¬áá«",destination:"{destination}áá®ááá¯áááá¹áá¼á¬á¸áá«",distance:"{distance}á±áá¬áá¹ ááá¹á·ááá¹á· ááá¹áá¼á¬á¸áá«",namedistance:"{way_name}ââá±áááá¼áá¹{distance}á±áá¬áá¹ááá¹áá¼á¬á¸áá«"},"sharp left":{default:"ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸á±áá¼ááá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸á±áá¼ááá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸á±áá¼ááá«"},"sharp right":{default:"áá¬ááá¹ á±áá¬áá¹áááºáá³á¸á±áá¼ááá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ áá¬ááá¹á±áá¬áá¹á·ááºáá³á¸á±áá¼ááá«",destination:"{destination}áá®ááá¯á áá¬ááá¹á±áá¬áá¹á·ááºáá³á¸á±áá¼ááá«"},"slight left":{default:"ááá¹ááá¹ á¡ááá¹á¸ááá¹á±áá¼ááá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ ááá¹ááá¹á¡ááá¹á¸ááá¹á±áá¼ááá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹á¡ááá¹á¸ááá¹ááºáá³á¸á±áá¼ááá«"},"slight right":{default:"áá¬ááá¹ á¡ááá¹á¸ááá¹ááºáá³á¸á±áá¼ááá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ áá¬ááá¹á¡ááá¹á¸ááá¹á±áá¼ááá«",destination:"{destination}áá®ááá¯á áá¬ááá¹á¡ááá¹á¸ááá¹ááºáá³á¸á±áá¼ááá«"},uturn:{default:"á-á±áá¼á á±áá¼ááá«",name:"{way_name}ááá¹á¸ááá¹ááá¯á á-á±áá¼áá±áá¼áá»áá®á¸ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},depart:{default:{default:"{direction}ááá¯á á¥á®á¸ááá¹áá«",name:"{direction}ááᯠ{way_name}á¡á±áááá¼áá¹ á¥á®á¸ááá¹áá«",namedistance:"{direction}ááᯠ{way_name}á¡á±áááá¼áá¹{distance}á±áá¬áá¹ á¥á®á¸ááá¹ááá¹áá¼á¬á¸áá«"}},"end of road":{default:{default:"{modifier}ááá¯ááá½áá¹á·áá«",name:"{way_name}ââá±ááááá¯á {modifier}ááá¯áá½áá¹á·áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠáá½áá¹ááá«"},straight:{default:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸ ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯áááá¹á·ááá¹á·ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯áááá¹á·ááá¹á·ááá¹áá¼á¬á¸áá«"},uturn:{default:"ááá¹á¸á¡áá¶á¯á¸áá¼áá¹ á-á±áá¼áá±áá¼ááá«",name:"ááá¹á¸á¡áá¶á¯á¸áá¼áá¹ {way_name}ââá±ááááá¯áá-á±áá¼áá±áá¼ááá«",destination:"ááá¹á¸á¡áá¶á¯á¸áá¼áá¹{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},fork:{default:{default:"ááá¹á¸áá¶á¯ááá¹á¸áá¼áá¼áá¹ {modifier}ááá¯ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯á {modifier}ááá¯ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠááá¹áá¼á¬á¸áá«"},"slight left":{default:"ááá¹á¸áá¶á¯ááá¹á¸áá¼áá¼áá¹ááá¹ááá¹ááá¯ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯áááá¹ááá¹ááá¯ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹ááᯠááá¹áá¼á¬á¸áá«"},"slight right":{default:"ááá¹á¸áá¶á¯ááá¹á¸áá¼áá¼áá¹áá¬ááá¹ááá¯ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯ááá¬ááá¹ááá¯ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹ááᯠááá¹áá¼á¬á¸áá«"},"sharp left":{default:"ááá¹á¸áá¶á¯ááá¹á¸áá¼áá¼áá¹ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸ááá¯áá¼á¬á¸áá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸áá°áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸ áá¼á¬á¸áá«"},"sharp right":{default:"ááá¹á¸áá¶á¯ááá¹á¸áá¼áá¼áá¹áá¬ááá¹á±áá¬áá¹á·ááºáá³á¸ááá¯áá¼á¬á¸áá«",name:"{way_name}âá±ááááá¯á áá¬ááá¹á±áá¬áá¹á·ááºáá³á¸áá°áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹á±áá¬áá¹á·ááºáá³á¸ áá¼á¬á¸áá«"},uturn:{default:"á-á±áá¼á á±áá¼ááá«",name:"{way_name}ááá¯áá-á±áá¼áá±áá¼ááá«",destination:"{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},merge:{default:{default:"{modifier}ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯á {modifier}ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠáá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},straight:{default:"áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯ááá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯á áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},"slight left":{default:"ááá¹ááá¹ááá¯ááá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯áááá¹ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹ááᯠáá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},"slight right":{default:"áá¬ááá¹ááá¯ááá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯ááá¬ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹ááᯠáá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},"sharp left":{default:"ááá¹ááá¹ááá¯ááá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯áááá¹ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹ááᯠáá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},"sharp right":{default:"áá¬ááá¹ááá¯ááá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",name:"{way_name}ââá±ááááá¯ááá¬ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹ááᯠáá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«"},uturn:{default:"á-á±áá¼á á±áá¼ááá«",name:"{way_name}ááá¹á¸ááá¹ááá¯á á-á±áá¼á á±áá¼ááá« ",destination:"{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},"new name":{default:{default:"{modifier}ááá¯ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯á {modifier}ááá¯ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠááá¹áá¼á¬á¸áá«"},straight:{default:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸ ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯áááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯áááá¹áá¼á¬á¸áá«"},"sharp left":{default:"ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸áá°áá«",name:"{way_name}âá±áááá¼áá¹á±áááá¹ ááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸áá°áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹á±áá¬áá¹á·ááºáá³á¸ áá¼á¬á¸áá«"},"sharp right":{default:"áá¬ááá¹ á±áá¬áá¹áááºáá³á¸áá°áá«",name:"{way_name}âá±ááááá¯á áá¬ááá¹á±áá¬áá¹á·ááºáá³á¸áá°áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹á±áá¬áá¹á·ááºáá³á¸ áá¼á¬á¸áá«"},"slight left":{default:"ááá¹ááá¹ á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯áááá¹ááá¹ á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯áááá¹ááá¹á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«"},"slight right":{default:"áá¬ááá¹ á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯ááá¬ááá¹ á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯ááá¬ááá¹á¡ááá¹á¸ááá¹ááá¹áá¼á¬á¸áá«"},uturn:{default:"á-á±áá¼á á±áá¼ááá«",name:"{way_name}ááá¹á¸ááá¹ááá¯á á-á±áá¼á á±áá¼ááá«",destination:"{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},notification:{default:{default:"{modifier}ááá¯ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯á {modifier}ááá¯ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯á {modifier}ááᯠááá¹áá¼á¬á¸áá«"},uturn:{default:"á-á±áá¼á á±áá¼ááá«",name:"{way_name}ááá¹á¸ááá¹ááá¯á á-á±áá¼á á±áá¼ááá«",destination:"{destination}áá®ááá¯á áá±áá¼áááºáá³á¸á±áá¼ááá«"}},"off ramp":{default:{default:"ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯á {exit} ááá¯áá°áá«"},left:{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"ááá¹ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯áááá¹ááá¹áá½ {exit} ááá¯áá°áá«"},right:{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"áá¬ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯ááá¬ááá¹áá½ {exit} ááá¯áá°áá«"},"sharp left":{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"ááá¹ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯áááá¹ááá¹áá½ {exit} ááá¯áá°áá«"},"sharp right":{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"áá¬ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯ááá¬ááá¹áá½ {exit} ááá¯áá°áá«"},"slight left":{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"ááá¹ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯áááá¹ááá¹áá½ {exit} ááá¯áá°áá«"},"slight right":{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",exit:"áá¬ááá¹áá¼áá¹{exit}ááᯠáá°áá«",exit_destination:"{destination}áá®ááá¯ááá¬ááá¹áá½ {exit} ááá¯áá°áá«"}},"on ramp":{default:{default:"ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},left:{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},right:{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},"sharp left":{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},"sharp right":{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},"slight left":{default:"ááá¹ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á ááá¹ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"},"slight right":{default:"áá¬ááá¹ááá¯áááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«",destination:"{destination}áá®ááá¯á áá¬ááá¹âá±áááá¼áá¹ááºá¥á¹á¸ááá¹ááá¹á¸ááá¯áá°áá«"}},rotary:{default:{default:{default:"á¡ááá¯áá¹á¸ááá¹ááá¯áááá¹áá«",name:"{way_name}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«Â ",destination:"{destination}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«"},name:{default:"{rotary_name}ááá¯áááá¹áá«",name:"{rotary_name}á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{way_name}á±ááááá¯ááá¼áá¹áá«",destination:"{rotary_name}á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{destination}áá®ááá¯ááá¼áá¹áá«"},exit:{default:"á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬á»ááá¹áá¼áá¹áá«",name:"á¡ááá¯áá¹á¸ááá¹ááá¯áááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{way_name}á±ááááá¯ááá¼áá¹áá«",destination:"á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{destination}áá®ááá¯ááá¼áá¹áá«"},name_exit:{default:"{rotary_name}ááá¯ááá¹á»áá®á¸ {exit_number}ááá¯áá°áá¬áá¼áá¹áá«",name:"{rotary_name}ááá¯ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{way_name}á±ááááá¯ááá¼áá¹áá«",destination:"{rotary_name}ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{destination}áá®ááá¯ááá¼áá¹áá«"}}},roundabout:{default:{exit:{default:"{exit_number}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",name:"á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{way_name}á±ááááá¯ááá¼áá¹áá«",destination:"á¡ááá¯áá¹á¸ááá¹ááá¹á»áá®á¸{exit_number}ááá¯áá°áá¬{destination}áá®ááá¯ááá¼áá¹áá«"},default:{default:"á¡ááá¯áá¹á¸ááá¹ááá¹áá«",name:"{way_name}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",destination:"{destination}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«"}}},"roundabout turn":{default:{default:"{modifier}ááá¯áá½áá¹á·áá«Â ",name:"{modifier}âá±ááááá¯{way_name}ááá¯ááá¹áá¼á¬á¸áá«Â ",destination:"{modifier}áá®ááá¯á{destination}ááᯠááá¹áá¼á¬á¸áá«Â "},left:{default:"ááá¹ááá¹ááá¯áá»ááá¹áá½áá¹ááá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ááá¯ááá¹áá¼á¬á¸áá«Â ",destination:"{destination}áá®ááá¯áááá¹ááá¹áá½ á±áá¼ááá«"},right:{default:"áá¬ááá¹ááá¯áá»ááá¹áá½áá¹ááá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«Â ",destination:"{destination}áá¬ááá¹ááá¯á á±áá¼ááá«"},straight:{default:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸ ááá¹áá¼á¬á¸áá«",name:"{way_name}ââá±ááááá¯áááá¹á·ááá¹á·ááá¹áá¼á¬á¸áá«",destination:"{destination}áá®ááá¯áááá¹á·ááá¹á·ááá¹áá¼á¬á¸áá«"}},"exit roundabout":{default:{default:"á¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",name:"{way_name}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",destination:"á¥á®á¸ááá¹á¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«{destination}"}},"exit rotary":{default:{default:"á¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«á¥á®á¸ááá¹á¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",name:"{way_name}á±ááááá¯áá¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«",destination:"á¥á®á¸ááá¹á¡ááá¯áá¹á¸ááá¹ááá¹á¸áá½áá¼áá¹áá«{destination}"}},turn:{default:{default:"{modifier}ááá¯áá½áá¹á·áá«Â ",name:"{modifier}âá±ááááá¯{way_name}ááá¯ááá¹áá¼á¬á¸áá«Â ",destination:"{modifier}áá®ááá¯á{destination}ááᯠááá¹áá¼á¬á¸áá«Â "},left:{default:"ááá¹ááá¹ááá¯áá»ááá¹áá½áá¹ááá«",name:"{way_name}âá±ááááá¯áááá¹ááá¹ááá¯ááá¹áá¼á¬á¸áá«Â ",destination:"{destination}ááá¹ááá¹ááá¯á á±áá¼ááá«"},right:{default:"áá¬ááá¹ááá¯áá»ááá¹áá½áá¹ááá«",name:"{way_name}âá±ááááá¯ááá¬ááá¹ááá¯áá¬á±áá¬áá¹á±áá«áá¹á¸áá¶á¯áá«Â ",destination:"{destination}áá¬ááá¹ááá¯á á±áá¼ááá«"},straight:{default:"ááá¹áááá¹ááá¼á¬á¸áá«",name:"{way_name}",destination:"{destination}áá®ááá¯áááá¹á·ááá¹á·áá¼á¬á¸áá«"}},"use lane":{no_lanes:{default:"á±á»áá¬áá¹áá±á»áá¬áá¹áááá¹á¸ááá¹á¸ ááá¹áá¼á¬á¸áá«"},default:{default:"{lane_instruction}"}}}}},{}],36:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1e",2:"2e",3:"3e",4:"4e",5:"5e",6:"6e",7:"7e",8:"8e",9:"9e",10:"10e"},direction:{north:"noord",northeast:"noordoost",east:"oost",southeast:"zuidoost",south:"zuid",southwest:"zuidwest",west:"west",northwest:"noordwest"},modifier:{left:"links",right:"rechts","sharp left":"scherpe bocht naar links","sharp right":"scherpe bocht naar rechts","slight left":"iets naar links","slight right":"iets naar rechts",straight:"rechtdoor",uturn:"omkeren"},lanes:{xo:"Rechts aanhouden",ox:"Links aanhouden",xox:"In het midden blijven",oxo:"Links of rechts blijven"}},modes:{ferry:{default:"Neem de veerpont",name:"Neem de veerpont {way_name}",destination:"Neem de veerpont richting {destination}"}},phrase:{"two linked by distance":"{instruction_one}, dan na {distance}, {instruction_two}","two linked":"{instruction_one}, daarna {instruction_two}","one in distance":"Over {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"afslag {exit}"},arrive:{default:{default:"Je bent gearriveerd op de {nth} bestemming.",upcoming:"U arriveert op de {nth} bestemming",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}"},left:{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich links.",upcoming:"Uw {nth} bestemming bevindt zich aan de linkerkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de linkerkant"},right:{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich rechts.",upcoming:"Uw {nth} bestemming bevindt zich aan de rechterkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de rechterkant"},"sharp left":{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich links.",upcoming:"Uw {nth} bestemming bevindt zich aan de linkerkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de linkerkant"},"sharp right":{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich rechts.",upcoming:"Uw {nth} bestemming bevindt zich aan de rechterkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de rechterkant"},"slight right":{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich rechts.",upcoming:"Uw {nth} bestemming bevindt zich aan de rechterkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de rechterkant"},"slight left":{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich links.",upcoming:"Uw {nth} bestemming bevindt zich aan de linkerkant",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is aan de linkerkant"},straight:{default:"Je bent gearriveerd. De {nth} bestemming bevindt zich voor je.",upcoming:"Uw {nth} bestemming is recht voor u",short:"U bent gearriveerd","short-upcoming":"U zult aankomen",named:"U bent gearriveerd bij {waypoint_name}, de bestemming is recht voor u"}},continue:{default:{default:"Ga {modifier}",name:"Sla {modifier} om op {way_name} te blijven",destination:"Ga {modifier} richting {destination}",exit:"Ga {modifier} naar {way_name}"},straight:{default:"Ga rechtdoor",name:"Blijf rechtdoor gaan op {way_name}",destination:"Ga rechtdoor richting {destination}",distance:"Ga rechtdoor voor {distance}",namedistance:"Ga verder op {way_name} voor {distance}"},"sharp left":{default:"Linksaf",name:"Sla scherp links af om op {way_name} te blijven",destination:"Linksaf richting {destination}"},"sharp right":{default:"Rechtsaf",name:"Sla scherp rechts af om op {way_name} te blijven",destination:"Rechtsaf richting {destination}"},"slight left":{default:"Ga links",name:"Links afbuigen om op {way_name} te blijven",destination:"Rechts afbuigen om op {destination} te blijven"},"slight right":{default:"Rechts afbuigen",name:"Rechts afbuigen om op {way_name} te blijven",destination:"Rechts afbuigen richting {destination}"},uturn:{default:"Keer om",name:"Draai om en ga verder op {way_name}",destination:"Keer om richting {destination}"}},depart:{default:{default:"Vertrek in {direction}elijke richting",name:"Neem {way_name} in {direction}elijke richting",namedistance:"Ga richting {direction} op {way_name} voor {distance}"}},"end of road":{default:{default:"Ga {modifier}",name:"Ga {modifier} naar {way_name}",destination:"Ga {modifier} richting {destination}"},straight:{default:"Ga in de aangegeven richting",name:"Ga naar {way_name}",destination:"Ga richting {destination}"},uturn:{default:"Keer om",name:"Keer om naar {way_name}",destination:"Keer om richting {destination}"}},fork:{default:{default:"Ga {modifier} op de splitsing",name:"Houd {modifier} aan, tot {way_name}",destination:"Houd {modifier}, in de richting van {destination}"},"slight left":{default:"Links aanhouden op de splitsing",name:"Houd links aan, tot {way_name}",destination:"Houd links aan, richting {destination}"},"slight right":{default:"Rechts aanhouden op de splitsing",name:"Houd rechts aan, tot {way_name}",destination:"Houd rechts aan, richting {destination}"},"sharp left":{default:"Neem bij de splitsing, een scherpe bocht, naar links ",name:"Neem een scherpe bocht naar links, tot aan {way_name}",destination:"Neem een scherpe bocht naar links, richting {destination}"},"sharp right":{default:"Neem op de splitsing, een scherpe bocht, naar rechts",name:"Neem een scherpe bocht naar rechts, tot aan {way_name}",destination:"Neem een scherpe bocht naar rechts, richting {destination}"},uturn:{default:"Keer om",name:"Keer om naar {way_name}",destination:"Keer om richting {destination}"}},merge:{default:{default:"Bij de splitsing {modifier}",name:"Bij de splitsing {modifier} naar {way_name}",destination:"Bij de splitsing {modifier} richting {destination}"},straight:{default:"Samenvoegen",name:"Ga verder op {way_name}",destination:"Ga verder richting {destination}"},"slight left":{default:"Bij de splitsing links aanhouden",name:"Bij de splitsing links aanhouden naar {way_name}",destination:"Bij de splitsing links aanhouden richting {destination}"},"slight right":{default:"Bij de splitsing rechts aanhouden",name:"Bij de splitsing rechts aanhouden naar {way_name}",destination:"Bij de splitsing rechts aanhouden richting {destination}"},"sharp left":{default:"Bij de splitsing linksaf",name:"Bij de splitsing linksaf naar {way_name}",destination:"Bij de splitsing linksaf richting {destination}"},"sharp right":{default:"Bij de splitsing rechtsaf",name:"Bij de splitsing rechtsaf naar {way_name}",destination:"Bij de splitsing rechtsaf richting {destination}"},uturn:{default:"Keer om",name:"Keer om naar {way_name}",destination:"Keer om richting {destination}"}},"new name":{default:{default:"Ga {modifier}",name:"Ga {modifier} naar {way_name}",destination:"Ga {modifier} richting {destination}"},straight:{default:"Ga in de aangegeven richting",name:"Ga rechtdoor naar {way_name}",destination:"Ga rechtdoor richting {destination}"},"sharp left":{default:"Neem een scherpe bocht, naar links",name:"Linksaf naar {way_name}",destination:"Linksaf richting {destination}"},"sharp right":{default:"Neem een scherpe bocht, naar rechts",name:"Rechtsaf naar {way_name}",destination:"Rechtsaf richting {destination}"},"slight left":{default:"Links aanhouden",name:"Links aanhouden naar {way_name}",destination:"Links aanhouden richting {destination}"},"slight right":{default:"Rechts aanhouden",name:"Rechts aanhouden naar {way_name}",destination:"Rechts aanhouden richting {destination}"},uturn:{default:"Keer om",name:"Keer om naar {way_name}",destination:"Keer om richting {destination}"}},notification:{default:{default:"Ga {modifier}",name:"Ga {modifier} naar {way_name}",destination:"Ga {modifier} richting {destination}"},uturn:{default:"Keer om",name:"Keer om naar {way_name}",destination:"Keer om richting {destination}"}},"off ramp":{default:{default:"Neem de afrit",name:"Neem de afrit naar {way_name}",destination:"Neem de afrit richting {destination}",exit:"Neem afslag {exit}",exit_destination:"Neem afslag {exit} richting {destination}"},left:{default:"Neem de afrit links",name:"Neem de afrit links naar {way_name}",destination:"Neem de afrit links richting {destination}",exit:"Neem afslag {exit} aan de linkerkant",exit_destination:"Neem afslag {exit} aan de linkerkant richting {destination}"},right:{default:"Neem de afrit rechts",name:"Neem de afrit rechts naar {way_name}",destination:"Neem de afrit rechts richting {destination}",exit:"Neem afslag {exit} aan de rechterkant",exit_destination:"Neem afslag {exit} aan de rechterkant richting {destination}"},"sharp left":{default:"Neem de afrit links",name:"Neem de afrit links naar {way_name}",destination:"Neem de afrit links richting {destination}",exit:"Neem afslag {exit} aan de linkerkant",exit_destination:"Neem afslag {exit} aan de linkerkant richting {destination}"},"sharp right":{default:"Neem de afrit rechts",name:"Neem de afrit rechts naar {way_name}",destination:"Neem de afrit rechts richting {destination}",exit:"Neem afslag {exit} aan de rechterkant",exit_destination:"Neem afslag {exit} aan de rechterkant richting {destination}"},"slight left":{default:"Neem de afrit links",name:"Neem de afrit links naar {way_name}",destination:"Neem de afrit links richting {destination}",exit:"Neem afslag {exit} aan de linkerkant",exit_destination:"Neem afslag {exit} aan de linkerkant richting {destination}"},"slight right":{default:"Neem de afrit rechts",name:"Neem de afrit rechts naar {way_name}",destination:"Neem de afrit rechts richting {destination}",exit:"Neem afslag {exit} aan de rechterkant",exit_destination:"Neem afslag {exit} aan de rechterkant richting {destination}"}},"on ramp":{default:{default:"Neem de oprit",name:"Neem de oprit naar {way_name}",destination:"Neem de oprit richting {destination}"},left:{default:"Neem de oprit links",name:"Neem de oprit links naar {way_name}",destination:"Neem de oprit links richting {destination}"},right:{default:"Neem de oprit rechts",name:"Neem de oprit rechts naar {way_name}",destination:"Neem de oprit rechts richting {destination}"},"sharp left":{default:"Neem de oprit links",name:"Neem de oprit links naar {way_name}",destination:"Neem de oprit links richting {destination}"},"sharp right":{default:"Neem de oprit rechts",name:"Neem de oprit rechts naar {way_name}",destination:"Neem de oprit rechts richting {destination}"},"slight left":{default:"Neem de oprit links",name:"Neem de oprit links naar {way_name}",destination:"Neem de oprit links richting {destination}"},"slight right":{default:"Neem de oprit rechts",name:"Neem de oprit rechts naar {way_name}",destination:"Neem de oprit rechts richting {destination}"}},rotary:{default:{default:{default:"Betreedt de rotonde",name:"Betreedt rotonde en sla af op {way_name}",destination:"Betreedt rotonde en sla af richting {destination}"},name:{default:"Ga het knooppunt {rotary_name} op",name:"Verlaat het knooppunt {rotary_name} naar {way_name}",destination:"Verlaat het knooppunt {rotary_name} richting {destination}"},exit:{default:"Betreedt rotonde en neem afslag {exit_number}",name:"Betreedt rotonde en neem afslag {exit_number} naar {way_name}",destination:"Betreedt rotonde en neem afslag {exit_number} richting {destination}"},name_exit:{default:"Ga het knooppunt {rotary_name} op en neem afslag {exit_number}",name:"Ga het knooppunt {rotary_name} op en neem afslag {exit_number} naar {way_name}",destination:"Ga het knooppunt {rotary_name} op en neem afslag {exit_number} richting {destination}"}}},roundabout:{default:{exit:{default:"Betreedt rotonde en neem afslag {exit_number}",name:"Betreedt rotonde en neem afslag {exit_number} naar {way_name}",destination:"Betreedt rotonde en neem afslag {exit_number} richting {destination}"},default:{default:"Betreedt de rotonde",name:"Betreedt rotonde en sla af op {way_name}",destination:"Betreedt rotonde en sla af richting {destination}"}}},"roundabout turn":{default:{default:"Ga {modifier}",name:"Ga {modifier} naar {way_name}",destination:"Ga {modifier} richting {destination}"},left:{default:"Ga linksaf",name:"Ga linksaf naar {way_name}",destination:"Ga linksaf richting {destination}"},right:{default:"Ga rechtsaf",name:"Ga rechtsaf naar {way_name}",destination:"Ga rechtsaf richting {destination}"},straight:{default:"Ga in de aangegeven richting",name:"Ga naar {way_name}",destination:"Ga richting {destination}"}},"exit roundabout":{default:{default:"Verlaat de rotonde",name:"Verlaat de rotonde en ga verder op {way_name}",destination:"Verlaat de rotonde richting {destination}"}},"exit rotary":{default:{default:"Verlaat de rotonde",name:"Verlaat de rotonde en ga verder op {way_name}",destination:"Verlaat de rotonde richting {destination}"}},turn:{default:{default:"Ga {modifier}",name:"Ga {modifier} naar {way_name}",destination:"Ga {modifier} richting {destination}"},left:{default:"Ga linksaf",name:"Ga linksaf naar {way_name}",destination:"Ga linksaf richting {destination}"},right:{default:"Ga rechtsaf",name:"Ga rechtsaf naar {way_name}",destination:"Ga rechtsaf richting {destination}"},straight:{default:"Ga rechtdoor",name:"Ga rechtdoor naar {way_name}",destination:"Ga rechtdoor richting {destination}"}},"use lane":{no_lanes:{default:"Rechtdoor"},default:{default:"{lane_instruction}"}}}}},{}],37:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1.",2:"2.",3:"3.",4:"4.",5:"5.",6:"6.",7:"7.",8:"8.",9:"9.",10:"10."},direction:{north:"nord",northeast:"nordøst",east:"øst",southeast:"sørøst",south:"sør",southwest:"sørvest",west:"vest",northwest:"nordvest"},modifier:{left:"venstre",right:"høyre","sharp left":"skarp venstre","sharp right":"skarp høyre","slight left":"litt til venstre","slight right":"litt til høyre",straight:"rett frem", 2508uturn:"U-sving"},lanes:{xo:"Hold til høyre",ox:"Hold til venstre",xox:"Hold deg i midten",oxo:"Hold til venstre eller høyre"}},modes:{ferry:{default:"Ta ferja",name:"Ta ferja {way_name}",destination:"Ta ferja til {destination}"}},phrase:{"two linked by distance":"{instruction_one}, deretter {instruction_two} om {distance}","two linked":"{instruction_one}, deretter {instruction_two}","one in distance":"Om {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"avkjørsel {exit}"},arrive:{default:{default:"Du har ankommet din {nth} destinasjon",upcoming:"Du vil ankomme din {nth} destinasjon",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}"},left:{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din venstre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din venstre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din venstre side"},right:{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din høyre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din høyre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din høyre side"},"sharp left":{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din venstre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din venstre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din venstre side"},"sharp right":{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din høyre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din høyre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din høyre side"},"slight right":{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din høyre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din høyre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din høyre side"},"slight left":{default:"Du har ankommet din {nth} destinasjon, pÃ¥ din venstre side",upcoming:"Du vil ankomme din {nth} destinasjon, pÃ¥ din venstre side",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, pÃ¥ din venstre side"},straight:{default:"Du har ankommet din {nth} destinasjon, rett forut",upcoming:"Du vil ankomme din {nth} destinasjon, rett forut",short:"Du har ankommet","short-upcoming":"Du vil ankomme",named:"Du har ankommet {waypoint_name}, rett forut"}},continue:{default:{default:"Ta til {modifier}",name:"Ta til {modifier} for Ã¥ bli værende pÃ¥ {way_name}",destination:"Ta til {modifier} mot {destination}",exit:"Ta til {modifier} inn pÃ¥ {way_name}"},straight:{default:"Fortsett rett frem",name:"Fortsett rett frem for Ã¥ bli værende pÃ¥ {way_name}",destination:"Fortsett mot {destination}",distance:"Fortsett rett frem, {distance} ",namedistance:"Fortsett pÃ¥ {way_name}, {distance}"},"sharp left":{default:"Sving skarpt til venstre",name:"Sving skarpt til venstre for Ã¥ bli værende pÃ¥ {way_name}",destination:"Sving skarpt til venstre mot {destination}"},"sharp right":{default:"Sving skarpt til høyre",name:"Sving skarpt til høyre for Ã¥ bli værende pÃ¥ {way_name}",destination:"Sving skarpt mot {destination}"},"slight left":{default:"Sving svakt til venstre",name:"Sving svakt til venstre for Ã¥ bli værende pÃ¥ {way_name}",destination:"Sving svakt til venstre mot {destination}"},"slight right":{default:"Sving svakt til høyre",name:"Sving svakt til høyre for Ã¥ bli værende pÃ¥ {way_name}",destination:"Sving svakt til høyre mot {destination}"},uturn:{default:"Ta en U-sving",name:"Ta en U-sving og fortsett pÃ¥ {way_name}",destination:"Ta en U-sving mot {destination}"}},depart:{default:{default:"Kjør i retning {direction}",name:"Kjør i retning {direction} pÃ¥ {way_name}",namedistance:"Kjør i retning {direction} pÃ¥ {way_name}, {distance}"}},"end of road":{default:{default:"Sving {modifier}",name:"Ta til {modifier} inn pÃ¥ {way_name}",destination:"Sving {modifier} mot {destination}"},straight:{default:"Fortsett rett frem",name:"Fortsett rett frem til {way_name}",destination:"Fortsett rett frem mot {destination}"},uturn:{default:"Ta en U-sving i enden av veien",name:"Ta en U-sving til {way_name} i enden av veien",destination:"Ta en U-sving mot {destination} i enden av veien"}},fork:{default:{default:"Hold til {modifier} i veikrysset",name:"Hold til {modifier} inn pÃ¥ {way_name}",destination:"Hold til {modifier} mot {destination}"},"slight left":{default:"Hold til venstre i veikrysset",name:"Hold til venstre inn pÃ¥ {way_name}",destination:"Hold til venstre mot {destination}"},"slight right":{default:"Hold til høyre i veikrysset",name:"Hold til høyre inn pÃ¥ {way_name}",destination:"Hold til høyre mot {destination}"},"sharp left":{default:"Sving skarpt til venstre i veikrysset",name:"Sving skarpt til venstre inn pÃ¥ {way_name}",destination:"Sving skarpt til venstre mot {destination}"},"sharp right":{default:"Sving skarpt til høyre i veikrysset",name:"Sving skarpt til høyre inn pÃ¥ {way_name}",destination:"Svings skarpt til høyre mot {destination}"},uturn:{default:"Ta en U-sving",name:"Ta en U-sving til {way_name}",destination:"Ta en U-sving mot {destination}"}},merge:{default:{default:"Hold {modifier} kjørefelt",name:"Hold {modifier} kjørefelt inn pÃ¥ {way_name}",destination:"Hold {modifier} kjørefelt mot {destination}"},straight:{default:"Hold kjørefelt",name:"Hold kjørefelt inn pÃ¥ {way_name}",destination:"Hold kjørefelt mot {destination}"},"slight left":{default:"Hold venstre kjørefelt",name:"Hold venstre kjørefelt inn pÃ¥ {way_name}",destination:"Hold venstre kjørefelt mot {destination}"},"slight right":{default:"Hold høyre kjørefelt",name:"Hold høyre kjørefelt inn pÃ¥ {way_name}",destination:"Hold høyre kjørefelt mot {destination}"},"sharp left":{default:"Hold venstre kjørefelt",name:"Hold venstre kjørefelt inn pÃ¥ {way_name}",destination:"Hold venstre kjørefelt mot {destination}"},"sharp right":{default:"Hold høyre kjørefelt",name:"Hold høyre kjørefelt inn pÃ¥ {way_name}",destination:"Hold høyre kjørefelt mot {destination}"},uturn:{default:"Ta en U-sving",name:"Ta en U-sving til {way_name}",destination:"Ta en U-sving mot {destination}"}},"new name":{default:{default:"Fortsett {modifier}",name:"Fortsett {modifier} til {way_name}",destination:"Fortsett {modifier} mot {destination}"},straight:{default:"Fortsett rett frem",name:"Fortsett inn pÃ¥ {way_name}",destination:"Fortsett mot {destination}"},"sharp left":{default:"Sving skarpt til venstre",name:"Sving skarpt til venstre inn pÃ¥ {way_name}",destination:"Sving skarpt til venstre mot {destination}"},"sharp right":{default:"Sving skarpt til høyre",name:"Sving skarpt til høyre inn pÃ¥ {way_name}",destination:"Svings skarpt til høyre mot {destination}"},"slight left":{default:"Fortsett litt mot venstre",name:"Fortsett litt mot venstre til {way_name}",destination:"Fortsett litt mot venstre mot {destination}"},"slight right":{default:"Fortsett litt mot høyre",name:"Fortsett litt mot høyre til {way_name}",destination:"Fortsett litt mot høyre mot {destination}"},uturn:{default:"Ta en U-sving",name:"Ta en U-sving til {way_name}",destination:"Ta en U-sving mot {destination}"}},notification:{default:{default:"Fortsett {modifier}",name:"Fortsett {modifier} til {way_name}",destination:"Fortsett {modifier} mot {destination}"},uturn:{default:"Ta en U-sving",name:"Ta en U-sving til {way_name}",destination:"Ta en U-sving mot {destination}"}},"off ramp":{default:{default:"Ta avkjørselen",name:"Ta avkjørselen inn pÃ¥ {way_name}",destination:"Ta avkjørselen mot {destination}",exit:"Ta avkjørsel {exit}",exit_destination:"Ta avkjørsel {exit} mot {destination}"},left:{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ venstre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ venstre side mot {destination}"},right:{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ høyre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ høyre side mot {destination}"},"sharp left":{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ venstre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ venstre side mot {destination}"},"sharp right":{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ høyre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ høyre side mot {destination}"},"slight left":{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ venstre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ venstre side mot {destination}"},"slight right":{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}",exit:"Ta avkjørsel {exit} pÃ¥ høyre side",exit_destination:"Ta avkjørsel {exit} pÃ¥ høyre side mot {destination}"}},"on ramp":{default:{default:"Ta avkjørselen",name:"Ta avkjørselen inn pÃ¥ {way_name}",destination:"Ta avkjørselen mot {destination}"},left:{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}"},right:{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}"},"sharp left":{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}"},"sharp right":{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}"},"slight left":{default:"Ta avkjørselen pÃ¥ venstre side",name:"Ta avkjørselen pÃ¥ venstre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ venstre side mot {destination}"},"slight right":{default:"Ta avkjørselen pÃ¥ høyre side",name:"Ta avkjørselen pÃ¥ høyre side inn pÃ¥ {way_name}",destination:"Ta avkjørselen pÃ¥ høyre side mot {destination}"}},rotary:{default:{default:{default:"Kjør inn i rundkjøringen",name:"Kjør inn i rundkjøringen og deretter ut pÃ¥ {way_name}",destination:"Kjør inn i rundkjøringen og deretter ut mot {destination}"},name:{default:"Kjør inn i {rotary_name}",name:"Kjør inn i {rotary_name} og deretter ut pÃ¥ {way_name}",destination:"Kjør inn i {rotary_name} og deretter ut mot {destination}"},exit:{default:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel",name:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel ut pÃ¥ {way_name}",destination:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel ut mot {destination} "},name_exit:{default:"Kjør inn i {rotary_name} og ta {exit_number} avkjørsel",name:"Kjør inn i {rotary_name} og ta {exit_number} avkjørsel inn pÃ¥ {way_name}",destination:"Kjør inn i {rotary_name} og ta {exit_number} avkjørsel mot {destination}"}}},roundabout:{default:{exit:{default:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel",name:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel inn pÃ¥ {way_name}",destination:"Kjør inn i rundkjøringen og ta {exit_number} avkjørsel ut mot {destination} "},default:{default:"Kjør inn i rundkjøringen",name:"Kjør inn i rundkjøringen og deretter ut pÃ¥ {way_name}",destination:"Kjør inn i rundkjøringen og deretter ut mot {destination}"}}},"roundabout turn":{default:{default:"Ta en {modifier}",name:"Ta en {modifier} inn pÃ¥ {way_name}",destination:"Ta en {modifier} mot {destination}"},left:{default:"Sving til venstre",name:"Sving til venstre inn pÃ¥ {way_name}",destination:"Sving til venstre mot {destination}"},right:{default:"Sving til høyre",name:"Sving til høyre inn pÃ¥ {way_name}",destination:"Sving til høyre mot {destination}"},straight:{default:"Fortsett rett frem",name:"Fortsett rett frem til {way_name}",destination:"Fortsett rett frem mot {destination}"}},"exit roundabout":{default:{default:"Kjør ut av rundkjøringen",name:"Kjør ut av rundkjøringen og inn pÃ¥ {way_name}",destination:"Kjør ut av rundkjøringen mot {destination}"}},"exit rotary":{default:{default:"Kjør ut av rundkjøringen",name:"Kjør ut av rundkjøringen og inn pÃ¥ {way_name}",destination:"Kjør ut av rundkjøringen mot {destination}"}},turn:{default:{default:"Ta en {modifier}",name:"Ta en {modifier} inn pÃ¥ {way_name}",destination:"Ta en {modifier} mot {destination}"},left:{default:"Sving til venstre",name:"Sving til venstre inn pÃ¥ {way_name}",destination:"Sving til venstre mot {destination}"},right:{default:"Sving til høyre",name:"Sving til høyre inn pÃ¥ {way_name}",destination:"Sving til høyre mot {destination}"},straight:{default:"Kjør rett frem",name:"Kjør rett frem og inn pÃ¥ {way_name}",destination:"Kjør rett frem mot {destination}"}},"use lane":{no_lanes:{default:"Fortsett rett frem"},default:{default:"{lane_instruction}"}}}}},{}],38:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1.",2:"2.",3:"3.",4:"4.",5:"5.",6:"6.",7:"7.",8:"8.",9:"9.",10:"10."},direction:{north:"póÅnoc",northeast:"póÅnocny wschód",east:"wschód",southeast:"poÅudniowy wschód",south:"poÅudnie",southwest:"poÅudniowy zachód",west:"zachód",northwest:"póÅnocny zachód"},modifier:{left:"lewo",right:"prawo","sharp left":"ostro w lewo","sharp right":"ostro w prawo","slight left":"Åagodnie w lewo","slight right":"Åagodnie w prawo",straight:"prosto",uturn:"zawróÄ"},lanes:{xo:"Trzymaj siÄ prawej strony",ox:"Trzymaj siÄ lewej strony",xox:"Trzymaj siÄ Årodka",oxo:"Trzymaj siÄ lewej lub prawej strony"}},modes:{ferry:{default:"Weź prom",name:"Weź prom {way_name}",destination:"Weź prom w kierunku {destination}"}},phrase:{"two linked by distance":"{instruction_one}, nastÄpnie za {distance} {instruction_two}","two linked":"{instruction_one}, nastÄpnie {instruction_two}","one in distance":"Za {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"Dojechano do miejsca docelowego {nth}",upcoming:"Dojechano do miejsca docelowego {nth}",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}"},left:{default:"Dojechano do miejsca docelowego {nth}, po lewej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po lewej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po lewej stronie"},right:{default:"Dojechano do miejsca docelowego {nth}, po prawej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po prawej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po prawej stronie"},"sharp left":{default:"Dojechano do miejsca docelowego {nth}, po lewej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po lewej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po lewej stronie"},"sharp right":{default:"Dojechano do miejsca docelowego {nth}, po prawej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po prawej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po prawej stronie"},"slight right":{default:"Dojechano do miejsca docelowego {nth}, po prawej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po prawej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po prawej stronie"},"slight left":{default:"Dojechano do miejsca docelowego {nth}, po lewej stronie",upcoming:"Dojechano do miejsca docelowego {nth}, po lewej stronie",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, po lewej stronie"},straight:{default:"Dojechano do miejsca docelowego {nth} , prosto",upcoming:"Dojechano do miejsca docelowego {nth} , prosto",short:"Dojechano do miejsca docelowego {nth}","short-upcoming":"Dojechano do miejsca docelowego {nth}",named:"Dojechano do {waypoint_name}, prosto"}},continue:{default:{default:"SkrÄÄ {modifier}",name:"SkrÄÄ w {modifier}, aby pozostaÄ na {way_name}",destination:"SkrÄÄ {modifier} w kierunku {destination}",exit:"SkrÄÄ {modifier} na {way_name}"},straight:{default:"Kontynuuj prosto",name:"Jedź dalej prosto, aby pozostaÄ na {way_name}",destination:"Kontynuuj w kierunku {destination}",distance:"Jedź dalej prosto przez {distance}",namedistance:"Jedź dalej {way_name} przez {distance}"},"sharp left":{default:"SkrÄÄ ostro w lewo",name:"SkrÄÄ w lewo w ostry zakrÄt, aby pozostaÄ na {way_name}",destination:"SkrÄÄ ostro w lewo w kierunku {destination}"},"sharp right":{default:"SkrÄÄ ostro w prawo",name:"SkrÄÄ w prawo w ostry zakrÄt, aby pozostaÄ na {way_name}",destination:"SkrÄÄ ostro w prawo w kierunku {destination}"},"slight left":{default:"SkrÄÄ w lewo w Åagodny zakrÄt",name:"SkrÄÄ w lewo w Åagodny zakrÄt, aby pozostaÄ na {way_name}",destination:"SkrÄÄ w lewo w Åagodny zakrÄt na {destination}"},"slight right":{default:"SkrÄÄ w prawo w Åagodny zakrÄt",name:"SkrÄÄ w prawo w Åagodny zakrÄt, aby pozostaÄ na {way_name}",destination:"SkrÄÄ w prawo w Åagodny zakrÄt na {destination}"},uturn:{default:"ZawróÄ",name:"ZawrÃ³Ä i jedź dalej {way_name}",destination:"ZawrÃ³Ä w kierunku {destination}"}},depart:{default:{default:"Kieruj siÄ {direction}",name:"Kieruj siÄ {direction} na {way_name}",namedistance:"Head {direction} on {way_name} for {distance}"}},"end of road":{default:{default:"SkrÄÄ {modifier}",name:"SkrÄÄ {modifier} na {way_name}",destination:"SkrÄÄ {modifier} w kierunku {destination}"},straight:{default:"Kontynuuj prosto",name:"Kontynuuj prosto na {way_name}",destination:"Kontynuuj prosto w kierunku {destination}"},uturn:{default:"ZawrÃ³Ä na koÅcu ulicy",name:"ZawrÃ³Ä na koÅcu ulicy na {way_name}",destination:"ZawrÃ³Ä na koÅcu ulicy w kierunku {destination}"}},fork:{default:{default:"Na rozwidleniu trzymaj siÄ {modifier}",name:"Na rozwidleniu trzymaj siÄ {modifier} na {way_name}",destination:"Na rozwidleniu trzymaj siÄ {modifier} w kierunku {destination}"},"slight left":{default:"Na rozwidleniu trzymaj siÄ lewej strony",name:"Na rozwidleniu trzymaj siÄ lewej strony w {way_name}",destination:"Na rozwidleniu trzymaj siÄ lewej strony w kierunku {destination}"},"slight right":{default:"Na rozwidleniu trzymaj siÄ prawej strony",name:"Na rozwidleniu trzymaj siÄ prawej strony na {way_name}",destination:"Na rozwidleniu trzymaj siÄ prawej strony w kierunku {destination}"},"sharp left":{default:"Na rozwidleniu skrÄÄ ostro w lewo",name:"SkrÄÄ ostro w lewo w {way_name}",destination:"SkrÄÄ ostro w lewo w kierunku {destination}"},"sharp right":{default:"Na rozwidleniu skrÄÄ ostro w prawo",name:"SkrÄÄ ostro w prawo na {way_name}",destination:"SkrÄÄ ostro w prawo w kierunku {destination}"},uturn:{default:"ZawróÄ",name:"ZawrÃ³Ä na {way_name}",destination:"ZawrÃ³Ä w kierunku {destination}"}},merge:{default:{default:"WÅÄ cz siÄ {modifier}",name:"WÅÄ cz siÄ {modifier} na {way_name}",destination:"WÅÄ cz siÄ {modifier} w kierunku {destination}"},straight:{default:"WÅÄ cz siÄ prosto",name:"WÅÄ cz siÄ prosto na {way_name}",destination:"WÅÄ cz siÄ prosto w kierunku {destination}"},"slight left":{default:"WÅÄ cz siÄ z lewej strony",name:"WÅÄ cz siÄ z lewej strony na {way_name}",destination:"WÅÄ cz siÄ z lewej strony w kierunku {destination}"},"slight right":{default:"WÅÄ cz siÄ z prawej strony",name:"WÅÄ cz siÄ z prawej strony na {way_name}",destination:"WÅÄ cz siÄ z prawej strony w kierunku {destination}"},"sharp left":{default:"WÅÄ cz siÄ z lewej strony",name:"WÅÄ cz siÄ z lewej strony na {way_name}",destination:"WÅÄ cz siÄ z lewej strony w kierunku {destination}"},"sharp right":{default:"WÅÄ cz siÄ z prawej strony",name:"WÅÄ cz siÄ z prawej strony na {way_name}",destination:"WÅÄ cz siÄ z prawej strony w kierunku {destination}"},uturn:{default:"ZawróÄ",name:"ZawrÃ³Ä na {way_name}",destination:"ZawrÃ³Ä w kierunku {destination}"}},"new name":{default:{default:"Kontynuuj {modifier}",name:"Kontynuuj {modifier} na {way_name}",destination:"Kontynuuj {modifier} w kierunku {destination}"},straight:{default:"Kontynuuj prosto",name:"Kontynuuj na {way_name}",destination:"Kontynuuj w kierunku {destination}"},"sharp left":{default:"SkrÄÄ ostro w lewo",name:"SkrÄÄ ostro w lewo w {way_name}",destination:"SkrÄÄ ostro w lewo w kierunku {destination}"},"sharp right":{default:"SkrÄÄ ostro w prawo",name:"SkrÄÄ ostro w prawo na {way_name}",destination:"SkrÄÄ ostro w prawo w kierunku {destination}"},"slight left":{default:"Kontynuuj Åagodnie w lewo",name:"Kontynuuj Åagodnie w lewo na {way_name}",destination:"Kontynuuj Åagodnie w lewo w kierunku {destination}"},"slight right":{default:"Kontynuuj Åagodnie w prawo",name:"Kontynuuj Åagodnie w prawo na {way_name}",destination:"Kontynuuj Åagodnie w prawo w kierunku {destination}"},uturn:{default:"ZawróÄ",name:"ZawrÃ³Ä na {way_name}",destination:"ZawrÃ³Ä w kierunku {destination}"}},notification:{default:{default:"Kontynuuj {modifier}",name:"Kontynuuj {modifier} na {way_name}",destination:"Kontynuuj {modifier} w kierunku {destination}"},uturn:{default:"ZawróÄ",name:"ZawrÃ³Ä na {way_name}",destination:"ZawrÃ³Ä w kierunku {destination}"}},"off ramp":{default:{default:"Zjedź",name:"Weź zjazd na {way_name}",destination:"Weź zjazd w kierunku {destination}",exit:"Zjedź zjazdem {exit}",exit_destination:"Zjedź zjazdem {exit} na {destination}"},left:{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po lewej stronie",exit_destination:"Zjedź zjazdem {exit} po lewej stronie na {destination}"},right:{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po prawej stronie",exit_destination:"Zjedź zjazdem {exit} po prawej stronie na {destination}"},"sharp left":{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po lewej stronie",exit_destination:"Zjedź zjazdem {exit} po lewej stronie na {destination}"},"sharp right":{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po prawej stronie",exit_destination:"Zjedź zjazdem {exit} po prawej stronie na {destination}"},"slight left":{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po lewej stronie",exit_destination:"Zjedź zjazdem {exit} po lewej stronie na {destination}"},"slight right":{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}",exit:"Zjedź zjazdem {exit} po prawej stronie",exit_destination:"Zjedź zjazdem {exit} po prawej stronie na {destination}"}},"on ramp":{default:{default:"Weź zjazd",name:"Weź zjazd na {way_name}",destination:"Weź zjazd w kierunku {destination}"},left:{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}"},right:{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}"},"sharp left":{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}"},"sharp right":{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}"},"slight left":{default:"Weź zjazd po lewej",name:"Weź zjazd po lewej na {way_name}",destination:"Weź zjazd po lewej w kierunku {destination}"},"slight right":{default:"Weź zjazd po prawej",name:"Weź zjazd po prawej na {way_name}",destination:"Weź zjazd po prawej w kierunku {destination}"}},rotary:{default:{default:{default:"Wjedź na rondo",name:"Wjedź na rondo i skrÄÄ na {way_name}",destination:"Wjedź na rondo i skrÄÄ w kierunku {destination}"},name:{default:"Wjedź na {rotary_name}",name:"Wjedź na {rotary_name} i skrÄÄ na {way_name}",destination:"Wjedź na {rotary_name} i skrÄÄ w kierunku {destination}"},exit:{default:"Wjedź na rondo i wyjedź {exit_number} zjazdem",name:"Wjedź na rondo i wyjedź {exit_number} zjazdem na {way_name}",destination:"Wjedź na rondo i wyjedź {exit_number} zjazdem w kierunku {destination}"},name_exit:{default:"Wjedź na {rotary_name} i wyjedź {exit_number} zjazdem",name:"Wjedź na {rotary_name} i wyjedź {exit_number} zjazdem na {way_name}",destination:"Wjedź na {rotary_name} i wyjedź {exit_number} zjazdem w kierunku {destination}"}}},roundabout:{default:{exit:{default:"Wjedź na rondo i wyjedź {exit_number} zjazdem",name:"Wjedź na rondo i wyjedź {exit_number} zjazdem na {way_name}",destination:"Wjedź na rondo i wyjedź {exit_number} zjazdem w kierunku {destination}"},default:{default:"Wjedź na rondo",name:"Wjedź na rondo i wyjedź na {way_name}",destination:"Wjedź na rondo i wyjedź w kierunku {destination}"}}},"roundabout turn":{default:{default:"{modifier}",name:"{modifier} na {way_name}",destination:"{modifier} w kierunku {destination}"},left:{default:"SkrÄÄ w lewo",name:"SkrÄÄ w lewo na {way_name}",destination:"SkrÄÄ w lewo w kierunku {destination}"},right:{default:"SkrÄÄ w prawo",name:"SkrÄÄ w prawo na {way_name}",destination:"SkrÄÄ w prawo w kierunku {destination}"},straight:{default:"Kontynuuj prosto",name:"Kontynuuj prosto na {way_name}",destination:"Kontynuuj prosto w kierunku {destination}"}},"exit roundabout":{default:{default:"{modifier}",name:"{modifier} na {way_name}",destination:"{modifier} w kierunku {destination}"},left:{default:"SkrÄÄ w lewo",name:"SkrÄÄ w lewo na {way_name}",destination:"SkrÄÄ w lewo w kierunku {destination}"},right:{default:"SkrÄÄ w prawo",name:"SkrÄÄ w prawo na {way_name}",destination:"SkrÄÄ w prawo w kierunku {destination}"},straight:{default:"Kontynuuj prosto",name:"Kontynuuj prosto na {way_name}",destination:"Kontynuuj prosto w kierunku {destination}"}},"exit rotary":{default:{default:"{modifier}",name:"{modifier} na {way_name}",destination:"{modifier} w kierunku {destination}"},left:{default:"SkrÄÄ w lewo",name:"SkrÄÄ w lewo na {way_name}",destination:"SkrÄÄ w lewo w kierunku {destination}"},right:{default:"SkrÄÄ w prawo",name:"SkrÄÄ w prawo na {way_name}",destination:"SkrÄÄ w prawo w kierunku {destination}"},straight:{default:"Jedź prosto",name:"Jedź prosto na {way_name}",destination:"Jedź prosto w kierunku {destination}"}},turn:{default:{default:"{modifier}",name:"{modifier} na {way_name}",destination:"{modifier} w kierunku {destination}"},left:{default:"SkrÄÄ w lewo",name:"SkrÄÄ w lewo na {way_name}",destination:"SkrÄÄ w lewo w kierunku {destination}"},right:{default:"SkrÄÄ w prawo",name:"SkrÄÄ w prawo na {way_name}",destination:"SkrÄÄ w prawo w kierunku {destination}"},straight:{default:"Jedź prosto",name:"Jedź prosto na {way_name}",destination:"Jedź prosto w kierunku {destination}"}},"use lane":{no_lanes:{default:"Kontynuuj prosto"},default:{default:"{lane_instruction}"}}}}},{}],39:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1º",2:"2º",3:"3º",4:"4º",5:"5º",6:"6º",7:"7º",8:"8º",9:"9º",10:"10º"},direction:{north:"norte",northeast:"nordeste",east:"leste",southeast:"sudeste",south:"sul",southwest:"sudoeste",west:"oeste",northwest:"noroeste"},modifier:{left:"à esquerda",right:"à direita","sharp left":"fechada à esquerda","sharp right":"fechada à direita","slight left":"suave à esquerda","slight right":"suave à direita",straight:"em frente",uturn:"retorno"},lanes:{xo:"Mantenha-se à direita",ox:"Mantenha-se à esquerda",xox:"Mantenha-se ao centro",oxo:"Mantenha-se à esquerda ou direita"}},modes:{ferry:{default:"Pegue a balsa",name:"Pegue a balsa {way_name}",destination:"Pegue a balsa sentido {destination}"}},phrase:{"two linked by distance":"{instruction_one}, então, em {distance}, {instruction_two}","two linked":"{instruction_one}, então {instruction_two}","one in distance":"Em {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"saÃda {exit}"},arrive:{default:{default:"Você chegou ao seu {nth} destino",upcoming:"Você chegará ao seu {nth} destino",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou a {waypoint_name}"},left:{default:"Você chegou ao seu {nth} destino, à esquerda",upcoming:"Você chegará ao seu {nth} destino, à esquerda",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à esquerda"},right:{default:"Você chegou ao seu {nth} destino, à direita",upcoming:"Você chegará ao seu {nth} destino, à direita",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à direita"},"sharp left":{default:"Você chegou ao seu {nth} destino, à esquerda",upcoming:"Você chegará ao seu {nth} destino, à esquerda",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à esquerda"},"sharp right":{default:"Você chegou ao seu {nth} destino, à direita",upcoming:"Você chegará ao seu {nth} destino, à direita",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à direita"},"slight right":{default:"Você chegou ao seu {nth} destino, à direita",upcoming:"Você chegará ao seu {nth} destino, à direita",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à direita"},"slight left":{default:"Você chegou ao seu {nth} destino, à esquerda",upcoming:"Você chegará ao seu {nth} destino, à esquerda",short:"Você chegou","short-upcoming":"Você vai chegar",named:"Você chegou {waypoint_name}, à esquerda"},straight:{default:"Você chegou ao seu {nth} destino, em frente",upcoming:"Você vai chegar ao seu {nth} destino, em frente",short:"Você chegou","short-upcoming":"Você vai chegar",named:"You have arrived at {waypoint_name}, straight ahead"}},continue:{default:{default:"Vire {modifier}",name:"Vire {modifier} para manter-se na {way_name}",destination:"Vire {modifier} sentido {destination}",exit:"Vire {modifier} em {way_name}"},straight:{default:"Continue em frente",name:"Continue em frente para manter-se na {way_name}",destination:"Continue em direção à {destination}",distance:"Continue em frente por {distance}",namedistance:"Continue na {way_name} por {distance}"},"sharp left":{default:"Faça uma curva fechada a esquerda",name:"Faça uma curva fechada a esquerda para manter-se na {way_name}",destination:"Faça uma curva fechada a esquerda sentido {destination}"},"sharp right":{default:"Faça uma curva fechada a direita",name:"Faça uma curva fechada a direita para manter-se na {way_name}",destination:"Faça uma curva fechada a direita sentido {destination}"},"slight left":{default:"Faça uma curva suave a esquerda",name:"Faça uma curva suave a esquerda para manter-se na {way_name}",destination:"Faça uma curva suave a esquerda em direção a {destination}"},"slight right":{default:"Faça uma curva suave a direita", 2509name:"Faça uma curva suave a direita para manter-se na {way_name}",destination:"Faça uma curva suave a direita em direção a {destination}"},uturn:{default:"Faça o retorno",name:"Faça o retorno e continue em {way_name}",destination:"Faça o retorno sentido {destination}"}},depart:{default:{default:"Siga {direction}",name:"Siga {direction} em {way_name}",namedistance:"Siga {direction} na {way_name} por {distance}"}},"end of road":{default:{default:"Vire {modifier}",name:"Vire {modifier} em {way_name}",destination:"Vire {modifier} sentido {destination}"},straight:{default:"Continue em frente",name:"Continue em frente em {way_name}",destination:"Continue em frente sentido {destination}"},uturn:{default:"Faça o retorno no fim da rua",name:"Faça o retorno em {way_name} no fim da rua",destination:"Faça o retorno sentido {destination} no fim da rua"}},fork:{default:{default:"Mantenha-se {modifier} na bifurcação",name:"Mantenha-se {modifier} na bifurcação em {way_name}",destination:"Mantenha-se {modifier} na bifurcação sentido {destination}"},"slight left":{default:"Mantenha-se à esquerda na bifurcação",name:"Mantenha-se à esquerda na bifurcação em {way_name}",destination:"Mantenha-se à esquerda na bifurcação sentido {destination}"},"slight right":{default:"Mantenha-se à direita na bifurcação",name:"Mantenha-se à direita na bifurcação em {way_name}",destination:"Mantenha-se à direita na bifurcação sentido {destination}"},"sharp left":{default:"Faça uma curva fechada à esquerda na bifurcação",name:"Faça uma curva fechada à esquerda em {way_name}",destination:"Faça uma curva fechada à esquerda sentido {destination}"},"sharp right":{default:"Faça uma curva fechada à direita na bifurcação",name:"Faça uma curva fechada à direita em {way_name}",destination:"Faça uma curva fechada à direita sentido {destination}"},uturn:{default:"Faça o retorno",name:"Faça o retorno em {way_name}",destination:"Faça o retorno sentido {destination}"}},merge:{default:{default:"Entre {modifier}",name:"Entre {modifier} na {way_name}",destination:"Entre {modifier} em direção à {destination}"},straight:{default:"Mesclar",name:"Entre reto na {way_name}",destination:"Entre reto em direção à {destination}"},"slight left":{default:"Entre à esquerda",name:"Entre à esquerda na {way_name}",destination:"Entre à esquerda em direção à {destination}"},"slight right":{default:"Entre à direita",name:"Entre à direita na {way_name}",destination:"Entre à direita em direção à {destination}"},"sharp left":{default:"Entre à esquerda",name:"Entre à esquerda na {way_name}",destination:"Entre à esquerda em direção à {destination}"},"sharp right":{default:"Entre à direita",name:"Entre à direita na {way_name}",destination:"Entre à direita em direção à {destination}"},uturn:{default:"Faça o retorno",name:"Faça o retorno em {way_name}",destination:"Faça o retorno sentido {destination}"}},"new name":{default:{default:"Continue {modifier}",name:"Continue {modifier} em {way_name}",destination:"Continue {modifier} sentido {destination}"},straight:{default:"Continue em frente",name:"Continue em {way_name}",destination:"Continue em direção à {destination}"},"sharp left":{default:"Faça uma curva fechada à esquerda",name:"Faça uma curva fechada à esquerda em {way_name}",destination:"Faça uma curva fechada à esquerda sentido {destination}"},"sharp right":{default:"Faça uma curva fechada à direita",name:"Faça uma curva fechada à direita em {way_name}",destination:"Faça uma curva fechada à direita sentido {destination}"},"slight left":{default:"Continue ligeiramente à esquerda",name:"Continue ligeiramente à esquerda em {way_name}",destination:"Continue ligeiramente à esquerda sentido {destination}"},"slight right":{default:"Continue ligeiramente à direita",name:"Continue ligeiramente à direita em {way_name}",destination:"Continue ligeiramente à direita sentido {destination}"},uturn:{default:"Faça o retorno",name:"Faça o retorno em {way_name}",destination:"Faça o retorno sentido {destination}"}},notification:{default:{default:"Continue {modifier}",name:"Continue {modifier} em {way_name}",destination:"Continue {modifier} sentido {destination}"},uturn:{default:"Faça o retorno",name:"Faça o retorno em {way_name}",destination:"Faça o retorno sentido {destination}"}},"off ramp":{default:{default:"Pegue a rampa",name:"Pegue a rampa em {way_name}",destination:"Pegue a rampa sentido {destination}",exit:"Pegue a saÃda {exit}",exit_destination:"Pegue a saÃda {exit} em direção à {destination}"},left:{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}",exit:"Pegue a saÃda {exit} à esquerda",exit_destination:"Pegue a saÃda {exit} à esquerda em direção à {destination}"},right:{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentido {destination}",exit:"Pegue a saÃda {exit} à direita",exit_destination:"Pegue a saÃda {exit} à direita em direção à {destination}"},"sharp left":{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}",exit:"Pegue a saÃda {exit} à esquerda",exit_destination:"Pegue a saÃda {exit} à esquerda em direção à {destination}"},"sharp right":{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentido {destination}",exit:"Pegue a saÃda {exit} à direita",exit_destination:"Pegue a saÃda {exit} à direita em direção à {destination}"},"slight left":{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}",exit:"Pegue a saÃda {exit} à esquerda",exit_destination:"Pegue a saÃda {exit} à esquerda em direção à {destination}"},"slight right":{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentido {destination}",exit:"Pegue a saÃda {exit} à direita",exit_destination:"Pegue a saÃda {exit} à direita em direção à {destination}"}},"on ramp":{default:{default:"Pegue a rampa",name:"Pegue a rampa em {way_name}",destination:"Pegue a rampa sentido {destination}"},left:{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}"},right:{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentid {destination}"},"sharp left":{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}"},"sharp right":{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentido {destination}"},"slight left":{default:"Pegue a rampa à esquerda",name:"Pegue a rampa à esquerda em {way_name}",destination:"Pegue a rampa à esquerda sentido {destination}"},"slight right":{default:"Pegue a rampa à direita",name:"Pegue a rampa à direita em {way_name}",destination:"Pegue a rampa à direita sentido {destination}"}},rotary:{default:{default:{default:"Entre na rotatória",name:"Entre na rotatória e saia na {way_name}",destination:"Entre na rotatória e saia sentido {destination}"},name:{default:"Entre em {rotary_name}",name:"Entre em {rotary_name} e saia em {way_name}",destination:"Entre em {rotary_name} e saia sentido {destination}"},exit:{default:"Entre na rotatória e pegue a {exit_number} saÃda",name:"Entre na rotatória e pegue a {exit_number} saÃda na {way_name}",destination:"Entre na rotatória e pegue a {exit_number} saÃda sentido {destination}"},name_exit:{default:"Entre em {rotary_name} e saia na {exit_number} saÃda",name:"Entre em {rotary_name} e saia na {exit_number} saÃda em {way_name}",destination:"Entre em {rotary_name} e saia na {exit_number} saÃda sentido {destination}"}}},roundabout:{default:{exit:{default:"Entre na rotatória e pegue a {exit_number} saÃda",name:"Entre na rotatória e pegue a {exit_number} saÃda na {way_name}",destination:"Entre na rotatória e pegue a {exit_number} saÃda sentido {destination}"},default:{default:"Entre na rotatória",name:"Entre na rotatória e saia na {way_name}",destination:"Entre na rotatória e saia sentido {destination}"}}},"roundabout turn":{default:{default:"Siga {modifier}",name:"Siga {modifier} em {way_name}",destination:"Siga {modifier} sentido {destination}"},left:{default:"Vire à esquerda",name:"Vire à esquerda em {way_name}",destination:"Vire à esquerda sentido {destination}"},right:{default:"Vire à direita",name:"Vire à direita em {way_name}",destination:"Vire à direita sentido {destination}"},straight:{default:"Continue em frente",name:"Continue em frente em {way_name}",destination:"Continue em frente sentido {destination}"}},"exit roundabout":{default:{default:"Saia da rotatória",name:"Exit the traffic circle onto {way_name}",destination:"Exit the traffic circle towards {destination}"}},"exit rotary":{default:{default:"Saia da rotatória",name:"Exit the traffic circle onto {way_name}",destination:"Exit the traffic circle towards {destination}"}},turn:{default:{default:"Siga {modifier}",name:"Siga {modifier} em {way_name}",destination:"Siga {modifier} sentido {destination}"},left:{default:"Vire à esquerda",name:"Vire à esquerda em {way_name}",destination:"Vire à esquerda sentido {destination}"},right:{default:"Vire à direita",name:"Vire à direita em {way_name}",destination:"Vire à direita sentido {destination}"},straight:{default:"Siga em frente",name:"Siga em frente em {way_name}",destination:"Siga em frente sentido {destination}"}},"use lane":{no_lanes:{default:"Continue em frente"},default:{default:"{lane_instruction}"}}}}},{}],40:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1º",2:"2º",3:"3º",4:"4º",5:"5º",6:"6º",7:"7º",8:"8º",9:"9º",10:"10º"},direction:{north:"norte",northeast:"nordeste",east:"este",southeast:"sudeste",south:"sul",southwest:"sudoeste",west:"oeste",northwest:"noroeste"},modifier:{left:"à esquerda",right:"à direita","sharp left":"acentuadamente à esquerda","sharp right":"acentuadamente à direita","slight left":"ligeiramente à esquerda","slight right":"ligeiramente à direita",straight:"em frente",uturn:"inversão de marcha"},lanes:{xo:"Mantenha-se à direita",ox:"Mantenha-se à esquerda",xox:"Mantenha-se ao meio",oxo:"Mantenha-se à esquerda ou à direita"}},modes:{ferry:{default:"Apanhe o ferry",name:"Apanhe o ferry {way_name}",destination:"Apanhe o ferry para {destination}"}},phrase:{"two linked by distance":"{instruction_one}, depois, a {distance}, {instruction_two}","two linked":"{instruction_one}, depois {instruction_two}","one in distance":"A {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"saÃda {exit}"},arrive:{default:{default:"Chegou ao seu {nth} destino",upcoming:"Está a chegar ao seu {nth} destino",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}"},left:{default:"Chegou ao seu {nth} destino, à esquerda",upcoming:"Está a chegar ao seu {nth} destino, à esquerda",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à esquerda"},right:{default:"Chegou ao seu {nth} destino, à direita",upcoming:"Está a chegar ao seu {nth} destino, à direita",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à direita"},"sharp left":{default:"Chegou ao seu {nth} destino, à esquerda",upcoming:"Está a chegar ao seu {nth} destino, à esquerda",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à esquerda"},"sharp right":{default:"Chegou ao seu {nth} destino, à direita",upcoming:"Está a chegar ao seu {nth} destino, à direita",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à direita"},"slight right":{default:"Chegou ao seu {nth} destino, à direita",upcoming:"Está a chegar ao seu {nth} destino, à direita",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à direita"},"slight left":{default:"Chegou ao seu {nth} destino, à esquerda",upcoming:"Está a chegar ao seu {nth} destino, à esquerda",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, à esquerda"},straight:{default:"Chegou ao seu {nth} destino, em frente",upcoming:"Está a chegar ao seu {nth} destino, em frente",short:"Chegou","short-upcoming":"Está a chegar",named:"Chegou a {waypoint_name}, em frente"}},continue:{default:{default:"Vire {modifier}",name:"Vire {modifier} para se manter em {way_name}",destination:"Vire {modifier} em direção a {destination}",exit:"Vire {modifier} para {way_name}"},straight:{default:"Continue em frente",name:"Continue em frente para se manter em {way_name}",destination:"Continue em direção a {destination}",distance:"Continue em frente por {distance}",namedistance:"Continue em {way_name} por {distance}"},"sharp left":{default:"Vire acentuadamente à esquerda",name:"Vire acentuadamente à esquerda para se manter em {way_name}",destination:"Vire acentuadamente à esquerda em direção a {destination}"},"sharp right":{default:"Vire acentuadamente à direita",name:"Vire acentuadamente à direita para se manter em {way_name}",destination:"Vire acentuadamente à direita em direção a {destination}"},"slight left":{default:"Vire ligeiramente à esquerda",name:"Vire ligeiramente à esquerda para se manter em {way_name}",destination:"Vire ligeiramente à esquerda em direção a {destination}"},"slight right":{default:"Vire ligeiramente à direita",name:"Vire ligeiramente à direita para se manter em {way_name}",destination:"Vire ligeiramente à direita em direção a {destination}"},uturn:{default:"Faça inversão de marcha",name:"Faça inversão de marcha e continue em {way_name}",destination:"Faça inversão de marcha em direção a {destination}"}},depart:{default:{default:"Dirija-se para {direction}",name:"Dirija-se para {direction} em {way_name}",namedistance:"Dirija-se para {direction} em {way_name} por {distance}"}},"end of road":{default:{default:"Vire {modifier}",name:"Vire {modifier} para {way_name}",destination:"Vire {modifier} em direção a {destination}"},straight:{default:"Continue em frente",name:"Continue em frente para {way_name}",destination:"Continue em frente em direção a {destination}"},uturn:{default:"No final da estrada faça uma inversão de marcha",name:"No final da estrada faça uma inversão de marcha para {way_name} ",destination:"No final da estrada faça uma inversão de marcha em direção a {destination}"}},fork:{default:{default:"Na bifurcação mantenha-se {modifier}",name:"Mantenha-se {modifier} para {way_name}",destination:"Mantenha-se {modifier} em direção a {destination}"},"slight left":{default:"Na bifurcação mantenha-se à esquerda",name:"Mantenha-se à esquerda para {way_name}",destination:"Mantenha-se à esquerda em direção a {destination}"},"slight right":{default:"Na bifurcação mantenha-se à direita",name:"Mantenha-se à direita para {way_name}",destination:"Mantenha-se à direita em direção a {destination}"},"sharp left":{default:"Na bifurcação vire acentuadamente à esquerda",name:"Vire acentuadamente à esquerda para {way_name}",destination:"Vire acentuadamente à esquerda em direção a {destination}"},"sharp right":{default:"Na bifurcação vire acentuadamente à direita",name:"Vire acentuadamente à direita para {way_name}",destination:"Vire acentuadamente à direita em direção a {destination}"},uturn:{default:"Faça inversão de marcha",name:"Faça inversão de marcha para {way_name}",destination:"Faça inversão de marcha em direção a {destination}"}},merge:{default:{default:"Una-se ao tráfego {modifier}",name:"Una-se ao tráfego {modifier} para {way_name}",destination:"Una-se ao tráfego {modifier} em direção a {destination}"},straight:{default:"Una-se ao tráfego",name:" Una-se ao tráfego para {way_name}",destination:"Una-se ao tráfego em direção a {destination}"},"slight left":{default:"Una-se ao tráfego à esquerda",name:"Una-se ao tráfego à esquerda para {way_name}",destination:"Una-se ao tráfego à esquerda em direção a {destination}"},"slight right":{default:"Una-se ao tráfego à direita",name:"Una-se ao tráfego à direita para {way_name}",destination:"Una-se ao tráfego à direita em direção a {destination}"},"sharp left":{default:"Una-se ao tráfego à esquerda",name:"Una-se ao tráfego à esquerda para {way_name}",destination:"Una-se ao tráfego à esquerda em direção a {destination}"},"sharp right":{default:"Una-se ao tráfego à direita",name:"Una-se ao tráfego à direita para {way_name}",destination:"Una-se ao tráfego à direita em direção a {destination}"},uturn:{default:"Faça inversão de marcha",name:"Faça inversão de marcha para {way_name}",destination:"Faça inversão de marcha em direção a {destination}"}},"new name":{default:{default:"Continue {modifier}",name:"Continue {modifier} para {way_name}",destination:"Continue {modifier} em direção a {destination}"},straight:{default:"Continue em frente",name:"Continue para {way_name}",destination:"Continue em direção a {destination}"},"sharp left":{default:"Vire acentuadamente à esquerda",name:"Vire acentuadamente à esquerda para {way_name}",destination:"Vire acentuadamente à esquerda em direção a{destination}"},"sharp right":{default:"Vire acentuadamente à direita",name:"Vire acentuadamente à direita para {way_name}",destination:"Vire acentuadamente à direita em direção a {destination}"},"slight left":{default:"Continue ligeiramente à esquerda",name:"Continue ligeiramente à esquerda para {way_name}",destination:"Continue ligeiramente à esquerda em direção a {destination}"},"slight right":{default:"Continue ligeiramente à direita",name:"Continue ligeiramente à direita para {way_name}",destination:"Continue ligeiramente à direita em direção a {destination}"},uturn:{default:"Faça inversão de marcha",name:"Faça inversão de marcha para {way_name}",destination:"Faça inversão de marcha em direção a {destination}"}},notification:{default:{default:"Continue {modifier}",name:"Continue {modifier} para {way_name}",destination:"Continue {modifier} em direção a {destination}"},uturn:{default:"Faça inversão de marcha",name:"Faça inversão de marcha para {way_name}",destination:"Faça inversão de marcha em direção a {destination}"}},"off ramp":{default:{default:"Saia na saÃda",name:"Saia na saÃda para {way_name}",destination:"Saia na saÃda em direção a {destination}",exit:"Saia na saÃda {exit}",exit_destination:"Saia na saÃda {exit} em direção a {destination}"},left:{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}",exit:"Saia na saÃda {exit} à esquerda",exit_destination:"Saia na saÃda {exit} à esquerda em direção a {destination}"},right:{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}",exit:"Saia na saÃda {exit} à direita",exit_destination:"Saia na saÃda {exit} à direita em direção a {destination}"},"sharp left":{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}",exit:"Saia na saÃda {exit} à esquerda",exit_destination:"Saia na saÃda {exit} à esquerda em direção a {destination}"},"sharp right":{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}",exit:"Saia na saÃda {exit} à direita",exit_destination:"Saia na saÃda {exit} à direita em direção a {destination}"},"slight left":{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}",exit:"Saia na saÃda {exit} à esquerda",exit_destination:"Saia na saÃda {exit} à esquerda em direção a {destination}"},"slight right":{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}",exit:"Saia na saÃda {exit} à direita",exit_destination:"Saia na saÃda {exit} à direita em direção a {destination}"}},"on ramp":{default:{default:"Saia na saÃda",name:"Saia na saÃda para {way_name}",destination:"Saia na saÃda em direção a {destination}"},left:{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}"},right:{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}"},"sharp left":{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}"},"sharp right":{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}"},"slight left":{default:"Saia na saÃda à esquerda",name:"Saia na saÃda à esquerda para {way_name}",destination:"Saia na saÃda à esquerda em direção a {destination}"},"slight right":{default:"Saia na saÃda à direita",name:"Saia na saÃda à direita para {way_name}",destination:"Saia na saÃda à direita em direção a {destination}"}},rotary:{default:{default:{default:"Entre na rotunda",name:"Entre na rotunda e saia para {way_name}",destination:"Entre na rotunda e saia em direção a {destination}"},name:{default:"Entre em {rotary_name}",name:"Entre em {rotary_name} e saia para {way_name}",destination:"Entre em {rotary_name} e saia em direção a {destination}"},exit:{default:"Entre na rotunda e saia na saÃda {exit_number}",name:"Entre na rotunda e saia na saÃda {exit_number} para {way_name}",destination:"Entre na rotunda e saia na saÃda {exit_number} em direção a {destination}"},name_exit:{default:"Entre em {rotary_name} e saia na saÃda {exit_number}",name:"Entre em {rotary_name} e saia na saÃda {exit_number} para {way_name}",destination:"Entre em{rotary_name} e saia na saÃda {exit_number} em direção a {destination}"}}},roundabout:{default:{exit:{default:"Entre na rotunda e saia na saÃda {exit_number}",name:"Entre na rotunda e saia na saÃda {exit_number} para {way_name}",destination:"Entre na rotunda e saia na saÃda {exit_number} em direção a {destination}"},default:{default:"Entre na rotunda",name:"Entre na rotunda e saia para {way_name}",destination:"Entre na rotunda e saia em direção a {destination}"}}},"roundabout turn":{default:{default:"Siga {modifier}",name:"Siga {modifier} para {way_name}",destination:"Siga {modifier} em direção a {destination}"},left:{default:"Vire à esquerda",name:"Vire à esquerda para {way_name}",destination:"Vire à esquerda em direção a {destination}"},right:{default:"Vire à direita",name:"Vire à direita para {way_name}",destination:"Vire à direita em direção a {destination}"},straight:{default:"Continue em frente",name:"Continue em frente para {way_name}",destination:"Continue em frente em direção a {destination}"}},"exit roundabout":{default:{default:"Saia da rotunda",name:"Saia da rotunda para {way_name}",destination:"Saia da rotunda em direção a {destination}"}},"exit rotary":{default:{default:"Saia da rotunda",name:"Saia da rotunda para {way_name}",destination:"Saia da rotunda em direção a {destination}"}},turn:{default:{default:"Siga {modifier}",name:"Siga {modifier} para{way_name}",destination:"Siga {modifier} em direção a {destination}"},left:{default:"Vire à esquerda",name:"Vire à esquerda para {way_name}",destination:"Vire à esquerda em direção a {destination}"},right:{default:"Vire à direita",name:"Vire à direita para {way_name}",destination:"Vire à direita em direção a {destination}"},straight:{default:"Vá em frente",name:"Vá em frente para {way_name}",destination:"Vá em frente em direção a {destination}"}},"use lane":{no_lanes:{default:"Continue em frente"},default:{default:"{lane_instruction}"}}}}},{}],41:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"prima",2:"a doua",3:"a treia",4:"a patra",5:"a cincea",6:"a Èasea",7:"a Èaptea",8:"a opta",9:"a noua",10:"a zecea"},direction:{north:"nord",northeast:"nord-est",east:"est",southeast:"sud-est",south:"sud",southwest:"sud-vest",west:"vest",northwest:"nord-vest"},modifier:{left:"stânga",right:"dreapta","sharp left":"puternic stânga","sharp right":"puternic dreapta","slight left":"uÈor stânga","slight right":"uÈor dreapta",straight:"înainte",uturn:"întoarcere"},lanes:{xo:"ÈineÈi stânga",ox:"ÈineÈi dreapta",xox:"ÈineÈi pe mijloc",oxo:"ÈineÈi pe laterale"}},modes:{ferry:{default:"LuaÈi feribotul",name:"LuaÈi feribotul {way_name}",destination:"LuaÈi feribotul spre {destination}"}},phrase:{"two linked by distance":"{instruction_one}, apoi în {distance}, {instruction_two}","two linked":"{instruction_one} apoi {instruction_two}","one in distance":"Ãn {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"ieÈirea {exit}"},arrive:{default:{default:"AÈi ajuns la {nth} destinaÈie",upcoming:"AÈi ajuns la {nth} destinaÈie",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}"},left:{default:"AÈi ajuns la {nth} destinaÈie, pe stânga",upcoming:"AÈi ajuns la {nth} destinaÈie, pe stânga",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe stânga"},right:{default:"AÈi ajuns la {nth} destinaÈie, pe dreapta",upcoming:"AÈi ajuns la {nth} destinaÈie, pe dreapta",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe dreapta"},"sharp left":{default:"AÈi ajuns la {nth} destinaÈie, pe stânga",upcoming:"AÈi ajuns la {nth} destinaÈie, pe stânga",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe stânga"},"sharp right":{default:"AÈi ajuns la {nth} destinaÈie, pe dreapta",upcoming:"AÈi ajuns la {nth} destinaÈie, pe dreapta",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe dreapta"},"slight right":{default:"AÈi ajuns la {nth} destinaÈie, pe dreapta",upcoming:"AÈi ajuns la {nth} destinaÈie, pe dreapta",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe dreapta"},"slight left":{default:"AÈi ajuns la {nth} destinaÈie, pe stânga",upcoming:"AÈi ajuns la {nth} destinaÈie, pe stânga",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, pe stânga"},straight:{default:"AÈi ajuns la {nth} destinaÈie, în faÈÄ",upcoming:"AÈi ajuns la {nth} destinaÈie, în faÈÄ",short:"AÈi ajuns","short-upcoming":"VeÈi ajunge",named:"AÈi ajuns {waypoint_name}, în faÈÄ"}},continue:{default:{default:"ViraÈi {modifier}",name:"ViraÈi {modifier} pe {way_name}",destination:"ViraÈi {modifier} spre {destination}",exit:"ViraÈi {modifier} pe {way_name}"},straight:{default:"MergeÈi înainte",name:"MergeÈi înainte pe {way_name}",destination:"ContinuaÈi spre {destination}",distance:"MergeÈi înainte pentru {distance}",namedistance:"ContinuaÈi pe {way_name} pentru {distance}"},"sharp left":{default:"ViraÈi puternic la stânga",name:"ViraÈi puternic la stânga pe {way_name}",destination:"ViraÈi puternic la stânga spre {destination}"},"sharp right":{default:"ViraÈi puternic la dreapta",name:"ViraÈi puternic la dreapta pe {way_name}",destination:"ViraÈi puternic la dreapta spre {destination}"},"slight left":{default:"ViraÈi uÈor la stânga",name:"ViraÈi uÈor la stânga pe {way_name}",destination:"ViraÈi uÈor la stânga spre {destination}"},"slight right":{default:"ViraÈi uÈor la dreapta",name:"ViraÈi uÈor la dreapta pe {way_name}",destination:"ViraÈi uÈor la dreapta spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ",name:"ÃntoarceÈi-vÄ Èi continuaÈi pe {way_name}",destination:"ÃntoarceÈi-vÄ spre {destination}"}},depart:{default:{default:"MergeÈi spre {direction}",name:"MergeÈi spre {direction} pe {way_name}",namedistance:"MergeÈi spre {direction} pe {way_name} pentru {distance}"}},"end of road":{default:{default:"ViraÈi {modifier}",name:"ViraÈi {modifier} pe {way_name}",destination:"ViraÈi {modifier} spre {destination}"},straight:{default:"ContinuaÈi înainte",name:"ContinuaÈi înainte pe {way_name}",destination:"ContinuaÈi înainte spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ la sfârÈitul drumului",name:"ÃntoarceÈi-vÄ pe {way_name} la sfârÈitul drumului",destination:"ÃntoarceÈi-vÄ spre {destination} la sfârÈitul drumului"}},fork:{default:{default:"ÈineÈi {modifier} la bifurcaÈie",name:"ÈineÈi {modifier} la bifurcaÈie pe {way_name}",destination:"ÈineÈi {modifier} la bifurcaÈie spre {destination}"},"slight left":{default:"ÈineÈi pe stânga la bifurcaÈie",name:"ÈineÈi pe stânga la bifurcaÈie pe {way_name}",destination:"ÈineÈi pe stânga la bifurcaÈie spre {destination}"},"slight right":{default:"ÈineÈi pe dreapta la bifurcaÈie",name:"ÈineÈi pe dreapta la bifurcaÈie pe {way_name}",destination:"ÈineÈi pe dreapta la bifurcaÈie spre {destination}"},"sharp left":{default:"ViraÈi puternic stânga la bifurcaÈie",name:"ViraÈi puternic stânga la bifurcaÈie pe {way_name}",destination:"ViraÈi puternic stânga la bifurcaÈie spre {destination}"},"sharp right":{default:"ViraÈi puternic dreapta la bifurcaÈie",name:"ViraÈi puternic dreapta la bifurcaÈie pe {way_name}",destination:"ViraÈi puternic dreapta la bifurcaÈie spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ",name:"ÃntoarceÈi-vÄ pe {way_name}",destination:"ÃntoarceÈi-vÄ spre {destination}"}},merge:{default:{default:"IntraÈi în {modifier}",name:"IntraÈi în {modifier} pe {way_name}",destination:"IntraÈi în {modifier} spre {destination}"},straight:{default:"IntraÈi",name:"IntraÈi pe {way_name}",destination:"IntraÈi spre {destination}"},"slight left":{default:"IntraÈi în stânga",name:"IntraÈi în stânga pe {way_name}",destination:"IntraÈi în stânga spre {destination}"},"slight right":{default:"IntraÈi în dreapta",name:"IntraÈi în dreapta pe {way_name}",destination:"IntraÈi în dreapta spre {destination}"},"sharp left":{default:"IntraÈi în stânga",name:"IntraÈi în stânga pe {way_name}",destination:"IntraÈi în stânga spre {destination}"},"sharp right":{default:"IntraÈi în dreapta",name:"IntraÈi în dreapta pe {way_name}",destination:"IntraÈi în dreapta spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ",name:"ÃntoarceÈi-vÄ pe {way_name}",destination:"ÃntoarceÈi-vÄ spre {destination}"}},"new name":{default:{default:"ContinuaÈi {modifier}",name:"ContinuaÈi {modifier} pe {way_name}",destination:"ContinuaÈi {modifier} spre {destination}"},straight:{default:"ContinuaÈi înainte",name:"ContinuaÈi pe {way_name}",destination:"ContinuaÈi spre {destination}"},"sharp left":{default:"ViraÈi puternic la stânga",name:"ViraÈi puternic la stânga pe {way_name}",destination:"ViraÈi puternic la stânga spre {destination}"},"sharp right":{default:"ViraÈi puternic la dreapta",name:"ViraÈi puternic la dreapta pe {way_name}",destination:"ViraÈi puternic la dreapta spre {destination}"},"slight left":{default:"ContinuaÈi uÈor la stânga",name:"ContinuaÈi uÈor la stânga pe {way_name}",destination:"ContinuaÈi uÈor la stânga spre {destination}"},"slight right":{default:"ContinuaÈi uÈor la dreapta",name:"ContinuaÈi uÈor la dreapta pe {way_name}",destination:"ContinuaÈi uÈor la dreapta spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ",name:"ÃntoarceÈi-vÄ pe {way_name}",destination:"ÃntoarceÈi-vÄ spre {destination}"}},notification:{default:{default:"ContinuaÈi {modifier}",name:"ContinuaÈi {modifier} pe {way_name}",destination:"ContinuaÈi {modifier} spre {destination}"},uturn:{default:"ÃntoarceÈi-vÄ",name:"ÃntoarceÈi-vÄ pe {way_name}",destination:"ÃntoarceÈi-vÄ spre {destination}"}},"off ramp":{default:{default:"UrmaÈi breteaua",name:"UrmaÈi breteaua pe {way_name}",destination:"UrmaÈi breteaua spre {destination}",exit:"UrmaÈi ieÈirea {exit}",exit_destination:"UrmaÈi ieÈirea {exit} spre {destination}"},left:{default:"UrmaÈi breteaua din stânga", 2510name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe stânga",exit_destination:"UrmaÈi ieÈirea {exit} pe stânga spre {destination}"},right:{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe dreapta",exit_destination:"UrmaÈi ieÈirea {exit} pe dreapta spre {destination}"},"sharp left":{default:"UrmaÈi breteaua din stânga",name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe stânga",exit_destination:"UrmaÈi ieÈirea {exit} pe stânga spre {destination}"},"sharp right":{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe dreapta",exit_destination:"UrmaÈi ieÈirea {exit} pe dreapta spre {destination}"},"slight left":{default:"UrmaÈi breteaua din stânga",name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe stânga",exit_destination:"UrmaÈi ieÈirea {exit} pe stânga spre {destination}"},"slight right":{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}",exit:"UrmaÈi ieÈirea {exit} pe dreapta",exit_destination:"UrmaÈi ieÈirea {exit} pe dreapta spre {destination}"}},"on ramp":{default:{default:"UrmaÈi breteaua de intrare",name:"UrmaÈi breteaua pe {way_name}",destination:"UrmaÈi breteaua spre {destination}"},left:{default:"UrmaÈi breteaua din stânga",name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}"},right:{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}"},"sharp left":{default:"UrmaÈi breteaua din stânga",name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}"},"sharp right":{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}"},"slight left":{default:"UrmaÈi breteaua din stânga",name:"UrmaÈi breteaua din stânga pe {way_name}",destination:"UrmaÈi breteaua din stânga spre {destination}"},"slight right":{default:"UrmaÈi breteaua din dreapta",name:"UrmaÈi breteaua din dreapta pe {way_name}",destination:"UrmaÈi breteaua din dreapta spre {destination}"}},rotary:{default:{default:{default:"IntraÈi în sensul giratoriu",name:"IntraÈi în sensul giratoriu Èi ieÈiÈi pe {way_name}",destination:"IntraÈi în sensul giratoriu Èi ieÈiÈi spre {destination}"},name:{default:"IntraÈi în {rotary_name}",name:"IntraÈi în {rotary_name} Èi ieÈiÈi pe {way_name}",destination:"IntraÈi în {rotary_name} Èi ieÈiÈi spre {destination}"},exit:{default:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire",name:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire pe {way_name}",destination:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire spre {destination}"},name_exit:{default:"IntraÈi în {rotary_name} Èi urmaÈi {exit_number} ieÈire",name:"IntraÈi în {rotary_name} Èi urmaÈi {exit_number} ieÈire pe {way_name}",destination:"IntraÈi în {rotary_name} Èi urmaÈi {exit_number} ieÈire spre {destination}"}}},roundabout:{default:{exit:{default:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire",name:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire pe {way_name}",destination:"IntraÈi în sensul giratoriu Èi urmaÈi {exit_number} ieÈire spre {destination}"},default:{default:"IntraÈi în sensul giratoriu",name:"IntraÈi în sensul giratoriu Èi ieÈiÈi pe {way_name}",destination:"IntraÈi în sensul giratoriu Èi ieÈiÈi spre {destination}"}}},"roundabout turn":{default:{default:"La sensul giratoriu viraÈi {modifier}",name:"La sensul giratoriu viraÈi {modifier} pe {way_name}",destination:"La sensul giratoriu viraÈi {modifier} spre {destination}"},left:{default:"La sensul giratoriu viraÈi la stânga",name:"La sensul giratoriu viraÈi la stânga pe {way_name}",destination:"La sensul giratoriu viraÈi la stânga spre {destination}"},right:{default:"La sensul giratoriu viraÈi la dreapta",name:"La sensul giratoriu viraÈi la dreapta pe {way_name}",destination:"La sensul giratoriu viraÈi la dreapta spre {destination}"},straight:{default:"La sensul giratoriu continuaÈi înainte",name:"La sensul giratoriu continuaÈi înainte pe {way_name}",destination:"La sensul giratoriu continuaÈi înainte spre {destination}"}},"exit roundabout":{default:{default:"IeÈiÈi din sensul giratoriu",name:"IeÈiÈi din sensul giratoriu pe {way_name}",destination:"IeÈiÈi din sensul giratoriu spre {destination}"}},"exit rotary":{default:{default:"IeÈiÈi din sensul giratoriu",name:"IeÈiÈi din sensul giratoriu pe {way_name}",destination:"IeÈiÈi din sensul giratoriu spre {destination}"}},turn:{default:{default:"ViraÈi {modifier}",name:"ViraÈi {modifier} pe {way_name}",destination:"ViraÈi {modifier} spre {destination}"},left:{default:"ViraÈi la stânga",name:"ViraÈi la stânga pe {way_name}",destination:"ViraÈi la stânga spre {destination}"},right:{default:"ViraÈi la dreapta",name:"ViraÈi la dreapta pe {way_name}",destination:"ViraÈi la dreapta spre {destination}"},straight:{default:"MergeÈi înainte",name:"MergeÈi înainte pe {way_name}",destination:"MergeÈi înainte spre {destination}"}},"use lane":{no_lanes:{default:"MergeÈi înainte"},default:{default:"{lane_instruction}"}}}}},{}],42:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"пеÑвÑй",2:"вÑоÑой",3:"ÑÑеÑий",4:"ÑеÑвÑÑÑÑй",5:"пÑÑÑй",6:"ÑеÑÑой",7:"ÑедÑмой",8:"воÑÑмой",9:"девÑÑÑй",10:"деÑÑÑÑй"},direction:{north:"ÑевеÑном",northeast:"ÑевеÑо-воÑÑоÑном",east:"воÑÑоÑном",southeast:"Ñго-воÑÑоÑном",south:"Ñжном",southwest:"Ñго-западном",west:"западном",northwest:"ÑевеÑо-западном"},modifier:{left:"налево",right:"напÑаво","sharp left":"налево","sharp right":"напÑаво","slight left":"левее","slight right":"пÑавее",straight:"пÑÑмо",uturn:"на ÑазвоÑоÑ"},lanes:{xo:"ÐеÑжиÑеÑÑ Ð¿Ñавее",ox:"ÐеÑжиÑеÑÑ Ð»ÐµÐ²ÐµÐµ",xox:"ÐеÑжиÑеÑÑ Ð¿Ð¾ÑеÑедине",oxo:"ÐеÑжиÑеÑÑ Ñлева или ÑпÑава"}},modes:{ferry:{default:"ÐогÑÑзиÑеÑÑ Ð½Ð° паÑом",name:"ÐогÑÑзиÑеÑÑ Ð½Ð° паÑом {way_name}",destination:"ÐогÑÑзиÑеÑÑ Ð½Ð° паÑом в напÑавлении {destination}"}},phrase:{"two linked by distance":"{instruction_one}, заÑем ÑеÑез {distance} {instruction_two}","two linked":"{instruction_one}, заÑем {instruction_two}","one in distance":"ЧеÑез {distance} {instruction_one}","name and ref":"{name} ({ref})","exit with number":"ÑÑезд {exit}"},arrive:{default:{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}"},left:{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ Ñлева",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева"},right:{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ ÑпÑава",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава"},"sharp left":{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева Ñзади",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ Ñлева Ñзади",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева Ñзади"},"sharp right":{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава Ñзади",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ ÑпÑава Ñзади",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава Ñзади"},"slight right":{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава впеÑеди",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ ÑпÑава впеÑеди",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑпÑава впеÑеди"},"slight left":{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева впеÑеди",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ Ñлева впеÑеди",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ñлева впеÑеди"},straight:{default:"ÐÑ Ð¿ÑибÑли в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð¿ÐµÑед Ðами",upcoming:"ÐÑ Ð¿ÑибÑдеÑе в {nth} пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, он бÑÐ´ÐµÑ Ð¿ÐµÑед Ðами",short:"ÐÑ Ð¿ÑибÑли","short-upcoming":"ÐÑ ÑкоÑо пÑибÑдеÑе",named:"ÐÑ Ð¿ÑибÑли в пÑÐ½ÐºÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, {waypoint_name}, он Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð¿ÐµÑед Ðами"}},continue:{default:{default:"ÐвигайÑеÑÑ {modifier}",name:"ÐвигайÑеÑÑ {modifier} по {way_name:dative}",destination:"ÐвигайÑеÑÑ {modifier} в напÑавлении {destination}",exit:"ÐвигайÑеÑÑ {modifier} на {way_name:accusative}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐÑодолжиÑе движение по {way_name:dative}",destination:"ÐÑодолжиÑе движение в напÑавлении {destination}",distance:"ÐвигайÑеÑÑ Ð¿ÑÑмо {distance}",namedistance:"ÐвигайÑеÑÑ Ð¿ÑÑмо {distance} по {way_name:dative}"},"sharp left":{default:"Резко повеÑниÑе налево",name:"Резко повеÑниÑе налево на {way_name:accusative}",destination:"Резко повеÑниÑе налево в напÑавлении {destination}"},"sharp right":{default:"Резко повеÑниÑе напÑаво",name:"Резко повеÑниÑе напÑаво на {way_name:accusative}",destination:"Резко повеÑниÑе напÑаво в напÑавлении {destination}"},"slight left":{default:"Ðлавно повеÑниÑе налево",name:"Ðлавно повеÑниÑе налево на {way_name:accusative}",destination:"Ðлавно повеÑниÑе налево в напÑавлении {destination}"},"slight right":{default:"Ðлавно повеÑниÑе напÑаво",name:"Ðлавно повеÑниÑе напÑаво на {way_name:accusative}",destination:"Ðлавно повеÑниÑе напÑаво в напÑавлении {destination}"},uturn:{default:"РазвеÑниÑеÑÑ",name:"РазвеÑниÑеÑÑ Ð¸ пÑодолжиÑе движение по {way_name:dative}",destination:"РазвеÑниÑеÑÑ Ð² напÑавлении {destination}"}},depart:{default:{default:"ÐвигайÑеÑÑ Ð² {direction} напÑавлении",name:"ÐвигайÑеÑÑ Ð² {direction} напÑавлении по {way_name:dative}",namedistance:"ÐвигайÑеÑÑ {distance} в {direction} напÑавлении по {way_name:dative}"}},"end of road":{default:{default:"ÐовеÑниÑе {modifier}",name:"ÐовеÑниÑе {modifier} на {way_name:accusative}",destination:"ÐовеÑниÑе {modifier} в напÑавлении {destination}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐвигайÑеÑÑ Ð¿ÑÑмо по {way_name:dative}",destination:"ÐвигайÑеÑÑ Ð¿ÑÑмо в напÑавлении {destination}"},uturn:{default:"РконÑе доÑоги ÑазвеÑниÑеÑÑ",name:"РазвеÑниÑеÑÑ Ð² конÑе {way_name:genitive}",destination:"РконÑе доÑоги ÑазвеÑниÑеÑÑ Ð² напÑавлении {destination}"}},fork:{default:{default:"Ðа Ñазвилке двигайÑеÑÑ {modifier}",name:"Ðа Ñазвилке двигайÑеÑÑ {modifier} на {way_name:accusative}",destination:"Ðа Ñазвилке двигайÑеÑÑ {modifier} в напÑавлении {destination}"},"slight left":{default:"Ðа Ñазвилке деÑжиÑеÑÑ Ð»ÐµÐ²ÐµÐµ",name:"Ðа Ñазвилке деÑжиÑеÑÑ Ð»ÐµÐ²ÐµÐµ на {way_name:accusative}",destination:"Ðа Ñазвилке деÑжиÑеÑÑ Ð»ÐµÐ²ÐµÐµ и пÑодолжиÑе движение в напÑавлении {destination}"},"slight right":{default:"Ðа Ñазвилке деÑжиÑеÑÑ Ð¿Ñавее",name:"Ðа Ñазвилке деÑжиÑеÑÑ Ð¿Ñавее на {way_name:accusative}",destination:"Ðа Ñазвилке деÑжиÑеÑÑ Ð¿Ñавее и пÑодолжиÑе движение в напÑавлении {destination}"},"sharp left":{default:"Ðа Ñазвилке Ñезко повеÑниÑе налево",name:"Резко повеÑниÑе налево на {way_name:accusative}",destination:"Резко повеÑниÑе налево и пÑодолжиÑе движение в напÑавлении {destination}"},"sharp right":{default:"Ðа Ñазвилке Ñезко повеÑниÑе напÑаво",name:"Резко повеÑниÑе напÑаво на {way_name:accusative}",destination:"Резко повеÑниÑе напÑаво и пÑодолжиÑе движение в напÑавлении {destination}"},uturn:{default:"Ðа Ñазвилке ÑазвеÑниÑеÑÑ",name:"Ðа Ñазвилке ÑазвеÑниÑеÑÑ Ð½Ð° {way_name:prepositional}",destination:"Ðа Ñазвилке ÑазвеÑниÑеÑÑ Ð¸ пÑодолжиÑе движение в напÑавлении {destination}"}},merge:{default:{default:"ÐеÑеÑÑÑойÑеÑÑ {modifier}",name:"ÐеÑеÑÑÑойÑеÑÑ {modifier} на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ {modifier} в напÑавлении {destination}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐÑодолжиÑе движение по {way_name:dative}",destination:"ÐÑодолжиÑе движение в напÑавлении {destination}"},"slight left":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ",name:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ в напÑавлении {destination}"},"slight right":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее",name:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее в напÑавлении {destination}"},"sharp left":{default:"ÐеÑеÑÑÑаивайÑеÑÑ Ð»ÐµÐ²ÐµÐµ",name:"ÐеÑеÑÑÑаивайÑеÑÑ Ð»ÐµÐ²ÐµÐµ на {way_name:accusative}",destination:"ÐеÑеÑÑÑаивайÑеÑÑ Ð»ÐµÐ²ÐµÐµ в напÑавлении {destination}"},"sharp right":{default:"ÐеÑеÑÑÑаивайÑеÑÑ Ð¿Ñавее",name:"ÐеÑеÑÑÑаивайÑеÑÑ Ð¿Ñавее на {way_name:accusative}",destination:"ÐеÑеÑÑÑаивайÑеÑÑ Ð¿Ñавее в напÑавлении {destination}"},uturn:{default:"РазвеÑниÑеÑÑ",name:"РазвеÑниÑеÑÑ Ð½Ð° {way_name:prepositional}",destination:"РазвеÑниÑеÑÑ Ð² напÑавлении {destination}"}},"new name":{default:{default:"ÐвигайÑеÑÑ {modifier}",name:"ÐвигайÑеÑÑ {modifier} на {way_name:accusative}",destination:"ÐвигайÑеÑÑ {modifier} в напÑавлении {destination}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐÑодолжиÑе движение по {way_name:dative}",destination:"ÐÑодолжиÑе движение в напÑавлении {destination}"},"sharp left":{default:"Резко повеÑниÑе налево",name:"Резко повеÑниÑе налево на {way_name:accusative}",destination:"Резко повеÑниÑе налево и пÑодолжиÑе движение в напÑавлении {destination}"},"sharp right":{default:"Резко повеÑниÑе напÑаво",name:"Резко повеÑниÑе напÑаво на {way_name:accusative}",destination:"Резко повеÑниÑе напÑаво и пÑодолжиÑе движение в напÑавлении {destination}"},"slight left":{default:"Ðлавно повеÑниÑе налево",name:"Ðлавно повеÑниÑе налево на {way_name:accusative}",destination:"Ðлавно повеÑниÑе налево в напÑавлении {destination}"},"slight right":{default:"Ðлавно повеÑниÑе напÑаво",name:"Ðлавно повеÑниÑе напÑаво на {way_name:accusative}",destination:"Ðлавно повеÑниÑе напÑаво в напÑавлении {destination}"},uturn:{default:"РазвеÑниÑеÑÑ",name:"РазвеÑниÑеÑÑ Ð½Ð° {way_name:prepositional}",destination:"РазвеÑниÑеÑÑ Ð¸ пÑодолжиÑе движение в напÑавлении {destination}"}},notification:{default:{default:"ÐвигайÑеÑÑ {modifier}",name:"ÐвигайÑеÑÑ {modifier} по {way_name:dative}",destination:"ÐвигайÑеÑÑ {modifier} в напÑавлении {destination}"},uturn:{default:"РазвеÑниÑеÑÑ",name:"РазвеÑниÑеÑÑ Ð½Ð° {way_name:prepositional}",destination:"РазвеÑниÑеÑÑ Ð¸ пÑодолжиÑе движение в напÑавлении {destination}"}},"off ramp":{default:{default:"СвеÑниÑе на ÑÑезд",name:"СвеÑниÑе на ÑÑезд на {way_name:accusative}",destination:"СвеÑниÑе на ÑÑезд в напÑавлении {destination}",exit:"СвеÑниÑе на ÑÑезд {exit}",exit_destination:"СвеÑниÑе на ÑÑезд {exit} в напÑавлении {destination}"},left:{default:"СвеÑниÑе на левÑй ÑÑезд",name:"СвеÑниÑе на левÑй ÑÑезд на {way_name:accusative}",destination:"СвеÑниÑе на левÑй ÑÑезд в напÑавлении {destination}",exit:"СвеÑниÑе на ÑÑезд {exit} Ñлева",exit_destination:"СвеÑниÑе на ÑÑезд {exit} Ñлева в напÑавлении {destination}"},right:{default:"СвеÑниÑе на пÑавÑй ÑÑезд",name:"СвеÑниÑе на пÑавÑй ÑÑезд на {way_name:accusative}",destination:"СвеÑниÑе на пÑавÑй ÑÑезд в напÑавлении {destination}",exit:"СвеÑниÑе на ÑÑезд {exit} ÑпÑава",exit_destination:"СвеÑниÑе на ÑÑезд {exit} ÑпÑава в напÑавлении {destination}"},"sharp left":{default:"ÐовеÑниÑе налево на ÑÑезд",name:"ÐовеÑниÑе налево на ÑÑезд на {way_name:accusative}",destination:"ÐовеÑниÑе налево на ÑÑезд в напÑавлении {destination}",exit:"ÐовеÑниÑе налево на ÑÑезд {exit}",exit_destination:"ÐовеÑниÑе налево на ÑÑезд {exit} в напÑавлении {destination}"},"sharp right":{default:"ÐовеÑниÑе напÑаво на ÑÑезд",name:"ÐовеÑниÑе напÑаво на ÑÑезд на {way_name:accusative}",destination:"ÐовеÑниÑе напÑаво на ÑÑезд в напÑавлении {destination}",exit:"ÐовеÑниÑе напÑаво на ÑÑезд {exit}",exit_destination:"ÐовеÑниÑе напÑаво на ÑÑезд {exit} в напÑавлении {destination}"},"slight left":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на ÑÑезд",name:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на ÑÑезд на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на ÑÑезд в напÑавлении {destination}",exit:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на {exit}",exit_destination:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на ÑÑезд {exit} в напÑавлении {destination}"},"slight right":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на ÑÑезд",name:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на ÑÑезд на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на ÑÑезд в напÑавлении {destination}",exit:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на ÑÑезд {exit}",exit_destination:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на ÑÑезд {exit} в напÑавлении {destination}"}},"on ramp":{default:{default:"СвеÑниÑе на авÑомагиÑÑÑалÑ",name:"СвеÑниÑе на вÑезд на {way_name:accusative}",destination:"СвеÑниÑе на вÑезд на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},left:{default:"СвеÑниÑе на левÑй вÑезд на авÑомагиÑÑÑалÑ",name:"СвеÑниÑе на левÑй вÑезд на {way_name:accusative}",destination:"СвеÑниÑе на левÑй вÑезд на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},right:{default:"СвеÑниÑе на пÑавÑй вÑезд на авÑомагиÑÑÑалÑ",name:"СвеÑниÑе на пÑавÑй вÑезд на {way_name:accusative}",destination:"СвеÑниÑе на пÑавÑй вÑезд на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},"sharp left":{default:"ÐовеÑниÑе на левÑй вÑезд на авÑомагиÑÑÑалÑ",name:"ÐовеÑниÑе на левÑй вÑезд на {way_name:accusative}",destination:"ÐовеÑниÑе на левÑй вÑезд на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},"sharp right":{default:"ÐовеÑниÑе на пÑавÑй вÑезд на авÑомагиÑÑÑалÑ",name:"ÐовеÑниÑе на пÑавÑй вÑезд на {way_name:accusative}",destination:"ÐовеÑниÑе на пÑавÑй вÑезд на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},"slight left":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на вÑезд на авÑомагиÑÑÑалÑ",name:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð»ÐµÐ²ÐµÐµ на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"},"slight right":{default:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на вÑезд на авÑомагиÑÑÑалÑ",name:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на {way_name:accusative}",destination:"ÐеÑеÑÑÑойÑеÑÑ Ð¿Ñавее на авÑомагиÑÑÑÐ°Ð»Ñ Ð² напÑавлении {destination}"}},rotary:{default:{default:{default:"ÐÑодолжиÑе движение по кÑÑговой ÑазвÑзке",name:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {way_name:accusative}",destination:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе в напÑавлении {destination}"},name:{default:"ÐÑодолжиÑе движение по {rotary_name:dative}",name:"Ðа {rotary_name:prepositional} ÑвеÑниÑе на {way_name:accusative}",destination:"Ðа {rotary_name:prepositional} ÑвеÑниÑе в напÑавлении {destination}"},exit:{default:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд",name:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд на {way_name:accusative}",destination:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд в напÑавлении {destination}"},name_exit:{default:"Ðа {rotary_name:prepositional} ÑвеÑниÑе на {exit_number} ÑÑезд",name:"Ðа {rotary_name:prepositional} ÑвеÑниÑе на {exit_number} ÑÑезд на {way_name:accusative}",destination:"Ðа {rotary_name:prepositional} ÑвеÑниÑе на {exit_number} ÑÑезд в напÑавлении {destination}"}}},roundabout:{default:{exit:{default:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд",name:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд на {way_name:accusative}",destination:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {exit_number} ÑÑезд в напÑавлении {destination}"},default:{default:"ÐÑодолжиÑе движение по кÑÑговой ÑазвÑзке",name:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе на {way_name:accusative}",destination:"Ðа кÑÑговой ÑазвÑзке ÑвеÑниÑе в напÑавлении {destination}"}}},"roundabout turn":{default:{default:"ÐвигайÑеÑÑ {modifier}",name:"ÐвигайÑеÑÑ {modifier} на {way_name:accusative}",destination:"ÐвигайÑеÑÑ {modifier} в напÑавлении {destination}"},left:{default:"СвеÑниÑе налево",name:"СвеÑниÑе налево на {way_name:accusative}",destination:"СвеÑниÑе налево в напÑавлении {destination}"},right:{default:"СвеÑниÑе напÑаво",name:"СвеÑниÑе напÑаво на {way_name:accusative}",destination:"СвеÑниÑе напÑаво в напÑавлении {destination}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐвигайÑеÑÑ Ð¿ÑÑмо по {way_name:dative}",destination:"ÐвигайÑеÑÑ Ð¿ÑÑмо в напÑавлении {destination}"}},"exit roundabout":{default:{default:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки",name:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки на {way_name:accusative}",destination:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки в напÑавлении {destination}"}},"exit rotary":{default:{default:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки",name:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки на {way_name:accusative}",destination:"СвеÑниÑе Ñ ÐºÑÑговой ÑазвÑзки в напÑавлении {destination}"}},turn:{default:{default:"ÐвигайÑеÑÑ {modifier}",name:"ÐвигайÑеÑÑ {modifier} на {way_name:accusative}",destination:"ÐвигайÑеÑÑ {modifier} в напÑавлении {destination}"},left:{default:"ÐовеÑниÑе налево",name:"ÐовеÑниÑе налево на {way_name:accusative}",destination:"ÐовеÑниÑе налево в напÑавлении {destination}"},right:{default:"ÐовеÑниÑе напÑаво",name:"ÐовеÑниÑе напÑаво на {way_name:accusative}",destination:"ÐовеÑниÑе напÑаво в напÑавлении {destination}"},straight:{default:"ÐвигайÑеÑÑ Ð¿ÑÑмо",name:"ÐвигайÑеÑÑ Ð¿Ð¾ {way_name:dative}",destination:"ÐвигайÑеÑÑ Ð² напÑавлении {destination}"}},"use lane":{no_lanes:{default:"ÐÑодолжайÑе движение пÑÑмо"},default:{default:"{lane_instruction}"}}}}},{}],43:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1:a",2:"2:a",3:"3:e",4:"4:e",5:"5:e",6:"6:e",7:"7:e",8:"8:e",9:"9:e",10:"10:e"},direction:{north:"norr",northeast:"nordost",east:"öster",southeast:"sydost",south:"söder",southwest:"sydväst",west:"väster",northwest:"nordväst"},modifier:{left:"vänster",right:"höger","sharp left":"vänster","sharp right":"höger","slight left":"vänster","slight right":"höger",straight:"rakt fram",uturn:"U-sväng"},lanes:{xo:"HÃ¥ll till höger",ox:"HÃ¥ll till vänster",xox:"HÃ¥ll till mitten",oxo:"HÃ¥ll till vänster eller höger"}},modes:{ferry:{default:"Ta färjan",name:"Ta färjan pÃ¥ {way_name}",destination:"Ta färjan mot {destination}"}},phrase:{"two linked by distance":"{instruction_one}, sedan efter {distance}, {instruction_two}","two linked":"{instruction_one}, sedan {instruction_two}","one in distance":"Om {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"Du är framme vid din {nth} destination",upcoming:"Du är snart framme vid din {nth} destination",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}"},left:{default:"Du är framme vid din {nth} destination, till vänster",upcoming:"Du är snart framme vid din {nth} destination, till vänster",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till vänster"},right:{default:"Du är framme vid din {nth} destination, till höger",upcoming:"Du är snart framme vid din {nth} destination, till höger",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till höger"},"sharp left":{default:"Du är framme vid din {nth} destination, till vänster",upcoming:"Du är snart framme vid din {nth} destination, till vänster",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till vänster"},"sharp right":{default:"Du är framme vid din {nth} destination, till höger",upcoming:"Du är snart framme vid din {nth} destination, till höger",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till höger"},"slight right":{default:"Du är framme vid din {nth} destination, till höger",upcoming:"Du är snart framme vid din {nth} destination, till höger",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till höger"},"slight left":{default:"Du är framme vid din {nth} destination, till vänster",upcoming:"Du är snart framme vid din {nth} destination, till vänster",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, till vänster"},straight:{default:"Du är framme vid din {nth} destination, rakt fram",upcoming:"Du är snart framme vid din {nth} destination, rakt fram",short:"Du är framme","short-upcoming":"Du är snart framme",named:"Du är framme vid {waypoint_name}, rakt fram"}},continue:{default:{default:"Sväng {modifier}",name:"Sväng {modifier} och fortsätt pÃ¥ {way_name}",destination:"Sväng {modifier} mot {destination}",exit:"Sväng {modifier} in pÃ¥ {way_name}"},straight:{default:"Fortsätt rakt fram",name:"Kör rakt fram och fortsätt pÃ¥ {way_name}",destination:"Fortsätt mot {destination}",distance:"Fortsätt rakt fram i {distance}",namedistance:"Fortsätt pÃ¥ {way_name} i {distance}"},"sharp left":{default:"Sväng vänster",name:"Sväng vänster och fortsätt pÃ¥ {way_name}",destination:"Sväng vänster mot {destination}"},"sharp right":{default:"Sväng höger",name:"Sväng höger och fortsätt pÃ¥ {way_name}",destination:"Sväng höger mot {destination}"},"slight left":{default:"Sväng vänster",name:"Sväng vänster och fortsätt pÃ¥ {way_name}",destination:"Sväng vänster mot {destination}"},"slight right":{default:"Sväng höger",name:"Sväng höger och fortsätt pÃ¥ {way_name}",destination:"Sväng höger mot {destination}"},uturn:{default:"Gör en U-sväng",name:"Gör en U-sväng och fortsätt pÃ¥ {way_name}",destination:"Gör en U-sväng mot {destination}"}},depart:{default:{default:"Kör Ã¥t {direction}",name:"Kör Ã¥t {direction} pÃ¥ {way_name}",namedistance:"Kör {distance} Ã¥t {direction} pÃ¥ {way_name}"}},"end of road":{default:{default:"Sväng {modifier}",name:"Sväng {modifier} in pÃ¥ {way_name}",destination:"Sväng {modifier} mot {destination}"},straight:{default:"Fortsätt rakt fram",name:"Fortsätt rakt fram in pÃ¥ {way_name}",destination:"Fortsätt rakt fram mot {destination}"},uturn:{default:"Gör en U-sväng i slutet av vägen",name:"Gör en U-sväng in pÃ¥ {way_name} i slutet av vägen",destination:"Gör en U-sväng mot {destination} i slutet av vägen"}},fork:{default:{default:"HÃ¥ll till {modifier} där vägen delar sig",name:"HÃ¥ll till {modifier} in pÃ¥ {way_name}",destination:"HÃ¥ll till {modifier} mot {destination}"},"slight left":{default:"HÃ¥ll till vänster där vägen delar sig",name:"HÃ¥ll till vänster in pÃ¥ {way_name}",destination:"HÃ¥ll till vänster mot {destination}"},"slight right":{default:"HÃ¥ll till höger där vägen delar sig",name:"HÃ¥ll till höger in pÃ¥ {way_name}",destination:"HÃ¥ll till höger mot {destination}"},"sharp left":{default:"Sväng vänster där vägen delar sig",name:"Sväng vänster in pÃ¥ {way_name}",destination:"Sväng vänster mot {destination}"},"sharp right":{default:"Sväng höger där vägen delar sig",name:"Sväng höger in pÃ¥ {way_name}",destination:"Sväng höger mot {destination}"},uturn:{default:"Gör en U-sväng",name:"Gör en U-sväng in pÃ¥ {way_name}",destination:"Gör en U-sväng mot {destination}"}},merge:{default:{default:"Byt till {modifier} körfält",name:"Byt till {modifier} körfält, in pÃ¥ {way_name}",destination:"Byt till {modifier} körfält, mot {destination}"},straight:{default:"Fortsätt",name:"Kör in pÃ¥ {way_name}",destination:"Kör mot {destination}"},"slight left":{default:"Byt till vänstra körfältet",name:"Byt till vänstra körfältet, in pÃ¥ {way_name}",destination:"Byt till vänstra körfältet, mot {destination}"},"slight right":{default:"Byt till högra körfältet",name:"Byt till högra körfältet, in pÃ¥ {way_name}",destination:"Byt till högra körfältet, mot {destination}"},"sharp left":{default:"Byt till vänstra körfältet",name:"Byt till vänstra körfältet, in pÃ¥ {way_name}",destination:"Byt till vänstra körfältet, mot {destination}"},"sharp right":{default:"Byt till högra körfältet",name:"Byt till högra körfältet, in pÃ¥ {way_name}",destination:"Byt till högra körfältet, mot {destination}"},uturn:{default:"Gör en U-sväng",name:"Gör en U-sväng in pÃ¥ {way_name}",destination:"Gör en U-sväng mot {destination}"}},"new name":{default:{default:"Fortsätt {modifier}",name:"Fortsätt {modifier} pÃ¥ {way_name}",destination:"Fortsätt {modifier} mot {destination}"},straight:{default:"Fortsätt rakt fram",name:"Fortsätt in pÃ¥ {way_name}",destination:"Fortsätt mot {destination}"},"sharp left":{default:"Gör en skarp vänstersväng",name:"Gör en skarp vänstersväng in pÃ¥ {way_name}",destination:"Gör en skarp vänstersväng mot {destination}"},"sharp right":{default:"Gör en skarp högersväng",name:"Gör en skarp högersväng in pÃ¥ {way_name}",destination:"Gör en skarp högersväng mot {destination}"},"slight left":{default:"Fortsätt med lätt vänstersväng",name:"Fortsätt med lätt vänstersväng in pÃ¥ {way_name}",destination:"Fortsätt med lätt vänstersväng mot {destination}"},"slight right":{default:"Fortsätt med lätt högersväng",name:"Fortsätt med lätt högersväng in pÃ¥ {way_name}",destination:"Fortsätt med lätt högersväng mot {destination}"},uturn:{default:"Gör en U-sväng",name:"Gör en U-sväng in pÃ¥ {way_name}",destination:"Gör en U-sväng mot {destination}"}},notification:{default:{default:"Fortsätt {modifier}",name:"Fortsätt {modifier} pÃ¥ {way_name}",destination:"Fortsätt {modifier} mot {destination}"},uturn:{default:"Gör en U-sväng",name:"Gör en U-sväng in pÃ¥ {way_name}",destination:"Gör en U-sväng mot {destination}"}},"off ramp":{default:{default:"Ta avfarten",name:"Ta avfarten in pÃ¥ {way_name}",destination:"Ta avfarten mot {destination}",exit:"Ta avfart {exit} ",exit_destination:"Ta avfart {exit} mot {destination}"},left:{default:"Ta avfarten till vänster",name:"Ta avfarten till vänster in pÃ¥ {way_name}",destination:"Ta avfarten till vänster mot {destination}",exit:"Ta avfart {exit} till vänster",exit_destination:"Ta avfart {exit} till vänster mot {destination}"},right:{default:"Ta avfarten till höger",name:"Ta avfarten till höger in pÃ¥ {way_name}",destination:"Ta avfarten till höger mot {destination}",exit:"Ta avfart {exit} till höger",exit_destination:"Ta avfart {exit} till höger mot {destination}"},"sharp left":{default:"Ta avfarten till vänster",name:"Ta avfarten till vänster in pÃ¥ {way_name}",destination:"Ta avfarten till vänster mot {destination}",exit:"Ta avfart {exit} till vänster",exit_destination:"Ta avfart {exit} till vänster mot {destination}"},"sharp right":{default:"Ta avfarten till höger",name:"Ta avfarten till höger in pÃ¥ {way_name}",destination:"Ta avfarten till höger mot {destination}",exit:"Ta avfart {exit} till höger",exit_destination:"Ta avfart {exit} till höger mot {destination}"},"slight left":{default:"Ta avfarten till vänster",name:"Ta avfarten till vänster in pÃ¥ {way_name}",destination:"Ta avfarten till vänster mot {destination}",exit:"Ta avfart {exit} till vänster",exit_destination:"Ta avfart{exit} till vänster mot {destination}"},"slight right":{default:"Ta avfarten till höger",name:"Ta avfarten till höger in pÃ¥ {way_name}",destination:"Ta avfarten till höger mot {destination}",exit:"Ta avfart {exit} till höger",exit_destination:"Ta avfart {exit} till höger mot {destination}"}},"on ramp":{default:{default:"Ta pÃ¥farten",name:"Ta pÃ¥farten in pÃ¥ {way_name}",destination:"Ta pÃ¥farten mot {destination}"},left:{default:"Ta pÃ¥farten till vänster",name:"Ta pÃ¥farten till vänster in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till vänster mot {destination}"},right:{default:"Ta pÃ¥farten till höger",name:"Ta pÃ¥farten till höger in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till höger mot {destination}"},"sharp left":{default:"Ta pÃ¥farten till vänster",name:"Ta pÃ¥farten till vänster in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till vänster mot {destination}"},"sharp right":{default:"Ta pÃ¥farten till höger",name:"Ta pÃ¥farten till höger in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till höger mot {destination}"},"slight left":{default:"Ta pÃ¥farten till vänster", 2511name:"Ta pÃ¥farten till vänster in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till vänster mot {destination}"},"slight right":{default:"Ta pÃ¥farten till höger",name:"Ta pÃ¥farten till höger in pÃ¥ {way_name}",destination:"Ta pÃ¥farten till höger mot {destination}"}},rotary:{default:{default:{default:"Kör in i rondellen",name:"I rondellen, ta avfarten in pÃ¥ {way_name}",destination:"I rondellen, ta av mot {destination}"},name:{default:"Kör in i {rotary_name}",name:"I {rotary_name}, ta av in pÃ¥ {way_name}",destination:"I {rotary_name}, ta av mot {destination}"},exit:{default:"I rondellen, ta {exit_number} avfarten",name:"I rondellen, ta {exit_number} avfarten in pÃ¥ {way_name}",destination:"I rondellen, ta {exit_number} avfarten mot {destination}"},name_exit:{default:"I {rotary_name}, ta {exit_number} avfarten",name:"I {rotary_name}, ta {exit_number} avfarten in pÃ¥ {way_name}",destination:"I {rotary_name}, ta {exit_number} avfarten mot {destination}"}}},roundabout:{default:{exit:{default:"I rondellen, ta {exit_number} avfarten",name:"I rondellen, ta {exit_number} avfarten in pÃ¥ {way_name}",destination:"I rondellen, ta {exit_number} avfarten mot {destination}"},default:{default:"Kör in i rondellen",name:"I rondellen, ta avfarten in pÃ¥ {way_name}",destination:"I rondellen, ta av mot {destination}"}}},"roundabout turn":{default:{default:"Sväng {modifier}",name:"Sväng {modifier} in pÃ¥ {way_name}",destination:"Sväng {modifier} mot {destination}"},left:{default:"Sväng vänster",name:"Sväng vänster in pÃ¥ {way_name}",destination:"Sväng vänster mot {destination}"},right:{default:"Sväng höger",name:"Sväng höger in pÃ¥ {way_name}",destination:"Sväng höger mot {destination}"},straight:{default:"Fortsätt rakt fram",name:"Fortsätt rakt fram in pÃ¥ {way_name}",destination:"Fortsätt rakt fram mot {destination}"}},"exit roundabout":{default:{default:"Kör ut ur rondellen",name:"Kör ut ur rondellen in pÃ¥ {way_name}",destination:"Kör ut ur rondellen mot {destination}"}},"exit rotary":{default:{default:"Kör ut ur rondellen",name:"Kör ut ur rondellen in pÃ¥ {way_name}",destination:"Kör ut ur rondellen mot {destination}"}},turn:{default:{default:"Sväng {modifier}",name:"Sväng {modifier} in pÃ¥ {way_name}",destination:"Sväng {modifier} mot {destination}"},left:{default:"Sväng vänster",name:"Sväng vänster in pÃ¥ {way_name}",destination:"Sväng vänster mot {destination}"},right:{default:"Sväng höger",name:"Sväng höger in pÃ¥ {way_name}",destination:"Sväng höger mot {destination}"},straight:{default:"Kör rakt fram",name:"Kör rakt fram in pÃ¥ {way_name}",destination:"Kör rakt fram mot {destination}"}},"use lane":{no_lanes:{default:"Fortsätt rakt fram"},default:{default:"{lane_instruction}"}}}}},{}],44:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"birinci",2:"ikinci",3:"üçüncü",4:"dördüncü",5:"beÅinci",6:"altıncı",7:"yedinci",8:"sekizinci",9:"dokuzuncu",10:"onuncu"},direction:{north:"kuzey",northeast:"kuzeydoÄu",east:"doÄu",southeast:"güneydoÄu",south:"güney",southwest:"güneybatı",west:"batı",northwest:"kuzeybatı"},modifier:{left:"sol",right:"saÄ","sharp left":"keskin sol","sharp right":"keskin saÄ","slight left":"hafif sol","slight right":"hafif saÄ",straight:"düz",uturn:"U dönüÅü"},lanes:{xo:"SaÄda kalın",ox:"Solda kalın",xox:"Ortada kalın",oxo:"Solda veya saÄda kalın"}},modes:{ferry:{default:"Vapur kullan",name:"{way_name} vapurunu kullan",destination:"{destination} istikametine giden vapuru kullan"}},phrase:{"two linked by distance":"{instruction_one} ve {distance} sonra {instruction_two}","two linked":"{instruction_one} ve sonra {instruction_two}","one in distance":"{distance} sonra, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"exit {exit}"},arrive:{default:{default:"{nth} hedefinize ulaÅtınız",upcoming:"{nth} hedefinize ulaÅtınız",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız"},left:{default:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz solunuzdadır"},right:{default:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz saÄınızdadır"},"sharp left":{default:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz solunuzdadır"},"sharp right":{default:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz saÄınızdadır"},"slight right":{default:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz saÄınızdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz saÄınızdadır"},"slight left":{default:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz solunuzdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz solunuzdadır"},straight:{default:"{nth} hedefinize ulaÅtınız, hedefiniz karÅınızdadır",upcoming:"{nth} hedefinize ulaÅtınız, hedefiniz karÅınızdadır",short:"{nth} hedefinize ulaÅtınız","short-upcoming":"{nth} hedefinize ulaÅtınız",named:"{waypoint_name} ulaÅtınız, hedefiniz karÅınızdadır"}},continue:{default:{default:"{modifier} yöne dön",name:"{way_name} üzerinde kalmak için {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön",exit:"{way_name} üzerinde {modifier} yöne dön"},straight:{default:"Düz devam edin",name:"{way_name} üzerinde kalmak için düz devam et",destination:"{destination} istikametinde devam et",distance:"{distance} boyunca düz devam et",namedistance:"{distance} boyunca {way_name} üzerinde devam et"},"sharp left":{default:"Sola keskin dönüŠyap",name:"{way_name} üzerinde kalmak için sola keskin dönüŠyap",destination:"{destination} istikametinde sola keskin dönüŠyap"},"sharp right":{default:"SaÄa keskin dönüŠyap",name:"{way_name} üzerinde kalmak için saÄa keskin dönüŠyap",destination:"{destination} istikametinde saÄa keskin dönüŠyap"},"slight left":{default:"Sola hafif dönüŠyap",name:"{way_name} üzerinde kalmak için sola hafif dönüŠyap",destination:"{destination} istikametinde sola hafif dönüŠyap"},"slight right":{default:"SaÄa hafif dönüŠyap",name:"{way_name} üzerinde kalmak için saÄa hafif dönüŠyap",destination:"{destination} istikametinde saÄa hafif dönüŠyap"},uturn:{default:"U dönüÅü yapın",name:"Bir U-dönüÅü yap ve {way_name} devam et",destination:"{destination} istikametinde bir U-dönüÅü yap"}},depart:{default:{default:"{direction} tarafına yönelin",name:"{way_name} üzerinde {direction} yöne git",namedistance:"Head {direction} on {way_name} for {distance}"}},"end of road":{default:{default:"{modifier} tarafa dönün",name:"{way_name} üzerinde {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön"},straight:{default:"Düz devam edin",name:"{way_name} üzerinde düz devam et",destination:"{destination} istikametinde düz devam et"},uturn:{default:"Yolun sonunda U dönüÅü yapın",name:"Yolun sonunda {way_name} üzerinde bir U-dönüÅü yap",destination:"Yolun sonunda {destination} istikametinde bir U-dönüÅü yap"}},fork:{default:{default:"Yol ayrımında {modifier} yönde kal",name:"{way_name} üzerindeki yol ayrımında {modifier} yönde kal",destination:"{destination} istikametindeki yol ayrımında {modifier} yönde kal"},"slight left":{default:"Ãatalın solundan devam edin",name:"Ãatalın solundan {way_name} yoluna doÄru ",destination:"{destination} istikametindeki yol ayrımında solda kal"},"slight right":{default:"Ãatalın saÄından devam edin",name:"{way_name} üzerindeki yol ayrımında saÄda kal",destination:"{destination} istikametindeki yol ayrımında saÄda kal"},"sharp left":{default:"Ãatalda keskin sola dönün",name:"{way_name} yoluna doÄru sola keskin dönüŠyapın",destination:"{destination} istikametinde sola keskin dönüŠyap"},"sharp right":{default:"Ãatalda keskin saÄa dönün",name:"{way_name} yoluna doÄru saÄa keskin dönüŠyapın",destination:"{destination} istikametinde saÄa keskin dönüŠyap"},uturn:{default:"U dönüÅü yapın",name:"{way_name} yoluna U dönüÅü yapın",destination:"{destination} istikametinde bir U-dönüÅü yap"}},merge:{default:{default:"{modifier} yöne gir",name:"{way_name} üzerinde {modifier} yöne gir",destination:"{destination} istikametinde {modifier} yöne gir"},straight:{default:"düz yöne gir",name:"{way_name} üzerinde düz yöne gir",destination:"{destination} istikametinde düz yöne gir"},"slight left":{default:"Sola gir",name:"{way_name} üzerinde sola gir",destination:"{destination} istikametinde sola gir"},"slight right":{default:"SaÄa gir",name:"{way_name} üzerinde saÄa gir",destination:"{destination} istikametinde saÄa gir"},"sharp left":{default:"Sola gir",name:"{way_name} üzerinde sola gir",destination:"{destination} istikametinde sola gir"},"sharp right":{default:"SaÄa gir",name:"{way_name} üzerinde saÄa gir",destination:"{destination} istikametinde saÄa gir"},uturn:{default:"U dönüÅü yapın",name:"{way_name} yoluna U dönüÅü yapın",destination:"{destination} istikametinde bir U-dönüÅü yap"}},"new name":{default:{default:"{modifier} yönde devam et",name:"{way_name} üzerinde {modifier} yönde devam et",destination:"{destination} istikametinde {modifier} yönde devam et"},straight:{default:"Düz devam et",name:"{way_name} üzerinde devam et",destination:"{destination} istikametinde devam et"},"sharp left":{default:"Sola keskin dönüŠyapın",name:"{way_name} yoluna doÄru sola keskin dönüŠyapın",destination:"{destination} istikametinde sola keskin dönüŠyap"},"sharp right":{default:"SaÄa keskin dönüŠyapın",name:"{way_name} yoluna doÄru saÄa keskin dönüŠyapın",destination:"{destination} istikametinde saÄa keskin dönüŠyap"},"slight left":{default:"Hafif soldan devam edin",name:"{way_name} üzerinde hafif solda devam et",destination:"{destination} istikametinde hafif solda devam et"},"slight right":{default:"Hafif saÄdan devam edin",name:"{way_name} üzerinde hafif saÄda devam et",destination:"{destination} istikametinde hafif saÄda devam et"},uturn:{default:"U dönüÅü yapın",name:"{way_name} yoluna U dönüÅü yapın",destination:"{destination} istikametinde bir U-dönüÅü yap"}},notification:{default:{default:"{modifier} yönde devam et",name:"{way_name} üzerinde {modifier} yönde devam et",destination:"{destination} istikametinde {modifier} yönde devam et"},uturn:{default:"U dönüÅü yapın",name:"{way_name} yoluna U dönüÅü yapın",destination:"{destination} istikametinde bir U-dönüÅü yap"}},"off ramp":{default:{default:"BaÄlantı yoluna geç",name:"{way_name} üzerindeki baÄlantı yoluna geç",destination:"{destination} istikametine giden baÄlantı yoluna geç",exit:"{exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} çıkıŠyoluna geç"},left:{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç",exit:"Soldaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} sol çıkıŠyoluna geç"},right:{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç",exit:"SaÄdaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} saÄ Ã§Ä±kıŠyoluna geç"},"sharp left":{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç",exit:"Soldaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} sol çıkıŠyoluna geç"},"sharp right":{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç",exit:"SaÄdaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} saÄ Ã§Ä±kıŠyoluna geç"},"slight left":{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç",exit:"Soldaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} sol çıkıŠyoluna geç"},"slight right":{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç",exit:"SaÄdaki {exit} çıkıŠyoluna geç",exit_destination:"{destination} istikametindeki {exit} saÄ Ã§Ä±kıŠyoluna geç"}},"on ramp":{default:{default:"BaÄlantı yoluna geç",name:"{way_name} üzerindeki baÄlantı yoluna geç",destination:"{destination} istikametine giden baÄlantı yoluna geç"},left:{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç"},right:{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç"},"sharp left":{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç"},"sharp right":{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç"},"slight left":{default:"Soldaki baÄlantı yoluna geç",name:"{way_name} üzerindeki sol baÄlantı yoluna geç",destination:"{destination} istikametine giden sol baÄlantı yoluna geç"},"slight right":{default:"SaÄdaki baÄlantı yoluna geç",name:"{way_name} üzerindeki saÄ baÄlantı yoluna geç",destination:"{destination} istikametine giden saÄ baÄlantı yoluna geç"}},rotary:{default:{default:{default:"Dönel kavÅaÄa gir",name:"Dönel kavÅaÄa gir ve {way_name} üzerinde çık",destination:"Dönel kavÅaÄa gir ve {destination} istikametinde çık"},name:{default:"{rotary_name} dönel kavÅaÄa gir",name:"{rotary_name} dönel kavÅaÄa gir ve {way_name} üzerinde çık",destination:"{rotary_name} dönel kavÅaÄa gir ve {destination} istikametinde çık"},exit:{default:"Dönel kavÅaÄa gir ve {exit_number} numaralı çıkıÅa gir",name:"Dönel kavÅaÄa gir ve {way_name} üzerindeki {exit_number} numaralı çıkıÅa gir",destination:"Dönel kavÅaÄa gir ve {destination} istikametindeki {exit_number} numaralı çıkıÅa gir"},name_exit:{default:"{rotary_name} dönel kavÅaÄa gir ve {exit_number} numaralı çıkıÅa gir",name:"{rotary_name} dönel kavÅaÄa gir ve {way_name} üzerindeki {exit_number} numaralı çıkıÅa gir",destination:"{rotary_name} dönel kavÅaÄa gir ve {destination} istikametindeki {exit_number} numaralı çıkıÅa gir"}}},roundabout:{default:{exit:{default:"Göbekli kavÅaÄa gir ve {exit_number} numaralı çıkıÅa gir",name:"Göbekli kavÅaÄa gir ve {way_name} üzerindeki {exit_number} numaralı çıkıÅa gir",destination:"Göbekli kavÅaÄa gir ve {destination} istikametindeki {exit_number} numaralı çıkıÅa gir"},default:{default:"Göbekli kavÅaÄa gir",name:"Göbekli kavÅaÄa gir ve {way_name} üzerinde çık",destination:"Göbekli kavÅaÄa gir ve {destination} istikametinde çık"}}},"roundabout turn":{default:{default:"{modifier} yöne dön",name:"{way_name} üzerinde {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön"},left:{default:"Sola dön",name:"{way_name} üzerinde sola dön",destination:"{destination} istikametinde sola dön"},right:{default:"SaÄa dön",name:"{way_name} üzerinde saÄa dön",destination:"{destination} istikametinde saÄa dön"},straight:{default:"Düz devam et",name:"{way_name} üzerinde düz devam et",destination:"{destination} istikametinde düz devam et"}},"exit roundabout":{default:{default:"{modifier} yöne dön",name:"{way_name} üzerinde {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön"},left:{default:"Sola dön",name:"{way_name} üzerinde sola dön",destination:"{destination} istikametinde sola dön"},right:{default:"SaÄa dön",name:"{way_name} üzerinde saÄa dön",destination:"{destination} istikametinde saÄa dön"},straight:{default:"Düz devam et",name:"{way_name} üzerinde düz devam et",destination:"{destination} istikametinde düz devam et"}},"exit rotary":{default:{default:"{modifier} yöne dön",name:"{way_name} üzerinde {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön"},left:{default:"Sola dön",name:"{way_name} üzerinde sola dön",destination:"{destination} istikametinde sola dön"},right:{default:"SaÄa dön",name:"{way_name} üzerinde saÄa dön",destination:"{destination} istikametinde saÄa dön"},straight:{default:"Düz devam et",name:"{way_name} üzerinde düz devam et",destination:"{destination} istikametinde düz devam et"}},turn:{default:{default:"{modifier} yöne dön",name:"{way_name} üzerinde {modifier} yöne dön",destination:"{destination} istikametinde {modifier} yöne dön"},left:{default:"Sola dönün",name:"{way_name} üzerinde sola dön",destination:"{destination} istikametinde sola dön"},right:{default:"SaÄa dönün",name:"{way_name} üzerinde saÄa dön",destination:"{destination} istikametinde saÄa dön"},straight:{default:"Düz git",name:"{way_name} üzerinde düz git",destination:"{destination} istikametinde düz git"}},"use lane":{no_lanes:{default:"Düz devam edin"},default:{default:"{lane_instruction}"}}}}},{}],45:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"1й",2:"2й",3:"3й",4:"4й",5:"5й",6:"6й",7:"7й",8:"8й",9:"9й",10:"10й"},direction:{north:"пÑвнÑÑ",northeast:"пÑвнÑÑний ÑÑ Ñд",east:"ÑÑ Ñд",southeast:"пÑвденний ÑÑ Ñд",south:"пÑвденÑ",southwest:"пÑвденний Ð·Ð°Ñ Ñд",west:"Ð·Ð°Ñ Ñд",northwest:"пÑвнÑÑний Ð·Ð°Ñ Ñд"},modifier:{left:"лÑвоÑÑÑ",right:"пÑавоÑÑÑ","sharp left":"ÑÑзко лÑвоÑÑÑ","sharp right":"ÑÑзко пÑавоÑÑÑ","slight left":"плавно лÑвоÑÑÑ","slight right":"плавно пÑавоÑÑÑ",straight:"пÑÑмо",uturn:"ÑозвоÑоÑ"},lanes:{xo:"ТÑимайÑеÑÑ Ð¿ÑавоÑÑÑ",ox:"ТÑимайÑеÑÑ Ð»ÑвоÑÑÑ",xox:"ТÑимайÑеÑÑ Ð² ÑеÑединÑ",oxo:"ТÑимайÑеÑÑ Ð¿ÑавоÑÑÑ Ð°Ð±Ð¾ лÑвоÑÑÑ"}},modes:{ferry:{default:"СкоÑиÑÑайÑеÑÑ Ð¿Ð¾Ñомом",name:"СкоÑиÑÑайÑеÑÑ Ð¿Ð¾Ñомом {way_name}",destination:"СкоÑиÑÑайÑеÑÑ Ð¿Ð¾Ñомом Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},phrase:{"two linked by distance":"{instruction_one}, поÑÑм, ÑеÑез {distance}, {instruction_two}","two linked":"{instruction_one}, поÑÑм {instruction_two}","one in distance":"ЧеÑез {distance}, {instruction_one}","name and ref":"{name} ({ref})","exit with number":"з'Ñзд {exit}"},arrive:{default:{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name}"},left:{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â лÑвоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, лÑвоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} лÑвоÑÑÑ"},right:{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â пÑавоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, пÑавоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} пÑавоÑÑÑ"},"sharp left":{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â лÑвоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, лÑвоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} лÑвоÑÑÑ"},"sharp right":{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â пÑавоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, пÑавоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} пÑавоÑÑÑ"},"slight right":{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â пÑавоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, пÑавоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} пÑавоÑÑÑ"},"slight left":{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â лÑвоÑÑÑ",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, лÑвоÑÑÑ",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} лÑвоÑÑÑ"},straight:{default:"Ðи пÑибÑли Ñ Ð²Ð°Ñ {nth} пÑÐ½ÐºÑ Ð¿ÑизнаÑеннÑ, вÑн â пÑÑмо пеÑед вами",upcoming:"Ðи наближаÑÑеÑÑ Ð´Ð¾ ваÑого {nth} мÑÑÑÑ Ð¿ÑизнаÑеннÑ, пÑÑмо пеÑед вами",short:"Ðи пÑибÑли","short-upcoming":"Ðи пÑибÑдеÑе",named:"Ðи пÑибÑли Ñ {waypoint_name} пÑÑмо пеÑед вами"}},continue:{default:{default:"ÐовеÑнÑÑÑ {modifier}",name:"ÐовеÑнÑÑÑ{modifier} залиÑаÑÑиÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ {modifier} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐовеÑнÑÑÑ {modifier} на {way_name}"},straight:{default:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо",name:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо залиÑаÑÑиÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",distance:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо {distance}",namedistance:"ÐÑодовжÑйÑе ÑÑÑ Ð¿Ð¾ {way_name} {distance}"},"sharp left":{default:"ÐовеÑнÑÑÑ ÑÑзко лÑвоÑÑÑ",name:"ÐовеÑнÑÑÑ ÑÑзко лÑвоÑÑÑ Ñоб залиÑиÑиÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ ÑÑзко лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"ÐовеÑнÑÑÑ ÑÑзко пÑавоÑÑÑ",name:"ÐовеÑнÑÑÑ ÑÑзко пÑавоÑÑÑ Ñоб залиÑиÑиÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ ÑÑзко пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"ÐовеÑнÑÑÑ ÑÑзко лÑвоÑÑÑ",name:"ÐовеÑнÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ лÑвоÑÑÑ Ñоб залиÑиÑиÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"ÐовеÑнÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ",name:"ÐовеÑнÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ Ñоб залиÑиÑиÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑоÑ",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñа ÑÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {way_name}",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},depart:{default:{default:"ÐÑÑмÑйÑе на {direction}",name:"ÐÑÑмÑйÑе на {direction} по {way_name}",namedistance:"ÐÑÑмÑйÑе на {direction} по {way_name} {distance}"}},"end of road":{default:{default:"ÐовеÑнÑÑÑ {modifier}",name:"ÐовеÑнÑÑÑ {modifier} на {way_name}",destination:"ÐовеÑнÑÑÑ {modifier} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},straight:{default:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо",name:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо до {way_name}",destination:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð² кÑнÑÑ Ð´Ð¾Ñоги",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð½Ð° {way_name} в кÑнÑÑ Ð´Ð¾Ñоги",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination} в кÑнÑÑ Ð´Ð¾Ñоги"}},fork:{default:{default:"Ðа ÑоздоÑÑÐ¶Ð¶Ñ ÑÑимайÑеÑÑ {modifier}",name:"ТÑимайÑеÑÑ {modifier} Ñ ÑÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° {way_name}",destination:"ТÑимайÑеÑÑ {modifier} в напÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"Ðа ÑоздоÑÑÐ¶Ð¶Ñ ÑÑимайÑеÑÑ Ð»ÑвоÑÑÑ",name:"ТÑимайÑеÑÑ Ð»ÑвоÑÑÑ Ñ ÑÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° {way_name}",destination:"ТÑимайÑеÑÑ Ð»ÑвоÑÑÑ Ð² напÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"Ðа ÑоздоÑÑÐ¶Ð¶Ñ ÑÑимайÑеÑÑ Ð¿ÑавоÑÑÑ",name:"ТÑимайÑеÑÑ Ð¿ÑавоÑÑÑ Ñ ÑÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° {way_name}",destination:"ТÑимайÑеÑÑ Ð¿ÑавоÑÑÑ Ð² напÑÑÐ¼ÐºÑ {destination}"},"sharp left":{default:"Ðа ÑоздоÑÑÐ¶Ð¶Ñ ÑÑзко повеÑнÑÑÑ Ð»ÑвоÑÑÑ",name:"ÐÑиймÑÑÑ ÑÑзко лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиймÑÑÑ ÑÑзко лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"Ðа ÑоздоÑÑÐ¶Ð¶Ñ ÑÑзко повеÑнÑÑÑ Ð¿ÑавоÑÑÑ",name:"ÐÑиймÑÑÑ ÑÑзко пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиймÑÑÑ ÑÑзко пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑоÑ",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð½Ð° {way_name}",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},merge:{default:{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ {modifier}",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ {modifier} на {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ {modifier} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},straight:{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑокÑ",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð½Ð° {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp left":{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð»ÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ",name:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиÑднайÑеÑÑ Ð´Ð¾ поÑÐ¾ÐºÑ Ð¿ÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑоÑ",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð½Ð° {way_name}",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},"new name":{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier}",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},straight:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿ÑÑмо",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp left":{default:"ÐÑиймÑÑÑ ÑÑзко лÑвоÑÑÑ",name:"ÐÑиймÑÑÑ ÑÑзко лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиймÑÑÑ ÑÑзко лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"ÐÑиймÑÑÑ ÑÑзко пÑавоÑÑÑ",name:"ÐÑиймÑÑÑ ÑÑзко пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐÑиймÑÑÑ ÑÑзко пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð»Ð°Ð²Ð½Ð¾ пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑоÑ",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð½Ð° {way_name}",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},notification:{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier}",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},uturn:{default:"ÐдÑйÑнÑÑÑ ÑозвоÑоÑ",name:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ð½Ð° {way_name}",destination:"ÐдÑйÑнÑÑÑ ÑозвоÑÐ¾Ñ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},"off ramp":{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit}",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},left:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},right:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp left":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° зʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}",exit:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ",exit_destination:"ÐбеÑÑÑÑ Ð·'Ñзд {exit} пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},"on ramp":{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},left:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},right:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp left":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"sharp right":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight left":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд лÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},"slight right":{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð½Ð° вʼÑзд пÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},rotary:{default:{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ колÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ð´Ð¾ {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ð² напÑÑÐ¼ÐºÑ {destination}"},name:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name}",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name} Ñа повеÑнÑÑÑ Ð½Ð° {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name} Ñа повеÑнÑÑÑ Ð² напÑÑÐ¼ÐºÑ {destination}"},exit:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑенÑÑÑ Ñ {exit_number} з'Ñзд",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},name_exit:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name} Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name} Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ {rotary_name} Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд в напÑÑÐ¼ÐºÑ {destination}"}}},roundabout:{default:{exit:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑенÑÑÑ Ñ {exit_number} з'Ñзд",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ñа повеÑнÑÑÑ Ñ {exit_number} з'Ñзд Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ колÑ",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ð´Ð¾ {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿Ð¾ ÐºÐ¾Ð»Ñ Ð² напÑÑÐ¼ÐºÑ {destination}"}}},"roundabout turn":{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier}",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} в напÑÑÐ¼ÐºÑ {destination}"},left:{default:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ",name:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},right:{default:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ",name:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},straight:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿ÑÑмо",name:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо до {way_name}",destination:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},"exit roundabout":{default:{default:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾",name:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾ на {way_name} зʼÑздÑ",destination:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾ в напÑÑÐ¼ÐºÑ {destination}"}},"exit rotary":{default:{default:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾",name:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾ на {way_name} зʼÑздÑ",destination:"ÐалиÑиÑÑ ÐºÐ¾Ð»Ð¾ в напÑÑÐ¼ÐºÑ {destination}"}},turn:{default:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier}",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} на {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ {modifier} в напÑÑÐ¼ÐºÑ {destination}"},left:{default:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ",name:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð»ÑвоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},right:{default:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ", 2512name:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ Ð½Ð° {way_name}",destination:"ÐовеÑнÑÑÑ Ð¿ÑавоÑÑÑ Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"},straight:{default:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿ÑÑмо",name:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿ÑÑмо по {way_name}",destination:"Ð ÑÑ Ð°Ð¹ÑеÑÑ Ð¿ÑÑмо Ñ Ð½Ð°Ð¿ÑÑÐ¼ÐºÑ {destination}"}},"use lane":{no_lanes:{default:"ÐÑодовжÑйÑе ÑÑÑ Ð¿ÑÑмо"},default:{default:"{lane_instruction}"}}}}},{}],46:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:true},v5:{constants:{ordinalize:{1:"Äầu tiên",2:"thứ 2",3:"thứ 3",4:"thứ 4",5:"thứ 5",6:"thú 6",7:"thứ 7",8:"thứ 8",9:"thứ 9",10:"thứ 10"},direction:{north:"bắc",northeast:"Äông bắc",east:"Äông",southeast:"Äông nam",south:"nam",southwest:"tây nam",west:"tây",northwest:"tây bắc"},modifier:{left:"trái",right:"phải","sharp left":"trái gắt","sharp right":"phải gắt","slight left":"trái nghiêng","slight right":"phải nghiêng",straight:"thẳng",uturn:"ngược"},lanes:{xo:"Äi bên phải",ox:"Äi bên trái",xox:"Äi và o giữa",oxo:"Äi bên trái hay bên phải"}},modes:{ferry:{default:"Lên phà ",name:"Lên phà {way_name}",destination:"Lên phà Äi {destination}"}},phrase:{"two linked by distance":"{instruction_one}, rá»i {distance} nữa thì {instruction_two}","two linked":"{instruction_one}, rá»i {instruction_two}","one in distance":"{distance} nữa thì {instruction_one}","name and ref":"{name} ({ref})","exit with number":"lá»i ra {exit}"},arrive:{default:{default:"Äến nÆ¡i {nth}",upcoming:"Äến nÆ¡i {nth}",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name}"},left:{default:"Äến nÆ¡i {nth} á» bên trái",upcoming:"Äến nÆ¡i {nth} á» bên trái",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên trái"},right:{default:"Äến nÆ¡i {nth} á» bên phải",upcoming:"Äến nÆ¡i {nth} á» bên phải",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên phải"},"sharp left":{default:"Äến nÆ¡i {nth} á» bên trái",upcoming:"Äến nÆ¡i {nth} á» bên trái",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên trái"},"sharp right":{default:"Äến nÆ¡i {nth} á» bên phải",upcoming:"Äến nÆ¡i {nth} á» bên phải",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên phải"},"slight right":{default:"Äến nÆ¡i {nth} á» bên phải",upcoming:"Äến nÆ¡i {nth} á» bên phải",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên phải"},"slight left":{default:"Äến nÆ¡i {nth} á» bên trái",upcoming:"Äến nÆ¡i {nth} á» bên trái",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» bên trái"},straight:{default:"Äến nÆ¡i {nth} á» trưá»c mặt",upcoming:"Äến nÆ¡i {nth} á» trưá»c mặt",short:"Äến nÆ¡i","short-upcoming":"Äến nÆ¡i",named:"Äến {waypoint_name} á» trưá»c mặt"}},continue:{default:{default:"Quẹo {modifier}",name:"Quẹo {modifier} Äá» chạy tiếp trên {way_name}",destination:"Quẹo {modifier} vá» {destination}",exit:"Quẹo {modifier} và o {way_name}"},straight:{default:"Chạy thẳng",name:"Chạy tiếp trên {way_name}",destination:"Chạy tiếp vá» {destination}",distance:"Chạy thẳng cho {distance}",namedistance:"Chạy tiếp trên {way_name} cho {distance}"},"sharp left":{default:"Quẹo gắt bên trái",name:"Quẹo gắt bên trái Äá» chạy tiếp trên {way_name}",destination:"Quẹo gắt bên trái vá» {destination}"},"sharp right":{default:"Quẹo gắt bên phải",name:"Quẹo gắt bên phải Äá» chạy tiếp trên {way_name}",destination:"Quẹo gắt bên phải vá» {destination}"},"slight left":{default:"Nghiêng vá» bên trái",name:"Nghiêng vá» bên trái Äá» chạy tiếp trên {way_name}",destination:"Nghiêng vá» bên trái vá» {destination}"},"slight right":{default:"Nghiêng vá» bên phải",name:"Nghiêng vá» bên phải Äá» chạy tiếp trên {way_name}",destination:"Nghiêng vá» bên phải vá» {destination}"},uturn:{default:"Quẹo ngược lại",name:"Quẹo ngược lại trên {way_name}",destination:"Quẹo ngược vá» {destination}"}},depart:{default:{default:"Äi vá» hưá»ng {direction}",name:"Äi vá» hưá»ng {direction} trên {way_name}",namedistance:"Äi vá» hưá»ng {direction} trên {way_name} cho {distance}"}},"end of road":{default:{default:"Quẹo {modifier}",name:"Quẹo {modifier} và o {way_name}",destination:"Quẹo {modifier} vá» {destination}"},straight:{default:"Chạy thẳng",name:"Chạy tiếp trên {way_name}",destination:"Chạy tiếp vá» {destination}"},uturn:{default:"Quẹo ngược lại tại cuá»i ÄÆ°á»ng",name:"Quẹo ngược và o {way_name} tại cuá»i ÄÆ°á»ng",destination:"Quẹo ngược vá» {destination} tại cuá»i ÄÆ°á»ng"}},fork:{default:{default:"Äi bên {modifier} á» ngã ba",name:"Giữ bên {modifier} và o {way_name}",destination:"Giữ bên {modifier} vá» {destination}"},"slight left":{default:"Nghiêng vá» bên trái á» ngã ba",name:"Giữ bên trái và o {way_name}",destination:"Giữ bên trái vá» {destination}"},"slight right":{default:"Nghiêng vá» bên phải á» ngã ba",name:"Giữ bên phải và o {way_name}",destination:"Giữ bên phải vá» {destination}"},"sharp left":{default:"Quẹo gắt bên trái á» ngã ba",name:"Quẹo gắt bên trái và o {way_name}",destination:"Quẹo gắt bên trái vá» {destination}"},"sharp right":{default:"Quẹo gắt bên phải á» ngã ba",name:"Quẹo gắt bên phải và o {way_name}",destination:"Quẹo gắt bên phải vá» {destination}"},uturn:{default:"Quẹo ngược lại",name:"Quẹo ngược lại {way_name}",destination:"Quẹo ngược lại vá» {destination}"}},merge:{default:{default:"Nháºp sang {modifier}",name:"Nháºp sang {modifier} và o {way_name}",destination:"Nháºp sang {modifier} vá» {destination}"},straight:{default:"Nháºp ÄÆ°á»ng",name:"Nháºp và o {way_name}",destination:"Nháºp ÄÆ°á»ng vá» {destination}"},"slight left":{default:"Nháºp sang trái",name:"Nháºp sang trái và o {way_name}",destination:"Nháºp sang trái vá» {destination}"},"slight right":{default:"Nháºp sang phải",name:"Nháºp sang phải và o {way_name}",destination:"Nháºp sang phải vá» {destination}"},"sharp left":{default:"Nháºp sang trái",name:"Nháºp sang trái và o {way_name}",destination:"Nháºp sang trái vá» {destination}"},"sharp right":{default:"Nháºp sang phải",name:"Nháºp sang phải và o {way_name}",destination:"Nháºp sang phải vá» {destination}"},uturn:{default:"Quẹo ngược lại",name:"Quẹo ngược lại {way_name}",destination:"Quẹo ngược lại vá» {destination}"}},"new name":{default:{default:"Chạy tiếp bên {modifier}",name:"Chạy tiếp bên {modifier} trên {way_name}",destination:"Chạy tiếp bên {modifier} vá» {destination}"},straight:{default:"Chạy thẳng",name:"Chạy tiếp trên {way_name}",destination:"Chạy tiếp vá» {destination}"},"sharp left":{default:"Quẹo gắt bên trái",name:"Quẹo gắt bên trái và o {way_name}",destination:"Quẹo gắt bên trái vá» {destination}"},"sharp right":{default:"Quẹo gắt bên phải",name:"Quẹo gắt bên phải và o {way_name}",destination:"Quẹo gắt bên phải vá» {destination}"},"slight left":{default:"Nghiêng vá» bên trái",name:"Nghiêng vá» bên trái và o {way_name}",destination:"Nghiêng vá» bên trái vá» {destination}"},"slight right":{default:"Nghiêng vá» bên phải",name:"Nghiêng vá» bên phải và o {way_name}",destination:"Nghiêng vá» bên phải vá» {destination}"},uturn:{default:"Quẹo ngược lại",name:"Quẹo ngược lại {way_name}",destination:"Quẹo ngược lại vá» {destination}"}},notification:{default:{default:"Chạy tiếp bên {modifier}",name:"Chạy tiếp bên {modifier} trên {way_name}",destination:"Chạy tiếp bên {modifier} vá» {destination}"},uturn:{default:"Quẹo ngược lại",name:"Quẹo ngược lại {way_name}",destination:"Quẹo ngược lại vá» {destination}"}},"off ramp":{default:{default:"Äi ÄÆ°á»ng nhánh",name:"Äi ÄÆ°á»ng nhánh {way_name}",destination:"Äi ÄÆ°á»ng nhánh vá» {destination}",exit:"Äi theo lá»i ra {exit}",exit_destination:"Äi theo lá»i ra {exit} vá» {destination}"},left:{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}",exit:"Äi theo lá»i ra {exit} bên trái",exit_destination:"Äi theo lá»i ra {exit} bên trái vá» {destination}"},right:{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}",exit:"Äi theo lá»i ra {exit} bên phải",exit_destination:"Äi theo lá»i ra {exit} bên phải vá» {destination}"},"sharp left":{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}",exit:"Äi theo lá»i ra {exit} bên trái",exit_destination:"Äi theo lá»i ra {exit} bên trái vá» {destination}"},"sharp right":{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}",exit:"Äi theo lá»i ra {exit} bên phải",exit_destination:"Äi theo lá»i ra {exit} bên phải vá» {destination}"},"slight left":{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}",exit:"Äi theo lá»i ra {exit} bên trái",exit_destination:"Äi theo lá»i ra {exit} bên trái vá» {destination}"},"slight right":{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}",exit:"Äi theo lá»i ra {exit} bên phải",exit_destination:"Äi theo lá»i ra {exit} bên phải vá» {destination}"}},"on ramp":{default:{default:"Äi ÄÆ°á»ng nhánh",name:"Äi ÄÆ°á»ng nhánh {way_name}",destination:"Äi ÄÆ°á»ng nhánh vá» {destination}"},left:{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}"},right:{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}"},"sharp left":{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}"},"sharp right":{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}"},"slight left":{default:"Äi ÄÆ°á»ng nhánh bên trái",name:"Äi ÄÆ°á»ng nhánh {way_name} bên trái",destination:"Äi ÄÆ°á»ng nhánh bên trái vá» {destination}"},"slight right":{default:"Äi ÄÆ°á»ng nhánh bên phải",name:"Äi ÄÆ°á»ng nhánh {way_name} bên phải",destination:"Äi ÄÆ°á»ng nhánh bên phải vá» {destination}"}},rotary:{default:{default:{default:"Äi và o bùng binh",name:"Äi và o bùng binh và ra tại {way_name}",destination:"Äi và o bùng binh và ra vá» {destination}"},name:{default:"Äi và o {rotary_name}",name:"Äi và o {rotary_name} và ra tại {way_name}",destination:"Äi và {rotary_name} và ra vá» {destination}"},exit:{default:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number}",name:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number} tức {way_name}",destination:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number} vá» {destination}"},name_exit:{default:"Äi và o {rotary_name} và ra tại ÄÆ°á»ng {exit_number}",name:"Äi và o {rotary_name} và ra tại ÄÆ°á»ng {exit_number} tức {way_name}",destination:"Äi và o {rotary_name} và ra tại ÄÆ°á»ng {exit_number} vá» {destination}"}}},roundabout:{default:{exit:{default:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number}",name:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number} tức {way_name}",destination:"Äi và o bùng binh và ra tại ÄÆ°á»ng {exit_number} vá» {destination}"},default:{default:"Äi và o bùng binh",name:"Äi và o bùng binh và ra tại {way_name}",destination:"Äi và o bùng binh và ra vá» {destination}"}}},"roundabout turn":{default:{default:"Quẹo {modifier}",name:"Quẹo {modifier} và o {way_name}",destination:"Quẹo {modifier} vá» {destination}"},left:{default:"Quẹo trái",name:"Quẹo trái và o {way_name}",destination:"Quẹo trái vá» {destination}"},right:{default:"Quẹo phải",name:"Quẹo phải và o {way_name}",destination:"Quẹo phải vá» {destination}"},straight:{default:"Chạy thẳng",name:"Chạy tiếp trên {way_name}",destination:"Chạy tiếp vá» {destination}"}},"exit roundabout":{default:{default:"Ra bùng binh",name:"Ra bùng binh và o {way_name}",destination:"Ra bùng binh vá» {destination}"}},"exit rotary":{default:{default:"Ra bùng binh",name:"Ra bùng binh và o {way_name}",destination:"Ra bùng binh vá» {destination}"}},turn:{default:{default:"Quẹo {modifier}",name:"Quẹo {modifier} và o {way_name}",destination:"Quẹo {modifier} vá» {destination}"},left:{default:"Quẹo trái",name:"Quẹo trái và o {way_name}",destination:"Quẹo trái vá» {destination}"},right:{default:"Quẹo phải",name:"Quẹo phải và o {way_name}",destination:"Quẹo phải vá» {destination}"},straight:{default:"Chạy thẳng",name:"Chạy thẳng và o {way_name}",destination:"Chạy thẳng vá» {destination}"}},"use lane":{no_lanes:{default:"Chạy thẳng"},default:{default:"{lane_instruction}"}}}}},{}],47:[function(_dereq_,module,exports){module.exports={meta:{capitalizeFirstLetter:false},v5:{constants:{ordinalize:{1:"第ä¸",2:"第äº",3:"第ä¸",4:"第å",5:"第äº",6:"第å ",7:"第ä¸",8:"ç¬¬å «",9:"第ä¹",10:"第å"},direction:{north:"å",northeast:"ä¸å",east:"ä¸",southeast:"ä¸å",south:"å",southwest:"西å",west:"西",northwest:"西å"},modifier:{left:"åå·¦",right:"åå³","sharp left":"æ¥åå·¦","sharp right":"æ¥åå³","slight left":"ç¨åå·¦","slight right":"ç¨åå³",straight:"ç´è¡",uturn:"è°å¤´"},lanes:{xo:"é å³è¡é©¶",ox:"é å·¦è¡é©¶",xox:"ä¿æå¨éè·¯ä¸é´è¡é©¶",oxo:"ä¿æå¨é路左侧æå³ä¾§è¡é©¶"}},modes:{ferry:{default:"ä¹å轮渡",name:"ä¹å{way_name}轮渡",destination:"ä¹åå¼å¾{destination}ç轮渡"}},phrase:{"two linked by distance":"{instruction_one}ï¼{distance}å{instruction_two}","two linked":"{instruction_one}ï¼éå{instruction_two}","one in distance":"{distance}å{instruction_one}","name and ref":"{name}ï¼{ref}ï¼","exit with number":"åºå£{exit}"},arrive:{default:{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}"},left:{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å·¦è¾¹ã"},right:{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å³è¾¹ã"},"sharp left":{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å·¦è¾¹ã"},"sharp right":{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å³è¾¹ã"},"slight right":{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨é路左侧",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å³è¾¹ã"},"slight left":{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨éè·¯å³ä¾§",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨å·¦è¾¹ã"},straight:{default:"æ¨å·²ç»å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨æ¨æ£åæ¹",upcoming:"æ¨å³å°å°è¾¾æ¨ç{nth}个ç®çå°ï¼ç®çå°å¨æ¨æ£åæ¹",short:"å·²å°è¾¾ç®çå°","short-upcoming":"å³å°å°è¾¾ç®çå°",named:"æ¨å·²å°è¾¾{waypoint_name}ï¼ç®çå°å¨æ¨åæ¹ã"}},continue:{default:{default:"{modifier}è¡é©¶",name:"å¨{way_name}ä¸ç»§ç»{modifier}è¡é©¶",destination:"{modifier}è¡é©¶ï¼{destination}æ¹å",exit:"{modifier}è¡é©¶ï¼é©¶å ¥{way_name}"},straight:{default:"ç»§ç»ç´è¡",name:"å¨{way_name}ä¸ç»§ç»ç´è¡",destination:"ç»§ç»ç´è¡ï¼åå¾{destination}",distance:"ç»§ç»ç´è¡{distance}",namedistance:"ç»§ç»å¨{way_name}ä¸ç´è¡{distance}"},"sharp left":{default:"忹左æ¥è½¬å¼¯",name:"忹左æ¥è½¬å¼¯ï¼ç»§ç»å¨{way_name}ä¸è¡é©¶",destination:"å·¦æ¥è½¬å¼¯ï¼åå¾{destination}"},"sharp right":{default:"忹峿¥è½¬å¼¯",name:"忹峿¥è½¬å¼¯ï¼ç»§ç»å¨{way_name}ä¸è¡é©¶",destination:"峿¥è½¬å¼¯ï¼åå¾{destination}"},"slight left":{default:"åæ¹ç¨å左转",name:"åæ¹ç¨å左转ï¼ç»§ç»å¨{way_name}ä¸è¡é©¶",destination:"ç¨å左转ï¼åå¾{destination}"},"slight right":{default:"åæ¹ç¨åå³è½¬",name:"åæ¹ç¨åå³è½¬ï¼ç»§ç»å¨{way_name}ä¸è¡é©¶",destination:"åæ¹ç¨åå³è½¬ï¼åå¾{destination}"},uturn:{default:"åæ¹è°å¤´",name:"åæ¹è°å¤´ï¼ç»§ç»å¨{way_name}ä¸è¡é©¶",destination:"åæ¹è°å¤´ï¼åå¾{destination}"}},depart:{default:{default:"åºåå{direction}",name:"åºåå{direction}ï¼é©¶å ¥{way_name}",namedistance:"åºåå{direction}ï¼å¨{way_name}ä¸ç»§ç»è¡é©¶{distance}"}},"end of road":{default:{default:"{modifier}è¡é©¶",name:"{modifier}è¡é©¶ï¼é©¶å ¥{way_name}",destination:"{modifier}è¡é©¶ï¼åå¾{destination}"},straight:{default:"ç»§ç»ç´è¡",name:"ç»§ç»ç´è¡ï¼é©¶å ¥{way_name}",destination:"ç»§ç»ç´è¡ï¼åå¾{destination}"},uturn:{default:"å¨é路尽头è°å¤´",name:"å¨é路尽头è°å¤´é©¶å ¥{way_name}",destination:"å¨é路尽头è°å¤´ï¼åå¾{destination}"}},fork:{default:{default:"å¨å²éä¿æ{modifier}",name:"å¨å²éå£ä¿æ{modifier}ï¼é©¶å ¥{way_name}",destination:"å¨å²éå£ä¿æ{modifier}ï¼åå¾{destination}"},"slight left":{default:"å¨å²éå£ä¿æå·¦ä¾§è¡é©¶",name:"å¨å²éå£ä¿æå·¦ä¾§è¡é©¶ï¼é©¶å ¥{way_name}",destination:"å¨å²éå£ä¿æå·¦ä¾§è¡é©¶ï¼åå¾{destination}"},"slight right":{default:"å¨å²éå£ä¿æå³ä¾§è¡é©¶",name:"å¨å²éå£ä¿æå³ä¾§è¡é©¶ï¼é©¶å ¥{way_name}",destination:"å¨å²éå£ä¿æå³ä¾§è¡é©¶ï¼åå¾{destination}"},"sharp left":{default:"å¨å²éå£å·¦æ¥è½¬å¼¯",name:"å¨å²éå£å·¦æ¥è½¬å¼¯ï¼é©¶å ¥{way_name}",destination:"å¨å²éå£å·¦æ¥è½¬å¼¯ï¼åå¾{destination}"},"sharp right":{default:"å¨å²éå£å³æ¥è½¬å¼¯",name:"å¨å²éå£å³æ¥è½¬å¼¯ï¼é©¶å ¥{way_name}",destination:"å¨å²éå£å³æ¥è½¬å¼¯ï¼åå¾{destination}"},uturn:{default:"åæ¹è°å¤´",name:"åæ¹è°å¤´ï¼é©¶å ¥{way_name}",destination:"åæ¹è°å¤´ï¼åå¾{destination}"}},merge:{default:{default:"{modifier}å¹¶é",name:"{modifier}å¹¶éï¼é©¶å ¥{way_name}",destination:"{modifier}å¹¶éï¼åå¾{destination}"},straight:{default:"ç´è¡å¹¶é",name:"ç´è¡å¹¶éï¼é©¶å ¥{way_name}",destination:"ç´è¡å¹¶éï¼åå¾{destination}"},"slight left":{default:"ç¨å左并é",name:"ç¨å左并éï¼é©¶å ¥{way_name}",destination:"ç¨å左并éï¼åå¾{destination}"},"slight right":{default:"ç¨åå³å¹¶é",name:"ç¨åå³å¹¶éï¼é©¶å ¥{way_name}",destination:"ç¨åå³å¹¶éï¼åå¾{destination}"},"sharp left":{default:"æ¥å左并é",name:"æ¥å左并éï¼é©¶å ¥{way_name}",destination:"æ¥å左并éï¼åå¾{destination}"},"sharp right":{default:"æ¥åå³å¹¶é",name:"æ¥åå³å¹¶éï¼é©¶å ¥{way_name}",destination:"æ¥åå³å¹¶éï¼åå¾{destination}"},uturn:{default:"åæ¹è°å¤´",name:"åæ¹è°å¤´ï¼é©¶å ¥{way_name}",destination:"åæ¹è°å¤´ï¼åå¾{destination}"}},"new name":{default:{default:"ç»§ç»{modifier}",name:"ç»§ç»{modifier}ï¼é©¶å ¥{way_name}",destination:"ç»§ç»{modifier}ï¼åå¾{destination}"},straight:{default:"ç»§ç»ç´è¡",name:"ç»§ç»å¨{way_name}ä¸ç´è¡",destination:"ç»§ç»ç´è¡ï¼åå¾{destination}"},"sharp left":{default:"忹左æ¥è½¬å¼¯",name:"忹左æ¥è½¬å¼¯ï¼é©¶å ¥{way_name}",destination:"å·¦æ¥è½¬å¼¯ï¼åå¾{destination}"},"sharp right":{default:"忹峿¥è½¬å¼¯",name:"忹峿¥è½¬å¼¯ï¼é©¶å ¥{way_name}",destination:"峿¥è½¬å¼¯ï¼åå¾{destination}"},"slight left":{default:"ç»§ç»ç¨åå·¦",name:"ç»§ç»ç¨åå·¦ï¼é©¶å ¥{way_name}",destination:"ç»§ç»ç¨åå·¦ï¼åå¾{destination}"},"slight right":{default:"ç»§ç»ç¨åå³",name:"ç»§ç»ç¨åå³ï¼é©¶å ¥{way_name}",destination:"ç»§ç»ç¨åå³ï¼åå¾{destination}"},uturn:{default:"åæ¹è°å¤´",name:"åæ¹è°å¤´ï¼ä¸{way_name}",destination:"åæ¹è°å¤´ï¼åå¾{destination}"}},notification:{default:{default:"ç»§ç»{modifier}",name:"ç»§ç»{modifier}ï¼é©¶å ¥{way_name}",destination:"ç»§ç»{modifier}ï¼åå¾{destination}"},uturn:{default:"åæ¹è°å¤´",name:"åæ¹è°å¤´ï¼é©¶å ¥{way_name}",destination:"åæ¹è°å¤´ï¼åå¾{destination}"}},"off ramp":{default:{default:"ä¸åé",name:"ä¸åéï¼é©¶å ¥{way_name}",destination:"ä¸åéï¼åå¾{destination}",exit:"ä»{exit}åºå£é©¶åº",exit_destination:"ä»{exit}åºå£é©¶åºï¼åå¾{destination}"},left:{default:"ä¸å·¦ä¾§åé",name:"ä¸å·¦ä¾§åéï¼ä¸{way_name}",destination:"ä¸å·¦ä¾§åéï¼åå¾{destination}",exit:"ä»å·¦ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å·¦ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"},right:{default:"ä¸å³ä¾§åé",name:"ä¸å³ä¾§åéï¼é©¶å ¥{way_name}",destination:"ä¸å³ä¾§åéï¼åå¾{destination}",exit:"ä»å³ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å³ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"},"sharp left":{default:"æ¥åå·¦ä¸åé",name:"æ¥åå·¦ä¸åéï¼é©¶å ¥{way_name}",destination:"æ¥åå·¦ä¸åéï¼åå¾{destination}",exit:"ä»å·¦ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å·¦ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"},"sharp right":{default:"æ¥åå³ä¸åé",name:"æ¥åå³ä¸åéï¼é©¶å ¥{way_name}",destination:"æ¥åå³ä¸åéï¼åå¾{destination}",exit:"ä»å³ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å³ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"},"slight left":{default:"ç¨åå·¦ä¸åé",name:"ç¨åå·¦ä¸åéï¼é©¶å ¥{way_name}",destination:"ç¨åå·¦ä¸åéï¼åå¾{destination}",exit:"ä»å·¦ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å·¦ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"},"slight right":{default:"ç¨åå³ä¸åé",name:"ç¨åå³ä¸åéï¼é©¶å ¥{way_name}",destination:"ç¨åå³ä¸åéï¼åå¾{destination}",exit:"ä»å³ä¾§{exit}åºå£é©¶åº",exit_destination:"ä»å³ä¾§{exit}åºå£é©¶åºï¼åå¾{destination}"}},"on ramp":{default:{default:"ä¸åé",name:"ä¸åéï¼é©¶å ¥{way_name}",destination:"ä¸åéï¼åå¾{destination}"},left:{default:"ä¸å·¦ä¾§åé",name:"ä¸å·¦ä¾§åéï¼é©¶å ¥{way_name}",destination:"ä¸å·¦ä¾§åéï¼åå¾{destination}"},right:{default:"ä¸å³ä¾§åé",name:"ä¸å³ä¾§åéï¼é©¶å ¥{way_name}",destination:"ä¸å³ä¾§åéï¼åå¾{destination}"},"sharp left":{default:"æ¥åå·¦ä¸åé",name:"æ¥åå·¦ä¸åéï¼é©¶å ¥{way_name}",destination:"æ¥åå·¦ä¸åéï¼åå¾{destination}"},"sharp right":{default:"æ¥åå³ä¸åé",name:"æ¥åå³ä¸åéï¼é©¶å ¥{way_name}",destination:"æ¥åå³ä¸åéï¼åå¾{destination}"},"slight left":{default:"ç¨åå·¦ä¸åé",name:"ç¨åå·¦ä¸åéï¼é©¶å ¥{way_name}",destination:"ç¨åå·¦ä¸åéï¼åå¾{destination}"},"slight right":{default:"ç¨åå³ä¸åé",name:"ç¨åå³ä¸åéï¼é©¶å ¥{way_name}",destination:"ç¨åå³ä¸åéï¼åå¾{destination}"}},rotary:{default:{default:{default:"è¿å ¥ç¯å²",name:"éè¿ç¯å²åé©¶å ¥{way_name}",destination:"éè¿ç¯å²ååå¾{destination}"},name:{default:"è¿å ¥{rotary_name}ç¯å²",name:"éè¿{rotary_name}ç¯å²åé©¶å ¥{way_name}",destination:"éè¿{rotary_name}ç¯å²ååå¾{destination}"},exit:{default:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åº",name:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åºï¼ä¸{way_name}",destination:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åºï¼åå¾{destination}"},name_exit:{default:"è¿å ¥{rotary_name}ç¯å²åä»{exit_number}åºå£é©¶åº",name:"è¿å ¥{rotary_name}ç¯å²åä»{exit_number}åºå£é©¶åºï¼ä¸{way_name}",destination:"è¿å ¥{rotary_name}ç¯å²åä»{exit_number}åºå£é©¶åºï¼åå¾{destination}"}}},roundabout:{default:{exit:{default:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åº",name:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åºï¼ä¸{way_name}",destination:"è¿å ¥ç¯å²åä»{exit_number}åºå£é©¶åºï¼åå¾{destination}"},default:{default:"è¿å ¥ç¯å²",name:"éè¿ç¯å²åé©¶å ¥{way_name}",destination:"éè¿ç¯å²ååå¾{destination}"}}},"roundabout turn":{default:{default:"{modifier}转弯",name:"{modifier}转弯ï¼é©¶å ¥{way_name}",destination:"{modifier}转弯ï¼åå¾{destination}"},left:{default:"左转",name:"左转ï¼é©¶å ¥{way_name}",destination:"左转ï¼åå¾{destination}"},right:{default:"å³è½¬",name:"å³è½¬ï¼é©¶å ¥{way_name}",destination:"å³è½¬ï¼åå¾{destination}"},straight:{default:"ç»§ç»ç´è¡",name:"ç»§ç»ç´è¡ï¼é©¶å ¥{way_name}",destination:"ç»§ç»ç´è¡ï¼åå¾{destination}"}},"exit roundabout":{default:{default:"驶离ç¯å²",name:"驶离ç¯å²ï¼é©¶å ¥{way_name}",destination:"驶离ç¯å²ï¼åå¾{destination}"}},"exit rotary":{default:{default:"驶离ç¯å²",name:"驶离ç¯å²ï¼é©¶å ¥{way_name}",destination:"驶离ç¯å²ï¼åå¾{destination}"}},turn:{default:{default:"{modifier}转弯",name:"{modifier}转弯ï¼é©¶å ¥{way_name}",destination:"{modifier}转弯ï¼åå¾{destination}"},left:{default:"左转",name:"左转ï¼é©¶å ¥{way_name}",destination:"左转ï¼åå¾{destination}"},right:{default:"å³è½¬",name:"å³è½¬ï¼é©¶å ¥{way_name}",destination:"å³è½¬ï¼åå¾{destination}"},straight:{default:"ç´è¡",name:"ç´è¡ï¼é©¶å ¥{way_name}",destination:"ç´è¡ï¼åå¾{destination}"}},"use lane":{no_lanes:{default:"ç»§ç»ç´è¡"},default:{default:"{lane_instruction}"}}}}},{}],48:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;module.exports=L.Class.extend({options:{timeout:500,blurTimeout:100,noResultsMessage:"No results found."},initialize:function(elem,callback,context,options){L.setOptions(this,options);this._elem=elem;this._resultFn=options.resultFn?L.Util.bind(options.resultFn,options.resultContext):null;this._autocomplete=options.autocompleteFn?L.Util.bind(options.autocompleteFn,options.autocompleteContext):null;this._selectFn=L.Util.bind(callback,context);this._container=L.DomUtil.create("div","leaflet-routing-geocoder-result");this._resultTable=L.DomUtil.create("table","",this._container);L.DomEvent.addListener(this._elem,"input",this._keyPressed,this);L.DomEvent.addListener(this._elem,"keypress",this._keyPressed,this);L.DomEvent.addListener(this._elem,"keydown",this._keyDown,this);L.DomEvent.addListener(this._elem,"blur",function(){if(this._isOpen){this.close()}},this)},close:function(){L.DomUtil.removeClass(this._container,"leaflet-routing-geocoder-result-open");this._isOpen=false},_open:function(){var rect=this._elem.getBoundingClientRect();if(!this._container.parentElement){var scrollX=window.pageXOffset!==undefined?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft;var scrollY=window.pageYOffset!==undefined?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop;this._container.style.left=rect.left+scrollX+"px";this._container.style.top=rect.bottom+scrollY+"px";this._container.style.width=rect.right-rect.left+"px";document.body.appendChild(this._container)}L.DomUtil.addClass(this._container,"leaflet-routing-geocoder-result-open");this._isOpen=true},_setResults:function(results){var i,tr,td,text;delete this._selection;this._results=results;while(this._resultTable.firstChild){this._resultTable.removeChild(this._resultTable.firstChild)}for(i=0;i<results.length;i++){tr=L.DomUtil.create("tr","",this._resultTable);tr.setAttribute("data-result-index",i);td=L.DomUtil.create("td","",tr);text=document.createTextNode(results[i].name);td.appendChild(text);L.DomEvent.addListener(td,"mousedown",L.DomEvent.preventDefault);L.DomEvent.addListener(td,"click",this._createClickListener(results[i]))}if(!i){tr=L.DomUtil.create("tr","",this._resultTable);td=L.DomUtil.create("td","leaflet-routing-geocoder-no-results",tr);td.innerHTML=this.options.noResultsMessage}this._open();if(results.length>0){this._select(1)}},_createClickListener:function(r){var resultSelected=this._resultSelected(r);return L.bind(function(){this._elem.blur();resultSelected()},this)},_resultSelected:function(r){return L.bind(function(){this.close();this._elem.value=r.name;this._lastCompletedText=r.name;this._selectFn(r)},this)},_keyPressed:function(e){var index;if(this._isOpen&&e.keyCode===13&&this._selection){index=parseInt(this._selection.getAttribute("data-result-index"),10);this._resultSelected(this._results[index])();L.DomEvent.preventDefault(e);return}if(e.keyCode===13){L.DomEvent.preventDefault(e);this._complete(this._resultFn,true);return}if(this._autocomplete&&document.activeElement===this._elem){if(this._timer){clearTimeout(this._timer)}this._timer=setTimeout(L.Util.bind(function(){this._complete(this._autocomplete)},this),this.options.timeout);return}this._unselect()},_select:function(dir){var sel=this._selection;if(sel){L.DomUtil.removeClass(sel.firstChild,"leaflet-routing-geocoder-selected");sel=sel[dir>0?"nextSibling":"previousSibling"]}if(!sel){sel=this._resultTable[dir>0?"firstChild":"lastChild"]}if(sel){L.DomUtil.addClass(sel.firstChild,"leaflet-routing-geocoder-selected");this._selection=sel}},_unselect:function(){if(this._selection){L.DomUtil.removeClass(this._selection.firstChild,"leaflet-routing-geocoder-selected")}delete this._selection},_keyDown:function(e){if(this._isOpen){switch(e.keyCode){case 27:this.close();L.DomEvent.preventDefault(e);return;case 38:this._select(-1);L.DomEvent.preventDefault(e);return;case 40:this._select(1);L.DomEvent.preventDefault(e);return}}},_complete:function(completeFn,trySelect){var v=this._elem.value;function completeResults(results){this._lastCompletedText=v;if(trySelect&&results.length===1){this._resultSelected(results[0])()}else{this._setResults(results)}}if(!v){return}if(v!==this._lastCompletedText){completeFn(v,completeResults,this)}else if(trySelect){completeResults.call(this,this._results)}}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],49:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var Itinerary=_dereq_("./itinerary");var Line=_dereq_("./line");var Plan=_dereq_("./plan");var OSRMv1=_dereq_("./osrm-v1");module.exports=Itinerary.extend({options:{fitSelectedRoutes:"smart",routeLine:function(route,options){return new Line(route,options)},autoRoute:true,routeWhileDragging:false,routeDragInterval:500,waypointMode:"connect",showAlternatives:false,defaultErrorHandler:function(e){console.error("Routing error:",e.error)}},initialize:function(options){L.Util.setOptions(this,options);this._router=this.options.router||new OSRMv1(options);this._plan=this.options.plan||new Plan(this.options.waypoints,options);this._requestCount=0;Itinerary.prototype.initialize.call(this,options);this.on("routeselected",this._routeSelected,this);if(this.options.defaultErrorHandler){this.on("routingerror",this.options.defaultErrorHandler)}this._plan.on("waypointschanged",this._onWaypointsChanged,this);if(options.routeWhileDragging){this._setupRouteDragging()}},_onZoomEnd:function(){if(!this._selectedRoute||!this._router.requiresMoreDetail){return}var map=this._map;if(this._router.requiresMoreDetail(this._selectedRoute,map.getZoom(),map.getBounds())){this.route({callback:L.bind(function(err,routes){var i;if(!err){for(i=0;i<routes.length;i++){this._routes[i].properties=routes[i].properties}this._updateLineCallback(err,routes)}},this),simplifyGeometry:false,geometryOnly:true})}},onAdd:function(map){if(this.options.autoRoute){this.route()}var container=Itinerary.prototype.onAdd.call(this,map);this._map=map;this._map.addLayer(this._plan);this._map.on("zoomend",this._onZoomEnd,this);if(this._plan.options.geocoder){container.insertBefore(this._plan.createGeocoders(),container.firstChild)}return container},onRemove:function(map){map.off("zoomend",this._onZoomEnd,this);if(this._line){map.removeLayer(this._line)}map.removeLayer(this._plan);if(this._alternatives&&this._alternatives.length>0){for(var i=0,len=this._alternatives.length;i<len;i++){map.removeLayer(this._alternatives[i])}}return Itinerary.prototype.onRemove.call(this,map)},getWaypoints:function(){return this._plan.getWaypoints()},setWaypoints:function(waypoints){this._plan.setWaypoints(waypoints);return this},spliceWaypoints:function(){var removed=this._plan.spliceWaypoints.apply(this._plan,arguments);return removed},getPlan:function(){return this._plan},getRouter:function(){return this._router},_routeSelected:function(e){var route=this._selectedRoute=e.route,alternatives=this.options.showAlternatives&&e.alternatives,fitMode=this.options.fitSelectedRoutes,fitBounds=fitMode==="smart"&&!this._waypointsVisible()||fitMode!=="smart"&&fitMode;this._updateLines({route:route,alternatives:alternatives});if(fitBounds){this._map.fitBounds(this._line.getBounds())}if(this.options.waypointMode==="snap"){this._plan.off("waypointschanged",this._onWaypointsChanged,this);this.setWaypoints(route.waypoints);this._plan.on("waypointschanged",this._onWaypointsChanged,this)}},_waypointsVisible:function(){var wps=this.getWaypoints(),mapSize,bounds,boundsSize,i,p;try{mapSize=this._map.getSize();for(i=0;i<wps.length;i++){p=this._map.latLngToLayerPoint(wps[i].latLng);if(bounds){bounds.extend(p)}else{bounds=L.bounds([p])}}boundsSize=bounds.getSize();return(boundsSize.x>mapSize.x/5||boundsSize.y>mapSize.y/5)&&this._waypointsInViewport()}catch(e){return false}},_waypointsInViewport:function(){var wps=this.getWaypoints(),mapBounds,i;try{mapBounds=this._map.getBounds()}catch(e){return false}for(i=0;i<wps.length;i++){if(mapBounds.contains(wps[i].latLng)){return true}}return false},_updateLines:function(routes){var addWaypoints=this.options.addWaypoints!==undefined?this.options.addWaypoints:true;this._clearLines();this._alternatives=[];if(routes.alternatives)routes.alternatives.forEach(function(alt,i){this._alternatives[i]=this.options.routeLine(alt,L.extend({isAlternative:true},this.options.altLineOptions||this.options.lineOptions));this._alternatives[i].addTo(this._map);this._hookAltEvents(this._alternatives[i])},this);this._line=this.options.routeLine(routes.route,L.extend({addWaypoints:addWaypoints,extendToWaypoints:this.options.waypointMode==="connect"},this.options.lineOptions));this._line.addTo(this._map);this._hookEvents(this._line)},_hookEvents:function(l){l.on("linetouched",function(e){this._plan.dragNewWaypoint(e)},this)},_hookAltEvents:function(l){l.on("linetouched",function(e){var alts=this._routes.slice();var selected=alts.splice(e.target._route.routesIndex,1)[0];this.fire("routeselected",{route:selected,alternatives:alts})},this)},_onWaypointsChanged:function(e){if(this.options.autoRoute){this.route({})}if(!this._plan.isReady()){this._clearLines();this._clearAlts()}this.fire("waypointschanged",{waypoints:e.waypoints})},_setupRouteDragging:function(){var timer=0,waypoints;this._plan.on("waypointdrag",L.bind(function(e){waypoints=e.waypoints;if(!timer){timer=setTimeout(L.bind(function(){this.route({waypoints:waypoints,geometryOnly:true,callback:L.bind(this._updateLineCallback,this)});timer=undefined},this),this.options.routeDragInterval)}},this));this._plan.on("waypointdragend",function(){if(timer){clearTimeout(timer);timer=undefined}this.route()},this)},_updateLineCallback:function(err,routes){if(!err){routes=routes.slice();var selected=routes.splice(this._selectedRoute.routesIndex,1)[0];this._updateLines({route:selected,alternatives:this.options.showAlternatives?routes:[]})}else if(err.type!=="abort"){this._clearLines()}},route:function(options){var ts=++this._requestCount,wps;if(this._pendingRequest&&this._pendingRequest.abort){this._pendingRequest.abort();this._pendingRequest=null}options=options||{};if(this._plan.isReady()){if(this.options.useZoomParameter){options.z=this._map&&this._map.getZoom()}wps=options&&options.waypoints||this._plan.getWaypoints();this.fire("routingstart",{waypoints:wps}) 2513;this._pendingRequest=this._router.route(wps,function(err,routes){this._pendingRequest=null;if(options.callback){return options.callback.call(this,err,routes)}if(ts===this._requestCount){this._clearLines();this._clearAlts();if(err&&err.type!=="abort"){this.fire("routingerror",{error:err});return}routes.forEach(function(route,i){route.routesIndex=i});if(!options.geometryOnly){this.fire("routesfound",{waypoints:wps,routes:routes});this.setAlternatives(routes)}else{var selectedRoute=routes.splice(0,1)[0];this._routeSelected({route:selectedRoute,alternatives:routes})}}},this,options)}},_clearLines:function(){if(this._line){this._map.removeLayer(this._line);delete this._line}if(this._alternatives&&this._alternatives.length){for(var i in this._alternatives){this._map.removeLayer(this._alternatives[i])}this._alternatives=[]}}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./itinerary":55,"./line":56,"./osrm-v1":59,"./plan":60}],50:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;module.exports=L.Control.extend({options:{header:"Routing error",formatMessage:function(error){if(error.status<0){return"Calculating the route caused an error. Technical description follows: <code><pre>"+error.message+"</pre></code"}else{return"The route could not be calculated. "+error.message}}},initialize:function(routingControl,options){L.Control.prototype.initialize.call(this,options);routingControl.on("routingerror",L.bind(function(e){if(this._element){this._element.children[1].innerHTML=this.options.formatMessage(e.error);this._element.style.visibility="visible"}},this)).on("routingstart",L.bind(function(){if(this._element){this._element.style.visibility="hidden"}},this))},onAdd:function(){var header,message;this._element=L.DomUtil.create("div","leaflet-bar leaflet-routing-error");this._element.style.visibility="hidden";header=L.DomUtil.create("h3",null,this._element);message=L.DomUtil.create("span",null,this._element);header.innerHTML=this.options.header;return this._element},onRemove:function(){delete this._element}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],51:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var Localization=_dereq_("./localization");module.exports=L.Class.extend({options:{units:"metric",unitNames:null,language:"en",roundingSensitivity:1,distanceTemplate:"{value} {unit}"},initialize:function(options){L.setOptions(this,options);var langs=L.Util.isArray(this.options.language)?this.options.language:[this.options.language,"en"];this._localization=new Localization(langs)},formatDistance:function(d,sensitivity){var un=this.options.unitNames||this._localization.localize("units"),simpleRounding=sensitivity<=0,round=simpleRounding?function(v){return v}:L.bind(this._round,this),v,yards,data,pow10;if(this.options.units==="imperial"){yards=d/.9144;if(yards>=1e3){data={value:round(d/1609.344,sensitivity),unit:un.miles}}else{data={value:round(yards,sensitivity),unit:un.yards}}}else{v=round(d,sensitivity);data={value:v>=1e3?v/1e3:v,unit:v>=1e3?un.kilometers:un.meters}}if(simpleRounding){data.value=data.value.toFixed(-sensitivity)}return L.Util.template(this.options.distanceTemplate,data)},_round:function(d,sensitivity){var s=sensitivity||this.options.roundingSensitivity,pow10=Math.pow(10,(Math.floor(d/s)+"").length-1),r=Math.floor(d/pow10),p=r>5?pow10:pow10/2;return Math.round(d/p)*p},formatTime:function(t){var un=this.options.unitNames||this._localization.localize("units");t=Math.round(t/30)*30;if(t>86400){return Math.round(t/3600)+" "+un.hours}else if(t>3600){return Math.floor(t/3600)+" "+un.hours+" "+Math.round(t%3600/60)+" "+un.minutes}else if(t>300){return Math.round(t/60)+" "+un.minutes}else if(t>60){return Math.floor(t/60)+" "+un.minutes+(t%60!==0?" "+t%60+" "+un.seconds:"")}else{return t+" "+un.seconds}},formatInstruction:function(instr,i){if(instr.text===undefined){return this.capitalize(L.Util.template(this._getInstructionTemplate(instr,i),L.extend({},instr,{exitStr:instr.exit?this._localization.localize("formatOrder")(instr.exit):"",dir:this._localization.localize(["directions",instr.direction]),modifier:this._localization.localize(["directions",instr.modifier])})))}else{return instr.text}},getIconName:function(instr,i){switch(instr.type){case"Head":if(i===0){return"depart"}break;case"WaypointReached":return"via";case"Roundabout":return"enter-roundabout";case"DestinationReached":return"arrive"}switch(instr.modifier){case"Straight":return"continue";case"SlightRight":return"bear-right";case"Right":return"turn-right";case"SharpRight":return"sharp-right";case"TurnAround":case"Uturn":return"u-turn";case"SharpLeft":return"sharp-left";case"Left":return"turn-left";case"SlightLeft":return"bear-left"}},capitalize:function(s){return s.charAt(0).toUpperCase()+s.substring(1)},_getInstructionTemplate:function(instr,i){var type=instr.type==="Straight"?i===0?"Head":"Continue":instr.type,strings=this._localization.localize(["instructions",type]);if(!strings){strings=[this._localization.localize(["directions",type])," "+this._localization.localize(["instructions","Onto"])]}return strings[0]+(strings.length>1&&instr.road?strings[1]:"")}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./localization":57}],52:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var Autocomplete=_dereq_("./autocomplete");var Localization=_dereq_("./localization");function selectInputText(input){if(input.setSelectionRange){input.setSelectionRange(0,9999)}else{input.select()}}module.exports=L.Class.extend({includes:typeof L.Evented!=="undefined"&&L.Evented.prototype||L.Mixin.Events,options:{createGeocoder:function(i,nWps,options){var container=L.DomUtil.create("div","leaflet-routing-geocoder"),input=L.DomUtil.create("input","",container),remove=options.addWaypoints?L.DomUtil.create("span","leaflet-routing-remove-waypoint",container):undefined;input.disabled=!options.addWaypoints;return{container:container,input:input,closeButton:remove}},geocoderPlaceholder:function(i,numberWaypoints,geocoderElement){var l=new Localization(geocoderElement.options.language).localize("ui");return i===0?l.startPlaceholder:i<numberWaypoints-1?L.Util.template(l.viaPlaceholder,{viaNumber:i}):l.endPlaceholder},geocoderClass:function(){return""},waypointNameFallback:function(latLng){var ns=latLng.lat<0?"S":"N",ew=latLng.lng<0?"W":"E",lat=(Math.round(Math.abs(latLng.lat)*1e4)/1e4).toString(),lng=(Math.round(Math.abs(latLng.lng)*1e4)/1e4).toString();return ns+lat+", "+ew+lng},maxGeocoderTolerance:200,autocompleteOptions:{},language:"en"},initialize:function(wp,i,nWps,options){L.setOptions(this,options);var g=this.options.createGeocoder(i,nWps,this.options),closeButton=g.closeButton,geocoderInput=g.input;geocoderInput.setAttribute("placeholder",this.options.geocoderPlaceholder(i,nWps,this));geocoderInput.className=this.options.geocoderClass(i,nWps);this._element=g;this._waypoint=wp;this.update();geocoderInput.value=wp.name;L.DomEvent.addListener(geocoderInput,"click",function(){selectInputText(this)},geocoderInput);if(closeButton){L.DomEvent.addListener(closeButton,"click",function(){this.fire("delete",{waypoint:this._waypoint})},this)}new Autocomplete(geocoderInput,function(r){geocoderInput.value=r.name;wp.name=r.name;wp.latLng=r.center;this.fire("geocoded",{waypoint:wp,value:r})},this,L.extend({resultFn:this.options.geocoder.geocode,resultContext:this.options.geocoder,autocompleteFn:this.options.geocoder.suggest,autocompleteContext:this.options.geocoder},this.options.autocompleteOptions))},getContainer:function(){return this._element.container},setValue:function(v){this._element.input.value=v},update:function(force){var wp=this._waypoint,wpCoords;wp.name=wp.name||"";if(wp.latLng&&(force||!wp.name)){wpCoords=this.options.waypointNameFallback(wp.latLng);if(this.options.geocoder&&this.options.geocoder.reverse){this.options.geocoder.reverse(wp.latLng,67108864,function(rs){if(rs.length>0&&rs[0].center.distanceTo(wp.latLng)<this.options.maxGeocoderTolerance){wp.name=rs[0].name}else{wp.name=wpCoords}this._update()},this)}else{wp.name=wpCoords;this._update()}}},focus:function(){var input=this._element.input;input.focus();selectInputText(input)},_update:function(){var wp=this._waypoint,value=wp&&wp.name?wp.name:"";this.setValue(value);this.fire("reversegeocoded",{waypoint:wp,value:value})}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./autocomplete":48,"./localization":57}],53:[function(_dereq_,module,exports){(function(global){var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null,Control=_dereq_("./control"),Itinerary=_dereq_("./itinerary"),Line=_dereq_("./line"),OSRMv1=_dereq_("./osrm-v1"),Plan=_dereq_("./plan"),Waypoint=_dereq_("./waypoint"),Autocomplete=_dereq_("./autocomplete"),Formatter=_dereq_("./formatter"),GeocoderElement=_dereq_("./geocoder-element"),Localization=_dereq_("./localization"),ItineraryBuilder=_dereq_("./itinerary-builder"),Mapbox=_dereq_("./mapbox"),ErrorControl=_dereq_("./error-control");L.routing={control:function(options){return new Control(options)},itinerary:function(options){return Itinerary(options)},line:function(route,options){return new Line(route,options)},plan:function(waypoints,options){return new Plan(waypoints,options)},waypoint:function(latLng,name,options){return new Waypoint(latLng,name,options)},osrmv1:function(options){return new OSRMv1(options)},localization:function(options){return new Localization(options)},formatter:function(options){return new Formatter(options)},geocoderElement:function(wp,i,nWps,plan){return new L.Routing.GeocoderElement(wp,i,nWps,plan)},itineraryBuilder:function(options){return new ItineraryBuilder(options)},mapbox:function(accessToken,options){return new Mapbox(accessToken,options)},errorControl:function(routingControl,options){return new ErrorControl(routingControl,options)},autocomplete:function(elem,callback,context,options){return new Autocomplete(elem,callback,context,options)}};module.exports=L.Routing={Control:Control,Itinerary:Itinerary,Line:Line,OSRMv1:OSRMv1,Plan:Plan,Waypoint:Waypoint,Autocomplete:Autocomplete,Formatter:Formatter,GeocoderElement:GeocoderElement,Localization:Localization,Formatter:Formatter,ItineraryBuilder:ItineraryBuilder,control:L.routing.control,itinerary:L.routing.itinerary,line:L.routing.line,plan:L.routing.plan,waypoint:L.routing.waypoint,osrmv1:L.routing.osrmv1,geocoderElement:L.routing.geocoderElement,mapbox:L.routing.mapbox,errorControl:L.routing.errorControl}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./autocomplete":48,"./control":49,"./error-control":50,"./formatter":51,"./geocoder-element":52,"./itinerary":55,"./itinerary-builder":54,"./line":56,"./localization":57,"./mapbox":58,"./osrm-v1":59,"./plan":60,"./waypoint":61}],54:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;module.exports=L.Class.extend({options:{containerClassName:""},initialize:function(options){L.setOptions(this,options)},createContainer:function(className){var table=L.DomUtil.create("table",(className||"")+" "+this.options.containerClassName),colgroup=L.DomUtil.create("colgroup","",table);L.DomUtil.create("col","leaflet-routing-instruction-icon",colgroup);L.DomUtil.create("col","leaflet-routing-instruction-text",colgroup);L.DomUtil.create("col","leaflet-routing-instruction-distance",colgroup);return table},createStepsContainer:function(){return L.DomUtil.create("tbody","")},createStep:function(text,distance,icon,steps){var row=L.DomUtil.create("tr","",steps),span,td;td=L.DomUtil.create("td","",row);span=L.DomUtil.create("span","leaflet-routing-icon leaflet-routing-icon-"+icon,td);td.appendChild(span);td=L.DomUtil.create("td","",row);td.appendChild(document.createTextNode(text));td=L.DomUtil.create("td","",row);td.appendChild(document.createTextNode(distance));return row}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],55:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var Formatter=_dereq_("./formatter");var ItineraryBuilder=_dereq_("./itinerary-builder");module.exports=L.Control.extend({includes:typeof L.Evented!=="undefined"&&L.Evented.prototype||L.Mixin.Events,options:{pointMarkerStyle:{radius:5,color:"#03f",fillColor:"white",opacity:1,fillOpacity:.7},summaryTemplate:"<h2>{name}</h2><h3>{distance}, {time}</h3>",timeTemplate:"{time}",containerClassName:"",alternativeClassName:"",minimizedClassName:"",itineraryClassName:"",totalDistanceRoundingSensitivity:-1,show:true,collapsible:undefined,collapseBtn:function(itinerary){var collapseBtn=L.DomUtil.create("span",itinerary.options.collapseBtnClass);L.DomEvent.on(collapseBtn,"click",itinerary._toggle,itinerary);itinerary._container.insertBefore(collapseBtn,itinerary._container.firstChild)},collapseBtnClass:"leaflet-routing-collapse-btn"},initialize:function(options){L.setOptions(this,options);this._formatter=this.options.formatter||new Formatter(this.options);this._itineraryBuilder=this.options.itineraryBuilder||new ItineraryBuilder({containerClassName:this.options.itineraryClassName})},onAdd:function(map){var collapsible=this.options.collapsible;collapsible=collapsible||collapsible===undefined&&map.getSize().x<=640;this._container=L.DomUtil.create("div","leaflet-routing-container leaflet-bar "+(!this.options.show?"leaflet-routing-container-hide ":"")+(collapsible?"leaflet-routing-collapsible ":"")+this.options.containerClassName);this._altContainer=this.createAlternativesContainer();this._container.appendChild(this._altContainer);L.DomEvent.disableClickPropagation(this._container);L.DomEvent.addListener(this._container,"mousewheel",function(e){L.DomEvent.stopPropagation(e)});if(collapsible){this.options.collapseBtn(this)}return this._container},onRemove:function(){},createAlternativesContainer:function(){return L.DomUtil.create("div","leaflet-routing-alternatives-container")},setAlternatives:function(routes){var i,alt,altDiv;this._clearAlts();this._routes=routes;for(i=0;i<this._routes.length;i++){alt=this._routes[i];altDiv=this._createAlternative(alt,i);this._altContainer.appendChild(altDiv);this._altElements.push(altDiv)}this._selectRoute({route:this._routes[0],alternatives:this._routes.slice(1)});return this},show:function(){L.DomUtil.removeClass(this._container,"leaflet-routing-container-hide")},hide:function(){L.DomUtil.addClass(this._container,"leaflet-routing-container-hide")},_toggle:function(){var collapsed=L.DomUtil.hasClass(this._container,"leaflet-routing-container-hide");this[collapsed?"show":"hide"]()},_createAlternative:function(alt,i){var altDiv=L.DomUtil.create("div","leaflet-routing-alt "+this.options.alternativeClassName+(i>0?" leaflet-routing-alt-minimized "+this.options.minimizedClassName:"")),template=this.options.summaryTemplate,data=L.extend({name:alt.name,distance:this._formatter.formatDistance(alt.summary.totalDistance,this.options.totalDistanceRoundingSensitivity),time:this._formatter.formatTime(alt.summary.totalTime)},alt);altDiv.innerHTML=typeof template==="function"?template(data):L.Util.template(template,data);L.DomEvent.addListener(altDiv,"click",this._onAltClicked,this);this.on("routeselected",this._selectAlt,this);altDiv.appendChild(this._createItineraryContainer(alt));return altDiv},_clearAlts:function(){var el=this._altContainer;while(el&&el.firstChild){el.removeChild(el.firstChild)}this._altElements=[]},_createItineraryContainer:function(r){var container=this._itineraryBuilder.createContainer(),steps=this._itineraryBuilder.createStepsContainer(),i,instr,step,distance,text,icon;container.appendChild(steps);for(i=0;i<r.instructions.length;i++){instr=r.instructions[i];text=this._formatter.formatInstruction(instr,i);distance=this._formatter.formatDistance(instr.distance);icon=this._formatter.getIconName(instr,i);step=this._itineraryBuilder.createStep(text,distance,icon,steps);if(instr.index){this._addRowListeners(step,r.coordinates[instr.index])}}return container},_addRowListeners:function(row,coordinate){L.DomEvent.addListener(row,"mouseover",function(){this._marker=L.circleMarker(coordinate,this.options.pointMarkerStyle).addTo(this._map)},this);L.DomEvent.addListener(row,"mouseout",function(){if(this._marker){this._map.removeLayer(this._marker);delete this._marker}},this);L.DomEvent.addListener(row,"click",function(e){this._map.panTo(coordinate);L.DomEvent.stopPropagation(e)},this)},_onAltClicked:function(e){var altElem=e.target||window.event.srcElement;while(!L.DomUtil.hasClass(altElem,"leaflet-routing-alt")){altElem=altElem.parentElement}var j=this._altElements.indexOf(altElem);var alts=this._routes.slice();var route=alts.splice(j,1)[0];this.fire("routeselected",{route:route,alternatives:alts})},_selectAlt:function(e){var altElem,j,n,classFn;altElem=this._altElements[e.route.routesIndex];if(L.DomUtil.hasClass(altElem,"leaflet-routing-alt-minimized")){for(j=0;j<this._altElements.length;j++){n=this._altElements[j];classFn=j===e.route.routesIndex?"removeClass":"addClass";L.DomUtil[classFn](n,"leaflet-routing-alt-minimized");if(this.options.minimizedClassName){L.DomUtil[classFn](n,this.options.minimizedClassName)}if(j!==e.route.routesIndex)n.scrollTop=0}}L.DomEvent.stop(e)},_selectRoute:function(routes){if(this._marker){this._map.removeLayer(this._marker);delete this._marker}this.fire("routeselected",routes)}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./formatter":51,"./itinerary-builder":54}],56:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;module.exports=L.LayerGroup.extend({includes:typeof L.Evented!=="undefined"&&L.Evented.prototype||L.Mixin.Events,options:{styles:[{color:"black",opacity:.15,weight:9},{color:"white",opacity:.8,weight:6},{color:"red",opacity:1,weight:2}],missingRouteStyles:[{color:"black",opacity:.15,weight:7},{color:"white",opacity:.6,weight:4},{color:"gray",opacity:.8,weight:2,dashArray:"7,12"}],addWaypoints:true,extendToWaypoints:true,missingRouteTolerance:10},initialize:function(route,options){L.setOptions(this,options);L.LayerGroup.prototype.initialize.call(this,options);this._route=route;if(this.options.extendToWaypoints){this._extendToWaypoints()}this._addSegment(route.coordinates,this.options.styles,this.options.addWaypoints)},getBounds:function(){return L.latLngBounds(this._route.coordinates)},_findWaypointIndices:function(){var wps=this._route.inputWaypoints,indices=[],i;for(i=0;i<wps.length;i++){indices.push(this._findClosestRoutePoint(wps[i].latLng))}return indices},_findClosestRoutePoint:function(latlng){var minDist=Number.MAX_VALUE,minIndex,i,d;for(i=this._route.coordinates.length-1;i>=0;i--){d=latlng.distanceTo(this._route.coordinates[i]);if(d<minDist){minIndex=i;minDist=d}}return minIndex},_extendToWaypoints:function(){var wps=this._route.inputWaypoints,wpIndices=this._getWaypointIndices(),i,wpLatLng,routeCoord;for(i=0;i<wps.length;i++){wpLatLng=wps[i].latLng;routeCoord=L.latLng(this._route.coordinates[wpIndices[i]]);if(wpLatLng.distanceTo(routeCoord)>this.options.missingRouteTolerance){this._addSegment([wpLatLng,routeCoord],this.options.missingRouteStyles)}}},_addSegment:function(coords,styles,mouselistener){var i,pl;for(i=0;i<styles.length;i++){pl=L.polyline(coords,styles[i]);this.addLayer(pl);if(mouselistener){pl.on("mousedown",this._onLineTouched,this)}}},_findNearestWpBefore:function(i){var wpIndices=this._getWaypointIndices(),j=wpIndices.length-1;while(j>=0&&wpIndices[j]>i){j--}return j},_onLineTouched:function(e){var afterIndex=this._findNearestWpBefore(this._findClosestRoutePoint(e.latlng));this.fire("linetouched",{afterIndex:afterIndex,latlng:e.latlng});L.DomEvent.stop(e)},_getWaypointIndices:function(){if(!this._wpIndices){this._wpIndices=this._route.waypointIndices||this._findWaypointIndices()}return this._wpIndices}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],57:[function(_dereq_,module,exports){(function(){"use strict";var spanish={directions:{N:"norte",NE:"noreste",E:"este",SE:"sureste",S:"sur",SW:"suroeste",W:"oeste",NW:"noroeste",SlightRight:"leve giro a la derecha",Right:"derecha",SharpRight:"giro pronunciado a la derecha",SlightLeft:"leve giro a la izquierda",Left:"izquierda",SharpLeft:"giro pronunciado a la izquierda",Uturn:"media vuelta"},instructions:{Head:["Derecho {dir}"," sobre {road}"],Continue:["Continuar {dir}"," en {road}"],TurnAround:["Dar vuelta"],WaypointReached:["Llegó a un punto del camino"],Roundabout:["Tomar {exitStr} salida en la rotonda"," en {road}"],DestinationReached:["Llegada a destino"],Fork:["En el cruce gira a {modifier}"," hacia {road}"],Merge:["Incorpórate {modifier}"," hacia {road}"],OnRamp:["Gira {modifier} en la salida"," hacia {road}"],OffRamp:["Toma la salida {modifier}"," hacia {road}"],EndOfRoad:["Gira {modifier} al final de la carretera"," hacia {road}"],Onto:"hacia {road}"},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"Inicio",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"Destino"},units:{meters:"m",kilometers:"km",yards:"yd",miles:"mi",hours:"h",minutes:"min",seconds:"s"}};L.Routing=L.Routing||{};var Localization=L.Class.extend({initialize:function(langs){this._langs=L.Util.isArray(langs)?langs.slice():[langs,"en"];for(var i=0,l=this._langs.length;i<l;i++){var generalizedCode=/([A-Za-z]+)/.exec(this._langs[i])[1];if(!Localization[this._langs[i]]){if(Localization[generalizedCode]){this._langs[i]=generalizedCode}else{throw new Error('No localization for language "'+this._langs[i]+'".')}}}},localize:function(keys){var dict,key,value;keys=L.Util.isArray(keys)?keys:[keys];for(var i=0,l=this._langs.length;i<l;i++){dict=Localization[this._langs[i]];for(var j=0,nKeys=keys.length;dict&&j<nKeys;j++){key=keys[j];value=dict[key];dict=value}if(value){return value}}}});module.exports=L.extend(Localization,{en:{directions:{N:"north",NE:"northeast",E:"east",SE:"southeast",S:"south",SW:"southwest",W:"west",NW:"northwest",SlightRight:"slight right",Right:"right",SharpRight:"sharp right",SlightLeft:"slight left",Left:"left",SharpLeft:"sharp left",Uturn:"Turn around"},instructions:{Head:["Head {dir}"," on {road}"],Continue:["Continue {dir}"],TurnAround:["Turn around"],WaypointReached:["Waypoint reached"],Roundabout:["Take the {exitStr} exit in the roundabout"," onto {road}"],DestinationReached:["Destination reached"],Fork:["At the fork, turn {modifier}"," onto {road}"],Merge:["Merge {modifier}"," onto {road}"],OnRamp:["Turn {modifier} on the ramp"," onto {road}"],OffRamp:["Take the ramp on the {modifier}"," onto {road}"],EndOfRoad:["Turn {modifier} at the end of the road"," onto {road}"],Onto:"onto {road}"},formatOrder:function(n){var i=n%10-1,suffix=["st","nd","rd"];return suffix[i]?n+suffix[i]:n+"th"},ui:{startPlaceholder:"Start",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"End"},units:{meters:"m",kilometers:"km",yards:"yd",miles:"mi",hours:"h",minutes:"min",seconds:"s"}},de:{directions:{N:"Norden",NE:"Nordosten",E:"Osten",SE:"Südosten",S:"Süden",SW:"Südwesten",W:"Westen",NW:"Nordwesten",SlightRight:"leicht rechts",Right:"rechts",SharpRight:"scharf rechts",SlightLeft:"leicht links",Left:"links",SharpLeft:"scharf links",Uturn:"Wenden"},instructions:{Head:["Richtung {dir}"," auf {road}"],Continue:["Geradeaus Richtung {dir}"," auf {road}"],SlightRight:["Leicht rechts abbiegen"," auf {road}"],Right:["Rechts abbiegen"," auf {road}"],SharpRight:["Scharf rechts abbiegen"," auf {road}"],TurnAround:["Wenden"],SharpLeft:["Scharf links abbiegen"," auf {road}"],Left:["Links abbiegen"," auf {road}"],SlightLeft:["Leicht links abbiegen"," auf {road}"],WaypointReached:["Zwischenhalt erreicht"],Roundabout:["Nehmen Sie die {exitStr} Ausfahrt im Kreisverkehr"," auf {road}"],DestinationReached:["Sie haben ihr Ziel erreicht"],Fork:["An der Kreuzung {modifier}"," auf {road}"],Merge:["Fahren Sie {modifier} weiter"," auf {road}"],OnRamp:["Fahren Sie {modifier} auf die Auffahrt"," auf {road}"],OffRamp:["Nehmen Sie die Ausfahrt {modifier}"," auf {road}"],EndOfRoad:["Fahren Sie {modifier} am Ende der StraÃe"," auf {road}"],Onto:"auf {road}"},formatOrder:function(n){return n+"."},ui:{startPlaceholder:"Start",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"Ziel"}},sv:{directions:{N:"norr",NE:"nordost",E:"öst",SE:"sydost",S:"syd",SW:"sydväst",W:"väst",NW:"nordväst",SlightRight:"svagt höger",Right:"höger",SharpRight:"skarpt höger",SlightLeft:"svagt vänster",Left:"vänster",SharpLeft:"skarpt vänster",Uturn:"Vänd"},instructions:{Head:["à k Ã¥t {dir}"," till {road}"],Continue:["Fortsätt {dir}"],SlightRight:["Svagt höger"," till {road}"],Right:["Sväng höger"," till {road}"],SharpRight:["Skarpt höger"," till {road}"],TurnAround:["Vänd"],SharpLeft:["Skarpt vänster"," till {road}"],Left:["Sväng vänster"," till {road}"],SlightLeft:["Svagt vänster"," till {road}"],WaypointReached:["Viapunkt nÃ¥dd"],Roundabout:["Tag {exitStr} avfarten i rondellen"," till {road}"],DestinationReached:["Framme vid resans mÃ¥l"],Fork:["Tag av {modifier}"," till {road}"],Merge:["Anslut {modifier} "," till {road}"],OnRamp:["Tag pÃ¥farten {modifier}"," till {road}"],OffRamp:["Tag avfarten {modifier}"," till {road}"],EndOfRoad:["Sväng {modifier} vid vägens slut"," till {road}"],Onto:"till {road}"},formatOrder:function(n){return["första","andra","tredje","fjärde","femte","sjätte","sjunde","Ã¥ttonde","nionde","tionde"][n-1]},ui:{startPlaceholder:"FrÃ¥n",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"Till"}},es:spanish,sp:spanish,nl:{directions:{N:"noordelijke",NE:"noordoostelijke",E:"oostelijke",SE:"zuidoostelijke",S:"zuidelijke",SW:"zuidewestelijke",W:"westelijke",NW:"noordwestelijke"},instructions:{Head:["Vertrek in {dir} richting"," de {road} op"],Continue:["Ga in {dir} richting"," de {road} op"],SlightRight:["Volg de weg naar rechts"," de {road} op"],Right:["Ga rechtsaf"," de {road} op"],SharpRight:["Ga scherpe bocht naar rechts"," de {road} op"],TurnAround:["Keer om"],SharpLeft:["Ga scherpe bocht naar links"," de {road} op"],Left:["Ga linksaf"," de {road} op"],SlightLeft:["Volg de weg naar links"," de {road} op"],WaypointReached:["Aangekomen bij tussenpunt"],Roundabout:["Neem de {exitStr} afslag op de rotonde"," de {road} op"],DestinationReached:["Aangekomen op eindpunt"]},formatOrder:function(n){if(n===1||n>=20){return n+"ste"}else{return n+"de"}},ui:{startPlaceholder:"Vertrekpunt",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"Bestemming"}},fr:{directions:{N:"nord",NE:"nord-est",E:"est",SE:"sud-est",S:"sud",SW:"sud-ouest",W:"ouest",NW:"nord-ouest"},instructions:{Head:["Tout droit au {dir}"," sur {road}"],Continue:["Continuer au {dir}"," sur {road}"],SlightRight:["Légèrement à droite"," sur {road}"],Right:["A droite"," sur {road}"],SharpRight:["Complètement à droite"," sur {road}"],TurnAround:["Faire demi-tour"],SharpLeft:["Complètement à gauche"," sur {road}"],Left:["A gauche"," sur {road}"],SlightLeft:["Légèrement à gauche"," sur {road}"],WaypointReached:["Point d'étape atteint"],Roundabout:["Au rond-point, prenez la {exitStr} sortie"," sur {road}"],DestinationReached:["Destination atteinte"]},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"Départ",viaPlaceholder:"Intermédiaire {viaNumber}",endPlaceholder:"Arrivée"}},it:{directions:{N:"nord",NE:"nord-est",E:"est",SE:"sud-est",S:"sud",SW:"sud-ovest",W:"ovest",NW:"nord-ovest"},instructions:{Head:["Dritto verso {dir}"," su {road}"],Continue:["Continuare verso {dir}"," su {road}"],SlightRight:["Mantenere la destra"," su {road}"],Right:["A destra"," su {road}"],SharpRight:["Strettamente a destra"," su {road}"],TurnAround:["Fare inversione di marcia"],SharpLeft:["Strettamente a sinistra"," su {road}"],Left:["A sinistra"," sur {road}"],SlightLeft:["Mantenere la sinistra"," su {road}"],WaypointReached:["Punto di passaggio raggiunto"],Roundabout:["Alla rotonda, prendere la {exitStr} uscita"],DestinationReached:["Destinazione raggiunta"]},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"Partenza",viaPlaceholder:"Intermedia {viaNumber}",endPlaceholder:"Destinazione"}},pt:{directions:{N:"norte",NE:"nordeste",E:"leste",SE:"sudeste",S:"sul",SW:"sudoeste",W:"oeste",NW:"noroeste",SlightRight:"curva ligeira a direita",Right:"direita",SharpRight:"curva fechada a direita",SlightLeft:"ligeira a esquerda",Left:"esquerda",SharpLeft:"curva fechada a esquerda",Uturn:"Meia volta"},instructions:{Head:["Siga {dir}"," na {road}"],Continue:["Continue {dir}"," na {road}"],SlightRight:["Curva ligeira a direita"," na {road}"],Right:["Curva a direita"," na {road}"],SharpRight:["Curva fechada a direita"," na {road}"],TurnAround:["Retorne"],SharpLeft:["Curva fechada a esquerda"," na {road}"],Left:["Curva a esquerda"," na {road}"],SlightLeft:["Curva ligueira a esquerda"," na {road}"],WaypointReached:["Ponto de interesse atingido"],Roundabout:["Pegue a {exitStr} saÃda na rotatória"," na {road}"],DestinationReached:["Destino atingido"],Fork:["Na encruzilhada, vire a {modifier}"," na {road}"],Merge:["Entre à {modifier}"," na {road}"],OnRamp:["Vire {modifier} na rampa"," na {road}"],OffRamp:["Entre na rampa na {modifier}"," na {road}"],EndOfRoad:["Vire {modifier} no fim da rua"," na {road}"],Onto:"na {road}"},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"Origem",viaPlaceholder:"Intermédio {viaNumber}",endPlaceholder:"Destino"}},sk:{directions:{N:"sever",NE:"serverovýchod",E:"východ",SE:"juhovýchod",S:"juh",SW:"juhozápad",W:"západ",NW:"serverozápad"},instructions:{Head:["Mierte na {dir}"," na {road}"],Continue:["PokraÄujte na {dir}"," na {road}"],SlightRight:["Mierne doprava"," na {road}"],Right:["Doprava"," na {road}"],SharpRight:["Prudko doprava"," na {road}"],TurnAround:["OtoÄte sa"],SharpLeft:["Prudko doľava"," na {road}"],Left:["Doľava"," na {road}"],SlightLeft:["Mierne doľava"," na {road}"],WaypointReached:["Ste v prejazdovom bode."],Roundabout:["OdboÄte na {exitStr} výjazde"," na {road}"],DestinationReached:["PriÅ¡li ste do cieľa."]},formatOrder:function(n){var i=n%10-1,suffix=[".",".","."];return suffix[i]?n+suffix[i]:n+"."},ui:{startPlaceholder:"ZaÄiatok",viaPlaceholder:"Cez {viaNumber}",endPlaceholder:"Koniec"}},el:{directions:{N:"βÏÏεια",NE:"βοÏειοαναÏολικά",E:"αναÏολικά",SE:"νοÏιοαναÏολικά",S:"νÏÏια",SW:"νοÏÎ¹Î¿Î´Ï Ïικά",W:"Î´Ï Ïικά",NW:"βοÏÎµÎ¹Î¿Î´Ï Ïικά"},instructions:{Head:["ÎαÏÎµÏ Î¸Ï Î½Î¸ÎµÎ¯Ïε {dir}"," ÏÏην {road}"],Continue:["Î£Ï Î½ÎµÏίÏÏε {dir}"," ÏÏην {road}"],SlightRight:["ÎλαÏÏÏÏ Î´ÎµÎ¾Î¹Î¬"," ÏÏην {road}"],Right:["Îεξιά"," ÏÏην {road}"],SharpRight:["ÎÏÏÏομη δεξιά ÏÏÏοÏή"," ÏÏην {road}"],TurnAround:["ÎάνÏε αναÏÏÏοÏή"],SharpLeft:["ÎÏÏÏομη αÏιÏÏεÏή ÏÏÏοÏή"," ÏÏην {road}"],Left:["ÎÏιÏÏεÏά"," ÏÏην {road}"],SlightLeft:["ÎλαÏÏÏÏ Î±ÏιÏÏεÏά"," ÏÏην {road}"],WaypointReached:["ΦÏάÏαÏε ÏÏο Ïημείο αναÏοÏάÏ"],Roundabout:["ÎÎºÎ¿Î»Î¿Ï Î¸Î®ÏÏε Ïην {exitStr} Îξοδο ÏÏο ÎºÏ ÎºÎ»Î¹ÎºÏ ÎºÏμβο"," ÏÏην {road}"],DestinationReached:["ΦÏάÏαÏε ÏÏον ÏÏοοÏιÏÎ¼Ï ÏαÏ"]},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"ÎÏεÏηÏία",viaPlaceholder:"μÎÏÏ {viaNumber}",endPlaceholder:"Î ÏοοÏιÏμÏÏ"}},ca:{ 2514directions:{N:"nord",NE:"nord-est",E:"est",SE:"sud-est",S:"sud",SW:"sud-oest",W:"oest",NW:"nord-oest",SlightRight:"lleu gir a la dreta",Right:"dreta",SharpRight:"gir pronunciat a la dreta",SlightLeft:"gir pronunciat a l'esquerra",Left:"esquerra",SharpLeft:"lleu gir a l'esquerra",Uturn:"mitja volta"},instructions:{Head:["Recte {dir}"," sobre {road}"],Continue:["Continuar {dir}"],TurnAround:["Donar la volta"],WaypointReached:["Ha arribat a un punt del camÃ"],Roundabout:["Agafar {exitStr} sortida a la rotonda"," a {road}"],DestinationReached:["Arribada al destÃ"],Fork:["A la cruïlla gira a la {modifier}"," cap a {road}"],Merge:["Incorpora't {modifier}"," a {road}"],OnRamp:["Gira {modifier} a la sortida"," cap a {road}"],OffRamp:["Pren la sortida {modifier}"," cap a {road}"],EndOfRoad:["Gira {modifier} al final de la carretera"," cap a {road}"],Onto:"cap a {road}"},formatOrder:function(n){return n+"º"},ui:{startPlaceholder:"Origen",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"DestÃ"},units:{meters:"m",kilometers:"km",yards:"yd",miles:"mi",hours:"h",minutes:"min",seconds:"s"}},ru:{directions:{N:"ÑевеÑ",NE:"ÑевеÑовоÑÑок",E:"воÑÑок",SE:"ÑговоÑÑок",S:"Ñг",SW:"Ñгозапад",W:"запад",NW:"ÑевеÑозапад",SlightRight:"плавно напÑаво",Right:"напÑаво",SharpRight:"Ñезко напÑаво",SlightLeft:"плавно налево",Left:"налево",SharpLeft:"Ñезко налево",Uturn:"ÑазвеÑнÑÑÑÑÑ"},instructions:{Head:["ÐаÑаÑÑ Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ðµ на {dir}"," по {road}"],Continue:["ÐÑодолжаÑÑ Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ðµ на {dir}"," по {road}"],SlightRight:["ÐлавнÑй повоÑÐ¾Ñ Ð½Ð°Ð¿Ñаво"," на {road}"],Right:["ÐапÑаво"," на {road}"],SharpRight:["Резкий повоÑÐ¾Ñ Ð½Ð°Ð¿Ñаво"," на {road}"],TurnAround:["РазвеÑнÑÑÑÑÑ"],SharpLeft:["Резкий повоÑÐ¾Ñ Ð½Ð°Ð»ÐµÐ²Ð¾"," на {road}"],Left:["ÐовоÑÐ¾Ñ Ð½Ð°Ð»ÐµÐ²Ð¾"," на {road}"],SlightLeft:["ÐлавнÑй повоÑÐ¾Ñ Ð½Ð°Ð»ÐµÐ²Ð¾"," на {road}"],WaypointReached:["ТоÑка доÑÑигнÑÑа"],Roundabout:["{exitStr} ÑÑезд Ñ ÐºÐ¾Ð»ÑÑа"," на {road}"],DestinationReached:["ÐконÑание маÑÑÑÑÑа"],Fork:["Ðа Ñазвилке повеÑниÑе {modifier}"," на {road}"],Merge:["ÐеÑеÑÑÑойÑеÑÑ {modifier}"," на {road}"],OnRamp:["ÐовеÑниÑе {modifier} на ÑÑезд"," на {road}"],OffRamp:["СÑезжайÑе на {modifier}"," на {road}"],EndOfRoad:["ÐовеÑниÑе {modifier} в конÑе доÑоги"," на {road}"],Onto:"на {road}"},formatOrder:function(n){return n+"-й"},ui:{startPlaceholder:"ÐаÑало",viaPlaceholder:"ЧеÑез {viaNumber}",endPlaceholder:"ÐонеÑ"},units:{meters:"м",kilometers:"км",yards:"ÑÑд",miles:"ми",hours:"Ñ",minutes:"м",seconds:"Ñ"}},pl:{directions:{N:"póÅnoc",NE:"póÅnocny wschód",E:"wschód",SE:"poÅudniowy wschód",S:"poÅudnie",SW:"poÅudniowy zachód",W:"zachód",NW:"póÅnocny zachód",SlightRight:"lekko w prawo",Right:"w prawo",SharpRight:"ostro w prawo",SlightLeft:"lekko w lewo",Left:"w lewo",SharpLeft:"ostro w lewo",Uturn:"zawróÄ"},instructions:{Head:["Kieruj siÄ na {dir}"," na {road}"],Continue:["Jedź dalej przez {dir}"],TurnAround:["ZawróÄ"],WaypointReached:["Punkt poÅredni"],Roundabout:["Wyjedź {exitStr} zjazdem na rondzie"," na {road}"],DestinationReached:["Dojechano do miejsca docelowego"],Fork:["Na rozwidleniu {modifier}"," na {road}"],Merge:["Zjedź {modifier}"," na {road}"],OnRamp:["Wjazd {modifier}"," na {road}"],OffRamp:["Zjazd {modifier}"," na {road}"],EndOfRoad:["SkrÄÄ {modifier} na koÅcu drogi"," na {road}"],Onto:"na {road}"},formatOrder:function(n){return n+"."},ui:{startPlaceholder:"PoczÄ tek",viaPlaceholder:"Przez {viaNumber}",endPlaceholder:"Koniec"},units:{meters:"m",kilometers:"km",yards:"yd",miles:"mi",hours:"godz",minutes:"min",seconds:"s"}}})})()},{}],58:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var OSRMv1=_dereq_("./osrm-v1");module.exports=OSRMv1.extend({options:{serviceUrl:"https://api.mapbox.com/directions/v5",profile:"mapbox/driving",useHints:false},initialize:function(accessToken,options){L.Routing.OSRMv1.prototype.initialize.call(this,options);this.options.requestParameters=this.options.requestParameters||{};this.options.requestParameters.access_token=accessToken}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./osrm-v1":59}],59:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null,corslite=_dereq_("@mapbox/corslite"),polyline=_dereq_("@mapbox/polyline"),osrmTextInstructions=_dereq_("osrm-text-instructions")("v5");var Waypoint=_dereq_("./waypoint");module.exports=L.Class.extend({options:{serviceUrl:"https://router.project-osrm.org/route/v1",profile:"driving",timeout:30*1e3,routingOptions:{alternatives:true,steps:true},polylinePrecision:5,useHints:true,suppressDemoServerWarning:false,language:"en"},initialize:function(options){L.Util.setOptions(this,options);this._hints={locations:{}};if(!this.options.suppressDemoServerWarning&&this.options.serviceUrl.indexOf("//router.project-osrm.org")>=0){console.warn("You are using OSRM's demo server. "+"Please note that it is **NOT SUITABLE FOR PRODUCTION USE**.\n"+"Refer to the demo server's usage policy: "+"https://github.com/Project-OSRM/osrm-backend/wiki/Api-usage-policy\n\n"+"To change, set the serviceUrl option.\n\n"+"Please do not report issues with this server to neither "+"Leaflet Routing Machine or OSRM - it's for\n"+"demo only, and will sometimes not be available, or work in "+"unexpected ways.\n\n"+"Please set up your own OSRM server, or use a paid service "+"provider for production.")}},route:function(waypoints,callback,context,options){var timedOut=false,wps=[],url,timer,wp,i,xhr;options=L.extend({},this.options.routingOptions,options);url=this.buildRouteUrl(waypoints,options);if(this.options.requestParameters){url+=L.Util.getParamString(this.options.requestParameters,url)}timer=setTimeout(function(){timedOut=true;callback.call(context||callback,{status:-1,message:"OSRM request timed out."})},this.options.timeout);for(i=0;i<waypoints.length;i++){wp=waypoints[i];wps.push(new Waypoint(wp.latLng,wp.name,wp.options))}return xhr=corslite(url,L.bind(function(err,resp){var data,error={};clearTimeout(timer);if(!timedOut){if(!err){try{data=JSON.parse(resp.responseText);try{return this._routeDone(data,wps,options,callback,context)}catch(ex){error.status=-3;error.message=ex.toString()}}catch(ex){error.status=-2;error.message="Error parsing OSRM response: "+ex.toString()}}else{error.message="HTTP request failed: "+err.type+(err.target&&err.target.status?" HTTP "+err.target.status+": "+err.target.statusText:"");error.url=url;error.status=-1;error.target=err}callback.call(context||callback,error)}else{xhr.abort()}},this))},requiresMoreDetail:function(route,zoom,bounds){if(!route.properties.isSimplified){return false}var waypoints=route.inputWaypoints,i;for(i=0;i<waypoints.length;++i){if(!bounds.contains(waypoints[i].latLng)){return true}}return false},_routeDone:function(response,inputWaypoints,options,callback,context){var alts=[],actualWaypoints,i,route;context=context||callback;if(response.code!=="Ok"){callback.call(context,{status:response.code});return}actualWaypoints=this._toWaypoints(inputWaypoints,response.waypoints);for(i=0;i<response.routes.length;i++){route=this._convertRoute(response.routes[i]);route.inputWaypoints=inputWaypoints;route.waypoints=actualWaypoints;route.properties={isSimplified:!options||!options.geometryOnly||options.simplifyGeometry};alts.push(route)}this._saveHintData(response.waypoints,inputWaypoints);callback.call(context,null,alts)},_convertRoute:function(responseRoute){var result={name:"",coordinates:[],instructions:[],summary:{totalDistance:responseRoute.distance,totalTime:responseRoute.duration}},legNames=[],waypointIndices=[],index=0,legCount=responseRoute.legs.length,hasSteps=responseRoute.legs[0].steps.length>0,i,j,leg,step,geometry,type,modifier,text,stepToText;if(this.options.stepToText){stepToText=this.options.stepToText}else{stepToText=L.bind(osrmTextInstructions.compile,osrmTextInstructions,this.options.language)}for(i=0;i<legCount;i++){leg=responseRoute.legs[i];legNames.push(leg.summary&&leg.summary.charAt(0).toUpperCase()+leg.summary.substring(1));for(j=0;j<leg.steps.length;j++){step=leg.steps[j];geometry=this._decodePolyline(step.geometry);result.coordinates.push.apply(result.coordinates,geometry);type=this._maneuverToInstructionType(step.maneuver,i===legCount-1);modifier=this._maneuverToModifier(step.maneuver);text=stepToText(step,{legCount:legCount,legIndex:i});if(type){if(i==0&&step.maneuver.type=="depart"||step.maneuver.type=="arrive"){waypointIndices.push(index)}result.instructions.push({type:type,distance:step.distance,time:step.duration,road:step.name,direction:this._bearingToDirection(step.maneuver.bearing_after),exit:step.maneuver.exit,index:index,mode:step.mode,modifier:modifier,text:text})}index+=geometry.length}}result.name=legNames.join(", ");if(!hasSteps){result.coordinates=this._decodePolyline(responseRoute.geometry)}else{result.waypointIndices=waypointIndices}return result},_bearingToDirection:function(bearing){var oct=Math.round(bearing/45)%8;return["N","NE","E","SE","S","SW","W","NW"][oct]},_maneuverToInstructionType:function(maneuver,lastLeg){switch(maneuver.type){case"new name":return"Continue";case"depart":return"Head";case"arrive":return lastLeg?"DestinationReached":"WaypointReached";case"roundabout":case"rotary":return"Roundabout";case"merge":case"fork":case"on ramp":case"off ramp":case"end of road":return this._camelCase(maneuver.type);default:return this._camelCase(maneuver.modifier)}},_maneuverToModifier:function(maneuver){var modifier=maneuver.modifier;switch(maneuver.type){case"merge":case"fork":case"on ramp":case"off ramp":case"end of road":modifier=this._leftOrRight(modifier)}return modifier&&this._camelCase(modifier)},_camelCase:function(s){var words=s.split(" "),result="";for(var i=0,l=words.length;i<l;i++){result+=words[i].charAt(0).toUpperCase()+words[i].substring(1)}return result},_leftOrRight:function(d){return d.indexOf("left")>=0?"Left":"Right"},_decodePolyline:function(routeGeometry){var cs=polyline.decode(routeGeometry,this.options.polylinePrecision),result=new Array(cs.length),i;for(i=cs.length-1;i>=0;i--){result[i]=L.latLng(cs[i])}return result},_toWaypoints:function(inputWaypoints,vias){var wps=[],i,viaLoc;for(i=0;i<vias.length;i++){viaLoc=vias[i].location;wps.push(new Waypoint(L.latLng(viaLoc[1],viaLoc[0]),inputWaypoints[i].name,inputWaypoints[i].options))}return wps},buildRouteUrl:function(waypoints,options){var locs=[],hints=[],wp,latLng,computeInstructions,computeAlternative=true;for(var i=0;i<waypoints.length;i++){wp=waypoints[i];latLng=wp.latLng;locs.push(latLng.lng+","+latLng.lat);hints.push(this._hints.locations[this._locationKey(latLng)]||"")}computeInstructions=true;return this.options.serviceUrl+"/"+this.options.profile+"/"+locs.join(";")+"?"+(options.geometryOnly?options.simplifyGeometry?"":"overview=full":"overview=false")+"&alternatives="+computeAlternative.toString()+"&steps="+computeInstructions.toString()+(this.options.useHints?"&hints="+hints.join(";"):"")+(options.allowUTurns?"&continue_straight="+!options.allowUTurns:"")},_locationKey:function(location){return location.lat+","+location.lng},_saveHintData:function(actualWaypoints,waypoints){var loc;this._hints={locations:{}};for(var i=actualWaypoints.length-1;i>=0;i--){loc=waypoints[i].latLng;this._hints.locations[this._locationKey(loc)]=actualWaypoints[i].hint}}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./waypoint":61,"@mapbox/corslite":1,"@mapbox/polyline":2,"osrm-text-instructions":3}],60:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;var GeocoderElement=_dereq_("./geocoder-element");var Waypoint=_dereq_("./waypoint");module.exports=(L.Layer||L.Class).extend({includes:typeof L.Evented!=="undefined"&&L.Evented.prototype||L.Mixin.Events,options:{dragStyles:[{color:"black",opacity:.15,weight:9},{color:"white",opacity:.8,weight:6},{color:"red",opacity:1,weight:2,dashArray:"7,12"}],draggableWaypoints:true,routeWhileDragging:false,addWaypoints:true,reverseWaypoints:false,addButtonClassName:"",language:"en",createGeocoderElement:function(wp,i,nWps,plan){return new GeocoderElement(wp,i,nWps,plan)},createMarker:function(i,wp){var options={draggable:this.draggableWaypoints},marker=L.marker(wp.latLng,options);return marker},geocodersClassName:""},initialize:function(waypoints,options){L.Util.setOptions(this,options);this._waypoints=[];this.setWaypoints(waypoints)},isReady:function(){var i;for(i=0;i<this._waypoints.length;i++){if(!this._waypoints[i].latLng){return false}}return true},getWaypoints:function(){var i,wps=[];for(i=0;i<this._waypoints.length;i++){wps.push(this._waypoints[i])}return wps},setWaypoints:function(waypoints){var args=[0,this._waypoints.length].concat(waypoints);this.spliceWaypoints.apply(this,args);return this},spliceWaypoints:function(){var args=[arguments[0],arguments[1]],i;for(i=2;i<arguments.length;i++){args.push(arguments[i]&&arguments[i].hasOwnProperty("latLng")?arguments[i]:new Waypoint(arguments[i]))}[].splice.apply(this._waypoints,args);while(this._waypoints.length<2){this.spliceWaypoints(this._waypoints.length,0,null)}this._updateMarkers();this._fireChanged.apply(this,args)},onAdd:function(map){this._map=map;this._updateMarkers()},onRemove:function(){var i;this._removeMarkers();if(this._newWp){for(i=0;i<this._newWp.lines.length;i++){this._map.removeLayer(this._newWp.lines[i])}}delete this._map},createGeocoders:function(){var container=L.DomUtil.create("div","leaflet-routing-geocoders "+this.options.geocodersClassName),waypoints=this._waypoints,addWpBtn,reverseBtn;this._geocoderContainer=container;this._geocoderElems=[];if(this.options.addWaypoints){addWpBtn=L.DomUtil.create("button","leaflet-routing-add-waypoint "+this.options.addButtonClassName,container);addWpBtn.setAttribute("type","button");L.DomEvent.addListener(addWpBtn,"click",function(){this.spliceWaypoints(waypoints.length,0,null)},this)}if(this.options.reverseWaypoints){reverseBtn=L.DomUtil.create("button","leaflet-routing-reverse-waypoints",container);reverseBtn.setAttribute("type","button");L.DomEvent.addListener(reverseBtn,"click",function(){this._waypoints.reverse();this.setWaypoints(this._waypoints)},this)}this._updateGeocoders();this.on("waypointsspliced",this._updateGeocoders);return container},_createGeocoder:function(i){var geocoder=this.options.createGeocoderElement(this._waypoints[i],i,this._waypoints.length,this.options);geocoder.on("delete",function(){if(i>0||this._waypoints.length>2){this.spliceWaypoints(i,1)}else{this.spliceWaypoints(i,1,new Waypoint)}},this).on("geocoded",function(e){this._updateMarkers();this._fireChanged();this._focusGeocoder(i+1);this.fire("waypointgeocoded",{waypointIndex:i,waypoint:e.waypoint})},this).on("reversegeocoded",function(e){this.fire("waypointgeocoded",{waypointIndex:i,waypoint:e.waypoint})},this);return geocoder},_updateGeocoders:function(){var elems=[],i,geocoderElem;for(i=0;i<this._geocoderElems.length;i++){this._geocoderContainer.removeChild(this._geocoderElems[i].getContainer())}for(i=this._waypoints.length-1;i>=0;i--){geocoderElem=this._createGeocoder(i);this._geocoderContainer.insertBefore(geocoderElem.getContainer(),this._geocoderContainer.firstChild);elems.push(geocoderElem)}this._geocoderElems=elems.reverse()},_removeMarkers:function(){var i;if(this._markers){for(i=0;i<this._markers.length;i++){if(this._markers[i]){this._map.removeLayer(this._markers[i])}}}this._markers=[]},_updateMarkers:function(){var i,m;if(!this._map){return}this._removeMarkers();for(i=0;i<this._waypoints.length;i++){if(this._waypoints[i].latLng){m=this.options.createMarker(i,this._waypoints[i],this._waypoints.length);if(m){m.addTo(this._map);if(this.options.draggableWaypoints){this._hookWaypointEvents(m,i)}}}else{m=null}this._markers.push(m)}},_fireChanged:function(){this.fire("waypointschanged",{waypoints:this.getWaypoints()});if(arguments.length>=2){this.fire("waypointsspliced",{index:Array.prototype.shift.call(arguments),nRemoved:Array.prototype.shift.call(arguments),added:arguments})}},_hookWaypointEvents:function(m,i,trackMouseMove){var eventLatLng=function(e){return trackMouseMove?e.latlng:e.target.getLatLng()},dragStart=L.bind(function(e){this.fire("waypointdragstart",{index:i,latlng:eventLatLng(e)})},this),drag=L.bind(function(e){this._waypoints[i].latLng=eventLatLng(e);this.fire("waypointdrag",{index:i,latlng:eventLatLng(e)})},this),dragEnd=L.bind(function(e){this._waypoints[i].latLng=eventLatLng(e);this._waypoints[i].name="";if(this._geocoderElems){this._geocoderElems[i].update(true)}this.fire("waypointdragend",{index:i,latlng:eventLatLng(e)});this._fireChanged()},this),mouseMove,mouseUp;if(trackMouseMove){mouseMove=L.bind(function(e){this._markers[i].setLatLng(e.latlng);drag(e)},this);mouseUp=L.bind(function(e){this._map.dragging.enable();this._map.off("mouseup",mouseUp);this._map.off("mousemove",mouseMove);dragEnd(e)},this);this._map.dragging.disable();this._map.on("mousemove",mouseMove);this._map.on("mouseup",mouseUp);dragStart({latlng:this._waypoints[i].latLng})}else{m.on("dragstart",dragStart);m.on("drag",drag);m.on("dragend",dragEnd)}},dragNewWaypoint:function(e){var newWpIndex=e.afterIndex+1;if(this.options.routeWhileDragging){this.spliceWaypoints(newWpIndex,0,e.latlng);this._hookWaypointEvents(this._markers[newWpIndex],newWpIndex,true)}else{this._dragNewWaypoint(newWpIndex,e.latlng)}},_dragNewWaypoint:function(newWpIndex,initialLatLng){var wp=new Waypoint(initialLatLng),prevWp=this._waypoints[newWpIndex-1],nextWp=this._waypoints[newWpIndex],marker=this.options.createMarker(newWpIndex,wp,this._waypoints.length+1),lines=[],draggingEnabled=this._map.dragging.enabled(),mouseMove=L.bind(function(e){var i,latLngs;if(marker){marker.setLatLng(e.latlng)}for(i=0;i<lines.length;i++){latLngs=lines[i].getLatLngs();latLngs.splice(1,1,e.latlng);lines[i].setLatLngs(latLngs)}L.DomEvent.stop(e)},this),mouseUp=L.bind(function(e){var i;if(marker){this._map.removeLayer(marker)}for(i=0;i<lines.length;i++){this._map.removeLayer(lines[i])}this._map.off("mousemove",mouseMove);this._map.off("mouseup",mouseUp);this.spliceWaypoints(newWpIndex,0,e.latlng);if(draggingEnabled){this._map.dragging.enable()}L.DomEvent.stop(e)},this),i;if(marker){marker.addTo(this._map)}for(i=0;i<this.options.dragStyles.length;i++){lines.push(L.polyline([prevWp.latLng,initialLatLng,nextWp.latLng],this.options.dragStyles[i]).addTo(this._map))}if(draggingEnabled){this._map.dragging.disable()}this._map.on("mousemove",mouseMove);this._map.on("mouseup",mouseUp)},_focusGeocoder:function(i){if(this._geocoderElems[i]){this._geocoderElems[i].focus()}else{document.activeElement.blur()}}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./geocoder-element":52,"./waypoint":61}],61:[function(_dereq_,module,exports){(function(global){(function(){"use strict";var L=typeof window!=="undefined"?window["L"]:typeof global!=="undefined"?global["L"]:null;module.exports=L.Class.extend({options:{allowUTurn:false},initialize:function(latLng,name,options){L.Util.setOptions(this,options);this.latLng=L.latLng(latLng);this.name=name}})})()}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}]},{},[53]);
2515 2516(function (L) { 2517 if (!L) return; 2518 2519 /** 2520 * ---------------------------------------- 2521 * MARKER EXTENSIONS 2522 * ---------------------------------------- 2523 */ 2524 2525 // Save original setIcon method for safe override 2526 if (!L.Marker.prototype._setIconOriginal) { 2527 L.Marker.prototype._setIconOriginal = L.Marker.prototype.setIcon; 2528 } 2529 2530 // Extend L.Marker with Google Mapsâlike methods 2531 L.Marker.include({ 2532 2533 /** 2534 * Mimics Google Maps setMap() to add or remove marker from map. 2535 */ 2536 setMap: function (map) { 2537 if (map) { 2538 this._mapRef = map; 2539 this.addTo(map); 2540 this._visible = true; 2541 } else if (this._mapRef) { 2542 this._mapRef.removeLayer(this); 2543 this._visible = false; 2544 } 2545 }, 2546 2547 /** 2548 * Show or hide marker on map. 2549 */ 2550 setVisible: function (show) { 2551 if (!this._mapRef && this._map) { 2552 this._mapRef = this._map; 2553 } 2554 2555 if (show) { 2556 this._mapRef && this.addTo(this._mapRef); 2557 this._visible = true; 2558 } else if (this._mapRef) { 2559 this._mapRef.removeLayer(this); 2560 this._visible = false; 2561 } 2562 }, 2563 2564 /** 2565 * Return true if marker is currently visible. 2566 */ 2567 getVisible: function () { 2568 return !!this._visible; 2569 }, 2570 2571 /** 2572 * Returns current position of the marker. 2573 */ 2574 getPosition: function () { 2575 return this.getLatLng(); 2576 }, 2577 2578 /** 2579 * Sets marker position to the given latlng. 2580 */ 2581 setPosition: function (latlng) { 2582 return this.setLatLng(latlng); 2583 }, 2584 2585 /** 2586 * Binds a reference to the map, used internally for visibility. 2587 */ 2588 bindMap: function (map) { 2589 this._mapRef = map; 2590 this._visible = true; 2591 }, 2592 2593 /** 2594 * Apply animation classes (limited to CSS classes like bounce). 2595 */ 2596 setAnimation: function (animationType) { 2597 const el = this._icon; 2598 if (!el) return; 2599 2600 el.classList.remove('leaflet-bounce-animation'); 2601 2602 if (animationType === 'bounce') { 2603 el.classList.add('leaflet-bounce-animation'); 2604 } 2605 }, 2606 2607 /** 2608 * Safe override of setIcon to accept URL strings (like Google). 2609 */ 2610 setIcon: function (icon) { 2611 // If icon is a string, convert to default L.icon 2612 if (typeof icon === 'string') { 2613 icon = L.icon({ 2614 iconUrl: icon, 2615 iconSize: [32, 32], 2616 iconAnchor: [16, 32], 2617 popupAnchor: [0, -55] 2618 }); 2619 } 2620 2621 // If icon is an object with Google-style format 2622 if (icon && icon.url) { 2623 const size = icon.scaledSize || [32, 32]; 2624 icon = L.icon({ 2625 iconUrl: icon.url, 2626 iconSize: size, 2627 iconAnchor: [size[0] / 2, size[1]], 2628 popupAnchor: [0, -Math.max(40, size[1])] 2629 }); 2630 } 2631 2632 return this._setIconOriginal(icon); 2633 } 2634 }); 2635 2636 /** 2637 * ---------------------------------------- 2638 * POPUP EXTENSIONS 2639 * ---------------------------------------- 2640 */ 2641 L.Popup.include({ 2642 2643 /** 2644 * Opens popup at marker position on given map (Google-style). 2645 */ 2646 open: function (map, marker) { 2647 if (!map || !marker) return this; 2648 2649 const latlng = marker.getLatLng(); 2650 this.setLatLng(latlng); 2651 2652 if (!this._map) { 2653 map.openPopup(this); 2654 } 2655 2656 return this; 2657 }, 2658 2659 /** 2660 * Closes popup from its parent map. 2661 */ 2662 close: function () { 2663 if (this._map) { 2664 this._map.closePopup(this); 2665 } 2666 } 2667 }); 2668 2669 /** 2670 * ---------------------------------------- 2671 * POLYLINE EXTENSIONS 2672 * ---------------------------------------- 2673 */ 2674 if (L.Polyline) { 2675 L.Polyline.include({ 2676 2677 /** 2678 * Mimics Google Maps Polyline setMap() method. 2679 */ 2680 setMap: function (map) { 2681 if (map) { 2682 if (!map.hasLayer(this)) { 2683 this.addTo(map); 2684 } 2685 } else if (this._map) { 2686 this._map.removeLayer(this); 2687 } 2688 } 2689 }); 2690 } 2691 2692 /** 2693 * ---------------------------------------- 2694 * MAP EXTENSIONS 2695 * ---------------------------------------- 2696 */ 2697 L.Map.include({ 2698 2699 /** 2700 * Placeholder for setOptions() (noop for Leaflet). 2701 */ 2702 setOptions: function (options) {
2703 console.warn('setOptions() called in Leaflet. This method does nothing.'); 2704 return this; 2705 }, 2706 2707 /** 2708 * Mimics Google Maps setCenter(), accepting [lat, lng] or LatLng object. 2709 */ 2710 setCenter: function (position) { 2711 if (!position) return; 2712 2713 const latlng = Array.isArray(position) 2714 ? L.latLng(position[0], position[1]) 2715 : position; 2716 2717 this.panTo(latlng); 2718 } 2719 }); 2720 2721})(window.L); 2722 2723/** 2724 * WpgmpBaseMaps class - provides shared map functionality. 2725 */ 2726(function ($, window, document) { 2727 2728class WpgmpBaseMaps { 2729 constructor(element, map_data = {},places = []) { 2730 var options; 2731 this.element = element; 2732 this.map_data = $.extend({}, {}, map_data); 2733 options = this.map_data.map_options; 2734 this.settings = $.extend({ 2735 "min_zoom": "0", 2736 "max_zoom": "19", 2737 "zoom": "5", 2738 "map_type_id": "ROADMAP", 2739 "scroll_wheel": true, 2740 "map_visual_refresh": false, 2741 "full_screen_control": false, 2742 "full_screen_control_position": "BOTTOM_RIGHT", 2743 "zoom_control": true, 2744 "zoom_control_style": "SMALL", 2745 "zoom_control_position": "TOP_LEFT", 2746 "camera_control_position" : "BOTTOM_RIGHT", 2747 "map_type_control": true, 2748 "map_type_control_style": "HORIZONTAL_BAR", 2749 "map_type_control_position": "RIGHT_TOP", 2750 "scale_control": true, 2751 "street_view_control": true, 2752 "street_view_control_position": "TOP_LEFT", 2753 "overview_map_control": true, 2754 "camera_control": true, 2755 "center_lat": "40.6153983", 2756 "center_lng": "-74.2535216", 2757 "draggable": true, 2758 "gesture": "auto", 2759 }, {}, options); 2760 this.container = $("div[rel='" + $(this.element).attr("id") + "']"); 2761 $(document).find(".wpgmp_map_container_placeholder").remove(); 2762 $(document).find(".wpgmp_hide_map_container").removeClass("wpgmp_hide_map_container"); 2763 2764 2765 this.drawingmanager = {}; 2766 this.places = []; 2767 this.show_places = []; 2768 this.places_for_category_tabs = []; 2769 this.categories = {}; 2770 this.tabs = []; 2771 this.all_shapes = []; 2772 this.wpgmp_polylines = []; 2773 this.wpgmp_polygons = []; 2774 this.wpgmp_circles = []; 2775 this.wpgmp_shape_events = []; 2776 this.wpgmp_rectangles = []; 2777 this.per_page_value = 0; 2778 this.last_remove_cat_id = ''; 2779 this.last_selected_cat_id = ''; 2780 this.last_category_chkbox_action = ''; 2781 this.current_amenities = []; 2782 this.route_directions = []; 2783 this.search_area = ''; 2784 this.filter_position = ''; 2785 this.filter_content = ''; 2786 this.markerClusterer = null; 2787 this.url_filters = []; 2788 this.wpgmp_search_form = ''; 2789 this.enable_search_term = false; 2790 this.search_term = ''; 2791 this.filters = {}; 2792 this.addonInfo = []; 2793 } 2794 2795 // ----------------------------- 2796 // ð Lifecycle 2797 // ----------------------------- 2798 init() { 2799 2800 var map_obj = this; 2801 2802 } 2803 map_loaded() { } 2804 /** 2805 * Resizes and re-centers the map 2806 * Preserves the zoom level and current center position 2807 */ 2808resize_map() { 2809 const map_obj = this; 2810 const isGoogle = map_obj.isMapProvider("google"); 2811 const map = map_obj.map; 2812 2813 if (!map) return; 2814 2815 const center = map.getCenter(); 2816 const zoom = map.getZoom(); 2817 2818 if (isGoogle) { 2819 google.maps.event.trigger(map, "resize"); 2820 map.setCenter(center); 2821 map.setZoom(zoom); 2822 } else { 2823 setTimeout(() => { 2824 map.invalidateSize(true);
2825 map.setView(center, zoom); 2826 }, 200); 2827 } 2828} 2829 2830 responsive_map() { 2831 const map_obj = this; 2832 const isGoogle = map_obj.isMapProvider("google"); 2833 const map = map_obj.map; 2834 2835 window.addEventListener("resize", function () { 2836 const zoom = map.getZoom(); 2837 const center = map.getCenter(); 2838 2839 if (isGoogle) { 2840 google.maps.event.trigger(map, "resize"); 2841 map.setZoom(zoom); 2842 map.setCenter(center); 2843 map.getBounds(); 2844 if (map_obj.map_data.marker_cluster) { 2845 map_obj.set_marker_cluster(); 2846 } 2847 } else { 2848 setTimeout(() => { 2849 map.invalidateSize(true); 2850 map.setView(center, zoom); 2851 }, 200); 2852 } 2853 }); 2854 } 2855 2856 2857 // ----------------------------- 2858 // ð Marker Management 2859 // ----------------------------- 2860 createMarker() { } 2861 marker_bind(marker, handler) { 2862 const map_obj = this; 2863 2864 // If no handler is provided, use default logic 2865 const defaultHandler = function () { 2866 const position = map_obj.isMapProvider("google") 2867 ? marker.getPosition() 2868 : marker.getLatLng(); 2869 2870 const lat = map_obj.isMapProvider("google") ? position.lat() : position.lat; 2871 const lng = map_obj.isMapProvider("google") ? position.lng() : position.lng; 2872 2873 map_obj.wpgmp_geocode(lat, lng).then((result) => { 2874 $("#googlemap_address").val(result.address); 2875 $(".google_latitude").val(result.latitude); 2876 $(".google_longitude").val(result.longitude); 2877 $(".google_city").val(result.city); 2878 $(".google_state").val(result.state); 2879 $(".google_country").val(result.country); 2880 $(".google_postal_code").val(result.postal_code); 2881 }).catch((err) => { 2882 console.error(err); 2883 }); 2884 }; 2885 2886 const dragendHandler = handler || defaultHandler; 2887 2888 if (map_obj.isMapProvider("google")) { 2889 google.maps.event.addListener(marker, "dragend", dragendHandler); 2890 } else { 2891 marker.on("dragend", dragendHandler); 2892 } 2893 } 2894 2895 create_markers() { 2896 const map_obj = this; 2897 const isGoogle = map_obj.isMapProvider("google"); 2898 const places = map_obj.map_data.places; 2899 const remove_keys = []; 2900 const spiderfier_enabled = map_obj.map_data.map_marker_spiderfier_setting?.marker_spiderfy === "true"; 2901 let oms; 2902 2903 if (isGoogle && spiderfier_enabled) { 2904 let oms_args = { 2905 markersWontMove: true, 2906 markersWontHide: true, 2907 basicFormatEvents: true, 2908 keepSpiderfied: true, 2909 }; 2910 2911 if (map_obj.map_data.map_marker_spiderfier_setting.marker_enable_spiral === "true") { 2912 oms_args.circleSpiralSwitchover = map_obj.map_data.map_marker_spiderfier_setting.minimum_markers; 2913 } 2914 2915 oms = new OverlappingMarkerSpiderfier(map_obj.map, oms_args); 2916 } 2917 2918 $.each(places, function (key, place) { 2919 if (!(place.location.lat && place.location.lng)) { 2920 remove_keys.push(key); 2921 return; 2922 } 2923 2924 place.categories ??= {}; 2925 place.location.icon ??= map_obj.settings.marker_default_icon; 2926 2927 // Create marker 2928 if (isGoogle) { 2929 2930 place.marker = map_obj.create_google_marker({ 2931 map: map_obj.map, 2932 position: place.location, 2933 iconUrl: place.location.icon, 2934 draggable: place.location.draggable, 2935 clickable: place.location.infowindow_disable, 2936 }); 2937 2938 place.marker.bindMap(map_obj.map); 2939 place.marker.setVisible(true); 2940 2941 if (map_obj.settings.infowindow_drop_animation || place.location.animation === "DROP") { 2942 place.marker.setAnimation(google.maps.Animation.DROP); 2943 } 2944 if (place.location.animation === "BOUNCE1") { 2945 place.marker.setAnimation(google.maps.Animation.BOUNCE); 2946 } 2947 2948 if (map_obj.settings.infowindow_filter_only) { 2949 place.marker.setVisible(false); 2950 } 2951 2952 } else { 2953 2954 place.marker = map_obj.create_leaflet_marker({ 2955 map: map_obj.map, 2956 position: [parseFloat(place.location.lat), parseFloat(place.location.lng)], 2957 iconUrl: place.location.icon, 2958 draggable: place.location.draggable, 2959 }); 2960 2961 place.marker.addTo(map_obj.map); 2962 place.marker.setVisible(true); 2963 2964 if (map_obj.settings.infowindow_filter_only) { 2965 place.marker.setVisible(false); 2966 } 2967 2968 if (place.location.infowindow_disable || place.source !== "manual") { 2969 place.marker.bindPopup(place.content); 2970 } 2971 2972 } 2973 2974 // 𪢠Marker bind if editing 2975 if (map_obj.map_data.page === "edit_location") { 2976 map_obj.marker_bind(place.marker); 2977 } 2978 2979 // Infowindow content replacement 2980 const location_categories = Object.values(place.categories).map(cat => "<div class='fc-badge'>"+cat.name+"</div>"); 2981 const marker_image = place.source === "post" 2982 ? place.location.extra_fields.post_featured_image 2983 : place.location.marker_image; 2984 2985 let template = place.source === "post" 2986 ? map_obj.settings.infowindow_geotags_setting 2987 : map_obj.settings.infowindow_setting; 2988 2989 const post_info_class = place.source === "post" 2990 ? `wpgmp_infowindow_post fc-infobox-${map_obj.settings.infowindow_post_skin.name} fc-item-${map_obj.settings.infowindow_post_skin.name}` 2991 : `fc-infobox-${map_obj.settings.infowindow_skin?.name} fc-infowindow-${map_obj.settings.infowindow_skin?.name || "default"}`; 2992 2993 2994 template ??= place.content; 2995 2996 const replaceData = { 2997 "{marker_id}": place.id, 2998 "{marker_title}": place.title, 2999 "{marker_address}": place.address, 3000 "{marker_latitude}": place.location.lat, 3001 "{marker_longitude}": place.location.lng, 3002 "{marker_city}": place.location.city, 3003 "{marker_state}": place.location.state, 3004 "{marker_country}": place.location.country, 3005 "{marker_postal_code}": place.location.postal_code, 3006 "{marker_zoom}": place.location.zoom, 3007 "{marker_icon}": place.location.icon, 3008 "{marker_category}": location_categories.join(""), 3009 "{marker_message}": place.content, 3010 "{marker_image}": marker_image, 3011 "{get_directions_link}": `https://www.google.com/maps/place/${parseFloat(place.location.lat)},${parseFloat(place.location.lng)}` 3012 }; 3013 3014 // Inject extra fields 3015 if (place.location.extra_fields) { 3016 for (const [key, val] of Object.entries(place.location.extra_fields)) { 3017 replaceData[`{${key}}`] = val || "<div class='wpgmp_empty'>wpgmp_empty</div>"; 3018 } 3019 } 3020 3021 template = template.replace(/{#if (.*?)}([\s\S]*?){\/if}/g, (_, key, content) => { 3022 const val = replaceData[`{${key}}`]; 3023 return val && val !== "<div class='wpgmp_empty'>wpgmp_empty</div>" ? content : ""; 3024 }); 3025 3026 if (map_obj.map_data.map_options.link_extra_field) { 3027 const anchor_tag = map_obj.map_data.map_options.link_extra_field; 3028 for (const prop_an in anchor_tag) { 3029 if (replaceData[prop_an] && replaceData[prop_an] !== "<div class='wpgmp_empty'>wpgmp_empty</div>") { 3030 template = template.replace(prop_an, anchor_tag[prop_an]); 3031 } 3032 } 3033 } 3034 3035 for (const prop in replaceData) { 3036 template = template.replaceAll(prop, replaceData[prop] ?? ""); 3037 } 3038 3039 const tempObject = $("<div/>").html(template); 3040 tempObject.find(".wpgmp_extra_field:contains('wpgmp_empty')").remove(); 3041 tempObject.find(".wpgmp_empty").prev().remove(); 3042 tempObject.find(".wpgmp_empty").remove(); 3043 3044 let content = tempObject.prop("outerHTML") || ""; 3045
3046 if (map_obj.settings.map_infowindow_customisations && map_obj.settings.show_infowindow_header) { 3047 content = `<div class="wpgmp_infowindow ${post_info_class}"><div class="wpgmp_iw_head"><div class="wpgmp_iw_head_content">${place.title}</div></div><div class="wpgmp_iw_content">${content}</div></div>`; 3048 } else { 3049 content = `<div class="wpgmp_infowindow ${post_info_class}"><div class="wpgmp_iw_content">${content}</div></div>`; 3050 } 3051 3052 place.infowindow_data = content; 3053 place.infowindow = map_obj.infowindow_marker; 3054 3055 3056 3057 let on_event = map_obj.settings.infowindow_open_event; 3058 if (map_obj.isMobile) on_event = "click"; 3059 if (oms && on_event === "click") on_event = "spider_click"; 3060 3061 3062 if (map_obj.useAdvancedMarker && place.marker?.content && on_event == 'mouseover') { 3063 const content = place.marker.content; 3064 3065 content.addEventListener(on_event, function () { 3066 3067 map_obj.places.forEach(p => { 3068 p.infowindow?.close?.(); 3069 p.marker?.setAnimation?.(null); 3070 }); 3071 3072 map_obj.openInfoWindow(place); 3073 3074 if (map_obj.settings.infowindow_bounce_animation === on_event) { 3075 map_obj.toggle_bounce(place.marker); 3076 } 3077 }); 3078 } else { 3079 // Fallback for classic markers (already working for you) 3080 map_obj.event_listener(place.marker, on_event, function () { 3081 3082 map_obj.places.forEach(p => { 3083 p.infowindow?.close?.(); 3084 p.marker?.setAnimation?.(null); 3085 }); 3086 3087 map_obj.openInfoWindow(place); 3088 3089 if (map_obj.settings.infowindow_bounce_animation === on_event) { 3090 map_obj.toggle_bounce(place.marker); 3091 } 3092 }); 3093 } 3094 3095 3096 if (oms) oms.addMarker(place.marker); 3097 3098 if (on_event === "mouseover") { 3099 map_obj.event_listener(place.marker, "click", function () { 3100 if (map_obj.settings.infowindow_click_change_zoom > 0) { 3101 map_obj.map.setZoom(map_obj.settings.infowindow_click_change_zoom); 3102 } 3103 if (map_obj.settings.infowindow_click_change_center) { 3104 map_obj.map.setCenter(place.marker.getPosition()); 3105 } 3106 }); 3107 } 3108 3109 if (map_obj.settings.infowindow_bounce_animation === "mouseover" && on_event !== "mouseover") { 3110 map_obj.event_listener(place.marker, "mouseover", function () { 3111 place.marker.setAnimation("bounce"); 3112 }); 3113 map_obj.event_listener(place.marker, "mouseout", function () { 3114 place.marker.setAnimation(null); 3115 }); 3116 } 3117 3118 if (map_obj.settings.infowindow_bounce_animation) { 3119 if (isGoogle) { 3120 google.maps.event.addListener(place.infowindow, "closeclick", function () { 3121 place.marker.setAnimation(null); 3122 }); 3123 } 3124 } 3125 3126 if (place.location.infowindow_default_open || map_obj.settings.default_infowindow_open) { 3127 setTimeout(function(){ 3128 map_obj.openInfoWindow(place); 3129 },500) 3130 } 3131 map_obj.places.push(place); 3132 }); 3133 3134 remove_keys.forEach(key => delete places[key]); 3135 } 3136 3137 display_markers() { 3138 const map_obj = this; 3139 3140 map_obj.show_places = []; 3141 const categories = {}; 3142 3143 for (const place of map_obj.places) { 3144 3145 if (map_obj.settings.infowindow_filter_only === true) { 3146 place.marker.setVisible(false); 3147 } else { 3148 place.marker.setVisible(true); 3149 map_obj.show_places.push(place); 3150 } 3151 3152 if (place.categories) { 3153 $.each(place.categories, (_, category) => { 3154 if (!categories[category.name]) { 3155 categories[category.name] = category; 3156 } 3157 }); 3158 } 3159 } 3160 3161 map_obj.categories = categories; 3162 } 3163 placeMarker(lat, lng) { 3164 const map_obj = this; 3165 const isGoogle = map_obj.isMapProvider("google"); 3166 const position = isGoogle 3167 ? {"lat":lat,"lng":lng} 3168 : L.latLng(lat, lng); 3169 // ðï¸ Remove existing marker (Leaflet: setMap(null), Google: setMap(null)) 3170 if (map_obj.searchMarker) { 3171 map_obj.searchMarker.setMap(null); 3172 } 3173 3174 // Create new marker 3175 if (isGoogle) { 3176 3177 map_obj.searchMarker = map_obj.create_google_marker({ 3178 map: map_obj.map, 3179 position, 3180 iconUrl: map_obj.settings.marker_default_icon || '', 3181 draggable: true, 3182 anchorPoint: { x: 0, y: -29 }, 3183 }); 3184 3185 3186 } else { 3187 3188 map_obj.searchMarker = map_obj.create_leaflet_marker({ 3189 map: map_obj.map, 3190 position, 3191 iconUrl: map_obj.settings.marker_default_icon || "", 3192 draggable: true, 3193 }); 3194 3195 3196 } 3197 3198 // Add to map using .setMap()
3199 map_obj.searchMarker.setMap(map_obj.map); 3200 3201 // ind marker events if defined 3202 if (typeof map_obj.marker_bind === "function") { 3203 map_obj.marker_bind(map_obj.searchMarker); 3204 } 3205 3206 // Center and zoom 3207 map_obj.map.setCenter(position); 3208 map_obj.map.setZoom(17); 3209 } 3210 3211 draw_radius_circle(lat, lng) { 3212 3213 const map_obj = this; 3214 let radius = ""; 3215 const $radiusField = $(map_obj.container).find('[data-name="radius"]'); 3216 const isGoogle = map_obj.isMapProvider("google"); 3217 3218 if ($radiusField.length > 0) { 3219 radius = $radiusField.val(); 3220 } 3221 3222 const listing = map_obj.map_data.listing || {}; 3223 let dimension = listing.radius_dimension || "km"; 3224 3225 // Apply default if nothing selected 3226 if ( 3227 listing.apply_default_radius === true && 3228 listing.default_radius && 3229 radius === "" 3230 ) { 3231 radius = listing.default_radius; 3232 dimension = listing.default_radius_dimension || "km"; 3233 } 3234 3235 // Convert to meters 3236 const radiusMeters = 3237 dimension === "km" 3238 ? parseFloat(radius) * 1000 3239 : parseFloat(radius) * 1609.34; 3240 3241 const center = [ 3242 parseFloat(lat), 3243 parseFloat(lng) 3244 ]; 3245 3246 if(isGoogle){ 3247 3248 if (map_obj.radius_circle) { 3249 3250 // Update center 3251 map_obj.radius_circle.setCenter({ 3252 lat: center[0], 3253 lng: center[1] 3254 }); 3255 3256 // Update radius 3257 map_obj.radius_circle.setRadius(radiusMeters); 3258 3259 } else { 3260 3261 // Create circle for the first time 3262 map_obj.radius_circle = new google.maps.Circle({ 3263 map: map_obj.map, 3264 center: { 3265 lat: center[0], 3266 lng: center[1] 3267 }, 3268 radius: radiusMeters, 3269 strokeColor: '#a61e34', 3270 strokeOpacity: 0.8, 3271 strokeWeight: 2, 3272 fillColor: '#a61e34', 3273 fillOpacity: 0.15 3274 }); 3275 } 3276 3277 map_obj.map.fitBounds(map_obj.radius_circle.getBounds()); 3278 3279 }else{ 3280 if (map_obj.radius_circle) { 3281 3282 // Update center 3283 map_obj.radius_circle.setLatLng(center); 3284 3285 // Update radius 3286 map_obj.radius_circle.setRadius(radiusMeters); 3287 3288 } else { 3289 3290 // Create Leaflet circle 3291 map_obj.radius_circle = L.circle( 3292 center, 3293 { 3294 radius: radiusMeters, 3295 color: '#a61e34', 3296 weight: 2, 3297 opacity: 0.8, 3298 fillColor: '#a61e34', 3299 fillOpacity: 0.15 3300 } 3301 ).addTo(map_obj.map); 3302 } 3303 3304 // Fit Leaflet map to circle 3305 map_obj.map.fitBounds( 3306 map_obj.radius_circle.getBounds() 3307 ); 3308 3309 } 3310 } 3311 3312 toggle_bounce(marker) { 3313 const isGoogle = this.isMapProvider("google"); 3314 if (isGoogle) { 3315 if (marker.getAnimation() !== null) { 3316 marker.setAnimation(null); 3317 } else { 3318 marker.setAnimation(google.maps.Animation.BOUNCE); 3319 } 3320 } else { 3321 const el = marker._icon; 3322 if (!el) return; 3323 const className = 'leaflet-bounce-animation'; 3324 if (el.classList.contains(className)) { 3325 el.classList.remove(className); 3326 } else { 3327 el.classList.add(className); 3328 } 3329 } 3330 } 3331 show_center_circle() { 3332 const map_obj = this; 3333 const isGoogle = map_obj.isMapProvider("google"); 3334 3335 if (!map_obj.settings.center_circle_radius) { 3336 map_obj.settings.center_circle_radius = 5; 3337 } 3338 3339 const radiusInMeters = parseInt(map_obj.settings.center_circle_radius) * 1000; 3340 const center = map_obj.map.getCenter(); 3341 3342 if (isGoogle) { 3343 map_obj.set_center_circle = new google.maps.Circle({ 3344 map: map_obj.map, 3345 center: center, 3346 fillColor: map_obj.settings.center_circle_fillcolor, 3347 fillOpacity: map_obj.settings.center_circle_fillopacity, 3348 strokeColor: map_obj.settings.center_circle_strokecolor, 3349 strokeOpacity: map_obj.settings.center_circle_strokeopacity, 3350 strokeWeight: map_obj.settings.center_circle_strokeweight, 3351 radius: radiusInMeters 3352 }); 3353 } else { 3354 map_obj.set_center_circle = L.circle(center, { 3355 fillColor: map_obj.settings.center_circle_fillcolor, 3356 fillOpacity: map_obj.settings.center_circle_fillopacity, 3357 color: map_obj.settings.center_circle_strokecolor, 3358 opacity: map_obj.settings.center_circle_strokeopacity, 3359 weight: map_obj.settings.center_circle_strokeweight, 3360 radius: radiusInMeters 3361 }).addTo(map_obj.map); 3362 } 3363 } 3364 3365 /** 3366 * Adds a marker to the center of the map and binds an optional infowindow 3367 */ 3368show_center_marker() { 3369 const map_obj = this; 3370 const isGoogle = map_obj.isMapProvider("google"); 3371 const center = map_obj.map.getCenter(); 3372 const hasInfo = map_obj.settings.center_marker_infowindow !== ""; 3373 3374 if (isGoogle) { 3375 3376 map_obj.map_center_marker = map_obj.create_google_marker({ 3377 map: map_obj.map, 3378 position: {lat:center.lat(),lng:center.lng()}, 3379 title: map_obj.settings.center_marker_infowindow, 3380 iconUrl: map_obj.settings.center_marker_icon, 3381 clickable: hasInfo, 3382 }); 3383 3384 3385 if (!map_obj.map_center_info) { 3386 map_obj.map_center_info = map_obj.infowindow_marker; 3387 } 3388 3389 if (hasInfo) { 3390 google.maps.event.addListener(map_obj.map_center_marker, "click", function () { 3391 map_obj.map_center_info.setPosition(center); 3392 const content = map_obj.settings.map_infowindow_customisations === true 3393 ? `<div class='fc-infobox-root'><div class='fc-infobox'><div class='fc-infobox-body'>${map_obj.settings.center_marker_infowindow}</div></div></div>` 3394 : map_obj.settings.center_marker_infowindow; 3395 map_obj.map_center_info.setContent(content); 3396 map_obj.map_center_info.open(map_obj.map, this); 3397 }); 3398 } 3399 } else { 3400 3401 map_obj.map_center_marker = map_obj.create_leaflet_marker({ 3402 map: map_obj.map, 3403 position: center, 3404 iconUrl: map_obj.settings.center_marker_icon, 3405 draggable: true, 3406 }); 3407 3408 3409 if (!map_obj.map_center_info) { 3410 map_obj.map_center_info = map_obj.infowindow_marker; 3411 } 3412 3413 if (hasInfo) { 3414 map_obj.event_listener(map_obj.map_center_marker, "click", function () { 3415 const content = `<div class='fc-infobox-root'><div class='fc-infobox'><div class='fc-infobox-body'>${map_obj.settings.center_marker_infowindow}</div></div></div>`; 3416 const latlng = map_obj.map.getCenter(); 3417 map_obj.map_center_info.setContent(content).setLatLng(latlng).openOn(map_obj.map); 3418 }); 3419 } 3420 } 3421} 3422 3423 // Unified version to center the map based on user's current location 3424center_by_nearest() { 3425 const map_obj = this; 3426 const isGoogle = map_obj.isMapProvider("google"); 3427 3428 this.get_current_location( 3429 function (user_position) { 3430 if (!map_obj.user_location_marker) { 3431 if (isGoogle) { 3432 3433 map_obj.user_location_marker = map_obj.create_google_marker({ 3434 map: map_obj.map, 3435 position: {"lat":user_position.lat(),"lng":user_position.lng()}, 3436 title: wpgmp_local.center_location_message, 3437 iconUrl: map_obj.map_data.map_options.center_marker_icon, 3438 }); 3439 3440 3441 } else { 3442 3443 map_obj.user_location_marker = map_obj.create_leaflet_marker({ 3444 map: map_obj.map, 3445 position: user_position, 3446 iconUrl: map_obj.settings.center_marker_icon, 3447 title: wpgmp_local.center_location_message, 3448 }); 3449 3450 3451 } 3452 } 3453 3454 if (!map_obj.map_center_info) { 3455 map_obj.map_center_info = map_obj.infowindow_marker; 3456 } 3457 3458 if (map_obj.settings.center_marker_infowindow !== "") { 3459 const showInfo = function () { 3460 const content = map_obj.settings.map_infowindow_customisations 3461 ? `<div class='wpgmp_infowindow'><div class='wpgmp_iw_content'>${map_obj.settings.center_marker_infowindow}</div></div>` 3462 : map_obj.settings.center_marker_infowindow; 3463 3464 if (isGoogle) { 3465 map_obj.map_center_info.setPosition(user_position); 3466 map_obj.map_center_info.setContent(content); 3467 map_obj.map_center_info.open(map_obj.map, map_obj.user_location_marker); 3468 } else { 3469 map_obj.map_center_info.setContent(content); 3470 map_obj.map_center_info.setLatLng(user_position).openOn(map_obj.map); 3471 } 3472 }; 3473 3474 if (isGoogle) { 3475 google.maps.event.addListener(map_obj.user_location_marker, "click", showInfo); 3476 } else { 3477 map_obj.event_listener(map_obj.user_location_marker, "click", showInfo); 3478 } 3479 } 3480 3481 if (isGoogle) { 3482 map_obj.map.setCenter(user_position); 3483 } else {
3484 map_obj.map.setView(user_position, map_obj.settings.zoom); 3485 } 3486 3487 if (map_obj.settings.show_center_circle === true) { 3488 map_obj.show_center_circle(); 3489 } 3490 3491 if ( 3492 map_obj.map_data.listing && 3493 map_obj.map_data.listing.apply_default_radius === true 3494 ) { 3495 map_obj.search_area = user_position; 3496 } 3497 }, 3498 function (user_position) { 3499 // Fallback on error with same logic 3500 if (!map_obj.user_location_marker) { 3501 map_obj.user_location_marker = L.marker(user_position, { 3502 icon: L.icon({ 3503 iconUrl: map_obj.settings.center_marker_icon, 3504 iconAnchor: [16, 32], 3505 popupAnchor: [0, -30] 3506 }), 3507 title: wpgmp_local.center_location_message 3508 }).addTo(map_obj.map); 3509 } 3510 3511 if (!map_obj.map_center_info) { 3512 map_obj.map_center_info = map_obj.infowindow_marker; 3513 } 3514 3515 if (map_obj.settings.center_marker_infowindow !== "") { 3516 map_obj.event_listener(map_obj.user_location_marker, "click", function () { 3517 const content = `<div class='wpgmp_infowindow'><div class='wpgmp_iw_content'>${map_obj.settings.center_marker_infowindow}</div></div>`; 3518 map_obj.map_center_info.setContent(content); 3519 map_obj.map_center_info.setLatLng(user_position).openOn(map_obj.map); 3520 }); 3521 } 3522 3523 map_obj.map.panTo(user_position); 3524 3525 if (map_obj.settings.show_center_circle === true) { 3526 map_obj.show_center_circle(); 3527 } 3528 3529 if ( 3530 map_obj.map_data.listing && 3531 map_obj.map_data.listing.apply_default_radius === true 3532 ) { 3533 map_obj.search_area = user_position; 3534 } 3535 } 3536 ); 3537} 3538 3539 /** 3540 * Adjusts the map viewport to fit all visible markers 3541 */ 3542fit_bounds() { 3543 const map_obj = this; 3544 const isGoogle = map_obj.isMapProvider("google"); 3545 const places = map_obj.map_data.places || []; 3546 let bounds; 3547 if (places.length === 0) return; 3548 3549 if (isGoogle) { 3550 bounds = new google.maps.LatLngBounds(); 3551 places.forEach((place) => { 3552 if (place.location.lat && place.location.lng) { 3553 bounds.extend(new google.maps.LatLng( 3554 parseFloat(place.location.lat), 3555 parseFloat(place.location.lng) 3556 )); 3557 } 3558 }); 3559 map_obj.map.fitBounds(bounds); 3560 } else { 3561 bounds = new L.LatLngBounds(); 3562 places.forEach((place) => { 3563 if (place.location.lat && place.location.lng) { 3564 bounds.extend(L.latLng( 3565 parseFloat(place.location.lat), 3566 parseFloat(place.location.lng) 3567 )); 3568 } 3569 }); 3570 map_obj.map.fitBounds(bounds); 3571 } 3572 3573 // Set center marker and circle to bounds center 3574 const center = isGoogle ? bounds.getCenter() : bounds.getCenter(); 3575 3576 if (map_obj.map_center_marker) { 3577 map_obj.map_center_marker.setPosition(center); 3578 } 3579 3580 if (map_obj.set_center_circle) { 3581 if (isGoogle ) { 3582 map_obj.set_center_circle.setCenter(center); 3583 } else { 3584 map_obj.set_center_circle.setLatLng(center); 3585 } 3586 } 3587} 3588 3589 open_infowindow(current_place_id) { 3590 const map_obj = this; 3591 const isGoogle = map_obj.isMapProvider("google"); 3592 const open_event = map_obj.settings.infowindow_open_event || 'click'; 3593 const zoom = parseInt(map_obj.settings.infowindow_click_change_zoom); 3594 const shouldZoom = !isNaN(zoom) && zoom > 0; 3595 const shouldCenter = map_obj.settings.infowindow_click_change_center === true; 3596 3597 const all_places = map_obj.map_data.places || []; 3598 3599 for (const place of all_places) { 3600 const marker = place.marker; 3601 3602 if (!marker || marker.getVisible?.() === false) continue; 3603 3604 // If this is the target place 3605 if (parseInt(place.id) === parseInt(current_place_id)) { 3606 if (shouldZoom) { 3607 map_obj.map.setZoom(zoom); 3608 } 3609 3610 if (shouldCenter) { 3611 map_obj.map.setCenter(marker.getPosition()); 3612 } 3613 3614 // Trigger the configured open event 3615 if (isGoogle) { 3616 google.maps.event.trigger(marker, open_event); 3617 } else { 3618 marker.fire(open_event); 3619 } 3620 } 3621 } 3622 } 3623 openInfoWindow(place) { 3624 const map_obj = this; 3625 const isGoogle = map_obj.isMapProvider("google"); 3626 let skin = "default"; 3627
3628 if (place.source === "post") { 3629 skin = map_obj.settings.infowindow_post_skin?.name || "default"; 3630 } else if ( 3631 map_obj.map_data.page !== "edit_location" && 3632 map_obj.settings.infowindow_skin 3633 ) { 3634 skin = map_obj.settings.infowindow_skin.name; 3635 } 3636 3637 // Handle redirect actions 3638 const action = place.location.onclick_action; 3639 const openInNewTab = place.location.open_new_tab === "yes"; 3640 if (action === "post") { 3641 window.open(place.location.redirect_permalink, openInNewTab ? "_blank" : "_self"); 3642 return; 3643 } else if (action === "custom_link") { 3644 window.open(place.location.redirect_custom_link, openInNewTab ? "_blank" : "_self"); 3645 return; 3646 } 3647 3648 // Infowindow logic 3649 if (isGoogle && skin !== "default") { 3650 const infoboxText = document.createElement("div"); 3651 infoboxText.className = "wpgmp_infobox wpgmp-infowindow-addon"; 3652 infoboxText.innerHTML = place.infowindow_data; 3653 3654 place.infowindow = map_obj.infobox; 3655 place.infowindow.setOptions({ 3656 content: infoboxText, 3657 disableAutoPan: false, 3658 alignBottom: true, 3659 maxWidth: 0, 3660 zIndex: null, 3661 closeBoxMargin: "0", 3662 closeBoxURL: "", 3663 infoBoxClearance: new google.maps.Size(25, 25), 3664 isHidden: false, 3665 pane: "floatPane", 3666 enableEventPropagation: false, 3667 }); 3668 3669 const mapOptions = map_obj?.map_data?.map_options || {}; 3670 let width = "100%"; 3671 if( map_obj.settings.map_infowindow_customisations ) { 3672 width = mapOptions.infowindow_width || '100%'; 3673 } 3674 const markerSize = map_obj.getMarkerSize?.() || [32, 32]; 3675 3676 // Calculate offsetX 3677 let offsetX = -175; 3678 if (width !== '100%') { 3679 const numericWidth = parseInt(width); 3680 if (!isNaN(numericWidth)) { 3681 offsetX = -(numericWidth / 2); 3682 } 3683 } 3684 3685 // Calculate offsetY based on marker height 3686 const markerHeight = parseInt(markerSize[1]) || 32; 3687 const offsetY = -(markerHeight) -15; 3688 // Apply offset to infowindow 3689 3690 place.infowindow.setOptions({ 3691 pixelOffset: new google.maps.Size(offsetX, offsetY), 3692 }); 3693 3694 } else { 3695 3696 let offsetX = 0; 3697 const markerSize = map_obj.getMarkerSize?.() || [32, 32]; 3698 const markerHeight = parseInt(markerSize[1]) || 32; 3699 const offsetY = -(markerHeight / 2); 3700 place.infowindow = isGoogle 3701 ? map_obj.infowindow_marker 3702 : L.popup({offset:[offsetX,offsetY]}); 3703 3704 place.infowindow.setContent(place.infowindow_data); 3705 } 3706 3707 // Open infowindow 3708 place.infowindow.open(map_obj.map, place.marker); 3709 3710 // Move to marker if configured 3711 if (map_obj.settings.infowindow_click_change_center) { 3712 map_obj.map.setCenter(place.marker.getPosition()); 3713 } 3714 3715 if ( 3716 map_obj.settings.infowindow_click_change_zoom && 3717 map_obj.settings.infowindow_click_change_zoom > 0 3718 ) { 3719 map_obj.map.setZoom(map_obj.settings.infowindow_click_change_zoom); 3720 map_obj.map.setCenter(place.marker.getPosition()); 3721 } 3722 3723 // Autofill directions 3724 if ( 3725 map_obj.map_data.map_tabs?.direction_tab?.dir_tab === true 3726 ) { 3727 $(map_obj.container).find(".start_point").val(place.address); 3728 $(map_obj.container).find(".start_point").data("longitude", place.location.lng); 3729 $(map_obj.container).find(".start_point").data("latitude", place.location.lat); 3730 } 3731 3732 // Cleanup 3733 $(map_obj.container).find(".wpgmp_extra_field:contains('wpgmp_empty')").remove(); 3734 $(map_obj.container).find(".wpgmp_empty").prev().remove(); 3735 $(map_obj.container).find(".wpgmp_empty").remove(); 3736 3737 // Dispatch marker click event for addons to hook into 3738 $(document).trigger("wpgmp_marker_clicked", [this, place]); 3739 3740 } 3741 create_element(controlDiv, map, html_element) { 3742 3743 // Set CSS for the control border 3744 controlDiv.className = 'wpgmp-control-outer'; 3745 var controlUI = document.createElement('div'); 3746 controlUI.className = 'wpgmp-control-inner'; 3747 controlDiv.appendChild(controlUI); 3748 3749 // Set CSS for the control interior 3750 var controlText = document.createElement('div'); 3751 controlText.className = 'wpgmp-control-content'; 3752 controlText.innerHTML = html_element; 3753 controlUI.appendChild(controlText); 3754 3755 } 3756 // ----------------------------- 3757 // ð Templates & Rendering 3758 // ----------------------------- 3759 renderCategories(template, data) { 3760 let rendered = template; 3761 3762 // Handle the case where parent categories do not exist 3763 if (!data || data.length === 0) { 3764 rendered = rendered.replace( 3765 /\{#each parent_categories\}[\s\S]+?\{\/parent_categories\}/g, 3766 "No categories available." 3767 ); 3768 return rendered; 3769 } 3770 3771 // Replace the each block for parent and child categories 3772 const parentPattern = 3773 /\{#each parent_categories\}([\s\S]+?)\{\/parent_categories\}/g; 3774 rendered = rendered.replace( 3775 parentPattern, 3776 function (match, parentTemplate) { 3777 let result = ""; 3778 3779 data.forEach((parentCategory) => {
3780 let parentHTML = parentTemplate; 3781 // Replace placeholders for parent category 3782 parentHTML = parentHTML.replace( 3783 /\{parent_id\}/g, 3784 parentCategory.parent_id || "" 3785 ); 3786 parentHTML = parentHTML.replace( 3787 /\{child_list\}/g, 3788 parentCategory.child_list || "" 3789 ); 3790 parentHTML = parentHTML.replace( 3791 /\{parent_category\}/g, 3792 parentCategory.parent_category || "Unknown Category" 3793 ); 3794 3795 // Handle child categories 3796 let childPattern = 3797 /\{#each child_categories\}([\s\S]+?)\{\/child_categories\}/g; 3798 3799 if ( 3800 parentCategory.child_categories && 3801 parentCategory.child_categories.length > 0 3802 ) { 3803 parentHTML = parentHTML.replace( 3804 childPattern, 3805 function (childMatch, childTemplate) { 3806 let childResult = ""; 3807 parentCategory.child_categories.forEach((child) => { 3808 let childTemp = childTemplate; 3809 childTemp = childTemp.replace( 3810 /\{child_id\}/g, 3811 child.child_id || "" 3812 ); 3813 childTemp = childTemp.replace( 3814 /\{child_category\}/g, 3815 child.child_category || "Unknown Child Category" 3816 ); 3817 childResult += childTemp; 3818 }); 3819 return childResult; 3820 } 3821 ); 3822 } else { 3823 // If no child categories exist, remove the entire child category box 3824 parentHTML = parentHTML.replace(childPattern, ""); 3825 } 3826 3827 result += parentHTML; 3828 }); 3829 3830 return result; 3831 } 3832 ); 3833 3834 return rendered; 3835 } 3836 renderTemplate(template, data) { 3837 var rendered = template; 3838 3839 // Handle if-else condition outside of each loop 3840 var ifPattern = /\{#if (\w+)\}([\s\S]+?)\{else\}([\s\S]+?)\{\/if\}/g; 3841 rendered = rendered.replace( 3842 ifPattern, 3843 function (ifMatch, ifKey, ifTrue, ifFalse) { 3844 return data[ifKey] ? ifTrue : ifFalse; 3845 } 3846 ); 3847 3848 var ifSimplePattern = /\{#if (\w+)\}([\s\S]+?)\{\/if\}/g; 3849 rendered = rendered.replace( 3850 ifSimplePattern, 3851 function (ifMatch, ifKey, ifTrue) { 3852 return data[ifKey] ? ifTrue : ""; 3853 } 3854 ); 3855 3856 // Replace the each block for all_filters 3857 var eachPattern = /\{#each all_filters\}([\s\S]+?)\{\/all_filters\}/g; 3858 rendered = rendered.replace(eachPattern, function (match, p2) { 3859 var result = ""; 3860 3861 var allFilters = data["all_filters"]; 3862 3863 // Iterate over all filters (facility, bathrooms, etc.) 3864 for (var filterName in allFilters) { 3865 var filterData = allFilters[filterName]; 3866 3867 var firstKey = Object.keys(filterData)[0]; // Gets the first key 3868 var filterLabel = filterData[firstKey].label; // Gets the corresponding value 3869 3870 var filterTemplate = p2; 3871 3872 // Replace {filter_name} with the filter key (e.g., facility, bathrooms) 3873 filterTemplate = filterTemplate.replace( 3874 /\{filter_name\}/g, 3875 filterName 3876 ); 3877 filterTemplate = filterTemplate.replace( 3878 /\{filter_label\}/g, 3879 filterLabel 3880 ); 3881 3882 // Now handle the inner {#each filter} loop for options 3883 var innerEachPattern = /\{#each filter\}([\s\S]+?)\{\/filter\}/g; 3884 filterTemplate = filterTemplate.replace( 3885 innerEachPattern, 3886 function (innerMatch, innerP2) { 3887 var innerResult = ""; 3888 3889 for (var key in filterData) { 3890 var option = { 3891 id: key.toLowerCase(), 3892 name: filterData[key].name, 3893 label: filterData[key].label, 3894 }; 3895 3896 if (filterName != "category") { 3897 option.id = filterData[key].id; 3898 } 3899 3900 var optionTemplate = innerP2; 3901 3902 // Replace the placeholders {id} and {name} 3903 optionTemplate = optionTemplate.replace(/\{id\}/g, option.id); 3904 3905 optionTemplate = optionTemplate.replace( 3906 /\{name\}/g, 3907 option.name 3908 ); 3909 3910 innerResult += optionTemplate; 3911 } 3912 return innerResult; 3913 } 3914 ); 3915 3916 result += filterTemplate; 3917 } 3918 3919 return result; 3920 }); 3921 3922 var eachPattern = /\{#each ([\w%_-]+)\}([\s\S]+?)\{\/\1\}/g; // Updated to allow dashes 3923 rendered = rendered.replace(eachPattern, function (match, p1, p2) { 3924 var items = data[p1]; 3925 var result = ""; 3926 3927 if ( 3928 typeof items === "object" && 3929 items !== null && 3930 !Array.isArray(items) 3931 ) { 3932 for (var key in items) { 3933 var item; 3934 if (p1 == "routes") { 3935 item = { 3936 id: key.toLowerCase(), 3937 name: items[key][0], 3938 color: items[key][1], 3939 }; 3940 } else { 3941 item = { id: key.toLowerCase(), name: items[key] }; 3942 } 3943 3944 var itemTemplate = p2; 3945 3946 // Handle if-else condition inside each loop 3947 itemTemplate = itemTemplate.replace( 3948 ifPattern, 3949 function (ifMatch, ifKey, ifTrue, ifFalse) { 3950 return item[ifKey] ? ifTrue : ifFalse; 3951 } 3952 ); 3953 3954 itemTemplate = itemTemplate.replace( 3955 ifSimplePattern, 3956 function (ifMatch, ifKey, ifTrue) { 3957 return item[ifKey] ? ifTrue : ""; 3958 } 3959 ); 3960 3961 // Replace the placeholders within each item 3962 for (var fieldKey in item) { 3963 itemTemplate = itemTemplate.replace( 3964 new RegExp("\\{" + fieldKey + "\\}", "g"), 3965 item[fieldKey] 3966 ); // Escape braces 3967 } 3968 result += itemTemplate; 3969 } 3970 } 3971 3972 return result; 3973 }); 3974 3975 // Replace the placeholders outside the each block 3976 for (var key in data) { 3977 if (!Array.isArray(data[key]) && typeof data[key] === "object") { 3978 // Skip objects being handled within each block 3979 continue; 3980 } 3981 rendered = rendered.replace( 3982 new RegExp("\\{" + key + "\\}", "g"), 3983 data[key] 3984 ); // Escape braces 3985 } 3986 3987 return rendered; 3988 } 3989 3990 create_filters() { 3991 var map_obj = this; 3992 var options = ""; 3993 var filters = {}; 3994 var places = this.map_data.places; 3995 var wpgmp_listing_filter = this.map_data.listing; 3996 var wpgmp_alltfilter = wpgmp_listing_filter.display_taxonomies_all_filter; 3997 3998 $.each(places, function (index, place) { 3999 if (typeof place.categories == "undefined") { 4000 place.categories = {}; 4001 } 4002 $.each(place.categories, function (cat_index, category) { 4003 if (typeof filters[category.type] == "undefined") { 4004 filters[category.type] = {}; 4005 } 4006 4007 if (category.name) { 4008 if ( 4009 category.extension_fields && 4010 category.extension_fields.cat_order 4011 ) { 4012 filters[category.type][category.name] = { 4013 id: category.id, 4014 order: category.extension_fields.cat_order, 4015 name: category.name, 4016 }; 4017 } else { 4018 filters[category.type][category.name] = { 4019 id: category.id, 4020 order: 0, 4021 name: category.name, 4022 }; 4023 } 4024 } 4025 }); 4026 }); 4027 // now create select boxes 4028 4029 var content = "", 4030 by = "name", 4031 type = "", 4032 inorder = "asc"; 4033 4034 if (map_obj.map_data.listing) { 4035 if (map_obj.map_data.listing.default_sorting) { 4036 if (map_obj.map_data.listing.default_sorting.orderby == "listorder") { 4037 by = "order"; 4038 type = "num"; 4039 inorder = map_obj.map_data.listing.default_sorting.inorder; 4040 } 4041 inorder = map_obj.map_data.listing.default_sorting.inorder; 4042 } 4043 } 4044 4045 if ( 4046 map_obj.map_data.checkbox_filter_addon_enable != undefined && 4047 map_obj.map_data.checkbox_filter_addon_enable == true 4048 ) { 4049 $.each(filters, function (index, options) { 4050 if ( 4051 wpgmp_listing_filter.display_category_filter === true && 4052 index == "category" 4053 ) { 4054 content += '<div class="wpgmp_filters_checklist">'; 4055 content += 4056 '<label data-filter = "place_' + 4057 index + 4058 '" >Select ' + 4059 index + 4060 "</label>"; 4061 options = map_obj.sort_object_by_keyvalue( 4062 options, 4063 by, 4064 type, 4065 inorder 4066 ); 4067 $.each(options, function (name, value) { 4068 if (value != "" && value != null) 4069 content += 4070 "<input data-filter='checklist' type='checkbox' data-name = 'category' value='" + 4071 value.id + 4072 "'><span class='wpgmp_checklist_title'>" + 4073 value.name + 4074 "</span>"; 4075 }); 4076 content += "</div>"; 4077 } else if (wpgmp_listing_filter.display_taxonomies_filter === true) { 4078 if (wpgmp_alltfilter === null) return false;
4079 4080 if (wpgmp_alltfilter.indexOf(index) > -1) { 4081 content += '<div class="wpgmp_filters_checklist">'; 4082 content += 4083 '<label data-filter = "place_' + 4084 index + 4085 '" >Select ' + 4086 index + 4087 "</label>"; 4088 4089 $.each(options, function (name, value) { 4090 if (value != "" && value != null) 4091 content += 4092 "<input data-filter='checklist' type='checkbox' data-name = 'category' value='" + 4093 value.id + 4094 "'><span class='wpgmp_checklist_title'>" + 4095 value.name + 4096 "</span>"; 4097 }); 4098 content += "</div>"; 4099 } 4100 } 4101 }); 4102 } else { 4103 $.each(filters, function (index, options) { 4104 if ( 4105 wpgmp_listing_filter.display_category_filter === true && 4106 index == "category" 4107 ) { 4108 if (map_obj.map_data.map_options.select_category) { 4109 wpgmp_local.select_category = map_obj.map_data.map_options.select_category; 4110 } 4111 content += 4112 '<select data-wpgmp-filter="true" data-wpgmp-map-id="'+map_obj.map_data.map_property.map_id+'" data-wpgmp-filter-by="category" data-filter="dropdown" data-name="category" name="place_' + 4113 index + 4114 '">'; 4115 content += 4116 '<option value="">' + wpgmp_local.select_category + "</option>"; 4117 options = map_obj.sort_object_by_keyvalue( 4118 options, 4119 by, 4120 type, 4121 inorder 4122 ); 4123 $.each(options, function (name, value) { 4124 content += 4125 "<option value='" + value.id + "'>" + value.name + "</option>"; 4126 }); 4127 content += "</select>"; 4128 } else if (wpgmp_listing_filter.display_taxonomies_filter === true) { 4129 if (wpgmp_alltfilter === null) return false; 4130 4131 if (wpgmp_alltfilter.indexOf(index) > -1) { 4132 content += 4133 '<select data-filter="dropdown" data-name="category" name="place_' + 4134 index + 4135 '">'; 4136 content += '<option value="">Select ' + index + "</option>"; 4137 $.each(options, function (name, value) { 4138 content += 4139 "<option value='" + value + "'>" + name + "</option>"; 4140 }); 4141 content += "</select>"; 4142 } 4143 } 4144 }); 4145 } 4146 4147 if (map_obj.map_data.map_options.advance_template) { 4148 if (!map_obj.template_data) { 4149 map_obj.template_data = {}; // Ensure template_data exists 4150 } 4151 if (!Array.isArray(map_obj.template_data.filter)) { 4152 map_obj.template_data.filter = []; // Ensure filter is an array 4153 } 4154 map_obj.template_data.filter.push(filters); 4155 } 4156 4157 return content; 4158 } 4159 4160 update_places_listing() { 4161 var map_obj = this; 4162 4163 if (map_obj.per_page_value > 0) 4164 map_obj.per_page_value = map_obj.per_page_value; 4165 else 4166 map_obj.per_page_value = 4167 map_obj.map_data.listing.pagination.listing_per_page; 4168 4169 $(map_obj.container) 4170 .find(".location_pagination" + map_obj.map_data.map_property.map_id) 4171 .pagination(map_obj.show_places.length, { 4172 callback: map_obj.display_places_listing, 4173 map_data: map_obj, 4174 items_per_page: map_obj.per_page_value, 4175 prev_text: wpgmp_local.prev, 4176 next_text: wpgmp_local.next, 4177 }); 4178 } 4179 4180 display_filters_listing() { 4181 if (this.map_data.listing) { 4182 var hide_locations = this.map_data.listing.hide_locations; 4183 4184 var wpgmpgl = this.map_data.listing.list_grid; 4185 4186 if (hide_locations != true) { 4187 var content = '<div class="wpgmp_listing_container">'; 4188 4189 content += 4190 "<div class='wpgmp_categories wpgmp_print_listing " + 4191 wpgmpgl + 4192 "' data-container='wpgmp-listing-" + 4193 $(this.element).attr("id") + 4194 "'></div>"; 4195 4196 content += "</div>"; 4197 $(this.map_data.listing.listing_container).html(content); 4198 } 4199 } 4200 } 4201 4202 display_filters() { 4203 var hide_locations = this.map_data.listing.hide_locations; 4204 var listing_header = this.map_data.listing.listing_header; 4205 var content = ""; 4206 if (listing_header != undefined) { 4207 content += 4208 '<div class="wpgmp_before_listing">' + 4209 this.map_data.listing.listing_header + 4210 "</div>"; 4211 } 4212 if (this.map_data.listing.display_search_form === true) { 4213 var autosuggest_class = ""; 4214 4215 if (this.map_data.listing.search_field_autosuggest === true) { 4216 autosuggest_class = "wpgmp_auto_suggest"; 4217 } 4218 4219 if (this.map_data.map_options.search_placeholder) { 4220 wpgmp_local.search_placeholder = this.map_data.map_options.search_placeholder; 4221 } 4222 4223 content += 4224 '<div class="wpgmp_listing_header">
4224<div class="wpgmp_search_form"><input type="text" rel="24" data-input="wpgmp-search-text" name="wpgmp_search_input" class="wpgmp_search_input ' + 4225 autosuggest_class + 4226 '" placeholder="' + 4227 wpgmp_local.search_placeholder + 4228 '">'; 4229 if(!this.settings.is_mobile){ 4230 content += " " + this.create_radius() + " "; 4231 } 4232 4233 content += '</div></div>'; 4234 } 4235 4236 let radius_html = ''; 4237 4238 if (this.settings.is_mobile) { 4239 radius_html = this.create_radius(); 4240 } 4241 4242 content += 4243 '<div class="categories_filter">' + 4244 radius_html + 4245 this.create_filters() + 4246 '<div data-container="wpgmp-filters-container"></div>'; 4247 4248 if (hide_locations != true) content += this.create_sorting() + ""; 4249 4250 if ( 4251 hide_locations != true && 4252 this.map_data.listing.display_location_per_page_filter === true 4253 ) { 4254 content += " " + this.create_perpage_option() + " "; 4255 } 4256 4257 if ( 4258 hide_locations != true && 4259 this.map_data.listing.display_print_option === true 4260 ) { 4261 content += " " + wpgmp_local.img_print; 4262 } 4263 4264 if ( 4265 hide_locations != true && 4266 this.map_data.listing.display_grid_option === true 4267 ) { 4268 content += " " + wpgmp_local.img_grid + wpgmp_local.img_list; 4269 } 4270 4271 if ( 4272 typeof this.map_data.map_options.display_reset_button != "undefined" && 4273 this.map_data.map_options.display_reset_button === true 4274 ) { 4275 content += 4276 '<div class="categories_filter_reset"><input type="button" class="categories_filter_reset_btn" name="categories_filter_reset_btn" value="' + 4277 this.map_data.map_options.map_reset_button_text + 4278 '"></div>'; 4279 } 4280 4281 content += "</div>"; 4282 4283 return content; 4284 } 4285 4286 set_icon_marker(place, iconUrl, iconSize = [32, 32]) { 4287 if (!place || !place.marker || !iconUrl) return; 4288 4289 const isGoogle = this.isMapProvider('google'); 4290 const isSvg = iconUrl.toLowerCase().includes('image/svg') || iconUrl.toLowerCase().endsWith('.svg'); 4291 4292 if (isGoogle) { 4293 // Google Maps: uses scaledSize and url object 4294 const icon = { url: iconUrl }; 4295 4296 if (isSvg) { 4297 icon.scaledSize = new google.maps.Size(iconSize[0], iconSize[1]); 4298 } 4299 4300 place.marker.setIcon(icon); 4301 4302 4303 } else { 4304 const icon = { url: iconUrl }; 4305 4306 if (isSvg) { 4307 icon.scaledSize = [iconSize[0], iconSize[1]]; 4308 } 4309 4310 place.marker.setIcon(icon); 4311 4312 } 4313 } 4314 4315 4316 display_places_listing(page_index, jq) { 4317 var content = ""; 4318 var map_obj = this; 4319 var category_selector_dropdown = $('select[name = "place_category"]'); 4320 var items_per_page = 10; 4321 if (map_obj.items_per_page) items_per_page = map_obj.items_per_page; 4322 else 4323 items_per_page = 4324 map_obj.map_data.map_data.listing.pagination.listing_per_page; 4325 4326 if ($.isFunction($.fn.locationSortByDistance)) { 4327 var distance_image = 4328 map_obj.map_data.map_data.plugin_url + 4329 "assets/images/location-icon.png"; 4330 if ( 4331 ($("#search_location_autocomplete").val() != "" && 4332 map_obj.map_data.is_place_changed) || 4333 map_obj.map_data.is_location_allowed 4334 ) { 4335 map_obj.map_data.show_places = 4336 map_obj.map_data.sorted_locations_by_search; 4337 } 4338 } 4339 4340 var data_source = map_obj.map_data.show_places; 4341 4342 var listing_container = 4343 map_obj.map_data.map_data.listing.listing_container; 4344 4345 var listing_placeholder = 4346 map_obj.map_data.map_data.listing.listing_placeholder; 4347 4348 var max_elem = Math.min( 4349 (page_index + 1) * items_per_page, 4350 data_source.length 4351 ); 4352 var link = ""; 4353 var onclick_action = ""; 4354 if (max_elem > 0) { 4355 for (var i = page_index * items_per_page; i < max_elem; i++) { 4356 var place = data_source[i]; 4357 var temp_listing_placeholder = listing_placeholder; 4358 if (place.marker.getVisible() === true) { 4359 if (place.id) { 4360 if (place.location.onclick_action == "marker") { 4361 link = 4362 '<a href="javascript:void(0);" class="place_title" data-zoom="' + 4363 place.location.zoom + 4364 '" data-marker="' + 4365 place.id + 4366 '" >' + 4367 place.title + 4368 "</a>"; 4369 onclick_action = 4370 'href="javascript:void(0);" data-zoom="' + 4371 place.location.zoom + 4372 '" data-marker="' + 4373 place.id + 4374 '"'; 4375 } else if (place.location.onclick_action == "post") { 4376 link = 4377 '<a href="' + 4378 place.location.redirect_permalink + 4379 '" target="_blank">' + 4380 place.title + 4381 "</a>"; 4382 onclick_action = 4383 'href="' + 4384 place.location.redirect_permalink + 4385 '" target="_blank"'; 4386 } else if (place.location.onclick_action == "custom_link") { 4387 link = 4388 '<a href="' + 4389 place.location.redirect_custom_link + 4390 '" target="_blank">' + 4391 place.title + 4392 "</a>"; 4393 onclick_action = 4394 'href="' + 4395 place.location.redirect_custom_link + 4396 '" target="_blank"'; 4397 } else { 4398 link = 4399 '<a href="javascript:void(0);" class="place_title" data-zoom="' + 4400 place.location.zoom + 4401 '" data-marker="' + 4402 place.id + 4403 '" >' + 4404 place.title + 4405 "</a>"; 4406 onclick_action = 4407 'href="javascript:void(0);" data-zoom="' + 4408 place.location.zoom + 4409 '" data-marker="' + 4410 place.id + 4411 '"'; 4412 } 4413 } 4414 4415 var image = []; 4416 var category_name = []; 4417 var wpgmp_arr = {}; 4418 4419 if (place.categories) { 4420 for (var c = 0; c < place.categories.length; c++) { 4421 if (place.categories[c].icon !== "") { 4422 image.push( 4423 "<img title='" + 4424 place.categories[c].name + 4425 "' alt='" + 4426 place.categories[c].name + 4427 "' src='" + 4428 place.categories[c].icon + 4429 "' />" 4430 ); 4431 } 4432 4433 if ( 4434 place.categories[c].type == "category" && 4435 place.categories[c].name != "" 4436 ) { 4437 if ( 4438 map_obj.map_data.map_data.map_options.advance_template == 4439 true 4440 ) { 4441 category_name.push( 4442 '<span class="wep-chip">' + 4443 place.categories[c].name + 4444 "</span>" 4445 ); 4446 } else { 4447 category_name.push('<div class="fc-badge">'+place.categories[c].name+'</div>'); 4448 } 4449 } 4450 4451 if (place.categories[c].type != "category") { 4452 if (typeof place.categories[c].name == "undefined") continue; 4453 4454 if (place.categories[c].name) var sep = ","; 4455 4456 if (typeof wpgmp_arr[place.categories[c].type] == "undefined") 4457 wpgmp_arr[place.categories[c].type] = ""; 4458 4459 wpgmp_arr[place.categories[c].type] += 4460 place.categories[c].name + sep; 4461 } 4462 } 4463 } 4464 4465 var marker_image = ""; 4466 4467 if (place.source == "post") { 4468 marker_image = place.location.extra_fields.post_featured_image; 4469 } else { 4470 marker_image = place.location.marker_image; 4471 } 4472 4473 category_name = category_name.join(""); 4474 4475 var replaceData = { 4476 "{marker_id}": place.id, 4477 "{marker_title}": link, 4478 "{marker_address}": place.address, 4479 "{marker_latitude}": place.location.lat, 4480 "{marker_longitude}": place.location.lng, 4481 "{marker_city}": place.location.city, 4482 "{marker_state}": place.location.state, 4483 "{marker_country}": place.location.country, 4484 "{marker_postal_code}": place.location.postal_code, 4485 "{marker_zoom}": place.location.zoom, 4486 "{marker_icon}": image, 4487 "{marker_category}": category_name, 4488 "{marker_message}": place.content, 4489 "{marker_image}": marker_image, 4490 "{marker_featured_image}": marker_image, 4491 "{wpgmp_listing_html}": place.listing_hook, 4492 "{onclick_action}
4492": onclick_action, 4493 "{distance}": "", 4494 "{get_directions_link}": 4495 "http://www.google.com/maps/place/" + 4496 parseFloat(place.location.lat) + 4497 "," + 4498 parseFloat(place.location.lng), 4499 }; 4500 4501 if ($.isFunction($.fn.locationSortByDistance)) { 4502 if ( 4503 typeof place.distance !== "undefined" && 4504 place.distance !== null && 4505 place.distance !== "NaN" 4506 ) { 4507 var dimension = 4508 map_obj.map_data.map_data.listing.radius_dimension; 4509 if (dimension == "km") { 4510 if ((place.distance / 1000).toFixed(2) != "NaN") { 4511 place.distance = (place.distance / 1000).toFixed(2) + " Km"; 4512 place.location.extra_fields.distance = 4513 '<img width="21px" height="26px" src="' + 4514 distance_image + 4515 '" style="width: 21px!important;height: 26px!important;margin-right: 3px!important;margin-top: 0px!important;"><span class="distance_calculate">' + 4516 place.distance + 4517 "</span>"; 4518 } 4519 } else { 4520 if ((place.distance / 1000).toFixed(2) != "NaN") { 4521 place.distance = (place.distance / 1000).toFixed(2); 4522 place.distance = 4523 (place.distance / 1.6).toFixed(2) + " Miles"; 4524 place.location.extra_fields.distance = 4525 '<img width="21px" height="26px" src="' + 4526 distance_image + 4527 '" style="width: 21px!important;height: 26px!important;margin-right: 3px!important;margin-top: 0px!important;"><span class="distance_calculate">' + 4528 place.distance + 4529 "</span>"; 4530 } 4531 } 4532 } 4533 } 4534 4535 //Add extra fields of locations 4536 if (typeof place.location.extra_fields != "undefined") { 4537 for (var extra in place.location.extra_fields) { 4538 if (!place.location.extra_fields[extra]) { 4539 replaceData["{" + extra + "}"] = 4540 "<div class='wpgmp_empty'>wpgmp_empty</div>"; 4541 } else { 4542 replaceData["{" + extra + "}"] = 4543 place.location.extra_fields[extra]; 4544 } 4545 } 4546 } 4547 4548 temp_listing_placeholder = temp_listing_placeholder.replace( 4549 /{#if (.*?)}([\s\S]*?){\/if}/g, 4550 function (match, p1, p2) { 4551 const key = "{" + p1 + "}"; 4552 const value = replaceData[key]; 4553 return value && 4554 value !== "<div class='wpgmp_empty'>wpgmp_empty</div>" 4555 ? p2 4556 : ""; 4557 } 4558 ); 4559 4560 if ( 4561 map_obj.map_data.map_data.map_options.link_extra_field != 4562 undefined && 4563 map_obj.map_data.map_data.map_options.link_extra_field != "" 4564 ) { 4565 var anchor_tag = 4566 map_obj.map_data.map_data.map_options.link_extra_field; 4567 for (var prop_an in anchor_tag) { 4568 if ( 4569 replaceData[prop_an] != 4570 "<div class='wpgmp_empty'>wpgmp_empty</div>" && 4571 prop_an != "" 4572 ) { 4573 temp_listing_placeholder = temp_listing_placeholder.replace( 4574 prop_an, 4575 anchor_tag[prop_an] 4576 ); 4577 } 4578 } 4579 } 4580 4581 for (var prop in replaceData) { 4582 if ( 4583 replaceData[prop] == undefined || 4584 replaceData[prop] == "undefined" 4585 ) 4586 replaceData[prop] = ""; 4587 } 4588 4589 if (wpgmp_arr) { 4590 for (var n in wpgmp_arr) { 4591 replaceData["{" + n + "}"] = wpgmp_remove_last_comma( 4592 wpgmp_arr[n] 4593 ); 4594 } 4595 } 4596 4597 var wpgmp_remove_last_comma = function (strng) { 4598 var n = strng.lastIndexOf(","); 4599 var a = strng.substring(0, n); 4600 return a; 4601 }; 4602 4603 temp_listing_placeholder = temp_listing_placeholder.replace( 4604 /{[^{}]+}/g, 4605 function (match) { 4606 if (match in replaceData) { 4607 return replaceData[match]; 4608 } else { 4609 return ""; 4610 } 4611 } 4612 ); 4613 4614 content += temp_listing_placeholder; 4615 } 4616 } 4617 } else { 4618 content = 4619 "<div class='wpgmp_no_locations'>" + 4620 wpgmp_local.wpgmp_location_no_results + 4621 "</div>"; 4622 } 4623 4624 for (var j = 0; j < data_source.length; j++) { 4625 place = data_source[j]; 4626 if ( 4627 typeof place.categories.length !== undefined && 4628 place.categories.length > 1 4629 ) { 4630 var iconSize = map_obj.map_data.getMarkerSize(); 4631 if (category_selector_dropdown.val() !== "") { 4632 if (place.categories) { 4633 for (var c = 0; c < place.categories.length; c++) { 4634 if ( 4635 category_selector_dropdown.val() == place.categories[c].id 4636 ) { 4637 4638 map_obj.map_data.set_icon_marker(place, place.categories[c].icon,iconSize); 4639 4640 break; 4641 } 4642 } 4643 } 4644 } else { 4645 4646 map_obj.map_data.set_icon_marker(place, place.location.icon,iconSize); 4647 4648 } 4649 } 4650 } 4651 4652 // content += '<div id="wpgmp_pagination"></div>'; 4653 4654 if (map_obj.map_data.map_data.map_options.advance_template === true) { 4655 var $listingElement = $(document).find( 4656 '[data-listing-content="true"][data-wpgmp-map-id]' 4657 ); 4658 var allClasses = $listingElement.attr("class").split(" "); 4659 listing_container = "." + allClasses[0]; 4660 $(listing_container).html(content); 4661 } else { 4662 content =
4663 '<div class="fc-' + 4664 map_obj.map_data.map_data.listing.list_item_skin.type + 4665 "-" + 4666 map_obj.map_data.map_data.listing.list_item_skin.name + 4667 ' fc-wait"><div data-page="2" class="fc-component-6" data-layout="' + 4668 map_obj.map_data.map_data.listing.list_item_skin.name + 4669 '" >' + 4670 content + 4671 "</div></div>"; 4672 $(listing_container).find(".wpgmp_categories").html(content); 4673 } 4674 4675 $(listing_container) 4676 .find(".wpgmp_extra_field:contains('wpgmp_empty')") 4677 .remove(); 4678 $(listing_container).find(".wpgmp_empty").prev().remove(); 4679 $(listing_container).find(".wpgmp_empty").remove(); 4680 4681 if (map_obj.map_data.map_data.listing.list_grid == "wpgmp_listing_grid") { 4682 $(window).on("load", function () { 4683 try { 4684 var container = $(listing_container).find(".wpgmp_listing_grid"); 4685 if (container.length) { 4686 var msnry = container.data("masonry"); 4687 if (msnry) { 4688 msnry.destroy(); 4689 } 4690 4691 container.imagesLoaded(function () { 4692 // init Masonry after all images have loaded 4693 container.masonry({ 4694 itemSelector: ".wpgmp_locations", 4695 columnWidth: ".wpgmp_locations", 4696 percentPosition: true, 4697 }); 4698 4699 // Now safe to call reload 4700 container.masonry("layout"); 4701 }); 4702 4703 } 4704 } catch (err) { 4705 console.log(err); 4706 } 4707 }); 4708 } 4709 return false; 4710 } 4711 // ----------------------------- 4712 // ð Filters & Listings 4713 // ----------------------------- 4714 apply_filters() { 4715 var map_obj = this; 4716 var filters = map_obj.filters; 4717 var showAll = true; 4718 var show = true; 4719 map_obj.show_places = []; 4720 // Filter by search box. 4721 if ($.isFunction($.fn.locationSortByDistance)) { 4722 map_obj.sorted_locations_by_search = []; 4723 } else { 4724 if ( 4725 $(map_obj.container).find('[data-input="wpgmp-search-text"]').length > 4726 0 4727 ) { 4728 map_obj.search_term = $(map_obj.container) 4729 .find('[data-input="wpgmp-search-text"]') 4730 .val() 4731 .trim(); 4732 4733 if (map_obj.search_term.length > 0) { 4734 map_obj.search_term = map_obj.search_term.toLowerCase(); 4735 map_obj.enable_search_term = true; 4736 } 4737 } 4738 } 4739 4740 if ( 4741 (map_obj.map_data.map_tabs && 4742 map_obj.map_data.map_tabs.category_tab && 4743 map_obj.map_data.map_tabs.category_tab.cat_tab === true) || 4744 $(map_obj.container).find("input[data-marker-category]").length > 0 4745 ) { 4746 var all_selected_category_sel = $(map_obj.container).find( 4747 "input[data-marker-category]:checked" 4748 ); 4749 var all_selected_category = []; 4750 var all_not_selected_location = []; 4751 if (all_selected_category_sel.length > 0) { 4752 $.each( 4753 all_selected_category_sel, 4754 function (index, selected_category) { 4755 all_selected_category.push( 4756 $(selected_category).data("marker-category") 4757 ); 4758 var all_not_selected_location_sel = $(selected_category) 4759 .closest('[data-container="wpgmp-category-tab-item"]') 4760 .find("input[data-marker-location]:not(:checked)"); 4761 if (all_not_selected_location_sel.length > 0) { 4762 $.each( 4763 all_not_selected_location_sel, 4764 function (index, not_selected_location) { 4765 all_not_selected_location.push( 4766 $(not_selected_location).data("marker-location") 4767 ); 4768 } 4769 ); 4770 } 4771 } 4772 ); 4773 } 4774 var all_selected_location_sel = $(map_obj.container) 4775 .find('[data-container="wpgmp-category-tab-item"]') 4776 .find("input[data-marker-location]:checked"); 4777 var all_selected_location = []; 4778 if (all_selected_location_sel.length > 0) { 4779 $.each( 4780 all_selected_location_sel, 4781 function (index, selected_location) { 4782 all_selected_location.push( 4783 $(selected_location).data("marker-location") 4784 ); 4785 } 4786 ); 4787 } 4788 } 4789 4790 if (typeof map_obj.map_data.places != "undefined") { 4791 $.each(map_obj.map_data.places, function (place_key, place) { 4792 show = true; 4793 if (typeof filters != "undefined") { 4794 $.each(filters, function (filter_key, filter_values) { 4795 var in_fields = false;
4796 4797 if ($.isArray(filter_values)) { 4798 if ( 4799 typeof place.categories != "undefined" && 4800 filter_key == "category" 4801 ) { 4802 $.each(place.categories, function (cat_index, category) { 4803 if ($.inArray(category.id, filter_values) > -1) { 4804 in_fields = true; 4805 } 4806 }); 4807 } 4808 4809 if (typeof place.custom_filters != "undefined") { 4810 $.each(place.custom_filters, function (k, val) { 4811 if (filter_key == k) { 4812 in_fields = false; 4813 if ($.isArray(val)) { 4814 $.each(val, function (index, value) { 4815 if ($.inArray(value, filter_values) > -1) 4816 in_fields = true; 4817 }); 4818 } else if (val == filter_values.val) in_fields = true; 4819 } 4820 }); 4821 } 4822 4823 if (typeof place[filter_key] != "undefined") { 4824 if ( 4825 $.inArray(place[filter_key].toLowerCase(), filter_values) > 4826 -1 4827 ) { 4828 in_fields = true; 4829 } 4830 } else if (typeof place.location[filter_key] != "undefined") { 4831 if ( 4832 $.inArray( 4833 place.location[filter_key].toLowerCase(), 4834 filter_values 4835 ) > -1 4836 ) { 4837 in_fields = true; 4838 } 4839 } else if ( 4840 place.location.extra_fields && 4841 typeof place.location.extra_fields[filter_key] != "undefined" 4842 ) { 4843 var dropdown_value = filter_values[0]; 4844 4845 if (place.location.extra_fields[filter_key] != "") { 4846 var arrayResult = 4847 place.location.extra_fields[filter_key].split(","); 4848 4849 var trimmedArray = $.map(arrayResult, function (value) { 4850 return $.trim(value).toLowerCase(); 4851 }); 4852 } 4853 if (place.location.extra_fields[filter_key]) { 4854 var dropdown_val = 4855 place.location.extra_fields[filter_key].toLowerCase(); 4856 var dropdown_val_decoded = $("<div>") 4857 .html(dropdown_val) 4858 .text(); 4859 if ( 4860 dropdown_val && 4861 (dropdown_val.indexOf(dropdown_value) > -1 || 4862 dropdown_val_decoded.indexOf(dropdown_value) > -1) 4863 ) { 4864 in_fields = true; 4865 } else if ($.inArray(dropdown_val, filter_values) > -1) { 4866 in_fields = true; 4867 } else if ( 4868 trimmedArray != undefined && 4869 $.inArray(dropdown_value, trimmedArray) > -1 4870 ) { 4871 in_fields = true; 4872 } else if (Array.isArray(dropdown_value) && trimmedArray !== undefined && dropdown_value.some(value => trimmedArray.includes(value))) { 4873 in_fields = true; 4874 } 4875 } 4876 } 4877 4878 if (map_obj.addonInfo !== "") { 4879 $.each(map_obj.addonInfo, function (key, method) { 4880 var method_name = method.filtration_logic; 4881 4882 if ( 4883 typeof map_obj[method_name] !== "undefined" && 4884 $.isFunction(map_obj[method_name]) 4885 ) { 4886 in_fields = map_obj[method_name]( 4887 in_fields, 4888 place, 4889 filter_values, 4890 filter_key 4891 ); 4892 } 4893 }); 4894 } 4895 4896 if (in_fields == false) show = false; 4897 } else { 4898 filter_values.val = ""; 4899 } 4900 }); 4901 } 4902 4903 var search_fields = map_obj.map_data.map_options.search_fields; 4904 var exclude_fields = map_obj.map_data.map_options.exclude_fields; 4905 4906 if (Array.isArray(exclude_fields) && exclude_fields.length > 0) { 4907 if (exclude_fields.includes("{post_title}")) { 4908 if (!exclude_fields.includes("{post_link}")) { 4909 exclude_fields.push("{post_link}"); 4910 } 4911 if (!exclude_fields.includes("{marker_title}")) { 4912 exclude_fields.push("{marker_title}"); 4913 } 4914 } 4915 4916 if (exclude_fields.includes("{post_content}")) { 4917 if (!exclude_fields.includes("{post_excerpt}")) { 4918 exclude_fields.push("{post_excerpt}"); 4919 } 4920 if (!exclude_fields.includes("{marker_message}")) { 4921 exclude_fields.push("{marker_message}"); 4922 } 4923 } 4924 4925 if ( 4926 exclude_fields.includes("{post_excerpt}") && 4927 !exclude_fields.includes("{post_content}") 4928 ) { 4929 exclude_fields.push("{post_content}"); 4930 } 4931 4932 if ( 4933 exclude_fields.includes("{marker_address}") && 4934 !exclude_fields.includes("{%_wpgmp_location_address%}") 4935 ) { 4936 exclude_fields.push("{%_wpgmp_location_address%}"); 4937 } 4938 4939 if ( 4940 exclude_fields.includes("{marker_city}") && 4941 !exclude_fields.includes("{%_wpgmp_location_city%}") 4942 ) { 4943 exclude_fields.push("{%_wpgmp_location_city%}"); 4944 } 4945 4946 if ( 4947 exclude_fields.includes("{marker_country}") && 4948 !exclude_fields.includes("{%_wpgmp_location_country%}") 4949 ) { 4950 exclude_fields.push("{%_wpgmp_location_country%}"); 4951 } 4952 4953 if ( 4954 exclude_fields.includes("{marker_state}") && 4955 !exclude_fields.includes("{%_wpgmp_location_state%}") 4956 ) { 4957 exclude_fields.push("{%_wpgmp_location_state%}"); 4958 } 4959 4960 if ( 4961 exclude_fields.includes("{marker_longitude}") && 4962 !exclude_fields.includes("{%_wpgmp_metabox_longitude%}") 4963 ) { 4964 exclude_fields.push("{%_wpgmp_metabox_longitude%}"); 4965 } 4966 4967 if ( 4968 exclude_fields.includes("{marker_latitude}") && 4969 !exclude_fields.includes("{%_wpgmp_metabox_latitude%}") 4970 ) { 4971 exclude_fields.push("{%_wpgmp_metabox_latitude%}"); 4972 } 4973 } 4974 var extra_fields_array = place.location.extra_fields; 4975 var flag_search = false;
4976 var flag_exclude = false; 4977 4978 var search_exclude = {}; 4979 if ( 4980 typeof exclude_fields !== "undefined" && 4981 exclude_fields.length > 0 4982 ) { 4983 flag_exclude = true; 4984 search_exclude = Object.keys(extra_fields_array) 4985 .filter((key) => !exclude_fields.includes(`{${key}}`)) 4986 .reduce((obj, key) => { 4987 obj[key] = extra_fields_array[key]; 4988 return obj; 4989 }, {}); 4990 } 4991 //search with only these field 4992 var search_fields_present = []; 4993 if ( 4994 typeof search_fields !== "undefined" && 4995 search_fields.length > 0 4996 ) { 4997 flag_search = true; 4998 for (var i = 0; i < search_fields.length; i++) { 4999 if ( 5000 extra_fields_array.hasOwnProperty(search_fields[i].slice(1, -1)) 5001 ) { 5002 search_fields_present.push(search_fields[i]); 5003 } 5004 } 5005 } 5006 5007 //Apply Search Filter. 5008 var search_term = map_obj.search_term; 5009 if (search_term && search_term.length > 0) { 5010 if (map_obj.enable_search_term === true && show === true) { 5011 if (flag_search == true || flag_exclude == true) { 5012 if ( 5013 place.title != undefined && 5014 place.title.toLowerCase().indexOf(search_term) >= 0 && 5015 ((flag_search && search_fields.includes("{marker_title}")) || 5016 (flag_exclude && 5017 !exclude_fields.includes("{marker_title}"))) 5018 ) { 5019 show = true; 5020 } else if ( 5021 place.content != undefined && 5022 place.content.toLowerCase().indexOf(search_term) >= 0 && 5023 ((flag_search == true && 5024 search_fields.includes("{marker_message}")) || 5025 (flag_exclude == true && 5026 !exclude_fields.includes("{marker_message}"))) 5027 ) { 5028 show = true; 5029 } else if ( 5030 String(place.location.lat) 5031 .toLowerCase() 5032 .indexOf(search_term) >= 0 && 5033 ((flag_search == true && 5034 search_fields.includes("{marker_latitude}")) || 5035 (flag_exclude == true && 5036 !exclude_fields.includes("{marker_latitude}"))) 5037 ) { 5038 show = true; 5039 } else if ( 5040 String(place.location.lng) 5041 .toLowerCase() 5042 .indexOf(search_term) >= 0 && 5043 ((flag_search == true && 5044 search_fields.includes("{marker_longitude}")) || 5045 (flag_exclude == true && 5046 !exclude_fields.includes("{marker_longitude}"))) 5047 ) { 5048 show = true; 5049 } else if ( 5050 place.address && 5051 place.address.toString().toLowerCase().indexOf(search_term) >= 5052 0 && 5053 ((flag_search == true && 5054 search_fields.includes("{marker_address}")) || 5055 (flag_exclude == true && 5056 !exclude_fields.includes("{marker_address}"))) 5057 ) { 5058 show = true; 5059 } else if ( 5060 place.location.state && 5061 place.location.state.toLowerCase().indexOf(search_term) >= 5062 0 && 5063 ((flag_search == true && 5064 search_fields.includes("{marker_state}")) || 5065 (flag_exclude == true && 5066 !exclude_fields.includes("{marker_state}"))) 5067 ) { 5068 show = true; 5069 } else if ( 5070 place.location.country && 5071 place.location.country.toLowerCase().indexOf(search_term) >= 5072 0 && 5073 ((flag_search == true && 5074 search_fields.includes("{marker_country}")) || 5075 (flag_exclude == true && 5076 !exclude_fields.includes("{marker_country}"))) 5077 ) { 5078 show = true; 5079 } else if ( 5080 place.location.postal_code && 5081 String(place.location.postal_code) 5082 .toLowerCase() 5083 .indexOf(search_term) >= 0 && 5084 ((flag_search == true && 5085 search_fields.includes("{marker_postal_code}")) || 5086 (flag_exclude == true && 5087 !exclude_fields.includes("{marker_postal_code}"))) 5088 ) { 5089 show = true; 5090 } else if ( 5091 place.location.city && 5092 place.location.city.toLowerCase().indexOf(search_term) >= 0 && 5093 ((flag_search == true && 5094 search_fields.includes("{marker_city}")) || 5095 (flag_exclude == true && 5096 !exclude_fields.includes("{marker_city}"))) 5097 ) { 5098 show = true; 5099 } else if ( 5100 typeof map_obj.search_area != "undefined" && 5101 map_obj.search_area != "" && 5102 map_obj.wpgmp_within_radius(place, map_obj.search_area) === 5103 true 5104 ) { 5105 show = true; 5106 } else { 5107 show = false;
5108 } 5109 5110 if (flag_search == true) { 5111 if (search_fields_present.length > 0) { 5112 for (const field of search_fields_present) { 5113 if (typeof place.location.extra_fields != "undefined") { 5114 $.each( 5115 place.location.extra_fields, 5116 function (field, value) { 5117 if ( 5118 value && 5119 $.inArray( 5120 "{" + field + "}", 5121 search_fields_present 5122 ) !== -1 5123 ) { 5124 value = value.toString(); 5125 if ( 5126 value && 5127 value.toLowerCase().indexOf(search_term) >= 0 5128 ) 5129 show = true; 5130 } 5131 } 5132 ); 5133 } 5134 } 5135 } 5136 } else if (flag_exclude == true) { 5137 for (var field in search_exclude) { 5138 var value = search_exclude[field]; 5139 5140 if (value) { 5141 value = value.toString(); 5142 5143 if ( 5144 value && 5145 value.toLowerCase().indexOf(search_term) >= 0 5146 ) { 5147 show = true; 5148 } 5149 } 5150 } 5151 } 5152 } else { 5153 if ( 5154 place.title != undefined && 5155 place.title.toLowerCase().indexOf(search_term) >= 0 5156 ) { 5157 show = true; 5158 } else if ( 5159 place.content != undefined && 5160 place.content.toLowerCase().indexOf(search_term) >= 0 5161 ) { 5162 show = true; 5163 } else if ( 5164 String(place.location.lat) 5165 .toLowerCase() 5166 .indexOf(search_term) >= 0 5167 ) { 5168 show = true; 5169 } else if ( 5170 String(place.location.lng) 5171 .toLowerCase() 5172 .indexOf(search_term) >= 0 5173 ) { 5174 show = true; 5175 } else if ( 5176 place.address && 5177 place.address.toString().toLowerCase().indexOf(search_term) >= 5178 0 5179 ) { 5180 show = true; 5181 } else if ( 5182 place.location.state && 5183 place.location.state.toLowerCase().indexOf(search_term) >= 0 5184 ) { 5185 show = true; 5186 } else if ( 5187 place.location.country && 5188 place.location.country.toLowerCase().indexOf(search_term) >= 0 5189 ) { 5190 show = true; 5191 } else if ( 5192 place.location.postal_code && 5193 String(place.location.postal_code) 5194 .toLowerCase() 5195 .indexOf(search_term) >= 0 5196 ) { 5197 show = true; 5198 } else if ( 5199 place.location.city && 5200 place.location.city.toLowerCase().indexOf(search_term) >= 0 5201 ) { 5202 show = true; 5203 } else if ( 5204 typeof map_obj.search_area != "undefined" && 5205 map_obj.search_area != "" && 5206 map_obj.wpgmp_within_radius(place, map_obj.search_area) === 5207 true 5208 ) { 5209 show = true; 5210 } else { 5211 show = false; 5212 } 5213 5214 if (typeof place.location.extra_fields != "undefined") { 5215 $.each(place.location.extra_fields, function (field, value) { 5216 if (value) { 5217 value = value.toString(); 5218 if ( 5219 value && 5220 value.toLowerCase().indexOf(search_term) >= 0 5221 ) 5222 show = true; 5223 } 5224 }); 5225 } 5226 } 5227 } 5228 } 5229 5230 //Exclude locations without category if location filters are choosed by user 5231 if ( 5232 (place.categories.length == undefined || 5233 place.categories.length == "undefined") && 5234 all_selected_category && 5235 all_selected_category.length > 0 && 5236 $(map_obj.container) 5237 .find('input[name="wpgmp_select_all"]') 5238 .is(":checked") == false && 5239 show 5240 ) { 5241 show = false;
5242 } 5243 5244 // if checked category 5245 if ( 5246 all_selected_category && 5247 show != false && 5248 place.categories.length != undefined 5249 ) { 5250 var in_checked_category = false; 5251 5252 if (all_selected_category.length === 0) { 5253 // means no any category selected so show those location without categories. 5254 if (typeof place.categories != "undefined") { 5255 $.each(place.categories, function (cat_index, category) { 5256 if (category.id === "") in_checked_category = true; 5257 }); 5258 } 5259 } else { 5260 if (typeof place.categories != "undefined") { 5261 $.each(place.categories, function (cat_index, category) { 5262 if (category.id === "") in_checked_category = true; 5263 else if ( 5264 $.inArray(parseInt(category.id), all_selected_category) > -1 5265 ) { 5266 in_checked_category = true; 5267 var iconSize = map_obj.getMarkerSize(); 5268 map_obj.set_icon_marker(place, category.icon,iconSize); 5269 5270 } 5271 }); 5272 } 5273 } 5274 5275 //Hide unchecked locations. 5276 if (all_not_selected_location.length !== 0) { 5277 if ( 5278 $.inArray(parseInt(place.id), all_not_selected_location) > -1 5279 ) { 5280 in_checked_category = false; 5281 } 5282 } 5283 5284 //var checked_categories = $(map_obj.container).find('input[data-marker-category]:checked').length; 5285 if (in_checked_category === false) show = false; 5286 else show = true; 5287 5288 //Show Here checked location. 5289 if (all_selected_location.length !== 0) { 5290 if ($.inArray(parseInt(place.id), all_selected_location) > -1) { 5291 show = true; 5292 } 5293 } 5294 } 5295 5296 if( show == true ) { 5297 place.marker.bindMap(map_obj.map); 5298 } 5299 place.marker.setVisible(show); 5300 5301 if (show == false) { 5302 place.infowindow.close(); 5303 } 5304 place.marker.setAnimation(null); 5305 if ($.isFunction($.fn.locationSortByDistance)) { 5306 if (show === true) { 5307 map_obj.show_places.push(place); 5308 map_obj.sorted_locations_by_search.push(place); 5309 } 5310 } else { 5311 if (show === true) map_obj.show_places.push(place); 5312 } 5313 }); 5314 5315 if ($.isFunction($.fn.locationSortByDistance)) {
5316 if (map_obj.search_place != undefined) { 5317 map_obj.is_place_changed = true; 5318 var sotred_locs = map_obj.shuffle_by_distance( 5319 map_obj.sorted_locations_by_search, 5320 map_obj.search_place 5321 ); 5322 map_obj.places = sotred_locs; 5323 } 5324 } 5325 } 5326 5327 if ( 5328 typeof map_obj.map_data.map_options.bound_map_after_filter !== 'undefined' && 5329 map_obj.map_data.map_options.bound_map_after_filter === true 5330 ) { 5331 const isGoogle = map_obj.isMapProvider("google"); 5332 5333 // Create a bounds object based on provider 5334 const bounds = isGoogle 5335 ? new google.maps.LatLngBounds() 5336 : new L.LatLngBounds(); 5337 5338 if (Array.isArray(map_obj.show_places) && map_obj.show_places.length > 0) { 5339 map_obj.show_places.forEach((place) => { 5340 const lat = parseFloat(place.location.lat); 5341 const lng = parseFloat(place.location.lng); 5342 5343 if (!isNaN(lat) && !isNaN(lng)) { 5344 const latLng = isGoogle 5345 ? new google.maps.LatLng(lat, lng) 5346 : L.latLng(lat, lng); 5347 5348 bounds.extend(latLng); 5349 } 5350 }); 5351 // Fit bounds to map 5352 if (isGoogle) { 5353 map_obj.map.fitBounds(bounds); 5354 } else { 5355 map_obj.map.fitBounds(bounds, { padding: [20, 20] }); // optional padding 5356 } 5357 } 5358 } 5359 5360 5361 if (map_obj.map_data.listing) { 5362 if ($(map_obj.container).find('[data-filter="map-sorting"]').val()) { 5363 var order_data = $(map_obj.container) 5364 .find('[data-filter="map-sorting"]') 5365 .val() 5366 .split("__"); 5367 var data_type = ""; 5368 if (order_data[0] !== "" && order_data[1] !== "") { 5369 if (typeof order_data[2] != "undefined") { 5370 data_type = order_data[2]; 5371 } 5372 map_obj.sorting(order_data[0], order_data[1], data_type); 5373 } 5374 } else { 5375 if ( 5376 map_obj.map_data.listing.default_sorting && 5377 map_obj.map_data.autosort 5378 ) { 5379 var data_type = ""; 5380 if ( 5381 map_obj.map_data.listing.default_sorting.orderby == "listorder" 5382 ) { 5383 data_type = "num"; 5384 } 5385 map_obj.sorting( 5386 map_obj.map_data.listing.default_sorting.orderby, 5387 map_obj.map_data.listing.default_sorting.inorder, 5388 data_type 5389 ); 5390 } 5391 } 5392 5393 map_obj.update_places_listing(); 5394 } 5395 5396 if (map_obj.map_data.marker_cluster) { 5397 setTimeout(function () { 5398 map_obj.set_marker_cluster(); 5399 }, 2000); 5400 } 5401 const externalEvent = new CustomEvent("wpgmpApplyFilters", { detail: { map_obj }, }); 5402 document.dispatchEvent(externalEvent); 5403 5404 // document.addEventListener("wpgmpApplyFilters", function (event) { 5405 // // Access map object 5406 // const mapObj = event.detail.map_obj; 5407 // console.log("Map object received:", mapObj); 5408 // jQuery('.slp_results_count').text(mapObj.show_places.length); 5409 // }); 5410 } 5411 update_filters() { 5412 var map_obj = this; 5413 map_obj.filters = {}; 5414 var all_dropdowns = $(map_obj.container).find('[data-filter="dropdown"]'); 5415 var all_checkboxes = $(map_obj.container).find( 5416 '[data-filter="checklist"]:checked' 5417 ); 5418 var all_list = $(map_obj.container).find( 5419 '[data-filter="list"].fc_selected' 5420 ); 5421 const map_id = map_obj.map_data.map_property.map_id; 5422 $.each(all_dropdowns, function (index, element) { 5423 if ($(this).val() != "") { 5424 if (typeof map_obj.filters[$(this).data("name")] == "undefined") { 5425 map_obj.filters[$(this).data("name")] = []; 5426 } 5427 5428 map_obj.filters[$(this).data("name")].push($(this).val()); 5429 } 5430 }); 5431 5432 $.each(all_checkboxes, function (index, element) { 5433 if (typeof map_obj.filters[$(this).data("name")] == "undefined") { 5434 map_obj.filters[$(this).data("name")] = []; 5435 } 5436 5437 map_obj.filters[$(this).data("name")].push($(this).val()); 5438 }); 5439 5440 $.each(all_list, function (index, element) { 5441 if (typeof map_obj.filters[$(this).data("name")] == "undefined") { 5442 map_obj.filters[$(this).data("name")] = []; 5443 } 5444 5445 map_obj.filters[$(this).data("name")].push( 5446 $(this).data("value").toString() 5447 ); 5448 }); 5449 5450 $('[data-wpgmp-filter="true"][data-wpgmp-map-id="' + map_id + '"]').each( 5451 function () { 5452 const filterBy = $(this).data("wpgmp-filter-by"); 5453 const inputType = $(this).prop("type").toLowerCase(); 5454 let inputValue; 5455 if (inputType === "checkbox" && $(this).is(":checked")) { 5456 inputValue = $(this).val(); 5457 } else if (inputType === "select-one" || inputType === "select") { 5458 inputValue = $(this).find("option:selected").val(); 5459 } else if (inputType === "radio" && $(this).is(":checked")) { 5460 inputValue = $(this).val(); 5461 } 5462 5463 if (filterBy == "search" && $(this).val().length > 2) { 5464 map_obj.search_term = $(this).val().toLowerCase(); 5465 map_obj.enable_search_term = true; 5466 } else if (filterBy == "search" && $(this).val().length < 2) { 5467 map_obj.search_term = ""; 5468 map_obj.enable_search_term = true; 5469 } 5470 5471 if (inputValue !== undefined && inputValue !== "") {
5472 map_obj.filters[filterBy] = map_obj.filters[filterBy] || []; 5473 map_obj.filters[filterBy].push(inputValue); 5474 } 5475 } 5476 ); 5477 5478 if (map_obj.addonInfo !== "") { 5479 $.each(map_obj.addonInfo, function (key, method) { 5480 var method_name = method.filter_register_mthod; 5481 5482 if ( 5483 typeof map_obj[method_name] !== "undefined" && 5484 $.isFunction(map_obj[method_name]) 5485 ) { 5486 map_obj[method_name](); 5487 } 5488 }); 5489 } 5490 5491 this.apply_filters(); 5492 } 5493 5494 register_events() { 5495 const map_obj = this; 5496 const map_id = map_obj.map_data.map_property.map_id; 5497 const $container = $(map_obj.container); 5498 const template = map_obj.map_data.map_options.template_name; 5499 const hasSearchButton = !!$(`[data-wpgmp-filter="true"][data-wpgmp-search-button="true"]`).length; 5500 5501 $container.on("input change", ".wpgmp_error", function () { 5502 $(this).removeClass("wpgmp_error"); 5503 }); 5504 5505 // ------------------------------- 5506 // ð Filters (dropdown, checklist, list, radius, per-page) 5507 // ------------------------------- 5508 5509 // Accordion tab toggle UI (for listings/filters etc.) 5510 $("body").on("click", ".fc-accordion-tab", function () { 5511 if ($(this).hasClass("active")) { 5512 $(this).removeClass("active"); 5513 5514 var acc_child = $(this).next().removeClass("active"); 5515 } else { 5516 $(".fc-accordion-tab").removeClass("active"); 5517 5518 $(".fc-accordion dd").removeClass("active"); 5519 5520 $(this).addClass("active"); 5521 5522 var acc_child = $(this).next().addClass("active"); 5523 } 5524 }); 5525 5526 if (map_obj.map_data.listing) { 5527 // Hook for dynamic taxonomy filters 5528 $.each(map_obj.map_data.listing.filters, function (key, filter) { 5529 $(map_obj.container) 5530 .find('select[name="' + filter + '"]') 5531 .on("change", function () { 5532 map_obj.update_filters(); 5533 }); 5534 }); 5535 } 5536 5537 $container.on("change", `select[data-wpgmp-filter="true"][data-wpgmp-map-id="${map_id}"]`, () => { 5538 map_obj.update_filters(); 5539 }); 5540 5541 $container.on("change", `select[data-wpgmp-map-id="${map_id}"][data-name="radius"]`, function () { 5542 const $searchBox = $container.find('[data-input="wpgmp-search-text"]'); 5543 const isGoogle = map_obj.isMapProvider("google"); 5544 5545 $searchBox.removeClass("wpgmp_error"); 5546 // Prevent override if locationSortByDistance plugin is active or no search box 5547 if (!$searchBox.length) return; 5548 5549 if (!$searchBox.val().trim()) { 5550 $searchBox.addClass("wpgmp_error").focus(); 5551 return; 5552 } 5553 5554 const query = $searchBox.val().trim(); 5555 if (query.length >= 2 && $(this).val() !== "") { 5556 map_obj.wpgmp_set_search_area(query); 5557 5558 if ( 5559 map_obj.search_area && 5560 typeof map_obj.search_area.lat === 'function' && 5561 typeof map_obj.search_area.lng === 'function' 5562 ) { 5563 map_obj.draw_radius_circle( 5564 map_obj.search_area.lat(), 5565 map_obj.search_area.lng() 5566 ); 5567 } else if (map_obj.search_area && 5568 map_obj.search_area.lat != '' && 5569 map_obj.search_area.lng != '' 5570 ){ 5571 const lat = map_obj.search_area?.lat 5572 ? map_obj.search_area.lat 5573 : (map_obj.search_area?.[0] || ''); 5574 5575 const lng = map_obj.search_area?.lng 5576 ? map_obj.search_area.lng 5577 : (map_obj.search_area?.[1] || ''); 5578 5579 map_obj.draw_radius_circle(lat,lng); 5580 } 5581 } else { 5582 if (map_obj.radius_circle) { 5583 if (isGoogle) { 5584 // Remove Google Maps circle 5585 map_obj.radius_circle.setMap(null); 5586 5587 } else { 5588 // Remove Leaflet circle 5589 map_obj.map.removeLayer(map_obj.radius_circle); 5590 } 5591 map_obj.radius_circle = null; 5592 } 5593 map_obj.search_area = ""; 5594 map_obj.update_filters(); 5595 } 5596 }); 5597 5598 $container.on('click', '.categories_filter_reset_btn', function () { 5599 const isGoogle = map_obj.isMapProvider("google"); 5600 $(map_obj.container).find('.wpgmp_filter_wrappers select').each(function () { 5601 $(this).find('option:first').attr('selected', 'selected'); 5602 $(this).find('option:first').prop('selected', 'selected'); 5603 }); 5604 5605 $('.wpgmp_search_input').val(''); 5606 5607 if (map_obj.addonInfo !== '') { 5608 5609 $.each(map_obj.addonInfo, function (key, method) { 5610 var method_name = method.filter_reset_method; 5611 5612 if (typeof map_obj[method_name] !== 'undefined' && $.isFunction(map_obj[method_name])) { 5613 5614 map_obj[method_name](); 5615 } 5616 5617 }); 5618 5619 }
5620 if (map_obj.radius_circle) { 5621 if (isGoogle) { 5622 // Remove Google Maps circle 5623 map_obj.radius_circle.setMap(null); 5624 5625 } else { 5626 // Remove Leaflet circle 5627 map_obj.map.removeLayer(map_obj.radius_circle); 5628 } 5629 map_obj.radius_circle = null; 5630 } 5631 map_obj.update_filters(); 5632 5633 }); 5634 5635 $(map_obj.container).on("click", '[data-filter="dropdown"]', () => map_obj.update_filters()); 5636 $container.on("click", '[data-filter="checklist"]', () => map_obj.update_filters()); 5637 $container.on("click", '[data-filter="list"]', function () { 5638 $(this).toggleClass("fc_selected"); 5639 map_obj.update_filters(); 5640 }); 5641 5642 // Marker link scroll-to functionality 5643 $container.on("click", ".wpgmp_marker_link", function () { 5644 const markerId = $(this).data("marker"); 5645 const source = $(this).data("source"); 5646 $("html, body").animate( 5647 { scrollTop: $(map_obj.container).offset().top - 150 }, 5648 500 5649 ); 5650 map_obj.open_infowindow(markerId, source); 5651 }); 5652 5653 if (!hasSearchButton && (template !== 'layout_6' && template !== 'layout_7')) { 5654 $container.on("keyup", `input[data-wpgmp-filter="true"][data-wpgmp-map-id="${map_id}"]`, () => { 5655 map_obj.update_filters(); 5656 }); 5657 } 5658 5659 // Reset all filters (button with reset attribute) 5660 $container.on("click", '[data-filter-reset="true"]', () => { 5661 $('input[type="text"][data-wpgmp-filter="true"]').val(''); 5662 $('select[data-wpgmp-filter="true"]').prop("selectedIndex", 0); 5663 $('input[type="checkbox"][data-filter="checklist"], input[type="checkbox"][data-wpgmp-filter="true"]').prop("checked", false); 5664 $('[data-filter="list"].fc_selected').removeClass("fc_selected"); 5665 $('input[type="radio"][data-wpgmp-filter="true"]').prop("checked", false); 5666 map_obj.update_filters(); 5667 }); 5668 5669 // Advanced template â search button click triggers filtering 5670 $container.on("click", `[data-wpgmp-filter="true"][data-wpgmp-search-button="true"]`, () => { 5671 map_obj.update_filters(); 5672 }); 5673 5674 // ------------------------------- 5675 // ð Search Input 5676 // ------------------------------- 5677 $container.on("keyup", '[data-input="wpgmp-search-text"]', function () { 5678 const searchVal = $(this).val().trim(); 5679 $container.find('[data-filter="map-radius"]').val(""); 5680 const isGoogle = map_obj.isMapProvider("google"); 5681 map_obj.search_area = ""; 5682 5683 if (searchVal.length >= 2 && map_obj.map_data.listing.apply_default_radius === true) { 5684 5685 map_obj.wpgmp_set_search_area(searchVal); 5686 5687 } else { 5688 if (map_obj.radius_circle) { 5689 if (isGoogle) { 5690 // Remove Google Maps circle 5691 map_obj.radius_circle.setMap(null); 5692 5693 } else { 5694 // Remove Leaflet circle 5695 map_obj.map.removeLayer(map_obj.radius_circle); 5696 } 5697 map_obj.radius_circle = null; 5698 } 5699 map_obj.update_filters(); 5700 } 5701 }); 5702 5703 // ------------------------------- 5704 // ð Sorting & Per Page 5705 // ------------------------------- 5706 $container.on("change", `select[data-wpgmp-map-id="${map_id}"][data-filter="map-sorting"]`, function () { 5707 const [orderby, order, type = ""] = $(this).val().split("__"); 5708 if (orderby && order) { 5709 map_obj.sorting(orderby, order, type); 5710 map_obj.update_places_listing(); 5711 } 5712 }); 5713 5714 $container.on("change", `select[data-wpgmp-map-id="${map_id}"][data-filter="map-perpage-location-sorting"]`, function () { 5715 map_obj.per_page_value = $(this).val(); 5716 map_obj.update_filters(); 5717 }); 5718 5719 // ------------------------------- 5720 // ðºï¸ Marker & InfoWindow Events 5721 // ------------------------------- 5722 5723 $container.on("click", ".wpgmp_location_container a[data-marker]", function (e) { 5724 e.preventDefault(); 5725 const markerId = $(this).data("marker"); 5726 if (!markerId || typeof map_obj.open_infowindow !== "function") return; 5727 5728 map_obj.open_infowindow(markerId); 5729 }); 5730 5731 // Listing infowindow (custom event trigger like 'click', 'hover') 5732 $container.on(map_obj.settings.listing_infowindow_open_event, ".wpgmp_locations a[data-marker]", function () { 5733 const $el = $(this); 5734 $("html, body").animate({ scrollTop: $container.offset().top - 150 }, 500); 5735 setTimeout(() => map_obj.open_infowindow($el.data("marker")), 300); 5736 }); 5737 5738 $container.on(map_obj.settings.listing_infowindow_open_event, ".wep-card__title a[data-marker]", function () { 5739 const $el = $(this); 5740 $("html, body").animate({ scrollTop: $container.offset().top - 150 }, 500); 5741 setTimeout(() => map_obj.open_infowindow($el.data("marker")), 300); 5742 }); 5743 5744 // ------------------------------- 5745 // ð Tabs & UI Toggles 5746 // ------------------------------- 5747 $container.on("click", ".wpgmp_toggle_container", function () { 5748 $container.find(".wpgmp_toggle_main_container").slideToggle("slow"); 5749 const txt = $(this).text(); 5750 $(this).text(txt === wpgmp_local.hide ? wpgmp_local.show : wpgmp_local.hide); 5751 }); 5752 5753 $container.on("click", "li[class^='wpgmp-tab-'] a", function () { 5754 const tabId = $(this).parent().attr("rel"); 5755 $container.find("li[class^='wpgmp-tab-'] a").removeClass("active"); 5756 $(this).addClass("active"); 5757 $container.find(".wpgmp_toggle_main_container div[id^='wpgmp_tab_']").hide(); 5758 $container.find(`#wpgmp_tab_${tabId}`).show(); 5759 }); 5760 5761 $container.find(".wpgmp_find_nearby_button").click(function () { 5762 const target = $(this).closest(".wpgmp_nearby_container"); 5763 const inputField = $(target).find(".wpgmp_auto_suggest"); 5764 const lat = inputField.data('latitude'); 5765 const lon = inputField.data('longitude'); 5766 5767 const radiusField = $(map_obj.container).find("input[name='wpgmp_radius']");
5768 const radius = radiusField.val(); 5769 5770 let hasError = false; 5771 5772 // Reset previous error classes 5773 inputField.removeClass("wpgmp_error"); 5774 radiusField.removeClass("wpgmp_error"); 5775 5776 // Validate location 5777 if (!lat || !lon) { 5778 inputField.addClass("wpgmp_error").focus(); 5779 hasError = true; 5780 } 5781 5782 // Validate radius 5783 if (!radius || isNaN(radius) || parseInt(radius) <= 0) { 5784 radiusField.addClass("wpgmp_error"); 5785 hasError = true; 5786 } 5787 5788 if (hasError) { 5789 return; // Stop execution 5790 } 5791 5792 const dim = $(map_obj.container).find("select[name='wpgmp_route_dimension']").val(); 5793 const amenities = $(map_obj.container).find('input[name^="wpgmp_place_types"]:checked'); 5794 const divide_by = (dim === 'miles') ? 1.60934 : 1; 5795 const circle_radius_meters = parseInt(radius) * divide_by * 1000; 5796 5797 // Clear existing amenities 5798 if (map_obj.current_amenities?.length > 0) { 5799 map_obj.current_amenities.forEach((amenity) => { 5800 if (amenity.marker?.setMap) { 5801 amenity.marker.setMap(null); 5802 } 5803 }); 5804 } 5805 5806 map_obj.current_amenities = []; 5807 map_obj.amenity_infowindow = map_obj.infowindow_marker; 5808 5809 const place_types = amenities.map(function () { 5810 return $(this).val(); 5811 }).get(); 5812 5813 place_types.forEach(function (placeType) { 5814 const request = { 5815 location: new google.maps.LatLng(lat, lon), 5816 radius: circle_radius_meters, 5817 types: [placeType], 5818 rankBy: "DISTANCE" 5819 }; 5820 5821 map_obj.fetchNearbyAmenities(request, function (places) { 5822 places.forEach(function (place) { 5823 const marker = map_obj.createMarker(place); 5824 map_obj.current_amenities.push({ marker, place }); 5825 }); 5826 }); 5827 }); 5828 5829 // Center map and draw circle 5830 const centerLatLng = new google.maps.LatLng(lat, lon); 5831 map_obj.map.setCenter(centerLatLng); 5832 5833 if (map_obj.map_data.map_tabs.nearby_tab?.show_nearby_circle) { 5834 if (map_obj.set_nearbycenter_circle) { 5835 map_obj.set_nearbycenter_circle.setMap(null); 5836 } 5837 5838 map_obj.set_nearbycenter_circle = new google.maps.Circle({ 5839 map: map_obj.map, 5840 fillColor: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_fillcolor, 5841 fillOpacity: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_fillopacity, 5842 strokeColor: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_strokecolor, 5843 strokeOpacity: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_strokeopacity, 5844 strokeWeight: map_obj.map_data.map_tabs.nearby_tab.nearby_circle_strokeweight, 5845 center: centerLatLng, 5846 radius: circle_radius_meters 5847 }); 5848 5849 map_obj.map.setZoom(parseInt(map_obj.map_data.map_tabs.nearby_tab.nearby_circle_zoom)); 5850 } 5851 }); 5852 5853 5854 5855 // ------------------------------- 5856 // ð¦ Category / Checkbox 5857 // ------------------------------- 5858 $container.on("change", "input[data-marker-category]", function () { 5859 const $el = $(this), isChecked = $el.is(":checked"); 5860 const catId = $el.data("marker-category"); 5861 const $wrap = $el.closest('[data-container="wpgmp-category-tab-item"]'); 5862 5863 map_obj.last_category_chkbox_action = isChecked ? "checked" : "unchecked"; 5864 if (isChecked) { 5865 map_obj.last_selected_cat_id = catId; 5866 $wrap.find("input[data-marker-location]").prop("checked", true); 5867 } else { 5868 map_obj.last_remove_cat_id = catId; 5869 $wrap.find("input[data-marker-location]").prop("checked", false); 5870 } 5871 5872 const childCats = $el.data("child-cats"); 5873 if (childCats) { 5874 childCats.toString().split(",").forEach(cat => { 5875 const $child = $el.closest(".wpgmp_tab_item").find(`[data-marker-category="${cat}"]`); 5876 $child.prop("checked", isChecked); 5877 $child.closest(".wpgmp_tab_item").find("input[data-marker-location]").prop("checked", isChecked); 5878 }); 5879 } 5880 5881 map_obj.update_filters(); 5882 }); 5883 5884 $container.on("change", "input[data-marker-location]", () => map_obj.update_filters()); 5885 5886 // ------------------------------- 5887 // ð¨ï¸ Print Listings 5888 // ------------------------------- 5889 $container.on("click", '[data-action="wpgmp-print"]', function () { 5890 const id = $(map_obj.element).attr("id"); 5891 const $default = $(`[data-container="wpgmp-listing-${id}"]`); 5892 const $custom = $(`[data-container="wpgmp-custom-listing-${id}"]`); 5893 $default.length && $default.print(); 5894 $custom.length && $custom.print(); 5895 }); 5896 5897 // ------------------------------- 5898 // ð Select All Categories 5899 // ------------------------------- 5900 if (map_obj.map_data.map_tabs?.category_tab?.select_all === true) { 5901 $container.on("click", 'input[name="wpgmp_select_all"]', function () { 5902 const isChecked = $(this).is(":checked"); 5903 $container.find("input[data-marker-category], input[data-marker-location]").prop("checked", isChecked); 5904 map_obj.update_filters(); 5905 }); 5906 } 5907 5908 // -------------------------------
5909 // ð View Details 5910 // ------------------------------- 5911 $container.on("click", "[data-view-details]", function (e) { 5912 e.preventDefault(); 5913 const id = $(this).data("view-details"); 5914 const target = $(this).attr("target"); 5915 5916 map_obj.places.forEach(place => { 5917 if (place.id == id) { 5918 if (place.source === "post") { 5919 const url = place.location.extra_fields.post_link; 5920 target === "_blank" ? window.open(url, "_blank") : location.href = url; 5921 } else { 5922 $("html, body").animate({ scrollTop: $container.offset().top - 150 }, 500); 5923 map_obj.open_infowindow(place.id); 5924 } 5925 } 5926 }); 5927 }); 5928 5929 // ------------------------------- 5930 // ð Locate Me Button 5931 // ------------------------------- 5932 $container.on("click", `[data-wpgmp='mcurrent_location'][data-wpgmp-map-id="${map_id}"]`, function () { 5933 const $this = $(this); 5934 const $input = $this.parent().find(".wpgmp_auto_suggest"); 5935 5936 map_obj.get_current_location( 5937 function (loc) { 5938 const lat = map_obj.isMapProvider("google") ? loc.lat() : loc.lat; 5939 const lng = map_obj.isMapProvider("google") ? loc.lng() : loc.lng; 5940 5941 $input.data("latitude", lat); 5942 $input.data("longitude", lng); 5943 5944 map_obj.wpgmp_geocode(lat, lng).then((result) => { 5945 $input.val(result.address); 5946 }).catch(console.error); 5947 }, 5948 function () {} 5949 ); 5950 5951 }); 5952 5953 5954 // ------------------------------- 5955 // ð Route Toggle Handling 5956 // ------------------------------- 5957 $container.find(".wpgmp_specific_route_item").prop("checked", true); 5958 5959 $container.on("change", `[data-wpgmp='route_toggle'][data-wpgmp-map-id="${map_id}"]`, function () { 5960 const route = map_obj.route_directions[$(this).val()]; 5961 if (route) route.setMap($(this).is(":checked") ? map_obj.map : null); 5962 }); 5963 5964 // ------------------------------- 5965 // ð Drawing Events 5966 // -- 5967 $('.wpgmp-shape-delete').click(function (e) { 5968 e.preventDefault(); 5969 5970 map_obj.deleteSelectedShape(); 5971 $('.temp_row').addClass('hiderow'); 5972 }); 5973 5974 $('select[name="shape_stroke_opacity"]').change(function () { 5975 map_obj.set_shapes_options(map_obj.selectedShape); 5976 }); 5977 $('select[name="shape_stroke_weight"]').change(function () { 5978 map_obj.set_shapes_options(map_obj.selectedShape); 5979 }); 5980 5981 $('select[name="shape_fill_opacity"]').change(function () { 5982 map_obj.set_shapes_options(map_obj.selectedShape); 5983 }); 5984 5985 5986 if (typeof map_obj.map_data.shapes != 'undefined') { 5987 if (map_obj.map_data.shapes.drawing_editable === true) { 5988 5989 $('.shape_fill_color').wpColorPicker({ 5990 change: function(event, ui) { 5991 var polyOptions2 = { 5992 fillColor: $(this).val(), 5993 }; 5994 map_obj.selectedShape.setOptions(polyOptions2); 5995 } 5996 }); 5997 5998 $('.shape_stroke_color').wpColorPicker({ 5999 change: function(event, ui) { 6000 var polyOptions2 = { 6001 strokeColor: $(this).val(), 6002 }; 6003 map_obj.selectedShape.setOptions(polyOptions2); 6004 } 6005 }); 6006 } 6007 } 6008 6009 $('input[name="shape_click_url"]').change(function () { 6010 map_obj.set_shapes_options(map_obj.selectedShape); 6011 }); 6012 $('textarea[name="shape_click_message"]').blur(function () { 6013 map_obj.set_shapes_options(map_obj.selectedShape); 6014 }); 6015 6016 $("textarea[name='shape_path']").blur(function () { 6017 var cordinates = $(this).val().split(' '); 6018 if (cordinates.length == 1) { 6019 cordinates = $(this).val().split("\n"); 6020 } 6021 var path = []; 6022 $.each(cordinates, function (ind, cordinate) { 6023 var latlng = cordinate.split(','); 6024 path.push(new google.maps.LatLng(latlng[0], latlng[1])); 6025 }); 6026 map_obj.selectedShape.setPath(path); 6027 }); 6028 6029 $("input[name='shape_radius']").blur(function () { 6030 var radius = parseFloat($(this).val()); 6031 map_obj.selectedShape.setRadius(radius); 6032 }); 6033 6034 $("input[name='shape_center']").blur(function () { 6035 var latlng = $(this).val().split(','); 6036 map_obj.selectedShape.setCenter(new google.maps.LatLng(parseFloat(latlng[0]), parseFloat(latlng[1]))); 6037 }); 6038 6039 $("input[name='shape_northeast']").blur(function () { 6040 var ea = $(this).val().split(','); 6041 var sw = $("input[name='shape_southwest']").val().split(','); 6042 6043 map_obj.selectedShape.setBounds(new google.maps.LatLngBounds(new google.maps.LatLng(parseFloat(sw[0]), parseFloat(sw[1])), new google.maps.LatLng(parseFloat(ea[0]), parseFloat(ea[1])))); 6044 }); 6045 6046 $("input[name='shape_southwest']").blur(function () { 6047 var sw = $(this).val().split(','); 6048 var ea = $("input[name='shape_northeast']").val().split(','); 6049 6050 map_obj.selectedShape.setBounds(new google.maps.LatLngBounds(new google.maps.LatLng(parseFloat(sw[0]), parseFloat(sw[1])), new google.maps.LatLng(parseFloat(ea[0]), parseFloat(ea[1])))); 6051 }); 6052 6053 $("input[name='shape_center']").blur(function () { 6054 var latlng = $(this).val().split(','); 6055 map_obj.selectedShape.setCenter(new google.maps.LatLng(parseFloat(latlng[0]), parseFloat(latlng[1]))); 6056 }); 6057 6058 $('button[name="wpgmp_save_drawing"]').click(function (e) { 6059 6060 var all_shapes_cordinate = []; 6061
6062 all_shapes_cordinate.push('polylines=' + map_obj.wpgmp_save_polylines().join('::')); 6063 all_shapes_cordinate.push('polygons=' + map_obj.wpgmp_save_polygons().join('::')); 6064 all_shapes_cordinate.push('circles=' + map_obj.wpgmp_save_circles().join('::')); 6065 all_shapes_cordinate.push('rectangles=' + map_obj.wpgmp_save_rectangles().join('::')); 6066 6067 map_obj.wpgmp_save_shapes(all_shapes_cordinate); 6068 6069 }); 6070 6071 6072 } 6073 6074 create_perpage_option() { 6075 var map_obj = this; 6076 var options = ""; 6077 var content = ""; 6078 6079 content += 6080 '<select name="map_perpage_location_sorting" data-wpgmp-map-id="'+this.map_data.map_property.map_id+'" data-filter="map-perpage-location-sorting" class="choose_salutation">'; 6081 content += 6082 '<option value="' + 6083 map_obj.map_data.listing.pagination.listing_per_page + 6084 '">' + 6085 wpgmp_local.show_locations + 6086 "</option>"; 6087 content += '<option value="25">25</option>'; 6088 content += '<option value="50">50</option>'; 6089 content += '<option value="100">100</option>'; 6090 content += '<option value="200">200</option>'; 6091 content += '<option value="500">500</option>'; 6092 content += 6093 '<option value="' + 6094 map_obj.show_places.length + 6095 '">' + 6096 wpgmp_local.all_location + 6097 "</option>"; 6098 content += "</select>"; 6099 6100 return content; 6101 } 6102 create_sorting() { 6103 var options = ""; 6104 6105 var content = ""; 6106 6107 if (this.map_data.listing.display_sorting_filter === true) { 6108 content += 6109 '<select name="map_sorting" data-wpgmp-map-id="'+this.map_data.map_property.map_id+'" data-filter="map-sorting"><option value="">' + 6110 wpgmp_local.sort_by + 6111 "</option>"; 6112 $.each(this.map_data.listing.sorting_options, function (id, name) { 6113 content += "<option value='" + id + "'>" + name + "</option>"; 6114 }); 6115 content += "</select>"; 6116 } 6117 6118 return content; 6119 } 6120 create_radius() { 6121 var options = ""; 6122 6123 var content = ""; 6124 if (this.map_data.listing.display_radius_filter === true) { 6125 var radius_options = this.map_data.listing.radius_options; 6126 6127 if (radius_options != undefined) { 6128 content += 6129 '<div class="wpgmp_radius_wrapper"><select data-name="radius" class="wpgmp_radius_select" data-wpgmp-map-id="'+this.map_data.map_property.map_id+'" name="map_radius"><option value="">' + 6130 wpgmp_local.select_radius + 6131 "</option>"; 6132 var radius_dimension = this.map_data.listing.radius_dimension; 6133 $.each(radius_options.split(","), function (id, name) { 6134 if (radius_dimension == "miles") { 6135 content += 6136 "<option value='" + 6137 name + 6138 "'>" + 6139 name + 6140 " " + 6141 wpgmp_local.miles + 6142 "</option>"; 6143 } else { 6144 content += 6145 "<option value='" + 6146 name + 6147 "'>" + 6148 name + 6149 " " + 6150 wpgmp_local.km + 6151 "</option>"; 6152 } 6153 }); 6154 content += "</select></div>"; 6155 } 6156 } 6157 6158 return content; 6159 } 6160 custom_filters() { 6161 var map_obj = this; 6162 var options = ""; 6163 var places = this.map_data.places; 6164 var wpgmp_filters = this.map_data.filters; 6165 map_obj.template_data = []; 6166 this.filter_content = this.display_filters(); 6167 6168 this.filter_position = this.map_data.listing.filters_position; 6169 6170 if ( 6171 $(this.container).find(".wpgmp_filter_wrappers").length > 0 && 6172 map_obj.map_data.map_options.advance_template == false 6173 ) 6174 $(this.container) 6175 .find(".wpgmp_filter_wrappers") 6176 .html(this.filter_content); 6177 6178 if ( 6179 typeof wpgmp_filters == "undefined" || 6180 typeof wpgmp_filters.custom_filters == "undefined" || 6181 wpgmp_filters.custom_filters.length == 0 6182 ) { 6183 return; 6184 } 6185 6186 $.each( 6187 wpgmp_filters.custom_filters, 6188 function (template_shortcode, filter_options) { 6189 var all_filters = []; 6190 var content = ""; 6191 var filters = {}; 6192 $.each(filter_options, function (filter_type, filter_parameter) { 6193 $.each(filter_parameter, function (filter_name, filter_label) { 6194 $.each(places, function (index, place) { 6195 if (filter_name == "category") { 6196 if (typeof place.categories == "undefined") { 6197 place.categories = {}; 6198 } 6199 $.each(place.categories, function (cat_index, category) { 6200 if (typeof filters[category.type] == "undefined") { 6201 filters[category.type] = {}; 6202 } 6203 if (category.name) { 6204 filters[category.type][category.name] = category.id; 6205 } 6206 }); 6207 } else { 6208 if (typeof place[filter_name] != "undefined") { 6209 if (typeof filters[filter_name] == "undefined") { 6210 filters[filter_name] = {}; 6211 } 6212 if (place[filter_name]) { 6213 filters[filter_name][place[filter_name]] = 6214 place[filter_name]; 6215 } 6216 } 6217 6218 if ( 6219 typeof place.location.extra_fields[filter_name] != 6220 "undefined" 6221 ) { 6222 if (typeof filters[filter_name] == "undefined") { 6223 filters[filter_name] = {}; 6224 } 6225 if (place.location.extra_fields[filter_name]) { 6226 filters[filter_name][ 6227 place.location.extra_fields[filter_name] 6228 ] = place.location.extra_fields[filter_name]; 6229 } 6230 } 6231 6232 if (typeof place.location[filter_name] != "undefined") { 6233 if (typeof filters[filter_name] == "undefined") { 6234 filters[filter_name] = {}; 6235 } 6236 if (place.location[filter_name]) { 6237 filters[filter_name][place.location[filter_name]] = 6238 place.location[filter_name]; 6239 } 6240 } 6241 6242 if ( 6243 typeof place.custom_filters != "undefined" && 6244 typeof place.custom_filters[filter_name] != "undefined" 6245 ) { 6246 if (typeof filters[filter_name] == "undefined") { 6247 filters[filter_name] = {}; 6248 } 6249 if (place.custom_filters[filter_name]) { 6250 var options = place.custom_filters[filter_name]; 6251 if ($.isArray(options)) { 6252 $.each(options, function (index, value) { 6253 filters[filter_name][value] = value; 6254 }); 6255 } else { 6256 filters[filter_name][options] = options; 6257 } 6258 } 6259 } 6260 6261 // It could be radius filter. 6262 if (filter_name == "radius") { 6263 if (typeof filters[filter_name] == "undefined") { 6264 filters[filter_name] = {}; 6265 } 6266 6267 var radius_options = wpgmp_filters.radius_options; 6268 var radius_dimension = wpgmp_filters.radius_dimension; 6269 $.each(radius_options.split(","), function (id, name) { 6270 if (radius_dimension == "miles") { 6271 filters[filter_name][name + " " + wpgmp_local.miles] = 6272 name; 6273 } else { 6274 filters[filter_name][name + " " + wpgmp_local.km] = 6275 name; 6276 } 6277 }); 6278 } 6279 } 6280 }); 6281 }); 6282 6283 if (filter_type == "dropdown") { 6284 if (typeof filters != "undefined") { 6285 $.each(filters, function (index, options) { 6286 if(Object.keys(options).length < 1){ 6287 return true; 6288 } 6289 options = map_obj.sort_object_by_value(options); 6290 options = map_obj.sort_object_by_unique_values(options); 6291 options = map_obj.sort_numeric_value_filters(options); 6292 content += 6293 '<select data-filter="dropdown" name="place_' + 6294 index + 6295 '" data-name = "' + 6296 index + 6297 '">'; 6298 content += 6299 '<option value="">' + 6300 (filter_parameter[index] 6301 ? filter_parameter[index] 6302 : "Select " + index) + 6303 "</option>"; 6304 $.each(options, function (name, value) { 6305 var optionlabel = value; 6306 value = value.replace("'", "'"); 6307 value = value.replace('"', """); 6308 if (value != "" && value != null) 6309 content += 6310 "<option value='" + 6311 value.toLowerCase() + 6312 "'>" +
6313 optionlabel + 6314 "</option>"; 6315 }); 6316 content += "</select>"; 6317 }); 6318 } 6319 } 6320 6321 if (filter_type == "checklist") { 6322 if (typeof filters != "undefined") { 6323 $.each(filters, function (index, options) { 6324 options = map_obj.sort_object_by_value(options); 6325 options = map_obj.sort_object_by_unique_values(options); 6326 options = map_obj.sort_numeric_value_filters(options); 6327 6328 content += '<div class="wpgmp_filters_checklist">'; 6329 content += 6330 '<label data-filter = "place_' + 6331 index + 6332 '" >' + 6333 (filter_parameter[index] 6334 ? filter_parameter[index] 6335 : "Select " + index) + 6336 "</label>"; 6337 content += '<div class="wpgmp_checklist_wrap">'; 6338 $.each(options, function (name, value) { 6339 if (value != "" && value != null) 6340 content += 6341 "<div class='wpgmp_checkbox_input'><input data-filter='checklist' type='checkbox' data-name = '" + 6342 index + 6343 "' value='" + 6344 value.toLowerCase() + 6345 "'><span class='wpgmp_checklist_title'>" + 6346 value + 6347 "</span></div>"; 6348 }); 6349 content += "</div></div>"; 6350 }); 6351 } 6352 } 6353 6354 if (filter_type == "list") { 6355 if (typeof filters != "undefined") { 6356 $.each(filters, function (index, options) { 6357 content += '<div class="wpgmp_filters_list">'; 6358 content += 6359 '<label data-filter = "place_' + 6360 index + 6361 '" >' + 6362 (wpgmp_filters.custom_filters[index] 6363 ? wpgmp_filters.custom_filters[index] 6364 : "Select " + index) + 6365 "</label><ul>"; 6366 $.each(options, function (name, value) { 6367 if (value != "" && value != null) 6368 content += 6369 "<li data-filter='list' data-name = '" + 6370 index + 6371 "' data-value='" + 6372 value + 6373 "'>" + 6374 name + 6375 "</li>"; 6376 }); 6377 content += "</ul></div>"; 6378 }); 6379 } 6380 } 6381 if (map_obj.map_data.map_options.advance_template) { 6382 if (!map_obj.template_data) { 6383 map_obj.template_data = {}; // Ensure template_data exists 6384 } 6385 if (!Array.isArray(map_obj.template_data.filter)) { 6386 map_obj.template_data.filter = []; // Ensure filter is an array 6387 } 6388 map_obj.template_data.filter.push(filters); 6389 } 6390 }); 6391 6392 //$(map_obj.container).find("."+template_shortcode).html(content); 6393 if (map_obj.map_data.map_options.advance_template == false) { 6394 $(map_obj.container) 6395 .find(wpgmp_filters.filters_container) 6396 .append(content); 6397 } 6398 } 6399 ); 6400 6401 // now create select boxes 6402 } 6403 sort_numeric_value_filters(filter_options) { 6404 if (!filter_options.some(isNaN)) { 6405 filter_options.sort(function (a, b) { 6406 return a - b; 6407 }); 6408 } 6409 return filter_options; 6410 } 6411 6412 // ----------------------------- 6413 // ð¦ Sorting Utilities 6414 // ----------------------------- 6415 sorting(order_by, in_order, data_type) { 6416 switch (order_by) { 6417 case "category": 6418 if (this.places !== undefined) { 6419 this.places.sort(this.sortByCategory); 6420 } 6421 if (this.show_places !== undefined) { 6422 this.show_places.sort(this.sortByCategory); 6423 } 6424 if (in_order == "desc") { 6425 this.places.reverse(); 6426 this.show_places.reverse(); 6427 } 6428 break; 6429 6430 case "title": 6431 if (this.map_data.places !== undefined) { 6432 this.map_data.places.sort(this.sortByTitle); 6433 } 6434 if (this.show_places !== undefined) { 6435 this.show_places.sort(this.sortByTitle); 6436 } 6437 if (in_order == "desc") { 6438 this.map_data.places.reverse(); 6439 this.places.reverse(); 6440 this.show_places.reverse(); 6441 } 6442 break; 6443 6444 case "address": 6445 if (this.map_data.places !== undefined) { 6446 this.map_data.places.sort(this.sortByAddress); 6447 } 6448 if (this.show_places !== undefined) { 6449 this.show_places.sort(this.sortByAddress); 6450 } 6451 if (in_order == "desc") { 6452 this.places.reverse(); 6453 this.show_places.reverse(); 6454 } 6455 break; 6456 default: 6457 var first_place = this.map_data.places[0]; 6458 if (typeof first_place[order_by] != "undefined") { 6459 this.map_data.places.sort(this.sortByPlace(order_by, data_type)); 6460 this.show_places.sort(this.sortByPlace(order_by, data_type)); 6461 } else if (typeof first_place.location[order_by] != "undefined") { 6462 this.map_data.places.sort(this.sortByLocation(order_by, data_type)); 6463 this.show_places.sort(this.sortByLocation(order_by, data_type)); 6464 } else if ( 6465 typeof first_place.location.extra_fields[order_by] != "undefined" 6466 ) { 6467 this.map_data.places.sort( 6468 this.sortByExtraFields(order_by, data_type) 6469 ); 6470 this.show_places.sort(this.sortByExtraFields(order_by, data_type)); 6471 } 6472 6473 if (in_order == "desc") { 6474 this.places.reverse(); 6475 this.show_places.reverse(); 6476 } 6477 } 6478 } 6479 sorting_inside_tabs(data, in_order) { 6480 if (in_order == "asc") { 6481 data.sort(); 6482 } 6483 if (in_order == "desc") { 6484 data.sort(); 6485 data.reverse(); 6486 } 6487 return data; 6488 } 6489 sortByTitle(a, b) { 6490 var a_val = a.title.toLowerCase(); 6491 var b_val = b.title.toLowerCase(); 6492 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 6493 } 6494 6495 sortByValue(a, b) { 6496 var a_val = a.toLowerCase(); 6497 var b_val = b.toLowerCase(); 6498 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 6499 } 6500 sortByCategory(a, b) { 6501 if (b.categories[0] && a.categories[0]) { 6502 if (a.categories[0].name && b.categories[0].name) { 6503 var a_val = a.categories[0].name.toLowerCase(); 6504 var b_val = b.categories[0].name.toLowerCase(); 6505 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 6506 } 6507 } 6508 } 6509 sortByAddress(a, b) { 6510 var a_val = a.address.toLowerCase(); 6511 var b_val = b.address.toLowerCase(); 6512 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 6513 } 6514 sortByPlace(order_by, data_type) { 6515 return function (a, b) { 6516 if (b[order_by] && a[order_by]) { 6517 if (a[order_by] && b[order_by]) { 6518 var a_val = a[order_by].toLowerCase(); 6519 var b_val = b[order_by].toLowerCase(); 6520 if (data_type == "num") { 6521 a_val = parseInt(a_val); 6522 b_val = parseInt(b_val); 6523 } 6524 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 6525 } 6526 } 6527 }; 6528 } 6529 sortByExtraFields(order_by, data_type) { 6530 return function (a, b) { 6531 if ( 6532 typeof b.location.extra_fields[order_by] != "undefined" && 6533 typeof a.location.extra_fields[order_by] != "undefined" 6534 ) { 6535 if (b.location.extra_fields[order_by] == null) { 6536 b.location.extra_fields[order_by] = ""; 6537 } 6538 6539 if (a.location.extra_fields[order_by] == null) { 6540 a.location.extra_fields[order_by] = ""; 6541 } 6542 6543 if (data_type == "num") { 6544 var a_val = parseInt(a.location.extra_fields[order_by]); 6545 var b_val = parseInt(b.location.extra_fields[order_by]); 6546 } else { 6547 var a_val = a.location.extra_fields[order_by].toLowerCase(); 6548 var b_val = b.location.extra_fields[order_by].toLowerCase(); 6549 } 6550 6551 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 6552 } 6553 }; 6554 } 6555 sortByLocation(order_by, data_type) { 6556 return function (a, b) { 6557 if (b.location[order_by] && a.location[order_by]) { 6558 if (a.location[order_by] && b.location[order_by]) { 6559 var a_val = a.location[order_by].toLowerCase(); 6560 var b_val = b.location[order_by].toLowerCase(); 6561 if (data_type == "num") { 6562 a_val = parseInt(a_val); 6563 b_val = parseInt(b_val); 6564 } 6565 return a_val < b_val ? -1 : a_val > b_val ? 1 : 0; 6566 } 6567 } 6568 }; 6569 } 6570 sort_object_by_keyvalue(options, by, type, in_order) { 6571 var sortable = []; 6572 for (var key in options) { 6573 sortable.push(options[key]); 6574 } 6575 6576 sortable.sort(this.sortByPlace(by, type)); 6577 6578 if (in_order == "desc") { 6579 sortable.reverse(); 6580 } 6581 6582 return sortable; 6583 } 6584 sort_object_by_unique_values(options) { 6585 var new_options = []; 6586 var uniqueNames = []; 6587 for (var key in options) { 6588 if (options[key].indexOf(",") > -1) {
6589 options[key].split(/\s*,\s*/).forEach(function (single_option_value) { 6590 new_options.push(single_option_value.trim()); 6591 }); 6592 } else { 6593 new_options.push(options[key].trim()); 6594 } 6595 } 6596 6597 // var new_options = new_options.map(function(item) { 6598 // return item.toLowerCase(); 6599 // }); 6600 6601 uniqueNames = new_options.filter(function (item, pos) { 6602 return new_options.indexOf(item) == pos; 6603 }); 6604 6605 return uniqueNames.sort(); 6606 } 6607 sort_object_by_value(options) { 6608 var sortable = []; 6609 for (var key in options) { 6610 sortable.push(key); 6611 } 6612 6613 sortable.sort(this.sortByValue); 6614 var new_options = {}; 6615 for (var i = 0; i < sortable.length; i++) { 6616 new_options[sortable[i]] = options[sortable[i]]; 6617 } 6618 6619 return new_options; 6620 } 6621 6622 // ----------------------------- 6623 // ð Directions & Nearby 6624 // ----------------------------- 6625 get_user_position() { } 6626 6627 wpgmp_get_nearby_locations() {} 6628 map_widgets() {} 6629 widget_route_tab() {} 6630 widget_nearby() {} 6631 widget_directions() {} 6632 widget_category() {} 6633 add_tab() {} 6634 show_tabs() {} 6635 create_routes() {} 6636 wpgmp_draw_route() {} 6637 wpgmp_find_direction() {} 6638 wpgmp_direction_steps() {} 6639 register_direction_tab() {} 6640 6641 wpgmp_within_radius(place, search_area) { 6642 const map_obj = this; 6643 const isGoogle = map_obj.isMapProvider("google"); 6644 6645 let radius = ""; 6646 const $radiusField = $(map_obj.container).find('[data-name="radius"]'); 6647 6648 if ($radiusField.length > 0) { 6649 radius = $radiusField.val(); 6650 } 6651 6652 const listing = map_obj.map_data.listing || {}; 6653 let dimension = listing.radius_dimension || "km"; 6654 6655 // Apply default if nothing selected 6656 if (
6657 listing.apply_default_radius === true && 6658 listing.default_radius && 6659 radius === "" 6660 ) { 6661 radius = listing.default_radius; 6662 dimension = listing.default_radius_dimension || "km"; 6663 } 6664 6665 // Convert to meters 6666 const radiusMeters = 6667 dimension === "km" 6668 ? parseFloat(radius) * 1000 6669 : parseFloat(radius) * 1609.34; 6670 6671 // Skip if input is not valid 6672 if (!radiusMeters || isNaN(radiusMeters)) return false; 6673 6674 let distance = 0; 6675 6676 if (isGoogle) { 6677 if ( 6678 typeof google.maps.geometry !== "undefined" && 6679 google.maps.geometry.spherical 6680 ) { 6681 distance = google.maps.geometry.spherical.computeDistanceBetween( 6682 place.marker.getPosition(), 6683 search_area 6684 ); 6685 } 6686 } else { 6687 const latlng1 = place.marker.getLatLng(); 6688 const latlng2 = search_area; 6689 distance = latlng1.distanceTo(latlng2); // returns meters 6690 } 6691 6692 return distance < radiusMeters; 6693 } 6694 6695 wpgmp_sort_distance(obj) { 6696 var arr = []; 6697 for (var prop in obj) { 6698 if (obj.hasOwnProperty(prop)) { 6699 arr.push({ 6700 key: prop, 6701 value: obj[prop], 6702 }); 6703 } 6704 } 6705 arr.sort(function (a, b) { 6706 return a.value - b.value; 6707 }); 6708 return arr; 6709 } 6710 // ------------- Location Auto Suggest Control---------------- 6711 // ð§ Search & Autocomplete 6712 // ----------------------------- 6713 6714 6715 async _handleKeyUp(e, inputField, resultsElement) { 6716 const map_obj = this; 6717 const isGoogle = map_obj.isMapProvider("google"); 6718 const inputText = inputField.value.trim(); 6719 const wrapper = $(inputField).closest(".wpgmp-autocomplete-wrapper"); 6720 const loader = wrapper.find(".wpgmp-autosuggest-loader"); 6721 loader.show(); 6722 let activeIndex = -1; 6723 6724 // Clear results if empty input 6725 if (!inputText) { 6726 resultsElement.innerHTML = ""; 6727 resultsElement.style.display = "none"; 6728 $(".wpgmp-autosuggest-results").hide(); 6729 loader.hide(); 6730 return; 6731 } 6732 6733 // Utility to render list and bind interactions 6734 const renderSuggestions = (suggestions, getLabel, onSelect) => { 6735 resultsElement.innerHTML = ""; 6736 resultsElement.style.display = "block"; 6737 $(".wpgmp-autosuggest-results").show(); 6738 loader.hide(); 6739 suggestions.forEach((item, index) => { 6740 const li = document.createElement("li"); 6741 li.textContent = getLabel(item); 6742 li.tabIndex = 0; 6743 li.dataset.index = index; 6744 6745 const handleSelection = () => { 6746 onSelect(item); 6747 resultsElement.innerHTML = ""; 6748 resultsElement.style.display = "none"; 6749 $(".wpgmp-autosuggest-results").hide(); 6750 activeIndex = -1; 6751 }; 6752 6753 li.addEventListener("click", handleSelection); 6754 li.addEventListener("keypress", (e) => { 6755 if (e.key === "Enter") handleSelection(); 6756 }); 6757 6758 resultsElement.appendChild(li); 6759 }); 6760 6761 // â¨ï¸ Keyboard support 6762 inputField.addEventListener("keydown", (event) => { 6763 const items = resultsElement.querySelectorAll("li"); 6764 if (!items.length) return; 6765 6766 if (event.key === "ArrowDown") { 6767 event.preventDefault(); 6768 activeIndex = (activeIndex + 1) % items.length; 6769 } else if (event.key === "ArrowUp") { 6770 event.preventDefault(); 6771 activeIndex = (activeIndex - 1 + items.length) % items.length; 6772 } else if (event.key === "Enter" && activeIndex >= 0) { 6773 event.preventDefault(); 6774 const selectedItem = items[activeIndex]; 6775 selectedItem.dispatchEvent(new Event("click")); // triggers the right one 6776 return; 6777 } else if (event.key === "Escape") { 6778 resultsElement.innerHTML = ""; 6779 resultsElement.style.display = "none"; 6780 $(".wpgmp-autosuggest-results").hide(); 6781 return; 6782 } 6783 6784 items.forEach((item, i) => { 6785 const isActive = i === activeIndex; 6786 item.classList.toggle("active", isActive); 6787 if (isActive) { 6788 inputField.value = item.textContent; // ð¢ update input as you move 6789 } 6790 }); 6791 }); 6792 6793 6794 // ð±ï¸ Close on outside click 6795 const closeOnOutsideClick = (e) => { 6796 if (!resultsElement.contains(e.target) && e.target !== inputField) { 6797 resultsElement.innerHTML = ""; 6798 resultsElement.style.display = "none"; 6799 $(".wpgmp-autosuggest-results").hide(); 6800 6801 document.removeEventListener("click", closeOnOutsideClick); 6802 } 6803 }; 6804 6805 setTimeout(() => { 6806 document.addEventListener("click", closeOnOutsideClick); 6807 }, 0); 6808 }; 6809 6810 // ð Leaflet (Nominatim) 6811 if (!isGoogle) { 6812 let baseUrl = "https://nominatim.openstreetmap.org/search"; 6813 const request = { 6814 q: inputText, 6815 limit: 10, 6816 format: "json", 6817 addressdetails: 1, 6818 }; 6819 6820 if ( 6821 wpgmp_local.wpgmp_country_specific && 6822 wpgmp_local.wpgmp_country_specific == true && 6823 wpgmp_local.wpgmp_countries && 6824 wpgmp_local.wpgmp_countries.length > 0 6825 ) { 6826 const country = wpgmp_local.wpgmp_countries.join(","); 6827 baseUrl += `?countrycodes=${country}`; 6828 } 6829
6830 try { 6831 const suggestions = await $.getJSON(baseUrl, request); 6832 6833 renderSuggestions( 6834 suggestions, 6835 (item) => item.display_name, 6836 (selected) => { 6837 map_obj.wpgmp_handle_place_selection(selected, inputField); 6838 inputField.value = selected.display_name; 6839 } 6840 ); 6841 } catch (error) { 6842 console.error("Nominatim autocomplete failed:", error); 6843 } 6844 6845 return; 6846 } 6847 6848 // ð Google Places 6849 try { 6850 const { 6851 Place, 6852 AutocompleteSessionToken, 6853 AutocompleteSuggestion, 6854 } = await google.maps.importLibrary("places"); 6855 6856 const token = new AutocompleteSessionToken(); 6857 const request = { input: inputText, sessionToken: token }; 6858 6859 if ( 6860 wpgmp_local.wpgmp_country_specific && 6861 wpgmp_local.wpgmp_country_specific == true && 6862 wpgmp_local.wpgmp_countries && 6863 wpgmp_local.wpgmp_countries.length > 0 6864 ) { 6865 request.includedRegionCodes = wpgmp_local.wpgmp_countries; 6866 } 6867 6868 const { suggestions } = 6869 await AutocompleteSuggestion.fetchAutocompleteSuggestions(request); 6870 6871 renderSuggestions( 6872 suggestions, 6873 (item) => item.placePrediction.text.toString(), 6874 async (selected) => { 6875 const place = selected.placePrediction.toPlace(); 6876 await place.fetchFields({ 6877 fields: [ 6878 "displayName", 6879 "formattedAddress", 6880 "location", 6881 "viewport", 6882 "addressComponents", 6883 ], 6884 }); 6885 6886 map_obj.wpgmp_handle_place_selection(place, inputField); 6887 inputField.value = selected.placePrediction.text.toString(); 6888 } 6889 ); 6890 } catch (error) { 6891 console.error("Google Places autocomplete failed:", error); 6892 } 6893 } 6894 6895 google_auto_suggest(obj) { 6896 var map_obj = this; 6897 6898 obj.each(function () { 6899 var current_input = this; 6900 6901 if (!$(current_input).parent().hasClass("wpgmp-autocomplete-wrapper")) { 6902 $(current_input) 6903 .wrap('<div class="wpgmp-autocomplete-wrapper"></div>') 6904 .after(' <div class="wpgmp-autosuggest-loader" style="display:none;"></div><ul class="wpgmp-autosuggest-results"></ul>'); 6905 } 6906 6907 const resultsElement = $(current_input).siblings(".wpgmp-autosuggest-results")[0]; 6908 6909 map_obj.wpgmp_initialise_autosuggest(current_input, resultsElement); 6910 }); 6911 } 6912 6913 wpgmp_initialise_autosuggest(inputField, resultsElement) { 6914 6915 $(inputField).on("input", this._debounce((e) => this._handleKeyUp(e,inputField,resultsElement), 500)); 6916 6917 } 6918 6919 wpgmp_set_search_area(address) { 6920 var map_obj = this; 6921 map_obj.wpgmp_geocode_address(address).then((info) => { 6922 if (info && info.lat && info.lng) { 6923 map_obj.search_area = map_obj.isMapProvider("google") 6924 ? new google.maps.LatLng(info.lat, info.lng) 6925 : L.latLng(info.lat, info.lng); 6926 } else { 6927 map_obj.search_area = ""; 6928 } 6929 map_obj.update_filters(); 6930 }); 6931 } 6932 6933 wpgmp_extract_place_data(place) { 6934 var map_obj = this; 6935 const data = { 6936 address: '', 6937 lat: '', 6938 lng: '', 6939 city: '', 6940 state: '', 6941 country: '', 6942 postal: '' 6943 }; 6944 6945 if (map_obj.isMapProvider('leaflet')) { 6946 data.address = place.display_name || ''; 6947 data.lat = parseFloat(place.lat); 6948 data.lng = parseFloat(place.lon); 6949 6950 const address = place.address || {}; 6951 data.city = address.city || address.county || ''; 6952 data.state = address.state || ''; 6953 data.country = address.country || ''; 6954 data.postal = address.postcode || ''; 6955 6956 } else { 6957 data.address = place.formattedAddress || ''; 6958 if (place.location) { 6959 data.lat = place.location.lat(); 6960 data.lng = place.location.lng(); 6961 } 6962 6963 // Assume `this` refers to your instance with wpgmp_finddata method 6964 const finder = this.wpgmp_finddata || instance?.wpgmp_finddata; 6965 6966 if (typeof finder === 'function') { 6967 data.country = finder.call(this, place, 'country') || ''; 6968 data.state = finder.call(this, place, 'administrative_area_level_1') || ''; 6969 data.city = ( 6970 finder.call(this, place, 'locality') || 6971 finder.call(this, place, 'administrative_area_level_2') || 6972 finder.call(this, place, 'administrative_area_level_3') || '' 6973 );
6974 data.postal = finder.call(this, place, 'postal_code') || ''; 6975 } 6976 } 6977 6978 return data; 6979} 6980 6981wpgmp_handle_place_selection(place, inputField) { 6982 const map_obj = this; 6983 const isGoogle = map_obj.isMapProvider("google"); 6984 const fieldName = $(inputField).attr("name"); 6985 const callback = $(inputField).data("wpgmp-autosuggest-callback"); 6986 6987 if (typeof callback === "function") { 6988 callback(place); 6989 return; 6990 } 6991 6992 // Extract data from place 6993 let lat, lng, city, state, country, postal, fullAddress; 6994 6995 if (isGoogle) { 6996 lat = place.location.lat(); 6997 lng = place.location.lng(); 6998 city = map_obj.wpgmp_finddata(place, "administrative_area_level_3") || 6999 map_obj.wpgmp_finddata(place, "locality"); 7000 state = map_obj.wpgmp_finddata(place, "administrative_area_level_1"); 7001 country = map_obj.wpgmp_finddata(place, "country"); 7002 postal = map_obj.wpgmp_finddata(place, "postal_code"); 7003 fullAddress = place.formattedAddress || $(inputField).val(); 7004 } else { 7005 lat = parseFloat(place.lat); 7006 lng = parseFloat(place.lon); 7007 const address = place.address || {}; 7008 city = address.city || address.county || ""; 7009 state = address.state || ""; 7010 country = address.country || ""; 7011 postal = address.postcode || ""; 7012 fullAddress = place.display_name || $(inputField).val(); 7013 } 7014 7015 // Apply marker and view 7016 map_obj.placeMarker(lat, lng); 7017 7018 // Update relevant fields 7019 if (fieldName === "location_address") { 7020 $(".google_latitude").val(lat); 7021 $(".google_longitude").val(lng); 7022 $(".google_city").val(city); 7023 $(".google_state").val(state); 7024 $(".google_country").val(country); 7025 $(".google_postal_code").val(postal); 7026 7027 if (isGoogle && place.viewport) { 7028 map_obj.map.fitBounds(place.viewport); 7029 } 7030 7031 } else if (fieldName === "wpgmp_metabox_location") { 7032 $("input[name='wpgmp_metabox_latitude']").val(lat); 7033 $("input[name='wpgmp_metabox_longitude']").val(lng); 7034 $("input[name='wpgmp_metabox_location_city']").val(city); 7035 $("input[name='wpgmp_metabox_location_state']").val(state); 7036 $("input[name='wpgmp_metabox_location_country']").val(country); 7037 $("input[name='wpgmp_metabox_location_hidden']").val(fullAddress); 7038 7039 if (isGoogle && place.viewport) { 7040 map_obj.map.fitBounds(place.viewport); 7041 } 7042 7043 } else if (fieldName === "map-search-control") { 7044 const zoom = parseInt(map_obj.settings.zoom_level_after_search || 10); 7045 map_obj.map.setZoom(zoom); 7046 map_obj.map.setCenter(isGoogle ? place.location : [lat, lng]); 7047 7048 } else { 7049 // Other pages (frontend search, etc.) 7050 map_obj.map.setCenter(isGoogle ? place.location : [lat, lng]); 7051 7052 const listing = map_obj.map_data.listing || {}; 7053 7054 // Apply default if nothing selected 7055 if (listing.apply_default_radius === true && listing.default_radius && listing.default_radius != "" ) {
7056 // Apply radius circle 7057 map_obj.draw_radius_circle(lat, lng); 7058 } 7059 7060 $(inputField).data("longitude", lng); 7061 $(inputField).data("latitude", lat); 7062 7063 if ( 7064 fieldName === "wpgmp_search_input" || 7065 $(inputField).data("wpgmp-filter-by") === "search" 7066 ) { 7067 if (map_obj.map_data.listing) { 7068 map_obj.search_area = isGoogle ? place.location : [lat, lng]; 7069 } 7070 map_obj.update_filters(); 7071 } 7072 7073 if (typeof map_obj.display_circle_when_searched === "function") { 7074 map_obj.display_circle_when_searched(place, inputField); 7075 } 7076 } 7077} 7078 7079 // ------------- Ended Location Auto Suggest Control---------------- 7080 7081 7082 get_current_location(success_func, error_func) { 7083 const map_obj = this; 7084 7085 if (typeof map_obj.user_location === "undefined") { 7086 navigator.geolocation.getCurrentPosition( 7087 (position) => { 7088 const lat = position.coords.latitude; 7089 const lng = position.coords.longitude; 7090 7091 map_obj.user_location = map_obj.isMapProvider("google") 7092 ? new google.maps.LatLng(lat, lng) 7093 : L.latLng(lat, lng); 7094 7095 if (success_func) success_func(map_obj.user_location); 7096 }, 7097 (err) => { 7098 console.warn("Geolocation error:", err); 7099 7100 map_obj.user_location = map_obj.isMapProvider("google") 7101 ? map_obj.map.getCenter() 7102 : map_obj.map.getCenter(); // both APIs support getCenter() 7103 7104 if (error_func) error_func(map_obj.user_location); 7105 }, 7106 { 7107 enableHighAccuracy: true, 7108 timeout: 50000, 7109 maximumAge: 0, 7110 } 7111 ); 7112 } else { 7113 if (success_func) success_func(map_obj.user_location); 7114 } 7115 } 7116 7117 wpgmp_geocode_address(address) { 7118 const map_obj = this; 7119 const isGoogle = map_obj.isMapProvider("google"); 7120 7121 return new Promise((resolve) => { 7122 if (!address || address.trim().length < 2) { 7123 resolve(null); 7124 return; 7125 } 7126 7127 const countries = map_obj.settings.country_codes || []; 7128 const restrictCountries = map_obj.settings.country_specific === true; 7129 7130 if (isGoogle) { 7131 const request = { address }; 7132 if (restrictCountries && countries.length > 0) { 7133 request.componentRestrictions = { 7134 country: countries.join(","), 7135 }; 7136 } 7137 const geocoder = new google.maps.Geocoder(); 7138 geocoder.geocode(request, (results, status) => { 7139 if (status === google.maps.GeocoderStatus.OK && results[0]) { 7140 const result = results[0]; 7141 const location = result.geometry.location; 7142 const components = result.address_components; 7143 7144 const extract = (type) => 7145 components.find((c) => c.types.includes(type))?.long_name || ""; 7146 7147 resolve({ 7148 address: result.formatted_address, 7149 city: 7150 extract("locality") || extract("administrative_area_level_3"), 7151 state: extract("administrative_area_level_1"), 7152 country: extract("country"), 7153 postal: extract("postal_code"), 7154 lat: location.lat(), 7155 lng: location.lng(), 7156 }); 7157 } else { 7158 resolve(null); 7159 } 7160 }); 7161 } else { 7162 const nominatimUrl = "https://nominatim.openstreetmap.org/search"; 7163 const params = { 7164 q: address, 7165 format: "json", 7166 limit: 1, 7167 addressdetails: 1, 7168 }; 7169 7170 if (restrictCountries && countries.length > 0) { 7171 params.countrycodes = countries.join(","); 7172 } 7173 7174 $.getJSON(nominatimUrl, params) 7175 .done((results) => { 7176 if (results && results.length > 0) { 7177 const r = results[0]; 7178 const a = r.address || {}; 7179 7180 resolve({ 7181 address: r.display_name, 7182 city: a.city || a.county || a.town || a.village || "", 7183 state: a.state || "", 7184 country: a.country || "", 7185 postal: a.postcode || "", 7186 lat: parseFloat(r.lat), 7187 lng: parseFloat(r.lon), 7188 }); 7189 } else { 7190 resolve(null); 7191 } 7192 }) 7193 .fail(() => resolve(null)); 7194 } 7195 }); 7196 } 7197 7198
7199 wpgmp_geocode(lat, lng) { 7200 var map_obj = this; 7201 7202 return new Promise((resolve, reject) => { 7203 if (map_obj.isMapProvider('google') && typeof google !== 'undefined') { 7204 const geocoder = new google.maps.Geocoder(); 7205 const latlng = new google.maps.LatLng(lat, lng); 7206 7207 geocoder.geocode({ location: latlng }, (results, status) => { 7208 if (status === google.maps.GeocoderStatus.OK && results[0]) { 7209 const components = results[0].address_components; 7210 7211 const getComp = (type) => { 7212 const match = components.find(c => c.types.includes(type)); 7213 return match ? match.long_name : ''; 7214 }; 7215 7216 resolve({ 7217 address: results[0].formatted_address, 7218 latitude: lat, 7219 longitude: lng, 7220 city: getComp("locality") || getComp("administrative_area_level_2") || getComp("administrative_area_level_3"), 7221 state: getComp("administrative_area_level_1"), 7222 country: getComp("country"), 7223 postal_code: getComp("postal_code") 7224 }); 7225 } else { 7226 reject('Google Geocoding failed: ' + status); 7227 } 7228 }); 7229 7230 } else if (map_obj.isMapProvider('leaflet')) { 7231 const url = `https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=${lat}&lon=${lng}`; 7232 7233 fetch(url) 7234 .then(res => res.json()) 7235 .then(data => { 7236 const addr = data.address || {}; 7237 resolve({ 7238 address: data.display_name || '', 7239 latitude: lat, 7240 longitude: lng, 7241 city: addr.city || addr.town || addr.village || addr.county || '', 7242 state: addr.state || '', 7243 country: addr.country || '', 7244 postal_code: addr.postcode || '' 7245 }); 7246 }) 7247 .catch(err => reject('Leaflet/OSM reverse geocoding failed: ' + err)); 7248 } else { 7249 reject('Unknown map provider: ' + provider); 7250 } 7251 }); 7252 } 7253 7254 show_search_control() { 7255 const map_obj = this; 7256 const isGoogle = map_obj.isMapProvider("google"); 7257 const input = $(map_obj.container).find('[data-input="map-search-control"]'); 7258 if (!input) return; 7259 7260 // Create a wrapper and move input inside it 7261 const wrapper = document.createElement('div'); 7262 wrapper.className = 'wpgmp-search-control-wrapper'; 7263 if (input[0]) { 7264 wrapper.appendChild(input[0]); 7265 } 7266 7267 7268 if (isGoogle) { 7269 const positionKey = map_obj.settings.search_control_position?.toUpperCase(); 7270 const position = google.maps.ControlPosition?.[positionKey]; 7271 7272 if (position !== undefined && map_obj.map.controls) { 7273 map_obj.map.controls[position].push(wrapper); 7274 } else { 7275 console.warn("Invalid Google search control position:", positionKey); 7276 } 7277 7278 // â Initialize autocomplete 7279 if (typeof map_obj.google_auto_suggest === "function") { 7280 map_obj.google_auto_suggest(input); 7281 } else { 7282 console.warn("google_auto_suggest() is not defined or not a function."); 7283 } 7284 7285 7286 } else { 7287 // Create a custom Leaflet control 7288 const LeafletSearchControl = L.Control.extend({ 7289 options: { 7290 position: (map_obj.settings.search_control_position || 'topright').toLowerCase(), 7291 }, 7292 onAdd: function () { 7293 return wrapper; 7294 }, 7295 }); 7296 7297 map_obj.map.addControl(new LeafletSearchControl()); 7298 } 7299 } 7300 7301 7302 // ----------------------------- 7303 // ðï¸ Categories 7304 // ----------------------------- 7305 search_category( 7306 array, 7307 cat_id, 7308 index, 7309 categories_tab_data, 7310 child_categories_tab_data 7311 ) { 7312 var map_obj = this; 7313 var flag = true; 7314 $.each(array, function (k, i) { 7315 if (k == cat_id) { 7316 index = i; 7317 flag = false; 7318 if (typeof child_categories_tab_data[cat_id] == "undefined") { 7319 child_categories_tab_data[cat_id] = {}; 7320 child_categories_tab_data[cat_id]["data"] = []; 7321 child_categories_tab_data[cat_id]["parent_cat"] = i; 7322 child_categories_tab_data[cat_id]["cat_id"] = cat_id; 7323 $.each(map_obj.categories, function (k, e) { 7324 if (e.group_map_id == cat_id) { 7325 child_categories_tab_data[cat_id]["cat_title"] = 7326 e.group_map_title; 7327 child_categories_tab_data[cat_id]["cat_marker_icon"] = 7328 e.group_marker; 7329 } 7330 }); 7331 } 7332 index = map_obj.search_category( 7333 map_obj.map_data.map_tabs.category_tab.child_cats, 7334 i, 7335 index, 7336 categories_tab_data, 7337 child_categories_tab_data 7338 ); 7339 } 7340 }); 7341 if (flag == true) { 7342 if (typeof categories_tab_data[cat_id] == "undefined") { 7343 categories_tab_data[cat_id] = {}; 7344 categories_tab_data[cat_id]["data"] = []; 7345 categories_tab_data[cat_id]["cat_id"] = cat_id; 7346 $.each(map_obj.categories, function (k, e) { 7347 if (e.group_map_id == cat_id) { 7348 categories_tab_data[cat_id]["cat_title"] = e.group_map_title; 7349 categories_tab_data[cat_id]["cat_marker_icon"] = e.group_marker; 7350 } 7351 }); 7352 } 7353 } 7354 return index; 7355 } 7356 display_sub_categories( 7357 child_categories_tab_data, 7358 cat_id, 7359 content, 7360 padding 7361 ) { 7362 var map_obj = this; 7363 7364 var category_orders = []; 7365 if (typeof child_categories_tab_data != "undefined") { 7366 $.each(child_categories_tab_data, function (index, categories) { 7367 var loc_count = categories.data.length; 7368 7369 if (typeof child_categories_tab_data != "undefined") { 7370 $.each(child_categories_tab_data, function (c, ccat) { 7371 if (ccat.parent_cat == categories.cat_id) { 7372 loc_count = loc_count + ccat.data.length; 7373 $.each(child_categories_tab_data, function (cc, cccat) { 7374 if (cccat.parent_cat == ccat.cat_id) { 7375 loc_count = loc_count + cccat.data.length; 7376 } 7377 }); 7378 } 7379 }); 7380 } 7381 categories.loc_count = loc_count; 7382 7383 if (map_obj.map_data.map_tabs.category_tab.cat_order_by == "count") { 7384 category_orders.push(categories.loc_count); 7385 } else if ( 7386 map_obj.map_data.map_tabs.category_tab.cat_order_by == "category" 7387 ) { 7388 if (categories.cat_order) { 7389 category_orders.push(categories.cat_order); 7390 } else if ( 7391 !categories.cat_order && 7392 map_obj.map_data.map_tabs.category_tab.all_cats[categories.cat_id] 7393 ) { 7394 categories.cat_order = 7395 map_obj.map_data.map_tabs.category_tab.all_cats[ 7396 categories.cat_id 7397 ].extensions_fields.cat_order;
7398 category_orders.push(categories.cat_order); 7399 } 7400 } else { 7401 if (categories.cat_title) { 7402 category_orders.push(categories.cat_title); 7403 } else if ( 7404 !categories.cat_title && 7405 map_obj.map_data.map_tabs.category_tab.all_cats[categories.cat_id] 7406 ) { 7407 categories.cat_title = 7408 map_obj.map_data.map_tabs.category_tab.all_cats[ 7409 categories.cat_id 7410 ].group_map_title; 7411 category_orders.push(categories.cat_title); 7412 } 7413 } 7414 }); 7415 } 7416 if (map_obj.map_data.map_tabs.category_tab.cat_order_by == "category") { 7417 category_orders.sort(function (a, b) { 7418 return a - b; 7419 }); 7420 } else if ( 7421 map_obj.map_data.map_tabs.category_tab.cat_order_by == "count" 7422 ) { 7423 category_orders.sort(function (a, b) { 7424 return b - a; 7425 }); 7426 } else { 7427 category_orders.sort(); 7428 } 7429 var ordered_categories = []; 7430 var check_cats = []; 7431 $.each(category_orders, function (index, cat_title) { 7432 $.each(child_categories_tab_data, function (index, categories) { 7433 var compare_with; 7434 if (map_obj.map_data.map_tabs.category_tab.cat_order_by == "count") { 7435 compare_with = categories.loc_count; 7436 } else if ( 7437 map_obj.map_data.map_tabs.category_tab.cat_order_by == "category" 7438 ) { 7439 compare_with = categories.cat_order; 7440 } else { 7441 compare_with = categories.cat_title; 7442 } 7443 7444 if ( 7445 cat_title == compare_with && 7446 $.inArray(categories.cat_id, check_cats) == -1 7447 ) { 7448 ordered_categories.push(categories); 7449 check_cats.push(categories.cat_id); 7450 } 7451 }); 7452 }); 7453 7454 $.each(ordered_categories, function (index, child_cat) { 7455 if (child_cat.parent_cat == cat_id) { 7456 var category_image = ""; 7457 7458 if ( 7459 !child_cat.cat_title && 7460 map_obj.map_data.map_tabs.category_tab.all_cats[child_cat.cat_id] 7461 ) { 7462 child_cat.cat_title = 7463 map_obj.map_data.map_tabs.category_tab.all_cats[ 7464 child_cat.cat_id 7465 ].group_map_title; 7466 } 7467 7468 if ( 7469 !child_cat.cat_marker_icon && 7470 map_obj.map_data.map_tabs.category_tab.all_cats[child_cat.cat_id] 7471 ) { 7472 child_cat.cat_marker_icon = 7473 map_obj.map_data.map_tabs.category_tab.all_cats[ 7474 child_cat.cat_id 7475 ].group_marker; 7476 } 7477 if (typeof child_cat.cat_marker_icon != "undefined") { 7478 category_image = 7479 '<span class="arrow"><img src="' + 7480 child_cat.cat_marker_icon + 7481 '"></span>'; 7482 } 7483 content += 7484 '<div class="wpgmp_tab_item" data-container="wpgmp-category-tab-item" style="padding-left:' + 7485 padding + 7486 'px;">'; 7487 7488 if ( 7489 map_obj.map_data.map_tabs.category_tab.parent_cats !== undefined && 7490 map_obj.map_data.map_tabs.category_tab.parent_cats[child_cat.cat_id] 7491 ) 7492 var child_cats_str = 7493 ' data-child-cats="' + 7494 map_obj.map_data.map_tabs.category_tab.parent_cats[ 7495 child_cat.cat_id 7496 ].join(",") + 7497 '"'; 7498 else var child_cats_str = ""; 7499 7500 content += 7501 '<input type="checkbox"' + 7502 child_cats_str + 7503 ' data-parent-cat="' + 7504 cat_id + 7505 '" data-marker-category="' + 7506 child_cat.cat_id + 7507 '" value="' + 7508 child_cat.cat_id + 7509 '">'; 7510 7511 var loc_count = child_cat.loc_count; 7512 7513 $.each( 7514 map_obj.map_data.map_tabs.category_tab.child_cats, 7515 function (k, v) { 7516 if (v == child_cat.cat_id && loc_count == 0) loc_count = ""; 7517 } 7518 ); 7519 7520 var location_count = ""; 7521 if ( 7522 map_obj.map_data.map_tabs.category_tab.show_count === true && 7523 loc_count != "" 7524 ) { 7525 location_count = " (" + loc_count + ")"; 7526 } else { 7527 location_count = ""; 7528 } 7529 7530 content += 7531 '<a href="javascript:void(0);" class="wpgmp_cat_title wpgmp-accordion accordion-close">' + 7532 child_cat.cat_title + 7533 location_count +
7534 category_image + 7535 "</a>"; 7536 7537 if (map_obj.map_data.map_tabs.category_tab.hide_location !== true) { 7538 content += 7539 '<div class="scroll-pane" style="height: 97px; width:100%;">'; 7540 content += '<ul class="wpgmp_location_container">'; 7541 7542 $.each(child_cat.data, function (name, location) { 7543 if (location.onclick_action == "marker") { 7544 content += 7545 '<li><input type="checkbox" data-marker-location="' + 7546 location.cat_location_id + 7547 '" value="' + 7548 location.cat_location_id + 7549 '" /><a data-marker="' + 7550 location.cat_location_id + 7551 '" data-zoom="' + 7552 location.cat_location_zoom + 7553 '" href="javascript:void(0);">' + 7554 location.cat_location_title + 7555 "</a></li>"; 7556 } else if (location.onclick_action == "post") { 7557 content += 7558 '<li><input type="checkbox" data-marker-location="' + 7559 location.cat_location_id + 7560 '" value="' + 7561 location.cat_location_id + 7562 '" /><a href="' + 7563 location.redirect_permalink + 7564 '" target="_blank">' + 7565 location.cat_location_title + 7566 "</a></li>"; 7567 } else if (location.onclick_action == "custom_link") { 7568 content += 7569 '<li><input type="checkbox" data-marker-location="' + 7570 location.cat_location_id + 7571 '" value="' + 7572 location.cat_location_id + 7573 '" /><a href="' + 7574 location.redirect_custom_link + 7575 '" target="_blank">' + 7576 location.cat_location_title + 7577 "</a></li>"; 7578 } 7579 }); 7580 7581 content += "</ul>"; 7582 content += "</div>"; 7583 } 7584 content += "</div>"; 7585 content += map_obj.display_sub_categories( 7586 child_categories_tab_data, 7587 child_cat.cat_id, 7588 "", 7589 padding + 20 7590 ); 7591 } else if (index + 1 == child_categories_tab_data.length) return; 7592 }); 7593 return content; 7594 } 7595 7596 // ----------------------------- 7597 // âï¸ Drawing Tools 7598 // ----------------------------- 7599 enable_drawing() { } 7600 create_polygon() { } 7601 create_polyline() { } 7602 create_circle() { } 7603 create_rectangle() { } 7604 deleteSelectedShape() { } 7605 clearSelection() { } 7606 setSelection() { } 7607 event_listener() { } 7608 7609 // ----------------------------- 7610 // ð¾ Shape Management 7611 // ----------------------------- 7612 get_shapes_options() { } 7613 set_shapes_options() { } 7614 wpgmp_save_shapes() { } 7615 wpgmp_shape_complete() { } 7616 wpgmp_save_polylines() { } 7617 wpgmp_save_polygons() { } 7618 wpgmp_save_circles() { } 7619 wpgmp_save_rectangles() { } 7620 7621 // ----------------------------- 7622 // ð§· Overlays & Layers 7623 // ----------------------------- 7624 wpgmp_image_type_overlays() { } 7625 set_kml_layer() { } 7626 set_marker_cluster() { } 7627 set_panning_control() { } 7628 set_visual_refresh() { } 7629 set_45_imagery() { } 7630 set_overlay() { } 7631 set_bicyle_layer() { } 7632 set_traffic_layer() { } 7633 set_panoramic_layer() { } 7634 set_transit_layer() { } 7635 set_weather_layer() { } 7636 set_streetview() { } 7637 7638 /** 7639 * Creates a labeled marker compatible with both Google Maps and Leaflet. 7640 */ 7641create_labeled_marker(label, title, position) { 7642 const map_obj = this; 7643 const isGoogle = map_obj.isMapProvider("google"); 7644 7645 if (isGoogle) { 7646 7647 var iconUrl; 7648 position = {'lat':position.lat(),'lng':position.lng()}; 7649 if( label.toLowerCase() == 'a') { 7650 iconUrl = wpgmp_local.place_icon_url+'marker-alpha-1.svg'; 7651 } 7652 7653 if( label.toLowerCase() == 'b') { 7654 iconUrl = wpgmp_local.place_icon_url+'marker-alpha-2.svg'; 7655 } 7656 7657 return map_obj.create_google_marker({ 7658 map: map_obj.map, 7659 position, 7660 iconUrl:iconUrl, 7661 label, 7662 title, 7663 }); 7664 7665 } else { 7666 7667 const marker = map_obj.create_leaflet_marker({ 7668 map: map_obj.map, 7669 position, 7670 label, 7671 isDivIcon: true 7672 }); 7673 7674 7675 return marker; 7676 } 7677} 7678 7679 7680 // ----------------------------- 7681 // ðª Amenities 7682 // ----------------------------- 7683 create_amenities_markers() { } 7684 7685 // ----------------------------- 7686 // ð§ Utilities 7687 // ----------------------------- 7688 load_google_fonts(fonts) { 7689 if (fonts && fonts.length > 0) { 7690 $.each(fonts, function (k, font) { 7691 if (font.indexOf(",") >= 0) { 7692 font = font.split(","); 7693 font = font[0]; 7694 } 7695 if (font.indexOf('"') >= 0) { 7696 font = font.replace('"', ""); 7697 font = font.replace('"', ""); 7698 } 7699 WebFont.load({ 7700 google: { 7701 families: [font], 7702 }, 7703 }); 7704 }); 7705 } 7706 } 7707 load_json(url) { 7708 this.map.data.loadGeoJson(url); 7709 } 7710 wpgmp_finddata() { } 7711 place_info(place_id) { 7712 var place_obj; 7713 7714 $.each(this.places, function (index, place) { 7715 if (parseInt(place.id) == parseInt(place_id)) { 7716 place_obj = place; 7717 } 7718 }); 7719 7720 return place_obj; 7721 } 7722 7723 _debounce(fn, delay) { 7724 let timer = null; 7725 return function (...args) { 7726 clearTimeout(timer); 7727 timer = setTimeout(() => fn.apply(this, args), delay); 7728 }; 7729 } 7730 7731 _encodePolyline(coords) { 7732 let output = ''; 7733 let prevLat = 0, prevLng = 0; 7734 7735 for (const [lat, lng] of coords) { 7736 const latE5 = Math.round(lat * 1e5); 7737 const lngE5 = Math.round(lng * 1e5); 7738 7739 const dLat = latE5 - prevLat; 7740 const dLng = lngE5 - prevLng; 7741 7742 output += encodeSignedNumber(dLat) + encodeSignedNumber(dLng); 7743 7744 prevLat = latE5; 7745 prevLng = lngE5; 7746 } 7747 7748 return output; 7749 7750 function encodeSignedNumber(num) { 7751 let sgnNum = num << 1; 7752 if (num < 0) { 7753 sgnNum = ~sgnNum; 7754 } 7755 return encodeNumber(sgnNum); 7756 } 7757 7758 function encodeNumber(num) { 7759 let encodeString = ''; 7760 while (num >= 0x20) { 7761 encodeString += String.fromCharCode((0x20 | (num & 0x1f)) + 63); 7762 num >>= 5; 7763 } 7764 encodeString += String.fromCharCode(num + 63); 7765 return encodeString; 7766 } 7767 } 7768 7769 _decodePolyline(encoded) { 7770 let index = 0, lat = 0, lng = 0, coordinates = []; 7771 7772 while (index < encoded.length) { 7773 let result = 1, shift = 0, b; 7774 7775 do { 7776 b = encoded.charCodeAt(index++) - 63 - 1; 7777 result += b << shift; 7778 shift += 5; 7779 } while (b >= 0x1f); 7780 7781 const deltaLat = (result & 1) ? ~(result >> 1) : (result >> 1); 7782 lat += deltaLat; 7783 7784 result = 1; 7785 shift = 0; 7786 7787 do { 7788 b = encoded.charCodeAt(index++) - 63 - 1; 7789 result += b << shift; 7790 shift += 5; 7791 } while (b >= 0x1f); 7792 7793 const deltaLng = (result & 1) ? ~(result >> 1) : (result >> 1); 7794 lng += deltaLng; 7795 7796 coordinates.push([lat / 1e5, lng / 1e5]); 7797 } 7798 7799 return coordinates; 7800 } 7801 7802 formatRouteDuration(durationString) { 7803 const totalSeconds = parseInt(durationString, 10); 7804 7805 const hours = Math.floor(totalSeconds / 3600); 7806 const minutes = Math.floor((totalSeconds % 3600) / 60); 7807 7808 let formatted = ''; 7809
7810 if (hours > 0) { 7811 formatted += hours + (hours === 1 ? ' hr ' : ' hrs '); 7812 } 7813 7814 if (minutes > 0 || hours === 0) { // Always show minutes if no hours 7815 formatted += minutes + ' mins'; 7816 } 7817 7818 return formatted.trim(); 7819 } 7820 7821 isMapProvider(providerName) { 7822 const map_obj = this; 7823 const currentProvider = (map_obj?.map_data?.provider || wpgmp_local?.map_provider || 'google').toLowerCase(); 7824 return currentProvider === providerName.toLowerCase(); 7825 } 7826 7827 isRouteProvider(providerName) { 7828 const map_obj = this; 7829 const currentProvider = (map_obj?.map_data?.route_provider || wpgmp_local?.route_provider || 'leaflet').toLowerCase(); 7830 7831 return currentProvider === providerName.toLowerCase(); 7832 } 7833 7834 /** 7835 * Adds a locate-me control to the map for both Google Maps and Leaflet 7836 */ 7837 7838register_locate_me_control() { 7839 const map_obj = this; 7840 if (map_obj.settings.locateme_control !== true) return; 7841 7842 const className = "wpgmp_locateme_control " + (map_obj.settings.locateme_control_position || "topright").toLowerCase(); 7843 const innerHTML = `<span title='${wpgmp_local.locate_me}'></span>`; 7844 7845 if (map_obj.isMapProvider("google")) { 7846 const controlDiv = document.createElement("div"); 7847 controlDiv.className = className; 7848 controlDiv.innerHTML = innerHTML; 7849 map_obj.map.controls[ 7850 google.maps.ControlPosition[map_obj.settings.locateme_control_position || "TOP_RIGHT"] 7851 ].push(controlDiv); 7852 } else { 7853 const LocateControl = L.Control.extend({ 7854 options: { position: map_obj.settings.locateme_control_position?.toLowerCase() || "topright" }, 7855 onAdd() { 7856 const container = L.DomUtil.create("div", className); 7857 container.innerHTML = innerHTML; 7858 container.title = wpgmp_local.locate_me; 7859 L.DomEvent.disableClickPropagation(container); 7860 return container; 7861 } 7862 }); 7863 map_obj.map.addControl(new LocateControl()); 7864 } 7865 7866 // Click Event Binding (Same for both) 7867 $(map_obj.container).on("click", ".wpgmp_locateme_control", function () { 7868 map_obj.get_current_location((user_location) => { 7869 const isGoogle = map_obj.isMapProvider("google"); 7870 const lat = typeof user_location.lat === 'function' ? user_location.lat() : user_location.lat; 7871 const lng = typeof user_location.lng === 'function' ? user_location.lng() : user_location.lng; 7872 const latLngObj = isGoogle ? new google.maps.LatLng(lat, lng) : L.latLng(lat, lng); 7873 7874 if (!isGoogle) { 7875 const bounds = latLngObj.toBounds(100); 7876 map_obj.map.flyToBounds(bounds, { 7877 padding: [50, 50], 7878 maxZoom: 15, 7879 animate: true, 7880 duration: 1.5 7881 }); 7882 } else { 7883 map_obj.map.panTo(latLngObj); 7884 map_obj.map.setZoom(15); 7885 } 7886 7887 if (!isGoogle && map_obj.pulse_circle && map_obj.map.hasLayer(map_obj.pulse_circle)) { 7888 map_obj.map.removeLayer(map_obj.pulse_circle); 7889 } 7890 7891 if (!isGoogle) { 7892 7893 map_obj.pulse_circle = map_obj.create_leaflet_marker({ 7894 map: map_obj.map, 7895 position: latLngObj, 7896 isDivIcon: true, 7897 html: '<div class="pulse-marker"></div>', 7898 customClass: '', // optional, for no extra class 7899 }); 7900 7901 } else { 7902 // Google Maps fallback visual marker (if needed) 7903 if (map_obj.pulse_circle) map_obj.pulse_circle.setMap(null); 7904 const markerDiv = document.createElement('div'); 7905 markerDiv.className = 'pulse-marker'; 7906 const overlay = new google.maps.OverlayView(); 7907 overlay.onAdd = function () { 7908 const layer = this.getPanes().overlayMouseTarget; 7909 layer.appendChild(markerDiv); 7910 markerDiv.style.position = 'absolute'; 7911 }; 7912 overlay.draw = function () { 7913 const projection = this.getProjection(); 7914 const point = projection.fromLatLngToDivPixel(latLngObj); 7915 if (point) { 7916 markerDiv.style.left = point.x - 15 + 'px'; 7917 markerDiv.style.top = point.y - 15 + 'px'; 7918 } 7919 }; 7920 overlay.onRemove = function () { 7921 if (markerDiv.parentNode) markerDiv.parentNode.removeChild(markerDiv); 7922 };
7923 overlay.setMap(map_obj.map); 7924 map_obj.pulse_circle = overlay; 7925 } 7926 7927 if (map_obj.map_center_marker) { 7928 map_obj.map_center_marker.setPosition(latLngObj); 7929 } 7930 // Draw/Move circle 7931 if (map_obj.set_center_circle) { 7932 if (map_obj.isMapProvider("google")) { 7933 map_obj.set_center_circle.setCenter(latLngObj); 7934 } else if (typeof map_obj.set_center_circle.setLatLng === "function") { 7935 map_obj.set_center_circle.setLatLng(latLngObj); 7936 } 7937 } 7938 7939 7940 }); 7941 }); 7942} 7943 7944getMarkerSize() { 7945 const isMobile = window.innerWidth <= 767; 7946 const isRetina = window.devicePixelRatio > 1.5; 7947 7948 let size; 7949 if (isMobile) { 7950 size = wpgmp_local.mobile_marker_size || [24,24]; 7951 } else if (isRetina) { 7952 size = wpgmp_local.retina_marker_size || [64,64]; 7953 } else { 7954 size = wpgmp_local.desktop_marker_size || [32,32]; 7955 } 7956 7957 return size; 7958} 7959 7960 compute_distance(lat1, lng1, lat2, lng2) { 7961 var map_obj = this; 7962 const isGoogle = map_obj.isMapProvider('google'); 7963 7964 lat1 = parseFloat(lat1); 7965 lng1 = parseFloat(lng1); 7966 lat2 = parseFloat(lat2); 7967 lng2 = parseFloat(lng2); 7968 7969 if (isGoogle && typeof google !== 'undefined' && google.maps?.geometry?.spherical) { 7970 const point1 = new google.maps.LatLng(lat1, lng1); 7971 const point2 = new google.maps.LatLng(lat2, lng2); 7972 return google.maps.geometry.spherical.computeDistanceBetween(point1, point2); // meters 7973 } 7974 7975 // Leaflet fallback 7976 if (typeof L !== 'undefined') { 7977 const point1 = L.latLng(lat1, lng1); 7978 const point2 = L.latLng(lat2, lng2); 7979 return point1.distanceTo(point2); // meters 7980 } 7981 7982 console.warn('No supported map provider available to compute distance.'); 7983 return null; 7984} 7985 7986 7987 7988} 7989 7990window.WpgmpBaseMaps = WpgmpBaseMaps; 7991 7992})(jQuery, window, document); 7993/** 7994 * WpgmpGoogleMaps class - extends BaseMaps for Google Maps provider. 7995 */ 7996 7997(function ($, window, document) { 7998 class WpgmpGoogleMaps extends WpgmpBaseMaps { 7999 constructor(element, map_data = {}, places = []) { 8000 super(element, map_data, places); 8001 8002 var suppress_markers = false; 8003 if (this.map_data.map_tabs && this.map_data.map_tabs.direction_tab) { 8004 suppress_markers = 8005 this.map_data.map_tabs.direction_tab.suppress_markers; 8006 } 8007 8008 this.infowindow_marker = new google.maps.InfoWindow(); 8009 this.infobox = this.wpgmpInitializeInfoBox(); 8010 this.newRoutesApiURL = 8011 "https://routes.googleapis.com/directions/v2:computeRoutes"; 8012 this.searchNearbyApiURL = 8013 "https://places.googleapis.com/v1/places:searchNearby"; 8014 8015 } 8016 // ========================= 8017// ð Part 1: Initialization & Responsive Setup 8018// ========================= 8019 init() { 8020 const map_obj = this; 8021 8022 // Determine current screen type 8023 let isMobile = false; 8024 let screen_type = "desktop"; 8025 const screen_size = $(window).width(); 8026 8027 if (screen_size <= 480) { 8028 screen_type = "smartphones"; 8029 } else if (screen_size > 480 && screen_size <= 768) { 8030 screen_type = "ipads"; 8031 } else if (screen_size >= 1824) { 8032 screen_type = "large-screens"; 8033 } 8034 8035 // Apply mobile-specific settings if configured 8036 if (screen_type !== "desktop" && map_obj.settings.mobile_specific === true) { 8037 isMobile = true; 8038 8039 const mobileSettings = map_obj.settings.screens?.[screen_type]; 8040 if (mobileSettings) { 8041 map_obj.settings.width_mobile = mobileSettings.map_width_mobile; 8042 map_obj.settings.height_mobile = mobileSettings.map_height_mobile; 8043 map_obj.settings.zoom = parseInt(mobileSettings.map_zoom_level_mobile); 8044 map_obj.settings.draggable = mobileSettings.map_draggable_mobile !== "false"; 8045 map_obj.settings.scroll_wheel = mobileSettings.map_scrolling_wheel_mobile !== "false"; 8046 } 8047 8048 // Apply mobile dimensions 8049 if (map_obj.settings.width_mobile !== "") { 8050 $(map_obj.element).css("width", map_obj.settings.width_mobile); 8051 } 8052 8053 if (map_obj.settings.height_mobile !== "") { 8054 $(map_obj.element).css("height", map_obj.settings.height_mobile); 8055 } 8056 } 8057 8058 // ========================= 8059 // ðºï¸ Part 2: Map Initialization and Configuration 8060 // ========================= 8061 8062 const center = new google.maps.LatLng( 8063 map_obj.settings.center_lat, 8064 map_obj.settings.center_lng 8065 ); 8066 8067 const mapOptions = { 8068 zoom: parseInt(map_obj.settings.zoom), 8069 center: center, 8070 scrollwheel: map_obj.settings.scroll_wheel !== "true", 8071 disableDoubleClickZoom: map_obj.settings.doubleclickzoom === false, 8072 zoomControl: map_obj.settings.zoom_control === true, 8073 fullscreenControl: map_obj.settings.full_screen_control === true, 8074 fullscreenControlOptions: { 8075 position: google.maps.ControlPosition[map_obj.settings.full_screen_control_position], 8076 }, 8077 zoomControlOptions: { 8078 style: google.maps.ZoomControlStyle[map_obj.settings.zoom_control_style], 8079 position: google.maps.ControlPosition[map_obj.settings.zoom_control_position], 8080 }, 8081 mapTypeControl: map_obj.settings.map_type_control === true, 8082 mapTypeControlOptions: { 8083 style: google.maps.MapTypeControlStyle[map_obj.settings.map_type_control_style], 8084 position: google.maps.ControlPosition[map_obj.settings.map_type_control_position], 8085 }, 8086 cameraControlOptions: { 8087 position: google.maps.ControlPosition[map_obj.settings.camera_control_position], 8088 }, 8089 scaleControl: map_obj.settings.scale_control === true, 8090 streetViewControl: map_obj.settings.street_view_control === true, 8091 streetViewControlOptions: { 8092 position: google.maps.ControlPosition[map_obj.settings.street_view_control_position], 8093 }, 8094 overviewMapControl: map_obj.settings.overview_map_control === true, 8095 overviewMapControlOptions: { 8096 opened: map_obj.settings.overview_map_control, 8097 }, 8098 draggable: map_obj.settings.draggable, 8099 mapTypeId: google.maps.MapTypeId[map_obj.settings.map_type_id], 8100 styles: eval(map_obj.map_data.styles), 8101 minZoom: parseInt(map_obj.settings.min_zoom), 8102 maxZoom: parseInt(map_obj.settings.max_zoom), 8103 gestureHandling: map_obj.settings.gesture, 8104 cameraControl: map_obj.settings.camera_control === true, 8105 } 8106 8107 let useAdvancedMarker = (wpgmp_local.use_advanced_marker == 'true') ? true : false;
8108 const isApplyStyles = (map_obj.map_data.styles && map_obj.map_data.styles!='') ? true:false; 8109 const spiderfier_enabled = map_obj.map_data.map_marker_spiderfier_setting?.marker_spiderfy === "true"; 8110 8111 if(map_obj.map_data.marker_cluster){ 8112 // Do not work with marker cluster 8113 useAdvancedMarker = false; 8114 } else if(isApplyStyles) { 8115 // Do not work with snazzy maps or custom styles 8116 useAdvancedMarker = false; 8117 } else if(spiderfier_enabled){ 8118 // Do no work with spiderfier effects. 8119 useAdvancedMarker = false; 8120 } 8121 8122 map_obj.useAdvancedMarker = useAdvancedMarker; 8123 8124 if (map_obj.useAdvancedMarker === true && isApplyStyles == false) { 8125 mapOptions.mapId = "mapID" + map_obj.map_data.map_property.map_id; 8126 } 8127 8128 map_obj.map = new google.maps.Map(map_obj.element, mapOptions); 8129 8130 if (typeof google?.maps?.marker?.AdvancedMarkerElement !== 'undefined') { 8131 8132 if (typeof google.maps.Animation === 'undefined') { 8133 google.maps.Animation = { 8134 BOUNCE: 'BOUNCE', 8135 DROP: 'DROP' // Optional: future support 8136 }; 8137 } 8138 8139 const proto = google.maps.marker.AdvancedMarkerElement.prototype; 8140 8141 if (typeof proto.getPosition !== 'function') { 8142 proto.getPosition = function () { 8143 return this.position; 8144 }; 8145 } 8146 8147 if (typeof proto.setPosition !== 'function') { 8148 proto.setPosition = function (latlng) { 8149 this.position = latlng; 8150 }; 8151 } 8152 8153 if (typeof proto.setAnimation !== 'function') { 8154 proto.setAnimation = function (animationType) { 8155 //console.warn("setAnimation() is not natively supported in AdvancedMarkerElement. Applying custom behavior."); 8156 this._animation = animationType; 8157 8158 const el = this.content; 8159 if (!el || !(el instanceof HTMLElement)) return; 8160 8161 el.classList.remove('gmp-marker-bounce', 'gmp-marker-drop'); 8162 8163 if (animationType === google.maps.Animation.BOUNCE) { 8164 el.classList.add('gmp-marker-bounce'); 8165 } else if (animationType === google.maps.Animation.DROP) { 8166 el.classList.add('gmp-marker-drop'); 8167 } 8168 8169 }; 8170 } 8171 8172 if (typeof proto.getAnimation !== 'function') { 8173 proto.getAnimation = function () { 8174 return this._animation || null; 8175 }; 8176 } 8177 8178 if (typeof proto.setVisible !== 'function') { 8179 proto.setVisible = function (visible) { 8180 if (visible) { 8181 if (!this.map && this._boundMap) { 8182 this.map = this._boundMap; 8183 } 8184 } else { 8185 this._boundMap = this.map; // store map reference before hiding 8186 this.map = null; 8187 } 8188 this._visible = visible; 8189 }; 8190 } 8191 8192 if (typeof proto.getVisible !== 'function') { 8193 proto.getVisible = function () { 8194 return this._visible || !!this.map; 8195 }; 8196 } 8197 8198 if (typeof proto.bindMap !== 'function') { 8199 proto.bindMap = function (map) { 8200 this._boundMap = map; 8201 this.map = map; 8202 this._visible = true; 8203 }; 8204 } 8205 8206 if (typeof google.maps.Marker.prototype.bindMap !== 'function') { 8207 google.maps.Marker.prototype.bindMap = function (map) { 8208 this._boundMap = map; 8209 this.setMap(map); 8210 }; 8211 } 8212 8213 if (typeof proto.setIcon !== 'function') { 8214 proto.setIcon = function (icon) { 8215 if (typeof icon !== 'object' || !icon.url) { 8216 console.warn('Invalid icon object passed to setIcon'); 8217 return; 8218 } 8219 8220 const iconUrl = icon.url; 8221 const size = icon.scaledSize 8222 ? [icon.scaledSize.width, icon.scaledSize.height] 8223 : [32, 32]; // fallback default size 8224 8225 // Store icon size for reuse 8226 this._iconSize = size; 8227 8228 /* 8229 const iconElement = document.createElement('img'); 8230 iconElement.src = iconUrl; 8231 iconElement.alt = this.title || ''; 8232 iconElement.style.width = `${size[0]}px`; 8233 iconElement.style.height = `${size[1]}px`; 8234 8235 if (this.title) { 8236 iconElement.title = this.title; 8237 } 8238 */ 8239 const iconElement = map_obj.createIconElement(iconUrl, this.title, size); 8240 8241 this.content = iconElement; 8242 }; 8243 } 8244 8245 // Optional: allow storing the icon size for reuse 8246 if (typeof proto.setIconSize !== 'function') { 8247 proto.setIconSize = function (sizeArray) { 8248 if (Array.isArray(sizeArray) && sizeArray.length === 2) { 8249 this._iconSize = sizeArray; 8250 } 8251 }; 8252 } 8253 8254 } 8255 8256 // Handle template placeholder storage if using advanced template mode 8257 map_obj.search_button = false;
8258 if (map_obj.map_data.map_options.advance_template === true) { 8259 const $listingElement = $(document).find( 8260 '[data-listing-content="true"][data-wpgmp-map-id]' 8261 ); 8262 const eachContent = $listingElement.prop("innerHTML"); 8263 8264 if (eachContent) { 8265 map_obj.map_data.listing.listing_placeholder = eachContent; 8266 } 8267 } 8268 8269 // ========================= 8270 // ð Part 3: Core Marker + Layer Initialization 8271 // ========================= 8272 8273 // Trigger lifecycle hook after map is initialized 8274 map_obj.map_loaded(); 8275 8276 // Handle responsive layout 8277 map_obj.responsive_map(); 8278 8279 // Create and render all map markers 8280 map_obj.create_markers(); 8281 map_obj.display_markers(); 8282 8283 // Load Google Fonts if configured 8284 if (typeof map_obj.settings.google_fonts !== "undefined") { 8285 map_obj.load_google_fonts(map_obj.settings.google_fonts); 8286 } 8287 8288 // Show search control box if enabled 8289 if (map_obj.settings.search_control === true) { 8290 map_obj.show_search_control(); 8291 } 8292 // Add custom map control buttons if enabled 8293 if (map_obj.settings.map_control === true) { 8294 if (typeof map_obj.settings.map_control_settings !== "undefined") { 8295 $.each(map_obj.settings.map_control_settings, function (k, val) { 8296 const centerControlDiv = document.createElement("div"); 8297 map_obj.create_element(centerControlDiv, map_obj.map, val.html); 8298 centerControlDiv.index = 1; 8299 map_obj.map.controls[ 8300 google.maps.ControlPosition[val.position] 8301 ].push(centerControlDiv); 8302 }); 8303 } 8304 } 8305 8306 // Register "Locate Me" button if enabled 8307 if (map_obj.settings.locateme_control === true && map_obj.settings.locateme_control_position) { 8308 map_obj.register_locate_me_control(); 8309 } 8310 8311 // Overlays and Visual Layers 8312 if (map_obj.map_data.street_view) map_obj.set_streetview(center); 8313 if (map_obj.map_data.weather_layer) map_obj.set_weather_layer(); 8314 if (map_obj.map_data.bicyle_layer) map_obj.set_bicyle_layer(); 8315 if (map_obj.map_data.traffic_layer) map_obj.set_traffic_layer(); 8316 if (map_obj.map_data.transit_layer) map_obj.set_transit_layer(); 8317 if (map_obj.map_data.panoramio_layer) map_obj.set_panoramic_layer(); 8318 if (map_obj.map_data.overlay_setting) map_obj.set_overlay(); 8319 if (map_obj.settings.display_45_imagery === "45") map_obj.set_45_imagery(); 8320 if (map_obj.map_data.map_visual_refresh === true) map_obj.set_visual_refresh(); 8321 8322 // Cluster markers if enabled 8323 if (map_obj.map_data.marker_cluster) map_obj.set_marker_cluster(); 8324 8325 // Enable panning control if configured 8326 if (map_obj.map_data.panning_control) map_obj.set_panning_control(); 8327 8328 // Load KML layer 8329 if (map_obj.map_data.kml_layer) map_obj.set_kml_layer(); 8330 8331 // ========================= 8332 // ð§© Part 4: Shapes, Routes, Sorting, and Listings 8333 // ========================= 8334 8335 // Create shapes (polygons, polylines, circles, rectangles) 8336 if (map_obj.map_data.shapes?.shape) { 8337 map_obj.opened_info = map_obj.infowindow_marker; 8338 8339 if (map_obj.map_data.shapes.shape.polygons) { 8340 map_obj.create_polygon(); 8341 } 8342 8343 if (map_obj.map_data.shapes.shape.polylines) { 8344 map_obj.create_polyline(); 8345 } 8346 8347 if (map_obj.map_data.shapes.shape.circles) { 8348 map_obj.create_circle(); 8349 } 8350 8351 if (map_obj.map_data.shapes.shape.rectangles) { 8352 map_obj.create_rectangle(); 8353 } 8354 } 8355 8356 // Apply default sorting if enabled (for listing or category tabs) 8357 if (map_obj.map_data.listing) { 8358 if (map_obj.map_data.listing.default_sorting && map_obj.map_data.autosort) { 8359 let data_type = ""; 8360 if (map_obj.map_data.listing.default_sorting.orderby === "listorder") { 8361 data_type = "num"; 8362 } 8363 8364 map_obj.sorting( 8365 map_obj.map_data.listing.default_sorting.orderby, 8366 map_obj.map_data.listing.default_sorting.inorder, 8367 data_type 8368 ); 8369 } 8370 } else if (map_obj.map_data.map_tabs?.category_tab?.cat_tab) { 8371 if (!map_obj.map_data.map_tabs.category_tab.cat_post_order) { 8372 map_obj.map_data.map_tabs.category_tab.cat_post_order = "asc"; 8373 } 8374 8375 if (map_obj.map_data.autosort) { 8376 map_obj.sorting("title", map_obj.map_data.map_tabs.category_tab.cat_post_order); 8377 map_obj.map_data.places_for_category_tabs = map_obj.map_data.places; 8378 map_obj.map_data.places_for_category_tabs = map_obj.sorting_inside_tabs( 8379 map_obj.map_data.places_for_category_tabs, 8380 map_obj.map_data.map_tabs.category_tab.cat_post_order 8381 ); 8382 } 8383 } 8384 8385 // ========================= 8386 // ð Part 5: Filter UI, Events & Listeners 8387 // ========================= 8388 8389 if (map_obj.map_data.listing) { 8390 8391 // Inject filters and custom filters into UI 8392 map_obj.display_filters_listing(); 8393 map_obj.custom_filters(); 8394 if ( 8395 map_obj !== "undefined" && 8396 map_obj.map_data.default_amenities != undefined && 8397 map_obj.map_data.enableAmenitiesListing != undefined && 8398 map_obj.map_data.enableAmenitiesListing 8399 ) { 8400 //WAIT WHILE LOAD AMENITIES 8401 } else { 8402 $(map_obj.container) 8403 .find(".location_pagination" + map_obj.map_data.map_property.map_id) 8404 .pagination(map_obj.show_places.length, { 8405 callback: map_obj.display_places_listing, 8406 map_data: map_obj, 8407 items_per_page: 8408 map_obj.map_data.listing.pagination.listing_per_page, 8409 prev_text: wpgmp_local.prev, 8410 next_text: wpgmp_local.next, 8411 }); 8412 } 8413 8414 8415 } 8416 8417 // ========================= 8418 // ð Part 7: Autocomplete, Events & Final Touches 8419 // ========================= 8420 8421 // Load GeoJSON data (if any) 8422 if (typeof map_obj.map_data.geojson !== "undefined") { 8423 map_obj.load_json(map_obj.map_data.geojson); 8424 } 8425 8426 8427 8428 // Register and re-register Google Autocomplete
8429 map_obj.google_auto_suggest($(".wpgmp_auto_suggest")); 8430 8431 // Optionally show center circle and marker 8432 if (map_obj.settings.show_center_circle === true) { 8433 map_obj.show_center_circle(); 8434 } 8435 8436 if (map_obj.settings.show_center_marker === true) { 8437 map_obj.show_center_marker(); 8438 } 8439 8440 // Enable drawing manager if shape editing is enabled 8441 8442 if (map_obj.map_data.shapes?.drawing_editable === true) { 8443 map_obj.enable_drawing(); 8444 } 8445 8446 // Fit bounds to markers if setting enabled 8447 if (map_obj.settings.fit_bounds === true) { 8448 map_obj.fit_bounds(); 8449 } 8450 8451 // Register any custom plugin or map-specific JS events 8452 map_obj.register_events(); 8453 8454 // Initialize accordion behavior 8455 $(map_obj.container).find(".wpgmp-accordion").accordion({ 8456 speed: "slow", 8457 }); 8458 8459 if(map_obj.map_data.map_options.heat_map){ 8460 map_obj.display_heat_map(); 8461 8462 } 8463 8464 } 8465 8466 createIconElement(iconUrl, title = '', iconSize = [32, 32]) { 8467 const icon = document.createElement('img'); 8468 icon.src = iconUrl; 8469 icon.alt = title; 8470 // Only apply size if the icon is an SVG 8471 if (iconUrl.toLowerCase().includes('image/svg') || iconUrl.toLowerCase().endsWith('.svg')) { 8472 icon.style.width = `${iconSize[0]}px`; 8473 icon.style.height = `${iconSize[1]}px`; 8474 } 8475 icon.title = title; 8476 icon.style.objectFit = 'contain'; 8477 return icon; 8478 } 8479 8480 createMarker(place) { 8481 var map_obj = this; 8482 var map = map_obj.map; 8483 var iconSize = map_obj.getMarkerSize(); 8484 var image = { 8485 url: place.icon, 8486 scaledSize: new google.maps.Size(iconSize[0], iconSize[1]), 8487 }; 8488 8489 place.marker = map_obj.create_google_marker({ 8490 map: map, 8491 position: {lat:place.geometry.location.lat(),lng:place.geometry.location.lng()}, 8492 iconUrl: place.icon, 8493 }); 8494 8495 var post_info_class = "fc-infowindow-"; 8496 place.marker = place.marker; 8497 place.address = place.vicinity; 8498 place.title = place.name; 8499 place.location = {}; 8500 place.location.onclick_action = "marker"; 8501 var content = ""; 8502 8503 var temp_listing_placeholder = ""; 8504 var post_info_class = "fc-infowindow-"; 8505 if (place.source == "post") { 8506 temp_listing_placeholder = map_obj.settings.infowindow_geotags_setting; 8507 post_info_class = 8508 "wpgmp_infowindow_post fc-item-" + 8509 map_obj.settings.infowindow_post_skin.name; 8510 } else { 8511 temp_listing_placeholder = map_obj.settings.infowindow_setting; 8512 if ( 8513 map_obj.map_data.page != "edit_location" && 8514 map_obj.settings.infowindow_skin 8515 ) 8516 post_info_class = 8517 "fc-infowindow-" + map_obj.settings.infowindow_skin.name; 8518 } 8519 8520 if (typeof temp_listing_placeholder == "undefined") { 8521 temp_listing_placeholder = place.content; 8522 } 8523 8524 var marker_image = ""; 8525 var image_url = 8526 typeof place.photos !== "undefined" 8527 ? place.photos[0].getUrl({ maxWidth: 400, maxHeight: 400 }) 8528 : place.icon; 8529 marker_image = 8530 "<div class='fc-feature-img amenities_image'><img alt='" + 8531 place.vicinity + 8532 "' src='" + 8533 image_url + 8534 "' class='wpgmp_marker_image wpgmp_amenities_image' /></div>"; 8535 8536 var replaceData = { 8537 "{marker_id}": place.id, 8538 "{marker_title}": place.name, 8539 "{marker_address}": place.vicinity, 8540 "{marker_latitude}": place.geometry.location.lat(), 8541 "{marker_longitude}": place.geometry.location.lng(), 8542 "{marker_city}": "", 8543 "{marker_state}": "", 8544 "{marker_country}": "", 8545 "{marker_postal_code}": "", 8546 "{marker_zoom}": "", 8547 "{marker_icon}": place.icon, 8548 "{marker_category}": place.types[0], 8549 "{marker_message}": place.content, 8550 "{marker_image}": marker_image, 8551 }; 8552 8553 for (var prop in replaceData) { 8554 if (replaceData[prop] == undefined || replaceData[prop] == "undefined") 8555 replaceData[prop] = ""; 8556 } 8557 8558 if (temp_listing_placeholder) { 8559 temp_listing_placeholder = temp_listing_placeholder.replace( 8560 /{#if (.*?)}([\s\S]*?){\/if}/g, 8561 function (match, p1, p2) { 8562 return replaceData["{" + p1 + "}"] ? p2 : ""; 8563 } 8564 ); 8565 8566 temp_listing_placeholder = temp_listing_placeholder.replace( 8567 /{[^{}]+}/g, 8568 function (match) { 8569 if (match in replaceData) { 8570 return replaceData[match]; 8571 } else { 8572 return ""; 8573 } 8574 } 8575 ); 8576 8577 var temp_string = temp_listing_placeholder; 8578 var temp_object = $("<div/>").html(temp_string); 8579 $(temp_object) 8580 .find(".wpgmp_extra_field:contains('wpgmp_empty')") 8581 .remove(); 8582 $(temp_object).find(".wpgmp_empty").prev().remove(); 8583 $(temp_object).find(".wpgmp_empty").remove(); 8584 8585 content = $(temp_object).prop("outerHTML").toString(); 8586 } 8587 8588 if (content === "") { 8589 if ( 8590 map_obj.settings.map_infowindow_customisations === true && 8591 map_obj.settings.show_infowindow_header === true 8592 ) 8593 content = 8594 '<div class="wpgmp_infowindow ' + 8595 post_info_class + 8596 '"><div class="wpgmp_iw_head"><div class="wpgmp_iw_head_content">' + 8597 place.name + 8598 '</div></div><div class="wpgmp_iw_content">' + 8599 place.vicinity + 8600 "</div></div>"; 8601 else 8602 content = 8603 '<div class="wpgmp_infowindow ' + 8604 post_info_class + 8605 '"><div class="wpgmp_iw_content">' + 8606 place.content + 8607 "</div></div>"; 8608 } else { 8609 if ( 8610 map_obj.settings.map_infowindow_customisations === true && 8611 map_obj.settings.show_infowindow_header === true 8612 ) 8613 content = 8614 '<div class="wpgmp_infowindow ' + 8615 post_info_class + 8616 '"><div class="wpgmp_iw_head"><div class="wpgmp_iw_head_content">' + 8617 place.name + 8618 '</div></div><div class="wpgmp_iw_content">' + 8619 content + 8620 "</div></div>"; 8621 else 8622 content = 8623 '<div class="wpgmp_infowindow ' + 8624 post_info_class + 8625 '"><div class="wpgmp_iw_content">' + 8626 content + 8627 "</div></div>"; 8628 } 8629 8630 place.infowindow_data = content; 8631 place.infowindow = map_obj.infowindow_marker; 8632 var on_event = map_obj.settings.infowindow_open_event; 8633 8634 map_obj.event_listener(place.marker, on_event, function () { 8635 $.each(map_obj.places, function (key, prev_place) { 8636 prev_place.infowindow.close(); 8637 prev_place.marker.setAnimation(null); 8638 }); 8639 map_obj.openInfoWindow(place); 8640 }); 8641 8642 map_obj.places.push(place); 8643 } 8644 wpgmp_image_type_overlays() { 8645 var map_obj = this; 8646 var imageMapType = new google.maps.ImageMapType({ 8647 getTileUrl(coord, zoom) { 8648 return [
8649 "http://www.gstatic.com/io2010maps/tiles/5/L2_", 8650 zoom, 8651 "_", 8652 coord.x, 8653 "_", 8654 coord.y, 8655 ".png", 8656 ].join(""); 8657 }, 8658 tileSize: new google.maps.Size(256, 256), 8659 }); 8660 8661 map_obj.map.overlayMapTypes.push(imageMapType); 8662 } 8663 8664 get_user_position() { 8665 var map_obj = this; 8666 8667 navigator.geolocation.getCurrentPosition( 8668 function (position) { 8669 map_obj.user_lat_lng = new google.maps.LatLng( 8670 position.coords.latitude, 8671 position.coords.longitude 8672 ); 8673 }, 8674 function (ErrorPosition) {}, 8675 { 8676 enableHighAccuracy: true, 8677 timeout: 5000, 8678 maximumAge: 0, 8679 } 8680 ); 8681 } 8682 8683 wpgmp_finddata(result, type) { 8684 var component_name = ""; 8685 8686 for (var i = 0; i < result.addressComponents.length; ++i) { 8687 var component = result.addressComponents[i]; 8688 $.each(component.types, function (index, value) { 8689 if (value == type) { 8690 component_name = component.longText; 8691 } 8692 }); 8693 } 8694 8695 return component_name; 8696 } 8697 8698 clearSelection() { 8699 var map_obj = this; 8700 if (map_obj.selectedShape) { 8701 map_obj.selectedShape.setEditable(false); 8702 map_obj.selectedShape = null; 8703 } 8704 } 8705 setSelection(shape) { 8706 var map_obj = this; 8707 map_obj.clearSelection(); 8708 map_obj.selectedShape = shape; 8709 map_obj.selectedShape.setEditable(true); 8710 } 8711 deleteSelectedShape() { 8712 var map_obj = this; 8713 var key; 8714 if (map_obj.selectedShape) { 8715 for (key in map_obj.wpgmp_circles) { 8716 if (map_obj.wpgmp_circles[key] == map_obj.selectedShape) { 8717 map_obj.wpgmp_circles.splice(key, 1); 8718 } 8719 } 8720 for (key in map_obj.wpgmp_rectangles) { 8721 if (map_obj.wpgmp_rectangles[key] == map_obj.selectedShape) { 8722 map_obj.wpgmp_rectangles.splice(key, 1); 8723 } 8724 } 8725 for (key in map_obj.wpgmp_polygons) { 8726 if (map_obj.wpgmp_polygons[key] == map_obj.selectedShape) { 8727 map_obj.wpgmp_polygons.splice(key, 1); 8728 } 8729 } 8730 for (key in map_obj.wpgmp_polylines) { 8731 if (map_obj.wpgmp_polylines[key] == map_obj.selectedShape) { 8732 map_obj.wpgmp_polylines.splice(key, 1); 8733 } 8734 } 8735 map_obj.selectedShape.setMap(null); 8736 } 8737 } 8738 8739 create_google_marker({ 8740 map, 8741 position, 8742 iconUrl = null, 8743 title = '', 8744 label = '', 8745 draggable = false, 8746 clickable = true, 8747 anchorPoint = null 8748 }) { 8749 const map_obj = this; 8750 8751 const lat = parseFloat(position.lat || position.lat()); 8752 const lng = parseFloat(position.lng || position.lng()); 8753 const markerLatLng = new google.maps.LatLng(lat, lng); 8754 8755 const iconSize = map_obj.getMarkerSize?.() || [32, 32]; 8756 8757 // Default icon fallback 8758 if (!iconUrl || iconUrl.trim() === '') { 8759 iconUrl = map_obj.settings.marker_default_icon || wpgmp_local.default_marker_icon; 8760 } 8761 8762 const isSvg = iconUrl.toLowerCase().includes('image/svg') || iconUrl.toLowerCase().endsWith('.svg'); 8763 8764 if (map_obj.useAdvancedMarker && google.maps.marker?.AdvancedMarkerElement ) { 8765 // AdvancedMarkerElement version 8766 const iconElement = isSvg ? map_obj.createIconElement(iconUrl, title, iconSize) : map_obj.createIconElement(iconUrl, title); 8767 8768 return new google.maps.marker.AdvancedMarkerElement({ 8769 map: map, 8770 position: markerLatLng, 8771 title: title, 8772 content: iconElement, 8773 }); 8774 8775 } else { 8776 // Fallback to classic google.maps.Marker 8777 const markerOptions = { 8778 position: markerLatLng, 8779 map, 8780 title, 8781 label, 8782 draggable, 8783 clickable, 8784 }; 8785 8786 if (iconUrl) { 8787 markerOptions.icon = { 8788 url: iconUrl, 8789 }; 8790 if (isSvg) { 8791 markerOptions.icon.scaledSize = new google.maps.Size(parseInt(iconSize[0]), parseInt(iconSize[1])); 8792 } 8793 } 8794 8795 if (anchorPoint) { 8796 markerOptions.anchorPoint = new google.maps.Point(anchorPoint.x, anchorPoint.y); 8797 } 8798 8799 return new google.maps.Marker(markerOptions); 8800 } 8801 } 8802 8803 display_heat_map(){ 8804 var map_obj = this; 8805 8806 if (!map_obj || !map_obj.places) { 8807 return; 8808 } 8809 8810 map_obj.heatmapData = []; 8811
8812 map_obj.places.forEach(function(place) { 8813 8814 if ( 8815 place.location && 8816 place.location.lat && 8817 place.location.lng 8818 ) { 8819 map_obj.heatmapData.push( 8820 new google.maps.LatLng( 8821 parseFloat(place.location.lat), 8822 parseFloat(place.location.lng) 8823 ) 8824 ); 8825 } 8826 8827 }); 8828 var heat_map_radius = parseInt(map_obj.map_data.map_options.heat_map_radius, 10) || 20; 8829 var heat_map_opacity = parseFloat(map_obj.map_data.map_options.heat_map_opacity); 8830 8831 heat_map_opacity = isNaN(heat_map_opacity) ? 0.6 : heat_map_opacity; 8832 8833 map_obj.heatmap = new google.maps.visualization.HeatmapLayer({ 8834 data: map_obj.heatmapData, 8835 map: map_obj.map, 8836 radius: heat_map_radius, 8837 opacity: heat_map_opacity 8838 }); 8839 } 8840 8841 enable_drawing() { 8842 var map_obj = this; 8843 map_obj.drawingmanager = new google.maps.drawing.DrawingManager({ 8844 drawingMode: null, 8845 drawingControl: true, 8846 drawingControlOptions: { 8847 position: google.maps.ControlPosition.TOP_CENTER, 8848 drawingModes: [ 8849 google.maps.drawing.OverlayType.CIRCLE, 8850 google.maps.drawing.OverlayType.POLYGON, 8851 google.maps.drawing.OverlayType.POLYLINE, 8852 google.maps.drawing.OverlayType.RECTANGLE, 8853 ], 8854 }, 8855 8856 circleOptions: { 8857 fillColor: "#003dce", 8858 strokeColor: "#003dce", 8859 strokeWeight: "1", 8860 strokeOpacity: "0.5", 8861 zindex: 1, 8862 fillOpacity: "0.5", 8863 editable: false, 8864 draggable: false, 8865 }, 8866 polygonOptions: { 8867 fillColor: "#003dce", 8868 strokeColor: "#003dce", 8869 strokeWeight: "1", 8870 strokeOpacity: "0.5", 8871 zindex: 1, 8872 fillOpacity: "0.5", 8873 editable: false, 8874 draggable: false, 8875 }, 8876 polylineOptions: { 8877 fillColor: "#003dce", 8878 strokeColor: "#003dce", 8879 strokeWeight: "1", 8880 strokeOpacity: "0.5", 8881 zindex: 1, 8882 fillOpacity: "0.5", 8883 editable: false, 8884 draggable: false, 8885 }, 8886 rectangleOptions: { 8887 fillColor: "#003dce", 8888 strokeColor: "#003dce", 8889 strokeWeight: "1", 8890 strokeOpacity: "0.5", 8891 zindex: 1, 8892 fillOpacity: "0.5", 8893 editable: false, 8894 draggable: false, 8895 }, 8896 }); 8897 map_obj.drawingmanager.setMap(map_obj.map); 8898 map_obj.event_listener( 8899 map_obj.drawingmanager, 8900 "circlecomplete", 8901 function (circle) { 8902 map_obj.wpgmp_circles.push(circle); 8903 map_obj.wpgmp_shape_complete(circle, "circle"); 8904 } 8905 ); 8906 map_obj.event_listener( 8907 map_obj.drawingmanager, 8908 "polygoncomplete", 8909 function (polygon) { 8910 map_obj.wpgmp_polygons.push(polygon); 8911 map_obj.wpgmp_shape_complete(polygon, "polygon"); 8912 } 8913 ); 8914 map_obj.event_listener( 8915 map_obj.drawingmanager, 8916 "polylinecomplete", 8917 function (polyline) { 8918 map_obj.wpgmp_polylines.push(polyline); 8919 map_obj.wpgmp_shape_complete(polyline, "polyline"); 8920 } 8921 ); 8922 map_obj.event_listener( 8923 map_obj.drawingmanager, 8924 "rectanglecomplete", 8925 function (rectangle) { 8926 map_obj.wpgmp_rectangles.push(rectangle); 8927 map_obj.wpgmp_shape_complete(rectangle, "rectangle"); 8928 } 8929 ); 8930 } 8931 8932 create_polygon() { 8933 var map_obj = this; 8934 8935 $.each(this.map_data.shapes.shape.polygons, function (index, polygon) { 8936 var path = []; 8937 $.each(polygon.cordinates, function (ind, cordinate) { 8938 var latlng = cordinate.split(","); 8939 path.push(new google.maps.LatLng(latlng[0], latlng[1])); 8940 }); 8941 8942 polygon.reference = new google.maps.Polygon({ 8943 paths: path, 8944 strokeColor: polygon.settings.stroke_color, 8945 strokeOpacity: polygon.settings.stroke_opacity, 8946 strokeWeight: polygon.settings.stroke_weight, 8947 fillColor: polygon.settings.fill_color, 8948 fillOpacity: polygon.settings.fill_opacity, 8949 }); 8950 if (typeof map_obj.map_data.shapes != "undefined") { 8951 if (map_obj.map_data.shapes.drawing_editable === true) { 8952 map_obj.event_listener(polygon.reference, "click", function () { 8953 map_obj.setSelection(polygon.reference); 8954 map_obj.get_shapes_options(polygon.reference, "polygon"); 8955 }); 8956 } else if ( 8957 polygon.events !== undefined && 8958 (polygon.events.url !== "" || polygon.events.message !== "") 8959 ) { 8960 map_obj.event_listener(polygon.reference, "click", function () { 8961 if ( 8962 (polygon.events.url === "" || 8963 polygon.events.url === undefined) && 8964 polygon.events.message !== "" 8965 ) { 8966 var bounds = new google.maps.LatLngBounds();
8967 polygon.reference.getPath().forEach(function (element, index) { 8968 bounds.extend(element); 8969 }); 8970 $.each(map_obj.places, function (key, place) { 8971 place.infowindow.close(); 8972 }); 8973 map_obj.opened_info.setPosition(bounds.getCenter()); 8974 if (map_obj.settings.map_infowindow_customisations === true) 8975 map_obj.opened_info.setContent( 8976 '<div class="wpgmp_infowindow"><div class="wpgmp_iw_content">' + 8977 polygon.events.message + 8978 "</div></div>" 8979 ); 8980 else map_obj.opened_info.setContent(polygon.events.message); 8981 map_obj.opened_info.open(map_obj.map, this); 8982 } else { 8983 if ( 8984 polygon.events.url !== "undefined" && 8985 polygon.events.url !== undefined 8986 ) 8987 window.location = polygon.events.url; 8988 } 8989 }); 8990 } 8991 } 8992 polygon.reference.setMap(map_obj.map); 8993 8994 map_obj.wpgmp_polygons.push(polygon.reference); 8995 8996 if (polygon.events == undefined) { 8997 polygon.events = {}; 8998 polygon.events.url = ""; 8999 polygon.events.message = ""; 9000 } 9001 9002 map_obj.wpgmp_shape_events.push({ 9003 shape: polygon.reference, 9004 url: polygon.events.url, 9005 message: polygon.events.message, 9006 }); 9007 }); 9008 } 9009 9010 create_polyline() { 9011 var map_obj = this; 9012 9013 $.each(this.map_data.shapes.shape.polylines, function (index, polyline) { 9014 var path = []; 9015
9016 if (typeof polyline.cordinates != "undefined") { 9017 $.each(polyline.cordinates, function (ind, cordinate) { 9018 var latlng = cordinate.split(","); 9019 path.push(new google.maps.LatLng(latlng[0], latlng[1])); 9020 }); 9021 9022 polyline.reference = new google.maps.Polyline({ 9023 path: path, 9024 strokeColor: polyline.settings.stroke_color, 9025 strokeOpacity: polyline.settings.stroke_opacity, 9026 strokeWeight: polyline.settings.stroke_weight, 9027 }); 9028 9029 if (typeof map_obj.map_data.shapes != "undefined") { 9030 if (map_obj.map_data.shapes.drawing_editable === true) { 9031 map_obj.event_listener(polyline.reference, "click", function () { 9032 map_obj.setSelection(polyline.reference); 9033 map_obj.get_shapes_options(polyline.reference, "polyline"); 9034 }); 9035 } else if ( 9036 polyline.events !== undefined && 9037 (polyline.events.url !== "" || polyline.events.message !== "") 9038 ) { 9039 map_obj.event_listener(polyline.reference, "click", function () { 9040 if ( 9041 (polyline.events.url === "" || 9042 polyline.events.url === undefined) && 9043 polyline.events.message !== "" 9044 ) { 9045 var bounds = new google.maps.LatLngBounds(); 9046 polyline.reference 9047 .getPath() 9048 .forEach(function (element, index) { 9049 bounds.extend(element); 9050 }); 9051 $.each(map_obj.places, function (key, place) { 9052 place.infowindow.close(); 9053 }); 9054 map_obj.opened_info.setPosition(bounds.getCenter()); 9055 if (map_obj.settings.map_infowindow_customisations === true) 9056 map_obj.opened_info.setContent( 9057 '<div class="wpgmp_infowindow"><div class="wpgmp_iw_content">' + 9058 polyline.events.message + 9059 "</div></div>" 9060 ); 9061 else map_obj.opened_info.setContent(polyline.events.message); 9062 map_obj.opened_info.open(map_obj.map, this); 9063 } else if (polyline.events.url !== "") { 9064 if ( 9065 polyline.events.url !== "undefined" && 9066 polyline.events.url !== undefined 9067 ) 9068 window.location = polyline.events.url; 9069 } 9070 }); 9071 } 9072 } 9073 }
9074 if (typeof polyline.reference != "undefined") { 9075 polyline.reference.setMap(map_obj.map); 9076 map_obj.wpgmp_polylines.push(polyline.reference); 9077 9078 if (polyline.events == undefined) { 9079 polyline.events = {}; 9080 polyline.events.url = ""; 9081 polyline.events.message = ""; 9082 } 9083 9084 map_obj.wpgmp_shape_events.push({ 9085 shape: polyline.reference, 9086 url: polyline.events.url, 9087 message: polyline.events.message, 9088 }); 9089 } 9090 }); 9091 } 9092 event_listener(obj, type, func) { 9093 google.maps.event.addListener(obj, type, func); 9094 } 9095 create_circle() { 9096 var map_obj = this; 9097 $.each(this.map_data.shapes.shape.circles, function (index, circle) { 9098 var path; 9099 $.each(circle.cordinates, function (ind, cordinate) { 9100 var latlng = cordinate.split(","); 9101 path = new google.maps.LatLng(latlng[0], latlng[1]); 9102 }); 9103 9104 circle.reference = new google.maps.Circle({ 9105 fillColor: circle.settings.fill_color, 9106 fillOpacity: circle.settings.fill_opacity, 9107 strokeColor: circle.settings.stroke_color, 9108 strokeOpacity: circle.settings.stroke_opacity, 9109 strokeWeight: circle.settings.stroke_weight, 9110 center: path, 9111 radius: parseInt(circle.settings.radius), 9112 }); 9113 9114 if (typeof map_obj.map_data.shapes != "undefined") { 9115 if (map_obj.map_data.shapes.drawing_editable === true) { 9116 map_obj.event_listener(circle.reference, "click", function () { 9117 map_obj.setSelection(circle.reference); 9118 map_obj.get_shapes_options(circle.reference, "circle"); 9119 }); 9120 } else if ( 9121 circle.events !== undefined && 9122 (circle.events.url !== "" || circle.events.message !== "") 9123 ) { 9124 map_obj.event_listener(circle.reference, "click", function () { 9125 if ( 9126 (circle.events.url === "" || circle.events.url === undefined) && 9127 circle.events.message !== "" 9128 ) { 9129 $.each(map_obj.places, function (key, place) { 9130 place.infowindow.close(); 9131 }); 9132 map_obj.opened_info.setPosition(circle.reference.getCenter()); 9133 if (map_obj.settings.map_infowindow_customisations === true) 9134 map_obj.opened_info.setContent( 9135 '<div class="wpgmp_infowindow"><div class="wpgmp_iw_content">' + 9136 circle.events.message + 9137 "</div></div>" 9138 ); 9139 else map_obj.opened_info.setContent(circle.events.message); 9140 map_obj.opened_info.open(map_obj.map, this); 9141 } else if (circle.events.url !== "") { 9142 if ( 9143 circle.events.url !== "undefined" && 9144 circle.events.url !== undefined 9145 ) 9146 window.location = circle.events.url; 9147 } 9148 }); 9149 } 9150 } 9151 9152 circle.reference.setMap(map_obj.map); 9153 map_obj.wpgmp_circles.push(circle.reference); 9154 9155 if (circle.events == undefined) { 9156 circle.events = {}; 9157 circle.events.url = ""; 9158 circle.events.message = ""; 9159 } 9160 9161 map_obj.wpgmp_shape_events.push({ 9162 shape: circle.reference, 9163 url: circle.events.url, 9164 message: circle.events.message, 9165 }); 9166 }); 9167 } 9168 9169 create_rectangle() { 9170 var map_obj = this; 9171 $.each( 9172 this.map_data.shapes.shape.rectangles, 9173 function (index, rectangle) { 9174 var left_latlng = rectangle.cordinates[0].split(","); 9175 var right_latlng = rectangle.cordinates[1].split(","); 9176 9177 var path = new google.maps.LatLngBounds( 9178 new google.maps.LatLng(left_latlng[0], left_latlng[1]), 9179 new google.maps.LatLng(right_latlng[0], right_latlng[1]) 9180 ); 9181 9182 rectangle.reference = new google.maps.Rectangle({ 9183 bounds: path, 9184 fillColor: rectangle.settings.fill_color, 9185 fillOpacity: rectangle.settings.fill_opacity, 9186 strokeColor: rectangle.settings.stroke_color, 9187 strokeOpacity: rectangle.settings.stroke_opacity, 9188 strokeWeight: rectangle.settings.stroke_weight, 9189 }); 9190 9191 if (typeof map_obj.map_data.shapes != "undefined") { 9192 if (map_obj.map_data.shapes.drawing_editable === true) { 9193 map_obj.event_listener(rectangle.reference, "click", function () { 9194 map_obj.setSelection(rectangle.reference); 9195 map_obj.get_shapes_options(rectangle.reference, "rectangle"); 9196 }); 9197 } else if ( 9198 rectangle.events !== undefined && 9199 (rectangle.events.url !== "" || rectangle.events.message !== "") 9200 ) { 9201 map_obj.event_listener(rectangle.reference, "click", function () { 9202 if ( 9203 (rectangle.events.url === "" || 9204 rectangle.events.url === undefined) && 9205 rectangle.events.message !== "" 9206 ) { 9207 $.each(map_obj.places, function (key, place) { 9208 place.infowindow.close(); 9209 }); 9210 map_obj.opened_info.setPosition( 9211 rectangle.reference.getBounds().getCenter() 9212 ); 9213 if (map_obj.settings.map_infowindow_customisations === true) 9214 map_obj.opened_info.setContent( 9215 '<div class="wpgmp_infowindow"><div class="wpgmp_iw_content">' + 9216 rectangle.events.message + 9217 "</div></div>" 9218 ); 9219 else map_obj.opened_info.setContent(rectangle.events.message); 9220 map_obj.opened_info.open(map_obj.map, this); 9221 } else if (rectangle.events.url !== "") { 9222 if ( 9223 rectangle.events.url !== "undefined" && 9224 rectangle.events.url !== undefined 9225 ) 9226 window.location = rectangle.events.url; 9227 } 9228 }); 9229 } 9230 } 9231
9232 rectangle.reference.setMap(map_obj.map); 9233 map_obj.wpgmp_rectangles.push(rectangle.reference); 9234 9235 if (rectangle.events == undefined) { 9236 rectangle.events = {}; 9237 rectangle.events.url = ""; 9238 rectangle.events.message = ""; 9239 } 9240 9241 map_obj.wpgmp_shape_events.push({ 9242 shape: rectangle.reference, 9243 url: rectangle.events.url, 9244 message: rectangle.events.message, 9245 }); 9246 } 9247 ); 9248 } 9249 9250 get_shapes_options(shape, type) { 9251 $(".hiderow").addClass("temp_row").removeClass("hiderow"); 9252 9253 // Set value to the input 9254 $("input[name='shape_fill_color']").val(shape.fillColor); 9255 9256 // Set background color of the visible preview button (.wp-color-result) 9257 $("input[name='shape_fill_color']") 9258 .closest(".wp-picker-container") 9259 .find(".wp-color-result") 9260 .css("background-color", shape.fillColor); 9261 9262 $("input[name='shape_stroke_color']").val(shape.strokeColor); 9263 9264 // Set background color of the visible preview button (.wp-color-result) 9265 $("input[name='shape_stroke_color']") 9266 .closest(".wp-picker-container") 9267 .find(".wp-color-result") 9268 .css("background-color", shape.strokeColor); 9269 9270 $("select[name='shape_fill_opacity']").val(shape.fillOpacity); 9271 $("select[name='shape_stroke_opacity']").val(shape.strokeOpacity); 9272 $("select[name='shape_stroke_weight']").val(shape.strokeWeight); 9273 $("textarea[name='shape_path']").parent().hide(); 9274 $("input[name='shape_radius']").parent().hide(); 9275 $("input[name='shape_center']").parent().hide(); 9276 $("input[name='shape_northeast']").parent().hide(); 9277 $("input[name='shape_southwest']").parent().hide(); 9278 9279 var all_shape_events = this.wpgmp_shape_events; 9280 $.each(all_shape_events, function (i, shape_event) { 9281 if (shape_event.shape == shape) { 9282 $("input[name='shape_click_url']").val(shape_event.url); 9283 $("textarea[name='shape_click_message']").val(shape_event.message); 9284 } 9285 }); 9286 if (type == "circle") { 9287 $("input[name='shape_radius']").parent().show(); 9288 $("input[name='shape_radius']").val(shape.getRadius()); 9289 $("input[name='shape_center']").parent().show(); 9290 $("input[name='shape_center']").val( 9291 shape.getCenter().lat() + "," + shape.getCenter().lng() 9292 ); 9293 } else if (type == "rectangle") { 9294 $("input[name='shape_northeast']").parent().show(); 9295 $("input[name='shape_northeast']").val( 9296 shape.getBounds().getNorthEast().lat() + 9297 "," + 9298 shape.getBounds().getNorthEast().lng() 9299 ); 9300 $("input[name='shape_southwest']").parent().show(); 9301 $("input[name='shape_southwest']").val(
9302 shape.getBounds().getSouthWest().lat() + 9303 "," + 9304 shape.getBounds().getSouthWest().lng() 9305 ); 9306 } else { 9307 var polygon_cordinate = []; 9308 9309 var cordinates = shape.getPath(); 9310 9311 cordinates.forEach(function (latlng, index) { 9312 var latlngin = [latlng.lat(), latlng.lng()]; 9313 9314 if (latlng.lat() !== "" && latlng.lng() !== "") 9315 polygon_cordinate.push(latlngin); 9316 }); 9317 $("textarea[name='shape_path']").parent().show(); 9318 $("textarea[name='shape_path']").val(polygon_cordinate.join(" ")); 9319 } 9320 } 9321 9322 set_shapes_options(shape) { 9323 var polyOptions2 = { 9324 fillColor: $("input[name='shape_fill_color']").val(), 9325 fillOpacity: $("select[name='shape_fill_opacity']").val(), 9326 strokeColor: $("input[name='shape_stroke_color']").val(), 9327 strokeOpacity: $("select[name='shape_stroke_opacity']").val(), 9328 strokeWeight: $("select[name='shape_stroke_weight']").val(), 9329 }; 9330 shape.setOptions(polyOptions2); 9331 var all_shape_events = this.wpgmp_shape_events; 9332 $.each(all_shape_events, function (i, shape_event) { 9333 if (shape_event.shape == shape) { 9334 shape_event.url = $("input[name='shape_click_url']").val(); 9335 shape_event.message = $("textarea[name='shape_click_message']").val(); 9336 } 9337 }); 9338 } 9339 9340 wpgmp_save_shapes(allcordinate) { 9341 $("input[name='shapes_values']").val(allcordinate.join("|")); 9342 } 9343 9344 wpgmp_shape_complete(shape, type) { 9345 var map_obj = this; 9346 map_obj.setSelection(shape); 9347 map_obj.drawingmanager.setDrawingMode(null); 9348 if (typeof map_obj.map_data.shapes != "undefined") { 9349 if (map_obj.map_data.shapes.drawing_editable === true) { 9350 map_obj.event_listener(shape, "click", function () { 9351 map_obj.setSelection(shape); 9352 map_obj.get_shapes_options(shape, type); 9353 }); 9354 9355 map_obj.wpgmp_shape_events.push({ 9356 shape: shape, 9357 url: "", 9358 message: "", 9359 }); 9360 } 9361 } 9362 } 9363 9364 wpgmp_save_polylines() { 9365 var all_polylines = []; 9366 var map_obj = this; 9367 var wpgmp_polylines = map_obj.wpgmp_polylines; 9368 var all_shape_events = map_obj.wpgmp_shape_events; 9369 9370 for (var i = 0; i < wpgmp_polylines.length; i++) { 9371 var polyline_cordinate = []; 9372 9373 var cordinates = wpgmp_polylines[i].getPath(); 9374 9375 var settings = 9376 wpgmp_polylines[i].strokeWeight + 9377 "," + 9378 wpgmp_polylines[i].strokeOpacity + 9379 "," + 9380 wpgmp_polylines[i].strokeColor; 9381 var events = ""; 9382 $.each(all_shape_events, function (j, shape_event) { 9383 if (shape_event.shape == wpgmp_polylines[i]) { 9384 events = shape_event.url + "***" + shape_event.message; 9385 } 9386 }); 9387 9388 cordinates.forEach(function (latlng, index) { 9389 var latlngin = [latlng.lat(), latlng.lng()]; 9390 polyline_cordinate.push(latlngin); 9391 }); 9392 9393 all_polylines.push( 9394 polyline_cordinate.join("----") + "..." + settings + "..." + events 9395 ); 9396 } 9397 return all_polylines; 9398 } 9399 9400 wpgmp_save_polygons() { 9401 var all_polygons = []; 9402 var map_obj = this; 9403 var wpgmp_polygons = map_obj.wpgmp_polygons; 9404 var all_shape_events = map_obj.wpgmp_shape_events; 9405 9406 for (var i = 0; i < wpgmp_polygons.length; i++) { 9407 var polygon_cordinate = []; 9408 9409 var cordinates = wpgmp_polygons[i].getPath(); 9410 9411 var settings = 9412 wpgmp_polygons[i].strokeWeight + 9413 "," + 9414 wpgmp_polygons[i].strokeOpacity + 9415 "," + 9416 wpgmp_polygons[i].strokeColor + 9417 "," + 9418 wpgmp_polygons[i].fillColor + 9419 "," + 9420 wpgmp_polygons[i].fillOpacity; 9421 9422 var events = ""; 9423 $.each(all_shape_events, function (j, shape_event) { 9424 if (shape_event.shape == wpgmp_polygons[i]) { 9425 events = shape_event.url + "***" + shape_event.message; 9426 } 9427 }); 9428 9429 cordinates.forEach(function (latlng, index) { 9430 var latlngin = [latlng.lat(), latlng.lng()]; 9431 9432 if (latlng.lat() !== "" && latlng.lng() !== "") 9433 polygon_cordinate.push(latlngin); 9434 }); 9435 9436 all_polygons.push( 9437 polygon_cordinate.join("----") + "..." + settings + "..." + events 9438 ); 9439 } 9440 9441 return all_polygons; 9442 } 9443
9444 wpgmp_save_circles() { 9445 var all_circles = []; 9446 var map_obj = this; 9447 var wpgmp_circles = map_obj.wpgmp_circles; 9448 var all_shape_events = map_obj.wpgmp_shape_events; 9449 9450 for (var i = 0; i < wpgmp_circles.length; i++) { 9451 var circle_cordinate = []; 9452 9453 var latlng = wpgmp_circles[i].getCenter(); 9454 9455 var settings = 9456 wpgmp_circles[i].strokeWeight + 9457 "," + 9458 wpgmp_circles[i].strokeOpacity + 9459 "," + 9460 wpgmp_circles[i].strokeColor + 9461 "," + 9462 wpgmp_circles[i].fillColor + 9463 "," + 9464 wpgmp_circles[i].fillOpacity + 9465 "," + 9466 wpgmp_circles[i].getRadius(); 9467 9468 var events = ""; 9469 $.each(all_shape_events, function (j, shape_event) { 9470 if (shape_event.shape == wpgmp_circles[i]) { 9471 events = shape_event.url + "***" + shape_event.message; 9472 } 9473 }); 9474 9475 var latlngin = [latlng.lat(), latlng.lng()]; 9476 9477 if (latlng.lat() !== "" && latlng.lng() !== "") 9478 circle_cordinate.push(latlngin); 9479 9480 all_circles.push( 9481 circle_cordinate.join("----") + "..." + settings + "..." + events 9482 ); 9483 } 9484 9485 return all_circles; 9486 } 9487 9488 wpgmp_save_rectangles() { 9489 var all_rectangles = []; 9490 var map_obj = this; 9491 var wpgmp_rectangles = map_obj.wpgmp_rectangles; 9492 var all_shape_events = map_obj.wpgmp_shape_events; 9493 for (var i = 0; i < wpgmp_rectangles.length; i++) { 9494 var rectangle_cordinate = []; 9495 9496 var settings = 9497 wpgmp_rectangles[i].strokeWeight + 9498 "," + 9499 wpgmp_rectangles[i].strokeOpacity + 9500 "," + 9501 wpgmp_rectangles[i].strokeColor + 9502 "," + 9503 wpgmp_rectangles[i].fillColor + 9504 "," + 9505 wpgmp_rectangles[i].fillOpacity; 9506 9507 var events = ""; 9508 $.each(all_shape_events, function (j, shape_event) { 9509 if (shape_event.shape == wpgmp_rectangles[i]) { 9510 events = shape_event.url + "***" + shape_event.message; 9511 } 9512 }); 9513 9514 var latlng = wpgmp_rectangles[i].getBounds().getSouthWest
9514(); 9515 9516 var latlngin = [latlng.lat(), latlng.lng()]; 9517 9518 if (latlng.lat() !== "" && latlng.lng() !== "") 9519 rectangle_cordinate.push(latlngin); 9520 9521 latlng = wpgmp_rectangles[i].getBounds().getNorthEast(); 9522 9523 var latlngin = [latlng.lat(), latlng.lng()]; 9524 9525 if (latlng.lat() !== "" && latlng.lng() !== "") 9526 rectangle_cordinate.push(latlngin); 9527 9528 all_rectangles.push( 9529 rectangle_cordinate.join("----") + "..." + settings + "..." + events 9530 ); 9531 } 9532 9533 return all_rectangles; 9534 } 9535 9536 9537 set_kml_layer() { 9538 var map_obj = this.map; 9539 9540 $.each(this.map_data.kml_layer.kml_layers_links, function (index, link) { 9541 var kmlLayerOptions = { 9542 url: link, 9543 map: map_obj, 9544 preserveViewport: true, 9545 }; 9546 9547 new google.maps.KmlLayer(kmlLayerOptions); 9548 }); 9549 } 9550 9551 set_marker_cluster() { 9552 var map_obj = this; 9553 var markers = []; 9554 var clusterStyles = [ 9555 { 9556 textColor: "black", 9557 url: map_obj.map_data.marker_cluster.icon, 9558 height: 32, 9559 width: 33, 9560 }, 9561 ]; 9562 $.each(this.places, function (index, place) { 9563 if (place.marker.getVisible() == true) { 9564 markers.push(place.marker); 9565 } 9566 }); 9567 9568 if (map_obj.map_data.marker_cluster.apply_style === true) { 9569 if (!map_obj.markerClusterer) { 9570 map_obj.markerClusterer = new MarkerClusterer( 9571 map_obj.map, 9572 {}, 9573 { 9574 gridSize: parseInt(map_obj.map_data.marker_cluster.grid), 9575 maxZoom: parseInt(map_obj.map_data.marker_cluster.max_zoom), 9576 styles: clusterStyles, 9577 } 9578 ); 9579 } 9580 9581 map_obj.markerClusterer.clearMarkers(); 9582 map_obj.markerClusterer.addMarkers(markers); 9583 9584 google.maps.event.addListener( 9585 map_obj.markerClusterer, 9586 "mouseover", 9587 function (c) { 9588 c.clusterIcon_.div_.firstChild.src = 9589 map_obj.map_data.marker_cluster.hover_icon; 9590 } 9591 ); 9592 9593 google.maps.event.addListener( 9594 map_obj.markerClusterer, 9595 "mouseout", 9596 function (c) { 9597 c.clusterIcon_.div_.firstChild.src = 9598 map_obj.map_data.marker_cluster.icon; 9599 } 9600 ); 9601 } else { 9602 if (!map_obj.markerClusterer) { 9603 map_obj.markerClusterer = new MarkerClusterer( 9604 map_obj.map, 9605 {}, 9606 { 9607 gridSize: parseInt(map_obj.map_data.marker_cluster.grid), 9608 maxZoom: parseInt(map_obj.map_data.marker_cluster.max_zoom), 9609 imagePath: map_obj.map_data.marker_cluster.image_path, 9610 } 9611 ); 9612 } 9613 9614 map_obj.markerClusterer.clearMarkers(); 9615 map_obj.markerClusterer.addMarkers(markers); 9616 } 9617 } 9618 9619 set_panning_control() { 9620 var panning_data = this.map_data.panning_control; 9621 var panning_map_obj = this.map; 9622 var map_obj = this; 9623 9624 var strictBounds = new google.maps.LatLngBounds( 9625 new google.maps.LatLng( 9626 panning_data.from_latitude, 9627 panning_data.from_longitude 9628 ), 9629 new google.maps.LatLng( 9630 panning_data.to_latitude, 9631 panning_data.to_longitude 9632 ) 9633 ); 9634 9635 google.maps.event.addListener(panning_map_obj, "dragend", function () { 9636 if (strictBounds.contains(panning_map_obj.getCenter())) return; 9637 9638 var c = panning_map_obj.getCenter(), 9639 x = c.lng(), 9640 y = c.lat(), 9641 maxX = strictBounds.getNorthEast().lng(), 9642 maxY = strictBounds.getNorthEast().lat(),
9643 minX = strictBounds.getSouthWest().lng(), 9644 minY = strictBounds.getSouthWest().lat(); 9645 9646 if (x < minX) x = minX; 9647 if (x > maxX) x = maxX; 9648 if (y < minY) y = minY; 9649 if (y > maxY) y = maxY; 9650 9651 panning_map_obj.setCenter(new google.maps.LatLng(y, x)); 9652 }); 9653 9654 google.maps.event.addListener( 9655 panning_map_obj, 9656 "zoom_changed", 9657 function () { 9658 if (panning_map_obj.getZoom() < panning_data.zoom_level) { 9659 panning_map_obj.setZoom(parseInt(map_obj.settings.zoom)); 9660 } 9661 } 9662 ); 9663 } 9664 9665 set_visual_refresh() { 9666 google.maps.visualRefresh = true; 9667 } 9668 9669 set_45_imagery() { 9670 //this.map.setTilt(45); 9671 } 9672 9673 set_overlay_generator(tileSize, options) { 9674 9675 var overlay_generator = function (tileSize, options) { 9676 9677 this.tileSize = tileSize; 9678 this.overlay_options = options; 9679 if (this.overlay_options.font_size != undefined) { 9680 this.overlay_options.font_size = this.overlay_options.font_size.replace('px', ''); 9681 } else { 9682 this.overlay_options.font_size = '16'; 9683 } 9684 if (this.overlay_options.border_width != undefined) { 9685 this.overlay_options.border_width = this.overlay_options.border_width.replace('px', ''); 9686 } else { 9687 this.overlay_options.border_width = '2'; 9688 } 9689 9690 } 9691 9692 overlay_generator.prototype.getTile = function (coord, zoom, ownerDocument) { 9693 9694 var div = ownerDocument.createElement("div"); 9695 div.innerHTML = coord; 9696 div.style.width = this.tileSize.width; 9697 div.style.height = this.tileSize.height; 9698 div.style.fontSize = this.overlay_options.font_size + "px"; 9699 div.style.borderStyle = this.overlay_options.border_style; 9700 div.style.borderWidth = this.overlay_options.border_width + "px"; 9701 div.style.borderColor = this.overlay_options.border_color; 9702 return div; 9703 }; 9704 9705 return new overlay_generator(tileSize, options); 9706 9707 } 9708 9709 set_overlay() { 9710 if (this.map_data.overlay_setting.width != undefined) { 9711 this.map_data.overlay_setting.width = 9712 this.map_data.overlay_setting.width.replace("px", ""); 9713 } else { 9714 this.map_data.overlay_setting.width = "200"; 9715 } 9716 if (this.map_data.overlay_setting.height != undefined) { 9717 this.map_data.overlay_setting.height = 9718 this.map_data.overlay_setting.height.replace("px", ""); 9719 } else { 9720 this.map_data.overlay_setting.height = "200"; 9721 } 9722 9723 this.map.overlayMapTypes.insertAt( 9724 0, 9725 this.set_overlay_generator( 9726 new google.maps.Size( 9727 this.map_data.overlay_setting.width, 9728 this.map_data.overlay_setting.height 9729 ), 9730 this.map_data.overlay_setting 9731 ) 9732 ); 9733 } 9734 9735 set_bicyle_layer() { 9736 var bikeLayer = new google.maps.BicyclingLayer(); 9737 bikeLayer.setMap(this.map); 9738 } 9739 9740 set_traffic_layer() { 9741 var traffic_layer = new google.maps.TrafficLayer(); 9742 traffic_layer.setMap(this.map); 9743 } 9744 9745 set_panoramic_layer() { 9746 var panoramic_layer = new google.maps.panoramio.PanoramioLayer(); 9747 panoramic_layer.setMap(this.map); 9748 } 9749 9750 set_transit_layer() { 9751 var transit_layer = new google.maps.TransitLayer(); 9752 transit_layer.setMap(this.map); 9753 } 9754 9755 set_weather_layer() { 9756 var weatherLayer = new google.maps.weather.WeatherLayer({ 9757 windSpeedUnit: eval( 9758 "google.maps.weather.WindSpeedUnit." + 9759 this.map_data.weather_layer.wind_unit 9760 ), 9761 temperatureUnits: eval( 9762 "google.maps.weather.TemperatureUnit." + 9763 this.map_data.weather_layer.temperature_unit 9764 ), 9765 }); 9766 9767 weatherLayer.setMap(this.map); 9768 var cloudLayer = new google.maps.weather.CloudLayer(); 9769 cloudLayer.setMap(this.map); 9770 } 9771 9772 set_streetview(latlng) { 9773 var panoOptions = { 9774 position: latlng, 9775 addressControlOptions: { 9776 position: google.maps.ControlPosition.BOTTOM_CENTER, 9777 }, 9778 linksControl: this.map_data.street_view.links_control, 9779 panControl: this.map_data.street_view.street_view_pan_control, 9780 zoomControlOptions: { 9781 style: google.maps.ZoomControlStyle.SMALL, 9782 }, 9783 enableCloseButton: this.map_data.street_view.street_view_close_button, 9784 }; 9785 if ( 9786 this.map_data.street_view.pov_heading && 9787 this.map_data.street_view.pov_pitch 9788 ) { 9789 panoOptions["pov"] = { 9790 heading: parseInt(this.map_data.street_view.pov_heading), 9791 pitch: parseInt(this.map_data.street_view.pov_pitch), 9792 }; 9793 } 9794 var panorama = new google.maps.StreetViewPanorama( 9795 this.element, 9796 panoOptions 9797 ); 9798 } 9799 9800 /** 9801 * Handles post-load setup for Google Maps 9802 * Includes center logic, infowindow cleanup, amenities load, and UI skinning 9803 */ 9804map_loaded() { 9805 const map_obj = this; 9806 const map = map_obj.map; 9807 9808 // Ensure Google map is fully loaded and properly centered after resize 9809 google.maps.event.addListenerOnce(map, "idle", function () { 9810 const center = map.getCenter(); 9811 google.maps.event.trigger(map, "resize"); 9812 map.setCenter(center); 9813 }); 9814 9815 // Optionally center map by user's location 9816 if (map_obj.settings.center_by_nearest === true) { 9817 map_obj.center_by_nearest(); 9818 } 9819 9820 // Close all open infowindows on map click 9821 if (map_obj.settings.close_infowindow_on_map_click === true) { 9822 google.maps.event.addListener(map, "click", function () { 9823 map_obj.places?.forEach((place) => { 9824 place.infowindow?.close(); 9825 place.marker?.setAnimation(null); 9826 }); 9827 }); 9828 } 9829 9830 9831 9832 // DOM Ready styling for Infobox (if custom infowindow skin is active) 9833 google.maps.event.addListener(map_obj.infobox, "domready", function () { 9834 const $outer = $(map_obj.container).find(".infoBox"); 9835 const needsSkin = 9836 $outer.find(".fc-infowindow-default").length === 0 && 9837 $outer.find(".fc-item-default").length === 0 && 9838 $outer.find(".wpgmp_infowindow").length > 0; 9839 9840 //accordian 9841 $outer.on('click', ".fc-accordion-tab", function () { 9842 if ($(this).hasClass('active')) { 9843 $(this).removeClass('active'); 9844 var acc_child = $(this).next().removeClass('active'); 9845 } else { 9846 $(".fc-accordion-tab").removeClass('active'); 9847 $(".fc-accordion dd").removeClass('active'); 9848 $(this).addClass('active'); 9849 var acc_child = $(this).next().addClass('active'); 9850 } 9851 }); 9852 9853 if (needsSkin) { 9854 $outer.find(".wpgmp_infowindow").prepend('<div class="infowindow-close"></div>'); 9855 9856 $(".infowindow-close").click(() => { 9857 map_obj.places?.forEach((place) => { 9858 place.infowindow?.close(); 9859 place.marker?.setAnimation(null); 9860 }); 9861 }); 9862 9863 if ( 9864 $outer.find(".fc-infowindow-fano").length === 0 && 9865 $outer.find(".fc-item-fano").length === 0 9866 ) { 9867 $outer.addClass("infoBoxTail"); 9868 } else { 9869 $outer.removeClass("infoBoxTail"); 9870 } 9871 } 9872 }); 9873 9874} 9875 9876 wpgmpInitializeInfoBox() { 9877 var InfoBox = function (opt_opts) { 9878 opt_opts = opt_opts || {}; 9879 9880 google.maps.OverlayView.apply(this, arguments); 9881 9882 // Standard options (in common with google.maps.InfoWindow): 9883 // 9884 this.content_ = opt_opts.content || ""; 9885 this.disableAutoPan_ = opt_opts.disableAutoPan || false; 9886 this.maxWidth_ = opt_opts.maxWidth || 0; 9887 this.pixelOffset_ = opt_opts.pixelOffset || new google.maps.Size(0, 0); 9888 this.position_ = opt_opts.position || new google.maps.LatLng(0, 0); 9889 this.zIndex_ = opt_opts.zIndex || null; 9890 9891 // Additional options (unique to InfoBox): 9892 // 9893 this.boxClass_ = opt_opts.boxClass || "infoBox"; 9894 this.boxStyle_ = opt_opts.boxStyle || {}; 9895 this.closeBoxMargin_ = opt_opts.closeBoxMargin || "2px"; 9896 this.closeBoxURL_ = 9897 opt_opts.closeBoxURL || 9898 "//www.google.com/intl/en_us/mapfiles/close.gif"; 9899 if (opt_opts.closeBoxURL === "") { 9900 this.closeBoxURL_ = ""; 9901 } 9902 this.closeBoxTitle_ = opt_opts.closeBoxTitle || " Close "; 9903 this.infoBoxClearance_ = 9904 opt_opts.infoBoxClearance || new google.maps.Size(1, 1); 9905 9906 if (typeof opt_opts.visible === "undefined") { 9907 if (typeof opt_opts.isHidden === "undefined") { 9908 opt_opts.visible = true; 9909 } else { 9910 opt_opts.visible = !opt_opts.isHidden; 9911 } 9912 } 9913 this.isHidden_ = !opt_opts.visible; 9914 9915 this.alignBottom_ = opt_opts.alignBottom || false; 9916 this.pane_ = opt_opts.pane || "floatPane"; 9917 this.enableEventPropagation_ = opt_opts.enableEventPropagation || false; 9918 9919 this.div_ = null; 9920 this.closeListener_ = null; 9921 this.moveListener_ = null; 9922 this.contextListener_ = null; 9923 this.eventListeners_ = null; 9924 this.fixedWidthSet_ = null; 9925 }; 9926 9927 InfoBox.prototype = new google.maps.OverlayView(); 9928 9929 /** 9930 * Creates the DIV representing the InfoBox. 9931 * @private 9932 */ 9933 InfoBox.prototype.createInfoBoxDiv_ = function () { 9934 var i; 9935 var events; 9936 var bw; 9937 var me = this; 9938 9939 // This handler prevents an event in the InfoBox from being passed on to the map. 9940 // 9941 var cancelHandler = function (e) { 9942 e.cancelBubble = true; 9943 if (e.stopPropagation) { 9944 e.stopPropagation(); 9945 } 9946 }; 9947 9948 // This handler ignores the current event in the InfoBox and conditionally prevents 9949 // the event from being passed on to the map. It is used for the contextmenu event. 9950 // 9951 var ignoreHandler = function (e) { 9952 e.returnValue = false;
9953 9954 if (e.preventDefault) { 9955 e.preventDefault(); 9956 } 9957 9958 if (!me.enableEventPropagation_) { 9959 cancelHandler(e); 9960 } 9961 }; 9962 9963 if (!this.div_) { 9964 this.div_ = document.createElement("div"); 9965 9966 this.setBoxStyle_(); 9967 9968 if (typeof this.content_.nodeType === "undefined") { 9969 this.div_.innerHTML = this.getCloseBoxImg_() + this.content_; 9970 } else { 9971 this.div_.innerHTML = this.getCloseBoxImg_(); 9972 this.div_.appendChild(this.content_); 9973 } 9974 9975 // Add the InfoBox DIV to the DOM 9976 this.getPanes()[this.pane_].appendChild(this.div_); 9977 9978 this.addClickHandler_(); 9979 9980 if (this.div_.style.width) { 9981 this.fixedWidthSet_ = true; 9982 } else { 9983 if ( 9984 this.maxWidth_ !== 0 && 9985 this.div_.offsetWidth > this.maxWidth_ 9986 ) { 9987 this.div_.style.width = this.maxWidth_; 9988 this.div_.style.overflow = "auto"; 9989 this.fixedWidthSet_ = true; 9990 } else { 9991 // The following code is needed to overcome problems with MSIE 9992 9993 bw = this.getBoxWidths_(); 9994 9995 this.div_.style.width = 9996 this.div_.offsetWidth - bw.left - bw.right + "px"; 9997 this.fixedWidthSet_ = false; 9998 } 9999 } 10000 10001 this.panBox_(this.disableAutoPan_); 10002 10003 if (!this.enableEventPropagation_) { 10004 this.eventListeners_ = []; 10005 10006 // Cancel event propagation. 10007 // 10008 // Note: mousemove not included (to resolve Issue 152) 10009 events = [ 10010 "mousedown", 10011 "mouseover", 10012 "mouseout", 10013 "mouseup", 10014 "click", 10015 "dblclick", 10016 "touchstart", 10017 "touchend", 10018 "touchmove", 10019 ]; 10020 10021 for (i = 0; i < events.length; i++) { 10022 this.eventListeners_.push( 10023 this.div_.addEventListener( 10024 events[i], 10025 cancelHandler 10026 ) 10027 ); 10028 } 10029 10030 // Workaround for Google bug that causes the cursor to change to a pointer 10031 // when the mouse moves over a marker underneath InfoBox. 10032 this.eventListeners_.push( 10033 this.div_.addEventListener( 10034 "mouseover", 10035 function (e) { 10036 this.style.cursor = "default"; 10037 } 10038 ) 10039 ); 10040 } 10041 10042 this.contextListener_ = this.div_.addEventListener( 10043 "contextmenu", 10044 ignoreHandler 10045 ); 10046 10047 /** 10048 * This event is fired when the DIV containing the InfoBox's content is attached to the DOM. 10049 * @name InfoBox#domready 10050 * @event 10051 */ 10052 google.maps.event.trigger(this, "domready"); 10053 } 10054 }; 10055 10056 /** 10057 * Returns the HTML <IMG> tag for the close box. 10058 * @private 10059 */ 10060 InfoBox.prototype.getCloseBoxImg_ = function () { 10061 var img = ""; 10062 10063 if (this.closeBoxURL_ !== "") { 10064 img = "<img"; 10065 img += " src='" + this.closeBoxURL_ + "'"; 10066 img += " align=right"; // Do this because Opera chokes on style='float: right;' 10067 img += " title='" + this.closeBoxTitle_ + "'"; 10068 img += " style='"; 10069 img += " position: relative;"; // Required by MSIE 10070 img += " cursor: pointer;"; 10071 img += " margin: " + this.closeBoxMargin_ + ";"; 10072 img += "'>"; 10073 } 10074 10075 return img; 10076 }; 10077 10078 /** 10079 * Adds the click handler to the InfoBox close box. 10080 * @private 10081 */ 10082 InfoBox.prototype.addClickHandler_ = function () { 10083 var closeBox; 10084 10085 if (this.closeBoxURL_ !== "") { 10086 closeBox = this.div_.firstChild; 10087 this.closeListener_ = closeBox.addEventListener( 10088 "click", 10089 this.getCloseClickHandler_() 10090 ); 10091 } else { 10092 this.closeListener_ = null; 10093 } 10094 }; 10095 10096 /** 10097 * Returns the function to call when the user clicks the close box of an InfoBox. 10098 * @private 10099 */ 10100 InfoBox.prototype.getCloseClickHandler_ = function () { 10101 var me = this; 10102 10103 return function (e) { 10104 // 1.0.3 fix: Always prevent propagation of a close box click to the map: 10105 e.cancelBubble = true; 10106 10107 if (e.stopPropagation) { 10108 e.stopPropagation(); 10109 } 10110 10111 /**
10112 * This event is fired when the InfoBox's close box is clicked. 10113 * @name InfoBox#closeclick 10114 * @event 10115 */ 10116 google.maps.event.trigger(me, "closeclick"); 10117 10118 me.close(); 10119 }; 10120 }; 10121 10122 /** 10123 * Pans the map so that the InfoBox appears entirely within the map's visible area. 10124 * @private 10125 */ 10126 InfoBox.prototype.panBox_ = function (disablePan) { 10127 var map; 10128 var bounds; 10129 var xOffset = 0, 10130 yOffset = 0; 10131 10132 if (!disablePan) { 10133 map = this.getMap(); 10134 10135 if (map instanceof google.maps.Map) { 10136 // Only pan if attached to map, not panorama 10137 10138 if (!map.getBounds().contains(this.position_)) { 10139 // Marker not in visible area of map, so set center 10140 // of map to the marker position first. 10141 map.setCenter(this.position_); 10142 } 10143 10144 var iwOffsetX = this.pixelOffset_.width; 10145 var iwOffsetY = this.pixelOffset_.height; 10146 var iwWidth = this.div_.offsetWidth; 10147 var iwHeight = this.div_.offsetHeight; 10148 var padX = this.infoBoxClearance_.width; 10149 var padY = this.infoBoxClearance_.height; 10150 10151 if (map.panToBounds.length == 2) { 10152 // Using projection.fromLatLngToContainerPixel to compute the infowindow position 10153 // does not work correctly anymore for JS Maps API v3.32 and above if there is a 10154 // previous synchronous call that causes the map to animate (e.g. setCenter when 10155 // the position is not within bounds). Hence, we are using panToBounds with 10156 // padding instead, which works synchronously. 10157 var padding = { 10158 left: 0, 10159 right: 0, 10160 top: 0, 10161 bottom: 0, 10162 }; 10163 padding.left = -iwOffsetX + padX; 10164 padding.right = iwOffsetX + iwWidth + padX; 10165 if (this.alignBottom_) { 10166 padding.top = -iwOffsetY + padY + iwHeight; 10167 padding.bottom = iwOffsetY + padY; 10168 } else { 10169 padding.top = -iwOffsetY + padY; 10170 padding.bottom = iwOffsetY + iwHeight + padY; 10171 } 10172 map.panToBounds( 10173 new google.maps.LatLngBounds(this.position_), 10174 padding 10175 ); 10176 } else { 10177 var mapDiv = map.getDiv(); 10178 var mapWidth = mapDiv.offsetWidth; 10179 var mapHeight = mapDiv.offsetHeight; 10180 var pixPosition = this.getProjection().fromLatLngToContainerPixel( 10181 this.position_ 10182 ); 10183 10184 if (pixPosition.x < -iwOffsetX + padX) { 10185 xOffset = pixPosition.x + iwOffsetX - padX; 10186 } else if ( 10187 pixPosition.x + iwWidth + iwOffsetX + padX > 10188 mapWidth 10189 ) { 10190 xOffset = pixPosition.x + iwWidth + iwOffsetX + padX - mapWidth; 10191 } 10192 if (this.alignBottom_) { 10193 if (pixPosition.y < -iwOffsetY + padY + iwHeight) { 10194 yOffset = pixPosition.y + iwOffsetY - padY - iwHeight; 10195 } else if (pixPosition.y + iwOffsetY + padY > mapHeight) { 10196 yOffset = pixPosition.y + iwOffsetY + padY - mapHeight; 10197 } 10198 } else { 10199 if (pixPosition.y < -iwOffsetY + padY) { 10200 yOffset = pixPosition.y + iwOffsetY - padY; 10201 } else if ( 10202 pixPosition.y + iwHeight + iwOffsetY + padY > 10203 mapHeight 10204 ) { 10205 yOffset = 10206 pixPosition.y + iwHeight + iwOffsetY + padY - mapHeight; 10207 } 10208 } 10209 10210 if (!(xOffset === 0 && yOffset === 0)) { 10211 // Move the map to the shifted center. 10212 // 10213 var c = map.getCenter(); 10214 map.panBy(xOffset, yOffset); 10215 } 10216 } 10217 } 10218 } 10219 }; 10220 10221 /** 10222 * Sets the style of the InfoBox by setting the style sheet and applying 10223 * other specific styles requested. 10224 * @private 10225 */ 10226 InfoBox.prototype.setBoxStyle_ = function () { 10227 var i, boxStyle; 10228 10229 if (this.div_) { 10230 // Apply style values from the style sheet defined in the boxClass parameter: 10231 this.div_.className = this.boxClass_; 10232 10233 // Clear existing inline style values: 10234 this.div_.style.cssText = ""; 10235 10236 // Apply style values defined in the boxStyle parameter: 10237 boxStyle = this.boxStyle_; 10238 for (i in boxStyle) { 10239 if (boxStyle.hasOwnProperty(i)) { 10240 this.div_.style[i] = boxStyle[i]; 10241 } 10242 } 10243 10244 // Fix for iOS disappearing InfoBox problem. 10245 // See http://stackoverflow.com/questions/9229535/google-maps-markers-disappear-at-certain-zoom-level-only-on-iphone-ipad 10246 // Required: use "matrix" technique to specify transforms in order to avoid this bug. 10247 if ( 10248 typeof this.div_.style.WebkitTransform === "undefined" || 10249 (this.div_.style.WebkitTransform.indexOf("translateZ") === -1 && 10250 this.div_.style.WebkitTransform.indexOf("matrix") === -1) 10251 ) { 10252 this.div_.style.WebkitTransform = "translateZ(0)"; 10253 } 10254
vendor: 6,831 bytes, lines 10255-10453
10255 // Fix up opacity style for benefit of MSIE: 10256 // 10257 if ( 10258 typeof this.div_.style.opacity !== "undefined" && 10259 this.div_.style.opacity !== "" 10260 ) { 10261 // See http://www.quirksmode.org/css/opacity.html 10262 this.div_.style.MsFilter = 10263 '"progid:DXImageTransform.Microsoft.Alpha(Opacity=' + 10264 this.div_.style.opacity * 100 + 10265 ')"'; 10266 this.div_.style.filter = 10267 "alpha(opacity=" + this.div_.style.opacity * 100 + ")"; 10268 } 10269 10270 // Apply required styles: 10271 // 10272 this.div_.style.position = "absolute"; 10273 this.div_.style.visibility = "hidden"; 10274 if (this.zIndex_ !== null) { 10275 this.div_.style.zIndex = this.zIndex_; 10276 } 10277 } 10278 }; 10279 10280 /** 10281 * Get the widths of the borders of the InfoBox. 10282 * @private 10283 * @return {Object} widths object (top, bottom left, right) 10284 */ 10285 InfoBox.prototype.getBoxWidths_ = function () { 10286 var computedStyle; 10287 var bw = { 10288 top: 0, 10289 bottom: 0, 10290 left: 0, 10291 right: 0, 10292 }; 10293 var box = this.div_; 10294 10295 if (document.defaultView && document.defaultView.getComputedStyle) { 10296 computedStyle = box.ownerDocument.defaultView.getComputedStyle( 10297 box, 10298 "" 10299 ); 10300 10301 if (computedStyle) { 10302 // The computed styles are always in pixel units (good!) 10303 bw.top = parseInt(computedStyle.borderTopWidth, 10) || 0; 10304 bw.bottom = parseInt(computedStyle.borderBottomWidth, 10) || 0; 10305 bw.left = parseInt(computedStyle.borderLeftWidth, 10) || 0; 10306 bw.right = parseInt(computedStyle.borderRightWidth, 10) || 0; 10307 } 10308 } else if (document.documentElement.currentStyle) { 10309 // MSIE 10310 10311 if (box.currentStyle) { 10312 // The current styles may not be in pixel units, but assume they are (bad!) 10313 bw.top = parseInt(box.currentStyle.borderTopWidth, 10) || 0; 10314 bw.bottom = parseInt(box.currentStyle.borderBottomWidth, 10) || 0; 10315 bw.left = parseInt(box.currentStyle.borderLeftWidth, 10) || 0; 10316 bw.right = parseInt(box.currentStyle.borderRightWidth, 10) || 0; 10317 } 10318 } 10319 10320 return bw; 10321 }; 10322 10323 /** 10324 * Invoked when <tt>close</tt> is called. Do not call it directly. 10325 */ 10326 InfoBox.prototype.onRemove = function () { 10327 if (this.div_) { 10328 this.div_.parentNode.removeChild(this.div_); 10329 this.div_ = null; 10330 } 10331 }; 10332 10333 /** 10334 * Draws the InfoBox based on the current map projection and zoom level. 10335 */ 10336 InfoBox.prototype.draw = function () { 10337 this.createInfoBoxDiv_(); 10338 10339 var pixPosition = this.getProjection().fromLatLngToDivPixel( 10340 this.position_ 10341 ); 10342 10343 this.div_.style.left = pixPosition.x + this.pixelOffset_.width + "px"; 10344 10345 if (this.alignBottom_) { 10346 this.div_.style.bottom = 10347 -(pixPosition.y + this.pixelOffset_.height) + "px"; 10348 } else { 10349 this.div_.style.top = pixPosition.y + this.pixelOffset_.height + "px"; 10350 } 10351 10352 if (this.isHidden_) { 10353 this.div_.style.visibility = "hidden"; 10354 } else { 10355 this.div_.style.visibility = "visible"; 10356 } 10357 }; 10358 10359 /** 10360 * Sets the options for the InfoBox. Note that changes to the <tt>maxWidth</tt>, 10361 * <tt>closeBoxMargin</tt>, <tt>closeBoxTitle</tt>, <tt>closeBoxURL</tt>, and 10362 * <tt>enableEventPropagation</tt> properties have no affect until the current 10363 * InfoBox is <tt>close</tt>d and a new one is <tt>open</tt>ed. 10364 * @param {InfoBoxOptions} opt_opts 10365 */ 10366 InfoBox.prototype.setOptions = function (opt_opts) { 10367 if (typeof opt_opts.boxClass !== "undefined") { 10368 // Must be first 10369 10370 this.boxClass_ = opt_opts.boxClass; 10371 this.setBoxStyle_(); 10372 } 10373 if (typeof opt_opts.boxStyle !== "undefined") { 10374 // Must be second 10375 10376 this.boxStyle_ = opt_opts.boxStyle; 10377 this.setBoxStyle_(); 10378 } 10379 if (typeof opt_opts.content !== "undefined") { 10380 this.setContent(opt_opts.content); 10381 } 10382 if (typeof opt_opts.disableAutoPan !== "undefined") { 10383 this.disableAutoPan_ = opt_opts.disableAutoPan; 10384 } 10385 if (typeof opt_opts.maxWidth !== "undefined") { 10386 this.maxWidth_ = opt_opts.maxWidth; 10387 } 10388 if (typeof opt_opts.pixelOffset !== "undefined") { 10389 this.pixelOffset_ = opt_opts.pixelOffset; 10390 } 10391 if (typeof opt_opts.alignBottom !== "undefined") { 10392 this.alignBottom_ = opt_opts.alignBottom; 10393 } 10394 if (typeof opt_opts.position !== "undefined") { 10395 this.setPosition(opt_opts.position); 10396 } 10397 if (typeof opt_opts.zIndex !== "undefined") { 10398 this.setZIndex(opt_opts.zIndex); 10399 } 10400 if (typeof opt_opts.closeBoxMargin !== "undefined") { 10401 this.closeBoxMargin_ = opt_opts.closeBoxMargin; 10402 } 10403 if (typeof opt_opts.closeBoxURL !== "undefined") { 10404 this.closeBoxURL_ = opt_opts.closeBoxURL; 10405 } 10406 if (typeof opt_opts.closeBoxTitle !== "undefined") { 10407 this.closeBoxTitle_ = opt_opts.closeBoxTitle; 10408 } 10409 if (typeof opt_opts.infoBoxClearance !== "undefined") { 10410 this.infoBoxClearance_ = opt_opts.infoBoxClearance; 10411 } 10412 if (typeof opt_opts.isHidden !== "undefined") { 10413 this.isHidden_ = opt_opts.isHidden; 10414 } 10415 if (typeof opt_opts.visible !== "undefined") { 10416 this.isHidden_ = !opt_opts.visible; 10417 } 10418 if (typeof opt_opts.enableEventPropagation !== "undefined") { 10419 this.enableEventPropagation_ = opt_opts.enableEventPropagation; 10420 } 10421 10422 if (this.div_) { 10423 this.draw(); 10424 } 10425 }; 10426 10427 /** 10428 * Sets the content of the InfoBox. 10429 * The content can be plain text or an HTML DOM node. 10430 * @param {string|Node} content 10431 */ 10432 InfoBox.prototype.setContent = function (content) { 10433 this.content_ = content; 10434 10435 if (this.div_) { 10436 if (this.closeListener_) { 10437 google.maps.event.removeListener(this.closeListener_); 10438 this.closeListener_ = null; 10439 } 10440 10441 // Odd code required to make things work with MSIE. 10442 // 10443 if (!this.fixedWidthSet_) { 10444 this.div_.style.width = ""; 10445 } 10446 10447 if (typeof content.nodeType === "undefined") { 10448 this.div_.innerHTML = this.getCloseBoxImg_() + content; 10449 } else { 10450 this.div_.innerHTML = this.getCloseBoxImg_(); 10451 this.div_.appendChild(content); 10452 } 10453
10454 // Perverse code required to make things work with MSIE. 10455 // (Ensures the close box does, in fact, float to the right.) 10456 // 10457 if (!this.fixedWidthSet_) { 10458 this.div_.style.width = this.div_.offsetWidth + "px"; 10459 if (typeof content.nodeType === "undefined") { 10460 this.div_.innerHTML = this.getCloseBoxImg_() + content; 10461 } else { 10462 this.div_.innerHTML = this.getCloseBoxImg_(); 10463 this.div_.appendChild(content); 10464 } 10465 } 10466 10467 this.addClickHandler_(); 10468 } 10469 10470 /** 10471 * This event is fired when the content of the InfoBox changes. 10472 * @name InfoBox#content_changed 10473 * @event 10474 */ 10475 google.maps.event.trigger(this, "content_changed"); 10476 }; 10477 10478 /** 10479 * Sets the geographic location of the InfoBox. 10480 * @param {LatLng} latlng 10481 */ 10482 InfoBox.prototype.setPosition = function (latlng) { 10483 this.position_ = latlng; 10484 10485 if (this.div_) { 10486 this.draw(); 10487 } 10488 10489 /** 10490 * This event is fired when the position of the InfoBox changes. 10491 * @name InfoBox#position_changed 10492 * @event 10493 */ 10494 google.maps.event.trigger(this, "position_changed"); 10495 }; 10496 10497 /** 10498 * Sets the zIndex style for the InfoBox. 10499 * @param {number} index 10500 */ 10501 InfoBox.prototype.setZIndex = function (index) { 10502 this.zIndex_ = index; 10503 10504 if (this.div_) { 10505 this.div_.style.zIndex = index; 10506 } 10507 10508 /** 10509 * This event is fired when the zIndex of the InfoBox changes. 10510 * @name InfoBox#zindex_changed 10511 * @event 10512 */ 10513 google.maps.event.trigger(this, "zindex_changed"); 10514 }; 10515 10516 /** 10517 * Sets the visibility of the InfoBox. 10518 * @param {boolean} isVisible 10519 */ 10520 InfoBox.prototype.setVisible = function (isVisible) { 10521 this.isHidden_ = !isVisible; 10522 if (this.div_) { 10523 this.div_.style.visibility = this.isHidden_ ? "hidden" : "visible"; 10524 } 10525 }; 10526 10527 /** 10528 * Returns the content of the InfoBox. 10529 * @returns {string} 10530 */ 10531 InfoBox.prototype.getContent = function () { 10532 return this.content_; 10533 }; 10534 10535 /** 10536 * Returns the geographic location of the InfoBox. 10537 * @returns {LatLng} 10538 */ 10539 InfoBox.prototype.getPosition = function () { 10540 return this.position_; 10541 }; 10542 10543 /** 10544 * Returns the zIndex for the InfoBox. 10545 * @returns {number} 10546 */ 10547 InfoBox.prototype.getZIndex = function () { 10548 return this.zIndex_; 10549 }; 10550 10551 /** 10552 * Returns a flag indicating whether the InfoBox is visible. 10553 * @returns {boolean} 10554 */ 10555 InfoBox.prototype.getVisible = function () { 10556 var isVisible; 10557 10558 if (typeof this.getMap() === "undefined" || this.getMap() === null) { 10559 isVisible = false; 10560 } else { 10561 isVisible = !this.isHidden_; 10562 } 10563 return isVisible; 10564 }; 10565 10566 /** 10567 * Returns the width of the InfoBox in pixels. 10568 * @returns {number} 10569 */ 10570 InfoBox.prototype.getWidth = function () { 10571 var width = null; 10572 10573 if (this.div_) { 10574 width = this.div_.offsetWidth; 10575 } 10576 10577 return width; 10578 }; 10579 10580 /** 10581 * Returns the height of the InfoBox in pixels. 10582 * @returns {number} 10583 */ 10584 InfoBox.prototype.getHeight = function () { 10585 var height = null; 10586 10587 if (this.div_) { 10588 height = this.div_.offsetHeight; 10589 } 10590 10591 return height; 10592 }; 10593 10594 /** 10595 * Shows the InfoBox. [Deprecated; use <tt>setVisible</tt> instead.] 10596 */ 10597 InfoBox.prototype.show = function () { 10598 this.isHidden_ = false; 10599 if (this.div_) { 10600 this.div_.style.visibility = "visible"; 10601 } 10602 }; 10603 10604 /** 10605 * Hides the InfoBox. [Deprecated; use <tt>setVisible</tt> instead.] 10606 */ 10607 InfoBox.prototype.hide = function () { 10608 this.isHidden_ = true; 10609 if (this.div_) { 10610 this.div_.style.visibility = "hidden"; 10611 } 10612 }; 10613 10614 /** 10615 * Adds the InfoBox to the specified map or Street View panorama. If <tt>anchor</tt> 10616 * (usually a <tt>google.maps.Marker</tt>) is specified, the position 10617 * of the InfoBox is set to the position of the <tt>anchor</tt>. If the
10618 * anchor is dragged to a new location, the InfoBox moves as well. 10619 * @param {Map|StreetViewPanorama} map 10620 * @param {MVCObject} [anchor] 10621 */ 10622 InfoBox.prototype.open = function (map, anchor) { 10623 var me = this; 10624 10625 if (anchor) { 10626 this.setPosition(anchor.getPosition()); // BUG FIX 2/17/2018: needed for v3.32 10627 this.moveListener_ = google.maps.event.addListener( 10628 anchor, 10629 "position_changed", 10630 function () { 10631 me.setPosition(this.getPosition()); 10632 } 10633 ); 10634 } 10635 10636 this.setMap(map); 10637 10638 if (this.div_) { 10639 this.panBox_(this.disableAutoPan_); // BUG FIX 2/17/2018: add missing parameter 10640 } 10641 }; 10642 10643 /** 10644 * Removes the InfoBox from the map. 10645 */ 10646 InfoBox.prototype.close = function () { 10647 var i; 10648 10649 if (this.closeListener_) { 10650 google.maps.event.removeListener(this.closeListener_); 10651 this.closeListener_ = null; 10652 } 10653 10654 if (this.eventListeners_) { 10655 for (i = 0; i < this.eventListeners_.length; i++) { 10656 google.maps.event.removeListener(this.eventListeners_[i]); 10657 } 10658 this.eventListeners_ = null; 10659 } 10660 10661 if (this.moveListener_) { 10662 google.maps.event.removeListener(this.moveListener_); 10663 this.moveListener_ = null; 10664 } 10665 10666 if (this.contextListener_) { 10667 google.maps.event.removeListener(this.contextListener_); 10668 this.contextListener_ = null; 10669 } 10670 10671 this.setMap(null); 10672 }; 10673 10674 return new InfoBox(); 10675 } 10676 } 10677 10678 window.WpgmpGoogleMaps = WpgmpGoogleMaps; 10679})(jQuery, window, document); 10680 10681/** 10682 * WpgmpLeafletMaps class - extends BaseMaps for Leaflet provider. 10683 */ 10684 10685(function ($, window, document) { 10686 class WpgmpLeafletMaps extends WpgmpBaseMaps { 10687 constructor(element, map_data = {}, places = []) { 10688 super(element, map_data, places); 10689 10690 const options = this.map_data.map_options; 10691 this.settings = $.extend( 10692 { 10693 min_zoom: "0", 10694 10695 max_zoom: "19", 10696 10697 zoom: "5", 10698 10699 map_type_id: "mapbox.streets", 10700 10701 scroll_wheel: true, 10702 10703 map_visual_refresh: false, 10704 10705 full_screen_control: false, 10706 10707 full_screen_control_position: "bottomright", 10708 10709 zoom_control: true, 10710 10711 zoom_control_style: "SMALL", 10712 10713 zoom_control_position: "topleft", 10714 10715 map_type_control: true, 10716 10717 map_type_control_style: "HORIZONTAL_BAR", 10718 10719 map_type_control_position: "topright", 10720 10721 scale_control: true, 10722 10723 overview_map_control: true, 10724 10725 center_lat: "40.6153983", 10726 10727 center_lng: "-74.2535216", 10728 10729 draggable: true, 10730 10731 gesture: "auto", 10732 10733 infowindow_open_event: "click", 10734 map_tile_url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", 10735 search_control: false, 10736 locateme_control: false, 10737 map_type_control: false, 10738 }, 10739 {}, 10740 options 10741 ); 10742 10743 this.container = $("div[rel='" + $(this.element).attr("id") + "']"); 10744 10745 this.places = []; 10746 10747 this.show_places = []; 10748 10749 this.categories = {}; 10750 10751 this.tabs = []; 10752 10753 this.per_page_value = 0; 10754 10755 this.last_remove_cat_id = ""; 10756 10757 this.last_selected_cat_id = ""; 10758 10759 this.last_category_chkbox_action = ""; 10760 10761 this.search_area = ""; 10762 10763 this.url_filters = []; 10764 10765 this.mbAttr = 10766 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>'; 10767 10768 this.mbURL = ""; 10769 10770 this.isMobile = false; 10771 10772 this.bingmaplayers = {}; 10773 this.infowindow_marker = L.popup({ 10774 closeOnClick: this.settings.close_infowindow_on_map_click === true, 10775 }); 10776 } 10777 10778 /** 10779 * Initializes and renders the Leaflet map with full configuration. 10780 * 10781 * Breakdown of steps: 10782 * 1. Device & screen detection with mobile-specific settings 10783 * 2. Leaflet map initialization using selected provider (Mapbox, or Custom Tile) 10784 * 3. Adds common map controls (zoom, scale, fullscreen, locate) 10785 * 4. Registers dynamic map style switchers and dropdown UI controls 10786 * 5. Builds and displays markers, adjusts layout responsively 10787 * 6. Sets up listings, filtering, sorting, and pagination 10788 * 7. Handles GeoJSON, marker interactions, and scroll-to behavior 10789 * 8. Configures category/location tabs, filter checkboxes, and dynamic content toggles 10790 * 9. Enables accordion UI, autosuggest search, and direction panel logic 10791 * 10. Registers all final event listeners (print, radius change, per-page switch, etc.) 10792 */ 10793 10794 init() { 10795 const map_obj = this; 10796 10797 // Fix default Leaflet marker icon path 10798 delete L.Icon.Default.prototype._getIconUrl; 10799 10800 L.Icon.Default.mergeOptions({ 10801 iconRetinaUrl: wpgmp_local.default_marker_icon, 10802 iconUrl: wpgmp_local.default_marker_icon, 10803 shadowUrl: wpgmp_local.default_marker_icon, 10804 }); 10805 10806 // -------------------------------------------------- 10807 // 1. Device Detection and Responsive Settings 10808 // -------------------------------------------------- 10809 const screenWidth = $(window).width(); 10810 const screenType = 10811 screenWidth <= 480 10812 ? "smartphones" 10813 : screenWidth <= 768 10814 ? "ipads" 10815 : screenWidth >= 1824 10816 ? "large-screens" 10817 : "desktop"; 10818 10819 map_obj.isMobile = 10820 screenType !== "desktop" && map_obj.settings.mobile_specific === true; 10821 10822 if (map_obj.isMobile) { 10823 const screenConfig = map_obj.settings.screens?.[screenType]; 10824 10825 if (screenConfig) {
10826 Object.assign(map_obj.settings, { 10827 width_mobile: screenConfig.map_width_mobile, 10828 height_mobile: screenConfig.map_height_mobile, 10829 zoom: parseInt(screenConfig.map_zoom_level_mobile), 10830 draggable: screenConfig.map_draggable_mobile !== "false", 10831 scroll_wheel: screenConfig.map_scrolling_wheel_mobile !== "false", 10832 }); 10833 } else { 10834 map_obj.settings.width_mobile = ""; 10835 map_obj.settings.height_mobile = ""; 10836 } 10837 10838 if (map_obj.settings.width_mobile) 10839 $(map_obj.element).css("width", map_obj.settings.width_mobile); 10840 10841 if (map_obj.settings.height_mobile) 10842 $(map_obj.element).css("height", map_obj.settings.height_mobile); 10843 } 10844 10845 // -------------------------------------------------- 10846 // 2. Map Options 10847 // -------------------------------------------------- 10848 const center = L.latLng( 10849 map_obj.settings.center_lat, 10850 map_obj.settings.center_lng 10851 ); 10852 10853 const options = { 10854 center, 10855 zoom: parseInt(map_obj.settings.zoom), 10856 minZoom: parseInt(map_obj.settings.min_zoom), 10857 maxZoom: parseInt(map_obj.settings.max_zoom), 10858 scrollWheelZoom: map_obj.settings.scroll_wheel !== "true", 10859 doubleClickZoom: map_obj.settings.doubleclickzoom === true, 10860 dragging: map_obj.settings.draggable, 10861 zoomControl: false, 10862 attributionControl: map_obj.settings.attribution_screen_control, 10863 closePopupOnClick: 10864 map_obj.settings.close_infowindow_on_map_click === true, 10865 }; 10866 10867 // -------------------------------------------------- 10868 // 3. Map Provider Setup 10869 // -------------------------------------------------- 10870 const provider = 10871 map_obj.settings.tiles_provider || 10872 wpgmp_local.tiles_provider || 10873 "OpenStreetMap.Mapnik"; 10874 const mapElement = map_obj.element; 10875 try { 10876 // Special case: Bing Maps (not supported by Leaflet Providers) 10877 try { 10878 // Special case: Bing Maps (not in Leaflet Providers) 10879 if (provider === "bingmap" && wpgmp_local.wpomp_bingmap_key) { 10880 const apiKey = wpgmp_local.wpomp_bingmap_key; 10881 const defaults = { key: apiKey, detectRetina: true }; 10882 map_obj.bingmaplayers = {}; 10883 10884 [ 10885 "Aerial", 10886 "AerialWithLabelsOnDemand", 10887 "RoadOnDemand", 10888 "CanvasDark", 10889 "CanvasLight", 10890 "CanvasGray", 10891 ].forEach((type) => { 10892 map_obj.bingmaplayers[type] = L.bingLayer({ 10893 ...defaults, 10894 imagerySet: type, 10895 }); 10896 }); 10897 10898 map_obj.bingmaplayers["CanvasGray"].addTo(map_obj.map); 10899 }else if(provider.indexOf('CartoDB') !== -1 ){ 10900 map_obj.map = L.map(mapElement, options); 10901 var cartodb_key = wpgmp_local.wpgmp_cartodb_key || ''; 10902 L.tileLayer 10903 .provider(provider, { apiKey: cartodb_key }) 10904 .addTo(map_obj.map); 10905 } 10906 // Standard Leaflet Providers support nested "BasemapAT.grau", "CartoDB.Positron", etc. 10907 else if( provider == 'Leaflet.OpenFreeMap'){ 10908 map_obj.map = L.map(mapElement, options); 10909 map_obj.maplibreLayer = L.maplibreGL( { 10910 style: 'https://tiles.openfreemap.org/styles/liberty', 10911 attribution: 'Leaflet | OpenFreeMap © OpenMapTiles Data from OpenStreetMap' 10912 } ).addTo( map_obj.map ); 10913 } 10914 else { 10915 map_obj.map = L.map(mapElement, options); 10916 L.tileLayer 10917 .provider(provider, { accessToken: wpgmp_local.wpgmp_mapbox_key }) 10918 .addTo(map_obj.map); 10919 } 10920 } catch (error) { 10921 console.error( 10922 "Error loading map tiles from provider:", 10923 provider, 10924 error 10925 ); 10926 } 10927 } catch (error) { 10928 console.error("Error initializing tile layer:", error); 10929 } 10930 10931 // -------------------------------------------------- 10932 // 4. Controls (Zoom, Scale, Fullscreen, Locate) 10933 // -------------------------------------------------- 10934 if (map_obj.settings.scale_control) { 10935 L.control.scale({ position: "bottomleft" }).addTo(map_obj.map); 10936 } 10937 10938 if (map_obj.settings.zoom_control === true) { 10939 L.control 10940 .zoom({ 10941 position: map_obj.settings.zoom_control_position, 10942 }) 10943 .addTo(map_obj.map); 10944 } 10945 10946 if (map_obj.settings.full_screen_control === true) { 10947 map_obj.map.addControl( 10948 new L.Control.Fullscreen({ 10949 position: map_obj.settings.full_screen_control_position, 10950 }) 10951 ); 10952 } 10953 10954 if (map_obj.map_data.page === "edit_location") { 10955 setTimeout(() => map_obj.map.invalidateSize(true), 300); 10956 } 10957 10958 // -------------------------------------------------- 10959 // 5. Map Type Control / Style Dropdowns 10960 // -------------------------------------------------- 10961 if (map_obj.settings.map_type_control) { 10962 let mapStylesMarkup = map_obj.settings.openstreet_styles_markup; 10963 if (provider === "mapbox") 10964 mapStylesMarkup = map_obj.settings.map_box_styles_markup; 10965 10966 const MapStyleControl = L.Control.extend({ 10967 options: { position: map_obj.settings.map_type_control_position }, 10968 onAdd() { 10969 const div = L.DomUtil.create("div", "info legend"); 10970 div.innerHTML = mapStylesMarkup; 10971 div.firstChild.onmousedown = div.firstChild.ondblclick = 10972 L.DomEvent.stopPropagation; 10973 return div; 10974 }, 10975 }); 10976 10977 map_obj.map.addControl(new MapStyleControl()); 10978 10979 // Map style dropdowns for providers 10980 $(document).on("change", "select.wpomp_map_type", function () { 10981 const provider = $(this).val(); 10982 10983 // Remove previously added base layer 10984 if (map_obj.maplibreLayer) { 10985 map_obj.map.removeLayer(map_obj.maplibreLayer); 10986 map_obj.maplibreLayer = null; 10987 } 10988 10989 if (map_obj.mapTypeLayer) { 10990 map_obj.map.removeLayer(map_obj.mapTypeLayer); 10991 map_obj.mapTypeLayer = null; 10992 } 10993 10994 // OpenFreeMap / MapLibre 10995 if (provider === "Leaflet.OpenFreeMap") { 10996 10997 map_obj.maplibreLayer = L.maplibreGL({ 10998 style: "https://tiles.openfreemap.org/styles/liberty", 10999 attribution: 11000 "Leaflet | OpenFreeMap © OpenMapTiles Data from OpenStreetMap" 11001 }).addTo(map_obj.map); 11002 11003 return; 11004 } 11005 11006 // Normal Leaflet Provider 11007 const config = map_obj.settings.openstreet_styles[provider]; 11008 11009 if (config) { 11010 map_obj.mapTypeLayer = L.tileLayer(config, { 11011 maxZoom: parseInt(map_obj.settings.max_zoom) 11012 }).addTo(map_obj.map); 11013 } 11014 }); 11015 11016 $(document).on("change", "select.wpomp_mapbox_type", function () { 11017 const tile_url = `https://api.mapbox.com/styles/v1/mapbox/${$( 11018 this 11019 ).val()}/tiles/{z}/{x}/{y}?access_token=${
11020 wpgmp_local.wpgmp_mapbox_key 11021 }`; 11022 L.tileLayer(tile_url, { 11023 maxZoom: parseInt(map_obj.settings.max_zoom), 11024 }).addTo(map_obj.map); 11025 }); 11026 } 11027 11028 // Further sections to be optimized next: 11029 // - Marker creation, listing integration, and filters 11030 // - Event bindings and route controls 11031 // -------------------------------------------------- 11032 // 6. Marker Creation, Responsive Layout & Listings 11033 // -------------------------------------------------- 11034 11035 // Create and display all markers 11036 map_obj.create_markers(); 11037 map_obj.display_markers(); 11038 11039 // Load Google Fonts if defined 11040 if (typeof map_obj.settings.google_fonts !== "undefined") { 11041 map_obj.load_google_fonts(map_obj.settings.google_fonts); 11042 } 11043 11044 // Capture initial HTML listing content for advanced template 11045 if (map_obj.map_data.map_options?.advance_template === true) { 11046 const listingEl = document.querySelector( 11047 '[data-listing-content="true"][data-wpgmp-map-id]' 11048 ); 11049 if (listingEl?.innerHTML) { 11050 map_obj.map_data.listing.listing_placeholder = listingEl.innerHTML; 11051 } 11052 } 11053 11054 // Fire map loaded hook 11055 map_obj.map_loaded(); 11056 // Adjust layout based on screen/mobile settings 11057 map_obj.responsive_map(); 11058 11059 // Show search control box if enabled 11060 if (map_obj.settings.search_control === true) { 11061 map_obj.show_search_control(); 11062 } 11063 11064 // Show locateme control if enabled 11065 if (map_obj.settings.locateme_control === true) { 11066 map_obj.register_locate_me_control(); 11067 } 11068 11069 // Further sections to be optimized next: 11070 // - Listing pagination & sorting 11071 // - Filter UI and update handlers 11072 // - Tabs, accordions, events, and route direction logic 11073 11074 // -------------------------------------------------- 11075 // 7. Listing Pagination, Sorting, and Filters 11076 // -------------------------------------------------- 11077 11078 const listing = map_obj.map_data.listing; 11079 11080 // Sort default if defined 11081 if (listing?.default_sorting) { 11082 const sort = listing.default_sorting; 11083 const dataType = sort.orderby === "listorder" ? "num" : ""; 11084 map_obj.sorting(sort.orderby, sort.inorder, dataType); 11085 } 11086 11087 // If no listing, but tab filters exist (e.g. category tab sorting) 11088 const tabs = map_obj.map_data.map_tabs; 11089 if (!listing && tabs?.category_tab?.cat_tab) { 11090 const catTab = tabs.category_tab; 11091 const order = catTab.cat_post_order ?? "asc"; 11092 map_obj.sorting("title", order); 11093 } 11094 11095 // Pagination UI 11096 if (listing) { 11097 $(map_obj.container).on("click", ".categories_filter_reset_btn", () => { 11098 $(map_obj.container) 11099 .find(".wpgmp_filter_wrappers select") 11100 .each(function () { 11101 $(this).val($(this).find("option:first").val()); 11102 }); 11103 11104 $(".wpgmp_search_input").val(""); 11105 map_obj.update_filters(); 11106 }); 11107 11108 // Custom filters 11109 map_obj.display_filters_listing(); 11110 map_obj.custom_filters(); 11111 11112 // Pagination plugin 11113 $(map_obj.container) 11114 .find(`.location_pagination${map_obj.map_data.map_property.map_id}`) 11115 .pagination(map_obj.show_places.length, { 11116 callback: map_obj.display_places_listing, 11117 map_data: map_obj, 11118 items_per_page: listing.pagination.listing_per_page, 11119 prev_text: wpgmp_local.prev, 11120 next_text: wpgmp_local.next, 11121 }); 11122 } 11123 11124 // Further sections to be optimized next: 11125 // - Tabs, accordions, direction panels 11126 // - Marker detail click and scroll to view 11127 11128 // -------------------------------------------------- 11129 // 9. Accordion, Auto Suggest, Directions Panel, Events 11130 // -------------------------------------------------- 11131 11132 $(map_obj.container) 11133 .find(".wpgmp-accordion") 11134 .accordion({ speed: "slow" }); 11135 11136 map_obj.google_auto_suggest($(".wpgmp_auto_suggest")); 11137 11138 // -------------------------------------------------- 11139 // 10. Final Event Registration 11140 // -------------------------------------------------- 11141 11142 map_obj.register_events(); 11143 } 11144 11145 event_listener(obj, type, func) { 11146 if (obj && typeof obj.on === "function") { 11147 obj.on(type, func); 11148 } else { 11149 console.warn("event_listener: .on() is not a function for", obj); 11150 } 11151 } 11152 11153 create_leaflet_marker({ 11154 map, 11155 position, // [lat, lng] 11156 iconUrl = "", 11157 popupAnchor = [0, -30], 11158 draggable = false, 11159 title = "", 11160 isDivIcon = false, 11161 label = "", 11162 customClass = "wpgmp-custom-label-icon", 11163 addToMap = true, 11164 }) { 11165 var map_obj = this; 11166 let icon; 11167 var iconSize = map_obj.getMarkerSize(); 11168 11169 if (!iconUrl || iconUrl.trim() === "") { 11170 iconUrl = 11171 map_obj.settings.marker_default_icon || 11172 wpgmp_local.default_marker_icon; 11173 } 11174 11175 const isSvg = iconUrl.toLowerCase().includes('image/svg') || iconUrl.toLowerCase().endsWith('.svg'); 11176 11177 if (isDivIcon) { 11178 const divIconOptions = { 11179 className: customClass, 11180 html: `<div class="wpgmp-marker-label">${label}</div>`, 11181 }; 11182 11183 if (isSvg) { 11184 divIconOptions.iconSize = iconSize; 11185 divIconOptions.iconAnchor = [iconSize[0] / 2, iconSize[1] / 2]; 11186 } 11187 11188 icon = L.divIcon(divIconOptions); 11189 11190 } else { 11191 const iconOptions = { 11192 iconUrl, 11193 iconAnchor: [iconSize[0] / 2, iconSize[1]], 11194 popupAnchor, 11195 }; 11196 11197 // Only apply iconSize if SVG 11198 if (isSvg) { 11199 iconOptions.iconSize = iconSize; 11200 } 11201 11202 icon = L.icon(iconOptions); 11203 11204 } 11205 11206 const marker = L.marker(position, { 11207 icon, 11208 draggable, 11209 title, 11210 }); 11211 11212 if (addToMap && map) { 11213 marker.addTo(map); 11214 } 11215 11216 return marker; 11217 } 11218 11219 map_loaded() { 11220 const map_obj = this; 11221 const map = map_obj.map; 11222 11223 // Center map using current location or static marker 11224 if (map_obj.settings.center_by_nearest === true) { 11225 map_obj.center_by_nearest(); 11226 } else if (map_obj.settings.show_center_marker === true) { 11227 map_obj.show_center_marker(); 11228 } 11229 11230 // Show center circle if manually positioned 11231 if ( 11232 map_obj.settings.center_by_nearest === false && 11233 map_obj.settings.show_center_circle === true 11234 ) { 11235 map_obj.show_center_circle(); 11236 } 11237 11238 // Fit bounds to all markers if enabled 11239 if (map_obj.settings.fit_bounds === true) { 11240 map_obj.fit_bounds(); 11241 } 11242 11243 function adjustLeafletPopup(popup) { 11244 const popupEl = popup.getElement(); 11245 if (!popupEl) return; 11246 11247 const wrapper = popupEl.querySelector(".leaflet-popup-content-wrapper"); 11248 const content = popupEl.querySelector(".leaflet-popup-content"); 11249 const markerSize = map_obj.getMarkerSize?.() || [32, 32]; 11250 11251 if (wrapper) { 11252 wrapper.classList.add("wpgmp-infowindow-addon"); 11253 wrapper.removeAttribute("style"); 11254 } 11255 if (content) { 11256 content.removeAttribute("style"); 11257 } 11258 11259 // Calculate the popup width and center it 11260 const rect = popupEl.getBoundingClientRect(); 11261 const width = rect.width || 200; // fallback if rect is 0 11262 popupEl.style.left = `-${width / 2}px`; 11263 popupEl.style.bottom = `${markerSize[1] / 2}px`; 11264 } 11265 11266 11267 // Remove inline styling for Leaflet popups and apply custom class 11268 map.on("popupopen", function (e) { 11269 adjustLeafletPopup(e.popup); 11270 }); 11271 11272 map.on("zoomend", function () { 11273 const openPopup = map._popup; // Leaflet stores currently open popup here 11274 if (openPopup) { 11275 adjustLeafletPopup(openPopup); 11276 } 11277 }); 11278 11279 11280 } 11281 } 11282 11283 window.WpgmpLeafletMaps = WpgmpLeafletMaps; 11284})(jQuery, window, document); 11285 11286// ====== Google Maps API Error Handler (add at top of maps.js) ====== 11287// - Runs only for maps that use the Google provider (not Leaflet / OpenStreetMap etc.). 11288// - Does nothing inside the Gutenberg / Elementor / Divi live previews 11289// (the preview document sets window.wpgmpBuilderPreview = true before the plugin scripts load). 11290 11291window.gm_authFailure = function () { 11292 showWpgmpApiError( 11293 'Google Maps authentication failed. Check your API key, billing status, and domain restrictions.', 11294 'https://developers.google.com/maps/documentation/javascript/error-messages' 11295 ); 11296}; 11297 11298(function () { 11299 if (window.wpgmpBuilderPreview) return; // builder preview: don't hook the console at all 11300 11301 const patterns = [ 11302 { match: 'NoApiKeys', msg: 'No Google Maps API key has been set. Please add a valid API key in the plugin settings.', link: 'https://developers.google.com/maps/documentation/javascript/error-messages#no-api-keys' }, 11303 { match: 'InvalidKeyMapError', msg: 'The Google Maps API key is invali
11303d.', link: 'https://developers.google.com/maps/documentation/javascript/error-messages#invalid-key-map-error' }, 11304 { match: 'ApiProjectMapError', msg: 'There is a problem with the Google Maps API configuration. The API key may not have been added, may be invalid, or the Google Cloud project linked to the API key may be deleted, disabled, or misconfigured.', link: 'https://developers.google.com/maps/documentation/javascript/error-messages#api-project-map-error' }, 11305 { match: 'BillingNotEnabledMapError', msg: 'Billing is not enabled for this Google Maps API project.', link: 'https://developers.google.com/maps/documentation/javascript/error-messages#billing-not-enabled-map-error' }, 11306 { match: 'ApiNotActivatedMapError', msg: 'The Maps JavaScript API is not activated for this project.', link: 'https://developers.google.com/maps/documentation/javascript/error-messages#api-not-activated-map-error' }, 11307 { match: 'OverQuotaMapError', msg: 'The Google Maps API quota has been exceeded for this key.', link: 'https://developers.google.com/maps/documentation/javascript/error-messages#over-quota-map-error' }, 11308 ]; 11309 11310 function intercept(level) { 11311 const original = console[level]; 11312 console[level] = function (...args) { 11313 const msg = args.join(' '); 11314 const hit = patterns.find(p => msg.includes(p.match)); 11315 if (hit) { 11316 showWpgmpApiError(hit.msg, hit.link); 11317 } 11318 original.apply(console, args); 11319 }; 11320 } 11321 11322 intercept('error'); 11323 intercept('warn'); 11324})(); 11325 11326// Returns true only when this map element belongs to a Google-provider map. 11327function wpgmpIsGoogleMap(mapEl) { 11328 const container = mapEl.closest('.wpgmp_map_container'); 11329 if (container) { 11330 const m = container.className.match(/wpgmp-map-provider-([\w-]+)/); 11331 if (m) return m[1] === 'google'; 11332 } 11333 // No provider class found (e.g. the admin preview): fall back to whether Google Maps is loaded. 11334 return !!(window.google && window.google.maps); 11335} 11336 11337function showWpgmpApiError(message, docLink) { 11338 if (window.wpgmpBuilderPreview) return; // not in builder previews 11339 if (!window.wpgmp_local || !wpgmp_local.is_admin) return; // admins only 11340 11341 const mapElements = document.querySelectorAll('.wpgmp_map, #wpgmp_map, #wpgmp_map_preview'); 11342 11343 mapElements.forEach(function (mapEl) { 11344 if (!wpgmpIsGoogleMap(mapEl)) return; // Google provider only 11345 if (mapEl.querySelector('.wpgmp-error-overlay')) return; // avoid duplicates 11346 11347 mapEl.style.position = mapEl.style.position || 'relative'; 11348 11349 const overlay = document.createElement('div'); 11350 overlay.className = 'wpgmp-error-overlay'; 11351 overlay.innerHTML = ` 11352 <div class="wpgmp-error-box"> 11353 <span class="wpgmp-error-icon">â ï¸</span> 11354 <p>${message}</p> 11355 ${docLink ? `<a href="${docLink}" target="_blank" rel="noopener noreferrer" class="wpgmp-error-link">Learn more</a>` : ''} 11356 </div> 11357 `; 11358 mapEl.appendChild(overlay); 11359 }); 11360} 11361// ====== End Error Handler ====== 11362 11363class WpgmpMapFactory { 11364 create(provider, element, options, places) { 11365 // Use fallback if provider is missing 11366 provider = provider || (options?.provider) || 'google'; 11367 options.provider = provider; // enforce for downstream use 11368 11369 switch (provider.toLowerCase()) { 11370 case 'leaflet': 11371 return new WpgmpLeafletMaps(element, options, places); 11372 case 'google': 11373 return new WpgmpGoogleMaps(element, options, places); 11374 default: 11375 console.warn(`Unknown provider "${provider}". Falling back to Google Maps.`); 11376 return new WpgmpGoogleMaps(element, options, places); 11377 } 11378 } 11379} 11380(function ($, window, document) { 11381 "use strict"; 11382 11383 $.fn.maps = function (options = {}, places = []) { 11384 return this.each(function () { 11385 const stepLabel = `[wpgmp/maps]`; 11386 11387 if (typeof options === 'string') { 11388 try { 11389 options = JSON.parse(atob(options)); 11390 if (wpgmp_local.debug_mode) { 11391 console.log(`${stepLabel} [Step 1] Options decoded from base64`, options); 11392 } 11393 } catch (e) { 11394 console.error(`${stepLabel} [Step 1] Failed to decode options:`, e); 11395 options = {}; 11396 } 11397 } 11398 11399 if (!$.data(this, "wpgmp_maps")) { 11400 let provider = wpgmp_local.map_provider || "google"; 11401 if (provider !== "google") { 11402 provider = "leaflet"; 11403 } 11404 11405 if (wpgmp_local.debug_mode) { 11406 console.log(`${stepLabel} [Step 2] Preparing to initialize map...`); 11407 console.log(`${stepLabel} Provider: ${provider}`); 11408 console.log(`${stepLabel} Target Element:`, this); 11409 console.log(`${stepLabel} Options:`, options); 11410 } 11411 11412 setTimeout(() => { 11413 const instance = new WpgmpMapFactory().create(provider, this, options, places); 11414 instance.init(); 11415 $.data(this, "wpgmp_maps", instance); 11416 11417 if (wpgmp_local.debug_mode) { 11418 console.log(`${stepLabel} [Step 3] Map instance created and initialized.`); 11419 } 11420 11421 // ð Internal event to signal complete readiness 11422 if (wpgmp_local.debug_mode) { 11423 console.log(`${stepLabel} [Step 4] Events dispatched: wpgmpInstanceReady, wpgmpLoaded`); 11424 } 11425 const internalEvent = new CustomEvent("wpgmpInstanceReady", { 11426 detail: { element: this, instance, provider }, 11427 }); 11428 document.dispatchEvent(internalEvent); 11429 11430 // External/public event 11431 const externalEvent = new CustomEvent("wpgmpLoaded", { 11432 detail: { element: this, instance, provider }, 11433 }); 11434 document.dispatchEvent(externalEvent); 11435 11436 11437 11438 }, wpgmp_local.set_timeout); 11439 } else { 11440 if (wpgmp_local.debug_mode) { 11441 console.log(`${stepLabel} [Skipped] Map already initialized on element:`, this); 11442 } 11443 } 11444 }); 11445 }; 11446})(jQuery, window, document); 11447 11448function wpgmpInitMap() { 11449 jQuery(document).ready(function ($) { 11450 var stepLabel = `[wpgmpInitMap]`; 11451 11452 if (!$.fn.maps) { 11453 if (wpgmp_local.debug_mode) { 11454 console.warn(`${stepLabel} [Abort] $.fn.maps not defined`); 11455 } 11456 return; 11457 } 11458 11459 // â STEP 1: Initialize each map 11460 $(".wpgmp_map").each(function () { 11461 stepLabel = `[wpgmpShowMap]`; 11462 const mapId = $(this).data("map-id"); 11463 const mapVarName = "mapdata" + mapId; 11464 const mapData = window.wpgmp?.[mapVarName]; 11465 11466 if (mapData) { 11467 if (wpgmp_local.debug_mode) { 11468 console.log(`${stepLabel} [Step 1] Map data found for ID: ${mapId}`); 11469 } 11470 $("#map" + mapId).maps(mapData); 11471 } else { 11472 if (wpgmp_local.debug_mode) { 11473 console.warn(`${stepLabel} [Step 1] Map data missing for ID: ${mapId}, retrying in ${wpgmp_local.set_timeout}ms...`); 11474 } 11475 11476 setTimeout(() => { 11477 const retryData = window.wpgmp?.[mapVarName]; 11478 if (retryData) { 11479 if (wpgmp_local.debug_mode) { 11480 console.log(`${stepLabel} [Step 1] Retry succeeded for ID: ${mapId}`); 11481 } 11482 $("#map" + mapId).maps(retryData); 11483 } else { 11484 console.error(`${stepLabel} [Step 1] Retry failed: Map data still missing for ID: ${mapId}`); 11485 } 11486 }, wpgmp_local.set_timeout); 11487 } 11488 }); 11489
11490 // â STEP 2: Listen for internal complete signal 11491 document.addEventListener("wpgmpInstanceReady", function (e) { 11492 const { element, instance, provider } = e.detail; 11493 const mapId = $(element).data("map-id"); 11494 11495 if (wpgmp_local.debug_mode) { 11496 console.log(`${stepLabel} [Step 2] Map fully initialized.`); 11497 console.log(`${stepLabel} Map ID: ${mapId}`); 11498 console.log(`${stepLabel} Provider: ${provider}`); 11499 console.log(`${stepLabel} Instance:`, instance); 11500 } 11501 }); 11502 11503 // â STEP 3: Dispatch global ready signal 11504 window.wpgmpInitialized = true; 11505 stepLabel = `[wpgmpInitMap]`; 11506 setTimeout(() => { 11507 if (wpgmp_local.debug_mode) { 11508 console.log(`${stepLabel} [Step 1] Global event dispatched: wpgmpReady`); 11509 } 11510 document.dispatchEvent(new Event("wpgmpReady")); 11511 }, wpgmp_local.set_timeout); 11512 }); 11513}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.