@maptiler/sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/.eslintignore +1 -0
  2. package/.eslintrc.cjs +10 -0
  3. package/.github/workflows/npm-publish.yml +23 -0
  4. package/LICENSE +29 -0
  5. package/demos/maptiler-sdk.css +147 -0
  6. package/demos/maptiler-sdk.umd.js +3287 -0
  7. package/demos/simple.html +63 -0
  8. package/dist/maptiler-sdk.css +147 -0
  9. package/dist/maptiler-sdk.d.ts +531 -0
  10. package/dist/maptiler-sdk.min.mjs +1 -0
  11. package/dist/maptiler-sdk.mjs +1128 -0
  12. package/dist/maptiler-sdk.mjs.map +1 -0
  13. package/dist/maptiler-sdk.umd.js +3287 -0
  14. package/dist/maptiler-sdk.umd.js.map +1 -0
  15. package/dist/maptiler-sdk.umd.min.js +579 -0
  16. package/docs/.nojekyll +1 -0
  17. package/docs/assets/custom.css +118 -0
  18. package/docs/assets/highlight.css +134 -0
  19. package/docs/assets/main.js +54 -0
  20. package/docs/assets/search.js +1 -0
  21. package/docs/assets/style.css +1257 -0
  22. package/docs/classes/Map.html +273 -0
  23. package/docs/classes/Point.html +549 -0
  24. package/docs/classes/SdkConfig.html +188 -0
  25. package/docs/demos/maptiler-sdk.css +147 -0
  26. package/docs/demos/maptiler-sdk.umd.js +3287 -0
  27. package/docs/demos/simple.html +63 -0
  28. package/docs/functions/addProtocol.html +146 -0
  29. package/docs/functions/clearPrewarmedResources.html +92 -0
  30. package/docs/functions/clearStorage.html +124 -0
  31. package/docs/functions/getRTLTextPluginStatus.html +92 -0
  32. package/docs/functions/prewarm.html +92 -0
  33. package/docs/functions/removeProtocol.html +106 -0
  34. package/docs/functions/setRTLTextPlugin.html +112 -0
  35. package/docs/functions/supported.html +97 -0
  36. package/docs/images/JS-logo.svg +4 -0
  37. package/docs/images/TS-logo.svg +6 -0
  38. package/docs/images/maptiler-logo.svg +19 -0
  39. package/docs/images/maptiler-sdk-logo.afdesign +0 -0
  40. package/docs/images/maptiler-sdk-logo.svg +66 -0
  41. package/docs/images/screenshots/alps.gif +0 -0
  42. package/docs/images/screenshots/grandcanyon.gif +0 -0
  43. package/docs/images/screenshots/lang-arabic.png +0 -0
  44. package/docs/images/screenshots/lang-hebrew.png +0 -0
  45. package/docs/images/screenshots/multilang.gif +0 -0
  46. package/docs/images/screenshots/static-bounded-europe-1024.png +0 -0
  47. package/docs/images/screenshots/static-bounded-europe-2048.png +0 -0
  48. package/docs/images/screenshots/static-bounded-portugal-1024x2048.png +0 -0
  49. package/docs/images/screenshots/static-bounded-portugal-2048x2048.png +0 -0
  50. package/docs/images/screenshots/static-with-path.png +0 -0
  51. package/docs/images/screenshots/style-basic-v2.png +0 -0
  52. package/docs/images/screenshots/style-bright.png +0 -0
  53. package/docs/images/screenshots/style-dataviz-dark.png +0 -0
  54. package/docs/images/screenshots/style-hybrid.png +0 -0
  55. package/docs/images/screenshots/style-osm.png +0 -0
  56. package/docs/images/screenshots/style-outdoor.png +0 -0
  57. package/docs/images/screenshots/style-pastel.png +0 -0
  58. package/docs/images/screenshots/style-satellite.png +0 -0
  59. package/docs/images/screenshots/style-streets-v2-dark.png +0 -0
  60. package/docs/images/screenshots/style-streets-v2-light.png +0 -0
  61. package/docs/images/screenshots/style-streets-v2.png +0 -0
  62. package/docs/images/screenshots/style-toner.png +0 -0
  63. package/docs/images/screenshots/style-topo.png +0 -0
  64. package/docs/images/screenshots/style-topographique.png +0 -0
  65. package/docs/images/screenshots/style-voyager.png +0 -0
  66. package/docs/images/screenshots/style-winter.png +0 -0
  67. package/docs/index.html +601 -0
  68. package/docs/modules.html +142 -0
  69. package/docs/types/LanguageKey.html +90 -0
  70. package/docs/types/LanguageString.html +90 -0
  71. package/docs/types/MapOptions.html +90 -0
  72. package/docs/types/Matrix2.html +90 -0
  73. package/docs/types/Unit.html +88 -0
  74. package/docs/variables/AJAXError.html +88 -0
  75. package/docs/variables/AttributionControl.html +88 -0
  76. package/docs/variables/CanvasSource.html +88 -0
  77. package/docs/variables/Evented.html +88 -0
  78. package/docs/variables/FullscreenControl.html +88 -0
  79. package/docs/variables/GeoJSONSource.html +88 -0
  80. package/docs/variables/GeolocateControl.html +88 -0
  81. package/docs/variables/GeolocationType.html +95 -0
  82. package/docs/variables/ImageSource.html +88 -0
  83. package/docs/variables/Language.html +249 -0
  84. package/docs/variables/LngLat.html +88 -0
  85. package/docs/variables/LngLatBounds.html +88 -0
  86. package/docs/variables/LogoControl.html +88 -0
  87. package/docs/variables/Marker.html +88 -0
  88. package/docs/variables/MercatorCoordinate.html +88 -0
  89. package/docs/variables/NavigationControl.html +88 -0
  90. package/docs/variables/Popup.html +88 -0
  91. package/docs/variables/RasterDEMTileSource.html +88 -0
  92. package/docs/variables/RasterTileSource.html +88 -0
  93. package/docs/variables/ScaleControl.html +88 -0
  94. package/docs/variables/Style.html +88 -0
  95. package/docs/variables/TerrainControl.html +88 -0
  96. package/docs/variables/VectorTileSource.html +88 -0
  97. package/docs/variables/VideoSource.html +88 -0
  98. package/docs/variables/config.html +88 -0
  99. package/docs/variables/maxParallelImageRequests.html +88 -0
  100. package/docs/variables/version.html +88 -0
  101. package/docs/variables/workerCount.html +88 -0
  102. package/docs/variables/workerUrl.html +88 -0
  103. package/docsmd/.nojekyll +1 -0
  104. package/docsmd/README.md +710 -0
  105. package/docsmd/assets/custom.css +118 -0
  106. package/docsmd/classes/Map.md +292 -0
  107. package/docsmd/classes/Point.md +603 -0
  108. package/docsmd/classes/SdkConfig.md +186 -0
  109. package/docsmd/images/JS-logo.svg +4 -0
  110. package/docsmd/images/TS-logo.svg +6 -0
  111. package/docsmd/images/maptiler-logo.svg +19 -0
  112. package/docsmd/images/maptiler-sdk-logo.afdesign +0 -0
  113. package/docsmd/images/maptiler-sdk-logo.svg +66 -0
  114. package/docsmd/images/screenshots/alps.gif +0 -0
  115. package/docsmd/images/screenshots/grandcanyon.gif +0 -0
  116. package/docsmd/images/screenshots/lang-arabic.png +0 -0
  117. package/docsmd/images/screenshots/lang-hebrew.png +0 -0
  118. package/docsmd/images/screenshots/multilang.gif +0 -0
  119. package/docsmd/images/screenshots/static-bounded-europe-1024.png +0 -0
  120. package/docsmd/images/screenshots/static-bounded-europe-2048.png +0 -0
  121. package/docsmd/images/screenshots/static-bounded-portugal-1024x2048.png +0 -0
  122. package/docsmd/images/screenshots/static-bounded-portugal-2048x2048.png +0 -0
  123. package/docsmd/images/screenshots/static-with-path.png +0 -0
  124. package/docsmd/images/screenshots/style-basic-v2.png +0 -0
  125. package/docsmd/images/screenshots/style-bright.png +0 -0
  126. package/docsmd/images/screenshots/style-dataviz-dark.png +0 -0
  127. package/docsmd/images/screenshots/style-hybrid.png +0 -0
  128. package/docsmd/images/screenshots/style-osm.png +0 -0
  129. package/docsmd/images/screenshots/style-outdoor.png +0 -0
  130. package/docsmd/images/screenshots/style-pastel.png +0 -0
  131. package/docsmd/images/screenshots/style-satellite.png +0 -0
  132. package/docsmd/images/screenshots/style-streets-v2-dark.png +0 -0
  133. package/docsmd/images/screenshots/style-streets-v2-light.png +0 -0
  134. package/docsmd/images/screenshots/style-streets-v2.png +0 -0
  135. package/docsmd/images/screenshots/style-toner.png +0 -0
  136. package/docsmd/images/screenshots/style-topo.png +0 -0
  137. package/docsmd/images/screenshots/style-topographique.png +0 -0
  138. package/docsmd/images/screenshots/style-voyager.png +0 -0
  139. package/docsmd/images/screenshots/style-winter.png +0 -0
  140. package/images/JS-logo.svg +4 -0
  141. package/images/TS-logo.svg +6 -0
  142. package/images/maptiler-logo.svg +19 -0
  143. package/images/maptiler-sdk-logo.afdesign +0 -0
  144. package/images/maptiler-sdk-logo.svg +66 -0
  145. package/images/screenshots/alps.gif +0 -0
  146. package/images/screenshots/grandcanyon.gif +0 -0
  147. package/images/screenshots/lang-arabic.png +0 -0
  148. package/images/screenshots/lang-hebrew.png +0 -0
  149. package/images/screenshots/multilang.gif +0 -0
  150. package/images/screenshots/static-bounded-europe-1024.png +0 -0
  151. package/images/screenshots/static-bounded-europe-2048.png +0 -0
  152. package/images/screenshots/static-bounded-portugal-1024x2048.png +0 -0
  153. package/images/screenshots/static-bounded-portugal-2048x2048.png +0 -0
  154. package/images/screenshots/static-with-path.png +0 -0
  155. package/images/screenshots/style-basic-v2.png +0 -0
  156. package/images/screenshots/style-bright.png +0 -0
  157. package/images/screenshots/style-dataviz-dark.png +0 -0
  158. package/images/screenshots/style-hybrid.png +0 -0
  159. package/images/screenshots/style-osm.png +0 -0
  160. package/images/screenshots/style-outdoor.png +0 -0
  161. package/images/screenshots/style-pastel.png +0 -0
  162. package/images/screenshots/style-satellite.png +0 -0
  163. package/images/screenshots/style-streets-v2-dark.png +0 -0
  164. package/images/screenshots/style-streets-v2-light.png +0 -0
  165. package/images/screenshots/style-streets-v2.png +0 -0
  166. package/images/screenshots/style-toner.png +0 -0
  167. package/images/screenshots/style-topo.png +0 -0
  168. package/images/screenshots/style-topographique.png +0 -0
  169. package/images/screenshots/style-voyager.png +0 -0
  170. package/images/screenshots/style-winter.png +0 -0
  171. package/package.json +71 -0
  172. package/readme.md +609 -0
  173. package/rollup.config.js +161 -0
  174. package/scripts/replace-path-with-content.js +51 -0
  175. package/src/CustomGeolocateControl.ts +193 -0
  176. package/src/CustomLogoControl.ts +59 -0
  177. package/src/Map.ts +897 -0
  178. package/src/MaptilerNavigationControl.ts +66 -0
  179. package/src/Point.ts +336 -0
  180. package/src/TerrainControl.ts +87 -0
  181. package/src/config.ts +92 -0
  182. package/src/defaults.ts +20 -0
  183. package/src/index.ts +171 -0
  184. package/src/language.ts +139 -0
  185. package/src/mapstyle.ts +38 -0
  186. package/src/style/style_template.css +146 -0
  187. package/src/style/svg/v6-compass.svg +12 -0
  188. package/src/style/svg/v6-fullscreen-off.svg +7 -0
  189. package/src/style/svg/v6-fullscreen.svg +7 -0
  190. package/src/style/svg/v6-geolocate-active-error.svg +10 -0
  191. package/src/style/svg/v6-geolocate-active.svg +7 -0
  192. package/src/style/svg/v6-geolocate-background.svg +8 -0
  193. package/src/style/svg/v6-geolocate-disabled.svg +10 -0
  194. package/src/style/svg/v6-geolocate.svg +7 -0
  195. package/src/style/svg/v6-terrain-on.svg +7 -0
  196. package/src/style/svg/v6-terrain.svg +7 -0
  197. package/src/style/svg/v6-zoom-minus.svg +7 -0
  198. package/src/style/svg/v6-zoom-plus.svg +7 -0
  199. package/src/tools.ts +45 -0
  200. package/src/unit.ts +1 -0
  201. package/tsconfig.json +11 -0
  202. package/typedoc.css +118 -0
  203. package/typedoc.json +13 -0
@@ -0,0 +1,579 @@
1
+ (function(tt,la){typeof exports=="object"&&typeof module<"u"?la(exports):typeof define=="function"&&define.amd?define(["exports"],la):(tt=typeof globalThis<"u"?globalThis:tt||self,la(tt.maptilersdk={}))})(this,function(tt){"use strict";var la=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function fp(M){return M&&M.__esModule&&Object.prototype.hasOwnProperty.call(M,"default")?M.default:M}var bs={exports:{}};(function(M,b){(function(k,Z){M.exports=Z()})(la,function(){var k,Z,ie;function me(c,Ie){if(!k)k=Ie;else if(!Z)Z=Ie;else{var Ke="var sharedChunk = {}; ("+k+")(sharedChunk); ("+Z+")(sharedChunk);",lt={};k(lt),ie=Ie(lt),typeof window<"u"&&(ie.workerUrl=window.URL.createObjectURL(new Blob([Ke],{type:"text/javascript"})))}}me(["exports"],function(c){var Ie=Ke;function Ke(i,e,r,s){this.cx=3*i,this.bx=3*(r-i)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(s-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=i,this.p1y=e,this.p2x=r,this.p2y=s}function lt(i,e,r,s){const l=new Ie(i,e,r,s);return function(u){return l.solve(u)}}Ke.prototype={sampleCurveX:function(i){return((this.ax*i+this.bx)*i+this.cx)*i},sampleCurveY:function(i){return((this.ay*i+this.by)*i+this.cy)*i},sampleCurveDerivativeX:function(i){return(3*this.ax*i+2*this.bx)*i+this.cx},solveCurveX:function(i,e){if(e===void 0&&(e=1e-6),i<0)return 0;if(i>1)return 1;for(var r=i,s=0;s<8;s++){var l=this.sampleCurveX(r)-i;if(Math.abs(l)<e)return r;var u=this.sampleCurveDerivativeX(r);if(Math.abs(u)<1e-6)break;r-=l/u}var d=0,f=1;for(r=i,s=0;s<20&&(l=this.sampleCurveX(r),!(Math.abs(l-i)<e));s++)i>l?d=r:f=r,r=.5*(f-d)+d;return r},solve:function(i,e){return this.sampleCurveY(this.solveCurveX(i,e))}};const St=lt(.25,.1,.25,1);function Me(i,e,r){return Math.min(r,Math.max(e,i))}function K(i,e,r){const s=r-e,l=((i-e)%s+s)%s+e;return l===e?r:l}function Je(i,...e){for(const r of e)for(const s in r)i[s]=r[s];return i}let ti=1;function Jt(i,e){i.forEach(r=>{e[r]&&(e[r]=e[r].bind(e))})}function Dt(i,e,r){const s={};for(const l in i)s[l]=e.call(r||this,i[l],l,i);return s}function Vn(i,e,r){const s={};for(const l in i)e.call(r||this,i[l],l,i)&&(s[l]=i[l]);return s}function Ji(i){return Array.isArray(i)?i.map(Ji):typeof i=="object"&&i?Dt(i,Ji):i}const Lr={};function Yt(i){Lr[i]||(typeof console<"u"&&console.warn(i),Lr[i]=!0)}function nr(i,e,r){return(r.y-i.y)*(e.x-i.x)>(e.y-i.y)*(r.x-i.x)}function Dr(i){let e=0;for(let r,s,l=0,u=i.length,d=u-1;l<u;d=l++)r=i[l],s=i[d],e+=(s.x-r.x)*(r.y+s.y);return e}function Yi(){return typeof WorkerGlobalScope<"u"&&typeof self<"u"&&self instanceof WorkerGlobalScope}function Nn(i){const e={};if(i.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(r,s,l,u)=>{const d=l||u;return e[s]=!d||d.toLowerCase(),""}),e["max-age"]){const r=parseInt(e["max-age"],10);isNaN(r)?delete e["max-age"]:e["max-age"]=r}return e}let on=null;function Rr(i){if(on==null){const e=i.navigator?i.navigator.userAgent:null;on=!!i.safari||!(!e||!(/\b(iPad|iPhone|iPod)\b/.test(e)||e.match("Safari")&&!e.match("Chrome")))}return on}function Br(i){return typeof ImageBitmap<"u"&&i instanceof ImageBitmap}const ln="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";let br,cn;const hn={now:typeof performance<"u"&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),frame(i){const e=requestAnimationFrame(i);return{cancel:()=>cancelAnimationFrame(e)}},getImageData(i,e=0){const r=window.document.createElement("canvas"),s=r.getContext("2d",{willReadFrequently:!0});if(!s)throw new Error("failed to create canvas 2d context");return r.width=i.width,r.height=i.height,s.drawImage(i,0,0,i.width,i.height),s.getImageData(-e,-e,i.width+2*e,i.height+2*e)},resolveURL:i=>(br||(br=document.createElement("a")),br.href=i,br.href),hardwareConcurrency:typeof navigator<"u"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return!!matchMedia&&(cn==null&&(cn=matchMedia("(prefers-reduced-motion: reduce)")),cn.matches)}};var it=sr;function sr(i,e){this.x=i,this.y=e}sr.prototype={clone:function(){return new sr(this.x,this.y)},add:function(i){return this.clone()._add(i)},sub:function(i){return this.clone()._sub(i)},multByPoint:function(i){return this.clone()._multByPoint(i)},divByPoint:function(i){return this.clone()._divByPoint(i)},mult:function(i){return this.clone()._mult(i)},div:function(i){return this.clone()._div(i)},rotate:function(i){return this.clone()._rotate(i)},rotateAround:function(i,e){return this.clone()._rotateAround(i,e)},matMult:function(i){return this.clone()._matMult(i)},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(i){return this.x===i.x&&this.y===i.y},dist:function(i){return Math.sqrt(this.distSqr(i))},distSqr:function(i){var e=i.x-this.x,r=i.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(i){return Math.atan2(this.y-i.y,this.x-i.x)},angleWith:function(i){return this.angleWithSep(i.x,i.y)},angleWithSep:function(i,e){return Math.atan2(this.x*e-this.y*i,this.x*i+this.y*e)},_matMult:function(i){var e=i[2]*this.x+i[3]*this.y;return this.x=i[0]*this.x+i[1]*this.y,this.y=e,this},_add:function(i){return this.x+=i.x,this.y+=i.y,this},_sub:function(i){return this.x-=i.x,this.y-=i.y,this},_mult:function(i){return this.x*=i,this.y*=i,this},_div:function(i){return this.x/=i,this.y/=i,this},_multByPoint:function(i){return this.x*=i.x,this.y*=i.y,this},_divByPoint:function(i){return this.x/=i.x,this.y/=i.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var i=this.y;return this.y=this.x,this.x=-i,this},_rotate:function(i){var e=Math.cos(i),r=Math.sin(i),s=r*this.x+e*this.y;return this.x=e*this.x-r*this.y,this.y=s,this},_rotateAround:function(i,e){var r=Math.cos(i),s=Math.sin(i),l=e.y+s*(this.x-e.x)+r*(this.y-e.y);return this.x=e.x+r*(this.x-e.x)-s*(this.y-e.y),this.y=l,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},sr.convert=function(i){return i instanceof sr?i:Array.isArray(i)?new sr(i[0],i[1]):i};const Fr={MAX_PARALLEL_IMAGE_REQUESTS:16,REGISTERED_PROTOCOLS:{}},qr="mapbox-tiles";let ki,Zr,Or=500,Ur=50;function $n(){typeof caches>"u"||ki||(ki=caches.open(qr))}let jn=1/0;const un={supported:!1,testSupport:function(i){!Vr&&Tr&&(di?Gn(i):wr=i)}};let wr,Tr,Vr=!1,di=!1;function Gn(i){const e=i.createTexture();i.bindTexture(i.TEXTURE_2D,e);try{if(i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,Tr),i.isContextLost())return;un.supported=!0}catch{}i.deleteTexture(e),Vr=!0}typeof document<"u"&&(Tr=document.createElement("img"),Tr.onload=function(){wr&&Gn(wr),wr=null,di=!0},Tr.onerror=function(){Vr=!0,wr=null},Tr.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");const Sr={Unknown:"Unknown",Style:"Style",Source:"Source",Tile:"Tile",Glyphs:"Glyphs",SpriteImage:"SpriteImage",SpriteJSON:"SpriteJSON",Image:"Image"};typeof Object.freeze=="function"&&Object.freeze(Sr);class Er extends Error{constructor(e,r,s,l){super(`AJAXError: ${r} (${e}): ${s}`),this.status=e,this.statusText=r,this.url=s,this.body=l}}const ar=Yi()?()=>self.worker&&self.worker.referrer:()=>(window.location.protocol==="blob:"?window.parent:window).location.href;function pn(i,e){const r=new AbortController,s=new Request(i.url,{method:i.method||"GET",body:i.body,credentials:i.credentials,headers:i.headers,referrer:ar(),signal:r.signal});let l=!1,u=!1;return i.type==="json"&&s.headers.set("Accept","application/json"),((d,f,g)=>{if(u)return;const x=Date.now();fetch(s).then(w=>w.ok?((T,A,I)=>{(i.type==="arrayBuffer"?T.arrayBuffer():i.type==="json"?T.json():T.text()).then(P=>{u||(A&&I&&function(F,O,G){if($n(),!ki)return;const Y={status:O.status,statusText:O.statusText,headers:new Headers};O.headers.forEach((J,pe)=>Y.headers.set(pe,J));const $=Nn(O.headers.get("Cache-Control")||"");$["no-store"]||($["max-age"]&&Y.headers.set("Expires",new Date(G+1e3*$["max-age"]).toUTCString()),new Date(Y.headers.get("Expires")).getTime()-G<42e4||function(J,pe){if(Zr===void 0)try{new Response(new ReadableStream),Zr=!0}catch{Zr=!1}Zr?pe(J.body):J.blob().then(pe)}(O,J=>{const pe=new Response(J,Y);$n(),ki&&ki.then(ue=>ue.put(function(Ne){const qe=Ne.indexOf("?");return qe<0?Ne:Ne.slice(0,qe)}(F.url),pe)).catch(ue=>Yt(ue.message))}))}(s,A,I),l=!0,e(null,P,T.headers.get("Cache-Control"),T.headers.get("Expires")))}).catch(P=>{u||e(new Error(P.message))})})(w,null,x):w.blob().then(T=>e(new Er(w.status,w.statusText,i.url,T)))).catch(w=>{w.code!==20&&e(new Error(w.message))})})(),{cancel:()=>{u=!0,l||r.abort()}}}const Oi=function(i,e){if(/:\/\//.test(i.url)&&!/^https?:|^file:/.test(i.url)){if(Yi()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",i,e);if(!Yi()){const s=i.url.substring(0,i.url.indexOf("://"));return(Fr.REGISTERED_PROTOCOLS[s]||pn)(i,e)}}if(!(/^file:/.test(r=i.url)||/^file:/.test(ar())&&!/^\w+:/.test(r))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return pn(i,e);if(Yi()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",i,e,void 0,!0)}var r;return function(s,l){const u=new XMLHttpRequest;u.open(s.method||"GET",s.url,!0),s.type==="arrayBuffer"&&(u.responseType="arraybuffer");for(const d in s.headers)u.setRequestHeader(d,s.headers[d]);return s.type==="json"&&(u.responseType="text",u.setRequestHeader("Accept","application/json")),u.withCredentials=s.credentials==="include",u.onerror=()=>{l(new Error(u.statusText))},u.onload=()=>{if((u.status>=200&&u.status<300||u.status===0)&&u.response!==null){let d=u.response;if(s.type==="json")try{d=JSON.parse(u.response)}catch(f){return l(f)}l(null,d,u.getResponseHeader("Cache-Control"),u.getResponseHeader("Expires"))}else{const d=new Blob([u.response],{type:u.getResponseHeader("Content-Type")});l(new Er(u.status,u.statusText,s.url,d))}},u.send(s.body),{cancel:()=>u.abort()}}(i,e)},Xr=function(i,e){return Oi(Je(i,{type:"arrayBuffer"}),e)};function As(i){const e=window.document.createElement("a");return e.href=i,e.protocol===window.document.location.protocol&&e.host===window.document.location.host}let Wr,ft;Wr=[],ft=0;const dn=function(i,e){if(un.supported&&(i.headers||(i.headers={}),i.headers.accept="image/webp,*/*"),ft>=Fr.MAX_PARALLEL_IMAGE_REQUESTS){const u={requestParameters:i,callback:e,cancelled:!1,cancel(){this.cancelled=!0}};return Wr.push(u),u}ft++;let r=!1;const s=()=>{if(!r)for(r=!0,ft--;Wr.length&&ft<Fr.MAX_PARALLEL_IMAGE_REQUESTS;){const u=Wr.shift(),{requestParameters:d,callback:f,cancelled:g}=u;g||(u.cancel=dn(d,f).cancel)}},l=Xr(i,(u,d,f,g)=>{s(),u?e(u):d&&function(x,w){typeof createImageBitmap=="function"?function(T,A){const I=new Blob([new Uint8Array(T)],{type:"image/png"});createImageBitmap(I).then(P=>{A(null,P)}).catch(P=>{A(new Error(`Could not load image because of ${P.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`))})}(x,w):function(T,A){const I=new Image;I.onload=()=>{A(null,I),URL.revokeObjectURL(I.src),I.onload=null,window.requestAnimationFrame(()=>{I.src=ln})},I.onerror=()=>A(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 P=new Blob([new Uint8Array(T)],{type:"image/png"});I.src=T.byteLength?URL.createObjectURL(P):ln}(x,w)}(d,(x,w)=>{x!=null?e(x):w!=null&&e(null,w,{cacheControl:f,expires:g})})});return{cancel:()=>{l.cancel(),s()}}};function re(i,e,r){r[i]&&r[i].indexOf(e)!==-1||(r[i]=r[i]||[],r[i].push(e))}function z(i,e,r){if(r&&r[i]){const s=r[i].indexOf(e);s!==-1&&r[i].splice(s,1)}}class R{constructor(e,r={}){Je(this,r),this.type=e}}class j extends R{constructor(e,r={}){super("error",Je({error:e},r))}}class Q{on(e,r){return this._listeners=this._listeners||{},re(e,r,this._listeners),this}off(e,r){return z(e,r,this._listeners),z(e,r,this._oneTimeListeners),this}once(e,r){return r?(this._oneTimeListeners=this._oneTimeListeners||{},re(e,r,this._oneTimeListeners),this):new Promise(s=>this.once(e,s))}fire(e,r){typeof e=="string"&&(e=new R(e,r||{}));const s=e.type;if(this.listens(s)){e.target=this;const l=this._listeners&&this._listeners[s]?this._listeners[s].slice():[];for(const f of l)f.call(this,e);const u=this._oneTimeListeners&&this._oneTimeListeners[s]?this._oneTimeListeners[s].slice():[];for(const f of u)z(s,f,this._oneTimeListeners),f.call(this,e);const d=this._eventedParent;d&&(Je(e,typeof this._eventedParentData=="function"?this._eventedParentData():this._eventedParentData),d.fire(e))}else e instanceof j&&console.error(e.error);return this}listens(e){return this._listeners&&this._listeners[e]&&this._listeners[e].length>0||this._oneTimeListeners&&this._oneTimeListeners[e]&&this._oneTimeListeners[e].length>0||this._eventedParent&&this._eventedParent.listens(e)}setEventedParent(e,r){return this._eventedParent=e,this._eventedParentData=r,this}}var V={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},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:{}},default:"mapbox"},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","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-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"}},filter:{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,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"}}};class H{constructor(e,r,s,l){this.message=(e?`${e}: `:"")+s,l&&(this.identifier=l),r!=null&&r.__line__&&(this.line=r.__line__)}}function ve(i){const e=i.value;return e?[new H(i.key,e,"constants have been deprecated as of v8")]:[]}function oe(i,...e){for(const r of e)for(const s in r)i[s]=r[s];return i}function Ee(i){return i instanceof Number||i instanceof String||i instanceof Boolean?i.valueOf():i}function Pe(i){if(Array.isArray(i))return i.map(Pe);if(i instanceof Object&&!(i instanceof Number||i instanceof String||i instanceof Boolean)){const e={};for(const r in i)e[r]=Pe(i[r]);return e}return Ee(i)}class Ce extends Error{constructor(e,r){super(r),this.message=r,this.key=e}}class at{constructor(e,r=[]){this.parent=e,this.bindings={};for(const[s,l]of r)this.bindings[s]=l}concat(e){return new at(this,e)}get(e){if(this.bindings[e])return this.bindings[e];if(this.parent)return this.parent.get(e);throw new Error(`${e} not found in scope.`)}has(e){return!!this.bindings[e]||!!this.parent&&this.parent.has(e)}}const gt={kind:"null"},xe={kind:"number"},Le={kind:"string"},Fe={kind:"boolean"},vt={kind:"color"},Rt={kind:"object"},je={kind:"value"},It={kind:"collator"},Xt={kind:"formatted"},ii={kind:"padding"},Bt={kind:"resolvedImage"};function At(i,e){return{kind:"array",itemType:i,N:e}}function st(i){if(i.kind==="array"){const e=st(i.itemType);return typeof i.N=="number"?`array<${e}, ${i.N}>`:i.itemType.kind==="value"?"array":`array<${e}>`}return i.kind}const mn=[gt,xe,Le,Fe,vt,Xt,Rt,At(je),ii,Bt];function ee(i,e){if(e.kind==="error")return null;if(i.kind==="array"){if(e.kind==="array"&&(e.N===0&&e.itemType.kind==="value"||!ee(i.itemType,e.itemType))&&(typeof i.N!="number"||i.N===e.N))return null}else{if(i.kind===e.kind)return null;if(i.kind==="value"){for(const r of mn)if(!ee(r,e))return null}}return`Expected ${st(i)} but found ${st(e)} instead.`}function se(i,e){return e.some(r=>r.kind===i.kind)}function ce(i,e){return e.some(r=>r==="null"?i===null:r==="array"?Array.isArray(i):r==="object"?i&&!Array.isArray(i)&&typeof i=="object":r===typeof i)}var fe,ge={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function be(i){return(i=Math.round(i))<0?0:i>255?255:i}function Te(i){return be(i[i.length-1]==="%"?parseFloat(i)/100*255:parseInt(i))}function _e(i){return(e=i[i.length-1]==="%"?parseFloat(i)/100:parseFloat(i))<0?0:e>1?1:e;var e}function ke(i,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?i+(e-i)*r*6:2*r<1?e:3*r<2?i+(e-i)*(2/3-r)*6:i}try{fe={}.parseCSSColor=function(i){var e,r=i.replace(/ /g,"").toLowerCase();if(r in ge)return ge[r].slice();if(r[0]==="#")return r.length===4?(e=parseInt(r.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:r.length===7&&(e=parseInt(r.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var s=r.indexOf("("),l=r.indexOf(")");if(s!==-1&&l+1===r.length){var u=r.substr(0,s),d=r.substr(s+1,l-(s+1)).split(","),f=1;switch(u){case"rgba":if(d.length!==4)return null;f=_e(d.pop());case"rgb":return d.length!==3?null:[Te(d[0]),Te(d[1]),Te(d[2]),f];case"hsla":if(d.length!==4)return null;f=_e(d.pop());case"hsl":if(d.length!==3)return null;var g=(parseFloat(d[0])%360+360)%360/360,x=_e(d[1]),w=_e(d[2]),T=w<=.5?w*(x+1):w+x-w*x,A=2*w-T;return[be(255*ke(A,T,g+1/3)),be(255*ke(A,T,g)),be(255*ke(A,T,g-1/3)),f];default:return null}}return null}}catch{}class le{constructor(e,r,s,l=1){this.r=e,this.g=r,this.b=s,this.a=l}static parse(e){if(!e)return;if(e instanceof le)return e;if(typeof e!="string")return;const r=fe(e);return r?new le(r[0]/255*r[3],r[1]/255*r[3],r[2]/255*r[3],r[3]):void 0}toString(){const[e,r,s,l]=this.toArray();return`rgba(${Math.round(e)},${Math.round(r)},${Math.round(s)},${l})`}toArray(){const{r:e,g:r,b:s,a:l}=this;return l===0?[0,0,0,0]:[255*e/l,255*r/l,255*s/l,l]}}le.black=new le(0,0,0,1),le.white=new le(1,1,1,1),le.transparent=new le(0,0,0,0),le.red=new le(1,0,0,1);class Qe{constructor(e,r,s){this.sensitivity=e?r?"variant":"case":r?"accent":"base",this.locale=s,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(e,r){return this.collator.compare(e,r)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class pt{constructor(e,r,s,l,u){this.text=e,this.image=r,this.scale=s,this.fontStack=l,this.textColor=u}}class De{constructor(e){this.sections=e}static fromString(e){return new De([new pt(e,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some(e=>e.text.length!==0||e.image&&e.image.name.length!==0)}static factory(e){return e instanceof De?e:De.fromString(e)}toString(){return this.sections.length===0?"":this.sections.map(e=>e.text).join("")}}class ot{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof ot)return e;if(typeof e=="number")return new ot([e,e,e,e]);if(Array.isArray(e)&&!(e.length<1||e.length>4)){for(const r of e)if(typeof r!="number")return;switch(e.length){case 1:e=[e[0],e[0],e[0],e[0]];break;case 2:e=[e[0],e[1],e[0],e[1]];break;case 3:e=[e[0],e[1],e[2],e[1]]}return new ot(e)}}toString(){return JSON.stringify(this.values)}}class _t{constructor(e){this.name=e.name,this.available=e.available}toString(){return this.name}static fromString(e){return e?new _t({name:e,available:!1}):null}}function Ft(i,e,r,s){return typeof i=="number"&&i>=0&&i<=255&&typeof e=="number"&&e>=0&&e<=255&&typeof r=="number"&&r>=0&&r<=255?s===void 0||typeof s=="number"&&s>=0&&s<=1?null:`Invalid rgba value [${[i,e,r,s].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof s=="number"?[i,e,r,s]:[i,e,r]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Ot(i){if(i===null||typeof i=="string"||typeof i=="boolean"||typeof i=="number"||i instanceof le||i instanceof Qe||i instanceof De||i instanceof ot||i instanceof _t)return!0;if(Array.isArray(i)){for(const e of i)if(!Ot(e))return!1;return!0}if(typeof i=="object"){for(const e in i)if(!Ot(i[e]))return!1;return!0}return!1}function ut(i){if(i===null)return gt;if(typeof i=="string")return Le;if(typeof i=="boolean")return Fe;if(typeof i=="number")return xe;if(i instanceof le)return vt;if(i instanceof Qe)return It;if(i instanceof De)return Xt;if(i instanceof ot)return ii;if(i instanceof _t)return Bt;if(Array.isArray(i)){const e=i.length;let r;for(const s of i){const l=ut(s);if(r){if(r===l)continue;r=je;break}r=l}return At(r||je,e)}return Rt}function mi(i){const e=typeof i;return i===null?"":e==="string"||e==="number"||e==="boolean"?String(i):i instanceof le||i instanceof De||i instanceof ot||i instanceof _t?i.toString():JSON.stringify(i)}class li{constructor(e,r){this.type=e,this.value=r}static parse(e,r){if(e.length!==2)return r.error(`'literal' expression requires exactly one argument, but found ${e.length-1} instead.`);if(!Ot(e[1]))return r.error("invalid value");const s=e[1];let l=ut(s);const u=r.expectedType;return l.kind!=="array"||l.N!==0||!u||u.kind!=="array"||typeof u.N=="number"&&u.N!==0||(l=u),new li(l,s)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}class wt{constructor(e){this.name="ExpressionEvaluationError",this.message=e}toJSON(){return this.message}}const si={string:Le,number:xe,boolean:Fe,object:Rt};class wi{constructor(e,r){this.type=e,this.args=r}static parse(e,r){if(e.length<2)return r.error("Expected at least one argument.");let s,l=1;const u=e[0];if(u==="array"){let f,g;if(e.length>2){const x=e[1];if(typeof x!="string"||!(x in si)||x==="object")return r.error('The item type argument of "array" must be one of string, number, boolean',1);f=si[x],l++}else f=je;if(e.length>3){if(e[2]!==null&&(typeof e[2]!="number"||e[2]<0||e[2]!==Math.floor(e[2])))return r.error('The length argument to "array" must be a positive integer literal',2);g=e[2],l++}s=At(f,g)}else{if(!si[u])throw new Error(`Types doesn't contain name = ${u}`);s=si[u]}const d=[];for(;l<e.length;l++){const f=r.parse(e[l],l,je);if(!f)return null;d.push(f)}return new wi(s,d)}evaluate(e){for(let r=0;r<this.args.length;r++){const s=this.args[r].evaluate(e);if(!ee(this.type,ut(s)))return s;if(r===this.args.length-1)throw new wt(`Expected value to be of type ${st(this.type)}, but found ${st(ut(s))} instead.`)}throw new Error}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}}const fn={"to-boolean":Fe,"to-color":vt,"to-number":xe,"to-string":Le};class Ui{constructor(e,r){this.type=e,this.args=r}static parse(e,r){if(e.length<2)return r.error("Expected at least one argument.");const s=e[0];if(!fn[s])throw new Error(`Can't parse ${s} as it is not part of the known types`);if((s==="to-boolean"||s==="to-string")&&e.length!==2)return r.error("Expected one argument.");const l=fn[s],u=[];for(let d=1;d<e.length;d++){const f=r.parse(e[d],d,je);if(!f)return null;u.push(f)}return new Ui(l,u)}evaluate(e){if(this.type.kind==="boolean")return Boolean(this.args[0].evaluate(e));if(this.type.kind==="color"){let r,s;for(const l of this.args){if(r=l.evaluate(e),s=null,r instanceof le)return r;if(typeof r=="string"){const u=e.parseColor(r);if(u)return u}else if(Array.isArray(r)&&(s=r.length<3||r.length>4?`Invalid rbga value ${JSON.stringify(r)}: expected an array containing either three or four numeric values.`:Ft(r[0],r[1],r[2],r[3]),!s))return new le(r[0]/255,r[1]/255,r[2]/255,r[3])}throw new wt(s||`Could not parse color from value '${typeof r=="string"?r:JSON.stringify(r)}'`)}if(this.type.kind==="padding"){let r;for(const s of this.args){r=s.evaluate(e);const l=ot.parse(r);if(l)return l}throw new wt(`Could not parse padding from value '${typeof r=="string"?r:JSON.stringify(r)}'`)}if(this.type.kind==="number"){let r=null;for(const s of this.args){if(r=s.evaluate(e),r===null)return 0;const l=Number(r);if(!isNaN(l))return l}throw new wt(`Could not convert ${JSON.stringify(r)} to number.`)}return this.type.kind==="formatted"?De.fromString(mi(this.args[0].evaluate(e))):this.type.kind==="resolvedImage"?_t.fromString(mi(this.args[0].evaluate(e))):mi(this.args[0].evaluate(e))}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}}const Cs=["Unknown","Point","LineString","Polygon"];class Mo{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?typeof this.feature.type=="number"?Cs[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(e){let r=this._parseColorCache[e];return r||(r=this._parseColorCache[e]=le.parse(e)),r}}class Qi{constructor(e,r,s,l){this.name=e,this.type=r,this._evaluate=s,this.args=l}evaluate(e){return this._evaluate(e,this.args)}eachChild(e){this.args.forEach(e)}outputDefined(){return!1}static parse(e,r){const s=e[0],l=Qi.definitions[s];if(!l)return r.error(`Unknown expression "${s}". If you wanted a literal array, use ["literal", [...]].`,0);const u=Array.isArray(l)?l[0]:l.type,d=Array.isArray(l)?[[l[1],l[2]]]:l.overloads,f=d.filter(([x])=>!Array.isArray(x)||x.length===e.length-1);let g=null;for(const[x,w]of f){g=new Ro(r.registry,r.path,null,r.scope);const T=[];let A=!1;for(let I=1;I<e.length;I++){const P=e[I],F=Array.isArray(x)?x[I-1]:x.type,O=g.parse(P,1+T.length,F);if(!O){A=!0;break}T.push(O)}if(!A)if(Array.isArray(x)&&x.length!==T.length)g.error(`Expected ${x.length} arguments, but found ${T.length} instead.`);else{for(let I=0;I<T.length;I++){const P=Array.isArray(x)?x[I]:x.type,F=T[I];g.concat(I+1).checkSubtype(P,F.type)}if(g.errors.length===0)return new Qi(s,u,w,T)}}if(f.length===1)r.errors.push(...g.errors);else{const x=(f.length?f:d).map(([T])=>{return A=T,Array.isArray(A)?`(${A.map(st).join(", ")})`:`(${st(A.type)}...)`;var A}).join(" | "),w=[];for(let T=1;T<e.length;T++){const A=r.parse(e[T],1+w.length);if(!A)return null;w.push(st(A.type))}r.error(`Expected arguments of type ${x}, but found (${w.join(", ")}) instead.`)}return null}static register(e,r){Qi.definitions=r;for(const s in r)e[s]=Qi}}class Ms{constructor(e,r,s){this.type=It,this.locale=s,this.caseSensitive=e,this.diacriticSensitive=r}static parse(e,r){if(e.length!==2)return r.error("Expected one argument.");const s=e[1];if(typeof s!="object"||Array.isArray(s))return r.error("Collator options argument must be an object.");const l=r.parse(s["case-sensitive"]!==void 0&&s["case-sensitive"],1,Fe);if(!l)return null;const u=r.parse(s["diacritic-sensitive"]!==void 0&&s["diacritic-sensitive"],1,Fe);if(!u)return null;let d=null;return s.locale&&(d=r.parse(s.locale,1,Le),!d)?null:new Ms(l,u,d)}evaluate(e){return new Qe(this.caseSensitive.evaluate(e),this.diacriticSensitive.evaluate(e),this.locale?this.locale.evaluate(e):null)}eachChild(e){e(this.caseSensitive),e(this.diacriticSensitive),this.locale&&e(this.locale)}outputDefined(){return!1}}const ui=8192;function qn(i,e){i[0]=Math.min(i[0],e[0]),i[1]=Math.min(i[1],e[1]),i[2]=Math.max(i[2],e[0]),i[3]=Math.max(i[3],e[1])}function gn(i,e){return!(i[0]<=e[0]||i[2]>=e[2]||i[1]<=e[1]||i[3]>=e[3])}function Zn(i,e){const r=(180+i[0])/360,s=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+i[1]*Math.PI/360)))/360,l=Math.pow(2,e.z);return[Math.round(r*l*ui),Math.round(s*l*ui)]}function Ct(i,e,r){const s=i[0]-e[0],l=i[1]-e[1],u=i[0]-r[0],d=i[1]-r[1];return s*d-u*l==0&&s*u<=0&&l*d<=0}function pa(i,e){let r=!1;for(let d=0,f=e.length;d<f;d++){const g=e[d];for(let x=0,w=g.length;x<w-1;x++){if(Ct(i,g[x],g[x+1]))return!1;(l=g[x])[1]>(s=i)[1]!=(u=g[x+1])[1]>s[1]&&s[0]<(u[0]-l[0])*(s[1]-l[1])/(u[1]-l[1])+l[0]&&(r=!r)}}var s,l,u;return r}function da(i,e){for(let r=0;r<e.length;r++)if(pa(i,e[r]))return!0;return!1}function Po(i,e,r,s){const l=s[0]-r[0],u=s[1]-r[1],d=(i[0]-r[0])*u-l*(i[1]-r[1]),f=(e[0]-r[0])*u-l*(e[1]-r[1]);return d>0&&f<0||d<0&&f>0}function ko(i,e,r){for(const x of r)for(let w=0;w<x.length-1;++w)if((f=[(d=x[w+1])[0]-(u=x[w])[0],d[1]-u[1]])[0]*(g=[(l=e)[0]-(s=i)[0],l[1]-s[1]])[1]-f[1]*g[0]!=0&&Po(s,l,u,d)&&Po(u,d,s,l))return!0;var s,l,u,d,f,g;return!1}function ma(i,e){for(let r=0;r<i.length;++r)if(!pa(i[r],e))return!1;for(let r=0;r<i.length-1;++r)if(ko(i[r],i[r+1],e))return!1;return!0}function Wl(i,e){for(let r=0;r<e.length;r++)if(ma(i,e[r]))return!0;return!1}function Ps(i,e,r){const s=[];for(let l=0;l<i.length;l++){const u=[];for(let d=0;d<i[l].length;d++){const f=Zn(i[l][d],r);qn(e,f),u.push(f)}s.push(u)}return s}function fa(i,e,r){const s=[];for(let l=0;l<i.length;l++){const u=Ps(i[l],e,r);s.push(u)}return s}function zo(i,e,r,s){if(i[0]<r[0]||i[0]>r[2]){const l=.5*s;let u=i[0]-r[0]>l?-s:r[0]-i[0]>l?s:0;u===0&&(u=i[0]-r[2]>l?-s:r[2]-i[0]>l?s:0),i[0]+=u}qn(e,i)}function Lo(i,e,r,s){const l=Math.pow(2,s.z)*ui,u=[s.x*ui,s.y*ui],d=[];for(const f of i)for(const g of f){const x=[g.x+u[0],g.y+u[1]];zo(x,e,r,l),d.push(x)}return d}function Do(i,e,r,s){const l=Math.pow(2,s.z)*ui,u=[s.x*ui,s.y*ui],d=[];for(const g of i){const x=[];for(const w of g){const T=[w.x+u[0],w.y+u[1]];qn(e,T),x.push(T)}d.push(x)}if(e[2]-e[0]<=l/2){(f=e)[0]=f[1]=1/0,f[2]=f[3]=-1/0;for(const g of d)for(const x of g)zo(x,e,r,l)}var f;return d}class Hr{constructor(e,r){this.type=Fe,this.geojson=e,this.geometries=r}static parse(e,r){if(e.length!==2)return r.error(`'within' expression requires exactly one argument, but found ${e.length-1} instead.`);if(Ot(e[1])){const s=e[1];if(s.type==="FeatureCollection")for(let l=0;l<s.features.length;++l){const u=s.features[l].geometry.type;if(u==="Polygon"||u==="MultiPolygon")return new Hr(s,s.features[l].geometry)}else if(s.type==="Feature"){const l=s.geometry.type;if(l==="Polygon"||l==="MultiPolygon")return new Hr(s,s.geometry)}else if(s.type==="Polygon"||s.type==="MultiPolygon")return new Hr(s,s)}return r.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(e){if(e.geometry()!=null&&e.canonicalID()!=null){if(e.geometryType()==="Point")return function(r,s){const l=[1/0,1/0,-1/0,-1/0],u=[1/0,1/0,-1/0,-1/0],d=r.canonicalID();if(s.type==="Polygon"){const f=Ps(s.coordinates,u,d),g=Lo(r.geometry(),l,u,d);if(!gn(l,u))return!1;for(const x of g)if(!pa(x,f))return!1}if(s.type==="MultiPolygon"){const f=fa(s.coordinates,u,d),g=Lo(r.geometry(),l,u,d);if(!gn(l,u))return!1;for(const x of g)if(!da(x,f))return!1}return!0}(e,this.geometries);if(e.geometryType()==="LineString")return function(r,s){const l=[1/0,1/0,-1/0,-1/0],u=[1/0,1/0,-1/0,-1/0],d=r.canonicalID();if(s.type==="Polygon"){const f=Ps(s.coordinates,u,d),g=Do(r.geometry(),l,u,d);if(!gn(l,u))return!1;for(const x of g)if(!ma(x,f))return!1}if(s.type==="MultiPolygon"){const f=fa(s.coordinates,u,d),g=Do(r.geometry(),l,u,d);if(!gn(l,u))return!1;for(const x of g)if(!Wl(x,f))return!1}return!0}(e,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}}function Xn(i){if(i instanceof Qi&&(i.name==="get"&&i.args.length===1||i.name==="feature-state"||i.name==="has"&&i.args.length===1||i.name==="properties"||i.name==="geometry-type"||i.name==="id"||/^filter-/.test(i.name))||i instanceof Hr)return!1;let e=!0;return i.eachChild(r=>{e&&!Xn(r)&&(e=!1)}),e}function _n(i){if(i instanceof Qi&&i.name==="feature-state")return!1;let e=!0;return i.eachChild(r=>{e&&!_n(r)&&(e=!1)}),e}function ks(i,e){if(i instanceof Qi&&e.indexOf(i.name)>=0)return!1;let r=!0;return i.eachChild(s=>{r&&!ks(s,e)&&(r=!1)}),r}class zs{constructor(e,r){this.type=r.type,this.name=e,this.boundExpression=r}static parse(e,r){if(e.length!==2||typeof e[1]!="string")return r.error("'var' expression requires exactly one string literal argument.");const s=e[1];return r.scope.has(s)?new zs(s,r.scope.get(s)):r.error(`Unknown variable "${s}". Make sure "${s}" has been bound in an enclosing "let" expression before using it.`,1)}evaluate(e){return this.boundExpression.evaluate(e)}eachChild(){}outputDefined(){return!1}}class Wn{constructor(e,r=[],s,l=new at,u=[]){this.registry=e,this.path=r,this.key=r.map(d=>`[${d}]`).join(""),this.scope=l,this.errors=u,this.expectedType=s}parse(e,r,s,l,u={}){return r?this.concat(r,s,l)._parse(e,u):this._parse(e,u)}_parse(e,r){function s(l,u,d){return d==="assert"?new wi(u,[l]):d==="coerce"?new Ui(u,[l]):l}if(e!==null&&typeof e!="string"&&typeof e!="boolean"&&typeof e!="number"||(e=["literal",e]),Array.isArray(e)){if(e.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');const l=e[0];if(typeof l!="string")return this.error(`Expression name must be a string, but found ${typeof l} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;const u=this.registry[l];if(u){let d=u.parse(e,this);if(!d)return null;if(this.expectedType){const f=this.expectedType,g=d.type;if(f.kind!=="string"&&f.kind!=="number"&&f.kind!=="boolean"&&f.kind!=="object"&&f.kind!=="array"||g.kind!=="value")if(f.kind!=="color"&&f.kind!=="formatted"&&f.kind!=="resolvedImage"||g.kind!=="value"&&g.kind!=="string")if(f.kind!=="padding"||g.kind!=="value"&&g.kind!=="number"&&g.kind!=="array"){if(this.checkSubtype(f,g))return null}else d=s(d,f,r.typeAnnotation||"coerce");else d=s(d,f,r.typeAnnotation||"coerce");else d=s(d,f,r.typeAnnotation||"assert")}if(!(d instanceof li)&&d.type.kind!=="resolvedImage"&&ga(d)){const f=new Mo;try{d=new li(d.type,d.evaluate(f))}catch(g){return this.error(g.message),null}}return d}return this.error(`Unknown expression "${l}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(e===void 0?"'undefined' value invalid. Use null instead.":typeof e=="object"?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof e} instead.`)}concat(e,r,s){const l=typeof e=="number"?this.path.concat(e):this.path,u=s?this.scope.concat(s):this.scope;return new Wn(this.registry,l,r||null,u,this.errors)}error(e,...r){const s=`${this.key}${r.map(l=>`[${l}]`).join("")}`;this.errors.push(new Ce(s,e))}checkSubtype(e,r){const s=ee(e,r);return s&&this.error(s),s}}var Ro=Wn;function ga(i){if(i instanceof zs)return ga(i.boundExpression);if(i instanceof Qi&&i.name==="error"||i instanceof Ms||i instanceof Hr)return!1;const e=i instanceof Ui||i instanceof wi;let r=!0;return i.eachChild(s=>{r=e?r&&ga(s):r&&s instanceof li}),!!r&&Xn(i)&&ks(i,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}function Ls(i,e){const r=i.length-1;let s,l,u=0,d=r,f=0;for(;u<=d;)if(f=Math.floor((u+d)/2),s=i[f],l=i[f+1],s<=e){if(f===r||e<l)return f;u=f+1}else{if(!(s>e))throw new wt("Input is not a number.");d=f-1}return 0}class yn{constructor(e,r,s){this.type=e,this.input=r,this.labels=[],this.outputs=[];for(const[l,u]of s)this.labels.push(l),this.outputs.push(u)}static parse(e,r){if(e.length-1<4)return r.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return r.error("Expected an even number of arguments.");const s=r.parse(e[1],1,xe);if(!s)return null;const l=[];let u=null;r.expectedType&&r.expectedType.kind!=="value"&&(u=r.expectedType);for(let d=1;d<e.length;d+=2){const f=d===1?-1/0:e[d],g=e[d+1],x=d,w=d+1;if(typeof f!="number")return r.error('Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.',x);if(l.length&&l[l.length-1][0]>=f)return r.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',x);const T=r.parse(g,w,u);if(!T)return null;u=u||T.type,l.push([f,T])}return new yn(u,s,l)}evaluate(e){const r=this.labels,s=this.outputs;if(r.length===1)return s[0].evaluate(e);const l=this.input.evaluate(e);if(l<=r[0])return s[0].evaluate(e);const u=r.length;return l>=r[u-1]?s[u-1].evaluate(e):s[Ls(r,l)].evaluate(e)}eachChild(e){e(this.input);for(const r of this.outputs)e(r)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}}function qt(i,e,r){return i*(1-r)+e*r}var Ds=Object.freeze({__proto__:null,number:qt,color:function(i,e,r){return new le(qt(i.r,e.r,r),qt(i.g,e.g,r),qt(i.b,e.b,r),qt(i.a,e.a,r))},array:function(i,e,r){return i.map((s,l)=>qt(s,e[l],r))},padding:function(i,e,r){const s=i.values,l=e.values;return new ot([qt(s[0],l[0],r),qt(s[1],l[1],r),qt(s[2],l[2],r),qt(s[3],l[3],r)])}});const Bo=.95047,_a=1.08883,ya=4/29,xa=6/29,Fo=3*xa*xa,Hl=Math.PI/180,Kl=180/Math.PI;function va(i){return i>.008856451679035631?Math.pow(i,1/3):i/Fo+ya}function ba(i){return i>xa?i*i*i:Fo*(i-ya)}function wa(i){return 255*(i<=.0031308?12.92*i:1.055*Math.pow(i,1/2.4)-.055)}function xt(i){return(i/=255)<=.04045?i/12.92:Math.pow((i+.055)/1.055,2.4)}function Oo(i){const e=xt(i.r),r=xt(i.g),s=xt(i.b),l=va((.4124564*e+.3575761*r+.1804375*s)/Bo),u=va((.2126729*e+.7151522*r+.072175*s)/1);return{l:116*u-16,a:500*(l-u),b:200*(u-va((.0193339*e+.119192*r+.9503041*s)/_a)),alpha:i.a}}function Uo(i){let e=(i.l+16)/116,r=isNaN(i.a)?e:e+i.a/500,s=isNaN(i.b)?e:e-i.b/200;return e=1*ba(e),r=Bo*ba(r),s=_a*ba(s),new le(wa(3.2404542*r-1.5371385*e-.4985314*s),wa(-.969266*r+1.8760108*e+.041556*s),wa(.0556434*r-.2040259*e+1.0572252*s),i.alpha)}function Jl(i,e,r){const s=e-i;return i+r*(s>180||s<-180?s-360*Math.round(s/360):s)}const Hn={forward:Oo,reverse:Uo,interpolate:function(i,e,r){return{l:qt(i.l,e.l,r),a:qt(i.a,e.a,r),b:qt(i.b,e.b,r),alpha:qt(i.alpha,e.alpha,r)}}},Kn={forward:function(i){const{l:e,a:r,b:s}=Oo(i),l=Math.atan2(s,r)*Kl;return{h:l<0?l+360:l,c:Math.sqrt(r*r+s*s),l:e,alpha:i.a}},reverse:function(i){const e=i.h*Hl,r=i.c;return Uo({l:i.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:i.alpha})},interpolate:function(i,e,r){return{h:Jl(i.h,e.h,r),c:qt(i.c,e.c,r),l:qt(i.l,e.l,r),alpha:qt(i.alpha,e.alpha,r)}}};var Vo=Object.freeze({__proto__:null,lab:Hn,hcl:Kn});class Vi{constructor(e,r,s,l,u){this.type=e,this.operator=r,this.interpolation=s,this.input=l,this.labels=[],this.outputs=[];for(const[d,f]of u)this.labels.push(d),this.outputs.push(f)}static interpolationFactor(e,r,s,l){let u=0;if(e.name==="exponential")u=Ta(r,e.base,s,l);else if(e.name==="linear")u=Ta(r,1,s,l);else if(e.name==="cubic-bezier"){const d=e.controlPoints;u=new Ie(d[0],d[1],d[2],d[3]).solve(Ta(r,1,s,l))}return u}static parse(e,r){let[s,l,u,...d]=e;if(!Array.isArray(l)||l.length===0)return r.error("Expected an interpolation type expression.",1);if(l[0]==="linear")l={name:"linear"};else if(l[0]==="exponential"){const x=l[1];if(typeof x!="number")return r.error("Exponential interpolation requires a numeric base.",1,1);l={name:"exponential",base:x}}else{if(l[0]!=="cubic-bezier")return r.error(`Unknown interpolation type ${String(l[0])}`,1,0);{const x=l.slice(1);if(x.length!==4||x.some(w=>typeof w!="number"||w<0||w>1))return r.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);l={name:"cubic-bezier",controlPoints:x}}}if(e.length-1<4)return r.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return r.error("Expected an even number of arguments.");if(u=r.parse(u,2,xe),!u)return null;const f=[];let g=null;s==="interpolate-hcl"||s==="interpolate-lab"?g=vt:r.expectedType&&r.expectedType.kind!=="value"&&(g=r.expectedType);for(let x=0;x<d.length;x+=2){const w=d[x],T=d[x+1],A=x+3,I=x+4;if(typeof w!="number")return r.error('Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not computed expressions) for the input values.',A);if(f.length&&f[f.length-1][0]>=w)return r.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',A);const P=r.parse(T,I,g);if(!P)return null;g=g||P.type,f.push([w,P])}return g.kind==="number"||g.kind==="color"||g.kind==="padding"||g.kind==="array"&&g.itemType.kind==="number"&&typeof g.N=="number"?new Vi(g,s,l,u,f):r.error(`Type ${st(g)} is not interpolatable.`)}evaluate(e){const r=this.labels,s=this.outputs;if(r.length===1)return s[0].evaluate(e);const l=this.input.evaluate(e);if(l<=r[0])return s[0].evaluate(e);const u=r.length;if(l>=r[u-1])return s[u-1].evaluate(e);const d=Ls(r,l),f=Vi.interpolationFactor(this.interpolation,l,r[d],r[d+1]),g=s[d].evaluate(e),x=s[d+1].evaluate(e);return this.operator==="interpolate"?Ds[this.type.kind.toLowerCase()](g,x,f):this.operator==="interpolate-hcl"?Kn.reverse(Kn.interpolate(Kn.forward(g),Kn.forward(x),f)):Hn.reverse(Hn.interpolate(Hn.forward(g),Hn.forward(x),f))}eachChild(e){e(this.input);for(const r of this.outputs)e(r)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}}function Ta(i,e,r,s){const l=s-r,u=i-r;return l===0?0:e===1?u/l:(Math.pow(e,u)-1)/(Math.pow(e,l)-1)}class Rs{constructor(e,r){this.type=e,this.args=r}static parse(e,r){if(e.length<2)return r.error("Expectected at least one argument.");let s=null;const l=r.expectedType;l&&l.kind!=="value"&&(s=l);const u=[];for(const f of e.slice(1)){const g=r.parse(f,1+u.length,s,void 0,{typeAnnotation:"omit"});if(!g)return null;s=s||g.type,u.push(g)}if(!s)throw new Error("No output type");const d=l&&u.some(f=>ee(l,f.type));return new Rs(d?je:s,u)}evaluate(e){let r,s=null,l=0;for(const u of this.args)if(l++,s=u.evaluate(e),s&&s instanceof _t&&!s.available&&(r||(r=s.name),s=null,l===this.args.length&&(s=r)),s!==null)break;return s}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}}class Bs{constructor(e,r){this.type=r.type,this.bindings=[].concat(e),this.result=r}evaluate(e){return this.result.evaluate(e)}eachChild(e){for(const r of this.bindings)e(r[1]);e(this.result)}static parse(e,r){if(e.length<4)return r.error(`Expected at least 3 arguments, but found ${e.length-1} instead.`);const s=[];for(let u=1;u<e.length-1;u+=2){const d=e[u];if(typeof d!="string")return r.error(`Expected string, but found ${typeof d} instead.`,u);if(/[^a-zA-Z0-9_]/.test(d))return r.error("Variable names must contain only alphanumeric characters or '_'.",u);const f=r.parse(e[u+1],u+1);if(!f)return null;s.push([d,f])}const l=r.parse(e[e.length-1],e.length-1,r.expectedType,s);return l?new Bs(s,l):null}outputDefined(){return this.result.outputDefined()}}class Sa{constructor(e,r,s){this.type=e,this.index=r,this.input=s}static parse(e,r){if(e.length!==3)return r.error(`Expected 2 arguments, but found ${e.length-1} instead.`);const s=r.parse(e[1],1,xe),l=r.parse(e[2],2,At(r.expectedType||je));return s&&l?new Sa(l.type.itemType,s,l):null}evaluate(e){const r=this.index.evaluate(e),s=this.input.evaluate(e);if(r<0)throw new wt(`Array index out of bounds: ${r} < 0.`);if(r>=s.length)throw new wt(`Array index out of bounds: ${r} > ${s.length-1}.`);if(r!==Math.floor(r))throw new wt(`Array index must be an integer, but found ${r} instead.`);return s[r]}eachChild(e){e(this.index),e(this.input)}outputDefined(){return!1}}class Ea{constructor(e,r){this.type=Fe,this.needle=e,this.haystack=r}static parse(e,r){if(e.length!==3)return r.error(`Expected 2 arguments, but found ${e.length-1} instead.`);const s=r.parse(e[1],1,je),l=r.parse(e[2],2,je);return s&&l?se(s.type,[Fe,Le,xe,gt,je])?new Ea(s,l):r.error(`Expected first argument to be of type boolean, string, number or null, but found ${st(s.type)} instead`):null}evaluate(e){const r=this.needle.evaluate(e),s=this.haystack.evaluate(e);if(!s)return!1;if(!ce(r,["boolean","string","number","null"]))throw new wt(`Expected first argument to be of type boolean, string, number or null, but found ${st(ut(r))} instead.`);if(!ce(s,["string","array"]))throw new wt(`Expected second argument to be of type array or string, but found ${st(ut(s))} instead.`);return s.indexOf(r)>=0}eachChild(e){e(this.needle),e(this.haystack)}outputDefined(){return!0}}class Fs{constructor(e,r,s){this.type=xe,this.needle=e,this.haystack=r,this.fromIndex=s}static parse(e,r){if(e.length<=2||e.length>=5)return r.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);const s=r.parse(e[1],1,je),l=r.parse(e[2],2,je);if(!s||!l)return null;if(!se(s.type,[Fe,Le,xe,gt,je]))return r.error(`Expected first argument to be of type boolean, string, number or null, but found ${st(s.type)} instead`);if(e.length===4){const u=r.parse(e[3],3,xe);return u?new Fs(s,l,u):null}return new Fs(s,l)}evaluate(e){const r=this.needle.evaluate(e),s=this.haystack.evaluate(e);if(!ce(r,["boolean","string","number","null"]))throw new wt(`Expected first argument to be of type boolean, string, number or null, but found ${st(ut(r))} instead.`);if(!ce(s,["string","array"]))throw new wt(`Expected second argument to be of type array or string, but found ${st(ut(s))} instead.`);if(this.fromIndex){const l=this.fromIndex.evaluate(e);return s.indexOf(r,l)}return s.indexOf(r)}eachChild(e){e(this.needle),e(this.haystack),this.fromIndex&&e(this.fromIndex)}outputDefined(){return!1}}class Ia{constructor(e,r,s,l,u,d){this.inputType=e,this.type=r,this.input=s,this.cases=l,this.outputs=u,this.otherwise=d}static parse(e,r){if(e.length<5)return r.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if(e.length%2!=1)return r.error("Expected an even number of arguments.");let s,l;r.expectedType&&r.expectedType.kind!=="value"&&(l=r.expectedType);const u={},d=[];for(let x=2;x<e.length-1;x+=2){let w=e[x];const T=e[x+1];Array.isArray(w)||(w=[w]);const A=r.concat(x);if(w.length===0)return A.error("Expected at least one branch label.");for(const P of w){if(typeof P!="number"&&typeof P!="string")return A.error("Branch labels must be numbers or strings.");if(typeof P=="number"&&Math.abs(P)>Number.MAX_SAFE_INTEGER)return A.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof P=="number"&&Math.floor(P)!==P)return A.error("Numeric branch labels must be integer values.");if(s){if(A.checkSubtype(s,ut(P)))return null}else s=ut(P);if(u[String(P)]!==void 0)return A.error("Branch labels must be unique.");u[String(P)]=d.length}const I=r.parse(T,x,l);if(!I)return null;l=l||I.type,d.push(I)}const f=r.parse(e[1],1,je);if(!f)return null;const g=r.parse(e[e.length-1],e.length-1,l);return g?f.type.kind!=="value"&&r.concat(1).checkSubtype(s,f.type)?null:new Ia(s,l,f,u,d,g):null}evaluate(e){const r=this.input.evaluate(e);return(ut(r)===this.inputType&&this.outputs[this.cases[r]]||this.otherwise).evaluate(e)}eachChild(e){e(this.input),this.outputs.forEach(e),e(this.otherwise)}outputDefined(){return this.outputs.every(e=>e.outputDefined())&&this.otherwise.outputDefined()}}class Aa{constructor(e,r,s){this.type=e,this.branches=r,this.otherwise=s}static parse(e,r){if(e.length<4)return r.error(`Expected at least 3 arguments, but found only ${e.length-1}.`);if(e.length%2!=0)return r.error("Expected an odd number of arguments.");let s;r.expectedType&&r.expectedType.kind!=="value"&&(s=r.expectedType);const l=[];for(let d=1;d<e.length-1;d+=2){const f=r.parse(e[d],d,Fe);if(!f)return null;const g=r.parse(e[d+1],d+1,s);if(!g)return null;l.push([f,g]),s=s||g.type}const u=r.parse(e[e.length-1],e.length-1,s);if(!u)return null;if(!s)throw new Error("Can't infer output type");return new Aa(s,l,u)}evaluate(e){for(const[r,s]of this.branches)if(r.evaluate(e))return s.evaluate(e);return this.otherwise.evaluate(e)}eachChild(e){for(const[r,s]of this.branches)e(r),e(s);e(this.otherwise)}outputDefined(){return this.branches.every(([e,r])=>r.outputDefined())&&this.otherwise.outputDefined()}}class Os{constructor(e,r,s,l){this.type=e,this.input=r,this.beginIndex=s,this.endIndex=l}static parse(e,r){if(e.length<=2||e.length>=5)return r.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);const s=r.parse(e[1],1,je),l=r.parse(e[2],2,xe);if(!s||!l)return null;if(!se(s.type,[At(je),Le,je]))return r.error(`Expected first argument to be of type array or string, but found ${st(s.type)} instead`);if(e.length===4){const u=r.parse(e[3],3,xe);return u?new Os(s.type,s,l,u):null}return new Os(s.type,s,l)}evaluate(e){const r=this.input.evaluate(e),s=this.beginIndex.evaluate(e);if(!ce(r,["string","array"]))throw new wt(`Expected first argument to be of type array or string, but found ${st(ut(r))} instead.`);if(this.endIndex){const l=this.endIndex.evaluate(e);return r.slice(s,l)}return r.slice(s)}eachChild(e){e(this.input),e(this.beginIndex),this.endIndex&&e(this.endIndex)}outputDefined(){return!1}}function No(i,e){return i==="=="||i==="!="?e.kind==="boolean"||e.kind==="string"||e.kind==="number"||e.kind==="null"||e.kind==="value":e.kind==="string"||e.kind==="number"||e.kind==="value"}function $o(i,e,r,s){return s.compare(e,r)===0}function xn(i,e,r){const s=i!=="=="&&i!=="!=";return class mp{constructor(u,d,f){this.type=Fe,this.lhs=u,this.rhs=d,this.collator=f,this.hasUntypedArgument=u.type.kind==="value"||d.type.kind==="value"}static parse(u,d){if(u.length!==3&&u.length!==4)return d.error("Expected two or three arguments.");const f=u[0];let g=d.parse(u[1],1,je);if(!g)return null;if(!No(f,g.type))return d.concat(1).error(`"${f}" comparisons are not supported for type '${st(g.type)}'.`);let x=d.parse(u[2],2,je);if(!x)return null;if(!No(f,x.type))return d.concat(2).error(`"${f}" comparisons are not supported for type '${st(x.type)}'.`);if(g.type.kind!==x.type.kind&&g.type.kind!=="value"&&x.type.kind!=="value")return d.error(`Cannot compare types '${st(g.type)}' and '${st(x.type)}'.`);s&&(g.type.kind==="value"&&x.type.kind!=="value"?g=new wi(x.type,[g]):g.type.kind!=="value"&&x.type.kind==="value"&&(x=new wi(g.type,[x])));let w=null;if(u.length===4){if(g.type.kind!=="string"&&x.type.kind!=="string"&&g.type.kind!=="value"&&x.type.kind!=="value")return d.error("Cannot use collator to compare non-string types.");if(w=d.parse(u[3],3,It),!w)return null}return new mp(g,x,w)}evaluate(u){const d=this.lhs.evaluate(u),f=this.rhs.evaluate(u);if(s&&this.hasUntypedArgument){const g=ut(d),x=ut(f);if(g.kind!==x.kind||g.kind!=="string"&&g.kind!=="number")throw new wt(`Expected arguments for "${i}" to be (string, string) or (number, number), but found (${g.kind}, ${x.kind}) instead.`)}if(this.collator&&!s&&this.hasUntypedArgument){const g=ut(d),x=ut(f);if(g.kind!=="string"||x.kind!=="string")return e(u,d,f)}return this.collator?r(u,d,f,this.collator.evaluate(u)):e(u,d,f)}eachChild(u){u(this.lhs),u(this.rhs),this.collator&&u(this.collator)}outputDefined(){return!0}}}const Yl=xn("==",function(i,e,r){return e===r},$o),Ql=xn("!=",function(i,e,r){return e!==r},function(i,e,r,s){return!$o(0,e,r,s)}),ec=xn("<",function(i,e,r){return e<r},function(i,e,r,s){return s.compare(e,r)<0}),tc=xn(">",function(i,e,r){return e>r},function(i,e,r,s){return s.compare(e,r)>0}),ic=xn("<=",function(i,e,r){return e<=r},function(i,e,r,s){return s.compare(e,r)<=0}),rc=xn(">=",function(i,e,r){return e>=r},function(i,e,r,s){return s.compare(e,r)>=0});class Ca{constructor(e,r,s,l,u){this.type=Le,this.number=e,this.locale=r,this.currency=s,this.minFractionDigits=l,this.maxFractionDigits=u}static parse(e,r){if(e.length!==3)return r.error("Expected two arguments.");const s=r.parse(e[1],1,xe);if(!s)return null;const l=e[2];if(typeof l!="object"||Array.isArray(l))return r.error("NumberFormat options argument must be an object.");let u=null;if(l.locale&&(u=r.parse(l.locale,1,Le),!u))return null;let d=null;if(l.currency&&(d=r.parse(l.currency,1,Le),!d))return null;let f=null;if(l["min-fraction-digits"]&&(f=r.parse(l["min-fraction-digits"],1,xe),!f))return null;let g=null;return l["max-fraction-digits"]&&(g=r.parse(l["max-fraction-digits"],1,xe),!g)?null:new Ca(s,u,d,f,g)}evaluate(e){return new Intl.NumberFormat(this.locale?this.locale.evaluate(e):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(e):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(e):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(e):void 0}).format(this.number.evaluate(e))}eachChild(e){e(this.number),this.locale&&e(this.locale),this.currency&&e(this.currency),this.minFractionDigits&&e(this.minFractionDigits),this.maxFractionDigits&&e(this.maxFractionDigits)}outputDefined(){return!1}}class Us{constructor(e){this.type=Xt,this.sections=e}static parse(e,r){if(e.length<2)return r.error("Expected at least one argument.");const s=e[1];if(!Array.isArray(s)&&typeof s=="object")return r.error("First argument must be an image or text section.");const l=[];let u=!1;for(let d=1;d<=e.length-1;++d){const f=e[d];if(u&&typeof f=="object"&&!Array.isArray(f)){u=!1;let g=null;if(f["font-scale"]&&(g=r.parse(f["font-scale"],1,xe),!g))return null;let x=null;if(f["text-font"]&&(x=r.parse(f["text-font"],1,At(Le)),!x))return null;let w=null;if(f["text-color"]&&(w=r.parse(f["text-color"],1,vt),!w))return null;const T=l[l.length-1];T.scale=g,T.font=x,T.textColor=w}else{const g=r.parse(e[d],1,je);if(!g)return null;const x=g.type.kind;if(x!=="string"&&x!=="value"&&x!=="null"&&x!=="resolvedImage")return r.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");u=!0,l.push({content:g,scale:null,font:null,textColor:null})}}return new Us(l)}evaluate(e){return new De(this.sections.map(r=>{const s=r.content.evaluate(e);return ut(s)===Bt?new pt("",s,null,null,null):new pt(mi(s),null,r.scale?r.scale.evaluate(e):null,r.font?r.font.evaluate(e).join(","):null,r.textColor?r.textColor.evaluate(e):null)}))}eachChild(e){for(const r of this.sections)e(r.content),r.scale&&e(r.scale),r.font&&e(r.font),r.textColor&&e(r.textColor)}outputDefined(){return!1}}class Ma{constructor(e){this.type=Bt,this.input=e}static parse(e,r){if(e.length!==2)return r.error("Expected two arguments.");const s=r.parse(e[1],1,Le);return s?new Ma(s):r.error("No image name provided.")}evaluate(e){const r=this.input.evaluate(e),s=_t.fromString(r);return s&&e.availableImages&&(s.available=e.availableImages.indexOf(r)>-1),s}eachChild(e){e(this.input)}outputDefined(){return!1}}class Pa{constructor(e){this.type=xe,this.input=e}static parse(e,r){if(e.length!==2)return r.error(`Expected 1 argument, but found ${e.length-1} instead.`);const s=r.parse(e[1],1);return s?s.type.kind!=="array"&&s.type.kind!=="string"&&s.type.kind!=="value"?r.error(`Expected argument of type string or array, but found ${st(s.type)} instead.`):new Pa(s):null}evaluate(e){const r=this.input.evaluate(e);if(typeof r=="string"||Array.isArray(r))return r.length;throw new wt(`Expected value to be of type string or array, but found ${st(ut(r))} instead.`)}eachChild(e){e(this.input)}outputDefined(){return!1}}const vn={"==":Yl,"!=":Ql,">":tc,"<":ec,">=":rc,"<=":ic,array:wi,at:Sa,boolean:wi,case:Aa,coalesce:Rs,collator:Ms,format:Us,image:Ma,in:Ea,"index-of":Fs,interpolate:Vi,"interpolate-hcl":Vi,"interpolate-lab":Vi,length:Pa,let:Bs,literal:li,match:Ia,number:wi,"number-format":Ca,object:wi,slice:Os,step:yn,string:wi,"to-boolean":Ui,"to-color":Ui,"to-number":Ui,"to-string":Ui,var:zs,within:Hr};function jo(i,[e,r,s,l]){e=e.evaluate(i),r=r.evaluate(i),s=s.evaluate(i);const u=l?l.evaluate(i):1,d=Ft(e,r,s,u);if(d)throw new wt(d);return new le(e/255*u,r/255*u,s/255*u,u)}function ka(i,e){return i in e}function za(i,e){const r=e[i];return r===void 0?null:r}function Kr(i){return{type:i}}function Go(i){return{result:"success",value:i}}function Ut(i){return{result:"error",value:i}}function bn(i){return i["property-type"]==="data-driven"||i["property-type"]==="cross-faded-data-driven"}function dt(i){return!!i.expression&&i.expression.parameters.indexOf("zoom")>-1}function Jn(i){return!!i.expression&&i.expression.interpolated}function et(i){return i instanceof Number?"number":i instanceof String?"string":i instanceof Boolean?"boolean":Array.isArray(i)?"array":i===null?"null":typeof i}function kt(i){return typeof i=="object"&&i!==null&&!Array.isArray(i)}function Vs(i){return i}function La(i,e){const r=e.type==="color",s=i.stops&&typeof i.stops[0][0]=="object",l=s||!(s||i.property!==void 0),u=i.type||(Jn(e)?"exponential":"interval");if(r||e.type==="padding"){const x=r?le.parse:ot.parse;(i=oe({},i)).stops&&(i.stops=i.stops.map(w=>[w[0],x(w[1])])),i.default=x(i.default?i.default:e.default)}if(i.colorSpace&&i.colorSpace!=="rgb"&&!Vo[i.colorSpace])throw new Error(`Unknown color space: ${i.colorSpace}`);let d,f,g;if(u==="exponential")d=qo;else if(u==="interval")d=sc;else if(u==="categorical"){d=nc,f=Object.create(null);for(const x of i.stops)f[x[0]]=x[1];g=typeof i.stops[0][0]}else{if(u!=="identity")throw new Error(`Unknown function type "${u}"`);d=Zo}if(s){const x={},w=[];for(let I=0;I<i.stops.length;I++){const P=i.stops[I],F=P[0].zoom;x[F]===void 0&&(x[F]={zoom:F,type:i.type,property:i.property,default:i.default,stops:[]},w.push(F)),x[F].stops.push([P[0].value,P[1]])}const T=[];for(const I of w)T.push([x[I].zoom,La(x[I],e)]);const A={name:"linear"};return{kind:"composite",interpolationType:A,interpolationFactor:Vi.interpolationFactor.bind(void 0,A),zoomStops:T.map(I=>I[0]),evaluate:({zoom:I},P)=>qo({stops:T,base:i.base},e,I).evaluate(I,P)}}if(l){const x=u==="exponential"?{name:"exponential",base:i.base!==void 0?i.base:1}:null;return{kind:"camera",interpolationType:x,interpolationFactor:Vi.interpolationFactor.bind(void 0,x),zoomStops:i.stops.map(w=>w[0]),evaluate:({zoom:w})=>d(i,e,w,f,g)}}return{kind:"source",evaluate(x,w){const T=w&&w.properties?w.properties[i.property]:void 0;return T===void 0?Yn(i.default,e.default):d(i,e,T,f,g)}}}function Yn(i,e,r){return i!==void 0?i:e!==void 0?e:r!==void 0?r:void 0}function nc(i,e,r,s,l){return Yn(typeof r===l?s[r]:void 0,i.default,e.default)}function sc(i,e,r){if(et(r)!=="number")return Yn(i.default,e.default);const s=i.stops.length;if(s===1||r<=i.stops[0][0])return i.stops[0][1];if(r>=i.stops[s-1][0])return i.stops[s-1][1];const l=Ls(i.stops.map(u=>u[0]),r);return i.stops[l][1]}function qo(i,e,r){const s=i.base!==void 0?i.base:1;if(et(r)!=="number")return Yn(i.default,e.default);const l=i.stops.length;if(l===1||r<=i.stops[0][0])return i.stops[0][1];if(r>=i.stops[l-1][0])return i.stops[l-1][1];const u=Ls(i.stops.map(w=>w[0]),r),d=function(w,T,A,I){const P=I-A,F=w-A;return P===0?0:T===1?F/P:(Math.pow(T,F)-1)/(Math.pow(T,P)-1)}(r,s,i.stops[u][0],i.stops[u+1][0]),f=i.stops[u][1],g=i.stops[u+1][1];let x=Ds[e.type]||Vs;if(i.colorSpace&&i.colorSpace!=="rgb"){const w=Vo[i.colorSpace];x=(T,A)=>w.reverse(w.interpolate(w.forward(T),w.forward(A),d))}return typeof f.evaluate=="function"?{evaluate(...w){const T=f.evaluate.apply(void 0,w),A=g.evaluate.apply(void 0,w);if(T!==void 0&&A!==void 0)return x(T,A,d)}}:x(f,g,d)}function Zo(i,e,r){switch(e.type){case"color":r=le.parse(r);break;case"formatted":r=De.fromString(r.toString());break;case"resolvedImage":r=_t.fromString(r.toString());break;case"padding":r=ot.parse(r);break;default:et(r)===e.type||e.type==="enum"&&e.values[r]||(r=void 0)}return Yn(r,i.default,e.default)}Qi.register(vn,{error:[{kind:"error"},[Le],(i,[e])=>{throw new wt(e.evaluate(i))}],typeof:[Le,[je],(i,[e])=>st(ut(e.evaluate(i)))],"to-rgba":[At(xe,4),[vt],(i,[e])=>e.evaluate(i).toArray()],rgb:[vt,[xe,xe,xe],jo],rgba:[vt,[xe,xe,xe,xe],jo],has:{type:Fe,overloads:[[[Le],(i,[e])=>ka(e.evaluate(i),i.properties())],[[Le,Rt],(i,[e,r])=>ka(e.evaluate(i),r.evaluate(i))]]},get:{type:je,overloads:[[[Le],(i,[e])=>za(e.evaluate(i),i.properties())],[[Le,Rt],(i,[e,r])=>za(e.evaluate(i),r.evaluate(i))]]},"feature-state":[je,[Le],(i,[e])=>za(e.evaluate(i),i.featureState||{})],properties:[Rt,[],i=>i.properties()],"geometry-type":[Le,[],i=>i.geometryType()],id:[je,[],i=>i.id()],zoom:[xe,[],i=>i.globals.zoom],"heatmap-density":[xe,[],i=>i.globals.heatmapDensity||0],"line-progress":[xe,[],i=>i.globals.lineProgress||0],accumulated:[je,[],i=>i.globals.accumulated===void 0?null:i.globals.accumulated],"+":[xe,Kr(xe),(i,e)=>{let r=0;for(const s of e)r+=s.evaluate(i);return r}],"*":[xe,Kr(xe),(i,e)=>{let r=1;for(const s of e)r*=s.evaluate(i);return r}],"-":{type:xe,overloads:[[[xe,xe],(i,[e,r])=>e.evaluate(i)-r.evaluate(i)],[[xe],(i,[e])=>-e.evaluate(i)]]},"/":[xe,[xe,xe],(i,[e,r])=>e.evaluate(i)/r.evaluate(i)],"%":[xe,[xe,xe],(i,[e,r])=>e.evaluate(i)%r.evaluate(i)],ln2:[xe,[],()=>Math.LN2],pi:[xe,[],()=>Math.PI],e:[xe,[],()=>Math.E],"^":[xe,[xe,xe],(i,[e,r])=>Math.pow(e.evaluate(i),r.evaluate(i))],sqrt:[xe,[xe],(i,[e])=>Math.sqrt(e.evaluate(i))],log10:[xe,[xe],(i,[e])=>Math.log(e.evaluate(i))/Math.LN10],ln:[xe,[xe],(i,[e])=>Math.log(e.evaluate(i))],log2:[xe,[xe],(i,[e])=>Math.log(e.evaluate(i))/Math.LN2],sin:[xe,[xe],(i,[e])=>Math.sin(e.evaluate(i))],cos:[xe,[xe],(i,[e])=>Math.cos(e.evaluate(i))],tan:[xe,[xe],(i,[e])=>Math.tan(e.evaluate(i))],asin:[xe,[xe],(i,[e])=>Math.asin(e.evaluate(i))],acos:[xe,[xe],(i,[e])=>Math.acos(e.evaluate(i))],atan:[xe,[xe],(i,[e])=>Math.atan(e.evaluate(i))],min:[xe,Kr(xe),(i,e)=>Math.min(...e.map(r=>r.evaluate(i)))],max:[xe,Kr(xe),(i,e)=>Math.max(...e.map(r=>r.evaluate(i)))],abs:[xe,[xe],(i,[e])=>Math.abs(e.evaluate(i))],round:[xe,[xe],(i,[e])=>{const r=e.evaluate(i);return r<0?-Math.round(-r):Math.round(r)}],floor:[xe,[xe],(i,[e])=>Math.floor(e.evaluate(i))],ceil:[xe,[xe],(i,[e])=>Math.ceil(e.evaluate(i))],"filter-==":[Fe,[Le,je],(i,[e,r])=>i.properties()[e.value]===r.value],"filter-id-==":[Fe,[je],(i,[e])=>i.id()===e.value],"filter-type-==":[Fe,[Le],(i,[e])=>i.geometryType()===e.value],"filter-<":[Fe,[Le,je],(i,[e,r])=>{const s=i.properties()[e.value],l=r.value;return typeof s==typeof l&&s<l}],"filter-id-<":[Fe,[je],(i,[e])=>{const r=i.id(),s=e.value;return typeof r==typeof s&&r<s}],"filter->":[Fe,[Le,je],(i,[e,r])=>{const s=i.properties()[e.value],l=r.value;return typeof s==typeof l&&s>l}],"filter-id->":[Fe,[je],(i,[e])=>{const r=i.id(),s=e.value;return typeof r==typeof s&&r>s}],"filter-<=":[Fe,[Le,je],(i,[e,r])=>{const s=i.properties()[e.value],l=r.value;return typeof s==typeof l&&s<=l}],"filter-id-<=":[Fe,[je],(i,[e])=>{const r=i.id(),s=e.value;return typeof r==typeof s&&r<=s}],"filter->=":[Fe,[Le,je],(i,[e,r])=>{const s=i.properties()[e.value],l=r.value;return typeof s==typeof l&&s>=l}],"filter-id->=":[Fe,[je],(i,[e])=>{const r=i.id(),s=e.value;return typeof r==typeof s&&r>=s}],"filter-has":[Fe,[je],(i,[e])=>e.value in i.properties()],"filter-has-id":[Fe,[],i=>i.id()!==null&&i.id()!==void 0],"filter-type-in":[Fe,[At(Le)],(i,[e])=>e.value.indexOf(i.geometryType())>=0],"filter-id-in":[Fe,[At(je)],(i,[e])=>e.value.indexOf(i.id())>=0],"filter-in-small":[Fe,[Le,At(je)],(i,[e,r])=>r.value.indexOf(i.properties()[e.value])>=0],"filter-in-large":[Fe,[Le,At(je)],(i,[e,r])=>function(s,l,u,d){for(;u<=d;){const f=u+d>>1;if(l[f]===s)return!0;l[f]>s?d=f-1:u=f+1}return!1}(i.properties()[e.value],r.value,0,r.value.length-1)],all:{type:Fe,overloads:[[[Fe,Fe],(i,[e,r])=>e.evaluate(i)&&r.evaluate(i)],[Kr(Fe),(i,e)=>{for(const r of e)if(!r.evaluate(i))return!1;return!0}]]},any:{type:Fe,overloads:[[[Fe,Fe],(i,[e,r])=>e.evaluate(i)||r.evaluate(i)],[Kr(Fe),(i,e)=>{for(const r of e)if(r.evaluate(i))return!0;return!1}]]},"!":[Fe,[Fe],(i,[e])=>!e.evaluate(i)],"is-supported-script":[Fe,[Le],(i,[e])=>{const r=i.globals&&i.globals.isSupportedScript;return!r||r(e.evaluate(i))}],upcase:[Le,[Le],(i,[e])=>e.evaluate(i).toUpperCase()],downcase:[Le,[Le],(i,[e])=>e.evaluate(i).toLowerCase()],concat:[Le,Kr(je),(i,e)=>e.map(r=>mi(r.evaluate(i))).join("")],"resolved-locale":[Le,[It],(i,[e])=>e.evaluate(i).resolvedLocale()]});class Ns{constructor(e,r){this.expression=e,this._warningHistory={},this._evaluator=new Mo,this._defaultValue=r?function(s){return s.type==="color"&&kt(s.default)?new le(0,0,0,0):s.type==="color"?le.parse(s.default)||null:s.type==="padding"?ot.parse(s.default)||null:s.default===void 0?null:s.default}(r):null,this._enumValues=r&&r.type==="enum"?r.values:null}evaluateWithoutErrorHandling(e,r,s,l,u,d){return this._evaluator.globals=e,this._evaluator.feature=r,this._evaluator.featureState=s,this._evaluator.canonical=l,this._evaluator.availableImages=u||null,this._evaluator.formattedSection=d,this.expression.evaluate(this._evaluator)}evaluate(e,r,s,l,u,d){this._evaluator.globals=e,this._evaluator.feature=r||null,this._evaluator.featureState=s||null,this._evaluator.canonical=l,this._evaluator.availableImages=u||null,this._evaluator.formattedSection=d||null;try{const f=this.expression.evaluate(this._evaluator);if(f==null||typeof f=="number"&&f!=f)return this._defaultValue;if(this._enumValues&&!(f in this._enumValues))throw new wt(`Expected value to be one of ${Object.keys(this._enumValues).map(g=>JSON.stringify(g)).join(", ")}, but found ${JSON.stringify(f)} instead.`);return f}catch(f){return this._warningHistory[f.message]||(this._warningHistory[f.message]=!0,typeof console<"u"&&console.warn(f.message)),this._defaultValue}}}function Qn(i){return Array.isArray(i)&&i.length>0&&typeof i[0]=="string"&&i[0]in vn}function es(i,e){const r=new Ro(vn,[],e?function(l){const u={color:vt,string:Le,number:xe,enum:Le,boolean:Fe,formatted:Xt,padding:ii,resolvedImage:Bt};return l.type==="array"?At(u[l.value]||je,l.length):u[l.type]}(e):void 0),s=r.parse(i,void 0,void 0,void 0,e&&e.type==="string"?{typeAnnotation:"coerce"}:void 0);return s?Go(new Ns(s,e)):Ut(r.errors)}class ts{constructor(e,r){this.kind=e,this._styleExpression=r,this.isStateDependent=e!=="constant"&&!_n(r.expression)}evaluateWithoutErrorHandling(e,r,s,l,u,d){return this._styleExpression.evaluateWithoutErrorHandling(e,r,s,l,u,d)}evaluate(e,r,s,l,u,d){return this._styleExpression.evaluate(e,r,s,l,u,d)}}class Da{constructor(e,r,s,l){this.kind=e,this.zoomStops=s,this._styleExpression=r,this.isStateDependent=e!=="camera"&&!_n(r.expression),this.interpolationType=l}evaluateWithoutErrorHandling(e,r,s,l,u,d){return this._styleExpression.evaluateWithoutErrorHandling(e,r,s,l,u,d)}evaluate(e,r,s,l,u,d){return this._styleExpression.evaluate(e,r,s,l,u,d)}interpolationFactor(e,r,s){return this.interpolationType?Vi.interpolationFactor(this.interpolationType,e,r,s):0}}function Xo(i,e){const r=es(i,e);if(r.result==="error")return r;const s=r.value.expression,l=Xn(s);if(!l&&!bn(e))return Ut([new Ce("","data expressions not supported")]);const u=ks(s,["zoom"]);if(!u&&!dt(e))return Ut([new Ce("","zoom expressions not supported")]);const d=js(s);return d||u?d instanceof Ce?Ut([d]):d instanceof Vi&&!Jn(e)?Ut([new Ce("",'"interpolate" expressions cannot be used with this property')]):Go(d?new Da(l?"camera":"composite",r.value,d.labels,d instanceof Vi?d.interpolation:void 0):new ts(l?"constant":"source",r.value)):Ut([new Ce("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class $s{constructor(e,r){this._parameters=e,this._specification=r,oe(this,La(this._parameters,this._specification))}static deserialize(e){return new $s(e._parameters,e._specification)}static serialize(e){return{_parameters:e._parameters,_specification:e._specification}}}function js(i){let e=null;if(i instanceof Bs)e=js(i.result);else if(i instanceof Rs){for(const r of i.args)if(e=js(r),e)break}else(i instanceof yn||i instanceof Vi)&&i.input instanceof Qi&&i.input.name==="zoom"&&(e=i);return e instanceof Ce||i.eachChild(r=>{const s=js(r);s instanceof Ce?e=s:!e&&s?e=new Ce("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):e&&s&&e!==s&&(e=new Ce("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),e}function er(i){const e=i.key,r=i.value,s=i.valueSpec||{},l=i.objectElementValidators||{},u=i.style,d=i.styleSpec,f=i.validateSpec;let g=[];const x=et(r);if(x!=="object")return[new H(e,r,`object expected, ${x} found`)];for(const w in r){const T=w.split(".")[0],A=s[T]||s["*"];let I;if(l[T])I=l[T];else if(s[T])I=f;else if(l["*"])I=l["*"];else{if(!s["*"]){g.push(new H(e,r[w],`unknown property "${w}"`));continue}I=f}g=g.concat(I({key:(e&&`${e}.`)+w,value:r[w],valueSpec:A,style:u,styleSpec:d,object:r,objectKey:w,validateSpec:f},r))}for(const w in s)l[w]||s[w].required&&s[w].default===void 0&&r[w]===void 0&&g.push(new H(e,r,`missing required property "${w}"`));return g}function Wo(i){const e=i.value,r=i.valueSpec,s=i.style,l=i.styleSpec,u=i.key,d=i.arrayElementValidator||i.validateSpec;if(et(e)!=="array")return[new H(u,e,`array expected, ${et(e)} found`)];if(r.length&&e.length!==r.length)return[new H(u,e,`array length ${r.length} expected, length ${e.length} found`)];if(r["min-length"]&&e.length<r["min-length"])return[new H(u,e,`array length at least ${r["min-length"]} expected, length ${e.length} found`)];let f={type:r.value,values:r.values};l.$version<7&&(f.function=r.function),et(r.value)==="object"&&(f=r.value);let g=[];for(let x=0;x<e.length;x++)g=g.concat(d({array:e,arrayIndex:x,value:e[x],valueSpec:f,validateSpec:i.validateSpec,style:s,styleSpec:l,key:`${u}[${x}]`}));return g}function Ra(i){const e=i.key,r=i.value,s=i.valueSpec;let l=et(r);return l==="number"&&r!=r&&(l="NaN"),l!=="number"?[new H(e,r,`number expected, ${l} found`)]:"minimum"in s&&r<s.minimum?[new H(e,r,`${r} is less than the minimum value ${s.minimum}`)]:"maximum"in s&&r>s.maximum?[new H(e,r,`${r} is greater than the maximum value ${s.maximum}`)]:[]}function Ho(i){const e=i.valueSpec,r=Ee(i.value.type);let s,l,u,d={};const f=r!=="categorical"&&i.value.property===void 0,g=!f,x=et(i.value.stops)==="array"&&et(i.value.stops[0])==="array"&&et(i.value.stops[0][0])==="object",w=er({key:i.key,value:i.value,valueSpec:i.styleSpec.function,validateSpec:i.validateSpec,style:i.style,styleSpec:i.styleSpec,objectElementValidators:{stops:function(I){if(r==="identity")return[new H(I.key,I.value,'identity function may not have a "stops" property')];let P=[];const F=I.value;return P=P.concat(Wo({key:I.key,value:F,valueSpec:I.valueSpec,validateSpec:I.validateSpec,style:I.style,styleSpec:I.styleSpec,arrayElementValidator:T})),et(F)==="array"&&F.length===0&&P.push(new H(I.key,F,"array must have at least one stop")),P},default:function(I){return I.validateSpec({key:I.key,value:I.value,valueSpec:e,validateSpec:I.validateSpec,style:I.style,styleSpec:I.styleSpec})}}});return r==="identity"&&f&&w.push(new H(i.key,i.value,'missing required property "property"')),r==="identity"||i.value.stops||w.push(new H(i.key,i.value,'missing required property "stops"')),r==="exponential"&&i.valueSpec.expression&&!Jn(i.valueSpec)&&w.push(new H(i.key,i.value,"exponential functions not supported")),i.styleSpec.$version>=8&&(g&&!bn(i.valueSpec)?w.push(new H(i.key,i.value,"property functions not supported")):f&&!dt(i.valueSpec)&&w.push(new H(i.key,i.value,"zoom functions not supported"))),r!=="categorical"&&!x||i.value.property!==void 0||w.push(new H(i.key,i.value,'"property" property is required')),w;function T(I){let P=[];const F=I.value,O=I.key;if(et(F)!=="array")return[new H(O,F,`array expected, ${et(F)} found`)];if(F.length!==2)return[new H(O,F,`array length 2 expected, length ${F.length} found`)];if(x){if(et(F[0])!=="object")return[new H(O,F,`object expected, ${et(F[0])} found`)];if(F[0].zoom===void 0)return[new H(O,F,"object stop key must have zoom")];if(F[0].value===void 0)return[new H(O,F,"object stop key must have value")];if(u&&u>Ee(F[0].zoom))return[new H(O,F[0].zoom,"stop zoom values must appear in ascending order")];Ee(F[0].zoom)!==u&&(u=Ee(F[0].zoom),l=void 0,d={}),P=P.concat(er({key:`${O}[0]`,value:F[0],valueSpec:{zoom:{}},validateSpec:I.validateSpec,style:I.style,styleSpec:I.styleSpec,objectElementValidators:{zoom:Ra,value:A}}))}else P=P.concat(A({key:`${O}[0]`,value:F[0],valueSpec:{},validateSpec:I.validateSpec,style:I.style,styleSpec:I.styleSpec},F));return Qn(Pe(F[1]))?P.concat([new H(`${O}[1]`,F[1],"expressions are not allowed in function stops.")]):P.concat(I.validateSpec({key:`${O}[1]`,value:F[1],valueSpec:e,validateSpec:I.validateSpec,style:I.style,styleSpec:I.styleSpec}))}function A(I,P){const F=et(I.value),O=Ee(I.value),G=I.value!==null?I.value:P;if(s){if(F!==s)return[new H(I.key,G,`${F} stop domain type must match previous stop domain type ${s}`)]}else s=F;if(F!=="number"&&F!=="string"&&F!=="boolean")return[new H(I.key,G,"stop domain value must be a number, string, or boolean")];if(F!=="number"&&r!=="categorical"){let Y=`number expected, ${F} found`;return bn(e)&&r===void 0&&(Y+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new H(I.key,G,Y)]}return r!=="categorical"||F!=="number"||isFinite(O)&&Math.floor(O)===O?r!=="categorical"&&F==="number"&&l!==void 0&&O<l?[new H(I.key,G,"stop domain values must appear in ascending order")]:(l=O,r==="categorical"&&O in d?[new H(I.key,G,"stop domain values must be unique")]:(d[O]=!0,[])):[new H(I.key,G,`integer expected, found ${O}`)]}}function Jr(i){const e=(i.expressionContext==="property"?Xo:es)(Pe(i.value),i.valueSpec);if(e.result==="error")return e.value.map(s=>new H(`${i.key}${s.key}`,i.value,s.message));const r=e.value.expression||e.value._styleExpression.expression;if(i.expressionContext==="property"&&i.propertyKey==="text-font"&&!r.outputDefined())return[new H(i.key,i.value,`Invalid data expression for "${i.propertyKey}". Output values must be contained as literals within the expression.`)];if(i.expressionContext==="property"&&i.propertyType==="layout"&&!_n(r))return[new H(i.key,i.value,'"feature-state" data expressions are not supported with layout properties.')];if(i.expressionContext==="filter"&&!_n(r))return[new H(i.key,i.value,'"feature-state" data expressions are not supported with filters.')];if(i.expressionContext&&i.expressionContext.indexOf("cluster")===0){if(!ks(r,["zoom","feature-state"]))return[new H(i.key,i.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if(i.expressionContext==="cluster-initial"&&!Xn(r))return[new H(i.key,i.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function is(i){const e=i.key,r=i.value,s=i.valueSpec,l=[];return Array.isArray(s.values)?s.values.indexOf(Ee(r))===-1&&l.push(new H(e,r,`expected one of [${s.values.join(", ")}], ${JSON.stringify(r)} found`)):Object.keys(s.values).indexOf(Ee(r))===-1&&l.push(new H(e,r,`expected one of [${Object.keys(s.values).join(", ")}], ${JSON.stringify(r)} found`)),l}function wn(i){if(i===!0||i===!1)return!0;if(!Array.isArray(i)||i.length===0)return!1;switch(i[0]){case"has":return i.length>=2&&i[1]!=="$id"&&i[1]!=="$type";case"in":return i.length>=3&&(typeof i[1]!="string"||Array.isArray(i[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return i.length!==3||Array.isArray(i[1])||Array.isArray(i[2]);case"any":case"all":for(const e of i.slice(1))if(!wn(e)&&typeof e!="boolean")return!1;return!0;default:return!0}}const ac={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function Gs(i){if(i==null)return{filter:()=>!0,needGeometry:!1};wn(i)||(i=Tn(i));const e=es(i,ac);if(e.result==="error")throw new Error(e.value.map(r=>`${r.key}: ${r.message}`).join(", "));return{filter:(r,s,l)=>e.value.evaluate(r,s,{},l),needGeometry:Jo(i)}}function Ko(i,e){return i<e?-1:i>e?1:0}function Jo(i){if(!Array.isArray(i))return!1;if(i[0]==="within")return!0;for(let e=1;e<i.length;e++)if(Jo(i[e]))return!0;return!1}function Tn(i){if(!i)return!0;const e=i[0];return i.length<=1?e!=="any":e==="=="?Sn(i[1],i[2],"=="):e==="!="?Xs(Sn(i[1],i[2],"==")):e==="<"||e===">"||e==="<="||e===">="?Sn(i[1],i[2],e):e==="any"?(r=i.slice(1),["any"].concat(r.map(Tn))):e==="all"?["all"].concat(i.slice(1).map(Tn)):e==="none"?["all"].concat(i.slice(1).map(Tn).map(Xs)):e==="in"?qs(i[1],i.slice(2)):e==="!in"?Xs(qs(i[1],i.slice(2))):e==="has"?Zs(i[1]):e==="!has"?Xs(Zs(i[1])):e!=="within"||i;var r}function Sn(i,e,r){switch(i){case"$type":return[`filter-type-${r}`,e];case"$id":return[`filter-id-${r}`,e];default:return[`filter-${r}`,i,e]}}function qs(i,e){if(e.length===0)return!1;switch(i){case"$type":return["filter-type-in",["literal",e]];case"$id":return["filter-id-in",["literal",e]];default:return e.length>200&&!e.some(r=>typeof r!=typeof e[0])?["filter-in-large",i,["literal",e.sort(Ko)]]:["filter-in-small",i,["literal",e]]}}function Zs(i){switch(i){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",i]}}function Xs(i){return["!",i]}function En(i){return wn(Pe(i.value))?Jr(oe({},i,{expressionContext:"filter",valueSpec:{value:"boolean"}})):Yo(i)}function Yo(i){const e=i.value,r=i.key;if(et(e)!=="array")return[new H(r,e,`array expected, ${et(e)} found`)];const s=i.styleSpec;let l,u=[];if(e.length<1)return[new H(r,e,"filter array must have at least 1 element")];switch(u=u.concat(is({key:`${r}[0]`,value:e[0],valueSpec:s.filter_operator,style:i.style,styleSpec:i.styleSpec})),Ee(e[0])){case"<":case"<=":case">":case">=":e.length>=2&&Ee(e[1])==="$type"&&u.push(new H(r,e,`"$type" cannot be use with operator "${e[0]}"`));case"==":case"!=":e.length!==3&&u.push(new H(r,e,`filter array for operator "${e[0]}" must have 3 elements`));case"in":case"!in":e.length>=2&&(l=et(e[1]),l!=="string"&&u.push(new H(`${r}[1]`,e[1],`string expected, ${l} found`)));for(let d=2;d<e.length;d++)l=et(e[d]),Ee(e[1])==="$type"?u=u.concat(is({key:`${r}[${d}]`,value:e[d],valueSpec:s.geometry_type,style:i.style,styleSpec:i.styleSpec})):l!=="string"&&l!=="number"&&l!=="boolean"&&u.push(new H(`${r}[${d}]`,e[d],`string, number, or boolean expected, ${l} found`));break;case"any":case"all":case"none":for(let d=1;d<e.length;d++)u=u.concat(Yo({key:`${r}[${d}]`,value:e[d],style:i.style,styleSpec:i.styleSpec}));break;case"has":case"!has":l=et(e[1]),e.length!==2?u.push(new H(r,e,`filter array for "${e[0]}" operator must have 2 elements`)):l!=="string"&&u.push(new H(`${r}[1]`,e[1],`string expected, ${l} found`));break;case"within":l=et(e[1]),e.length!==2?u.push(new H(r,e,`filter array for "${e[0]}" operator must have 2 elements`)):l!=="object"&&u.push(new H(`${r}[1]`,e[1],`object expected, ${l} found`))}return u}function Qo(i,e){const r=i.key,s=i.validateSpec,l=i.style,u=i.styleSpec,d=i.value,f=i.objectKey,g=u[`${e}_${i.layerType}`];if(!g)return[];const x=f.match(/^(.*)-transition$/);if(e==="paint"&&x&&g[x[1]]&&g[x[1]].transition)return s({key:r,value:d,valueSpec:u.transition,style:l,styleSpec:u});const w=i.valueSpec||g[f];if(!w)return[new H(r,d,`unknown property "${f}"`)];let T;if(et(d)==="string"&&bn(w)&&!w.tokens&&(T=/^{([^}]+)}$/.exec(d)))return[new H(r,d,`"${f}" does not support interpolation syntax
2
+ Use an identity property function instead: \`{ "type": "identity", "property": ${JSON.stringify(T[1])} }\`.`)];const A=[];return i.layerType==="symbol"&&(f==="text-field"&&l&&!l.glyphs&&A.push(new H(r,d,'use of "text-field" requires a style "glyphs" property')),f==="text-font"&&kt(Pe(d))&&Ee(d.type)==="identity"&&A.push(new H(r,d,'"text-font" does not support identity functions'))),A.concat(s({key:i.key,value:d,valueSpec:w,style:l,styleSpec:u,expressionContext:"property",propertyType:e,propertyKey:f}))}function el(i){return Qo(i,"paint")}function tl(i){return Qo(i,"layout")}function il(i){let e=[];const r=i.value,s=i.key,l=i.style,u=i.styleSpec;r.type||r.ref||e.push(new H(s,r,'either "type" or "ref" is required'));let d=Ee(r.type);const f=Ee(r.ref);if(r.id){const g=Ee(r.id);for(let x=0;x<i.arrayIndex;x++){const w=l.layers[x];Ee(w.id)===g&&e.push(new H(s,r.id,`duplicate layer id "${r.id}", previously used at line ${w.id.__line__}`))}}if("ref"in r){let g;["type","source","source-layer","filter","layout"].forEach(x=>{x in r&&e.push(new H(s,r[x],`"${x}" is prohibited for ref layers`))}),l.layers.forEach(x=>{Ee(x.id)===f&&(g=x)}),g?g.ref?e.push(new H(s,r.ref,"ref cannot reference another ref layer")):d=Ee(g.type):e.push(new H(s,r.ref,`ref layer "${f}" not found`))}else if(d!=="background")if(r.source){const g=l.sources&&l.sources[r.source],x=g&&Ee(g.type);g?x==="vector"&&d==="raster"?e.push(new H(s,r.source,`layer "${r.id}" requires a raster source`)):x==="raster"&&d!=="raster"?e.push(new H(s,r.source,`layer "${r.id}" requires a vector source`)):x!=="vector"||r["source-layer"]?x==="raster-dem"&&d!=="hillshade"?e.push(new H(s,r.source,"raster-dem source can only be used with layer type 'hillshade'.")):d!=="line"||!r.paint||!r.paint["line-gradient"]||x==="geojson"&&g.lineMetrics||e.push(new H(s,r,`layer "${r.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):e.push(new H(s,r,`layer "${r.id}" must specify a "source-layer"`)):e.push(new H(s,r.source,`source "${r.source}" not found`))}else e.push(new H(s,r,'missing required property "source"'));return e=e.concat(er({key:s,value:r,valueSpec:u.layer,style:i.style,styleSpec:i.styleSpec,validateSpec:i.validateSpec,objectElementValidators:{"*":()=>[],type:()=>i.validateSpec({key:`${s}.type`,value:r.type,valueSpec:u.layer.type,style:i.style,styleSpec:i.styleSpec,validateSpec:i.validateSpec,object:r,objectKey:"type"}),filter:En,layout:g=>er({layer:r,key:g.key,value:g.value,style:g.style,styleSpec:g.styleSpec,validateSpec:g.validateSpec,objectElementValidators:{"*":x=>tl(oe({layerType:d},x))}}),paint:g=>er({layer:r,key:g.key,value:g.value,style:g.style,styleSpec:g.styleSpec,validateSpec:g.validateSpec,objectElementValidators:{"*":x=>el(oe({layerType:d},x))}})}})),e}function gr(i){const e=i.value,r=i.key,s=et(e);return s!=="string"?[new H(r,e,`string expected, ${s} found`)]:[]}const rs={promoteId:function({key:i,value:e}){if(et(e)==="string")return gr({key:i,value:e});{const r=[];for(const s in e)r.push(...gr({key:`${i}.${s}`,value:e[s]}));return r}}};function Ni(i){const e=i.value,r=i.key,s=i.styleSpec,l=i.style,u=i.validateSpec;if(!e.type)return[new H(r,e,'"type" is required')];const d=Ee(e.type);let f;switch(d){case"vector":case"raster":case"raster-dem":return f=er({key:r,value:e,valueSpec:s[`source_${d.replace("-","_")}`],style:i.style,styleSpec:s,objectElementValidators:rs,validateSpec:u}),f;case"geojson":if(f=er({key:r,value:e,valueSpec:s.source_geojson,style:l,styleSpec:s,validateSpec:u,objectElementValidators:rs}),e.cluster)for(const g in e.clusterProperties){const[x,w]=e.clusterProperties[g],T=typeof x=="string"?[x,["accumulated"],["get",g]]:x;f.push(...Jr({key:`${r}.${g}.map`,value:w,validateSpec:u,expressionContext:"cluster-map"})),f.push(...Jr({key:`${r}.${g}.reduce`,value:T,validateSpec:u,expressionContext:"cluster-reduce"}))}return f;case"video":return er({key:r,value:e,valueSpec:s.source_video,style:l,validateSpec:u,styleSpec:s});case"image":return er({key:r,value:e,valueSpec:s.source_image,style:l,validateSpec:u,styleSpec:s});case"canvas":return[new H(r,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return is({key:`${r}.type`,value:e.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:l,validateSpec:u,styleSpec:s})}}function ns(i){const e=i.value,r=i.styleSpec,s=r.light,l=i.style;let u=[];const d=et(e);if(e===void 0)return u;if(d!=="object")return u=u.concat([new H("light",e,`object expected, ${d} found`)]),u;for(const f in e){const g=f.match(/^(.*)-transition$/);u=u.concat(g&&s[g[1]]&&s[g[1]].transition?i.validateSpec({key:f,value:e[f],valueSpec:r.transition,validateSpec:i.validateSpec,style:l,styleSpec:r}):s[f]?i.validateSpec({key:f,value:e[f],valueSpec:s[f],validateSpec:i.validateSpec,style:l,styleSpec:r}):[new H(f,e[f],`unknown property "${f}"`)])}return u}function rl(i){const e=i.value,r=i.styleSpec,s=r.terrain,l=i.style;let u=[];const d=et(e);if(e===void 0)return u;if(d!=="object")return u=u.concat([new H("terrain",e,`object expected, ${d} found`)]),u;for(const f in e)u=u.concat(s[f]?i.validateSpec({key:f,value:e[f],valueSpec:s[f],validateSpec:i.validateSpec,style:l,styleSpec:r}):[new H(f,e[f],`unknown property "${f}"`)]);return u}function nl(i){let e=[];const r=i.value,s=i.key;if(Array.isArray(r)){const l=[],u=[];for(const d in r)r[d].id&&l.includes(r[d].id)&&e.push(new H(s,r,`all the sprites' ids must be unique, but ${r[d].id} is duplicated`)),l.push(r[d].id),r[d].url&&u.includes(r[d].url)&&e.push(new H(s,r,`all the sprites' URLs must be unique, but ${r[d].url} is duplicated`)),u.push(r[d].url),e=e.concat(er({key:`${s}[${d}]`,value:r[d],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:i.validateSpec}));return e}return gr({key:s,value:r})}const sl={"*":()=>[],array:Wo,boolean:function(i){const e=i.value,r=i.key,s=et(e);return s!=="boolean"?[new H(r,e,`boolean expected, ${s} found`)]:[]},number:Ra,color:function(i){const e=i.key,r=i.value,s=et(r);return s!=="string"?[new H(e,r,`color expected, ${s} found`)]:fe(r)===null?[new H(e,r,`color expected, "${r}" found`)]:[]},constants:ve,enum:is,filter:En,function:Ho,layer:il,object:er,source:Ni,light:ns,terrain:rl,string:gr,formatted:function(i){return gr(i).length===0?[]:Jr(i)},resolvedImage:function(i){return gr(i).length===0?[]:Jr(i)},padding:function(i){const e=i.key,r=i.value;if(et(r)==="array"){if(r.length<1||r.length>4)return[new H(e,r,`padding requires 1 to 4 values; ${r.length} values found`)];const s={type:"number"};let l=[];for(let u=0;u<r.length;u++)l=l.concat(i.validateSpec({key:`${e}[${u}]`,value:r[u],validateSpec:i.validateSpec,valueSpec:s}));return l}return Ra({key:e,value:r,valueSpec:{}})},sprite:nl};function ss(i){const e=i.value,r=i.valueSpec,s=i.styleSpec;return i.validateSpec=ss,r.expression&&kt(Ee(e))?Ho(i):r.expression&&Qn(Pe(e))?Jr(i):r.type&&sl[r.type]?sl[r.type](i):er(oe({},i,{valueSpec:r.type?s[r.type]:r}))}function Ws(i){const e=i.value,r=i.key,s=gr(i);return s.length||(e.indexOf("{fontstack}")===-1&&s.push(new H(r,e,'"glyphs" url must include a "{fontstack}" token')),e.indexOf("{range}")===-1&&s.push(new H(r,e,'"glyphs" url must include a "{range}" token'))),s}function _r(i,e=V){let r=[];return r=r.concat(ss({key:"",value:i,valueSpec:e.$root,styleSpec:e,style:i,validateSpec:ss,objectElementValidators:{glyphs:Ws,"*":()=>[]}})),i.constants&&(r=r.concat(ve({key:"constants",value:i.constants,style:i,styleSpec:e,validateSpec:ss}))),al(r)}function or(i){return function(e){return i({...e,validateSpec:ss})}}function al(i){return[].concat(i).sort((e,r)=>e.line-r.line)}function $i(i){return function(...e){return al(i.apply(this,e))}}_r.source=$i(or(Ni)),_r.sprite=$i(or(nl)),_r.glyphs=$i(or(Ws)),_r.light=$i(or(ns)),_r.terrain=$i(or(rl)),_r.layer=$i(or(il)),_r.filter=$i(or(En)),_r.paintProperty=$i(or(el)),_r.layoutProperty=$i(or(tl));const as=_r,Ba=as.light,ol=as.paintProperty,Fa=as.layoutProperty;function Oa(i,e){let r=!1;if(e&&e.length)for(const s of e)i.fire(new j(new Error(s.message))),r=!0;return r}class In{constructor(e,r,s){const l=this.cells=[];if(e instanceof ArrayBuffer){this.arrayBuffer=e;const d=new Int32Array(this.arrayBuffer);e=d[0],this.d=(r=d[1])+2*(s=d[2]);for(let g=0;g<this.d*this.d;g++){const x=d[3+g],w=d[3+g+1];l.push(x===w?null:d.subarray(x,w))}const f=d[3+l.length+1];this.keys=d.subarray(d[3+l.length],f),this.bboxes=d.subarray(f),this.insert=this._insertReadonly}else{this.d=r+2*s;for(let d=0;d<this.d*this.d;d++)l.push([]);this.keys=[],this.bboxes=[]}this.n=r,this.extent=e,this.padding=s,this.scale=r/e,this.uid=0;const u=s/r*e;this.min=-u,this.max=e+u}insert(e,r,s,l,u){this._forEachCell(r,s,l,u,this._insertCell,this.uid++,void 0,void 0),this.keys.push(e),this.bboxes.push(r),this.bboxes.push(s),this.bboxes.push(l),this.bboxes.push(u)}_insertReadonly(){throw new Error("Cannot insert into a GridIndex created from an ArrayBuffer.")}_insertCell(e,r,s,l,u,d){this.cells[u].push(d)}query(e,r,s,l,u){const d=this.min,f=this.max;if(e<=d&&r<=d&&f<=s&&f<=l&&!u)return Array.prototype.slice.call(this.keys);{const g=[];return this._forEachCell(e,r,s,l,this._queryCell,g,{},u),g}}_queryCell(e,r,s,l,u,d,f,g){const x=this.cells[u];if(x!==null){const w=this.keys,T=this.bboxes;for(let A=0;A<x.length;A++){const I=x[A];if(f[I]===void 0){const P=4*I;(g?g(T[P+0],T[P+1],T[P+2],T[P+3]):e<=T[P+2]&&r<=T[P+3]&&s>=T[P+0]&&l>=T[P+1])?(f[I]=!0,d.push(w[I])):f[I]=!1}}}}_forEachCell(e,r,s,l,u,d,f,g){const x=this._convertToCellCoord(e),w=this._convertToCellCoord(r),T=this._convertToCellCoord(s),A=this._convertToCellCoord(l);for(let I=x;I<=T;I++)for(let P=w;P<=A;P++){const F=this.d*P+I;if((!g||g(this._convertFromCellCoord(I),this._convertFromCellCoord(P),this._convertFromCellCoord(I+1),this._convertFromCellCoord(P+1)))&&u.call(this,e,r,s,l,F,d,f,g))return}}_convertFromCellCoord(e){return(e-this.padding)/this.scale}_convertToCellCoord(e){return Math.max(0,Math.min(this.d-1,Math.floor(e*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;const e=this.cells,r=3+this.cells.length+1+1;let s=0;for(let d=0;d<this.cells.length;d++)s+=this.cells[d].length;const l=new Int32Array(r+s+this.keys.length+this.bboxes.length);l[0]=this.extent,l[1]=this.n,l[2]=this.padding;let u=r;for(let d=0;d<e.length;d++){const f=e[d];l[3+d]=u,l.set(f,u),u+=f.length}return l[3+e.length]=u,l.set(this.keys,u),u+=this.keys.length,l[3+e.length+1]=u,l.set(this.bboxes,u),u+=this.bboxes.length,l.buffer}static serialize(e,r){const s=e.toArrayBuffer();return r&&r.push(s),{buffer:s}}static deserialize(e){return new In(e.buffer)}}const Nr={};function $e(i,e,r={}){if(Nr[i])throw new Error(`${i} is already registered.`);Object.defineProperty(e,"_classRegistryKey",{value:i,writeable:!1}),Nr[i]={klass:e,omit:r.omit||[],shallow:r.shallow||[]}}$e("Object",Object),$e("TransferableGridIndex",In),$e("Color",le),$e("Error",Error),$e("AJAXError",Er),$e("ResolvedImage",_t),$e("StylePropertyFunction",$s),$e("StyleExpression",Ns,{omit:["_evaluator"]}),$e("ZoomDependentExpression",Da),$e("ZoomConstantExpression",ts),$e("CompoundExpression",Qi,{omit:["_evaluate"]});for(const i in vn)vn[i]._classRegistryKey||$e(`Expression_${i}`,vn[i]);function os(i){return i&&typeof ArrayBuffer<"u"&&(i instanceof ArrayBuffer||i.constructor&&i.constructor.name==="ArrayBuffer")}function An(i,e){if(i==null||typeof i=="boolean"||typeof i=="number"||typeof i=="string"||i instanceof Boolean||i instanceof Number||i instanceof String||i instanceof Date||i instanceof RegExp||i instanceof Blob)return i;if(os(i)||Br(i))return e&&e.push(i),i;if(ArrayBuffer.isView(i)){const r=i;return e&&e.push(r.buffer),r}if(i instanceof ImageData)return e&&e.push(i.data.buffer),i;if(Array.isArray(i)){const r=[];for(const s of i)r.push(An(s,e));return r}if(typeof i=="object"){const r=i.constructor,s=r._classRegistryKey;if(!s)throw new Error("can't serialize object of unregistered class");if(!Nr[s])throw new Error(`${s} is not registered.`);const l=r.serialize?r.serialize(i,e):{};if(r.serialize){if(e&&l===e[e.length-1])throw new Error("statically serialized object won't survive transfer of $name property")}else{for(const u in i){if(!i.hasOwnProperty(u)||Nr[s].omit.indexOf(u)>=0)continue;const d=i[u];l[u]=Nr[s].shallow.indexOf(u)>=0?d:An(d,e)}i instanceof Error&&(l.message=i.message)}if(l.$name)throw new Error("$name property is reserved for worker serialization logic.");return s!=="Object"&&(l.$name=s),l}throw new Error("can't serialize object of type "+typeof i)}function ls(i){if(i==null||typeof i=="boolean"||typeof i=="number"||typeof i=="string"||i instanceof Boolean||i instanceof Number||i instanceof String||i instanceof Date||i instanceof RegExp||i instanceof Blob||os(i)||Br(i)||ArrayBuffer.isView(i)||i instanceof ImageData)return i;if(Array.isArray(i))return i.map(ls);if(typeof i=="object"){const e=i.$name||"Object";if(!Nr[e])throw new Error(`can't deserialize unregistered class ${e}`);const{klass:r}=Nr[e];if(!r)throw new Error(`can't deserialize unregistered class ${e}`);if(r.deserialize)return r.deserialize(i);const s=Object.create(r.prototype);for(const l of Object.keys(i)){if(l==="$name")continue;const u=i[l];s[l]=Nr[e].shallow.indexOf(l)>=0?u:ls(u)}return s}throw new Error("can't deserialize object of type "+typeof i)}class Ua{constructor(){this.first=!0}update(e,r){const s=Math.floor(e);return this.first?(this.first=!1,this.lastIntegerZoom=s,this.lastIntegerZoomTime=0,this.lastZoom=e,this.lastFloorZoom=s,!0):(this.lastFloorZoom>s?(this.lastIntegerZoom=s+1,this.lastIntegerZoomTime=r):this.lastFloorZoom<s&&(this.lastIntegerZoom=s,this.lastIntegerZoomTime=r),e!==this.lastZoom&&(this.lastZoom=e,this.lastFloorZoom=s,!0))}}const Oe={"Latin-1 Supplement":i=>i>=128&&i<=255,Arabic:i=>i>=1536&&i<=1791,"Arabic Supplement":i=>i>=1872&&i<=1919,"Arabic Extended-A":i=>i>=2208&&i<=2303,"Hangul Jamo":i=>i>=4352&&i<=4607,"Unified Canadian Aboriginal Syllabics":i=>i>=5120&&i<=5759,Khmer:i=>i>=6016&&i<=6143,"Unified Canadian Aboriginal Syllabics Extended":i=>i>=6320&&i<=6399,"General Punctuation":i=>i>=8192&&i<=8303,"Letterlike Symbols":i=>i>=8448&&i<=8527,"Number Forms":i=>i>=8528&&i<=8591,"Miscellaneous Technical":i=>i>=8960&&i<=9215,"Control Pictures":i=>i>=9216&&i<=9279,"Optical Character Recognition":i=>i>=9280&&i<=9311,"Enclosed Alphanumerics":i=>i>=9312&&i<=9471,"Geometric Shapes":i=>i>=9632&&i<=9727,"Miscellaneous Symbols":i=>i>=9728&&i<=9983,"Miscellaneous Symbols and Arrows":i=>i>=11008&&i<=11263,"CJK Radicals Supplement":i=>i>=11904&&i<=12031,"Kangxi Radicals":i=>i>=12032&&i<=12255,"Ideographic Description Characters":i=>i>=12272&&i<=12287,"CJK Symbols and Punctuation":i=>i>=12288&&i<=12351,Hiragana:i=>i>=12352&&i<=12447,Katakana:i=>i>=12448&&i<=12543,Bopomofo:i=>i>=12544&&i<=12591,"Hangul Compatibility Jamo":i=>i>=12592&&i<=12687,Kanbun:i=>i>=12688&&i<=12703,"Bopomofo Extended":i=>i>=12704&&i<=12735,"CJK Strokes":i=>i>=12736&&i<=12783,"Katakana Phonetic Extensions":i=>i>=12784&&i<=12799,"Enclosed CJK Letters and Months":i=>i>=12800&&i<=13055,"CJK Compatibility":i=>i>=13056&&i<=13311,"CJK Unified Ideographs Extension A":i=>i>=13312&&i<=19903,"Yijing Hexagram Symbols":i=>i>=19904&&i<=19967,"CJK Unified Ideographs":i=>i>=19968&&i<=40959,"Yi Syllables":i=>i>=40960&&i<=42127,"Yi Radicals":i=>i>=42128&&i<=42191,"Hangul Jamo Extended-A":i=>i>=43360&&i<=43391,"Hangul Syllables":i=>i>=44032&&i<=55215,"Hangul Jamo Extended-B":i=>i>=55216&&i<=55295,"Private Use Area":i=>i>=57344&&i<=63743,"CJK Compatibility Ideographs":i=>i>=63744&&i<=64255,"Arabic Presentation Forms-A":i=>i>=64336&&i<=65023,"Vertical Forms":i=>i>=65040&&i<=65055,"CJK Compatibility Forms":i=>i>=65072&&i<=65103,"Small Form Variants":i=>i>=65104&&i<=65135,"Arabic Presentation Forms-B":i=>i>=65136&&i<=65279,"Halfwidth and Fullwidth Forms":i=>i>=65280&&i<=65519};function cs(i){for(const e of i)if(Va(e.charCodeAt(0)))return!0;return!1}function oc(i){for(const e of i)if(!lc(e.charCodeAt(0)))return!1;return!0}function lc(i){return!(Oe.Arabic(i)||Oe["Arabic Supplement"](i)||Oe["Arabic Extended-A"](i)||Oe["Arabic Presentation Forms-A"](i)||Oe["Arabic Presentation Forms-B"](i))}function Va(i){return!(i!==746&&i!==747&&(i<4352||!(Oe["Bopomofo Extended"](i)||Oe.Bopomofo(i)||Oe["CJK Compatibility Forms"](i)&&!(i>=65097&&i<=65103)||Oe["CJK Compatibility Ideographs"](i)||Oe["CJK Compatibility"](i)||Oe["CJK Radicals Supplement"](i)||Oe["CJK Strokes"](i)||!(!Oe["CJK Symbols and Punctuation"](i)||i>=12296&&i<=12305||i>=12308&&i<=12319||i===12336)||Oe["CJK Unified Ideographs Extension A"](i)||Oe["CJK Unified Ideographs"](i)||Oe["Enclosed CJK Letters and Months"](i)||Oe["Hangul Compatibility Jamo"](i)||Oe["Hangul Jamo Extended-A"](i)||Oe["Hangul Jamo Extended-B"](i)||Oe["Hangul Jamo"](i)||Oe["Hangul Syllables"](i)||Oe.Hiragana(i)||Oe["Ideographic Description Characters"](i)||Oe.Kanbun(i)||Oe["Kangxi Radicals"](i)||Oe["Katakana Phonetic Extensions"](i)||Oe.Katakana(i)&&i!==12540||!(!Oe["Halfwidth and Fullwidth Forms"](i)||i===65288||i===65289||i===65293||i>=65306&&i<=65310||i===65339||i===65341||i===65343||i>=65371&&i<=65503||i===65507||i>=65512&&i<=65519)||!(!Oe["Small Form Variants"](i)||i>=65112&&i<=65118||i>=65123&&i<=65126)||Oe["Unified Canadian Aboriginal Syllabics"](i)||Oe["Unified Canadian Aboriginal Syllabics Extended"](i)||Oe["Vertical Forms"](i)||Oe["Yijing Hexagram Symbols"](i)||Oe["Yi Syllables"](i)||Oe["Yi Radicals"](i))))}function ll(i){return!(Va(i)||function(e){return!!(Oe["Latin-1 Supplement"](e)&&(e===167||e===169||e===174||e===177||e===188||e===189||e===190||e===215||e===247)||Oe["General Punctuation"](e)&&(e===8214||e===8224||e===8225||e===8240||e===8241||e===8251||e===8252||e===8258||e===8263||e===8264||e===8265||e===8273)||Oe["Letterlike Symbols"](e)||Oe["Number Forms"](e)||Oe["Miscellaneous Technical"](e)&&(e>=8960&&e<=8967||e>=8972&&e<=8991||e>=8996&&e<=9e3||e===9003||e>=9085&&e<=9114||e>=9150&&e<=9165||e===9167||e>=9169&&e<=9179||e>=9186&&e<=9215)||Oe["Control Pictures"](e)&&e!==9251||Oe["Optical Character Recognition"](e)||Oe["Enclosed Alphanumerics"](e)||Oe["Geometric Shapes"](e)||Oe["Miscellaneous Symbols"](e)&&!(e>=9754&&e<=9759)||Oe["Miscellaneous Symbols and Arrows"](e)&&(e>=11026&&e<=11055||e>=11088&&e<=11097||e>=11192&&e<=11243)||Oe["CJK Symbols and Punctuation"](e)||Oe.Katakana(e)||Oe["Private Use Area"](e)||Oe["CJK Compatibility Forms"](e)||Oe["Small Form Variants"](e)||Oe["Halfwidth and Fullwidth Forms"](e)||e===8734||e===8756||e===8757||e>=9984&&e<=10087||e>=10102&&e<=10131||e===65532||e===65533)}(i))}function Na(i){return i>=1424&&i<=2303||Oe["Arabic Presentation Forms-A"](i)||Oe["Arabic Presentation Forms-B"](i)}function cc(i,e){return!(!e&&Na(i)||i>=2304&&i<=3583||i>=3840&&i<=4255||Oe.Khmer(i))}function hc(i){for(const e of i)if(Na(e.charCodeAt(0)))return!0;return!1}const $a="deferred",ja="loading",Ga="loaded";let qa=null,zi="unavailable",lr=null;const cl=function(i){i&&typeof i=="string"&&i.indexOf("NetworkError")>-1&&(zi="error"),qa&&qa(i)};function hs(){Za.fire(new R("pluginStateChange",{pluginStatus:zi,pluginURL:lr}))}const Za=new Q,Xa=function(){return zi},hl=function(){if(zi!==$a||!lr)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");zi=ja,hs(),lr&&Xr({url:lr},i=>{i?cl(i):(zi=Ga,hs())})},ji={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>zi===Ga||ji.applyArabicShaping!=null,isLoading:()=>zi===ja,setState(i){if(!Yi())throw new Error("Cannot set the state of the rtl-text-plugin when not in the web-worker context");zi=i.pluginStatus,lr=i.pluginURL},isParsed(){if(!Yi())throw new Error("rtl-text-plugin is only parsed on the worker-threads");return ji.applyArabicShaping!=null&&ji.processBidirectionalText!=null&&ji.processStyledBidirectionalText!=null},getPluginURL(){if(!Yi())throw new Error("rtl-text-plugin url can only be queried from the worker threads");return lr}};class Vt{constructor(e,r){this.zoom=e,r?(this.now=r.now,this.fadeDuration=r.fadeDuration,this.zoomHistory=r.zoomHistory,this.transition=r.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Ua,this.transition={})}isSupportedScript(e){return function(r,s){for(const l of r)if(!cc(l.charCodeAt(0),s))return!1;return!0}(e,ji.isLoaded())}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const e=this.zoom,r=e-Math.floor(e),s=this.crossFadingFactor();return e>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:r+(1-r)*s}:{fromScale:.5,toScale:1,t:1-(1-s)*r}}}class Hs{constructor(e,r){this.property=e,this.value=r,this.expression=function(s,l){if(kt(s))return new $s(s,l);if(Qn(s)){const u=Xo(s,l);if(u.result==="error")throw new Error(u.value.map(d=>`${d.key}: ${d.message}`).join(", "));return u.value}{let u=s;return l.type==="color"&&typeof s=="string"?u=le.parse(s):l.type!=="padding"||typeof s!="number"&&!Array.isArray(s)||(u=ot.parse(s)),{kind:"constant",evaluate:()=>u}}}(r===void 0?e.specification.default:r,e.specification)}isDataDriven(){return this.expression.kind==="source"||this.expression.kind==="composite"}possiblyEvaluate(e,r,s){return this.property.possiblyEvaluate(this,e,r,s)}}class Wa{constructor(e){this.property=e,this.value=new Hs(e,void 0)}transitioned(e,r){return new pl(this.property,this.value,r,Je({},e.transition,this.transition),e.now)}untransitioned(){return new pl(this.property,this.value,null,{},0)}}class ul{constructor(e){this._properties=e,this._values=Object.create(e.defaultTransitionablePropertyValues)}getValue(e){return Ji(this._values[e].value.value)}setValue(e,r){Object.prototype.hasOwnProperty.call(this._values,e)||(this._values[e]=new Wa(this._values[e].property)),this._values[e].value=new Hs(this._values[e].property,r===null?void 0:Ji(r))}getTransition(e){return Ji(this._values[e].transition)}setTransition(e,r){Object.prototype.hasOwnProperty.call(this._values,e)||(this._values[e]=new Wa(this._values[e].property)),this._values[e].transition=Ji(r)||void 0}serialize(){const e={};for(const r of Object.keys(this._values)){const s=this.getValue(r);s!==void 0&&(e[r]=s);const l=this.getTransition(r);l!==void 0&&(e[`${r}-transition`]=l)}return e}transitioned(e,r){const s=new dl(this._properties);for(const l of Object.keys(this._values))s._values[l]=this._values[l].transitioned(e,r._values[l]);return s}untransitioned(){const e=new dl(this._properties);for(const r of Object.keys(this._values))e._values[r]=this._values[r].untransitioned();return e}}class pl{constructor(e,r,s,l,u){this.property=e,this.value=r,this.begin=u+l.delay||0,this.end=this.begin+l.duration||0,e.specification.transition&&(l.delay||l.duration)&&(this.prior=s)}possiblyEvaluate(e,r,s){const l=e.now||0,u=this.value.possiblyEvaluate(e,r,s),d=this.prior;if(d){if(l>this.end)return this.prior=null,u;if(this.value.isDataDriven())return this.prior=null,u;if(l<this.begin)return d.possiblyEvaluate(e,r,s);{const f=(l-this.begin)/(this.end-this.begin);return this.property.interpolate(d.possiblyEvaluate(e,r,s),u,function(g){if(g<=0)return 0;if(g>=1)return 1;const x=g*g,w=x*g;return 4*(g<.5?w:3*(g-x)+w-.75)}(f))}}return u}}class dl{constructor(e){this._properties=e,this._values=Object.create(e.defaultTransitioningPropertyValues)}possiblyEvaluate(e,r,s){const l=new Ks(this._properties);for(const u of Object.keys(this._values))l._values[u]=this._values[u].possiblyEvaluate(e,r,s);return l}hasTransition(){for(const e of Object.keys(this._values))if(this._values[e].prior)return!0;return!1}}class uc{constructor(e){this._properties=e,this._values=Object.create(e.defaultPropertyValues)}getValue(e){return Ji(this._values[e].value)}setValue(e,r){this._values[e]=new Hs(this._values[e].property,r===null?void 0:Ji(r))}serialize(){const e={};for(const r of Object.keys(this._values)){const s=this.getValue(r);s!==void 0&&(e[r]=s)}return e}possiblyEvaluate(e,r,s){const l=new Ks(this._properties);for(const u of Object.keys(this._values))l._values[u]=this._values[u].possiblyEvaluate(e,r,s);return l}}class Ti{constructor(e,r,s){this.property=e,this.value=r,this.parameters=s}isConstant(){return this.value.kind==="constant"}constantOr(e){return this.value.kind==="constant"?this.value.value:e}evaluate(e,r,s,l){return this.property.evaluate(this.value,this.parameters,e,r,s,l)}}class Ks{constructor(e){this._properties=e,this._values=Object.create(e.defaultPossiblyEvaluatedValues)}get(e){return this._values[e]}}class Xe{constructor(e){this.specification=e}possiblyEvaluate(e,r){if(e.isDataDriven())throw new Error("Value should not be data driven");return e.expression.evaluate(r)}interpolate(e,r,s){const l=Ds[this.specification.type];return l?l(e,r,s):e}}class Ye{constructor(e,r){this.specification=e,this.overrides=r}possiblyEvaluate(e,r,s,l){return new Ti(this,e.expression.kind==="constant"||e.expression.kind==="camera"?{kind:"constant",value:e.expression.evaluate(r,null,{},s,l)}:e.expression,r)}interpolate(e,r,s){if(e.value.kind!=="constant"||r.value.kind!=="constant")return e;if(e.value.value===void 0||r.value.value===void 0)return new Ti(this,{kind:"constant",value:void 0},e.parameters);const l=Ds[this.specification.type];return l?new Ti(this,{kind:"constant",value:l(e.value.value,r.value.value,s)},e.parameters):e}evaluate(e,r,s,l,u,d){return e.kind==="constant"?e.value:e.evaluate(r,s,l,u,d)}}class us extends Ye{possiblyEvaluate(e,r,s,l){if(e.value===void 0)return new Ti(this,{kind:"constant",value:void 0},r);if(e.expression.kind==="constant"){const u=e.expression.evaluate(r,null,{},s,l),d=e.property.specification.type==="resolvedImage"&&typeof u!="string"?u.name:u,f=this._calculate(d,d,d,r);return new Ti(this,{kind:"constant",value:f},r)}if(e.expression.kind==="camera"){const u=this._calculate(e.expression.evaluate({zoom:r.zoom-1}),e.expression.evaluate({zoom:r.zoom}),e.expression.evaluate({zoom:r.zoom+1}),r);return new Ti(this,{kind:"constant",value:u},r)}return new Ti(this,e.expression,r)}evaluate(e,r,s,l,u,d){if(e.kind==="source"){const f=e.evaluate(r,s,l,u,d);return this._calculate(f,f,f,r)}return e.kind==="composite"?this._calculate(e.evaluate({zoom:Math.floor(r.zoom)-1},s,l),e.evaluate({zoom:Math.floor(r.zoom)},s,l),e.evaluate({zoom:Math.floor(r.zoom)+1},s,l),r):e.value}_calculate(e,r,s,l){return l.zoom>l.zoomHistory.lastIntegerZoom?{from:e,to:r}:{from:s,to:r}}interpolate(e){return e}}class Ha{constructor(e){this.specification=e}possiblyEvaluate(e,r,s,l){if(e.value!==void 0){if(e.expression.kind==="constant"){const u=e.expression.evaluate(r,null,{},s,l);return this._calculate(u,u,u,r)}return this._calculate(e.expression.evaluate(new Vt(Math.floor(r.zoom-1),r)),e.expression.evaluate(new Vt(Math.floor(r.zoom),r)),e.expression.evaluate(new Vt(Math.floor(r.zoom+1),r)),r)}}_calculate(e,r,s,l){return l.zoom>l.zoomHistory.lastIntegerZoom?{from:e,to:r}:{from:s,to:r}}interpolate(e){return e}}class Ka{constructor(e){this.specification=e}possiblyEvaluate(e,r,s,l){return!!e.expression.evaluate(r,null,{},s,l)}interpolate(){return!1}}class Si{constructor(e){this.properties=e,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(const r in e){const s=e[r];s.specification.overridable&&this.overridableProperties.push(r);const l=this.defaultPropertyValues[r]=new Hs(s,void 0),u=this.defaultTransitionablePropertyValues[r]=new Wa(s);this.defaultTransitioningPropertyValues[r]=u.untransitioned(),this.defaultPossiblyEvaluatedValues[r]=l.possiblyEvaluate({})}}}$e("DataDrivenProperty",Ye),$e("DataConstantProperty",Xe),$e("CrossFadedDataDrivenProperty",us),$e("CrossFadedProperty",Ha),$e("ColorRampProperty",Ka);const Cn="-transition";class cr extends Q{constructor(e,r){if(super(),this.id=e.id,this.type=e.type,this._featureFilter={filter:()=>!0,needGeometry:!1},e.type!=="custom"&&(this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,e.type!=="background"&&(this.source=e.source,this.sourceLayer=e["source-layer"],this.filter=e.filter),r.layout&&(this._unevaluatedLayout=new uc(r.layout)),r.paint)){this._transitionablePaint=new ul(r.paint);for(const s in e.paint)this.setPaintProperty(s,e.paint[s],{validate:!1});for(const s in e.layout)this.setLayoutProperty(s,e.layout[s],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Ks(r.paint)}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(e){return e==="visibility"?this.visibility:this._unevaluatedLayout.getValue(e)}setLayoutProperty(e,r,s={}){r!=null&&this._validate(Fa,`layers.${this.id}.layout.${e}`,e,r,s)||(e!=="visibility"?this._unevaluatedLayout.setValue(e,r):this.visibility=r)}getPaintProperty(e){return e.endsWith(Cn)?this._transitionablePaint.getTransition(e.slice(0,-Cn.length)):this._transitionablePaint.getValue(e)}setPaintProperty(e,r,s={}){if(r!=null&&this._validate(ol,`layers.${this.id}.paint.${e}`,e,r,s))return!1;if(e.endsWith(Cn))return this._transitionablePaint.setTransition(e.slice(0,-Cn.length),r||void 0),!1;{const l=this._transitionablePaint._values[e],u=l.property.specification["property-type"]==="cross-faded-data-driven",d=l.value.isDataDriven(),f=l.value;this._transitionablePaint.setValue(e,r),this._handleSpecialPaintPropertyUpdate(e);const g=this._transitionablePaint._values[e].value;return g.isDataDriven()||d||u||this._handleOverridablePaintPropertyUpdate(e,f,g)}}_handleSpecialPaintPropertyUpdate(e){}_handleOverridablePaintPropertyUpdate(e,r,s){return!1}isHidden(e){return!!(this.minzoom&&e<this.minzoom)||!!(this.maxzoom&&e>=this.maxzoom)||this.visibility==="none"}updateTransitions(e){this._transitioningPaint=this._transitionablePaint.transitioned(e,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(e,r){e.getCrossfadeParameters&&(this._crossfadeParameters=e.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(e,void 0,r)),this.paint=this._transitioningPaint.possiblyEvaluate(e,void 0,r)}serialize(){const e={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&&(e.layout=e.layout||{},e.layout.visibility=this.visibility),Vn(e,(r,s)=>!(r===void 0||s==="layout"&&!Object.keys(r).length||s==="paint"&&!Object.keys(r).length))}_validate(e,r,s,l,u={}){return(!u||u.validate!==!1)&&Oa(this,e.call(as,{key:r,layerType:this.type,objectKey:s,value:l,styleSpec:V,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(const e in this.paint._values){const r=this.paint.get(e);if(r instanceof Ti&&bn(r.property.specification)&&(r.value.kind==="source"||r.value.kind==="composite")&&r.value.isStateDependent)return!0}return!1}}const Ja={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class Js{constructor(e,r){this._structArray=e,this._pos1=r*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class zt{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(e,r){return e._trim(),r&&(e.isTransferred=!0,r.push(e.arrayBuffer)),{length:e.length,arrayBuffer:e.arrayBuffer}}static deserialize(e){const r=Object.create(this.prototype);return r.arrayBuffer=e.arrayBuffer,r.length=e.length,r.capacity=e.arrayBuffer.byteLength/r.bytesPerElement,r._refreshViews(),r}_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(e){this.reserve(e),this.length=e}reserve(e){if(e>this.capacity){this.capacity=Math.max(e,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const r=this.uint8;this._refreshViews(),r&&this.uint8.set(r)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function Wt(i,e=1){let r=0,s=0;return{members:i.map(l=>{const u=Ja[l.type].BYTES_PER_ELEMENT,d=r=Mn(r,Math.max(e,u)),f=l.components||1;return s=Math.max(s,u),r+=u*f,{name:l.name,type:l.type,components:f,offset:d}}),size:Mn(r,Math.max(s,e)),alignment:e}}function Mn(i,e){return Math.ceil(i/e)*e}class ps extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r){const s=this.length;return this.resize(s+1),this.emplace(s,e,r)}emplace(e,r,s){const l=2*e;return this.int16[l+0]=r,this.int16[l+1]=s,e}}ps.prototype.bytesPerElement=4,$e("StructArrayLayout2i4",ps);class ds extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,s){const l=this.length;return this.resize(l+1),this.emplace(l,e,r,s)}emplace(e,r,s,l){const u=3*e;return this.int16[u+0]=r,this.int16[u+1]=s,this.int16[u+2]=l,e}}ds.prototype.bytesPerElement=6,$e("StructArrayLayout3i6",ds);class Yr extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,s,l){const u=this.length;return this.resize(u+1),this.emplace(u,e,r,s,l)}emplace(e,r,s,l,u){const d=4*e;return this.int16[d+0]=r,this.int16[d+1]=s,this.int16[d+2]=l,this.int16[d+3]=u,e}}Yr.prototype.bytesPerElement=8,$e("StructArrayLayout4i8",Yr);class Ya extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,s,l,u,d){const f=this.length;return this.resize(f+1),this.emplace(f,e,r,s,l,u,d)}emplace(e,r,s,l,u,d,f){const g=6*e;return this.int16[g+0]=r,this.int16[g+1]=s,this.int16[g+2]=l,this.int16[g+3]=u,this.int16[g+4]=d,this.int16[g+5]=f,e}}Ya.prototype.bytesPerElement=12,$e("StructArrayLayout2i4i12",Ya);class Qa extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,s,l,u,d){const f=this.length;return this.resize(f+1),this.emplace(f,e,r,s,l,u,d)}emplace(e,r,s,l,u,d,f){const g=4*e,x=8*e;return this.int16[g+0]=r,this.int16[g+1]=s,this.uint8[x+4]=l,this.uint8[x+5]=u,this.uint8[x+6]=d,this.uint8[x+7]=f,e}}Qa.prototype.bytesPerElement=8,$e("StructArrayLayout2i4ub8",Qa);class Pn extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,r){const s=this.length;return this.resize(s+1),this.emplace(s,e,r)}emplace(e,r,s){const l=2*e;return this.float32[l+0]=r,this.float32[l+1]=s,e}}Pn.prototype.bytesPerElement=8,$e("StructArrayLayout2f8",Pn);class eo extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,r,s,l,u,d,f,g,x,w){const T=this.length;return this.resize(T+1),this.emplace(T,e,r,s,l,u,d,f,g,x,w)}emplace(e,r,s,l,u,d,f,g,x,w,T){const A=10*e;return this.uint16[A+0]=r,this.uint16[A+1]=s,this.uint16[A+2]=l,this.uint16[A+3]=u,this.uint16[A+4]=d,this.uint16[A+5]=f,this.uint16[A+6]=g,this.uint16[A+7]=x,this.uint16[A+8]=w,this.uint16[A+9]=T,e}}eo.prototype.bytesPerElement=20,$e("StructArrayLayout10ui20",eo);class ms extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,r,s,l,u,d,f,g,x,w,T,A){const I=this.length;return this.resize(I+1),this.emplace(I,e,r,s,l,u,d,f,g,x,w,T,A)}emplace(e,r,s,l,u,d,f,g,x,w,T,A,I){const P=12*e;return this.int16[P+0]=r,this.int16[P+1]=s,this.int16[P+2]=l,this.int16[P+3]=u,this.uint16[P+4]=d,this.uint16[P+5]=f,this.uint16[P+6]=g,this.uint16[P+7]=x,this.int16[P+8]=w,this.int16[P+9]=T,this.int16[P+10]=A,this.int16[P+11]=I,e}}ms.prototype.bytesPerElement=24,$e("StructArrayLayout4i4ui4i24",ms);class o extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,r,s){const l=this.length;return this.resize(l+1),this.emplace(l,e,r,s)}emplace(e,r,s,l){const u=3*e;return this.float32[u+0]=r,this.float32[u+1]=s,this.float32[u+2]=l,e}}o.prototype.bytesPerElement=12,$e("StructArrayLayout3f12",o);class t extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e){const r=this.length;return this.resize(r+1),this.emplace(r,e)}emplace(e,r){return this.uint32[1*e+0]=r,e}}t.prototype.bytesPerElement=4,$e("StructArrayLayout1ul4",t);class n extends zt{_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(e,r,s,l,u,d,f,g,x){const w=this.length;return this.resize(w+1),this.emplace(w,e,r,s,l,u,d,f,g,x)}emplace(e,r,s,l,u,d,f,g,x,w){const T=10*e,A=5*e;return this.int16[T+0]=r,this.int16[T+1]=s,this.int16[T+2]=l,this.int16[T+3]=u,this.int16[T+4]=d,this.int16[T+5]=f,this.uint32[A+3]=g,this.uint16[T+8]=x,this.uint16[T+9]=w,e}}n.prototype.bytesPerElement=20,$e("StructArrayLayout6i1ul2ui20",n);class a extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,s,l,u,d){const f=this.length;return this.resize(f+1),this.emplace(f,e,r,s,l,u,d)}emplace(e,r,s,l,u,d,f){const g=6*e;return this.int16[g+0]=r,this.int16[g+1]=s,this.int16[g+2]=l,this.int16[g+3]=u,this.int16[g+4]=d,this.int16[g+5]=f,e}}a.prototype.bytesPerElement=12,$e("StructArrayLayout2i2i2i12",a);class h extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,s,l,u){const d=this.length;return this.resize(d+1),this.emplace(d,e,r,s,l,u)}emplace(e,r,s,l,u,d){const f=4*e,g=8*e;return this.float32[f+0]=r,this.float32[f+1]=s,this.float32[f+2]=l,this.int16[g+6]=u,this.int16[g+7]=d,e}}h.prototype.bytesPerElement=16,$e("StructArrayLayout2f1f2i16",h);class p extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,r,s,l){const u=this.length;return this.resize(u+1),this.emplace(u,e,r,s,l)}emplace(e,r,s,l,u){const d=12*e,f=3*e;return this.uint8[d+0]=r,this.uint8[d+1]=s,this.float32[f+1]=l,this.float32[f+2]=u,e}}p.prototype.bytesPerElement=12,$e("StructArrayLayout2ub2f12",p);class m extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,r,s){const l=this.length;return this.resize(l+1),this.emplace(l,e,r,s)}emplace(e,r,s,l){const u=3*e;return this.uint16[u+0]=r,this.uint16[u+1]=s,this.uint16[u+2]=l,e}}m.prototype.bytesPerElement=6,$e("StructArrayLayout3ui6",m);class _ extends zt{_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(e,r,s,l,u,d,f,g,x,w,T,A,I,P,F,O,G){const Y=this.length;return this.resize(Y+1),this.emplace(Y,e,r,s,l,u,d,f,g,x,w,T,A,I,P,F,O,G)}emplace(e,r,s,l,u,d,f,g,x,w,T,A,I,P,F,O,G,Y){const $=24*e,J=12*e,pe=48*e;return this.int16[$+0]=r,this.int16[$+1]=s,this.uint16[$+2]=l,this.uint16[$+3]=u,this.uint32[J+2]=d,this.uint32[J+3]=f,this.uint32[J+4]=g,this.uint16[$+10]=x,this.uint16[$+11]=w,this.uint16[$+12]=T,this.float32[J+7]=A,this.float32[J+8]=I,this.uint8[pe+36]=P,this.uint8[pe+37]=F,this.uint8[pe+38]=O,this.uint32[J+10]=G,this.int16[$+22]=Y,e}}_.prototype.bytesPerElement=48,$e("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",_);class y extends zt{_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(e,r,s,l,u,d,f,g,x,w,T,A,I,P,F,O,G,Y,$,J,pe,ue,Ne,qe,Ue,Re,ze,Ve){const Be=this.length;return this.resize(Be+1),this.emplace(Be,e,r,s,l,u,d,f,g,x,w,T,A,I,P,F,O,G,Y,$,J,pe,ue,Ne,qe,Ue,Re,ze,Ve)}emplace(e,r,s,l,u,d,f,g,x,w,T,A,I,P,F,O,G,Y,$,J,pe,ue,Ne,qe,Ue,Re,ze,Ve,Be){const Se=34*e,He=17*e;return this.int16[Se+0]=r,this.int16[Se+1]=s,this.int16[Se+2]=l,this.int16[Se+3]=u,this.int16[Se+4]=d,this.int16[Se+5]=f,this.int16[Se+6]=g,this.int16[Se+7]=x,this.uint16[Se+8]=w,this.uint16[Se+9]=T,this.uint16[Se+10]=A,this.uint16[Se+11]=I,this.uint16[Se+12]=P,this.uint16[Se+13]=F,this.uint16[Se+14]=O,this.uint16[Se+15]=G,this.uint16[Se+16]=Y,this.uint16[Se+17]=$,this.uint16[Se+18]=J,this.uint16[Se+19]=pe,this.uint16[Se+20]=ue,this.uint16[Se+21]=Ne,this.uint16[Se+22]=qe,this.uint32[He+12]=Ue,this.float32[He+13]=Re,this.float32[He+14]=ze,this.float32[He+15]=Ve,this.float32[He+16]=Be,e}}y.prototype.bytesPerElement=68,$e("StructArrayLayout8i15ui1ul4f68",y);class v extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e){const r=this.length;return this.resize(r+1),this.emplace(r,e)}emplace(e,r){return this.float32[1*e+0]=r,e}}v.prototype.bytesPerElement=4,$e("StructArrayLayout1f4",v);class S extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,r,s){const l=this.length;return this.resize(l+1),this.emplace(l,e,r,s)}emplace(e,r,s,l){const u=4*e;return this.uint32[2*e+0]=r,this.uint16[u+2]=s,this.uint16[u+3]=l,e}}S.prototype.bytesPerElement=8,$e("StructArrayLayout1ul2ui8",S);class E extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,r){const s=this.length;return this.resize(s+1),this.emplace(s,e,r)}emplace(e,r,s){const l=2*e;return this.uint16[l+0]=r,this.uint16[l+1]=s,e}}E.prototype.bytesPerElement=4,$e("StructArrayLayout2ui4",E);class C extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e){const r=this.length;return this.resize(r+1),this.emplace(r,e)}emplace(e,r){return this.uint16[1*e+0]=r,e}}C.prototype.bytesPerElement=2,$e("StructArrayLayout1ui2",C);class D extends zt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,r,s,l){const u=this.length;return this.resize(u+1),this.emplace(u,e,r,s,l)}emplace(e,r,s,l,u){const d=4*e;return this.float32[d+0]=r,this.float32[d+1]=s,this.float32[d+2]=l,this.float32[d+3]=u,e}}D.prototype.bytesPerElement=16,$e("StructArrayLayout4f16",D);class B extends Js{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 it(this.anchorPointX,this.anchorPointY)}}B.prototype.size=20;class L extends n{get(e){return new B(this,e)}}$e("CollisionBoxArray",L);class N extends Js{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(e){this._structArray.uint8[this._pos1+37]=e}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(e){this._structArray.uint8[this._pos1+38]=e}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(e){this._structArray.uint32[this._pos4+10]=e}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}N.prototype.size=48;class X extends _{get(e){return new N(this,e)}}$e("PlacedSymbolArray",X);class q extends Js{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(e){this._structArray.uint32[this._pos4+12]=e}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get textOffset0(){return this._structArray.float32[this._pos4+14]}get textOffset1(){return this._structArray.float32[this._pos4+15]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+16]}}q.prototype.size=68;class U extends y{get(e){return new q(this,e)}}$e("SymbolInstanceArray",U);class W extends v{getoffsetX(e){return this.float32[1*e+0]}}$e("GlyphOffsetArray",W);class te extends ds{getx(e){return this.int16[3*e+0]}gety(e){return this.int16[3*e+1]}gettileUnitDistanceFromAnchor(e){return this.int16[3*e+2]}}$e("SymbolLineVertexArray",te);class ae extends Js{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]}}ae.prototype.size=8;class he extends S{get(e){return new ae(this,e)}}$e("FeatureIndexArray",he);class de extends ps{}class we extends ps{}class ye extends ps{}class Ae extends Ya{}class Ge extends Qa{}class rt extends Pn{}class nt extends eo{}class We extends ms{}class Mt extends o{}class Tt extends t{}class mt extends a{}class yt extends p{}class bt extends m{}class Ei extends E{}const yr=Wt([{name:"a_pos",components:2,type:"Int16"}],4),{members:hr}=yr;class Nt{constructor(e=[]){this.segments=e}prepareSegment(e,r,s,l){let u=this.segments[this.segments.length-1];return e>Nt.MAX_VERTEX_ARRAY_LENGTH&&Yt(`Max vertices per segment is ${Nt.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${e}`),(!u||u.vertexLength+e>Nt.MAX_VERTEX_ARRAY_LENGTH||u.sortKey!==l)&&(u={vertexOffset:r.length,primitiveOffset:s.length,vertexLength:0,primitiveLength:0},l!==void 0&&(u.sortKey=l),this.segments.push(u)),u}get(){return this.segments}destroy(){for(const e of this.segments)for(const r in e.vaos)e.vaos[r].destroy()}static simpleSegment(e,r,s,l){return new Nt([{vertexOffset:e,primitiveOffset:r,vertexLength:s,primitiveLength:l,vaos:{},sortKey:0}])}}function $r(i,e){return 256*(i=Me(Math.floor(i),0,255))+Me(Math.floor(e),0,255)}Nt.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,$e("SegmentVector",Nt);const Ii=Wt([{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 Ai={},Qr={get exports(){return Ai},set exports(i){Ai=i}},kn={};({get exports(){return kn},set exports(i){kn=i}}).exports=function(i,e){var r,s,l,u,d,f,g,x;for(s=i.length-(r=3&i.length),l=e,d=3432918353,f=461845907,x=0;x<s;)g=255&i.charCodeAt(x)|(255&i.charCodeAt(++x))<<8|(255&i.charCodeAt(++x))<<16|(255&i.charCodeAt(++x))<<24,++x,l=27492+(65535&(u=5*(65535&(l=(l^=g=(65535&(g=(g=(65535&g)*d+(((g>>>16)*d&65535)<<16)&4294967295)<<15|g>>>17))*f+(((g>>>16)*f&65535)<<16)&4294967295)<<13|l>>>19))+((5*(l>>>16)&65535)<<16)&4294967295))+((58964+(u>>>16)&65535)<<16);switch(g=0,r){case 3:g^=(255&i.charCodeAt(x+2))<<16;case 2:g^=(255&i.charCodeAt(x+1))<<8;case 1:l^=g=(65535&(g=(g=(65535&(g^=255&i.charCodeAt(x)))*d+(((g>>>16)*d&65535)<<16)&4294967295)<<15|g>>>17))*f+(((g>>>16)*f&65535)<<16)&4294967295}return l^=i.length,l=2246822507*(65535&(l^=l>>>16))+((2246822507*(l>>>16)&65535)<<16)&4294967295,l=3266489909*(65535&(l^=l>>>13))+((3266489909*(l>>>16)&65535)<<16)&4294967295,(l^=l>>>16)>>>0};var Qt={};({get exports(){return Qt},set exports(i){Qt=i}}).exports=function(i,e){for(var r,s=i.length,l=e^s,u=0;s>=4;)r=1540483477*(65535&(r=255&i.charCodeAt(u)|(255&i.charCodeAt(++u))<<8|(255&i.charCodeAt(++u))<<16|(255&i.charCodeAt(++u))<<24))+((1540483477*(r>>>16)&65535)<<16),l=1540483477*(65535&l)+((1540483477*(l>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),s-=4,++u;switch(s){case 3:l^=(255&i.charCodeAt(u+2))<<16;case 2:l^=(255&i.charCodeAt(u+1))<<8;case 1:l=1540483477*(65535&(l^=255&i.charCodeAt(u)))+((1540483477*(l>>>16)&65535)<<16)}return l=1540483477*(65535&(l^=l>>>13))+((1540483477*(l>>>16)&65535)<<16),(l^=l>>>15)>>>0};var $t=kn,Et=Qt;Qr.exports=$t,Ai.murmur3=$t,Ai.murmur2=Et;class ci{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(e,r,s,l){this.ids.push(Li(e)),this.positions.push(r,s,l)}getPositions(e){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");const r=Li(e);let s=0,l=this.ids.length-1;for(;s<l;){const d=s+l>>1;this.ids[d]>=r?l=d:s=d+1}const u=[];for(;this.ids[s]===r;)u.push({index:this.positions[3*s],start:this.positions[3*s+1],end:this.positions[3*s+2]}),s++;return u}static serialize(e,r){const s=new Float64Array(e.ids),l=new Uint32Array(e.positions);return jt(s,l,0,s.length-1),r&&r.push(s.buffer,l.buffer),{ids:s,positions:l}}static deserialize(e){const r=new ci;return r.ids=e.ids,r.positions=e.positions,r.indexed=!0,r}}function Li(i){const e=+i;return!isNaN(e)&&e<=Number.MAX_SAFE_INTEGER?e:Ai(String(i))}function jt(i,e,r,s){for(;r<s;){const l=i[r+s>>1];let u=r-1,d=s+1;for(;;){do u++;while(i[u]<l);do d--;while(i[d]>l);if(u>=d)break;tr(i,u,d),tr(e,3*u,3*d),tr(e,3*u+1,3*d+1),tr(e,3*u+2,3*d+2)}d-r<s-d?(jt(i,e,r,d),r=d+1):(jt(i,e,d+1,s),s=d)}}function tr(i,e,r){const s=i[e];i[e]=i[r],i[r]=s}$e("FeaturePositionMap",ci);class ir{constructor(e,r){this.gl=e.gl,this.location=r}}class zn extends ir{constructor(e,r){super(e,r),this.current=0}set(e){this.current!==e&&(this.current=e,this.gl.uniform1f(this.location,e))}}class Ys extends ir{constructor(e,r){super(e,r),this.current=[0,0,0,0]}set(e){e[0]===this.current[0]&&e[1]===this.current[1]&&e[2]===this.current[2]&&e[3]===this.current[3]||(this.current=e,this.gl.uniform4f(this.location,e[0],e[1],e[2],e[3]))}}class ml extends ir{constructor(e,r){super(e,r),this.current=le.transparent}set(e){e.r===this.current.r&&e.g===this.current.g&&e.b===this.current.b&&e.a===this.current.a||(this.current=e,this.gl.uniform4f(this.location,e.r,e.g,e.b,e.a))}}const pc=new Float32Array(16);function en(i){return[$r(255*i.r,255*i.g),$r(255*i.b,255*i.a)]}class fs{constructor(e,r,s){this.value=e,this.uniformNames=r.map(l=>`u_${l}`),this.type=s}setUniform(e,r,s){e.set(s.constantOr(this.value))}getBinding(e,r,s){return this.type==="color"?new ml(e,r):new zn(e,r)}}class Ir{constructor(e,r){this.uniformNames=r.map(s=>`u_${s}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(e,r){this.pixelRatioFrom=r.pixelRatio,this.pixelRatioTo=e.pixelRatio,this.patternFrom=r.tlbr,this.patternTo=e.tlbr}setUniform(e,r,s,l){const u=l==="u_pattern_to"?this.patternTo:l==="u_pattern_from"?this.patternFrom:l==="u_pixel_ratio_to"?this.pixelRatioTo:l==="u_pixel_ratio_from"?this.pixelRatioFrom:null;u&&e.set(u)}getBinding(e,r,s){return s.substr(0,9)==="u_pattern"?new Ys(e,r):new zn(e,r)}}class ur{constructor(e,r,s,l){this.expression=e,this.type=s,this.maxValue=0,this.paintVertexAttributes=r.map(u=>({name:`a_${u}`,type:"Float32",components:s==="color"?2:1,offset:0})),this.paintVertexArray=new l}populatePaintArray(e,r,s,l,u){const d=this.paintVertexArray.length,f=this.expression.evaluate(new Vt(0),r,{},l,[],u);this.paintVertexArray.resize(e),this._setPaintValue(d,e,f)}updatePaintArray(e,r,s,l){const u=this.expression.evaluate({zoom:0},s,l);this._setPaintValue(e,r,u)}_setPaintValue(e,r,s){if(this.type==="color"){const l=en(s);for(let u=e;u<r;u++)this.paintVertexArray.emplace(u,l[0],l[1])}else{for(let l=e;l<r;l++)this.paintVertexArray.emplace(l,s);this.maxValue=Math.max(this.maxValue,Math.abs(s))}}upload(e){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=e.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent))}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()}}class Ar{constructor(e,r,s,l,u,d){this.expression=e,this.uniformNames=r.map(f=>`u_${f}_t`),this.type=s,this.useIntegerZoom=l,this.zoom=u,this.maxValue=0,this.paintVertexAttributes=r.map(f=>({name:`a_${f}`,type:"Float32",components:s==="color"?4:2,offset:0})),this.paintVertexArray=new d}populatePaintArray(e,r,s,l,u){const d=this.expression.evaluate(new Vt(this.zoom),r,{},l,[],u),f=this.expression.evaluate(new Vt(this.zoom+1),r,{},l,[],u),g=this.paintVertexArray.length;this.paintVertexArray.resize(e),this._setPaintValue(g,e,d,f)}updatePaintArray(e,r,s,l){const u=this.expression.evaluate({zoom:this.zoom},s,l),d=this.expression.evaluate({zoom:this.zoom+1},s,l);this._setPaintValue(e,r,u,d)}_setPaintValue(e,r,s,l){if(this.type==="color"){const u=en(s),d=en(l);for(let f=e;f<r;f++)this.paintVertexArray.emplace(f,u[0],u[1],d[0],d[1])}else{for(let u=e;u<r;u++)this.paintVertexArray.emplace(u,s,l);this.maxValue=Math.max(this.maxValue,Math.abs(s),Math.abs(l))}}upload(e){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&this.paintVertexBuffer.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=e.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent))}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()}setUniform(e,r){const s=this.useIntegerZoom?Math.floor(r.zoom):r.zoom,l=Me(this.expression.interpolationFactor(s,this.zoom,this.zoom+1),0,1);e.set(l)}getBinding(e,r,s){return new zn(e,r)}}class Ln{constructor(e,r,s,l,u,d){this.expression=e,this.type=r,this.useIntegerZoom=s,this.zoom=l,this.layerId=d,this.zoomInPaintVertexArray=new u,this.zoomOutPaintVertexArray=new u}populatePaintArray(e,r,s){const l=this.zoomInPaintVertexArray.length;this.zoomInPaintVertexArray.resize(e),this.zoomOutPaintVertexArray.resize(e),this._setPaintValues(l,e,r.patterns&&r.patterns[this.layerId],s)}updatePaintArray(e,r,s,l,u){this._setPaintValues(e,r,s.patterns&&s.patterns[this.layerId],u)}_setPaintValues(e,r,s,l){if(!l||!s)return;const{min:u,mid:d,max:f}=s,g=l[u],x=l[d],w=l[f];if(g&&x&&w)for(let T=e;T<r;T++)this.zoomInPaintVertexArray.emplace(T,x.tl[0],x.tl[1],x.br[0],x.br[1],g.tl[0],g.tl[1],g.br[0],g.br[1],x.pixelRatio,g.pixelRatio),this.zoomOutPaintVertexArray.emplace(T,x.tl[0],x.tl[1],x.br[0],x.br[1],w.tl[0],w.tl[1],w.br[0],w.br[1],x.pixelRatio,w.pixelRatio)}upload(e){this.zoomInPaintVertexArray&&this.zoomInPaintVertexArray.arrayBuffer&&this.zoomOutPaintVertexArray&&this.zoomOutPaintVertexArray.arrayBuffer&&(this.zoomInPaintVertexBuffer=e.createVertexBuffer(this.zoomInPaintVertexArray,Ii.members,this.expression.isStateDependent),this.zoomOutPaintVertexBuffer=e.createVertexBuffer(this.zoomOutPaintVertexArray,Ii.members,this.expression.isStateDependent))}destroy(){this.zoomOutPaintVertexBuffer&&this.zoomOutPaintVertexBuffer.destroy(),this.zoomInPaintVertexBuffer&&this.zoomInPaintVertexBuffer.destroy()}}class Zh{constructor(e,r,s){this.binders={},this._buffers=[];const l=[];for(const u in e.paint._values){if(!s(u))continue;const d=e.paint.get(u);if(!(d instanceof Ti&&bn(d.property.specification)))continue;const f=om(u,e.type),g=d.value,x=d.property.specification.type,w=d.property.useIntegerZoom,T=d.property.specification["property-type"],A=T==="cross-faded"||T==="cross-faded-data-driven";if(g.kind==="constant")this.binders[u]=A?new Ir(g.value,f):new fs(g.value,f,x),l.push(`/u_${u}`);else if(g.kind==="source"||A){const I=Xh(u,x,"source");this.binders[u]=A?new Ln(g,x,w,r,I,e.id):new ur(g,f,x,I),l.push(`/a_${u}`)}else{const I=Xh(u,x,"composite");this.binders[u]=new Ar(g,f,x,w,r,I),l.push(`/z_${u}`)}}this.cacheKey=l.sort().join("")}getMaxValue(e){const r=this.binders[e];return r instanceof ur||r instanceof Ar?r.maxValue:0}populatePaintArrays(e,r,s,l,u){for(const d in this.binders){const f=this.binders[d];(f instanceof ur||f instanceof Ar||f instanceof Ln)&&f.populatePaintArray(e,r,s,l,u)}}setConstantPatternPositions(e,r){for(const s in this.binders){const l=this.binders[s];l instanceof Ir&&l.setConstantPatternPositions(e,r)}}updatePaintArrays(e,r,s,l,u){let d=!1;for(const f in e){const g=r.getPositions(f);for(const x of g){const w=s.feature(x.index);for(const T in this.binders){const A=this.binders[T];if((A instanceof ur||A instanceof Ar||A instanceof Ln)&&A.expression.isStateDependent===!0){const I=l.paint.get(T);A.expression=I.value,A.updatePaintArray(x.start,x.end,w,e[f],u),d=!0}}}}return d}defines(){const e=[];for(const r in this.binders){const s=this.binders[r];(s instanceof fs||s instanceof Ir)&&e.push(...s.uniformNames.map(l=>`#define HAS_UNIFORM_${l}`))}return e}getBinderAttributes(){const e=[];for(const r in this.binders){const s=this.binders[r];if(s instanceof ur||s instanceof Ar)for(let l=0;l<s.paintVertexAttributes.length;l++)e.push(s.paintVertexAttributes[l].name);else if(s instanceof Ln)for(let l=0;l<Ii.members.length;l++)e.push(Ii.members[l].name)}return e}getBinderUniforms(){const e=[];for(const r in this.binders){const s=this.binders[r];if(s instanceof fs||s instanceof Ir||s instanceof Ar)for(const l of s.uniformNames)e.push(l)}return e}getPaintVertexBuffers(){return this._buffers}getUniforms(e,r){const s=[];for(const l in this.binders){const u=this.binders[l];if(u instanceof fs||u instanceof Ir||u instanceof Ar){for(const d of u.uniformNames)if(r[d]){const f=u.getBinding(e,r[d],d);s.push({name:d,property:l,binding:f})}}}return s}setUniforms(e,r,s,l){for(const{name:u,property:d,binding:f}of r)this.binders[d].setUniform(f,l,s.get(d),u)}updatePaintBuffers(e){this._buffers=[];for(const r in this.binders){const s=this.binders[r];if(e&&s instanceof Ln){const l=e.fromScale===2?s.zoomInPaintVertexBuffer:s.zoomOutPaintVertexBuffer;l&&this._buffers.push(l)}else(s instanceof ur||s instanceof Ar)&&s.paintVertexBuffer&&this._buffers.push(s.paintVertexBuffer)}}upload(e){for(const r in this.binders){const s=this.binders[r];(s instanceof ur||s instanceof Ar||s instanceof Ln)&&s.upload(e)}this.updatePaintBuffers()}destroy(){for(const e in this.binders){const r=this.binders[e];(r instanceof ur||r instanceof Ar||r instanceof Ln)&&r.destroy()}}}class gs{constructor(e,r,s=()=>!0){this.programConfigurations={};for(const l of e)this.programConfigurations[l.id]=new Zh(l,r,s);this.needsUpload=!1,this._featureMap=new ci,this._bufferOffset=0}populatePaintArrays(e,r,s,l,u,d){for(const f in this.programConfigurations)this.programConfigurations[f].populatePaintArrays(e,r,l,u,d);r.id!==void 0&&this._featureMap.add(r.id,s,this._bufferOffset,e),this._bufferOffset=e,this.needsUpload=!0}updatePaintArrays(e,r,s,l){for(const u of s)this.needsUpload=this.programConfigurations[u.id].updatePaintArrays(e,this._featureMap,r,u,l)||this.needsUpload}get(e){return this.programConfigurations[e]}upload(e){if(this.needsUpload){for(const r in this.programConfigurations)this.programConfigurations[r].upload(e);this.needsUpload=!1}}destroy(){for(const e in this.programConfigurations)this.programConfigurations[e].destroy()}}function om(i,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"]}[i]||[i.replace(`${e}-`,"").replace(/-/g,"_")]}function Xh(i,e,r){const s={color:{source:Pn,composite:D},number:{source:v,composite:Pn}},l=function(u){return{"line-pattern":{source:nt,composite:nt},"fill-pattern":{source:nt,composite:nt},"fill-extrusion-pattern":{source:nt,composite:nt}}[u]}(i);return l&&l[r]||s[e][r]}$e("ConstantBinder",fs),$e("CrossFadedConstantBinder",Ir),$e("SourceExpressionBinder",ur),$e("CrossFadedCompositeBinder",Ln),$e("CompositeExpressionBinder",Ar),$e("ProgramConfiguration",Zh,{omit:["_buffers"]}),$e("ProgramConfigurationSet",gs);var ai=8192;const dc=Math.pow(2,14)-1,Wh=-dc-1;function _s(i){const e=ai/i.extent,r=i.loadGeometry();for(let s=0;s<r.length;s++){const l=r[s];for(let u=0;u<l.length;u++){const d=l[u],f=Math.round(d.x*e),g=Math.round(d.y*e);d.x=Me(f,Wh,dc),d.y=Me(g,Wh,dc),(f<d.x||f>d.x+1||g<d.y||g>d.y+1)&&Yt("Geometry exceeds allowed extent, reduce your vector tile buffer size")}}return r}function ys(i,e){return{type:i.type,id:i.id,properties:i.properties,geometry:e?_s(i):[]}}function fl(i,e,r,s,l){i.emplaceBack(2*e+(s+1)/2,2*r+(l+1)/2)}class mc{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(r=>r.id),this.index=e.index,this.hasPattern=!1,this.layoutVertexArray=new we,this.indexArray=new bt,this.segments=new Nt,this.programConfigurations=new gs(e.layers,e.zoom),this.stateDependentLayerIds=this.layers.filter(r=>r.isStateDependent()).map(r=>r.id)}populate(e,r,s){const l=this.layers[0],u=[];let d=null,f=!1;l.type==="circle"&&(d=l.layout.get("circle-sort-key"),f=!d.isConstant());for(const{feature:g,id:x,index:w,sourceLayerIndex:T}of e){const A=this.layers[0]._featureFilter.needGeometry,I=ys(g,A);if(!this.layers[0]._featureFilter.filter(new Vt(this.zoom),I,s))continue;const P=f?d.evaluate(I,{},s):void 0,F={id:x,properties:g.properties,type:g.type,sourceLayerIndex:T,index:w,geometry:A?I.geometry:_s(g),patterns:{},sortKey:P};u.push(F)}f&&u.sort((g,x)=>g.sortKey-x.sortKey);for(const g of u){const{geometry:x,index:w,sourceLayerIndex:T}=g,A=e[w].feature;this.addFeature(g,x,w,s),r.featureIndex.insert(A,x,w,T,this.index)}}update(e,r,s){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,r,this.stateDependentLayers,s)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,hr),this.indexBuffer=e.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(e,r,s,l){for(const u of r)for(const d of u){const f=d.x,g=d.y;if(f<0||f>=ai||g<0||g>=ai)continue;const x=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,e.sortKey),w=x.vertexLength;fl(this.layoutVertexArray,f,g,-1,-1),fl(this.layoutVertexArray,f,g,1,-1),fl(this.layoutVertexArray,f,g,1,1),fl(this.layoutVertexArray,f,g,-1,1),this.indexArray.emplaceBack(w,w+1,w+2),this.indexArray.emplaceBack(w,w+3,w+2),x.vertexLength+=4,x.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,s,{},l)}}function Hh(i,e){for(let r=0;r<i.length;r++)if(Qs(e,i[r]))return!0;for(let r=0;r<e.length;r++)if(Qs(i,e[r]))return!0;return!!fc(i,e)}function lm(i,e,r){return!!Qs(i,e)||!!gc(e,i,r)}function Kh(i,e){if(i.length===1)return Yh(e,i[0]);for(let r=0;r<e.length;r++){const s=e[r];for(let l=0;l<s.length;l++)if(Qs(i,s[l]))return!0}for(let r=0;r<i.length;r++)if(Yh(e,i[r]))return!0;for(let r=0;r<e.length;r++)if(fc(i,e[r]))return!0;return!1}function cm(i,e,r){if(i.length>1){if(fc(i,e))return!0;for(let s=0;s<e.length;s++)if(gc(e[s],i,r))return!0}for(let s=0;s<i.length;s++)if(gc(i[s],e,r))return!0;return!1}function fc(i,e){if(i.length===0||e.length===0)return!1;for(let r=0;r<i.length-1;r++){const s=i[r],l=i[r+1];for(let u=0;u<e.length-1;u++)if(hm(s,l,e[u],e[u+1]))return!0}return!1}function hm(i,e,r,s){return nr(i,r,s)!==nr(e,r,s)&&nr(i,e,r)!==nr(i,e,s)}function gc(i,e,r){const s=r*r;if(e.length===1)return i.distSqr(e[0])<s;for(let l=1;l<e.length;l++)if(Jh(i,e[l-1],e[l])<s)return!0;return!1}function Jh(i,e,r){const s=e.distSqr(r);if(s===0)return i.distSqr(e);const l=((i.x-e.x)*(r.x-e.x)+(i.y-e.y)*(r.y-e.y))/s;return i.distSqr(l<0?e:l>1?r:r.sub(e)._mult(l)._add(e))}function Yh(i,e){let r,s,l,u=!1;for(let d=0;d<i.length;d++){r=i[d];for(let f=0,g=r.length-1;f<r.length;g=f++)s=r[f],l=r[g],s.y>e.y!=l.y>e.y&&e.x<(l.x-s.x)*(e.y-s.y)/(l.y-s.y)+s.x&&(u=!u)}return u}function Qs(i,e){let r=!1;for(let s=0,l=i.length-1;s<i.length;l=s++){const u=i[s],d=i[l];u.y>e.y!=d.y>e.y&&e.x<(d.x-u.x)*(e.y-u.y)/(d.y-u.y)+u.x&&(r=!r)}return r}function um(i,e,r){const s=r[0],l=r[2];if(i.x<s.x&&e.x<s.x||i.x>l.x&&e.x>l.x||i.y<s.y&&e.y<s.y||i.y>l.y&&e.y>l.y)return!1;const u=nr(i,e,r[0]);return u!==nr(i,e,r[1])||u!==nr(i,e,r[2])||u!==nr(i,e,r[3])}function to(i,e,r){const s=e.paint.get(i).value;return s.kind==="constant"?s.value:r.programConfigurations.get(e.id).getMaxValue(i)}function gl(i){return Math.sqrt(i[0]*i[0]+i[1]*i[1])}function _l(i,e,r,s,l){if(!e[0]&&!e[1])return i;const u=it.convert(e)._mult(l);r==="viewport"&&u._rotate(-s);const d=[];for(let f=0;f<i.length;f++)d.push(i[f].sub(u));return d}$e("CircleBucket",mc,{omit:["layers"]});const pm=new Si({"circle-sort-key":new Ye(V.layout_circle["circle-sort-key"])});var dm={paint:new Si({"circle-radius":new Ye(V.paint_circle["circle-radius"]),"circle-color":new Ye(V.paint_circle["circle-color"]),"circle-blur":new Ye(V.paint_circle["circle-blur"]),"circle-opacity":new Ye(V.paint_circle["circle-opacity"]),"circle-translate":new Xe(V.paint_circle["circle-translate"]),"circle-translate-anchor":new Xe(V.paint_circle["circle-translate-anchor"]),"circle-pitch-scale":new Xe(V.paint_circle["circle-pitch-scale"]),"circle-pitch-alignment":new Xe(V.paint_circle["circle-pitch-alignment"]),"circle-stroke-width":new Ye(V.paint_circle["circle-stroke-width"]),"circle-stroke-color":new Ye(V.paint_circle["circle-stroke-color"]),"circle-stroke-opacity":new Ye(V.paint_circle["circle-stroke-opacity"])}),layout:pm},Di=1e-6,Ri=typeof Float32Array<"u"?Float32Array:Array;function Qh(){var i=new Ri(9);return Ri!=Float32Array&&(i[1]=0,i[2]=0,i[3]=0,i[5]=0,i[6]=0,i[7]=0),i[0]=1,i[4]=1,i[8]=1,i}function _c(i){return i[0]=1,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=1,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=1,i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,i}function eu(i,e,r){var s=e[0],l=e[1],u=e[2],d=e[3],f=e[4],g=e[5],x=e[6],w=e[7],T=e[8],A=e[9],I=e[10],P=e[11],F=e[12],O=e[13],G=e[14],Y=e[15],$=r[0],J=r[1],pe=r[2],ue=r[3];return i[0]=$*s+J*f+pe*T+ue*F,i[1]=$*l+J*g+pe*A+ue*O,i[2]=$*u+J*x+pe*I+ue*G,i[3]=$*d+J*w+pe*P+ue*Y,i[4]=($=r[4])*s+(J=r[5])*f+(pe=r[6])*T+(ue=r[7])*F,i[5]=$*l+J*g+pe*A+ue*O,i[6]=$*u+J*x+pe*I+ue*G,i[7]=$*d+J*w+pe*P+ue*Y,i[8]=($=r[8])*s+(J=r[9])*f+(pe=r[10])*T+(ue=r[11])*F,i[9]=$*l+J*g+pe*A+ue*O,i[10]=$*u+J*x+pe*I+ue*G,i[11]=$*d+J*w+pe*P+ue*Y,i[12]=($=r[12])*s+(J=r[13])*f+(pe=r[14])*T+(ue=r[15])*F,i[13]=$*l+J*g+pe*A+ue*O,i[14]=$*u+J*x+pe*I+ue*G,i[15]=$*d+J*w+pe*P+ue*Y,i}Math.hypot||(Math.hypot=function(){for(var i=0,e=arguments.length;e--;)i+=arguments[e]*arguments[e];return Math.sqrt(i)});var io,mm=eu;function tu(){var i=new Ri(3);return Ri!=Float32Array&&(i[0]=0,i[1]=0,i[2]=0),i}function iu(i,e,r){var s=new Ri(3);return s[0]=i,s[1]=e,s[2]=r,s}function yl(i,e,r){var s=e[0],l=e[1],u=e[2],d=e[3];return i[0]=r[0]*s+r[4]*l+r[8]*u+r[12]*d,i[1]=r[1]*s+r[5]*l+r[9]*u+r[13]*d,i[2]=r[2]*s+r[6]*l+r[10]*u+r[14]*d,i[3]=r[3]*s+r[7]*l+r[11]*u+r[15]*d,i}function ru(){var i=new Ri(4);return Ri!=Float32Array&&(i[0]=0,i[1]=0,i[2]=0),i[3]=1,i}function nu(i,e){const r=yl([],[i.x,i.y,0,1],e);return new it(r[0]/r[3],r[1]/r[3])}tu(),io=new Ri(4),Ri!=Float32Array&&(io[0]=0,io[1]=0,io[2]=0,io[3]=0),tu(),iu(1,0,0),iu(0,1,0),ru(),ru(),Qh(),function(){var i;i=new Ri(2),Ri!=Float32Array&&(i[0]=0,i[1]=0)}();class su extends mc{}$e("HeatmapBucket",su,{omit:["layers"]});var fm={paint:new Si({"heatmap-radius":new Ye(V.paint_heatmap["heatmap-radius"]),"heatmap-weight":new Ye(V.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new Xe(V.paint_heatmap["heatmap-intensity"]),"heatmap-color":new Ka(V.paint_heatmap["heatmap-color"]),"heatmap-opacity":new Xe(V.paint_heatmap["heatmap-opacity"])})};function yc(i,{width:e,height:r},s,l){if(l){if(l instanceof Uint8ClampedArray)l=new Uint8Array(l.buffer);else if(l.length!==e*r*s)throw new RangeError(`mismatched image size. expected: ${l.length} but got: ${e*r*s}`)}else l=new Uint8Array(e*r*s);return i.width=e,i.height=r,i.data=l,i}function au(i,{width:e,height:r},s){if(e===i.width&&r===i.height)return;const l=yc({},{width:e,height:r},s);xc(i,l,{x:0,y:0},{x:0,y:0},{width:Math.min(i.width,e),height:Math.min(i.height,r)},s),i.width=e,i.height=r,i.data=l.data}function xc(i,e,r,s,l,u){if(l.width===0||l.height===0)return e;if(l.width>i.width||l.height>i.height||r.x>i.width-l.width||r.y>i.height-l.height)throw new RangeError("out of range source coordinates for image copy");if(l.width>e.width||l.height>e.height||s.x>e.width-l.width||s.y>e.height-l.height)throw new RangeError("out of range destination coordinates for image copy");const d=i.data,f=e.data;if(d===f)throw new Error("srcData equals dstData, so image is already copied");for(let g=0;g<l.height;g++){const x=((r.y+g)*i.width+r.x)*u,w=((s.y+g)*e.width+s.x)*u;for(let T=0;T<l.width*u;T++)f[w+T]=d[x+T]}return e}class ro{constructor(e,r){yc(this,e,1,r)}resize(e){au(this,e,1)}clone(){return new ro({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(e,r,s,l,u){xc(e,r,s,l,u,1)}}class pr{constructor(e,r){yc(this,e,4,r)}resize(e){au(this,e,4)}replace(e,r){r?this.data.set(e):this.data=e instanceof Uint8ClampedArray?new Uint8Array(e.buffer):e}clone(){return new pr({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(e,r,s,l,u){xc(e,r,s,l,u,4)}}function ou(i){const e={},r=i.resolution||256,s=i.clips?i.clips.length:1,l=i.image||new pr({width:r,height:s});if(Math.log(r)/Math.LN2%1!=0)throw new Error(`width is not a power of 2 - ${r}`);const u=(d,f,g)=>{e[i.evaluationKey]=g;const x=i.expression.evaluate(e);l.data[d+f+0]=Math.floor(255*x.r/x.a),l.data[d+f+1]=Math.floor(255*x.g/x.a),l.data[d+f+2]=Math.floor(255*x.b/x.a),l.data[d+f+3]=Math.floor(255*x.a)};if(i.clips)for(let d=0,f=0;d<s;++d,f+=4*r)for(let g=0,x=0;g<r;g++,x+=4){const w=g/(r-1),{start:T,end:A}=i.clips[d];u(f,x,T*(1-w)+A*w)}else for(let d=0,f=0;d<r;d++,f+=4)u(0,f,d/(r-1));return l}$e("AlphaImage",ro),$e("RGBAImage",pr);var gm={paint:new Si({"hillshade-illumination-direction":new Xe(V.paint_hillshade["hillshade-illumination-direction"]),"hillshade-illumination-anchor":new Xe(V.paint_hillshade["hillshade-illumination-anchor"]),"hillshade-exaggeration":new Xe(V.paint_hillshade["hillshade-exaggeration"]),"hillshade-shadow-color":new Xe(V.paint_hillshade["hillshade-shadow-color"]),"hillshade-highlight-color":new Xe(V.paint_hillshade["hillshade-highlight-color"]),"hillshade-accent-color":new Xe(V.paint_hillshade["hillshade-accent-color"])})};const _m=Wt([{name:"a_pos",components:2,type:"Int16"}],4),{members:ym}=_m;var no={};function xl(i,e,r){r=r||2;var s,l,u,d,f,g,x,w=e&&e.length,T=w?e[0]*r:i.length,A=lu(i,0,T,r,!0),I=[];if(!A||A.next===A.prev)return I;if(w&&(A=function(F,O,G,Y){var $,J,pe,ue=[];for($=0,J=O.length;$<J;$++)(pe=lu(F,O[$]*Y,$<J-1?O[$+1]*Y:F.length,Y,!1))===pe.next&&(pe.steiner=!0),ue.push(Im(pe));for(ue.sort(Tm),$=0;$<ue.length;$++)G=Sm(ue[$],G);return G}(i,e,A,r)),i.length>80*r){s=u=i[0],l=d=i[1];for(var P=r;P<T;P+=r)(f=i[P])<s&&(s=f),(g=i[P+1])<l&&(l=g),f>u&&(u=f),g>d&&(d=g);x=(x=Math.max(u-s,d-l))!==0?32767/x:0}return so(A,I,r,s,l,x,0),I}function lu(i,e,r,s,l){var u,d;if(l===wc(i,e,r,s)>0)for(u=e;u<r;u+=s)d=uu(u,i[u],i[u+1],d);else for(u=r-s;u>=e;u-=s)d=uu(u,i[u],i[u+1],d);return d&&vl(d,d.next)&&(oo(d),d=d.next),d}function xs(i,e){if(!i)return i;e||(e=i);var r,s=i;do if(r=!1,s.steiner||!vl(s,s.next)&&ei(s.prev,s,s.next)!==0)s=s.next;else{if(oo(s),(s=e=s.prev)===s.next)break;r=!0}while(r||s!==e);return e}function so(i,e,r,s,l,u,d){if(i){!d&&u&&function(w,T,A,I){var P=w;do P.z===0&&(P.z=vc(P.x,P.y,T,A,I)),P.prevZ=P.prev,P.nextZ=P.next,P=P.next;while(P!==w);P.prevZ.nextZ=null,P.prevZ=null,function(F){var O,G,Y,$,J,pe,ue,Ne,qe=1;do{for(G=F,F=null,J=null,pe=0;G;){for(pe++,Y=G,ue=0,O=0;O<qe&&(ue++,Y=Y.nextZ);O++);for(Ne=qe;ue>0||Ne>0&&Y;)ue!==0&&(Ne===0||!Y||G.z<=Y.z)?($=G,G=G.nextZ,ue--):($=Y,Y=Y.nextZ,Ne--),J?J.nextZ=$:F=$,$.prevZ=J,J=$;G=Y}J.nextZ=null,qe*=2}while(pe>1)}(P)}(i,s,l,u);for(var f,g,x=i;i.prev!==i.next;)if(f=i.prev,g=i.next,u?vm(i,s,l,u):xm(i))e.push(f.i/r|0),e.push(i.i/r|0),e.push(g.i/r|0),oo(i),i=g.next,x=g.next;else if((i=g)===x){d?d===1?so(i=bm(xs(i),e,r),e,r,s,l,u,2):d===2&&wm(i,e,r,s,l,u):so(xs(i),e,r,s,l,u,1);break}}}function xm(i){var e=i.prev,r=i,s=i.next;if(ei(e,r,s)>=0)return!1;for(var l=e.x,u=r.x,d=s.x,f=e.y,g=r.y,x=s.y,w=l<u?l<d?l:d:u<d?u:d,T=f<g?f<x?f:x:g<x?g:x,A=l>u?l>d?l:d:u>d?u:d,I=f>g?f>x?f:x:g>x?g:x,P=s.next;P!==e;){if(P.x>=w&&P.x<=A&&P.y>=T&&P.y<=I&&ea(l,f,u,g,d,x,P.x,P.y)&&ei(P.prev,P,P.next)>=0)return!1;P=P.next}return!0}function vm(i,e,r,s){var l=i.prev,u=i,d=i.next;if(ei(l,u,d)>=0)return!1;for(var f=l.x,g=u.x,x=d.x,w=l.y,T=u.y,A=d.y,I=f<g?f<x?f:x:g<x?g:x,P=w<T?w<A?w:A:T<A?T:A,F=f>g?f>x?f:x:g>x?g:x,O=w>T?w>A?w:A:T>A?T:A,G=vc(I,P,e,r,s),Y=vc(F,O,e,r,s),$=i.prevZ,J=i.nextZ;$&&$.z>=G&&J&&J.z<=Y;){if($.x>=I&&$.x<=F&&$.y>=P&&$.y<=O&&$!==l&&$!==d&&ea(f,w,g,T,x,A,$.x,$.y)&&ei($.prev,$,$.next)>=0||($=$.prevZ,J.x>=I&&J.x<=F&&J.y>=P&&J.y<=O&&J!==l&&J!==d&&ea(f,w,g,T,x,A,J.x,J.y)&&ei(J.prev,J,J.next)>=0))return!1;J=J.nextZ}for(;$&&$.z>=G;){if($.x>=I&&$.x<=F&&$.y>=P&&$.y<=O&&$!==l&&$!==d&&ea(f,w,g,T,x,A,$.x,$.y)&&ei($.prev,$,$.next)>=0)return!1;$=$.prevZ}for(;J&&J.z<=Y;){if(J.x>=I&&J.x<=F&&J.y>=P&&J.y<=O&&J!==l&&J!==d&&ea(f,w,g,T,x,A,J.x,J.y)&&ei(J.prev,J,J.next)>=0)return!1;J=J.nextZ}return!0}function bm(i,e,r){var s=i;do{var l=s.prev,u=s.next.next;!vl(l,u)&&cu(l,s,s.next,u)&&ao(l,u)&&ao(u,l)&&(e.push(l.i/r|0),e.push(s.i/r|0),e.push(u.i/r|0),oo(s),oo(s.next),s=i=u),s=s.next}while(s!==i);return xs(s)}function wm(i,e,r,s,l,u){var d=i;do{for(var f=d.next.next;f!==d.prev;){if(d.i!==f.i&&Am(d,f)){var g=hu(d,f);return d=xs(d,d.next),g=xs(g,g.next),so(d,e,r,s,l,u,0),void so(g,e,r,s,l,u,0)}f=f.next}d=d.next}while(d!==i)}function Tm(i,e){return i.x-e.x}function Sm(i,e){var r=function(l,u){var d,f=u,g=l.x,x=l.y,w=-1/0;do{if(x<=f.y&&x>=f.next.y&&f.next.y!==f.y){var T=f.x+(x-f.y)*(f.next.x-f.x)/(f.next.y-f.y);if(T<=g&&T>w&&(w=T,d=f.x<f.next.x?f:f.next,T===g))return d}f=f.next}while(f!==u);if(!d)return null;var A,I=d,P=d.x,F=d.y,O=1/0;f=d;do g>=f.x&&f.x>=P&&g!==f.x&&ea(x<F?g:w,x,P,F,x<F?w:g,x,f.x,f.y)&&(A=Math.abs(x-f.y)/(g-f.x),ao(f,l)&&(A<O||A===O&&(f.x>d.x||f.x===d.x&&Em(d,f)))&&(d=f,O=A)),f=f.next;while(f!==I);return d}(i,e);if(!r)return e;var s=hu(r,i);return xs(s,s.next),xs(r,r.next)}function Em(i,e){return ei(i.prev,i,e.prev)<0&&ei(e.next,i,i.next)<0}function vc(i,e,r,s,l){return(i=1431655765&((i=858993459&((i=252645135&((i=16711935&((i=(i-r)*l|0)|i<<8))|i<<4))|i<<2))|i<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-s)*l|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Im(i){var e=i,r=i;do(e.x<r.x||e.x===r.x&&e.y<r.y)&&(r=e),e=e.next;while(e!==i);return r}function ea(i,e,r,s,l,u,d,f){return(l-d)*(e-f)>=(i-d)*(u-f)&&(i-d)*(s-f)>=(r-d)*(e-f)&&(r-d)*(u-f)>=(l-d)*(s-f)}function Am(i,e){return i.next.i!==e.i&&i.prev.i!==e.i&&!function(r,s){var l=r;do{if(l.i!==r.i&&l.next.i!==r.i&&l.i!==s.i&&l.next.i!==s.i&&cu(l,l.next,r,s))return!0;l=l.next}while(l!==r);return!1}(i,e)&&(ao(i,e)&&ao(e,i)&&function(r,s){var l=r,u=!1,d=(r.x+s.x)/2,f=(r.y+s.y)/2;do l.y>f!=l.next.y>f&&l.next.y!==l.y&&d<(l.next.x-l.x)*(f-l.y)/(l.next.y-l.y)+l.x&&(u=!u),l=l.next;while(l!==r);return u}(i,e)&&(ei(i.prev,i,e.prev)||ei(i,e.prev,e))||vl(i,e)&&ei(i.prev,i,i.next)>0&&ei(e.prev,e,e.next)>0)}function ei(i,e,r){return(e.y-i.y)*(r.x-e.x)-(e.x-i.x)*(r.y-e.y)}function vl(i,e){return i.x===e.x&&i.y===e.y}function cu(i,e,r,s){var l=wl(ei(i,e,r)),u=wl(ei(i,e,s)),d=wl(ei(r,s,i)),f=wl(ei(r,s,e));return l!==u&&d!==f||!(l!==0||!bl(i,r,e))||!(u!==0||!bl(i,s,e))||!(d!==0||!bl(r,i,s))||!(f!==0||!bl(r,e,s))}function bl(i,e,r){return e.x<=Math.max(i.x,r.x)&&e.x>=Math.min(i.x,r.x)&&e.y<=Math.max(i.y,r.y)&&e.y>=Math.min(i.y,r.y)}function wl(i){return i>0?1:i<0?-1:0}function ao(i,e){return ei(i.prev,i,i.next)<0?ei(i,e,i.next)>=0&&ei(i,i.prev,e)>=0:ei(i,e,i.prev)<0||ei(i,i.next,e)<0}function hu(i,e){var r=new bc(i.i,i.x,i.y),s=new bc(e.i,e.x,e.y),l=i.next,u=e.prev;return i.next=e,e.prev=i,r.next=l,l.prev=r,s.next=r,r.prev=s,u.next=s,s.prev=u,s}function uu(i,e,r,s){var l=new bc(i,e,r);return s?(l.next=s.next,l.prev=s,s.next.prev=l,s.next=l):(l.prev=l,l.next=l),l}function oo(i){i.next.prev=i.prev,i.prev.next=i.next,i.prevZ&&(i.prevZ.nextZ=i.nextZ),i.nextZ&&(i.nextZ.prevZ=i.prevZ)}function bc(i,e,r){this.i=i,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 wc(i,e,r,s){for(var l=0,u=e,d=r-s;u<r;u+=s)l+=(i[d]-i[u])*(i[u+1]+i[d+1]),d=u;return l}({get exports(){return no},set exports(i){no=i}}).exports=xl,no.default=xl,xl.deviation=function(i,e,r,s){var l=e&&e.length,u=Math.abs(wc(i,0,l?e[0]*r:i.length,r));if(l)for(var d=0,f=e.length;d<f;d++)u-=Math.abs(wc(i,e[d]*r,d<f-1?e[d+1]*r:i.length,r));var g=0;for(d=0;d<s.length;d+=3){var x=s[d]*r,w=s[d+1]*r,T=s[d+2]*r;g+=Math.abs((i[x]-i[T])*(i[w+1]-i[x+1])-(i[x]-i[w])*(i[T+1]-i[x+1]))}return u===0&&g===0?0:Math.abs((g-u)/u)},xl.flatten=function(i){for(var e=i[0][0].length,r={vertices:[],holes:[],dimensions:e},s=0,l=0;l<i.length;l++){for(var u=0;u<i[l].length;u++)for(var d=0;d<e;d++)r.vertices.push(i[l][u][d]);l>0&&r.holes.push(s+=i[l-1].length)}return r};var Tc={};({get exports(){return Tc},set exports(i){Tc=i}}).exports=function(){function i(s,l,u,d,f){for(;d>u;){if(d-u>600){var g=d-u+1,x=l-u+1,w=Math.log(g),T=.5*Math.exp(2*w/3),A=.5*Math.sqrt(w*T*(g-T)/g)*(x-g/2<0?-1:1);i(s,l,Math.max(u,Math.floor(l-x*T/g+A)),Math.min(d,Math.floor(l+(g-x)*T/g+A)),f)}var I=s[l],P=u,F=d;for(e(s,u,l),f(s[d],I)>0&&e(s,u,d);P<F;){for(e(s,P,F),P++,F--;f(s[P],I)<0;)P++;for(;f(s[F],I)>0;)F--}f(s[u],I)===0?e(s,u,F):e(s,++F,d),F<=l&&(u=F+1),l<=F&&(d=F-1)}}function e(s,l,u){var d=s[l];s[l]=s[u],s[u]=d}function r(s,l){return s<l?-1:s>l?1:0}return function(s,l,u,d,f){i(s,l,u||0,d||s.length-1,f||r)}}();var Cm=Tc;function Sc(i,e){const r=i.length;if(r<=1)return[i];const s=[];let l,u;for(let d=0;d<r;d++){const f=Dr(i[d]);f!==0&&(i[d].area=Math.abs(f),u===void 0&&(u=f<0),u===f<0?(l&&s.push(l),l=[i[d]]):l.push(i[d]))}if(l&&s.push(l),e>1)for(let d=0;d<s.length;d++)s[d].length<=e||(Cm(s[d],e,1,s[d].length-1,Mm),s[d]=s[d].slice(0,e));return s}function Mm(i,e){return e.area-i.area}function Ec(i,e,r){const s=r.patternDependencies;let l=!1;for(const u of e){const d=u.paint.get(`${i}-pattern`);d.isConstant()||(l=!0);const f=d.constantOr(null);f&&(l=!0,s[f.to]=!0,s[f.from]=!0)}return l}function Ic(i,e,r,s,l){const u=l.patternDependencies;for(const d of e){const f=d.paint.get(`${i}-pattern`).value;if(f.kind!=="constant"){let g=f.evaluate({zoom:s-1},r,{},l.availableImages),x=f.evaluate({zoom:s},r,{},l.availableImages),w=f.evaluate({zoom:s+1},r,{},l.availableImages);g=g&&g.name?g.name:g,x=x&&x.name?x.name:x,w=w&&w.name?w.name:w,u[g]=!0,u[x]=!0,u[w]=!0,r.patterns[d.id]={min:g,mid:x,max:w}}}return r}class Ac{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(r=>r.id),this.index=e.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new ye,this.indexArray=new bt,this.indexArray2=new Ei,this.programConfigurations=new gs(e.layers,e.zoom),this.segments=new Nt,this.segments2=new Nt,this.stateDependentLayerIds=this.layers.filter(r=>r.isStateDependent()).map(r=>r.id)}populate(e,r,s){this.hasPattern=Ec("fill",this.layers,r);const l=this.layers[0].layout.get("fill-sort-key"),u=!l.isConstant(),d=[];for(const{feature:f,id:g,index:x,sourceLayerIndex:w}of e){const T=this.layers[0]._featureFilter.needGeometry,A=ys(f,T);if(!this.layers[0]._featureFilter.filter(new Vt(this.zoom),A,s))continue;const I=u?l.evaluate(A,{},s,r.availableImages):void 0,P={id:g,properties:f.properties,type:f.type,sourceLayerIndex:w,index:x,geometry:T?A.geometry:_s(f),patterns:{},sortKey:I};d.push(P)}u&&d.sort((f,g)=>f.sortKey-g.sortKey);for(const f of d){const{geometry:g,index:x,sourceLayerIndex:w}=f;if(this.hasPattern){const T=Ic("fill",this.layers,f,this.zoom,r);this.patternFeatures.push(T)}else this.addFeature(f,g,x,s,{});r.featureIndex.insert(e[x].feature,g,x,w,this.index)}}update(e,r,s){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,r,this.stateDependentLayers,s)}addFeatures(e,r,s){for(const l of this.patternFeatures)this.addFeature(l,l.geometry,l.index,r,s)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,ym),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.indexBuffer2=e.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(e),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(e,r,s,l,u){for(const d of Sc(r,500)){let f=0;for(const I of d)f+=I.length;const g=this.segments.prepareSegment(f,this.layoutVertexArray,this.indexArray),x=g.vertexLength,w=[],T=[];for(const I of d){if(I.length===0)continue;I!==d[0]&&T.push(w.length/2);const P=this.segments2.prepareSegment(I.length,this.layoutVertexArray,this.indexArray2),F=P.vertexLength;this.layoutVertexArray.emplaceBack(I[0].x,I[0].y),this.indexArray2.emplaceBack(F+I.length-1,F),w.push(I[0].x),w.push(I[0].y);for(let O=1;O<I.length;O++)this.layoutVertexArray.emplaceBack(I[O].x,I[O].y),this.indexArray2.emplaceBack(F+O-1,F+O),w.push(I[O].x),w.push(I[O].y);P.vertexLength+=I.length,P.primitiveLength+=I.length}const A=no(w,T);for(let I=0;I<A.length;I+=3)this.indexArray.emplaceBack(x+A[I],x+A[I+1],x+A[I+2]);g.vertexLength+=f,g.primitiveLength+=A.length/3}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,s,u,l)}}$e("FillBucket",Ac,{omit:["layers","patternFeatures"]});const Pm=new Si({"fill-sort-key":new Ye(V.layout_fill["fill-sort-key"])});var km={paint:new Si({"fill-antialias":new Xe(V.paint_fill["fill-antialias"]),"fill-opacity":new Ye(V.paint_fill["fill-opacity"]),"fill-color":new Ye(V.paint_fill["fill-color"]),"fill-outline-color":new Ye(V.paint_fill["fill-outline-color"]),"fill-translate":new Xe(V.paint_fill["fill-translate"]),"fill-translate-anchor":new Xe(V.paint_fill["fill-translate-anchor"]),"fill-pattern":new us(V.paint_fill["fill-pattern"])}),layout:Pm};const zm=Wt([{name:"a_pos",components:2,type:"Int16"},{name:"a_normal_ed",components:4,type:"Int16"}],4),Lm=Wt([{name:"a_centroid",components:2,type:"Int16"}],4),{members:Dm}=zm;var Dn={},Rm=it,pu=ta;function ta(i,e,r,s,l){this.properties={},this.extent=r,this.type=0,this._pbf=i,this._geometry=-1,this._keys=s,this._values=l,i.readFields(Bm,this,e)}function Bm(i,e,r){i==1?e.id=r.readVarint():i==2?function(s,l){for(var u=s.readVarint()+s.pos;s.pos<u;){var d=l._keys[s.readVarint()],f=l._values[s.readVarint()];l.properties[d]=f}}(r,e):i==3?e.type=r.readVarint():i==4&&(e._geometry=r.pos)}function Fm(i){for(var e,r,s=0,l=0,u=i.length,d=u-1;l<u;d=l++)s+=((r=i[d]).x-(e=i[l]).x)*(e.y+r.y);return s}ta.types=["Unknown","Point","LineString","Polygon"],ta.prototype.loadGeometry=function(){var i=this._pbf;i.pos=this._geometry;for(var e,r=i.readVarint()+i.pos,s=1,l=0,u=0,d=0,f=[];i.pos<r;){if(l<=0){var g=i.readVarint();s=7&g,l=g>>3}if(l--,s===1||s===2)u+=i.readSVarint(),d+=i.readSVarint(),s===1&&(e&&f.push(e),e=[]),e.push(new Rm(u,d));else{if(s!==7)throw new Error("unknown command "+s);e&&e.push(e[0].clone())}}return e&&f.push(e),f},ta.prototype.bbox=function(){var i=this._pbf;i.pos=this._geometry;for(var e=i.readVarint()+i.pos,r=1,s=0,l=0,u=0,d=1/0,f=-1/0,g=1/0,x=-1/0;i.pos<e;){if(s<=0){var w=i.readVarint();r=7&w,s=w>>3}if(s--,r===1||r===2)(l+=i.readSVarint())<d&&(d=l),l>f&&(f=l),(u+=i.readSVarint())<g&&(g=u),u>x&&(x=u);else if(r!==7)throw new Error("unknown command "+r)}return[d,g,f,x]},ta.prototype.toGeoJSON=function(i,e,r){var s,l,u=this.extent*Math.pow(2,r),d=this.extent*i,f=this.extent*e,g=this.loadGeometry(),x=ta.types[this.type];function w(I){for(var P=0;P<I.length;P++){var F=I[P];I[P]=[360*(F.x+d)/u-180,360/Math.PI*Math.atan(Math.exp((180-360*(F.y+f)/u)*Math.PI/180))-90]}}switch(this.type){case 1:var T=[];for(s=0;s<g.length;s++)T[s]=g[s][0];w(g=T);break;case 2:for(s=0;s<g.length;s++)w(g[s]);break;case 3:for(g=function(I){var P=I.length;if(P<=1)return[I];for(var F,O,G=[],Y=0;Y<P;Y++){var $=Fm(I[Y]);$!==0&&(O===void 0&&(O=$<0),O===$<0?(F&&G.push(F),F=[I[Y]]):F.push(I[Y]))}return F&&G.push(F),G}(g),s=0;s<g.length;s++)for(l=0;l<g[s].length;l++)w(g[s][l])}g.length===1?g=g[0]:x="Multi"+x;var A={type:"Feature",geometry:{type:x,coordinates:g},properties:this.properties};return"id"in this&&(A.id=this.id),A};var Om=pu,du=mu;function mu(i,e){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=i,this._keys=[],this._values=[],this._features=[],i.readFields(Um,this,e),this.length=this._features.length}function Um(i,e,r){i===15?e.version=r.readVarint():i===1?e.name=r.readString():i===5?e.extent=r.readVarint():i===2?e._features.push(r.pos):i===3?e._keys.push(r.readString()):i===4&&e._values.push(function(s){for(var l=null,u=s.readVarint()+s.pos;s.pos<u;){var d=s.readVarint()>>3;l=d===1?s.readString():d===2?s.readFloat():d===3?s.readDouble():d===4?s.readVarint64():d===5?s.readVarint():d===6?s.readSVarint():d===7?s.readBoolean():null}return l}(r))}mu.prototype.feature=function(i){if(i<0||i>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[i];var e=this._pbf.readVarint()+this._pbf.pos;return new Om(this._pbf,e,this.extent,this._keys,this._values)};var Vm=du;function Nm(i,e,r){if(i===3){var s=new Vm(r,r.readVarint()+r.pos);s.length&&(e[s.name]=s)}}Dn.VectorTile=function(i,e){this.layers=i.readFields(Nm,{},e)},Dn.VectorTileFeature=pu,Dn.VectorTileLayer=du;const $m=Dn.VectorTileFeature.types,Cc=Math.pow(2,13);function lo(i,e,r,s,l,u,d,f){i.emplaceBack(e,r,2*Math.floor(s*Cc)+d,l*Cc*2,u*Cc*2,Math.round(f))}class Mc{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(r=>r.id),this.index=e.index,this.hasPattern=!1,this.layoutVertexArray=new Ae,this.centroidVertexArray=new de,this.indexArray=new bt,this.programConfigurations=new gs(e.layers,e.zoom),this.segments=new Nt,this.stateDependentLayerIds=this.layers.filter(r=>r.isStateDependent()).map(r=>r.id)}populate(e,r,s){this.features=[],this.hasPattern=Ec("fill-extrusion",this.layers,r);for(const{feature:l,id:u,index:d,sourceLayerIndex:f}of e){const g=this.layers[0]._featureFilter.needGeometry,x=ys(l,g);if(!this.layers[0]._featureFilter.filter(new Vt(this.zoom),x,s))continue;const w={id:u,sourceLayerIndex:f,index:d,geometry:g?x.geometry:_s(l),properties:l.properties,type:l.type,patterns:{}};this.hasPattern?this.features.push(Ic("fill-extrusion",this.layers,w,this.zoom,r)):this.addFeature(w,w.geometry,d,s,{}),r.featureIndex.insert(l,w.geometry,d,f,this.index,!0)}}addFeatures(e,r,s){for(const l of this.features){const{geometry:u}=l;this.addFeature(l,u,l.index,r,s)}}update(e,r,s){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,r,this.stateDependentLayers,s)}isEmpty(){return this.layoutVertexArray.length===0&&this.centroidVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Dm),this.centroidVertexBuffer=e.createVertexBuffer(this.centroidVertexArray,Lm.members,!0),this.indexBuffer=e.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy())}addFeature(e,r,s,l,u){const d={x:0,y:0,vertexCount:0};for(const f of Sc(r,500)){let g=0;for(const P of f)g+=P.length;let x=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(const P of f){if(P.length===0||Gm(P))continue;let F=0;for(let O=0;O<P.length;O++){const G=P[O];if(O>=1){const Y=P[O-1];if(!jm(G,Y)){x.vertexLength+4>Nt.MAX_VERTEX_ARRAY_LENGTH&&(x=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));const $=G.sub(Y)._perp()._unit(),J=Y.dist(G);F+J>32768&&(F=0),lo(this.layoutVertexArray,G.x,G.y,$.x,$.y,0,0,F),lo(this.layoutVertexArray,G.x,G.y,$.x,$.y,0,1,F),d.x+=2*G.x,d.y+=2*G.y,d.vertexCount+=2,F+=J,lo(this.layoutVertexArray,Y.x,Y.y,$.x,$.y,0,0,F),lo(this.layoutVertexArray,Y.x,Y.y,$.x,$.y,0,1,F),d.x+=2*Y.x,d.y+=2*Y.y,d.vertexCount+=2;const pe=x.vertexLength;this.indexArray.emplaceBack(pe,pe+2,pe+1),this.indexArray.emplaceBack(pe+1,pe+2,pe+3),x.vertexLength+=4,x.primitiveLength+=2}}}}if(x.vertexLength+g>Nt.MAX_VERTEX_ARRAY_LENGTH&&(x=this.segments.prepareSegment(g,this.layoutVertexArray,this.indexArray)),$m[e.type]!=="Polygon")continue;const w=[],T=[],A=x.vertexLength;for(const P of f)if(P.length!==0){P!==f[0]&&T.push(w.length/2);for(let F=0;F<P.length;F++){const O=P[F];lo(this.layoutVertexArray,O.x,O.y,0,0,1,1,0),d.x+=O.x,d.y+=O.y,d.vertexCount+=1,w.push(O.x),w.push(O.y)}}const I=no(w,T);for(let P=0;P<I.length;P+=3)this.indexArray.emplaceBack(A+I[P],A+I[P+2],A+I[P+1]);x.primitiveLength+=I.length/3,x.vertexLength+=g}for(let f=0;f<d.vertexCount;f++)this.centroidVertexArray.emplaceBack(Math.floor(d.x/d.vertexCount),Math.floor(d.y/d.vertexCount));this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,s,u,l)}}function jm(i,e){return i.x===e.x&&(i.x<0||i.x>ai)||i.y===e.y&&(i.y<0||i.y>ai)}function Gm(i){return i.every(e=>e.x<0)||i.every(e=>e.x>ai)||i.every(e=>e.y<0)||i.every(e=>e.y>ai)}$e("FillExtrusionBucket",Mc,{omit:["layers","features"]});var qm={paint:new Si({"fill-extrusion-opacity":new Xe(V["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new Ye(V["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new Xe(V["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new Xe(V["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new us(V["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new Ye(V["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new Ye(V["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new Xe(V["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})};function co(i,e){return i.x*e.x+i.y*e.y}function fu(i,e){if(i.length===1){let r=0;const s=e[r++];let l;for(;!l||s.equals(l);)if(l=e[r++],!l)return 1/0;for(;r<e.length;r++){const u=e[r],d=i[0],f=l.sub(s),g=u.sub(s),x=d.sub(s),w=co(f,f),T=co(f,g),A=co(g,g),I=co(x,f),P=co(x,g),F=w*A-T*T,O=(A*I-T*P)/F,G=(w*P-T*I)/F,Y=s.z*(1-O-G)+l.z*O+u.z*G;if(isFinite(Y))return Y}return 1/0}{let r=1/0;for(const s of e)r=Math.min(r,s.z);return r}}const Zm=Wt([{name:"a_pos_normal",components:2,type:"Int16"},{name:"a_data",components:4,type:"Uint8"}],4),{members:Xm}=Zm,Wm=Wt([{name:"a_uv_x",components:1,type:"Float32"},{name:"a_split_index",components:1,type:"Float32"}]),{members:Hm}=Wm,Km=Dn.VectorTileFeature.types,Jm=Math.cos(Math.PI/180*37.5),gu=Math.pow(2,14)/.5;class Pc{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(r=>r.id),this.index=e.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(r=>{this.gradients[r.id]={}}),this.layoutVertexArray=new Ge,this.layoutVertexArray2=new rt,this.indexArray=new bt,this.programConfigurations=new gs(e.layers,e.zoom),this.segments=new Nt,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(r=>r.isStateDependent()).map(r=>r.id)}populate(e,r,s){this.hasPattern=Ec("line",this.layers,r);const l=this.layers[0].layout.get("line-sort-key"),u=!l.isConstant(),d=[];for(const{feature:f,id:g,index:x,sourceLayerIndex:w}of e){const T=this.layers[0]._featureFilter.needGeometry,A=ys(f,T);if(!this.layers[0]._featureFilter.filter(new Vt(this.zoom),A,s))continue;const I=u?l.evaluate(A,{},s):void 0,P={id:g,properties:f.properties,type:f.type,sourceLayerIndex:w,index:x,geometry:T?A.geometry:_s(f),patterns:{},sortKey:I};d.push(P)}u&&d.sort((f,g)=>f.sortKey-g.sortKey);for(const f of d){const{geometry:g,index:x,sourceLayerIndex:w}=f;if(this.hasPattern){const T=Ic("line",this.layers,f,this.zoom,r);this.patternFeatures.push(T)}else this.addFeature(f,g,x,s,{});r.featureIndex.insert(e[x].feature,g,x,w,this.index)}}update(e,r,s){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,r,this.stateDependentLayers,s)}addFeatures(e,r,s){for(const l of this.patternFeatures)this.addFeature(l,l.geometry,l.index,r,s)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexArray2.length!==0&&(this.layoutVertexBuffer2=e.createVertexBuffer(this.layoutVertexArray2,Hm)),this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Xm),this.indexBuffer=e.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(e){if(e.properties&&Object.prototype.hasOwnProperty.call(e.properties,"mapbox_clip_start")&&Object.prototype.hasOwnProperty.call(e.properties,"mapbox_clip_end"))return{start:+e.properties.mapbox_clip_start,end:+e.properties.mapbox_clip_end}}addFeature(e,r,s,l,u){const d=this.layers[0].layout,f=d.get("line-join").evaluate(e,{}),g=d.get("line-cap"),x=d.get("line-miter-limit"),w=d.get("line-round-limit");this.lineClips=this.lineFeatureClips(e);for(const T of r)this.addLine(T,e,f,g,x,w);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,s,u,l)}addLine(e,r,s,l,u,d){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let G=0;G<e.length-1;G++)this.totalDistance+=e[G].dist(e[G+1]);this.updateScaledDistance(),this.maxLineLength=Math.max(this.maxLineLength,this.totalDistance)}const f=Km[r.type]==="Polygon";let g=e.length;for(;g>=2&&e[g-1].equals(e[g-2]);)g--;let x=0;for(;x<g-1&&e[x].equals(e[x+1]);)x++;if(g<(f?3:2))return;s==="bevel"&&(u=1.05);const w=this.overscaling<=16?122880/(512*this.overscaling):0,T=this.segments.prepareSegment(10*g,this.layoutVertexArray,this.indexArray);let A,I,P,F,O;this.e1=this.e2=-1,f&&(A=e[g-2],O=e[x].sub(A)._unit()._perp());for(let G=x;G<g;G++){if(P=G===g-1?f?e[x+1]:void 0:e[G+1],P&&e[G].equals(P))continue;O&&(F=O),A&&(I=A),A=e[G],O=P?P.sub(A)._unit()._perp():F,F=F||O;let Y=F.add(O);Y.x===0&&Y.y===0||Y._unit();const $=F.x*O.x+F.y*O.y,J=Y.x*O.x+Y.y*O.y,pe=J!==0?1/J:1/0,ue=2*Math.sqrt(2-2*J),Ne=J<Jm&&I&&P,qe=F.x*O.y-F.y*O.x>0;if(Ne&&G>x){const ze=A.dist(I);if(ze>2*w){const Ve=A.sub(A.sub(I)._mult(w/ze)._round());this.updateDistance(I,Ve),this.addCurrentVertex(Ve,F,0,0,T),I=Ve}}const Ue=I&&P;let Re=Ue?s:f?"butt":l;if(Ue&&Re==="round"&&(pe<d?Re="miter":pe<=2&&(Re="fakeround")),Re==="miter"&&pe>u&&(Re="bevel"),Re==="bevel"&&(pe>2&&(Re="flipbevel"),pe<u&&(Re="miter")),I&&this.updateDistance(I,A),Re==="miter")Y._mult(pe),this.addCurrentVertex(A,Y,0,0,T);else if(Re==="flipbevel"){if(pe>100)Y=O.mult(-1);else{const ze=pe*F.add(O).mag()/F.sub(O).mag();Y._perp()._mult(ze*(qe?-1:1))}this.addCurrentVertex(A,Y,0,0,T),this.addCurrentVertex(A,Y.mult(-1),0,0,T)}else if(Re==="bevel"||Re==="fakeround"){const ze=-Math.sqrt(pe*pe-1),Ve=qe?ze:0,Be=qe?0:ze;if(I&&this.addCurrentVertex(A,F,Ve,Be,T),Re==="fakeround"){const Se=Math.round(180*ue/Math.PI/20);for(let He=1;He<Se;He++){let Ze=He/Se;if(Ze!==.5){const Gt=Ze-.5;Ze+=Ze*Gt*(Ze-1)*((1.0904+$*($*(3.55645-1.43519*$)-3.2452))*Gt*Gt+(.848013+$*(.215638*$-1.06021)))}const ct=O.sub(F)._mult(Ze)._add(F)._unit()._mult(qe?-1:1);this.addHalfVertex(A,ct.x,ct.y,!1,qe,0,T)}}P&&this.addCurrentVertex(A,O,-Ve,-Be,T)}else if(Re==="butt")this.addCurrentVertex(A,Y,0,0,T);else if(Re==="square"){const ze=I?1:-1;this.addCurrentVertex(A,Y,ze,ze,T)}else Re==="round"&&(I&&(this.addCurrentVertex(A,F,0,0,T),this.addCurrentVertex(A,F,1,1,T,!0)),P&&(this.addCurrentVertex(A,O,-1,-1,T,!0),this.addCurrentVertex(A,O,0,0,T)));if(Ne&&G<g-1){const ze=A.dist(P);if(ze>2*w){const Ve=A.add(P.sub(A)._mult(w/ze)._round());this.updateDistance(A,Ve),this.addCurrentVertex(Ve,O,0,0,T),A=Ve}}}}addCurrentVertex(e,r,s,l,u,d=!1){const f=r.y*l-r.x,g=-r.y-r.x*l;this.addHalfVertex(e,r.x+r.y*s,r.y-r.x*s,d,!1,s,u),this.addHalfVertex(e,f,g,d,!0,-l,u),this.distance>gu/2&&this.totalDistance===0&&(this.distance=0,this.addCurrentVertex(e,r,s,l,u,d))}addHalfVertex({x:e,y:r},s,l,u,d,f,g){const x=.5*(this.lineClips?this.scaledDistance*(gu-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((e<<1)+(u?1:0),(r<<1)+(d?1:0),Math.round(63*s)+128,Math.round(63*l)+128,1+(f===0?0:f<0?-1:1)|(63&x)<<2,x>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);const w=g.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,w),g.primitiveLength++),d?this.e2=w:this.e1=w}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(e,r){this.distance+=e.dist(r),this.updateScaledDistance()}}$e("LineBucket",Pc,{omit:["layers","patternFeatures"]});const Ym=new Si({"line-cap":new Xe(V.layout_line["line-cap"]),"line-join":new Ye(V.layout_line["line-join"]),"line-miter-limit":new Xe(V.layout_line["line-miter-limit"]),"line-round-limit":new Xe(V.layout_line["line-round-limit"]),"line-sort-key":new Ye(V.layout_line["line-sort-key"])});var _u={paint:new Si({"line-opacity":new Ye(V.paint_line["line-opacity"]),"line-color":new Ye(V.paint_line["line-color"]),"line-translate":new Xe(V.paint_line["line-translate"]),"line-translate-anchor":new Xe(V.paint_line["line-translate-anchor"]),"line-width":new Ye(V.paint_line["line-width"]),"line-gap-width":new Ye(V.paint_line["line-gap-width"]),"line-offset":new Ye(V.paint_line["line-offset"]),"line-blur":new Ye(V.paint_line["line-blur"]),"line-dasharray":new Ha(V.paint_line["line-dasharray"]),"line-pattern":new us(V.paint_line["line-pattern"]),"line-gradient":new Ka(V.paint_line["line-gradient"])}),layout:Ym};const yu=new class extends Ye{possiblyEvaluate(i,e){return e=new Vt(Math.floor(e.zoom),{now:e.now,fadeDuration:e.fadeDuration,zoomHistory:e.zoomHistory,transition:e.transition}),super.possiblyEvaluate(i,e)}evaluate(i,e,r,s){return e=Je({},e,{zoom:Math.floor(e.zoom)}),super.evaluate(i,e,r,s)}}(_u.paint.properties["line-width"].specification);function xu(i,e){return e>0?e+2*i:i}yu.useIntegerZoom=!0;const Qm=Wt([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),ef=Wt([{name:"a_projected_pos",components:3,type:"Float32"}],4);Wt([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);const tf=Wt([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"}]);Wt([{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 vu=Wt([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),rf=Wt([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function nf(i,e,r){return i.sections.forEach(s=>{s.text=function(l,u,d){const f=u.layout.get("text-transform").evaluate(d,{});return f==="uppercase"?l=l.toLocaleUpperCase():f==="lowercase"&&(l=l.toLocaleLowerCase()),ji.applyArabicShaping&&(l=ji.applyArabicShaping(l)),l}(s.text,e,r)}),i}Wt([{name:"triangle",components:3,type:"Uint16"}]),Wt([{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"}]),Wt([{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",components:2,name:"textOffset"},{type:"Float32",name:"collisionCircleDiameter"}]),Wt([{type:"Float32",name:"offsetX"}]),Wt([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]);const ho={"!":"\uFE15","#":"\uFF03",$:"\uFF04","%":"\uFF05","&":"\uFF06","(":"\uFE35",")":"\uFE36","*":"\uFF0A","+":"\uFF0B",",":"\uFE10","-":"\uFE32",".":"\u30FB","/":"\uFF0F",":":"\uFE13",";":"\uFE14","<":"\uFE3F","=":"\uFF1D",">":"\uFE40","?":"\uFE16","@":"\uFF20","[":"\uFE47","\\":"\uFF3C","]":"\uFE48","^":"\uFF3E",_:"\uFE33","`":"\uFF40","{":"\uFE37","|":"\u2015","}":"\uFE38","~":"\uFF5E","\xA2":"\uFFE0","\xA3":"\uFFE1","\xA5":"\uFFE5","\xA6":"\uFFE4","\xAC":"\uFFE2","\xAF":"\uFFE3","\u2013":"\uFE32","\u2014":"\uFE31","\u2018":"\uFE43","\u2019":"\uFE44","\u201C":"\uFE41","\u201D":"\uFE42","\u2026":"\uFE19","\u2027":"\u30FB","\u20A9":"\uFFE6","\u3001":"\uFE11","\u3002":"\uFE12","\u3008":"\uFE3F","\u3009":"\uFE40","\u300A":"\uFE3D","\u300B":"\uFE3E","\u300C":"\uFE41","\u300D":"\uFE42","\u300E":"\uFE43","\u300F":"\uFE44","\u3010":"\uFE3B","\u3011":"\uFE3C","\u3014":"\uFE39","\u3015":"\uFE3A","\u3016":"\uFE17","\u3017":"\uFE18","\uFF01":"\uFE15","\uFF08":"\uFE35","\uFF09":"\uFE36","\uFF0C":"\uFE10","\uFF0D":"\uFE32","\uFF0E":"\u30FB","\uFF1A":"\uFE13","\uFF1B":"\uFE14","\uFF1C":"\uFE3F","\uFF1E":"\uFE40","\uFF1F":"\uFE16","\uFF3B":"\uFE47","\uFF3D":"\uFE48","\uFF3F":"\uFE33","\uFF5B":"\uFE37","\uFF5C":"\u2015","\uFF5D":"\uFE38","\uFF5F":"\uFE35","\uFF60":"\uFE36","\uFF61":"\uFE12","\uFF62":"\uFE41","\uFF63":"\uFE42"};var pi=24,kc=Pt,bu=function(i,e,r,s,l){var u,d,f=8*l-s-1,g=(1<<f)-1,x=g>>1,w=-7,T=r?l-1:0,A=r?-1:1,I=i[e+T];for(T+=A,u=I&(1<<-w)-1,I>>=-w,w+=f;w>0;u=256*u+i[e+T],T+=A,w-=8);for(d=u&(1<<-w)-1,u>>=-w,w+=s;w>0;d=256*d+i[e+T],T+=A,w-=8);if(u===0)u=1-x;else{if(u===g)return d?NaN:1/0*(I?-1:1);d+=Math.pow(2,s),u-=x}return(I?-1:1)*d*Math.pow(2,u-s)},wu=function(i,e,r,s,l,u){var d,f,g,x=8*u-l-1,w=(1<<x)-1,T=w>>1,A=l===23?Math.pow(2,-24)-Math.pow(2,-77):0,I=s?0:u-1,P=s?1:-1,F=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(f=isNaN(e)?1:0,d=w):(d=Math.floor(Math.log(e)/Math.LN2),e*(g=Math.pow(2,-d))<1&&(d--,g*=2),(e+=d+T>=1?A/g:A*Math.pow(2,1-T))*g>=2&&(d++,g/=2),d+T>=w?(f=0,d=w):d+T>=1?(f=(e*g-1)*Math.pow(2,l),d+=T):(f=e*Math.pow(2,T-1)*Math.pow(2,l),d=0));l>=8;i[r+I]=255&f,I+=P,f/=256,l-=8);for(d=d<<l|f,x+=l;x>0;i[r+I]=255&d,I+=P,d/=256,x-=8);i[r+I-P]|=128*F};function Pt(i){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(i)?i:new Uint8Array(i||0),this.pos=0,this.type=0,this.length=this.buf.length}Pt.Varint=0,Pt.Fixed64=1,Pt.Bytes=2,Pt.Fixed32=5;var Rn,zc=4294967296,Tu=1/zc,Su=typeof TextDecoder>"u"?null:new TextDecoder("utf8");function tn(i){return i.type===Pt.Bytes?i.readVarint()+i.pos:i.pos+1}function ia(i,e,r){return r?4294967296*e+(i>>>0):4294967296*(e>>>0)+(i>>>0)}function Eu(i,e,r){var s=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(s);for(var l=r.pos-1;l>=i;l--)r.buf[l+s]=r.buf[l]}function sf(i,e){for(var r=0;r<i.length;r++)e.writeVarint(i[r])}function af(i,e){for(var r=0;r<i.length;r++)e.writeSVarint(i[r])}function of(i,e){for(var r=0;r<i.length;r++)e.writeFloat(i[r])}function lf(i,e){for(var r=0;r<i.length;r++)e.writeDouble(i[r])}function cf(i,e){for(var r=0;r<i.length;r++)e.writeBoolean(i[r])}function hf(i,e){for(var r=0;r<i.length;r++)e.writeFixed32(i[r])}function uf(i,e){for(var r=0;r<i.length;r++)e.writeSFixed32(i[r])}function pf(i,e){for(var r=0;r<i.length;r++)e.writeFixed64(i[r])}function df(i,e){for(var r=0;r<i.length;r++)e.writeSFixed64(i[r])}function Tl(i,e){return(i[e]|i[e+1]<<8|i[e+2]<<16)+16777216*i[e+3]}function ra(i,e,r){i[r]=e,i[r+1]=e>>>8,i[r+2]=e>>>16,i[r+3]=e>>>24}function Iu(i,e){return(i[e]|i[e+1]<<8|i[e+2]<<16)+(i[e+3]<<24)}function mf(i,e,r){i===1&&r.readMessage(ff,e)}function ff(i,e,r){if(i===3){const{id:s,bitmap:l,width:u,height:d,left:f,top:g,advance:x}=r.readMessage(gf,{});e.push({id:s,bitmap:new ro({width:u+6,height:d+6},l),metrics:{width:u,height:d,left:f,top:g,advance:x}})}}function gf(i,e,r){i===1?e.id=r.readVarint():i===2?e.bitmap=r.readBytes():i===3?e.width=r.readVarint():i===4?e.height=r.readVarint():i===5?e.left=r.readSVarint():i===6?e.top=r.readSVarint():i===7&&(e.advance=r.readVarint())}function Au(i){let e=0,r=0;for(const d of i)e+=d.w*d.h,r=Math.max(r,d.w);i.sort((d,f)=>f.h-d.h);const s=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),r),h:1/0}];let l=0,u=0;for(const d of i)for(let f=s.length-1;f>=0;f--){const g=s[f];if(!(d.w>g.w||d.h>g.h)){if(d.x=g.x,d.y=g.y,u=Math.max(u,d.y+d.h),l=Math.max(l,d.x+d.w),d.w===g.w&&d.h===g.h){const x=s.pop();f<s.length&&(s[f]=x)}else d.h===g.h?(g.x+=d.w,g.w-=d.w):d.w===g.w?(g.y+=d.h,g.h-=d.h):(s.push({x:g.x+d.w,y:g.y,w:g.w-d.w,h:d.h}),g.y+=d.h,g.h-=d.h);break}}return{w:l,h:u,fill:e/(l*u)||0}}Pt.prototype={destroy:function(){this.buf=null},readFields:function(i,e,r){for(r=r||this.length;this.pos<r;){var s=this.readVarint(),l=s>>3,u=this.pos;this.type=7&s,i(l,e,this),this.pos===u&&this.skip(s)}return e},readMessage:function(i,e){return this.readFields(i,e,this.readVarint()+this.pos)},readFixed32:function(){var i=Tl(this.buf,this.pos);return this.pos+=4,i},readSFixed32:function(){var i=Iu(this.buf,this.pos);return this.pos+=4,i},readFixed64:function(){var i=Tl(this.buf,this.pos)+Tl(this.buf,this.pos+4)*zc;return this.pos+=8,i},readSFixed64:function(){var i=Tl(this.buf,this.pos)+Iu(this.buf,this.pos+4)*zc;return this.pos+=8,i},readFloat:function(){var i=bu(this.buf,this.pos,!0,23,4);return this.pos+=4,i},readDouble:function(){var i=bu(this.buf,this.pos,!0,52,8);return this.pos+=8,i},readVarint:function(i){var e,r,s=this.buf;return e=127&(r=s[this.pos++]),r<128?e:(e|=(127&(r=s[this.pos++]))<<7,r<128?e:(e|=(127&(r=s[this.pos++]))<<14,r<128?e:(e|=(127&(r=s[this.pos++]))<<21,r<128?e:function(l,u,d){var f,g,x=d.buf;if(f=(112&(g=x[d.pos++]))>>4,g<128||(f|=(127&(g=x[d.pos++]))<<3,g<128)||(f|=(127&(g=x[d.pos++]))<<10,g<128)||(f|=(127&(g=x[d.pos++]))<<17,g<128)||(f|=(127&(g=x[d.pos++]))<<24,g<128)||(f|=(1&(g=x[d.pos++]))<<31,g<128))return ia(l,f,u);throw new Error("Expected varint not more than 10 bytes")}(e|=(15&(r=s[this.pos]))<<28,i,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var i=this.readVarint();return i%2==1?(i+1)/-2:i/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var i=this.readVarint()+this.pos,e=this.pos;return this.pos=i,i-e>=12&&Su?function(r,s,l){return Su.decode(r.subarray(s,l))}(this.buf,e,i):function(r,s,l){for(var u="",d=s;d<l;){var f,g,x,w=r[d],T=null,A=w>239?4:w>223?3:w>191?2:1;if(d+A>l)break;A===1?w<128&&(T=w):A===2?(192&(f=r[d+1]))==128&&(T=(31&w)<<6|63&f)<=127&&(T=null):A===3?(g=r[d+2],(192&(f=r[d+1]))==128&&(192&g)==128&&((T=(15&w)<<12|(63&f)<<6|63&g)<=2047||T>=55296&&T<=57343)&&(T=null)):A===4&&(g=r[d+2],x=r[d+3],(192&(f=r[d+1]))==128&&(192&g)==128&&(192&x)==128&&((T=(15&w)<<18|(63&f)<<12|(63&g)<<6|63&x)<=65535||T>=1114112)&&(T=null)),T===null?(T=65533,A=1):T>65535&&(T-=65536,u+=String.fromCharCode(T>>>10&1023|55296),T=56320|1023&T),u+=String.fromCharCode(T),d+=A}return u}(this.buf,e,i)},readBytes:function(){var i=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,i);return this.pos=i,e},readPackedVarint:function(i,e){if(this.type!==Pt.Bytes)return i.push(this.readVarint(e));var r=tn(this);for(i=i||[];this.pos<r;)i.push(this.readVarint(e));return i},readPackedSVarint:function(i){if(this.type!==Pt.Bytes)return i.push(this.readSVarint());var e=tn(this);for(i=i||[];this.pos<e;)i.push(this.readSVarint());return i},readPackedBoolean:function(i){if(this.type!==Pt.Bytes)return i.push(this.readBoolean());var e=tn(this);for(i=i||[];this.pos<e;)i.push(this.readBoolean());return i},readPackedFloat:function(i){if(this.type!==Pt.Bytes)return i.push(this.readFloat());var e=tn(this);for(i=i||[];this.pos<e;)i.push(this.readFloat());return i},readPackedDouble:function(i){if(this.type!==Pt.Bytes)return i.push(this.readDouble());var e=tn(this);for(i=i||[];this.pos<e;)i.push(this.readDouble());return i},readPackedFixed32:function(i){if(this.type!==Pt.Bytes)return i.push(this.readFixed32());var e=tn(this);for(i=i||[];this.pos<e;)i.push(this.readFixed32());return i},readPackedSFixed32:function(i){if(this.type!==Pt.Bytes)return i.push(this.readSFixed32());var e=tn(this);for(i=i||[];this.pos<e;)i.push(this.readSFixed32());return i},readPackedFixed64:function(i){if(this.type!==Pt.Bytes)return i.push(this.readFixed64());var e=tn(this);for(i=i||[];this.pos<e;)i.push(this.readFixed64());return i},readPackedSFixed64:function(i){if(this.type!==Pt.Bytes)return i.push(this.readSFixed64());var e=tn(this);for(i=i||[];this.pos<e;)i.push(this.readSFixed64());return i},skip:function(i){var e=7&i;if(e===Pt.Varint)for(;this.buf[this.pos++]>127;);else if(e===Pt.Bytes)this.pos=this.readVarint()+this.pos;else if(e===Pt.Fixed32)this.pos+=4;else{if(e!==Pt.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8}},writeTag:function(i,e){this.writeVarint(i<<3|e)},realloc:function(i){for(var e=this.length||16;e<this.pos+i;)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(i){this.realloc(4),ra(this.buf,i,this.pos),this.pos+=4},writeSFixed32:function(i){this.realloc(4),ra(this.buf,i,this.pos),this.pos+=4},writeFixed64:function(i){this.realloc(8),ra(this.buf,-1&i,this.pos),ra(this.buf,Math.floor(i*Tu),this.pos+4),this.pos+=8},writeSFixed64:function(i){this.realloc(8),ra(this.buf,-1&i,this.pos),ra(this.buf,Math.floor(i*Tu),this.pos+4),this.pos+=8},writeVarint:function(i){(i=+i||0)>268435455||i<0?function(e,r){var s,l;if(e>=0?(s=e%4294967296|0,l=e/4294967296|0):(l=~(-e/4294967296),4294967295^(s=~(-e%4294967296))?s=s+1|0:(s=0,l=l+1|0)),e>=18446744073709552e3||e<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");r.realloc(10),function(u,d,f){f.buf[f.pos++]=127&u|128,u>>>=7,f.buf[f.pos++]=127&u|128,u>>>=7,f.buf[f.pos++]=127&u|128,u>>>=7,f.buf[f.pos++]=127&u|128,f.buf[f.pos]=127&(u>>>=7)}(s,0,r),function(u,d){var f=(7&u)<<4;d.buf[d.pos++]|=f|((u>>>=3)?128:0),u&&(d.buf[d.pos++]=127&u|((u>>>=7)?128:0),u&&(d.buf[d.pos++]=127&u|((u>>>=7)?128:0),u&&(d.buf[d.pos++]=127&u|((u>>>=7)?128:0),u&&(d.buf[d.pos++]=127&u|((u>>>=7)?128:0),u&&(d.buf[d.pos++]=127&u)))))}(l,r)}(i,this):(this.realloc(4),this.buf[this.pos++]=127&i|(i>127?128:0),i<=127||(this.buf[this.pos++]=127&(i>>>=7)|(i>127?128:0),i<=127||(this.buf[this.pos++]=127&(i>>>=7)|(i>127?128:0),i<=127||(this.buf[this.pos++]=i>>>7&127))))},writeSVarint:function(i){this.writeVarint(i<0?2*-i-1:2*i)},writeBoolean:function(i){this.writeVarint(Boolean(i))},writeString:function(i){i=String(i),this.realloc(4*i.length),this.pos++;var e=this.pos;this.pos=function(s,l,u){for(var d,f,g=0;g<l.length;g++){if((d=l.charCodeAt(g))>55295&&d<57344){if(!f){d>56319||g+1===l.length?(s[u++]=239,s[u++]=191,s[u++]=189):f=d;continue}if(d<56320){s[u++]=239,s[u++]=191,s[u++]=189,f=d;continue}d=f-55296<<10|d-56320|65536,f=null}else f&&(s[u++]=239,s[u++]=191,s[u++]=189,f=null);d<128?s[u++]=d:(d<2048?s[u++]=d>>6|192:(d<65536?s[u++]=d>>12|224:(s[u++]=d>>18|240,s[u++]=d>>12&63|128),s[u++]=d>>6&63|128),s[u++]=63&d|128)}return u}(this.buf,i,this.pos);var r=this.pos-e;r>=128&&Eu(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(i){this.realloc(4),wu(this.buf,i,this.pos,!0,23,4),this.pos+=4},writeDouble:function(i){this.realloc(8),wu(this.buf,i,this.pos,!0,52,8),this.pos+=8},writeBytes:function(i){var e=i.length;this.writeVarint(e),this.realloc(e);for(var r=0;r<e;r++)this.buf[this.pos++]=i[r]},writeRawMessage:function(i,e){this.pos++;var r=this.pos;i(e,this);var s=this.pos-r;s>=128&&Eu(r,s,this),this.pos=r-1,this.writeVarint(s),this.pos+=s},writeMessage:function(i,e,r){this.writeTag(i,Pt.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(i,e){e.length&&this.writeMessage(i,sf,e)},writePackedSVarint:function(i,e){e.length&&this.writeMessage(i,af,e)},writePackedBoolean:function(i,e){e.length&&this.writeMessage(i,cf,e)},writePackedFloat:function(i,e){e.length&&this.writeMessage(i,of,e)},writePackedDouble:function(i,e){e.length&&this.writeMessage(i,lf,e)},writePackedFixed32:function(i,e){e.length&&this.writeMessage(i,hf,e)},writePackedSFixed32:function(i,e){e.length&&this.writeMessage(i,uf,e)},writePackedFixed64:function(i,e){e.length&&this.writeMessage(i,pf,e)},writePackedSFixed64:function(i,e){e.length&&this.writeMessage(i,df,e)},writeBytesField:function(i,e){this.writeTag(i,Pt.Bytes),this.writeBytes(e)},writeFixed32Field:function(i,e){this.writeTag(i,Pt.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(i,e){this.writeTag(i,Pt.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(i,e){this.writeTag(i,Pt.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(i,e){this.writeTag(i,Pt.Fixed64),this.writeSFixed64(e)},writeVarintField:function(i,e){this.writeTag(i,Pt.Varint),this.writeVarint(e)},writeSVarintField:function(i,e){this.writeTag(i,Pt.Varint),this.writeSVarint(e)},writeStringField:function(i,e){this.writeTag(i,Pt.Bytes),this.writeString(e)},writeFloatField:function(i,e){this.writeTag(i,Pt.Fixed32),this.writeFloat(e)},writeDoubleField:function(i,e){this.writeTag(i,Pt.Fixed64),this.writeDouble(e)},writeBooleanField:function(i,e){this.writeVarintField(i,Boolean(e))}};class Lc{constructor(e,{pixelRatio:r,version:s,stretchX:l,stretchY:u,content:d}){this.paddedRect=e,this.pixelRatio=r,this.stretchX=l,this.stretchY=u,this.content=d,this.version=s}get tl(){return[this.paddedRect.x+1,this.paddedRect.y+1]}get br(){return[this.paddedRect.x+this.paddedRect.w-1,this.paddedRect.y+this.paddedRect.h-1]}get tlbr(){return this.tl.concat(this.br)}get displaySize(){return[(this.paddedRect.w-2)/this.pixelRatio,(this.paddedRect.h-2)/this.pixelRatio]}}class Cu{constructor(e,r){const s={},l={};this.haveRenderCallbacks=[];const u=[];this.addImages(e,s,u),this.addImages(r,l,u);const{w:d,h:f}=Au(u),g=new pr({width:d||1,height:f||1});for(const x in e){const w=e[x],T=s[x].paddedRect;pr.copy(w.data,g,{x:0,y:0},{x:T.x+1,y:T.y+1},w.data)}for(const x in r){const w=r[x],T=l[x].paddedRect,A=T.x+1,I=T.y+1,P=w.data.width,F=w.data.height;pr.copy(w.data,g,{x:0,y:0},{x:A,y:I},w.data),pr.copy(w.data,g,{x:0,y:F-1},{x:A,y:I-1},{width:P,height:1}),pr.copy(w.data,g,{x:0,y:0},{x:A,y:I+F},{width:P,height:1}),pr.copy(w.data,g,{x:P-1,y:0},{x:A-1,y:I},{width:1,height:F}),pr.copy(w.data,g,{x:0,y:0},{x:A+P,y:I},{width:1,height:F})}this.image=g,this.iconPositions=s,this.patternPositions=l}addImages(e,r,s){for(const l in e){const u=e[l],d={x:0,y:0,w:u.data.width+2,h:u.data.height+2};s.push(d),r[l]=new Lc(d,u),u.hasRenderCallback&&this.haveRenderCallbacks.push(l)}}patchUpdatedImages(e,r){e.dispatchRenderCallbacks(this.haveRenderCallbacks);for(const s in e.updatedImages)this.patchUpdatedImage(this.iconPositions[s],e.getImage(s),r),this.patchUpdatedImage(this.patternPositions[s],e.getImage(s),r)}patchUpdatedImage(e,r,s){if(!e||!r||e.version===r.version)return;e.version=r.version;const[l,u]=e.tl;s.update(r.data,void 0,{x:l,y:u})}}$e("ImagePosition",Lc),$e("ImageAtlas",Cu),c.WritingMode=void 0,(Rn=c.WritingMode||(c.WritingMode={}))[Rn.none=0]="none",Rn[Rn.horizontal=1]="horizontal",Rn[Rn.vertical=2]="vertical",Rn[Rn.horizontalOnly=3]="horizontalOnly";const Sl=-17;class uo{constructor(){this.scale=1,this.fontStack="",this.imageName=null}static forText(e,r){const s=new uo;return s.scale=e||1,s.fontStack=r,s}static forImage(e){const r=new uo;return r.imageName=e,r}}class na{constructor(){this.text="",this.sectionIndex=[],this.sections=[],this.imageSectionID=null}static fromFeature(e,r){const s=new na;for(let l=0;l<e.sections.length;l++){const u=e.sections[l];u.image?s.addImageSection(u):s.addTextSection(u,r)}return s}length(){return this.text.length}getSection(e){return this.sections[this.sectionIndex[e]]}getSectionIndex(e){return this.sectionIndex[e]}getCharCode(e){return this.text.charCodeAt(e)}verticalizePunctuation(){this.text=function(e){let r="";for(let s=0;s<e.length;s++){const l=e.charCodeAt(s+1)||null,u=e.charCodeAt(s-1)||null;r+=l&&ll(l)&&!ho[e[s+1]]||u&&ll(u)&&!ho[e[s-1]]||!ho[e[s]]?e[s]:ho[e[s]]}return r}(this.text)}trim(){let e=0;for(let s=0;s<this.text.length&&Il[this.text.charCodeAt(s)];s++)e++;let r=this.text.length;for(let s=this.text.length-1;s>=0&&s>=e&&Il[this.text.charCodeAt(s)];s--)r--;this.text=this.text.substring(e,r),this.sectionIndex=this.sectionIndex.slice(e,r)}substring(e,r){const s=new na;return s.text=this.text.substring(e,r),s.sectionIndex=this.sectionIndex.slice(e,r),s.sections=this.sections,s}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((e,r)=>Math.max(e,this.sections[r].scale),0)}addTextSection(e,r){this.text+=e.text,this.sections.push(uo.forText(e.scale,e.fontStack||r));const s=this.sections.length-1;for(let l=0;l<e.text.length;++l)this.sectionIndex.push(s)}addImageSection(e){const r=e.image?e.image.name:"";if(r.length===0)return void Yt("Can't add FormattedSection with an empty image.");const s=this.getNextImageSectionCharCode();s?(this.text+=String.fromCharCode(s),this.sections.push(uo.forImage(r)),this.sectionIndex.push(this.sections.length-1)):Yt("Reached maximum number of images 6401")}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function El(i,e,r,s,l,u,d,f,g,x,w,T,A,I,P,F){const O=na.fromFeature(i,l);let G;T===c.WritingMode.vertical&&O.verticalizePunctuation();const{processBidirectionalText:Y,processStyledBidirectionalText:$}=ji;if(Y&&O.sections.length===1){G=[];const ue=Y(O.toString(),Dc(O,x,u,e,s,I,P));for(const Ne of ue){const qe=new na;qe.text=Ne,qe.sections=O.sections;for(let Ue=0;Ue<Ne.length;Ue++)qe.sectionIndex.push(0);G.push(qe)}}else if($){G=[];const ue=$(O.text,O.sectionIndex,Dc(O,x,u,e,s,I,P));for(const Ne of ue){const qe=new na;qe.text=Ne[0],qe.sectionIndex=Ne[1],qe.sections=O.sections,G.push(qe)}}else G=function(ue,Ne){const qe=[],Ue=ue.text;let Re=0;for(const ze of Ne)qe.push(ue.substring(Re,ze)),Re=ze;return Re<Ue.length&&qe.push(ue.substring(Re,Ue.length)),qe}(O,Dc(O,x,u,e,s,I,P));const J=[],pe={positionedLines:J,text:O.toString(),top:w[1],bottom:w[1],left:w[0],right:w[0],writingMode:T,iconsInText:!1,verticalizable:!1};return function(ue,Ne,qe,Ue,Re,ze,Ve,Be,Se,He,Ze,ct){let Gt=0,Zt=Sl,oi=0,mr=0;const fi=Be==="right"?1:Be==="left"?0:.5;let ri=0;for(const ni of Re){ni.trim();const _i=ni.getMaxScale(),Mi=(_i-1)*pi,Bi={positionedGlyphs:[],lineOffset:0};ue.positionedLines[ri]=Bi;const qi=Bi.positionedGlyphs;let Zi=0;if(!ni.length()){Zt+=ze,++ri;continue}for(let yi=0;yi<ni.length();yi++){const ht=ni.getSection(yi),rr=ni.getSectionIndex(yi),xi=ni.getCharCode(yi);let Pi=0,xr=null,Cr=null,Mr=null,nn=pi;const vr=!(Se===c.WritingMode.horizontal||!Ze&&!Va(xi)||Ze&&(Il[xi]||(hi=xi,Oe.Arabic(hi)||Oe["Arabic Supplement"](hi)||Oe["Arabic Extended-A"](hi)||Oe["Arabic Presentation Forms-A"](hi)||Oe["Arabic Presentation Forms-B"](hi))));if(ht.imageName){const fr=Ue[ht.imageName];if(!fr)continue;Mr=ht.imageName,ue.iconsInText=ue.iconsInText||!0,Cr=fr.paddedRect;const Xi=fr.displaySize;ht.scale=ht.scale*pi/ct,xr={width:Xi[0],height:Xi[1],left:1,top:-3,advance:vr?Xi[1]:Xi[0]},Pi=Mi+(pi-Xi[1]*ht.scale),nn=xr.advance;const sn=vr?Xi[0]*ht.scale-pi*_i:Xi[1]*ht.scale-pi*_i;sn>0&&sn>Zi&&(Zi=sn)}else{const fr=qe[ht.fontStack],Xi=fr&&fr[xi];if(Xi&&Xi.rect)Cr=Xi.rect,xr=Xi.metrics;else{const sn=Ne[ht.fontStack],go=sn&&sn[xi];if(!go)continue;xr=go.metrics}Pi=(_i-ht.scale)*pi}vr?(ue.verticalizable=!0,qi.push({glyph:xi,imageName:Mr,x:Gt,y:Zt+Pi,vertical:vr,scale:ht.scale,fontStack:ht.fontStack,sectionIndex:rr,metrics:xr,rect:Cr}),Gt+=nn*ht.scale+He):(qi.push({glyph:xi,imageName:Mr,x:Gt,y:Zt+Pi,vertical:vr,scale:ht.scale,fontStack:ht.fontStack,sectionIndex:rr,metrics:xr,rect:Cr}),Gt+=xr.advance*ht.scale+He)}qi.length!==0&&(oi=Math.max(Gt-He,oi),xf(qi,0,qi.length-1,fi,Zi)),Gt=0;const Kt=ze*_i+Zi;Bi.lineOffset=Math.max(Zi,Mi),Zt+=Kt,mr=Math.max(Kt,mr),++ri}var hi;const gi=Zt-Sl,{horizontalAlign:Ci,verticalAlign:Gi}=Rc(Ve);(function(ni,_i,Mi,Bi,qi,Zi,Kt,yi,ht){const rr=(_i-Mi)*qi;let xi=0;xi=Zi!==Kt?-yi*Bi-Sl:(-Bi*ht+.5)*Kt;for(const Pi of ni)for(const xr of Pi.positionedGlyphs)xr.x+=rr,xr.y+=xi})(ue.positionedLines,fi,Ci,Gi,oi,mr,ze,gi,Re.length),ue.top+=-Gi*gi,ue.bottom=ue.top+gi,ue.left+=-Ci*oi,ue.right=ue.left+oi}(pe,e,r,s,G,d,f,g,T,x,A,F),!function(ue){for(const Ne of ue)if(Ne.positionedGlyphs.length!==0)return!1;return!0}(J)&&pe}const Il={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},_f={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 Mu(i,e,r,s,l,u){if(e.imageName){const d=s[e.imageName];return d?d.displaySize[0]*e.scale*pi/u+l:0}{const d=r[e.fontStack],f=d&&d[i];return f?f.metrics.advance*e.scale+l:0}}function Pu(i,e,r,s){const l=Math.pow(i-e,2);return s?i<e?l/2:2*l:l+Math.abs(r)*r}function yf(i,e,r){let s=0;return i===10&&(s-=1e4),r&&(s+=150),i!==40&&i!==65288||(s+=50),e!==41&&e!==65289||(s+=50),s}function ku(i,e,r,s,l,u){let d=null,f=Pu(e,r,l,u);for(const g of s){const x=Pu(e-g.x,r,l,u)+g.badness;x<=f&&(d=g,f=x)}return{index:i,x:e,priorBreak:d,badness:f}}function zu(i){return i?zu(i.priorBreak).concat(i.index):[]}function Dc(i,e,r,s,l,u,d){if(u!=="point")return[];if(!i)return[];const f=[],g=function(A,I,P,F,O,G){let Y=0;for(let $=0;$<A.length();$++){const J=A.getSection($);Y+=Mu(A.getCharCode($),J,F,O,I,G)}return Y/Math.max(1,Math.ceil(Y/P))}(i,e,r,s,l,d),x=i.text.indexOf("\u200B")>=0;let w=0;for(let A=0;A<i.length();A++){const I=i.getSection(A),P=i.getCharCode(A);if(Il[P]||(w+=Mu(P,I,s,l,e,d)),A<i.length()-1){const F=!((T=P)<11904||!(Oe["Bopomofo Extended"](T)||Oe.Bopomofo(T)||Oe["CJK Compatibility Forms"](T)||Oe["CJK Compatibility Ideographs"](T)||Oe["CJK Compatibility"](T)||Oe["CJK Radicals Supplement"](T)||Oe["CJK Strokes"](T)||Oe["CJK Symbols and Punctuation"](T)||Oe["CJK Unified Ideographs Extension A"](T)||Oe["CJK Unified Ideographs"](T)||Oe["Enclosed CJK Letters and Months"](T)||Oe["Halfwidth and Fullwidth Forms"](T)||Oe.Hiragana(T)||Oe["Ideographic Description Characters"](T)||Oe["Kangxi Radicals"](T)||Oe["Katakana Phonetic Extensions"](T)||Oe.Katakana(T)||Oe["Vertical Forms"](T)||Oe["Yi Radicals"](T)||Oe["Yi Syllables"](T)));(_f[P]||F||I.imageName)&&f.push(ku(A+1,w,g,f,yf(P,i.getCharCode(A+1),F&&x),!1))}}var T;return zu(ku(i.length(),w,g,f,0,!0))}function Rc(i){let e=.5,r=.5;switch(i){case"right":case"top-right":case"bottom-right":e=1;break;case"left":case"top-left":case"bottom-left":e=0}switch(i){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 xf(i,e,r,s,l){if(!s&&!l)return;const u=i[r],d=(i[r].x+u.metrics.advance*u.scale)*s;for(let f=e;f<=r;f++)i[f].x-=d,i[f].y+=l}function vf(i,e,r){const{horizontalAlign:s,verticalAlign:l}=Rc(r),u=e[0]-i.displaySize[0]*s,d=e[1]-i.displaySize[1]*l;return{image:i,top:d,bottom:d+i.displaySize[1],left:u,right:u+i.displaySize[0]}}function Lu(i,e,r,s,l,u){const d=i.image;let f;if(d.content){const O=d.content,G=d.pixelRatio||1;f=[O[0]/G,O[1]/G,d.displaySize[0]-O[2]/G,d.displaySize[1]-O[3]/G]}const g=e.left*u,x=e.right*u;let w,T,A,I;r==="width"||r==="both"?(I=l[0]+g-s[3],T=l[0]+x+s[1]):(I=l[0]+(g+x-d.displaySize[0])/2,T=I+d.displaySize[0]);const P=e.top*u,F=e.bottom*u;return r==="height"||r==="both"?(w=l[1]+P-s[0],A=l[1]+F+s[2]):(w=l[1]+(P+F-d.displaySize[1])/2,A=w+d.displaySize[1]),{image:d,top:w,right:T,bottom:A,left:I,collisionPadding:f}}const rn=128;function Du(i,e){const{expression:r}=e;if(r.kind==="constant")return{kind:"constant",layoutSize:r.evaluate(new Vt(i+1))};if(r.kind==="source")return{kind:"source"};{const{zoomStops:s,interpolationType:l}=r;let u=0;for(;u<s.length&&s[u]<=i;)u++;u=Math.max(0,u-1);let d=u;for(;d<s.length&&s[d]<i+1;)d++;d=Math.min(s.length-1,d);const f=s[u],g=s[d];return r.kind==="composite"?{kind:"composite",minZoom:f,maxZoom:g,interpolationType:l}:{kind:"camera",minZoom:f,maxZoom:g,minSize:r.evaluate(new Vt(f)),maxSize:r.evaluate(new Vt(g)),interpolationType:l}}}class Bn extends it{constructor(e,r,s,l){super(e,r),this.angle=s,l!==void 0&&(this.segment=l)}clone(){return new Bn(this.x,this.y,this.angle,this.segment)}}function Ru(i,e,r,s,l){if(e.segment===void 0)return!0;let u=e,d=e.segment+1,f=0;for(;f>-r/2;){if(d--,d<0)return!1;f-=i[d].dist(u),u=i[d]}f+=i[d].dist(i[d+1]),d++;const g=[];let x=0;for(;f<r/2;){const w=i[d],T=i[d+1];if(!T)return!1;let A=i[d-1].angleTo(w)-w.angleTo(T);for(A=Math.abs((A+3*Math.PI)%(2*Math.PI)-Math.PI),g.push({distance:f,angleDelta:A}),x+=A;f-g[0].distance>s;)x-=g.shift().angleDelta;if(x>l)return!1;d++,f+=w.dist(T)}return!0}function Bu(i){let e=0;for(let r=0;r<i.length-1;r++)e+=i[r].dist(i[r+1]);return e}function Fu(i,e,r){return i?.6*e*r:0}function Ou(i,e){return Math.max(i?i.right-i.left:0,e?e.right-e.left:0)}function bf(i,e,r,s,l,u){const d=Fu(r,l,u),f=Ou(r,s)*u;let g=0;const x=Bu(i)/2;for(let w=0;w<i.length-1;w++){const T=i[w],A=i[w+1],I=T.dist(A);if(g+I>x){const P=(x-g)/I,F=qt(T.x,A.x,P),O=qt(T.y,A.y,P),G=new Bn(F,O,A.angleTo(T),w);return G._round(),!d||Ru(i,G,f,d,e)?G:void 0}g+=I}}function wf(i,e,r,s,l,u,d,f,g){const x=Fu(s,u,d),w=Ou(s,l),T=w*d,A=i[0].x===0||i[0].x===g||i[0].y===0||i[0].y===g;return e-T<e/4&&(e=T+e/4),Uu(i,A?e/2*f%e:(w/2+2*u)*d*f%e,e,x,r,T,A,!1,g)}function Uu(i,e,r,s,l,u,d,f,g){const x=u/2,w=Bu(i);let T=0,A=e-r,I=[];for(let P=0;P<i.length-1;P++){const F=i[P],O=i[P+1],G=F.dist(O),Y=O.angleTo(F);for(;A+r<T+G;){A+=r;const $=(A-T)/G,J=qt(F.x,O.x,$),pe=qt(F.y,O.y,$);if(J>=0&&J<g&&pe>=0&&pe<g&&A-x>=0&&A+x<=w){const ue=new Bn(J,pe,Y,P);ue._round(),s&&!Ru(i,ue,u,s,l)||I.push(ue)}}T+=G}return f||I.length||d||(I=Uu(i,T/2,r,s,l,u,d,!0,g)),I}function Vu(i,e,r,s,l){const u=[];for(let d=0;d<i.length;d++){const f=i[d];let g;for(let x=0;x<f.length-1;x++){let w=f[x],T=f[x+1];w.x<e&&T.x<e||(w.x<e?w=new it(e,w.y+(e-w.x)/(T.x-w.x)*(T.y-w.y))._round():T.x<e&&(T=new it(e,w.y+(e-w.x)/(T.x-w.x)*(T.y-w.y))._round()),w.y<r&&T.y<r||(w.y<r?w=new it(w.x+(r-w.y)/(T.y-w.y)*(T.x-w.x),r)._round():T.y<r&&(T=new it(w.x+(r-w.y)/(T.y-w.y)*(T.x-w.x),r)._round()),w.x>=s&&T.x>=s||(w.x>=s?w=new it(s,w.y+(s-w.x)/(T.x-w.x)*(T.y-w.y))._round():T.x>=s&&(T=new it(s,w.y+(s-w.x)/(T.x-w.x)*(T.y-w.y))._round()),w.y>=l&&T.y>=l||(w.y>=l?w=new it(w.x+(l-w.y)/(T.y-w.y)*(T.x-w.x),l)._round():T.y>=l&&(T=new it(w.x+(l-w.y)/(T.y-w.y)*(T.x-w.x),l)._round()),g&&w.equals(g[g.length-1])||(g=[w],u.push(g)),g.push(T)))))}}return u}function Nu(i,e,r,s){const l=[],u=i.image,d=u.pixelRatio,f=u.paddedRect.w-2,g=u.paddedRect.h-2,x=i.right-i.left,w=i.bottom-i.top,T=u.stretchX||[[0,f]],A=u.stretchY||[[0,g]],I=(ze,Ve)=>ze+Ve[1]-Ve[0],P=T.reduce(I,0),F=A.reduce(I,0),O=f-P,G=g-F;let Y=0,$=P,J=0,pe=F,ue=0,Ne=O,qe=0,Ue=G;if(u.content&&s){const ze=u.content;Y=Al(T,0,ze[0]),J=Al(A,0,ze[1]),$=Al(T,ze[0],ze[2]),pe=Al(A,ze[1],ze[3]),ue=ze[0]-Y,qe=ze[1]-J,Ne=ze[2]-ze[0]-$,Ue=ze[3]-ze[1]-pe}const Re=(ze,Ve,Be,Se)=>{const He=Cl(ze.stretch-Y,$,x,i.left),Ze=Ml(ze.fixed-ue,Ne,ze.stretch,P),ct=Cl(Ve.stretch-J,pe,w,i.top),Gt=Ml(Ve.fixed-qe,Ue,Ve.stretch,F),Zt=Cl(Be.stretch-Y,$,x,i.left),oi=Ml(Be.fixed-ue,Ne,Be.stretch,P),mr=Cl(Se.stretch-J,pe,w,i.top),fi=Ml(Se.fixed-qe,Ue,Se.stretch,F),ri=new it(He,ct),hi=new it(Zt,ct),gi=new it(Zt,mr),Ci=new it(He,mr),Gi=new it(Ze/d,Gt/d),ni=new it(oi/d,fi/d),_i=e*Math.PI/180;if(_i){const qi=Math.sin(_i),Zi=Math.cos(_i),Kt=[Zi,-qi,qi,Zi];ri._matMult(Kt),hi._matMult(Kt),Ci._matMult(Kt),gi._matMult(Kt)}const Mi=ze.stretch+ze.fixed,Bi=Ve.stretch+Ve.fixed;return{tl:ri,tr:hi,bl:Ci,br:gi,tex:{x:u.paddedRect.x+1+Mi,y:u.paddedRect.y+1+Bi,w:Be.stretch+Be.fixed-Mi,h:Se.stretch+Se.fixed-Bi},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:Gi,pixelOffsetBR:ni,minFontScaleX:Ne/d/x,minFontScaleY:Ue/d/w,isSDF:r}};if(s&&(u.stretchX||u.stretchY)){const ze=$u(T,O,P),Ve=$u(A,G,F);for(let Be=0;Be<ze.length-1;Be++){const Se=ze[Be],He=ze[Be+1];for(let Ze=0;Ze<Ve.length-1;Ze++)l.push(Re(Se,Ve[Ze],He,Ve[Ze+1]))}}else l.push(Re({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:f+1},{fixed:0,stretch:g+1}));return l}function Al(i,e,r){let s=0;for(const l of i)s+=Math.max(e,Math.min(r,l[1]))-Math.max(e,Math.min(r,l[0]));return s}function $u(i,e,r){const s=[{fixed:-1,stretch:0}];for(const[l,u]of i){const d=s[s.length-1];s.push({fixed:l-d.stretch,stretch:d.stretch}),s.push({fixed:l-d.stretch,stretch:d.stretch+(u-l)})}return s.push({fixed:e+1,stretch:r}),s}function Cl(i,e,r,s){return i/e*r+s}function Ml(i,e,r,s){return i-e*r/s}$e("Anchor",Bn);class Pl{constructor(e,r,s,l,u,d,f,g,x,w){if(this.boxStartIndex=e.length,x){let T=d.top,A=d.bottom;const I=d.collisionPadding;I&&(T-=I[1],A+=I[3]);let P=A-T;P>0&&(P=Math.max(10,P),this.circleDiameter=P)}else{let T=d.top*f-g[0],A=d.bottom*f+g[2],I=d.left*f-g[3],P=d.right*f+g[1];const F=d.collisionPadding;if(F&&(I-=F[0]*f,T-=F[1]*f,P+=F[2]*f,A+=F[3]*f),w){const O=new it(I,T),G=new it(P,T),Y=new it(I,A),$=new it(P,A),J=w*Math.PI/180;O._rotate(J),G._rotate(J),Y._rotate(J),$._rotate(J),I=Math.min(O.x,G.x,Y.x,$.x),P=Math.max(O.x,G.x,Y.x,$.x),T=Math.min(O.y,G.y,Y.y,$.y),A=Math.max(O.y,G.y,Y.y,$.y)}e.emplaceBack(r.x,r.y,I,T,P,A,s,l,u)}this.boxEndIndex=e.length}}class Tf{constructor(e=[],r=Sf){if(this.data=e,this.length=this.data.length,this.compare=r,this.length>0)for(let s=(this.length>>1)-1;s>=0;s--)this._down(s)}push(e){this.data.push(e),this.length++,this._up(this.length-1)}pop(){if(this.length===0)return;const e=this.data[0],r=this.data.pop();return this.length--,this.length>0&&(this.data[0]=r,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:r,compare:s}=this,l=r[e];for(;e>0;){const u=e-1>>1,d=r[u];if(s(l,d)>=0)break;r[e]=d,e=u}r[e]=l}_down(e){const{data:r,compare:s}=this,l=this.length>>1,u=r[e];for(;e<l;){let d=1+(e<<1),f=r[d];const g=d+1;if(g<this.length&&s(r[g],f)<0&&(d=g,f=r[g]),s(f,u)>=0)break;r[e]=f,e=d}r[e]=u}}function Sf(i,e){return i<e?-1:i>e?1:0}function Ef(i,e=1,r=!1){let s=1/0,l=1/0,u=-1/0,d=-1/0;const f=i[0];for(let I=0;I<f.length;I++){const P=f[I];(!I||P.x<s)&&(s=P.x),(!I||P.y<l)&&(l=P.y),(!I||P.x>u)&&(u=P.x),(!I||P.y>d)&&(d=P.y)}const g=Math.min(u-s,d-l);let x=g/2;const w=new Tf([],If);if(g===0)return new it(s,l);for(let I=s;I<u;I+=g)for(let P=l;P<d;P+=g)w.push(new sa(I+x,P+x,x,i));let T=function(I){let P=0,F=0,O=0;const G=I[0];for(let Y=0,$=G.length,J=$-1;Y<$;J=Y++){const pe=G[Y],ue=G[J],Ne=pe.x*ue.y-ue.x*pe.y;F+=(pe.x+ue.x)*Ne,O+=(pe.y+ue.y)*Ne,P+=3*Ne}return new sa(F/P,O/P,0,I)}(i),A=w.length;for(;w.length;){const I=w.pop();(I.d>T.d||!T.d)&&(T=I,r&&console.log("found best %d after %d probes",Math.round(1e4*I.d)/1e4,A)),I.max-T.d<=e||(x=I.h/2,w.push(new sa(I.p.x-x,I.p.y-x,x,i)),w.push(new sa(I.p.x+x,I.p.y-x,x,i)),w.push(new sa(I.p.x-x,I.p.y+x,x,i)),w.push(new sa(I.p.x+x,I.p.y+x,x,i)),A+=4)}return r&&(console.log(`num probes: ${A}`),console.log(`best distance: ${T.d}`)),T.p}function If(i,e){return e.max-i.max}function sa(i,e,r,s){this.p=new it(i,e),this.h=r,this.d=function(l,u){let d=!1,f=1/0;for(let g=0;g<u.length;g++){const x=u[g];for(let w=0,T=x.length,A=T-1;w<T;A=w++){const I=x[w],P=x[A];I.y>l.y!=P.y>l.y&&l.x<(P.x-I.x)*(l.y-I.y)/(P.y-I.y)+I.x&&(d=!d),f=Math.min(f,Jh(l,I,P))}}return(d?1:-1)*Math.sqrt(f)}(this.p,s),this.max=this.d+this.h*Math.SQRT2}const Bc=Number.POSITIVE_INFINITY;function ju(i,e){return e[1]!==Bc?function(r,s,l){let u=0,d=0;switch(s=Math.abs(s),l=Math.abs(l),r){case"top-right":case"top-left":case"top":d=l-7;break;case"bottom-right":case"bottom-left":case"bottom":d=7-l}switch(r){case"top-right":case"bottom-right":case"right":u=-s;break;case"top-left":case"bottom-left":case"left":u=s}return[u,d]}(i,e[0],e[1]):function(r,s){let l=0,u=0;s<0&&(s=0);const d=s/Math.sqrt(2);switch(r){case"top-right":case"top-left":u=d-7;break;case"bottom-right":case"bottom-left":u=7-d;break;case"bottom":u=7-s;break;case"top":u=s-7}switch(r){case"top-right":case"bottom-right":l=-d;break;case"top-left":case"bottom-left":l=d;break;case"left":l=s;break;case"right":l=-s}return[l,u]}(i,e[0])}function Fc(i){switch(i){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function Af(i,e,r,s,l,u,d,f,g,x,w){let T=u.textMaxSize.evaluate(e,{});T===void 0&&(T=d);const A=i.layers[0].layout,I=A.get("icon-offset").evaluate(e,{},w),P=qu(r.horizontal),F=d/24,O=i.tilePixelRatio*F,G=i.tilePixelRatio*T/24,Y=i.tilePixelRatio*f,$=i.tilePixelRatio*A.get("symbol-spacing"),J=A.get("text-padding")*i.tilePixelRatio,pe=function(Se,He,Ze,ct=1){const Gt=Se.get("icon-padding").evaluate(He,{},Ze),Zt=Gt&&Gt.values;return[Zt[0]*ct,Zt[1]*ct,Zt[2]*ct,Zt[3]*ct]}(A,e,w,i.tilePixelRatio),ue=A.get("text-max-angle")/180*Math.PI,Ne=A.get("text-rotation-alignment")!=="viewport"&&A.get("symbol-placement")!=="point",qe=A.get("icon-rotation-alignment")==="map"&&A.get("symbol-placement")!=="point",Ue=A.get("symbol-placement"),Re=$/2,ze=A.get("icon-text-fit");let Ve;s&&ze!=="none"&&(i.allowVerticalPlacement&&r.vertical&&(Ve=Lu(s,r.vertical,ze,A.get("icon-text-fit-padding"),I,F)),P&&(s=Lu(s,P,ze,A.get("icon-text-fit-padding"),I,F)));const Be=(Se,He)=>{He.x<0||He.x>=ai||He.y<0||He.y>=ai||function(Ze,ct,Gt,Zt,oi,mr,fi,ri,hi,gi,Ci,Gi,ni,_i,Mi,Bi,qi,Zi,Kt,yi,ht,rr,xi,Pi,xr){const Cr=Ze.addToLineVertexArray(ct,Gt);let Mr,nn,vr,fr,Xi=0,sn=0,go=0,cp=0,Kc=-1,Jc=-1;const an={};let hp=Ai(""),Yc=0,Qc=0;if(ri._unevaluatedLayout.getValue("text-radial-offset")===void 0?[Yc,Qc]=ri.layout.get("text-offset").evaluate(ht,{},Pi).map(Wi=>Wi*pi):(Yc=ri.layout.get("text-radial-offset").evaluate(ht,{},Pi)*pi,Qc=Bc),Ze.allowVerticalPlacement&&Zt.vertical){const Wi=ri.layout.get("text-rotate").evaluate(ht,{},Pi)+90;vr=new Pl(hi,ct,gi,Ci,Gi,Zt.vertical,ni,_i,Mi,Wi),fi&&(fr=new Pl(hi,ct,gi,Ci,Gi,fi,qi,Zi,Mi,Wi))}if(oi){const Wi=ri.layout.get("icon-rotate").evaluate(ht,{}),jr=ri.layout.get("icon-text-fit")!=="none",_o=Nu(oi,Wi,xi,jr),yo=fi?Nu(fi,Wi,xi,jr):void 0;nn=new Pl(hi,ct,gi,Ci,Gi,oi,qi,Zi,!1,Wi),Xi=4*_o.length;const dp=Ze.iconSizeData;let vs=null;dp.kind==="source"?(vs=[rn*ri.layout.get("icon-size").evaluate(ht,{})],vs[0]>Fn&&Yt(`${Ze.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)):dp.kind==="composite"&&(vs=[rn*rr.compositeIconSizes[0].evaluate(ht,{},Pi),rn*rr.compositeIconSizes[1].evaluate(ht,{},Pi)],(vs[0]>Fn||vs[1]>Fn)&&Yt(`${Ze.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)),Ze.addSymbols(Ze.icon,_o,vs,yi,Kt,ht,c.WritingMode.none,ct,Cr.lineStartIndex,Cr.lineLength,-1,Pi),Kc=Ze.icon.placedSymbolArray.length-1,yo&&(sn=4*yo.length,Ze.addSymbols(Ze.icon,yo,vs,yi,Kt,ht,c.WritingMode.vertical,ct,Cr.lineStartIndex,Cr.lineLength,-1,Pi),Jc=Ze.icon.placedSymbolArray.length-1)}const up=Object.keys(Zt.horizontal);for(const Wi of up){const jr=Zt.horizontal[Wi];if(!Mr){hp=Ai(jr.text);const yo=ri.layout.get("text-rotate").evaluate(ht,{},Pi);Mr=new Pl(hi,ct,gi,Ci,Gi,jr,ni,_i,Mi,yo)}const _o=jr.positionedLines.length===1;if(go+=Gu(Ze,ct,jr,mr,ri,Mi,ht,Bi,Cr,Zt.vertical?c.WritingMode.horizontal:c.WritingMode.horizontalOnly,_o?up:[Wi],an,Kc,rr,Pi),_o)break}Zt.vertical&&(cp+=Gu(Ze,ct,Zt.vertical,mr,ri,Mi,ht,Bi,Cr,c.WritingMode.vertical,["vertical"],an,Jc,rr,Pi));const $f=Mr?Mr.boxStartIndex:Ze.collisionBoxArray.length,jf=Mr?Mr.boxEndIndex:Ze.collisionBoxArray.length,Gf=vr?vr.boxStartIndex:Ze.collisionBoxArray.length,qf=vr?vr.boxEndIndex:Ze.collisionBoxArray.length,Zf=nn?nn.boxStartIndex:Ze.collisionBoxArray.length,Xf=nn?nn.boxEndIndex:Ze.collisionBoxArray.length,Wf=fr?fr.boxStartIndex:Ze.collisionBoxArray.length,Hf=fr?fr.boxEndIndex:Ze.collisionBoxArray.length;let Pr=-1;const Rl=(Wi,jr)=>Wi&&Wi.circleDiameter?Math.max(Wi.circleDiameter,jr):jr;Pr=Rl(Mr,Pr),Pr=Rl(vr,Pr),Pr=Rl(nn,Pr),Pr=Rl(fr,Pr);const pp=Pr>-1?1:0;pp&&(Pr*=xr/pi),Ze.glyphOffsetArray.length>=aa.MAX_GLYPHS&&Yt("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),ht.sortKey!==void 0&&Ze.addToSortKeyRanges(Ze.symbolInstances.length,ht.sortKey),Ze.symbolInstances.emplaceBack(ct.x,ct.y,an.right>=0?an.right:-1,an.center>=0?an.center:-1,an.left>=0?an.left:-1,an.vertical||-1,Kc,Jc,hp,$f,jf,Gf,qf,Zf,Xf,Wf,Hf,gi,go,cp,Xi,sn,pp,0,ni,Yc,Qc,Pr)}(i,He,Se,r,s,l,Ve,i.layers[0],i.collisionBoxArray,e.index,e.sourceLayerIndex,i.index,O,[J,J,J,J],Ne,g,Y,pe,qe,I,e,u,x,w,d)};if(Ue==="line")for(const Se of Vu(e.geometry,0,0,ai,ai)){const He=wf(Se,$,ue,r.vertical||P,s,24,G,i.overscaling,ai);for(const Ze of He)P&&Cf(i,P.text,Re,Ze)||Be(Se,Ze)}else if(Ue==="line-center"){for(const Se of e.geometry)if(Se.length>1){const He=bf(Se,ue,r.vertical||P,s,24,G);He&&Be(Se,He)}}else if(e.type==="Polygon")for(const Se of Sc(e.geometry,0)){const He=Ef(Se,16);Be(Se[0],new Bn(He.x,He.y,0))}else if(e.type==="LineString")for(const Se of e.geometry)Be(Se,new Bn(Se[0].x,Se[0].y,0));else if(e.type==="Point")for(const Se of e.geometry)for(const He of Se)Be([He],new Bn(He.x,He.y,0))}const Fn=32640;function Gu(i,e,r,s,l,u,d,f,g,x,w,T,A,I,P){const F=function(Y,$,J,pe,ue,Ne,qe,Ue){const Re=pe.layout.get("text-rotate").evaluate(Ne,{})*Math.PI/180,ze=[];for(const Ve of $.positionedLines)for(const Be of Ve.positionedGlyphs){if(!Be.rect)continue;const Se=Be.rect||{};let He=4,Ze=!0,ct=1,Gt=0;const Zt=(ue||Ue)&&Be.vertical,oi=Be.metrics.advance*Be.scale/2;if(Ue&&$.verticalizable&&(Gt=Ve.lineOffset/2-(Be.imageName?-(pi-Be.metrics.width*Be.scale)/2:(Be.scale-1)*pi)),Be.imageName){const Kt=qe[Be.imageName];Ze=Kt.sdf,ct=Kt.pixelRatio,He=1/ct}const mr=ue?[Be.x+oi,Be.y]:[0,0];let fi=ue?[0,0]:[Be.x+oi+J[0],Be.y+J[1]-Gt],ri=[0,0];Zt&&(ri=fi,fi=[0,0]);const hi=(Be.metrics.left-He)*Be.scale-oi+fi[0],gi=(-Be.metrics.top-He)*Be.scale+fi[1],Ci=hi+Se.w*Be.scale/ct,Gi=gi+Se.h*Be.scale/ct,ni=new it(hi,gi),_i=new it(Ci,gi),Mi=new it(hi,Gi),Bi=new it(Ci,Gi);if(Zt){const Kt=new it(-oi,oi-Sl),yi=-Math.PI/2,ht=12-oi,rr=new it(22-ht,-(Be.imageName?ht:0)),xi=new it(...ri);ni._rotateAround(yi,Kt)._add(rr)._add(xi),_i._rotateAround(yi,Kt)._add(rr)._add(xi),Mi._rotateAround(yi,Kt)._add(rr)._add(xi),Bi._rotateAround(yi,Kt)._add(rr)._add(xi)}if(Re){const Kt=Math.sin(Re),yi=Math.cos(Re),ht=[yi,-Kt,Kt,yi];ni._matMult(ht),_i._matMult(ht),Mi._matMult(ht),Bi._matMult(ht)}const qi=new it(0,0),Zi=new it(0,0);ze.push({tl:ni,tr:_i,bl:Mi,br:Bi,tex:Se,writingMode:$.writingMode,glyphOffset:mr,sectionIndex:Be.sectionIndex,isSDF:Ze,pixelOffsetTL:qi,pixelOffsetBR:Zi,minFontScaleX:0,minFontScaleY:0})}return ze}(0,r,f,l,u,d,s,i.allowVerticalPlacement),O=i.textSizeData;let G=null;O.kind==="source"?(G=[rn*l.layout.get("text-size").evaluate(d,{})],G[0]>Fn&&Yt(`${i.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)):O.kind==="composite"&&(G=[rn*I.compositeTextSizes[0].evaluate(d,{},P),rn*I.compositeTextSizes[1].evaluate(d,{},P)],(G[0]>Fn||G[1]>Fn)&&Yt(`${i.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)),i.addSymbols(i.text,F,G,f,u,d,x,e,g.lineStartIndex,g.lineLength,A,P);for(const Y of w)T[Y]=i.text.placedSymbolArray.length-1;return 4*F.length}function qu(i){for(const e in i)return i[e];return null}function Cf(i,e,r,s){const l=i.compareText;if(e in l){const u=l[e];for(let d=u.length-1;d>=0;d--)if(s.dist(u[d])<r)return!0}else l[e]=[];return l[e].push(s),!1}const Mf=Dn.VectorTileFeature.types,Pf=[{name:"a_fade_opacity",components:1,type:"Uint8",offset:0}];function kl(i,e,r,s,l,u,d,f,g,x,w,T,A){const I=f?Math.min(Fn,Math.round(f[0])):0,P=f?Math.min(Fn,Math.round(f[1])):0;i.emplaceBack(e,r,Math.round(32*s),Math.round(32*l),u,d,(I<<1)+(g?1:0),P,16*x,16*w,256*T,256*A)}function Oc(i,e,r){i.emplaceBack(e.x,e.y,r),i.emplaceBack(e.x,e.y,r),i.emplaceBack(e.x,e.y,r),i.emplaceBack(e.x,e.y,r)}function kf(i){for(const e of i.sections)if(hc(e.text))return!0;return!1}class Uc{constructor(e){this.layoutVertexArray=new We,this.indexArray=new bt,this.programConfigurations=e,this.segments=new Nt,this.dynamicLayoutVertexArray=new Mt,this.opacityVertexArray=new Tt,this.hasVisibleVertices=!1,this.placedSymbolArray=new X}isEmpty(){return this.layoutVertexArray.length===0&&this.indexArray.length===0&&this.dynamicLayoutVertexArray.length===0&&this.opacityVertexArray.length===0}upload(e,r,s,l){this.isEmpty()||(s&&(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Qm.members),this.indexBuffer=e.createIndexBuffer(this.indexArray,r),this.dynamicLayoutVertexBuffer=e.createVertexBuffer(this.dynamicLayoutVertexArray,ef.members,!0),this.opacityVertexBuffer=e.createVertexBuffer(this.opacityVertexArray,Pf,!0),this.opacityVertexBuffer.itemSize=1),(s||l)&&this.programConfigurations.upload(e))}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer.destroy(),this.opacityVertexBuffer.destroy())}}$e("SymbolBuffers",Uc);class Vc{constructor(e,r,s){this.layoutVertexArray=new e,this.layoutAttributes=r,this.indexArray=new s,this.segments=new Nt,this.collisionVertexArray=new yt}upload(e){this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=e.createVertexBuffer(this.collisionVertexArray,tf.members,!0)}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy())}}$e("CollisionBuffers",Vc);class aa{constructor(e){this.collisionBoxArray=e.collisionBoxArray,this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(d=>d.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=_c([]),this.placementViewportMatrix=_c([]);const r=this.layers[0]._unevaluatedLayout._values;this.textSizeData=Du(this.zoom,r["text-size"]),this.iconSizeData=Du(this.zoom,r["icon-size"]);const s=this.layers[0].layout,l=s.get("symbol-sort-key"),u=s.get("symbol-z-order");this.canOverlap=$c(s,"text-overlap","text-allow-overlap")!=="never"||$c(s,"icon-overlap","icon-allow-overlap")!=="never"||s.get("text-ignore-placement")||s.get("icon-ignore-placement"),this.sortFeaturesByKey=u!=="viewport-y"&&!l.isConstant(),this.sortFeaturesByY=(u==="viewport-y"||u==="auto"&&!this.sortFeaturesByKey)&&this.canOverlap,s.get("symbol-placement")==="point"&&(this.writingModes=s.get("text-writing-mode").map(d=>c.WritingMode[d])),this.stateDependentLayerIds=this.layers.filter(d=>d.isStateDependent()).map(d=>d.id),this.sourceID=e.sourceID}createArrays(){this.text=new Uc(new gs(this.layers,this.zoom,e=>/^text/.test(e))),this.icon=new Uc(new gs(this.layers,this.zoom,e=>/^icon/.test(e))),this.glyphOffsetArray=new W,this.lineVertexArray=new te,this.symbolInstances=new U}calculateGlyphDependencies(e,r,s,l,u){for(let d=0;d<e.length;d++)if(r[e.charCodeAt(d)]=!0,(s||l)&&u){const f=ho[e.charAt(d)];f&&(r[f.charCodeAt(0)]=!0)}}populate(e,r,s){const l=this.layers[0],u=l.layout,d=u.get("text-font"),f=u.get("text-field"),g=u.get("icon-image"),x=(f.value.kind!=="constant"||f.value.value instanceof De&&!f.value.value.isEmpty()||f.value.value.toString().length>0)&&(d.value.kind!=="constant"||d.value.value.length>0),w=g.value.kind!=="constant"||!!g.value.value||Object.keys(g.parameters).length>0,T=u.get("symbol-sort-key");if(this.features=[],!x&&!w)return;const A=r.iconDependencies,I=r.glyphDependencies,P=r.availableImages,F=new Vt(this.zoom);for(const{feature:O,id:G,index:Y,sourceLayerIndex:$}of e){const J=l._featureFilter.needGeometry,pe=ys(O,J);if(!l._featureFilter.filter(F,pe,s))continue;let ue,Ne;if(J||(pe.geometry=_s(O)),x){const Ue=l.getValueAndResolveTokens("text-field",pe,s,P),Re=De.factory(Ue);kf(Re)&&(this.hasRTLText=!0),(!this.hasRTLText||Xa()==="unavailable"||this.hasRTLText&&ji.isParsed())&&(ue=nf(Re,l,pe))}if(w){const Ue=l.getValueAndResolveTokens("icon-image",pe,s,P);Ne=Ue instanceof _t?Ue:_t.fromString(Ue)}if(!ue&&!Ne)continue;const qe=this.sortFeaturesByKey?T.evaluate(pe,{},s):void 0;if(this.features.push({id:G,text:ue,icon:Ne,index:Y,sourceLayerIndex:$,geometry:pe.geometry,properties:O.properties,type:Mf[O.type],sortKey:qe}),Ne&&(A[Ne.name]=!0),ue){const Ue=d.evaluate(pe,{},s).join(","),Re=u.get("text-rotation-alignment")!=="viewport"&&u.get("symbol-placement")!=="point";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(c.WritingMode.vertical)>=0;for(const ze of ue.sections)if(ze.image)A[ze.image.name]=!0;else{const Ve=cs(ue.toString()),Be=ze.fontStack||Ue,Se=I[Be]=I[Be]||{};this.calculateGlyphDependencies(ze.text,Se,Re,this.allowVerticalPlacement,Ve)}}}u.get("symbol-placement")==="line"&&(this.features=function(O){const G={},Y={},$=[];let J=0;function pe(Ue){$.push(O[Ue]),J++}function ue(Ue,Re,ze){const Ve=Y[Ue];return delete Y[Ue],Y[Re]=Ve,$[Ve].geometry[0].pop(),$[Ve].geometry[0]=$[Ve].geometry[0].concat(ze[0]),Ve}function Ne(Ue,Re,ze){const Ve=G[Re];return delete G[Re],G[Ue]=Ve,$[Ve].geometry[0].shift(),$[Ve].geometry[0]=ze[0].concat($[Ve].geometry[0]),Ve}function qe(Ue,Re,ze){const Ve=ze?Re[0][Re[0].length-1]:Re[0][0];return`${Ue}:${Ve.x}:${Ve.y}`}for(let Ue=0;Ue<O.length;Ue++){const Re=O[Ue],ze=Re.geometry,Ve=Re.text?Re.text.toString():null;if(!Ve){pe(Ue);continue}const Be=qe(Ve,ze),Se=qe(Ve,ze,!0);if(Be in Y&&Se in G&&Y[Be]!==G[Se]){const He=Ne(Be,Se,ze),Ze=ue(Be,Se,$[He].geometry);delete G[Be],delete Y[Se],Y[qe(Ve,$[Ze].geometry,!0)]=Ze,$[He].geometry=null}else Be in Y?ue(Be,Se,ze):Se in G?Ne(Be,Se,ze):(pe(Ue),G[Be]=J-1,Y[Se]=J-1)}return $.filter(Ue=>Ue.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort((O,G)=>O.sortKey-G.sortKey)}update(e,r,s){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(e,r,this.layers,s),this.icon.programConfigurations.updatePaintArrays(e,r,this.layers,s))}isEmpty(){return this.symbolInstances.length===0&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(e){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(e),this.iconCollisionBox.upload(e)),this.text.upload(e,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(e,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(e,r){const s=this.lineVertexArray.length;if(e.segment!==void 0){let l=e.dist(r[e.segment+1]),u=e.dist(r[e.segment]);const d={};for(let f=e.segment+1;f<r.length;f++)d[f]={x:r[f].x,y:r[f].y,tileUnitDistanceFromAnchor:l},f<r.length-1&&(l+=r[f+1].dist(r[f]));for(let f=e.segment||0;f>=0;f--)d[f]={x:r[f].x,y:r[f].y,tileUnitDistanceFromAnchor:u},f>0&&(u+=r[f-1].dist(r[f]));for(let f=0;f<r.length;f++){const g=d[f];this.lineVertexArray.emplaceBack(g.x,g.y,g.tileUnitDistanceFromAnchor)}}return{lineStartIndex:s,lineLength:this.lineVertexArray.length-s}}addSymbols(e,r,s,l,u,d,f,g,x,w,T,A){const I=e.indexArray,P=e.layoutVertexArray,F=e.segments.prepareSegment(4*r.length,P,I,this.canOverlap?d.sortKey:void 0),O=this.glyphOffsetArray.length,G=F.vertexLength,Y=this.allowVerticalPlacement&&f===c.WritingMode.vertical?Math.PI/2:0,$=d.text&&d.text.sections;for(let J=0;J<r.length;J++){const{tl:pe,tr:ue,bl:Ne,br:qe,tex:Ue,pixelOffsetTL:Re,pixelOffsetBR:ze,minFontScaleX:Ve,minFontScaleY:Be,glyphOffset:Se,isSDF:He,sectionIndex:Ze}=r[J],ct=F.vertexLength,Gt=Se[1];kl(P,g.x,g.y,pe.x,Gt+pe.y,Ue.x,Ue.y,s,He,Re.x,Re.y,Ve,Be),kl(P,g.x,g.y,ue.x,Gt+ue.y,Ue.x+Ue.w,Ue.y,s,He,ze.x,Re.y,Ve,Be),kl(P,g.x,g.y,Ne.x,Gt+Ne.y,Ue.x,Ue.y+Ue.h,s,He,Re.x,ze.y,Ve,Be),kl(P,g.x,g.y,qe.x,Gt+qe.y,Ue.x+Ue.w,Ue.y+Ue.h,s,He,ze.x,ze.y,Ve,Be),Oc(e.dynamicLayoutVertexArray,g,Y),I.emplaceBack(ct,ct+1,ct+2),I.emplaceBack(ct+1,ct+2,ct+3),F.vertexLength+=4,F.primitiveLength+=2,this.glyphOffsetArray.emplaceBack(Se[0]),J!==r.length-1&&Ze===r[J+1].sectionIndex||e.programConfigurations.populatePaintArrays(P.length,d,d.index,{},A,$&&$[Ze])}e.placedSymbolArray.emplaceBack(g.x,g.y,O,this.glyphOffsetArray.length-O,G,x,w,g.segment,s?s[0]:0,s?s[1]:0,l[0],l[1],f,0,!1,0,T)}_addCollisionDebugVertex(e,r,s,l,u,d){return r.emplaceBack(0,0),e.emplaceBack(s.x,s.y,l,u,Math.round(d.x),Math.round(d.y))}addCollisionDebugVertices(e,r,s,l,u,d,f){const g=u.segments.prepareSegment(4,u.layoutVertexArray,u.indexArray),x=g.vertexLength,w=u.layoutVertexArray,T=u.collisionVertexArray,A=f.anchorX,I=f.anchorY;this._addCollisionDebugVertex(w,T,d,A,I,new it(e,r)),this._addCollisionDebugVertex(w,T,d,A,I,new it(s,r)),this._addCollisionDebugVertex(w,T,d,A,I,new it(s,l)),this._addCollisionDebugVertex(w,T,d,A,I,new it(e,l)),g.vertexLength+=4;const P=u.indexArray;P.emplaceBack(x,x+1),P.emplaceBack(x+1,x+2),P.emplaceBack(x+2,x+3),P.emplaceBack(x+3,x),g.primitiveLength+=4}addDebugCollisionBoxes(e,r,s,l){for(let u=e;u<r;u++){const d=this.collisionBoxArray.get(u);this.addCollisionDebugVertices(d.x1,d.y1,d.x2,d.y2,l?this.textCollisionBox:this.iconCollisionBox,d.anchorPoint,s)}}generateCollisionDebugBuffers(){this.hasDebugData()&&this.destroyDebugData(),this.textCollisionBox=new Vc(mt,vu.members,Ei),this.iconCollisionBox=new Vc(mt,vu.members,Ei);for(let e=0;e<this.symbolInstances.length;e++){const r=this.symbolInstances.get(e);this.addDebugCollisionBoxes(r.textBoxStartIndex,r.textBoxEndIndex,r,!0),this.addDebugCollisionBoxes(r.verticalTextBoxStartIndex,r.verticalTextBoxEndIndex,r,!0),this.addDebugCollisionBoxes(r.iconBoxStartIndex,r.iconBoxEndIndex,r,!1),this.addDebugCollisionBoxes(r.verticalIconBoxStartIndex,r.verticalIconBoxEndIndex,r,!1)}}_deserializeCollisionBoxesForSymbol(e,r,s,l,u,d,f,g,x){const w={};for(let T=r;T<s;T++){const A=e.get(T);w.textBox={x1:A.x1,y1:A.y1,x2:A.x2,y2:A.y2,anchorPointX:A.anchorPointX,anchorPointY:A.anchorPointY},w.textFeatureIndex=A.featureIndex;break}for(let T=l;T<u;T++){const A=e.get(T);w.verticalTextBox={x1:A.x1,y1:A.y1,x2:A.x2,y2:A.y2,anchorPointX:A.anchorPointX,anchorPointY:A.anchorPointY},w.verticalTextFeatureIndex=A.featureIndex;break}for(let T=d;T<f;T++){const A=e.get(T);w.iconBox={x1:A.x1,y1:A.y1,x2:A.x2,y2:A.y2,anchorPointX:A.anchorPointX,anchorPointY:A.anchorPointY},w.iconFeatureIndex=A.featureIndex;break}for(let T=g;T<x;T++){const A=e.get(T);w.verticalIconBox={x1:A.x1,y1:A.y1,x2:A.x2,y2:A.y2,anchorPointX:A.anchorPointX,anchorPointY:A.anchorPointY},w.verticalIconFeatureIndex=A.featureIndex;break}return w}deserializeCollisionBoxes(e){this.collisionArrays=[];for(let r=0;r<this.symbolInstances.length;r++){const s=this.symbolInstances.get(r);this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(e,s.textBoxStartIndex,s.textBoxEndIndex,s.verticalTextBoxStartIndex,s.verticalTextBoxEndIndex,s.iconBoxStartIndex,s.iconBoxEndIndex,s.verticalIconBoxStartIndex,s.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(e,r){const s=e.placedSymbolArray.get(r),l=s.vertexStartIndex+4*s.numGlyphs;for(let u=s.vertexStartIndex;u<l;u+=4)e.indexArray.emplaceBack(u,u+1,u+2),e.indexArray.emplaceBack(u+1,u+2,u+3)}getSortedSymbolIndexes(e){if(this.sortedAngle===e&&this.symbolInstanceIndexes!==void 0)return this.symbolInstanceIndexes;const r=Math.sin(e),s=Math.cos(e),l=[],u=[],d=[];for(let f=0;f<this.symbolInstances.length;++f){d.push(f);const g=this.symbolInstances.get(f);l.push(0|Math.round(r*g.anchorX+s*g.anchorY)),u.push(g.featureIndex)}return d.sort((f,g)=>l[f]-l[g]||u[g]-u[f]),d}addToSortKeyRanges(e,r){const s=this.sortKeyRanges[this.sortKeyRanges.length-1];s&&s.sortKey===r?s.symbolInstanceEnd=e+1:this.sortKeyRanges.push({sortKey:r,symbolInstanceStart:e,symbolInstanceEnd:e+1})}sortFeatures(e){if(this.sortFeaturesByY&&this.sortedAngle!==e&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(e),this.sortedAngle=e,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const r of this.symbolInstanceIndexes){const s=this.symbolInstances.get(r);this.featureSortOrder.push(s.featureIndex),[s.rightJustifiedTextSymbolIndex,s.centerJustifiedTextSymbolIndex,s.leftJustifiedTextSymbolIndex].forEach((l,u,d)=>{l>=0&&d.indexOf(l)===u&&this.addIndicesForPlacedSymbol(this.text,l)}),s.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,s.verticalPlacedTextSymbolIndex),s.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,s.placedIconSymbolIndex),s.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,s.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}$e("SymbolBucket",aa,{omit:["layers","collisionBoxArray","features","compareText"]}),aa.MAX_GLYPHS=65535,aa.addDynamicAttributes=Oc;const zf=new Si({"symbol-placement":new Xe(V.layout_symbol["symbol-placement"]),"symbol-spacing":new Xe(V.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new Xe(V.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Ye(V.layout_symbol["symbol-sort-key"]),"symbol-z-order":new Xe(V.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new Xe(V.layout_symbol["icon-allow-overlap"]),"icon-overlap":new Xe(V.layout_symbol["icon-overlap"]),"icon-ignore-placement":new Xe(V.layout_symbol["icon-ignore-placement"]),"icon-optional":new Xe(V.layout_symbol["icon-optional"]),"icon-rotation-alignment":new Xe(V.layout_symbol["icon-rotation-alignment"]),"icon-size":new Ye(V.layout_symbol["icon-size"]),"icon-text-fit":new Xe(V.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new Xe(V.layout_symbol["icon-text-fit-padding"]),"icon-image":new Ye(V.layout_symbol["icon-image"]),"icon-rotate":new Ye(V.layout_symbol["icon-rotate"]),"icon-padding":new Ye(V.layout_symbol["icon-padding"]),"icon-keep-upright":new Xe(V.layout_symbol["icon-keep-upright"]),"icon-offset":new Ye(V.layout_symbol["icon-offset"]),"icon-anchor":new Ye(V.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new Xe(V.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new Xe(V.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new Xe(V.layout_symbol["text-rotation-alignment"]),"text-field":new Ye(V.layout_symbol["text-field"]),"text-font":new Ye(V.layout_symbol["text-font"]),"text-size":new Ye(V.layout_symbol["text-size"]),"text-max-width":new Ye(V.layout_symbol["text-max-width"]),"text-line-height":new Xe(V.layout_symbol["text-line-height"]),"text-letter-spacing":new Ye(V.layout_symbol["text-letter-spacing"]),"text-justify":new Ye(V.layout_symbol["text-justify"]),"text-radial-offset":new Ye(V.layout_symbol["text-radial-offset"]),"text-variable-anchor":new Xe(V.layout_symbol["text-variable-anchor"]),"text-anchor":new Ye(V.layout_symbol["text-anchor"]),"text-max-angle":new Xe(V.layout_symbol["text-max-angle"]),"text-writing-mode":new Xe(V.layout_symbol["text-writing-mode"]),"text-rotate":new Ye(V.layout_symbol["text-rotate"]),"text-padding":new Xe(V.layout_symbol["text-padding"]),"text-keep-upright":new Xe(V.layout_symbol["text-keep-upright"]),"text-transform":new Ye(V.layout_symbol["text-transform"]),"text-offset":new Ye(V.layout_symbol["text-offset"]),"text-allow-overlap":new Xe(V.layout_symbol["text-allow-overlap"]),"text-overlap":new Xe(V.layout_symbol["text-overlap"]),"text-ignore-placement":new Xe(V.layout_symbol["text-ignore-placement"]),"text-optional":new Xe(V.layout_symbol["text-optional"])});var Nc={paint:new Si({"icon-opacity":new Ye(V.paint_symbol["icon-opacity"]),"icon-color":new Ye(V.paint_symbol["icon-color"]),"icon-halo-color":new Ye(V.paint_symbol["icon-halo-color"]),"icon-halo-width":new Ye(V.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Ye(V.paint_symbol["icon-halo-blur"]),"icon-translate":new Xe(V.paint_symbol["icon-translate"]),"icon-translate-anchor":new Xe(V.paint_symbol["icon-translate-anchor"]),"text-opacity":new Ye(V.paint_symbol["text-opacity"]),"text-color":new Ye(V.paint_symbol["text-color"],{runtimeType:vt,getOverride:i=>i.textColor,hasOverride:i=>!!i.textColor}),"text-halo-color":new Ye(V.paint_symbol["text-halo-color"]),"text-halo-width":new Ye(V.paint_symbol["text-halo-width"]),"text-halo-blur":new Ye(V.paint_symbol["text-halo-blur"]),"text-translate":new Xe(V.paint_symbol["text-translate"]),"text-translate-anchor":new Xe(V.paint_symbol["text-translate-anchor"])}),layout:zf};class Zu{constructor(e){if(e.property.overrides===void 0)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=e.property.overrides?e.property.overrides.runtimeType:gt,this.defaultValue=e}evaluate(e){if(e.formattedSection){const r=this.defaultValue.property.overrides;if(r&&r.hasOverride(e.formattedSection))return r.getOverride(e.formattedSection)}return e.feature&&e.featureState?this.defaultValue.evaluate(e.feature,e.featureState):this.defaultValue.property.specification.default}eachChild(e){this.defaultValue.isConstant()||e(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}$e("FormatSectionOverride",Zu,{omit:["defaultValue"]});class zl extends cr{constructor(e){super(e,Nc)}recalculate(e,r){if(super.recalculate(e,r),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout._values["icon-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout._values["text-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")==="map"?"map":"viewport"),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){const s=this.layout.get("text-writing-mode");if(s){const l=[];for(const u of s)l.indexOf(u)<0&&l.push(u);this.layout._values["text-writing-mode"]=l}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()}getValueAndResolveTokens(e,r,s,l){const u=this.layout.get(e).evaluate(r,{},s,l),d=this._unevaluatedLayout._values[e];return d.isDataDriven()||Qn(d.value)||!u?u:function(f,g){return g.replace(/{([^{}]+)}/g,(x,w)=>w in f?String(f[w]):"")}(r.properties,u)}createBucket(e){return new aa(e)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(const e of Nc.paint.overridableProperties){if(!zl.hasPaintOverride(this.layout,e))continue;const r=this.paint.get(e),s=new Zu(r),l=new Ns(s,r.property.specification);let u=null;u=r.value.kind==="constant"||r.value.kind==="source"?new ts("source",l):new Da("composite",l,r.value.zoomStops),this.paint._values[e]=new Ti(r.property,u,r.parameters)}}_handleOverridablePaintPropertyUpdate(e,r,s){return!(!this.layout||r.isDataDriven()||s.isDataDriven())&&zl.hasPaintOverride(this.layout,e)}static hasPaintOverride(e,r){const s=e.get("text-field"),l=Nc.paint.properties[r];let u=!1;const d=f=>{for(const g of f)if(l.overrides&&l.overrides.hasOverride(g))return void(u=!0)};if(s.value.kind==="constant"&&s.value.value instanceof De)d(s.value.value.sections);else if(s.value.kind==="source"){const f=x=>{u||(x instanceof li&&ut(x.value)===Xt?d(x.value.sections):x instanceof Us?d(x.sections):x.eachChild(f))},g=s.value;g._styleExpression&&f(g._styleExpression.expression)}return u}}function $c(i,e,r){let s="never";const l=i.get(e);return l?s=l:i.get(r)&&(s="always"),s}var Lf={paint:new Si({"background-color":new Xe(V.paint_background["background-color"]),"background-pattern":new Ha(V.paint_background["background-pattern"]),"background-opacity":new Xe(V.paint_background["background-opacity"])})},Df={paint:new Si({"raster-opacity":new Xe(V.paint_raster["raster-opacity"]),"raster-hue-rotate":new Xe(V.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new Xe(V.paint_raster["raster-brightness-min"]),"raster-brightness-max":new Xe(V.paint_raster["raster-brightness-max"]),"raster-saturation":new Xe(V.paint_raster["raster-saturation"]),"raster-contrast":new Xe(V.paint_raster["raster-contrast"]),"raster-resampling":new Xe(V.paint_raster["raster-resampling"]),"raster-fade-duration":new Xe(V.paint_raster["raster-fade-duration"])})};class Rf extends cr{constructor(e){super(e,{}),this.onAdd=r=>{this.implementation.onAdd&&this.implementation.onAdd(r,r.painter.context.gl)},this.onRemove=r=>{this.implementation.onRemove&&this.implementation.onRemove(r,r.painter.context.gl)},this.implementation=e}is3D(){return this.implementation.renderingMode==="3d"}hasOffscreenPass(){return this.implementation.prerender!==void 0}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw new Error("Custom layers cannot be serialized")}}const Bf={circle:class extends cr{constructor(i){super(i,dm)}createBucket(i){return new mc(i)}queryRadius(i){const e=i;return to("circle-radius",this,e)+to("circle-stroke-width",this,e)+gl(this.paint.get("circle-translate"))}queryIntersectsFeature(i,e,r,s,l,u,d,f){const g=_l(i,this.paint.get("circle-translate"),this.paint.get("circle-translate-anchor"),u.angle,d),x=this.paint.get("circle-radius").evaluate(e,r)+this.paint.get("circle-stroke-width").evaluate(e,r),w=this.paint.get("circle-pitch-alignment")==="map",T=w?g:function(I,P){return I.map(F=>nu(F,P))}(g,f),A=w?x*d:x;for(const I of s)for(const P of I){const F=w?P:nu(P,f);let O=A;const G=yl([],[P.x,P.y,0,1],f);if(this.paint.get("circle-pitch-scale")==="viewport"&&this.paint.get("circle-pitch-alignment")==="map"?O*=G[3]/u.cameraToCenterDistance:this.paint.get("circle-pitch-scale")==="map"&&this.paint.get("circle-pitch-alignment")==="viewport"&&(O*=u.cameraToCenterDistance/G[3]),lm(T,F,O))return!0}return!1}},heatmap:class extends cr{createBucket(i){return new su(i)}constructor(i){super(i,fm),this._updateColorRamp()}_handleSpecialPaintPropertyUpdate(i){i==="heatmap-color"&&this._updateColorRamp()}_updateColorRamp(){this.colorRamp=ou({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 this.paint.get("heatmap-opacity")!==0&&this.visibility!=="none"}},hillshade:class extends cr{constructor(i){super(i,gm)}hasOffscreenPass(){return this.paint.get("hillshade-exaggeration")!==0&&this.visibility!=="none"}},fill:class extends cr{constructor(i){super(i,km)}recalculate(i,e){super.recalculate(i,e);const r=this.paint._values["fill-outline-color"];r.value.kind==="constant"&&r.value.value===void 0&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"])}createBucket(i){return new Ac(i)}queryRadius(){return gl(this.paint.get("fill-translate"))}queryIntersectsFeature(i,e,r,s,l,u,d){return Kh(_l(i,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),u.angle,d),s)}isTileClipped(){return!0}},"fill-extrusion":class extends cr{constructor(i){super(i,qm)}createBucket(i){return new Mc(i)}queryRadius(){return gl(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}queryIntersectsFeature(i,e,r,s,l,u,d,f){const g=_l(i,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),u.angle,d),x=this.paint.get("fill-extrusion-height").evaluate(e,r),w=this.paint.get("fill-extrusion-base").evaluate(e,r),T=function(I,P,F,O){const G=[];for(const Y of I){const $=[Y.x,Y.y,0,1];yl($,$,P),G.push(new it($[0]/$[3],$[1]/$[3]))}return G}(g,f),A=function(I,P,F,O){const G=[],Y=[],$=O[8]*P,J=O[9]*P,pe=O[10]*P,ue=O[11]*P,Ne=O[8]*F,qe=O[9]*F,Ue=O[10]*F,Re=O[11]*F;for(const ze of I){const Ve=[],Be=[];for(const Se of ze){const He=Se.x,Ze=Se.y,ct=O[0]*He+O[4]*Ze+O[12],Gt=O[1]*He+O[5]*Ze+O[13],Zt=O[2]*He+O[6]*Ze+O[14],oi=O[3]*He+O[7]*Ze+O[15],mr=Zt+pe,fi=oi+ue,ri=ct+Ne,hi=Gt+qe,gi=Zt+Ue,Ci=oi+Re,Gi=new it((ct+$)/fi,(Gt+J)/fi);Gi.z=mr/fi,Ve.push(Gi);const ni=new it(ri/Ci,hi/Ci);ni.z=gi/Ci,Be.push(ni)}G.push(Ve),Y.push(Be)}return[G,Y]}(s,w,x,f);return function(I,P,F){let O=1/0;Kh(F,P)&&(O=fu(F,P[0]));for(let G=0;G<P.length;G++){const Y=P[G],$=I[G];for(let J=0;J<Y.length-1;J++){const pe=Y[J],ue=[pe,Y[J+1],$[J+1],$[J],pe];Hh(F,ue)&&(O=Math.min(O,fu(F,ue)))}}return O!==1/0&&O}(A[0],A[1],T)}},line:class extends cr{constructor(i){super(i,_u),this.gradientVersion=0}_handleSpecialPaintPropertyUpdate(i){i==="line-gradient"&&(this.stepInterpolant=this._transitionablePaint._values["line-gradient"].value.expression._styleExpression.expression instanceof yn,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER)}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(i,e){super.recalculate(i,e),this.paint._values["line-floorwidth"]=yu.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,i)}createBucket(i){return new Pc(i)}queryRadius(i){const e=i,r=xu(to("line-width",this,e),to("line-gap-width",this,e)),s=to("line-offset",this,e);return r/2+Math.abs(s)+gl(this.paint.get("line-translate"))}queryIntersectsFeature(i,e,r,s,l,u,d){const f=_l(i,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),u.angle,d),g=d/2*xu(this.paint.get("line-width").evaluate(e,r),this.paint.get("line-gap-width").evaluate(e,r)),x=this.paint.get("line-offset").evaluate(e,r);return x&&(s=function(w,T){const A=[];for(let I=0;I<w.length;I++){const P=w[I],F=[];for(let O=0;O<P.length;O++){const G=P[O-1],Y=P[O],$=P[O+1],J=O===0?new it(0,0):Y.sub(G)._unit()._perp(),pe=O===P.length-1?new it(0,0):$.sub(Y)._unit()._perp(),ue=J._add(pe)._unit(),Ne=ue.x*pe.x+ue.y*pe.y;Ne!==0&&ue._mult(1/Ne),F.push(ue._mult(T)._add(Y))}A.push(F)}return A}(s,x*d)),function(w,T,A){for(let I=0;I<T.length;I++){const P=T[I];if(w.length>=3){for(let F=0;F<P.length;F++)if(Qs(w,P[F]))return!0}if(cm(w,P,A))return!0}return!1}(f,s,g)}isTileClipped(){return!0}},symbol:zl,background:class extends cr{constructor(i){super(i,Lf)}},raster:class extends cr{constructor(i){super(i,Df)}}};class Ff{constructor(e){this._callback=e,this._triggered=!1,typeof MessageChannel<"u"&&(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 jc=63710088e-1;class Ht{constructor(e,r){if(isNaN(e)||isNaN(r))throw new Error(`Invalid LngLat object: (${e}, ${r})`);if(this.lng=+e,this.lat=+r,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new Ht(K(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(e){const r=Math.PI/180,s=this.lat*r,l=e.lat*r,u=Math.sin(s)*Math.sin(l)+Math.cos(s)*Math.cos(l)*Math.cos((e.lng-this.lng)*r);return jc*Math.acos(Math.min(u,1))}toBounds(e=0){const r=360*e/40075017,s=r/Math.cos(Math.PI/180*this.lat);return new Xu(new Ht(this.lng-s,this.lat-r),new Ht(this.lng+s,this.lat+r))}static convert(e){if(e instanceof Ht)return e;if(Array.isArray(e)&&(e.length===2||e.length===3))return new Ht(Number(e[0]),Number(e[1]));if(!Array.isArray(e)&&typeof e=="object"&&e!==null)return new Ht(Number("lng"in e?e.lng:e.lon),Number(e.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>]")}}class oa{constructor(e,r){e&&(r?this.setSouthWest(e).setNorthEast(r):e.length===4?this.setSouthWest([e[0],e[1]]).setNorthEast([e[2],e[3]]):this.setSouthWest(e[0]).setNorthEast(e[1]))}setNorthEast(e){return this._ne=e instanceof Ht?new Ht(e.lng,e.lat):Ht.convert(e),this}setSouthWest(e){return this._sw=e instanceof Ht?new Ht(e.lng,e.lat):Ht.convert(e),this}extend(e){const r=this._sw,s=this._ne;let l,u;if(e instanceof Ht)l=e,u=e;else{if(!(e instanceof oa))return Array.isArray(e)?e.length===4||e.every(Array.isArray)?this.extend(oa.convert(e)):this.extend(Ht.convert(e)):this;if(l=e._sw,u=e._ne,!l||!u)return this}return r||s?(r.lng=Math.min(l.lng,r.lng),r.lat=Math.min(l.lat,r.lat),s.lng=Math.max(u.lng,s.lng),s.lat=Math.max(u.lat,s.lat)):(this._sw=new Ht(l.lng,l.lat),this._ne=new Ht(u.lng,u.lat)),this}getCenter(){return new Ht((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 Ht(this.getWest(),this.getNorth())}getSouthEast(){return new Ht(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:r,lat:s}=Ht.convert(e);let l=this._sw.lng<=r&&r<=this._ne.lng;return this._sw.lng>this._ne.lng&&(l=this._sw.lng>=r&&r>=this._ne.lng),this._sw.lat<=s&&s<=this._ne.lat&&l}static convert(e){return e instanceof oa?e:e&&new oa(e)}}var Xu=oa;const Wu=2*Math.PI*jc;function Hu(i){return Wu*Math.cos(i*Math.PI/180)}function Ku(i){return(180+i)/360}function Ju(i){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+i*Math.PI/360)))/360}function Yu(i,e){return i/Hu(e)}function Gc(i){return 360/Math.PI*Math.atan(Math.exp((180-360*i)*Math.PI/180))-90}class Ll{constructor(e,r,s=0){this.x=+e,this.y=+r,this.z=+s}static fromLngLat(e,r=0){const s=Ht.convert(e);return new Ll(Ku(s.lng),Ju(s.lat),Yu(r,s.lat))}toLngLat(){return new Ht(360*this.x-180,Gc(this.y))}toAltitude(){return this.z*Hu(Gc(this.y))}meterInMercatorCoordinateUnits(){return 1/Wu*(e=Gc(this.y),1/Math.cos(e*Math.PI/180));var e}}var Qu={};(function(i,e){(function(r){function s(u,d,f){var g=l(256*u,256*(d=Math.pow(2,f)-d-1),f),x=l(256*(u+1),256*(d+1),f);return g[0]+","+g[1]+","+x[0]+","+x[1]}function l(u,d,f){var g=2*Math.PI*6378137/256/Math.pow(2,f);return[u*g-2*Math.PI*6378137/2,d*g-2*Math.PI*6378137/2]}r.getURL=function(u,d,f,g,x,w){return w=w||{},u+"?"+["bbox="+s(f,g,x),"format="+(w.format||"image/png"),"service="+(w.service||"WMS"),"version="+(w.version||"1.1.1"),"request="+(w.request||"GetMap"),"srs="+(w.srs||"EPSG:3857"),"width="+(w.width||256),"height="+(w.height||256),"layers="+d].join("&")},r.getTileBBox=s,r.getMercCoords=l,Object.defineProperty(r,"__esModule",{value:!0})})(e)})(0,Qu);class qc{constructor(e,r,s){if(e<0||e>25||s<0||s>=Math.pow(2,e)||r<0||r>=Math.pow(2,e))throw new Error(`x=${r}, y=${s}, z=${e} outside of bounds. 0<=x<${Math.pow(2,e)}, 0<=y<${Math.pow(2,e)} 0<=z<=25 `);this.z=e,this.x=r,this.y=s,this.key=po(0,e,e,r,s)}equals(e){return this.z===e.z&&this.x===e.x&&this.y===e.y}url(e,r,s){const l=Qu.getTileBBox(this.x,this.y,this.z),u=function(d,f,g){let x,w="";for(let T=d;T>0;T--)x=1<<T-1,w+=(f&x?1:0)+(g&x?2:0);return w}(this.z,this.x,this.y);return e[(this.x+this.y)%e.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(s==="tms"?Math.pow(2,this.z)-this.y-1:this.y)).replace(/{ratio}/g,r>1?"@2x":"").replace(/{quadkey}/g,u).replace(/{bbox-epsg-3857}/g,l)}isChildOf(e){const r=this.z-e.z;return r>0&&e.x===this.x>>r&&e.y===this.y>>r}getTilePoint(e){const r=Math.pow(2,this.z);return new it((e.x*r-this.x)*ai,(e.y*r-this.y)*ai)}toString(){return`${this.z}/${this.x}/${this.y}`}}class ep{constructor(e,r){this.wrap=e,this.canonical=r,this.key=po(e,r.z,r.z,r.x,r.y)}}class dr{constructor(e,r,s,l,u){if(e<s)throw new Error(`overscaledZ should be >= z; overscaledZ = ${e}; z = ${s}`);this.overscaledZ=e,this.wrap=r,this.canonical=new qc(s,+l,+u),this.key=po(r,e,s,l,u)}clone(){return new dr(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(e){return this.overscaledZ===e.overscaledZ&&this.wrap===e.wrap&&this.canonical.equals(e.canonical)}scaledTo(e){if(e>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${e}; overscaledZ = ${this.overscaledZ}`);const r=this.canonical.z-e;return e>this.canonical.z?new dr(e,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new dr(e,this.wrap,e,this.canonical.x>>r,this.canonical.y>>r)}calculateScaledKey(e,r){if(e>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${e}; overscaledZ = ${this.overscaledZ}`);const s=this.canonical.z-e;return e>this.canonical.z?po(this.wrap*+r,e,this.canonical.z,this.canonical.x,this.canonical.y):po(this.wrap*+r,e,e,this.canonical.x>>s,this.canonical.y>>s)}isChildOf(e){if(e.wrap!==this.wrap)return!1;const r=this.canonical.z-e.canonical.z;return e.overscaledZ===0||e.overscaledZ<this.overscaledZ&&e.canonical.x===this.canonical.x>>r&&e.canonical.y===this.canonical.y>>r}children(e){if(this.overscaledZ>=e)return[new dr(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const r=this.canonical.z+1,s=2*this.canonical.x,l=2*this.canonical.y;return[new dr(r,this.wrap,r,s,l),new dr(r,this.wrap,r,s+1,l),new dr(r,this.wrap,r,s,l+1),new dr(r,this.wrap,r,s+1,l+1)]}isLessThan(e){return this.wrap<e.wrap||!(this.wrap>e.wrap)&&(this.overscaledZ<e.overscaledZ||!(this.overscaledZ>e.overscaledZ)&&(this.canonical.x<e.canonical.x||!(this.canonical.x>e.canonical.x)&&this.canonical.y<e.canonical.y))}wrapped(){return new dr(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)}unwrapTo(e){return new dr(this.overscaledZ,e,this.canonical.z,this.canonical.x,this.canonical.y)}overscaleFactor(){return Math.pow(2,this.overscaledZ-this.canonical.z)}toUnwrapped(){return new ep(this.wrap,this.canonical)}toString(){return`${this.overscaledZ}/${this.canonical.x}/${this.canonical.y}`}getTilePoint(e){return this.canonical.getTilePoint(new Ll(e.x-this.wrap,e.y))}}function po(i,e,r,s,l){(i*=2)<0&&(i=-1*i-1);const u=1<<r;return(u*u*i+u*l+s).toString(36)+r.toString(36)+e.toString(36)}$e("CanonicalTileID",qc),$e("OverscaledTileID",dr,{omit:["posMatrix"]});class tp{constructor(e,r,s){if(this.uid=e,r.height!==r.width)throw new RangeError("DEM tiles must be square");if(s&&s!=="mapbox"&&s!=="terrarium")return void Yt(`"${s}" is not a valid encoding type. Valid types include "mapbox" and "terrarium".`);this.stride=r.height;const l=this.dim=r.height-2;this.data=new Uint32Array(r.data.buffer),this.encoding=s||"mapbox";for(let u=0;u<l;u++)this.data[this._idx(-1,u)]=this.data[this._idx(0,u)],this.data[this._idx(l,u)]=this.data[this._idx(l-1,u)],this.data[this._idx(u,-1)]=this.data[this._idx(u,0)],this.data[this._idx(u,l)]=this.data[this._idx(u,l-1)];this.data[this._idx(-1,-1)]=this.data[this._idx(0,0)],this.data[this._idx(l,-1)]=this.data[this._idx(l-1,0)],this.data[this._idx(-1,l)]=this.data[this._idx(0,l-1)],this.data[this._idx(l,l)]=this.data[this._idx(l-1,l-1)],this.min=Number.MAX_SAFE_INTEGER,this.max=Number.MIN_SAFE_INTEGER;for(let u=0;u<l;u++)for(let d=0;d<l;d++){const f=this.get(u,d);f>this.max&&(this.max=f),f<this.min&&(this.min=f)}}get(e,r){const s=new Uint8Array(this.data.buffer),l=4*this._idx(e,r);return(this.encoding==="terrarium"?this._unpackTerrarium:this._unpackMapbox)(s[l],s[l+1],s[l+2])}getUnpackVector(){return this.encoding==="terrarium"?[256,1,1/256,32768]:[6553.6,25.6,.1,1e4]}_idx(e,r){if(e<-1||e>=this.dim+1||r<-1||r>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(r+1)*this.stride+(e+1)}_unpackMapbox(e,r,s){return(256*e*256+256*r+s)/10-1e4}_unpackTerrarium(e,r,s){return 256*e+r+s/256-32768}getPixels(){return new pr({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(e,r,s){if(this.dim!==e.dim)throw new Error("dem dimension mismatch");let l=r*this.dim,u=r*this.dim+this.dim,d=s*this.dim,f=s*this.dim+this.dim;switch(r){case-1:l=u-1;break;case 1:u=l+1}switch(s){case-1:d=f-1;break;case 1:f=d+1}const g=-r*this.dim,x=-s*this.dim;for(let w=d;w<f;w++)for(let T=l;T<u;T++)this.data[this._idx(T,w)]=e.data[this._idx(T+g,w+x)]}}$e("DEMData",tp);class ip{constructor(e){this._stringToNumber={},this._numberToString=[];for(let r=0;r<e.length;r++){const s=e[r];this._stringToNumber[s]=r,this._numberToString[r]=s}}encode(e){return this._stringToNumber[e]}decode(e){if(e>=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${e} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[e]}}class rp{constructor(e,r,s,l,u){this.type="Feature",this._vectorTileFeature=e,e._z=r,e._x=s,e._y=l,this.properties=e.properties,this.id=u}get geometry(){return this._geometry===void 0&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(e){this._geometry=e}toJSON(){const e={geometry:this.geometry};for(const r in this)r!=="_geometry"&&r!=="_vectorTileFeature"&&(e[r]=this[r]);return e}}class np{constructor(e,r){this.tileID=e,this.x=e.canonical.x,this.y=e.canonical.y,this.z=e.canonical.z,this.grid=new In(ai,16,0),this.grid3D=new In(ai,16,0),this.featureIndexArray=new he,this.promoteId=r}insert(e,r,s,l,u,d){const f=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(s,l,u);const g=d?this.grid3D:this.grid;for(let x=0;x<r.length;x++){const w=r[x],T=[1/0,1/0,-1/0,-1/0];for(let A=0;A<w.length;A++){const I=w[A];T[0]=Math.min(T[0],I.x),T[1]=Math.min(T[1],I.y),T[2]=Math.max(T[2],I.x),T[3]=Math.max(T[3],I.y)}T[0]<ai&&T[1]<ai&&T[2]>=0&&T[3]>=0&&g.insert(f,T[0],T[1],T[2],T[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new Dn.VectorTile(new kc(this.rawTileData)).layers,this.sourceLayerCoder=new ip(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers}query(e,r,s,l){this.loadVTLayers();const u=e.params||{},d=ai/e.tileSize/e.scale,f=Gs(u.filter),g=e.queryGeometry,x=e.queryPadding*d,w=ap(g),T=this.grid.query(w.minX-x,w.minY-x,w.maxX+x,w.maxY+x),A=ap(e.cameraQueryGeometry),I=this.grid3D.query(A.minX-x,A.minY-x,A.maxX+x,A.maxY+x,(O,G,Y,$)=>function(J,pe,ue,Ne,qe){for(const Re of J)if(pe<=Re.x&&ue<=Re.y&&Ne>=Re.x&&qe>=Re.y)return!0;const Ue=[new it(pe,ue),new it(pe,qe),new it(Ne,qe),new it(Ne,ue)];if(J.length>2){for(const Re of Ue)if(Qs(J,Re))return!0}for(let Re=0;Re<J.length-1;Re++)if(um(J[Re],J[Re+1],Ue))return!0;return!1}(e.cameraQueryGeometry,O-x,G-x,Y+x,$+x));for(const O of I)T.push(O);T.sort(Of);const P={};let F;for(let O=0;O<T.length;O++){const G=T[O];if(G===F)continue;F=G;const Y=this.featureIndexArray.get(G);let $=null;this.loadMatchingFeature(P,Y.bucketIndex,Y.sourceLayerIndex,Y.featureIndex,f,u.layers,u.availableImages,r,s,l,(J,pe,ue)=>($||($=_s(J)),pe.queryIntersectsFeature(g,J,ue,$,this.z,e.transform,d,e.pixelPosMatrix)))}return P}loadMatchingFeature(e,r,s,l,u,d,f,g,x,w,T){const A=this.bucketLayerIDs[r];if(d&&!function(O,G){for(let Y=0;Y<O.length;Y++)if(G.indexOf(O[Y])>=0)return!0;return!1}(d,A))return;const I=this.sourceLayerCoder.decode(s),P=this.vtLayers[I].feature(l);if(u.needGeometry){const O=ys(P,!0);if(!u.filter(new Vt(this.tileID.overscaledZ),O,this.tileID.canonical))return}else if(!u.filter(new Vt(this.tileID.overscaledZ),P))return;const F=this.getId(P,I);for(let O=0;O<A.length;O++){const G=A[O];if(d&&d.indexOf(G)<0)continue;const Y=g[G];if(!Y)continue;let $={};F&&w&&($=w.getState(Y.sourceLayer||"_geojsonTileLayer",F));const J=Je({},x[G]);J.paint=sp(J.paint,Y.paint,P,$,f),J.layout=sp(J.layout,Y.layout,P,$,f);const pe=!T||T(P,Y,$);if(!pe)continue;const ue=new rp(P,this.z,this.x,this.y,F);ue.layer=J;let Ne=e[G];Ne===void 0&&(Ne=e[G]=[]),Ne.push({featureIndex:l,feature:ue,intersectionZ:pe})}}lookupSymbolFeatures(e,r,s,l,u,d,f,g){const x={};this.loadVTLayers();const w=Gs(u);for(const T of e)this.loadMatchingFeature(x,s,l,T,w,d,f,g,r);return x}hasLayer(e){for(const r of this.bucketLayerIDs)for(const s of r)if(e===s)return!0;return!1}getId(e,r){let s=e.id;return this.promoteId&&(s=e.properties[typeof this.promoteId=="string"?this.promoteId:this.promoteId[r]],typeof s=="boolean"&&(s=Number(s))),s}}function sp(i,e,r,s,l){return Dt(i,(u,d)=>{const f=e instanceof Ks?e.get(d):null;return f&&f.evaluate?f.evaluate(r,s,l):f})}function ap(i){let e=1/0,r=1/0,s=-1/0,l=-1/0;for(const u of i)e=Math.min(e,u.x),r=Math.min(r,u.y),s=Math.max(s,u.x),l=Math.max(l,u.y);return{minX:e,minY:r,maxX:s,maxY:l}}function Of(i,e){return e-i}function Zc(i,e,r,s,l,u){if(l-s<=r)return;const d=s+l>>1;op(i,e,d,s,l,u%2),Zc(i,e,r,s,d-1,u+1),Zc(i,e,r,d+1,l,u+1)}function op(i,e,r,s,l,u){for(;l>s;){if(l-s>600){const x=l-s+1,w=r-s+1,T=Math.log(x),A=.5*Math.exp(2*T/3),I=.5*Math.sqrt(T*A*(x-A)/x)*(w-x/2<0?-1:1);op(i,e,r,Math.max(s,Math.floor(r-w*A/x+I)),Math.min(l,Math.floor(r+(x-w)*A/x+I)),u)}const d=e[2*r+u];let f=s,g=l;for(mo(i,e,s,r),e[2*l+u]>d&&mo(i,e,s,l);f<g;){for(mo(i,e,f,g),f++,g--;e[2*f+u]<d;)f++;for(;e[2*g+u]>d;)g--}e[2*s+u]===d?mo(i,e,s,g):(g++,mo(i,e,g,l)),g<=r&&(s=g+1),r<=g&&(l=g-1)}}function mo(i,e,r,s){Xc(i,r,s),Xc(e,2*r,2*s),Xc(e,2*r+1,2*s+1)}function Xc(i,e,r){const s=i[e];i[e]=i[r],i[r]=s}function lp(i,e,r,s){const l=i-r,u=e-s;return l*l+u*u}$e("FeatureIndex",np,{omit:["rawTileData","sourceLayerCoder"]});const Uf=i=>i[0],Vf=i=>i[1];var Wc;c.PerformanceMarkers=void 0,(Wc=c.PerformanceMarkers||(c.PerformanceMarkers={})).create="create",Wc.load="load",Wc.fullLoad="fullLoad";let Dl=null,fo=[];const Hc=1e3/30,Nf={mark(i){performance.mark(i)},frame(i){const e=i;Dl!=null&&fo.push(e-Dl),Dl=e},clearMetrics(){Dl=null,fo=[],performance.clearMeasures("loadTime"),performance.clearMeasures("fullLoadTime");for(const i in c.PerformanceMarkers)performance.clearMarks(c.PerformanceMarkers[i])},getPerformanceMetrics(){performance.measure("loadTime",c.PerformanceMarkers.create,c.PerformanceMarkers.load),performance.measure("fullLoadTime",c.PerformanceMarkers.create,c.PerformanceMarkers.fullLoad);const i=performance.getEntriesByName("loadTime")[0].duration,e=performance.getEntriesByName("fullLoadTime")[0].duration,r=fo.length,s=1/(fo.reduce((u,d)=>u+d,0)/r/1e3),l=fo.filter(u=>u>Hc).reduce((u,d)=>u+(d-Hc)/Hc,0);return{loadTime:i,fullLoadTime:e,fps:s,percentDroppedFrames:l/(r+l)*100}}};c.AJAXError=Er,c.ARRAY_TYPE=Ri,c.Actor=class{constructor(i,e,r){this.target=i,this.parent=e,this.mapId=r,this.callbacks={},this.tasks={},this.taskQueue=[],this.cancelCallbacks={},Jt(["receive","process"],this),this.invoker=new Ff(this.process),this.target.addEventListener("message",this.receive,!1),this.globalScope=Yi()?i:window}send(i,e,r,s,l=!1){const u=Math.round(1e18*Math.random()).toString(36).substring(0,10);r&&(this.callbacks[u]=r);const d=Rr(this.globalScope)?void 0:[];return this.target.postMessage({id:u,type:i,hasCallback:!!r,targetMapId:s,mustQueue:l,sourceMapId:this.mapId,data:An(e,d)},d),{cancel:()=>{r&&delete this.callbacks[u],this.target.postMessage({id:u,type:"<cancel>",targetMapId:s,sourceMapId:this.mapId})}}}receive(i){const e=i.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(e.type==="<cancel>"){delete this.tasks[r];const s=this.cancelCallbacks[r];delete this.cancelCallbacks[r],s&&s()}else Yi()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e)}process(){if(!this.taskQueue.length)return;const i=this.taskQueue.shift(),e=this.tasks[i];delete this.tasks[i],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(i,e)}processTask(i,e){if(e.type==="<response>"){const r=this.callbacks[i];delete this.callbacks[i],r&&(e.error?r(ls(e.error)):r(null,ls(e.data)))}else{let r=!1;const s=Rr(this.globalScope)?void 0:[],l=e.hasCallback?(f,g)=>{r=!0,delete this.cancelCallbacks[i],this.target.postMessage({id:i,type:"<response>",sourceMapId:this.mapId,error:f?An(f):null,data:An(g,s)},s)}:f=>{r=!0};let u=null;const d=ls(e.data);if(this.parent[e.type])u=this.parent[e.type](e.sourceMapId,d,l);else if(this.parent.getWorkerSource){const f=e.type.split(".");u=this.parent.getWorkerSource(e.sourceMapId,f[0],d.source)[f[1]](d,l)}else l(new Error(`Could not find function ${e.type}`));!r&&u&&u.cancel&&(this.cancelCallbacks[i]=u.cancel)}}remove(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1)}},c.AlphaImage=ro,c.CanonicalTileID=qc,c.CollisionBoxArray=L,c.CollisionCircleLayoutArray=class extends h{},c.Color=le,c.DEMData=tp,c.DataConstantProperty=Xe,c.DictionaryCoder=ip,c.EXTENT=ai,c.ErrorEvent=j,c.EvaluationParameters=Vt,c.Event=R,c.Evented=Q,c.FeatureIndex=np,c.FillBucket=Ac,c.FillExtrusionBucket=Mc,c.GeoJSONFeature=rp,c.ImageAtlas=Cu,c.ImagePosition=Lc,c.KDBush=class{constructor(i,e=Uf,r=Vf,s=64,l=Float64Array){this.nodeSize=s,this.points=i;const u=i.length<65536?Uint16Array:Uint32Array,d=this.ids=new u(i.length),f=this.coords=new l(2*i.length);for(let g=0;g<i.length;g++)d[g]=g,f[2*g]=e(i[g]),f[2*g+1]=r(i[g]);Zc(d,f,s,0,d.length-1,0)}range(i,e,r,s){return function(l,u,d,f,g,x,w){const T=[0,l.length-1,0],A=[];let I,P;for(;T.length;){const F=T.pop(),O=T.pop(),G=T.pop();if(O-G<=w){for(let J=G;J<=O;J++)I=u[2*J],P=u[2*J+1],I>=d&&I<=g&&P>=f&&P<=x&&A.push(l[J]);continue}const Y=Math.floor((G+O)/2);I=u[2*Y],P=u[2*Y+1],I>=d&&I<=g&&P>=f&&P<=x&&A.push(l[Y]);const $=(F+1)%2;(F===0?d<=I:f<=P)&&(T.push(G),T.push(Y-1),T.push($)),(F===0?g>=I:x>=P)&&(T.push(Y+1),T.push(O),T.push($))}return A}(this.ids,this.coords,i,e,r,s,this.nodeSize)}within(i,e,r){return function(s,l,u,d,f,g){const x=[0,s.length-1,0],w=[],T=f*f;for(;x.length;){const A=x.pop(),I=x.pop(),P=x.pop();if(I-P<=g){for(let $=P;$<=I;$++)lp(l[2*$],l[2*$+1],u,d)<=T&&w.push(s[$]);continue}const F=Math.floor((P+I)/2),O=l[2*F],G=l[2*F+1];lp(O,G,u,d)<=T&&w.push(s[F]);const Y=(A+1)%2;(A===0?u-f<=O:d-f<=G)&&(x.push(P),x.push(F-1),x.push(Y)),(A===0?u+f>=O:d+f>=G)&&(x.push(F+1),x.push(I),x.push(Y))}return w}(this.ids,this.coords,i,e,r,this.nodeSize)}},c.LineBucket=Pc,c.LineStripIndexArray=class extends C{},c.LngLat=Ht,c.LngLatBounds=Xu,c.MercatorCoordinate=Ll,c.ONE_EM=pi,c.OverscaledTileID=dr,c.PerformanceUtils=Nf,c.Pos3dArray=class extends ds{},c.PosArray=de,c.Properties=Si,c.QuadTriangleArray=class extends m{},c.RGBAImage=pr,c.RasterBoundsArray=class extends Yr{},c.RequestPerformance=class{constructor(i){this._marks={start:[i.url,"start"].join("#"),end:[i.url,"end"].join("#"),measure:i.url.toString()},performance.mark(this._marks.start)}finish(){performance.mark(this._marks.end);let i=performance.getEntriesByName(this._marks.measure);return i.length===0&&(performance.measure(this._marks.measure,this._marks.start,this._marks.end),i=performance.getEntriesByName(this._marks.measure),performance.clearMarks(this._marks.start),performance.clearMarks(this._marks.end),performance.clearMeasures(this._marks.measure)),i}},c.ResourceType=Sr,c.SegmentVector=Nt,c.SymbolBucket=aa,c.Transitionable=ul,c.TriangleIndexArray=bt,c.Uniform1f=zn,c.Uniform1i=class extends ir{constructor(i,e){super(i,e),this.current=0}set(i){this.current!==i&&(this.current=i,this.gl.uniform1i(this.location,i))}},c.Uniform2f=class extends ir{constructor(i,e){super(i,e),this.current=[0,0]}set(i){i[0]===this.current[0]&&i[1]===this.current[1]||(this.current=i,this.gl.uniform2f(this.location,i[0],i[1]))}},c.Uniform3f=class extends ir{constructor(i,e){super(i,e),this.current=[0,0,0]}set(i){i[0]===this.current[0]&&i[1]===this.current[1]&&i[2]===this.current[2]||(this.current=i,this.gl.uniform3f(this.location,i[0],i[1],i[2]))}},c.Uniform4f=Ys,c.UniformColor=ml,c.UniformMatrix4f=class extends ir{constructor(i,e){super(i,e),this.current=pc}set(i){if(i[12]!==this.current[12]||i[0]!==this.current[0])return this.current=i,void this.gl.uniformMatrix4fv(this.location,!1,i);for(let e=1;e<16;e++)if(i[e]!==this.current[e]){this.current=i,this.gl.uniformMatrix4fv(this.location,!1,i);break}}},c.UnwrappedTileID=ep,c.ValidationError=H,c.ZoomHistory=Ua,c.add=function(i,e,r){return i[0]=e[0]+r[0],i[1]=e[1]+r[1],i[2]=e[2]+r[2],i},c.addDynamicAttributes=Oc,c.asyncAll=function(i,e,r){if(!i.length)return r(null,[]);let s=i.length;const l=new Array(i.length);let u=null;i.forEach((d,f)=>{e(d,(g,x)=>{g&&(u=g),l[f]=x,--s==0&&r(u,l)})})},c.bezier=lt,c.bindAll=Jt,c.cacheEntryPossiblyAdded=function(i){jn++,jn>Ur&&(i.getActor().send("enforceCacheSizeLimit",Or),jn=0)},c.clamp=Me,c.clearTileCache=function(i){const e=caches.delete(qr);i&&e.catch(i).then(()=>i())},c.clipLine=Vu,c.clone=function(i){var e=new Ri(16);return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],e[9]=i[9],e[10]=i[10],e[11]=i[11],e[12]=i[12],e[13]=i[13],e[14]=i[14],e[15]=i[15],e},c.clone$1=Ji,c.clone$2=function(i){var e=new Ri(3);return e[0]=i[0],e[1]=i[1],e[2]=i[2],e},c.collisionCircleLayout=rf,c.config=Fr,c.copy=function(i,e){return i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=e[3],i[4]=e[4],i[5]=e[5],i[6]=e[6],i[7]=e[7],i[8]=e[8],i[9]=e[9],i[10]=e[10],i[11]=e[11],i[12]=e[12],i[13]=e[13],i[14]=e[14],i[15]=e[15],i},c.create=function(){var i=new Ri(16);return Ri!=Float32Array&&(i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[11]=0,i[12]=0,i[13]=0,i[14]=0),i[0]=1,i[5]=1,i[10]=1,i[15]=1,i},c.create$1=Qh,c.createExpression=es,c.createFilter=Gs,c.createLayout=Wt,c.createStyleLayer=function(i){return i.type==="custom"?new Rf(i):new Bf[i.type](i)},c.cross=function(i,e,r){var s=e[0],l=e[1],u=e[2],d=r[0],f=r[1],g=r[2];return i[0]=l*g-u*f,i[1]=u*d-s*g,i[2]=s*f-l*d,i},c.dot=function(i,e){return i[0]*e[0]+i[1]*e[1]+i[2]*e[2]},c.dot$1=function(i,e){return i[0]*e[0]+i[1]*e[1]+i[2]*e[2]+i[3]*e[3]},c.earthRadius=jc,c.ease=St,c.emitValidationErrors=Oa,c.enforceCacheSizeLimit=function(i){$n(),ki&&ki.then(e=>{e.keys().then(r=>{for(let s=0;s<r.length-i;s++)e.delete(r[s])})})},c.equals=function(i,e){var r=i[0],s=i[1],l=i[2],u=i[3],d=i[4],f=i[5],g=i[6],x=i[7],w=i[8],T=i[9],A=i[10],I=i[11],P=i[12],F=i[13],O=i[14],G=i[15],Y=e[0],$=e[1],J=e[2],pe=e[3],ue=e[4],Ne=e[5],qe=e[6],Ue=e[7],Re=e[8],ze=e[9],Ve=e[10],Be=e[11],Se=e[12],He=e[13],Ze=e[14],ct=e[15];return Math.abs(r-Y)<=Di*Math.max(1,Math.abs(r),Math.abs(Y))&&Math.abs(s-$)<=Di*Math.max(1,Math.abs(s),Math.abs($))&&Math.abs(l-J)<=Di*Math.max(1,Math.abs(l),Math.abs(J))&&Math.abs(u-pe)<=Di*Math.max(1,Math.abs(u),Math.abs(pe))&&Math.abs(d-ue)<=Di*Math.max(1,Math.abs(d),Math.abs(ue))&&Math.abs(f-Ne)<=Di*Math.max(1,Math.abs(f),Math.abs(Ne))&&Math.abs(g-qe)<=Di*Math.max(1,Math.abs(g),Math.abs(qe))&&Math.abs(x-Ue)<=Di*Math.max(1,Math.abs(x),Math.abs(Ue))&&Math.abs(w-Re)<=Di*Math.max(1,Math.abs(w),Math.abs(Re))&&Math.abs(T-ze)<=Di*Math.max(1,Math.abs(T),Math.abs(ze))&&Math.abs(A-Ve)<=Di*Math.max(1,Math.abs(A),Math.abs(Ve))&&Math.abs(I-Be)<=Di*Math.max(1,Math.abs(I),Math.abs(Be))&&Math.abs(P-Se)<=Di*Math.max(1,Math.abs(P),Math.abs(Se))&&Math.abs(F-He)<=Di*Math.max(1,Math.abs(F),Math.abs(He))&&Math.abs(O-Ze)<=Di*Math.max(1,Math.abs(O),Math.abs(Ze))&&Math.abs(G-ct)<=Di*Math.max(1,Math.abs(G),Math.abs(ct))},c.evaluateSizeForFeature=function(i,{uSize:e,uSizeT:r},{lowerSize:s,upperSize:l}){return i.kind==="source"?s/rn:i.kind==="composite"?qt(s/rn,l/rn,r):e},c.evaluateSizeForZoom=function(i,e){let r=0,s=0;if(i.kind==="constant")s=i.layoutSize;else if(i.kind!=="source"){const{interpolationType:l,minZoom:u,maxZoom:d}=i,f=l?Me(Vi.interpolationFactor(l,e,u,d),0,1):0;i.kind==="camera"?s=qt(i.minSize,i.maxSize,f):r=f}return{uSizeT:r,uSize:s}},c.evaluateVariableOffset=ju,c.evented=Za,c.exported=hn,c.exported$1=un,c.extend=Je,c.filterObject=Vn,c.fromRotation=function(i,e){var r=Math.sin(e),s=Math.cos(e);return i[0]=s,i[1]=r,i[2]=0,i[3]=-r,i[4]=s,i[5]=0,i[6]=0,i[7]=0,i[8]=1,i},c.fromScaling=function(i,e){return i[0]=e[0],i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=e[1],i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=e[2],i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,i},c.getAnchorAlignment=Rc,c.getAnchorJustification=Fc,c.getArrayBuffer=Xr,c.getImage=dn,c.getJSON=function(i,e){return Oi(Je(i,{type:"json"}),e)},c.getOverlapMode=$c,c.getRTLTextPluginStatus=Xa,c.getReferrer=ar,c.getVideo=function(i,e){const r=window.document.createElement("video");r.muted=!0,r.onloadstart=function(){e(null,r)};for(let s=0;s<i.length;s++){const l=window.document.createElement("source");As(i[s])||(r.crossOrigin="Anonymous"),l.src=i[s],r.appendChild(l)}return{cancel:()=>{}}},c.identity=_c,c.invert=function(i,e){var r=e[0],s=e[1],l=e[2],u=e[3],d=e[4],f=e[5],g=e[6],x=e[7],w=e[8],T=e[9],A=e[10],I=e[11],P=e[12],F=e[13],O=e[14],G=e[15],Y=r*f-s*d,$=r*g-l*d,J=r*x-u*d,pe=s*g-l*f,ue=s*x-u*f,Ne=l*x-u*g,qe=w*F-T*P,Ue=w*O-A*P,Re=w*G-I*P,ze=T*O-A*F,Ve=T*G-I*F,Be=A*G-I*O,Se=Y*Be-$*Ve+J*ze+pe*Re-ue*Ue+Ne*qe;return Se?(i[0]=(f*Be-g*Ve+x*ze)*(Se=1/Se),i[1]=(l*Ve-s*Be-u*ze)*Se,i[2]=(F*Ne-O*ue+G*pe)*Se,i[3]=(A*ue-T*Ne-I*pe)*Se,i[4]=(g*Re-d*Be-x*Ue)*Se,i[5]=(r*Be-l*Re+u*Ue)*Se,i[6]=(O*J-P*Ne-G*$)*Se,i[7]=(w*Ne-A*J+I*$)*Se,i[8]=(d*Ve-f*Re+x*qe)*Se,i[9]=(s*Re-r*Ve-u*qe)*Se,i[10]=(P*ue-F*J+G*Y)*Se,i[11]=(T*J-w*ue-I*Y)*Se,i[12]=(f*Ue-d*ze-g*qe)*Se,i[13]=(r*ze-s*Ue+l*qe)*Se,i[14]=(F*$-P*pe-O*Y)*Se,i[15]=(w*pe-T*$+A*Y)*Se,i):null},c.isImageBitmap=Br,c.isSafari=Rr,c.isWorker=Yi,c.keysDifference=function(i,e){const r=[];for(const s in i)s in e||r.push(s);return r},c.lazyLoadRTLTextPlugin=function(){ji.isLoading()||ji.isLoaded()||Xa()!=="deferred"||hl()},c.makeRequest=Oi,c.mapObject=Dt,c.mercatorXfromLng=Ku,c.mercatorYfromLat=Ju,c.mercatorZfromAltitude=Yu,c.mul=mm,c.mul$1=function(i,e,r){return i[0]=e[0]*r[0],i[1]=e[1]*r[1],i[2]=e[2]*r[2],i[3]=e[3]*r[3],i},c.multiply=eu,c.nextPowerOfTwo=function(i){return i<=1?1:Math.pow(2,Math.ceil(Math.log(i)/Math.LN2))},c.normalize=function(i,e){var r=e[0],s=e[1],l=e[2],u=r*r+s*s+l*l;return u>0&&(u=1/Math.sqrt(u)),i[0]=e[0]*u,i[1]=e[1]*u,i[2]=e[2]*u,i},c.number=qt,c.ortho=function(i,e,r,s,l,u,d){var f=1/(e-r),g=1/(s-l),x=1/(u-d);return i[0]=-2*f,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=-2*g,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=2*x,i[11]=0,i[12]=(e+r)*f,i[13]=(l+s)*g,i[14]=(d+u)*x,i[15]=1,i},c.parseCacheControl=Nn,c.parseGlyphPbf=function(i){return new kc(i).readFields(mf,[])},c.pbf=kc,c.performSymbolLayout=function(i){i.bucket.createArrays(),i.bucket.tilePixelRatio=ai/(512*i.bucket.overscaling),i.bucket.compareText={},i.bucket.iconsNeedLinear=!1;const e=i.bucket.layers[0].layout,r=i.bucket.layers[0]._unevaluatedLayout._values,s={layoutIconSize:r["icon-size"].possiblyEvaluate(new Vt(i.bucket.zoom+1),i.canonical),layoutTextSize:r["text-size"].possiblyEvaluate(new Vt(i.bucket.zoom+1),i.canonical),textMaxSize:r["text-size"].possiblyEvaluate(new Vt(18))};if(i.bucket.textSizeData.kind==="composite"){const{minZoom:g,maxZoom:x}=i.bucket.textSizeData;s.compositeTextSizes=[r["text-size"].possiblyEvaluate(new Vt(g),i.canonical),r["text-size"].possiblyEvaluate(new Vt(x),i.canonical)]}if(i.bucket.iconSizeData.kind==="composite"){const{minZoom:g,maxZoom:x}=i.bucket.iconSizeData;s.compositeIconSizes=[r["icon-size"].possiblyEvaluate(new Vt(g),i.canonical),r["icon-size"].possiblyEvaluate(new Vt(x),i.canonical)]}const l=e.get("text-line-height")*pi,u=e.get("text-rotation-alignment")!=="viewport"&&e.get("symbol-placement")!=="point",d=e.get("text-keep-upright"),f=e.get("text-size");for(const g of i.bucket.features){const x=e.get("text-font").evaluate(g,{},i.canonical).join(","),w=f.evaluate(g,{},i.canonical),T=s.layoutTextSize.evaluate(g,{},i.canonical),A=s.layoutIconSize.evaluate(g,{},i.canonical),I={horizontal:{},vertical:void 0},P=g.text;let F,O=[0,0];if(P){const $=P.toString(),J=e.get("text-letter-spacing").evaluate(g,{},i.canonical)*pi,pe=oc($)?J:0,ue=e.get("text-anchor").evaluate(g,{},i.canonical),Ne=e.get("text-variable-anchor");if(!Ne){const Ve=e.get("text-radial-offset").evaluate(g,{},i.canonical);O=Ve?ju(ue,[Ve*pi,Bc]):e.get("text-offset").evaluate(g,{},i.canonical).map(Be=>Be*pi)}let qe=u?"center":e.get("text-justify").evaluate(g,{},i.canonical);const Ue=e.get("symbol-placement"),Re=Ue==="point"?e.get("text-max-width").evaluate(g,{},i.canonical)*pi:0,ze=()=>{i.bucket.allowVerticalPlacement&&cs($)&&(I.vertical=El(P,i.glyphMap,i.glyphPositions,i.imagePositions,x,Re,l,ue,"left",pe,O,c.WritingMode.vertical,!0,Ue,T,w))};if(!u&&Ne){const Ve=qe==="auto"?Ne.map(Se=>Fc(Se)):[qe];let Be=!1;for(let Se=0;Se<Ve.length;Se++){const He=Ve[Se];if(!I.horizontal[He])if(Be)I.horizontal[He]=I.horizontal[0];else{const Ze=El(P,i.glyphMap,i.glyphPositions,i.imagePositions,x,Re,l,"center",He,pe,O,c.WritingMode.horizontal,!1,Ue,T,w);Ze&&(I.horizontal[He]=Ze,Be=Ze.positionedLines.length===1)}}ze()}else{qe==="auto"&&(qe=Fc(ue));const Ve=El(P,i.glyphMap,i.glyphPositions,i.imagePositions,x,Re,l,ue,qe,pe,O,c.WritingMode.horizontal,!1,Ue,T,w);Ve&&(I.horizontal[qe]=Ve),ze(),cs($)&&u&&d&&(I.vertical=El(P,i.glyphMap,i.glyphPositions,i.imagePositions,x,Re,l,ue,qe,pe,O,c.WritingMode.vertical,!1,Ue,T,w))}}let G=!1;if(g.icon&&g.icon.name){const $=i.imageMap[g.icon.name];$&&(F=vf(i.imagePositions[g.icon.name],e.get("icon-offset").evaluate(g,{},i.canonical),e.get("icon-anchor").evaluate(g,{},i.canonical)),G=!!$.sdf,i.bucket.sdfIcons===void 0?i.bucket.sdfIcons=G:i.bucket.sdfIcons!==G&&Yt("Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer"),($.pixelRatio!==i.bucket.pixelRatio||e.get("icon-rotate").constantOr(1)!==0)&&(i.bucket.iconsNeedLinear=!0))}const Y=qu(I.horizontal)||I.vertical;i.bucket.iconsInText=!!Y&&Y.iconsInText,(Y||F)&&Af(i.bucket,g,I,F,i.imageMap,s,T,A,O,G,i.canonical)}i.showCollisionBoxes&&i.bucket.generateCollisionDebugBuffers()},c.perspective=function(i,e,r,s,l){var u,d=1/Math.tan(e/2);return i[0]=d/r,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=d,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[11]=-1,i[12]=0,i[13]=0,i[15]=0,l!=null&&l!==1/0?(i[10]=(l+s)*(u=1/(s-l)),i[14]=2*l*s*u):(i[10]=-1,i[14]=-2*s),i},c.pick=function(i,e){const r={};for(let s=0;s<e.length;s++){const l=e[s];l in i&&(r[l]=i[l])}return r},c.plugin=ji,c.pointGeometry=it,c.polygonIntersectsPolygon=Hh,c.potpack=Au,c.refProperties=["type","source","source-layer","minzoom","maxzoom","filter","layout"],c.register=$e,c.registerForPluginStateChange=function(i){return i({pluginStatus:zi,pluginURL:lr}),Za.on("pluginStateChange",i),i},c.renderColorRamp=ou,c.rotateX=function(i,e,r){var s=Math.sin(r),l=Math.cos(r),u=e[4],d=e[5],f=e[6],g=e[7],x=e[8],w=e[9],T=e[10],A=e[11];return e!==i&&(i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=e[3],i[12]=e[12],i[13]=e[13],i[14]=e[14],i[15]=e[15]),i[4]=u*l+x*s,i[5]=d*l+w*s,i[6]=f*l+T*s,i[7]=g*l+A*s,i[8]=x*l-u*s,i[9]=w*l-d*s,i[10]=T*l-f*s,i[11]=A*l-g*s,i},c.rotateZ=function(i,e,r){var s=Math.sin(r),l=Math.cos(r),u=e[0],d=e[1],f=e[2],g=e[3],x=e[4],w=e[5],T=e[6],A=e[7];return e!==i&&(i[8]=e[8],i[9]=e[9],i[10]=e[10],i[11]=e[11],i[12]=e[12],i[13]=e[13],i[14]=e[14],i[15]=e[15]),i[0]=u*l+x*s,i[1]=d*l+w*s,i[2]=f*l+T*s,i[3]=g*l+A*s,i[4]=x*l-u*s,i[5]=w*l-d*s,i[6]=T*l-f*s,i[7]=A*l-g*s,i},c.scale=function(i,e,r){var s=r[0],l=r[1],u=r[2];return i[0]=e[0]*s,i[1]=e[1]*s,i[2]=e[2]*s,i[3]=e[3]*s,i[4]=e[4]*l,i[5]=e[5]*l,i[6]=e[6]*l,i[7]=e[7]*l,i[8]=e[8]*u,i[9]=e[9]*u,i[10]=e[10]*u,i[11]=e[11]*u,i[12]=e[12],i[13]=e[13],i[14]=e[14],i[15]=e[15],i},c.scale$1=function(i,e,r){return i[0]=e[0]*r,i[1]=e[1]*r,i[2]=e[2]*r,i},c.setCacheLimits=function(i,e){Or=i,Ur=e},c.setRTLTextPlugin=function(i,e,r=!1){if(zi===$a||zi===ja||zi===Ga)throw new Error("setRTLTextPlugin cannot be called multiple times.");lr=hn.resolveURL(i),zi=$a,qa=e,hs(),r||hl()},c.spec=V,c.sphericalToCartesian=function([i,e,r]){return e+=90,e*=Math.PI/180,r*=Math.PI/180,{x:i*Math.cos(e)*Math.sin(r),y:i*Math.sin(e)*Math.sin(r),z:i*Math.cos(r)}},c.sqrLen=function(i){var e=i[0],r=i[1];return e*e+r*r},c.sub=function(i,e,r){return i[0]=e[0]-r[0],i[1]=e[1]-r[1],i[2]=e[2]-r[2],i},c.toEvaluationFeature=ys,c.transformMat3=function(i,e,r){var s=e[0],l=e[1],u=e[2];return i[0]=s*r[0]+l*r[3]+u*r[6],i[1]=s*r[1]+l*r[4]+u*r[7],i[2]=s*r[2]+l*r[5]+u*r[8],i},c.transformMat4=yl,c.transformMat4$1=function(i,e,r){var s=e[0],l=e[1];return i[0]=r[0]*s+r[4]*l+r[12],i[1]=r[1]*s+r[5]*l+r[13],i},c.translate=function(i,e,r){var s,l,u,d,f,g,x,w,T,A,I,P,F=r[0],O=r[1],G=r[2];return e===i?(i[12]=e[0]*F+e[4]*O+e[8]*G+e[12],i[13]=e[1]*F+e[5]*O+e[9]*G+e[13],i[14]=e[2]*F+e[6]*O+e[10]*G+e[14],i[15]=e[3]*F+e[7]*O+e[11]*G+e[15]):(l=e[1],u=e[2],d=e[3],f=e[4],g=e[5],x=e[6],w=e[7],T=e[8],A=e[9],I=e[10],P=e[11],i[0]=s=e[0],i[1]=l,i[2]=u,i[3]=d,i[4]=f,i[5]=g,i[6]=x,i[7]=w,i[8]=T,i[9]=A,i[10]=I,i[11]=P,i[12]=s*F+f*O+T*G+e[12],i[13]=l*F+g*O+A*G+e[13],i[14]=u*F+x*O+I*G+e[14],i[15]=d*F+w*O+P*G+e[15]),i},c.triggerPluginCompletionEvent=cl,c.unicodeBlockLookup=Oe,c.uniqueId=function(){return ti++},c.validateCustomStyleLayer=function(i){const e=[],r=i.id;return r===void 0&&e.push({message:`layers.${r}: missing required property "id"`}),i.render===void 0&&e.push({message:`layers.${r}: missing required method "render"`}),i.renderingMode&&i.renderingMode!=="2d"&&i.renderingMode!=="3d"&&e.push({message:`layers.${r}: property "renderingMode" must be either "2d" or "3d"`}),e},c.validateLight=Ba,c.validateStyle=as,c.vectorTile=Dn,c.warnOnce=Yt,c.wrap=K}),me(["./shared"],function(c){function Ie(re){const z=typeof re;if(z==="number"||z==="boolean"||z==="string"||re==null)return JSON.stringify(re);if(Array.isArray(re)){let Q="[";for(const V of re)Q+=`${Ie(V)},`;return`${Q}]`}const R=Object.keys(re).sort();let j="{";for(let Q=0;Q<R.length;Q++)j+=`${JSON.stringify(R[Q])}:${Ie(re[R[Q]])},`;return`${j}}`}function Ke(re){let z="";for(const R of c.refProperties)z+=`/${Ie(re[R])}`;return z}class lt{constructor(z){this.keyCache={},z&&this.replace(z)}replace(z){this._layerConfigs={},this._layers={},this.update(z,[])}update(z,R){for(const Q of z){this._layerConfigs[Q.id]=Q;const V=this._layers[Q.id]=c.createStyleLayer(Q);V._featureFilter=c.createFilter(V.filter),this.keyCache[Q.id]&&delete this.keyCache[Q.id]}for(const Q of R)delete this.keyCache[Q],delete this._layerConfigs[Q],delete this._layers[Q];this.familiesBySource={};const j=function(Q,V){const H={};for(let oe=0;oe<Q.length;oe++){const Ee=V&&V[Q[oe].id]||Ke(Q[oe]);V&&(V[Q[oe].id]=Ee);let Pe=H[Ee];Pe||(Pe=H[Ee]=[]),Pe.push(Q[oe])}const ve=[];for(const oe in H)ve.push(H[oe]);return ve}(Object.values(this._layerConfigs),this.keyCache);for(const Q of j){const V=Q.map(Ce=>this._layers[Ce.id]),H=V[0];if(H.visibility==="none")continue;const ve=H.source||"";let oe=this.familiesBySource[ve];oe||(oe=this.familiesBySource[ve]={});const Ee=H.sourceLayer||"_geojsonTileLayer";let Pe=oe[Ee];Pe||(Pe=oe[Ee]=[]),Pe.push(V)}}}class St{constructor(z){const R={},j=[];for(const ve in z){const oe=z[ve],Ee=R[ve]={};for(const Pe in oe){const Ce=oe[+Pe];if(!Ce||Ce.bitmap.width===0||Ce.bitmap.height===0)continue;const at={x:0,y:0,w:Ce.bitmap.width+2,h:Ce.bitmap.height+2};j.push(at),Ee[Pe]={rect:at,metrics:Ce.metrics}}}const{w:Q,h:V}=c.potpack(j),H=new c.AlphaImage({width:Q||1,height:V||1});for(const ve in z){const oe=z[ve];for(const Ee in oe){const Pe=oe[+Ee];if(!Pe||Pe.bitmap.width===0||Pe.bitmap.height===0)continue;const Ce=R[ve][Ee].rect;c.AlphaImage.copy(Pe.bitmap,H,{x:0,y:0},{x:Ce.x+1,y:Ce.y+1},Pe.bitmap)}}this.image=H,this.positions=R}}c.register("GlyphAtlas",St);class Me{constructor(z){this.tileID=new c.OverscaledTileID(z.tileID.overscaledZ,z.tileID.wrap,z.tileID.canonical.z,z.tileID.canonical.x,z.tileID.canonical.y),this.uid=z.uid,this.zoom=z.zoom,this.pixelRatio=z.pixelRatio,this.tileSize=z.tileSize,this.source=z.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=z.showCollisionBoxes,this.collectResourceTiming=!!z.collectResourceTiming,this.returnDependencies=!!z.returnDependencies,this.promoteId=z.promoteId}parse(z,R,j,Q,V){this.status="parsing",this.data=z,this.collisionBoxArray=new c.CollisionBoxArray;const H=new c.DictionaryCoder(Object.keys(z.layers).sort()),ve=new c.FeatureIndex(this.tileID,this.promoteId);ve.bucketLayerIDs=[];const oe={},Ee={featureIndex:ve,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:j},Pe=R.familiesBySource[this.source];for(const je in Pe){const It=z.layers[je];if(!It)continue;It.version===1&&c.warnOnce(`Vector tile source "${this.source}" layer "${je}" does not use vector tile spec v2 and therefore may have some rendering errors.`);const Xt=H.encode(je),ii=[];for(let Bt=0;Bt<It.length;Bt++){const At=It.feature(Bt),st=ve.getId(At,je);ii.push({feature:At,id:st,index:Bt,sourceLayerIndex:Xt})}for(const Bt of Pe[je]){const At=Bt[0];At.source!==this.source&&c.warnOnce(`layer.source = ${At.source} does not equal this.source = ${this.source}`),At.minzoom&&this.zoom<Math.floor(At.minzoom)||At.maxzoom&&this.zoom>=At.maxzoom||At.visibility!=="none"&&(K(Bt,this.zoom,j),(oe[At.id]=At.createBucket({index:ve.bucketLayerIDs.length,layers:Bt,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:Xt,sourceID:this.source})).populate(ii,Ee,this.tileID.canonical),ve.bucketLayerIDs.push(Bt.map(st=>st.id)))}}let Ce,at,gt,xe;const Le=c.mapObject(Ee.glyphDependencies,je=>Object.keys(je).map(Number));Object.keys(Le).length?Q.send("getGlyphs",{uid:this.uid,stacks:Le,source:this.source,tileID:this.tileID,type:"glyphs"},(je,It)=>{Ce||(Ce=je,at=It,Rt.call(this))}):at={};const Fe=Object.keys(Ee.iconDependencies);Fe.length?Q.send("getImages",{icons:Fe,source:this.source,tileID:this.tileID,type:"icons"},(je,It)=>{Ce||(Ce=je,gt=It,Rt.call(this))}):gt={};const vt=Object.keys(Ee.patternDependencies);function Rt(){if(Ce)return V(Ce);if(at&&gt&&xe){const je=new St(at),It=new c.ImageAtlas(gt,xe);for(const Xt in oe){const ii=oe[Xt];ii instanceof c.SymbolBucket?(K(ii.layers,this.zoom,j),c.performSymbolLayout({bucket:ii,glyphMap:at,glyphPositions:je.positions,imageMap:gt,imagePositions:It.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):ii.hasPattern&&(ii instanceof c.LineBucket||ii instanceof c.FillBucket||ii instanceof c.FillExtrusionBucket)&&(K(ii.layers,this.zoom,j),ii.addFeatures(Ee,this.tileID.canonical,It.patternPositions))}this.status="done",V(null,{buckets:Object.values(oe).filter(Xt=>!Xt.isEmpty()),featureIndex:ve,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:je.image,imageAtlas:It,glyphMap:this.returnDependencies?at:null,iconMap:this.returnDependencies?gt:null,glyphPositions:this.returnDependencies?je.positions:null})}}vt.length?Q.send("getImages",{icons:vt,source:this.source,tileID:this.tileID,type:"patterns"},(je,It)=>{Ce||(Ce=je,xe=It,Rt.call(this))}):xe={},Rt.call(this)}}function K(re,z,R){const j=new c.EvaluationParameters(z);for(const Q of re)Q.recalculate(j,R)}function Je(re,z){const R=c.getArrayBuffer(re.request,(j,Q,V,H)=>{j?z(j):Q&&z(null,{vectorTile:new c.vectorTile.VectorTile(new c.pbf(Q)),rawData:Q,cacheControl:V,expires:H})});return()=>{R.cancel(),z()}}class ti{constructor(z,R,j,Q){this.actor=z,this.layerIndex=R,this.availableImages=j,this.loadVectorData=Q||Je,this.loading={},this.loaded={}}loadTile(z,R){const j=z.uid;this.loading||(this.loading={});const Q=!!(z&&z.request&&z.request.collectResourceTiming)&&new c.RequestPerformance(z.request),V=this.loading[j]=new Me(z);V.abort=this.loadVectorData(z,(H,ve)=>{if(delete this.loading[j],H||!ve)return V.status="done",this.loaded[j]=V,R(H);const oe=ve.rawData,Ee={};ve.expires&&(Ee.expires=ve.expires),ve.cacheControl&&(Ee.cacheControl=ve.cacheControl);const Pe={};if(Q){const Ce=Q.finish();Ce&&(Pe.resourceTiming=JSON.parse(JSON.stringify(Ce)))}V.vectorTile=ve.vectorTile,V.parse(ve.vectorTile,this.layerIndex,this.availableImages,this.actor,(Ce,at)=>{if(Ce||!at)return R(Ce);R(null,c.extend({rawTileData:oe.slice(0)},at,Ee,Pe))}),this.loaded=this.loaded||{},this.loaded[j]=V})}reloadTile(z,R){const j=this.loaded,Q=z.uid,V=this;if(j&&j[Q]){const H=j[Q];H.showCollisionBoxes=z.showCollisionBoxes;const ve=(oe,Ee)=>{const Pe=H.reloadCallback;Pe&&(delete H.reloadCallback,H.parse(H.vectorTile,V.layerIndex,this.availableImages,V.actor,Pe)),R(oe,Ee)};H.status==="parsing"?H.reloadCallback=ve:H.status==="done"&&(H.vectorTile?H.parse(H.vectorTile,this.layerIndex,this.availableImages,this.actor,ve):ve())}}abortTile(z,R){const j=this.loading,Q=z.uid;j&&j[Q]&&j[Q].abort&&(j[Q].abort(),delete j[Q]),R()}removeTile(z,R){const j=this.loaded,Q=z.uid;j&&j[Q]&&delete j[Q],R()}}class Jt{constructor(){this.loaded={}}loadTile(z,R){const{uid:j,encoding:Q,rawImageData:V}=z,H=c.isImageBitmap(V)?this.getImageData(V):V,ve=new c.DEMData(j,H,Q);this.loaded=this.loaded||{},this.loaded[j]=ve,R(null,ve)}getImageData(z){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(z.width,z.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext("2d",{willReadFrequently:!0})),this.offscreenCanvas.width=z.width,this.offscreenCanvas.height=z.height,this.offscreenCanvasContext.drawImage(z,0,0,z.width,z.height);const R=this.offscreenCanvasContext.getImageData(-1,-1,z.width+2,z.height+2);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new c.RGBAImage({width:R.width,height:R.height},R.data)}removeTile(z){const R=this.loaded,j=z.uid;R&&R[j]&&delete R[j]}}var Dt=function re(z,R){var j,Q=z&&z.type;if(Q==="FeatureCollection")for(j=0;j<z.features.length;j++)re(z.features[j],R);else if(Q==="GeometryCollection")for(j=0;j<z.geometries.length;j++)re(z.geometries[j],R);else if(Q==="Feature")re(z.geometry,R);else if(Q==="Polygon")Vn(z.coordinates,R);else if(Q==="MultiPolygon")for(j=0;j<z.coordinates.length;j++)Vn(z.coordinates[j],R);return z};function Vn(re,z){if(re.length!==0){Ji(re[0],z);for(var R=1;R<re.length;R++)Ji(re[R],!z)}}function Ji(re,z){for(var R=0,j=0,Q=0,V=re.length,H=V-1;Q<V;H=Q++){var ve=(re[Q][0]-re[H][0])*(re[H][1]+re[Q][1]),oe=R+ve;j+=Math.abs(R)>=Math.abs(ve)?R-oe+ve:ve-oe+R,R=oe}R+j>=0!=!!z&&re.reverse()}const Lr=c.vectorTile.VectorTileFeature.prototype.toGeoJSON;var Yt={},nr={get exports(){return Yt},set exports(re){Yt=re}},Dr=c.pointGeometry,Yi=c.vectorTile.VectorTileFeature,Nn=on;function on(re,z){this.options=z||{},this.features=re,this.length=re.length}function Rr(re,z){this.id=typeof re.id=="number"?re.id:void 0,this.type=re.type,this.rawGeometry=re.type===1?[re.geometry]:re.geometry,this.properties=re.tags,this.extent=z||4096}on.prototype.feature=function(re){return new Rr(this.features[re],this.options.extent)},Rr.prototype.loadGeometry=function(){var re=this.rawGeometry;this.geometry=[];for(var z=0;z<re.length;z++){for(var R=re[z],j=[],Q=0;Q<R.length;Q++)j.push(new Dr(R[Q][0],R[Q][1]));this.geometry.push(j)}return this.geometry},Rr.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var re=this.geometry,z=1/0,R=-1/0,j=1/0,Q=-1/0,V=0;V<re.length;V++)for(var H=re[V],ve=0;ve<H.length;ve++){var oe=H[ve];z=Math.min(z,oe.x),R=Math.max(R,oe.x),j=Math.min(j,oe.y),Q=Math.max(Q,oe.y)}return[z,j,R,Q]},Rr.prototype.toGeoJSON=Yi.prototype.toGeoJSON;var Br=c.pbf,ln=Nn;function br(re){var z=new Br;return function(R,j){for(var Q in R.layers)j.writeMessage(3,cn,R.layers[Q])}(re,z),z.finish()}function cn(re,z){var R;z.writeVarintField(15,re.version||1),z.writeStringField(1,re.name||""),z.writeVarintField(5,re.extent||4096);var j={keys:[],values:[],keycache:{},valuecache:{}};for(R=0;R<re.length;R++)j.feature=re.feature(R),z.writeMessage(2,hn,j);var Q=j.keys;for(R=0;R<Q.length;R++)z.writeStringField(3,Q[R]);var V=j.values;for(R=0;R<V.length;R++)z.writeMessage(4,ki,V[R])}function hn(re,z){var R=re.feature;R.id!==void 0&&z.writeVarintField(1,R.id),z.writeMessage(2,it,re),z.writeVarintField(3,R.type),z.writeMessage(4,qr,R)}function it(re,z){var R=re.feature,j=re.keys,Q=re.values,V=re.keycache,H=re.valuecache;for(var ve in R.properties){var oe=R.properties[ve],Ee=V[ve];if(oe!==null){Ee===void 0&&(j.push(ve),V[ve]=Ee=j.length-1),z.writeVarint(Ee);var Pe=typeof oe;Pe!=="string"&&Pe!=="boolean"&&Pe!=="number"&&(oe=JSON.stringify(oe));var Ce=Pe+":"+oe,at=H[Ce];at===void 0&&(Q.push(oe),H[Ce]=at=Q.length-1),z.writeVarint(at)}}}function sr(re,z){return(z<<3)+(7&re)}function Fr(re){return re<<1^re>>31}function qr(re,z){for(var R=re.loadGeometry(),j=re.type,Q=0,V=0,H=R.length,ve=0;ve<H;ve++){var oe=R[ve],Ee=1;j===1&&(Ee=oe.length),z.writeVarint(sr(1,Ee));for(var Pe=j===3?oe.length-1:oe.length,Ce=0;Ce<Pe;Ce++){Ce===1&&j!==1&&z.writeVarint(sr(2,Pe-1));var at=oe[Ce].x-Q,gt=oe[Ce].y-V;z.writeVarint(Fr(at)),z.writeVarint(Fr(gt)),Q+=at,V+=gt}j===3&&z.writeVarint(sr(7,1))}}function ki(re,z){var R=typeof re;R==="string"?z.writeStringField(1,re):R==="boolean"?z.writeBooleanField(7,re):R==="number"&&(re%1!=0?z.writeDoubleField(3,re):re<0?z.writeSVarintField(6,re):z.writeVarintField(5,re))}nr.exports=br,Yt.fromVectorTileJs=br,Yt.fromGeojsonVt=function(re,z){z=z||{};var R={};for(var j in re)R[j]=new ln(re[j].features,z),R[j].name=j,R[j].version=z.version,R[j].extent=z.extent;return br({layers:R})},Yt.GeoJSONWrapper=ln;const Zr={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:re=>re},Or=Math.fround||(Ur=new Float32Array(1),re=>(Ur[0]=+re,Ur[0]));var Ur;class $n{constructor(z){this.options=Sr(Object.create(Zr),z),this.trees=new Array(this.options.maxZoom+1)}load(z){const{log:R,minZoom:j,maxZoom:Q,nodeSize:V}=this.options;R&&console.time("total time");const H=`prepare ${z.length} points`;R&&console.time(H),this.points=z;let ve=[];for(let oe=0;oe<z.length;oe++)z[oe].geometry&&ve.push(un(z[oe],oe));this.trees[Q+1]=new c.KDBush(ve,Er,ar,V,Float32Array),R&&console.timeEnd(H);for(let oe=Q;oe>=j;oe--){const Ee=+Date.now();ve=this._cluster(ve,oe),this.trees[oe]=new c.KDBush(ve,Er,ar,V,Float32Array),R&&console.log("z%d: %d clusters in %dms",oe,ve.length,+Date.now()-Ee)}return R&&console.timeEnd("total time"),this}getClusters(z,R){let j=((z[0]+180)%360+360)%360-180;const Q=Math.max(-90,Math.min(90,z[1]));let V=z[2]===180?180:((z[2]+180)%360+360)%360-180;const H=Math.max(-90,Math.min(90,z[3]));if(z[2]-z[0]>=360)j=-180,V=180;else if(j>V){const Pe=this.getClusters([j,Q,180,H],R),Ce=this.getClusters([-180,Q,V,H],R);return Pe.concat(Ce)}const ve=this.trees[this._limitZoom(R)],oe=ve.range(Vr(j),di(H),Vr(V),di(Q)),Ee=[];for(const Pe of oe){const Ce=ve.points[Pe];Ee.push(Ce.numPoints?wr(Ce):this.points[Ce.index])}return Ee}getChildren(z){const R=this._getOriginId(z),j=this._getOriginZoom(z),Q="No cluster with the specified id.",V=this.trees[j];if(!V)throw new Error(Q);const H=V.points[R];if(!H)throw new Error(Q);const ve=this.options.radius/(this.options.extent*Math.pow(2,j-1)),oe=V.within(H.x,H.y,ve),Ee=[];for(const Pe of oe){const Ce=V.points[Pe];Ce.parentId===z&&Ee.push(Ce.numPoints?wr(Ce):this.points[Ce.index])}if(Ee.length===0)throw new Error(Q);return Ee}getLeaves(z,R,j){const Q=[];return this._appendLeaves(Q,z,R=R||10,j=j||0,0),Q}getTile(z,R,j){const Q=this.trees[this._limitZoom(z)],V=Math.pow(2,z),{extent:H,radius:ve}=this.options,oe=ve/H,Ee=(j-oe)/V,Pe=(j+1+oe)/V,Ce={features:[]};return this._addTileFeatures(Q.range((R-oe)/V,Ee,(R+1+oe)/V,Pe),Q.points,R,j,V,Ce),R===0&&this._addTileFeatures(Q.range(1-oe/V,Ee,1,Pe),Q.points,V,j,V,Ce),R===V-1&&this._addTileFeatures(Q.range(0,Ee,oe/V,Pe),Q.points,-1,j,V,Ce),Ce.features.length?Ce:null}getClusterExpansionZoom(z){let R=this._getOriginZoom(z)-1;for(;R<=this.options.maxZoom;){const j=this.getChildren(z);if(R++,j.length!==1)break;z=j[0].properties.cluster_id}return R}_appendLeaves(z,R,j,Q,V){const H=this.getChildren(R);for(const ve of H){const oe=ve.properties;if(oe&&oe.cluster?V+oe.point_count<=Q?V+=oe.point_count:V=this._appendLeaves(z,oe.cluster_id,j,Q,V):V<Q?V++:z.push(ve),z.length===j)break}return V}_addTileFeatures(z,R,j,Q,V,H){for(const ve of z){const oe=R[ve],Ee=oe.numPoints;let Pe,Ce,at;if(Ee)Pe=Tr(oe),Ce=oe.x,at=oe.y;else{const Le=this.points[oe.index];Pe=Le.properties,Ce=Vr(Le.geometry.coordinates[0]),at=di(Le.geometry.coordinates[1])}const gt={type:1,geometry:[[Math.round(this.options.extent*(Ce*V-j)),Math.round(this.options.extent*(at*V-Q))]],tags:Pe};let xe;Ee?xe=oe.id:this.options.generateId?xe=oe.index:this.points[oe.index].id&&(xe=this.points[oe.index].id),xe!==void 0&&(gt.id=xe),H.features.push(gt)}}_limitZoom(z){return Math.max(this.options.minZoom,Math.min(Math.floor(+z),this.options.maxZoom+1))}_cluster(z,R){const j=[],{radius:Q,extent:V,reduce:H,minPoints:ve}=this.options,oe=Q/(V*Math.pow(2,R));for(let Ee=0;Ee<z.length;Ee++){const Pe=z[Ee];if(Pe.zoom<=R)continue;Pe.zoom=R;const Ce=this.trees[R+1],at=Ce.within(Pe.x,Pe.y,oe),gt=Pe.numPoints||1;let xe=gt;for(const Le of at){const Fe=Ce.points[Le];Fe.zoom>R&&(xe+=Fe.numPoints||1)}if(xe>gt&&xe>=ve){let Le=Pe.x*gt,Fe=Pe.y*gt,vt=H&&gt>1?this._map(Pe,!0):null;const Rt=(Ee<<5)+(R+1)+this.points.length;for(const je of at){const It=Ce.points[je];if(It.zoom<=R)continue;It.zoom=R;const Xt=It.numPoints||1;Le+=It.x*Xt,Fe+=It.y*Xt,It.parentId=Rt,H&&(vt||(vt=this._map(Pe,!0)),H(vt,this._map(It)))}Pe.parentId=Rt,j.push(jn(Le/xe,Fe/xe,Rt,xe,vt))}else if(j.push(Pe),xe>1)for(const Le of at){const Fe=Ce.points[Le];Fe.zoom<=R||(Fe.zoom=R,j.push(Fe))}}return j}_getOriginId(z){return z-this.points.length>>5}_getOriginZoom(z){return(z-this.points.length)%32}_map(z,R){if(z.numPoints)return R?Sr({},z.properties):z.properties;const j=this.points[z.index].properties,Q=this.options.map(j);return R&&Q===j?Sr({},Q):Q}}function jn(re,z,R,j,Q){return{x:Or(re),y:Or(z),zoom:1/0,id:R,parentId:-1,numPoints:j,properties:Q}}function un(re,z){const[R,j]=re.geometry.coordinates;return{x:Or(Vr(R)),y:Or(di(j)),zoom:1/0,index:z,parentId:-1}}function wr(re){return{type:"Feature",id:re.id,properties:Tr(re),geometry:{type:"Point",coordinates:[(z=re.x,360*(z-.5)),Gn(re.y)]}};var z}function Tr(re){const z=re.numPoints,R=z>=1e4?`${Math.round(z/1e3)}k`:z>=1e3?Math.round(z/100)/10+"k":z;return Sr(Sr({},re.properties),{cluster:!0,cluster_id:re.id,point_count:z,point_count_abbreviated:R})}function Vr(re){return re/360+.5}function di(re){const z=Math.sin(re*Math.PI/180),R=.5-.25*Math.log((1+z)/(1-z))/Math.PI;return R<0?0:R>1?1:R}function Gn(re){const z=(180-360*re)*Math.PI/180;return 360*Math.atan(Math.exp(z))/Math.PI-90}function Sr(re,z){for(const R in z)re[R]=z[R];return re}function Er(re){return re.x}function ar(re){return re.y}var pn={};function Oi(re,z){return z?re.properties[z]:re.id}function Xr(re,z){if(re==null)return!0;if(re.type==="Feature")return Oi(re,z)!=null;if(re.type==="FeatureCollection"){const R=new Set;for(const j of re.features){const Q=Oi(j,z);if(Q==null||R.has(Q))return!1;R.add(Q)}return!0}return!1}function As(re,z){const R=new Map;if(re!=null)if(re.type==="Feature")R.set(Oi(re,z),re);else for(const j of re.features)R.set(Oi(j,z),j);return R}function Wr(re,z){const R=re.tileID.canonical;if(!this._geoJSONIndex)return z(null,null);const j=this._geoJSONIndex.getTile(R.z,R.x,R.y);if(!j)return z(null,null);const Q=new class{constructor(H){this.layers={_geojsonTileLayer:this},this.name="_geojsonTileLayer",this.extent=c.EXTENT,this.length=H.length,this._features=H}feature(H){return new class{constructor(ve){this._feature=ve,this.extent=c.EXTENT,this.type=ve.type,this.properties=ve.tags,"id"in ve&&!isNaN(ve.id)&&(this.id=parseInt(ve.id,10))}loadGeometry(){if(this._feature.type===1){const ve=[];for(const oe of this._feature.geometry)ve.push([new c.pointGeometry(oe[0],oe[1])]);return ve}{const ve=[];for(const oe of this._feature.geometry){const Ee=[];for(const Pe of oe)Ee.push(new c.pointGeometry(Pe[0],Pe[1]));ve.push(Ee)}return ve}}toGeoJSON(ve,oe,Ee){return Lr.call(this,ve,oe,Ee)}}(this._features[H])}}(j.features);let V=Yt(Q);V.byteOffset===0&&V.byteLength===V.buffer.byteLength||(V=new Uint8Array(V)),z(null,{vectorTile:Q,rawData:V.buffer})}({get exports(){return pn},set exports(re){pn=re}}).exports=function(){function re(ee,se,ce,fe){for(var ge,be=fe,Te=ce-se>>1,_e=ce-se,ke=ee[se],le=ee[se+1],Qe=ee[ce],pt=ee[ce+1],De=se+3;De<ce;De+=3){var ot=z(ee[De],ee[De+1],ke,le,Qe,pt);if(ot>be)ge=De,be=ot;else if(ot===be){var _t=Math.abs(De-Te);_t<_e&&(ge=De,_e=_t)}}be>fe&&(ge-se>3&&re(ee,se,ge,fe),ee[ge+2]=be,ce-ge>3&&re(ee,ge,ce,fe))}function z(ee,se,ce,fe,ge,be){var Te=ge-ce,_e=be-fe;if(Te!==0||_e!==0){var ke=((ee-ce)*Te+(se-fe)*_e)/(Te*Te+_e*_e);ke>1?(ce=ge,fe=be):ke>0&&(ce+=Te*ke,fe+=_e*ke)}return(Te=ee-ce)*Te+(_e=se-fe)*_e}function R(ee,se,ce,fe){var ge={id:ee===void 0?null:ee,type:se,geometry:ce,tags:fe,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(be){var Te=be.geometry,_e=be.type;if(_e==="Point"||_e==="MultiPoint"||_e==="LineString")j(be,Te);else if(_e==="Polygon"||_e==="MultiLineString")for(var ke=0;ke<Te.length;ke++)j(be,Te[ke]);else if(_e==="MultiPolygon")for(ke=0;ke<Te.length;ke++)for(var le=0;le<Te[ke].length;le++)j(be,Te[ke][le])}(ge),ge}function j(ee,se){for(var ce=0;ce<se.length;ce+=3)ee.minX=Math.min(ee.minX,se[ce]),ee.minY=Math.min(ee.minY,se[ce+1]),ee.maxX=Math.max(ee.maxX,se[ce]),ee.maxY=Math.max(ee.maxY,se[ce+1])}function Q(ee,se,ce,fe){if(se.geometry){var ge=se.geometry.coordinates,be=se.geometry.type,Te=Math.pow(ce.tolerance/((1<<ce.maxZoom)*ce.extent),2),_e=[],ke=se.id;if(ce.promoteId?ke=se.properties[ce.promoteId]:ce.generateId&&(ke=fe||0),be==="Point")V(ge,_e);else if(be==="MultiPoint")for(var le=0;le<ge.length;le++)V(ge[le],_e);else if(be==="LineString")H(ge,_e,Te,!1);else if(be==="MultiLineString"){if(ce.lineMetrics){for(le=0;le<ge.length;le++)H(ge[le],_e=[],Te,!1),ee.push(R(ke,"LineString",_e,se.properties));return}ve(ge,_e,Te,!1)}else if(be==="Polygon")ve(ge,_e,Te,!0);else{if(be!=="MultiPolygon"){if(be==="GeometryCollection"){for(le=0;le<se.geometry.geometries.length;le++)Q(ee,{id:ke,geometry:se.geometry.geometries[le],properties:se.properties},ce,fe);return}throw new Error("Input data is not a valid GeoJSON object.")}for(le=0;le<ge.length;le++){var Qe=[];ve(ge[le],Qe,Te,!0),_e.push(Qe)}}ee.push(R(ke,be,_e,se.properties))}}function V(ee,se){se.push(oe(ee[0])),se.push(Ee(ee[1])),se.push(0)}function H(ee,se,ce,fe){for(var ge,be,Te=0,_e=0;_e<ee.length;_e++){var ke=oe(ee[_e][0]),le=Ee(ee[_e][1]);se.push(ke),se.push(le),se.push(0),_e>0&&(Te+=fe?(ge*le-ke*be)/2:Math.sqrt(Math.pow(ke-ge,2)+Math.pow(le-be,2))),ge=ke,be=le}var Qe=se.length-3;se[2]=1,re(se,0,Qe,ce),se[Qe+2]=1,se.size=Math.abs(Te),se.start=0,se.end=se.size}function ve(ee,se,ce,fe){for(var ge=0;ge<ee.length;ge++){var be=[];H(ee[ge],be,ce,fe),se.push(be)}}function oe(ee){return ee/360+.5}function Ee(ee){var se=Math.sin(ee*Math.PI/180),ce=.5-.25*Math.log((1+se)/(1-se))/Math.PI;return ce<0?0:ce>1?1:ce}function Pe(ee,se,ce,fe,ge,be,Te,_e){if(fe/=se,be>=(ce/=se)&&Te<fe)return ee;if(Te<ce||be>=fe)return null;for(var ke=[],le=0;le<ee.length;le++){var Qe=ee[le],pt=Qe.geometry,De=Qe.type,ot=ge===0?Qe.minX:Qe.minY,_t=ge===0?Qe.maxX:Qe.maxY;if(ot>=ce&&_t<fe)ke.push(Qe);else if(!(_t<ce||ot>=fe)){var Ft=[];if(De==="Point"||De==="MultiPoint")Ce(pt,Ft,ce,fe,ge);else if(De==="LineString")at(pt,Ft,ce,fe,ge,!1,_e.lineMetrics);else if(De==="MultiLineString")xe(pt,Ft,ce,fe,ge,!1);else if(De==="Polygon")xe(pt,Ft,ce,fe,ge,!0);else if(De==="MultiPolygon")for(var Ot=0;Ot<pt.length;Ot++){var ut=[];xe(pt[Ot],ut,ce,fe,ge,!0),ut.length&&Ft.push(ut)}if(Ft.length){if(_e.lineMetrics&&De==="LineString"){for(Ot=0;Ot<Ft.length;Ot++)ke.push(R(Qe.id,De,Ft[Ot],Qe.tags));continue}De!=="LineString"&&De!=="MultiLineString"||(Ft.length===1?(De="LineString",Ft=Ft[0]):De="MultiLineString"),De!=="Point"&&De!=="MultiPoint"||(De=Ft.length===3?"Point":"MultiPoint"),ke.push(R(Qe.id,De,Ft,Qe.tags))}}}return ke.length?ke:null}function Ce(ee,se,ce,fe,ge){for(var be=0;be<ee.length;be+=3){var Te=ee[be+ge];Te>=ce&&Te<=fe&&(se.push(ee[be]),se.push(ee[be+1]),se.push(ee[be+2]))}}function at(ee,se,ce,fe,ge,be,Te){for(var _e,ke,le=gt(ee),Qe=ge===0?Fe:vt,pt=ee.start,De=0;De<ee.length-3;De+=3){var ot=ee[De],_t=ee[De+1],Ft=ee[De+2],Ot=ee[De+3],ut=ee[De+4],mi=ge===0?ot:_t,li=ge===0?Ot:ut,wt=!1;Te&&(_e=Math.sqrt(Math.pow(ot-Ot,2)+Math.pow(_t-ut,2))),mi<ce?li>ce&&(ke=Qe(le,ot,_t,Ot,ut,ce),Te&&(le.start=pt+_e*ke)):mi>fe?li<fe&&(ke=Qe(le,ot,_t,Ot,ut,fe),Te&&(le.start=pt+_e*ke)):Le(le,ot,_t,Ft),li<ce&&mi>=ce&&(ke=Qe(le,ot,_t,Ot,ut,ce),wt=!0),li>fe&&mi<=fe&&(ke=Qe(le,ot,_t,Ot,ut,fe),wt=!0),!be&&wt&&(Te&&(le.end=pt+_e*ke),se.push(le),le=gt(ee)),Te&&(pt+=_e)}var si=ee.length-3;ot=ee[si],_t=ee[si+1],Ft=ee[si+2],(mi=ge===0?ot:_t)>=ce&&mi<=fe&&Le(le,ot,_t,Ft),si=le.length-3,be&&si>=3&&(le[si]!==le[0]||le[si+1]!==le[1])&&Le(le,le[0],le[1],le[2]),le.length&&se.push(le)}function gt(ee){var se=[];return se.size=ee.size,se.start=ee.start,se.end=ee.end,se}function xe(ee,se,ce,fe,ge,be){for(var Te=0;Te<ee.length;Te++)at(ee[Te],se,ce,fe,ge,be,!1)}function Le(ee,se,ce,fe){ee.push(se),ee.push(ce),ee.push(fe)}function Fe(ee,se,ce,fe,ge,be){var Te=(be-se)/(fe-se);return ee.push(be),ee.push(ce+(ge-ce)*Te),ee.push(1),Te}function vt(ee,se,ce,fe,ge,be){var Te=(be-ce)/(ge-ce);return ee.push(se+(fe-se)*Te),ee.push(be),ee.push(1),Te}function Rt(ee,se){for(var ce=[],fe=0;fe<ee.length;fe++){var ge,be=ee[fe],Te=be.type;if(Te==="Point"||Te==="MultiPoint"||Te==="LineString")ge=je(be.geometry,se);else if(Te==="MultiLineString"||Te==="Polygon"){ge=[];for(var _e=0;_e<be.geometry.length;_e++)ge.push(je(be.geometry[_e],se))}else if(Te==="MultiPolygon")for(ge=[],_e=0;_e<be.geometry.length;_e++){for(var ke=[],le=0;le<be.geometry[_e].length;le++)ke.push(je(be.geometry[_e][le],se));ge.push(ke)}ce.push(R(be.id,Te,ge,be.tags))}return ce}function je(ee,se){var ce=[];ce.size=ee.size,ee.start!==void 0&&(ce.start=ee.start,ce.end=ee.end);for(var fe=0;fe<ee.length;fe+=3)ce.push(ee[fe]+se,ee[fe+1],ee[fe+2]);return ce}function It(ee,se){if(ee.transformed)return ee;var ce,fe,ge,be=1<<ee.z,Te=ee.x,_e=ee.y;for(ce=0;ce<ee.features.length;ce++){var ke=ee.features[ce],le=ke.geometry,Qe=ke.type;if(ke.geometry=[],Qe===1)for(fe=0;fe<le.length;fe+=2)ke.geometry.push(Xt(le[fe],le[fe+1],se,be,Te,_e));else for(fe=0;fe<le.length;fe++){var pt=[];for(ge=0;ge<le[fe].length;ge+=2)pt.push(Xt(le[fe][ge],le[fe][ge+1],se,be,Te,_e));ke.geometry.push(pt)}}return ee.transformed=!0,ee}function Xt(ee,se,ce,fe,ge,be){return[Math.round(ce*(ee*fe-ge)),Math.round(ce*(se*fe-be))]}function ii(ee,se,ce,fe,ge){for(var be=se===ge.maxZoom?0:ge.tolerance/((1<<se)*ge.extent),Te={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:ce,y:fe,z:se,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0},_e=0;_e<ee.length;_e++){Te.numFeatures++,Bt(Te,ee[_e],be,ge);var ke=ee[_e].minX,le=ee[_e].minY,Qe=ee[_e].maxX,pt=ee[_e].maxY;ke<Te.minX&&(Te.minX=ke),le<Te.minY&&(Te.minY=le),Qe>Te.maxX&&(Te.maxX=Qe),pt>Te.maxY&&(Te.maxY=pt)}return Te}function Bt(ee,se,ce,fe){var ge=se.geometry,be=se.type,Te=[];if(be==="Point"||be==="MultiPoint")for(var _e=0;_e<ge.length;_e+=3)Te.push(ge[_e]),Te.push(ge[_e+1]),ee.numPoints++,ee.numSimplified++;else if(be==="LineString")At(Te,ge,ee,ce,!1,!1);else if(be==="MultiLineString"||be==="Polygon")for(_e=0;_e<ge.length;_e++)At(Te,ge[_e],ee,ce,be==="Polygon",_e===0);else if(be==="MultiPolygon")for(var ke=0;ke<ge.length;ke++){var le=ge[ke];for(_e=0;_e<le.length;_e++)At(Te,le[_e],ee,ce,!0,_e===0)}if(Te.length){var Qe=se.tags||null;if(be==="LineString"&&fe.lineMetrics){for(var pt in Qe={},se.tags)Qe[pt]=se.tags[pt];Qe.mapbox_clip_start=ge.start/ge.size,Qe.mapbox_clip_end=ge.end/ge.size}var De={geometry:Te,type:be==="Polygon"||be==="MultiPolygon"?3:be==="LineString"||be==="MultiLineString"?2:1,tags:Qe};se.id!==null&&(De.id=se.id),ee.features.push(De)}}function At(ee,se,ce,fe,ge,be){var Te=fe*fe;if(fe>0&&se.size<(ge?Te:fe))ce.numPoints+=se.length/3;else{for(var _e=[],ke=0;ke<se.length;ke+=3)(fe===0||se[ke+2]>Te)&&(ce.numSimplified++,_e.push(se[ke]),_e.push(se[ke+1])),ce.numPoints++;ge&&function(le,Qe){for(var pt=0,De=0,ot=le.length,_t=ot-2;De<ot;_t=De,De+=2)pt+=(le[De]-le[_t])*(le[De+1]+le[_t+1]);if(pt>0===Qe)for(De=0,ot=le.length;De<ot/2;De+=2){var Ft=le[De],Ot=le[De+1];le[De]=le[ot-2-De],le[De+1]=le[ot-1-De],le[ot-2-De]=Ft,le[ot-1-De]=Ot}}(_e,be),ee.push(_e)}}function st(ee,se){var ce=(se=this.options=function(ge,be){for(var Te in be)ge[Te]=be[Te];return ge}(Object.create(this.options),se)).debug;if(ce&&console.time("preprocess data"),se.maxZoom<0||se.maxZoom>24)throw new Error("maxZoom should be in the 0-24 range");if(se.promoteId&&se.generateId)throw new Error("promoteId and generateId cannot be used together.");var fe=function(ge,be){var Te=[];if(ge.type==="FeatureCollection")for(var _e=0;_e<ge.features.length;_e++)Q(Te,ge.features[_e],be,_e);else Q(Te,ge.type==="Feature"?ge:{geometry:ge},be);return Te}(ee,se);this.tiles={},this.tileCoords=[],ce&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",se.indexMaxZoom,se.indexMaxPoints),console.time("generate tiles"),this.stats={},this.total=0),(fe=function(ge,be){var Te=be.buffer/be.extent,_e=ge,ke=Pe(ge,1,-1-Te,Te,0,-1,2,be),le=Pe(ge,1,1-Te,2+Te,0,-1,2,be);return(ke||le)&&(_e=Pe(ge,1,-Te,1+Te,0,-1,2,be)||[],ke&&(_e=Rt(ke,1).concat(_e)),le&&(_e=_e.concat(Rt(le,-1)))),_e}(fe,se)).length&&this.splitTile(fe,0,0,0),ce&&(fe.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 mn(ee,se,ce){return 32*((1<<ee)*ce+se)+ee}return st.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},st.prototype.splitTile=function(ee,se,ce,fe,ge,be,Te){for(var _e=[ee,se,ce,fe],ke=this.options,le=ke.debug;_e.length;){fe=_e.pop(),ce=_e.pop(),se=_e.pop(),ee=_e.pop();var Qe=1<<se,pt=mn(se,ce,fe),De=this.tiles[pt];if(!De&&(le>1&&console.time("creation"),De=this.tiles[pt]=ii(ee,se,ce,fe,ke),this.tileCoords.push({z:se,x:ce,y:fe}),le)){le>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",se,ce,fe,De.numFeatures,De.numPoints,De.numSimplified),console.timeEnd("creation"));var ot="z"+se;this.stats[ot]=(this.stats[ot]||0)+1,this.total++}if(De.source=ee,ge){if(se===ke.maxZoom||se===ge)continue;var _t=1<<ge-se;if(ce!==Math.floor(be/_t)||fe!==Math.floor(Te/_t))continue}else if(se===ke.indexMaxZoom||De.numPoints<=ke.indexMaxPoints)continue;if(De.source=null,ee.length!==0){le>1&&console.time("clipping");var Ft,Ot,ut,mi,li,wt,si=.5*ke.buffer/ke.extent,wi=.5-si,fn=.5+si,Ui=1+si;Ft=Ot=ut=mi=null,li=Pe(ee,Qe,ce-si,ce+fn,0,De.minX,De.maxX,ke),wt=Pe(ee,Qe,ce+wi,ce+Ui,0,De.minX,De.maxX,ke),ee=null,li&&(Ft=Pe(li,Qe,fe-si,fe+fn,1,De.minY,De.maxY,ke),Ot=Pe(li,Qe,fe+wi,fe+Ui,1,De.minY,De.maxY,ke),li=null),wt&&(ut=Pe(wt,Qe,fe-si,fe+fn,1,De.minY,De.maxY,ke),mi=Pe(wt,Qe,fe+wi,fe+Ui,1,De.minY,De.maxY,ke),wt=null),le>1&&console.timeEnd("clipping"),_e.push(Ft||[],se+1,2*ce,2*fe),_e.push(Ot||[],se+1,2*ce,2*fe+1),_e.push(ut||[],se+1,2*ce+1,2*fe),_e.push(mi||[],se+1,2*ce+1,2*fe+1)}}},st.prototype.getTile=function(ee,se,ce){var fe=this.options,ge=fe.extent,be=fe.debug;if(ee<0||ee>24)return null;var Te=1<<ee,_e=mn(ee,se=(se%Te+Te)%Te,ce);if(this.tiles[_e])return It(this.tiles[_e],ge);be>1&&console.log("drilling down to z%d-%d-%d",ee,se,ce);for(var ke,le=ee,Qe=se,pt=ce;!ke&&le>0;)le--,Qe=Math.floor(Qe/2),pt=Math.floor(pt/2),ke=this.tiles[mn(le,Qe,pt)];return ke&&ke.source?(be>1&&console.log("found parent tile z%d-%d-%d",le,Qe,pt),be>1&&console.time("drilling down"),this.splitTile(ke.source,le,Qe,pt,ee,se,ce),be>1&&console.timeEnd("drilling down"),this.tiles[_e]?It(this.tiles[_e],ge):null):null},function(ee,se){return new st(ee,se)}}();class ft extends ti{constructor(z,R,j,Q){super(z,R,j,Wr),this._dataUpdateable=new Map,this.loadGeoJSON=(V,H)=>{const{promoteId:ve}=V;if(V.request)return c.getJSON(V.request,(oe,Ee,Pe,Ce)=>{this._dataUpdateable=Xr(Ee,ve)?As(Ee,ve):void 0,H(oe,Ee,Pe,Ce)});if(typeof V.data=="string")try{const oe=JSON.parse(V.data);this._dataUpdateable=Xr(oe,ve)?As(oe,ve):void 0,H(null,oe)}catch{H(new Error(`Input data given to '${V.source}' is not a valid GeoJSON object.`))}else V.dataDiff?this._dataUpdateable?(function(oe,Ee,Pe){var Ce,at,gt,xe;if(Ee.removeAll&&oe.clear(),Ee.remove)for(const Le of Ee.remove)oe.delete(Le);if(Ee.add)for(const Le of Ee.add){const Fe=Oi(Le,Pe);Fe!=null&&oe.set(Fe,Le)}if(Ee.update)for(const Le of Ee.update){let Fe=oe.get(Le.id);if(Fe==null)continue;const vt=!Le.removeAllProperties&&(((Ce=Le.removeProperties)===null||Ce===void 0?void 0:Ce.length)>0||((at=Le.addOrUpdateProperties)===null||at===void 0?void 0:at.length)>0);if((Le.newGeometry||Le.removeAllProperties||vt)&&(Fe={...Fe},oe.set(Le.id,Fe),vt&&(Fe.properties={...Fe.properties})),Le.newGeometry&&(Fe.geometry=Le.newGeometry),Le.removeAllProperties)Fe.properties={};else if(((gt=Le.removeProperties)===null||gt===void 0?void 0:gt.length)>0)for(const Rt of Le.removeProperties)Object.prototype.hasOwnProperty.call(Fe.properties,Rt)&&delete Fe.properties[Rt];if(((xe=Le.addOrUpdateProperties)===null||xe===void 0?void 0:xe.length)>0)for(const{key:Rt,value:je}of Le.addOrUpdateProperties)Fe.properties[Rt]=je}}(this._dataUpdateable,V.dataDiff,ve),H(null,{type:"FeatureCollection",features:Array.from(this._dataUpdateable.values())})):H(new Error(`Cannot update existing geojson data in ${V.source}`)):H(new Error(`Input data given to '${V.source}' is not a valid GeoJSON object.`));return{cancel:()=>{}}},Q&&(this.loadGeoJSON=Q)}loadData(z,R){var j;(j=this._pendingRequest)===null||j===void 0||j.cancel(),this._pendingCallback&&this._pendingCallback(null,{abandoned:!0});const Q=!!(z&&z.request&&z.request.collectResourceTiming)&&new c.RequestPerformance(z.request);this._pendingCallback=R,this._pendingRequest=this.loadGeoJSON(z,(V,H)=>{if(delete this._pendingCallback,delete this._pendingRequest,V||!H)return R(V);if(typeof H!="object")return R(new Error(`Input data given to '${z.source}' is not a valid GeoJSON object.`));{Dt(H,!0);try{if(z.filter){const oe=c.createExpression(z.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if(oe.result==="error")throw new Error(oe.value.map(Pe=>`${Pe.key}: ${Pe.message}`).join(", "));const Ee=H.features.filter(Pe=>oe.value.evaluate({zoom:0},Pe));H={type:"FeatureCollection",features:Ee}}this._geoJSONIndex=z.cluster?new $n(function({superclusterOptions:oe,clusterProperties:Ee}){if(!Ee||!oe)return oe;const Pe={},Ce={},at={accumulated:null,zoom:0},gt={properties:null},xe=Object.keys(Ee);for(const Le of xe){const[Fe,vt]=Ee[Le],Rt=c.createExpression(vt),je=c.createExpression(typeof Fe=="string"?[Fe,["accumulated"],["get",Le]]:Fe);Pe[Le]=Rt.value,Ce[Le]=je.value}return oe.map=Le=>{gt.properties=Le;const Fe={};for(const vt of xe)Fe[vt]=Pe[vt].evaluate(at,gt);return Fe},oe.reduce=(Le,Fe)=>{gt.properties=Fe;for(const vt of xe)at.accumulated=Le[vt],Le[vt]=Ce[vt].evaluate(at,gt)},oe}(z)).load(H.features):pn(H,z.geojsonVtOptions)}catch(oe){return R(oe)}this.loaded={};const ve={};if(Q){const oe=Q.finish();oe&&(ve.resourceTiming={},ve.resourceTiming[z.source]=JSON.parse(JSON.stringify(oe)))}R(null,ve)}})}reloadTile(z,R){const j=this.loaded;return j&&j[z.uid]?super.reloadTile(z,R):this.loadTile(z,R)}removeSource(z,R){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),R()}getClusterExpansionZoom(z,R){try{R(null,this._geoJSONIndex.getClusterExpansionZoom(z.clusterId))}catch(j){R(j)}}getClusterChildren(z,R){try{R(null,this._geoJSONIndex.getChildren(z.clusterId))}catch(j){R(j)}}getClusterLeaves(z,R){try{R(null,this._geoJSONIndex.getLeaves(z.clusterId,z.limit,z.offset))}catch(j){R(j)}}}class dn{constructor(z){this.self=z,this.actor=new c.Actor(z,this),this.layerIndexes={},this.availableImages={},this.workerSourceTypes={vector:ti,geojson:ft},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(R,j)=>{if(this.workerSourceTypes[R])throw new Error(`Worker source with name "${R}" already registered.`);this.workerSourceTypes[R]=j},this.self.registerRTLTextPlugin=R=>{if(c.plugin.isParsed())throw new Error("RTL text plugin already registered.");c.plugin.applyArabicShaping=R.applyArabicShaping,c.plugin.processBidirectionalText=R.processBidirectionalText,c.plugin.processStyledBidirectionalText=R.processStyledBidirectionalText}}setReferrer(z,R){this.referrer=R}setImages(z,R,j){this.availableImages[z]=R;for(const Q in this.workerSources[z]){const V=this.workerSources[z][Q];for(const H in V)V[H].availableImages=R}j()}setLayers(z,R,j){this.getLayerIndex(z).replace(R),j()}updateLayers(z,R,j){this.getLayerIndex(z).update(R.layers,R.removedIds),j()}loadTile(z,R,j){this.getWorkerSource(z,R.type,R.source).loadTile(R,j)}loadDEMTile(z,R,j){this.getDEMWorkerSource(z,R.source).loadTile(R,j)}reloadTile(z,R,j){this.getWorkerSource(z,R.type,R.source).reloadTile(R,j)}abortTile(z,R,j){this.getWorkerSource(z,R.type,R.source).abortTile(R,j)}removeTile(z,R,j){this.getWorkerSource(z,R.type,R.source).removeTile(R,j)}removeDEMTile(z,R){this.getDEMWorkerSource(z,R.source).removeTile(R)}removeSource(z,R,j){if(!this.workerSources[z]||!this.workerSources[z][R.type]||!this.workerSources[z][R.type][R.source])return;const Q=this.workerSources[z][R.type][R.source];delete this.workerSources[z][R.type][R.source],Q.removeSource!==void 0?Q.removeSource(R,j):j()}loadWorkerSource(z,R,j){try{this.self.importScripts(R.url),j()}catch(Q){j(Q.toString())}}syncRTLPluginState(z,R,j){try{c.plugin.setState(R);const Q=c.plugin.getPluginURL();if(c.plugin.isLoaded()&&!c.plugin.isParsed()&&Q!=null){this.self.importScripts(Q);const V=c.plugin.isParsed();j(V?void 0:new Error(`RTL Text Plugin failed to import scripts from ${Q}`),V)}}catch(Q){j(Q.toString())}}getAvailableImages(z){let R=this.availableImages[z];return R||(R=[]),R}getLayerIndex(z){let R=this.layerIndexes[z];return R||(R=this.layerIndexes[z]=new lt),R}getWorkerSource(z,R,j){if(this.workerSources[z]||(this.workerSources[z]={}),this.workerSources[z][R]||(this.workerSources[z][R]={}),!this.workerSources[z][R][j]){const Q={send:(V,H,ve)=>{this.actor.send(V,H,ve,z)}};this.workerSources[z][R][j]=new this.workerSourceTypes[R](Q,this.getLayerIndex(z),this.getAvailableImages(z))}return this.workerSources[z][R][j]}getDEMWorkerSource(z,R){return this.demWorkerSources[z]||(this.demWorkerSources[z]={}),this.demWorkerSources[z][R]||(this.demWorkerSources[z][R]=new Jt),this.demWorkerSources[z][R]}enforceCacheSizeLimit(z,R){c.enforceCacheSizeLimit(R)}}return c.isWorker()&&(self.worker=new dn(self)),dn}),me(["./shared"],function(c){var Ie=Ke;function Ke(o){return!function(t){return typeof window>"u"||typeof document>"u"?"not a browser":Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray?Function.prototype&&Function.prototype.bind?Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions?"JSON"in window&&"parse"in JSON&&"stringify"in JSON?function(){if(!("Worker"in window&&"Blob"in window&&"URL"in window))return!1;var a,h,p=new Blob([""],{type:"text/javascript"}),m=URL.createObjectURL(p);try{h=new Worker(m),a=!0}catch{a=!1}return h&&h.terminate(),URL.revokeObjectURL(m),a}()?"Uint8ClampedArray"in window?ArrayBuffer.isView?function(){var a=document.createElement("canvas");a.width=a.height=1;var h=a.getContext("2d");if(!h)return!1;var p=h.getImageData(0,0,1,1);return p&&p.width===a.width}()?(lt[n=t&&t.failIfMajorPerformanceCaveat]===void 0&&(lt[n]=function(a){var h,p=function(m){var _=document.createElement("canvas"),y=Object.create(Ke.webGLContextAttributes);return y.failIfMajorPerformanceCaveat=m,_.getContext("webgl",y)||_.getContext("experimental-webgl",y)}(a);if(!p)return!1;try{h=p.createShader(p.VERTEX_SHADER)}catch{return!1}return!(!h||p.isContextLost())&&(p.shaderSource(h,"void main() {}"),p.compileShader(h),p.getShaderParameter(h,p.COMPILE_STATUS)===!0)}(n)),lt[n]?document.documentMode?"insufficient ECMAScript 6 support":void 0:"insufficient WebGL support"):"insufficient Canvas/getImageData support":"insufficient ArrayBuffer support":"insufficient Uint8ClampedArray support":"insufficient worker support":"insufficient JSON support":"insufficient Object support":"insufficient Function support":"insufficent Array support";var n}(o)}var lt={};Ke.webGLContextAttributes={antialias:!1,alpha:!0,stencil:!0,depth:!0};var St="3.0.0-pre.3";function Me(o,t){if(Array.isArray(o)){if(!Array.isArray(t)||o.length!==t.length)return!1;for(let n=0;n<o.length;n++)if(!Me(o[n],t[n]))return!1;return!0}if(typeof o=="object"&&o!==null&&t!==null){if(typeof t!="object"||Object.keys(o).length!==Object.keys(t).length)return!1;for(const n in o)if(!Me(o[n],t[n]))return!1;return!0}return o===t}class K{static testProp(t){if(!K.docStyle)return t[0];for(let n=0;n<t.length;n++)if(t[n]in K.docStyle)return t[n];return t[0]}static create(t,n,a){const h=window.document.createElement(t);return n!==void 0&&(h.className=n),a&&a.appendChild(h),h}static createNS(t,n){return window.document.createElementNS(t,n)}static disableDrag(){K.docStyle&&K.selectProp&&(K.userSelect=K.docStyle[K.selectProp],K.docStyle[K.selectProp]="none")}static enableDrag(){K.docStyle&&K.selectProp&&(K.docStyle[K.selectProp]=K.userSelect)}static setTransform(t,n){t.style[K.transformProp]=n}static addEventListener(t,n,a,h={}){t.addEventListener(n,a,"passive"in h?h:h.capture)}static removeEventListener(t,n,a,h={}){t.removeEventListener(n,a,"passive"in h?h:h.capture)}static suppressClickInternal(t){t.preventDefault(),t.stopPropagation(),window.removeEventListener("click",K.suppressClickInternal,!0)}static suppressClick(){window.addEventListener("click",K.suppressClickInternal,!0),window.setTimeout(()=>{window.removeEventListener("click",K.suppressClickInternal,!0)},0)}static mousePos(t,n){const a=t.getBoundingClientRect();return new c.pointGeometry(n.clientX-a.left-t.clientLeft,n.clientY-a.top-t.clientTop)}static touchPos(t,n){const a=t.getBoundingClientRect(),h=[];for(let p=0;p<n.length;p++)h.push(new c.pointGeometry(n[p].clientX-a.left-t.clientLeft,n[p].clientY-a.top-t.clientTop));return h}static mouseButton(t){return t.button}static remove(t){t.parentNode&&t.parentNode.removeChild(t)}}K.docStyle=typeof window<"u"&&window.document&&window.document.documentElement.style,K.selectProp=K.testProp(["userSelect","MozUserSelect","WebkitUserSelect","msUserSelect"]),K.transformProp=K.testProp(["transform","WebkitTransform"]);class Je{constructor(t){this._transformRequestFn=t}transformRequest(t,n){return this._transformRequestFn&&this._transformRequestFn(t,n)||{url:t}}normalizeSpriteURL(t,n,a){const h=function(p){const m=p.match(ti);if(!m)throw new Error(`Unable to parse URL "${p}"`);return{protocol:m[1],authority:m[2],path:m[3]||"/",params:m[4]?m[4].split("&"):[]}}(t);return h.path+=`${n}${a}`,function(p){const m=p.params.length?`?${p.params.join("&")}`:"";return`${p.protocol}://${p.authority}${p.path}${m}`}(h)}setTransformRequest(t){this._transformRequestFn=t}}const ti=/^(\w+):\/\/([^/?]*)(\/[^?]+)?\??(.+)?/;function Jt(o){return typeof o=="string"?[{id:"default",url:o}]:o??[]}class Dt{constructor(t,n,a,h){this.context=t,this.format=a,this.texture=t.gl.createTexture(),this.update(n,h)}update(t,n,a){const{width:h,height:p}=t,m=!(this.size&&this.size[0]===h&&this.size[1]===p||a),{context:_}=this,{gl:y}=_;if(this.useMipmap=Boolean(n&&n.useMipmap),y.bindTexture(y.TEXTURE_2D,this.texture),_.pixelStoreUnpackFlipY.set(!1),_.pixelStoreUnpack.set(1),_.pixelStoreUnpackPremultiplyAlpha.set(this.format===y.RGBA&&(!n||n.premultiply!==!1)),m)this.size=[h,p],t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement||t instanceof ImageData||c.isImageBitmap(t)?y.texImage2D(y.TEXTURE_2D,0,this.format,this.format,y.UNSIGNED_BYTE,t):y.texImage2D(y.TEXTURE_2D,0,this.format,h,p,0,this.format,y.UNSIGNED_BYTE,t.data);else{const{x:v,y:S}=a||{x:0,y:0};t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement||t instanceof ImageData||c.isImageBitmap(t)?y.texSubImage2D(y.TEXTURE_2D,0,v,S,y.RGBA,y.UNSIGNED_BYTE,t):y.texSubImage2D(y.TEXTURE_2D,0,v,S,h,p,y.RGBA,y.UNSIGNED_BYTE,t.data)}this.useMipmap&&this.isSizePowerOfTwo()&&y.generateMipmap(y.TEXTURE_2D)}bind(t,n,a){const{context:h}=this,{gl:p}=h;p.bindTexture(p.TEXTURE_2D,this.texture),a!==p.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(a=p.LINEAR),t!==this.filter&&(p.texParameteri(p.TEXTURE_2D,p.TEXTURE_MAG_FILTER,t),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_MIN_FILTER,a||t),this.filter=t),n!==this.wrap&&(p.texParameteri(p.TEXTURE_2D,p.TEXTURE_WRAP_S,n),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_WRAP_T,n),this.wrap=n)}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 Vn(o){const{userImage:t}=o;return!!(t&&t.render&&t.render())&&(o.data.replace(new Uint8Array(t.data.buffer)),!0)}class Ji extends c.Evented{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new c.RGBAImage({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(t){if(this.loaded!==t&&(this.loaded=t,t)){for(const{ids:n,callback:a}of this.requestors)this._notify(n,a);this.requestors=[]}}getImage(t){return this.images[t]}addImage(t,n){if(this.images[t])throw new Error(`Image id ${t} already exist, use updateImage instead`);this._validate(t,n)&&(this.images[t]=n)}_validate(t,n){let a=!0;return this._validateStretch(n.stretchX,n.data&&n.data.width)||(this.fire(new c.ErrorEvent(new Error(`Image "${t}" has invalid "stretchX" value`))),a=!1),this._validateStretch(n.stretchY,n.data&&n.data.height)||(this.fire(new c.ErrorEvent(new Error(`Image "${t}" has invalid "stretchY" value`))),a=!1),this._validateContent(n.content,n)||(this.fire(new c.ErrorEvent(new Error(`Image "${t}" has invalid "content" value`))),a=!1),a}_validateStretch(t,n){if(!t)return!0;let a=0;for(const h of t){if(h[0]<a||h[1]<h[0]||n<h[1])return!1;a=h[1]}return!0}_validateContent(t,n){return!(t&&(t.length!==4||t[0]<0||n.data.width<t[0]||t[1]<0||n.data.height<t[1]||t[2]<0||n.data.width<t[2]||t[3]<0||n.data.height<t[3]||t[2]<t[0]||t[3]<t[1]))}updateImage(t,n,a=!0){const h=this.images[t];if(a&&(h.data.width!==n.data.width||h.data.height!==n.data.height))throw new Error(`size mismatch between old image (${h.data.width}x${h.data.height}) and new image (${n.data.width}x${n.data.height}).`);n.version=h.version+1,this.images[t]=n,this.updatedImages[t]=!0}removeImage(t){const n=this.images[t];delete this.images[t],delete this.patterns[t],n.userImage&&n.userImage.onRemove&&n.userImage.onRemove()}listImages(){return Object.keys(this.images)}getImages(t,n){let a=!0;if(!this.isLoaded())for(const h of t)this.images[h]||(a=!1);this.isLoaded()||a?this._notify(t,n):this.requestors.push({ids:t,callback:n})}_notify(t,n){const a={};for(const h of t){this.images[h]||this.fire(new c.Event("styleimagemissing",{id:h}));const p=this.images[h];p?a[h]={data:p.data.clone(),pixelRatio:p.pixelRatio,sdf:p.sdf,version:p.version,stretchX:p.stretchX,stretchY:p.stretchY,content:p.content,hasRenderCallback:Boolean(p.userImage&&p.userImage.render)}:c.warnOnce(`Image "${h}" 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.`)}n(null,a)}getPixelSize(){const{width:t,height:n}=this.atlasImage;return{width:t,height:n}}getPattern(t){const n=this.patterns[t],a=this.getImage(t);if(!a)return null;if(n&&n.position.version===a.version)return n.position;if(n)n.position.version=a.version;else{const h={w:a.data.width+2,h:a.data.height+2,x:0,y:0},p=new c.ImagePosition(h,a);this.patterns[t]={bin:h,position:p}}return this._updatePatternAtlas(),this.patterns[t].position}bind(t){const n=t.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new Dt(t,this.atlasImage,n.RGBA),this.atlasTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE)}_updatePatternAtlas(){const t=[];for(const p in this.patterns)t.push(this.patterns[p].bin);const{w:n,h:a}=c.potpack(t),h=this.atlasImage;h.resize({width:n||1,height:a||1});for(const p in this.patterns){const{bin:m}=this.patterns[p],_=m.x+1,y=m.y+1,v=this.images[p].data,S=v.width,E=v.height;c.RGBAImage.copy(v,h,{x:0,y:0},{x:_,y},{width:S,height:E}),c.RGBAImage.copy(v,h,{x:0,y:E-1},{x:_,y:y-1},{width:S,height:1}),c.RGBAImage.copy(v,h,{x:0,y:0},{x:_,y:y+E},{width:S,height:1}),c.RGBAImage.copy(v,h,{x:S-1,y:0},{x:_-1,y},{width:1,height:E}),c.RGBAImage.copy(v,h,{x:0,y:0},{x:_+S,y},{width:1,height:E})}this.dirty=!0}beginFrame(){this.callbackDispatchedThisFrame={}}dispatchRenderCallbacks(t){for(const n of t){if(this.callbackDispatchedThisFrame[n])continue;this.callbackDispatchedThisFrame[n]=!0;const a=this.images[n];a||c.warnOnce(`Image with ID: "${n}" was not found`),Vn(a)&&this.updateImage(n,a)}}}const Lr=1e20;function Yt(o,t,n,a,h,p,m,_,y){for(let v=t;v<t+a;v++)nr(o,n*p+v,p,h,m,_,y);for(let v=n;v<n+h;v++)nr(o,v*p+t,1,a,m,_,y)}function nr(o,t,n,a,h,p,m){p[0]=0,m[0]=-Lr,m[1]=Lr,h[0]=o[t];for(let _=1,y=0,v=0;_<a;_++){h[_]=o[t+_*n];const S=_*_;do{const E=p[y];v=(h[_]-h[E]+S-E*E)/(_-E)/2}while(v<=m[y]&&--y>-1);y++,p[y]=_,m[y]=v,m[y+1]=Lr}for(let _=0,y=0;_<a;_++){for(;m[y+1]<_;)y++;const v=p[y],S=_-v;o[t+_*n]=h[v]+S*S}}class Dr{constructor(t,n){this.requestManager=t,this.localIdeographFontFamily=n,this.entries={}}setURL(t){this.url=t}getGlyphs(t,n){const a=[];for(const h in t)for(const p of t[h])a.push({stack:h,id:p});c.asyncAll(a,({stack:h,id:p},m)=>{let _=this.entries[h];_||(_=this.entries[h]={glyphs:{},requests:{},ranges:{}});let y=_.glyphs[p];if(y!==void 0)return void m(null,{stack:h,id:p,glyph:y});if(y=this._tinySDF(_,h,p),y)return _.glyphs[p]=y,void m(null,{stack:h,id:p,glyph:y});const v=Math.floor(p/256);if(256*v>65535)return void m(new Error("glyphs > 65535 not supported"));if(_.ranges[v])return void m(null,{stack:h,id:p,glyph:y});if(!this.url)return void m(new Error("glyphsUrl is not set"));let S=_.requests[v];S||(S=_.requests[v]=[],Dr.loadGlyphRange(h,v,this.url,this.requestManager,(E,C)=>{if(C){for(const D in C)this._doesCharSupportLocalGlyph(+D)||(_.glyphs[+D]=C[+D]);_.ranges[v]=!0}for(const D of S)D(E,C);delete _.requests[v]})),S.push((E,C)=>{E?m(E):C&&m(null,{stack:h,id:p,glyph:C[p]||null})})},(h,p)=>{if(h)n(h);else if(p){const m={};for(const{stack:_,id:y,glyph:v}of p)(m[_]||(m[_]={}))[y]=v&&{id:v.id,bitmap:v.bitmap.clone(),metrics:v.metrics};n(null,m)}})}_doesCharSupportLocalGlyph(t){return!!this.localIdeographFontFamily&&(c.unicodeBlockLookup["CJK Unified Ideographs"](t)||c.unicodeBlockLookup["Hangul Syllables"](t)||c.unicodeBlockLookup.Hiragana(t)||c.unicodeBlockLookup.Katakana(t))}_tinySDF(t,n,a){const h=this.localIdeographFontFamily;if(!h||!this._doesCharSupportLocalGlyph(a))return;let p=t.tinySDF;if(!p){let _="400";/bold/i.test(n)?_="900":/medium/i.test(n)?_="500":/light/i.test(n)&&(_="200"),p=t.tinySDF=new Dr.TinySDF({fontSize:24,buffer:3,radius:8,cutoff:.25,fontFamily:h,fontWeight:_})}const m=p.draw(String.fromCharCode(a));return{id:a,bitmap:new c.AlphaImage({width:m.width||30,height:m.height||30},m.data),metrics:{width:m.glyphWidth||24,height:m.glyphHeight||24,left:m.glyphLeft||0,top:m.glyphTop-27||-8,advance:m.glyphAdvance||24}}}}Dr.loadGlyphRange=function(o,t,n,a,h){const p=256*t,m=p+255,_=a.transformRequest(n.replace("{fontstack}",o).replace("{range}",`${p}-${m}`),c.ResourceType.Glyphs);c.getArrayBuffer(_,(y,v)=>{if(y)h(y);else if(v){const S={};for(const E of c.parseGlyphPbf(v))S[E.id]=E;h(null,S)}})},Dr.TinySDF=class{constructor({fontSize:o=24,buffer:t=3,radius:n=8,cutoff:a=.25,fontFamily:h="sans-serif",fontWeight:p="normal",fontStyle:m="normal"}={}){this.buffer=t,this.cutoff=a,this.radius=n;const _=this.size=o+4*t,y=this._createCanvas(_),v=this.ctx=y.getContext("2d",{willReadFrequently:!0});v.font=`${m} ${p} ${o}px ${h}`,v.textBaseline="alphabetic",v.textAlign="left",v.fillStyle="black",this.gridOuter=new Float64Array(_*_),this.gridInner=new Float64Array(_*_),this.f=new Float64Array(_),this.z=new Float64Array(_+1),this.v=new Uint16Array(_)}_createCanvas(o){const t=document.createElement("canvas");return t.width=t.height=o,t}draw(o){const{width:t,actualBoundingBoxAscent:n,actualBoundingBoxDescent:a,actualBoundingBoxLeft:h,actualBoundingBoxRight:p}=this.ctx.measureText(o),m=Math.ceil(n),_=Math.min(this.size-this.buffer,Math.ceil(p-h)),y=Math.min(this.size-this.buffer,m+Math.ceil(a)),v=_+2*this.buffer,S=y+2*this.buffer,E=Math.max(v*S,0),C=new Uint8ClampedArray(E),D={data:C,width:v,height:S,glyphWidth:_,glyphHeight:y,glyphTop:m,glyphLeft:0,glyphAdvance:t};if(_===0||y===0)return D;const{ctx:B,buffer:L,gridInner:N,gridOuter:X}=this;B.clearRect(L,L,_,y),B.fillText(o,L,L+m);const q=B.getImageData(L,L,_,y);X.fill(Lr,0,E),N.fill(0,0,E);for(let U=0;U<y;U++)for(let W=0;W<_;W++){const te=q.data[4*(U*_+W)+3]/255;if(te===0)continue;const ae=(U+L)*v+W+L;if(te===1)X[ae]=0,N[ae]=Lr;else{const he=.5-te;X[ae]=he>0?he*he:0,N[ae]=he<0?he*he:0}}Yt(X,0,0,v,S,v,this.f,this.v,this.z),Yt(N,L,L,_,y,v,this.f,this.v,this.z);for(let U=0;U<E;U++){const W=Math.sqrt(X[U])-Math.sqrt(N[U]);C[U]=Math.round(255-255*(W/this.radius+this.cutoff))}return D}};const Yi=new c.Properties({anchor:new c.DataConstantProperty(c.spec.light.anchor),position:new class{constructor(){this.specification=c.spec.light.position}possiblyEvaluate(o,t){return c.sphericalToCartesian(o.expression.evaluate(t))}interpolate(o,t,n){return{x:c.number(o.x,t.x,n),y:c.number(o.y,t.y,n),z:c.number(o.z,t.z,n)}}},color:new c.DataConstantProperty(c.spec.light.color),intensity:new c.DataConstantProperty(c.spec.light.intensity)}),Nn="-transition";class on extends c.Evented{constructor(t){super(),this._transitionable=new c.Transitionable(Yi),this.setLight(t),this._transitioning=this._transitionable.untransitioned()}getLight(){return this._transitionable.serialize()}setLight(t,n={}){if(!this._validate(c.validateLight,t,n))for(const a in t){const h=t[a];a.endsWith(Nn)?this._transitionable.setTransition(a.slice(0,-Nn.length),h):this._transitionable.setValue(a,h)}}updateTransitions(t){this._transitioning=this._transitionable.transitioned(t,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}recalculate(t){this.properties=this._transitioning.possiblyEvaluate(t)}_validate(t,n,a){return(!a||a.validate!==!1)&&c.emitValidationErrors(this,t.call(c.validateStyle,c.extend({value:n,style:{glyphs:!0,sprite:!0},styleSpec:c.spec})))}}class Rr{constructor(t,n){this.width=t,this.height=n,this.nextRow=0,this.data=new Uint8Array(this.width*this.height),this.dashEntry={}}getDash(t,n){const a=t.join(",")+String(n);return this.dashEntry[a]||(this.dashEntry[a]=this.addDash(t,n)),this.dashEntry[a]}getDashRanges(t,n,a){const h=[];let p=t.length%2==1?-t[t.length-1]*a:0,m=t[0]*a,_=!0;h.push({left:p,right:m,isDash:_,zeroLength:t[0]===0});let y=t[0];for(let v=1;v<t.length;v++){_=!_;const S=t[v];p=y*a,y+=S,m=y*a,h.push({left:p,right:m,isDash:_,zeroLength:S===0})}return h}addRoundDash(t,n,a){const h=n/2;for(let p=-a;p<=a;p++){const m=this.width*(this.nextRow+a+p);let _=0,y=t[_];for(let v=0;v<this.width;v++){v/y.right>1&&(y=t[++_]);const S=Math.abs(v-y.left),E=Math.abs(v-y.right),C=Math.min(S,E);let D;const B=p/a*(h+1);if(y.isDash){const L=h-Math.abs(B);D=Math.sqrt(C*C+L*L)}else D=h-Math.sqrt(C*C+B*B);this.data[m+v]=Math.max(0,Math.min(255,D+128))}}}addRegularDash(t){for(let _=t.length-1;_>=0;--_){const y=t[_],v=t[_+1];y.zeroLength?t.splice(_,1):v&&v.isDash===y.isDash&&(v.left=y.left,t.splice(_,1))}const n=t[0],a=t[t.length-1];n.isDash===a.isDash&&(n.left=a.left-this.width,a.right=n.right+this.width);const h=this.width*this.nextRow;let p=0,m=t[p];for(let _=0;_<this.width;_++){_/m.right>1&&(m=t[++p]);const y=Math.abs(_-m.left),v=Math.abs(_-m.right),S=Math.min(y,v);this.data[h+_]=Math.max(0,Math.min(255,(m.isDash?S:-S)+128))}}addDash(t,n){const a=n?7:0,h=2*a+1;if(this.nextRow+h>this.height)return c.warnOnce("LineAtlas out of space"),null;let p=0;for(let _=0;_<t.length;_++)p+=t[_];if(p!==0){const _=this.width/p,y=this.getDashRanges(t,this.width,_);n?this.addRoundDash(y,_,a):this.addRegularDash(y)}const m={y:(this.nextRow+a+.5)/this.height,height:2*a/this.height,width:p};return this.nextRow+=h,this.dirty=!0,m}bind(t){const n=t.gl;this.texture?(n.bindTexture(n.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,n.texSubImage2D(n.TEXTURE_2D,0,0,0,this.width,this.height,n.ALPHA,n.UNSIGNED_BYTE,this.data))):(this.texture=n.createTexture(),n.bindTexture(n.TEXTURE_2D,this.texture),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.REPEAT),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.REPEAT),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.LINEAR),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,n.LINEAR),n.texImage2D(n.TEXTURE_2D,0,n.ALPHA,this.width,this.height,0,n.ALPHA,n.UNSIGNED_BYTE,this.data))}}class Br{constructor(t,n){this.workerPool=t,this.actors=[],this.currentActor=0,this.id=c.uniqueId();const a=this.workerPool.acquire(this.id);for(let h=0;h<a.length;h++){const p=new Br.Actor(a[h],n,this.id);p.name=`Worker ${h}`,this.actors.push(p)}if(!this.actors.length)throw new Error("No actors found")}broadcast(t,n,a){c.asyncAll(this.actors,(h,p)=>{h.send(t,n,p)},a=a||function(){})}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(){this.actors.forEach(t=>{t.remove()}),this.actors=[],this.workerPool.release(this.id)}}function ln(o,t,n){const a=function(h,p){if(h)return n(h);if(p){const m=c.pick(c.extend(p,o),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);p.vector_layers&&(m.vectorLayers=p.vector_layers,m.vectorLayerIds=m.vectorLayers.map(_=>_.id)),n(null,m)}};return o.url?c.getJSON(t.transformRequest(o.url,c.ResourceType.Source),a):c.exported.frame(()=>a(null,o))}Br.Actor=c.Actor;class br{constructor(t,n,a){this.bounds=c.LngLatBounds.convert(this.validateBounds(t)),this.minzoom=n||0,this.maxzoom=a||24}validateBounds(t){return Array.isArray(t)&&t.length===4?[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(t){const n=Math.pow(2,t.z),a=Math.floor(c.mercatorXfromLng(this.bounds.getWest())*n),h=Math.floor(c.mercatorYfromLat(this.bounds.getNorth())*n),p=Math.ceil(c.mercatorXfromLng(this.bounds.getEast())*n),m=Math.ceil(c.mercatorYfromLat(this.bounds.getSouth())*n);return t.x>=a&&t.x<p&&t.y>=h&&t.y<m}}class cn extends c.Evented{constructor(t,n,a,h){if(super(),this.id=t,this.dispatcher=a,this.type="vector",this.minzoom=0,this.maxzoom=22,this.scheme="xyz",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,c.extend(this,c.pick(n,["url","scheme","tileSize","promoteId"])),this._options=c.extend({type:"vector"},n),this._collectResourceTiming=n.collectResourceTiming,this.tileSize!==512)throw new Error("vector tile sources must have a tileSize of 512");this.setEventedParent(h)}load(){this._loaded=!1,this.fire(new c.Event("dataloading",{dataType:"source"})),this._tileJSONRequest=ln(this._options,this.map._requestManager,(t,n)=>{this._tileJSONRequest=null,this._loaded=!0,this.map.style.sourceCaches[this.id].clearTiles(),t?this.fire(new c.ErrorEvent(t)):n&&(c.extend(this,n),n.bounds&&(this.tileBounds=new br(n.bounds,this.minzoom,this.maxzoom)),this.fire(new c.Event("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new c.Event("data",{dataType:"source",sourceDataType:"content"})))})}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)}serialize(){return c.extend({},this._options)}loadTile(t,n){const a=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),h={request:this.map._requestManager.transformRequest(a,c.ResourceType.Tile),uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,tileSize:this.tileSize*t.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};function p(m,_){return delete t.request,t.aborted?n(null):m&&m.status!==404?n(m):(_&&_.resourceTiming&&(t.resourceTiming=_.resourceTiming),this.map._refreshExpiredTiles&&_&&t.setExpiryData(_),t.loadVectorData(_,this.map.painter),c.cacheEntryPossiblyAdded(this.dispatcher),n(null),void(t.reloadCallback&&(this.loadTile(t,t.reloadCallback),t.reloadCallback=null)))}h.request.collectResourceTiming=this._collectResourceTiming,t.actor&&t.state!=="expired"?t.state==="loading"?t.reloadCallback=n:t.request=t.actor.send("reloadTile",h,p.bind(this)):(t.actor=this.dispatcher.getActor(),t.request=t.actor.send("loadTile",h,p.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 hn extends c.Evented{constructor(t,n,a,h){super(),this.id=t,this.dispatcher=a,this.setEventedParent(h),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=c.extend({type:"raster"},n),c.extend(this,c.pick(n,["url","scheme","tileSize"]))}load(){this._loaded=!1,this.fire(new c.Event("dataloading",{dataType:"source"})),this._tileJSONRequest=ln(this._options,this.map._requestManager,(t,n)=>{this._tileJSONRequest=null,this._loaded=!0,t?this.fire(new c.ErrorEvent(t)):n&&(c.extend(this,n),n.bounds&&(this.tileBounds=new br(n.bounds,this.minzoom,this.maxzoom)),this.fire(new c.Event("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new c.Event("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)}serialize(){return c.extend({},this._options)}hasTile(t){return!this.tileBounds||this.tileBounds.contains(t.canonical)}loadTile(t,n){const a=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);t.request=c.getImage(this.map._requestManager.transformRequest(a,c.ResourceType.Tile),(h,p,m)=>{if(delete t.request,t.aborted)t.state="unloaded",n(null);else if(h)t.state="errored",n(h);else if(p){this.map._refreshExpiredTiles&&t.setExpiryData(m);const _=this.map.painter.context,y=_.gl;t.texture=this.map.painter.getTileTexture(p.width),t.texture?t.texture.update(p,{useMipmap:!0}):(t.texture=new Dt(_,p,y.RGBA,{useMipmap:!0}),t.texture.bind(y.LINEAR,y.CLAMP_TO_EDGE,y.LINEAR_MIPMAP_NEAREST),_.extTextureFilterAnisotropic&&y.texParameterf(y.TEXTURE_2D,_.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,_.extTextureFilterAnisotropicMax)),t.state="loaded",c.cacheEntryPossiblyAdded(this.dispatcher),n(null)}})}abortTile(t,n){t.request&&(t.request.cancel(),delete t.request),n()}unloadTile(t,n){t.texture&&this.map.painter.saveTileTexture(t.texture),n()}hasTransition(){return!1}}let it;class sr extends hn{constructor(t,n,a,h){super(t,n,a,h),this.type="raster-dem",this.maxzoom=22,this._options=c.extend({type:"raster-dem"},n),this.encoding=n.encoding||"mapbox"}serialize(){return{type:"raster-dem",url:this.url,tileSize:this.tileSize,tiles:this.tiles,bounds:this.bounds,encoding:this.encoding}}loadTile(t,n){const a=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);function h(p,m){p&&(t.state="errored",n(p)),m&&(t.dem=m,t.needsHillshadePrepare=!0,t.needsTerrainPrepare=!0,t.state="loaded",n(null))}t.request=c.getImage(this.map._requestManager.transformRequest(a,c.ResourceType.Tile),function(p,m){if(delete t.request,t.aborted)t.state="unloaded",n(null);else if(p)t.state="errored",n(p);else if(m){this.map._refreshExpiredTiles&&t.setExpiryData(m),delete m.cacheControl,delete m.expires;const _=c.isImageBitmap(m)&&(it==null&&(it=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")&&typeof createImageBitmap=="function"),it)?m:c.exported.getImageData(m,1),y={uid:t.uid,coord:t.tileID,source:this.id,rawImageData:_,encoding:this.encoding};t.actor&&t.state!=="expired"||(t.actor=this.dispatcher.getActor(),t.actor.send("loadDEMTile",y,h.bind(this)))}}.bind(this)),t.neighboringTiles=this._getNeighboringTiles(t.tileID)}_getNeighboringTiles(t){const n=t.canonical,a=Math.pow(2,n.z),h=(n.x-1+a)%a,p=n.x===0?t.wrap-1:t.wrap,m=(n.x+1+a)%a,_=n.x+1===a?t.wrap+1:t.wrap,y={};return y[new c.OverscaledTileID(t.overscaledZ,p,n.z,h,n.y).key]={backfilled:!1},y[new c.OverscaledTileID(t.overscaledZ,_,n.z,m,n.y).key]={backfilled:!1},n.y>0&&(y[new c.OverscaledTileID(t.overscaledZ,p,n.z,h,n.y-1).key]={backfilled:!1},y[new c.OverscaledTileID(t.overscaledZ,t.wrap,n.z,n.x,n.y-1).key]={backfilled:!1},y[new c.OverscaledTileID(t.overscaledZ,_,n.z,m,n.y-1).key]={backfilled:!1}),n.y+1<a&&(y[new c.OverscaledTileID(t.overscaledZ,p,n.z,h,n.y+1).key]={backfilled:!1},y[new c.OverscaledTileID(t.overscaledZ,t.wrap,n.z,n.x,n.y+1).key]={backfilled:!1},y[new c.OverscaledTileID(t.overscaledZ,_,n.z,m,n.y+1).key]={backfilled:!1}),y}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 Fr extends c.Evented{constructor(t,n,a,h){super(),this.id=t,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=a.getActor(),this.setEventedParent(h),this._data=n.data,this._options=c.extend({},n),this._collectResourceTiming=n.collectResourceTiming,n.maxzoom!==void 0&&(this.maxzoom=n.maxzoom),n.type&&(this.type=n.type),n.attribution&&(this.attribution=n.attribution),this.promoteId=n.promoteId;const p=c.EXTENT/this.tileSize;this.workerOptions=c.extend({source:this.id,cluster:n.cluster||!1,geojsonVtOptions:{buffer:(n.buffer!==void 0?n.buffer:128)*p,tolerance:(n.tolerance!==void 0?n.tolerance:.375)*p,extent:c.EXTENT,maxZoom:this.maxzoom,lineMetrics:n.lineMetrics||!1,generateId:n.generateId||!1},superclusterOptions:{maxZoom:n.clusterMaxZoom!==void 0?n.clusterMaxZoom:this.maxzoom-1,minPoints:Math.max(2,n.clusterMinPoints||2),extent:c.EXTENT,radius:(n.clusterRadius||50)*p,log:!1,generateId:n.generateId||!1},clusterProperties:n.clusterProperties,filter:n.filter},n.workerOptions),typeof this.promoteId=="string"&&(this.workerOptions.promoteId=this.promoteId)}load(){this._updateWorkerData()}onAdd(t){this.map=t,this.load()}setData(t){return this._data=t,this._updateWorkerData(),this}updateData(t){return this._updateWorkerData(t),this}getClusterExpansionZoom(t,n){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:t,source:this.id},n),this}getClusterChildren(t,n){return this.actor.send("geojson.getClusterChildren",{clusterId:t,source:this.id},n),this}getClusterLeaves(t,n,a,h){return this.actor.send("geojson.getClusterLeaves",{source:this.id,clusterId:t,limit:n,offset:a},h),this}_updateWorkerData(t){const n=c.extend({},this.workerOptions);t?n.dataDiff=t:typeof this._data=="string"?(n.request=this.map._requestManager.transformRequest(c.exported.resolveURL(this._data),c.ResourceType.Source),n.request.collectResourceTiming=this._collectResourceTiming):n.data=JSON.stringify(this._data),this._pendingLoads++,this.fire(new c.Event("dataloading",{dataType:"source"})),this.actor.send(`${this.type}.loadData`,n,(a,h)=>{if(this._pendingLoads--,this._removed||h&&h.abandoned)return void this.fire(new c.Event("dataabort",{dataType:"source"}));let p=null;if(h&&h.resourceTiming&&h.resourceTiming[this.id]&&(p=h.resourceTiming[this.id].slice(0)),a)return void this.fire(new c.ErrorEvent(a));const m={dataType:"source"};this._collectResourceTiming&&p&&p.length>0&&c.extend(m,{resourceTiming:p}),this.fire(new c.Event("data",{...m,sourceDataType:"metadata"})),this.fire(new c.Event("data",{...m,sourceDataType:"content"}))})}loaded(){return this._pendingLoads===0}loadTile(t,n){const a=t.actor?"reloadTile":"loadTile";t.actor=this.actor;const h={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(a,h,(p,m)=>(delete t.request,t.unloadVectorData(),t.aborted?n(null):p?n(p):(t.loadVectorData(m,this.map.painter,a==="reloadTile"),n(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.type,source:this.id})}onRemove(){this._removed=!0,this.actor.send("removeSource",{type:this.type,source:this.id})}serialize(){return c.extend({},this._options,{type:this.type,data:this._data})}hasTransition(){return!1}}var qr=c.createLayout([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class ki extends c.Evented{constructor(t,n,a,h){super(),this.id=t,this.dispatcher=a,this.coordinates=n.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(h),this.options=n}load(t,n){this._loaded=!1,this.fire(new c.Event("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=c.getImage(this.map._requestManager.transformRequest(this.url,c.ResourceType.Image),(a,h)=>{this._request=null,this._loaded=!0,a?this.fire(new c.ErrorEvent(a)):h&&(this.image=h,t&&(this.coordinates=t),n&&n(),this._finishLoading())})}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 c.Event("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(t){this.map=t,this.load()}onRemove(){this._request&&(this._request.cancel(),this._request=null)}setCoordinates(t){this.coordinates=t;const n=t.map(c.MercatorCoordinate.fromLngLat);this.tileID=function(h){let p=1/0,m=1/0,_=-1/0,y=-1/0;for(const C of h)p=Math.min(p,C.x),m=Math.min(m,C.y),_=Math.max(_,C.x),y=Math.max(y,C.y);const v=Math.max(_-p,y-m),S=Math.max(0,Math.floor(-Math.log(v)/Math.LN2)),E=Math.pow(2,S);return new c.CanonicalTileID(S,Math.floor((p+_)/2*E),Math.floor((m+y)/2*E))}(n),this.minzoom=this.maxzoom=this.tileID.z;const a=n.map(h=>this.tileID.getTilePoint(h)._round());return this._boundsArray=new c.RasterBoundsArray,this._boundsArray.emplaceBack(a[0].x,a[0].y,0,0),this._boundsArray.emplaceBack(a[1].x,a[1].y,c.EXTENT,0),this._boundsArray.emplaceBack(a[3].x,a[3].y,0,c.EXTENT),this._boundsArray.emplaceBack(a[2].x,a[2].y,c.EXTENT,c.EXTENT),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new c.Event("data",{dataType:"source",sourceDataType:"content"})),this}prepare(){if(Object.keys(this.tiles).length===0||!this.image)return;const t=this.map.painter.context,n=t.gl;this.boundsBuffer||(this.boundsBuffer=t.createVertexBuffer(this._boundsArray,qr.members)),this.boundsSegments||(this.boundsSegments=c.SegmentVector.simpleSegment(0,0,4,2)),this.texture||(this.texture=new Dt(t,this.image,n.RGBA),this.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE));for(const a in this.tiles){const h=this.tiles[a];h.state!=="loaded"&&(h.state="loaded",h.texture=this.texture)}}loadTile(t,n){this.tileID&&this.tileID.equals(t.tileID.canonical)?(this.tiles[String(t.tileID.wrap)]=t,t.buckets={},n(null)):(t.state="errored",n(null))}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}}class Zr extends ki{constructor(t,n,a,h){super(t,n,a,h),this.roundZoom=!0,this.type="video",this.options=n}load(){this._loaded=!1;const t=this.options;this.urls=[];for(const n of t.urls)this.urls.push(this.map._requestManager.transformRequest(n,c.ResourceType.Source).url);c.getVideo(this.urls,(n,a)=>{this._loaded=!0,n?this.fire(new c.ErrorEvent(n)):a&&(this.video=a,this.video.loop=!0,this.video.addEventListener("playing",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading())})}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(t){if(this.video){const n=this.video.seekable;t<n.start(0)||t>n.end(0)?this.fire(new c.ErrorEvent(new c.ValidationError(`sources.${this.id}`,null,`Playback for this video can be set only between the ${n.start(0)} and ${n.end(0)}-second mark.`))):this.video.currentTime=t}}getVideo(){return this.video}onAdd(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;const t=this.map.painter.context,n=t.gl;this.boundsBuffer||(this.boundsBuffer=t.createVertexBuffer(this._boundsArray,qr.members)),this.boundsSegments||(this.boundsSegments=c.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE),n.texSubImage2D(n.TEXTURE_2D,0,0,0,n.RGBA,n.UNSIGNED_BYTE,this.video)):(this.texture=new Dt(t,this.video,n.RGBA),this.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE));for(const a in this.tiles){const h=this.tiles[a];h.state!=="loaded"&&(h.state="loaded",h.texture=this.texture)}}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class Or extends ki{constructor(t,n,a,h){super(t,n,a,h),n.coordinates?Array.isArray(n.coordinates)&&n.coordinates.length===4&&!n.coordinates.some(p=>!Array.isArray(p)||p.length!==2||p.some(m=>typeof m!="number"))||this.fire(new c.ErrorEvent(new c.ValidationError(`sources.${t}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new c.ErrorEvent(new c.ValidationError(`sources.${t}`,null,'missing required property "coordinates"'))),n.animate&&typeof n.animate!="boolean"&&this.fire(new c.ErrorEvent(new c.ValidationError(`sources.${t}`,null,'optional "animate" property must be a boolean value'))),n.canvas?typeof n.canvas=="string"||n.canvas instanceof HTMLCanvasElement||this.fire(new c.ErrorEvent(new c.ValidationError(`sources.${t}`,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 c.ErrorEvent(new c.ValidationError(`sources.${t}`,null,'missing required property "canvas"'))),this.options=n,this.animate=n.animate===void 0||n.animate}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 c.ErrorEvent(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())}getCanvas(){return this.canvas}onAdd(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let t=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,t=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,t=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;const n=this.map.painter.context,a=n.gl;this.boundsBuffer||(this.boundsBuffer=n.createVertexBuffer(this._boundsArray,qr.members)),this.boundsSegments||(this.boundsSegments=c.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(t||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new Dt(n,this.canvas,a.RGBA,{premultiply:!0});for(const h in this.tiles){const p=this.tiles[h];p.state!=="loaded"&&(p.state="loaded",p.texture=this.texture)}}serialize(){return{type:"canvas",coordinates:this.coordinates}}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 Ur={vector:cn,raster:hn,"raster-dem":sr,geojson:Fr,video:Zr,image:ki,canvas:Or};function $n(o,t){const n=c.create();return c.translate(n,n,[1,1,0]),c.scale(n,n,[.5*o.width,.5*o.height,1]),c.multiply(n,n,o.calculatePosMatrix(t.toUnwrapped()))}function jn(o,t,n,a,h,p){const m=function(E,C,D){if(E)for(const B of E){const L=C[B];if(L&&L.source===D&&L.type==="fill-extrusion")return!0}else for(const B in C){const L=C[B];if(L.source===D&&L.type==="fill-extrusion")return!0}return!1}(h&&h.layers,t,o.id),_=p.maxPitchScaleFactor(),y=o.tilesIn(a,_,m);y.sort(un);const v=[];for(const E of y)v.push({wrappedTileID:E.tileID.wrapped().key,queryResults:E.tile.queryRenderedFeatures(t,n,o._state,E.queryGeometry,E.cameraQueryGeometry,E.scale,h,p,_,$n(o.transform,E.tileID))});const S=function(E){const C={},D={};for(const B of E){const L=B.queryResults,N=B.wrappedTileID,X=D[N]=D[N]||{};for(const q in L){const U=L[q],W=X[q]=X[q]||{},te=C[q]=C[q]||[];for(const ae of U)W[ae.featureIndex]||(W[ae.featureIndex]=!0,te.push(ae))}}return C}(v);for(const E in S)S[E].forEach(C=>{const D=C.feature,B=o.getFeatureState(D.layer["source-layer"],D.id);D.source=D.layer.source,D.layer["source-layer"]&&(D.sourceLayer=D.layer["source-layer"]),D.state=B});return S}function un(o,t){const n=o.tileID,a=t.tileID;return n.overscaledZ-a.overscaledZ||n.canonical.y-a.canonical.y||n.wrap-a.wrap||n.canonical.x-a.canonical.x}class wr{constructor(t,n){this.tileID=t,this.uid=c.uniqueId(),this.uses=0,this.tileSize=n,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 n=t+this.timeAdded;n<c.exported.now()||this.fadeEndTime&&n<this.fadeEndTime||(this.fadeEndTime=n)}wasRequested(){return this.state==="errored"||this.state==="loaded"||this.state==="reloading"}clearTextures(t){this.demTexture&&t.saveTileTexture(this.demTexture),this.demTexture=null}loadVectorData(t,n,a){if(this.hasData()&&this.unloadVectorData(),this.state="loaded",t){t.featureIndex&&(this.latestFeatureIndex=t.featureIndex,t.rawTileData?(this.latestRawTileData=t.rawTileData,this.latestFeatureIndex.rawTileData=t.rawTileData):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData)),this.collisionBoxArray=t.collisionBoxArray,this.buckets=function(h,p){const m={};if(!p)return m;for(const _ of h){const y=_.layerIds.map(v=>p.getLayer(v)).filter(Boolean);if(y.length!==0){_.layers=y,_.stateDependentLayerIds&&(_.stateDependentLayers=_.stateDependentLayerIds.map(v=>y.filter(S=>S.id===v)[0]));for(const v of y)m[v.id]=_}}return m}(t.buckets,n.style),this.hasSymbolBuckets=!1;for(const h in this.buckets){const p=this.buckets[h];if(p instanceof c.SymbolBucket){if(this.hasSymbolBuckets=!0,!a)break;p.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const h in this.buckets){const p=this.buckets[h];if(p instanceof c.SymbolBucket&&p.hasRTLText){this.hasRTLText=!0,c.lazyLoadRTLTextPlugin();break}}this.queryPadding=0;for(const h in this.buckets){const p=this.buckets[h];this.queryPadding=Math.max(this.queryPadding,n.style.getLayer(h).queryRadius(p))}t.imageAtlas&&(this.imageAtlas=t.imageAtlas),t.glyphAtlasImage&&(this.glyphAtlasImage=t.glyphAtlasImage)}else this.collisionBoxArray=new c.CollisionBoxArray}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 a in this.buckets){const h=this.buckets[a];h.uploadPending()&&h.upload(t)}const n=t.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new Dt(t,this.imageAtlas.image,n.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new Dt(t,this.glyphAtlasImage,n.ALPHA),this.glyphAtlasImage=null)}prepare(t){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture)}queryRenderedFeatures(t,n,a,h,p,m,_,y,v,S){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:h,cameraQueryGeometry:p,scale:m,tileSize:this.tileSize,pixelPosMatrix:S,transform:y,params:_,queryPadding:this.queryPadding*v},t,n,a):{}}querySourceFeatures(t,n){const a=this.latestFeatureIndex;if(!a||!a.rawTileData)return;const h=a.loadVTLayers(),p=n&&n.sourceLayer?n.sourceLayer:"",m=h._geojsonTileLayer||h[p];if(!m)return;const _=c.createFilter(n&&n.filter),{z:y,x:v,y:S}=this.tileID.canonical,E={z:y,x:v,y:S};for(let C=0;C<m.length;C++){const D=m.feature(C);if(_.needGeometry){const N=c.toEvaluationFeature(D,!0);if(!_.filter(new c.EvaluationParameters(this.tileID.overscaledZ),N,this.tileID.canonical))continue}else if(!_.filter(new c.EvaluationParameters(this.tileID.overscaledZ),D))continue;const B=a.getId(D,p),L=new c.GeoJSONFeature(D,y,v,S,B);L.tile=E,t.push(L)}}hasData(){return this.state==="loaded"||this.state==="reloading"||this.state==="expired"}patternsLoaded(){return this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length}setExpiryData(t){const n=this.expirationTime;if(t.cacheControl){const a=c.parseCacheControl(t.cacheControl);a["max-age"]&&(this.expirationTime=Date.now()+1e3*a["max-age"])}else t.expires&&(this.expirationTime=new Date(t.expires).getTime());if(this.expirationTime){const a=Date.now();let h=!1;if(this.expirationTime>a)h=!1;else if(n)if(this.expirationTime<n)h=!0;else{const p=this.expirationTime-n;p?this.expirationTime=a+Math.max(p,3e4):h=!0}else h=!0;h?(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,n){if(!this.latestFeatureIndex||!this.latestFeatureIndex.rawTileData||Object.keys(t).length===0)return;const a=this.latestFeatureIndex.loadVTLayers();for(const h in this.buckets){if(!n.style.hasLayer(h))continue;const p=this.buckets[h],m=p.layers[0].sourceLayer||"_geojsonTileLayer",_=a[m],y=t[m];if(!_||!y||Object.keys(y).length===0)continue;p.update(y,_,this.imageAtlas&&this.imageAtlas.patternPositions||{});const v=n&&n.style&&n.style.getLayer(h);v&&(this.queryPadding=Math.max(this.queryPadding,v.queryRadius(p)))}}holdingForFade(){return this.symbolFadeHoldUntil!==void 0}symbolFadeFinished(){return!this.symbolFadeHoldUntil||this.symbolFadeHoldUntil<c.exported.now()}clearFadeHold(){this.symbolFadeHoldUntil=void 0}setHoldDuration(t){this.symbolFadeHoldUntil=c.exported.now()+t}setDependencies(t,n){const a={};for(const h of n)a[h]=!0;this.dependencies[t]=a}hasDependency(t,n){for(const a of t){const h=this.dependencies[a];if(h){for(const p of n)if(h[p])return!0}}return!1}}class Tr{constructor(t,n){this.max=t,this.onRemove=n,this.reset()}reset(){for(const t in this.data)for(const n of this.data[t])n.timeout&&clearTimeout(n.timeout),this.onRemove(n.value);return this.data={},this.order=[],this}add(t,n,a){const h=t.wrapped().key;this.data[h]===void 0&&(this.data[h]=[]);const p={value:n,timeout:void 0};if(a!==void 0&&(p.timeout=setTimeout(()=>{this.remove(t,p)},a)),this.data[h].push(p),this.order.push(h),this.order.length>this.max){const m=this._getAndRemoveByKey(this.order[0]);m&&this.onRemove(m)}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 n=this.data[t].shift();return n.timeout&&clearTimeout(n.timeout),this.data[t].length===0&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),n.value}getByKey(t){const n=this.data[t];return n?n[0].value:null}get(t){return this.has(t)?this.data[t.wrapped().key][0].value:null}remove(t,n){if(!this.has(t))return this;const a=t.wrapped().key,h=n===void 0?0:this.data[a].indexOf(n),p=this.data[a][h];return this.data[a].splice(h,1),p.timeout&&clearTimeout(p.timeout),this.data[a].length===0&&delete this.data[a],this.onRemove(p.value),this.order.splice(this.order.indexOf(a),1),this}setMaxSize(t){for(this.max=t;this.order.length>this.max;){const n=this._getAndRemoveByKey(this.order[0]);n&&this.onRemove(n)}return this}filter(t){const n=[];for(const a in this.data)for(const h of this.data[a])t(h.value)||n.push(h);for(const a of n)this.remove(a.value.tileID,a)}}class Vr{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(t,n,a){const h=String(n);if(this.stateChanges[t]=this.stateChanges[t]||{},this.stateChanges[t][h]=this.stateChanges[t][h]||{},c.extend(this.stateChanges[t][h],a),this.deletedStates[t]===null){this.deletedStates[t]={};for(const p in this.state[t])p!==h&&(this.deletedStates[t][p]=null)}else if(this.deletedStates[t]&&this.deletedStates[t][h]===null){this.deletedStates[t][h]={};for(const p in this.state[t][h])a[p]||(this.deletedStates[t][h][p]=null)}else for(const p in a)this.deletedStates[t]&&this.deletedStates[t][h]&&this.deletedStates[t][h][p]===null&&delete this.deletedStates[t][h][p]}removeFeatureState(t,n,a){if(this.deletedStates[t]===null)return;const h=String(n);if(this.deletedStates[t]=this.deletedStates[t]||{},a&&n!==void 0)this.deletedStates[t][h]!==null&&(this.deletedStates[t][h]=this.deletedStates[t][h]||{},this.deletedStates[t][h][a]=null);else if(n!==void 0)if(this.stateChanges[t]&&this.stateChanges[t][h])for(a in this.deletedStates[t][h]={},this.stateChanges[t][h])this.deletedStates[t][h][a]=null;else this.deletedStates[t][h]=null;else this.deletedStates[t]=null}getState(t,n){const a=String(n),h=c.extend({},(this.state[t]||{})[a],(this.stateChanges[t]||{})[a]);if(this.deletedStates[t]===null)return{};if(this.deletedStates[t]){const p=this.deletedStates[t][n];if(p===null)return{};for(const m in p)delete h[m]}return h}initializeTileState(t,n){t.setFeatureState(this.state,n)}coalesceChanges(t,n){const a={};for(const h in this.stateChanges){this.state[h]=this.state[h]||{};const p={};for(const m in this.stateChanges[h])this.state[h][m]||(this.state[h][m]={}),c.extend(this.state[h][m],this.stateChanges[h][m]),p[m]=this.state[h][m];a[h]=p}for(const h in this.deletedStates){this.state[h]=this.state[h]||{};const p={};if(this.deletedStates[h]===null)for(const m in this.state[h])p[m]={},this.state[h][m]={};else for(const m in this.deletedStates[h]){if(this.deletedStates[h][m]===null)this.state[h][m]={};else for(const _ of Object.keys(this.deletedStates[h][m]))delete this.state[h][m][_];p[m]=this.state[h][m]}a[h]=a[h]||{},c.extend(a[h],p)}if(this.stateChanges={},this.deletedStates={},Object.keys(a).length!==0)for(const h in t)t[h].setFeatureState(a,n)}}class di extends c.Evented{constructor(t,n,a){super(),this.id=t,this.dispatcher=a,this.on("data",h=>{h.dataType==="source"&&h.sourceDataType==="metadata"&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&h.dataType==="source"&&h.sourceDataType==="content"&&(this.reload(),this.transform&&this.update(this.transform,this.terrain))}),this.on("dataloading",()=>{this._sourceErrored=!1}),this.on("error",()=>{this._sourceErrored=this._source.loaded()}),this._source=function(h,p,m,_){const y=new Ur[p.type](h,p,m,_);if(y.id!==h)throw new Error(`Expected Source id to be ${h} instead of ${y.id}`);return c.bindAll(["load","abort","unload","serialize","prepare"],y),y}(t,n,a,this),this._tiles={},this._cache=new Tr(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new Vr}onAdd(t){this.map=t,this._maxTileCacheSize=t?t._maxTileCacheSize: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||!this._source.loaded())return!1;for(const t in this._tiles){const n=this._tiles[t];if(n.state!=="loaded"&&n.state!=="errored")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,n){return this._source.loadTile(t,n)}_unloadTile(t){if(this._source.unloadTile)return this._source.unloadTile(t,()=>{})}_abortTile(t){this._source.abortTile&&this._source.abortTile(t,()=>{}),this._source.fire(new c.Event("dataabort",{tile:t,coord:t.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 n in this._tiles){const a=this._tiles[n];a.upload(t),a.prepare(this.map.style.imageManager)}}getIds(){return Object.values(this._tiles).map(t=>t.tileID).sort(Gn).map(t=>t.key)}getRenderableIds(t){const n=[];for(const a in this._tiles)this._isIdRenderable(a,t)&&n.push(this._tiles[a]);return t?n.sort((a,h)=>{const p=a.tileID,m=h.tileID,_=new c.pointGeometry(p.canonical.x,p.canonical.y)._rotate(this.transform.angle),y=new c.pointGeometry(m.canonical.x,m.canonical.y)._rotate(this.transform.angle);return p.overscaledZ-m.overscaledZ||y.y-_.y||y.x-_.x}).map(a=>a.tileID.key):n.map(a=>a.tileID).sort(Gn).map(a=>a.key)}hasRenderableParent(t){const n=this.findLoadedParent(t,0);return!!n&&this._isIdRenderable(n.tileID.key)}_isIdRenderable(t,n){return this._tiles[t]&&this._tiles[t].hasData()&&!this._coveredTiles[t]&&(n||!this._tiles[t].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(const t in this._tiles)this._tiles[t].state!=="errored"&&this._reloadTile(t,"reloading")}}_reloadTile(t,n){const a=this._tiles[t];a&&(a.state!=="loading"&&(a.state=n),this._loadTile(a,this._tileLoaded.bind(this,a,t,n)))}_tileLoaded(t,n,a,h){if(h)return t.state="errored",void(h.status!==404?this._source.fire(new c.ErrorEvent(h,{tile:t})):this.update(this.transform,this.terrain));t.timeAdded=c.exported.now(),a==="expired"&&(t.refreshedUponExpiration=!0),this._setTileReloadTimer(n,t),this.getSource().type==="raster-dem"&&t.dem&&this._backfillDEM(t),this._state.initializeTileState(t,this.map?this.map.painter:null),t.aborted||this._source.fire(new c.Event("data",{dataType:"source",tile:t,coord:t.tileID}))}_backfillDEM(t){const n=this.getRenderableIds();for(let h=0;h<n.length;h++){const p=n[h];if(t.neighboringTiles&&t.neighboringTiles[p]){const m=this.getTileByID(p);a(t,m),a(m,t)}}function a(h,p){h.needsHillshadePrepare=!0,h.needsTerrainPrepare=!0;let m=p.tileID.canonical.x-h.tileID.canonical.x;const _=p.tileID.canonical.y-h.tileID.canonical.y,y=Math.pow(2,h.tileID.canonical.z),v=p.tileID.key;m===0&&_===0||Math.abs(_)>1||(Math.abs(m)>1&&(Math.abs(m+y)===1?m+=y:Math.abs(m-y)===1&&(m-=y)),p.dem&&h.dem&&(h.dem.backfillBorder(p.dem,m,_),h.neighboringTiles&&h.neighboringTiles[v]&&(h.neighboringTiles[v].backfilled=!0)))}}getTile(t){return this.getTileByID(t.key)}getTileByID(t){return this._tiles[t]}_retainLoadedChildren(t,n,a,h){for(const p in this._tiles){let m=this._tiles[p];if(h[p]||!m.hasData()||m.tileID.overscaledZ<=n||m.tileID.overscaledZ>a)continue;let _=m.tileID;for(;m&&m.tileID.overscaledZ>n+1;){const v=m.tileID.scaledTo(m.tileID.overscaledZ-1);m=this._tiles[v.key],m&&m.hasData()&&(_=v)}let y=_;for(;y.overscaledZ>n;)if(y=y.scaledTo(y.overscaledZ-1),t[y.key]){h[_.key]=_;break}}}findLoadedParent(t,n){if(t.key in this._loadedParentTiles){const a=this._loadedParentTiles[t.key];return a&&a.tileID.overscaledZ>=n?a:null}for(let a=t.overscaledZ-1;a>=n;a--){const h=t.scaledTo(a),p=this._getLoadedTile(h);if(p)return p}}_getLoadedTile(t){const n=this._tiles[t.key];return n&&n.hasData()?n:this._cache.getByKey(t.wrapped().key)}updateCacheSize(t){const n=Math.ceil(t.width/this._source.tileSize)+1,a=Math.ceil(t.height/this._source.tileSize)+1,h=Math.floor(n*a*5),p=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,h):h;this._cache.setMaxSize(p)}handleWrapJump(t){const n=Math.round((t-(this._prevLng===void 0?t:this._prevLng))/360);if(this._prevLng=t,n){const a={};for(const h in this._tiles){const p=this._tiles[h];p.tileID=p.tileID.unwrapTo(p.tileID.wrap+n),a[p.tileID.key]=p}this._tiles=a;for(const h in this._timers)clearTimeout(this._timers[h]),delete this._timers[h];for(const h in this._tiles)this._setTileReloadTimer(h,this._tiles[h])}}update(t,n){if(this.transform=t,this.terrain=n,!this._sourceLoaded||this._paused)return;let a;this.updateCacheSize(t),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?a=t.getVisibleUnwrappedCoordinates(this._source.tileID).map(v=>new c.OverscaledTileID(v.canonical.z,v.wrap,v.canonical.z,v.canonical.x,v.canonical.y)):(a=t.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:n}),this._source.hasTile&&(a=a.filter(v=>this._source.hasTile(v)))):a=[];const h=t.coveringZoomLevel(this._source),p=Math.max(h-di.maxOverzooming,this._source.minzoom),m=Math.max(h+di.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){const v={};for(const S of a)if(S.canonical.z>this._source.minzoom){const E=S.scaledTo(S.canonical.z-1);v[E.key]=E;const C=S.scaledTo(Math.max(this._source.minzoom,Math.min(S.canonical.z,5)));v[C.key]=C}a=a.concat(Object.values(v))}const _=this._updateRetainedTiles(a,h);if(Sr(this._source.type)){const v={},S={},E=Object.keys(_);for(const C of E){const D=_[C],B=this._tiles[C];if(!B||B.fadeEndTime&&B.fadeEndTime<=c.exported.now())continue;const L=this.findLoadedParent(D,p);L&&(this._addTile(L.tileID),v[L.tileID.key]=L.tileID),S[C]=D}this._retainLoadedChildren(S,h,m,_);for(const C in v)_[C]||(this._coveredTiles[C]=!0,_[C]=v[C]);if(n){const C={},D={};for(const B of a)this._tiles[B.key].hasData()?C[B.key]=B:D[B.key]=B;for(const B in D){const L=D[B].children(this._source.maxzoom);this._tiles[L[0].key]&&this._tiles[L[1].key]&&this._tiles[L[2].key]&&this._tiles[L[3].key]&&(C[L[0].key]=_[L[0].key]=L[0],C[L[1].key]=_[L[1].key]=L[1],C[L[2].key]=_[L[2].key]=L[2],C[L[3].key]=_[L[3].key]=L[3],delete D[B])}for(const B in D){const L=this.findLoadedParent(D[B],this._source.minzoom);if(L){C[L.tileID.key]=_[L.tileID.key]=L.tileID;for(const N in C)C[N].isChildOf(L.tileID)&&delete C[N]}}for(const B in this._tiles)C[B]||(this._coveredTiles[B]=!0)}}for(const v in _)this._tiles[v].clearFadeHold();const y=c.keysDifference(this._tiles,_);for(const v of y){const S=this._tiles[v];S.hasSymbolBuckets&&!S.holdingForFade()?S.setHoldDuration(this.map._fadeDuration):S.hasSymbolBuckets&&!S.symbolFadeFinished()||this._removeTile(v)}this._updateLoadedParentTileCache()}releaseSymbolFadeTiles(){for(const t in this._tiles)this._tiles[t].holdingForFade()&&this._removeTile(t)}_updateRetainedTiles(t,n){const a={},h={},p=Math.max(n-di.maxOverzooming,this._source.minzoom),m=Math.max(n+di.maxUnderzooming,this._source.minzoom),_={};for(const y of t){const v=this._addTile(y);a[y.key]=y,v.hasData()||n<this._source.maxzoom&&(_[y.key]=y)}this._retainLoadedChildren(_,n,m,a);for(const y of t){let v=this._tiles[y.key];if(v.hasData())continue;if(n+1>this._source.maxzoom){const E=y.children(this._source.maxzoom)[0],C=this.getTile(E);if(C&&C.hasData()){a[E.key]=E;continue}}else{const E=y.children(this._source.maxzoom);if(a[E[0].key]&&a[E[1].key]&&a[E[2].key]&&a[E[3].key])continue}let S=v.wasRequested();for(let E=y.overscaledZ-1;E>=p;--E){const C=y.scaledTo(E);if(h[C.key]||(h[C.key]=!0,v=this.getTile(C),!v&&S&&(v=this._addTile(C)),v&&(a[C.key]=C,S=v.wasRequested(),v.hasData())))break}}return a}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(const t in this._tiles){const n=[];let a,h=this._tiles[t].tileID;for(;h.overscaledZ>0;){if(h.key in this._loadedParentTiles){a=this._loadedParentTiles[h.key];break}n.push(h.key);const p=h.scaledTo(h.overscaledZ-1);if(a=this._getLoadedTile(p),a)break;h=p}for(const p of n)this._loadedParentTiles[p]=a}}_addTile(t){let n=this._tiles[t.key];if(n)return n;n=this._cache.getAndRemove(t),n&&(this._setTileReloadTimer(t.key,n),n.tileID=t,this._state.initializeTileState(n,this.map?this.map.painter:null),this._cacheTimers[t.key]&&(clearTimeout(this._cacheTimers[t.key]),delete this._cacheTimers[t.key],this._setTileReloadTimer(t.key,n)));const a=n;return n||(n=new wr(t,this._source.tileSize*t.overscaleFactor()),this._loadTile(n,this._tileLoaded.bind(this,n,t.key,n.state))),n.uses++,this._tiles[t.key]=n,a||this._source.fire(new c.Event("dataloading",{tile:n,coord:n.tileID,dataType:"source"})),n}_setTileReloadTimer(t,n){t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);const a=n.getExpiryTimeout();a&&(this._timers[t]=setTimeout(()=>{this._reloadTile(t,"expired"),delete this._timers[t]},a))}_removeTile(t){const n=this._tiles[t];n&&(n.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),n.uses>0||(n.hasData()&&n.state!=="reloading"?this._cache.add(n.tileID,n,n.getExpiryTimeout()):(n.aborted=!0,this._abortTile(n),this._unloadTile(n))))}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const t in this._tiles)this._removeTile(t);this._cache.reset()}tilesIn(t,n,a){const h=[],p=this.transform;if(!p)return h;const m=a?p.getCameraQueryGeometry(t):t,_=t.map(B=>p.pointCoordinate(B,this.terrain)),y=m.map(B=>p.pointCoordinate(B,this.terrain)),v=this.getIds();let S=1/0,E=1/0,C=-1/0,D=-1/0;for(const B of y)S=Math.min(S,B.x),E=Math.min(E,B.y),C=Math.max(C,B.x),D=Math.max(D,B.y);for(let B=0;B<v.length;B++){const L=this._tiles[v[B]];if(L.holdingForFade())continue;const N=L.tileID,X=Math.pow(2,p.zoom-L.tileID.overscaledZ),q=n*L.queryPadding*c.EXTENT/L.tileSize/X,U=[N.getTilePoint(new c.MercatorCoordinate(S,E)),N.getTilePoint(new c.MercatorCoordinate(C,D))];if(U[0].x-q<c.EXTENT&&U[0].y-q<c.EXTENT&&U[1].x+q>=0&&U[1].y+q>=0){const W=_.map(ae=>N.getTilePoint(ae)),te=y.map(ae=>N.getTilePoint(ae));h.push({tile:L,tileID:N,queryGeometry:W,cameraQueryGeometry:te,scale:X})}}return h}getVisibleCoordinates(t){const n=this.getRenderableIds(t).map(a=>this._tiles[a].tileID);for(const a of n)a.posMatrix=this.transform.calculatePosMatrix(a.toUnwrapped());return n}hasTransition(){if(this._source.hasTransition())return!0;if(Sr(this._source.type))for(const t in this._tiles){const n=this._tiles[t];if(n.fadeEndTime!==void 0&&n.fadeEndTime>=c.exported.now())return!0}return!1}setFeatureState(t,n,a){this._state.updateState(t=t||"_geojsonTileLayer",n,a)}removeFeatureState(t,n,a){this._state.removeFeatureState(t=t||"_geojsonTileLayer",n,a)}getFeatureState(t,n){return this._state.getState(t=t||"_geojsonTileLayer",n)}setDependencies(t,n,a){const h=this._tiles[t];h&&h.setDependencies(n,a)}reloadTilesForDependencies(t,n){for(const a in this._tiles)this._tiles[a].hasDependency(t,n)&&this._reloadTile(a,"reloading");this._cache.filter(a=>!a.hasDependency(t,n))}}function Gn(o,t){const n=Math.abs(2*o.wrap)-+(o.wrap<0),a=Math.abs(2*t.wrap)-+(t.wrap<0);return o.overscaledZ-t.overscaledZ||a-n||t.canonical.y-o.canonical.y||t.canonical.x-o.canonical.x}function Sr(o){return o==="raster"||o==="image"||o==="video"}di.maxOverzooming=10,di.maxUnderzooming=3;const Er="mapboxgl_preloaded_worker_pool";class ar{constructor(){this.active={}}acquire(t){if(!this.workers)for(this.workers=[];this.workers.length<ar.workerCount;)this.workers.push(new Worker(ms.workerUrl));return this.active[t]=!0,this.workers.slice()}release(t){delete this.active[t],this.numActive()===0&&(this.workers.forEach(n=>{n.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[Er]}numActive(){return Object.keys(this.active).length}}const pn=Math.floor(c.exported.hardwareConcurrency/2);let Oi;function Xr(){return Oi||(Oi=new ar),Oi}function As(o,t){const n={};for(const a in o)a!=="ref"&&(n[a]=o[a]);return c.refProperties.forEach(a=>{a in t&&(n[a]=t[a])}),n}function Wr(o){o=o.slice();const t=Object.create(null);for(let n=0;n<o.length;n++)t[o[n].id]=o[n];for(let n=0;n<o.length;n++)"ref"in o[n]&&(o[n]=As(o[n],t[o[n].ref]));return o}ar.workerCount=Math.max(Math.min(pn,6),1);const ft={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"};function dn(o,t,n){n.push({command:ft.addSource,args:[o,t[o]]})}function re(o,t,n){t.push({command:ft.removeSource,args:[o]}),n[o]=!0}function z(o,t,n,a){re(o,n,a),dn(o,t,n)}function R(o,t,n){let a;for(a in o[n])if(Object.prototype.hasOwnProperty.call(o[n],a)&&a!=="data"&&!Me(o[n][a],t[n][a]))return!1;for(a in t[n])if(Object.prototype.hasOwnProperty.call(t[n],a)&&a!=="data"&&!Me(o[n][a],t[n][a]))return!1;return!0}function j(o,t,n,a,h,p){let m;for(m in t=t||{},o=o||{})Object.prototype.hasOwnProperty.call(o,m)&&(Me(o[m],t[m])||n.push({command:p,args:[a,m,t[m],h]}));for(m in t)Object.prototype.hasOwnProperty.call(t,m)&&!Object.prototype.hasOwnProperty.call(o,m)&&(Me(o[m],t[m])||n.push({command:p,args:[a,m,t[m],h]}))}function Q(o){return o.id}function V(o,t){return o[t.id]=t,o}class H{constructor(t,n){this.reset(t,n)}reset(t,n){this.points=t||[],this._distances=[0];for(let a=1;a<this.points.length;a++)this._distances[a]=this._distances[a-1]+this.points[a].dist(this.points[a-1]);this.length=this._distances[this._distances.length-1],this.padding=Math.min(n||0,.5*this.length),this.paddedLength=this.length-2*this.padding}lerp(t){if(this.points.length===1)return this.points[0];t=c.clamp(t,0,1);let n=1,a=this._distances[n];const h=t*this.paddedLength+this.padding;for(;a<h&&n<this._distances.length;)a=this._distances[++n];const p=n-1,m=this._distances[p],_=a-m,y=_>0?(h-m)/_:0;return this.points[p].mult(1-y).add(this.points[n].mult(y))}}function ve(o,t){let n=!0;return o==="always"||o!=="never"&&t!=="never"||(n=!1),n}class oe{constructor(t,n,a){const h=this.boxCells=[],p=this.circleCells=[];this.xCellCount=Math.ceil(t/a),this.yCellCount=Math.ceil(n/a);for(let m=0;m<this.xCellCount*this.yCellCount;m++)h.push([]),p.push([]);this.circleKeys=[],this.boxKeys=[],this.bboxes=[],this.circles=[],this.width=t,this.height=n,this.xScale=this.xCellCount/t,this.yScale=this.yCellCount/n,this.boxUid=0,this.circleUid=0}keysLength(){return this.boxKeys.length+this.circleKeys.length}insert(t,n,a,h,p){this._forEachCell(n,a,h,p,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(n),this.bboxes.push(a),this.bboxes.push(h),this.bboxes.push(p)}insertCircle(t,n,a,h){this._forEachCell(n-h,a-h,n+h,a+h,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(n),this.circles.push(a),this.circles.push(h)}_insertBoxCell(t,n,a,h,p,m){this.boxCells[p].push(m)}_insertCircleCell(t,n,a,h,p,m){this.circleCells[p].push(m)}_query(t,n,a,h,p,m,_){if(a<0||t>this.width||h<0||n>this.height)return[];const y=[];if(t<=0&&n<=0&&this.width<=a&&this.height<=h){if(p)return[{key:null,x1:t,y1:n,x2:a,y2:h}];for(let v=0;v<this.boxKeys.length;v++)y.push({key:this.boxKeys[v],x1:this.bboxes[4*v],y1:this.bboxes[4*v+1],x2:this.bboxes[4*v+2],y2:this.bboxes[4*v+3]});for(let v=0;v<this.circleKeys.length;v++){const S=this.circles[3*v],E=this.circles[3*v+1],C=this.circles[3*v+2];y.push({key:this.circleKeys[v],x1:S-C,y1:E-C,x2:S+C,y2:E+C})}}else this._forEachCell(t,n,a,h,this._queryCell,y,{hitTest:p,overlapMode:m,seenUids:{box:{},circle:{}}},_);return y}query(t,n,a,h){return this._query(t,n,a,h,!1,null)}hitTest(t,n,a,h,p,m){return this._query(t,n,a,h,!0,p,m).length>0}hitTestCircle(t,n,a,h,p){const m=t-a,_=t+a,y=n-a,v=n+a;if(_<0||m>this.width||v<0||y>this.height)return!1;const S=[];return this._forEachCell(m,y,_,v,this._queryCellCircle,S,{hitTest:!0,overlapMode:h,circle:{x:t,y:n,radius:a},seenUids:{box:{},circle:{}}},p),S.length>0}_queryCell(t,n,a,h,p,m,_,y){const{seenUids:v,hitTest:S,overlapMode:E}=_,C=this.boxCells[p];if(C!==null){const B=this.bboxes;for(const L of C)if(!v.box[L]){v.box[L]=!0;const N=4*L,X=this.boxKeys[L];if(t<=B[N+2]&&n<=B[N+3]&&a>=B[N+0]&&h>=B[N+1]&&(!y||y(X))&&(!S||!ve(E,X.overlapMode))&&(m.push({key:X,x1:B[N],y1:B[N+1],x2:B[N+2],y2:B[N+3]}),S))return!0}}const D=this.circleCells[p];if(D!==null){const B=this.circles;for(const L of D)if(!v.circle[L]){v.circle[L]=!0;const N=3*L,X=this.circleKeys[L];if(this._circleAndRectCollide(B[N],B[N+1],B[N+2],t,n,a,h)&&(!y||y(X))&&(!S||!ve(E,X.overlapMode))){const q=B[N],U=B[N+1],W=B[N+2];if(m.push({key:X,x1:q-W,y1:U-W,x2:q+W,y2:U+W}),S)return!0}}}return!1}_queryCellCircle(t,n,a,h,p,m,_,y){const{circle:v,seenUids:S,overlapMode:E}=_,C=this.boxCells[p];if(C!==null){const B=this.bboxes;for(const L of C)if(!S.box[L]){S.box[L]=!0;const N=4*L,X=this.boxKeys[L];if(this._circleAndRectCollide(v.x,v.y,v.radius,B[N+0],B[N+1],B[N+2],B[N+3])&&(!y||y(X))&&!ve(E,X.overlapMode))return m.push(!0),!0}}const D=this.circleCells[p];if(D!==null){const B=this.circles;for(const L of D)if(!S.circle[L]){S.circle[L]=!0;const N=3*L,X=this.circleKeys[L];if(this._circlesCollide(B[N],B[N+1],B[N+2],v.x,v.y,v.radius)&&(!y||y(X))&&!ve(E,X.overlapMode))return m.push(!0),!0}}}_forEachCell(t,n,a,h,p,m,_,y){const v=this._convertToXCellCoord(t),S=this._convertToYCellCoord(n),E=this._convertToXCellCoord(a),C=this._convertToYCellCoord(h);for(let D=v;D<=E;D++)for(let B=S;B<=C;B++)if(p.call(this,t,n,a,h,this.xCellCount*B+D,m,_,y))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,n,a,h,p,m){const _=h-t,y=p-n,v=a+m;return v*v>_*_+y*y}_circleAndRectCollide(t,n,a,h,p,m,_){const y=(m-h)/2,v=Math.abs(t-(h+y));if(v>y+a)return!1;const S=(_-p)/2,E=Math.abs(n-(p+S));if(E>S+a)return!1;if(v<=y||E<=S)return!0;const C=v-y,D=E-S;return C*C+D*D<=a*a}}function Ee(o,t,n,a,h){const p=c.create();return t?(c.scale(p,p,[1/h,1/h,1]),n||c.rotateZ(p,p,a.angle)):c.multiply(p,a.labelPlaneMatrix,o),p}function Pe(o,t,n,a,h){if(t){const p=c.clone(o);return c.scale(p,p,[h,h,1]),n||c.rotateZ(p,p,-a.angle),p}return a.glCoordMatrix}function Ce(o,t,n){let a;n?(a=[o.x,o.y,n(o.x,o.y),1],c.transformMat4(a,a,t)):(a=[o.x,o.y,0,1],ii(a,a,t));const h=a[3];return{point:new c.pointGeometry(a[0]/h,a[1]/h),signedDistanceFromCamera:h}}function at(o,t){return .5+o/t*.5}function gt(o,t){const n=o[0]/o[3],a=o[1]/o[3];return n>=-t[0]&&n<=t[0]&&a>=-t[1]&&a<=t[1]}function xe(o,t,n,a,h,p,m,_,y,v){const S=a?o.textSizeData:o.iconSizeData,E=c.evaluateSizeForZoom(S,n.transform.zoom),C=[256/n.width*2+1,256/n.height*2+1],D=a?o.text.dynamicLayoutVertexArray:o.icon.dynamicLayoutVertexArray;D.clear();const B=o.lineVertexArray,L=a?o.text.placedSymbolArray:o.icon.placedSymbolArray,N=n.transform.width/n.transform.height;let X=!1;for(let q=0;q<L.length;q++){const U=L.get(q);if(U.hidden||U.writingMode===c.WritingMode.vertical&&!X){Xt(U.numGlyphs,D);continue}let W;if(X=!1,v?(W=[U.anchorX,U.anchorY,v(U.anchorX,U.anchorY),1],c.transformMat4(W,W,t)):(W=[U.anchorX,U.anchorY,0,1],ii(W,W,t)),!gt(W,C)){Xt(U.numGlyphs,D);continue}const te=at(n.transform.cameraToCenterDistance,W[3]),ae=c.evaluateSizeForFeature(S,E,U),he=m?ae/te:ae*te,de=new c.pointGeometry(U.anchorX,U.anchorY),we=Ce(de,h,v).point,ye={},Ae=vt(U,he,!1,_,t,h,p,o.glyphOffsetArray,B,D,we,de,ye,N,y,v);X=Ae.useVertical,(Ae.notEnoughRoom||X||Ae.needsFlipping&&vt(U,he,!0,_,t,h,p,o.glyphOffsetArray,B,D,we,de,ye,N,y,v).notEnoughRoom)&&Xt(U.numGlyphs,D)}a?o.text.dynamicLayoutVertexBuffer.updateData(D):o.icon.dynamicLayoutVertexBuffer.updateData(D)}function Le(o,t,n,a,h,p,m,_,y,v,S,E,C){const D=_.glyphStartIndex+_.numGlyphs,B=_.lineStartIndex,L=_.lineStartIndex+_.lineLength,N=t.getoffsetX(_.glyphStartIndex),X=t.getoffsetX(D-1),q=je(o*N,n,a,h,p,m,_.segment,B,L,y,v,S,E,C);if(!q)return null;const U=je(o*X,n,a,h,p,m,_.segment,B,L,y,v,S,E,C);return U?{first:q,last:U}:null}function Fe(o,t,n,a){return o===c.WritingMode.horizontal&&Math.abs(n.y-t.y)>Math.abs(n.x-t.x)*a?{useVertical:!0}:(o===c.WritingMode.vertical?t.y<n.y:t.x>n.x)?{needsFlipping:!0}:null}function vt(o,t,n,a,h,p,m,_,y,v,S,E,C,D,B,L){const N=t/24,X=o.lineOffsetX*N,q=o.lineOffsetY*N;let U;if(o.numGlyphs>1){const W=o.glyphStartIndex+o.numGlyphs,te=o.lineStartIndex,ae=o.lineStartIndex+o.lineLength,he=Le(N,_,X,q,n,S,E,o,y,p,C,B,L);if(!he)return{notEnoughRoom:!0};const de=Ce(he.first.point,m,L).point,we=Ce(he.last.point,m,L).point;if(a&&!n){const ye=Fe(o.writingMode,de,we,D);if(ye)return ye}U=[he.first];for(let ye=o.glyphStartIndex+1;ye<W-1;ye++)U.push(je(N*_.getoffsetX(ye),X,q,n,S,E,o.segment,te,ae,y,p,C,B,L));U.push(he.last)}else{if(a&&!n){const te=Ce(E,h,L).point,ae=o.lineStartIndex+o.segment+1,he=new c.pointGeometry(y.getx(ae),y.gety(ae)),de=Ce(he,h,L),we=de.signedDistanceFromCamera>0?de.point:Rt(E,he,te,1,h,L),ye=Fe(o.writingMode,te,we,D);if(ye)return ye}const W=je(N*_.getoffsetX(o.glyphStartIndex),X,q,n,S,E,o.segment,o.lineStartIndex,o.lineStartIndex+o.lineLength,y,p,C,B,L);if(!W)return{notEnoughRoom:!0};U=[W]}for(const W of U)c.addDynamicAttributes(v,W.point,W.angle);return{}}function Rt(o,t,n,a,h,p){const m=Ce(o.add(o.sub(t)._unit()),h,p).point,_=n.sub(m);return n.add(_._mult(a/_.mag()))}function je(o,t,n,a,h,p,m,_,y,v,S,E,C,D){const B=a?o-t:o+t;let L=B>0?1:-1,N=0;a&&(L*=-1,N=Math.PI),L<0&&(N+=Math.PI);let X=L>0?_+m:_+m+1,q=h,U=h,W=0,te=0;const ae=Math.abs(B),he=[];for(;W+te<=ae;){if(X+=L,X<_||X>=y)return null;if(U=q,he.push(q),q=E[X],q===void 0){const Ge=new c.pointGeometry(v.getx(X),v.gety(X)),rt=Ce(Ge,S,D);if(rt.signedDistanceFromCamera>0)q=E[X]=rt.point;else{const nt=X-L;q=Rt(W===0?p:new c.pointGeometry(v.getx(nt),v.gety(nt)),Ge,U,ae-W+1,S,D)}}W+=te,te=U.dist(q)}const de=(ae-W)/te,we=q.sub(U),ye=we.mult(de)._add(U);ye._add(we._unit()._perp()._mult(n*L));const Ae=N+Math.atan2(q.y-U.y,q.x-U.x);return he.push(ye),{point:ye,angle:C?Ae:0,path:he}}const It=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function Xt(o,t){for(let n=0;n<o;n++){const a=t.length;t.resize(a+4),t.float32.set(It,3*a)}}function ii(o,t,n){const a=t[0],h=t[1];return o[0]=n[0]*a+n[4]*h+n[12],o[1]=n[1]*a+n[5]*h+n[13],o[3]=n[3]*a+n[7]*h+n[15],o}const Bt=100;class At{constructor(t,n=new oe(t.width+200,t.height+200,25),a=new oe(t.width+200,t.height+200,25)){this.transform=t,this.grid=n,this.ignoredGrid=a,this.pitchfactor=Math.cos(t._pitch)*t.cameraToCenterDistance,this.screenRightBoundary=t.width+Bt,this.screenBottomBoundary=t.height+Bt,this.gridRightBoundary=t.width+200,this.gridBottomBoundary=t.height+200,this.perspectiveRatioCutoff=.6}placeCollisionBox(t,n,a,h,p,m){const _=this.projectAndGetPerspectiveRatio(h,t.anchorPointX,t.anchorPointY,m),y=a*_.perspectiveRatio,v=t.x1*y+_.point.x,S=t.y1*y+_.point.y,E=t.x2*y+_.point.x,C=t.y2*y+_.point.y;return!this.isInsideGrid(v,S,E,C)||n!=="always"&&this.grid.hitTest(v,S,E,C,n,p)||_.perspectiveRatio<this.perspectiveRatioCutoff?{box:[],offscreen:!1}:{box:[v,S,E,C],offscreen:this.isOffscreen(v,S,E,C)}}placeCollisionCircles(t,n,a,h,p,m,_,y,v,S,E,C,D,B){const L=[],N=new c.pointGeometry(n.anchorX,n.anchorY),X=Ce(N,m,B),q=at(this.transform.cameraToCenterDistance,X.signedDistanceFromCamera),U=(S?p/q:p*q)/c.ONE_EM,W=Ce(N,_,B).point,te=Le(U,h,n.lineOffsetX*U,n.lineOffsetY*U,!1,W,N,n,a,_,{},!1,B);let ae=!1,he=!1,de=!0;if(te){const we=.5*C*q+D,ye=new c.pointGeometry(-100,-100),Ae=new c.pointGeometry(this.screenRightBoundary,this.screenBottomBoundary),Ge=new H,rt=te.first,nt=te.last;let We=[];for(let mt=rt.path.length-1;mt>=1;mt--)We.push(rt.path[mt]);for(let mt=1;mt<nt.path.length;mt++)We.push(nt.path[mt]);const Mt=2.5*we;if(y){const mt=We.map(yt=>Ce(yt,y,B));We=mt.some(yt=>yt.signedDistanceFromCamera<=0)?[]:mt.map(yt=>yt.point)}let Tt=[];if(We.length>0){const mt=We[0].clone(),yt=We[0].clone();for(let bt=1;bt<We.length;bt++)mt.x=Math.min(mt.x,We[bt].x),mt.y=Math.min(mt.y,We[bt].y),yt.x=Math.max(yt.x,We[bt].x),yt.y=Math.max(yt.y,We[bt].y);Tt=mt.x>=ye.x&&yt.x<=Ae.x&&mt.y>=ye.y&&yt.y<=Ae.y?[We]:yt.x<ye.x||mt.x>Ae.x||yt.y<ye.y||mt.y>Ae.y?[]:c.clipLine([We],ye.x,ye.y,Ae.x,Ae.y)}for(const mt of Tt){Ge.reset(mt,.25*we);let yt=0;yt=Ge.length<=.5*we?1:Math.ceil(Ge.paddedLength/Mt)+1;for(let bt=0;bt<yt;bt++){const Ei=bt/Math.max(yt-1,1),yr=Ge.lerp(Ei),hr=yr.x+Bt,Nt=yr.y+Bt;L.push(hr,Nt,we,0);const $r=hr-we,Ii=Nt-we,Ai=hr+we,Qr=Nt+we;if(de=de&&this.isOffscreen($r,Ii,Ai,Qr),he=he||this.isInsideGrid($r,Ii,Ai,Qr),t!=="always"&&this.grid.hitTestCircle(hr,Nt,we,t,E)&&(ae=!0,!v))return{circles:[],offscreen:!1,collisionDetected:ae}}}}return{circles:!v&&ae||!he||q<this.perspectiveRatioCutoff?[]:L,offscreen:de,collisionDetected:ae}}queryRenderedSymbols(t){if(t.length===0||this.grid.keysLength()===0&&this.ignoredGrid.keysLength()===0)return{};const n=[];let a=1/0,h=1/0,p=-1/0,m=-1/0;for(const S of t){const E=new c.pointGeometry(S.x+Bt,S.y+Bt);a=Math.min(a,E.x),h=Math.min(h,E.y),p=Math.max(p,E.x),m=Math.max(m,E.y),n.push(E)}const _=this.grid.query(a,h,p,m).concat(this.ignoredGrid.query(a,h,p,m)),y={},v={};for(const S of _){const E=S.key;if(y[E.bucketInstanceId]===void 0&&(y[E.bucketInstanceId]={}),y[E.bucketInstanceId][E.featureIndex])continue;const C=[new c.pointGeometry(S.x1,S.y1),new c.pointGeometry(S.x2,S.y1),new c.pointGeometry(S.x2,S.y2),new c.pointGeometry(S.x1,S.y2)];c.polygonIntersectsPolygon(n,C)&&(y[E.bucketInstanceId][E.featureIndex]=!0,v[E.bucketInstanceId]===void 0&&(v[E.bucketInstanceId]=[]),v[E.bucketInstanceId].push(E.featureIndex))}return v}insertCollisionBox(t,n,a,h,p,m){(a?this.ignoredGrid:this.grid).insert({bucketInstanceId:h,featureIndex:p,collisionGroupID:m,overlapMode:n},t[0],t[1],t[2],t[3])}insertCollisionCircles(t,n,a,h,p,m){const _=a?this.ignoredGrid:this.grid,y={bucketInstanceId:h,featureIndex:p,collisionGroupID:m,overlapMode:n};for(let v=0;v<t.length;v+=4)_.insertCircle(y,t[v],t[v+1],t[v+2])}projectAndGetPerspectiveRatio(t,n,a,h){let p;return h?(p=[n,a,h(n,a),1],c.transformMat4(p,p,t)):(p=[n,a,0,1],ii(p,p,t)),{point:new c.pointGeometry((p[0]/p[3]+1)/2*this.transform.width+Bt,(-p[1]/p[3]+1)/2*this.transform.height+Bt),perspectiveRatio:.5+this.transform.cameraToCenterDistance/p[3]*.5}}isOffscreen(t,n,a,h){return a<Bt||t>=this.screenRightBoundary||h<Bt||n>this.screenBottomBoundary}isInsideGrid(t,n,a,h){return a>=0&&t<this.gridRightBoundary&&h>=0&&n<this.gridBottomBoundary}getViewportMatrix(){const t=c.identity([]);return c.translate(t,t,[-100,-100,0]),t}}function st(o,t,n){return t*(c.EXTENT/(o.tileSize*Math.pow(2,n-o.tileID.overscaledZ)))}class mn{constructor(t,n,a,h){this.opacity=t?Math.max(0,Math.min(1,t.opacity+(t.placed?n:-n))):h&&a?1:0,this.placed=a}isHidden(){return this.opacity===0&&!this.placed}}class ee{constructor(t,n,a,h,p){this.text=new mn(t?t.text:null,n,a,p),this.icon=new mn(t?t.icon:null,n,h,p)}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class se{constructor(t,n,a){this.text=t,this.icon=n,this.skipFade=a}}class ce{constructor(){this.invProjMatrix=c.create(),this.viewportMatrix=c.create(),this.circles=[]}}class fe{constructor(t,n,a,h,p){this.bucketInstanceId=t,this.featureIndex=n,this.sourceLayerIndex=a,this.bucketIndex=h,this.tileID=p}}class ge{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 n=++this.maxGroupID;this.collisionGroups[t]={ID:n,predicate:a=>a.collisionGroupID===n}}return this.collisionGroups[t]}}function be(o,t,n,a,h){const{horizontalAlign:p,verticalAlign:m}=c.getAnchorAlignment(o),_=-(p-.5)*t,y=-(m-.5)*n,v=c.evaluateVariableOffset(o,a);return new c.pointGeometry(_+v[0]*h,y+v[1]*h)}function Te(o,t,n,a,h,p){const{x1:m,x2:_,y1:y,y2:v,anchorPointX:S,anchorPointY:E}=o,C=new c.pointGeometry(t,n);return a&&C._rotate(h?p:-p),{x1:m+C.x,y1:y+C.y,x2:_+C.x,y2:v+C.y,anchorPointX:S,anchorPointY:E}}class _e{constructor(t,n,a,h,p){this.transform=t.clone(),this.terrain=n,this.collisionIndex=new At(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=a,this.retainedQueryData={},this.collisionGroups=new ge(h),this.collisionCircleArrays={},this.prevPlacement=p,p&&(p.prevPlacement=void 0),this.placedOrientations={}}getBucketParts(t,n,a,h){const p=a.getBucket(n),m=a.latestFeatureIndex;if(!p||!m||n.id!==p.layerIds[0])return;const _=a.collisionBoxArray,y=p.layers[0].layout,v=Math.pow(2,this.transform.zoom-a.tileID.overscaledZ),S=a.tileSize/c.EXTENT,E=this.transform.calculatePosMatrix(a.tileID.toUnwrapped()),C=y.get("text-pitch-alignment")==="map",D=y.get("text-rotation-alignment")==="map",B=st(a,1,this.transform.zoom),L=Ee(E,C,D,this.transform,B);let N=null;if(C){const q=Pe(E,C,D,this.transform,B);N=c.multiply([],this.transform.labelPlaneMatrix,q)}this.retainedQueryData[p.bucketInstanceId]=new fe(p.bucketInstanceId,m,p.sourceLayerIndex,p.index,a.tileID);const X={bucket:p,layout:y,posMatrix:E,textLabelPlaneMatrix:L,labelToScreenMatrix:N,scale:v,textPixelRatio:S,holdingForFade:a.holdingForFade(),collisionBoxArray:_,partiallyEvaluatedTextSize:c.evaluateSizeForZoom(p.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(p.sourceID)};if(h)for(const q of p.sortKeyRanges){const{sortKey:U,symbolInstanceStart:W,symbolInstanceEnd:te}=q;t.push({sortKey:U,symbolInstanceStart:W,symbolInstanceEnd:te,parameters:X})}else t.push({symbolInstanceStart:0,symbolInstanceEnd:p.symbolInstances.length,parameters:X})}attemptAnchorPlacement(t,n,a,h,p,m,_,y,v,S,E,C,D,B,L,N){const X=[C.textOffset0,C.textOffset1],q=be(t,a,h,X,p),U=this.collisionIndex.placeCollisionBox(Te(n,q.x,q.y,m,_,this.transform.angle),E,y,v,S.predicate,N);if((!L||this.collisionIndex.placeCollisionBox(Te(L,q.x,q.y,m,_,this.transform.angle),E,y,v,S.predicate,N).box.length!==0)&&U.box.length>0){let W;if(this.prevPlacement&&this.prevPlacement.variableOffsets[C.crossTileID]&&this.prevPlacement.placements[C.crossTileID]&&this.prevPlacement.placements[C.crossTileID].text&&(W=this.prevPlacement.variableOffsets[C.crossTileID].anchor),C.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[C.crossTileID]={textOffset:X,width:a,height:h,anchor:t,textBoxScale:p,prevAnchor:W},this.markUsedJustification(D,t,C,B),D.allowVerticalPlacement&&(this.markUsedOrientation(D,B,C),this.placedOrientations[C.crossTileID]=B),{shift:q,placedGlyphBoxes:U}}}placeLayerBucketPart(t,n,a){const{bucket:h,layout:p,posMatrix:m,textLabelPlaneMatrix:_,labelToScreenMatrix:y,textPixelRatio:v,holdingForFade:S,collisionBoxArray:E,partiallyEvaluatedTextSize:C,collisionGroup:D}=t.parameters,B=p.get("text-optional"),L=p.get("icon-optional"),N=c.getOverlapMode(p,"text-overlap","text-allow-overlap"),X=N==="always",q=c.getOverlapMode(p,"icon-overlap","icon-allow-overlap"),U=q==="always",W=p.get("text-rotation-alignment")==="map",te=p.get("text-pitch-alignment")==="map",ae=p.get("icon-text-fit")!=="none",he=p.get("symbol-z-order")==="viewport-y",de=X&&(U||!h.hasIconData()||L),we=U&&(X||!h.hasTextData()||B);!h.collisionArrays&&E&&h.deserializeCollisionBoxes(E);const ye=(Ae,Ge)=>{if(n[Ae.crossTileID])return;if(S)return void(this.placements[Ae.crossTileID]=new se(!1,!1,!1));let rt=!1,nt=!1,We=!0,Mt=null,Tt={box:null,offscreen:null},mt={box:null,offscreen:null},yt=null,bt=null,Ei=null,yr=0,hr=0,Nt=0;Ge.textFeatureIndex?yr=Ge.textFeatureIndex:Ae.useRuntimeCollisionCircles&&(yr=Ae.featureIndex),Ge.verticalTextFeatureIndex&&(hr=Ge.verticalTextFeatureIndex);const $r=this.retainedQueryData[h.bucketInstanceId].tileID,Ii=this.terrain?(Qt,$t)=>this.terrain.getElevation($r,Qt,$t):null;for(const Qt of["textBox","verticalTextBox","iconBox","verticalIconBox"]){const $t=Ge[Qt];$t&&($t.elevation=Ii?Ii($t.anchorPointX,$t.anchorPointY):0)}const Ai=Ge.textBox;if(Ai){const Qt=Et=>{let ci=c.WritingMode.horizontal;if(h.allowVerticalPlacement&&!Et&&this.prevPlacement){const Li=this.prevPlacement.placedOrientations[Ae.crossTileID];Li&&(this.placedOrientations[Ae.crossTileID]=Li,ci=Li,this.markUsedOrientation(h,ci,Ae))}return ci},$t=(Et,ci)=>{if(h.allowVerticalPlacement&&Ae.numVerticalGlyphVertices>0&&Ge.verticalTextBox){for(const Li of h.writingModes)if(Li===c.WritingMode.vertical?(Tt=ci(),mt=Tt):Tt=Et(),Tt&&Tt.box&&Tt.box.length)break}else Tt=Et()};if(p.get("text-variable-anchor")){let Et=p.get("text-variable-anchor");if(this.prevPlacement&&this.prevPlacement.variableOffsets[Ae.crossTileID]){const jt=this.prevPlacement.variableOffsets[Ae.crossTileID];Et.indexOf(jt.anchor)>0&&(Et=Et.filter(tr=>tr!==jt.anchor),Et.unshift(jt.anchor))}const ci=(jt,tr,ir)=>{const zn=jt.x2-jt.x1,Ys=jt.y2-jt.y1,ml=Ae.textBoxScale,pc=ae&&q==="never"?tr:null;let en={box:[],offscreen:!1};const fs=N!=="never"?2*Et.length:Et.length;for(let Ir=0;Ir<fs;++Ir){const ur=this.attemptAnchorPlacement(Et[Ir%Et.length],jt,zn,Ys,ml,W,te,v,m,D,Ir>=Et.length?N:"never",Ae,h,ir,pc,Ii);if(ur&&(en=ur.placedGlyphBoxes,en&&en.box&&en.box.length)){rt=!0,Mt=ur.shift;break}}return en};$t(()=>ci(Ai,Ge.iconBox,c.WritingMode.horizontal),()=>{const jt=Ge.verticalTextBox;return h.allowVerticalPlacement&&!(Tt&&Tt.box&&Tt.box.length)&&Ae.numVerticalGlyphVertices>0&&jt?ci(jt,Ge.verticalIconBox,c.WritingMode.vertical):{box:null,offscreen:null}}),Tt&&(rt=Tt.box,We=Tt.offscreen);const Li=Qt(Tt&&Tt.box);if(!rt&&this.prevPlacement){const jt=this.prevPlacement.variableOffsets[Ae.crossTileID];jt&&(this.variableOffsets[Ae.crossTileID]=jt,this.markUsedJustification(h,jt.anchor,Ae,Li))}}else{const Et=(ci,Li)=>{const jt=this.collisionIndex.placeCollisionBox(ci,N,v,m,D.predicate,Ii);return jt&&jt.box&&jt.box.length&&(this.markUsedOrientation(h,Li,Ae),this.placedOrientations[Ae.crossTileID]=Li),jt};$t(()=>Et(Ai,c.WritingMode.horizontal),()=>{const ci=Ge.verticalTextBox;return h.allowVerticalPlacement&&Ae.numVerticalGlyphVertices>0&&ci?Et(ci,c.WritingMode.vertical):{box:null,offscreen:null}}),Qt(Tt&&Tt.box&&Tt.box.length)}}if(yt=Tt,rt=yt&&yt.box&&yt.box.length>0,We=yt&&yt.offscreen,Ae.useRuntimeCollisionCircles){const Qt=h.text.placedSymbolArray.get(Ae.centerJustifiedTextSymbolIndex),$t=c.evaluateSizeForFeature(h.textSizeData,C,Qt),Et=p.get("text-padding");bt=this.collisionIndex.placeCollisionCircles(N,Qt,h.lineVertexArray,h.glyphOffsetArray,$t,m,_,y,a,te,D.predicate,Ae.collisionCircleDiameter,Et,Ii),bt.circles.length&&bt.collisionDetected&&!a&&c.warnOnce("Collisions detected, but collision boxes are not shown"),rt=X||bt.circles.length>0&&!bt.collisionDetected,We=We&&bt.offscreen}if(Ge.iconFeatureIndex&&(Nt=Ge.iconFeatureIndex),Ge.iconBox){const Qt=$t=>{const Et=ae&&Mt?Te($t,Mt.x,Mt.y,W,te,this.transform.angle):$t;return this.collisionIndex.placeCollisionBox(Et,q,v,m,D.predicate,Ii)};mt&&mt.box&&mt.box.length&&Ge.verticalIconBox?(Ei=Qt(Ge.verticalIconBox),nt=Ei.box.length>0):(Ei=Qt(Ge.iconBox),nt=Ei.box.length>0),We=We&&Ei.offscreen}const Qr=B||Ae.numHorizontalGlyphVertices===0&&Ae.numVerticalGlyphVertices===0,kn=L||Ae.numIconVertices===0;if(Qr||kn?kn?Qr||(nt=nt&&rt):rt=nt&&rt:nt=rt=nt&&rt,rt&&yt&&yt.box&&this.collisionIndex.insertCollisionBox(yt.box,N,p.get("text-ignore-placement"),h.bucketInstanceId,mt&&mt.box&&hr?hr:yr,D.ID),nt&&Ei&&this.collisionIndex.insertCollisionBox(Ei.box,q,p.get("icon-ignore-placement"),h.bucketInstanceId,Nt,D.ID),bt&&(rt&&this.collisionIndex.insertCollisionCircles(bt.circles,N,p.get("text-ignore-placement"),h.bucketInstanceId,yr,D.ID),a)){const Qt=h.bucketInstanceId;let $t=this.collisionCircleArrays[Qt];$t===void 0&&($t=this.collisionCircleArrays[Qt]=new ce);for(let Et=0;Et<bt.circles.length;Et+=4)$t.circles.push(bt.circles[Et+0]),$t.circles.push(bt.circles[Et+1]),$t.circles.push(bt.circles[Et+2]),$t.circles.push(bt.collisionDetected?1:0)}if(Ae.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");if(h.bucketInstanceId===0)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[Ae.crossTileID]=new se(rt||de,nt||we,We||h.justReloaded),n[Ae.crossTileID]=!0};if(he){if(t.symbolInstanceStart!==0)throw new Error("bucket.bucketInstanceId should be 0");const Ae=h.getSortedSymbolIndexes(this.transform.angle);for(let Ge=Ae.length-1;Ge>=0;--Ge){const rt=Ae[Ge];ye(h.symbolInstances.get(rt),h.collisionArrays[rt])}}else for(let Ae=t.symbolInstanceStart;Ae<t.symbolInstanceEnd;Ae++)ye(h.symbolInstances.get(Ae),h.collisionArrays[Ae]);if(a&&h.bucketInstanceId in this.collisionCircleArrays){const Ae=this.collisionCircleArrays[h.bucketInstanceId];c.invert(Ae.invProjMatrix,m),Ae.viewportMatrix=this.collisionIndex.getViewportMatrix()}h.justReloaded=!1}markUsedJustification(t,n,a,h){let p;p=h===c.WritingMode.vertical?a.verticalPlacedTextSymbolIndex:{left:a.leftJustifiedTextSymbolIndex,center:a.centerJustifiedTextSymbolIndex,right:a.rightJustifiedTextSymbolIndex}[c.getAnchorJustification(n)];const m=[a.leftJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.rightJustifiedTextSymbolIndex,a.verticalPlacedTextSymbolIndex];for(const _ of m)_>=0&&(t.text.placedSymbolArray.get(_).crossTileID=p>=0&&_!==p?0:a.crossTileID)}markUsedOrientation(t,n,a){const h=n===c.WritingMode.horizontal||n===c.WritingMode.horizontalOnly?n:0,p=n===c.WritingMode.vertical?n:0,m=[a.leftJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.rightJustifiedTextSymbolIndex];for(const _ of m)t.text.placedSymbolArray.get(_).placedOrientation=h;a.verticalPlacedTextSymbolIndex&&(t.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).placedOrientation=p)}commit(t){this.commitTime=t,this.zoomAtLastRecencyCheck=this.transform.zoom;const n=this.prevPlacement;let a=!1;this.prevZoomAdjustment=n?n.zoomAdjustment(this.transform.zoom):0;const h=n?n.symbolFadeChange(t):1,p=n?n.opacities:{},m=n?n.variableOffsets:{},_=n?n.placedOrientations:{};for(const y in this.placements){const v=this.placements[y],S=p[y];S?(this.opacities[y]=new ee(S,h,v.text,v.icon),a=a||v.text!==S.text.placed||v.icon!==S.icon.placed):(this.opacities[y]=new ee(null,h,v.text,v.icon,v.skipFade),a=a||v.text||v.icon)}for(const y in p){const v=p[y];if(!this.opacities[y]){const S=new ee(v,h,!1,!1);S.isHidden()||(this.opacities[y]=S,a=a||v.text.placed||v.icon.placed)}}for(const y in m)this.variableOffsets[y]||!this.opacities[y]||this.opacities[y].isHidden()||(this.variableOffsets[y]=m[y]);for(const y in _)this.placedOrientations[y]||!this.opacities[y]||this.opacities[y].isHidden()||(this.placedOrientations[y]=_[y]);if(n&&n.lastPlacementChangeTime===void 0)throw new Error("Last placement time for previous placement is not defined");a?this.lastPlacementChangeTime=t:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=n?n.lastPlacementChangeTime:t)}updateLayerOpacities(t,n){const a={};for(const h of n){const p=h.getBucket(t);p&&h.latestFeatureIndex&&t.id===p.layerIds[0]&&this.updateBucketOpacities(p,a,h.collisionBoxArray)}}updateBucketOpacities(t,n,a){t.hasTextData()&&(t.text.opacityVertexArray.clear(),t.text.hasVisibleVertices=!1),t.hasIconData()&&(t.icon.opacityVertexArray.clear(),t.icon.hasVisibleVertices=!1),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexArray.clear(),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexArray.clear();const h=t.layers[0].layout,p=new ee(null,0,!1,!1,!0),m=h.get("text-allow-overlap"),_=h.get("icon-allow-overlap"),y=h.get("text-variable-anchor"),v=h.get("text-rotation-alignment")==="map",S=h.get("text-pitch-alignment")==="map",E=h.get("icon-text-fit")!=="none",C=new ee(null,0,m&&(_||!t.hasIconData()||h.get("icon-optional")),_&&(m||!t.hasTextData()||h.get("text-optional")),!0);!t.collisionArrays&&a&&(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData())&&t.deserializeCollisionBoxes(a);const D=(B,L,N)=>{for(let X=0;X<L/4;X++)B.opacityVertexArray.emplaceBack(N);B.hasVisibleVertices=B.hasVisibleVertices||N!==ut};for(let B=0;B<t.symbolInstances.length;B++){const L=t.symbolInstances.get(B),{numHorizontalGlyphVertices:N,numVerticalGlyphVertices:X,crossTileID:q}=L;let U=this.opacities[q];n[q]?U=p:U||(U=C,this.opacities[q]=U),n[q]=!0;const W=L.numIconVertices>0,te=this.placedOrientations[L.crossTileID],ae=te===c.WritingMode.vertical,he=te===c.WritingMode.horizontal||te===c.WritingMode.horizontalOnly;if(N>0||X>0){const de=Ot(U.text);D(t.text,N,ae?ut:de),D(t.text,X,he?ut:de);const we=U.text.isHidden();[L.rightJustifiedTextSymbolIndex,L.centerJustifiedTextSymbolIndex,L.leftJustifiedTextSymbolIndex].forEach(Ge=>{Ge>=0&&(t.text.placedSymbolArray.get(Ge).hidden=we||ae?1:0)}),L.verticalPlacedTextSymbolIndex>=0&&(t.text.placedSymbolArray.get(L.verticalPlacedTextSymbolIndex).hidden=we||he?1:0);const ye=this.variableOffsets[L.crossTileID];ye&&this.markUsedJustification(t,ye.anchor,L,te);const Ae=this.placedOrientations[L.crossTileID];Ae&&(this.markUsedJustification(t,"left",L,Ae),this.markUsedOrientation(t,Ae,L))}if(W){const de=Ot(U.icon),we=!(E&&L.verticalPlacedIconSymbolIndex&&ae);L.placedIconSymbolIndex>=0&&(D(t.icon,L.numIconVertices,we?de:ut),t.icon.placedSymbolArray.get(L.placedIconSymbolIndex).hidden=U.icon.isHidden()),L.verticalPlacedIconSymbolIndex>=0&&(D(t.icon,L.numVerticalIconVertices,we?ut:de),t.icon.placedSymbolArray.get(L.verticalPlacedIconSymbolIndex).hidden=U.icon.isHidden())}if(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData()){const de=t.collisionArrays[B];if(de){let we=new c.pointGeometry(0,0);if(de.textBox||de.verticalTextBox){let Ae=!0;if(y){const Ge=this.variableOffsets[q];Ge?(we=be(Ge.anchor,Ge.width,Ge.height,Ge.textOffset,Ge.textBoxScale),v&&we._rotate(S?this.transform.angle:-this.transform.angle)):Ae=!1}de.textBox&&ke(t.textCollisionBox.collisionVertexArray,U.text.placed,!Ae||ae,we.x,we.y),de.verticalTextBox&&ke(t.textCollisionBox.collisionVertexArray,U.text.placed,!Ae||he,we.x,we.y)}const ye=Boolean(!he&&de.verticalIconBox);de.iconBox&&ke(t.iconCollisionBox.collisionVertexArray,U.icon.placed,ye,E?we.x:0,E?we.y:0),de.verticalIconBox&&ke(t.iconCollisionBox.collisionVertexArray,U.icon.placed,!ye,E?we.x:0,E?we.y:0)}}}if(t.sortFeatures(this.transform.angle),this.retainedQueryData[t.bucketInstanceId]&&(this.retainedQueryData[t.bucketInstanceId].featureSortOrder=t.featureSortOrder),t.hasTextData()&&t.text.opacityVertexBuffer&&t.text.opacityVertexBuffer.updateData(t.text.opacityVertexArray),t.hasIconData()&&t.icon.opacityVertexBuffer&&t.icon.opacityVertexBuffer.updateData(t.icon.opacityVertexArray),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexBuffer&&t.iconCollisionBox.collisionVertexBuffer.updateData(t.iconCollisionBox.collisionVertexArray),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexBuffer&&t.textCollisionBox.collisionVertexBuffer.updateData(t.textCollisionBox.collisionVertexArray),t.text.opacityVertexArray.length!==t.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${t.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${t.text.layoutVertexArray.length}) / 4`);if(t.icon.opacityVertexArray.length!==t.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${t.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${t.icon.layoutVertexArray.length}) / 4`);if(t.bucketInstanceId in this.collisionCircleArrays){const B=this.collisionCircleArrays[t.bucketInstanceId];t.placementInvProjMatrix=B.invProjMatrix,t.placementViewportMatrix=B.viewportMatrix,t.collisionCircleArray=B.circles,delete this.collisionCircleArrays[t.bucketInstanceId]}}symbolFadeChange(t){return this.fadeDuration===0?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,n){const a=this.zoomAtLastRecencyCheck===n?1-this.zoomAdjustment(n):1;return this.zoomAtLastRecencyCheck=n,this.commitTime+this.fadeDuration*a>t}setStale(){this.stale=!0}}function ke(o,t,n,a,h){o.emplaceBack(t?1:0,n?1:0,a||0,h||0),o.emplaceBack(t?1:0,n?1:0,a||0,h||0),o.emplaceBack(t?1:0,n?1:0,a||0,h||0),o.emplaceBack(t?1:0,n?1:0,a||0,h||0)}const le=Math.pow(2,25),Qe=Math.pow(2,24),pt=Math.pow(2,17),De=Math.pow(2,16),ot=Math.pow(2,9),_t=Math.pow(2,8),Ft=Math.pow(2,1);function Ot(o){if(o.opacity===0&&!o.placed)return 0;if(o.opacity===1&&o.placed)return 4294967295;const t=o.placed?1:0,n=Math.floor(127*o.opacity);return n*le+t*Qe+n*pt+t*De+n*ot+t*_t+n*Ft+t}const ut=0;class mi{constructor(t){this._sortAcrossTiles=t.layout.get("symbol-z-order")!=="viewport-y"&&!t.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(t,n,a,h,p){const m=this._bucketParts;for(;this._currentTileIndex<t.length;)if(n.getBucketParts(m,h,t[this._currentTileIndex],this._sortAcrossTiles),this._currentTileIndex++,p())return!0;for(this._sortAcrossTiles&&(this._sortAcrossTiles=!1,m.sort((_,y)=>_.sortKey-y.sortKey));this._currentPartIndex<m.length;)if(n.placeLayerBucketPart(m[this._currentPartIndex],this._seenCrossTileIDs,a),this._currentPartIndex++,p())return!0;return!1}}class li{constructor(t,n,a,h,p,m,_,y){this.placement=new _e(t,n,m,_,y),this._currentPlacementIndex=a.length-1,this._forceFullPlacement=h,this._showCollisionBoxes=p,this._done=!1}isDone(){return this._done}continuePlacement(t,n,a){const h=c.exported.now(),p=()=>{const m=c.exported.now()-h;return!this._forceFullPlacement&&m>2};for(;this._currentPlacementIndex>=0;){const m=n[t[this._currentPlacementIndex]],_=this.placement.collisionIndex.transform.zoom;if(m.type==="symbol"&&(!m.minzoom||m.minzoom<=_)&&(!m.maxzoom||m.maxzoom>_)){if(this._inProgressLayer||(this._inProgressLayer=new mi(m)),this._inProgressLayer.continuePlacement(a[m.source],this.placement,this._showCollisionBoxes,m,p))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(t){return this.placement.commit(t),this.placement}}const wt=512/c.EXTENT/2;class si{constructor(t,n,a){this.tileID=t,this.bucketInstanceId=a,this._symbolsByKey={};const h=new Map;for(let p=0;p<n.length;p++){const m=n.get(p),_=m.key,y=h.get(_);y?y.push(m):h.set(_,[m])}for(const[p,m]of h){const _={positions:m.map(y=>({x:Math.floor(y.anchorX*wt),y:Math.floor(y.anchorY*wt)})),crossTileIDs:m.map(y=>y.crossTileID)};if(_.positions.length>128){const y=new c.KDBush(_.positions,v=>v.x,v=>v.y,16,Uint16Array);delete y.points,delete _.positions,_.index=y}this._symbolsByKey[p]=_}}getScaledCoordinates(t,n){const{x:a,y:h,z:p}=this.tileID.canonical,{x:m,y:_,z:y}=n.canonical,v=wt/Math.pow(2,y-p),S=(_*c.EXTENT+t.anchorY)*v,E=h*c.EXTENT*wt;return{x:Math.floor((m*c.EXTENT+t.anchorX)*v-a*c.EXTENT*wt),y:Math.floor(S-E)}}findMatches(t,n,a){const h=this.tileID.canonical.z<n.canonical.z?1:Math.pow(2,this.tileID.canonical.z-n.canonical.z);for(let p=0;p<t.length;p++){const m=t.get(p);if(m.crossTileID)continue;const _=this._symbolsByKey[m.key];if(!_)continue;const y=this.getScaledCoordinates(m,n);if(_.index){const v=_.index.range(y.x-h,y.y-h,y.x+h,y.y+h).sort();for(const S of v){const E=_.crossTileIDs[S];if(!a[E]){a[E]=!0,m.crossTileID=E;break}}}else if(_.positions)for(let v=0;v<_.positions.length;v++){const S=_.positions[v],E=_.crossTileIDs[v];if(Math.abs(S.x-y.x)<=h&&Math.abs(S.y-y.y)<=h&&!a[E]){a[E]=!0,m.crossTileID=E;break}}}}getCrossTileIDsLists(){return Object.values(this._symbolsByKey).map(({crossTileIDs:t})=>t)}}class wi{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class fn{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(t){const n=Math.round((t-this.lng)/360);if(n!==0)for(const a in this.indexes){const h=this.indexes[a],p={};for(const m in h){const _=h[m];_.tileID=_.tileID.unwrapTo(_.tileID.wrap+n),p[_.tileID.key]=_}this.indexes[a]=p}this.lng=t}addBucket(t,n,a){if(this.indexes[t.overscaledZ]&&this.indexes[t.overscaledZ][t.key]){if(this.indexes[t.overscaledZ][t.key].bucketInstanceId===n.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(t.overscaledZ,this.indexes[t.overscaledZ][t.key])}for(let p=0;p<n.symbolInstances.length;p++)n.symbolInstances.get(p).crossTileID=0;this.usedCrossTileIDs[t.overscaledZ]||(this.usedCrossTileIDs[t.overscaledZ]={});const h=this.usedCrossTileIDs[t.overscaledZ];for(const p in this.indexes){const m=this.indexes[p];if(Number(p)>t.overscaledZ)for(const _ in m){const y=m[_];y.tileID.isChildOf(t)&&y.findMatches(n.symbolInstances,t,h)}else{const _=m[t.scaledTo(Number(p)).key];_&&_.findMatches(n.symbolInstances,t,h)}}for(let p=0;p<n.symbolInstances.length;p++){const m=n.symbolInstances.get(p);m.crossTileID||(m.crossTileID=a.generate(),h[m.crossTileID]=!0)}return this.indexes[t.overscaledZ]===void 0&&(this.indexes[t.overscaledZ]={}),this.indexes[t.overscaledZ][t.key]=new si(t,n.symbolInstances,n.bucketInstanceId),!0}removeBucketCrossTileIDs(t,n){for(const a of n.getCrossTileIDsLists())for(const h of a)delete this.usedCrossTileIDs[t][h]}removeStaleBuckets(t){let n=!1;for(const a in this.indexes){const h=this.indexes[a];for(const p in h)t[h[p].bucketInstanceId]||(this.removeBucketCrossTileIDs(a,h[p]),delete h[p],n=!0)}return n}}class Ui{constructor(){this.layerIndexes={},this.crossTileIDs=new wi,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={}}addLayer(t,n,a){let h=this.layerIndexes[t.id];h===void 0&&(h=this.layerIndexes[t.id]=new fn);let p=!1;const m={};h.handleWrapJump(a);for(const _ of n){const y=_.getBucket(t);y&&t.id===y.layerIds[0]&&(y.bucketInstanceId||(y.bucketInstanceId=++this.maxBucketInstanceId),h.addBucket(_.tileID,y,this.crossTileIDs)&&(p=!0),m[y.bucketInstanceId]=!0)}return h.removeStaleBuckets(m)&&(p=!0),p}pruneUnusedLayers(t){const n={};t.forEach(a=>{n[a]=!0});for(const a in this.layerIndexes)n[a]||delete this.layerIndexes[a]}}const Cs=(o,t)=>c.emitValidationErrors(o,t&&t.filter(n=>n.identifier!=="source.canvas")),Mo=c.pick(ft,["addLayer","removeLayer","setPaintProperty","setLayoutProperty","setFilter","addSource","removeSource","setLayerZoomRange","setLight","setTransition","setGeoJSONSourceData","setGlyphs","setSprite"]),Qi=c.pick(ft,["setCenter","setZoom","setBearing","setPitch"]),Ms=function(){const o={},t=c.spec.$version;for(const n in c.spec.$root){const a=c.spec.$root[n];if(a.required){let h=null;h=n==="version"?t:a.type==="array"?[]:{},h!=null&&(o[n]=h)}}return o}();class ui extends c.Evented{constructor(t,n={}){super(),this.map=t,this.dispatcher=new Br(Xr(),this),this.imageManager=new Ji,this.imageManager.setEventedParent(this),this.glyphManager=new Dr(t._requestManager,n.localIdeographFontFamily),this.lineAtlas=new Rr(256,512),this.crossTileSymbolIndex=new Ui,this._spritesImagesIds={},this._layers={},this._serializedLayers={},this._order=[],this.sourceCaches={},this.zoomHistory=new c.ZoomHistory,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast("setReferrer",c.getReferrer());const a=this;this._rtlTextPluginCallback=ui.registerForPluginStateChange(h=>{a.dispatcher.broadcast("syncRTLPluginState",{pluginStatus:h.pluginStatus,pluginURL:h.pluginURL},(p,m)=>{if(c.triggerPluginCompletionEvent(p),m&&m.every(_=>_))for(const _ in a.sourceCaches)a.sourceCaches[_].reload()})}),this.on("data",h=>{if(h.dataType!=="source"||h.sourceDataType!=="metadata")return;const p=this.sourceCaches[h.sourceId];if(!p)return;const m=p.getSource();if(m&&m.vectorLayerIds)for(const _ in this._layers){const y=this._layers[_];y.source===m.id&&this._validateLayer(y)}})}loadURL(t,n={},a){this.fire(new c.Event("dataloading",{dataType:"style"})),n.validate=typeof n.validate!="boolean"||n.validate;const h=this.map._requestManager.transformRequest(t,c.ResourceType.Style);this._request=c.getJSON(h,(p,m)=>{this._request=null,p?this.fire(new c.ErrorEvent(p)):m&&this._load(m,n,a)})}loadJSON(t,n={},a){this.fire(new c.Event("dataloading",{dataType:"style"})),this._request=c.exported.frame(()=>{this._request=null,n.validate=n.validate!==!1,this._load(t,n,a)})}loadEmpty(){this.fire(new c.Event("dataloading",{dataType:"style"})),this._load(Ms,{validate:!1})}_load(t,n,a){const h=n.transformStyle?n.transformStyle(a,t):t;if(n.validate&&Cs(this,c.validateStyle(h)))return;this._loaded=!0,this.stylesheet=h;for(const m in h.sources)this.addSource(m,h.sources[m],{validate:!1});h.sprite?this._loadSprite(h.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(h.glyphs);const p=Wr(this.stylesheet.layers);this._order=p.map(m=>m.id),this._layers={},this._serializedLayers={};for(let m of p)m=c.createStyleLayer(m),m.setEventedParent(this,{layer:{id:m.id}}),this._layers[m.id]=m,this._serializedLayers[m.id]=m.serialize();this.dispatcher.broadcast("setLayers",this._serializeLayers(this._order)),this.light=new on(this.stylesheet.light),this.map.setTerrain(this.stylesheet.terrain),this.fire(new c.Event("data",{dataType:"style"})),this.fire(new c.Event("style.load"))}_loadSprite(t,n=!1,a){this.imageManager.setLoaded(!1),this._spriteRequest=function(h,p,m,_){const y=Jt(h),v=m>1?"@2x":"";let S;const E=[],C=[],D={},B={};for(const{id:N,url:X}of y){const q=E.push(c.getJSON(p.transformRequest(p.normalizeSpriteURL(X,v,".json"),c.ResourceType.SpriteJSON),(W,te)=>{E.splice(q,1),S||(S=W,D[N]=te,L())})),U=C.push(c.getImage(p.transformRequest(p.normalizeSpriteURL(X,v,".png"),c.ResourceType.SpriteImage),(W,te)=>{C.splice(U,1),S||(S=W,B[N]=te,L())}))}function L(){const N=Object.values(D).length,X=Object.values(B).length;if(S)_(S);else if(y.length===N&&N===X){const q={};for(const U in D){q[U]={};const W=c.exported.getImageData(B[U]),te=D[U];for(const ae in te){const{width:he,height:de,x:we,y:ye,sdf:Ae,pixelRatio:Ge,stretchX:rt,stretchY:nt,content:We}=te[ae],Mt=new c.RGBAImage({width:he,height:de});c.RGBAImage.copy(W,Mt,{x:we,y:ye},{x:0,y:0},{width:he,height:de}),q[U][ae]={data:Mt,pixelRatio:Ge,sdf:Ae,stretchX:rt,stretchY:nt,content:We}}}_(null,q)}}return{cancel(){if(E.length)for(const N of E)N.cancel(),E.splice(E.indexOf(N),1);if(C.length)for(const N of C)N.cancel(),C.splice(C.indexOf(N),1)}}}(t,this.map._requestManager,this.map.getPixelRatio(),(h,p)=>{if(this._spriteRequest=null,h)this.fire(new c.ErrorEvent(h));else if(p)for(const m in p){this._spritesImagesIds[m]=[];const _=this._spritesImagesIds[m]?this._spritesImagesIds[m].filter(y=>!(y in p)):[];for(const y of _)this.imageManager.removeImage(y),this._changedImages[y]=!0;for(const y in p[m]){const v=m==="default"?y:`${m}:${y}`;this._spritesImagesIds[m].push(v),v in this.imageManager.images?this.imageManager.updateImage(v,p[m][y],!1):this.imageManager.addImage(v,p[m][y]),n&&(this._changedImages[v]=!0)}}this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),n&&(this._changed=!0),this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new c.Event("data",{dataType:"style"})),a&&a(h)})}_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 c.Event("data",{dataType:"style"}))}_validateLayer(t){const n=this.sourceCaches[t.source];if(!n)return;const a=t.sourceLayer;if(!a)return;const h=n.getSource();(h.type==="geojson"||h.vectorLayerIds&&h.vectorLayerIds.indexOf(a)===-1)&&this.fire(new c.ErrorEvent(new Error(`Source layer "${a}" does not exist on source "${h.id}" as specified by style layer "${t.id}".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(const t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeLayers(t){const n=[];for(const a of t){const h=this._layers[a];h.type!=="custom"&&n.push(h.serialize())}return n}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(t){if(!this._loaded)return;const n=this._changed;if(this._changed){const h=Object.keys(this._updatedLayers),p=Object.keys(this._removedLayers);(h.length||p.length)&&this._updateWorkerLayers(h,p);for(const m in this._updatedSources){const _=this._updatedSources[m];if(_==="reload")this._reloadSource(m);else{if(_!=="clear")throw new Error(`Invalid action ${_}`);this._clearSource(m)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(const m in this._updatedPaintProps)this._layers[m].updateTransitions(t);this.light.updateTransitions(t),this._resetUpdates()}const a={};for(const h in this.sourceCaches){const p=this.sourceCaches[h];a[h]=p.used,p.used=!1}for(const h of this._order){const p=this._layers[h];p.recalculate(t,this._availableImages),!p.isHidden(t.zoom)&&p.source&&(this.sourceCaches[p.source].used=!0)}for(const h in a){const p=this.sourceCaches[h];a[h]!==p.used&&p.fire(new c.Event("data",{sourceDataType:"visibility",dataType:"source",sourceId:h}))}this.light.recalculate(t),this.z=t.zoom,n&&this.fire(new c.Event("data",{dataType:"style"}))}_updateTilesForChangedImages(){const t=Object.keys(this._changedImages);if(t.length){for(const n in this.sourceCaches)this.sourceCaches[n].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,n){this.dispatcher.broadcast("updateLayers",{layers:this._serializeLayers(t),removedIds:n})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(t,n={}){if(this._checkLoaded(),t=n.transformStyle?n.transformStyle(this.serialize(),t):t,Cs(this,c.validateStyle(t)))return!1;(t=c.clone$1(t)).layers=Wr(t.layers);const a=function(p,m){if(!p)return[{command:ft.setStyle,args:[m]}];let _=[];try{if(!Me(p.version,m.version))return[{command:ft.setStyle,args:[m]}];Me(p.center,m.center)||_.push({command:ft.setCenter,args:[m.center]}),Me(p.zoom,m.zoom)||_.push({command:ft.setZoom,args:[m.zoom]}),Me(p.bearing,m.bearing)||_.push({command:ft.setBearing,args:[m.bearing]}),Me(p.pitch,m.pitch)||_.push({command:ft.setPitch,args:[m.pitch]}),Me(p.sprite,m.sprite)||_.push({command:ft.setSprite,args:[m.sprite]}),Me(p.glyphs,m.glyphs)||_.push({command:ft.setGlyphs,args:[m.glyphs]}),Me(p.transition,m.transition)||_.push({command:ft.setTransition,args:[m.transition]}),Me(p.light,m.light)||_.push({command:ft.setLight,args:[m.light]});const y={},v=[];(function(E,C,D,B){let L;for(L in C=C||{},E=E||{})Object.prototype.hasOwnProperty.call(E,L)&&(Object.prototype.hasOwnProperty.call(C,L)||re(L,D,B));for(L in C)Object.prototype.hasOwnProperty.call(C,L)&&(Object.prototype.hasOwnProperty.call(E,L)?Me(E[L],C[L])||(E[L].type==="geojson"&&C[L].type==="geojson"&&R(E,C,L)?D.push({command:ft.setGeoJSONSourceData,args:[L,C[L].data]}):z(L,C,D,B)):dn(L,C,D))})(p.sources,m.sources,v,y);const S=[];p.layers&&p.layers.forEach(E=>{y[E.source]?_.push({command:ft.removeLayer,args:[E.id]}):S.push(E)}),_=_.concat(v),function(E,C,D){C=C||[];const B=(E=E||[]).map(Q),L=C.map(Q),N=E.reduce(V,{}),X=C.reduce(V,{}),q=B.slice(),U=Object.create(null);let W,te,ae,he,de,we,ye;for(W=0,te=0;W<B.length;W++)ae=B[W],Object.prototype.hasOwnProperty.call(X,ae)?te++:(D.push({command:ft.removeLayer,args:[ae]}),q.splice(q.indexOf(ae,te),1));for(W=0,te=0;W<L.length;W++)ae=L[L.length-1-W],q[q.length-1-W]!==ae&&(Object.prototype.hasOwnProperty.call(N,ae)?(D.push({command:ft.removeLayer,args:[ae]}),q.splice(q.lastIndexOf(ae,q.length-te),1)):te++,we=q[q.length-W],D.push({command:ft.addLayer,args:[X[ae],we]}),q.splice(q.length-W,0,ae),U[ae]=!0);for(W=0;W<L.length;W++)if(ae=L[W],he=N[ae],de=X[ae],!U[ae]&&!Me(he,de))if(Me(he.source,de.source)&&Me(he["source-layer"],de["source-layer"])&&Me(he.type,de.type)){for(ye in j(he.layout,de.layout,D,ae,null,ft.setLayoutProperty),j(he.paint,de.paint,D,ae,null,ft.setPaintProperty),Me(he.filter,de.filter)||D.push({command:ft.setFilter,args:[ae,de.filter]}),Me(he.minzoom,de.minzoom)&&Me(he.maxzoom,de.maxzoom)||D.push({command:ft.setLayerZoomRange,args:[ae,de.minzoom,de.maxzoom]}),he)Object.prototype.hasOwnProperty.call(he,ye)&&ye!=="layout"&&ye!=="paint"&&ye!=="filter"&&ye!=="metadata"&&ye!=="minzoom"&&ye!=="maxzoom"&&(ye.indexOf("paint.")===0?j(he[ye],de[ye],D,ae,ye.slice(6),ft.setPaintProperty):Me(he[ye],de[ye])||D.push({command:ft.setLayerProperty,args:[ae,ye,de[ye]]}));for(ye in de)Object.prototype.hasOwnProperty.call(de,ye)&&!Object.prototype.hasOwnProperty.call(he,ye)&&ye!=="layout"&&ye!=="paint"&&ye!=="filter"&&ye!=="metadata"&&ye!=="minzoom"&&ye!=="maxzoom"&&(ye.indexOf("paint.")===0?j(he[ye],de[ye],D,ae,ye.slice(6),ft.setPaintProperty):Me(he[ye],de[ye])||D.push({command:ft.setLayerProperty,args:[ae,ye,de[ye]]}))}else D.push({command:ft.removeLayer,args:[ae]}),we=q[q.lastIndexOf(ae)+1],D.push({command:ft.addLayer,args:[de,we]})}(S,m.layers,_)}catch(y){console.warn("Unable to compute style diff:",y),_=[{command:ft.setStyle,args:[m]}]}return _}(this.serialize(),t).filter(p=>!(p.command in Qi));if(a.length===0)return!1;const h=a.filter(p=>!(p.command in Mo));if(h.length>0)throw new Error(`Unimplemented: ${h.map(p=>p.command).join(", ")}.`);return a.forEach(p=>{p.command!=="setTransition"&&this[p.command].apply(this,p.args)}),this.stylesheet=t,!0}addImage(t,n){if(this.getImage(t))return this.fire(new c.ErrorEvent(new Error(`An image named "${t}" already exists.`)));this.imageManager.addImage(t,n),this._afterImageUpdated(t)}updateImage(t,n){this.imageManager.updateImage(t,n)}getImage(t){return this.imageManager.getImage(t)}removeImage(t){if(!this.getImage(t))return this.fire(new c.ErrorEvent(new Error(`An image named "${t}" does not exist.`)));this.imageManager.removeImage(t),this._afterImageUpdated(t)}_afterImageUpdated(t){this._availableImages=this.imageManager.listImages(),this._changedImages[t]=!0,this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new c.Event("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(t,n,a={}){if(this._checkLoaded(),this.sourceCaches[t]!==void 0)throw new Error(`Source "${t}" already exists.`);if(!n.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(n).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(n.type)>=0&&this._validate(c.validateStyle.source,`sources.${t}`,n,null,a))return;this.map&&this.map._collectResourceTiming&&(n.collectResourceTiming=!0);const h=this.sourceCaches[t]=new di(t,n,this.dispatcher);h.style=this,h.setEventedParent(this,()=>({isSourceLoaded:this.loaded(),source:h.serialize(),sourceId:t})),h.onAdd(this.map),this._changed=!0}removeSource(t){if(this._checkLoaded(),this.sourceCaches[t]===void 0)throw new Error("There is no source with this ID");for(const a in this._layers)if(this._layers[a].source===t)return this.fire(new c.ErrorEvent(new Error(`Source "${t}" cannot be removed while layer "${a}" is using it.`)));const n=this.sourceCaches[t];delete this.sourceCaches[t],delete this._updatedSources[t],n.fire(new c.Event("data",{sourceDataType:"metadata",dataType:"source",sourceId:t})),n.setEventedParent(null),n.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(t,n){if(this._checkLoaded(),this.sourceCaches[t]===void 0)throw new Error(`There is no source with this ID=${t}`);const a=this.sourceCaches[t].getSource();if(a.type!=="geojson")throw new Error(`geojsonSource.type is ${a.type}, which is !== 'geojson`);a.setData(n),this._changed=!0}getSource(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()}addLayer(t,n,a={}){this._checkLoaded();const h=t.id;if(this.getLayer(h))return void this.fire(new c.ErrorEvent(new Error(`Layer "${h}" already exists on this map.`)));let p;if(t.type==="custom"){if(Cs(this,c.validateCustomStyleLayer(t)))return;p=c.createStyleLayer(t)}else{if(typeof t.source=="object"&&(this.addSource(h,t.source),t=c.clone$1(t),t=c.extend(t,{source:h})),this._validate(c.validateStyle.layer,`layers.${h}`,t,{arrayIndex:-1},a))return;p=c.createStyleLayer(t),this._validateLayer(p),p.setEventedParent(this,{layer:{id:h}}),this._serializedLayers[p.id]=p.serialize()}const m=n?this._order.indexOf(n):this._order.length;if(n&&m===-1)this.fire(new c.ErrorEvent(new Error(`Cannot add layer "${h}" before non-existing layer "${n}".`)));else{if(this._order.splice(m,0,h),this._layerOrderChanged=!0,this._layers[h]=p,this._removedLayers[h]&&p.source&&p.type!=="custom"){const _=this._removedLayers[h];delete this._removedLayers[h],_.type!==p.type?this._updatedSources[p.source]="clear":(this._updatedSources[p.source]="reload",this.sourceCaches[p.source].pause())}this._updateLayer(p),p.onAdd&&p.onAdd(this.map)}}moveLayer(t,n){if(this._checkLoaded(),this._changed=!0,!this._layers[t])return void this.fire(new c.ErrorEvent(new Error(`The layer '${t}' does not exist in the map's style and cannot be moved.`)));if(t===n)return;const a=this._order.indexOf(t);this._order.splice(a,1);const h=n?this._order.indexOf(n):this._order.length;n&&h===-1?this.fire(new c.ErrorEvent(new Error(`Cannot move layer "${t}" before non-existing layer "${n}".`))):(this._order.splice(h,0,t),this._layerOrderChanged=!0)}removeLayer(t){this._checkLoaded();const n=this._layers[t];if(!n)return void this.fire(new c.ErrorEvent(new Error(`Cannot remove non-existing layer "${t}".`)));n.setEventedParent(null);const a=this._order.indexOf(t);this._order.splice(a,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[t]=n,delete this._layers[t],delete this._serializedLayers[t],delete this._updatedLayers[t],delete this._updatedPaintProps[t],n.onRemove&&n.onRemove(this.map)}getLayer(t){return this._layers[t]}hasLayer(t){return t in this._layers}setLayerZoomRange(t,n,a){this._checkLoaded();const h=this.getLayer(t);h?h.minzoom===n&&h.maxzoom===a||(n!=null&&(h.minzoom=n),a!=null&&(h.maxzoom=a),this._updateLayer(h)):this.fire(new c.ErrorEvent(new Error(`Cannot set the zoom range of non-existing layer "${t}".`)))}setFilter(t,n,a={}){this._checkLoaded();const h=this.getLayer(t);if(h){if(!Me(h.filter,n))return n==null?(h.filter=void 0,void this._updateLayer(h)):void(this._validate(c.validateStyle.filter,`layers.${h.id}.filter`,n,null,a)||(h.filter=c.clone$1(n),this._updateLayer(h)))}else this.fire(new c.ErrorEvent(new Error(`Cannot filter non-existing layer "${t}".`)))}getFilter(t){return c.clone$1(this.getLayer(t).filter)}setLayoutProperty(t,n,a,h={}){this._checkLoaded();const p=this.getLayer(t);p?Me(p.getLayoutProperty(n),a)||(p.setLayoutProperty(n,a,h),this._updateLayer(p)):this.fire(new c.ErrorEvent(new Error(`Cannot style non-existing layer "${t}".`)))}getLayoutProperty(t,n){const a=this.getLayer(t);if(a)return a.getLayoutProperty(n);this.fire(new c.ErrorEvent(new Error(`Cannot get style of non-existing layer "${t}".`)))}setPaintProperty(t,n,a,h={}){this._checkLoaded();const p=this.getLayer(t);p?Me(p.getPaintProperty(n),a)||(p.setPaintProperty(n,a,h)&&this._updateLayer(p),this._changed=!0,this._updatedPaintProps[t]=!0):this.fire(new c.ErrorEvent(new Error(`Cannot style non-existing layer "${t}".`)))}getPaintProperty(t,n){return this.getLayer(t).getPaintProperty(n)}setFeatureState(t,n){this._checkLoaded();const a=t.source,h=t.sourceLayer,p=this.sourceCaches[a];if(p===void 0)return void this.fire(new c.ErrorEvent(new Error(`The source '${a}' does not exist in the map's style.`)));const m=p.getSource().type;m==="geojson"&&h?this.fire(new c.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):m!=="vector"||h?(t.id===void 0&&this.fire(new c.ErrorEvent(new Error("The feature id parameter must be provided."))),p.setFeatureState(h,t.id,n)):this.fire(new c.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}removeFeatureState(t,n){this._checkLoaded();const a=t.source,h=this.sourceCaches[a];if(h===void 0)return void this.fire(new c.ErrorEvent(new Error(`The source '${a}' does not exist in the map's style.`)));const p=h.getSource().type,m=p==="vector"?t.sourceLayer:void 0;p!=="vector"||m?n&&typeof t.id!="string"&&typeof t.id!="number"?this.fire(new c.ErrorEvent(new Error("A feature id is required to remove its specific state property."))):h.removeFeatureState(m,t.id,n):this.fire(new c.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}getFeatureState(t){this._checkLoaded();const n=t.source,a=t.sourceLayer,h=this.sourceCaches[n];if(h!==void 0)return h.getSource().type!=="vector"||a?(t.id===void 0&&this.fire(new c.ErrorEvent(new Error("The feature id parameter must be provided."))),h.getFeatureState(a,t.id)):void this.fire(new c.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new c.ErrorEvent(new Error(`The source '${n}' does not exist in the map's style.`)))}getTransition(){return c.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){return c.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:c.mapObject(this.sourceCaches,t=>t.serialize()),layers:this._serializeLayers(this._order)},t=>t!==void 0)}_updateLayer(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&this.sourceCaches[t.source].getSource().type!=="raster"&&(this._updatedSources[t.source]="reload",this.sourceCaches[t.source].pause()),this._changed=!0}_flattenAndSortRenderedFeatures(t){const n=m=>this._layers[m].type==="fill-extrusion",a={},h=[];for(let m=this._order.length-1;m>=0;m--){const _=this._order[m];if(n(_)){a[_]=m;for(const y of t){const v=y[_];if(v)for(const S of v)h.push(S)}}}h.sort((m,_)=>_.intersectionZ-m.intersectionZ);const p=[];for(let m=this._order.length-1;m>=0;m--){const _=this._order[m];if(n(_))for(let y=h.length-1;y>=0;y--){const v=h[y].feature;if(a[v.layer.id]<m)break;p.push(v),h.pop()}else for(const y of t){const v=y[_];if(v)for(const S of v)p.push(S.feature)}}return p}queryRenderedFeatures(t,n,a){n&&n.filter&&this._validate(c.validateStyle.filter,"queryRenderedFeatures.filter",n.filter,null,n);const h={};if(n&&n.layers){if(!Array.isArray(n.layers))return this.fire(new c.ErrorEvent(new Error("parameters.layers must be an Array."))),[];for(const m of n.layers){const _=this._layers[m];if(!_)return this.fire(new c.ErrorEvent(new Error(`The layer '${m}' does not exist in the map's style and cannot be queried for features.`))),[];h[_.source]=!0}}const p=[];n.availableImages=this._availableImages;for(const m in this.sourceCaches)n.layers&&!h[m]||p.push(jn(this.sourceCaches[m],this._layers,this._serializedLayers,t,n,a));return this.placement&&p.push(function(m,_,y,v,S,E,C){const D={},B=E.queryRenderedSymbols(v),L=[];for(const N of Object.keys(B).map(Number))L.push(C[N]);L.sort(un);for(const N of L){const X=N.featureIndex.lookupSymbolFeatures(B[N.bucketInstanceId],_,N.bucketIndex,N.sourceLayerIndex,S.filter,S.layers,S.availableImages,m);for(const q in X){const U=D[q]=D[q]||[],W=X[q];W.sort((te,ae)=>{const he=N.featureSortOrder;if(he){const de=he.indexOf(te.featureIndex);return he.indexOf(ae.featureIndex)-de}return ae.featureIndex-te.featureIndex});for(const te of W)U.push(te)}}for(const N in D)D[N].forEach(X=>{const q=X.feature,U=y[m[N].source].getFeatureState(q.layer["source-layer"],q.id);q.source=q.layer.source,q.layer["source-layer"]&&(q.sourceLayer=q.layer["source-layer"]),q.state=U});return D}(this._layers,this._serializedLayers,this.sourceCaches,t,n,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(p)}querySourceFeatures(t,n){n&&n.filter&&this._validate(c.validateStyle.filter,"querySourceFeatures.filter",n.filter,null,n);const a=this.sourceCaches[t];return a?function(h,p){const m=h.getRenderableIds().map(v=>h.getTileByID(v)),_=[],y={};for(let v=0;v<m.length;v++){const S=m[v],E=S.tileID.canonical.key;y[E]||(y[E]=!0,S.querySourceFeatures(_,p))}return _}(a,n):[]}addSourceType(t,n,a){return ui.getSourceType(t)?a(new Error(`A source type called "${t}" already exists.`)):(ui.setSourceType(t,n),n.workerSourceURL?void this.dispatcher.broadcast("loadWorkerSource",{name:t,url:n.workerSourceURL},a):a(null,null))}getLight(){return this.light.getLight()}setLight(t,n={}){this._checkLoaded();const a=this.light.getLight();let h=!1;for(const m in t)if(!Me(t[m],a[m])){h=!0;break}if(!h)return;const p={now:c.exported.now(),transition:c.extend({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(t,n),this.light.updateTransitions(p)}_validate(t,n,a,h,p={}){return(!p||p.validate!==!1)&&Cs(this,t.call(c.validateStyle,c.extend({key:n,style:this.serialize(),value:a,styleSpec:c.spec},h)))}_remove(){this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),c.evented.off("pluginStateChange",this._rtlTextPluginCallback);for(const t in this._layers)this._layers[t].setEventedParent(null);for(const t in this.sourceCaches){const n=this.sourceCaches[t];n.setEventedParent(null),n.onRemove(this.map)}this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove()}_clearSource(t){this.sourceCaches[t].clearTiles()}_reloadSource(t){this.sourceCaches[t].resume(),this.sourceCaches[t].reload()}_updateSources(t){for(const n in this.sourceCaches)this.sourceCaches[n].update(t,this.map.terrain)}_generateCollisionBoxes(){for(const t in this.sourceCaches)this._reloadSource(t)}_updatePlacement(t,n,a,h,p=!1){let m=!1,_=!1;const y={};for(const v of this._order){const S=this._layers[v];if(S.type!=="symbol")continue;if(!y[S.source]){const C=this.sourceCaches[S.source];y[S.source]=C.getRenderableIds(!0).map(D=>C.getTileByID(D)).sort((D,B)=>B.tileID.overscaledZ-D.tileID.overscaledZ||(D.tileID.isLessThan(B.tileID)?-1:1))}const E=this.crossTileSymbolIndex.addLayer(S,y[S.source],t.center.lng);m=m||E}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((p=p||this._layerOrderChanged||a===0)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(c.exported.now(),t.zoom))&&(this.pauseablePlacement=new li(t,this.map.terrain,this._order,p,n,a,h,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,y),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(c.exported.now()),_=!0),m&&this.pauseablePlacement.placement.setStale()),_||m)for(const v of this._order){const S=this._layers[v];S.type==="symbol"&&this.placement.updateLayerOpacities(S,y[S.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(c.exported.now())}_releaseSymbolFadeTiles(){for(const t in this.sourceCaches)this.sourceCaches[t].releaseSymbolFadeTiles()}getImages(t,n,a){this.imageManager.getImages(n.icons,a),this._updateTilesForChangedImages();const h=this.sourceCaches[n.source];h&&h.setDependencies(n.tileID.key,n.type,n.icons)}getGlyphs(t,n,a){this.glyphManager.getGlyphs(n.stacks,a);const h=this.sourceCaches[n.source];h&&h.setDependencies(n.tileID.key,n.type,[""])}getResource(t,n,a){return c.makeRequest(n,a)}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(t,n={}){this._checkLoaded(),t&&this._validate(c.validateStyle.glyphs,"glyphs",t,null,n)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=t,this.glyphManager.entries={},this.glyphManager.setURL(t))}addSprite(t,n,a={},h){this._checkLoaded();const p=[{id:t,url:n}],m=[...Jt(this.stylesheet.sprite),...p];this._validate(c.validateStyle.sprite,"sprite",m,null,a)||(this.stylesheet.sprite=m,this._loadSprite(p,!0,h))}removeSprite(t){this._checkLoaded();const n=Jt(this.stylesheet.sprite);if(n.find(a=>a.id===t)){if(this._spritesImagesIds[t])for(const a of this._spritesImagesIds[t])this.imageManager.removeImage(a),this._changedImages[a]=!0;n.splice(n.findIndex(a=>a.id===t),1),this.stylesheet.sprite=n.length>0?n:void 0,delete this._spritesImagesIds[t],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new c.Event("data",{dataType:"style"}))}else this.fire(new c.ErrorEvent(new Error(`Sprite "${t}" doesn't exists on this map.`)))}getSprite(){return Jt(this.stylesheet.sprite)}setSprite(t,n={},a){this._checkLoaded(),t&&this._validate(c.validateStyle.sprite,"sprite",t,null,n)||(this.stylesheet.sprite=t,t?this._loadSprite(t,!0,a):(this._unloadSprite(),a(null)))}}ui.getSourceType=function(o){return Ur[o]},ui.setSourceType=function(o,t){Ur[o]=t},ui.registerForPluginStateChange=c.registerForPluginStateChange;var qn=c.createLayout([{name:"a_pos",type:"Int16",components:2}]),gn="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 Zn={prelude:Ct(`#ifdef GL_ES
3
+ precision mediump float;
4
+ #else
5
+ #if !defined(lowp)
6
+ #define lowp
7
+ #endif
8
+ #if !defined(mediump)
9
+ #define mediump
10
+ #endif
11
+ #if !defined(highp)
12
+ #define highp
13
+ #endif
14
+ #endif`,`#ifdef GL_ES
15
+ precision highp float;
16
+ #else
17
+ #if !defined(lowp)
18
+ #define lowp
19
+ #endif
20
+ #if !defined(mediump)
21
+ #define mediump
22
+ #endif
23
+ #if !defined(highp)
24
+ #define highp
25
+ #endif
26
+ #endif
27
+ vec2 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
28
+ );}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;}
29
+ #ifdef TERRAIN3D
30
+ uniform 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;
31
+ #endif
32
+ const 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) {
33
+ #ifdef TERRAIN3D
34
+ highp 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));
35
+ #else
36
+ return 1.0;
37
+ #endif
38
+ }float calculate_visibility(vec4 pos) {
39
+ #ifdef TERRAIN3D
40
+ vec3 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;
41
+ #else
42
+ return 1.0;
43
+ #endif
44
+ }float ele(vec2 pos) {
45
+ #ifdef TERRAIN3D
46
+ vec4 rgb=(texture2D(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;
47
+ #else
48
+ return 0.0;
49
+ #endif
50
+ }float get_elevation(vec2 pos) {
51
+ #ifdef TERRAIN3D
52
+ vec2 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;
53
+ #else
54
+ return 0.0;
55
+ #endif
56
+ }`),background:Ct(`uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity;
57
+ #ifdef OVERDRAW_INSPECTOR
58
+ gl_FragColor=vec4(1.0);
59
+ #endif
60
+ }`,"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),backgroundPattern:Ct(`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;uniform 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;
61
+ #ifdef OVERDRAW_INSPECTOR
62
+ gl_FragColor=vec4(1.0);
63
+ #endif
64
+ }`,"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:Ct(`varying vec3 v_data;varying float v_visibility;
65
+ #pragma mapbox: define highp vec4 color
66
+ #pragma mapbox: define mediump float radius
67
+ #pragma mapbox: define lowp float blur
68
+ #pragma mapbox: define lowp float opacity
69
+ #pragma mapbox: define highp vec4 stroke_color
70
+ #pragma mapbox: define mediump float stroke_width
71
+ #pragma mapbox: define lowp float stroke_opacity
72
+ void main() {
73
+ #pragma mapbox: initialize highp vec4 color
74
+ #pragma mapbox: initialize mediump float radius
75
+ #pragma mapbox: initialize lowp float blur
76
+ #pragma mapbox: initialize lowp float opacity
77
+ #pragma mapbox: initialize highp vec4 stroke_color
78
+ #pragma mapbox: initialize mediump float stroke_width
79
+ #pragma mapbox: initialize lowp float stroke_opacity
80
+ vec2 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);
81
+ #ifdef OVERDRAW_INSPECTOR
82
+ gl_FragColor=vec4(1.0);
83
+ #endif
84
+ }`,`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;
85
+ #pragma mapbox: define highp vec4 color
86
+ #pragma mapbox: define mediump float radius
87
+ #pragma mapbox: define lowp float blur
88
+ #pragma mapbox: define lowp float opacity
89
+ #pragma mapbox: define highp vec4 stroke_color
90
+ #pragma mapbox: define mediump float stroke_width
91
+ #pragma mapbox: define lowp float stroke_opacity
92
+ void main(void) {
93
+ #pragma mapbox: initialize highp vec4 color
94
+ #pragma mapbox: initialize mediump float radius
95
+ #pragma mapbox: initialize lowp float blur
96
+ #pragma mapbox: initialize lowp float opacity
97
+ #pragma mapbox: initialize highp vec4 stroke_color
98
+ #pragma mapbox: initialize mediump float stroke_width
99
+ #pragma mapbox: initialize lowp float stroke_opacity
100
+ vec2 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:Ct("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:Ct(`uniform highp float u_intensity;varying vec2 v_extrude;
101
+ #pragma mapbox: define highp float weight
102
+ #define GAUSS_COEF 0.3989422804014327
103
+ void main() {
104
+ #pragma mapbox: initialize highp float weight
105
+ float 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);
106
+ #ifdef OVERDRAW_INSPECTOR
107
+ gl_FragColor=vec4(1.0);
108
+ #endif
109
+ }`,`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;
110
+ #pragma mapbox: define highp float weight
111
+ #pragma mapbox: define mediump float radius
112
+ const highp float ZERO=1.0/255.0/16.0;
113
+ #define GAUSS_COEF 0.3989422804014327
114
+ void main(void) {
115
+ #pragma mapbox: initialize highp float weight
116
+ #pragma mapbox: initialize mediump float radius
117
+ vec2 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:Ct(`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;
118
+ #ifdef OVERDRAW_INSPECTOR
119
+ gl_FragColor=vec4(0.0);
120
+ #endif
121
+ }`,"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:Ct("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:Ct("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:Ct("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:Ct(`#pragma mapbox: define highp vec4 color
122
+ #pragma mapbox: define lowp float opacity
123
+ void main() {
124
+ #pragma mapbox: initialize highp vec4 color
125
+ #pragma mapbox: initialize lowp float opacity
126
+ gl_FragColor=color*opacity;
127
+ #ifdef OVERDRAW_INSPECTOR
128
+ gl_FragColor=vec4(1.0);
129
+ #endif
130
+ }`,`attribute vec2 a_pos;uniform mat4 u_matrix;
131
+ #pragma mapbox: define highp vec4 color
132
+ #pragma mapbox: define lowp float opacity
133
+ void main() {
134
+ #pragma mapbox: initialize highp vec4 color
135
+ #pragma mapbox: initialize lowp float opacity
136
+ gl_Position=u_matrix*vec4(a_pos,0,1);}`),fillOutline:Ct(`varying vec2 v_pos;
137
+ #pragma mapbox: define highp vec4 outline_color
138
+ #pragma mapbox: define lowp float opacity
139
+ void main() {
140
+ #pragma mapbox: initialize highp vec4 outline_color
141
+ #pragma mapbox: initialize lowp float opacity
142
+ float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);
143
+ #ifdef OVERDRAW_INSPECTOR
144
+ gl_FragColor=vec4(1.0);
145
+ #endif
146
+ }`,`attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;
147
+ #pragma mapbox: define highp vec4 outline_color
148
+ #pragma mapbox: define lowp float opacity
149
+ void main() {
150
+ #pragma mapbox: initialize highp vec4 outline_color
151
+ #pragma mapbox: initialize lowp float opacity
152
+ gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillOutlinePattern:Ct(`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;
153
+ #pragma mapbox: define lowp float opacity
154
+ #pragma mapbox: define lowp vec4 pattern_from
155
+ #pragma mapbox: define lowp vec4 pattern_to
156
+ void main() {
157
+ #pragma mapbox: initialize lowp float opacity
158
+ #pragma mapbox: initialize mediump vec4 pattern_from
159
+ #pragma mapbox: initialize mediump vec4 pattern_to
160
+ vec2 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;
161
+ #ifdef OVERDRAW_INSPECTOR
162
+ gl_FragColor=vec4(1.0);
163
+ #endif
164
+ }`,`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;
165
+ #pragma mapbox: define lowp float opacity
166
+ #pragma mapbox: define lowp vec4 pattern_from
167
+ #pragma mapbox: define lowp vec4 pattern_to
168
+ #pragma mapbox: define lowp float pixel_ratio_from
169
+ #pragma mapbox: define lowp float pixel_ratio_to
170
+ void main() {
171
+ #pragma mapbox: initialize lowp float opacity
172
+ #pragma mapbox: initialize mediump vec4 pattern_from
173
+ #pragma mapbox: initialize mediump vec4 pattern_to
174
+ #pragma mapbox: initialize lowp float pixel_ratio_from
175
+ #pragma mapbox: initialize lowp float pixel_ratio_to
176
+ vec2 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:Ct(`#ifdef GL_ES
177
+ precision highp float;
178
+ #endif
179
+ uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;
180
+ #pragma mapbox: define lowp float opacity
181
+ #pragma mapbox: define lowp vec4 pattern_from
182
+ #pragma mapbox: define lowp vec4 pattern_to
183
+ void main() {
184
+ #pragma mapbox: initialize lowp float opacity
185
+ #pragma mapbox: initialize mediump vec4 pattern_from
186
+ #pragma mapbox: initialize mediump vec4 pattern_to
187
+ vec2 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;
188
+ #ifdef OVERDRAW_INSPECTOR
189
+ gl_FragColor=vec4(1.0);
190
+ #endif
191
+ }`,`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;
192
+ #pragma mapbox: define lowp float opacity
193
+ #pragma mapbox: define lowp vec4 pattern_from
194
+ #pragma mapbox: define lowp vec4 pattern_to
195
+ #pragma mapbox: define lowp float pixel_ratio_from
196
+ #pragma mapbox: define lowp float pixel_ratio_to
197
+ void main() {
198
+ #pragma mapbox: initialize lowp float opacity
199
+ #pragma mapbox: initialize mediump vec4 pattern_from
200
+ #pragma mapbox: initialize mediump vec4 pattern_to
201
+ #pragma mapbox: initialize lowp float pixel_ratio_from
202
+ #pragma mapbox: initialize lowp float pixel_ratio_to
203
+ vec2 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:Ct(`varying vec4 v_color;void main() {gl_FragColor=v_color;
204
+ #ifdef OVERDRAW_INSPECTOR
205
+ gl_FragColor=vec4(1.0);
206
+ #endif
207
+ }`,`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;
208
+ #ifdef TERRAIN3D
209
+ attribute vec2 a_centroid;
210
+ #endif
211
+ varying vec4 v_color;
212
+ #pragma mapbox: define highp float base
213
+ #pragma mapbox: define highp float height
214
+ #pragma mapbox: define highp vec4 color
215
+ void main() {
216
+ #pragma mapbox: initialize highp float base
217
+ #pragma mapbox: initialize highp float height
218
+ #pragma mapbox: initialize highp vec4 color
219
+ vec3 normal=a_normal_ed.xyz;
220
+ #ifdef TERRAIN3D
221
+ float baseDelta=10.0;float ele=get_elevation(a_centroid);
222
+ #else
223
+ float baseDelta=0.0;float ele=0.0;
224
+ #endif
225
+ base=max(0.0,ele+base-baseDelta);height=max(0.0,ele+height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`),fillExtrusionPattern:Ct(`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;
226
+ #pragma mapbox: define lowp float base
227
+ #pragma mapbox: define lowp float height
228
+ #pragma mapbox: define lowp vec4 pattern_from
229
+ #pragma mapbox: define lowp vec4 pattern_to
230
+ #pragma mapbox: define lowp float pixel_ratio_from
231
+ #pragma mapbox: define lowp float pixel_ratio_to
232
+ void main() {
233
+ #pragma mapbox: initialize lowp float base
234
+ #pragma mapbox: initialize lowp float height
235
+ #pragma mapbox: initialize mediump vec4 pattern_from
236
+ #pragma mapbox: initialize mediump vec4 pattern_to
237
+ #pragma mapbox: initialize lowp float pixel_ratio_from
238
+ #pragma mapbox: initialize lowp float pixel_ratio_to
239
+ vec2 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;
240
+ #ifdef OVERDRAW_INSPECTOR
241
+ gl_FragColor=vec4(1.0);
242
+ #endif
243
+ }`,`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;
244
+ #ifdef TERRAIN3D
245
+ attribute vec2 a_centroid;
246
+ #endif
247
+ varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;
248
+ #pragma mapbox: define lowp float base
249
+ #pragma mapbox: define lowp float height
250
+ #pragma mapbox: define lowp vec4 pattern_from
251
+ #pragma mapbox: define lowp vec4 pattern_to
252
+ #pragma mapbox: define lowp float pixel_ratio_from
253
+ #pragma mapbox: define lowp float pixel_ratio_to
254
+ void main() {
255
+ #pragma mapbox: initialize lowp float base
256
+ #pragma mapbox: initialize lowp float height
257
+ #pragma mapbox: initialize mediump vec4 pattern_from
258
+ #pragma mapbox: initialize mediump vec4 pattern_to
259
+ #pragma mapbox: initialize lowp float pixel_ratio_from
260
+ #pragma mapbox: initialize lowp float pixel_ratio_to
261
+ vec2 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;
262
+ #ifdef TERRAIN3D
263
+ float baseDelta=10.0;float ele=get_elevation(a_centroid);
264
+ #else
265
+ float baseDelta=0.0;float ele=0.0;
266
+ #endif
267
+ base=max(0.0,ele+base-baseDelta);height=max(0.0,ele+height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0
268
+ ? a_pos
269
+ : 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:Ct(`#ifdef GL_ES
270
+ precision highp float;
271
+ #endif
272
+ uniform 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);
273
+ #ifdef OVERDRAW_INSPECTOR
274
+ gl_FragColor=vec4(1.0);
275
+ #endif
276
+ }`,"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:Ct(`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;
277
+ #define PI 3.141592653589793
278
+ void 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;
279
+ #ifdef OVERDRAW_INSPECTOR
280
+ gl_FragColor=vec4(1.0);
281
+ #endif
282
+ }`,"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:Ct(`uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;
283
+ #pragma mapbox: define highp vec4 color
284
+ #pragma mapbox: define lowp float blur
285
+ #pragma mapbox: define lowp float opacity
286
+ void main() {
287
+ #pragma mapbox: initialize highp vec4 color
288
+ #pragma mapbox: initialize lowp float blur
289
+ #pragma mapbox: initialize lowp float opacity
290
+ 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);gl_FragColor=color*(alpha*opacity);
291
+ #ifdef OVERDRAW_INSPECTOR
292
+ gl_FragColor=vec4(1.0);
293
+ #endif
294
+ }`,`
295
+ #define scale 0.015873016
296
+ attribute 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;
297
+ #pragma mapbox: define highp vec4 color
298
+ #pragma mapbox: define lowp float blur
299
+ #pragma mapbox: define lowp float opacity
300
+ #pragma mapbox: define mediump float gapwidth
301
+ #pragma mapbox: define lowp float offset
302
+ #pragma mapbox: define mediump float width
303
+ void main() {
304
+ #pragma mapbox: initialize highp vec4 color
305
+ #pragma mapbox: initialize lowp float blur
306
+ #pragma mapbox: initialize lowp float opacity
307
+ #pragma mapbox: initialize mediump float gapwidth
308
+ #pragma mapbox: initialize lowp float offset
309
+ #pragma mapbox: initialize mediump float width
310
+ float 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;
311
+ #ifdef TERRAIN3D
312
+ v_gamma_scale=1.0;
313
+ #else
314
+ float 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;
315
+ #endif
316
+ v_width2=vec2(outset,inset);}`),lineGradient:Ct(`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;
317
+ #pragma mapbox: define lowp float blur
318
+ #pragma mapbox: define lowp float opacity
319
+ void main() {
320
+ #pragma mapbox: initialize lowp float blur
321
+ #pragma mapbox: initialize lowp float opacity
322
+ 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);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity);
323
+ #ifdef OVERDRAW_INSPECTOR
324
+ gl_FragColor=vec4(1.0);
325
+ #endif
326
+ }`,`
327
+ #define scale 0.015873016
328
+ attribute 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;
329
+ #pragma mapbox: define lowp float blur
330
+ #pragma mapbox: define lowp float opacity
331
+ #pragma mapbox: define mediump float gapwidth
332
+ #pragma mapbox: define lowp float offset
333
+ #pragma mapbox: define mediump float width
334
+ void main() {
335
+ #pragma mapbox: initialize lowp float blur
336
+ #pragma mapbox: initialize lowp float opacity
337
+ #pragma mapbox: initialize mediump float gapwidth
338
+ #pragma mapbox: initialize lowp float offset
339
+ #pragma mapbox: initialize mediump float width
340
+ float 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;
341
+ #ifdef TERRAIN3D
342
+ v_gamma_scale=1.0;
343
+ #else
344
+ float 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;
345
+ #endif
346
+ v_width2=vec2(outset,inset);}`),linePattern:Ct(`#ifdef GL_ES
347
+ precision highp float;
348
+ #endif
349
+ uniform 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;
350
+ #pragma mapbox: define lowp vec4 pattern_from
351
+ #pragma mapbox: define lowp vec4 pattern_to
352
+ #pragma mapbox: define lowp float pixel_ratio_from
353
+ #pragma mapbox: define lowp float pixel_ratio_to
354
+ #pragma mapbox: define lowp float blur
355
+ #pragma mapbox: define lowp float opacity
356
+ void main() {
357
+ #pragma mapbox: initialize mediump vec4 pattern_from
358
+ #pragma mapbox: initialize mediump vec4 pattern_to
359
+ #pragma mapbox: initialize lowp float pixel_ratio_from
360
+ #pragma mapbox: initialize lowp float pixel_ratio_to
361
+ #pragma mapbox: initialize lowp float blur
362
+ #pragma mapbox: initialize lowp float opacity
363
+ vec2 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;
364
+ #ifdef OVERDRAW_INSPECTOR
365
+ gl_FragColor=vec4(1.0);
366
+ #endif
367
+ }`,`
368
+ #define scale 0.015873016
369
+ #define LINE_DISTANCE_SCALE 2.0
370
+ attribute 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;
371
+ #pragma mapbox: define lowp float blur
372
+ #pragma mapbox: define lowp float opacity
373
+ #pragma mapbox: define lowp float offset
374
+ #pragma mapbox: define mediump float gapwidth
375
+ #pragma mapbox: define mediump float width
376
+ #pragma mapbox: define lowp float floorwidth
377
+ #pragma mapbox: define lowp vec4 pattern_from
378
+ #pragma mapbox: define lowp vec4 pattern_to
379
+ #pragma mapbox: define lowp float pixel_ratio_from
380
+ #pragma mapbox: define lowp float pixel_ratio_to
381
+ void main() {
382
+ #pragma mapbox: initialize lowp float blur
383
+ #pragma mapbox: initialize lowp float opacity
384
+ #pragma mapbox: initialize lowp float offset
385
+ #pragma mapbox: initialize mediump float gapwidth
386
+ #pragma mapbox: initialize mediump float width
387
+ #pragma mapbox: initialize lowp float floorwidth
388
+ #pragma mapbox: initialize mediump vec4 pattern_from
389
+ #pragma mapbox: initialize mediump vec4 pattern_to
390
+ #pragma mapbox: initialize lowp float pixel_ratio_from
391
+ #pragma mapbox: initialize lowp float pixel_ratio_to
392
+ float 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;
393
+ #ifdef TERRAIN3D
394
+ v_gamma_scale=1.0;
395
+ #else
396
+ float 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;
397
+ #endif
398
+ v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`),lineSDF:Ct(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;
399
+ #pragma mapbox: define highp vec4 color
400
+ #pragma mapbox: define lowp float blur
401
+ #pragma mapbox: define lowp float opacity
402
+ #pragma mapbox: define mediump float width
403
+ #pragma mapbox: define lowp float floorwidth
404
+ void main() {
405
+ #pragma mapbox: initialize highp vec4 color
406
+ #pragma mapbox: initialize lowp float blur
407
+ #pragma mapbox: initialize lowp float opacity
408
+ #pragma mapbox: initialize mediump float width
409
+ #pragma mapbox: initialize lowp float floorwidth
410
+ 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 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);
411
+ #ifdef OVERDRAW_INSPECTOR
412
+ gl_FragColor=vec4(1.0);
413
+ #endif
414
+ }`,`
415
+ #define scale 0.015873016
416
+ #define LINE_DISTANCE_SCALE 2.0
417
+ attribute 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;
418
+ #pragma mapbox: define highp vec4 color
419
+ #pragma mapbox: define lowp float blur
420
+ #pragma mapbox: define lowp float opacity
421
+ #pragma mapbox: define mediump float gapwidth
422
+ #pragma mapbox: define lowp float offset
423
+ #pragma mapbox: define mediump float width
424
+ #pragma mapbox: define lowp float floorwidth
425
+ void main() {
426
+ #pragma mapbox: initialize highp vec4 color
427
+ #pragma mapbox: initialize lowp float blur
428
+ #pragma mapbox: initialize lowp float opacity
429
+ #pragma mapbox: initialize mediump float gapwidth
430
+ #pragma mapbox: initialize lowp float offset
431
+ #pragma mapbox: initialize mediump float width
432
+ #pragma mapbox: initialize lowp float floorwidth
433
+ float 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;
434
+ #ifdef TERRAIN3D
435
+ v_gamma_scale=1.0;
436
+ #else
437
+ float 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;
438
+ #endif
439
+ v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`),raster:Ct(`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);
440
+ #ifdef OVERDRAW_INSPECTOR
441
+ gl_FragColor=vec4(1.0);
442
+ #endif
443
+ }`,"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:Ct(`uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;
444
+ #pragma mapbox: define lowp float opacity
445
+ void main() {
446
+ #pragma mapbox: initialize lowp float opacity
447
+ lowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;
448
+ #ifdef OVERDRAW_INSPECTOR
449
+ gl_FragColor=vec4(1.0);
450
+ #endif
451
+ }`,`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;
452
+ #pragma mapbox: define lowp float opacity
453
+ void main() {
454
+ #pragma mapbox: initialize lowp float opacity
455
+ vec2 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 ?
456
+ camera_to_anchor_distance/u_camera_to_center_distance :
457
+ u_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:Ct(`#define SDF_PX 8.0
458
+ uniform 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;
459
+ #pragma mapbox: define highp vec4 fill_color
460
+ #pragma mapbox: define highp vec4 halo_color
461
+ #pragma mapbox: define lowp float opacity
462
+ #pragma mapbox: define lowp float halo_width
463
+ #pragma mapbox: define lowp float halo_blur
464
+ void main() {
465
+ #pragma mapbox: initialize highp vec4 fill_color
466
+ #pragma mapbox: initialize highp vec4 halo_color
467
+ #pragma mapbox: initialize lowp float opacity
468
+ #pragma mapbox: initialize lowp float halo_width
469
+ #pragma mapbox: initialize lowp float halo_blur
470
+ float 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 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);
471
+ #ifdef OVERDRAW_INSPECTOR
472
+ gl_FragColor=vec4(1.0);
473
+ #endif
474
+ }`,`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;
475
+ #pragma mapbox: define highp vec4 fill_color
476
+ #pragma mapbox: define highp vec4 halo_color
477
+ #pragma mapbox: define lowp float opacity
478
+ #pragma mapbox: define lowp float halo_width
479
+ #pragma mapbox: define lowp float halo_blur
480
+ void main() {
481
+ #pragma mapbox: initialize highp vec4 fill_color
482
+ #pragma mapbox: initialize highp vec4 halo_color
483
+ #pragma mapbox: initialize lowp float opacity
484
+ #pragma mapbox: initialize lowp float halo_width
485
+ #pragma mapbox: initialize lowp float halo_blur
486
+ vec2 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 ?
487
+ camera_to_anchor_distance/u_camera_to_center_distance :
488
+ u_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:Ct(`#define SDF_PX 8.0
489
+ #define SDF 1.0
490
+ #define ICON 0.0
491
+ uniform 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;
492
+ #pragma mapbox: define highp vec4 fill_color
493
+ #pragma mapbox: define highp vec4 halo_color
494
+ #pragma mapbox: define lowp float opacity
495
+ #pragma mapbox: define lowp float halo_width
496
+ #pragma mapbox: define lowp float halo_blur
497
+ void main() {
498
+ #pragma mapbox: initialize highp vec4 fill_color
499
+ #pragma mapbox: initialize highp vec4 halo_color
500
+ #pragma mapbox: initialize lowp float opacity
501
+ #pragma mapbox: initialize lowp float halo_width
502
+ #pragma mapbox: initialize lowp float halo_blur
503
+ float fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;
504
+ #ifdef OVERDRAW_INSPECTOR
505
+ gl_FragColor=vec4(1.0);
506
+ #endif
507
+ return;}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);
508
+ #ifdef OVERDRAW_INSPECTOR
509
+ gl_FragColor=vec4(1.0);
510
+ #endif
511
+ }`,`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;
512
+ #pragma mapbox: define highp vec4 fill_color
513
+ #pragma mapbox: define highp vec4 halo_color
514
+ #pragma mapbox: define lowp float opacity
515
+ #pragma mapbox: define lowp float halo_width
516
+ #pragma mapbox: define lowp float halo_blur
517
+ void main() {
518
+ #pragma mapbox: initialize highp vec4 fill_color
519
+ #pragma mapbox: initialize highp vec4 halo_color
520
+ #pragma mapbox: initialize lowp float opacity
521
+ #pragma mapbox: initialize lowp float halo_width
522
+ #pragma mapbox: initialize lowp float halo_blur
523
+ vec2 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 ?
524
+ camera_to_anchor_distance/u_camera_to_center_distance :
525
+ u_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:Ct("uniform sampler2D u_texture;varying vec2 v_texture_pos;void main() {gl_FragColor=texture2D(u_texture,v_texture_pos);}",gn),terrainDepth:Ct("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);}",gn),terrainCoords:Ct("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);}",gn)};function Ct(o,t){const n=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,a=t.match(/attribute ([\w]+) ([\w]+)/g),h=o.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),p=t.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),m=p?p.concat(h):h,_={};return{fragmentSource:o=o.replace(n,(y,v,S,E,C)=>(_[C]=!0,v==="define"?`
526
+ #ifndef HAS_UNIFORM_u_${C}
527
+ varying ${S} ${E} ${C};
528
+ #else
529
+ uniform ${S} ${E} u_${C};
530
+ #endif
531
+ `:`
532
+ #ifdef HAS_UNIFORM_u_${C}
533
+ ${S} ${E} ${C} = u_${C};
534
+ #endif
535
+ `)),vertexSource:t=t.replace(n,(y,v,S,E,C)=>{const D=E==="float"?"vec2":"vec4",B=C.match(/color/)?"color":D;return _[C]?v==="define"?`
536
+ #ifndef HAS_UNIFORM_u_${C}
537
+ uniform lowp float u_${C}_t;
538
+ attribute ${S} ${D} a_${C};
539
+ varying ${S} ${E} ${C};
540
+ #else
541
+ uniform ${S} ${E} u_${C};
542
+ #endif
543
+ `:B==="vec4"?`
544
+ #ifndef HAS_UNIFORM_u_${C}
545
+ ${C} = a_${C};
546
+ #else
547
+ ${S} ${E} ${C} = u_${C};
548
+ #endif
549
+ `:`
550
+ #ifndef HAS_UNIFORM_u_${C}
551
+ ${C} = unpack_mix_${B}(a_${C}, u_${C}_t);
552
+ #else
553
+ ${S} ${E} ${C} = u_${C};
554
+ #endif
555
+ `:v==="define"?`
556
+ #ifndef HAS_UNIFORM_u_${C}
557
+ uniform lowp float u_${C}_t;
558
+ attribute ${S} ${D} a_${C};
559
+ #else
560
+ uniform ${S} ${E} u_${C};
561
+ #endif
562
+ `:B==="vec4"?`
563
+ #ifndef HAS_UNIFORM_u_${C}
564
+ ${S} ${E} ${C} = a_${C};
565
+ #else
566
+ ${S} ${E} ${C} = u_${C};
567
+ #endif
568
+ `:`
569
+ #ifndef HAS_UNIFORM_u_${C}
570
+ ${S} ${E} ${C} = unpack_mix_${B}(a_${C}, u_${C}_t);
571
+ #else
572
+ ${S} ${E} ${C} = u_${C};
573
+ #endif
574
+ `}),staticAttributes:a,staticUniforms:m}}class pa{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(t,n,a,h,p,m,_,y,v){this.context=t;let S=this.boundPaintVertexBuffers.length!==h.length;for(let E=0;!S&&E<h.length;E++)this.boundPaintVertexBuffers[E]!==h[E]&&(S=!0);t.extVertexArrayObject&&this.vao&&this.boundProgram===n&&this.boundLayoutVertexBuffer===a&&!S&&this.boundIndexBuffer===p&&this.boundVertexOffset===m&&this.boundDynamicVertexBuffer===_&&this.boundDynamicVertexBuffer2===y&&this.boundDynamicVertexBuffer3===v?(t.bindVertexArrayOES.set(this.vao),_&&_.bind(),p&&p.dynamicDraw&&p.bind(),y&&y.bind(),v&&v.bind()):this.freshBind(n,a,h,p,m,_,y,v)}freshBind(t,n,a,h,p,m,_,y){let v;const S=t.numAttributes,E=this.context,C=E.gl;if(E.extVertexArrayObject)this.vao&&this.destroy(),this.vao=E.extVertexArrayObject.createVertexArrayOES(),E.bindVertexArrayOES.set(this.vao),v=0,this.boundProgram=t,this.boundLayoutVertexBuffer=n,this.boundPaintVertexBuffers=a,this.boundIndexBuffer=h,this.boundVertexOffset=p,this.boundDynamicVertexBuffer=m,this.boundDynamicVertexBuffer2=_,this.boundDynamicVertexBuffer3=y;else{v=E.currentNumAttributes||0;for(let D=S;D<v;D++)C.disableVertexAttribArray(D)}n.enableAttributes(C,t);for(const D of a)D.enableAttributes(C,t);m&&m.enableAttributes(C,t),_&&_.enableAttributes(C,t),y&&y.enableAttributes(C,t),n.bind(),n.setVertexAttribPointers(C,t,p);for(const D of a)D.bind(),D.setVertexAttribPointers(C,t,p);m&&(m.bind(),m.setVertexAttribPointers(C,t,p)),h&&h.bind(),_&&(_.bind(),_.setVertexAttribPointers(C,t,p)),y&&(y.bind(),y.setVertexAttribPointers(C,t,p)),E.currentNumAttributes=S}destroy(){this.vao&&(this.context.extVertexArrayObject.deleteVertexArrayOES(this.vao),this.vao=null)}}function da(o){const t=[];for(let n=0;n<o.length;n++){if(o[n]===null)continue;const a=o[n].split(" ");t.push(a.pop())}return t}class Po{constructor(t,n,a,h,p,m,_){const y=t.gl;this.program=y.createProgram();const v=da(a.staticAttributes),S=h?h.getBinderAttributes():[],E=v.concat(S),C=Zn.prelude.staticUniforms?da(Zn.prelude.staticUniforms):[],D=a.staticUniforms?da(a.staticUniforms):[],B=h?h.getBinderUniforms():[],L=C.concat(D).concat(B),N=[];for(const he of L)N.indexOf(he)<0&&N.push(he);const X=h?h.defines():[];m&&X.push("#define OVERDRAW_INSPECTOR;"),_&&X.push("#define TERRAIN3D;");const q=X.concat(Zn.prelude.fragmentSource,a.fragmentSource).join(`
575
+ `),U=X.concat(Zn.prelude.vertexSource,a.vertexSource).join(`
576
+ `),W=y.createShader(y.FRAGMENT_SHADER);if(y.isContextLost())return void(this.failedToCreate=!0);y.shaderSource(W,q),y.compileShader(W),y.attachShader(this.program,W);const te=y.createShader(y.VERTEX_SHADER);if(y.isContextLost())return void(this.failedToCreate=!0);y.shaderSource(te,U),y.compileShader(te),y.attachShader(this.program,te),this.attributes={};const ae={};this.numAttributes=E.length;for(let he=0;he<this.numAttributes;he++)E[he]&&(y.bindAttribLocation(this.program,he,E[he]),this.attributes[E[he]]=he);y.linkProgram(this.program),y.deleteShader(te),y.deleteShader(W);for(let he=0;he<N.length;he++){const de=N[he];if(de&&!ae[de]){const we=y.getUniformLocation(this.program,de);we&&(ae[de]=we)}}this.fixedUniforms=p(t,ae),this.terrainUniforms=((he,de)=>({u_depth:new c.Uniform1i(he,de.u_depth),u_terrain:new c.Uniform1i(he,de.u_terrain),u_terrain_dim:new c.Uniform1f(he,de.u_terrain_dim),u_terrain_matrix:new c.UniformMatrix4f(he,de.u_terrain_matrix),u_terrain_unpack:new c.Uniform4f(he,de.u_terrain_unpack),u_terrain_exaggeration:new c.Uniform1f(he,de.u_terrain_exaggeration)}))(t,ae),this.binderUniforms=h?h.getUniforms(t,ae):[]}draw(t,n,a,h,p,m,_,y,v,S,E,C,D,B,L,N,X,q){const U=t.gl;if(this.failedToCreate)return;if(t.program.set(this.program),t.setDepthMode(a),t.setStencilMode(h),t.setColorMode(p),t.setCullFace(m),y){t.activeTexture.set(U.TEXTURE2),U.bindTexture(U.TEXTURE_2D,y.depthTexture),t.activeTexture.set(U.TEXTURE3),U.bindTexture(U.TEXTURE_2D,y.texture);for(const te in this.terrainUniforms)this.terrainUniforms[te].set(y[te])}for(const te in this.fixedUniforms)this.fixedUniforms[te].set(_[te]);L&&L.setUniforms(t,this.binderUniforms,D,{zoom:B});let W=0;switch(n){case U.LINES:W=2;break;case U.TRIANGLES:W=3;break;case U.LINE_STRIP:W=1}for(const te of C.get()){const ae=te.vaos||(te.vaos={});(ae[v]||(ae[v]=new pa)).bind(t,this,S,L?L.getPaintVertexBuffers():[],E,te.vertexOffset,N,X,q),U.drawElements(n,te.primitiveLength*W,U.UNSIGNED_SHORT,te.primitiveOffset*W*2)}}}function ko(o,t,n){const a=1/st(n,1,t.transform.tileZoom),h=Math.pow(2,n.tileID.overscaledZ),p=n.tileSize*Math.pow(2,t.transform.tileZoom)/h,m=p*(n.tileID.canonical.x+n.tileID.wrap*h),_=p*n.tileID.canonical.y;return{u_image:0,u_texsize:n.imageAtlasTexture.size,u_scale:[a,o.fromScale,o.toScale],u_fade:o.t,u_pixel_coord_upper:[m>>16,_>>16],u_pixel_coord_lower:[65535&m,65535&_]}}const ma=(o,t,n,a)=>{const h=t.style.light,p=h.properties.get("position"),m=[p.x,p.y,p.z],_=c.create$1();h.properties.get("anchor")==="viewport"&&c.fromRotation(_,-t.transform.angle),c.transformMat3(m,m,_);const y=h.properties.get("color");return{u_matrix:o,u_lightpos:m,u_lightintensity:h.properties.get("intensity"),u_lightcolor:[y.r,y.g,y.b],u_vertical_gradient:+n,u_opacity:a}},Wl=(o,t,n,a,h,p,m)=>c.extend(ma(o,t,n,a),ko(p,t,m),{u_height_factor:-Math.pow(2,h.overscaledZ)/m.tileSize/8}),Ps=o=>({u_matrix:o}),fa=(o,t,n,a)=>c.extend(Ps(o),ko(n,t,a)),zo=(o,t)=>({u_matrix:o,u_world:t}),Lo=(o,t,n,a,h)=>c.extend(fa(o,t,n,a),{u_world:h}),Do=(o,t,n,a)=>{const h=o.transform;let p,m;if(a.paint.get("circle-pitch-alignment")==="map"){const _=st(n,1,h.zoom);p=!0,m=[_,_]}else p=!1,m=h.pixelsToGLUnits;return{u_camera_to_center_distance:h.cameraToCenterDistance,u_scale_with_map:+(a.paint.get("circle-pitch-scale")==="map"),u_matrix:o.translatePosMatrix(t.posMatrix,n,a.paint.get("circle-translate"),a.paint.get("circle-translate-anchor")),u_pitch_with_map:+p,u_device_pixel_ratio:o.pixelRatio,u_extrude_scale:m}},Hr=(o,t,n)=>{const a=st(n,1,t.zoom),h=Math.pow(2,t.zoom-n.tileID.overscaledZ),p=n.tileID.overscaleFactor();return{u_matrix:o,u_camera_to_center_distance:t.cameraToCenterDistance,u_pixels_to_tile_units:a,u_extrude_scale:[t.pixelsToGLUnits[0]/(a*h),t.pixelsToGLUnits[1]/(a*h)],u_overscale_factor:p}},Xn=(o,t,n=1)=>({u_matrix:o,u_color:t,u_overlay:0,u_overlay_scale:n}),_n=o=>({u_matrix:o}),ks=(o,t,n,a)=>({u_matrix:o,u_extrude_scale:st(t,1,n),u_intensity:a});function zs(o,t){const n=Math.pow(2,t.canonical.z),a=t.canonical.y;return[new c.MercatorCoordinate(0,a/n).toLngLat().lat,new c.MercatorCoordinate(0,(a+1)/n).toLngLat().lat]}const Wn=(o,t,n,a)=>{const h=o.transform;return{u_matrix:qt(o,t,n,a),u_ratio:1/st(t,1,h.zoom),u_device_pixel_ratio:o.pixelRatio,u_units_to_pixels:[1/h.pixelsToGLUnits[0],1/h.pixelsToGLUnits[1]]}},Ro=(o,t,n,a,h)=>c.extend(Wn(o,t,n,h),{u_image:0,u_image_height:a}),ga=(o,t,n,a,h)=>{const p=o.transform,m=yn(t,p);return{u_matrix:qt(o,t,n,h),u_texsize:t.imageAtlasTexture.size,u_ratio:1/st(t,1,p.zoom),u_device_pixel_ratio:o.pixelRatio,u_image:0,u_scale:[m,a.fromScale,a.toScale],u_fade:a.t,u_units_to_pixels:[1/p.pixelsToGLUnits[0],1/p.pixelsToGLUnits[1]]}},Ls=(o,t,n,a,h,p)=>{const m=o.lineAtlas,_=yn(t,o.transform),y=n.layout.get("line-cap")==="round",v=m.getDash(a.from,y),S=m.getDash(a.to,y),E=v.width*h.fromScale,C=S.width*h.toScale;return c.extend(Wn(o,t,n,p),{u_patternscale_a:[_/E,-v.height/2],u_patternscale_b:[_/C,-S.height/2],u_sdfgamma:m.width/(256*Math.min(E,C)*o.pixelRatio)/2,u_image:0,u_tex_y_a:v.y,u_tex_y_b:S.y,u_mix:h.t})};function yn(o,t){return 1/st(o,1,t.tileZoom)}function qt(o,t,n,a){return o.translatePosMatrix(a?a.posMatrix:t.tileID.posMatrix,t,n.paint.get("line-translate"),n.paint.get("line-translate-anchor"))}const Ds=(o,t,n,a,h)=>{return{u_matrix:o,u_tl_parent:t,u_scale_parent:n,u_buffer_scale:1,u_fade_t:a.mix,u_opacity:a.opacity*h.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:h.paint.get("raster-brightness-min"),u_brightness_high:h.paint.get("raster-brightness-max"),u_saturation_factor:(m=h.paint.get("raster-saturation"),m>0?1-1/(1.001-m):-m),u_contrast_factor:(p=h.paint.get("raster-contrast"),p>0?1/(1-p):1+p),u_spin_weights:Bo(h.paint.get("raster-hue-rotate"))};var p,m};function Bo(o){o*=Math.PI/180;const t=Math.sin(o),n=Math.cos(o);return[(2*n+1)/3,(-Math.sqrt(3)*t-n+1)/3,(Math.sqrt(3)*t-n+1)/3]}const _a=(o,t,n,a,h,p,m,_,y,v)=>{const S=h.transform;return{u_is_size_zoom_constant:+(o==="constant"||o==="source"),u_is_size_feature_constant:+(o==="constant"||o==="camera"),u_size_t:t?t.uSizeT:0,u_size:t?t.uSize:0,u_camera_to_center_distance:S.cameraToCenterDistance,u_pitch:S.pitch/360*2*Math.PI,u_rotate_symbol:+n,u_aspect_ratio:S.width/S.height,u_fade_change:h.options.fadeDuration?h.symbolFadeChange:1,u_matrix:p,u_label_plane_matrix:m,u_coord_matrix:_,u_is_text:+y,u_pitch_with_map:+a,u_texsize:v,u_texture:0}},ya=(o,t,n,a,h,p,m,_,y,v,S)=>{const E=h.transform;return c.extend(_a(o,t,n,a,h,p,m,_,y,v),{u_gamma_scale:a?Math.cos(E._pitch)*E.cameraToCenterDistance:1,u_device_pixel_ratio:h.pixelRatio,u_is_halo:+S})},xa=(o,t,n,a,h,p,m,_,y,v)=>c.extend(ya(o,t,n,a,h,p,m,_,!0,y,!0),{u_texsize_icon:v,u_texture_icon:1}),Fo=(o,t,n)=>({u_matrix:o,u_opacity:t,u_color:n}),Hl=(o,t,n,a,h,p)=>c.extend(function(m,_,y,v){const S=y.imageManager.getPattern(m.from.toString()),E=y.imageManager.getPattern(m.to.toString()),{width:C,height:D}=y.imageManager.getPixelSize(),B=Math.pow(2,v.tileID.overscaledZ),L=v.tileSize*Math.pow(2,y.transform.tileZoom)/B,N=L*(v.tileID.canonical.x+v.tileID.wrap*B),X=L*v.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:S.tl,u_pattern_br_a:S.br,u_pattern_tl_b:E.tl,u_pattern_br_b:E.br,u_texsize:[C,D],u_mix:_.t,u_pattern_size_a:S.displaySize,u_pattern_size_b:E.displaySize,u_scale_a:_.fromScale,u_scale_b:_.toScale,u_tile_units_to_pixels:1/st(v,1,y.transform.tileZoom),u_pixel_coord_upper:[N>>16,X>>16],u_pixel_coord_lower:[65535&N,65535&X]}}(a,p,n,h),{u_matrix:o,u_opacity:t}),Kl={fillExtrusion:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_lightpos:new c.Uniform3f(o,t.u_lightpos),u_lightintensity:new c.Uniform1f(o,t.u_lightintensity),u_lightcolor:new c.Uniform3f(o,t.u_lightcolor),u_vertical_gradient:new c.Uniform1f(o,t.u_vertical_gradient),u_opacity:new c.Uniform1f(o,t.u_opacity)}),fillExtrusionPattern:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_lightpos:new c.Uniform3f(o,t.u_lightpos),u_lightintensity:new c.Uniform1f(o,t.u_lightintensity),u_lightcolor:new c.Uniform3f(o,t.u_lightcolor),u_vertical_gradient:new c.Uniform1f(o,t.u_vertical_gradient),u_height_factor:new c.Uniform1f(o,t.u_height_factor),u_image:new c.Uniform1i(o,t.u_image),u_texsize:new c.Uniform2f(o,t.u_texsize),u_pixel_coord_upper:new c.Uniform2f(o,t.u_pixel_coord_upper),u_pixel_coord_lower:new c.Uniform2f(o,t.u_pixel_coord_lower),u_scale:new c.Uniform3f(o,t.u_scale),u_fade:new c.Uniform1f(o,t.u_fade),u_opacity:new c.Uniform1f(o,t.u_opacity)}),fill:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix)}),fillPattern:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_image:new c.Uniform1i(o,t.u_image),u_texsize:new c.Uniform2f(o,t.u_texsize),u_pixel_coord_upper:new c.Uniform2f(o,t.u_pixel_coord_upper),u_pixel_coord_lower:new c.Uniform2f(o,t.u_pixel_coord_lower),u_scale:new c.Uniform3f(o,t.u_scale),u_fade:new c.Uniform1f(o,t.u_fade)}),fillOutline:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_world:new c.Uniform2f(o,t.u_world)}),fillOutlinePattern:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_world:new c.Uniform2f(o,t.u_world),u_image:new c.Uniform1i(o,t.u_image),u_texsize:new c.Uniform2f(o,t.u_texsize),u_pixel_coord_upper:new c.Uniform2f(o,t.u_pixel_coord_upper),u_pixel_coord_lower:new c.Uniform2f(o,t.u_pixel_coord_lower),u_scale:new c.Uniform3f(o,t.u_scale),u_fade:new c.Uniform1f(o,t.u_fade)}),circle:(o,t)=>({u_camera_to_center_distance:new c.Uniform1f(o,t.u_camera_to_center_distance),u_scale_with_map:new c.Uniform1i(o,t.u_scale_with_map),u_pitch_with_map:new c.Uniform1i(o,t.u_pitch_with_map),u_extrude_scale:new c.Uniform2f(o,t.u_extrude_scale),u_device_pixel_ratio:new c.Uniform1f(o,t.u_device_pixel_ratio),u_matrix:new c.UniformMatrix4f(o,t.u_matrix)}),collisionBox:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_camera_to_center_distance:new c.Uniform1f(o,t.u_camera_to_center_distance),u_pixels_to_tile_units:new c.Uniform1f(o,t.u_pixels_to_tile_units),u_extrude_scale:new c.Uniform2f(o,t.u_extrude_scale),u_overscale_factor:new c.Uniform1f(o,t.u_overscale_factor)}),collisionCircle:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_inv_matrix:new c.UniformMatrix4f(o,t.u_inv_matrix),u_camera_to_center_distance:new c.Uniform1f(o,t.u_camera_to_center_distance),u_viewport_size:new c.Uniform2f(o,t.u_viewport_size)}),debug:(o,t)=>({u_color:new c.UniformColor(o,t.u_color),u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_overlay:new c.Uniform1i(o,t.u_overlay),u_overlay_scale:new c.Uniform1f(o,t.u_overlay_scale)}),clippingMask:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix)}),heatmap:(o,t)=>({u_extrude_scale:new c.Uniform1f(o,t.u_extrude_scale),u_intensity:new c.Uniform1f(o,t.u_intensity),u_matrix:new c.UniformMatrix4f(o,t.u_matrix)}),heatmapTexture:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_world:new c.Uniform2f(o,t.u_world),u_image:new c.Uniform1i(o,t.u_image),u_color_ramp:new c.Uniform1i(o,t.u_color_ramp),u_opacity:new c.Uniform1f(o,t.u_opacity)}),hillshade:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_image:new c.Uniform1i(o,t.u_image),u_latrange:new c.Uniform2f(o,t.u_latrange),u_light:new c.Uniform2f(o,t.u_light),u_shadow:new c.UniformColor(o,t.u_shadow),u_highlight:new c.UniformColor(o,t.u_highlight),u_accent:new c.UniformColor(o,t.u_accent)}),hillshadePrepare:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_image:new c.Uniform1i(o,t.u_image),u_dimension:new c.Uniform2f(o,t.u_dimension),u_zoom:new c.Uniform1f(o,t.u_zoom),u_unpack:new c.Uniform4f(o,t.u_unpack)}),line:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_ratio:new c.Uniform1f(o,t.u_ratio),u_device_pixel_ratio:new c.Uniform1f(o,t.u_device_pixel_ratio),u_units_to_pixels:new c.Uniform2f(o,t.u_units_to_pixels)}),lineGradient:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_ratio:new c.Uniform1f(o,t.u_ratio),u_device_pixel_ratio:new c.Uniform1f(o,t.u_device_pixel_ratio),u_units_to_pixels:new c.Uniform2f(o,t.u_units_to_pixels),u_image:new c.Uniform1i(o,t.u_image),u_image_height:new c.Uniform1f(o,t.u_image_height)}),linePattern:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_texsize:new c.Uniform2f(o,t.u_texsize),u_ratio:new c.Uniform1f(o,t.u_ratio),u_device_pixel_ratio:new c.Uniform1f(o,t.u_device_pixel_ratio),u_image:new c.Uniform1i(o,t.u_image),u_units_to_pixels:new c.Uniform2f(o,t.u_units_to_pixels),u_scale:new c.Uniform3f(o,t.u_scale),u_fade:new c.Uniform1f(o,t.u_fade)}),lineSDF:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_ratio:new c.Uniform1f(o,t.u_ratio),u_device_pixel_ratio:new c.Uniform1f(o,t.u_device_pixel_ratio),u_units_to_pixels:new c.Uniform2f(o,t.u_units_to_pixels),u_patternscale_a:new c.Uniform2f(o,t.u_patternscale_a),u_patternscale_b:new c.Uniform2f(o,t.u_patternscale_b),u_sdfgamma:new c.Uniform1f(o,t.u_sdfgamma),u_image:new c.Uniform1i(o,t.u_image),u_tex_y_a:new c.Uniform1f(o,t.u_tex_y_a),u_tex_y_b:new c.Uniform1f(o,t.u_tex_y_b),u_mix:new c.Uniform1f(o,t.u_mix)}),raster:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_tl_parent:new c.Uniform2f(o,t.u_tl_parent),u_scale_parent:new c.Uniform1f(o,t.u_scale_parent),u_buffer_scale:new c.Uniform1f(o,t.u_buffer_scale),u_fade_t:new c.Uniform1f(o,t.u_fade_t),u_opacity:new c.Uniform1f(o,t.u_opacity),u_image0:new c.Uniform1i(o,t.u_image0),u_image1:new c.Uniform1i(o,t.u_image1),u_brightness_low:new c.Uniform1f(o,t.u_brightness_low),u_brightness_high:new c.Uniform1f(o,t.u_brightness_high),u_saturation_factor:new c.Uniform1f(o,t.u_saturation_factor),u_contrast_factor:new c.Uniform1f(o,t.u_contrast_factor),u_spin_weights:new c.Uniform3f(o,t.u_spin_weights)}),symbolIcon:(o,t)=>({u_is_size_zoom_constant:new c.Uniform1i(o,t.u_is_size_zoom_constant),u_is_size_feature_constant:new c.Uniform1i(o,t.u_is_size_feature_constant),u_size_t:new c.Uniform1f(o,t.u_size_t),u_size:new c.Uniform1f(o,t.u_size),u_camera_to_center_distance:new c.Uniform1f(o,t.u_camera_to_center_distance),u_pitch:new c.Uniform1f(o,t.u_pitch),u_rotate_symbol:new c.Uniform1i(o,t.u_rotate_symbol),u_aspect_ratio:new c.Uniform1f(o,t.u_aspect_ratio),u_fade_change:new c.Uniform1f(o,t.u_fade_change),u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_label_plane_matrix:new c.UniformMatrix4f(o,t.u_label_plane_matrix),u_coord_matrix:new c.UniformMatrix4f(o,t.u_coord_matrix),u_is_text:new c.Uniform1i(o,t.u_is_text),u_pitch_with_map:new c.Uniform1i(o,t.u_pitch_with_map),u_texsize:new c.Uniform2f(o,t.u_texsize),u_texture:new c.Uniform1i(o,t.u_texture)}),symbolSDF:(o,t)=>({u_is_size_zoom_constant:new c.Uniform1i(o,t.u_is_size_zoom_constant),u_is_size_feature_constant:new c.Uniform1i(o,t.u_is_size_feature_constant),u_size_t:new c.Uniform1f(o,t.u_size_t),u_size:new c.Uniform1f(o,t.u_size),u_camera_to_center_distance:new c.Uniform1f(o,t.u_camera_to_center_distance),u_pitch:new c.Uniform1f(o,t.u_pitch),u_rotate_symbol:new c.Uniform1i(o,t.u_rotate_symbol),u_aspect_ratio:new c.Uniform1f(o,t.u_aspect_ratio),u_fade_change:new c.Uniform1f(o,t.u_fade_change),u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_label_plane_matrix:new c.UniformMatrix4f(o,t.u_label_plane_matrix),u_coord_matrix:new c.UniformMatrix4f(o,t.u_coord_matrix),u_is_text:new c.Uniform1i(o,t.u_is_text),u_pitch_with_map:new c.Uniform1i(o,t.u_pitch_with_map),u_texsize:new c.Uniform2f(o,t.u_texsize),u_texture:new c.Uniform1i(o,t.u_texture),u_gamma_scale:new c.Uniform1f(o,t.u_gamma_scale),u_device_pixel_ratio:new c.Uniform1f(o,t.u_device_pixel_ratio),u_is_halo:new c.Uniform1i(o,t.u_is_halo)}),symbolTextAndIcon:(o,t)=>({u_is_size_zoom_constant:new c.Uniform1i(o,t.u_is_size_zoom_constant),u_is_size_feature_constant:new c.Uniform1i(o,t.u_is_size_feature_constant),u_size_t:new c.Uniform1f(o,t.u_size_t),u_size:new c.Uniform1f(o,t.u_size),u_camera_to_center_distance:new c.Uniform1f(o,t.u_camera_to_center_distance),u_pitch:new c.Uniform1f(o,t.u_pitch),u_rotate_symbol:new c.Uniform1i(o,t.u_rotate_symbol),u_aspect_ratio:new c.Uniform1f(o,t.u_aspect_ratio),u_fade_change:new c.Uniform1f(o,t.u_fade_change),u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_label_plane_matrix:new c.UniformMatrix4f(o,t.u_label_plane_matrix),u_coord_matrix:new c.UniformMatrix4f(o,t.u_coord_matrix),u_is_text:new c.Uniform1i(o,t.u_is_text),u_pitch_with_map:new c.Uniform1i(o,t.u_pitch_with_map),u_texsize:new c.Uniform2f(o,t.u_texsize),u_texsize_icon:new c.Uniform2f(o,t.u_texsize_icon),u_texture:new c.Uniform1i(o,t.u_texture),u_texture_icon:new c.Uniform1i(o,t.u_texture_icon),u_gamma_scale:new c.Uniform1f(o,t.u_gamma_scale),u_device_pixel_ratio:new c.Uniform1f(o,t.u_device_pixel_ratio),u_is_halo:new c.Uniform1i(o,t.u_is_halo)}),background:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_opacity:new c.Uniform1f(o,t.u_opacity),u_color:new c.UniformColor(o,t.u_color)}),backgroundPattern:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_opacity:new c.Uniform1f(o,t.u_opacity),u_image:new c.Uniform1i(o,t.u_image),u_pattern_tl_a:new c.Uniform2f(o,t.u_pattern_tl_a),u_pattern_br_a:new c.Uniform2f(o,t.u_pattern_br_a),u_pattern_tl_b:new c.Uniform2f(o,t.u_pattern_tl_b),u_pattern_br_b:new c.Uniform2f(o,t.u_pattern_br_b),u_texsize:new c.Uniform2f(o,t.u_texsize),u_mix:new c.Uniform1f(o,t.u_mix),u_pattern_size_a:new c.Uniform2f(o,t.u_pattern_size_a),u_pattern_size_b:new c.Uniform2f(o,t.u_pattern_size_b),u_scale_a:new c.Uniform1f(o,t.u_scale_a),u_scale_b:new c.Uniform1f(o,t.u_scale_b),u_pixel_coord_upper:new c.Uniform2f(o,t.u_pixel_coord_upper),u_pixel_coord_lower:new c.Uniform2f(o,t.u_pixel_coord_lower),u_tile_units_to_pixels:new c.Uniform1f(o,t.u_tile_units_to_pixels)}),terrain:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_texture:new c.Uniform1i(o,t.u_texture),u_ele_delta:new c.Uniform1f(o,t.u_ele_delta)}),terrainDepth:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_ele_delta:new c.Uniform1f(o,t.u_ele_delta)}),terrainCoords:(o,t)=>({u_matrix:new c.UniformMatrix4f(o,t.u_matrix),u_texture:new c.Uniform1i(o,t.u_texture),u_terrain_coords_id:new c.Uniform1f(o,t.u_terrain_coords_id),u_ele_delta:new c.Uniform1f(o,t.u_ele_delta)})};class va{constructor(t,n,a){this.context=t;const h=t.gl;this.buffer=h.createBuffer(),this.dynamicDraw=Boolean(a),this.context.unbindVAO(),t.bindElementBuffer.set(this.buffer),h.bufferData(h.ELEMENT_ARRAY_BUFFER,n.arrayBuffer,this.dynamicDraw?h.DYNAMIC_DRAW:h.STATIC_DRAW),this.dynamicDraw||delete n.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(t){const n=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),n.bufferSubData(n.ELEMENT_ARRAY_BUFFER,0,t.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}const ba={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class wa{constructor(t,n,a,h){this.length=n.length,this.attributes=a,this.itemSize=n.bytesPerElement,this.dynamicDraw=h,this.context=t;const p=t.gl;this.buffer=p.createBuffer(),t.bindVertexBuffer.set(this.buffer),p.bufferData(p.ARRAY_BUFFER,n.arrayBuffer,this.dynamicDraw?p.DYNAMIC_DRAW:p.STATIC_DRAW),this.dynamicDraw||delete n.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 n=this.context.gl;this.bind(),n.bufferSubData(n.ARRAY_BUFFER,0,t.arrayBuffer)}enableAttributes(t,n){for(let a=0;a<this.attributes.length;a++){const h=n.attributes[this.attributes[a].name];h!==void 0&&t.enableVertexAttribArray(h)}}setVertexAttribPointers(t,n,a){for(let h=0;h<this.attributes.length;h++){const p=this.attributes[h],m=n.attributes[p.name];m!==void 0&&t.vertexAttribPointer(m,p.components,t[ba[p.type]],!1,this.itemSize,p.offset+this.itemSize*(a||0))}}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}class xt{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 Oo extends xt{getDefault(){return c.Color.transparent}set(t){const n=this.current;(t.r!==n.r||t.g!==n.g||t.b!==n.b||t.a!==n.a||this.dirty)&&(this.gl.clearColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1)}}class Uo extends xt{getDefault(){return 1}set(t){(t!==this.current||this.dirty)&&(this.gl.clearDepth(t),this.current=t,this.dirty=!1)}}class Jl extends xt{getDefault(){return 0}set(t){(t!==this.current||this.dirty)&&(this.gl.clearStencil(t),this.current=t,this.dirty=!1)}}class Hn extends xt{getDefault(){return[!0,!0,!0,!0]}set(t){const n=this.current;(t[0]!==n[0]||t[1]!==n[1]||t[2]!==n[2]||t[3]!==n[3]||this.dirty)&&(this.gl.colorMask(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1)}}class Kn extends xt{getDefault(){return!0}set(t){(t!==this.current||this.dirty)&&(this.gl.depthMask(t),this.current=t,this.dirty=!1)}}class Vo extends xt{getDefault(){return 255}set(t){(t!==this.current||this.dirty)&&(this.gl.stencilMask(t),this.current=t,this.dirty=!1)}}class Vi extends xt{getDefault(){return{func:this.gl.ALWAYS,ref:0,mask:255}}set(t){const n=this.current;(t.func!==n.func||t.ref!==n.ref||t.mask!==n.mask||this.dirty)&&(this.gl.stencilFunc(t.func,t.ref,t.mask),this.current=t,this.dirty=!1)}}class Ta extends xt{getDefault(){const t=this.gl;return[t.KEEP,t.KEEP,t.KEEP]}set(t){const n=this.current;(t[0]!==n[0]||t[1]!==n[1]||t[2]!==n[2]||this.dirty)&&(this.gl.stencilOp(t[0],t[1],t[2]),this.current=t,this.dirty=!1)}}class Rs extends xt{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;t?n.enable(n.STENCIL_TEST):n.disable(n.STENCIL_TEST),this.current=t,this.dirty=!1}}class Bs extends xt{getDefault(){return[0,1]}set(t){const n=this.current;(t[0]!==n[0]||t[1]!==n[1]||this.dirty)&&(this.gl.depthRange(t[0],t[1]),this.current=t,this.dirty=!1)}}class Sa extends xt{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;t?n.enable(n.DEPTH_TEST):n.disable(n.DEPTH_TEST),this.current=t,this.dirty=!1}}class Ea extends xt{getDefault(){return this.gl.LESS}set(t){(t!==this.current||this.dirty)&&(this.gl.depthFunc(t),this.current=t,this.dirty=!1)}}class Fs extends xt{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;t?n.enable(n.BLEND):n.disable(n.BLEND),this.current=t,this.dirty=!1}}class Ia extends xt{getDefault(){const t=this.gl;return[t.ONE,t.ZERO]}set(t){const n=this.current;(t[0]!==n[0]||t[1]!==n[1]||this.dirty)&&(this.gl.blendFunc(t[0],t[1]),this.current=t,this.dirty=!1)}}class Aa extends xt{getDefault(){return c.Color.transparent}set(t){const n=this.current;(t.r!==n.r||t.g!==n.g||t.b!==n.b||t.a!==n.a||this.dirty)&&(this.gl.blendColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1)}}class Os extends xt{getDefault(){return this.gl.FUNC_ADD}set(t){(t!==this.current||this.dirty)&&(this.gl.blendEquation(t),this.current=t,this.dirty=!1)}}class No extends xt{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;t?n.enable(n.CULL_FACE):n.disable(n.CULL_FACE),this.current=t,this.dirty=!1}}class $o extends xt{getDefault(){return this.gl.BACK}set(t){(t!==this.current||this.dirty)&&(this.gl.cullFace(t),this.current=t,this.dirty=!1)}}class xn extends xt{getDefault(){return this.gl.CCW}set(t){(t!==this.current||this.dirty)&&(this.gl.frontFace(t),this.current=t,this.dirty=!1)}}class Yl extends xt{getDefault(){return null}set(t){(t!==this.current||this.dirty)&&(this.gl.useProgram(t),this.current=t,this.dirty=!1)}}class Ql extends xt{getDefault(){return this.gl.TEXTURE0}set(t){(t!==this.current||this.dirty)&&(this.gl.activeTexture(t),this.current=t,this.dirty=!1)}}class ec extends xt{getDefault(){const t=this.gl;return[0,0,t.drawingBufferWidth,t.drawingBufferHeight]}set(t){const n=this.current;(t[0]!==n[0]||t[1]!==n[1]||t[2]!==n[2]||t[3]!==n[3]||this.dirty)&&(this.gl.viewport(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1)}}class tc extends xt{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;n.bindFramebuffer(n.FRAMEBUFFER,t),this.current=t,this.dirty=!1}}class ic extends xt{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;n.bindRenderbuffer(n.RENDERBUFFER,t),this.current=t,this.dirty=!1}}class rc extends xt{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;n.bindTexture(n.TEXTURE_2D,t),this.current=t,this.dirty=!1}}class Ca extends xt{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;n.bindBuffer(n.ARRAY_BUFFER,t),this.current=t,this.dirty=!1}}class Us extends xt{getDefault(){return null}set(t){const n=this.gl;n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,t),this.current=t,this.dirty=!1}}class Ma extends xt{constructor(t){super(t),this.vao=t.extVertexArrayObject}getDefault(){return null}set(t){this.vao&&(t!==this.current||this.dirty)&&(this.vao.bindVertexArrayOES(t),this.current=t,this.dirty=!1)}}class Pa extends xt{getDefault(){return 4}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;n.pixelStorei(n.UNPACK_ALIGNMENT,t),this.current=t,this.dirty=!1}}class vn extends xt{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t),this.current=t,this.dirty=!1}}class jo extends xt{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,t),this.current=t,this.dirty=!1}}class ka extends xt{constructor(t,n){super(t),this.context=t,this.parent=n}getDefault(){return null}}class za extends ka{setDirty(){this.dirty=!0}set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const n=this.gl;n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,t,0),this.current=t,this.dirty=!1}}class Kr extends ka{set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const n=this.gl;n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.RENDERBUFFER,t),this.current=t,this.dirty=!1}}class Go{constructor(t,n,a,h){this.context=t,this.width=n,this.height=a;const p=t.gl,m=this.framebuffer=p.createFramebuffer();if(this.colorAttachment=new za(t,m),h&&(this.depthAttachment=new Kr(t,m)),p.checkFramebufferStatus(p.FRAMEBUFFER)!==p.FRAMEBUFFER_COMPLETE)throw new Error("Framebuffer is not complete")}destroy(){const t=this.context.gl,n=this.colorAttachment.get();if(n&&t.deleteTexture(n),this.depthAttachment){const a=this.depthAttachment.get();a&&t.deleteRenderbuffer(a)}t.deleteFramebuffer(this.framebuffer)}}class Ut{constructor(t,n,a){this.blendFunction=t,this.blendColor=n,this.mask=a}}Ut.Replace=[1,0],Ut.disabled=new Ut(Ut.Replace,c.Color.transparent,[!1,!1,!1,!1]),Ut.unblended=new Ut(Ut.Replace,c.Color.transparent,[!0,!0,!0,!0]),Ut.alphaBlended=new Ut([1,771],c.Color.transparent,[!0,!0,!0,!0]);class bn{constructor(t){this.gl=t,this.extVertexArrayObject=this.gl.getExtension("OES_vertex_array_object"),this.clearColor=new Oo(this),this.clearDepth=new Uo(this),this.clearStencil=new Jl(this),this.colorMask=new Hn(this),this.depthMask=new Kn(this),this.stencilMask=new Vo(this),this.stencilFunc=new Vi(this),this.stencilOp=new Ta(this),this.stencilTest=new Rs(this),this.depthRange=new Bs(this),this.depthTest=new Sa(this),this.depthFunc=new Ea(this),this.blend=new Fs(this),this.blendFunc=new Ia(this),this.blendColor=new Aa(this),this.blendEquation=new Os(this),this.cullFace=new No(this),this.cullFaceSide=new $o(this),this.frontFace=new xn(this),this.program=new Yl(this),this.activeTexture=new Ql(this),this.viewport=new ec(this),this.bindFramebuffer=new tc(this),this.bindRenderbuffer=new ic(this),this.bindTexture=new rc(this),this.bindVertexBuffer=new Ca(this),this.bindElementBuffer=new Us(this),this.bindVertexArrayOES=this.extVertexArrayObject&&new Ma(this),this.pixelStoreUnpack=new Pa(this),this.pixelStoreUnpackPremultiplyAlpha=new vn(this),this.pixelStoreUnpackFlipY=new jo(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.extTextureHalfFloat=t.getExtension("OES_texture_half_float"),this.extTextureHalfFloat&&(t.getExtension("OES_texture_half_float_linear"),this.extRenderToTextureHalfFloat=t.getExtension("EXT_color_buffer_half_float")),this.extTimerQuery=t.getExtension("EXT_disjoint_timer_query"),this.maxTextureSize=t.getParameter(t.MAX_TEXTURE_SIZE)}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.extVertexArrayObject&&(this.bindVertexArrayOES.dirty=!0),this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0}createIndexBuffer(t,n){return new va(this,t,n)}createVertexBuffer(t,n,a){return new wa(this,t,n,a)}createRenderbuffer(t,n,a){const h=this.gl,p=h.createRenderbuffer();return this.bindRenderbuffer.set(p),h.renderbufferStorage(h.RENDERBUFFER,t,n,a),this.bindRenderbuffer.set(null),p}createFramebuffer(t,n,a){return new Go(this,t,n,a)}clear({color:t,depth:n}){const a=this.gl;let h=0;t&&(h|=a.COLOR_BUFFER_BIT,this.clearColor.set(t),this.colorMask.set([!0,!0,!0,!0])),n!==void 0&&(h|=a.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(n),this.depthMask.set(!0)),a.clear(h)}setCullFace(t){t.enable===!1?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(t){Me(t.blendFunction,Ut.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(t.blendFunction),this.blendColor.set(t.blendColor)),this.colorMask.set(t.mask)}unbindVAO(){this.extVertexArrayObject&&this.bindVertexArrayOES.set(null)}}class dt{constructor(t,n,a){this.func=t,this.mask=n,this.range=a}}dt.ReadOnly=!1,dt.ReadWrite=!0,dt.disabled=new dt(519,dt.ReadOnly,[0,1]);const Jn=7680;class et{constructor(t,n,a,h,p,m){this.test=t,this.ref=n,this.mask=a,this.fail=h,this.depthFail=p,this.pass=m}}et.disabled=new et({func:519,mask:0},0,0,Jn,Jn,Jn);class kt{constructor(t,n,a){this.enable=t,this.mode=n,this.frontFace=a}}let Vs;function La(o,t,n,a,h,p,m){const _=o.context,y=_.gl,v=o.useProgram("collisionBox"),S=[];let E=0,C=0;for(let U=0;U<a.length;U++){const W=a[U],te=t.getTile(W),ae=te.getBucket(n);if(!ae)continue;let he=W.posMatrix;h[0]===0&&h[1]===0||(he=o.translatePosMatrix(W.posMatrix,te,h,p));const de=m?ae.textCollisionBox:ae.iconCollisionBox,we=ae.collisionCircleArray;if(we.length>0){const ye=c.create(),Ae=he;c.mul(ye,ae.placementInvProjMatrix,o.transform.glCoordMatrix),c.mul(ye,ye,ae.placementViewportMatrix),S.push({circleArray:we,circleOffset:C,transform:Ae,invTransform:ye,coord:W}),E+=we.length/4,C=E}de&&v.draw(_,y.LINES,dt.disabled,et.disabled,o.colorModeForRenderPass(),kt.disabled,Hr(he,o.transform,te),o.style.map.terrain&&o.style.map.terrain.getTerrainData(W),n.id,de.layoutVertexBuffer,de.indexBuffer,de.segments,null,o.transform.zoom,null,null,de.collisionVertexBuffer)}if(!m||!S.length)return;const D=o.useProgram("collisionCircle"),B=new c.CollisionCircleLayoutArray;B.resize(4*E),B._trim();let L=0;for(const U of S)for(let W=0;W<U.circleArray.length/4;W++){const te=4*W,ae=U.circleArray[te+0],he=U.circleArray[te+1],de=U.circleArray[te+2],we=U.circleArray[te+3];B.emplace(L++,ae,he,de,we,0),B.emplace(L++,ae,he,de,we,1),B.emplace(L++,ae,he,de,we,2),B.emplace(L++,ae,he,de,we,3)}(!Vs||Vs.length<2*E)&&(Vs=function(U){const W=2*U,te=new c.QuadTriangleArray;te.resize(W),te._trim();for(let ae=0;ae<W;ae++){const he=6*ae;te.uint16[he+0]=4*ae+0,te.uint16[he+1]=4*ae+1,te.uint16[he+2]=4*ae+2,te.uint16[he+3]=4*ae+2,te.uint16[he+4]=4*ae+3,te.uint16[he+5]=4*ae+0}return te}(E));const N=_.createIndexBuffer(Vs,!0),X=_.createVertexBuffer(B,c.collisionCircleLayout.members,!0);for(const U of S){const W={u_matrix:U.transform,u_inv_matrix:U.invTransform,u_camera_to_center_distance:(q=o.transform).cameraToCenterDistance,u_viewport_size:[q.width,q.height]};D.draw(_,y.TRIANGLES,dt.disabled,et.disabled,o.colorModeForRenderPass(),kt.disabled,W,o.style.map.terrain&&o.style.map.terrain.getTerrainData(U.coord),n.id,X,N,c.SegmentVector.simpleSegment(0,2*U.circleOffset,U.circleArray.length,U.circleArray.length/2),null,o.transform.zoom,null,null,null)}var q;X.destroy(),N.destroy()}kt.disabled=new kt(!1,1029,2305),kt.backCCW=new kt(!0,1029,2305);const Yn=c.identity(new Float32Array(16));function nc(o,t,n,a,h,p){const{horizontalAlign:m,verticalAlign:_}=c.getAnchorAlignment(o),y=-(m-.5)*t,v=-(_-.5)*n,S=c.evaluateVariableOffset(o,a);return new c.pointGeometry((y/h+S[0])*p,(v/h+S[1])*p)}function sc(o,t,n,a,h,p,m,_,y,v,S){const E=o.text.placedSymbolArray,C=o.text.dynamicLayoutVertexArray,D=o.icon.dynamicLayoutVertexArray,B={};C.clear();for(let L=0;L<E.length;L++){const N=E.get(L),X=N.hidden||!N.crossTileID||o.allowVerticalPlacement&&!N.placedOrientation?null:a[N.crossTileID];if(X){const q=new c.pointGeometry(N.anchorX,N.anchorY),U=Ce(q,n?m:p,S),W=at(h.cameraToCenterDistance,U.signedDistanceFromCamera);let te=c.evaluateSizeForFeature(o.textSizeData,y,N)*W/c.ONE_EM;n&&(te*=o.tilePixelRatio/_);const{width:ae,height:he,anchor:de,textOffset:we,textBoxScale:ye}=X,Ae=nc(de,ae,he,we,ye,te),Ge=n?Ce(q.add(Ae),p,S).point:U.point.add(t?Ae.rotate(-h.angle):Ae),rt=o.allowVerticalPlacement&&N.placedOrientation===c.WritingMode.vertical?Math.PI/2:0;for(let nt=0;nt<N.numGlyphs;nt++)c.addDynamicAttributes(C,Ge,rt);v&&N.associatedIconIndex>=0&&(B[N.associatedIconIndex]={shiftedAnchor:Ge,angle:rt})}else Xt(N.numGlyphs,C)}if(v){D.clear();const L=o.icon.placedSymbolArray;for(let N=0;N<L.length;N++){const X=L.get(N);if(X.hidden)Xt(X.numGlyphs,D);else{const q=B[N];if(q)for(let U=0;U<X.numGlyphs;U++)c.addDynamicAttributes(D,q.shiftedAnchor,q.angle);else Xt(X.numGlyphs,D)}}o.icon.dynamicLayoutVertexBuffer.updateData(D)}o.text.dynamicLayoutVertexBuffer.updateData(C)}function qo(o,t,n){return n.iconsInText&&t?"symbolTextAndIcon":o?"symbolSDF":"symbolIcon"}function Zo(o,t,n,a,h,p,m,_,y,v,S,E){const C=o.context,D=C.gl,B=o.transform,L=_==="map",N=y==="map",X=_!=="viewport"&&n.layout.get("symbol-placement")!=="point",q=L&&!N&&!X,U=!n.layout.get("symbol-sort-key").isConstant();let W=!1;const te=o.depthModeForSublayer(0,dt.ReadOnly),ae=n.layout.get("text-variable-anchor"),he=[];for(const de of a){const we=t.getTile(de),ye=we.getBucket(n);if(!ye)continue;const Ae=h?ye.text:ye.icon;if(!Ae||!Ae.segments.get().length||!Ae.hasVisibleVertices)continue;const Ge=Ae.programConfigurations.get(n.id),rt=h||ye.sdfIcons,nt=h?ye.textSizeData:ye.iconSizeData,We=N||B.pitch!==0,Mt=o.useProgram(qo(rt,h,ye),Ge),Tt=c.evaluateSizeForZoom(nt,B.zoom),mt=o.style.map.terrain&&o.style.map.terrain.getTerrainData(de);let yt,bt,Ei,yr,hr=[0,0],Nt=null;if(h)bt=we.glyphAtlasTexture,Ei=D.LINEAR,yt=we.glyphAtlasTexture.size,ye.iconsInText&&(hr=we.imageAtlasTexture.size,Nt=we.imageAtlasTexture,yr=We||o.options.rotating||o.options.zooming||nt.kind==="composite"||nt.kind==="camera"?D.LINEAR:D.NEAREST);else{const tr=n.layout.get("icon-size").constantOr(0)!==1||ye.iconsNeedLinear;bt=we.imageAtlasTexture,Ei=rt||o.options.rotating||o.options.zooming||tr||We?D.LINEAR:D.NEAREST,yt=we.imageAtlasTexture.size}const $r=st(we,1,o.transform.zoom),Ii=Ee(de.posMatrix,N,L,o.transform,$r),Ai=Pe(de.posMatrix,N,L,o.transform,$r),Qr=ae&&ye.hasTextData(),kn=n.layout.get("icon-text-fit")!=="none"&&Qr&&ye.hasIconData();if(X){const tr=o.style.map.terrain?(zn,Ys)=>o.style.map.terrain.getElevation(de,zn,Ys):null,ir=n.layout.get("text-rotation-alignment")==="map";xe(ye,de.posMatrix,o,h,Ii,Ai,N,v,ir,tr)}const Qt=o.translatePosMatrix(de.posMatrix,we,p,m),$t=X||h&&ae||kn?Yn:Ii,Et=o.translatePosMatrix(Ai,we,p,m,!0),ci=rt&&n.paint.get(h?"text-halo-width":"icon-halo-width").constantOr(1)!==0;let Li;Li=rt?ye.iconsInText?xa(nt.kind,Tt,q,N,o,Qt,$t,Et,yt,hr):ya(nt.kind,Tt,q,N,o,Qt,$t,Et,h,yt,!0):_a(nt.kind,Tt,q,N,o,Qt,$t,Et,h,yt);const jt={program:Mt,buffers:Ae,uniformValues:Li,atlasTexture:bt,atlasTextureIcon:Nt,atlasInterpolation:Ei,atlasInterpolationIcon:yr,isSDF:rt,hasHalo:ci};if(U&&ye.canOverlap){W=!0;const tr=Ae.segments.get();for(const ir of tr)he.push({segments:new c.SegmentVector([ir]),sortKey:ir.sortKey,state:jt,terrainData:mt})}else he.push({segments:Ae.segments,sortKey:0,state:jt,terrainData:mt})}W&&he.sort((de,we)=>de.sortKey-we.sortKey);for(const de of he){const we=de.state;if(C.activeTexture.set(D.TEXTURE0),we.atlasTexture.bind(we.atlasInterpolation,D.CLAMP_TO_EDGE),we.atlasTextureIcon&&(C.activeTexture.set(D.TEXTURE1),we.atlasTextureIcon&&we.atlasTextureIcon.bind(we.atlasInterpolationIcon,D.CLAMP_TO_EDGE)),we.isSDF){const ye=we.uniformValues;we.hasHalo&&(ye.u_is_halo=1,Ns(we.buffers,de.segments,n,o,we.program,te,S,E,ye,de.terrainData)),ye.u_is_halo=0}Ns(we.buffers,de.segments,n,o,we.program,te,S,E,we.uniformValues,de.terrainData)}}function Ns(o,t,n,a,h,p,m,_,y,v){const S=a.context;h.draw(S,S.gl.TRIANGLES,p,m,_,kt.disabled,y,v,n.id,o.layoutVertexBuffer,o.indexBuffer,t,n.paint,a.transform.zoom,o.programConfigurations.get(n.id),o.dynamicLayoutVertexBuffer,o.opacityVertexBuffer)}function Qn(o,t,n,a,h){if(!n||!a||!a.imageAtlas)return;const p=a.imageAtlas.patternPositions;let m=p[n.to.toString()],_=p[n.from.toString()];if(!m||!_){const y=h.getPaintProperty(t);m=p[y],_=p[y]}m&&_&&o.setConstantPatternPositions(m,_)}function es(o,t,n,a,h,p,m){const _=o.context.gl,y="fill-pattern",v=n.paint.get(y),S=v&&v.constantOr(1),E=n.getCrossfadeParameters();let C,D,B,L,N;m?(D=S&&!n.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",C=_.LINES):(D=S?"fillPattern":"fill",C=_.TRIANGLES);const X=v.constantOr(null);for(const q of a){const U=t.getTile(q);if(S&&!U.patternsLoaded())continue;const W=U.getBucket(n);if(!W)continue;const te=W.programConfigurations.get(n.id),ae=o.useProgram(D,te),he=o.style.map.terrain&&o.style.map.terrain.getTerrainData(q);S&&(o.context.activeTexture.set(_.TEXTURE0),U.imageAtlasTexture.bind(_.LINEAR,_.CLAMP_TO_EDGE),te.updatePaintBuffers(E)),Qn(te,y,X,U,n);const de=he?q:null,we=o.translatePosMatrix(de?de.posMatrix:q.posMatrix,U,n.paint.get("fill-translate"),n.paint.get("fill-translate-anchor"));if(m){L=W.indexBuffer2,N=W.segments2;const ye=[_.drawingBufferWidth,_.drawingBufferHeight];B=D==="fillOutlinePattern"&&S?Lo(we,o,E,U,ye):zo(we,ye)}else L=W.indexBuffer,N=W.segments,B=S?fa(we,o,E,U):Ps(we);ae.draw(o.context,C,h,o.stencilModeForClipping(q),p,kt.disabled,B,he,n.id,W.layoutVertexBuffer,L,N,n.paint,o.transform.zoom,te)}}function ts(o,t,n,a,h,p,m){const _=o.context,y=_.gl,v="fill-extrusion-pattern",S=n.paint.get(v),E=S.constantOr(1),C=n.getCrossfadeParameters(),D=n.paint.get("fill-extrusion-opacity"),B=S.constantOr(null);for(const L of a){const N=t.getTile(L),X=N.getBucket(n);if(!X)continue;const q=o.style.map.terrain&&o.style.map.terrain.getTerrainData(L),U=X.programConfigurations.get(n.id),W=o.useProgram(E?"fillExtrusionPattern":"fillExtrusion",U);E&&(o.context.activeTexture.set(y.TEXTURE0),N.imageAtlasTexture.bind(y.LINEAR,y.CLAMP_TO_EDGE),U.updatePaintBuffers(C)),Qn(U,v,B,N,n);const te=o.translatePosMatrix(L.posMatrix,N,n.paint.get("fill-extrusion-translate"),n.paint.get("fill-extrusion-translate-anchor")),ae=n.paint.get("fill-extrusion-vertical-gradient"),he=E?Wl(te,o,ae,D,L,C,N):ma(te,o,ae,D);W.draw(_,_.gl.TRIANGLES,h,p,m,kt.backCCW,he,q,n.id,X.layoutVertexBuffer,X.indexBuffer,X.segments,n.paint,o.transform.zoom,U,o.style.map.terrain&&X.centroidVertexBuffer)}}function Da(o,t,n,a,h,p,m){const _=o.context,y=_.gl,v=n.fbo;if(!v)return;const S=o.useProgram("hillshade"),E=o.style.map.terrain&&o.style.map.terrain.getTerrainData(t);_.activeTexture.set(y.TEXTURE0),y.bindTexture(y.TEXTURE_2D,v.colorAttachment.get()),S.draw(_,y.TRIANGLES,h,p,m,kt.disabled,((C,D,B,L)=>{const N=B.paint.get("hillshade-shadow-color"),X=B.paint.get("hillshade-highlight-color"),q=B.paint.get("hillshade-accent-color");let U=B.paint.get("hillshade-illumination-direction")*(Math.PI/180);B.paint.get("hillshade-illumination-anchor")==="viewport"&&(U-=C.transform.angle);const W=!C.options.moving;return{u_matrix:L?L.posMatrix:C.transform.calculatePosMatrix(D.tileID.toUnwrapped(),W),u_image:0,u_latrange:zs(0,D.tileID),u_light:[B.paint.get("hillshade-exaggeration"),U],u_shadow:N,u_highlight:X,u_accent:q}})(o,n,a,E?t:null),E,a.id,o.rasterBoundsBuffer,o.quadTriangleIndexBuffer,o.rasterBoundsSegments)}function Xo(o,t,n,a,h,p){const m=o.context,_=m.gl,y=t.dem;if(y&&y.data){const v=y.dim,S=y.stride,E=y.getPixels();if(m.activeTexture.set(_.TEXTURE1),m.pixelStoreUnpackPremultiplyAlpha.set(!1),t.demTexture=t.demTexture||o.getTileTexture(S),t.demTexture){const D=t.demTexture;D.update(E,{premultiply:!1}),D.bind(_.NEAREST,_.CLAMP_TO_EDGE)}else t.demTexture=new Dt(m,E,_.RGBA,{premultiply:!1}),t.demTexture.bind(_.NEAREST,_.CLAMP_TO_EDGE);m.activeTexture.set(_.TEXTURE0);let C=t.fbo;if(!C){const D=new Dt(m,{width:v,height:v,data:null},_.RGBA);D.bind(_.LINEAR,_.CLAMP_TO_EDGE),C=t.fbo=m.createFramebuffer(v,v,!0),C.colorAttachment.set(D.texture)}m.bindFramebuffer.set(C.framebuffer),m.viewport.set([0,0,v,v]),o.useProgram("hillshadePrepare").draw(m,_.TRIANGLES,a,h,p,kt.disabled,((D,B)=>{const L=B.stride,N=c.create();return c.ortho(N,0,c.EXTENT,-c.EXTENT,0,0,1),c.translate(N,N,[0,-c.EXTENT,0]),{u_matrix:N,u_image:1,u_dimension:[L,L],u_zoom:D.overscaledZ,u_unpack:B.getUnpackVector()}})(t.tileID,y),null,n.id,o.rasterBoundsBuffer,o.quadTriangleIndexBuffer,o.rasterBoundsSegments),t.needsHillshadePrepare=!1}}function $s(o,t,n,a,h,p){const m=a.paint.get("raster-fade-duration");if(!p&&m>0){const _=c.exported.now(),y=(_-o.timeAdded)/m,v=t?(_-t.timeAdded)/m:-1,S=n.getSource(),E=h.coveringZoomLevel({tileSize:S.tileSize,roundZoom:S.roundZoom}),C=!t||Math.abs(t.tileID.overscaledZ-E)>Math.abs(o.tileID.overscaledZ-E),D=C&&o.refreshedUponExpiration?1:c.clamp(C?y:1-v,0,1);return o.refreshedUponExpiration&&y>=1&&(o.refreshedUponExpiration=!1),t?{opacity:1,mix:1-D}:{opacity:D,mix:0}}return{opacity:1,mix:0}}const js=new c.Color(1,0,0,1),er=new c.Color(0,1,0,1),Wo=new c.Color(0,0,1,1),Ra=new c.Color(1,0,1,1),Ho=new c.Color(0,1,1,1);function Jr(o,t,n,a){wn(o,0,t+n/2,o.transform.width,n,a)}function is(o,t,n,a){wn(o,t-n/2,0,n,o.transform.height,a)}function wn(o,t,n,a,h,p){const m=o.context,_=m.gl;_.enable(_.SCISSOR_TEST),_.scissor(t*o.pixelRatio,n*o.pixelRatio,a*o.pixelRatio,h*o.pixelRatio),m.clear({color:p}),_.disable(_.SCISSOR_TEST)}function ac(o,t,n){const a=o.context,h=a.gl,p=n.posMatrix,m=o.useProgram("debug"),_=dt.disabled,y=et.disabled,v=o.colorModeForRenderPass(),S="$debug",E=o.style.map.terrain&&o.style.map.terrain.getTerrainData(n);a.activeTexture.set(h.TEXTURE0),o.emptyTexture.bind(h.LINEAR,h.CLAMP_TO_EDGE);const C=t.getTileByID(n.key).latestRawTileData,D=Math.floor((C&&C.byteLength||0)/1024),B=t.getTile(n).tileSize,L=512/Math.min(B,512)*(n.overscaledZ/o.transform.zoom)*.5;let N=n.canonical.toString();n.overscaledZ!==n.canonical.z&&(N+=` => ${n.overscaledZ}`),function(X,q){X.initDebugOverlayCanvas();const U=X.debugOverlayCanvas,W=X.context.gl,te=X.debugOverlayCanvas.getContext("2d");te.clearRect(0,0,U.width,U.height),te.shadowColor="white",te.shadowBlur=2,te.lineWidth=1.5,te.strokeStyle="white",te.textBaseline="top",te.font="bold 36px Open Sans, sans-serif",te.fillText(q,5,5),te.strokeText(q,5,5),X.debugOverlayTexture.update(U),X.debugOverlayTexture.bind(W.LINEAR,W.CLAMP_TO_EDGE)}(o,`${N} ${D}kB`),m.draw(a,h.TRIANGLES,_,y,Ut.alphaBlended,kt.disabled,Xn(p,c.Color.transparent,L),null,S,o.debugBuffer,o.quadTriangleIndexBuffer,o.debugSegments),m.draw(a,h.LINE_STRIP,_,y,v,kt.disabled,Xn(p,c.Color.red),E,S,o.debugBuffer,o.tileBorderIndexBuffer,o.debugSegments)}function Gs(o,t,n){const a=o.context,h=a.gl,p=o.colorModeForRenderPass(),m=new dt(h.LEQUAL,dt.ReadWrite,o.depthRangeFor3D),_=o.useProgram("terrain"),y=t.getTerrainMesh();a.bindFramebuffer.set(null),a.viewport.set([0,0,o.width,o.height]);for(const v of n){const S=o.renderToTexture.getTexture(v),E=t.getTerrainData(v.tileID);a.activeTexture.set(h.TEXTURE0),h.bindTexture(h.TEXTURE_2D,S.texture);const C={u_matrix:o.transform.calculatePosMatrix(v.tileID.toUnwrapped()),u_texture:0,u_ele_delta:t.getMeshFrameDelta(o.transform.zoom)};_.draw(a,h.TRIANGLES,m,et.disabled,p,kt.backCCW,C,E,"terrain",y.vertexBuffer,y.indexBuffer,y.segments)}}const Ko={symbol:function(o,t,n,a,h){if(o.renderPass!=="translucent")return;const p=et.disabled,m=o.colorModeForRenderPass();n.layout.get("text-variable-anchor")&&function(_,y,v,S,E,C,D){const B=y.transform,L=E==="map",N=C==="map";for(const X of _){const q=S.getTile(X),U=q.getBucket(v);if(!U||!U.text||!U.text.segments.get().length)continue;const W=c.evaluateSizeForZoom(U.textSizeData,B.zoom),te=st(q,1,y.transform.zoom),ae=Ee(X.posMatrix,N,L,y.transform,te),he=v.layout.get("icon-text-fit")!=="none"&&U.hasIconData();if(W){const de=Math.pow(2,B.zoom-q.tileID.overscaledZ);sc(U,L,N,D,B,ae,X.posMatrix,de,W,he,y.style.map.terrain?(we,ye)=>y.style.map.terrain.getElevation(X,we,ye):null)}}}(a,o,n,t,n.layout.get("text-rotation-alignment"),n.layout.get("text-pitch-alignment"),h),n.paint.get("icon-opacity").constantOr(1)!==0&&Zo(o,t,n,a,!1,n.paint.get("icon-translate"),n.paint.get("icon-translate-anchor"),n.layout.get("icon-rotation-alignment"),n.layout.get("icon-pitch-alignment"),n.layout.get("icon-keep-upright"),p,m),n.paint.get("text-opacity").constantOr(1)!==0&&Zo(o,t,n,a,!0,n.paint.get("text-translate"),n.paint.get("text-translate-anchor"),n.layout.get("text-rotation-alignment"),n.layout.get("text-pitch-alignment"),n.layout.get("text-keep-upright"),p,m),t.map.showCollisionBoxes&&(La(o,t,n,a,n.paint.get("text-translate"),n.paint.get("text-translate-anchor"),!0),La(o,t,n,a,n.paint.get("icon-translate"),n.paint.get("icon-translate-anchor"),!1))},circle:function(o,t,n,a){if(o.renderPass!=="translucent")return;const h=n.paint.get("circle-opacity"),p=n.paint.get("circle-stroke-width"),m=n.paint.get("circle-stroke-opacity"),_=!n.layout.get("circle-sort-key").isConstant();if(h.constantOr(1)===0&&(p.constantOr(1)===0||m.constantOr(1)===0))return;const y=o.context,v=y.gl,S=o.depthModeForSublayer(0,dt.ReadOnly),E=et.disabled,C=o.colorModeForRenderPass(),D=[];for(let B=0;B<a.length;B++){const L=a[B],N=t.getTile(L),X=N.getBucket(n);if(!X)continue;const q=X.programConfigurations.get(n.id),U=o.useProgram("circle",q),W=X.layoutVertexBuffer,te=X.indexBuffer,ae=o.style.map.terrain&&o.style.map.terrain.getTerrainData(L),he={programConfiguration:q,program:U,layoutVertexBuffer:W,indexBuffer:te,uniformValues:Do(o,L,N,n),terrainData:ae};if(_){const de=X.segments.get();for(const we of de)D.push({segments:new c.SegmentVector([we]),sortKey:we.sortKey,state:he})}else D.push({segments:X.segments,sortKey:0,state:he})}_&&D.sort((B,L)=>B.sortKey-L.sortKey);for(const B of D){const{programConfiguration:L,program:N,layoutVertexBuffer:X,indexBuffer:q,uniformValues:U,terrainData:W}=B.state;N.draw(y,v.TRIANGLES,S,E,C,kt.disabled,U,W,n.id,X,q,B.segments,n.paint,o.transform.zoom,L)}},heatmap:function(o,t,n,a){if(n.paint.get("heatmap-opacity")!==0)if(o.renderPass==="offscreen"){const h=o.context,p=h.gl,m=et.disabled,_=new Ut([p.ONE,p.ONE],c.Color.transparent,[!0,!0,!0,!0]);(function(y,v,S){const E=y.gl;y.activeTexture.set(E.TEXTURE1),y.viewport.set([0,0,v.width/4,v.height/4]);let C=S.heatmapFbo;if(C)E.bindTexture(E.TEXTURE_2D,C.colorAttachment.get()),y.bindFramebuffer.set(C.framebuffer);else{const D=E.createTexture();E.bindTexture(E.TEXTURE_2D,D),E.texParameteri(E.TEXTURE_2D,E.TEXTURE_WRAP_S,E.CLAMP_TO_EDGE),E.texParameteri(E.TEXTURE_2D,E.TEXTURE_WRAP_T,E.CLAMP_TO_EDGE),E.texParameteri(E.TEXTURE_2D,E.TEXTURE_MIN_FILTER,E.LINEAR),E.texParameteri(E.TEXTURE_2D,E.TEXTURE_MAG_FILTER,E.LINEAR),C=S.heatmapFbo=y.createFramebuffer(v.width/4,v.height/4,!1),function(B,L,N,X){const q=B.gl;q.texImage2D(q.TEXTURE_2D,0,q.RGBA,L.width/4,L.height/4,0,q.RGBA,B.extRenderToTextureHalfFloat?B.extTextureHalfFloat.HALF_FLOAT_OES:q.UNSIGNED_BYTE,null),X.colorAttachment.set(N)}(y,v,D,C)}})(h,o,n),h.clear({color:c.Color.transparent});for(let y=0;y<a.length;y++){const v=a[y];if(t.hasRenderableParent(v))continue;const S=t.getTile(v),E=S.getBucket(n);if(!E)continue;const C=E.programConfigurations.get(n.id),D=o.useProgram("heatmap",C),{zoom:B}=o.transform;D.draw(h,p.TRIANGLES,dt.disabled,m,_,kt.disabled,ks(v.posMatrix,S,B,n.paint.get("heatmap-intensity")),null,n.id,E.layoutVertexBuffer,E.indexBuffer,E.segments,n.paint,o.transform.zoom,C)}h.viewport.set([0,0,o.width,o.height])}else o.renderPass==="translucent"&&(o.context.setColorMode(o.colorModeForRenderPass()),function(h,p){const m=h.context,_=m.gl,y=p.heatmapFbo;if(!y)return;m.activeTexture.set(_.TEXTURE0),_.bindTexture(_.TEXTURE_2D,y.colorAttachment.get()),m.activeTexture.set(_.TEXTURE1);let v=p.colorRampTexture;v||(v=p.colorRampTexture=new Dt(m,p.colorRamp,_.RGBA)),v.bind(_.LINEAR,_.CLAMP_TO_EDGE),h.useProgram("heatmapTexture").draw(m,_.TRIANGLES,dt.disabled,et.disabled,h.colorModeForRenderPass(),kt.disabled,((S,E,C,D)=>{const B=c.create();c.ortho(B,0,S.width,S.height,0,0,1);const L=S.context.gl;return{u_matrix:B,u_world:[L.drawingBufferWidth,L.drawingBufferHeight],u_image:0,u_color_ramp:1,u_opacity:E.paint.get("heatmap-opacity")}})(h,p),null,p.id,h.viewportBuffer,h.quadTriangleIndexBuffer,h.viewportSegments,p.paint,h.transform.zoom)}(o,n))},line:function(o,t,n,a){if(o.renderPass!=="translucent")return;const h=n.paint.get("line-opacity"),p=n.paint.get("line-width");if(h.constantOr(1)===0||p.constantOr(1)===0)return;const m=o.depthModeForSublayer(0,dt.ReadOnly),_=o.colorModeForRenderPass(),y=n.paint.get("line-dasharray"),v=n.paint.get("line-pattern"),S=v.constantOr(1),E=n.paint.get("line-gradient"),C=n.getCrossfadeParameters(),D=S?"linePattern":y?"lineSDF":E?"lineGradient":"line",B=o.context,L=B.gl;let N=!0;for(const X of a){const q=t.getTile(X);if(S&&!q.patternsLoaded())continue;const U=q.getBucket(n);if(!U)continue;const W=U.programConfigurations.get(n.id),te=o.context.program.get(),ae=o.useProgram(D,W),he=N||ae.program!==te,de=o.style.map.terrain&&o.style.map.terrain.getTerrainData(X),we=v.constantOr(null);if(we&&q.imageAtlas){const Ge=q.imageAtlas,rt=Ge.patternPositions[we.to.toString()],nt=Ge.patternPositions[we.from.toString()];rt&&nt&&W.setConstantPatternPositions(rt,nt)}const ye=de?X:null,Ae=S?ga(o,q,n,C,ye):y?Ls(o,q,n,y,C,ye):E?Ro(o,q,n,U.lineClipsArray.length,ye):Wn(o,q,n,ye);if(S)B.activeTexture.set(L.TEXTURE0),q.imageAtlasTexture.bind(L.LINEAR,L.CLAMP_TO_EDGE),W.updatePaintBuffers(C);else if(y&&(he||o.lineAtlas.dirty))B.activeTexture.set(L.TEXTURE0),o.lineAtlas.bind(B);else if(E){const Ge=U.gradients[n.id];let rt=Ge.texture;if(n.gradientVersion!==Ge.version){let nt=256;if(n.stepInterpolant){const We=t.getSource().maxzoom,Mt=X.canonical.z===We?Math.ceil(1<<o.transform.maxZoom-X.canonical.z):1;nt=c.clamp(c.nextPowerOfTwo(U.maxLineLength/c.EXTENT*1024*Mt),256,B.maxTextureSize)}Ge.gradient=c.renderColorRamp({expression:n.gradientExpression(),evaluationKey:"lineProgress",resolution:nt,image:Ge.gradient||void 0,clips:U.lineClipsArray}),Ge.texture?Ge.texture.update(Ge.gradient):Ge.texture=new Dt(B,Ge.gradient,L.RGBA),Ge.version=n.gradientVersion,rt=Ge.texture}B.activeTexture.set(L.TEXTURE0),rt.bind(n.stepInterpolant?L.NEAREST:L.LINEAR,L.CLAMP_TO_EDGE)}ae.draw(B,L.TRIANGLES,m,o.stencilModeForClipping(X),_,kt.disabled,Ae,de,n.id,U.layoutVertexBuffer,U.indexBuffer,U.segments,n.paint,o.transform.zoom,W,U.layoutVertexBuffer2),N=!1}},fill:function(o,t,n,a){const h=n.paint.get("fill-color"),p=n.paint.get("fill-opacity");if(p.constantOr(1)===0)return;const m=o.colorModeForRenderPass(),_=n.paint.get("fill-pattern"),y=o.opaquePassEnabledForLayer()&&!_.constantOr(1)&&h.constantOr(c.Color.transparent).a===1&&p.constantOr(0)===1?"opaque":"translucent";if(o.renderPass===y){const v=o.depthModeForSublayer(1,o.renderPass==="opaque"?dt.ReadWrite:dt.ReadOnly);es(o,t,n,a,v,m,!1)}if(o.renderPass==="translucent"&&n.paint.get("fill-antialias")){const v=o.depthModeForSublayer(n.getPaintProperty("fill-outline-color")?2:0,dt.ReadOnly);es(o,t,n,a,v,m,!0)}},"fill-extrusion":function(o,t,n,a){const h=n.paint.get("fill-extrusion-opacity");if(h!==0&&o.renderPass==="translucent"){const p=new dt(o.context.gl.LEQUAL,dt.ReadWrite,o.depthRangeFor3D);if(h!==1||n.paint.get("fill-extrusion-pattern").constantOr(1))ts(o,t,n,a,p,et.disabled,Ut.disabled),ts(o,t,n,a,p,o.stencilModeFor3D(),o.colorModeForRenderPass());else{const m=o.colorModeForRenderPass();ts(o,t,n,a,p,et.disabled,m)}}},hillshade:function(o,t,n,a){if(o.renderPass!=="offscreen"&&o.renderPass!=="translucent")return;const h=o.context,p=o.depthModeForSublayer(0,dt.ReadOnly),m=o.colorModeForRenderPass(),[_,y]=o.renderPass==="translucent"?o.stencilConfigForOverlap(a):[{},a];for(const v of y){const S=t.getTile(v);S.needsHillshadePrepare!==void 0&&S.needsHillshadePrepare&&o.renderPass==="offscreen"?Xo(o,S,n,p,et.disabled,m):o.renderPass==="translucent"&&Da(o,v,S,n,p,_[v.overscaledZ],m)}h.viewport.set([0,0,o.width,o.height])},raster:function(o,t,n,a){if(o.renderPass!=="translucent"||n.paint.get("raster-opacity")===0||!a.length)return;const h=o.context,p=h.gl,m=t.getSource(),_=o.useProgram("raster"),y=o.colorModeForRenderPass(),[v,S]=m instanceof ki?[{},a]:o.stencilConfigForOverlap(a),E=S[S.length-1].overscaledZ,C=!o.options.moving;for(const D of S){const B=o.depthModeForSublayer(D.overscaledZ-E,n.paint.get("raster-opacity")===1?dt.ReadWrite:dt.ReadOnly,p.LESS),L=t.getTile(D);L.registerFadeDuration(n.paint.get("raster-fade-duration"));const N=t.findLoadedParent(D,0),X=$s(L,N,t,n,o.transform,o.style.map.terrain);let q,U;const W=n.paint.get("raster-resampling")==="nearest"?p.NEAREST:p.LINEAR;h.activeTexture.set(p.TEXTURE0),L.texture.bind(W,p.CLAMP_TO_EDGE,p.LINEAR_MIPMAP_NEAREST),h.activeTexture.set(p.TEXTURE1),N?(N.texture.bind(W,p.CLAMP_TO_EDGE,p.LINEAR_MIPMAP_NEAREST),q=Math.pow(2,N.tileID.overscaledZ-L.tileID.overscaledZ),U=[L.tileID.canonical.x*q%1,L.tileID.canonical.y*q%1]):L.texture.bind(W,p.CLAMP_TO_EDGE,p.LINEAR_MIPMAP_NEAREST);const te=o.style.map.terrain&&o.style.map.terrain.getTerrainData(D),ae=te?D:null,he=ae?ae.posMatrix:o.transform.calculatePosMatrix(D.toUnwrapped(),C),de=Ds(he,U||[0,0],q||1,X,n);m instanceof ki?_.draw(h,p.TRIANGLES,B,et.disabled,y,kt.disabled,de,te,n.id,m.boundsBuffer,o.quadTriangleIndexBuffer,m.boundsSegments):_.draw(h,p.TRIANGLES,B,v[D.overscaledZ],y,kt.disabled,de,te,n.id,o.rasterBoundsBuffer,o.quadTriangleIndexBuffer,o.rasterBoundsSegments)}},background:function(o,t,n,a){const h=n.paint.get("background-color"),p=n.paint.get("background-opacity");if(p===0)return;const m=o.context,_=m.gl,y=o.transform,v=y.tileSize,S=n.paint.get("background-pattern");if(o.isPatternMissing(S))return;const E=!S&&h.a===1&&p===1&&o.opaquePassEnabledForLayer()?"opaque":"translucent";if(o.renderPass!==E)return;const C=et.disabled,D=o.depthModeForSublayer(0,E==="opaque"?dt.ReadWrite:dt.ReadOnly),B=o.colorModeForRenderPass(),L=o.useProgram(S?"backgroundPattern":"background"),N=a||y.coveringTiles({tileSize:v,terrain:o.style.map.terrain});S&&(m.activeTexture.set(_.TEXTURE0),o.imageManager.bind(o.context));const X=n.getCrossfadeParameters();for(const q of N){const U=a?q.posMatrix:o.transform.calculatePosMatrix(q.toUnwrapped()),W=S?Hl(U,p,o,S,{tileID:q,tileSize:v},X):Fo(U,p,h),te=o.style.map.terrain&&o.style.map.terrain.getTerrainData(q);L.draw(m,_.TRIANGLES,D,C,B,kt.disabled,W,te,n.id,o.tileExtentBuffer,o.quadTriangleIndexBuffer,o.tileExtentSegments)}},debug:function(o,t,n){for(let a=0;a<n.length;a++)ac(o,t,n[a])},custom:function(o,t,n){const a=o.context,h=n.implementation;if(o.renderPass==="offscreen"){const p=h.prerender;p&&(o.setCustomLayerDefaults(),a.setColorMode(o.colorModeForRenderPass()),p.call(h,a.gl,o.transform.customLayerMatrix()),a.setDirty(),o.setBaseState())}else if(o.renderPass==="translucent"){o.setCustomLayerDefaults(),a.setColorMode(o.colorModeForRenderPass()),a.setStencilMode(et.disabled);const p=h.renderingMode==="3d"?new dt(o.context.gl.LEQUAL,dt.ReadWrite,o.depthRangeFor3D):o.depthModeForSublayer(0,dt.ReadOnly);a.setDepthMode(p),h.render(a.gl,o.transform.customLayerMatrix()),a.setDirty(),o.setBaseState(),a.bindFramebuffer.set(null)}}};class Jo{constructor(t,n){this.context=new bn(t),this.transform=n,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:c.create(),renderTime:0},this.setup(),this.numSublayers=di.maxUnderzooming+di.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Ui,this.gpuTimers={}}resize(t,n,a){if(this.width=t*a,this.height=n*a,this.pixelRatio=a,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const h of this.style._order)this.style._layers[h].resize()}setup(){const t=this.context,n=new c.PosArray;n.emplaceBack(0,0),n.emplaceBack(c.EXTENT,0),n.emplaceBack(0,c.EXTENT),n.emplaceBack(c.EXTENT,c.EXTENT),this.tileExtentBuffer=t.createVertexBuffer(n,qn.members),this.tileExtentSegments=c.SegmentVector.simpleSegment(0,0,4,2);const a=new c.PosArray;a.emplaceBack(0,0),a.emplaceBack(c.EXTENT,0),a.emplaceBack(0,c.EXTENT),a.emplaceBack(c.EXTENT,c.EXTENT),this.debugBuffer=t.createVertexBuffer(a,qn.members),this.debugSegments=c.SegmentVector.simpleSegment(0,0,4,5);const h=new c.RasterBoundsArray;h.emplaceBack(0,0,0,0),h.emplaceBack(c.EXTENT,0,c.EXTENT,0),h.emplaceBack(0,c.EXTENT,0,c.EXTENT),h.emplaceBack(c.EXTENT,c.EXTENT,c.EXTENT,c.EXTENT),this.rasterBoundsBuffer=t.createVertexBuffer(h,qr.members),this.rasterBoundsSegments=c.SegmentVector.simpleSegment(0,0,4,2);const p=new c.PosArray;p.emplaceBack(0,0),p.emplaceBack(1,0),p.emplaceBack(0,1),p.emplaceBack(1,1),this.viewportBuffer=t.createVertexBuffer(p,qn.members),this.viewportSegments=c.SegmentVector.simpleSegment(0,0,4,2);const m=new c.LineStripIndexArray;m.emplaceBack(0),m.emplaceBack(1),m.emplaceBack(3),m.emplaceBack(2),m.emplaceBack(0),this.tileBorderIndexBuffer=t.createIndexBuffer(m);const _=new c.TriangleIndexArray;_.emplaceBack(0,1,2),_.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=t.createIndexBuffer(_),this.emptyTexture=new Dt(t,{width:1,height:1,data:new Uint8Array([0,0,0,0])},t.gl.RGBA);const y=this.context.gl;this.stencilClearMode=new et({func:y.ALWAYS,mask:0},0,255,y.ZERO,y.ZERO,y.ZERO)}clearStencil(){const t=this.context,n=t.gl;this.nextStencilID=1,this.currentStencilSource=void 0;const a=c.create();c.ortho(a,0,this.width,this.height,0,0,1),c.scale(a,a,[n.drawingBufferWidth,n.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(t,n.TRIANGLES,dt.disabled,this.stencilClearMode,Ut.disabled,kt.disabled,_n(a),null,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(t,n){if(this.currentStencilSource===t.source||!t.isTileClipped()||!n||!n.length)return;this.currentStencilSource=t.source;const a=this.context,h=a.gl;this.nextStencilID+n.length>256&&this.clearStencil(),a.setColorMode(Ut.disabled),a.setDepthMode(dt.disabled);const p=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(const m of n){const _=this._tileClippingMaskIDs[m.key]=this.nextStencilID++,y=this.style.map.terrain&&this.style.map.terrain.getTerrainData(m);p.draw(a,h.TRIANGLES,dt.disabled,new et({func:h.ALWAYS,mask:0},_,255,h.KEEP,h.KEEP,h.REPLACE),Ut.disabled,kt.disabled,_n(m.posMatrix),y,"$clipping",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const t=this.nextStencilID++,n=this.context.gl;return new et({func:n.NOTEQUAL,mask:255},t,255,n.KEEP,n.KEEP,n.REPLACE)}stencilModeForClipping(t){const n=this.context.gl;return new et({func:n.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,n.KEEP,n.KEEP,n.REPLACE)}stencilConfigForOverlap(t){const n=this.context.gl,a=t.sort((m,_)=>_.overscaledZ-m.overscaledZ),h=a[a.length-1].overscaledZ,p=a[0].overscaledZ-h+1;if(p>1){this.currentStencilSource=void 0,this.nextStencilID+p>256&&this.clearStencil();const m={};for(let _=0;_<p;_++)m[_+h]=new et({func:n.GEQUAL,mask:255},_+this.nextStencilID,255,n.KEEP,n.KEEP,n.REPLACE);return this.nextStencilID+=p,[m,a]}return[{[h]:et.disabled},a]}colorModeForRenderPass(){const t=this.context.gl;return this._showOverdrawInspector?new Ut([t.CONSTANT_COLOR,t.ONE],new c.Color(.125,.125,.125,0),[!0,!0,!0,!0]):this.renderPass==="opaque"?Ut.unblended:Ut.alphaBlended}depthModeForSublayer(t,n,a){if(!this.opaquePassEnabledForLayer())return dt.disabled;const h=1-((1+this.currentLayer)*this.numSublayers+t)*this.depthEpsilon;return new dt(a||this.context.gl.LEQUAL,n,[h,h])}opaquePassEnabledForLayer(){return this.currentLayer<this.opaquePassCutoff}render(t,n){this.style=t,this.options=n,this.lineAtlas=t.lineAtlas,this.imageManager=t.imageManager,this.glyphManager=t.glyphManager,this.symbolFadeChange=t.placement.symbolFadeChange(c.exported.now()),this.imageManager.beginFrame();const a=this.style._order,h=this.style.sourceCaches;for(const y in h){const v=h[y];v.used&&v.prepare(this.context)}const p={},m={},_={};for(const y in h){const v=h[y];p[y]=v.getVisibleCoordinates(),m[y]=p[y].slice().reverse(),_[y]=v.getVisibleCoordinates(!0).reverse()}this.opaquePassCutoff=1/0;for(let y=0;y<a.length;y++)if(this.style._layers[a[y]].is3D()){this.opaquePassCutoff=y;break}if(this.renderToTexture){this.renderToTexture.prepareForRender(this.style,this.transform.zoom),this.opaquePassCutoff=0;const y=this.style.map.terrain.sourceCache.tilesAfterTime(this.terrainFacilitator.renderTime);(this.terrainFacilitator.dirty||!c.equals(this.terrainFacilitator.matrix,this.transform.projMatrix)||y.length)&&(c.copy(this.terrainFacilitator.matrix,this.transform.projMatrix),this.terrainFacilitator.renderTime=Date.now(),this.terrainFacilitator.dirty=!1,function(v,S){const E=v.context,C=E.gl,D=Ut.unblended,B=new dt(C.LEQUAL,dt.ReadWrite,[0,1]),L=S.getTerrainMesh(),N=S.sourceCache.getRenderableTiles(),X=v.useProgram("terrainDepth");E.bindFramebuffer.set(S.getFramebuffer("depth").framebuffer),E.viewport.set([0,0,v.width/devicePixelRatio,v.height/devicePixelRatio]),E.clear({color:c.Color.transparent,depth:1});for(const q of N){const U=S.getTerrainData(q.tileID),W={u_matrix:v.transform.calculatePosMatrix(q.tileID.toUnwrapped()),u_ele_delta:S.getMeshFrameDelta(v.transform.zoom)};X.draw(E,C.TRIANGLES,B,et.disabled,D,kt.backCCW,W,U,"terrain",L.vertexBuffer,L.indexBuffer,L.segments)}E.bindFramebuffer.set(null),E.viewport.set([0,0,v.width,v.height])}(this,this.style.map.terrain),function(v,S){const E=v.context,C=E.gl,D=Ut.unblended,B=new dt(C.LEQUAL,dt.ReadWrite,[0,1]),L=S.getTerrainMesh(),N=S.getCoordsTexture(),X=S.sourceCache.getRenderableTiles(),q=v.useProgram("terrainCoords");E.bindFramebuffer.set(S.getFramebuffer("coords").framebuffer),E.viewport.set([0,0,v.width/devicePixelRatio,v.height/devicePixelRatio]),E.clear({color:c.Color.transparent,depth:1}),S.coordsIndex=[];for(const U of X){const W=S.getTerrainData(U.tileID);E.activeTexture.set(C.TEXTURE0),C.bindTexture(C.TEXTURE_2D,N.texture);const te={u_matrix:v.transform.calculatePosMatrix(U.tileID.toUnwrapped()),u_terrain_coords_id:(255-S.coordsIndex.length)/255,u_texture:0,u_ele_delta:S.getMeshFrameDelta(v.transform.zoom)};q.draw(E,C.TRIANGLES,B,et.disabled,D,kt.backCCW,te,W,"terrain",L.vertexBuffer,L.indexBuffer,L.segments),S.coordsIndex.push(U.tileID.key)}E.bindFramebuffer.set(null),E.viewport.set([0,0,v.width,v.height])}(this,this.style.map.terrain))}this.renderPass="offscreen";for(const y of a){const v=this.style._layers[y];if(!v.hasOffscreenPass()||v.isHidden(this.transform.zoom))continue;const S=m[v.source];(v.type==="custom"||S.length)&&this.renderLayer(this,h[v.source],v,S)}if(this.context.bindFramebuffer.set(null),this.context.clear({color:n.showOverdrawInspector?c.Color.black:c.Color.transparent,depth:1}),this.clearStencil(),this._showOverdrawInspector=n.showOverdrawInspector,this.depthRangeFor3D=[0,1-(t._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=a.length-1;this.currentLayer>=0;this.currentLayer--){const y=this.style._layers[a[this.currentLayer]],v=h[y.source],S=p[y.source];this._renderTileClippingMasks(y,S),this.renderLayer(this,v,y,S)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayer<a.length;this.currentLayer++){const y=this.style._layers[a[this.currentLayer]],v=h[y.source];if(this.renderToTexture&&this.renderToTexture.renderLayer(y))continue;const S=(y.type==="symbol"?_:m)[y.source];this._renderTileClippingMasks(y,p[y.source]),this.renderLayer(this,v,y,S)}if(this.options.showTileBoundaries){const y=function(v,S){let E=null;const C=Object.values(v._layers).flatMap(N=>N.source&&!N.isHidden(S)?[v.sourceCaches[N.source]]:[]),D=C.filter(N=>N.getSource().type==="vector"),B=C.filter(N=>N.getSource().type!=="vector"),L=N=>{(!E||E.getSource().maxzoom<N.getSource().maxzoom)&&(E=N)};return D.forEach(N=>L(N)),E||B.forEach(N=>L(N)),E}(this.style,this.transform.zoom);y&&Ko.debug(this,y,y.getVisibleCoordinates())}this.options.showPadding&&function(y){const v=y.transform.padding;Jr(y,y.transform.height-(v.top||0),3,js),Jr(y,v.bottom||0,3,er),is(y,v.left||0,3,Wo),is(y,y.transform.width-(v.right||0),3,Ra);const S=y.transform.centerPoint;(function(E,C,D,B){wn(E,C-1,D-10,2,20,B),wn(E,C-10,D-1,20,2,B)})(y,S.x,y.transform.height-S.y,Ho)}(this),this.context.setDefault()}renderLayer(t,n,a,h){a.isHidden(this.transform.zoom)||(a.type==="background"||a.type==="custom"||(h||[]).length)&&(this.id=a.id,this.gpuTimingStart(a),Ko[a.type](t,n,a,h,this.style.placement.variableOffsets),this.gpuTimingEnd())}gpuTimingStart(t){if(!this.options.gpuTiming)return;const n=this.context.extTimerQuery;let a=this.gpuTimers[t.id];a||(a=this.gpuTimers[t.id]={calls:0,cpuTime:0,query:n.createQueryEXT()}),a.calls++,n.beginQueryEXT(n.TIME_ELAPSED_EXT,a.query)}gpuTimingEnd(){if(!this.options.gpuTiming)return;const t=this.context.extTimerQuery;t.endQueryEXT(t.TIME_ELAPSED_EXT)}collectGpuTimers(){const t=this.gpuTimers;return this.gpuTimers={},t}queryGpuTimers(t){const n={};for(const a in t){const h=t[a],p=this.context.extTimerQuery,m=p.getQueryObjectEXT(h.query,p.QUERY_RESULT_EXT)/1e6;p.deleteQueryEXT(h.query),n[a]=m}return n}translatePosMatrix(t,n,a,h,p){if(!a[0]&&!a[1])return t;const m=p?h==="map"?this.transform.angle:0:h==="viewport"?-this.transform.angle:0;if(m){const v=Math.sin(m),S=Math.cos(m);a=[a[0]*S-a[1]*v,a[0]*v+a[1]*S]}const _=[p?a[0]:st(n,a[0],this.transform.zoom),p?a[1]:st(n,a[1],this.transform.zoom),0],y=new Float32Array(16);return c.translate(y,t,_),y}saveTileTexture(t){const n=this._tileTextures[t.size[0]];n?n.push(t):this._tileTextures[t.size[0]]=[t]}getTileTexture(t){const n=this._tileTextures[t];return n&&n.length>0?n.pop():null}isPatternMissing(t){if(!t)return!1;if(!t.from||!t.to)return!0;const n=this.imageManager.getPattern(t.from.toString()),a=this.imageManager.getPattern(t.to.toString());return!n||!a}useProgram(t,n){this.cache=this.cache||{};const a=t+(n?n.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"")+(this.style.map.terrain?"/terrain":"");return this.cache[a]||(this.cache[a]=new Po(this.context,t,Zn[t],n,Kl[t],this._showOverdrawInspector,this.style.map.terrain)),this.cache[a]}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(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new Dt(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()}}class Tn{constructor(t,n){this.points=t,this.planes=n}static fromInvProjectionMatrix(t,n,a){const h=Math.pow(2,a),p=[[-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(_=>{const y=1/(_=c.transformMat4([],_,t))[3]/n*h;return c.mul$1(_,_,[y,y,1/_[3],y])}),m=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(_=>{const y=c.sub([],p[_[0]],p[_[1]]),v=c.sub([],p[_[2]],p[_[1]]),S=c.normalize([],c.cross([],y,v)),E=-c.dot(S,p[_[1]]);return S.concat(E)});return new Tn(p,m)}}class Sn{constructor(t,n){this.min=t,this.max=n,this.center=c.scale$1([],c.add([],this.min,this.max),.5)}quadrant(t){const n=[t%2==0,t<2],a=c.clone$2(this.min),h=c.clone$2(this.max);for(let p=0;p<n.length;p++)a[p]=n[p]?this.min[p]:this.center[p],h[p]=n[p]?this.center[p]:this.max[p];return h[2]=this.max[2],new Sn(a,h)}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(t){const n=[[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 a=!0;for(let h=0;h<t.planes.length;h++){const p=t.planes[h];let m=0;for(let _=0;_<n.length;_++)c.dot$1(p,n[_])>=0&&m++;if(m===0)return 0;m!==n.length&&(a=!1)}if(a)return 2;for(let h=0;h<3;h++){let p=Number.MAX_VALUE,m=-Number.MAX_VALUE;for(let _=0;_<t.points.length;_++){const y=t.points[_][h]-this.min[h];p=Math.min(p,y),m=Math.max(m,y)}if(m<0||p>this.max[h]-this.min[h])return 0}return 1}}class qs{constructor(t=0,n=0,a=0,h=0){if(isNaN(t)||t<0||isNaN(n)||n<0||isNaN(a)||a<0||isNaN(h)||h<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=t,this.bottom=n,this.left=a,this.right=h}interpolate(t,n,a){return n.top!=null&&t.top!=null&&(this.top=c.number(t.top,n.top,a)),n.bottom!=null&&t.bottom!=null&&(this.bottom=c.number(t.bottom,n.bottom,a)),n.left!=null&&t.left!=null&&(this.left=c.number(t.left,n.left,a)),n.right!=null&&t.right!=null&&(this.right=c.number(t.right,n.right,a)),this}getCenter(t,n){const a=c.clamp((this.left+t-this.right)/2,0,t),h=c.clamp((this.top+n-this.bottom)/2,0,n);return new c.pointGeometry(a,h)}equals(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right}clone(){return new qs(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}class Zs{constructor(t,n,a,h,p){this.tileSize=512,this.maxValidLatitude=85.051129,this.freezeElevation=!1,this._renderWorldCopies=p===void 0||!!p,this._minZoom=t||0,this._maxZoom=n||22,this._minPitch=a??0,this._maxPitch=h??60,this.setMaxBounds(),this.width=0,this.height=0,this._center=new c.LngLat(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new qs,this._posMatrixCache={},this._alignedPosMatrixCache={}}clone(){const t=new Zs(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.tileSize=this.tileSize,t.latRange=this.latRange,t.width=this.width,t.height=this.height,t._center=this._center,t._elevation=this._elevation,t.zoom=this.zoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._unmodified=this._unmodified,t._edgeInsets=this._edgeInsets.clone(),t._calcMatrices(),t}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){t===void 0?t=!0:t===null&&(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 c.pointGeometry(this.width,this.height)}get bearing(){return-this.angle/Math.PI*180}set bearing(t){const n=-c.wrap(t,-180,180)*Math.PI/180;var a;this.angle!==n&&(this._unmodified=!1,this.angle=n,this._calcMatrices(),this.rotationMatrix=(a=new c.ARRAY_TYPE(4),c.ARRAY_TYPE!=Float32Array&&(a[1]=0,a[2]=0),a[0]=1,a[3]=1,a),function(h,p,m){var _=p[0],y=p[1],v=p[2],S=p[3],E=Math.sin(m),C=Math.cos(m);h[0]=_*C+v*E,h[1]=y*C+S*E,h[2]=_*-E+v*C,h[3]=y*-E+S*C}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(t){const n=c.clamp(t,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==n&&(this._unmodified=!1,this._pitch=n,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 n=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==n&&(this._unmodified=!1,this._zoom=n,this.tileZoom=Math.max(0,Math.floor(n)),this.scale=this.zoomScale(n),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,n,a){this._unmodified=!1,this._edgeInsets.interpolate(t,n,a),this._constrain(),this._calcMatrices()}coveringZoomLevel(t){const n=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,n)}getVisibleUnwrappedCoordinates(t){const n=[new c.UnwrappedTileID(0,t)];if(this._renderWorldCopies){const a=this.pointCoordinate(new c.pointGeometry(0,0)),h=this.pointCoordinate(new c.pointGeometry(this.width,0)),p=this.pointCoordinate(new c.pointGeometry(this.width,this.height)),m=this.pointCoordinate(new c.pointGeometry(0,this.height)),_=Math.floor(Math.min(a.x,h.x,p.x,m.x)),y=Math.floor(Math.max(a.x,h.x,p.x,m.x)),v=1;for(let S=_-v;S<=y+v;S++)S!==0&&n.push(new c.UnwrappedTileID(S,t))}return n}coveringTiles(t){var n,a;let h=this.coveringZoomLevel(t);const p=h;if(t.minzoom!==void 0&&h<t.minzoom)return[];t.maxzoom!==void 0&&h>t.maxzoom&&(h=t.maxzoom);const m=this.pointCoordinate(this.getCameraPoint()),_=c.MercatorCoordinate.fromLngLat(this.center),y=Math.pow(2,h),v=[y*m.x,y*m.y,0],S=[y*_.x,y*_.y,0],E=Tn.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,h);let C=t.minzoom||0;!t.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(C=h);const D=t.terrain?2/Math.min(this.tileSize,t.tileSize)*this.tileSize:3,B=U=>({aabb:new Sn([U*y,0,0],[(U+1)*y,y,0]),zoom:0,x:0,y:0,wrap:U,fullyVisible:!1}),L=[],N=[],X=h,q=t.reparseOverscaled?p:h;if(this._renderWorldCopies)for(let U=1;U<=3;U++)L.push(B(-U)),L.push(B(U));for(L.push(B(0));L.length>0;){const U=L.pop(),W=U.x,te=U.y;let ae=U.fullyVisible;if(!ae){const Ae=U.aabb.intersects(E);if(Ae===0)continue;ae=Ae===2}const he=t.terrain?v:S,de=U.aabb.distanceX(he),we=U.aabb.distanceY(he),ye=Math.max(Math.abs(de),Math.abs(we));if(U.zoom===X||ye>D+(1<<X-U.zoom)-2&&U.zoom>=C){const Ae=X-U.zoom,Ge=v[0]-.5-(W<<Ae),rt=v[1]-.5-(te<<Ae);N.push({tileID:new c.OverscaledTileID(U.zoom===X?q:U.zoom,U.wrap,U.zoom,W,te),distanceSq:c.sqrLen([S[0]-.5-W,S[1]-.5-te]),tileDistanceToCamera:Math.sqrt(Ge*Ge+rt*rt)})}else for(let Ae=0;Ae<4;Ae++){const Ge=(W<<1)+Ae%2,rt=(te<<1)+(Ae>>1),nt=U.zoom+1;let We=U.aabb.quadrant(Ae);if(t.terrain){const Mt=new c.OverscaledTileID(nt,U.wrap,nt,Ge,rt),Tt=t.terrain.getMinMaxElevation(Mt),mt=(n=Tt.minElevation)!==null&&n!==void 0?n:this.elevation,yt=(a=Tt.maxElevation)!==null&&a!==void 0?a:this.elevation;We=new Sn([We.min[0],We.min[1],mt],[We.max[0],We.max[1],yt])}L.push({aabb:We,zoom:nt,x:Ge,y:rt,wrap:U.wrap,fullyVisible:ae})}}return N.sort((U,W)=>U.distanceSq-W.distanceSq).map(U=>U.tileID)}resize(t,n){this.width=t,this.height=n,this.pixelsToGLUnits=[2/t,-2/n],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(t){const n=c.clamp(t.lat,-this.maxValidLatitude,this.maxValidLatitude);return new c.pointGeometry(c.mercatorXfromLng(t.lng)*this.worldSize,c.mercatorYfromLat(n)*this.worldSize)}unproject(t){return new c.MercatorCoordinate(t.x/this.worldSize,t.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}updateElevation(t){this.freezeElevation||(this.elevation=t?this.getElevation(this._center,t):0)}getElevation(t,n){const a=c.MercatorCoordinate.fromLngLat(t),h=(1<<this.tileZoom)*c.EXTENT,p=a.x*h,m=a.y*h,_=Math.floor(p/c.EXTENT),y=Math.floor(m/c.EXTENT),v=new c.OverscaledTileID(this.tileZoom,0,this.tileZoom,_,y);return n.getElevation(v,p%c.EXTENT,m%c.EXTENT,c.EXTENT)}getCameraPosition(){return{lngLat:this.pointLocation(this.getCameraPoint()),altitude:Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter+this.elevation}}recalculateZoom(t){const n=this.pointLocation(this.centerPoint,t),a=this.getElevation(n,t);if(!(this.elevation-a))return;const h=this.getCameraPosition(),p=c.MercatorCoordinate.fromLngLat(h.lngLat,h.altitude),m=c.MercatorCoordinate.fromLngLat(n,a),_=p.x-m.x,y=p.y-m.y,v=p.z-m.z,S=Math.sqrt(_*_+y*y+v*v),E=this.scaleZoom(this.cameraToCenterDistance/S/this.tileSize);this._elevation=a,this._center=n,this.zoom=E}setLocationAtPoint(t,n){const a=this.pointCoordinate(n),h=this.pointCoordinate(this.centerPoint),p=this.locationCoordinate(t),m=new c.MercatorCoordinate(p.x-(a.x-h.x),p.y-(a.y-h.y));this.center=this.coordinateLocation(m),this._renderWorldCopies&&(this.center=this.center.wrap())}locationPoint(t,n){return n?this.coordinatePoint(this.locationCoordinate(t),this.getElevation(t,n),this.pixelMatrix3D):this.coordinatePoint(this.locationCoordinate(t))}pointLocation(t,n){return this.coordinateLocation(this.pointCoordinate(t,n))}locationCoordinate(t){return c.MercatorCoordinate.fromLngLat(t)}coordinateLocation(t){return t&&t.toLngLat()}pointCoordinate(t,n){if(n){const C=n.pointCoordinate(t);if(C!=null)return C}const a=[t.x,t.y,0,1],h=[t.x,t.y,1,1];c.transformMat4(a,a,this.pixelMatrixInverse),c.transformMat4(h,h,this.pixelMatrixInverse);const p=a[3],m=h[3],_=a[1]/p,y=h[1]/m,v=a[2]/p,S=h[2]/m,E=v===S?0:(0-v)/(S-v);return new c.MercatorCoordinate(c.number(a[0]/p,h[0]/m,E)/this.worldSize,c.number(_,y,E)/this.worldSize)}coordinatePoint(t,n=0,a=this.pixelMatrix){const h=[t.x*this.worldSize,t.y*this.worldSize,n,1];return c.transformMat4(h,h,a),new c.pointGeometry(h[0]/h[3],h[1]/h[3])}getBounds(){const t=Math.max(0,this.height/2-this.getHorizon());return new c.LngLatBounds().extend(this.pointLocation(new c.pointGeometry(0,t))).extend(this.pointLocation(new c.pointGeometry(this.width,t))).extend(this.pointLocation(new c.pointGeometry(this.width,this.height))).extend(this.pointLocation(new c.pointGeometry(0,this.height)))}getMaxBounds(){return this.latRange&&this.latRange.length===2&&this.lngRange&&this.lngRange.length===2?new c.LngLatBounds([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(t,n=!1){const a=t.key,h=n?this._alignedPosMatrixCache:this._posMatrixCache;if(h[a])return h[a];const p=t.canonical,m=this.worldSize/this.zoomScale(p.z),_=p.x+Math.pow(2,p.z)*t.wrap,y=c.identity(new Float64Array(16));return c.translate(y,y,[_*m,p.y*m,0]),c.scale(y,y,[m/c.EXTENT,m/c.EXTENT,1]),c.multiply(y,n?this.alignedProjMatrix:this.projMatrix,y),h[a]=new Float32Array(y),h[a]}customLayerMatrix(){return this.mercatorMatrix.slice()}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let t,n,a,h,p=-90,m=90,_=-180,y=180;const v=this.size,S=this._unmodified;if(this.latRange){const D=this.latRange;p=c.mercatorYfromLat(D[1])*this.worldSize,m=c.mercatorYfromLat(D[0])*this.worldSize,t=m-p<v.y?v.y/(m-p):0}if(this.lngRange){const D=this.lngRange;_=c.wrap(c.mercatorXfromLng(D[0])*this.worldSize,0,this.worldSize),y=c.wrap(c.mercatorXfromLng(D[1])*this.worldSize,0,this.worldSize),y<_&&(y+=this.worldSize),n=y-_<v.x?v.x/(y-_):0}const E=this.point,C=Math.max(n||0,t||0);if(C)return this.center=this.unproject(new c.pointGeometry(n?(y+_)/2:E.x,t?(m+p)/2:E.y)),this.zoom+=this.scaleZoom(C),this._unmodified=S,void(this._constraining=!1);if(this.latRange){const D=E.y,B=v.y/2;D-B<p&&(h=p+B),D+B>m&&(h=m-B)}if(this.lngRange){const D=(_+y)/2,B=c.wrap(E.x,D-this.worldSize/2,D+this.worldSize/2),L=v.x/2;B-L<_&&(a=_+L),B+L>y&&(a=y-L)}a===void 0&&h===void 0||(this.center=this.unproject(new c.pointGeometry(a!==void 0?a:E.x,h!==void 0?h:E.y)).wrap()),this._unmodified=S,this._constraining=!1}_calcMatrices(){if(!this.height)return;const t=this.centerOffset,n=this.point.x,a=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=c.mercatorZfromAltitude(1,this.center.lat)*this.worldSize;let h=c.identity(new Float64Array(16));c.scale(h,h,[this.width/2,-this.height/2,1]),c.translate(h,h,[1,-1,0]),this.labelPlaneMatrix=h,h=c.identity(new Float64Array(16)),c.scale(h,h,[1,-1,1]),c.translate(h,h,[-1,-1,0]),c.scale(h,h,[2/this.width,2/this.height,1]),this.glCoordMatrix=h,this.cameraToSeaLevelDistance=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch);const p=this._elevation<0?this.cameraToCenterDistance:this.cameraToSeaLevelDistance,m=Math.PI/2+this._pitch,_=this._fov*(.5+t.y/this.height),y=Math.sin(_)*p/Math.sin(c.clamp(Math.PI-m-_,.01,Math.PI-.01)),v=this.getHorizon(),S=2*Math.atan(v/this.cameraToCenterDistance)*(.5+t.y/(2*v)),E=Math.sin(S)*p/Math.sin(c.clamp(Math.PI-m-S,.01,Math.PI-.01)),C=Math.min(y,E),D=1.01*(Math.cos(Math.PI/2-this._pitch)*C+p),B=this.height/50;h=new Float64Array(16),c.perspective(h,this._fov,this.width/this.height,B,D),h[8]=2*-t.x/this.width,h[9]=2*t.y/this.height,c.scale(h,h,[1,-1,1]),c.translate(h,h,[0,0,-this.cameraToCenterDistance]),c.rotateX(h,h,this._pitch),c.rotateZ(h,h,this.angle),c.translate(h,h,[-n,-a,0]),this.mercatorMatrix=c.scale([],h,[this.worldSize,this.worldSize,this.worldSize]),c.scale(h,h,[1,1,this._pixelPerMeter]),this.pixelMatrix=c.multiply(new Float64Array(16),this.labelPlaneMatrix,h),c.translate(h,h,[0,0,-this.elevation]),this.projMatrix=h,this.invProjMatrix=c.invert([],h),this.pixelMatrix3D=c.multiply(new Float64Array(16),this.labelPlaneMatrix,h);const L=this.width%2/2,N=this.height%2/2,X=Math.cos(this.angle),q=Math.sin(this.angle),U=n-Math.round(n)+X*L+q*N,W=a-Math.round(a)+X*N+q*L,te=new Float64Array(h);if(c.translate(te,te,[U>.5?U-1:U,W>.5?W-1:W,0]),this.alignedProjMatrix=te,h=c.invert(new Float64Array(16),this.pixelMatrix),!h)throw new Error("failed to invert matrix");this.pixelMatrixInverse=h,this._posMatrixCache={},this._alignedPosMatrixCache={}}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;const t=this.pointCoordinate(new c.pointGeometry(0,0)),n=[t.x*this.worldSize,t.y*this.worldSize,0,1];return c.transformMat4(n,n,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){const t=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new c.pointGeometry(0,t))}getCameraQueryGeometry(t){const n=this.getCameraPoint();if(t.length===1)return[t[0],n];{let a=n.x,h=n.y,p=n.x,m=n.y;for(const _ of t)a=Math.min(a,_.x),h=Math.min(h,_.y),p=Math.max(p,_.x),m=Math.max(m,_.y);return[new c.pointGeometry(a,h),new c.pointGeometry(p,h),new c.pointGeometry(p,m),new c.pointGeometry(a,m),new c.pointGeometry(a,h)]}}}class Xs{constructor(t){this._hashName=t&&encodeURIComponent(t),c.bindAll(["_getCurrentHash","_onHashChange","_updateHash"],this),this._updateHash=function(n,a){let h=!1,p=null;const m=()=>{p=null,h&&(n(),p=setTimeout(m,300),h=!1)};return()=>(h=!0,p||m(),p)}(this._updateHashUnthrottled.bind(this))}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 n=this._map.getCenter(),a=Math.round(100*this._map.getZoom())/100,h=Math.ceil((a*Math.LN2+Math.log(512/360/.5))/Math.LN10),p=Math.pow(10,h),m=Math.round(n.lng*p)/p,_=Math.round(n.lat*p)/p,y=this._map.getBearing(),v=this._map.getPitch();let S="";if(S+=t?`/${m}/${_}/${a}`:`${a}/${_}/${m}`,(y||v)&&(S+="/"+Math.round(10*y)/10),v&&(S+=`/${Math.round(v)}`),this._hashName){const E=this._hashName;let C=!1;const D=window.location.hash.slice(1).split("&").map(B=>{const L=B.split("=")[0];return L===E?(C=!0,`${L}=${S}`):B}).filter(B=>B);return C||D.push(`${E}=${S}`),`#${D.join("&")}`}return`#${S}`}_getCurrentHash(){const t=window.location.hash.replace("#","");if(this._hashName){let n;return t.split("&").map(a=>a.split("=")).forEach(a=>{a[0]===this._hashName&&(n=a)}),(n&&n[1]||"").split("/")}return t.split("/")}_onHashChange(){const t=this._getCurrentHash();if(t.length>=3&&!t.some(n=>isNaN(n))){const n=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:n,pitch:+(t[4]||0)}),!0}return!1}_updateHashUnthrottled(){const t=window.location.href.replace(/(#.+)?$/,this.getHashString());try{window.history.replaceState(window.history.state,null,t)}catch{}}}const En={linearity:.3,easing:c.bezier(0,0,.3,1)},Yo=c.extend({deceleration:2500,maxSpeed:1400},En),Qo=c.extend({deceleration:20,maxSpeed:1400},En),el=c.extend({deceleration:1e3,maxSpeed:360},En),tl=c.extend({deceleration:1e3,maxSpeed:90},En);class il{constructor(t){this._map=t,this.clear()}clear(){this._inertiaBuffer=[]}record(t){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:c.exported.now(),settings:t})}_drainInertiaBuffer(){const t=this._inertiaBuffer,n=c.exported.now();for(;t.length>0&&n-t[0].time>160;)t.shift()}_onMoveEnd(t){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const n={zoom:0,bearing:0,pitch:0,pan:new c.pointGeometry(0,0),pinchAround:void 0,around:void 0};for(const{settings:p}of this._inertiaBuffer)n.zoom+=p.zoomDelta||0,n.bearing+=p.bearingDelta||0,n.pitch+=p.pitchDelta||0,p.panDelta&&n.pan._add(p.panDelta),p.around&&(n.around=p.around),p.pinchAround&&(n.pinchAround=p.pinchAround);const a=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,h={};if(n.pan.mag()){const p=rs(n.pan.mag(),a,c.extend({},Yo,t||{}));h.offset=n.pan.mult(p.amount/n.pan.mag()),h.center=this._map.transform.center,gr(h,p)}if(n.zoom){const p=rs(n.zoom,a,Qo);h.zoom=this._map.transform.zoom+p.amount,gr(h,p)}if(n.bearing){const p=rs(n.bearing,a,el);h.bearing=this._map.transform.bearing+c.clamp(p.amount,-179,179),gr(h,p)}if(n.pitch){const p=rs(n.pitch,a,tl);h.pitch=this._map.transform.pitch+p.amount,gr(h,p)}if(h.zoom||h.bearing){const p=n.pinchAround===void 0?n.around:n.pinchAround;h.around=p?this._map.unproject(p):this._map.getCenter()}return this.clear(),c.extend(h,{noMoveStart:!0})}}function gr(o,t){(!o.duration||o.duration<t.duration)&&(o.duration=t.duration,o.easing=t.easing)}function rs(o,t,n){const{maxSpeed:a,linearity:h,deceleration:p}=n,m=c.clamp(o*h/(t/1e3),-a,a),_=Math.abs(m)/(p*h);return{easing:n.easing,duration:1e3*_,amount:m*(_/2)}}class Ni extends c.Event{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,n,a,h={}){const p=K.mousePos(n.getCanvasContainer(),a),m=n.unproject(p);super(t,c.extend({point:p,lngLat:m,originalEvent:a},h)),this._defaultPrevented=!1,this.target=n}}class ns extends c.Event{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,n,a){const h=t==="touchend"?a.changedTouches:a.touches,p=K.touchPos(n.getCanvasContainer(),h),m=p.map(y=>n.unproject(y)),_=p.reduce((y,v,S,E)=>y.add(v.div(E.length)),new c.pointGeometry(0,0));super(t,{points:p,point:_,lngLats:m,lngLat:n.unproject(_),originalEvent:a}),this._defaultPrevented=!1}}class rl extends c.Event{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,n,a){super(t,{originalEvent:a}),this._defaultPrevented=!1}}class nl{constructor(t,n){this._map=t,this._clickTolerance=n.clickTolerance}reset(){delete this._mousedownPos}wheel(t){return this._firePreventable(new rl(t.type,this._map,t))}mousedown(t,n){return this._mousedownPos=n,this._firePreventable(new Ni(t.type,this._map,t))}mouseup(t){this._map.fire(new Ni(t.type,this._map,t))}click(t,n){this._mousedownPos&&this._mousedownPos.dist(n)>=this._clickTolerance||this._map.fire(new Ni(t.type,this._map,t))}dblclick(t){return this._firePreventable(new Ni(t.type,this._map,t))}mouseover(t){this._map.fire(new Ni(t.type,this._map,t))}mouseout(t){this._map.fire(new Ni(t.type,this._map,t))}touchstart(t){return this._firePreventable(new ns(t.type,this._map,t))}touchmove(t){this._map.fire(new ns(t.type,this._map,t))}touchend(t){this._map.fire(new ns(t.type,this._map,t))}touchcancel(t){this._map.fire(new ns(t.type,this._map,t))}_firePreventable(t){if(this._map.fire(t),t.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class sl{constructor(t){this._map=t}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(t){this._map.fire(new Ni(t.type,this._map,t))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Ni("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(t){this._delayContextMenu?this._contextMenuEvent=t:this._ignoreContextMenu||this._map.fire(new Ni(t.type,this._map,t)),this._map.listens("contextmenu")&&t.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class ss{constructor(t,n){this._map=t,this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=n.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(t,n){this.isEnabled()&&t.shiftKey&&t.button===0&&(K.disableDrag(),this._startPos=this._lastPos=n,this._active=!0)}mousemoveWindow(t,n){if(!this._active)return;const a=n;if(this._lastPos.equals(a)||!this._box&&a.dist(this._startPos)<this._clickTolerance)return;const h=this._startPos;this._lastPos=a,this._box||(this._box=K.create("div","maplibregl-boxzoom",this._container),this._container.classList.add("maplibregl-crosshair"),this._fireEvent("boxzoomstart",t));const p=Math.min(h.x,a.x),m=Math.max(h.x,a.x),_=Math.min(h.y,a.y),y=Math.max(h.y,a.y);K.setTransform(this._box,`translate(${p}px,${_}px)`),this._box.style.width=m-p+"px",this._box.style.height=y-_+"px"}mouseupWindow(t,n){if(!this._active||t.button!==0)return;const a=this._startPos,h=n;if(this.reset(),K.suppressClick(),a.x!==h.x||a.y!==h.y)return this._map.fire(new c.Event("boxzoomend",{originalEvent:t})),{cameraAnimation:p=>p.fitScreenCoordinates(a,h,this._map.getBearing(),{linear:!0})};this._fireEvent("boxzoomcancel",t)}keydown(t){this._active&&t.keyCode===27&&(this.reset(),this._fireEvent("boxzoomcancel",t))}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(K.remove(this._box),this._box=null),K.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(t,n){return this._map.fire(new c.Event(t,{originalEvent:n}))}}function Ws(o,t){if(o.length!==t.length)throw new Error(`The number of touches and points are not equal - touches ${o.length}, points ${t.length}`);const n={};for(let a=0;a<o.length;a++)n[o[a].identifier]=t[a];return n}class _r{constructor(t){this.reset(),this.numTouches=t.numTouches}reset(){delete this.centroid,delete this.startTime,delete this.touches,this.aborted=!1}touchstart(t,n,a){(this.centroid||a.length>this.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===void 0&&(this.startTime=t.timeStamp),a.length===this.numTouches&&(this.centroid=function(h){const p=new c.pointGeometry(0,0);for(const m of h)p._add(m);return p.div(h.length)}(n),this.touches=Ws(a,n)))}touchmove(t,n,a){if(this.aborted||!this.centroid)return;const h=Ws(a,n);for(const p in this.touches){const m=h[p];(!m||m.dist(this.touches[p])>30)&&(this.aborted=!0)}}touchend(t,n,a){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),a.length===0){const h=!this.aborted&&this.centroid;if(this.reset(),h)return h}}}class or{constructor(t){this.singleTap=new _r(t),this.numTaps=t.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(t,n,a){this.singleTap.touchstart(t,n,a)}touchmove(t,n,a){this.singleTap.touchmove(t,n,a)}touchend(t,n,a){const h=this.singleTap.touchend(t,n,a);if(h){const p=t.timeStamp-this.lastTime<500,m=!this.lastTap||this.lastTap.dist(h)<30;if(p&&m||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=h,this.count===this.numTaps)return this.reset(),h}}}class al{constructor(){this._zoomIn=new or({numTouches:1,numTaps:2}),this._zoomOut=new or({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(t,n,a){this._zoomIn.touchstart(t,n,a),this._zoomOut.touchstart(t,n,a)}touchmove(t,n,a){this._zoomIn.touchmove(t,n,a),this._zoomOut.touchmove(t,n,a)}touchend(t,n,a){const h=this._zoomIn.touchend(t,n,a),p=this._zoomOut.touchend(t,n,a);return h?(this._active=!0,t.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:m=>m.easeTo({duration:300,zoom:m.getZoom()+1,around:m.unproject(h)},{originalEvent:t})}):p?(this._active=!0,t.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:m=>m.easeTo({duration:300,zoom:m.getZoom()-1,around:m.unproject(p)},{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 $i{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 n=this._moveFunction(...t);if(n.bearingDelta||n.pitchDelta||n.around||n.panDelta)return this._active=!0,n}dragStart(t,n){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(t)&&(this._moveStateManager.startMove(t),this._lastPoint=n.length?n[0]:n,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(t,n){if(!this.isEnabled())return;const a=this._lastPoint;if(!a)return;if(t.preventDefault(),!this._moveStateManager.isValidMoveEvent(t))return void this.reset(t);const h=n.length?n[0]:n;return!this._moved&&h.dist(a)<this._clickTolerance?void 0:(this._moved=!0,this._lastPoint=h,this._move(a,h))}dragEnd(t){this.isEnabled()&&this._lastPoint&&this._moveStateManager.isValidEndEvent(t)&&(this._moved&&K.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 as={0:1,2:2};class Ba{constructor(t){this._correctEvent=t.checkCorrectEvent}startMove(t){const n=K.mouseButton(t);this._eventButton=n}endMove(t){delete this._eventButton}isValidStartEvent(t){return this._correctEvent(t)}isValidMoveEvent(t){return!function(n,a){const h=as[a];return n.buttons===void 0||(n.buttons&h)!==h}(t,this._eventButton)}isValidEndEvent(t){return K.mouseButton(t)===this._eventButton}}class ol{constructor(){this._firstTouch=void 0}_isOneFingerTouch(t){return t.targetTouches.length===1}_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 Fa=o=>{o.mousedown=o.dragStart,o.mousemoveWindow=o.dragMove,o.mouseup=o.dragEnd,o.contextmenu=function(t){t.preventDefault()}},Oa=({enable:o,clickTolerance:t,bearingDegreesPerPixelMoved:n=.8})=>{const a=new Ba({checkCorrectEvent:h=>K.mouseButton(h)===0&&h.ctrlKey||K.mouseButton(h)===2});return new $i({clickTolerance:t,move:(h,p)=>({bearingDelta:(p.x-h.x)*n}),moveStateManager:a,enable:o,assignEvents:Fa})},In=({enable:o,clickTolerance:t,pitchDegreesPerPixelMoved:n=-.5})=>{const a=new Ba({checkCorrectEvent:h=>K.mouseButton(h)===0&&h.ctrlKey||K.mouseButton(h)===2});return new $i({clickTolerance:t,move:(h,p)=>({pitchDelta:(p.y-h.y)*n}),moveStateManager:a,enable:o,assignEvents:Fa})};class Nr{constructor(t,n){this._minTouches=t.cooperativeGestures?2:1,this._clickTolerance=t.clickTolerance||1,this._map=n,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new c.pointGeometry(0,0),setTimeout(()=>{this._cancelCooperativeMessage=!1},200)}touchstart(t,n,a){return this._calculateTransform(t,n,a)}touchmove(t,n,a){if(this._map._cooperativeGestures&&(this._minTouches===2&&a.length<2&&!this._cancelCooperativeMessage?this._map._onCooperativeGesture(t,!1,a.length):this._cancelCooperativeMessage||(this._cancelCooperativeMessage=!0)),this._active&&!(a.length<this._minTouches))return t.preventDefault(),this._calculateTransform(t,n,a)}touchend(t,n,a){this._calculateTransform(t,n,a),this._active&&a.length<this._minTouches&&this.reset()}touchcancel(){this.reset()}_calculateTransform(t,n,a){a.length>0&&(this._active=!0);const h=Ws(a,n),p=new c.pointGeometry(0,0),m=new c.pointGeometry(0,0);let _=0;for(const v in h){const S=h[v],E=this._touches[v];E&&(p._add(S),m._add(S.sub(E)),_++,h[v]=S)}if(this._touches=h,_<this._minTouches||!m.mag())return;const y=m.div(_);return this._sum._add(y),this._sum.mag()<this._clickTolerance?void 0:{around:p.div(_),panDelta:y}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class $e{constructor(){this.reset()}reset(){this._active=!1,delete this._firstTwoTouches}_start(t){}_move(t,n,a){return{}}touchstart(t,n,a){this._firstTwoTouches||a.length<2||(this._firstTwoTouches=[a[0].identifier,a[1].identifier],this._start([n[0],n[1]]))}touchmove(t,n,a){if(!this._firstTwoTouches)return;t.preventDefault();const[h,p]=this._firstTwoTouches,m=os(a,n,h),_=os(a,n,p);if(!m||!_)return;const y=this._aroundCenter?null:m.add(_).div(2);return this._move([m,_],y,t)}touchend(t,n,a){if(!this._firstTwoTouches)return;const[h,p]=this._firstTwoTouches,m=os(a,n,h),_=os(a,n,p);m&&_||(this._active&&K.suppressClick(),this.reset())}touchcancel(){this.reset()}enable(t){this._enabled=!0,this._aroundCenter=!!t&&t.around==="center"}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}function os(o,t,n){for(let a=0;a<o.length;a++)if(o[a].identifier===n)return t[a]}function An(o,t){return Math.log(o/t)/Math.LN2}class ls extends $e{reset(){super.reset(),delete this._distance,delete this._startDistance}_start(t){this._startDistance=this._distance=t[0].dist(t[1])}_move(t,n){const a=this._distance;if(this._distance=t[0].dist(t[1]),this._active||!(Math.abs(An(this._distance,this._startDistance))<.1))return this._active=!0,{zoomDelta:An(this._distance,a),pinchAround:n}}}function Ua(o,t){return 180*o.angleWith(t)/Math.PI}class Oe extends $e{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,n){const a=this._vector;if(this._vector=t[0].sub(t[1]),this._active||!this._isBelowThreshold(this._vector))return this._active=!0,{bearingDelta:Ua(this._vector,a),pinchAround:n}}_isBelowThreshold(t){this._minDiameter=Math.min(this._minDiameter,t.mag());const n=25/(Math.PI*this._minDiameter)*360,a=Ua(t,this._startVector);return Math.abs(a)<n}}function cs(o){return Math.abs(o.y)>Math.abs(o.x)}class oc extends $e{constructor(t){super(),this._map=t}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(t,n,a){super.touchstart(t,n,a),this._currentTouchCount=a.length}_start(t){this._lastPoints=t,cs(t[0].sub(t[1]))&&(this._valid=!1)}_move(t,n,a){if(this._map._cooperativeGestures&&this._currentTouchCount<3)return;const h=t[0].sub(this._lastPoints[0]),p=t[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(h,p,a.timeStamp),this._valid?(this._lastPoints=t,this._active=!0,{pitchDelta:(h.y+p.y)/2*-.5}):void 0}gestureBeginsVertically(t,n,a){if(this._valid!==void 0)return this._valid;const h=t.mag()>=2,p=n.mag()>=2;if(!h&&!p)return;if(!h||!p)return this._firstMove===void 0&&(this._firstMove=a),a-this._firstMove<100&&void 0;const m=t.y>0==n.y>0;return cs(t)&&cs(n)&&m}}const lc={panStep:100,bearingStep:15,pitchStep:10};class Va{constructor(){const t=lc;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(t){if(t.altKey||t.ctrlKey||t.metaKey)return;let n=0,a=0,h=0,p=0,m=0;switch(t.keyCode){case 61:case 107:case 171:case 187:n=1;break;case 189:case 109:case 173:n=-1;break;case 37:t.shiftKey?a=-1:(t.preventDefault(),p=-1);break;case 39:t.shiftKey?a=1:(t.preventDefault(),p=1);break;case 38:t.shiftKey?h=1:(t.preventDefault(),m=-1);break;case 40:t.shiftKey?h=-1:(t.preventDefault(),m=1);break;default:return}return this._rotationDisabled&&(a=0,h=0),{cameraAnimation:_=>{const y=_.getZoom();_.easeTo({duration:300,easeId:"keyboardHandler",easing:ll,zoom:n?Math.round(y)+n*(t.shiftKey?2:1):y,bearing:_.getBearing()+a*this._bearingStep,pitch:_.getPitch()+h*this._pitchStep,offset:[-p*this._panStep,-m*this._panStep],center:_.getCenter()},{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 ll(o){return o*(2-o)}const Na=4.000244140625;class cc{constructor(t,n){this._map=t,this._el=t.getCanvasContainer(),this._handler=n,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222,c.bindAll(["_onTimeout"],this)}setZoomRate(t){this._defaultZoomRate=t}setWheelZoomRate(t){this._wheelZoomRate=t}isEnabled(){return!!this._enabled}isActive(){return!!this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&t.around==="center")}disable(){this.isEnabled()&&(this._enabled=!1)}wheel(t){if(!this.isEnabled())return;if(this._map._cooperativeGestures){if(!this._map._metaPress)return;t.preventDefault()}let n=t.deltaMode===WheelEvent.DOM_DELTA_LINE?40*t.deltaY:t.deltaY;const a=c.exported.now(),h=a-(this._lastWheelEventTime||0);this._lastWheelEventTime=a,n!==0&&n%Na==0?this._type="wheel":n!==0&&Math.abs(n)<4?this._type="trackpad":h>400?(this._type=null,this._lastValue=n,this._timeout=setTimeout(this._onTimeout,40,t)):this._type||(this._type=Math.abs(h*n)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,n+=this._lastValue)),t.shiftKey&&n&&(n/=4),this._type&&(this._lastWheelEvent=t,this._delta-=n,this._active||this._start(t)),t.preventDefault()}_onTimeout(t){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(t)}_start(t){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 n=K.mousePos(this._el,t);this._around=c.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(n)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;const t=this._map.transform;if(this._delta!==0){const _=this._type==="wheel"&&Math.abs(this._delta)>Na?this._wheelZoomRate:this._defaultZoomRate;let y=2/(1+Math.exp(-Math.abs(this._delta*_)));this._delta<0&&y!==0&&(y=1/y);const v=typeof this._targetZoom=="number"?t.zoomScale(this._targetZoom):t.scale;this._targetZoom=Math.min(t.maxZoom,Math.max(t.minZoom,t.scaleZoom(v*y))),this._type==="wheel"&&(this._startZoom=t.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}const n=typeof this._targetZoom=="number"?this._targetZoom:t.zoom,a=this._startZoom,h=this._easing;let p,m=!1;if(this._type==="wheel"&&a&&h){const _=Math.min((c.exported.now()-this._lastWheelEventTime)/200,1),y=h(_);p=c.number(a,n,y),_<1?this._frameId||(this._frameId=!0):m=!0}else p=n,m=!0;return this._active=!0,m&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._handler._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!m,zoomDelta:p-t.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(t){let n=c.ease;if(this._prevEase){const a=this._prevEase,h=(c.exported.now()-a.start)/a.duration,p=a.easing(h+.01)-a.easing(h),m=.27/Math.sqrt(p*p+1e-4)*.01,_=Math.sqrt(.0729-m*m);n=c.bezier(m,_,.25,1)}return this._prevEase={start:c.exported.now(),duration:t,easing:n},n}reset(){this._active=!1}}class hc{constructor(t,n){this._clickZoom=t,this._tapZoom=n}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 $a{constructor(){this.reset()}reset(){this._active=!1}dblclick(t,n){return t.preventDefault(),{cameraAnimation:a=>{a.easeTo({duration:300,zoom:a.getZoom()+(t.shiftKey?-1:1),around:a.unproject(n)},{originalEvent:t})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class ja{constructor(){this._tap=new or({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()}touchstart(t,n,a){this._swipePoint||(this._tapTime&&t.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?a.length>0&&(this._swipePoint=n[0],this._swipeTouch=a[0].identifier):this._tap.touchstart(t,n,a))}touchmove(t,n,a){if(this._tapTime){if(this._swipePoint){if(a[0].identifier!==this._swipeTouch)return;const h=n[0],p=h.y-this._swipePoint.y;return this._swipePoint=h,t.preventDefault(),this._active=!0,{zoomDelta:p/128}}}else this._tap.touchmove(t,n,a)}touchend(t,n,a){this._tapTime?this._swipePoint&&a.length===0&&this.reset():this._tap.touchend(t,n,a)&&(this._tapTime=t.timeStamp)}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Ga{constructor(t,n,a){this._el=t,this._mousePan=n,this._touchPan=a}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 qa{constructor(t,n,a){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=n,this._mousePitch=a}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 zi{constructor(t,n,a,h){this._el=t,this._touchZoom=n,this._touchRotate=a,this._tapDragZoom=h,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 lr=o=>o.zoom||o.drag||o.pitch||o.rotate;class cl extends c.Event{}function hs(o){return o.panDelta&&o.panDelta.mag()||o.zoomDelta||o.bearingDelta||o.pitchDelta}class Za{constructor(t,n){this._map=t,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new il(t),this._bearingSnap=n.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(n),c.bindAll(["handleEvent","handleWindowEvent"],this);const a=this._el;this._listeners=[[a,"touchstart",{passive:!0}],[a,"touchmove",{passive:!1}],[a,"touchend",void 0],[a,"touchcancel",void 0],[a,"mousedown",void 0],[a,"mousemove",void 0],[a,"mouseup",void 0],[document,"mousemove",{capture:!0}],[document,"mouseup",void 0],[a,"mouseover",void 0],[a,"mouseout",void 0],[a,"dblclick",void 0],[a,"click",void 0],[a,"keydown",{capture:!1}],[a,"keyup",void 0],[a,"wheel",{passive:!1}],[a,"contextmenu",void 0],[window,"blur",void 0]];for(const[h,p,m]of this._listeners)K.addEventListener(h,p,h===document?this.handleWindowEvent:this.handleEvent,m)}destroy(){for(const[t,n,a]of this._listeners)K.removeEventListener(t,n,t===document?this.handleWindowEvent:this.handleEvent,a)}_addDefaultHandlers(t){const n=this._map,a=n.getCanvasContainer();this._add("mapEvent",new nl(n,t));const h=n.boxZoom=new ss(n,t);this._add("boxZoom",h);const p=new al,m=new $a;n.doubleClickZoom=new hc(m,p),this._add("tapZoom",p),this._add("clickZoom",m);const _=new ja;this._add("tapDragZoom",_);const y=n.touchPitch=new oc(n);this._add("touchPitch",y);const v=Oa(t),S=In(t);n.dragRotate=new qa(t,v,S),this._add("mouseRotate",v,["mousePitch"]),this._add("mousePitch",S,["mouseRotate"]);const E=(({enable:X,clickTolerance:q})=>{const U=new Ba({checkCorrectEvent:W=>K.mouseButton(W)===0&&!W.ctrlKey});return new $i({clickTolerance:q,move:(W,te)=>({around:te,panDelta:te.sub(W)}),activateOnStart:!0,moveStateManager:U,enable:X,assignEvents:Fa})})(t),C=new Nr(t,n);n.dragPan=new Ga(a,E,C),this._add("mousePan",E),this._add("touchPan",C,["touchZoom","touchRotate"]);const D=new Oe,B=new ls;n.touchZoomRotate=new zi(a,B,D,_),this._add("touchRotate",D,["touchPan","touchZoom"]),this._add("touchZoom",B,["touchPan","touchRotate"]);const L=n.scrollZoom=new cc(n,this);this._add("scrollZoom",L,["mousePan"]);const N=n.keyboard=new Va;this._add("keyboard",N),this._add("blockableMapEvent",new sl(n));for(const X of["boxZoom","doubleClickZoom","tapDragZoom","touchPitch","dragRotate","dragPan","touchZoomRotate","scrollZoom","keyboard"])t.interactive&&t[X]&&n[X].enable(t[X])}_add(t,n,a){this._handlers.push({handlerName:t,handler:n,allowed:a}),this._handlersById[t]=n}stop(t){if(!this._updatingCamera){for(const{handler:n}of this._handlers)n.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(lr(this._eventsInProgress))||this.isZooming()}_blockedByActive(t,n,a){for(const h in t)if(h!==a&&(!n||n.indexOf(h)<0))return!0;return!1}handleWindowEvent(t){this.handleEvent(t,`${t.type}Window`)}_getMapTouches(t){const n=[];for(const a of t)this._el.contains(a.target)&&n.push(a);return n}handleEvent(t,n){if(t.type==="blur")return void this.stop(!0);this._updatingCamera=!0;const a=t.type==="renderFrame"?void 0:t,h={needsRenderFrame:!1},p={},m={},_=t.touches,y=_?this._getMapTouches(_):void 0,v=y?K.touchPos(this._el,y):K.mousePos(this._el,t);for(const{handlerName:C,handler:D,allowed:B}of this._handlers){if(!D.isEnabled())continue;let L;this._blockedByActive(m,B,C)?D.reset():D[n||t.type]&&(L=D[n||t.type](t,v,y),this.mergeHandlerResult(h,p,L,C,a),L&&L.needsRenderFrame&&this._triggerRenderFrame()),(L||D.isActive())&&(m[C]=D)}const S={};for(const C in this._previousActiveHandlers)m[C]||(S[C]=a);this._previousActiveHandlers=m,(Object.keys(S).length||hs(h))&&(this._changes.push([h,p,S]),this._triggerRenderFrame()),(Object.keys(m).length||hs(h))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:E}=h;E&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],E(this._map))}mergeHandlerResult(t,n,a,h,p){if(!a)return;c.extend(t,a);const m={handlerName:h,originalEvent:a.originalEvent||p};a.zoomDelta!==void 0&&(n.zoom=m),a.panDelta!==void 0&&(n.drag=m),a.pitchDelta!==void 0&&(n.pitch=m),a.bearingDelta!==void 0&&(n.rotate=m)}_applyChanges(){const t={},n={},a={};for(const[h,p,m]of this._changes)h.panDelta&&(t.panDelta=(t.panDelta||new c.pointGeometry(0,0))._add(h.panDelta)),h.zoomDelta&&(t.zoomDelta=(t.zoomDelta||0)+h.zoomDelta),h.bearingDelta&&(t.bearingDelta=(t.bearingDelta||0)+h.bearingDelta),h.pitchDelta&&(t.pitchDelta=(t.pitchDelta||0)+h.pitchDelta),h.around!==void 0&&(t.around=h.around),h.pinchAround!==void 0&&(t.pinchAround=h.pinchAround),h.noInertia&&(t.noInertia=h.noInertia),c.extend(n,p),c.extend(a,m);this._updateMapTransform(t,n,a),this._changes=[]}_updateMapTransform(t,n,a){const h=this._map,p=h.transform,m=h.terrain;if(!(hs(t)||m&&this._terrainMovement))return this._fireEvents(n,a,!0);let{panDelta:_,zoomDelta:y,bearingDelta:v,pitchDelta:S,around:E,pinchAround:C}=t;C!==void 0&&(E=C),h._stop(!0),E=E||h.transform.centerPoint;const D=p.pointLocation(_?E.sub(_):E);v&&(p.bearing+=v),S&&(p.pitch+=S),y&&(p.zoom+=y),m?this._terrainMovement||!n.drag&&!n.zoom?n.drag&&this._terrainMovement?p.center=p.pointLocation(p.centerPoint.sub(_)):p.setLocationAtPoint(D,E):(this._terrainMovement=!0,p.freezeElevation=!0,p.setLocationAtPoint(D,E),this._map.once("moveend",()=>{p.freezeElevation=!1,this._terrainMovement=!1,p.recalculateZoom(h.terrain)})):p.setLocationAtPoint(D,E),this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(n,a,!0)}_fireEvents(t,n,a){const h=lr(this._eventsInProgress),p=lr(t),m={};for(const S in t){const{originalEvent:E}=t[S];this._eventsInProgress[S]||(m[`${S}start`]=E),this._eventsInProgress[S]=t[S]}!h&&p&&this._fireEvent("movestart",p.originalEvent);for(const S in m)this._fireEvent(S,m[S]);p&&this._fireEvent("move",p.originalEvent);for(const S in t){const{originalEvent:E}=t[S];this._fireEvent(S,E)}const _={};let y;for(const S in this._eventsInProgress){const{handlerName:E,originalEvent:C}=this._eventsInProgress[S];this._handlersById[E].isActive()||(delete this._eventsInProgress[S],y=n[E]||C,_[`${S}end`]=y)}for(const S in _)this._fireEvent(S,_[S]);const v=lr(this._eventsInProgress);if(a&&(h||p)&&!v){this._updatingCamera=!0;const S=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),E=C=>C!==0&&-this._bearingSnap<C&&C<this._bearingSnap;S?(E(S.bearing||this._map.getBearing())&&(S.bearing=0),S.freezeElevation=!0,this._map.easeTo(S,{originalEvent:y})):(this._map.fire(new c.Event("moveend",{originalEvent:y})),E(this._map.getBearing())&&this._map.resetNorth()),this._updatingCamera=!1}}_fireEvent(t,n){this._map.fire(new c.Event(t,n?{originalEvent:n}:{}))}_requestFrame(){return this._map.triggerRepaint(),this._map._renderTaskQueue.add(t=>{delete this._frameId,this.handleEvent(new cl("renderFrame",{timeStamp:t})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}const Xa={extend:(o,...t)=>c.extend(o,...t),run(o){o()},logToElement(o,t=!1,n="log"){const a=window.document.getElementById(n);a&&(t&&(a.innerHTML=""),a.innerHTML+=`<br>${o}`)}};class hl extends c.Evented{constructor(t,n){super(),this._moving=!1,this._zooming=!1,this.transform=t,this._bearingSnap=n.bearingSnap,c.bindAll(["_renderFrameCallback"],this)}getCenter(){return new c.LngLat(this.transform.center.lng,this.transform.center.lat)}setCenter(t,n){return this.jumpTo({center:t},n)}panBy(t,n,a){return t=c.pointGeometry.convert(t).mult(-1),this.panTo(this.transform.center,c.extend({offset:t},n),a)}panTo(t,n,a){return this.easeTo(c.extend({center:t},n),a)}getZoom(){return this.transform.zoom}setZoom(t,n){return this.jumpTo({zoom:t},n),this}zoomTo(t,n,a){return this.easeTo(c.extend({zoom:t},n),a)}zoomIn(t,n){return this.zoomTo(this.getZoom()+1,t,n),this}zoomOut(t,n){return this.zoomTo(this.getZoom()-1,t,n),this}getBearing(){return this.transform.bearing}setBearing(t,n){return this.jumpTo({bearing:t},n),this}getPadding(){return this.transform.padding}setPadding(t,n){return this.jumpTo({padding:t},n),this}rotateTo(t,n,a){return this.easeTo(c.extend({bearing:t},n),a)}resetNorth(t,n){return this.rotateTo(0,c.extend({duration:1e3},t),n),this}resetNorthPitch(t,n){return this.easeTo(c.extend({bearing:0,pitch:0,duration:1e3},t),n),this}snapToNorth(t,n){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(t,n):this}getPitch(){return this.transform.pitch}setPitch(t,n){return this.jumpTo({pitch:t},n),this}cameraForBounds(t,n){t=c.LngLatBounds.convert(t);const a=n&&n.bearing||0;return this._cameraForBoxAndBearing(t.getNorthWest(),t.getSouthEast(),a,n)}_cameraForBoxAndBearing(t,n,a,h){const p={top:0,bottom:0,right:0,left:0};if(typeof(h=c.extend({padding:p,offset:[0,0],maxZoom:this.transform.maxZoom},h)).padding=="number"){const te=h.padding;h.padding={top:te,bottom:te,right:te,left:te}}h.padding=c.extend(p,h.padding);const m=this.transform,_=m.padding,y=m.project(c.LngLat.convert(t)),v=m.project(c.LngLat.convert(n)),S=y.rotate(-a*Math.PI/180),E=v.rotate(-a*Math.PI/180),C=new c.pointGeometry(Math.max(S.x,E.x),Math.max(S.y,E.y)),D=new c.pointGeometry(Math.min(S.x,E.x),Math.min(S.y,E.y)),B=C.sub(D),L=(m.width-(_.left+_.right+h.padding.left+h.padding.right))/B.x,N=(m.height-(_.top+_.bottom+h.padding.top+h.padding.bottom))/B.y;if(N<0||L<0)return void c.warnOnce("Map cannot fit within canvas with the given bounds, padding, and/or offset.");const X=Math.min(m.scaleZoom(m.scale*Math.min(L,N)),h.maxZoom),q=c.pointGeometry.convert(h.offset),U=new c.pointGeometry((h.padding.left-h.padding.right)/2,(h.padding.top-h.padding.bottom)/2).rotate(a*Math.PI/180),W=q.add(U).mult(m.scale/m.zoomScale(X));return{center:m.unproject(y.add(v).div(2).sub(W)),zoom:X,bearing:a}}fitBounds(t,n,a){return this._fitInternal(this.cameraForBounds(t,n),n,a)}fitScreenCoordinates(t,n,a,h,p){return this._fitInternal(this._cameraForBoxAndBearing(this.transform.pointLocation(c.pointGeometry.convert(t)),this.transform.pointLocation(c.pointGeometry.convert(n)),a,h),h,p)}_fitInternal(t,n,a){return t?(delete(n=c.extend(t,n)).padding,n.linear?this.easeTo(n,a):this.flyTo(n,a)):this}jumpTo(t,n){this.stop();const a=this.transform;let h=!1,p=!1,m=!1;return"zoom"in t&&a.zoom!==+t.zoom&&(h=!0,a.zoom=+t.zoom),t.center!==void 0&&(a.center=c.LngLat.convert(t.center)),"bearing"in t&&a.bearing!==+t.bearing&&(p=!0,a.bearing=+t.bearing),"pitch"in t&&a.pitch!==+t.pitch&&(m=!0,a.pitch=+t.pitch),t.padding==null||a.isPaddingEqual(t.padding)||(a.padding=t.padding),this.fire(new c.Event("movestart",n)).fire(new c.Event("move",n)),h&&this.fire(new c.Event("zoomstart",n)).fire(new c.Event("zoom",n)).fire(new c.Event("zoomend",n)),p&&this.fire(new c.Event("rotatestart",n)).fire(new c.Event("rotate",n)).fire(new c.Event("rotateend",n)),m&&this.fire(new c.Event("pitchstart",n)).fire(new c.Event("pitch",n)).fire(new c.Event("pitchend",n)),this.fire(new c.Event("moveend",n))}calculateCameraOptionsFromTo(t,n,a,h=0){const p=c.MercatorCoordinate.fromLngLat(t,n),m=c.MercatorCoordinate.fromLngLat(a,h),_=m.x-p.x,y=m.y-p.y,v=m.z-p.z,S=Math.hypot(_,y,v);if(S===0)throw new Error("Can't calculate camera options with same From and To");const E=Math.hypot(_,y),C=this.transform.scaleZoom(this.transform.cameraToCenterDistance/S/this.transform.tileSize),D=180*Math.atan2(_,-y)/Math.PI;let B=180*Math.acos(E/S)/Math.PI;return B=v<0?90-B:90+B,{center:m.toLngLat(),zoom:C,pitch:B,bearing:D}}easeTo(t,n){this._stop(!1,t.easeId),((t=c.extend({offset:[0,0],duration:500,easing:c.ease},t)).animate===!1||!t.essential&&c.exported.prefersReducedMotion)&&(t.duration=0);const a=this.transform,h=this.getZoom(),p=this.getBearing(),m=this.getPitch(),_=this.getPadding(),y="zoom"in t?+t.zoom:h,v="bearing"in t?this._normalizeBearing(t.bearing,p):p,S="pitch"in t?+t.pitch:m,E="padding"in t?t.padding:a.padding,C=c.pointGeometry.convert(t.offset);let D=a.centerPoint.add(C);const B=a.pointLocation(D),L=c.LngLat.convert(t.center||B);this._normalizeCenter(L);const N=a.project(B),X=a.project(L).sub(N),q=a.zoomScale(y-h);let U,W;t.around&&(U=c.LngLat.convert(t.around),W=a.locationPoint(U));const te={moving:this._moving,zooming:this._zooming,rotating:this._rotating,pitching:this._pitching};return this._zooming=this._zooming||y!==h,this._rotating=this._rotating||p!==v,this._pitching=this._pitching||S!==m,this._padding=!a.isPaddingEqual(E),this._easeId=t.easeId,this._prepareEase(n,t.noMoveStart,te),this.terrain&&this._prepareElevation(L),this._ease(ae=>{if(this._zooming&&(a.zoom=c.number(h,y,ae)),this._rotating&&(a.bearing=c.number(p,v,ae)),this._pitching&&(a.pitch=c.number(m,S,ae)),this._padding&&(a.interpolatePadding(_,E,ae),D=a.centerPoint.add(C)),this.terrain&&!t.freezeElevation&&this._updateElevation(ae),U)a.setLocationAtPoint(U,W);else{const he=a.zoomScale(a.zoom-h),de=y>h?Math.min(2,q):Math.max(.5,q),we=Math.pow(de,1-ae),ye=a.unproject(N.add(X.mult(ae*we)).mult(he));a.setLocationAtPoint(a.renderWorldCopies?ye.wrap():ye,D)}this._fireMoveEvents(n)},ae=>{this.terrain&&this._finalizeElevation(),this._afterEase(n,ae)},t),this}_prepareEase(t,n,a={}){this._moving=!0,n||a.moving||this.fire(new c.Event("movestart",t)),this._zooming&&!a.zooming&&this.fire(new c.Event("zoomstart",t)),this._rotating&&!a.rotating&&this.fire(new c.Event("rotatestart",t)),this._pitching&&!a.pitching&&this.fire(new c.Event("pitchstart",t))}_prepareElevation(t){this._elevationCenter=t,this._elevationStart=this.transform.elevation,this._elevationTarget=this.transform.getElevation(t,this.terrain),this.transform.freezeElevation=!0}_updateElevation(t){const n=this.transform.getElevation(this._elevationCenter,this.terrain);if(t<1&&n!==this._elevationTarget){const a=this._elevationTarget-this._elevationStart;this._elevationStart+=t*(a-(n-(a*t+this._elevationStart))/(1-t)),this._elevationTarget=n}this.transform.elevation=c.number(this._elevationStart,this._elevationTarget,t)}_finalizeElevation(){this.transform.freezeElevation=!1,this.transform.recalculateZoom(this.terrain)}_fireMoveEvents(t){this.fire(new c.Event("move",t)),this._zooming&&this.fire(new c.Event("zoom",t)),this._rotating&&this.fire(new c.Event("rotate",t)),this._pitching&&this.fire(new c.Event("pitch",t))}_afterEase(t,n){if(this._easeId&&n&&this._easeId===n)return;delete this._easeId;const a=this._zooming,h=this._rotating,p=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,a&&this.fire(new c.Event("zoomend",t)),h&&this.fire(new c.Event("rotateend",t)),p&&this.fire(new c.Event("pitchend",t)),this.fire(new c.Event("moveend",t))}flyTo(t,n){if(!t.essential&&c.exported.prefersReducedMotion){const We=c.pick(t,["center","zoom","bearing","pitch","around"]);return this.jumpTo(We,n)}this.stop(),t=c.extend({offset:[0,0],speed:1.2,curve:1.42,easing:c.ease},t);const a=this.transform,h=this.getZoom(),p=this.getBearing(),m=this.getPitch(),_=this.getPadding(),y="zoom"in t?c.clamp(+t.zoom,a.minZoom,a.maxZoom):h,v="bearing"in t?this._normalizeBearing(t.bearing,p):p,S="pitch"in t?+t.pitch:m,E="padding"in t?t.padding:a.padding,C=a.zoomScale(y-h),D=c.pointGeometry.convert(t.offset);let B=a.centerPoint.add(D);const L=a.pointLocation(B),N=c.LngLat.convert(t.center||L);this._normalizeCenter(N);const X=a.project(L),q=a.project(N).sub(X);let U=t.curve;const W=Math.max(a.width,a.height),te=W/C,ae=q.mag();if("minZoom"in t){const We=c.clamp(Math.min(t.minZoom,h,y),a.minZoom,a.maxZoom),Mt=W/a.zoomScale(We-h);U=Math.sqrt(Mt/ae*2)}const he=U*U;function de(We){const Mt=(te*te-W*W+(We?-1:1)*he*he*ae*ae)/(2*(We?te:W)*he*ae);return Math.log(Math.sqrt(Mt*Mt+1)-Mt)}function we(We){return(Math.exp(We)-Math.exp(-We))/2}function ye(We){return(Math.exp(We)+Math.exp(-We))/2}const Ae=de(0);let Ge=function(We){return ye(Ae)/ye(Ae+U*We)},rt=function(We){return W*((ye(Ae)*(we(Mt=Ae+U*We)/ye(Mt))-we(Ae))/he)/ae;var Mt},nt=(de(1)-Ae)/U;if(Math.abs(ae)<1e-6||!isFinite(nt)){if(Math.abs(W-te)<1e-6)return this.easeTo(t,n);const We=te<W?-1:1;nt=Math.abs(Math.log(te/W))/U,rt=function(){return 0},Ge=function(Mt){return Math.exp(We*U*Mt)}}return t.duration="duration"in t?+t.duration:1e3*nt/("screenSpeed"in t?+t.screenSpeed/U:+t.speed),t.maxDuration&&t.duration>t.maxDuration&&(t.duration=0),this._zooming=!0,this._rotating=p!==v,this._pitching=S!==m,this._padding=!a.isPaddingEqual(E),this._prepareEase(n,!1),this.terrain&&this._prepareElevation(N),this._ease(We=>{const Mt=We*nt,Tt=1/Ge(Mt);a.zoom=We===1?y:h+a.scaleZoom(Tt),this._rotating&&(a.bearing=c.number(p,v,We)),this._pitching&&(a.pitch=c.number(m,S,We)),this._padding&&(a.interpolatePadding(_,E,We),B=a.centerPoint.add(D)),this.terrain&&!t.freezeElevation&&this._updateElevation(We);const mt=We===1?N:a.unproject(X.add(q.mult(rt(Mt))).mult(Tt));a.setLocationAtPoint(a.renderWorldCopies?mt.wrap():mt,B),this._fireMoveEvents(n)},()=>{this.terrain&&this._finalizeElevation(),this._afterEase(n)},t),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(t,n){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){const a=this._onEaseEnd;delete this._onEaseEnd,a.call(this,n)}if(!t){const a=this.handlers;a&&a.stop(!1)}return this}_ease(t,n,a){a.animate===!1||a.duration===0?(t(1),n()):(this._easeStart=c.exported.now(),this._easeOptions=a,this._onEaseFrame=t,this._onEaseEnd=n,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_renderFrameCallback(){const t=Math.min((c.exported.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(t)),t<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()}_normalizeBearing(t,n){t=c.wrap(t,-180,180);const a=Math.abs(t-n);return Math.abs(t-360-n)<a&&(t-=360),Math.abs(t+360-n)<a&&(t+=360),t}_normalizeCenter(t){const n=this.transform;if(!n.renderWorldCopies||n.lngRange)return;const a=t.lng-n.center.lng;t.lng+=a>180?-360:a<-180?360:0}}class ji{constructor(t={}){this.options=t,c.bindAll(["_toggleAttribution","_updateData","_updateCompact","_updateCompactMinimize"],this)}getDefaultPosition(){return"bottom-right"}onAdd(t){return this._map=t,this._compact=this.options&&this.options.compact,this._container=K.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=K.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=K.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(){K.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,n){const a=this._map._getUIString(`AttributionControl.${n}`);t.title=a,t.setAttribute("aria-label",a)}_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")))}_updateData(t){!t||t.sourceDataType!=="metadata"&&t.sourceDataType!=="visibility"&&t.dataType!=="style"&&t.type!=="terrain"||this._updateAttributions()}_updateAttributions(){if(!this._map.style)return;let t=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?t=t.concat(this.options.customAttribution.map(h=>typeof h!="string"?"":h)):typeof this.options.customAttribution=="string"&&t.push(this.options.customAttribution)),this._map.style.stylesheet){const h=this._map.style.stylesheet;this.styleOwner=h.owner,this.styleId=h.id}const n=this._map.style.sourceCaches;for(const h in n){const p=n[h];if(p.used||p.usedForTerrain){const m=p.getSource();m.attribution&&t.indexOf(m.attribution)<0&&t.push(m.attribution)}}t=t.filter(h=>String(h).trim()),t.sort((h,p)=>h.length-p.length),t=t.filter((h,p)=>{for(let m=p+1;m<t.length;m++)if(t[m].indexOf(h)>=0)return!1;return!0});const a=t.join(" | ");a!==this._attribHTML&&(this._attribHTML=a,t.length?(this._innerContainer.innerHTML=a,this._container.classList.remove("maplibregl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty"),this._updateCompact(),this._editLink=null)}_updateCompact(){this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact===!1?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"))}_updateCompactMinimize(){this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show")}}class Vt{constructor(t={}){this.options=t,c.bindAll(["_updateCompact"],this)}getDefaultPosition(){return"bottom-left"}onAdd(t){this._map=t,this._compact=this.options&&this.options.compact,this._container=K.create("div","maplibregl-ctrl");const n=K.create("a","maplibregl-ctrl-logo");return n.target="_blank",n.rel="noopener nofollow",n.href="https://maplibre.org/",n.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),n.setAttribute("rel","noopener nofollow"),this._container.appendChild(n),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){K.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0}_updateCompact(){const t=this._container.children;if(t.length){const n=t[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&n.classList.add("maplibregl-compact"):n.classList.remove("maplibregl-compact")}}}class Hs{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(t){const n=++this._id;return this._queue.push({callback:t,id:n,cancelled:!1}),n}remove(t){const n=this._currentlyRunning,a=n?this._queue.concat(n):this._queue;for(const h of a)if(h.id===t)return void(h.cancelled=!0)}run(t=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");const n=this._currentlyRunning=this._queue;this._queue=[];for(const a of n)if(!a.cancelled&&(a.callback(t),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}const Wa={"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 ul=c.createLayout([{name:"a_pos3d",type:"Int16",components:3}]);class pl extends c.Evented{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(t,n){this.sourceCache.update(t,n),this._renderableTilesKeys=[];const a={};for(const h of t.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:n}))a[h.key]=!0,this._renderableTilesKeys.push(h.key),this._tiles[h.key]||(h.posMatrix=new Float64Array(16),c.ortho(h.posMatrix,0,c.EXTENT,0,c.EXTENT,0,1),this._tiles[h.key]=new wr(h,this.tileSize));for(const h in this._tiles)a[h]||delete this._tiles[h]}freeRtt(t){for(const n in this._tiles){const a=this._tiles[n];(!t||a.tileID.equals(t)||a.tileID.isChildOf(t)||t.isChildOf(a.tileID))&&(a.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map(t=>this.getTileByID(t))}getTileByID(t){return this._tiles[t]}getTerrainCoords(t){const n={};for(const a of this._renderableTilesKeys){const h=this._tiles[a].tileID;if(h.canonical.equals(t.canonical)){const p=t.clone();p.posMatrix=new Float64Array(16),c.ortho(p.posMatrix,0,c.EXTENT,0,c.EXTENT,0,1),n[a]=p}else if(h.canonical.isChildOf(t.canonical)){const p=t.clone();p.posMatrix=new Float64Array(16);const m=h.canonical.z-t.canonical.z,_=h.canonical.x-(h.canonical.x>>m<<m),y=h.canonical.y-(h.canonical.y>>m<<m),v=c.EXTENT>>m;c.ortho(p.posMatrix,0,v,0,v,0,1),c.translate(p.posMatrix,p.posMatrix,[-_*v,-y*v,0]),n[a]=p}else if(t.canonical.isChildOf(h.canonical)){const p=t.clone();p.posMatrix=new Float64Array(16);const m=t.canonical.z-h.canonical.z,_=t.canonical.x-(t.canonical.x>>m<<m),y=t.canonical.y-(t.canonical.y>>m<<m),v=c.EXTENT>>m;c.ortho(p.posMatrix,0,c.EXTENT,0,c.EXTENT,0,1),c.translate(p.posMatrix,p.posMatrix,[_*v,y*v,0]),c.scale(p.posMatrix,p.posMatrix,[1/2**m,1/2**m,0]),n[a]=p}}return n}getSourceTile(t,n){const a=this.sourceCache._source;let h=t.overscaledZ-this.deltaZoom;if(h>a.maxzoom&&(h=a.maxzoom),h<a.minzoom)return null;this._sourceTileCache[t.key]||(this._sourceTileCache[t.key]=t.scaledTo(h).key);let p=this.sourceCache.getTileByID(this._sourceTileCache[t.key]);if((!p||!p.dem)&&n)for(;h>=a.minzoom&&(!p||!p.dem);)p=this.sourceCache.getTileByID(t.scaledTo(h--).key);return p}tilesAfterTime(t=Date.now()){return Object.values(this._tiles).filter(n=>n.timeAdded>=t)}}class dl{constructor(t,n,a){this.painter=t,this.sourceCache=new pl(n),this.options=a,this.exaggeration=typeof a.exaggeration=="number"?a.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}getDEMElevation(t,n,a,h=c.EXTENT){if(!(n>=0&&n<h&&a>=0&&a<h))return 0;let p=0;const m=this.getTerrainData(t);if(m.tile&&m.tile.dem){const _=c.transformMat4$1([],[n/h*c.EXTENT,a/h*c.EXTENT],m.u_terrain_matrix),y=[_[0]*m.tile.dem.dim,_[1]*m.tile.dem.dim],v=[Math.floor(y[0]),Math.floor(y[1])],S=m.tile.dem.get(v[0],v[1]),E=m.tile.dem.get(v[0],v[1]+1),C=m.tile.dem.get(v[0]+1,v[1]),D=m.tile.dem.get(v[0]+1,v[1]+1);p=c.number(c.number(S,E,y[0]-v[0]),c.number(C,D,y[0]-v[0]),y[1]-v[1])}return p}getElevation(t,n,a,h=c.EXTENT){return this.getDEMElevation(t,n,a,h)*this.exaggeration}getTerrainData(t){if(!this._emptyDemTexture){const h=this.painter.context,p=new c.RGBAImage({width:1,height:1},new Uint8Array(4));this._emptyDepthTexture=new Dt(h,p,h.gl.RGBA,{premultiply:!1}),this._emptyDemUnpack=[0,0,0,0],this._emptyDemTexture=new Dt(h,new c.RGBAImage({width:1,height:1}),h.gl.RGBA,{premultiply:!1}),this._emptyDemTexture.bind(h.gl.NEAREST,h.gl.CLAMP_TO_EDGE),this._emptyDemMatrix=c.identity([])}const n=this.sourceCache.getSourceTile(t,!0);if(n&&n.dem&&(!n.demTexture||n.needsTerrainPrepare)){const h=this.painter.context;n.demTexture=this.painter.getTileTexture(n.dem.stride),n.demTexture?n.demTexture.update(n.dem.getPixels(),{premultiply:!1}):n.demTexture=new Dt(h,n.dem.getPixels(),h.gl.RGBA,{premultiply:!1}),n.demTexture.bind(h.gl.NEAREST,h.gl.CLAMP_TO_EDGE),n.needsTerrainPrepare=!1}const a=n&&n+n.tileID.key+t.key;if(a&&!this._demMatrixCache[a]){const h=this.sourceCache.sourceCache._source.maxzoom;let p=t.canonical.z-n.tileID.canonical.z;t.overscaledZ>t.canonical.z&&(t.canonical.z>=h?p=t.canonical.z-h:c.warnOnce("cannot calculate elevation if elevation maxzoom > source.maxzoom"));const m=t.canonical.x-(t.canonical.x>>p<<p),_=t.canonical.y-(t.canonical.y>>p<<p),y=c.fromScaling(new Float64Array(16),[1/(c.EXTENT<<p),1/(c.EXTENT<<p),0]);c.translate(y,y,[m*c.EXTENT,_*c.EXTENT,0]),this._demMatrixCache[t.key]={matrix:y,coord:t}}return{u_depth:2,u_terrain:3,u_terrain_dim:n&&n.dem&&n.dem.dim||1,u_terrain_matrix:a?this._demMatrixCache[t.key].matrix:this._emptyDemMatrix,u_terrain_unpack:n&&n.dem&&n.dem.getUnpackVector()||this._emptyDemUnpack,u_terrain_exaggeration:this.exaggeration,texture:(n&&n.demTexture||this._emptyDemTexture).texture,depthTexture:(this._fboDepthTexture||this._emptyDepthTexture).texture,tile:n}}getFramebuffer(t){const n=this.painter,a=n.width/devicePixelRatio,h=n.height/devicePixelRatio;return!this._fbo||this._fbo.width===a&&this._fbo.height===h||(this._fbo.destroy(),this._fboCoordsTexture.destroy(),this._fboDepthTexture.destroy(),delete this._fbo,delete this._fboDepthTexture,delete this._fboCoordsTexture),this._fboCoordsTexture||(this._fboCoordsTexture=new Dt(n.context,{width:a,height:h,data:null},n.context.gl.RGBA,{premultiply:!1}),this._fboCoordsTexture.bind(n.context.gl.NEAREST,n.context.gl.CLAMP_TO_EDGE)),this._fboDepthTexture||(this._fboDepthTexture=new Dt(n.context,{width:a,height:h,data:null},n.context.gl.RGBA,{premultiply:!1}),this._fboDepthTexture.bind(n.context.gl.NEAREST,n.context.gl.CLAMP_TO_EDGE)),this._fbo||(this._fbo=n.context.createFramebuffer(a,h,!0),this._fbo.depthAttachment.set(n.context.createRenderbuffer(n.context.gl.DEPTH_COMPONENT16,a,h))),this._fbo.colorAttachment.set(t==="coords"?this._fboCoordsTexture.texture:this._fboDepthTexture.texture),this._fbo}getCoordsTexture(){const t=this.painter.context;if(this._coordsTexture)return this._coordsTexture;const n=new Uint8Array(this._coordsTextureSize*this._coordsTextureSize*4);for(let p=0,m=0;p<this._coordsTextureSize;p++)for(let _=0;_<this._coordsTextureSize;_++,m+=4)n[m+0]=255&_,n[m+1]=255&p,n[m+2]=_>>8<<4|p>>8,n[m+3]=0;const a=new c.RGBAImage({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(n.buffer)),h=new Dt(t,a,t.gl.RGBA,{premultiply:!1});return h.bind(t.gl.NEAREST,t.gl.CLAMP_TO_EDGE),this._coordsTexture=h,h}pointCoordinate(t){const n=new Uint8Array(4),a=this.painter.context,h=a.gl;a.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),h.readPixels(t.x,this.painter.height/devicePixelRatio-t.y-1,1,1,h.RGBA,h.UNSIGNED_BYTE,n),a.bindFramebuffer.set(null);const p=n[0]+(n[2]>>4<<8),m=n[1]+((15&n[2])<<8),_=this.coordsIndex[255-n[3]],y=_&&this.sourceCache.getTileByID(_);if(!y)return null;const v=this._coordsTextureSize,S=(1<<y.tileID.canonical.z)*v;return new c.MercatorCoordinate((y.tileID.canonical.x*v+p)/S,(y.tileID.canonical.y*v+m)/S,this.getElevation(y.tileID,p,m,v))}getTerrainMesh(){if(this._mesh)return this._mesh;const t=this.painter.context,n=new c.Pos3dArray,a=new c.TriangleIndexArray,h=this.meshSize,p=c.EXTENT/h,m=h*h;for(let E=0;E<=h;E++)for(let C=0;C<=h;C++)n.emplaceBack(C*p,E*p,0);for(let E=0;E<m;E+=h+1)for(let C=0;C<h;C++)a.emplaceBack(C+E,h+C+E+1,h+C+E+2),a.emplaceBack(C+E,h+C+E+2,C+E+1);const _=n.length,y=_+2*(h+1);for(const E of[0,1])for(let C=0;C<=h;C++)for(const D of[0,1])n.emplaceBack(C*p,E*c.EXTENT,D);for(let E=0;E<2*h;E+=2)a.emplaceBack(y+E,y+E+1,y+E+3),a.emplaceBack(y+E,y+E+3,y+E+2),a.emplaceBack(_+E,_+E+3,_+E+1),a.emplaceBack(_+E,_+E+2,_+E+3);const v=n.length,S=v+2*(h+1);for(const E of[0,1])for(let C=0;C<=h;C++)for(const D of[0,1])n.emplaceBack(E*c.EXTENT,C*p,D);for(let E=0;E<2*h;E+=2)a.emplaceBack(v+E,v+E+1,v+E+3),a.emplaceBack(v+E,v+E+3,v+E+2),a.emplaceBack(S+E,S+E+3,S+E+1),a.emplaceBack(S+E,S+E+2,S+E+3);return this._mesh={indexBuffer:t.createIndexBuffer(a),vertexBuffer:t.createVertexBuffer(n,ul.members),segments:c.SegmentVector.simpleSegment(0,0,n.length,a.length)},this._mesh}getMeshFrameDelta(t){return 2*Math.PI*c.earthRadius/Math.pow(2,t)/5}getMinMaxElevation(t){const n=this.getTerrainData(t).tile,a={minElevation:null,maxElevation:null};return n&&n.dem&&(a.minElevation=n.dem.min*this.exaggeration,a.maxElevation=n.dem.max*this.exaggeration),a}}class uc{constructor(t,n,a){this._context=t,this._size=n,this._tileSize=a,this._objects=[],this._recentlyUsed=[],this._stamp=0}destruct(){for(const t of this._objects)t.texture.destroy(),t.fbo.destroy()}_createObject(t){const n=this._context.createFramebuffer(this._tileSize,this._tileSize,!0),a=new Dt(this._context,{width:this._tileSize,height:this._tileSize,data:null},this._context.gl.RGBA);return a.bind(this._context.gl.LINEAR,this._context.gl.CLAMP_TO_EDGE),n.depthAttachment.set(this._context.createRenderbuffer(this._context.gl.DEPTH_COMPONENT16,this._tileSize,this._tileSize)),n.colorAttachment.set(a.texture),{id:t,fbo:n,texture:a,stamp:-1,inUse:!1}}getObjectForId(t){return this._objects[t]}useObject(t){t.inUse=!0,this._recentlyUsed=this._recentlyUsed.filter(n=>t.id!==n),this._recentlyUsed.push(t.id)}stampObject(t){t.stamp=++this._stamp}getOrCreateFreeObject(){for(const n of this._recentlyUsed)if(!this._objects[n].inUse)return this._objects[n];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)&&this._objects.some(t=>!t.inUse)===!1}}const Ti={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class Ks{constructor(t,n){this.painter=t,this.terrain=n,this.pool=new uc(t.context,30,n.sourceCache.tileSize*n.qualityFactor)}destruct(){this.pool.destruct()}getTexture(t){return this.pool.getObjectForId(t.rtt[this._stacks.length-1].id).texture}prepareForRender(t,n){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=t._order.filter(a=>!t._layers[a].isHidden(n)),this._coordsDescendingInv={};for(const a in t.sourceCaches){this._coordsDescendingInv[a]={};const h=t.sourceCaches[a].getVisibleCoordinates();for(const p of h){const m=this.terrain.sourceCache.getTerrainCoords(p);for(const _ in m)this._coordsDescendingInv[a][_]||(this._coordsDescendingInv[a][_]=[]),this._coordsDescendingInv[a][_].push(m[_])}}this._coordsDescendingInvStr={};for(const a of t._order){const h=t._layers[a],p=h.source;if(Ti[h.type]&&!this._coordsDescendingInvStr[p]){this._coordsDescendingInvStr[p]={};for(const m in this._coordsDescendingInv[p])this._coordsDescendingInvStr[p][m]=this._coordsDescendingInv[p][m].map(_=>_.key).sort().join()}}for(const a of this._renderableTiles)for(const h in this._coordsDescendingInvStr){const p=this._coordsDescendingInvStr[h][a.tileID.key];p&&p!==a.rttCoords[h]&&(a.rtt=[])}}renderLayer(t){if(t.isHidden(this.painter.transform.zoom))return!1;const n=t.type,a=this.painter,h=this._renderableLayerIds[this._renderableLayerIds.length-1]===t.id;if(Ti[n]&&(this._prevType&&Ti[this._prevType]||this._stacks.push([]),this._prevType=n,this._stacks[this._stacks.length-1].push(t.id),!h))return!0;if(Ti[this._prevType]||Ti[n]&&h){this._prevType=n;const p=this._stacks.length-1,m=this._stacks[p]||[];for(const _ of this._renderableTiles){if(this.pool.isFull()&&(Gs(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(_),_.rtt[p]){const v=this.pool.getObjectForId(_.rtt[p].id);if(v.stamp===_.rtt[p].stamp){this.pool.useObject(v);continue}}const y=this.pool.getOrCreateFreeObject();this.pool.useObject(y),this.pool.stampObject(y),_.rtt[p]={id:y.id,stamp:y.stamp},a.context.bindFramebuffer.set(y.fbo.framebuffer),a.context.clear({color:c.Color.transparent});for(let v=0;v<m.length;v++){const S=a.style._layers[m[v]],E=S.source?this._coordsDescendingInv[S.source][_.tileID.key]:[_.tileID];a.context.viewport.set([0,0,y.fbo.width,y.fbo.height]),a._renderTileClippingMasks(S,E),a.renderLayer(a,a.style.sourceCaches[S.source],S,E),S.source&&(_.rttCoords[S.source]=this._coordsDescendingInvStr[S.source][_.tileID.key])}}return Gs(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects(),Ti[n]}return!1}}const Xe=St,Ye={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,maxTileCacheSize:null,localIdeographFontFamily:"sans-serif",transformRequest:null,fadeDuration:300,crossSourceCollisions:!0},us=o=>{o.touchstart=o.dragStart,o.touchmoveWindow=o.dragMove,o.touchend=o.dragEnd},Ha={showCompass:!0,showZoom:!0,visualizePitch:!1};class Ka{constructor(t,n,a=!1){this._clickTolerance=10;const h=t.dragRotate._mouseRotate.getClickTolerance(),p=t.dragRotate._mousePitch.getClickTolerance();this.element=n,this.mouseRotate=Oa({clickTolerance:h,enable:!0}),this.touchRotate=(({enable:m,clickTolerance:_,bearingDegreesPerPixelMoved:y=.8})=>{const v=new ol;return new $i({clickTolerance:_,move:(S,E)=>({bearingDelta:(E.x-S.x)*y}),moveStateManager:v,enable:m,assignEvents:us})})({clickTolerance:h,enable:!0}),this.map=t,a&&(this.mousePitch=In({clickTolerance:p,enable:!0}),this.touchPitch=(({enable:m,clickTolerance:_,pitchDegreesPerPixelMoved:y=-.5})=>{const v=new ol;return new $i({clickTolerance:_,move:(S,E)=>({pitchDelta:(E.y-S.y)*y}),moveStateManager:v,enable:m,assignEvents:us})})({clickTolerance:p,enable:!0})),c.bindAll(["mousedown","mousemove","mouseup","touchstart","touchmove","touchend","reset"],this),K.addEventListener(n,"mousedown",this.mousedown),K.addEventListener(n,"touchstart",this.touchstart,{passive:!1}),K.addEventListener(n,"touchcancel",this.reset)}startMouse(t,n){this.mouseRotate.dragStart(t,n),this.mousePitch&&this.mousePitch.dragStart(t,n),K.disableDrag()}startTouch(t,n){this.touchRotate.dragStart(t,n),this.touchPitch&&this.touchPitch.dragStart(t,n),K.disableDrag()}moveMouse(t,n){const a=this.map,{bearingDelta:h}=this.mouseRotate.dragMove(t,n)||{};if(h&&a.setBearing(a.getBearing()+h),this.mousePitch){const{pitchDelta:p}=this.mousePitch.dragMove(t,n)||{};p&&a.setPitch(a.getPitch()+p)}}moveTouch(t,n){const a=this.map,{bearingDelta:h}=this.touchRotate.dragMove(t,n)||{};if(h&&a.setBearing(a.getBearing()+h),this.touchPitch){const{pitchDelta:p}=this.touchPitch.dragMove(t,n)||{};p&&a.setPitch(a.getPitch()+p)}}off(){const t=this.element;K.removeEventListener(t,"mousedown",this.mousedown),K.removeEventListener(t,"touchstart",this.touchstart,{passive:!1}),K.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),K.removeEventListener(window,"touchend",this.touchend),K.removeEventListener(t,"touchcancel",this.reset),this.offTemp()}offTemp(){K.enableDrag(),K.removeEventListener(window,"mousemove",this.mousemove),K.removeEventListener(window,"mouseup",this.mouseup),K.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),K.removeEventListener(window,"touchend",this.touchend)}mousedown(t){this.startMouse(c.extend({},t,{ctrlKey:!0,preventDefault:()=>t.preventDefault()}),K.mousePos(this.element,t)),K.addEventListener(window,"mousemove",this.mousemove),K.addEventListener(window,"mouseup",this.mouseup)}mousemove(t){this.moveMouse(t,K.mousePos(this.element,t))}mouseup(t){this.mouseRotate.dragEnd(t),this.mousePitch&&this.mousePitch.dragEnd(t),this.offTemp()}touchstart(t){t.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=K.touchPos(this.element,t.targetTouches)[0],this.startTouch(t,this._startPos),K.addEventListener(window,"touchmove",this.touchmove,{passive:!1}),K.addEventListener(window,"touchend",this.touchend))}touchmove(t){t.targetTouches.length!==1?this.reset():(this._lastPos=K.touchPos(this.element,t.targetTouches)[0],this.moveTouch(t,this._lastPos))}touchend(t){t.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)<this._clickTolerance&&this.element.click(),delete this._startPos,delete this._lastPos,this.offTemp()}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()}}function Si(o,t,n){if(o=new c.LngLat(o.lng,o.lat),t){const a=new c.LngLat(o.lng-360,o.lat),h=new c.LngLat(o.lng+360,o.lat),p=n.locationPoint(o).distSqr(t);n.locationPoint(a).distSqr(t)<p?o=a:n.locationPoint(h).distSqr(t)<p&&(o=h)}for(;Math.abs(o.lng-n.center.lng)>180;){const a=n.locationPoint(o);if(a.x>=0&&a.y>=0&&a.x<=n.width&&a.y<=n.height)break;o.lng>n.center.lng?o.lng-=360:o.lng+=360}return o}const Cn={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 cr(o,t,n){const a=o.classList;for(const h in Cn)a.remove(`maplibregl-${n}-anchor-${h}`);a.add(`maplibregl-${n}-anchor-${t}`)}class Ja extends c.Evented{constructor(t,n){if(super(),(t instanceof HTMLElement||n)&&(t=c.extend({element:t},n)),c.bindAll(["_update","_onMove","_onUp","_addDragHandler","_onMapClick","_onKeyPress"],this),this._anchor=t&&t.anchor||"center",this._color=t&&t.color||"#3FB1CE",this._scale=t&&t.scale||1,this._draggable=t&&t.draggable||!1,this._clickTolerance=t&&t.clickTolerance||0,this._isDragging=!1,this._state="inactive",this._rotation=t&&t.rotation||0,this._rotationAlignment=t&&t.rotationAlignment||"auto",this._pitchAlignment=t&&t.pitchAlignment&&t.pitchAlignment!=="auto"?t.pitchAlignment:this._rotationAlignment,t&&t.element)this._element=t.element,this._offset=c.pointGeometry.convert(t&&t.offset||[0,0]);else{this._defaultMarker=!0,this._element=K.create("div"),this._element.setAttribute("aria-label","Map marker");const a=K.createNS("http://www.w3.org/2000/svg","svg"),h=41,p=27;a.setAttributeNS(null,"display","block"),a.setAttributeNS(null,"height",`${h}px`),a.setAttributeNS(null,"width",`${p}px`),a.setAttributeNS(null,"viewBox",`0 0 ${p} ${h}`);const m=K.createNS("http://www.w3.org/2000/svg","g");m.setAttributeNS(null,"stroke","none"),m.setAttributeNS(null,"stroke-width","1"),m.setAttributeNS(null,"fill","none"),m.setAttributeNS(null,"fill-rule","evenodd");const _=K.createNS("http://www.w3.org/2000/svg","g");_.setAttributeNS(null,"fill-rule","nonzero");const y=K.createNS("http://www.w3.org/2000/svg","g");y.setAttributeNS(null,"transform","translate(3.0, 29.0)"),y.setAttributeNS(null,"fill","#000000");const v=[{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 q of v){const U=K.createNS("http://www.w3.org/2000/svg","ellipse");U.setAttributeNS(null,"opacity","0.04"),U.setAttributeNS(null,"cx","10.5"),U.setAttributeNS(null,"cy","5.80029008"),U.setAttributeNS(null,"rx",q.rx),U.setAttributeNS(null,"ry",q.ry),y.appendChild(U)}const S=K.createNS("http://www.w3.org/2000/svg","g");S.setAttributeNS(null,"fill",this._color);const E=K.createNS("http://www.w3.org/2000/svg","path");E.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"),S.appendChild(E);const C=K.createNS("http://www.w3.org/2000/svg","g");C.setAttributeNS(null,"opacity","0.25"),C.setAttributeNS(null,"fill","#000000");const D=K.createNS("http://www.w3.org/2000/svg","path");D.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"),C.appendChild(D);const B=K.createNS("http://www.w3.org/2000/svg","g");B.setAttributeNS(null,"transform","translate(6.0, 7.0)"),B.setAttributeNS(null,"fill","#FFFFFF");const L=K.createNS("http://www.w3.org/2000/svg","g");L.setAttributeNS(null,"transform","translate(8.0, 8.0)");const N=K.createNS("http://www.w3.org/2000/svg","circle");N.setAttributeNS(null,"fill","#000000"),N.setAttributeNS(null,"opacity","0.25"),N.setAttributeNS(null,"cx","5.5"),N.setAttributeNS(null,"cy","5.5"),N.setAttributeNS(null,"r","5.4999962");const X=K.createNS("http://www.w3.org/2000/svg","circle");X.setAttributeNS(null,"fill","#FFFFFF"),X.setAttributeNS(null,"cx","5.5"),X.setAttributeNS(null,"cy","5.5"),X.setAttributeNS(null,"r","5.4999962"),L.appendChild(N),L.appendChild(X),_.appendChild(y),_.appendChild(S),_.appendChild(C),_.appendChild(B),_.appendChild(L),a.appendChild(_),a.setAttributeNS(null,"height",h*this._scale+"px"),a.setAttributeNS(null,"width",p*this._scale+"px"),this._element.appendChild(a),this._offset=c.pointGeometry.convert(t&&t.offset||[0,-14])}this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",a=>{a.preventDefault()}),this._element.addEventListener("mousedown",a=>{a.preventDefault()}),cr(this._element,this._anchor,"marker"),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),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),K.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(t){return this._lngLat=c.LngLat.convert(t),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 h=Math.sqrt(Math.pow(13.5,2)/2);t.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[h,-1*(38.1-13.5+h)],"bottom-right":[-h,-1*(38.1-13.5+h)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}: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}_onKeyPress(t){const n=t.code,a=t.charCode||t.keyCode;n!=="Space"&&n!=="Enter"&&a!==32&&a!==13||this.togglePopup()}_onMapClick(t){const n=t.originalEvent.target,a=this._element;this._popup&&(n===a||a.contains(n))&&this.togglePopup()}getPopup(){return this._popup}togglePopup(){const t=this._popup;return t?(t.isOpen()?t.remove():t.addTo(this._map),this):this}_update(t){if(!this._map)return;this._map.transform.renderWorldCopies&&(this._lngLat=Si(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset);let n="";this._rotationAlignment==="viewport"||this._rotationAlignment==="auto"?n=`rotateZ(${this._rotation}deg)`:this._rotationAlignment==="map"&&(n=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let a="";this._pitchAlignment==="viewport"||this._pitchAlignment==="auto"?a="rotateX(0deg)":this._pitchAlignment==="map"&&(a=`rotateX(${this._map.getPitch()}deg)`),t&&t.type!=="moveend"||(this._pos=this._pos.round()),K.setTransform(this._element,`${Cn[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${a} ${n}`),this._map.terrain&&!this._opacityTimeout&&(this._opacityTimeout=setTimeout(()=>{const h=this._map.unproject(this._pos),p=40075016686e-3*Math.abs(Math.cos(this._lngLat.lat*Math.PI/180))/Math.pow(2,this._map.transform.tileZoom+8);this._element.style.opacity=h.distanceTo(this._lngLat)>20*p?"0.2":"1.0",this._opacityTimeout=null},100))}getOffset(){return this._offset}setOffset(t){return this._offset=c.pointGeometry.convert(t),this._update(),this}_onMove(t){if(!this._isDragging){const n=this._clickTolerance||this._map._clickTolerance;this._isDragging=t.point.dist(this._pointerdownPos)>=n}this._isDragging&&(this._pos=t.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new c.Event("dragstart"))),this.fire(new c.Event("drag")))}_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),this._state==="active"&&this.fire(new c.Event("dragend")),this._state="inactive"}_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))}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&&t!=="auto"?t:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}}const Js={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0};let zt,Wt=0,Mn=!1;const ps={maxWidth:100,unit:"metric"};function ds(o,t,n){const a=n&&n.maxWidth||100,h=o._container.clientHeight/2,p=o.unproject([0,h]),m=o.unproject([a,h]),_=p.distanceTo(m);if(n&&n.unit==="imperial"){const y=3.2808*_;y>5280?Yr(t,a,y/5280,o._getUIString("ScaleControl.Miles")):Yr(t,a,y,o._getUIString("ScaleControl.Feet"))}else n&&n.unit==="nautical"?Yr(t,a,_/1852,o._getUIString("ScaleControl.NauticalMiles")):_>=1e3?Yr(t,a,_/1e3,o._getUIString("ScaleControl.Kilometers")):Yr(t,a,_,o._getUIString("ScaleControl.Meters"))}function Yr(o,t,n,a){const h=function(p){const m=Math.pow(10,`${Math.floor(p)}`.length-1);let _=p/m;return _=_>=10?10:_>=5?5:_>=3?3:_>=2?2:_>=1?1:function(y){const v=Math.pow(10,Math.ceil(-Math.log(y)/Math.LN10));return Math.round(y*v)/v}(_),m*_}(n);o.style.width=t*(h/n)+"px",o.innerHTML=`${h}&nbsp;${a}`}const Ya={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px"},Qa=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function Pn(o){if(o){if(typeof o=="number"){const t=Math.round(Math.sqrt(.5*Math.pow(o,2)));return{center:new c.pointGeometry(0,0),top:new c.pointGeometry(0,o),"top-left":new c.pointGeometry(t,t),"top-right":new c.pointGeometry(-t,t),bottom:new c.pointGeometry(0,-o),"bottom-left":new c.pointGeometry(t,-t),"bottom-right":new c.pointGeometry(-t,-t),left:new c.pointGeometry(o,0),right:new c.pointGeometry(-o,0)}}if(o instanceof c.pointGeometry||Array.isArray(o)){const t=c.pointGeometry.convert(o);return{center:t,top:t,"top-left":t,"top-right":t,bottom:t,"bottom-left":t,"bottom-right":t,left:t,right:t}}return{center:c.pointGeometry.convert(o.center||[0,0]),top:c.pointGeometry.convert(o.top||[0,0]),"top-left":c.pointGeometry.convert(o["top-left"]||[0,0]),"top-right":c.pointGeometry.convert(o["top-right"]||[0,0]),bottom:c.pointGeometry.convert(o.bottom||[0,0]),"bottom-left":c.pointGeometry.convert(o["bottom-left"]||[0,0]),"bottom-right":c.pointGeometry.convert(o["bottom-right"]||[0,0]),left:c.pointGeometry.convert(o.left||[0,0]),right:c.pointGeometry.convert(o.right||[0,0])}}return Pn(new c.pointGeometry(0,0))}const eo=St,ms={supported:Ie,setRTLTextPlugin:c.setRTLTextPlugin,getRTLTextPluginStatus:c.getRTLTextPluginStatus,Map:class extends hl{constructor(o){var t;if(c.PerformanceUtils.mark(c.PerformanceMarkers.create),(o=c.extend({},Ye,o)).minZoom!=null&&o.maxZoom!=null&&o.minZoom>o.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(o.minPitch!=null&&o.maxPitch!=null&&o.minPitch>o.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(o.minPitch!=null&&o.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(o.maxPitch!=null&&o.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(super(new Zs(o.minZoom,o.maxZoom,o.minPitch,o.maxPitch,o.renderWorldCopies),{bearingSnap:o.bearingSnap}),this._interactive=o.interactive,this._cooperativeGestures=o.cooperativeGestures,this._maxTileCacheSize=o.maxTileCacheSize,this._failIfMajorPerformanceCaveat=o.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=o.preserveDrawingBuffer,this._antialias=o.antialias,this._trackResize=o.trackResize,this._bearingSnap=o.bearingSnap,this._refreshExpiredTiles=o.refreshExpiredTiles,this._fadeDuration=o.fadeDuration,this._crossSourceCollisions=o.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=o.collectResourceTiming,this._renderTaskQueue=new Hs,this._controls=[],this._mapId=c.uniqueId(),this._locale=c.extend({},Wa,o.locale),this._clickTolerance=o.clickTolerance,this._pixelRatio=(t=o.pixelRatio)!==null&&t!==void 0?t:devicePixelRatio,this._requestManager=new Je(o.transformRequest),typeof o.container=="string"){if(this._container=document.getElementById(o.container),!this._container)throw new Error(`Container '${o.container}' not found.`)}else{if(!(o.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=o.container}o.maxBounds&&this.setMaxBounds(o.maxBounds),c.bindAll(["_onWindowOnline","_onWindowResize","_onMapScroll","_contextLost","_contextRestored"],this),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)}),typeof window<"u"&&(addEventListener("online",this._onWindowOnline,!1),addEventListener("resize",this._onWindowResize,!1),addEventListener("orientationchange",this._onWindowResize,!1)),this.handlers=new Za(this,o),this._cooperativeGestures&&this._setupCooperativeGestures(),this._hash=o.hash&&new Xs(typeof o.hash=="string"&&o.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:o.center,zoom:o.zoom,bearing:o.bearing,pitch:o.pitch}),o.bounds&&(this.resize(),this.fitBounds(o.bounds,c.extend({},o.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=o.localIdeographFontFamily,o.style&&this.setStyle(o.style,{localIdeographFontFamily:o.localIdeographFontFamily}),o.attributionControl&&this.addControl(new ji({customAttribution:o.customAttribution})),o.maplibreLogo&&this.addControl(new Vt,o.logoPosition),this.on("style.load",()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)}),this.on("data",n=>{this._update(n.dataType==="style"),this.fire(new c.Event(`${n.dataType}data`,n))}),this.on("dataloading",n=>{this.fire(new c.Event(`${n.dataType}dataloading`,n))}),this.on("dataabort",n=>{this.fire(new c.Event("sourcedataabort",n))})}_getMapId(){return this._mapId}addControl(o,t){if(t===void 0&&(t=o.getDefaultPosition?o.getDefaultPosition():"top-right"),!o||!o.onAdd)return this.fire(new c.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));const n=o.onAdd(this);this._controls.push(o);const a=this._controlPositions[t];return t.indexOf("bottom")!==-1?a.insertBefore(n,a.firstChild):a.appendChild(n),this}removeControl(o){if(!o||!o.onRemove)return this.fire(new c.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));const t=this._controls.indexOf(o);return t>-1&&this._controls.splice(t,1),o.onRemove(this),this}hasControl(o){return this._controls.indexOf(o)>-1}calculateCameraOptionsFromTo(o,t,n,a){return a==null&&this.terrain&&(a=this.transform.getElevation(n,this.terrain)),super.calculateCameraOptionsFromTo(o,t,n,a)}resize(o){const t=this._containerDimensions(),n=t[0],a=t[1];this._resizeCanvas(n,a,this.getPixelRatio()),this.transform.resize(n,a),this.painter.resize(n,a,this.getPixelRatio());const h=!this._moving;return h&&(this.stop(),this.fire(new c.Event("movestart",o)).fire(new c.Event("move",o))),this.fire(new c.Event("resize",o)),h&&this.fire(new c.Event("moveend",o)),this}getPixelRatio(){return this._pixelRatio}setPixelRatio(o){const[t,n]=this._containerDimensions();this._pixelRatio=o,this._resizeCanvas(t,n,o),this.painter.resize(t,n,o)}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(o){return this.transform.setMaxBounds(c.LngLatBounds.convert(o)),this._update()}setMinZoom(o){if((o=o??-2)>=-2&&o<=this.transform.maxZoom)return this.transform.minZoom=o,this._update(),this.getZoom()<o&&this.setZoom(o),this;throw new Error("minZoom must be between -2 and the current maxZoom, inclusive")}getMinZoom(){return this.transform.minZoom}setMaxZoom(o){if((o=o??22)>=this.transform.minZoom)return this.transform.maxZoom=o,this._update(),this.getZoom()>o&&this.setZoom(o),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(o){if((o=o??0)<0)throw new Error("minPitch must be greater than or equal to 0");if(o>=0&&o<=this.transform.maxPitch)return this.transform.minPitch=o,this._update(),this.getPitch()<o&&this.setPitch(o),this;throw new Error("minPitch must be between 0 and the current maxPitch, inclusive")}getMinPitch(){return this.transform.minPitch}setMaxPitch(o){if((o=o??60)>85)throw new Error("maxPitch must be less than or equal to 85");if(o>=this.transform.minPitch)return this.transform.maxPitch=o,this._update(),this.getPitch()>o&&this.setPitch(o),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(o){return this.transform.renderWorldCopies=o,this._update()}project(o){return this.transform.locationPoint(c.LngLat.convert(o),this.style&&this.terrain)}unproject(o){return this.transform.pointLocation(c.pointGeometry.convert(o),this.terrain)}isMoving(){return this._moving||this.handlers.isMoving()}isZooming(){return this._zooming||this.handlers.isZooming()}isRotating(){return this._rotating||this.handlers.isRotating()}_createDelegatedListener(o,t,n){if(o==="mouseenter"||o==="mouseover"){let a=!1;return{layer:t,listener:n,delegates:{mousemove:p=>{const m=this.getLayer(t)?this.queryRenderedFeatures(p.point,{layers:[t]}):[];m.length?a||(a=!0,n.call(this,new Ni(o,this,p.originalEvent,{features:m}))):a=!1},mouseout:()=>{a=!1}}}}if(o==="mouseleave"||o==="mouseout"){let a=!1;return{layer:t,listener:n,delegates:{mousemove:m=>{(this.getLayer(t)?this.queryRenderedFeatures(m.point,{layers:[t]}):[]).length?a=!0:a&&(a=!1,n.call(this,new Ni(o,this,m.originalEvent)))},mouseout:m=>{a&&(a=!1,n.call(this,new Ni(o,this,m.originalEvent)))}}}}{const a=h=>{const p=this.getLayer(t)?this.queryRenderedFeatures(h.point,{layers:[t]}):[];p.length&&(h.features=p,n.call(this,h),delete h.features)};return{layer:t,listener:n,delegates:{[o]:a}}}}on(o,t,n){if(n===void 0)return super.on(o,t);const a=this._createDelegatedListener(o,t,n);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[o]=this._delegatedListeners[o]||[],this._delegatedListeners[o].push(a);for(const h in a.delegates)this.on(h,a.delegates[h]);return this}once(o,t,n){if(n===void 0)return super.once(o,t);const a=this._createDelegatedListener(o,t,n);for(const h in a.delegates)this.once(h,a.delegates[h]);return this}off(o,t,n){return n===void 0?super.off(o,t):(this._delegatedListeners&&this._delegatedListeners[o]&&(a=>{const h=this._delegatedListeners[o];for(let p=0;p<h.length;p++){const m=h[p];if(m.layer===t&&m.listener===n){for(const _ in m.delegates)this.off(_,m.delegates[_]);return h.splice(p,1),this}}})(),this)}queryRenderedFeatures(o,t){if(!this.style)return[];let n;const a=o instanceof c.pointGeometry||Array.isArray(o),h=a?o:[[0,0],[this.transform.width,this.transform.height]];if(t=t||(a?{}:o)||{},h instanceof c.pointGeometry||typeof h[0]=="number")n=[c.pointGeometry.convert(h)];else{const p=c.pointGeometry.convert(h[0]),m=c.pointGeometry.convert(h[1]);n=[p,new c.pointGeometry(m.x,p.y),m,new c.pointGeometry(p.x,m.y),p]}return this.style.queryRenderedFeatures(n,t,this.transform)}querySourceFeatures(o,t){return this.style.querySourceFeatures(o,t)}setStyle(o,t){return(t=c.extend({},{localIdeographFontFamily:this._localIdeographFontFamily},t)).diff!==!1&&t.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&o?(this._diffStyle(o,t),this):(this._localIdeographFontFamily=t.localIdeographFontFamily,this._updateStyle(o,t))}setTransformRequest(o){return this._requestManager.setTransformRequest(o),this}_getUIString(o){const t=this._locale[o];if(t==null)throw new Error(`Missing UI string '${o}'`);return t}_updateStyle(o,t){if(t.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",()=>this._updateStyle(o,t));const n=this.style&&t.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove()),o?(this.style=new ui(this,t||{}),this.style.setEventedParent(this,{style:this.style}),typeof o=="string"?this.style.loadURL(o,t,n):this.style.loadJSON(o,t,n),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new ui(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(o,t){if(typeof o=="string"){const n=this._requestManager.transformRequest(o,c.ResourceType.Style);c.getJSON(n,(a,h)=>{a?this.fire(new c.ErrorEvent(a)):h&&this._updateDiff(h,t)})}else typeof o=="object"&&this._updateDiff(o,t)}_updateDiff(o,t){try{this.style.setState(o,t)&&this._update(!0)}catch(n){c.warnOnce(`Unable to perform style diff: ${n.message||n.error||n}. Rebuilding the style from scratch.`),this._updateStyle(o,t)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():c.warnOnce("There is no style added to the map.")}addSource(o,t){return this._lazyInitEmptyStyle(),this.style.addSource(o,t),this._update(!0)}isSourceLoaded(o){const t=this.style&&this.style.sourceCaches[o];if(t!==void 0)return t.loaded();this.fire(new c.ErrorEvent(new Error(`There is no source with ID '${o}'`)))}setTerrain(o){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),o){const t=this.style.sourceCaches[o.source];if(!t)throw new Error(`cannot load terrain, because there exists no source with ID: ${o.source}`);this.terrain=new dl(this.painter,t,o),this.painter.renderToTexture=new Ks(this.painter,this.terrain),this.transform.updateElevation(this.terrain),this._terrainDataCallback=n=>{n.dataType==="style"?this.terrain.sourceCache.freeRtt():n.dataType==="source"&&n.tile&&(n.sourceId===o.source&&this.transform.updateElevation(this.terrain),this.terrain.sourceCache.freeRtt(n.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.updateElevation(this.terrain);return this.fire(new c.Event("terrain",{terrain:o})),this}getTerrain(){return this.terrain&&this.terrain.options}areTilesLoaded(){const o=this.style&&this.style.sourceCaches;for(const t in o){const n=o[t]._tiles;for(const a in n){const h=n[a];if(h.state!=="loaded"&&h.state!=="errored")return!1}}return!0}addSourceType(o,t,n){return this._lazyInitEmptyStyle(),this.style.addSourceType(o,t,n)}removeSource(o){return this.style.removeSource(o),this._update(!0)}getSource(o){return this.style.getSource(o)}addImage(o,t,{pixelRatio:n=1,sdf:a=!1,stretchX:h,stretchY:p,content:m}={}){if(this._lazyInitEmptyStyle(),t instanceof HTMLImageElement||c.isImageBitmap(t)){const{width:_,height:y,data:v}=c.exported.getImageData(t);this.style.addImage(o,{data:new c.RGBAImage({width:_,height:y},v),pixelRatio:n,stretchX:h,stretchY:p,content:m,sdf:a,version:0})}else{if(t.width===void 0||t.height===void 0)return this.fire(new c.ErrorEvent(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:_,height:y,data:v}=t,S=t;this.style.addImage(o,{data:new c.RGBAImage({width:_,height:y},new Uint8Array(v)),pixelRatio:n,stretchX:h,stretchY:p,content:m,sdf:a,version:0,userImage:S}),S.onAdd&&S.onAdd(this,o)}}}updateImage(o,t){const n=this.style.getImage(o);if(!n)return this.fire(new c.ErrorEvent(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));const a=t instanceof HTMLImageElement||c.isImageBitmap(t)?c.exported.getImageData(t):t,{width:h,height:p,data:m}=a;if(h===void 0||p===void 0)return this.fire(new c.ErrorEvent(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(h!==n.data.width||p!==n.data.height)return this.fire(new c.ErrorEvent(new Error("The width and height of the updated image must be that same as the previous version of the image")));const _=!(t instanceof HTMLImageElement||c.isImageBitmap(t));n.data.replace(m,_),this.style.updateImage(o,n)}hasImage(o){return o?!!this.style.getImage(o):(this.fire(new c.ErrorEvent(new Error("Missing required image id"))),!1)}removeImage(o){this.style.removeImage(o)}loadImage(o,t){c.getImage(this._requestManager.transformRequest(o,c.ResourceType.Image),t)}listImages(){return this.style.listImages()}addLayer(o,t){return this._lazyInitEmptyStyle(),this.style.addLayer(o,t),this._update(!0)}moveLayer(o,t){return this.style.moveLayer(o,t),this._update(!0)}removeLayer(o){return this.style.removeLayer(o),this._update(!0)}getLayer(o){return this.style.getLayer(o)}setLayerZoomRange(o,t,n){return this.style.setLayerZoomRange(o,t,n),this._update(!0)}setFilter(o,t,n={}){return this.style.setFilter(o,t,n),this._update(!0)}getFilter(o){return this.style.getFilter(o)}setPaintProperty(o,t,n,a={}){return this.style.setPaintProperty(o,t,n,a),this._update(!0)}getPaintProperty(o,t){return this.style.getPaintProperty(o,t)}setLayoutProperty(o,t,n,a={}){return this.style.setLayoutProperty(o,t,n,a),this._update(!0)}getLayoutProperty(o,t){return this.style.getLayoutProperty(o,t)}setGlyphs(o,t={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(o,t),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(o,t,n={}){return this._lazyInitEmptyStyle(),this.style.addSprite(o,t,n,a=>{a||this._update(!0)}),this}removeSprite(o){return this._lazyInitEmptyStyle(),this.style.removeSprite(o),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(o,t={}){return this._lazyInitEmptyStyle(),this.style.setSprite(o,t,n=>{n||this._update(!0)}),this}setLight(o,t={}){return this._lazyInitEmptyStyle(),this.style.setLight(o,t),this._update(!0)}getLight(){return this.style.getLight()}setFeatureState(o,t){return this.style.setFeatureState(o,t),this._update()}removeFeatureState(o,t){return this.style.removeFeatureState(o,t),this._update()}getFeatureState(o){return this.style.getFeatureState(o)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let o=0,t=0;return this._container&&(o=this._container.clientWidth||400,t=this._container.clientHeight||300),[o,t]}_setupContainer(){const o=this._container;o.classList.add("maplibregl-map");const t=this._canvasContainer=K.create("div","maplibregl-canvas-container",o);this._interactive&&t.classList.add("maplibregl-interactive"),this._canvas=K.create("canvas","maplibregl-canvas",t),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","region");const n=this._containerDimensions();this._resizeCanvas(n[0],n[1],this.getPixelRatio());const a=this._controlContainer=K.create("div","maplibregl-control-container",o),h=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach(p=>{h[p]=K.create("div",`maplibregl-ctrl-${p} `,a)}),this._container.addEventListener("scroll",this._onMapScroll,!1)}_setupCooperativeGestures(){const o=this._container;this._metaPress=!1,this._cooperativeGesturesScreen=K.create("div","maplibregl-cooperative-gesture-screen",o);let t="Control",n=typeof this._cooperativeGestures!="boolean"&&this._cooperativeGestures.windowsHelpText?this._cooperativeGestures.windowsHelpText:"Use Ctrl + scroll to zoom the map";navigator.platform.indexOf("Mac")===0&&(n=typeof this._cooperativeGestures!="boolean"&&this._cooperativeGestures.macHelpText?this._cooperativeGestures.macHelpText:"Use \u2318 + scroll to zoom the map",t="Meta"),this._cooperativeGesturesScreen.innerHTML=`
577
+ <div class="maplibregl-desktop-message">${n}</div>
578
+ <div class="maplibregl-mobile-message">${typeof this._cooperativeGestures!="boolean"&&this._cooperativeGestures.mobileHelpText?this._cooperativeGestures.mobileHelpText:"Use two fingers to move the map"}</div>
579
+ `,document.addEventListener("keydown",a=>{a.key===t&&(this._metaPress=!0)}),document.addEventListener("keyup",a=>{a.key===t&&(this._metaPress=!1)}),this._canvasContainer.addEventListener("wheel",a=>{this._onCooperativeGesture(a,this._metaPress,1)},!1),this._canvasContainer.classList.remove("maplibregl-touch-drag-pan")}_resizeCanvas(o,t,n){this._canvas.width=n*o,this._canvas.height=n*t,this._canvas.style.width=`${o}px`,this._canvas.style.height=`${t}px`}_setupPainter(){const o=c.extend({},Ie.webGLContextAttributes,{failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1});let t=null;this._canvas.addEventListener("webglcontextcreationerror",a=>{t={requestedAttributes:o},a&&(t.statusMessage=a.statusMessage,t.type=a.type)},{once:!0});const n=this._canvas.getContext("webgl",o)||this._canvas.getContext("experimental-webgl",o);if(!n){const a="Failed to initialize WebGL";throw t?(t.message=a,new Error(JSON.stringify(t))):new Error(a)}this.painter=new Jo(n,this.transform),c.exported$1.testSupport(n)}_contextLost(o){o.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new c.Event("webglcontextlost",{originalEvent:o}))}_contextRestored(o){this._setupPainter(),this.resize(),this._update(),this.fire(new c.Event("webglcontextrestored",{originalEvent:o}))}_onMapScroll(o){if(o.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1}_onCooperativeGesture(o,t,n){return!t&&n<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(o){return this.style?(this._styleDirty=this._styleDirty||o,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(o){return this._update(),this._renderTaskQueue.add(o)}_cancelRenderFrame(o){this._renderTaskQueue.remove(o)}_render(o){let t,n=0;const a=this.painter.context.extTimerQuery;if(this.listens("gpu-timing-frame")&&(t=a.createQueryEXT(),a.beginQueryEXT(a.TIME_ELAPSED_EXT,t),n=c.exported.now()),this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(o),this._removed)return;let h=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;const m=this.transform.zoom,_=c.exported.now();this.style.zoomHistory.update(m,_);const y=new c.EvaluationParameters(m,{now:_,fadeDuration:this._fadeDuration,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),v=y.crossFadingFactor();v===1&&v===this._crossFadingFactor||(h=!0,this._crossFadingFactor=v),this.style.update(y)}if(this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain&&this.terrain.sourceCache.update(this.transform,this.terrain),this.transform.updateElevation(this.terrain),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,this._fadeDuration,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:this._fadeDuration,showPadding:this.showPadding,gpuTiming:!!this.listens("gpu-timing-layer")}),this.fire(new c.Event("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,c.PerformanceUtils.mark(c.PerformanceMarkers.load),this.fire(new c.Event("load"))),this.style&&(this.style.hasTransitions()||h)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles(),this.listens("gpu-timing-frame")){const m=c.exported.now()-n;a.endQueryEXT(a.TIME_ELAPSED_EXT,t),setTimeout(()=>{const _=a.getQueryObjectEXT(t,a.QUERY_RESULT_EXT)/1e6;a.deleteQueryEXT(t),this.fire(new c.Event("gpu-timing-frame",{cpuTime:m,gpuTime:_}))},50)}if(this.listens("gpu-timing-layer")){const m=this.painter.collectGpuTimers();setTimeout(()=>{const _=this.painter.queryGpuTimers(m);this.fire(new c.Event("gpu-timing-layer",{layerTimes:_}))},50)}const p=this._sourcesDirty||this._styleDirty||this._placementDirty;return p||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new c.Event("idle")),!this._loaded||this._fullyLoaded||p||(this._fullyLoaded=!0,c.PerformanceUtils.mark(c.PerformanceMarkers.fullLoad)),this}redraw(){return this.style&&(this._frame&&(this._frame.cancel(),this._frame=null),this._render(0)),this}remove(){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),typeof window<"u"&&(removeEventListener("resize",this._onWindowResize,!1),removeEventListener("orientationchange",this._onWindowResize,!1),removeEventListener("online",this._onWindowOnline,!1));const o=this.painter.context.gl.getExtension("WEBGL_lose_context");o&&o.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),K.remove(this._canvasContainer),K.remove(this._controlContainer),this._cooperativeGestures&&K.remove(this._cooperativeGesturesScreen),this._container.classList.remove("maplibregl-map"),c.PerformanceUtils.clearMetrics(),this._removed=!0,this.fire(new c.Event("remove"))}triggerRepaint(){this.style&&!this._frame&&(this._frame=c.exported.frame(o=>{c.PerformanceUtils.frame(o),this._frame=null,this._render(o)}))}_onWindowOnline(){this._update()}_onWindowResize(o){this._trackResize&&this.resize({originalEvent:o})._update()}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(o){this._showTileBoundaries!==o&&(this._showTileBoundaries=o,this._update())}get showPadding(){return!!this._showPadding}set showPadding(o){this._showPadding!==o&&(this._showPadding=o,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(o){this._showCollisionBoxes!==o&&(this._showCollisionBoxes=o,o?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(o){this._showOverdrawInspector!==o&&(this._showOverdrawInspector=o,this._update())}get repaint(){return!!this._repaint}set repaint(o){this._repaint!==o&&(this._repaint=o,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(o){this._vertices=o,this._update()}_setCacheLimits(o,t){c.setCacheLimits(o,t)}get version(){return Xe}getCameraTargetElevation(){return this.transform.elevation}},NavigationControl:class{constructor(o){this.options=c.extend({},Ha,o),this._container=K.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",t=>t.preventDefault()),this.options.showZoom&&(c.bindAll(["_setButtonTitle","_updateZoomButtons"],this),this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",t=>this._map.zoomIn({},{originalEvent:t})),K.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})),K.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(c.bindAll(["_rotateCompassArrow"],this),this._compass=this._createButton("maplibregl-ctrl-compass",t=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:t}):this._map.resetNorth({},{originalEvent:t})}),this._compassIcon=K.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}_updateZoomButtons(){const o=this._map.getZoom(),t=o===this._map.getMaxZoom(),n=o===this._map.getMinZoom();this._zoomInButton.disabled=t,this._zoomOutButton.disabled=n,this._zoomInButton.setAttribute("aria-disabled",t.toString()),this._zoomOutButton.setAttribute("aria-disabled",n.toString())}_rotateCompassArrow(){const o=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=o}onAdd(o){return this._map=o,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 Ka(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){K.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(o,t){const n=K.create("button",o,this._container);return n.type="button",n.addEventListener("click",t),n}_setButtonTitle(o,t){const n=this._map._getUIString(`NavigationControl.${t}`);o.title=n,o.setAttribute("aria-label",n)}},GeolocateControl:class extends c.Evented{constructor(o){super(),this.options=c.extend({},Js,o),c.bindAll(["_onSuccess","_onError","_onZoom","_finish","_setupUI","_updateCamera","_updateMarker"],this)}onAdd(o){var t;return this._map=o,this._container=K.create("div","maplibregl-ctrl maplibregl-ctrl-group"),t=this._setupUI,zt!==void 0?t(zt):window.navigator.permissions!==void 0?window.navigator.permissions.query({name:"geolocation"}).then(n=>{zt=n.state!=="denied",t(zt)}):(zt=!!window.navigator.geolocation,t(zt)),this._container}onRemove(){this._geolocationWatchID!==void 0&&(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(),K.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,Wt=0,Mn=!1}_isOutOfMapMaxBounds(o){const t=this._map.getMaxBounds(),n=o.coords;return t&&(n.longitude<t.getWest()||n.longitude>t.getEast()||n.latitude<t.getSouth()||n.latitude>t.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}`)}}_onSuccess(o){if(this._map){if(this._isOutOfMapMaxBounds(o))return this._setErrorState(),this.fire(new c.Event("outofmaxbounds",o)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=o,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&&this._watchState!=="OFF"&&this._updateMarker(o),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(o),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new c.Event("geolocate",o)),this._finish()}}_updateCamera(o){const t=new c.LngLat(o.coords.longitude,o.coords.latitude),n=o.coords.accuracy,a=this._map.getBearing(),h=c.extend({bearing:a},this.options.fitBoundsOptions);this._map.fitBounds(t.toBounds(n),h,{geolocateSource:!0})}_updateMarker(o){if(o){const t=new c.LngLat(o.coords.longitude,o.coords.latitude);this._accuracyCircleMarker.setLngLat(t).addTo(this._map),this._userLocationDotMarker.setLngLat(t).addTo(this._map),this._accuracy=o.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()}_updateCircleRadius(){const o=this._map._container.clientHeight/2,t=this._map.unproject([0,o]),n=this._map.unproject([1,o]),a=t.distanceTo(n),h=Math.ceil(2*this._accuracy/a);this._circleElement.style.width=`${h}px`,this._circleElement.style.height=`${h}px`}_onZoom(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}_onError(o){if(this._map){if(this.options.trackUserLocation)if(o.code===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._geolocateButton.disabled=!0;const t=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=t,this._geolocateButton.setAttribute("aria-label",t),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(o.code===3&&Mn)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new c.Event("error",o)),this._finish()}}_finish(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0}_setupUI(o){if(this._container.addEventListener("contextmenu",t=>t.preventDefault()),this._geolocateButton=K.create("button","maplibregl-ctrl-geolocate",this._container),K.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",o===!1){c.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");const t=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=t,this._geolocateButton.setAttribute("aria-label",t)}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","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=K.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new Ja(this._dotElement),this._circleElement=K.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Ja({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",t=>{t.geolocateSource||this._watchState!=="ACTIVE_LOCK"||t.originalEvent&&t.originalEvent.type==="resize"||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new c.Event("trackuserlocationend")))})}trigger(){if(!this._setup)return c.warnOnce("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 c.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":Wt--,Mn=!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 c.Event("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 c.Event("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(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let o;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),Wt++,Wt>1?(o={maximumAge:6e5,timeout:0},Mn=!0):(o=this.options.positionOptions,Mn=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,o)}}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","false"),this.options.showUserLocation&&this._updateMarker(null)}},AttributionControl:ji,LogoControl:Vt,ScaleControl:class{constructor(o){this.options=c.extend({},ps,o),c.bindAll(["_onMove","setUnit"],this)}getDefaultPosition(){return"bottom-left"}_onMove(){ds(this._map,this._container,this.options)}onAdd(o){return this._map=o,this._container=K.create("div","maplibregl-ctrl maplibregl-ctrl-scale",o.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){K.remove(this._container),this._map.off("move",this._onMove),this._map=void 0}setUnit(o){this.options.unit=o,ds(this._map,this._container,this.options)}},FullscreenControl:class{constructor(o={}){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,o&&o.container&&(o.container instanceof HTMLElement?this._container=o.container:c.warnOnce("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(o){return this._map=o,this._container||(this._container=this._map.getContainer()),this._controlContainer=K.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){K.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){const o=this._fullscreenButton=K.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);K.create("span","maplibregl-ctrl-icon",o).setAttribute("aria-hidden","true"),o.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){const o=this._getTitle();this._fullscreenButton.setAttribute("aria-label",o),this._fullscreenButton.title=o}_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()}_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()}},TerrainControl:class{constructor(o){this.options=o,c.bindAll(["_toggleTerrain","_updateTerrainIcon"],this)}onAdd(o){return this._map=o,this._container=K.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=K.create("button","maplibregl-ctrl-terrain",this._container),K.create("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.type="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){K.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}_toggleTerrain(){this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()}_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"))}},Popup:class extends c.Evented{constructor(o){super(),this.options=c.extend(Object.create(Ya),o),c.bindAll(["_update","_onClose","remove","_onMouseMove","_onMouseUp","_onDrag"],this)}addTo(o){return this._map&&this.remove(),this._map=o,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 c.Event("open")),this}isOpen(){return!!this._map}remove(){return this._content&&K.remove(this._content),this._container&&(K.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 c.Event("close")),this}getLngLat(){return this._lngLat}setLngLat(o){return this._lngLat=c.LngLat.convert(o),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(o){return this.setDOMContent(document.createTextNode(o))}setHTML(o){const t=document.createDocumentFragment(),n=document.createElement("body");let a;for(n.innerHTML=o;a=n.firstChild,a;)t.appendChild(a);return this.setDOMContent(t)}getMaxWidth(){return this._container&&this._container.style.maxWidth}setMaxWidth(o){return this.options.maxWidth=o,this._update(),this}setDOMContent(o){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=K.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(o),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(o){this._container&&this._container.classList.add(o)}removeClassName(o){this._container&&this._container.classList.remove(o)}setOffset(o){return this.options.offset=o,this._update(),this}toggleClassName(o){if(this._container)return this._container.classList.toggle(o)}_createCloseButton(){this.options.closeButton&&(this._closeButton=K.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="&#215;",this._closeButton.addEventListener("click",this._onClose))}_onMouseUp(o){this._update(o.point)}_onMouseMove(o){this._update(o.point)}_onDrag(o){this._update(o.point)}_update(o){if(!this._map||!this._lngLat&&!this._trackPointer||!this._content||(this._container||(this._container=K.create("div","maplibregl-popup",this._map.getContainer()),this._tip=K.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(" ").forEach(p=>this._container.classList.add(p)),this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer")),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=Si(this._lngLat,this._pos,this._map.transform)),this._trackPointer&&!o))return;const t=this._pos=this._trackPointer&&o?o:this._map.project(this._lngLat);let n=this.options.anchor;const a=Pn(this.options.offset);if(!n){const p=this._container.offsetWidth,m=this._container.offsetHeight;let _;_=t.y+a.bottom.y<m?["top"]:t.y>this._map.transform.height-m?["bottom"]:[],t.x<p/2?_.push("left"):t.x>this._map.transform.width-p/2&&_.push("right"),n=_.length===0?"bottom":_.join("-")}const h=t.add(a[n]).round();K.setTransform(this._container,`${Cn[n]} translate(${h.x}px,${h.y}px)`),cr(this._container,n,"popup")}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const o=this._container.querySelector(Qa);o&&o.focus()}_onClose(){this.remove()}},Marker:Ja,Style:ui,LngLat:c.LngLat,LngLatBounds:c.LngLatBounds,Point:c.pointGeometry,MercatorCoordinate:c.MercatorCoordinate,Evented:c.Evented,AJAXError:c.AJAXError,config:c.config,CanvasSource:Or,GeoJSONSource:Fr,ImageSource:ki,RasterDEMTileSource:sr,RasterTileSource:hn,VectorTileSource:cn,VideoSource:Zr,prewarm:function(){Xr().acquire(Er)},clearPrewarmedResources:function(){const o=Oi;o&&(o.isPreloaded()&&o.numActive()===1?(o.release(Er),Oi=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()"))},get version(){return eo},get workerCount(){return ar.workerCount},set workerCount(o){ar.workerCount=o},get maxParallelImageRequests(){return c.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(o){c.config.MAX_PARALLEL_IMAGE_REQUESTS=o},clearStorage(o){c.clearTileCache(o)},workerUrl:"",addProtocol(o,t){c.config.REGISTERED_PROTOCOLS[o]=t},removeProtocol(o){delete c.config.REGISTERED_PROTOCOLS[o]}};return Xa.extend(ms,{isSafari:c.isSafari,getPerformanceMetrics:c.PerformanceUtils.getPerformanceMetrics}),ms});var ne=ie;return ne})})(bs);var Gr=fp(bs.exports);const eh="3.7.4",gp=eh,_p=typeof atob=="function",yp=typeof btoa=="function",ws=typeof Buffer=="function",th=typeof TextDecoder=="function"?new TextDecoder:void 0,ih=typeof TextEncoder=="function"?new TextEncoder:void 0,xp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",ca=Array.prototype.slice.call(xp),xo=(M=>{let b={};return M.forEach((k,Z)=>b[k]=Z),b})(ca),vp=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,vi=String.fromCharCode.bind(String),rh=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):(M,b=k=>k)=>new Uint8Array(Array.prototype.slice.call(M,0).map(b)),nh=M=>M.replace(/=/g,"").replace(/[+\/]/g,b=>b=="+"?"-":"_"),sh=M=>M.replace(/[^A-Za-z0-9\+\/]/g,""),ah=M=>{let b,k,Z,ie,me="";const ne=M.length%3;for(let c=0;c<M.length;){if((k=M.charCodeAt(c++))>255||(Z=M.charCodeAt(c++))>255||(ie=M.charCodeAt(c++))>255)throw new TypeError("invalid character found");b=k<<16|Z<<8|ie,me+=ca[b>>18&63]+ca[b>>12&63]+ca[b>>6&63]+ca[b&63]}return ne?me.slice(0,ne-3)+"===".substring(ne):me},Bl=yp?M=>btoa(M):ws?M=>Buffer.from(M,"binary").toString("base64"):ah,Fl=ws?M=>Buffer.from(M).toString("base64"):M=>{let k=[];for(let Z=0,ie=M.length;Z<ie;Z+=4096)k.push(vi.apply(null,M.subarray(Z,Z+4096)));return Bl(k.join(""))},vo=(M,b=!1)=>b?nh(Fl(M)):Fl(M),bp=M=>{if(M.length<2){var b=M.charCodeAt(0);return b<128?M:b<2048?vi(192|b>>>6)+vi(128|b&63):vi(224|b>>>12&15)+vi(128|b>>>6&63)+vi(128|b&63)}else{var b=65536+(M.charCodeAt(0)-55296)*1024+(M.charCodeAt(1)-56320);return vi(240|b>>>18&7)+vi(128|b>>>12&63)+vi(128|b>>>6&63)+vi(128|b&63)}},wp=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,oh=M=>M.replace(wp,bp),lh=ws?M=>Buffer.from(M,"utf8").toString("base64"):ih?M=>Fl(ih.encode(M)):M=>Bl(oh(M)),Ts=(M,b=!1)=>b?nh(lh(M)):lh(M),ch=M=>Ts(M,!0),Tp=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,Sp=M=>{switch(M.length){case 4:var b=(7&M.charCodeAt(0))<<18|(63&M.charCodeAt(1))<<12|(63&M.charCodeAt(2))<<6|63&M.charCodeAt(3),k=b-65536;return vi((k>>>10)+55296)+vi((k&1023)+56320);case 3:return vi((15&M.charCodeAt(0))<<12|(63&M.charCodeAt(1))<<6|63&M.charCodeAt(2));default:return vi((31&M.charCodeAt(0))<<6|63&M.charCodeAt(1))}},hh=M=>M.replace(Tp,Sp),uh=M=>{if(M=M.replace(/\s+/g,""),!vp.test(M))throw new TypeError("malformed base64.");M+="==".slice(2-(M.length&3));let b,k="",Z,ie;for(let me=0;me<M.length;)b=xo[M.charAt(me++)]<<18|xo[M.charAt(me++)]<<12|(Z=xo[M.charAt(me++)])<<6|(ie=xo[M.charAt(me++)]),k+=Z===64?vi(b>>16&255):ie===64?vi(b>>16&255,b>>8&255):vi(b>>16&255,b>>8&255,b&255);return k},Ol=_p?M=>atob(sh(M)):ws?M=>Buffer.from(M,"base64").toString("binary"):uh,ph=ws?M=>rh(Buffer.from(M,"base64")):M=>rh(Ol(M),b=>b.charCodeAt(0)),dh=M=>ph(mh(M)),Ep=ws?M=>Buffer.from(M,"base64").toString("utf8"):th?M=>th.decode(ph(M)):M=>hh(Ol(M)),mh=M=>sh(M.replace(/[-_]/g,b=>b=="-"?"+":"/")),Ul=M=>Ep(mh(M)),Ip=M=>{if(typeof M!="string")return!1;const b=M.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(b)||!/[^\s0-9a-zA-Z\-_]/.test(b)},fh=M=>({value:M,enumerable:!1,writable:!0,configurable:!0}),gh=function(){const M=(b,k)=>Object.defineProperty(String.prototype,b,fh(k));M("fromBase64",function(){return Ul(this)}),M("toBase64",function(b){return Ts(this,b)}),M("toBase64URI",function(){return Ts(this,!0)}),M("toBase64URL",function(){return Ts(this,!0)}),M("toUint8Array",function(){return dh(this)})},_h=function(){const M=(b,k)=>Object.defineProperty(Uint8Array.prototype,b,fh(k));M("toBase64",function(b){return vo(this,b)}),M("toBase64URI",function(){return vo(this,!0)}),M("toBase64URL",function(){return vo(this,!0)})},Ap={version:eh,VERSION:gp,atob:Ol,atobPolyfill:uh,btoa:Bl,btoaPolyfill:ah,fromBase64:Ul,toBase64:Ts,encode:Ts,encodeURI:ch,encodeURL:ch,utob:oh,btou:hh,decode:Ul,isValid:Ip,fromUint8Array:vo,toUint8Array:dh,extendString:gh,extendUint8Array:_h,extendBuiltins:()=>{gh(),_h()}};let bo;const Cp=new Uint8Array(16);function Mp(){if(!bo&&(bo=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!bo))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return bo(Cp)}const bi=[];for(let M=0;M<256;++M)bi.push((M+256).toString(16).slice(1));function Pp(M,b=0){return(bi[M[b+0]]+bi[M[b+1]]+bi[M[b+2]]+bi[M[b+3]]+"-"+bi[M[b+4]]+bi[M[b+5]]+"-"+bi[M[b+6]]+bi[M[b+7]]+"-"+bi[M[b+8]]+bi[M[b+9]]+"-"+bi[M[b+10]]+bi[M[b+11]]+bi[M[b+12]]+bi[M[b+13]]+bi[M[b+14]]+bi[M[b+15]]).toLowerCase()}var yh={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function kp(M,b,k){if(yh.randomUUID&&!b&&!M)return yh.randomUUID();M=M||{};const Z=M.random||(M.rng||Mp)();if(Z[6]=Z[6]&15|64,Z[8]=Z[8]&63|128,b){k=k||0;for(let ie=0;ie<16;++ie)b[k+ie]=Z[ie];return b}return Pp(Z)}var Vl={exports:{}},Ss=typeof Reflect=="object"?Reflect:null,xh=Ss&&typeof Ss.apply=="function"?Ss.apply:function(b,k,Z){return Function.prototype.apply.call(b,k,Z)},wo;Ss&&typeof Ss.ownKeys=="function"?wo=Ss.ownKeys:Object.getOwnPropertySymbols?wo=function(b){return Object.getOwnPropertyNames(b).concat(Object.getOwnPropertySymbols(b))}:wo=function(b){return Object.getOwnPropertyNames(b)};function zp(M){console&&console.warn&&console.warn(M)}var vh=Number.isNaN||function(b){return b!==b};function Lt(){Lt.init.call(this)}Vl.exports=Lt,Vl.exports.once=Bp,Lt.EventEmitter=Lt,Lt.prototype._events=void 0,Lt.prototype._eventsCount=0,Lt.prototype._maxListeners=void 0;var bh=10;function To(M){if(typeof M!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof M)}Object.defineProperty(Lt,"defaultMaxListeners",{enumerable:!0,get:function(){return bh},set:function(M){if(typeof M!="number"||M<0||vh(M))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+M+".");bh=M}}),Lt.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Lt.prototype.setMaxListeners=function(b){if(typeof b!="number"||b<0||vh(b))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+b+".");return this._maxListeners=b,this};function wh(M){return M._maxListeners===void 0?Lt.defaultMaxListeners:M._maxListeners}Lt.prototype.getMaxListeners=function(){return wh(this)},Lt.prototype.emit=function(b){for(var k=[],Z=1;Z<arguments.length;Z++)k.push(arguments[Z]);var ie=b==="error",me=this._events;if(me!==void 0)ie=ie&&me.error===void 0;else if(!ie)return!1;if(ie){var ne;if(k.length>0&&(ne=k[0]),ne instanceof Error)throw ne;var c=new Error("Unhandled error."+(ne?" ("+ne.message+")":""));throw c.context=ne,c}var Ie=me[b];if(Ie===void 0)return!1;if(typeof Ie=="function")xh(Ie,this,k);else for(var Ke=Ie.length,lt=Ah(Ie,Ke),Z=0;Z<Ke;++Z)xh(lt[Z],this,k);return!0};function Th(M,b,k,Z){var ie,me,ne;if(To(k),me=M._events,me===void 0?(me=M._events=Object.create(null),M._eventsCount=0):(me.newListener!==void 0&&(M.emit("newListener",b,k.listener?k.listener:k),me=M._events),ne=me[b]),ne===void 0)ne=me[b]=k,++M._eventsCount;else if(typeof ne=="function"?ne=me[b]=Z?[k,ne]:[ne,k]:Z?ne.unshift(k):ne.push(k),ie=wh(M),ie>0&&ne.length>ie&&!ne.warned){ne.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+ne.length+" "+String(b)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=M,c.type=b,c.count=ne.length,zp(c)}return M}Lt.prototype.addListener=function(b,k){return Th(this,b,k,!1)},Lt.prototype.on=Lt.prototype.addListener,Lt.prototype.prependListener=function(b,k){return Th(this,b,k,!0)};function Lp(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Sh(M,b,k){var Z={fired:!1,wrapFn:void 0,target:M,type:b,listener:k},ie=Lp.bind(Z);return ie.listener=k,Z.wrapFn=ie,ie}Lt.prototype.once=function(b,k){return To(k),this.on(b,Sh(this,b,k)),this},Lt.prototype.prependOnceListener=function(b,k){return To(k),this.prependListener(b,Sh(this,b,k)),this},Lt.prototype.removeListener=function(b,k){var Z,ie,me,ne,c;if(To(k),ie=this._events,ie===void 0)return this;if(Z=ie[b],Z===void 0)return this;if(Z===k||Z.listener===k)--this._eventsCount===0?this._events=Object.create(null):(delete ie[b],ie.removeListener&&this.emit("removeListener",b,Z.listener||k));else if(typeof Z!="function"){for(me=-1,ne=Z.length-1;ne>=0;ne--)if(Z[ne]===k||Z[ne].listener===k){c=Z[ne].listener,me=ne;break}if(me<0)return this;me===0?Z.shift():Dp(Z,me),Z.length===1&&(ie[b]=Z[0]),ie.removeListener!==void 0&&this.emit("removeListener",b,c||k)}return this},Lt.prototype.off=Lt.prototype.removeListener,Lt.prototype.removeAllListeners=function(b){var k,Z,ie;if(Z=this._events,Z===void 0)return this;if(Z.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):Z[b]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete Z[b]),this;if(arguments.length===0){var me=Object.keys(Z),ne;for(ie=0;ie<me.length;++ie)ne=me[ie],ne!=="removeListener"&&this.removeAllListeners(ne);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(k=Z[b],typeof k=="function")this.removeListener(b,k);else if(k!==void 0)for(ie=k.length-1;ie>=0;ie--)this.removeListener(b,k[ie]);return this};function Eh(M,b,k){var Z=M._events;if(Z===void 0)return[];var ie=Z[b];return ie===void 0?[]:typeof ie=="function"?k?[ie.listener||ie]:[ie]:k?Rp(ie):Ah(ie,ie.length)}Lt.prototype.listeners=function(b){return Eh(this,b,!0)},Lt.prototype.rawListeners=function(b){return Eh(this,b,!1)},Lt.listenerCount=function(M,b){return typeof M.listenerCount=="function"?M.listenerCount(b):Ih.call(M,b)},Lt.prototype.listenerCount=Ih;function Ih(M){var b=this._events;if(b!==void 0){var k=b[M];if(typeof k=="function")return 1;if(k!==void 0)return k.length}return 0}Lt.prototype.eventNames=function(){return this._eventsCount>0?wo(this._events):[]};function Ah(M,b){for(var k=new Array(b),Z=0;Z<b;++Z)k[Z]=M[Z];return k}function Dp(M,b){for(;b+1<M.length;b++)M[b]=M[b+1];M.pop()}function Rp(M){for(var b=new Array(M.length),k=0;k<b.length;++k)b[k]=M[k].listener||M[k];return b}function Bp(M,b){return new Promise(function(k,Z){function ie(ne){M.removeListener(b,me),Z(ne)}function me(){typeof M.removeListener=="function"&&M.removeListener("error",ie),k([].slice.call(arguments))}Ch(M,b,me,{once:!0}),b!=="error"&&Fp(M,ie,{once:!0})})}function Fp(M,b,k){typeof M.on=="function"&&Ch(M,"error",b,k)}function Ch(M,b,k,Z){if(typeof M.on=="function")Z.once?M.once(b,k):M.on(b,k);else if(typeof M.addEventListener=="function")M.addEventListener(b,function ie(me){Z.once&&M.removeEventListener(b,ie),k(me)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof M)}const kr={AUTO:"auto",LATIN:"latin",NON_LATIN:"nonlatin",LOCAL:"",ALBANIAN:"sq",AMHARIC:"am",ARABIC:"ar",ARMENIAN:"hy",AZERBAIJANI:"az",BASQUE:"eu",BELORUSSIAN:"be",BOSNIAN:"bs",BRETON:"br",BULGARIAN:"bg",CATALAN:"ca",CHINESE:"zh",CORSICAN:"co",CROATIAN:"hr",CZECH:"cs",DANISH:"da",DUTCH:"nl",ENGLISH:"en",ESPERANTO:"eo",ESTONIAN:"et",FINNISH:"fi",FRENCH:"fr",FRISIAN:"fy",GEORGIAN:"ka",GERMAN:"de",GREEK:"el",HEBREW:"he",HINDI:"hi",HUNGARIAN:"hu",ICELANDIC:"is",INDONESIAN:"id",IRISH:"ga",ITALIAN:"it",JAPANESE:"ja",JAPANESE_HIRAGANA:"ja-Hira",JAPANESE_KANA:"ja_kana",JAPANESE_LATIN:"ja_rm",JAPANESE_2018:"ja-Latn",KANNADA:"kn",KAZAKH:"kk",KOREAN:"ko",KOREAN_LATIN:"ko-Latn",KURDISH:"ku",ROMAN_LATIN:"la",LATVIAN:"lv",LITHUANIAN:"lt",LUXEMBOURGISH:"lb",MACEDONIAN:"mk",MALAYALAM:"ml",MALTESE:"mt",NORWEGIAN:"no",OCCITAN:"oc",POLISH:"pl",PORTUGUESE:"pt",ROMANIAN:"ro",ROMANSH:"rm",RUSSIAN:"ru",SCOTTISH_GAELIC:"gd",SERBIAN_CYRILLIC:"sr",SERBIAN_LATIN:"sr-Latn",SLOVAK:"sk",SLOVENE:"sl",SPANISH:"es",SWEDISH:"sv",TAMIL:"ta",TELUGU:"te",THAI:"th",TURKISH:"tr",UKRAINIAN:"uk",WELSH:"cy"},Op=new Set(Object.values(kr));function Mh(M){return Op.has(M)}const Up=new Set(Object.values(kr));function Nl(){if(typeof navigator>"u")return Intl.DateTimeFormat().resolvedOptions().locale.split("-")[0];const M=Array.from(new Set(navigator.languages.map(b=>b.split("-")[0]))).filter(b=>Up.has(b));return M.length?M[0]:kr.LATIN}function Vp(){return typeof self<"u"?fetch.bind(self):typeof global<"u"&&global.fetch?global.fetch:null}class Np{constructor(){this._apiKey="",this._fetch=Vp()}set apiKey(b){this._apiKey=b}get apiKey(){return this._apiKey}set fetch(b){this._fetch=b}get fetch(){return this._fetch}}const Hi=new Np,Es={AUTO:"auto",ALBANIAN:"sq",ARABIC:"ar",ARMENIAN:"hy",AZERBAIJANI:"az",BELORUSSIAN:"be",BOSNIAN:"bs",BRETON:"br",BULGARIAN:"bg",CATALAN:"ca",CHINESE:"zh",CROATIAN:"hr",CZECH:"cs",DANISH:"da",DUTCH:"nl",ENGLISH:"en",ESPERANTO:"eo",ESTONIAN:"et",FINNISH:"fi",FRENCH:"fr",FRISIAN:"fy",GEORGIAN:"ka",GERMAN:"de",GREEK:"el",HEBREW:"he",HUNGARIAN:"hu",ICELANDIC:"is",IRISH:"ga",ITALIAN:"it",JAPANESE:"ja",KANNADA:"kn",KAZAKH:"kk",KOREAN:"ko",ROMAN_LATIN:"la",LATVIAN:"lv",LITHUANIAN:"lt",LUXEMBOURGISH:"lb",MACEDONIAN:"mk",MALTESE:"mt",NORWEGIAN:"no",POLISH:"pl",PORTUGUESE:"pt",ROMANIAN:"ro",ROMANSH:"rm",RUSSIAN:"ru",SCOTTISH_GAELIC:"gd",SERBIAN_CYRILLIC:"sr",SLOVAK:"sk",SLOVENE:"sl",SPANISH:"es",SWEDISH:"sv",THAI:"th",TURKISH:"tr",UKRAINIAN:"uk",WELSH:"cy"},$p=new Set(Object.values(Es));function Ph(){if(typeof navigator>"u")return Intl.DateTimeFormat().resolvedOptions().locale.split("-")[0];const M=Array.from(new Set(navigator.languages.map(b=>b.split("-")[0]))).filter(b=>$p.has(b));return M.length?M[0]:Es.ENGLISH}var jp=(M,b,k)=>new Promise((Z,ie)=>{var me=Ie=>{try{c(k.next(Ie))}catch(Ke){ie(Ke)}},ne=Ie=>{try{c(k.throw(Ie))}catch(Ke){ie(Ke)}},c=Ie=>Ie.done?Z(Ie.value):Promise.resolve(Ie.value).then(me,ne);c((k=k.apply(M,b)).next())});function Is(M){return jp(this,arguments,function*(b,k={}){if(Hi.fetch===null)throw new Error("The fetch function was not found. If on NodeJS < 18 please specify the fetch function with config.fetch");if(new URL(b).searchParams.get("key").trim()==="")throw new Error("The MapTiler Cloud API key is missing. Set it in `config.apiKey` or get one for free at https://maptiler.com");return Hi.fetch(b,k)})}const zr={maptilerApiURL:"https://api.maptiler.com/",mapStyle:"streets-v2"};Object.freeze(zr);class On extends Error{constructor(b,k=""){super(`Call to enpoint ${b.url} failed with the status code ${b.status}. ${k}`),this.res=b}}var kh=(M,b,k)=>new Promise((Z,ie)=>{var me=Ie=>{try{c(k.next(Ie))}catch(Ke){ie(Ke)}},ne=Ie=>{try{c(k.throw(Ie))}catch(Ke){ie(Ke)}},c=Ie=>Ie.done?Z(Ie.value):Promise.resolve(Ie.value).then(me,ne);c((k=k.apply(M,b)).next())});const So={400:"Query too long / Invalid parameters",403:"Key is missing, invalid or restricted"};function Gp(M){return kh(this,arguments,function*(b,k={}){var Z;if(typeof b!="string"||b.trim().length===0)throw new Error("The query must be a non-empty string");const ie=new URL(`geocoding/${encodeURIComponent(b)}.json`,zr.maptilerApiURL);if(ie.searchParams.set("key",(Z=k.apiKey)!=null?Z:Hi.apiKey),"bbox"in k&&ie.searchParams.set("bbox",k.bbox.join(",")),"proximity"in k&&ie.searchParams.set("proximity",k.proximity.join(",")),"language"in k){const Ie=Array.from(new Set((Array.isArray(k.language)?k.language:[k.language]).map(Ke=>Ke===Es.AUTO?Ph():Ke))).join(",");ie.searchParams.set("language",Ie)}const me=ie.toString(),ne=yield Is(me);if(!ne.ok)throw new On(ne,ne.status in So?So[ne.status]:"");return yield ne.json()})}function qp(M){return kh(this,arguments,function*(b,k={}){var Z;if(!Array.isArray(b)||b.length<2)throw new Error("The position must be an array of form [lng, lat].");const ie=new URL(`geocoding/${b[0]},${b[1]}.json`,zr.maptilerApiURL);if(ie.searchParams.set("key",(Z=k.apiKey)!=null?Z:Hi.apiKey),"language"in k){const Ie=Array.from(new Set((Array.isArray(k.language)?k.language:[k.language]).map(Ke=>Ke===Es.AUTO?Ph():Ke))).join(",");ie.searchParams.set("language",Ie)}const me=ie.toString(),ne=yield Is(me);if(!ne.ok)throw new On(ne,ne.status in So?So[ne.status]:"");return yield ne.json()})}const Zp={forward:Gp,reverse:qp,language:Es};var Xp=(M,b,k)=>new Promise((Z,ie)=>{var me=Ie=>{try{c(k.next(Ie))}catch(Ke){ie(Ke)}},ne=Ie=>{try{c(k.throw(Ie))}catch(Ke){ie(Ke)}},c=Ie=>Ie.done?Z(Ie.value):Promise.resolve(Ie.value).then(me,ne);c((k=k.apply(M,b)).next())});const zh={403:"Key is missing, invalid or restricted"};function Wp(){return Xp(this,arguments,function*(M={}){var b;const k=new URL("geolocation/ip.json",zr.maptilerApiURL);k.searchParams.set("key",(b=M.apiKey)!=null?b:Hi.apiKey);const Z=k.toString(),ie=yield Is(Z);if(!ie.ok)throw new On(ie,ie.status in zh?zh[ie.status]:"");return yield ie.json()})}const $l={info:Wp};var Lh=(M,b,k)=>new Promise((Z,ie)=>{var me=Ie=>{try{c(k.next(Ie))}catch(Ke){ie(Ke)}},ne=Ie=>{try{c(k.throw(Ie))}catch(Ke){ie(Ke)}},c=Ie=>Ie.done?Z(Ie.value):Promise.resolve(Ie.value).then(me,ne);c((k=k.apply(M,b)).next())});const Eo={403:"Key is missing, invalid or restricted"};function Hp(M){return Lh(this,arguments,function*(b,k={}){var Z;if(typeof b!="string"||b.trim().length===0)throw new Error("The query must be a non-empty string");const ie=new URL(`coordinates/search/${b}.json`,zr.maptilerApiURL);ie.searchParams.set("key",(Z=k.apiKey)!=null?Z:Hi.apiKey),"limit"in k&&ie.searchParams.set("limit",k.limit.toString()),"transformations"in k&&ie.searchParams.set("transformations",k.transformations.toString()),"exports"in k&&ie.searchParams.set("exports",k.exports.toString());const me=ie.toString(),ne=yield Is(me);if(!ne.ok)throw new On(ne,ne.status in Eo?Eo[ne.status]:"");return yield ne.json()})}function Kp(M){return Lh(this,arguments,function*(b,k={}){var Z;const ie=(Array.isArray(b[0])?b:[b]).map(Ke=>`${Ke[0]},${Ke[1]}`).join(";"),me=new URL(`coordinates/transform/${ie}.json`,zr.maptilerApiURL);me.searchParams.set("key",(Z=k.apiKey)!=null?Z:Hi.apiKey),"sourceCrs"in k&&me.searchParams.set("s_srs",k.sourceCrs.toString()),"targetCrs"in k&&me.searchParams.set("t_srs",k.targetCrs.toString()),"operations"in k&&me.searchParams.set("ops",(Array.isArray(k.operations)?k.operations:[k.operations]).join("|"));const ne=me.toString(),c=yield Is(ne);if(!c.ok)throw new On(c,c.status in Eo?Eo[c.status]:"");return yield c.json()})}const Jp={search:Hp,transform:Kp};var Yp=(M,b,k)=>new Promise((Z,ie)=>{var me=Ie=>{try{c(k.next(Ie))}catch(Ke){ie(Ke)}},ne=Ie=>{try{c(k.throw(Ie))}catch(Ke){ie(Ke)}},c=Ie=>Ie.done?Z(Ie.value):Promise.resolve(Ie.value).then(me,ne);c((k=k.apply(M,b)).next())});const Dh={403:"Key is missing, invalid or restricted"};function Qp(M){return Yp(this,arguments,function*(b,k={}){var Z;if(typeof b!="string"||b.trim().length===0)throw new Error("The data ID must be a non-empty string");const ie=new URL(`data/${encodeURIComponent(b)}/features.json`,zr.maptilerApiURL);ie.searchParams.set("key",(Z=k.apiKey)!=null?Z:Hi.apiKey);const me=ie.toString(),ne=yield Is(me);if(!ne.ok)throw new On(ne,ne.status in Dh?Dh[ne.status]:"");return yield ne.json()})}const ed={get:Qp};function Rh(M){const b=/^maptiler:\/\/(.*)/;let k;const Z=M.trim();let ie;return Z.startsWith("http://")||Z.startsWith("https://")?ie=Z:(k=b.exec(Z))!==null?ie=`https://api.maptiler.com/maps/${k[1]}/style.json`:ie=`https://api.maptiler.com/maps/${Z}/style.json`,ie}class Io{constructor(b,k,Z,ie,me,ne){this.name=b,this.variantType=k,this.id=Z,this.referenceStyle=ie,this.description=me,this.imageURL=ne}getName(){return this.name}getFullName(){return`${this.referenceStyle.getName()} ${this.name}`}getType(){return this.variantType}getId(){return this.id}getDescription(){return this.description}getReferenceStyle(){return this.referenceStyle}hasVariant(b){return this.referenceStyle.hasVariant(b)}getVariant(b){return this.referenceStyle.getVariant(b)}getVariants(){return this.referenceStyle.getVariants().filter(b=>b!==this)}getImageURL(){return this.imageURL}getExpandedStyleURL(){return Rh(this.getId())}}class Ao{constructor(b,k){this.name=b,this.id=k,this.variants={},this.orderedVariants=[]}getName(){return this.name}getId(){return this.id}addVariant(b){this.variants[b.getType()]=b,this.orderedVariants.push(b)}hasVariant(b){return b in this.variants}getVariant(b){return b in this.variants?this.variants[b]:this.orderedVariants[0]}getVariants(){return Object.values(this.variants)}getDefaultVariant(){return this.orderedVariants[0]}}const Co=[{referenceStyleID:"STREETS",name:"Streets",description:"",variants:[{id:"streets-v2",name:"Default",variantType:"DEFAULT",description:"",imageURL:""},{id:"streets-v2-dark",name:"Dark",variantType:"DARK",description:"",imageURL:""},{id:"streets-v2-light",name:"Light",variantType:"LIGHT",description:"",imageURL:""},{id:"streets-v2-pastel",name:"Pastel",variantType:"PASTEL",description:"",imageURL:""}]},{referenceStyleID:"OUTDOOR",name:"Outdoor",description:"",variants:[{id:"outdoor-v2",name:"Default",variantType:"DEFAULT",description:"",imageURL:""}]},{referenceStyleID:"WINTER",name:"Winter",description:"",variants:[{id:"winter-v2",name:"Winter",variantType:"DEFAULT",description:"",imageURL:""}]},{referenceStyleID:"SATELLITE",name:"Satellite",description:"",variants:[{id:"satellite",name:"Default",variantType:"DEFAULT",description:"",imageURL:""}]},{referenceStyleID:"HYBRID",name:"Hybrid",description:"",variants:[{id:"hybrid",name:"Default",variantType:"DEFAULT",description:"",imageURL:""}]},{referenceStyleID:"BASIC",name:"Basic",description:"",variants:[{id:"basic-v2",name:"Default",variantType:"DEFAULT",description:"",imageURL:""},{id:"basic-v2-dark",name:"Dark",variantType:"DARK",description:"",imageURL:""},{id:"basic-v2-light",name:"Light",variantType:"LIGHT",description:"",imageURL:""}]},{referenceStyleID:"BRIGHT",name:"Bright",description:"",variants:[{id:"bright-v2",name:"Default",variantType:"DEFAULT",description:"",imageURL:""},{id:"bright-v2-dark",name:"Dark",variantType:"DARK",description:"",imageURL:""},{id:"bright-v2-light",name:"Light",variantType:"LIGHT",description:"",imageURL:""},{id:"bright-v2-pastel",name:"Pastel",variantType:"PASTEL",description:"",imageURL:""}]},{referenceStyleID:"OPENSTREETMAP",name:"OpenStreetMap",description:"",variants:[{id:"openstreetmap",name:"Default",variantType:"DEFAULT",description:"",imageURL:""}]},{referenceStyleID:"TOPO",name:"Topo",description:"",variants:[{id:"topo-v2",name:"Default",variantType:"DEFAULT",description:"",imageURL:""},{id:"topo-v2-shiny",name:"Shiny",variantType:"SHINY",description:"",imageURL:""},{id:"topo-v2-pastel",name:"Pastel",variantType:"PASTEL",description:"",imageURL:""},{id:"topo-v2-topographique",name:"Topographique",variantType:"TOPOGRAPHIQUE",description:"",imageURL:""}]},{referenceStyleID:"VOYAGER",name:"Voyager",description:"",variants:[{id:"voyager-v2",name:"Default",variantType:"DEFAULT",description:"",imageURL:""},{id:"voyager-v2-darkmatter",name:"Darkmatter",variantType:"DARK",description:"",imageURL:""},{id:"voyager-v2-positron",name:"Positron",variantType:"LIGHT",description:"",imageURL:""},{id:"voyager-v2-vintage",name:"Vintage",variantType:"VINTAGE",description:"",imageURL:""}]},{referenceStyleID:"TONER",name:"Toner",description:"",variants:[{id:"toner-v2",name:"Default",variantType:"DEFAULT",description:"",imageURL:""},{id:"toner-v2-background",name:"Background",variantType:"BACKGROUND",description:"",imageURL:""},{id:"toner-v2-lite",name:"Lite",variantType:"LITE",description:"",imageURL:""},{id:"toner-v2-lines",name:"Lines",variantType:"LINES",description:"",imageURL:""}]},{referenceStyleID:"DATAVIZ",name:"Dataviz",description:"",variants:[{id:"dataviz",name:"Default",variantType:"DEFAULT",description:"",imageURL:""},{id:"dataviz-dark",name:"Dark",variantType:"DARK",description:"",imageURL:""},{id:"dataviz-light",name:"Light",variantType:"LIGHT",description:"",imageURL:""}]},{referenceStyleID:"OCEAN",name:"Ocean",description:"",variants:[{id:"ocean",name:"Default",variantType:"DEFAULT",description:"",imageURL:""}]}];function td(M){return new Proxy(M,{get(b,k,Z){return b.hasVariant(k)?b.getVariant(k):k.toString().toUpperCase()===k?M.getDefaultVariant():Reflect.get(b,k,Z)}})}function id(){const M={};for(let b=0;b<Co.length;b+=1){const k=Co[b],Z=td(new Ao(k.name,k.referenceStyleID));for(let ie=0;ie<k.variants.length;ie+=1){const me=k.variants[ie],ne=new Io(me.name,me.variantType,me.id,Z,me.description,me.imageURL);Z.addVariant(ne)}M[k.referenceStyleID]=Z}return M}function jl(M){if(!M)return Gl[Co[0].referenceStyleID].getDefaultVariant().getId();if(typeof M=="string"||M instanceof String)return M.trim().toLowerCase();if(M instanceof Io)return M.getId();if(M instanceof Ao)return M.getDefaultVariant().getId()}const Gl=id();function rd(M,b,k){let Z=b[0],ie=b[1],me=k[0]-Z,ne=k[1]-ie;if(me!==0||ne!==0){const c=((M[0]-Z)*me+(M[1]-ie)*ne)/(me*me+ne*ne);c>1?(Z=k[0],ie=k[1]):c>0&&(Z+=me*c,ie+=ne*c)}return me=M[0]-Z,ne=M[1]-ie,me*me+ne*ne}function ql(M,b,k,Z,ie){let me=Z,ne;for(let c=b+1;c<k;c++){const Ie=rd(M[c],M[b],M[k]);Ie>me&&(ne=c,me=Ie)}me>Z&&(ne-b>1&&ql(M,b,ne,Z,ie),ie.push(M[ne]),k-ne>1&&ql(M,ne,k,Z,ie))}function nd(M,b){const k=M.length-1,Z=[M[0]];return ql(M,0,k,b,Z),Z.push(M[k]),Z}function sd(M,b){if(M.length<=2)return M;const k=b!==void 0?b*b:1;return nd(M,k)}function Zl(M,b=!0){let k=`${M[0]},${M[1]}`;return M.length===3&&b&&(k+=`,${M[2]}`),k}function Xl(M,b=3e3){let k=M.map(me=>me.join(",")).join("|"),Z=5e-6;const ie=1e-5;for(;k.length>b;)k=sd(M,Z).map(ne=>`${ne[0]},${ne[1]}`).join("|"),Z+=ie;return k}function ad(M,b,k={}){var Z,ie,me,ne,c;const Ie=jl(k.style),Ke=k.hiDPI?"@2x":"",lt=(Z=k.format)!=null?Z:"png";let St=~~((ie=k.width)!=null?ie:1024),Me=~~((me=k.height)!=null?me:1024);k.hiDPI&&(St=~~(St/2),Me=~~(Me/2));const K=new URL(`maps/${encodeURIComponent(Ie)}/static/${M[0]},${M[1]},${b}/${St}x${Me}${Ke}.${lt}`,zr.maptilerApiURL);if("attribution"in k&&K.searchParams.set("attribution",k.attribution.toString()),"markers"in k){let Je="";const ti="markerIcon"in k;ti&&(Je+=`icon:${k.markerIcon}|`),ti&&"markerAnchor"in k&&(Je+=`anchor:${k.markerAnchor}|`),ti&&k.hiDPI&&(Je+="scale:2|"),Je+=(Array.isArray(k.markers[0])?k.markers:[k.markers]).map(Dt=>Zl(Dt,!ti)).join("|"),K.searchParams.set("markers",Je)}if("path"in k){let Je="";Je+=`fill:${(ne=k.pathFillColor)!=null?ne:"none"}|`,"pathStrokeColor"in k&&(Je+=`stroke:${k.pathStrokeColor}|`),"pathWidth"in k&&(Je+=`width:${(k.pathWidth/(k.hiDPI?2:1)).toString()}|`),Je+=Xl(k.path),K.searchParams.set("path",Je)}return K.searchParams.set("key",(c=k.apiKey)!=null?c:Hi.apiKey),K.toString()}function od(M,b={}){var k,Z,ie,me,ne;const c=jl(b.style),Ie=b.hiDPI?"@2x":"",Ke=(k=b.format)!=null?k:"png";let lt=~~((Z=b.width)!=null?Z:1024),St=~~((ie=b.height)!=null?ie:1024);b.hiDPI&&(lt=~~(lt/2),St=~~(St/2));const Me=new URL(`maps/${encodeURIComponent(c)}/static/${M[0]},${M[1]},${M[2]},${M[3]}/${lt}x${St}${Ie}.${Ke}`,zr.maptilerApiURL);if("attribution"in b&&Me.searchParams.set("attribution",b.attribution.toString()),"padding"in b&&Me.searchParams.set("padding",b.padding.toString()),"markers"in b){let K="";const Je="markerIcon"in b;Je&&(K+=`icon:${b.markerIcon}|`),Je&&"markerAnchor"in b&&(K+=`anchor:${b.markerAnchor}|`),Je&&b.hiDPI&&(K+="scale:2|"),K+=(Array.isArray(b.markers[0])?b.markers:[b.markers]).map(Jt=>Zl(Jt,!Je)).join("|"),Me.searchParams.set("markers",K)}if("path"in b){let K="";K+=`fill:${(me=b.pathFillColor)!=null?me:"none"}|`,"pathStrokeColor"in b&&(K+=`stroke:${b.pathStrokeColor}|`),"pathWidth"in b&&(K+=`width:${(b.pathWidth/(b.hiDPI?2:1)).toString()}|`),K+=Xl(b.path),Me.searchParams.set("path",K)}return Me.searchParams.set("key",(ne=b.apiKey)!=null?ne:Hi.apiKey),Me.toString()}function ld(M={}){var b,k,Z,ie,me;if(!("markers"in M)&&!("path"in M))throw new Error("Automatic static maps require markers and/or path to be created.");const ne=jl(M.style),c=M.hiDPI?"@2x":"",Ie=(b=M.format)!=null?b:"png";let Ke=~~((k=M.width)!=null?k:1024),lt=~~((Z=M.height)!=null?Z:1024);M.hiDPI&&(Ke=~~(Ke/2),lt=~~(lt/2));const St=new URL(`maps/${encodeURIComponent(ne)}/static/auto/${Ke}x${lt}${c}.${Ie}`,zr.maptilerApiURL);if("attribution"in M&&St.searchParams.set("attribution",M.attribution.toString()),"padding"in M&&St.searchParams.set("padding",M.padding.toString()),"markers"in M){let Me="";const K="markerIcon"in M;K&&(Me+=`icon:${M.markerIcon}|`),K&&"markerAnchor"in M&&(Me+=`anchor:${M.markerAnchor}|`),K&&M.hiDPI&&(Me+="scale:2|"),Me+=(Array.isArray(M.markers[0])?M.markers:[M.markers]).map(ti=>Zl(ti,!K)).join("|"),St.searchParams.set("markers",Me)}if("path"in M){let Me="";Me+=`fill:${(ie=M.pathFillColor)!=null?ie:"none"}|`,"pathStrokeColor"in M&&(Me+=`stroke:${M.pathStrokeColor}|`),"pathWidth"in M&&(Me+=`width:${(M.pathWidth/(M.hiDPI?2:1)).toString()}|`),Me+=Xl(M.path),St.searchParams.set("path",Me)}return St.searchParams.set("key",(me=M.apiKey)!=null?me:Hi.apiKey),St.toString()}const cd={centered:ad,bounded:od,automatic:ld};class Bh extends Vl.exports{constructor(){super(),this.primaryLanguage=kr.AUTO,this.secondaryLanguage=null,this.session=!0,this._unit="metric",this._apiKey=""}set unit(b){this._unit=b,this.emit("unit",b)}get unit(){return this._unit}set apiKey(b){this._apiKey=b,Hi.apiKey=b,this.emit("apiKey",b)}get apiKey(){return this._apiKey}set fetch(b){Hi.fetch=b}get fetch(){return Hi.fetch}}const Fi=new Bh,Ki={maptilerLogoURL:"https://api.maptiler.com/resources/logo.svg",maptilerURL:"https://www.maptiler.com/",maptilerApiHost:"api.maptiler.com",rtlPluginURL:"https://cdn.maptiler.com/mapbox-gl-rtl-text/v0.2.3/mapbox-gl-rtl-text.min.js",primaryLanguage:kr.AUTO,secondaryLanguage:kr.LOCAL,terrainSourceURL:"https://api.maptiler.com/tiles/terrain-rgb/tiles.json",terrainSourceId:"maptiler-terrain"};Object.freeze(Ki);class Fh extends Gr.LogoControl{constructor(b={}){var k,Z;super(b),this.logoURL="",this.linkURL="",this.logoURL=(k=b.logoURL)!=null?k:Ki.maptilerLogoURL,this.linkURL=(Z=b.linkURL)!=null?Z:Ki.maptilerURL}onAdd(b){this._map=b,this._compact=this.options&&this.options.compact,this._container=window.document.createElement("div"),this._container.className="maplibregl-ctrl";const k=window.document.createElement("a");return k.style.backgroundRepeat="no-repeat",k.style.cursor="pointer",k.style.display="block",k.style.height="23px",k.style.margin="0 0 -4px -4px",k.style.overflow="hidden",k.style.width="88px",k.style.backgroundImage=`url(${this.logoURL})`,k.style.backgroundSize="100px 30px",k.style.width="100px",k.style.height="30px",k.target="_blank",k.rel="noopener nofollow",k.href=this.linkURL,k.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),k.setAttribute("rel","noopener nofollow"),this._container.appendChild(k),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}}function hd(){Gr.getRTLTextPluginStatus()==="unavailable"&&Gr.setRTLTextPlugin(Ki.rtlPluginURL,null,!0)}function ud(M,b){M.forEach(k=>{!b[k]||(b[k]=b[k].bind(b))})}function Un(M,b,k){const Z=window.document.createElement(M);return b!==void 0&&(Z.className=b),k&&k.appendChild(Z),Z}function pd(M){M.parentNode&&M.parentNode.removeChild(M)}function Oh(M){return M?typeof M=="string"||M instanceof String?Rh(M):M instanceof Io?M.getExpandedStyleURL():M instanceof Ao?M.getDefaultVariant().getExpandedStyleURL():M:Gl[Co[0].referenceStyleID].getDefaultVariant().getExpandedStyleURL()}class dd{constructor(){ud(["_toggleTerrain","_updateTerrainIcon"],this)}onAdd(b){return this._map=b,this._container=Un("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=Un("button","maplibregl-ctrl-terrain",this._container),Un("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.type="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){pd(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}_toggleTerrain(){this._map.hasTerrain()?this._map.disableTerrain():this._map.enableTerrain(),this._updateTerrainIcon()}_updateTerrainIcon(){this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.hasTerrain()?(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"))}}class md extends Gr.NavigationControl{constructor(){super({showCompass:!0,showZoom:!0,visualizePitch:!0}),this._compass.removeEventListener("click",this._compass.clickFunction),this._compass.addEventListener("click",b=>{this._map.getPitch()===0?this._map.easeTo({pitch:Math.min(this._map.getMaxPitch(),80)}):this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:b}):this._map.resetNorth({},{originalEvent:b})})}_createButton(b,k){const Z=super._createButton(b,k);return Z.clickFunction=k,Z}_rotateCompassArrow(){const b=this.options.visualizePitch?`scale(${Math.min(1.5,1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5))}) rotateX(${Math.min(70,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=b}}var fd=Object.defineProperty,Uh=Object.getOwnPropertySymbols,gd=Object.prototype.hasOwnProperty,_d=Object.prototype.propertyIsEnumerable,Vh=(M,b,k)=>b in M?fd(M,b,{enumerable:!0,configurable:!0,writable:!0,value:k}):M[b]=k,yd=(M,b)=>{for(var k in b||(b={}))gd.call(b,k)&&Vh(M,k,b[k]);if(Uh)for(var k of Uh(b))_d.call(b,k)&&Vh(M,k,b[k]);return M};class xd extends bs.exports.GeolocateControl{_updateCamera(b){const k=new bs.exports.LngLat(b.coords.longitude,b.coords.latitude),Z=b.coords.accuracy,ie=this._map.getBearing(),me=yd({bearing:ie},this.options.fitBoundsOptions);console.log("moving camera"),this._map.fitBounds(k.toBounds(Z),me,{geolocateSource:!0});let ne=!1;const c=()=>{console.log("DISRUPTED FITTING!"),ne=!0};this._map.once("click",c),this._map.once("dblclick",c),this._map.once("dragstart",c),this._map.once("mousedown",c),this._map.once("touchstart",c),this._map.once("wheel",c),this._map.once("moveend",()=>{console.log("done moving, with disruption:",ne),this._map.off("click",c),this._map.off("dblclick",c),this._map.off("dragstart",c),this._map.off("mousedown",c),this._map.off("touchstart",c),this._map.off("wheel",c),!ne&&(this.lastUpdatedCenter=this._map.getCenter(),this.lastUpdatedZoom=this._map.getZoom())})}_setupUI(b){if(this.lastUpdatedCenter=this._map.getCenter(),this.lastUpdatedZoom=this._map.getZoom(),this._container.addEventListener("contextmenu",k=>k.preventDefault()),this._geolocateButton=Un("button","maplibregl-ctrl-geolocate",this._container),Un("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",b===!1){const k=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=k,this._geolocateButton.setAttribute("aria-label",k)}else{const k=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.title=k,this._geolocateButton.setAttribute("aria-label",k)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=Un("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new bs.exports.Marker(this._dotElement),this._circleElement=Un("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new bs.exports.Marker({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("move",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("moveend",k=>{const Z=k.originalEvent&&k.originalEvent.type==="resize",ie=this.lastUpdatedCenter.distanceTo(this._map.getCenter());!k.geolocateSource&&this._watchState==="ACTIVE_LOCK"&&!Z&&ie>1&&(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new Event("trackuserlocationend")))})}_updateCircleRadius(){if(this._watchState!=="BACKGROUND"&&this._watchState!=="ACTIVE_LOCK")return;const b=[this._lastKnownPosition.coords.longitude,this._lastKnownPosition.coords.latitude],k=this._map.project(b),Z=this._map.unproject([k.x,k.y]),ie=this._map.unproject([k.x+20,k.y]),me=Z.distanceTo(ie)/20,ne=Math.ceil(2*this._accuracy/me);this._circleElement.style.width=`${ne}px`,this._circleElement.style.height=`${ne}px`}_onZoom(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}}var vd=Object.defineProperty,bd=Object.defineProperties,wd=Object.getOwnPropertyDescriptors,Nh=Object.getOwnPropertySymbols,Td=Object.prototype.hasOwnProperty,Sd=Object.prototype.propertyIsEnumerable,$h=(M,b,k)=>b in M?vd(M,b,{enumerable:!0,configurable:!0,writable:!0,value:k}):M[b]=k,jh=(M,b)=>{for(var k in b||(b={}))Td.call(b,k)&&$h(M,k,b[k]);if(Nh)for(var k of Nh(b))Sd.call(b,k)&&$h(M,k,b[k]);return M},Gh=(M,b)=>bd(M,wd(b)),ha=(M,b,k)=>new Promise((Z,ie)=>{var me=Ie=>{try{c(k.next(Ie))}catch(Ke){ie(Ke)}},ne=Ie=>{try{c(k.throw(Ie))}catch(Ke){ie(Ke)}},c=Ie=>Ie.done?Z(Ie.value):Promise.resolve(Ie.value).then(me,ne);c((k=k.apply(M,b)).next())});const Ed=kp(),qh={POINT:"POINT",COUNTRY:"COUNTRY"};class Id extends Gr.Map{constructor(b){var k;const Z=Oh(b.style);console.log(Z);const ie=location.hash;Fi.apiKey||console.warn("MapTiler Cloud API key is not set. Visit https://maptiler.com and try Cloud for free!"),super(Gh(jh({},b),{style:Z,maplibreLogo:!1,transformRequest:me=>{const ne=new URL(me);return ne.host===Ki.maptilerApiHost&&(ne.searchParams.has("key")||ne.searchParams.append("key",Fi.apiKey),Fi.session&&ne.searchParams.append("mtsid",Ed)),{url:ne.href,headers:{}}}})),this.languageShouldUpdate=!1,this.isStyleInitialized=!1,this.isTerrainEnabled=!1,this.terrainExaggeration=1,this.once("styledata",()=>ha(this,null,function*(){if(b.geolocate===!1||b.center||b.hash&&!!ie)return;try{if(b.geolocate===qh.COUNTRY){yield this.fitToIpBounds();return}}catch(ne){console.warn(ne.message)}let me=null;try{yield this.centerOnIpPoint(b.zoom),me=this.getCameraHash()}catch(ne){console.warn(ne.message)}(yield navigator.permissions.query({name:"geolocation"})).state==="granted"&&navigator.geolocation.getCurrentPosition(ne=>{me===this.getCameraHash()&&this.easeTo({center:[ne.coords.longitude,ne.coords.latitude],zoom:b.zoom||12,duration:2e3})},null,{maximumAge:24*3600*1e3,timeout:5e3,enableHighAccuracy:!1})})),this.on("styledataloading",()=>{this.languageShouldUpdate=!!Fi.primaryLanguage||!!Fi.secondaryLanguage}),this.on("styledata",()=>{Fi.primaryLanguage&&(this.languageShouldUpdate||!this.isStyleInitialized)&&this.setPrimaryLanguage(Fi.primaryLanguage),Fi.secondaryLanguage&&(this.languageShouldUpdate||!this.isStyleInitialized)&&this.setSecondaryLanguage(Fi.secondaryLanguage),this.languageShouldUpdate=!1,this.isStyleInitialized=!0}),this.on("styledata",()=>{this.getTerrain()===null&&this.isTerrainEnabled&&this.enableTerrain(this.terrainExaggeration)}),this.once("load",()=>ha(this,null,function*(){hd()})),this.once("load",()=>ha(this,null,function*(){let me={logo:null};try{const ne=Object.keys(this.style.sourceCaches).map(Ie=>this.getSource(Ie)).filter(Ie=>typeof Ie.url=="string"&&Ie.url.includes("tiles.json")),c=new URL(ne[0].url);c.searchParams.has("key")||c.searchParams.append("key",Fi.apiKey),me=yield(yield fetch(c.href)).json()}catch{}if("logo"in me&&me.logo){const ne=me.logo;this.addControl(new Fh({logoURL:ne}),b.logoPosition),b.attributionControl===!1&&this.addControl(new Gr.AttributionControl(b))}else b.maptilerLogo&&this.addControl(new Fh,b.logoPosition);if(b.scaleControl){const ne=b.scaleControl===!0||b.scaleControl===void 0?"bottom-right":b.scaleControl,c=new Gr.ScaleControl({unit:Fi.unit});this.addControl(c,ne),Fi.on("unit",Ie=>{c.setUnit(Ie)})}if(b.navigationControl!==!1){const ne=b.navigationControl===!0||b.navigationControl===void 0?"top-right":b.navigationControl;this.addControl(new md,ne)}if(b.geolocateControl!==!1){const ne=b.geolocateControl===!0||b.geolocateControl===void 0?"top-right":b.geolocateControl;this.addControl(new xd({positionOptions:{enableHighAccuracy:!0,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!0,showAccuracyCircle:!0,showUserLocation:!0}),ne)}if(b.terrainControl){const ne=b.terrainControl===!0||b.terrainControl===void 0?"top-right":b.terrainControl;this.addControl(new dd,ne)}if(b.fullscreenControl){const ne=b.fullscreenControl===!0||b.fullscreenControl===void 0?"top-right":b.fullscreenControl;this.addControl(new Gr.FullscreenControl({}),ne)}})),b.terrain&&this.enableTerrain((k=b.terrainExaggeration)!=null?k:this.terrainExaggeration)}setStyle(b,k){return super.setStyle(Oh(b),k)}setLanguage(b=Ki.primaryLanguage){if(b===kr.AUTO)return this.setLanguage(Nl());this.setPrimaryLanguage(b)}setPrimaryLanguage(b=Ki.primaryLanguage){!Mh(b)||this.onStyleReady(()=>{if(b===kr.AUTO)return this.setPrimaryLanguage(Nl());Fi.primaryLanguage=b;const k=this.getStyle().layers,Z=/^\s*{\s*name\s*(:\s*(\S*))?\s*}$/,ie=/^\s*name\s*(:\s*(\S*))?\s*$/,me=/^\s*{\s*name\s*(:\s*(\S*))?\s*}(\s*){\s*name\s*(:\s*(\S*))?\s*}$/,ne=/^(.*)({\s*name\s*(:\s*(\S*))?\s*})(.*)$/,c=b?`name:${b}`:"name",Ie=["case",["has",c],["get",c],["get","name:latin"]];for(let Ke=0;Ke<k.length;Ke+=1){const lt=k[Ke],St=lt.layout;if(!St||!St["text-field"])continue;const Me=this.getLayoutProperty(lt.id,"text-field");let K;if(Array.isArray(Me)&&Me.length>=2&&Me[0].trim().toLowerCase()==="concat"){const Je=Me.slice();for(let ti=0;ti<Me.length;ti+=1){const Jt=Me[ti];if((typeof Jt=="string"||Jt instanceof String)&&Z.exec(Jt.toString())){Je[ti]=Ie;break}else if(Array.isArray(Jt)&&Jt.length>=2&&Jt[0].trim().toLowerCase()==="get"&&ie.exec(Jt[1].toString())){Je[ti]=Ie;break}else if(Array.isArray(Jt)&&Jt.length===4&&Jt[0].trim().toLowerCase()==="case"){Je[ti]=Ie;break}}this.setLayoutProperty(lt.id,"text-field",Je)}else if(Array.isArray(Me)&&Me.length>=2&&Me[0].trim().toLowerCase()==="get"&&ie.exec(Me[1].toString())){const Je=Ie;this.setLayoutProperty(lt.id,"text-field",Je)}else if((typeof Me=="string"||Me instanceof String)&&Z.exec(Me.toString())){const Je=Ie;this.setLayoutProperty(lt.id,"text-field",Je)}else if(Array.isArray(Me)&&Me.length===4&&Me[0].trim().toLowerCase()==="case"){const Je=Ie;this.setLayoutProperty(lt.id,"text-field",Je)}else if((typeof Me=="string"||Me instanceof String)&&(K=me.exec(Me.toString()))!==null){const Je=`{${c}}${K[3]}{name${K[4]||""}}`;this.setLayoutProperty(lt.id,"text-field",Je)}else if((typeof Me=="string"||Me instanceof String)&&(K=ne.exec(Me.toString()))!==null){const Je=`${K[1]}{${c}}${K[5]}`;this.setLayoutProperty(lt.id,"text-field",Je)}}})}setSecondaryLanguage(b=Ki.secondaryLanguage){!Mh(b)||this.onStyleReady(()=>{if(b===kr.AUTO)return this.setSecondaryLanguage(Nl());Fi.secondaryLanguage=b;const k=this.getStyle().layers,Z=/^\s*{\s*name\s*(:\s*(\S*))?\s*}$/,ie=/^\s*name\s*(:\s*(\S*))?\s*$/,me=/^\s*{\s*name\s*(:\s*(\S*))?\s*}(\s*){\s*name\s*(:\s*(\S*))?\s*}$/;let ne;for(let c=0;c<k.length;c+=1){const Ie=k[c],Ke=Ie.layout;if(!Ke||!Ke["text-field"])continue;const lt=this.getLayoutProperty(Ie.id,"text-field");let St;if(Array.isArray(lt)&&lt.length>=2&&lt[0].trim().toLowerCase()==="concat"){St=lt.slice();let Me=0;for(let K=0;K<lt.length;K+=1){const Je=lt[K];if((typeof Je=="string"||Je instanceof String)&&Z.exec(Je.toString())){if(Me===1){St[K]=`{name:${b}}`;break}Me+=1}else if(Array.isArray(Je)&&Je.length>=2&&Je[0].trim().toLowerCase()==="get"&&ie.exec(Je[1].toString())){if(Me===1){St[K][1]=`name:${b}`;break}Me+=1}else if(Array.isArray(Je)&&Je.length===4&&Je[0].trim().toLowerCase()==="case"){if(Me===1){St[K]=["get",`name:${b}`];break}Me+=1}}this.setLayoutProperty(Ie.id,"text-field",St)}else if((typeof lt=="string"||lt instanceof String)&&(ne=me.exec(lt.toString()))!==null){const Me=b?`name:${b}`:"name";St=`{name${ne[1]||""}}${ne[3]}{${Me}}`,this.setLayoutProperty(Ie.id,"text-field",St)}}})}getTerrainExaggeration(){return this.terrainExaggeration}hasTerrain(){return this.isTerrainEnabled}enableTerrain(b=this.terrainExaggeration){if(b<0){console.warn("Terrain exaggeration cannot be negative.");return}const k=this.getTerrain(),Z=()=>{this.isTerrainEnabled=!0,this.terrainExaggeration=b,this.addSource(Ki.terrainSourceId,{type:"raster-dem",url:Ki.terrainSourceURL}),this.setTerrain({source:Ki.terrainSourceId,exaggeration:b})};if(k){this.setTerrain(Gh(jh({},k),{exaggeration:b}));return}this.loaded()||this.isTerrainEnabled?Z():this.once("load",()=>{this.getTerrain()&&this.getSource(Ki.terrainSourceId)||Z()})}disableTerrain(){this.isTerrainEnabled=!1,this.setTerrain(null),this.getSource(Ki.terrainSourceId)&&this.removeSource(Ki.terrainSourceId)}setTerrainExaggeration(b){this.enableTerrain(b)}onStyleReady(b){this.isStyleLoaded()?b():this.once("styledata",()=>{b()})}fitToIpBounds(){return ha(this,null,function*(){const b=yield $l.info();this.fitBounds(b.country_bounds,{duration:0,padding:100})})}centerOnIpPoint(b){return ha(this,null,function*(){const k=yield $l.info();this.jumpTo({center:[k.longitude,k.latitude],zoom:b||11})})}getCameraHash(){const b=new Float32Array(5),k=this.getCenter();return b[0]=k.lng,b[1]=k.lat,b[2]=this.getZoom(),b[3]=this.getPitch(),b[4]=this.getBearing(),Ap.fromUint8Array(new Uint8Array(b.buffer))}}class ua{constructor(b,k){this.x=b,this.y=k}_matMult(b){const k=b[0]*this.x+b[1]*this.y,Z=b[2]*this.x+b[3]*this.y;return this.x=k,this.y=Z,this}_add(b){return this.x+=b.x,this.y+=b.y,this}_sub(b){return this.x-=b.x,this.y-=b.y,this}_mult(b){return this.x*=b,this.y*=b,this}_div(b){return this.x/=b,this.y/=b,this}_multByPoint(b){return this.x*=b.x,this.y*=b.y,this}_divByPoint(b){return this.x/=b.x,this.y/=b.y,this}_unit(){return this._div(this.mag()),this}_perp(){const b=this.y;return this.y=this.x,this.x=-b,this}_rotate(b){const k=Math.cos(b),Z=Math.sin(b),ie=k*this.x-Z*this.y,me=Z*this.x+k*this.y;return this.x=ie,this.y=me,this}_rotateAround(b,k){const Z=Math.cos(b),ie=Math.sin(b),me=k.x+Z*(this.x-k.x)-ie*(this.y-k.y),ne=k.y+ie*(this.x-k.x)+Z*(this.y-k.y);return this.x=me,this.y=ne,this}_round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}clone(){return new ua(this.x,this.y)}add(b){return this.clone()._add(b)}sub(b){return this.clone()._sub(b)}multByPoint(b){return this.clone()._multByPoint(b)}divByPoint(b){return this.clone()._divByPoint(b)}mult(b){return this.clone()._mult(b)}div(b){return this.clone()._div(b)}rotate(b){return this.clone()._rotate(b)}rotateAround(b,k){return this.clone()._rotateAround(b,k)}matMult(b){return this.clone()._matMult(b)}unit(){return this.clone()._unit()}perp(){return this.clone()._perp()}round(){return this.clone()._round()}mag(){return Math.sqrt(this.x*this.x+this.y*this.y)}equals(b){return this.x===b.x&&this.y===b.y}dist(b){return Math.sqrt(this.distSqr(b))}distSqr(b){const k=b.x-this.x,Z=b.y-this.y;return k*k+Z*Z}angle(){return Math.atan2(this.y,this.x)}angleTo(b){return Math.atan2(this.y-b.y,this.x-b.x)}angleWith(b){return this.angleWithSep(b.x,b.y)}angleWithSep(b,k){return Math.atan2(this.x*k-this.y*b,this.x*b+this.y*k)}static convert(b){return b instanceof ua?b:Array.isArray(b)?new ua(b[0],b[1]):b}}const{supported:Ad,setRTLTextPlugin:Cd,getRTLTextPluginStatus:Md,NavigationControl:Pd,GeolocateControl:kd,AttributionControl:zd,LogoControl:Ld,ScaleControl:Dd,FullscreenControl:Rd,TerrainControl:Bd,Popup:Fd,Marker:Od,Style:Ud,LngLat:Vd,LngLatBounds:Nd,MercatorCoordinate:$d,Evented:jd,AJAXError:Gd,CanvasSource:qd,GeoJSONSource:Zd,ImageSource:Xd,RasterDEMTileSource:Wd,RasterTileSource:Hd,VectorTileSource:Kd,VideoSource:Jd,prewarm:Yd,clearPrewarmedResources:Qd,version:em,workerCount:tm,maxParallelImageRequests:im,clearStorage:rm,workerUrl:nm,addProtocol:sm,removeProtocol:am}=Gr;tt.AJAXError=Gd,tt.AttributionControl=zd,tt.CanvasSource=qd,tt.Evented=jd,tt.FullscreenControl=Rd,tt.GeoJSONSource=Zd,tt.GeolocateControl=kd,tt.GeolocationType=qh,tt.ImageSource=Xd,tt.Language=kr,tt.LanguageGeocoding=Es,tt.LngLat=Vd,tt.LngLatBounds=Nd,tt.LogoControl=Ld,tt.Map=Id,tt.MapStyle=Gl,tt.MapStyleVariant=Io,tt.Marker=Od,tt.MercatorCoordinate=$d,tt.NavigationControl=Pd,tt.Point=ua,tt.Popup=Fd,tt.RasterDEMTileSource=Wd,tt.RasterTileSource=Hd,tt.ReferenceMapStyle=Ao,tt.ScaleControl=Dd,tt.SdkConfig=Bh,tt.ServiceError=On,tt.Style=Ud,tt.TerrainControl=Bd,tt.VectorTileSource=Kd,tt.VideoSource=Jd,tt.addProtocol=sm,tt.clearPrewarmedResources=Qd,tt.clearStorage=rm,tt.config=Fi,tt.coordinates=Jp,tt.data=ed,tt.geocoding=Zp,tt.geolocation=$l,tt.getRTLTextPluginStatus=Md,tt.maxParallelImageRequests=im,tt.prewarm=Yd,tt.removeProtocol=am,tt.setRTLTextPlugin=Cd,tt.staticMaps=cd,tt.supported=Ad,tt.version=em,tt.workerCount=tm,tt.workerUrl=nm,Object.defineProperty(tt,"__esModule",{value:!0})});