889 lines
1 MiB
889 lines
1 MiB
var Z_=Object.defineProperty;var $_=(ne,H,re)=>H in ne?Z_(ne,H,{enumerable:!0,configurable:!0,writable:!0,value:re}):ne[H]=re;var Qe=(ne,H,re)=>$_(ne,typeof H!="symbol"?H+"":H,re);import{p as Br,f as Sd,a as Gu,y as W_,c as H_,z as X_,A as Y_}from"./props-b4vEeO_8.js";import{ag as K_,G as Pd,B as Md,I as J_,J as Q_,F as hs,C as vd,af as ey,h as oc,a3 as Gs,a4 as _d,k as Yr,N as Wf}from"./runtime-C3rQLW--.js";import{i as ty}from"./lifecycle-F2p_Qkk3.js";import{c as iy,d as ry}from"./create-runtime-stories-7AWWVphH.js";import{o as Qf,a as ny}from"./index-client-BAw8T8-V.js";import{i as sy}from"./svelte-component-C8Ginrj8.js";import{s as ay}from"./snippet-C5kbqVpq.js";import{s as oy}from"./attributes-Cg6aLqN3.js";import{s as ly}from"./style-DvJ3IcV1.js";import{b as cy}from"./this-CrUBQEQ_.js";import{g as uy}from"./_commonjsHelpers-D6-XlEtG.js";import{G as hy}from"./GraphicBlock-uLJTqaY1.js";var Vr=Uint8Array,Yo=Uint16Array,dy=Int32Array,em=new Vr([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),tm=new Vr([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),py=new Vr([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),im=function(ne,H){for(var re=new Yo(31),he=0;he<31;++he)re[he]=H+=1<<ne[he-1];for(var we=new dy(re[30]),he=1;he<30;++he)for(var Le=re[he];Le<re[he+1];++Le)we[Le]=Le-re[he]<<5|he;return{b:re,r:we}},rm=im(em,2),nm=rm.b,fy=rm.r;nm[28]=258,fy[258]=28;var my=im(tm,0),gy=my.b,bd=new Yo(32768);for(var Ht=0;Ht<32768;++Ht){var qs=(Ht&43690)>>1|(Ht&21845)<<1;qs=(qs&52428)>>2|(qs&13107)<<2,qs=(qs&61680)>>4|(qs&3855)<<4,bd[Ht]=((qs&65280)>>8|(qs&255)<<8)>>1}var lc=function(ne,H,re){for(var he=ne.length,we=0,Le=new Yo(H);we<he;++we)ne[we]&&++Le[ne[we]-1];var E=new Yo(H);for(we=1;we<H;++we)E[we]=E[we-1]+Le[we-1]<<1;var c;if(re){c=new Yo(1<<H);var Pe=15-H;for(we=0;we<he;++we)if(ne[we])for(var He=we<<4|ne[we],Ze=H-ne[we],Ne=E[ne[we]-1]++<<Ze,$e=Ne|(1<<Ze)-1;Ne<=$e;++Ne)c[bd[Ne]>>Pe]=He}else for(c=new Yo(he),we=0;we<he;++we)ne[we]&&(c[we]=bd[E[ne[we]-1]++]>>15-ne[we]);return c},cc=new Vr(288);for(var Ht=0;Ht<144;++Ht)cc[Ht]=8;for(var Ht=144;Ht<256;++Ht)cc[Ht]=9;for(var Ht=256;Ht<280;++Ht)cc[Ht]=7;for(var Ht=280;Ht<288;++Ht)cc[Ht]=8;var sm=new Vr(32);for(var Ht=0;Ht<32;++Ht)sm[Ht]=5;var _y=lc(cc,9,1),yy=lc(sm,5,1),yd=function(ne){for(var H=ne[0],re=1;re<ne.length;++re)ne[re]>H&&(H=ne[re]);return H},Tn=function(ne,H,re){var he=H/8|0;return(ne[he]|ne[he+1]<<8)>>(H&7)&re},xd=function(ne,H){var re=H/8|0;return(ne[re]|ne[re+1]<<8|ne[re+2]<<16)>>(H&7)},xy=function(ne){return(ne+7)/8|0},vy=function(ne,H,re){return(re==null||re>ne.length)&&(re=ne.length),new Vr(ne.subarray(H,re))},by=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Or=function(ne,H,re){var he=new Error(H||by[ne]);if(he.code=ne,Error.captureStackTrace&&Error.captureStackTrace(he,Or),!re)throw he;return he},Id=function(ne,H,re,he){var we=ne.length,Le=0;if(!we||H.f&&!H.l)return re||new Vr(0);var E=!re,c=E||H.i!=2,Pe=H.i;E&&(re=new Vr(we*3));var He=function(Nr){var oi=re.length;if(Nr>oi){var Vn=new Vr(Math.max(oi*2,Nr));Vn.set(re),re=Vn}},Ze=H.f||0,Ne=H.p||0,$e=H.b||0,st=H.l,bt=H.d,Re=H.m,de=H.n,Ot=we*8;do{if(!st){Ze=Tn(ne,Ne,1);var pt=Tn(ne,Ne+1,3);if(Ne+=3,pt)if(pt==1)st=_y,bt=yy,Re=9,de=5;else if(pt==2){var fr=Tn(ne,Ne,31)+257,hi=Tn(ne,Ne+10,15)+4,Sn=fr+Tn(ne,Ne+5,31)+1;Ne+=14;for(var Si=new Vr(Sn),mr=new Vr(19),ii=0;ii<hi;++ii)mr[py[ii]]=Tn(ne,Ne+ii*3,7);Ne+=hi*3;for(var Mr=yd(mr),Ir=(1<<Mr)-1,jr=lc(mr,Mr,1),ii=0;ii<Sn;){var Pn=jr[Tn(ne,Ne,Ir)];Ne+=Pn&15;var ct=Pn>>4;if(ct<16)Si[ii++]=ct;else{var Ji=0,qi=0;for(ct==16?(qi=3+Tn(ne,Ne,3),Ne+=2,Ji=Si[ii-1]):ct==17?(qi=3+Tn(ne,Ne,7),Ne+=3):ct==18&&(qi=11+Tn(ne,Ne,127),Ne+=7);qi--;)Si[ii++]=Ji}}var Vt=Si.subarray(0,fr),ht=Si.subarray(fr);Re=yd(Vt),de=yd(ht),st=lc(Vt,Re,1),bt=lc(ht,de,1)}else Or(1);else{var ct=xy(Ne)+4,Ki=ne[ct-4]|ne[ct-3]<<8,Ti=ct+Ki;if(Ti>we){Pe&&Or(0);break}c&&He($e+Ki),re.set(ne.subarray(ct,Ti),$e),H.b=$e+=Ki,H.p=Ne=Ti*8,H.f=Ze;continue}if(Ne>Ot){Pe&&Or(0);break}}c&&He($e+131072);for(var Jr=(1<<Re)-1,gr=(1<<de)-1,Qr=Ne;;Qr=Ne){var Ji=st[xd(ne,Ne)&Jr],Qi=Ji>>4;if(Ne+=Ji&15,Ne>Ot){Pe&&Or(0);break}if(Ji||Or(2),Qi<256)re[$e++]=Qi;else if(Qi==256){Qr=Ne,st=null;break}else{var Er=Qi-254;if(Qi>264){var ii=Qi-257,Li=em[ii];Er=Tn(ne,Ne,(1<<Li)-1)+nm[ii],Ne+=Li}var Pi=bt[xd(ne,Ne)&gr],ri=Pi>>4;Pi||Or(3),Ne+=Pi&15;var ht=gy[ri];if(ri>3){var Li=tm[ri];ht+=xd(ne,Ne)&(1<<Li)-1,Ne+=Li}if(Ne>Ot){Pe&&Or(0);break}c&&He($e+131072);var _i=$e+Er;if($e<ht){var en=Le-ht,tn=Math.min(ht,_i);for(en+$e<0&&Or(3);$e<tn;++$e)re[$e]=he[en+$e]}for(;$e<_i;++$e)re[$e]=re[$e-ht]}}H.l=st,H.p=Qr,H.b=$e,H.f=Ze,st&&(Ze=1,H.m=Re,H.d=bt,H.n=de)}while(!Ze);return $e!=re.length&&E?vy(re,0,$e):re.subarray(0,$e)},wy=new Vr(0),Ty=function(ne){(ne[0]!=31||ne[1]!=139||ne[2]!=8)&&Or(6,"invalid gzip data");var H=ne[3],re=10;H&4&&(re+=(ne[10]|ne[11]<<8)+2);for(var he=(H>>3&1)+(H>>4&1);he>0;he-=!ne[re++]);return re+(H&2)},Sy=function(ne){var H=ne.length;return(ne[H-4]|ne[H-3]<<8|ne[H-2]<<16|ne[H-1]<<24)>>>0},Py=function(ne,H){return((ne[0]&15)!=8||ne[0]>>4>7||(ne[0]<<8|ne[1])%31)&&Or(6,"invalid zlib data"),(ne[1]>>5&1)==1&&Or(6,"invalid zlib data: "+(ne[1]&32?"need":"unexpected")+" dictionary"),(ne[1]>>3&4)+2};function My(ne,H){return Id(ne,{i:2},H,H)}function Iy(ne,H){var re=Ty(ne);return re+8>ne.length&&Or(6,"invalid gzip data"),Id(ne.subarray(re,-8),{i:2},new Vr(Sy(ne)),H)}function Ey(ne,H){return Id(ne.subarray(Py(ne),-4),{i:2},H,H)}function Cy(ne,H){return ne[0]==31&&ne[1]==139&&ne[2]==8?Iy(ne,H):(ne[0]&15)!=8||ne[0]>>4>7||(ne[0]<<8|ne[1])%31?My(ne,H):Ey(ne,H)}var Ay=typeof TextDecoder<"u"&&new TextDecoder,Dy=0;try{Ay.decode(wy,{stream:!0}),Dy=1}catch{}var zy=Object.defineProperty,ky=Math.pow,Dt=(ne,H)=>zy(ne,"name",{value:H,configurable:!0}),Ri=(ne,H,re)=>new Promise((he,we)=>{var Le=Pe=>{try{c(re.next(Pe))}catch(He){we(He)}},E=Pe=>{try{c(re.throw(Pe))}catch(He){we(He)}},c=Pe=>Pe.done?he(Pe.value):Promise.resolve(Pe.value).then(Le,E);c((re=re.apply(ne,H)).next())});Dt((ne,H)=>{let re=!1,he="",we=L.GridLayer.extend({createTile:Dt((Le,E)=>{let c=document.createElement("img"),Pe=new AbortController,He=Pe.signal;return c.cancel=()=>{Pe.abort()},re||(ne.getHeader().then(Ze=>{Ze.tileType===1?console.error("Error: archive contains MVT vector tiles, but leafletRasterLayer is for displaying raster tiles. See https://github.com/protomaps/PMTiles/tree/main/js for details."):Ze.tileType===2?he="image/png":Ze.tileType===3?he="image/jpeg":Ze.tileType===4?he="image/webp":Ze.tileType===5&&(he="image/avif")}),re=!0),ne.getZxy(Le.z,Le.x,Le.y,He).then(Ze=>{if(Ze){let Ne=new Blob([Ze.data],{type:he}),$e=window.URL.createObjectURL(Ne);c.src=$e}else c.style.display="none";c.cancel=void 0,E(void 0,c)}).catch(Ze=>{if(Ze.name!=="AbortError")throw Ze}),c},"createTile"),_removeTile:Dt(function(Le){let E=this._tiles[Le];E&&(E.el.cancel&&E.el.cancel(),E.el.width=0,E.el.height=0,E.el.deleted=!0,L.DomUtil.remove(E.el),delete this._tiles[Le],this.fire("tileunload",{tile:E.el,coords:this._keyToTileCoords(Le)}))},"_removeTile")});return new we(H)},"leafletRasterLayer");var Ry=Dt(ne=>(H,re)=>{if(re instanceof AbortController)return ne(H,re);let he=new AbortController;return ne(H,he).then(we=>re(void 0,we.data,we.cacheControl||"",we.expires||""),we=>re(we)).catch(we=>re(we)),{cancel:Dt(()=>he.abort(),"cancel")}},"v3compat"),am=class{constructor(H){this.tilev4=Dt((re,he)=>Ri(this,null,function*(){if(re.type==="json"){let st=re.url.substr(10),bt=this.tiles.get(st);if(bt||(bt=new Hf(st),this.tiles.set(st,bt)),this.metadata){let de=yield bt.getTileJson(re.url);return he.signal.throwIfAborted(),{data:de}}let Re=yield bt.getHeader();return he.signal.throwIfAborted(),(Re.minLon>=Re.maxLon||Re.minLat>=Re.maxLat)&&console.error(`Bounds of PMTiles archive ${Re.minLon},${Re.minLat},${Re.maxLon},${Re.maxLat} are not valid.`),{data:{tiles:[`${re.url}/{z}/{x}/{y}`],minzoom:Re.minZoom,maxzoom:Re.maxZoom,bounds:[Re.minLon,Re.minLat,Re.maxLon,Re.maxLat]}}}let we=new RegExp(/pmtiles:\/\/(.+)\/(\d+)\/(\d+)\/(\d+)/),Le=re.url.match(we);if(!Le)throw new Error("Invalid PMTiles protocol URL");let E=Le[1],c=this.tiles.get(E);c||(c=new Hf(E),this.tiles.set(E,c));let Pe=Le[2],He=Le[3],Ze=Le[4],Ne=yield c.getHeader(),$e=yield c==null?void 0:c.getZxy(+Pe,+He,+Ze,he.signal);if(he.signal.throwIfAborted(),$e)return{data:new Uint8Array($e.data),cacheControl:$e.cacheControl,expires:$e.expires};if(Ne.tileType===1){if(this.errorOnMissingTile)throw new Error("Tile not found.");return{data:new Uint8Array}}return{data:null}}),"tilev4"),this.tile=Ry(this.tilev4),this.tiles=new Map,this.metadata=(H==null?void 0:H.metadata)||!1,this.errorOnMissingTile=(H==null?void 0:H.errorOnMissingTile)||!1}add(H){this.tiles.set(H.source.getKey(),H)}get(H){return this.tiles.get(H)}};Dt(am,"Protocol");var Ly=am;function om(ne,H){return(H>>>0)*4294967296+(ne>>>0)}Dt(om,"toNum");function lm(ne,H){let re=H.buf,he=re[H.pos++],we=(he&112)>>4;if(he<128||(he=re[H.pos++],we|=(he&127)<<3,he<128)||(he=re[H.pos++],we|=(he&127)<<10,he<128)||(he=re[H.pos++],we|=(he&127)<<17,he<128)||(he=re[H.pos++],we|=(he&127)<<24,he<128)||(he=re[H.pos++],we|=(he&1)<<31,he<128))return om(ne,we);throw new Error("Expected varint not more than 10 bytes")}Dt(lm,"readVarintRemainder");function Xo(ne){let H=ne.buf,re=H[ne.pos++],he=re&127;return re<128||(re=H[ne.pos++],he|=(re&127)<<7,re<128)||(re=H[ne.pos++],he|=(re&127)<<14,re<128)||(re=H[ne.pos++],he|=(re&127)<<21,re<128)?he:(re=H[ne.pos],he|=(re&15)<<28,lm(he,ne))}Dt(Xo,"readVarint");function Ed(ne,H,re,he,we){return we===0?he!==0?[ne-1-re,ne-1-H]:[re,H]:[H,re]}Dt(Ed,"rotate");function cm(ne,H,re){if(ne>26)throw new Error("Tile zoom level exceeds max safe number limit (26)");if(H>=1<<ne||re>=1<<ne)throw new Error("tile x/y outside zoom level bounds");let he=((1<<ne)*(1<<ne)-1)/3,we=ne-1,[Le,E]=[H,re];for(let c=1<<we;c>0;c>>=1){let Pe=Le&c,He=E&c;he+=(3*Pe^He)*(1<<we),[Le,E]=Ed(c,Le,E,Pe,He),we--}return he}Dt(cm,"zxyToTileId");function um(ne){let H=3*ne+1;return H<4294967296?31-Math.clz32(H):63-Math.clz32(H/4294967296)}Dt(um,"tileIdToZ");function Fy(ne){let H=um(ne)>>1;if(H>26)throw new Error("Tile zoom level exceeds max safe number limit (26)");let re=((1<<H)*(1<<H)-1)/3,he=ne-re,we=0,Le=0,E=1<<H;for(let c=1;c<E;c<<=1){let Pe=c&he/2,He=c&(he^Pe);[we,Le]=Ed(c,we,Le,Pe,He),he=he/2,we+=Pe,Le+=He}return[H,we,Le]}Dt(Fy,"tileIdToZxy");var By=(ne=>(ne[ne.Unknown=0]="Unknown",ne[ne.None=1]="None",ne[ne.Gzip=2]="Gzip",ne[ne.Brotli=3]="Brotli",ne[ne.Zstd=4]="Zstd",ne))(By||{});function qu(ne,H){return Ri(this,null,function*(){if(H===1||H===0)return ne;if(H===2){if(typeof globalThis.DecompressionStream>"u")return Cy(new Uint8Array(ne));let re=new Response(ne).body;if(!re)throw new Error("Failed to read response stream");let he=re.pipeThrough(new globalThis.DecompressionStream("gzip"));return new Response(he).arrayBuffer()}throw new Error("Compression method not supported")})}Dt(qu,"defaultDecompress");var Oy=(ne=>(ne[ne.Unknown=0]="Unknown",ne[ne.Mvt=1]="Mvt",ne[ne.Png=2]="Png",ne[ne.Jpeg=3]="Jpeg",ne[ne.Webp=4]="Webp",ne[ne.Avif=5]="Avif",ne[ne.Mlt=6]="Mlt",ne))(Oy||{});function hm(ne){return ne===1?".mvt":ne===2?".png":ne===3?".jpg":ne===4?".webp":ne===5?".avif":ne===6?".mlt":""}Dt(hm,"tileTypeExt");var Vy=127;function dm(ne,H){let re=0,he=ne.length-1;for(;re<=he;){let we=he+re>>1,Le=H-ne[we].tileId;if(Le>0)re=we+1;else if(Le<0)he=we-1;else return ne[we]}return he>=0&&(ne[he].runLength===0||H-ne[he].tileId<ne[he].runLength)?ne[he]:null}Dt(dm,"findTile");var jy=class{constructor(H){this.file=H}getKey(){return this.file.name}getBytes(H,re){return Ri(this,null,function*(){return{data:yield this.file.slice(H,H+re).arrayBuffer()}})}};Dt(jy,"FileSource");var pm=class{constructor(H,re=new Headers){var he,we;this.url=H,this.customHeaders=re,this.mustReload=!1;let Le="";"navigator"in globalThis&&(Le=(we=(he=globalThis.navigator)==null?void 0:he.userAgent)!=null?we:"");let E=Le.indexOf("Windows")>-1,c=/Chrome|Chromium|Edg|OPR|Brave/.test(Le);this.chromeWindowsNoCache=!1,E&&c&&(this.chromeWindowsNoCache=!0)}getKey(){return this.url}setHeaders(H){this.customHeaders=H}getBytes(H,re,he,we){return Ri(this,null,function*(){let Le,E;he?E=he:(Le=new AbortController,E=Le.signal);let c=new Headers(this.customHeaders);c.set("range",`bytes=${H}-${H+re-1}`);let Pe;this.mustReload?Pe="reload":this.chromeWindowsNoCache&&(Pe="no-store");let He=yield fetch(this.url,{signal:E,cache:Pe,headers:c});if(H===0&&He.status===416){let $e=He.headers.get("Content-Range");if(!$e||!$e.startsWith("bytes */"))throw new Error("Missing content-length on 416 response");let st=+$e.substr(8);He=yield fetch(this.url,{signal:E,cache:"reload",headers:{range:`bytes=0-${st-1}`}})}let Ze=He.headers.get("Etag");if(Ze!=null&&Ze.startsWith("W/")&&(Ze=null),He.status===416||we&&Ze&&Ze!==we)throw this.mustReload=!0,new wd(`Server returned non-matching ETag ${we} after one retry. Check browser extensions and servers for issues that may affect correct ETag headers.`);if(He.status>=300)throw new Error(`Bad response code: ${He.status}`);let Ne=He.headers.get("Content-Length");if(He.status===200&&(!Ne||+Ne>re))throw Le&&Le.abort(),new Error("Server returned no content-length header or content-length exceeding request. Check that your storage backend supports HTTP Byte Serving.");return{data:yield He.arrayBuffer(),etag:Ze||void 0,cacheControl:He.headers.get("Cache-Control")||void 0,expires:He.headers.get("Expires")||void 0}})}};Dt(pm,"FetchSource");var Ny=pm;function Kr(ne,H){let re=ne.getUint32(H+4,!0),he=ne.getUint32(H+0,!0);return re*ky(2,32)+he}Dt(Kr,"getUint64");function fm(ne,H){let re=new DataView(ne),he=re.getUint8(7);if(he>3)throw new Error(`Archive is spec version ${he} but this library supports up to spec version 3`);return{specVersion:he,rootDirectoryOffset:Kr(re,8),rootDirectoryLength:Kr(re,16),jsonMetadataOffset:Kr(re,24),jsonMetadataLength:Kr(re,32),leafDirectoryOffset:Kr(re,40),leafDirectoryLength:Kr(re,48),tileDataOffset:Kr(re,56),tileDataLength:Kr(re,64),numAddressedTiles:Kr(re,72),numTileEntries:Kr(re,80),numTileContents:Kr(re,88),clustered:re.getUint8(96)===1,internalCompression:re.getUint8(97),tileCompression:re.getUint8(98),tileType:re.getUint8(99),minZoom:re.getUint8(100),maxZoom:re.getUint8(101),minLon:re.getInt32(102,!0)/1e7,minLat:re.getInt32(106,!0)/1e7,maxLon:re.getInt32(110,!0)/1e7,maxLat:re.getInt32(114,!0)/1e7,centerZoom:re.getUint8(118),centerLon:re.getInt32(119,!0)/1e7,centerLat:re.getInt32(123,!0)/1e7,etag:H}}Dt(fm,"bytesToHeader");function Cd(ne){let H={buf:new Uint8Array(ne),pos:0},re=Xo(H),he=[],we=0;for(let Le=0;Le<re;Le++){let E=Xo(H);he.push({tileId:we+E,offset:0,length:0,runLength:1}),we+=E}for(let Le=0;Le<re;Le++)he[Le].runLength=Xo(H);for(let Le=0;Le<re;Le++)he[Le].length=Xo(H);for(let Le=0;Le<re;Le++){let E=Xo(H);E===0&&Le>0?he[Le].offset=he[Le-1].offset+he[Le-1].length:he[Le].offset=E-1}return he}Dt(Cd,"deserializeIndex");var mm=class extends Error{};Dt(mm,"EtagMismatch");var wd=mm;function Ad(ne,H){return Ri(this,null,function*(){let re=yield ne.getBytes(0,16384);if(new DataView(re.data).getUint16(0,!0)!==19792)throw new Error("Wrong magic number for PMTiles archive");let he=re.data.slice(0,Vy),we=fm(he,re.etag),Le=re.data.slice(we.rootDirectoryOffset,we.rootDirectoryOffset+we.rootDirectoryLength),E=`${ne.getKey()}|${we.etag||""}|${we.rootDirectoryOffset}|${we.rootDirectoryLength}`,c=Cd(yield H(Le,we.internalCompression));return[we,[E,c.length,c]]})}Dt(Ad,"getHeaderAndRoot");function Dd(ne,H,re,he,we){return Ri(this,null,function*(){let Le=yield ne.getBytes(re,he,void 0,we.etag),E=yield H(Le.data,we.internalCompression),c=Cd(E);if(c.length===0)throw new Error("Empty directory is invalid");return c})}Dt(Dd,"getDirectory");var Uy=class{constructor(H=100,re=!0,he=qu){this.cache=new Map,this.maxCacheEntries=H,this.counter=1,this.decompress=he}getHeader(H){return Ri(this,null,function*(){let re=H.getKey(),he=this.cache.get(re);if(he)return he.lastUsed=this.counter++,he.data;let we=yield Ad(H,this.decompress);return we[1]&&this.cache.set(we[1][0],{lastUsed:this.counter++,data:we[1][2]}),this.cache.set(re,{lastUsed:this.counter++,data:we[0]}),this.prune(),we[0]})}getDirectory(H,re,he,we){return Ri(this,null,function*(){let Le=`${H.getKey()}|${we.etag||""}|${re}|${he}`,E=this.cache.get(Le);if(E)return E.lastUsed=this.counter++,E.data;let c=yield Dd(H,this.decompress,re,he,we);return this.cache.set(Le,{lastUsed:this.counter++,data:c}),this.prune(),c})}prune(){if(this.cache.size>this.maxCacheEntries){let H=1/0,re;this.cache.forEach((he,we)=>{he.lastUsed<H&&(H=he.lastUsed,re=we)}),re&&this.cache.delete(re)}}invalidate(H){return Ri(this,null,function*(){this.cache.delete(H.getKey())})}};Dt(Uy,"ResolvedValueCache");var gm=class{constructor(H=100,re=!0,he=qu){this.cache=new Map,this.invalidations=new Map,this.maxCacheEntries=H,this.counter=1,this.decompress=he}getHeader(H){return Ri(this,null,function*(){let re=H.getKey(),he=this.cache.get(re);if(he)return he.lastUsed=this.counter++,yield he.data;let we=new Promise((Le,E)=>{Ad(H,this.decompress).then(c=>{c[1]&&this.cache.set(c[1][0],{lastUsed:this.counter++,data:Promise.resolve(c[1][2])}),Le(c[0]),this.prune()}).catch(c=>{E(c)})});return this.cache.set(re,{lastUsed:this.counter++,data:we}),we})}getDirectory(H,re,he,we){return Ri(this,null,function*(){let Le=`${H.getKey()}|${we.etag||""}|${re}|${he}`,E=this.cache.get(Le);if(E)return E.lastUsed=this.counter++,yield E.data;let c=new Promise((Pe,He)=>{Dd(H,this.decompress,re,he,we).then(Ze=>{Pe(Ze),this.prune()}).catch(Ze=>{He(Ze)})});return this.cache.set(Le,{lastUsed:this.counter++,data:c}),c})}prune(){if(this.cache.size>=this.maxCacheEntries){let H=1/0,re;this.cache.forEach((he,we)=>{he.lastUsed<H&&(H=he.lastUsed,re=we)}),re&&this.cache.delete(re)}}invalidate(H){return Ri(this,null,function*(){let re=H.getKey();if(this.invalidations.get(re))return yield this.invalidations.get(re);this.cache.delete(H.getKey());let he=new Promise((we,Le)=>{this.getHeader(H).then(E=>{we(),this.invalidations.delete(re)}).catch(E=>{Le(E)})});this.invalidations.set(re,he)})}};Dt(gm,"SharedPromiseCache");var Gy=gm,_m=class{constructor(H,re,he){typeof H=="string"?this.source=new Ny(H):this.source=H,he?this.decompress=he:this.decompress=qu,re?this.cache=re:this.cache=new Gy}getHeader(){return Ri(this,null,function*(){return yield this.cache.getHeader(this.source)})}getZxyAttempt(H,re,he,we){return Ri(this,null,function*(){let Le=cm(H,re,he),E=yield this.cache.getHeader(this.source);if(H<E.minZoom||H>E.maxZoom)return;let c=E.rootDirectoryOffset,Pe=E.rootDirectoryLength;for(let He=0;He<=3;He++){let Ze=yield this.cache.getDirectory(this.source,c,Pe,E),Ne=dm(Ze,Le);if(Ne){if(Ne.runLength>0){let $e=yield this.source.getBytes(E.tileDataOffset+Ne.offset,Ne.length,we,E.etag);return{data:yield this.decompress($e.data,E.tileCompression),cacheControl:$e.cacheControl,expires:$e.expires}}c=E.leafDirectoryOffset+Ne.offset,Pe=Ne.length}else return}throw new Error("Maximum directory depth exceeded")})}getZxy(H,re,he,we){return Ri(this,null,function*(){try{return yield this.getZxyAttempt(H,re,he,we)}catch(Le){if(Le instanceof wd)return this.cache.invalidate(this.source),yield this.getZxyAttempt(H,re,he,we);throw Le}})}getMetadataAttempt(){return Ri(this,null,function*(){let H=yield this.cache.getHeader(this.source),re=yield this.source.getBytes(H.jsonMetadataOffset,H.jsonMetadataLength,void 0,H.etag),he=yield this.decompress(re.data,H.internalCompression),we=new TextDecoder("utf-8");return JSON.parse(we.decode(he))})}getMetadata(){return Ri(this,null,function*(){try{return yield this.getMetadataAttempt()}catch(H){if(H instanceof wd)return this.cache.invalidate(this.source),yield this.getMetadataAttempt();throw H}})}getTileJson(H){return Ri(this,null,function*(){let re=yield this.getHeader(),he=yield this.getMetadata(),we=hm(re.tileType);return{tilejson:"3.0.0",scheme:"xyz",tiles:[`${H}/{z}/{x}/{y}${we}`],vector_layers:he.vector_layers,attribution:he.attribution,description:he.description,name:he.name,version:he.version,bounds:[re.minLon,re.minLat,re.maxLon,re.maxLat],center:[re.centerLon,re.centerLat,re.centerZoom],minzoom:re.minZoom,maxzoom:re.maxZoom}})}};Dt(_m,"PMTiles");var Hf=_m,Uu={exports:{}};/**
|
||
* MapLibre GL JS
|
||
* @license 3-Clause BSD. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v5.19.0/LICENSE.txt
|
||
*/var qy=Uu.exports,Xf;function Zy(){return Xf||(Xf=1,function(ne,H){(function(re,he){ne.exports=he()})(qy,function(){var re={},he={};function we(E,c,Pe){if(he[E]=Pe,E==="index"){var He="var sharedModule = {}; ("+he.shared+")(sharedModule); ("+he.worker+")(sharedModule);",Ze={};return he.shared(Ze),he.index(re,Ze),typeof window<"u"&&re.setWorkerUrl(window.URL.createObjectURL(new Blob([He],{type:"text/javascript"}))),re}}we("shared",["exports"],function(E){function c(r,e,i,s){return new(i||(i=Promise))(function(o,u){function h(y){try{g(s.next(y))}catch(v){u(v)}}function f(y){try{g(s.throw(y))}catch(v){u(v)}}function g(y){var v;y.done?o(y.value):(v=y.value,v instanceof i?v:new i(function(b){b(v)})).then(h,f)}g((s=s.apply(r,e||[])).next())})}function Pe(r,e){this.x=r,this.y=e}function He(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var Ze,Ne;typeof SuppressedError=="function"&&SuppressedError,Pe.prototype={clone(){return new Pe(this.x,this.y)},add(r){return this.clone()._add(r)},sub(r){return this.clone()._sub(r)},multByPoint(r){return this.clone()._multByPoint(r)},divByPoint(r){return this.clone()._divByPoint(r)},mult(r){return this.clone()._mult(r)},div(r){return this.clone()._div(r)},rotate(r){return this.clone()._rotate(r)},rotateAround(r,e){return this.clone()._rotateAround(r,e)},matMult(r){return this.clone()._matMult(r)},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(r){return this.x===r.x&&this.y===r.y},dist(r){return Math.sqrt(this.distSqr(r))},distSqr(r){const e=r.x-this.x,i=r.y-this.y;return e*e+i*i},angle(){return Math.atan2(this.y,this.x)},angleTo(r){return Math.atan2(this.y-r.y,this.x-r.x)},angleWith(r){return this.angleWithSep(r.x,r.y)},angleWithSep(r,e){return Math.atan2(this.x*e-this.y*r,this.x*r+this.y*e)},_matMult(r){const e=r[2]*this.x+r[3]*this.y;return this.x=r[0]*this.x+r[1]*this.y,this.y=e,this},_add(r){return this.x+=r.x,this.y+=r.y,this},_sub(r){return this.x-=r.x,this.y-=r.y,this},_mult(r){return this.x*=r,this.y*=r,this},_div(r){return this.x/=r,this.y/=r,this},_multByPoint(r){return this.x*=r.x,this.y*=r.y,this},_divByPoint(r){return this.x/=r.x,this.y/=r.y,this},_unit(){return this._div(this.mag()),this},_perp(){const r=this.y;return this.y=this.x,this.x=-r,this},_rotate(r){const e=Math.cos(r),i=Math.sin(r),s=i*this.x+e*this.y;return this.x=e*this.x-i*this.y,this.y=s,this},_rotateAround(r,e){const i=Math.cos(r),s=Math.sin(r),o=e.y+s*(this.x-e.x)+i*(this.y-e.y);return this.x=e.x+i*(this.x-e.x)-s*(this.y-e.y),this.y=o,this},_round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},constructor:Pe},Pe.convert=function(r){if(r instanceof Pe)return r;if(Array.isArray(r))return new Pe(+r[0],+r[1]);if(r.x!==void 0&&r.y!==void 0)return new Pe(+r.x,+r.y);throw new Error("Expected [x, y] or {x, y} point format")};var $e=function(){if(Ne)return Ze;function r(e,i,s,o){this.cx=3*e,this.bx=3*(s-e)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*i,this.by=3*(o-i)-this.cy,this.ay=1-this.cy-this.by,this.p1x=e,this.p1y=i,this.p2x=s,this.p2y=o}return Ne=1,Ze=r,r.prototype={sampleCurveX:function(e){return((this.ax*e+this.bx)*e+this.cx)*e},sampleCurveY:function(e){return((this.ay*e+this.by)*e+this.cy)*e},sampleCurveDerivativeX:function(e){return(3*this.ax*e+2*this.bx)*e+this.cx},solveCurveX:function(e,i){if(i===void 0&&(i=1e-6),e<0)return 0;if(e>1)return 1;for(var s=e,o=0;o<8;o++){var u=this.sampleCurveX(s)-e;if(Math.abs(u)<i)return s;var h=this.sampleCurveDerivativeX(s);if(Math.abs(h)<1e-6)break;s-=u/h}var f=0,g=1;for(s=e,o=0;o<20&&(u=this.sampleCurveX(s),!(Math.abs(u-e)<i));o++)e>u?f=s:g=s,s=.5*(g-f)+f;return s},solve:function(e,i){return this.sampleCurveY(this.solveCurveX(e,i))}},Ze}(),st=He($e);let bt,Re;function de(){return bt==null&&(bt=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")&&typeof createImageBitmap=="function"),bt}function Ot(){if(Re==null&&(Re=!1,de())){const e=new OffscreenCanvas(5,5).getContext("2d",{willReadFrequently:!0});if(e){for(let s=0;s<5*5;s++){const o=4*s;e.fillStyle=`rgb(${o},${o+1},${o+2})`,e.fillRect(s%5,Math.floor(s/5),1,1)}const i=e.getImageData(0,0,5,5).data;for(let s=0;s<5*5*4;s++)if(s%4!=3&&i[s]!==s){Re=!0;break}}}return Re||!1}var pt=1e-6,ct=typeof Float32Array<"u"?Float32Array:Array;function Ki(){var r=new ct(9);return ct!=Float32Array&&(r[1]=0,r[2]=0,r[3]=0,r[5]=0,r[6]=0,r[7]=0),r[0]=1,r[4]=1,r[8]=1,r}function Ti(r){return r[0]=1,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=1,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r}function fr(){var r=new ct(3);return ct!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function hi(r){var e=r[0],i=r[1],s=r[2];return Math.sqrt(e*e+i*i+s*s)}function Sn(r,e,i){var s=new ct(3);return s[0]=r,s[1]=e,s[2]=i,s}function Si(r,e,i){return r[0]=e[0]+i[0],r[1]=e[1]+i[1],r[2]=e[2]+i[2],r}function mr(r,e,i){return r[0]=e[0]*i,r[1]=e[1]*i,r[2]=e[2]*i,r}function ii(r,e,i){var s=e[0],o=e[1],u=e[2],h=i[0],f=i[1],g=i[2];return r[0]=o*g-u*f,r[1]=u*h-s*g,r[2]=s*f-o*h,r}var Mr,Ir=hi;function jr(r,e,i){var s=e[0],o=e[1],u=e[2],h=e[3];return r[0]=i[0]*s+i[4]*o+i[8]*u+i[12]*h,r[1]=i[1]*s+i[5]*o+i[9]*u+i[13]*h,r[2]=i[2]*s+i[6]*o+i[10]*u+i[14]*h,r[3]=i[3]*s+i[7]*o+i[11]*u+i[15]*h,r}function Pn(){var r=new ct(4);return ct!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r[3]=1,r}function Ji(r,e,i,s){var o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:"zyx",u=Math.PI/360;e*=u,s*=u,i*=u;var h=Math.sin(e),f=Math.cos(e),g=Math.sin(i),y=Math.cos(i),v=Math.sin(s),b=Math.cos(s);switch(o){case"xyz":r[0]=h*y*b+f*g*v,r[1]=f*g*b-h*y*v,r[2]=f*y*v+h*g*b,r[3]=f*y*b-h*g*v;break;case"xzy":r[0]=h*y*b-f*g*v,r[1]=f*g*b-h*y*v,r[2]=f*y*v+h*g*b,r[3]=f*y*b+h*g*v;break;case"yxz":r[0]=h*y*b+f*g*v,r[1]=f*g*b-h*y*v,r[2]=f*y*v-h*g*b,r[3]=f*y*b+h*g*v;break;case"yzx":r[0]=h*y*b+f*g*v,r[1]=f*g*b+h*y*v,r[2]=f*y*v-h*g*b,r[3]=f*y*b-h*g*v;break;case"zxy":r[0]=h*y*b-f*g*v,r[1]=f*g*b+h*y*v,r[2]=f*y*v+h*g*b,r[3]=f*y*b-h*g*v;break;case"zyx":r[0]=h*y*b-f*g*v,r[1]=f*g*b+h*y*v,r[2]=f*y*v-h*g*b,r[3]=f*y*b+h*g*v;break;default:throw new Error("Unknown angle order "+o)}return r}function qi(){var r=new ct(2);return ct!=Float32Array&&(r[0]=0,r[1]=0),r}function Vt(r,e){var i=new ct(2);return i[0]=r,i[1]=e,i}fr(),Mr=new ct(4),ct!=Float32Array&&(Mr[0]=0,Mr[1]=0,Mr[2]=0,Mr[3]=0),fr(),Sn(1,0,0),Sn(0,1,0),Pn(),Pn(),Ki(),qi();const ht=8192;function Jr(r,e,i){return e*(ht/(r.tileSize*Math.pow(2,i-r.tileID.overscaledZ)))}function gr(r,e){return(r%e+e)%e}function Qr(r,e,i){return r*(1-i)+e*i}function Qi(r){if(r<=0)return 0;if(r>=1)return 1;const e=r*r,i=e*r;return 4*(r<.5?i:3*(r-e)+i-.75)}function Er(r,e,i,s){const o=new st(r,e,i,s);return u=>o.solve(u)}const Li=Er(.25,.1,.25,1);function Pi(r,e,i){return Math.min(i,Math.max(e,r))}function ri(r,e,i){const s=i-e,o=((r-e)%s+s)%s+e;return o===e?i:o}function _i(r,...e){for(const i of e)for(const s in i)r[s]=i[s];return r}let en=1;function tn(r,e,i){const s={};for(const o in r)s[o]=e.call(this,r[o],o,r);return s}function Nr(r,e,i){const s={};for(const o in r)e.call(this,r[o],o,r)&&(s[o]=r[o]);return s}function oi(r){return Array.isArray(r)?r.map(oi):typeof r=="object"&&r?tn(r,oi):r}const Vn={};function Mi(r){Vn[r]||(typeof console<"u"&&console.warn(r),Vn[r]=!0)}function er(r,e,i){return(i.y-r.y)*(e.x-r.x)>(e.y-r.y)*(i.x-r.x)}function Ur(r){return typeof WorkerGlobalScope<"u"&&r!==void 0&&r instanceof WorkerGlobalScope}let zt=null;function jn(r){return typeof ImageBitmap<"u"&&r instanceof ImageBitmap}const ds="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function Nn(r,e,i,s,o){return c(this,void 0,void 0,function*(){if(typeof VideoFrame>"u")throw new Error("VideoFrame not supported");const u=new VideoFrame(r,{timestamp:0});try{const h=u==null?void 0:u.format;if(!h||!h.startsWith("BGR")&&!h.startsWith("RGB"))throw new Error(`Unrecognized format ${h}`);const f=h.startsWith("BGR"),g=new Uint8ClampedArray(s*o*4);if(yield u.copyTo(g,function(y,v,b,S,P){const C=4*Math.max(-v,0),D=(Math.max(0,b)-b)*S*4+C,R=4*S,V=Math.max(0,v),q=Math.max(0,b);return{rect:{x:V,y:q,width:Math.min(y.width,v+S)-V,height:Math.min(y.height,b+P)-q},layout:[{offset:D,stride:R}]}}(r,e,i,s,o)),f)for(let y=0;y<g.length;y+=4){const v=g[y];g[y]=g[y+2],g[y+2]=v}return g}finally{u.close()}})}let Mn,Gr;function In(r,e,i,s){return r.addEventListener(e,i,s),{unsubscribe:()=>{r.removeEventListener(e,i,s)}}}function Un(r){return r*Math.PI/180}function rn(r){return r/Math.PI*180}const nn={touchstart:!0,touchmove:!0,touchmoveWindow:!0,touchend:!0,touchcancel:!0},En={dblclick:!0,click:!0,mouseover:!0,mouseout:!0,mousedown:!0,mousemove:!0,mousemoveWindow:!0,mouseup:!0,mouseupWindow:!0,contextmenu:!0,wheel:!0},ps="AbortError";class Zs extends Error{constructor(e=ps){super(e instanceof Error?e.message:e),this.name=ps,e instanceof Error&&e.stack&&(this.stack=e.stack)}}function fs(r){return r.name===ps}const oe={MAX_PARALLEL_IMAGE_REQUESTS:16,MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:8,MAX_TILE_CACHE_ZOOM_LEVELS:5,REGISTERED_PROTOCOLS:{},WORKER_URL:""};function A(r){return oe.REGISTERED_PROTOCOLS[r.substring(0,r.indexOf("://"))]}const k="global-dispatcher";class B extends Error{constructor(e,i,s,o){super(`AJAXError: ${i} (${e}): ${s}`),this.status=e,this.statusText=i,this.url=s,this.body=o}}const W=()=>Ur(self)?self.worker&&self.worker.referrer:(window.location.protocol==="blob:"?window.parent:window).location.href,ee=function(r,e){if(/:\/\//.test(r.url)&&!/^https?:|^file:/.test(r.url)){const s=A(r.url);if(s)return s(r,e);if(Ur(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:r,targetMapId:k},e)}if(!(/^file:/.test(i=r.url)||/^file:/.test(W())&&!/^\w+:/.test(i))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return function(s,o){return c(this,void 0,void 0,function*(){const u=new Request(s.url,{method:s.method||"GET",body:s.body,credentials:s.credentials,headers:s.headers,cache:s.cache,referrer:W(),signal:o.signal});let h,f;s.type!=="json"||u.headers.has("Accept")||u.headers.set("Accept","application/json");try{h=yield fetch(u)}catch(y){throw fs(y)?y:new B(0,y.message,s.url,new Blob)}if(!h.ok){const y=yield h.blob();throw new B(h.status,h.statusText,s.url,y)}f=s.type==="arrayBuffer"||s.type==="image"?h.arrayBuffer():s.type==="json"?h.json():h.text();const g=yield f;return o.signal.throwIfAborted(),{data:g,cacheControl:h.headers.get("Cache-Control"),expires:h.headers.get("Expires")}})}(r,e);if(Ur(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:r,mustQueue:!0,targetMapId:k},e)}var i;return function(s,o){return new Promise((u,h)=>{var f;const g=new XMLHttpRequest;g.open(s.method||"GET",s.url,!0),s.type!=="arrayBuffer"&&s.type!=="image"||(g.responseType="arraybuffer");for(const y in s.headers)g.setRequestHeader(y,s.headers[y]);s.type==="json"&&(g.responseType="text",!((f=s.headers)===null||f===void 0)&&f.Accept||g.setRequestHeader("Accept","application/json")),g.withCredentials=s.credentials==="include",g.onerror=()=>{h(new Error(g.statusText))},g.onload=()=>{if(!o.signal.aborted)if((g.status>=200&&g.status<300||g.status===0)&&g.response!==null){let y=g.response;if(s.type==="json")try{y=JSON.parse(g.response)}catch(v){return void h(v)}u({data:y,cacheControl:g.getResponseHeader("Cache-Control"),expires:g.getResponseHeader("Expires")})}else{const y=new Blob([g.response],{type:g.getResponseHeader("Content-Type")});h(new B(g.status,g.statusText,s.url,y))}},o.signal.addEventListener("abort",()=>{g.abort(),h(new Zs(o.signal.reason))}),g.send(s.body)})}(r,e)};function ce(r){if(!r||r.indexOf("://")<=0||r.indexOf("data:image/")===0||r.indexOf("blob:")===0)return!0;const e=new URL(r),i=window.location;return e.protocol===i.protocol&&e.host===i.host}function me(r,e,i){i[r]&&i[r].indexOf(e)!==-1||(i[r]=i[r]||[],i[r].push(e))}function se(r,e,i){if(i&&i[r]){const s=i[r].indexOf(e);s!==-1&&i[r].splice(s,1)}}class le{constructor(e,i={}){_i(this,i),this.type=e}}class Me extends le{constructor(e,i={}){super("error",_i({error:e},i))}}class xe{on(e,i){return this._listeners=this._listeners||{},me(e,i,this._listeners),{unsubscribe:()=>{this.off(e,i)}}}off(e,i){return se(e,i,this._listeners),se(e,i,this._oneTimeListeners),this}once(e,i){return i?(this._oneTimeListeners=this._oneTimeListeners||{},me(e,i,this._oneTimeListeners),this):new Promise(s=>this.once(e,s))}fire(e,i){typeof e=="string"&&(e=new le(e,i||{}));const s=e.type;if(this.listens(s)){e.target=this;const o=this._listeners&&this._listeners[s]?this._listeners[s].slice():[];for(const f of o)f.call(this,e);const u=this._oneTimeListeners&&this._oneTimeListeners[s]?this._oneTimeListeners[s].slice():[];for(const f of u)se(s,f,this._oneTimeListeners),f.call(this,e);const h=this._eventedParent;h&&(_i(e,typeof this._eventedParentData=="function"?this._eventedParentData():this._eventedParentData),h.fire(e))}else e instanceof Me&&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,i){return this._eventedParent=e,this._eventedParentData=i,this}}var Q={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number",length:2},centerAltitude:{type:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},roll:{type:"number",default:0,units:"degrees"},state:{type:"state",default:{}},light:{type:"light"},sky:{type:"sky"},projection:{type:"projection"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},"font-faces":{type:"fontFaces"},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},encoding:{type:"enum",values:{mvt:{},mlt:{}},default:"mvt"},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{},custom:{}},default:"mapbox"},redFactor:{type:"number",default:1},blueFactor:{type:"number",default:1},greenFactor:{type:"number",default:1},baseShift:{type:"number",default:0},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{required:!0,type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"filter"},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:{},"color-relief":{},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_color-relief","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-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",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-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",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-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",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image",{"!":"icon-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"padding",default:[2],units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},"viewport-glyph":{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-variable-anchor-offset":{type:"variableAnchorOffsetCollection",requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field",{"!":"text-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},"layout_color-relief":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible",expression:{interpolated:!1,parameters:["global-state"]},"property-type":"data-constant"}},filter:{type:"boolean",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"expression_name",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}},sky:{"sky-color":{type:"color","property-type":"data-constant",default:"#88C6FC",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-ground-blend":{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-fog-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"sky-horizon-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"atmosphere-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},projection:{type:{type:"projectionDefinition",default:"mercator","property-type":"data-constant",transition:!1,expression:{interpolated:!0,parameters:["zoom"]}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_color-relief","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","feature"]},"property-type":"cross-faded-data-driven"},"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:"numberArray",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-altitude":{type:"numberArray",default:45,minimum:0,maximum:90,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:"colorArray",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"colorArray",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"},"hillshade-method":{type:"enum",values:{standard:{},basic:{},combined:{},igor:{},multidirectional:{}},default:"standard",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},"paint_color-relief":{"color-relief-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"color-relief-color":{type:"color",transition:!1,expression:{interpolated:!0,parameters:["elevation"]},"property-type":"color-ramp"}},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"}},interpolation:{type:"array",value:"interpolation_name",minimum:1},interpolation_name:{type:"enum",values:{linear:{syntax:{overloads:[{parameters:[],"output-type":"interpolation"}],parameters:[]}},exponential:{syntax:{overloads:[{parameters:["base"],"output-type":"interpolation"}],parameters:[{name:"base",type:"number literal"}]}},"cubic-bezier":{syntax:{overloads:[{parameters:["x1","y1","x2","y2"],"output-type":"interpolation"}],parameters:[{name:"x1",type:"number literal"},{name:"y1",type:"number literal"},{name:"x2",type:"number literal"},{name:"y2",type:"number literal"}]}}}}};const Ge=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function et(r,e){const i={};for(const s in r)s!=="ref"&&(i[s]=r[s]);return Ge.forEach(s=>{s in e&&(i[s]=e[s])}),i}function Xe(r,e){if(Array.isArray(r)){if(!Array.isArray(e)||r.length!==e.length)return!1;for(let i=0;i<r.length;i++)if(!Xe(r[i],e[i]))return!1;return!0}if(typeof r=="object"&&r!==null&&e!==null){if(typeof e!="object"||Object.keys(r).length!==Object.keys(e).length)return!1;for(const i in r)if(!Xe(r[i],e[i]))return!1;return!0}return r===e}function Ke(r,e){r.push(e)}function Je(r,e,i){Ke(i,{command:"addSource",args:[r,e[r]]})}function rt(r,e,i){Ke(e,{command:"removeSource",args:[r]}),i[r]=!0}function Tt(r,e,i,s){rt(r,i,s),Je(r,e,i)}function It(r,e,i){let s;for(s in r[i])if(Object.prototype.hasOwnProperty.call(r[i],s)&&s!=="data"&&!Xe(r[i][s],e[i][s]))return!1;for(s in e[i])if(Object.prototype.hasOwnProperty.call(e[i],s)&&s!=="data"&&!Xe(r[i][s],e[i][s]))return!1;return!0}function Xt(r,e,i,s,o,u){r=r||{},e=e||{};for(const h in r)Object.prototype.hasOwnProperty.call(r,h)&&(Xe(r[h],e[h])||i.push({command:u,args:[s,h,e[h],o]}));for(const h in e)Object.prototype.hasOwnProperty.call(e,h)&&!Object.prototype.hasOwnProperty.call(r,h)&&(Xe(r[h],e[h])||i.push({command:u,args:[s,h,e[h],o]}))}function yi(r){return r.id}function Gt(r,e){return r[e.id]=e,r}class Ce{constructor(e,i,s,o){this.message=(e?`${e}: `:"")+s,o&&(this.identifier=o),i!=null&&i.__line__&&(this.line=i.__line__)}}function _t(r,...e){for(const i of e)for(const s in i)r[s]=i[s];return r}class kt extends Error{constructor(e,i){super(i),this.message=i,this.key=e}}class Gn{constructor(e,i=[]){this.parent=e,this.bindings={};for(const[s,o]of i)this.bindings[s]=o}concat(e){return new Gn(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 sn={kind:"null"},Ae={kind:"number"},tt={kind:"string"},it={kind:"boolean"},_r={kind:"color"},ms={kind:"projectionDefinition"},qn={kind:"object"},ot={kind:"value"},gs={kind:"collator"},_s={kind:"formatted"},Ua={kind:"padding"},$s={kind:"colorArray"},Ws={kind:"numberArray"},ys={kind:"resolvedImage"},Hs={kind:"variableAnchorOffsetCollection"};function Zi(r,e){return{kind:"array",itemType:r,N:e}}function Ct(r){if(r.kind==="array"){const e=Ct(r.itemType);return typeof r.N=="number"?`array<${e}, ${r.N}>`:r.itemType.kind==="value"?"array":`array<${e}>`}return r.kind}const Zn=[sn,Ae,tt,it,_r,ms,_s,qn,Zi(ot),Ua,Ws,$s,ys,Hs];function Cn(r,e){if(e.kind==="error")return null;if(r.kind==="array"){if(e.kind==="array"&&(e.N===0&&e.itemType.kind==="value"||!Cn(r.itemType,e.itemType))&&(typeof r.N!="number"||r.N===e.N))return null}else{if(r.kind===e.kind)return null;if(r.kind==="value"){for(const i of Zn)if(!Cn(i,e))return null}}return`Expected ${Ct(r)} but found ${Ct(e)} instead.`}function Ga(r,e){return e.some(i=>i.kind===r.kind)}function an(r,e){return e.some(i=>i==="null"?r===null:i==="array"?Array.isArray(r):i==="object"?r&&!Array.isArray(r)&&typeof r=="object":i===typeof r)}function An(r,e){return r.kind==="array"&&e.kind==="array"?r.itemType.kind===e.itemType.kind&&typeof r.N=="number":r.kind===e.kind}const Xs=.96422,uc=.82521,$n=4/29,Dn=6/29,li=3*Dn*Dn,$u=Dn*Dn*Dn,hc=Math.PI/180,Ys=180/Math.PI;function Ko(r){return(r%=360)<0&&(r+=360),r}function dc([r,e,i,s]){let o,u;const h=qa((.2225045*(r=Jo(r))+.7168786*(e=Jo(e))+.0606169*(i=Jo(i)))/1);r===e&&e===i?o=u=h:(o=qa((.4360747*r+.3850649*e+.1430804*i)/Xs),u=qa((.0139322*r+.0971045*e+.7141733*i)/uc));const f=116*h-16;return[f<0?0:f,500*(o-h),200*(h-u),s]}function Jo(r){return r<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4)}function qa(r){return r>$u?Math.pow(r,1/3):r/li+$n}function pc([r,e,i,s]){let o=(r+16)/116,u=isNaN(e)?o:o+e/500,h=isNaN(i)?o:o-i/200;return o=1*Qo(o),u=Xs*Qo(u),h=uc*Qo(h),[Za(3.1338561*u-1.6168667*o-.4906146*h),Za(-.9787684*u+1.9161415*o+.033454*h),Za(.0719453*u-.2289914*o+1.4052427*h),s]}function Za(r){return(r=r<=.00304?12.92*r:1.055*Math.pow(r,1/2.4)-.055)<0?0:r>1?1:r}function Qo(r){return r>Dn?r*r*r:li*(r-$n)}const Wu=Object.hasOwn||function(r,e){return Object.prototype.hasOwnProperty.call(r,e)};function Ks(r,e){return Wu(r,e)?r[e]:void 0}function $a(r){return parseInt(r.padEnd(2,r),16)/255}function fc(r,e){return xs(e?r/100:r,0,1)}function xs(r,e,i){return Math.min(Math.max(e,r),i)}function mc(r){return!r.some(Number.isNaN)}const gc={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};function yr(r,e,i){return r+i*(e-r)}function vs(r,e,i){return r.map((s,o)=>yr(s,e[o],i))}class dt{constructor(e,i,s,o=1,u=!0){this.r=e,this.g=i,this.b=s,this.a=o,u||(this.r*=o,this.g*=o,this.b*=o,o||this.overwriteGetter("rgb",[e,i,s,o]))}static parse(e){if(e instanceof dt)return e;if(typeof e!="string")return;const i=function(s){if((s=s.toLowerCase().trim())==="transparent")return[0,0,0,0];const o=Ks(gc,s);if(o){const[h,f,g]=o;return[h/255,f/255,g/255,1]}if(s.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(s)){const h=s.length<6?1:2;let f=1;return[$a(s.slice(f,f+=h)),$a(s.slice(f,f+=h)),$a(s.slice(f,f+=h)),$a(s.slice(f,f+h)||"ff")]}if(s.startsWith("rgb")){const h=s.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(h){const[f,g,y,v,b,S,P,C,D,R,V,q]=h,O=[v||" ",P||" ",R].join("");if(O===" "||O===" /"||O===",,"||O===",,,"){const j=[y,S,D].join(""),Y=j==="%%%"?100:j===""?255:0;if(Y){const ie=[xs(+g/Y,0,1),xs(+b/Y,0,1),xs(+C/Y,0,1),V?fc(+V,q):1];if(mc(ie))return ie}}return}}const u=s.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(u){const[h,f,g,y,v,b,S,P,C]=u,D=[g||" ",v||" ",S].join("");if(D===" "||D===" /"||D===",,"||D===",,,"){const R=[+f,xs(+y,0,100),xs(+b,0,100),P?fc(+P,C):1];if(mc(R))return function([V,q,O,j]){function Y(ie){const ue=(ie+V/30)%12,be=q*Math.min(O,1-O);return O-be*Math.max(-1,Math.min(ue-3,9-ue,1))}return V=Ko(V),q/=100,O/=100,[Y(0),Y(8),Y(4),j]}(R)}}}(e);return i?new dt(...i,!1):void 0}get rgb(){const{r:e,g:i,b:s,a:o}=this,u=o||1/0;return this.overwriteGetter("rgb",[e/u,i/u,s/u,o])}get hcl(){return this.overwriteGetter("hcl",function(e){const[i,s,o,u]=dc(e),h=Math.sqrt(s*s+o*o);return[Math.round(1e4*h)?Ko(Math.atan2(o,s)*Ys):NaN,h,i,u]}(this.rgb))}get lab(){return this.overwriteGetter("lab",dc(this.rgb))}overwriteGetter(e,i){return Object.defineProperty(this,e,{value:i}),i}toString(){const[e,i,s,o]=this.rgb;return`rgba(${[e,i,s].map(u=>Math.round(255*u)).join(",")},${o})`}static interpolate(e,i,s,o="rgb"){switch(o){case"rgb":{const[u,h,f,g]=vs(e.rgb,i.rgb,s);return new dt(u,h,f,g,!1)}case"hcl":{const[u,h,f,g]=e.hcl,[y,v,b,S]=i.hcl;let P,C;if(isNaN(u)||isNaN(y))isNaN(u)?isNaN(y)?P=NaN:(P=y,f!==1&&f!==0||(C=v)):(P=u,b!==1&&b!==0||(C=h));else{let O=y-u;y>u&&O>180?O-=360:y<u&&u-y>180&&(O+=360),P=u+s*O}const[D,R,V,q]=function([O,j,Y,ie]){return O=isNaN(O)?0:O*hc,pc([Y,Math.cos(O)*j,Math.sin(O)*j,ie])}([P,C??yr(h,v,s),yr(f,b,s),yr(g,S,s)]);return new dt(D,R,V,q,!1)}case"lab":{const[u,h,f,g]=pc(vs(e.lab,i.lab,s));return new dt(u,h,f,g,!1)}}}}dt.black=new dt(0,0,0,1),dt.white=new dt(1,1,1,1),dt.transparent=new dt(0,0,0,0),dt.red=new dt(1,0,0,1);class Wn{constructor(e,i,s){this.sensitivity=e?i?"variant":"case":i?"accent":"base",this.locale=s,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(e,i){return this.collator.compare(e,i)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}const Hu=["bottom","center","top"];class el{constructor(e,i,s,o,u,h){this.text=e,this.image=i,this.scale=s,this.fontStack=o,this.textColor=u,this.verticalAlign=h}}class tr{constructor(e){this.sections=e}static fromString(e){return new tr([new el(e,null,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 tr?e:tr.fromString(e)}toString(){return this.sections.length===0?"":this.sections.map(e=>e.text).join("")}}class Ii{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof Ii)return e;if(typeof e=="number")return new Ii([e,e,e,e]);if(Array.isArray(e)&&!(e.length<1||e.length>4)){for(const i of e)if(typeof i!="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 Ii(e)}}toString(){return JSON.stringify(this.values)}static interpolate(e,i,s){return new Ii(vs(e.values,i.values,s))}}class Ei{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof Ei)return e;if(typeof e=="number")return new Ei([e]);if(Array.isArray(e)){for(const i of e)if(typeof i!="number")return;return new Ei(e)}}toString(){return JSON.stringify(this.values)}static interpolate(e,i,s){return new Ei(vs(e.values,i.values,s))}}class At{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof At)return e;if(typeof e=="string"){const s=dt.parse(e);return s?new At([s]):void 0}if(!Array.isArray(e))return;const i=[];for(const s of e){if(typeof s!="string")return;const o=dt.parse(s);if(!o)return;i.push(o)}return new At(i)}toString(){return JSON.stringify(this.values)}static interpolate(e,i,s,o="rgb"){const u=[];if(e.values.length!=i.values.length)throw new Error(`colorArray: Arrays have mismatched length (${e.values.length} vs. ${i.values.length}), cannot interpolate.`);for(let h=0;h<e.values.length;h++)u.push(dt.interpolate(e.values[h],i.values[h],s,o));return new At(u)}}class We extends Error{constructor(e){super(e),this.name="RuntimeError"}toJSON(){return this.message}}const bs=new Set(["center","left","right","top","bottom","top-left","top-right","bottom-left","bottom-right"]);class ei{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof ei)return e;if(Array.isArray(e)&&!(e.length<1)&&e.length%2==0){for(let i=0;i<e.length;i+=2){const s=e[i],o=e[i+1];if(typeof s!="string"||!bs.has(s)||!Array.isArray(o)||o.length!==2||typeof o[0]!="number"||typeof o[1]!="number")return}return new ei(e)}}toString(){return JSON.stringify(this.values)}static interpolate(e,i,s){const o=e.values,u=i.values;if(o.length!==u.length)throw new We(`Cannot interpolate values of different length. from: ${e.toString()}, to: ${i.toString()}`);const h=[];for(let f=0;f<o.length;f+=2){if(o[f]!==u[f])throw new We(`Cannot interpolate values containing mismatched anchors. from[${f}]: ${o[f]}, to[${f}]: ${u[f]}`);h.push(o[f]);const[g,y]=o[f+1],[v,b]=u[f+1];h.push([yr(g,v,s),yr(y,b,s)])}return new ei(h)}}class ir{constructor(e){this.name=e.name,this.available=e.available}toString(){return this.name}static fromString(e){return e?new ir({name:e,available:!1}):null}}class $i{constructor(e,i,s){this.from=e,this.to=i,this.transition=s}static interpolate(e,i,s){return new $i(e,i,s)}static parse(e){return e instanceof $i?e:Array.isArray(e)&&e.length===3&&typeof e[0]=="string"&&typeof e[1]=="string"&&typeof e[2]=="number"?new $i(e[0],e[1],e[2]):typeof e=="object"&&typeof e.from=="string"&&typeof e.to=="string"&&typeof e.transition=="number"?new $i(e.from,e.to,e.transition):typeof e=="string"?new $i(e,e,1):void 0}}function Wa(r,e,i,s){return typeof r=="number"&&r>=0&&r<=255&&typeof e=="number"&&e>=0&&e<=255&&typeof i=="number"&&i>=0&&i<=255?s===void 0||typeof s=="number"&&s>=0&&s<=1?null:`Invalid rgba value [${[r,e,i,s].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof s=="number"?[r,e,i,s]:[r,e,i]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function on(r){if(r===null||typeof r=="string"||typeof r=="boolean"||typeof r=="number"||r instanceof $i||r instanceof dt||r instanceof Wn||r instanceof tr||r instanceof Ii||r instanceof Ei||r instanceof At||r instanceof ei||r instanceof ir)return!0;if(Array.isArray(r)){for(const e of r)if(!on(e))return!1;return!0}if(typeof r=="object"){for(const e in r)if(!on(r[e]))return!1;return!0}return!1}function jt(r){if(r===null)return sn;if(typeof r=="string")return tt;if(typeof r=="boolean")return it;if(typeof r=="number")return Ae;if(r instanceof dt)return _r;if(r instanceof $i)return ms;if(r instanceof Wn)return gs;if(r instanceof tr)return _s;if(r instanceof Ii)return Ua;if(r instanceof Ei)return Ws;if(r instanceof At)return $s;if(r instanceof ei)return Hs;if(r instanceof ir)return ys;if(Array.isArray(r)){const e=r.length;let i;for(const s of r){const o=jt(s);if(i){if(i===o)continue;i=ot;break}i=o}return Zi(i||ot,e)}return qn}function ws(r){const e=typeof r;return r===null?"":e==="string"||e==="number"||e==="boolean"?String(r):r instanceof dt||r instanceof $i||r instanceof tr||r instanceof Ii||r instanceof Ei||r instanceof At||r instanceof ei||r instanceof ir?r.toString():JSON.stringify(r)}class ln{constructor(e,i){this.type=e,this.value=i}static parse(e,i){if(e.length!==2)return i.error(`'literal' expression requires exactly one argument, but found ${e.length-1} instead.`);if(!on(e[1]))return i.error("invalid value");const s=e[1];let o=jt(s);const u=i.expectedType;return o.kind!=="array"||o.N!==0||!u||u.kind!=="array"||typeof u.N=="number"&&u.N!==0||(o=u),new ln(o,s)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}const Hn={string:tt,number:Ae,boolean:it,object:qn};class Cr{constructor(e,i){this.type=e,this.args=i}static parse(e,i){if(e.length<2)return i.error("Expected at least one argument.");let s,o=1;const u=e[0];if(u==="array"){let f,g;if(e.length>2){const y=e[1];if(typeof y!="string"||!(y in Hn)||y==="object")return i.error('The item type argument of "array" must be one of string, number, boolean',1);f=Hn[y],o++}else f=ot;if(e.length>3){if(e[2]!==null&&(typeof e[2]!="number"||e[2]<0||e[2]!==Math.floor(e[2])))return i.error('The length argument to "array" must be a positive integer literal',2);g=e[2],o++}s=Zi(f,g)}else{if(!Hn[u])throw new Error(`Types doesn't contain name = ${u}`);s=Hn[u]}const h=[];for(;o<e.length;o++){const f=i.parse(e[o],o,ot);if(!f)return null;h.push(f)}return new Cr(s,h)}evaluate(e){for(let i=0;i<this.args.length;i++){const s=this.args[i].evaluate(e);if(!Cn(this.type,jt(s)))return s;if(i===this.args.length-1)throw new We(`Expected value to be of type ${Ct(this.type)}, but found ${Ct(jt(s))} instead.`)}throw new Error}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}}const Js={"to-boolean":it,"to-color":_r,"to-number":Ae,"to-string":tt};class rr{constructor(e,i){this.type=e,this.args=i}static parse(e,i){if(e.length<2)return i.error("Expected at least one argument.");const s=e[0];if(!Js[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 i.error("Expected one argument.");const o=Js[s],u=[];for(let h=1;h<e.length;h++){const f=i.parse(e[h],h,ot);if(!f)return null;u.push(f)}return new rr(o,u)}evaluate(e){switch(this.type.kind){case"boolean":return!!this.args[0].evaluate(e);case"color":{let i,s;for(const o of this.args){if(i=o.evaluate(e),s=null,i instanceof dt)return i;if(typeof i=="string"){const u=e.parseColor(i);if(u)return u}else if(Array.isArray(i)&&(s=i.length<3||i.length>4?`Invalid rgba value ${JSON.stringify(i)}: expected an array containing either three or four numeric values.`:Wa(i[0],i[1],i[2],i[3]),!s))return new dt(i[0]/255,i[1]/255,i[2]/255,i[3])}throw new We(s||`Could not parse color from value '${typeof i=="string"?i:JSON.stringify(i)}'`)}case"padding":{let i;for(const s of this.args){i=s.evaluate(e);const o=Ii.parse(i);if(o)return o}throw new We(`Could not parse padding from value '${typeof i=="string"?i:JSON.stringify(i)}'`)}case"numberArray":{let i;for(const s of this.args){i=s.evaluate(e);const o=Ei.parse(i);if(o)return o}throw new We(`Could not parse numberArray from value '${typeof i=="string"?i:JSON.stringify(i)}'`)}case"colorArray":{let i;for(const s of this.args){i=s.evaluate(e);const o=At.parse(i);if(o)return o}throw new We(`Could not parse colorArray from value '${typeof i=="string"?i:JSON.stringify(i)}'`)}case"variableAnchorOffsetCollection":{let i;for(const s of this.args){i=s.evaluate(e);const o=ei.parse(i);if(o)return o}throw new We(`Could not parse variableAnchorOffsetCollection from value '${typeof i=="string"?i:JSON.stringify(i)}'`)}case"number":{let i=null;for(const s of this.args){if(i=s.evaluate(e),i===null)return 0;const o=Number(i);if(!isNaN(o))return o}throw new We(`Could not convert ${JSON.stringify(i)} to number.`)}case"formatted":return tr.fromString(ws(this.args[0].evaluate(e)));case"resolvedImage":return ir.fromString(ws(this.args[0].evaluate(e)));case"projectionDefinition":return this.args[0].evaluate(e);default:return ws(this.args[0].evaluate(e))}}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}}const _c=["Unknown","Point","LineString","Polygon"];class tl{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache=new Map,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"?_c[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 i=this._parseColorCache.get(e);return i||(i=dt.parse(e),this._parseColorCache.set(e,i)),i}}class Qs{constructor(e,i,s=[],o,u=new Gn,h=[]){this.registry=e,this.path=s,this.key=s.map(f=>`[${f}]`).join(""),this.scope=u,this.errors=h,this.expectedType=o,this._isConstant=i}parse(e,i,s,o,u={}){return i?this.concat(i,s,o)._parse(e,u):this._parse(e,u)}_parse(e,i){function s(o,u,h){return h==="assert"?new Cr(u,[o]):h==="coerce"?new rr(u,[o]):o}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 o=e[0];if(typeof o!="string")return this.error(`Expression name must be a string, but found ${typeof o} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;const u=this.registry[o];if(u){let h=u.parse(e,this);if(!h)return null;if(this.expectedType){const f=this.expectedType,g=h.type;if(f.kind!=="string"&&f.kind!=="number"&&f.kind!=="boolean"&&f.kind!=="object"&&f.kind!=="array"||g.kind!=="value"){if(f.kind==="projectionDefinition"&&["string","array"].includes(g.kind)||["color","formatted","resolvedImage"].includes(f.kind)&&["value","string"].includes(g.kind)||["padding","numberArray"].includes(f.kind)&&["value","number","array"].includes(g.kind)||f.kind==="colorArray"&&["value","string","array"].includes(g.kind)||f.kind==="variableAnchorOffsetCollection"&&["value","array"].includes(g.kind))h=s(h,f,i.typeAnnotation||"coerce");else if(this.checkSubtype(f,g))return null}else h=s(h,f,i.typeAnnotation||"assert")}if(!(h instanceof ln)&&h.type.kind!=="resolvedImage"&&this._isConstant(h)){const f=new tl;try{h=new ln(h.type,h.evaluate(f))}catch(g){return this.error(g.message),null}}return h}return this.error(`Unknown expression "${o}". 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,i,s){const o=typeof e=="number"?this.path.concat(e):this.path,u=s?this.scope.concat(s):this.scope;return new Qs(this.registry,this._isConstant,o,i||null,u,this.errors)}error(e,...i){const s=`${this.key}${i.map(o=>`[${o}]`).join("")}`;this.errors.push(new kt(s,e))}checkSubtype(e,i){const s=Cn(e,i);return s&&this.error(s),s}}class Xn{constructor(e,i){this.type=i.type,this.bindings=[].concat(e),this.result=i}evaluate(e){return this.result.evaluate(e)}eachChild(e){for(const i of this.bindings)e(i[1]);e(this.result)}static parse(e,i){if(e.length<4)return i.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 h=e[u];if(typeof h!="string")return i.error(`Expected string, but found ${typeof h} instead.`,u);if(/[^a-zA-Z0-9_]/.test(h))return i.error("Variable names must contain only alphanumeric characters or '_'.",u);const f=i.parse(e[u+1],u+1);if(!f)return null;s.push([h,f])}const o=i.parse(e[e.length-1],e.length-1,i.expectedType,s);return o?new Xn(s,o):null}outputDefined(){return this.result.outputDefined()}}class St{constructor(e,i){this.type=i.type,this.name=e,this.boundExpression=i}static parse(e,i){if(e.length!==2||typeof e[1]!="string")return i.error("'var' expression requires exactly one string literal argument.");const s=e[1];return i.scope.has(s)?new St(s,i.scope.get(s)):i.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 ea{constructor(e,i,s){this.type=e,this.index=i,this.input=s}static parse(e,i){if(e.length!==3)return i.error(`Expected 2 arguments, but found ${e.length-1} instead.`);const s=i.parse(e[1],1,Ae),o=i.parse(e[2],2,Zi(i.expectedType||ot));return s&&o?new ea(o.type.itemType,s,o):null}evaluate(e){const i=this.index.evaluate(e),s=this.input.evaluate(e);if(i<0)throw new We(`Array index out of bounds: ${i} < 0.`);if(i>=s.length)throw new We(`Array index out of bounds: ${i} > ${s.length-1}.`);if(i!==Math.floor(i))throw new We(`Array index must be an integer, but found ${i} instead.`);return s[i]}eachChild(e){e(this.index),e(this.input)}outputDefined(){return!1}}class ft{constructor(e,i){this.type=it,this.needle=e,this.haystack=i}static parse(e,i){if(e.length!==3)return i.error(`Expected 2 arguments, but found ${e.length-1} instead.`);const s=i.parse(e[1],1,ot),o=i.parse(e[2],2,ot);return s&&o?Ga(s.type,[it,tt,Ae,sn,ot])?new ft(s,o):i.error(`Expected first argument to be of type boolean, string, number or null, but found ${Ct(s.type)} instead`):null}evaluate(e){const i=this.needle.evaluate(e),s=this.haystack.evaluate(e);if(!s)return!1;if(!an(i,["boolean","string","number","null"]))throw new We(`Expected first argument to be of type boolean, string, number or null, but found ${Ct(jt(i))} instead.`);if(!an(s,["string","array"]))throw new We(`Expected second argument to be of type array or string, but found ${Ct(jt(s))} instead.`);return s.indexOf(i)>=0}eachChild(e){e(this.needle),e(this.haystack)}outputDefined(){return!0}}class at{constructor(e,i,s){this.type=Ae,this.needle=e,this.haystack=i,this.fromIndex=s}static parse(e,i){if(e.length<=2||e.length>=5)return i.error(`Expected 2 or 3 arguments, but found ${e.length-1} instead.`);const s=i.parse(e[1],1,ot),o=i.parse(e[2],2,ot);if(!s||!o)return null;if(!Ga(s.type,[it,tt,Ae,sn,ot]))return i.error(`Expected first argument to be of type boolean, string, number or null, but found ${Ct(s.type)} instead`);if(e.length===4){const u=i.parse(e[3],3,Ae);return u?new at(s,o,u):null}return new at(s,o)}evaluate(e){const i=this.needle.evaluate(e),s=this.haystack.evaluate(e);if(!an(i,["boolean","string","number","null"]))throw new We(`Expected first argument to be of type boolean, string, number or null, but found ${Ct(jt(i))} instead.`);let o;if(this.fromIndex&&(o=this.fromIndex.evaluate(e)),an(s,["string"])){const u=s.indexOf(i,o);return u===-1?-1:[...s.slice(0,u)].length}if(an(s,["array"]))return s.indexOf(i,o);throw new We(`Expected second argument to be of type array or string, but found ${Ct(jt(s))} instead.`)}eachChild(e){e(this.needle),e(this.haystack),this.fromIndex&&e(this.fromIndex)}outputDefined(){return!1}}class ta{constructor(e,i,s,o,u,h){this.inputType=e,this.type=i,this.input=s,this.cases=o,this.outputs=u,this.otherwise=h}static parse(e,i){if(e.length<5)return i.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if(e.length%2!=1)return i.error("Expected an even number of arguments.");let s,o;i.expectedType&&i.expectedType.kind!=="value"&&(o=i.expectedType);const u={},h=[];for(let y=2;y<e.length-1;y+=2){let v=e[y];const b=e[y+1];Array.isArray(v)||(v=[v]);const S=i.concat(y);if(v.length===0)return S.error("Expected at least one branch label.");for(const C of v){if(typeof C!="number"&&typeof C!="string")return S.error("Branch labels must be numbers or strings.");if(typeof C=="number"&&Math.abs(C)>Number.MAX_SAFE_INTEGER)return S.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof C=="number"&&Math.floor(C)!==C)return S.error("Numeric branch labels must be integer values.");if(s){if(S.checkSubtype(s,jt(C)))return null}else s=jt(C);if(u[String(C)]!==void 0)return S.error("Branch labels must be unique.");u[String(C)]=h.length}const P=i.parse(b,y,o);if(!P)return null;o=o||P.type,h.push(P)}const f=i.parse(e[1],1,ot);if(!f)return null;const g=i.parse(e[e.length-1],e.length-1,o);return g?f.type.kind!=="value"&&i.concat(1).checkSubtype(s,f.type)?null:new ta(s,o,f,u,h,g):null}evaluate(e){const i=this.input.evaluate(e);return(jt(i)===this.inputType&&this.outputs[this.cases[i]]||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 mt{constructor(e,i,s){this.type=e,this.branches=i,this.otherwise=s}static parse(e,i){if(e.length<4)return i.error(`Expected at least 3 arguments, but found only ${e.length-1}.`);if(e.length%2!=0)return i.error("Expected an odd number of arguments.");let s;i.expectedType&&i.expectedType.kind!=="value"&&(s=i.expectedType);const o=[];for(let h=1;h<e.length-1;h+=2){const f=i.parse(e[h],h,it);if(!f)return null;const g=i.parse(e[h+1],h+1,s);if(!g)return null;o.push([f,g]),s=s||g.type}const u=i.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 mt(s,o,u)}evaluate(e){for(const[i,s]of this.branches)if(i.evaluate(e))return s.evaluate(e);return this.otherwise.evaluate(e)}eachChild(e){for(const[i,s]of this.branches)e(i),e(s);e(this.otherwise)}outputDefined(){return this.branches.every(([e,i])=>i.outputDefined())&&this.otherwise.outputDefined()}}class Ts{constructor(e,i,s,o){this.type=e,this.input=i,this.beginIndex=s,this.endIndex=o}static parse(e,i){if(e.length<=2||e.length>=5)return i.error(`Expected 2 or 3 arguments, but found ${e.length-1} instead.`);const s=i.parse(e[1],1,ot),o=i.parse(e[2],2,Ae);if(!s||!o)return null;if(!Ga(s.type,[Zi(ot),tt,ot]))return i.error(`Expected first argument to be of type array or string, but found ${Ct(s.type)} instead`);if(e.length===4){const u=i.parse(e[3],3,Ae);return u?new Ts(s.type,s,o,u):null}return new Ts(s.type,s,o)}evaluate(e){const i=this.input.evaluate(e),s=this.beginIndex.evaluate(e);let o;if(this.endIndex&&(o=this.endIndex.evaluate(e)),an(i,["string"]))return[...i].slice(s,o).join("");if(an(i,["array"]))return i.slice(s,o);throw new We(`Expected first argument to be of type array or string, but found ${Ct(jt(i))} instead.`)}eachChild(e){e(this.input),e(this.beginIndex),this.endIndex&&e(this.endIndex)}outputDefined(){return!1}}function xr(r,e){const i=r.length-1;let s,o,u=0,h=i,f=0;for(;u<=h;)if(f=Math.floor((u+h)/2),s=r[f],o=r[f+1],s<=e){if(f===i||e<o)return f;u=f+1}else{if(!(s>e))throw new We("Input is not a number.");h=f-1}return 0}class Yn{constructor(e,i,s){this.type=e,this.input=i,this.labels=[],this.outputs=[];for(const[o,u]of s)this.labels.push(o),this.outputs.push(u)}static parse(e,i){if(e.length-1<4)return i.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return i.error("Expected an even number of arguments.");const s=i.parse(e[1],1,Ae);if(!s)return null;const o=[];let u=null;i.expectedType&&i.expectedType.kind!=="value"&&(u=i.expectedType);for(let h=1;h<e.length;h+=2){const f=h===1?-1/0:e[h],g=e[h+1],y=h,v=h+1;if(typeof f!="number")return i.error('Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.',y);if(o.length&&o[o.length-1][0]>=f)return i.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',y);const b=i.parse(g,v,u);if(!b)return null;u=u||b.type,o.push([f,b])}return new Yn(u,s,o)}evaluate(e){const i=this.labels,s=this.outputs;if(i.length===1)return s[0].evaluate(e);const o=this.input.evaluate(e);if(o<=i[0])return s[0].evaluate(e);const u=i.length;return o>=i[u-1]?s[u-1].evaluate(e):s[xr(i,o)].evaluate(e)}eachChild(e){e(this.input);for(const i of this.outputs)e(i)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}}function Ha(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var Xa,Ya,yc=function(){if(Ya)return Xa;function r(e,i,s,o){this.cx=3*e,this.bx=3*(s-e)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*i,this.by=3*(o-i)-this.cy,this.ay=1-this.cy-this.by,this.p1x=e,this.p1y=i,this.p2x=s,this.p2y=o}return Ya=1,Xa=r,r.prototype={sampleCurveX:function(e){return((this.ax*e+this.bx)*e+this.cx)*e},sampleCurveY:function(e){return((this.ay*e+this.by)*e+this.cy)*e},sampleCurveDerivativeX:function(e){return(3*this.ax*e+2*this.bx)*e+this.cx},solveCurveX:function(e,i){if(i===void 0&&(i=1e-6),e<0)return 0;if(e>1)return 1;for(var s=e,o=0;o<8;o++){var u=this.sampleCurveX(s)-e;if(Math.abs(u)<i)return s;var h=this.sampleCurveDerivativeX(s);if(Math.abs(h)<1e-6)break;s-=u/h}var f=0,g=1;for(s=e,o=0;o<20&&(u=this.sampleCurveX(s),!(Math.abs(u-e)<i));o++)e>u?f=s:g=s,s=.5*(g-f)+f;return s},solve:function(e,i){return this.sampleCurveY(this.solveCurveX(e,i))}},Xa}(),Xu=Ha(yc);class Fi{constructor(e,i,s,o,u){this.type=e,this.operator=i,this.interpolation=s,this.input=o,this.labels=[],this.outputs=[];for(const[h,f]of u)this.labels.push(h),this.outputs.push(f)}static interpolationFactor(e,i,s,o){let u=0;if(e.name==="exponential")u=Ka(i,e.base,s,o);else if(e.name==="linear")u=Ka(i,1,s,o);else if(e.name==="cubic-bezier"){const h=e.controlPoints;u=new Xu(h[0],h[1],h[2],h[3]).solve(Ka(i,1,s,o))}return u}static parse(e,i){let[s,o,u,...h]=e;if(!Array.isArray(o)||o.length===0)return i.error("Expected an interpolation type expression.",1);if(o[0]==="linear")o={name:"linear"};else if(o[0]==="exponential"){const y=o[1];if(typeof y!="number")return i.error("Exponential interpolation requires a numeric base.",1,1);o={name:"exponential",base:y}}else{if(o[0]!=="cubic-bezier")return i.error(`Unknown interpolation type ${String(o[0])}`,1,0);{const y=o.slice(1);if(y.length!==4||y.some(v=>typeof v!="number"||v<0||v>1))return i.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);o={name:"cubic-bezier",controlPoints:y}}}if(e.length-1<4)return i.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return i.error("Expected an even number of arguments.");if(u=i.parse(u,2,Ae),!u)return null;const f=[];let g=null;s!=="interpolate-hcl"&&s!=="interpolate-lab"||i.expectedType==$s?i.expectedType&&i.expectedType.kind!=="value"&&(g=i.expectedType):g=_r;for(let y=0;y<h.length;y+=2){const v=h[y],b=h[y+1],S=y+3,P=y+4;if(typeof v!="number")return i.error('Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not computed expressions) for the input values.',S);if(f.length&&f[f.length-1][0]>=v)return i.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',S);const C=i.parse(b,P,g);if(!C)return null;g=g||C.type,f.push([v,C])}return An(g,Ae)||An(g,ms)||An(g,_r)||An(g,Ua)||An(g,Ws)||An(g,$s)||An(g,Hs)||An(g,Zi(Ae))?new Fi(g,s,o,u,f):i.error(`Type ${Ct(g)} is not interpolatable.`)}evaluate(e){const i=this.labels,s=this.outputs;if(i.length===1)return s[0].evaluate(e);const o=this.input.evaluate(e);if(o<=i[0])return s[0].evaluate(e);const u=i.length;if(o>=i[u-1])return s[u-1].evaluate(e);const h=xr(i,o),f=Fi.interpolationFactor(this.interpolation,o,i[h],i[h+1]),g=s[h].evaluate(e),y=s[h+1].evaluate(e);switch(this.operator){case"interpolate":switch(this.type.kind){case"number":return yr(g,y,f);case"color":return dt.interpolate(g,y,f);case"padding":return Ii.interpolate(g,y,f);case"colorArray":return At.interpolate(g,y,f);case"numberArray":return Ei.interpolate(g,y,f);case"variableAnchorOffsetCollection":return ei.interpolate(g,y,f);case"array":return vs(g,y,f);case"projectionDefinition":return $i.interpolate(g,y,f)}case"interpolate-hcl":switch(this.type.kind){case"color":return dt.interpolate(g,y,f,"hcl");case"colorArray":return At.interpolate(g,y,f,"hcl")}case"interpolate-lab":switch(this.type.kind){case"color":return dt.interpolate(g,y,f,"lab");case"colorArray":return At.interpolate(g,y,f,"lab")}}}eachChild(e){e(this.input);for(const i of this.outputs)e(i)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}}function Ka(r,e,i,s){const o=s-i,u=r-i;return o===0?0:e===1?u/o:(Math.pow(e,u)-1)/(Math.pow(e,o)-1)}const xi={color:dt.interpolate,number:yr,padding:Ii.interpolate,numberArray:Ei.interpolate,colorArray:At.interpolate,variableAnchorOffsetCollection:ei.interpolate,array:vs};class ci{constructor(e,i){this.type=e,this.args=i}static parse(e,i){if(e.length<2)return i.error("Expected at least one argument.");let s=null;const o=i.expectedType;o&&o.kind!=="value"&&(s=o);const u=[];for(const f of e.slice(1)){const g=i.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 h=o&&u.some(f=>Cn(o,f.type));return new ci(h?ot:s,u)}evaluate(e){let i,s=null,o=0;for(const u of this.args)if(o++,s=u.evaluate(e),s&&s instanceof ir&&!s.available&&(i||(i=s.name),s=null,o===this.args.length&&(s=i)),s!==null)break;return s}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}}function ia(r,e){return r==="=="||r==="!="?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 il(r,e,i,s){return s.compare(e,i)===0}function cn(r,e,i){const s=r!=="=="&&r!=="!=";return class ym{constructor(u,h,f){this.type=it,this.lhs=u,this.rhs=h,this.collator=f,this.hasUntypedArgument=u.type.kind==="value"||h.type.kind==="value"}static parse(u,h){if(u.length!==3&&u.length!==4)return h.error("Expected two or three arguments.");const f=u[0];let g=h.parse(u[1],1,ot);if(!g)return null;if(!ia(f,g.type))return h.concat(1).error(`"${f}" comparisons are not supported for type '${Ct(g.type)}'.`);let y=h.parse(u[2],2,ot);if(!y)return null;if(!ia(f,y.type))return h.concat(2).error(`"${f}" comparisons are not supported for type '${Ct(y.type)}'.`);if(g.type.kind!==y.type.kind&&g.type.kind!=="value"&&y.type.kind!=="value")return h.error(`Cannot compare types '${Ct(g.type)}' and '${Ct(y.type)}'.`);s&&(g.type.kind==="value"&&y.type.kind!=="value"?g=new Cr(y.type,[g]):g.type.kind!=="value"&&y.type.kind==="value"&&(y=new Cr(g.type,[y])));let v=null;if(u.length===4){if(g.type.kind!=="string"&&y.type.kind!=="string"&&g.type.kind!=="value"&&y.type.kind!=="value")return h.error("Cannot use collator to compare non-string types.");if(v=h.parse(u[3],3,gs),!v)return null}return new ym(g,y,v)}evaluate(u){const h=this.lhs.evaluate(u),f=this.rhs.evaluate(u);if(s&&this.hasUntypedArgument){const g=jt(h),y=jt(f);if(g.kind!==y.kind||g.kind!=="string"&&g.kind!=="number")throw new We(`Expected arguments for "${r}" to be (string, string) or (number, number), but found (${g.kind}, ${y.kind}) instead.`)}if(this.collator&&!s&&this.hasUntypedArgument){const g=jt(h),y=jt(f);if(g.kind!=="string"||y.kind!=="string")return e(u,h,f)}return this.collator?i(u,h,f,this.collator.evaluate(u)):e(u,h,f)}eachChild(u){u(this.lhs),u(this.rhs),this.collator&&u(this.collator)}outputDefined(){return!0}}}const di=cn("==",function(r,e,i){return e===i},il),xc=cn("!=",function(r,e,i){return e!==i},function(r,e,i,s){return!il(0,e,i,s)}),rl=cn("<",function(r,e,i){return e<i},function(r,e,i,s){return s.compare(e,i)<0}),vc=cn(">",function(r,e,i){return e>i},function(r,e,i,s){return s.compare(e,i)>0}),Yu=cn("<=",function(r,e,i){return e<=i},function(r,e,i,s){return s.compare(e,i)<=0}),Ss=cn(">=",function(r,e,i){return e>=i},function(r,e,i,s){return s.compare(e,i)>=0});class Kn{constructor(e,i,s){this.type=gs,this.locale=s,this.caseSensitive=e,this.diacriticSensitive=i}static parse(e,i){if(e.length!==2)return i.error("Expected one argument.");const s=e[1];if(typeof s!="object"||Array.isArray(s))return i.error("Collator options argument must be an object.");const o=i.parse(s["case-sensitive"]!==void 0&&s["case-sensitive"],1,it);if(!o)return null;const u=i.parse(s["diacritic-sensitive"]!==void 0&&s["diacritic-sensitive"],1,it);if(!u)return null;let h=null;return s.locale&&(h=i.parse(s.locale,1,tt),!h)?null:new Kn(o,u,h)}evaluate(e){return new Wn(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}}class ra{constructor(e,i,s,o,u){this.type=tt,this.number=e,this.locale=i,this.currency=s,this.minFractionDigits=o,this.maxFractionDigits=u}static parse(e,i){if(e.length!==3)return i.error("Expected two arguments.");const s=i.parse(e[1],1,Ae);if(!s)return null;const o=e[2];if(typeof o!="object"||Array.isArray(o))return i.error("NumberFormat options argument must be an object.");let u=null;if(o.locale&&(u=i.parse(o.locale,1,tt),!u))return null;let h=null;if(o.currency&&(h=i.parse(o.currency,1,tt),!h))return null;let f=null;if(o["min-fraction-digits"]&&(f=i.parse(o["min-fraction-digits"],1,Ae),!f))return null;let g=null;return o["max-fraction-digits"]&&(g=i.parse(o["max-fraction-digits"],1,Ae),!g)?null:new ra(s,u,h,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 Ja{constructor(e){this.type=_s,this.sections=e}static parse(e,i){if(e.length<2)return i.error("Expected at least one argument.");const s=e[1];if(!Array.isArray(s)&&typeof s=="object")return i.error("First argument must be an image or text section.");const o=[];let u=!1;for(let h=1;h<=e.length-1;++h){const f=e[h];if(u&&typeof f=="object"&&!Array.isArray(f)){u=!1;let g=null;if(f["font-scale"]&&(g=i.parse(f["font-scale"],1,Ae),!g))return null;let y=null;if(f["text-font"]&&(y=i.parse(f["text-font"],1,Zi(tt)),!y))return null;let v=null;if(f["text-color"]&&(v=i.parse(f["text-color"],1,_r),!v))return null;let b=null;if(f["vertical-align"]){if(typeof f["vertical-align"]=="string"&&!Hu.includes(f["vertical-align"]))return i.error(`'vertical-align' must be one of: 'bottom', 'center', 'top' but found '${f["vertical-align"]}' instead.`);if(b=i.parse(f["vertical-align"],1,tt),!b)return null}const S=o[o.length-1];S.scale=g,S.font=y,S.textColor=v,S.verticalAlign=b}else{const g=i.parse(e[h],1,ot);if(!g)return null;const y=g.type.kind;if(y!=="string"&&y!=="value"&&y!=="null"&&y!=="resolvedImage")return i.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");u=!0,o.push({content:g,scale:null,font:null,textColor:null,verticalAlign:null})}}return new Ja(o)}evaluate(e){return new tr(this.sections.map(i=>{const s=i.content.evaluate(e);return jt(s)===ys?new el("",s,null,null,null,i.verticalAlign?i.verticalAlign.evaluate(e):null):new el(ws(s),null,i.scale?i.scale.evaluate(e):null,i.font?i.font.evaluate(e).join(","):null,i.textColor?i.textColor.evaluate(e):null,i.verticalAlign?i.verticalAlign.evaluate(e):null)}))}eachChild(e){for(const i of this.sections)e(i.content),i.scale&&e(i.scale),i.font&&e(i.font),i.textColor&&e(i.textColor),i.verticalAlign&&e(i.verticalAlign)}outputDefined(){return!1}}class Qa{constructor(e){this.type=ys,this.input=e}static parse(e,i){if(e.length!==2)return i.error("Expected two arguments.");const s=i.parse(e[1],1,tt);return s?new Qa(s):i.error("No image name provided.")}evaluate(e){const i=this.input.evaluate(e),s=ir.fromString(i);return s&&e.availableImages&&(s.available=e.availableImages.indexOf(i)>-1),s}eachChild(e){e(this.input)}outputDefined(){return!1}}class Ps{constructor(e){this.type=Ae,this.input=e}static parse(e,i){if(e.length!==2)return i.error(`Expected 1 argument, but found ${e.length-1} instead.`);const s=i.parse(e[1],1);return s?s.type.kind!=="array"&&s.type.kind!=="string"&&s.type.kind!=="value"?i.error(`Expected argument of type string or array, but found ${Ct(s.type)} instead.`):new Ps(s):null}evaluate(e){const i=this.input.evaluate(e);if(typeof i=="string")return[...i].length;if(Array.isArray(i))return i.length;throw new We(`Expected value to be of type string or array, but found ${Ct(jt(i))} instead.`)}eachChild(e){e(this.input)}outputDefined(){return!1}}const nr=8192;function Ar(r,e){const i=(180+r[0])/360,s=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+r[1]*Math.PI/360)))/360,o=Math.pow(2,e.z);return[Math.round(i*o*nr),Math.round(s*o*nr)]}function eo(r,e){const i=Math.pow(2,e.z);return[(o=(r[0]/nr+e.x)/i,360*o-180),(s=(r[1]/nr+e.y)/i,360/Math.PI*Math.atan(Math.exp((180-360*s)*Math.PI/180))-90)];var s,o}function zn(r,e){r[0]=Math.min(r[0],e[0]),r[1]=Math.min(r[1],e[1]),r[2]=Math.max(r[2],e[0]),r[3]=Math.max(r[3],e[1])}function na(r,e){return!(r[0]<=e[0]||r[2]>=e[2]||r[1]<=e[1]||r[3]>=e[3])}function nl(r,e,i){const s=r[0]-e[0],o=r[1]-e[1],u=r[0]-i[0],h=r[1]-i[1];return s*h-u*o==0&&s*u<=0&&o*h<=0}function to(r,e,i,s){return(o=[s[0]-i[0],s[1]-i[1]])[0]*(u=[e[0]-r[0],e[1]-r[1]])[1]-o[1]*u[0]!=0&&!(!sl(r,e,i,s)||!sl(i,s,r,e));var o,u}function Ku(r,e,i){for(const s of i)for(let o=0;o<s.length-1;++o)if(to(r,e,s[o],s[o+1]))return!0;return!1}function Ms(r,e,i=!1){let s=!1;for(const f of e)for(let g=0;g<f.length-1;g++){if(nl(r,f[g],f[g+1]))return i;(u=f[g])[1]>(o=r)[1]!=(h=f[g+1])[1]>o[1]&&o[0]<(h[0]-u[0])*(o[1]-u[1])/(h[1]-u[1])+u[0]&&(s=!s)}var o,u,h;return s}function Ju(r,e){for(const i of e)if(Ms(r,i))return!0;return!1}function sa(r,e){for(const i of r)if(!Ms(i,e))return!1;for(let i=0;i<r.length-1;++i)if(Ku(r[i],r[i+1],e))return!1;return!0}function Qu(r,e){for(const i of e)if(sa(r,i))return!0;return!1}function sl(r,e,i,s){const o=s[0]-i[0],u=s[1]-i[1],h=(r[0]-i[0])*u-o*(r[1]-i[1]),f=(e[0]-i[0])*u-o*(e[1]-i[1]);return h>0&&f<0||h<0&&f>0}function io(r,e,i){const s=[];for(let o=0;o<r.length;o++){const u=[];for(let h=0;h<r[o].length;h++){const f=Ar(r[o][h],i);zn(e,f),u.push(f)}s.push(u)}return s}function bc(r,e,i){const s=[];for(let o=0;o<r.length;o++){const u=io(r[o],e,i);s.push(u)}return s}function al(r,e,i,s){if(r[0]<i[0]||r[0]>i[2]){const o=.5*s;let u=r[0]-i[0]>o?-s:i[0]-r[0]>o?s:0;u===0&&(u=r[0]-i[2]>o?-s:i[2]-r[0]>o?s:0),r[0]+=u}zn(e,r)}function wc(r,e,i,s){const o=Math.pow(2,s.z)*nr,u=[s.x*nr,s.y*nr],h=[];for(const f of r)for(const g of f){const y=[g.x+u[0],g.y+u[1]];al(y,e,i,o),h.push(y)}return h}function Tc(r,e,i,s){const o=Math.pow(2,s.z)*nr,u=[s.x*nr,s.y*nr],h=[];for(const g of r){const y=[];for(const v of g){const b=[v.x+u[0],v.y+u[1]];zn(e,b),y.push(b)}h.push(y)}if(e[2]-e[0]<=o/2){(f=e)[0]=f[1]=1/0,f[2]=f[3]=-1/0;for(const g of h)for(const y of g)al(y,e,i,o)}var f;return h}class Jn{constructor(e,i){this.type=it,this.geojson=e,this.geometries=i}static parse(e,i){if(e.length!==2)return i.error(`'within' expression requires exactly one argument, but found ${e.length-1} instead.`);if(on(e[1])){const s=e[1];if(s.type==="FeatureCollection"){const o=[];for(const u of s.features){const{type:h,coordinates:f}=u.geometry;h==="Polygon"&&o.push(f),h==="MultiPolygon"&&o.push(...f)}if(o.length)return new Jn(s,{type:"MultiPolygon",coordinates:o})}else if(s.type==="Feature"){const o=s.geometry.type;if(o==="Polygon"||o==="MultiPolygon")return new Jn(s,s.geometry)}else if(s.type==="Polygon"||s.type==="MultiPolygon")return new Jn(s,s)}return i.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(i,s){const o=[1/0,1/0,-1/0,-1/0],u=[1/0,1/0,-1/0,-1/0],h=i.canonicalID();if(s.type==="Polygon"){const f=io(s.coordinates,u,h),g=wc(i.geometry(),o,u,h);if(!na(o,u))return!1;for(const y of g)if(!Ms(y,f))return!1}if(s.type==="MultiPolygon"){const f=bc(s.coordinates,u,h),g=wc(i.geometry(),o,u,h);if(!na(o,u))return!1;for(const y of g)if(!Ju(y,f))return!1}return!0}(e,this.geometries);if(e.geometryType()==="LineString")return function(i,s){const o=[1/0,1/0,-1/0,-1/0],u=[1/0,1/0,-1/0,-1/0],h=i.canonicalID();if(s.type==="Polygon"){const f=io(s.coordinates,u,h),g=Tc(i.geometry(),o,u,h);if(!na(o,u))return!1;for(const y of g)if(!sa(y,f))return!1}if(s.type==="MultiPolygon"){const f=bc(s.coordinates,u,h),g=Tc(i.geometry(),o,u,h);if(!na(o,u))return!1;for(const y of g)if(!Qu(y,f))return!1}return!0}(e,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}}let Sc=class{constructor(r=[],e=(i,s)=>i<s?-1:i>s?1:0){if(this.data=r,this.length=this.data.length,this.compare=e,this.length>0)for(let i=(this.length>>1)-1;i>=0;i--)this._down(i)}push(r){this.data.push(r),this._up(this.length++)}pop(){if(this.length===0)return;const r=this.data[0],e=this.data.pop();return--this.length>0&&(this.data[0]=e,this._down(0)),r}peek(){return this.data[0]}_up(r){const{data:e,compare:i}=this,s=e[r];for(;r>0;){const o=r-1>>1,u=e[o];if(i(s,u)>=0)break;e[r]=u,r=o}e[r]=s}_down(r){const{data:e,compare:i}=this,s=this.length>>1,o=e[r];for(;r<s;){let u=1+(r<<1);const h=u+1;if(h<this.length&&i(e[h],e[u])<0&&(u=h),i(e[u],o)>=0)break;e[r]=e[u],r=u}e[r]=o}};function Pc(r,e,i=0,s=r.length-1,o=Mc){for(;s>i;){if(s-i>600){const g=s-i+1,y=e-i+1,v=Math.log(g),b=.5*Math.exp(2*v/3),S=.5*Math.sqrt(v*b*(g-b)/g)*(y-g/2<0?-1:1);Pc(r,e,Math.max(i,Math.floor(e-y*b/g+S)),Math.min(s,Math.floor(e+(g-y)*b/g+S)),o)}const u=r[e];let h=i,f=s;for(Is(r,i,e),o(r[s],u)>0&&Is(r,i,s);h<f;){for(Is(r,h,f),h++,f--;o(r[h],u)<0;)h++;for(;o(r[f],u)>0;)f--}o(r[i],u)===0?Is(r,i,f):(f++,Is(r,f,s)),f<=e&&(i=f+1),e<=f&&(s=f-1)}}function Is(r,e,i){const s=r[e];r[e]=r[i],r[i]=s}function Mc(r,e){return r<e?-1:r>e?1:0}function aa(r,e){if(r.length<=1)return[r];const i=[];let s,o;for(const u of r){const h=th(u);h!==0&&(u.area=Math.abs(h),o===void 0&&(o=h<0),o===h<0?(s&&i.push(s),s=[u]):s.push(u))}if(s&&i.push(s),e>1)for(let u=0;u<i.length;u++)i[u].length<=e||(Pc(i[u],e,1,i[u].length-1,eh),i[u]=i[u].slice(0,e));return i}function eh(r,e){return e.area-r.area}function th(r){let e=0;for(let i,s,o=0,u=r.length,h=u-1;o<u;h=o++)i=r[o],s=r[h],e+=(s.x-i.x)*(i.y+s.y);return e}const Ic=1/298.257223563,Ec=Ic*(2-Ic),oa=Math.PI/180;class ol{constructor(e){const i=6378.137*oa*1e3,s=Math.cos(e*oa),o=1/(1-Ec*(1-s*s)),u=Math.sqrt(o);this.kx=i*u*s,this.ky=i*u*o*(1-Ec)}distance(e,i){const s=this.wrap(e[0]-i[0])*this.kx,o=(e[1]-i[1])*this.ky;return Math.sqrt(s*s+o*o)}pointOnLine(e,i){let s,o,u,h,f=1/0;for(let g=0;g<e.length-1;g++){let y=e[g][0],v=e[g][1],b=this.wrap(e[g+1][0]-y)*this.kx,S=(e[g+1][1]-v)*this.ky,P=0;b===0&&S===0||(P=(this.wrap(i[0]-y)*this.kx*b+(i[1]-v)*this.ky*S)/(b*b+S*S),P>1?(y=e[g+1][0],v=e[g+1][1]):P>0&&(y+=b/this.kx*P,v+=S/this.ky*P)),b=this.wrap(i[0]-y)*this.kx,S=(i[1]-v)*this.ky;const C=b*b+S*S;C<f&&(f=C,s=y,o=v,u=g,h=P)}return{point:[s,o],index:u,t:Math.max(0,Math.min(1,h))}}wrap(e){for(;e<-180;)e+=360;for(;e>180;)e-=360;return e}}function Cc(r,e){return e[0]-r[0]}function ro(r){return r[1]-r[0]+1}function un(r,e){return r[1]>=r[0]&&r[1]<e}function la(r,e){if(r[0]>r[1])return[null,null];const i=ro(r);if(e){if(i===2)return[r,null];const o=Math.floor(i/2);return[[r[0],r[0]+o],[r[0]+o,r[1]]]}if(i===1)return[r,null];const s=Math.floor(i/2)-1;return[[r[0],r[0]+s],[r[0]+s+1,r[1]]]}function no(r,e){if(!un(e,r.length))return[1/0,1/0,-1/0,-1/0];const i=[1/0,1/0,-1/0,-1/0];for(let s=e[0];s<=e[1];++s)zn(i,r[s]);return i}function ll(r){const e=[1/0,1/0,-1/0,-1/0];for(const i of r)for(const s of i)zn(e,s);return e}function Ac(r){return r[0]!==-1/0&&r[1]!==-1/0&&r[2]!==1/0&&r[3]!==1/0}function so(r,e,i){if(!Ac(r)||!Ac(e))return NaN;let s=0,o=0;return r[2]<e[0]&&(s=e[0]-r[2]),r[0]>e[2]&&(s=r[0]-e[2]),r[1]>e[3]&&(o=r[1]-e[3]),r[3]<e[1]&&(o=e[1]-r[3]),i.distance([0,0],[s,o])}function kn(r,e,i){const s=i.pointOnLine(e,r);return i.distance(r,s.point)}function cl(r,e,i,s,o){const u=Math.min(kn(r,[i,s],o),kn(e,[i,s],o)),h=Math.min(kn(i,[r,e],o),kn(s,[r,e],o));return Math.min(u,h)}function ih(r,e,i,s,o){if(!un(e,r.length)||!un(s,i.length))return 1/0;let u=1/0;for(let h=e[0];h<e[1];++h){const f=r[h],g=r[h+1];for(let y=s[0];y<s[1];++y){const v=i[y],b=i[y+1];if(to(f,g,v,b))return 0;u=Math.min(u,cl(f,g,v,b,o))}}return u}function rh(r,e,i,s,o){if(!un(e,r.length)||!un(s,i.length))return NaN;let u=1/0;for(let h=e[0];h<=e[1];++h)for(let f=s[0];f<=s[1];++f)if(u=Math.min(u,o.distance(r[h],i[f])),u===0)return u;return u}function Dc(r,e,i){if(Ms(r,e,!0))return 0;let s=1/0;for(const o of e){const u=o[0],h=o[o.length-1];if(u!==h&&(s=Math.min(s,kn(r,[h,u],i)),s===0))return s;const f=i.pointOnLine(o,r);if(s=Math.min(s,i.distance(r,f.point)),s===0)return s}return s}function nh(r,e,i,s){if(!un(e,r.length))return NaN;for(let u=e[0];u<=e[1];++u)if(Ms(r[u],i,!0))return 0;let o=1/0;for(let u=e[0];u<e[1];++u){const h=r[u],f=r[u+1];for(const g of i)for(let y=0,v=g.length,b=v-1;y<v;b=y++){const S=g[b],P=g[y];if(to(h,f,S,P))return 0;o=Math.min(o,cl(h,f,S,P,s))}}return o}function zc(r,e){for(const i of r)for(const s of i)if(Ms(s,e,!0))return!0;return!1}function sh(r,e,i,s=1/0){const o=ll(r),u=ll(e);if(s!==1/0&&so(o,u,i)>=s)return s;if(na(o,u)){if(zc(r,e))return 0}else if(zc(e,r))return 0;let h=1/0;for(const f of r)for(let g=0,y=f.length,v=y-1;g<y;v=g++){const b=f[v],S=f[g];for(const P of e)for(let C=0,D=P.length,R=D-1;C<D;R=C++){const V=P[R],q=P[C];if(to(b,S,V,q))return 0;h=Math.min(h,cl(b,S,V,q,i))}}return h}function kc(r,e,i,s,o,u){if(!u)return;const h=so(no(s,u),o,i);h<e&&r.push([h,u,[0,0]])}function gt(r,e,i,s,o,u,h){if(!u||!h)return;const f=so(no(s,u),no(o,h),i);f<e&&r.push([f,u,h])}function ao(r,e,i,s,o=1/0){let u=Math.min(s.distance(r[0],i[0][0]),o);if(u===0)return u;const h=new Sc([[0,[0,r.length-1],[0,0]]],Cc),f=ll(i);for(;h.length>0;){const g=h.pop();if(g[0]>=u)continue;const y=g[1],v=e?50:100;if(ro(y)<=v){if(!un(y,r.length))return NaN;if(e){const b=nh(r,y,i,s);if(isNaN(b)||b===0)return b;u=Math.min(u,b)}else for(let b=y[0];b<=y[1];++b){const S=Dc(r[b],i,s);if(u=Math.min(u,S),u===0)return 0}}else{const b=la(y,e);kc(h,u,s,r,f,b[0]),kc(h,u,s,r,f,b[1])}}return u}function oo(r,e,i,s,o,u=1/0){let h=Math.min(u,o.distance(r[0],i[0]));if(h===0)return h;const f=new Sc([[0,[0,r.length-1],[0,i.length-1]]],Cc);for(;f.length>0;){const g=f.pop();if(g[0]>=h)continue;const y=g[1],v=g[2],b=e?50:100,S=s?50:100;if(ro(y)<=b&&ro(v)<=S){if(!un(y,r.length)&&un(v,i.length))return NaN;let P;if(e&&s)P=ih(r,y,i,v,o),h=Math.min(h,P);else if(e&&!s){const C=r.slice(y[0],y[1]+1);for(let D=v[0];D<=v[1];++D)if(P=kn(i[D],C,o),h=Math.min(h,P),h===0)return h}else if(!e&&s){const C=i.slice(v[0],v[1]+1);for(let D=y[0];D<=y[1];++D)if(P=kn(r[D],C,o),h=Math.min(h,P),h===0)return h}else P=rh(r,y,i,v,o),h=Math.min(h,P)}else{const P=la(y,e),C=la(v,s);gt(f,h,o,r,i,P[0],C[0]),gt(f,h,o,r,i,P[0],C[1]),gt(f,h,o,r,i,P[1],C[0]),gt(f,h,o,r,i,P[1],C[1])}}return h}function ul(r){return r.type==="MultiPolygon"?r.coordinates.map(e=>({type:"Polygon",coordinates:e})):r.type==="MultiLineString"?r.coordinates.map(e=>({type:"LineString",coordinates:e})):r.type==="MultiPoint"?r.coordinates.map(e=>({type:"Point",coordinates:e})):[r]}class Qn{constructor(e,i){this.type=Ae,this.geojson=e,this.geometries=i}static parse(e,i){if(e.length!==2)return i.error(`'distance' expression requires exactly one argument, but found ${e.length-1} instead.`);if(on(e[1])){const s=e[1];if(s.type==="FeatureCollection")return new Qn(s,s.features.map(o=>ul(o.geometry)).flat());if(s.type==="Feature")return new Qn(s,ul(s.geometry));if("type"in s&&"coordinates"in s)return new Qn(s,ul(s))}return i.error("'distance' 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(i,s){const o=i.geometry(),u=o.flat().map(g=>eo([g.x,g.y],i.canonical));if(o.length===0)return NaN;const h=new ol(u[0][1]);let f=1/0;for(const g of s){switch(g.type){case"Point":f=Math.min(f,oo(u,!1,[g.coordinates],!1,h,f));break;case"LineString":f=Math.min(f,oo(u,!1,g.coordinates,!0,h,f));break;case"Polygon":f=Math.min(f,ao(u,!1,g.coordinates,h,f))}if(f===0)return f}return f}(e,this.geometries);if(e.geometryType()==="LineString")return function(i,s){const o=i.geometry(),u=o.flat().map(g=>eo([g.x,g.y],i.canonical));if(o.length===0)return NaN;const h=new ol(u[0][1]);let f=1/0;for(const g of s){switch(g.type){case"Point":f=Math.min(f,oo(u,!0,[g.coordinates],!1,h,f));break;case"LineString":f=Math.min(f,oo(u,!0,g.coordinates,!0,h,f));break;case"Polygon":f=Math.min(f,ao(u,!0,g.coordinates,h,f))}if(f===0)return f}return f}(e,this.geometries);if(e.geometryType()==="Polygon")return function(i,s){const o=i.geometry();if(o.length===0||o[0].length===0)return NaN;const u=aa(o,0).map(g=>g.map(y=>y.map(v=>eo([v.x,v.y],i.canonical)))),h=new ol(u[0][0][0][1]);let f=1/0;for(const g of s)for(const y of u){switch(g.type){case"Point":f=Math.min(f,ao([g.coordinates],!1,y,h,f));break;case"LineString":f=Math.min(f,ao(g.coordinates,!0,y,h,f));break;case"Polygon":f=Math.min(f,sh(y,g.coordinates,h,f))}if(f===0)return f}return f}(e,this.geometries)}return NaN}eachChild(){}outputDefined(){return!0}}class ca{constructor(e){this.type=ot,this.key=e}static parse(e,i){if(e.length!==2)return i.error(`Expected 1 argument, but found ${e.length-1} instead.`);const s=e[1];return s==null?i.error("Global state property must be defined."):typeof s!="string"?i.error(`Global state property must be string, but found ${typeof e[1]} instead.`):new ca(s)}evaluate(e){var i;const s=(i=e.globals)===null||i===void 0?void 0:i.globalState;return s&&Object.keys(s).length!==0?Ks(s,this.key):null}eachChild(){}outputDefined(){return!1}}const Es={"==":di,"!=":xc,">":vc,"<":rl,">=":Ss,"<=":Yu,array:Cr,at:ea,boolean:Cr,case:mt,coalesce:ci,collator:Kn,format:Ja,image:Qa,in:ft,"index-of":at,interpolate:Fi,"interpolate-hcl":Fi,"interpolate-lab":Fi,length:Ps,let:Xn,literal:ln,match:ta,number:Cr,"number-format":ra,object:Cr,slice:Ts,step:Yn,string:Cr,"to-boolean":rr,"to-color":rr,"to-number":rr,"to-string":rr,var:St,within:Jn,distance:Qn,"global-state":ca};class vr{constructor(e,i,s,o){this.name=e,this.type=i,this._evaluate=s,this.args=o}evaluate(e){return this._evaluate(e,this.args)}eachChild(e){this.args.forEach(e)}outputDefined(){return!1}static parse(e,i){const s=e[0],o=vr.definitions[s];if(!o)return i.error(`Unknown expression "${s}". If you wanted a literal array, use ["literal", [...]].`,0);const u=Array.isArray(o)?o[0]:o.type,h=Array.isArray(o)?[[o[1],o[2]]]:o.overloads,f=h.filter(([y])=>!Array.isArray(y)||y.length===e.length-1);let g=null;for(const[y,v]of f){g=new Qs(i.registry,lo,i.path,null,i.scope);const b=[];let S=!1;for(let P=1;P<e.length;P++){const C=e[P],D=Array.isArray(y)?y[P-1]:y.type,R=g.parse(C,1+b.length,D);if(!R){S=!0;break}b.push(R)}if(!S)if(Array.isArray(y)&&y.length!==b.length)g.error(`Expected ${y.length} arguments, but found ${b.length} instead.`);else{for(let P=0;P<b.length;P++){const C=Array.isArray(y)?y[P]:y.type,D=b[P];g.concat(P+1).checkSubtype(C,D.type)}if(g.errors.length===0)return new vr(s,u,v,b)}}if(f.length===1)i.errors.push(...g.errors);else{const y=(f.length?f:h).map(([b])=>{return S=b,Array.isArray(S)?`(${S.map(Ct).join(", ")})`:`(${Ct(S.type)}...)`;var S}).join(" | "),v=[];for(let b=1;b<e.length;b++){const S=i.parse(e[b],1+v.length);if(!S)return null;v.push(Ct(S.type))}i.error(`Expected arguments of type ${y}, but found (${v.join(", ")}) instead.`)}return null}static register(e,i){vr.definitions=i;for(const s in i)e[s]=vr}}function Rc(r,[e,i,s,o]){e=e.evaluate(r),i=i.evaluate(r),s=s.evaluate(r);const u=o?o.evaluate(r):1,h=Wa(e,i,s,u);if(h)throw new We(h);return new dt(e/255,i/255,s/255,u,!1)}function Lc(r,e){return r in e}function hl(r,e){const i=e[r];return i===void 0?null:i}function es(r){return{type:r}}function lo(r){if(r instanceof St)return lo(r.boundExpression);if(r instanceof vr&&r.name==="error"||r instanceof Kn||r instanceof Jn||r instanceof Qn||r instanceof ca)return!1;const e=r instanceof rr||r instanceof Cr;let i=!0;return r.eachChild(s=>{i=e?i&&lo(s):i&&s instanceof ln}),!!i&&co(r)&&uo(r,["zoom","heatmap-density","elevation","line-progress","accumulated","is-supported-script"])}function co(r){if(r instanceof vr&&(r.name==="get"&&r.args.length===1||r.name==="feature-state"||r.name==="has"&&r.args.length===1||r.name==="properties"||r.name==="geometry-type"||r.name==="id"||/^filter-/.test(r.name))||r instanceof Jn||r instanceof Qn)return!1;let e=!0;return r.eachChild(i=>{e&&!co(i)&&(e=!1)}),e}function ua(r){if(r instanceof vr&&r.name==="feature-state")return!1;let e=!0;return r.eachChild(i=>{e&&!ua(i)&&(e=!1)}),e}function uo(r,e){if(r instanceof vr&&e.indexOf(r.name)>=0)return!1;let i=!0;return r.eachChild(s=>{i&&!uo(s,e)&&(i=!1)}),i}function Fc(r){return{result:"success",value:r}}function Cs(r){return{result:"error",value:r}}function As(r){return r["property-type"]==="data-driven"||r["property-type"]==="cross-faded-data-driven"}function Bc(r){return!!r.expression&&r.expression.parameters.indexOf("zoom")>-1}function dl(r){return!!r.expression&&r.expression.interpolated}function ut(r){return r instanceof Number?"number":r instanceof String?"string":r instanceof Boolean?"boolean":Array.isArray(r)?"array":r===null?"null":typeof r}function ho(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)&&jt(r)===qn}function ah(r){return r}function Oc(r,e){const i=r.stops&&typeof r.stops[0][0]=="object",s=i||!(i||r.property!==void 0),o=r.type||(dl(e)?"exponential":"interval"),u=function(v){switch(v.type){case"color":return dt.parse;case"padding":return Ii.parse;case"numberArray":return Ei.parse;case"colorArray":return At.parse;default:return null}}(e);if(u&&((r=_t({},r)).stops&&(r.stops=r.stops.map(v=>[v[0],u(v[1])])),r.default=u(r.default?r.default:e.default)),r.colorSpace&&(h=r.colorSpace)!=="rgb"&&h!=="hcl"&&h!=="lab")throw new Error(`Unknown color space: "${r.colorSpace}"`);var h;const f=function(v){switch(v){case"exponential":return Vc;case"interval":return lh;case"categorical":return oh;case"identity":return ch;default:throw new Error(`Unknown function type "${v}"`)}}(o);let g,y;if(o==="categorical"){g=Object.create(null);for(const v of r.stops)g[v[0]]=v[1];y=typeof r.stops[0][0]}if(i){const v={},b=[];for(let C=0;C<r.stops.length;C++){const D=r.stops[C],R=D[0].zoom;v[R]===void 0&&(v[R]={zoom:R,type:r.type,property:r.property,default:r.default,stops:[]},b.push(R)),v[R].stops.push([D[0].value,D[1]])}const S=[];for(const C of b)S.push([v[C].zoom,Oc(v[C],e)]);const P={name:"linear"};return{kind:"composite",interpolationType:P,interpolationFactor:Fi.interpolationFactor.bind(void 0,P),zoomStops:S.map(C=>C[0]),evaluate:({zoom:C},D)=>Vc({stops:S,base:r.base},e,C).evaluate(C,D)}}if(s){const v=o==="exponential"?{name:"exponential",base:r.base!==void 0?r.base:1}:null;return{kind:"camera",interpolationType:v,interpolationFactor:Fi.interpolationFactor.bind(void 0,v),zoomStops:r.stops.map(b=>b[0]),evaluate:({zoom:b})=>f(r,e,b,g,y)}}return{kind:"source",evaluate(v,b){const S=b&&b.properties?b.properties[r.property]:void 0;return S===void 0?ha(r.default,e.default):f(r,e,S,g,y)}}}function ha(r,e,i){return r!==void 0?r:e!==void 0?e:i!==void 0?i:void 0}function oh(r,e,i,s,o){return ha(typeof i===o?s[i]:void 0,r.default,e.default)}function lh(r,e,i){if(ut(i)!=="number")return ha(r.default,e.default);const s=r.stops.length;if(s===1||i<=r.stops[0][0])return r.stops[0][1];if(i>=r.stops[s-1][0])return r.stops[s-1][1];const o=xr(r.stops.map(u=>u[0]),i);return r.stops[o][1]}function Vc(r,e,i){const s=r.base!==void 0?r.base:1;if(ut(i)!=="number")return ha(r.default,e.default);const o=r.stops.length;if(o===1||i<=r.stops[0][0])return r.stops[0][1];if(i>=r.stops[o-1][0])return r.stops[o-1][1];const u=xr(r.stops.map(v=>v[0]),i),h=function(v,b,S,P){const C=P-S,D=v-S;return C===0?0:b===1?D/C:(Math.pow(b,D)-1)/(Math.pow(b,C)-1)}(i,s,r.stops[u][0],r.stops[u+1][0]),f=r.stops[u][1],g=r.stops[u+1][1],y=xi[e.type]||ah;return typeof f.evaluate=="function"?{evaluate(...v){const b=f.evaluate.apply(void 0,v),S=g.evaluate.apply(void 0,v);if(b!==void 0&&S!==void 0)return y(b,S,h,r.colorSpace)}}:y(f,g,h,r.colorSpace)}function ch(r,e,i){switch(e.type){case"color":i=dt.parse(i);break;case"formatted":i=tr.fromString(i.toString());break;case"resolvedImage":i=ir.fromString(i.toString());break;case"padding":i=Ii.parse(i);break;case"colorArray":i=At.parse(i);break;case"numberArray":i=Ei.parse(i);break;default:ut(i)===e.type||e.type==="enum"&&e.values[i]||(i=void 0)}return ha(i,r.default,e.default)}vr.register(Es,{error:[{kind:"error"},[tt],(r,[e])=>{throw new We(e.evaluate(r))}],typeof:[tt,[ot],(r,[e])=>Ct(jt(e.evaluate(r)))],"to-rgba":[Zi(Ae,4),[_r],(r,[e])=>{const[i,s,o,u]=e.evaluate(r).rgb;return[255*i,255*s,255*o,u]}],rgb:[_r,[Ae,Ae,Ae],Rc],rgba:[_r,[Ae,Ae,Ae,Ae],Rc],has:{type:it,overloads:[[[tt],(r,[e])=>Lc(e.evaluate(r),r.properties())],[[tt,qn],(r,[e,i])=>Lc(e.evaluate(r),i.evaluate(r))]]},get:{type:ot,overloads:[[[tt],(r,[e])=>hl(e.evaluate(r),r.properties())],[[tt,qn],(r,[e,i])=>hl(e.evaluate(r),i.evaluate(r))]]},"feature-state":[ot,[tt],(r,[e])=>hl(e.evaluate(r),r.featureState||{})],properties:[qn,[],r=>r.properties()],"geometry-type":[tt,[],r=>r.geometryType()],id:[ot,[],r=>r.id()],zoom:[Ae,[],r=>r.globals.zoom],"heatmap-density":[Ae,[],r=>r.globals.heatmapDensity||0],elevation:[Ae,[],r=>r.globals.elevation||0],"line-progress":[Ae,[],r=>r.globals.lineProgress||0],accumulated:[ot,[],r=>r.globals.accumulated===void 0?null:r.globals.accumulated],"+":[Ae,es(Ae),(r,e)=>{let i=0;for(const s of e)i+=s.evaluate(r);return i}],"*":[Ae,es(Ae),(r,e)=>{let i=1;for(const s of e)i*=s.evaluate(r);return i}],"-":{type:Ae,overloads:[[[Ae,Ae],(r,[e,i])=>e.evaluate(r)-i.evaluate(r)],[[Ae],(r,[e])=>-e.evaluate(r)]]},"/":[Ae,[Ae,Ae],(r,[e,i])=>e.evaluate(r)/i.evaluate(r)],"%":[Ae,[Ae,Ae],(r,[e,i])=>e.evaluate(r)%i.evaluate(r)],ln2:[Ae,[],()=>Math.LN2],pi:[Ae,[],()=>Math.PI],e:[Ae,[],()=>Math.E],"^":[Ae,[Ae,Ae],(r,[e,i])=>Math.pow(e.evaluate(r),i.evaluate(r))],sqrt:[Ae,[Ae],(r,[e])=>Math.sqrt(e.evaluate(r))],log10:[Ae,[Ae],(r,[e])=>Math.log(e.evaluate(r))/Math.LN10],ln:[Ae,[Ae],(r,[e])=>Math.log(e.evaluate(r))],log2:[Ae,[Ae],(r,[e])=>Math.log(e.evaluate(r))/Math.LN2],sin:[Ae,[Ae],(r,[e])=>Math.sin(e.evaluate(r))],cos:[Ae,[Ae],(r,[e])=>Math.cos(e.evaluate(r))],tan:[Ae,[Ae],(r,[e])=>Math.tan(e.evaluate(r))],asin:[Ae,[Ae],(r,[e])=>Math.asin(e.evaluate(r))],acos:[Ae,[Ae],(r,[e])=>Math.acos(e.evaluate(r))],atan:[Ae,[Ae],(r,[e])=>Math.atan(e.evaluate(r))],min:[Ae,es(Ae),(r,e)=>Math.min(...e.map(i=>i.evaluate(r)))],max:[Ae,es(Ae),(r,e)=>Math.max(...e.map(i=>i.evaluate(r)))],abs:[Ae,[Ae],(r,[e])=>Math.abs(e.evaluate(r))],round:[Ae,[Ae],(r,[e])=>{const i=e.evaluate(r);return i<0?-Math.round(-i):Math.round(i)}],floor:[Ae,[Ae],(r,[e])=>Math.floor(e.evaluate(r))],ceil:[Ae,[Ae],(r,[e])=>Math.ceil(e.evaluate(r))],"filter-==":[it,[tt,ot],(r,[e,i])=>r.properties()[e.value]===i.value],"filter-id-==":[it,[ot],(r,[e])=>r.id()===e.value],"filter-type-==":[it,[tt],(r,[e])=>r.geometryType()===e.value],"filter-<":[it,[tt,ot],(r,[e,i])=>{const s=r.properties()[e.value],o=i.value;return typeof s==typeof o&&s<o}],"filter-id-<":[it,[ot],(r,[e])=>{const i=r.id(),s=e.value;return typeof i==typeof s&&i<s}],"filter->":[it,[tt,ot],(r,[e,i])=>{const s=r.properties()[e.value],o=i.value;return typeof s==typeof o&&s>o}],"filter-id->":[it,[ot],(r,[e])=>{const i=r.id(),s=e.value;return typeof i==typeof s&&i>s}],"filter-<=":[it,[tt,ot],(r,[e,i])=>{const s=r.properties()[e.value],o=i.value;return typeof s==typeof o&&s<=o}],"filter-id-<=":[it,[ot],(r,[e])=>{const i=r.id(),s=e.value;return typeof i==typeof s&&i<=s}],"filter->=":[it,[tt,ot],(r,[e,i])=>{const s=r.properties()[e.value],o=i.value;return typeof s==typeof o&&s>=o}],"filter-id->=":[it,[ot],(r,[e])=>{const i=r.id(),s=e.value;return typeof i==typeof s&&i>=s}],"filter-has":[it,[ot],(r,[e])=>e.value in r.properties()],"filter-has-id":[it,[],r=>r.id()!==null&&r.id()!==void 0],"filter-type-in":[it,[Zi(tt)],(r,[e])=>e.value.indexOf(r.geometryType())>=0],"filter-id-in":[it,[Zi(ot)],(r,[e])=>e.value.indexOf(r.id())>=0],"filter-in-small":[it,[tt,Zi(ot)],(r,[e,i])=>i.value.indexOf(r.properties()[e.value])>=0],"filter-in-large":[it,[tt,Zi(ot)],(r,[e,i])=>function(s,o,u,h){for(;u<=h;){const f=u+h>>1;if(o[f]===s)return!0;o[f]>s?h=f-1:u=f+1}return!1}(r.properties()[e.value],i.value,0,i.value.length-1)],all:{type:it,overloads:[[[it,it],(r,[e,i])=>e.evaluate(r)&&i.evaluate(r)],[es(it),(r,e)=>{for(const i of e)if(!i.evaluate(r))return!1;return!0}]]},any:{type:it,overloads:[[[it,it],(r,[e,i])=>e.evaluate(r)||i.evaluate(r)],[es(it),(r,e)=>{for(const i of e)if(i.evaluate(r))return!0;return!1}]]},"!":[it,[it],(r,[e])=>!e.evaluate(r)],"is-supported-script":[it,[tt],(r,[e])=>{const i=r.globals&&r.globals.isSupportedScript;return!i||i(e.evaluate(r))}],upcase:[tt,[tt],(r,[e])=>e.evaluate(r).toUpperCase()],downcase:[tt,[tt],(r,[e])=>e.evaluate(r).toLowerCase()],concat:[tt,es(ot),(r,e)=>e.map(i=>ws(i.evaluate(r))).join("")],"resolved-locale":[tt,[gs],(r,[e])=>e.evaluate(r).resolvedLocale()]});class pl{constructor(e,i,s){this.expression=e,this._warningHistory={},this._evaluator=new tl,this._defaultValue=i?function(o){if(o.type==="color"&&ho(o.default))return new dt(0,0,0,0);switch(o.type){case"color":return dt.parse(o.default)||null;case"padding":return Ii.parse(o.default)||null;case"numberArray":return Ei.parse(o.default)||null;case"colorArray":return At.parse(o.default)||null;case"variableAnchorOffsetCollection":return ei.parse(o.default)||null;case"projectionDefinition":return $i.parse(o.default)||null;default:return o.default===void 0?null:o.default}}(i):null,this._enumValues=i&&i.type==="enum"?i.values:null,this._globalState=s}evaluateWithoutErrorHandling(e,i,s,o,u,h){return this._globalState&&(e=hn(e,this._globalState)),this._evaluator.globals=e,this._evaluator.feature=i,this._evaluator.featureState=s,this._evaluator.canonical=o,this._evaluator.availableImages=u||null,this._evaluator.formattedSection=h,this.expression.evaluate(this._evaluator)}evaluate(e,i,s,o,u,h){this._globalState&&(e=hn(e,this._globalState)),this._evaluator.globals=e,this._evaluator.feature=i||null,this._evaluator.featureState=s||null,this._evaluator.canonical=o,this._evaluator.availableImages=u||null,this._evaluator.formattedSection=h||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 We(`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 po(r){return Array.isArray(r)&&r.length>0&&typeof r[0]=="string"&&r[0]in Es}function ts(r,e,i){const s=new Qs(Es,lo,[],e?function(u){const h={color:_r,string:tt,number:Ae,enum:tt,boolean:it,formatted:_s,padding:Ua,numberArray:Ws,colorArray:$s,projectionDefinition:ms,resolvedImage:ys,variableAnchorOffsetCollection:Hs};return u.type==="array"?Zi(h[u.value]||ot,u.length):h[u.type]}(e):void 0),o=s.parse(r,void 0,void 0,void 0,e&&e.type==="string"?{typeAnnotation:"coerce"}:void 0);return o?Fc(new pl(o,e,i)):Cs(s.errors)}class fo{constructor(e,i,s){this.kind=e,this._styleExpression=i,this.isStateDependent=e!=="constant"&&!ua(i.expression),this.globalStateRefs=pa(i.expression),this._globalState=s}evaluateWithoutErrorHandling(e,i,s,o,u,h){return this._globalState&&(e=hn(e,this._globalState)),this._styleExpression.evaluateWithoutErrorHandling(e,i,s,o,u,h)}evaluate(e,i,s,o,u,h){return this._globalState&&(e=hn(e,this._globalState)),this._styleExpression.evaluate(e,i,s,o,u,h)}}class fl{constructor(e,i,s,o,u){this.kind=e,this.zoomStops=s,this._styleExpression=i,this.isStateDependent=e!=="camera"&&!ua(i.expression),this.globalStateRefs=pa(i.expression),this.interpolationType=o,this._globalState=u}evaluateWithoutErrorHandling(e,i,s,o,u,h){return this._globalState&&(e=hn(e,this._globalState)),this._styleExpression.evaluateWithoutErrorHandling(e,i,s,o,u,h)}evaluate(e,i,s,o,u,h){return this._globalState&&(e=hn(e,this._globalState)),this._styleExpression.evaluate(e,i,s,o,u,h)}interpolationFactor(e,i,s){return this.interpolationType?Fi.interpolationFactor(this.interpolationType,e,i,s):0}}function jc(r,e,i){const s=ts(r,e,i);if(s.result==="error")return s;const o=s.value.expression,u=co(o);if(!u&&!As(e))return Cs([new kt("","data expressions not supported")]);const h=uo(o,["zoom"]);if(!h&&!Bc(e))return Cs([new kt("","zoom expressions not supported")]);const f=mo(o);return f||h?f instanceof kt?Cs([f]):f instanceof Fi&&!dl(e)?Cs([new kt("",'"interpolate" expressions cannot be used with this property')]):Fc(f?new fl(u?"camera":"composite",s.value,f.labels,f instanceof Fi?f.interpolation:void 0,i):new fo(u?"constant":"source",s.value,i)):Cs([new kt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class da{constructor(e,i){this._parameters=e,this._specification=i,_t(this,Oc(this._parameters,this._specification))}static deserialize(e){return new da(e._parameters,e._specification)}static serialize(e){return{_parameters:e._parameters,_specification:e._specification}}}function mo(r){let e=null;if(r instanceof Xn)e=mo(r.result);else if(r instanceof ci){for(const i of r.args)if(e=mo(i),e)break}else(r instanceof Yn||r instanceof Fi)&&r.input instanceof vr&&r.input.name==="zoom"&&(e=r);return e instanceof kt||r.eachChild(i=>{const s=mo(i);s instanceof kt?e=s:!e&&s?e=new kt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):e&&s&&e!==s&&(e=new kt("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),e}function pa(r,e=new Set){return r instanceof ca&&e.add(r.key),r.eachChild(i=>{pa(i,e)}),e}function hn(r,e){const{zoom:i,heatmapDensity:s,elevation:o,lineProgress:u,isSupportedScript:h,accumulated:f}=r??{};return{zoom:i,heatmapDensity:s,elevation:o,lineProgress:u,isSupportedScript:h,accumulated:f,globalState:e}}function go(r){if(r===!0||r===!1)return!0;if(!Array.isArray(r)||r.length===0)return!1;switch(r[0]){case"has":return r.length>=2&&r[1]!=="$id"&&r[1]!=="$type";case"in":return r.length>=3&&(typeof r[1]!="string"||Array.isArray(r[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return r.length!==3||Array.isArray(r[1])||Array.isArray(r[2]);case"any":case"all":for(const e of r.slice(1))if(!go(e)&&typeof e!="boolean")return!1;return!0;default:return!0}}const uh={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function fa(r,e){if(r==null)return{filter:()=>!0,needGeometry:!1,getGlobalStateRefs:()=>new Set};go(r)||(r=_o(r));const i=ts(r,uh,e);if(i.result==="error")throw new Error(i.value.map(s=>`${s.key}: ${s.message}`).join(", "));return{filter:(s,o,u)=>i.value.evaluate(s,o,{},u),needGeometry:Nc(r),getGlobalStateRefs:()=>pa(i.value.expression)}}function hh(r,e){return r<e?-1:r>e?1:0}function Nc(r){if(!Array.isArray(r))return!1;if(r[0]==="within"||r[0]==="distance")return!0;for(let e=1;e<r.length;e++)if(Nc(r[e]))return!0;return!1}function _o(r){if(!r)return!0;const e=r[0];return r.length<=1?e!=="any":e==="=="?yo(r[1],r[2],"=="):e==="!="?xo(yo(r[1],r[2],"==")):e==="<"||e===">"||e==="<="||e===">="?yo(r[1],r[2],e):e==="any"?(i=r.slice(1),["any"].concat(i.map(_o))):e==="all"?["all"].concat(r.slice(1).map(_o)):e==="none"?["all"].concat(r.slice(1).map(_o).map(xo)):e==="in"?ml(r[1],r.slice(2)):e==="!in"?xo(ml(r[1],r.slice(2))):e==="has"?Uc(r[1]):e!=="!has"||xo(Uc(r[1]));var i}function yo(r,e,i){switch(r){case"$type":return[`filter-type-${i}`,e];case"$id":return[`filter-id-${i}`,e];default:return[`filter-${i}`,r,e]}}function ml(r,e){if(e.length===0)return!1;switch(r){case"$type":return["filter-type-in",["literal",e]];case"$id":return["filter-id-in",["literal",e]];default:return e.length>200&&!e.some(i=>typeof i!=typeof e[0])?["filter-in-large",r,["literal",e.sort(hh)]]:["filter-in-small",r,["literal",e]]}}function Uc(r){switch(r){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",r]}}function xo(r){return["!",r]}function vo(r){const e=typeof r;if(e==="number"||e==="boolean"||e==="string"||r==null)return JSON.stringify(r);if(Array.isArray(r)){let o="[";for(const u of r)o+=`${vo(u)},`;return`${o}]`}const i=Object.keys(r).sort();let s="{";for(let o=0;o<i.length;o++)s+=`${JSON.stringify(i[o])}:${vo(r[i[o]])},`;return`${s}}`}function Gc(r){let e="";for(const i of Ge)e+=`/${vo(r[i])}`;return e}function gl(r){const e=r.value;return e?[new Ce(r.key,e,"constants have been deprecated as of v8")]:[]}function Yt(r){return r instanceof Number||r instanceof String||r instanceof Boolean?r.valueOf():r}function is(r){if(Array.isArray(r))return r.map(is);if(r instanceof Object&&!(r instanceof Number||r instanceof String||r instanceof Boolean)){const e={};for(const i in r)e[i]=is(r[i]);return e}return Yt(r)}function sr(r){const e=r.key,i=r.value,s=r.valueSpec||{},o=r.objectElementValidators||{},u=r.style,h=r.styleSpec,f=r.validateSpec;let g=[];const y=ut(i);if(y!=="object")return[new Ce(e,i,`object expected, ${y} found`)];for(const v in i){const b=v.split(".")[0],S=Ks(s,b)||s["*"];let P;if(Ks(o,b))P=o[b];else if(Ks(s,b)){if(i[v]===void 0)continue;P=f}else if(o["*"])P=o["*"];else{if(!s["*"]){g.push(new Ce(e,i[v],`unknown property "${v}"`));continue}P=f}g=g.concat(P({key:(e&&`${e}.`)+v,value:i[v],valueSpec:S,style:u,styleSpec:h,object:i,objectKey:v,validateSpec:f},i))}for(const v in s)o[v]||s[v].required&&s[v].default===void 0&&i[v]===void 0&&g.push(new Ce(e,i,`missing required property "${v}"`));return g}function _l(r){const e=r.value,i=r.valueSpec,s=r.style,o=r.styleSpec,u=r.key,h=r.arrayElementValidator||r.validateSpec;if(ut(e)!=="array")return[new Ce(u,e,`array expected, ${ut(e)} found`)];if(i.length&&e.length!==i.length)return[new Ce(u,e,`array length ${i.length} expected, length ${e.length} found`)];let f={type:i.value,values:i.values};o.$version<7&&(f.function=i.function),ut(i.value)==="object"&&(f=i.value);let g=[];for(let y=0;y<e.length;y++)g=g.concat(h({array:e,arrayIndex:y,value:e[y],valueSpec:f,validateSpec:r.validateSpec,style:s,styleSpec:o,key:`${u}[${y}]`}));return g}function ma(r){const e=r.key,i=r.value,s=r.valueSpec;let o=ut(i);return o==="number"&&i!=i&&(o="NaN"),o!=="number"?[new Ce(e,i,`number expected, ${o} found`)]:"minimum"in s&&i<s.minimum?[new Ce(e,i,`${i} is less than the minimum value ${s.minimum}`)]:"maximum"in s&&i>s.maximum?[new Ce(e,i,`${i} is greater than the maximum value ${s.maximum}`)]:[]}function yl(r){const e=r.valueSpec,i=Yt(r.value.type);let s,o,u,h={};const f=i!=="categorical"&&r.value.property===void 0,g=!f,y=ut(r.value.stops)==="array"&&ut(r.value.stops[0])==="array"&&ut(r.value.stops[0][0])==="object",v=sr({key:r.key,value:r.value,valueSpec:r.styleSpec.function,validateSpec:r.validateSpec,style:r.style,styleSpec:r.styleSpec,objectElementValidators:{stops:function(P){if(i==="identity")return[new Ce(P.key,P.value,'identity function may not have a "stops" property')];let C=[];const D=P.value;return C=C.concat(_l({key:P.key,value:D,valueSpec:P.valueSpec,validateSpec:P.validateSpec,style:P.style,styleSpec:P.styleSpec,arrayElementValidator:b})),ut(D)==="array"&&D.length===0&&C.push(new Ce(P.key,D,"array must have at least one stop")),C},default:function(P){return P.validateSpec({key:P.key,value:P.value,valueSpec:e,validateSpec:P.validateSpec,style:P.style,styleSpec:P.styleSpec})}}});return i==="identity"&&f&&v.push(new Ce(r.key,r.value,'missing required property "property"')),i==="identity"||r.value.stops||v.push(new Ce(r.key,r.value,'missing required property "stops"')),i==="exponential"&&r.valueSpec.expression&&!dl(r.valueSpec)&&v.push(new Ce(r.key,r.value,"exponential functions not supported")),r.styleSpec.$version>=8&&(g&&!As(r.valueSpec)?v.push(new Ce(r.key,r.value,"property functions not supported")):f&&!Bc(r.valueSpec)&&v.push(new Ce(r.key,r.value,"zoom functions not supported"))),i!=="categorical"&&!y||r.value.property!==void 0||v.push(new Ce(r.key,r.value,'"property" property is required')),v;function b(P){let C=[];const D=P.value,R=P.key;if(ut(D)!=="array")return[new Ce(R,D,`array expected, ${ut(D)} found`)];if(D.length!==2)return[new Ce(R,D,`array length 2 expected, length ${D.length} found`)];if(y){if(ut(D[0])!=="object")return[new Ce(R,D,`object expected, ${ut(D[0])} found`)];if(D[0].zoom===void 0)return[new Ce(R,D,"object stop key must have zoom")];if(D[0].value===void 0)return[new Ce(R,D,"object stop key must have value")];if(u&&u>Yt(D[0].zoom))return[new Ce(R,D[0].zoom,"stop zoom values must appear in ascending order")];Yt(D[0].zoom)!==u&&(u=Yt(D[0].zoom),o=void 0,h={}),C=C.concat(sr({key:`${R}[0]`,value:D[0],valueSpec:{zoom:{}},validateSpec:P.validateSpec,style:P.style,styleSpec:P.styleSpec,objectElementValidators:{zoom:ma,value:S}}))}else C=C.concat(S({key:`${R}[0]`,value:D[0],validateSpec:P.validateSpec,style:P.style,styleSpec:P.styleSpec},D));return po(is(D[1]))?C.concat([new Ce(`${R}[1]`,D[1],"expressions are not allowed in function stops.")]):C.concat(P.validateSpec({key:`${R}[1]`,value:D[1],valueSpec:e,validateSpec:P.validateSpec,style:P.style,styleSpec:P.styleSpec}))}function S(P,C){const D=ut(P.value),R=Yt(P.value),V=P.value!==null?P.value:C;if(s){if(D!==s)return[new Ce(P.key,V,`${D} stop domain type must match previous stop domain type ${s}`)]}else s=D;if(D!=="number"&&D!=="string"&&D!=="boolean")return[new Ce(P.key,V,"stop domain value must be a number, string, or boolean")];if(D!=="number"&&i!=="categorical"){let q=`number expected, ${D} found`;return As(e)&&i===void 0&&(q+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new Ce(P.key,V,q)]}return i!=="categorical"||D!=="number"||isFinite(R)&&Math.floor(R)===R?i!=="categorical"&&D==="number"&&o!==void 0&&R<o?[new Ce(P.key,V,"stop domain values must appear in ascending order")]:(o=R,i==="categorical"&&R in h?[new Ce(P.key,V,"stop domain values must be unique")]:(h[R]=!0,[])):[new Ce(P.key,V,`integer expected, found ${R}`)]}}function Rn(r){const e=(r.expressionContext==="property"?jc:ts)(is(r.value),r.valueSpec);if(e.result==="error")return e.value.map(s=>new Ce(`${r.key}${s.key}`,r.value,s.message));const i=e.value.expression||e.value._styleExpression.expression;if(r.expressionContext==="property"&&r.propertyKey==="text-font"&&!i.outputDefined())return[new Ce(r.key,r.value,`Invalid data expression for "${r.propertyKey}". Output values must be contained as literals within the expression.`)];if(r.expressionContext==="property"&&r.propertyType==="layout"&&!ua(i))return[new Ce(r.key,r.value,'"feature-state" data expressions are not supported with layout properties.')];if(r.expressionContext==="filter"&&!ua(i))return[new Ce(r.key,r.value,'"feature-state" data expressions are not supported with filters.')];if(r.expressionContext&&r.expressionContext.indexOf("cluster")===0){if(!uo(i,["zoom","feature-state"]))return[new Ce(r.key,r.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if(r.expressionContext==="cluster-initial"&&!co(i))return[new Ce(r.key,r.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function ga(r){const e=r.key,i=r.value,s=ut(i);return s!=="string"?[new Ce(e,i,`color expected, ${s} found`)]:dt.parse(String(i))?[]:[new Ce(e,i,`color expected, "${i}" found`)]}function rs(r){const e=r.key,i=r.value,s=r.valueSpec,o=[];return Array.isArray(s.values)?s.values.indexOf(Yt(i))===-1&&o.push(new Ce(e,i,`expected one of [${s.values.join(", ")}], ${JSON.stringify(i)} found`)):Object.keys(s.values).indexOf(Yt(i))===-1&&o.push(new Ce(e,i,`expected one of [${Object.keys(s.values).join(", ")}], ${JSON.stringify(i)} found`)),o}function _a(r){return go(is(r.value))?Rn(_t({},r,{expressionContext:"filter",valueSpec:{value:"boolean"}})):ya(r)}function ya(r){const e=r.value,i=r.key;if(ut(e)!=="array")return[new Ce(i,e,`array expected, ${ut(e)} found`)];const s=r.styleSpec;let o,u=[];if(e.length<1)return[new Ce(i,e,"filter array must have at least 1 element")];switch(u=u.concat(rs({key:`${i}[0]`,value:e[0],valueSpec:s.filter_operator,style:r.style,styleSpec:r.styleSpec})),Yt(e[0])){case"<":case"<=":case">":case">=":e.length>=2&&Yt(e[1])==="$type"&&u.push(new Ce(i,e,`"$type" cannot be use with operator "${e[0]}"`));case"==":case"!=":e.length!==3&&u.push(new Ce(i,e,`filter array for operator "${e[0]}" must have 3 elements`));case"in":case"!in":e.length>=2&&(o=ut(e[1]),o!=="string"&&u.push(new Ce(`${i}[1]`,e[1],`string expected, ${o} found`)));for(let h=2;h<e.length;h++)o=ut(e[h]),Yt(e[1])==="$type"?u=u.concat(rs({key:`${i}[${h}]`,value:e[h],valueSpec:s.geometry_type,style:r.style,styleSpec:r.styleSpec})):o!=="string"&&o!=="number"&&o!=="boolean"&&u.push(new Ce(`${i}[${h}]`,e[h],`string, number, or boolean expected, ${o} found`));break;case"any":case"all":case"none":for(let h=1;h<e.length;h++)u=u.concat(ya({key:`${i}[${h}]`,value:e[h],style:r.style,styleSpec:r.styleSpec}));break;case"has":case"!has":o=ut(e[1]),e.length!==2?u.push(new Ce(i,e,`filter array for "${e[0]}" operator must have 2 elements`)):o!=="string"&&u.push(new Ce(`${i}[1]`,e[1],`string expected, ${o} found`))}return u}function qc(r,e){const i=r.key,s=r.validateSpec,o=r.style,u=r.styleSpec,h=r.value,f=r.objectKey,g=u[`${e}_${r.layerType}`];if(!g)return[];const y=f.match(/^(.*)-transition$/);if(e==="paint"&&y&&g[y[1]]&&g[y[1]].transition)return s({key:i,value:h,valueSpec:u.transition,style:o,styleSpec:u});const v=r.valueSpec||g[f];if(!v)return[new Ce(i,h,`unknown property "${f}"`)];let b;if(ut(h)==="string"&&As(v)&&!v.tokens&&(b=/^{([^}]+)}$/.exec(h)))return[new Ce(i,h,`"${f}" does not support interpolation syntax
|
||
Use an identity property function instead: \`{ "type": "identity", "property": ${JSON.stringify(b[1])} }\`.`)];const S=[];return r.layerType==="symbol"&&f==="text-font"&&ho(is(h))&&Yt(h.type)==="identity"&&S.push(new Ce(i,h,'"text-font" does not support identity functions')),S.concat(s({key:r.key,value:h,valueSpec:v,style:o,styleSpec:u,expressionContext:"property",propertyType:e,propertyKey:f}))}function Zc(r){return qc(r,"paint")}function $c(r){return qc(r,"layout")}function Wc(r){let e=[];const i=r.value,s=r.key,o=r.style,u=r.styleSpec;if(ut(i)!=="object")return[new Ce(s,i,`object expected, ${ut(i)} found`)];i.type||i.ref||e.push(new Ce(s,i,'either "type" or "ref" is required'));let h=Yt(i.type);const f=Yt(i.ref);if(i.id){const g=Yt(i.id);for(let y=0;y<r.arrayIndex;y++){const v=o.layers[y];Yt(v.id)===g&&e.push(new Ce(s,i.id,`duplicate layer id "${i.id}", previously used at line ${v.id.__line__}`))}}if("ref"in i){let g;["type","source","source-layer","filter","layout"].forEach(y=>{y in i&&e.push(new Ce(s,i[y],`"${y}" is prohibited for ref layers`))}),o.layers.forEach(y=>{Yt(y.id)===f&&(g=y)}),g?g.ref?e.push(new Ce(s,i.ref,"ref cannot reference another ref layer")):h=Yt(g.type):e.push(new Ce(s,i.ref,`ref layer "${f}" not found`))}else if(h!=="background")if(i.source){const g=o.sources&&o.sources[i.source],y=g&&Yt(g.type);g?y==="vector"&&h==="raster"?e.push(new Ce(s,i.source,`layer "${i.id}" requires a raster source`)):y!=="raster-dem"&&h==="hillshade"||y!=="raster-dem"&&h==="color-relief"?e.push(new Ce(s,i.source,`layer "${i.id}" requires a raster-dem source`)):y==="raster"&&h!=="raster"?e.push(new Ce(s,i.source,`layer "${i.id}" requires a vector source`)):y!=="vector"||i["source-layer"]?y==="raster-dem"&&h!=="hillshade"&&h!=="color-relief"?e.push(new Ce(s,i.source,"raster-dem source can only be used with layer type 'hillshade' or 'color-relief'.")):h!=="line"||!i.paint||!i.paint["line-gradient"]||y==="geojson"&&g.lineMetrics||e.push(new Ce(s,i,`layer "${i.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):e.push(new Ce(s,i,`layer "${i.id}" must specify a "source-layer"`)):e.push(new Ce(s,i.source,`source "${i.source}" not found`))}else e.push(new Ce(s,i,'missing required property "source"'));return e=e.concat(sr({key:s,value:i,valueSpec:u.layer,style:r.style,styleSpec:r.styleSpec,validateSpec:r.validateSpec,objectElementValidators:{"*":()=>[],type:()=>r.validateSpec({key:`${s}.type`,value:i.type,valueSpec:u.layer.type,style:r.style,styleSpec:r.styleSpec,validateSpec:r.validateSpec,object:i,objectKey:"type"}),filter:_a,layout:g=>sr({layer:i,key:g.key,value:g.value,style:g.style,styleSpec:g.styleSpec,validateSpec:g.validateSpec,objectElementValidators:{"*":y=>$c(_t({layerType:h},y))}}),paint:g=>sr({layer:i,key:g.key,value:g.value,style:g.style,styleSpec:g.styleSpec,validateSpec:g.validateSpec,objectElementValidators:{"*":y=>Zc(_t({layerType:h},y))}})}})),e}function Ln(r){const e=r.value,i=r.key,s=ut(e);return s!=="string"?[new Ce(i,e,`string expected, ${s} found`)]:[]}const Hc={promoteId:function({key:r,value:e}){if(ut(e)==="string")return Ln({key:r,value:e});{const i=[];for(const s in e)i.push(...Ln({key:`${r}.${s}`,value:e[s]}));return i}}};function xl(r){const e=r.value,i=r.key,s=r.styleSpec,o=r.style,u=r.validateSpec;if(!e.type)return[new Ce(i,e,'"type" is required')];const h=Yt(e.type);let f;switch(h){case"vector":case"raster":return f=sr({key:i,value:e,valueSpec:s[`source_${h.replace("-","_")}`],style:r.style,styleSpec:s,objectElementValidators:Hc,validateSpec:u}),f;case"raster-dem":return f=function(g){var y;const v=(y=g.sourceName)!==null&&y!==void 0?y:"",b=g.value,S=g.styleSpec,P=S.source_raster_dem,C=g.style;let D=[];const R=ut(b);if(b===void 0)return D;if(R!=="object")return D.push(new Ce("source_raster_dem",b,`object expected, ${R} found`)),D;const V=Yt(b.encoding)==="custom",q=["redFactor","greenFactor","blueFactor","baseShift"],O=g.value.encoding?`"${g.value.encoding}"`:"Default";for(const j in b)!V&&q.includes(j)?D.push(new Ce(j,b[j],`In "${v}": "${j}" is only valid when "encoding" is set to "custom". ${O} encoding found`)):P[j]?D=D.concat(g.validateSpec({key:j,value:b[j],valueSpec:P[j],validateSpec:g.validateSpec,style:C,styleSpec:S})):D.push(new Ce(j,b[j],`unknown property "${j}"`));return D}({sourceName:i,value:e,style:r.style,styleSpec:s,validateSpec:u}),f;case"geojson":if(f=sr({key:i,value:e,valueSpec:s.source_geojson,style:o,styleSpec:s,validateSpec:u,objectElementValidators:Hc}),e.cluster)for(const g in e.clusterProperties){const[y,v]=e.clusterProperties[g],b=typeof y=="string"?[y,["accumulated"],["get",g]]:y;f.push(...Rn({key:`${i}.${g}.map`,value:v,expressionContext:"cluster-map"})),f.push(...Rn({key:`${i}.${g}.reduce`,value:b,expressionContext:"cluster-reduce"}))}return f;case"video":return sr({key:i,value:e,valueSpec:s.source_video,style:o,validateSpec:u,styleSpec:s});case"image":return sr({key:i,value:e,valueSpec:s.source_image,style:o,validateSpec:u,styleSpec:s});case"canvas":return[new Ce(i,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return rs({key:`${i}.type`,value:e.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]}})}}function vl(r){const e=r.value,i=r.styleSpec,s=i.light,o=r.style;let u=[];const h=ut(e);if(e===void 0)return u;if(h!=="object")return u=u.concat([new Ce("light",e,`object expected, ${h} found`)]),u;for(const f in e){const g=f.match(/^(.*)-transition$/);u=u.concat(g&&s[g[1]]&&s[g[1]].transition?r.validateSpec({key:f,value:e[f],valueSpec:i.transition,validateSpec:r.validateSpec,style:o,styleSpec:i}):s[f]?r.validateSpec({key:f,value:e[f],valueSpec:s[f],validateSpec:r.validateSpec,style:o,styleSpec:i}):[new Ce(f,e[f],`unknown property "${f}"`)])}return u}function xa(r){const e=r.value,i=r.styleSpec,s=i.sky,o=r.style,u=ut(e);if(e===void 0)return[];if(u!=="object")return[new Ce("sky",e,`object expected, ${u} found`)];let h=[];for(const f in e)h=h.concat(s[f]?r.validateSpec({key:f,value:e[f],valueSpec:s[f],style:o,styleSpec:i}):[new Ce(f,e[f],`unknown property "${f}"`)]);return h}function Xc(r){const e=r.value,i=r.styleSpec,s=i.terrain,o=r.style;let u=[];const h=ut(e);if(e===void 0)return u;if(h!=="object")return u=u.concat([new Ce("terrain",e,`object expected, ${h} found`)]),u;for(const f in e)u=u.concat(s[f]?r.validateSpec({key:f,value:e[f],valueSpec:s[f],validateSpec:r.validateSpec,style:o,styleSpec:i}):[new Ce(f,e[f],`unknown property "${f}"`)]);return u}function bl(r){let e=[];const i=r.value,s=r.key;if(Array.isArray(i)){const o=[],u=[];for(const h in i)i[h].id&&o.includes(i[h].id)&&e.push(new Ce(s,i,`all the sprites' ids must be unique, but ${i[h].id} is duplicated`)),o.push(i[h].id),i[h].url&&u.includes(i[h].url)&&e.push(new Ce(s,i,`all the sprites' URLs must be unique, but ${i[h].url} is duplicated`)),u.push(i[h].url),e=e.concat(sr({key:`${s}[${h}]`,value:i[h],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:r.validateSpec}));return e}return Ln({key:s,value:i})}function wl(r){return!!r&&r.constructor===Object}function Yc(r){return wl(r.value)?[]:[new Ce(r.key,r.value,`object expected, ${ut(r.value)} found`)]}const Tl={"*":()=>[],array:_l,boolean:function(r){const e=r.value,i=r.key,s=ut(e);return s!=="boolean"?[new Ce(i,e,`boolean expected, ${s} found`)]:[]},number:ma,color:ga,constants:gl,enum:rs,filter:_a,function:yl,layer:Wc,object:sr,source:xl,light:vl,sky:xa,terrain:Xc,projection:function(r){const e=r.value,i=r.styleSpec,s=i.projection,o=r.style,u=ut(e);if(e===void 0)return[];if(u!=="object")return[new Ce("projection",e,`object expected, ${u} found`)];let h=[];for(const f in e)h=h.concat(s[f]?r.validateSpec({key:f,value:e[f],valueSpec:s[f],style:o,styleSpec:i}):[new Ce(f,e[f],`unknown property "${f}"`)]);return h},projectionDefinition:function(r){const e=r.key;let i=r.value;i=i instanceof String?i.valueOf():i;const s=ut(i);return s!=="array"||function(o){return Array.isArray(o)&&o.length===3&&typeof o[0]=="string"&&typeof o[1]=="string"&&typeof o[2]=="number"}(i)||function(o){return!!["interpolate","step","literal"].includes(o[0])}(i)?["array","string"].includes(s)?[]:[new Ce(e,i,`projection expected, invalid type "${s}" found`)]:[new Ce(e,i,`projection expected, invalid array ${JSON.stringify(i)} found`)]},string:Ln,formatted:function(r){return Ln(r).length===0?[]:Rn(r)},resolvedImage:function(r){return Ln(r).length===0?[]:Rn(r)},padding:function(r){const e=r.key,i=r.value;if(ut(i)==="array"){if(i.length<1||i.length>4)return[new Ce(e,i,`padding requires 1 to 4 values; ${i.length} values found`)];const s={type:"number"};let o=[];for(let u=0;u<i.length;u++)o=o.concat(r.validateSpec({key:`${e}[${u}]`,value:i[u],validateSpec:r.validateSpec,valueSpec:s}));return o}return ma({key:e,value:i,valueSpec:{}})},numberArray:function(r){const e=r.key,i=r.value;if(ut(i)==="array"){const s={type:"number"};if(i.length<1)return[new Ce(e,i,"array length at least 1 expected, length 0 found")];let o=[];for(let u=0;u<i.length;u++)o=o.concat(r.validateSpec({key:`${e}[${u}]`,value:i[u],validateSpec:r.validateSpec,valueSpec:s}));return o}return ma({key:e,value:i,valueSpec:{}})},colorArray:function(r){const e=r.key,i=r.value;if(ut(i)==="array"){if(i.length<1)return[new Ce(e,i,"array length at least 1 expected, length 0 found")];let s=[];for(let o=0;o<i.length;o++)s=s.concat(ga({key:`${e}[${o}]`,value:i[o]}));return s}return ga({key:e,value:i})},variableAnchorOffsetCollection:function(r){const e=r.key,i=r.value,s=ut(i),o=r.styleSpec;if(s!=="array"||i.length<1||i.length%2!=0)return[new Ce(e,i,"variableAnchorOffsetCollection requires a non-empty array of even length")];let u=[];for(let h=0;h<i.length;h+=2)u=u.concat(rs({key:`${e}[${h}]`,value:i[h],valueSpec:o.layout_symbol["text-anchor"]})),u=u.concat(_l({key:`${e}[${h+1}]`,value:i[h+1],valueSpec:{length:2,value:"number"},validateSpec:r.validateSpec,style:r.style,styleSpec:o}));return u},sprite:bl,state:Yc,fontFaces:function(r){const e=r.key,i=r.value,s=r.validateSpec,o=r.styleSpec,u=r.style;if(!wl(i))return[new Ce(e,i,`object expected, ${ut(i)} found`)];const h=[];for(const f in i){const g=i[f],y=ut(g);if(y==="string")h.push(...Ln({key:`${e}.${f}`,value:g}));else if(y==="array"){const v={url:{type:"string",required:!0},"unicode-range":{type:"array",value:"string"}};for(const[b,S]of g.entries())h.push(...sr({key:`${e}.${f}[${b}]`,value:S,valueSpec:v,styleSpec:o,style:u,validateSpec:s}))}else h.push(new Ce(`${e}.${f}`,g,`string or array expected, ${y} found`))}return h}};function va(r){const e=r.value,i=r.valueSpec,s=r.styleSpec;return r.validateSpec=va,i.expression&&ho(Yt(e))?yl(r):i.expression&&po(is(e))?Rn(r):i.type&&Tl[i.type]?Tl[i.type](r):sr(_t({},r,{valueSpec:i.type?s[i.type]:i}))}function Ds(r){const e=r.value,i=r.key,s=Ln(r);return s.length||(e.indexOf("{fontstack}")===-1&&s.push(new Ce(i,e,'"glyphs" url must include a "{fontstack}" token')),e.indexOf("{range}")===-1&&s.push(new Ce(i,e,'"glyphs" url must include a "{range}" token'))),s}function br(r,e=Q){let i=[];return i=i.concat(va({key:"",value:r,valueSpec:e.$root,styleSpec:e,style:r,validateSpec:va,objectElementValidators:{glyphs:Ds,"*":()=>[]}})),r.constants&&(i=i.concat(gl({key:"constants",value:r.constants}))),Kc(i)}function Dr(r){return function(e){return r(Object.assign({},e,{validateSpec:va}))}}function Kc(r){return[].concat(r).sort((e,i)=>e.line-i.line)}function zr(r){return function(...e){return Kc(r.apply(this,e))}}br.source=zr(Dr(xl)),br.sprite=zr(Dr(bl)),br.glyphs=zr(Dr(Ds)),br.light=zr(Dr(vl)),br.sky=zr(Dr(xa)),br.terrain=zr(Dr(Xc)),br.state=zr(Dr(Yc)),br.layer=zr(Dr(Wc)),br.filter=zr(Dr(_a)),br.paintProperty=zr(Dr(Zc)),br.layoutProperty=zr(Dr($c));const dh={type:"enum","property-type":"data-constant",expression:{interpolated:!1,parameters:["global-state"]},values:{visible:{},none:{}},transition:!1,default:"visible"};class ph{constructor(e,i){this._globalState=i,this.setValue(e)}evaluate(){var e;return(e=this._literalValue)!==null&&e!==void 0?e:this._compiledValue.evaluate({})}setValue(e){if(e==null||e==="visible"||e==="none")return this._literalValue=e==="none"?"none":"visible",this._compiledValue=void 0,void(this._globalStateRefs=new Set);const i=ts(e,dh,this._globalState);if(i.result==="error")throw this._literalValue="visible",this._compiledValue=void 0,new Error(i.value.map(s=>`${s.key}: ${s.message}`).join(", "));this._literalValue=void 0,this._compiledValue=i.value,this._globalStateRefs=pa(i.value.expression)}getGlobalStateRefs(){return this._globalStateRefs}}const ba=Q,qr=br,ar=qr.light,wa=qr.sky,Jc=qr.paintProperty,fh=qr.layoutProperty;function Qc(r,e){let i=!1;if(e&&e.length)for(const s of e)r.fire(new Me(new Error(s.message))),i=!0;return i}class dn{constructor(e,i,s){const o=this.cells=[];if(e instanceof ArrayBuffer){this.arrayBuffer=e;const h=new Int32Array(this.arrayBuffer);e=h[0],this.d=(i=h[1])+2*(s=h[2]);for(let g=0;g<this.d*this.d;g++){const y=h[3+g],v=h[3+g+1];o.push(y===v?null:h.subarray(y,v))}const f=h[3+o.length+1];this.keys=h.subarray(h[3+o.length],f),this.bboxes=h.subarray(f),this.insert=this._insertReadonly}else{this.d=i+2*s;for(let h=0;h<this.d*this.d;h++)o.push([]);this.keys=[],this.bboxes=[]}this.n=i,this.extent=e,this.padding=s,this.scale=i/e,this.uid=0;const u=s/i*e;this.min=-u,this.max=e+u}insert(e,i,s,o,u){this._forEachCell(i,s,o,u,this._insertCell,this.uid++,void 0,void 0),this.keys.push(e),this.bboxes.push(i),this.bboxes.push(s),this.bboxes.push(o),this.bboxes.push(u)}_insertReadonly(){throw new Error("Cannot insert into a GridIndex created from an ArrayBuffer.")}_insertCell(e,i,s,o,u,h){this.cells[u].push(h)}query(e,i,s,o,u){const h=this.min,f=this.max;if(e<=h&&i<=h&&f<=s&&f<=o&&!u)return Array.prototype.slice.call(this.keys);{const g=[];return this._forEachCell(e,i,s,o,this._queryCell,g,{},u),g}}_queryCell(e,i,s,o,u,h,f,g){const y=this.cells[u];if(y!==null){const v=this.keys,b=this.bboxes;for(let S=0;S<y.length;S++){const P=y[S];if(f[P]===void 0){const C=4*P;(g?g(b[C+0],b[C+1],b[C+2],b[C+3]):e<=b[C+2]&&i<=b[C+3]&&s>=b[C+0]&&o>=b[C+1])?(f[P]=!0,h.push(v[P])):f[P]=!1}}}}_forEachCell(e,i,s,o,u,h,f,g){const y=this._convertToCellCoord(e),v=this._convertToCellCoord(i),b=this._convertToCellCoord(s),S=this._convertToCellCoord(o);for(let P=y;P<=b;P++)for(let C=v;C<=S;C++){const D=this.d*C+P;if((!g||g(this._convertFromCellCoord(P),this._convertFromCellCoord(C),this._convertFromCellCoord(P+1),this._convertFromCellCoord(C+1)))&&u.call(this,e,i,s,o,D,h,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,i=3+this.cells.length+1+1;let s=0;for(let h=0;h<this.cells.length;h++)s+=this.cells[h].length;const o=new Int32Array(i+s+this.keys.length+this.bboxes.length);o[0]=this.extent,o[1]=this.n,o[2]=this.padding;let u=i;for(let h=0;h<e.length;h++){const f=e[h];o[3+h]=u,o.set(f,u),u+=f.length}return o[3+e.length]=u,o.set(this.keys,u),u+=this.keys.length,o[3+e.length+1]=u,o.set(this.bboxes,u),u+=this.bboxes.length,o.buffer}static serialize(e,i){const s=e.toArrayBuffer();return i&&i.push(s),{buffer:s}}static deserialize(e){return new dn(e.buffer)}}const Zr={};function Fe(r,e,i={}){if(Zr[r])throw new Error(`${r} is already registered.`);Object.defineProperty(e,"_classRegistryKey",{value:r,writeable:!1}),Zr[r]={klass:e,omit:i.omit||[],shallow:i.shallow||[]}}Fe("Object",Object),Fe("Set",Set),Fe("TransferableGridIndex",dn),Fe("Color",dt),Fe("Error",Error),Fe("AJAXError",B),Fe("ResolvedImage",ir),Fe("StylePropertyFunction",da),Fe("StyleExpression",pl,{omit:["_evaluator"]}),Fe("ZoomDependentExpression",fl),Fe("ZoomConstantExpression",fo),Fe("CompoundExpression",vr,{omit:["_evaluate"]});for(const r in Es)Es[r]._classRegistryKey||Fe(`Expression_${r}`,Es[r]);function eu(r){return r&&typeof ArrayBuffer<"u"&&(r instanceof ArrayBuffer||r.constructor&&r.constructor.name==="ArrayBuffer")}function Ta(r){return r.$name||r.constructor._classRegistryKey}function tu(r){return!function(e){if(e===null||typeof e!="object")return!1;const i=Ta(e);return!(!i||i==="Object")}(r)&&(r==null||typeof r=="boolean"||typeof r=="number"||typeof r=="string"||r instanceof Boolean||r instanceof Number||r instanceof String||r instanceof Date||r instanceof RegExp||r instanceof Blob||r instanceof Error||eu(r)||jn(r)||ArrayBuffer.isView(r)||r instanceof ImageData)}function pn(r,e){if(tu(r))return(eu(r)||jn(r))&&e&&e.push(r),ArrayBuffer.isView(r)&&e&&e.push(r.buffer),r instanceof ImageData&&e&&e.push(r.data.buffer),r;if(Array.isArray(r)){const u=[];for(const h of r)u.push(pn(h,e));return u}if(typeof r!="object")throw new Error("can't serialize object of type "+typeof r);const i=Ta(r);if(!i)throw new Error(`can't serialize object of unregistered class ${r.constructor.name}`);if(!Zr[i])throw new Error(`${i} is not registered.`);const{klass:s}=Zr[i],o=s.serialize?s.serialize(r,e):{};if(s.serialize){if(e&&o===e[e.length-1])throw new Error("statically serialized object won't survive transfer of $name property")}else{for(const u in r){if(!r.hasOwnProperty(u)||Zr[i].omit.indexOf(u)>=0)continue;const h=r[u];o[u]=Zr[i].shallow.indexOf(u)>=0?h:pn(h,e)}r instanceof Error&&(o.message=r.message)}if(o.$name)throw new Error("$name property is reserved for worker serialization logic.");return i!=="Object"&&(o.$name=i),o}function Sa(r){if(tu(r))return r;if(Array.isArray(r))return r.map(Sa);if(typeof r!="object")throw new Error("can't deserialize object of type "+typeof r);const e=Ta(r)||"Object";if(!Zr[e])throw new Error(`can't deserialize unregistered class ${e}`);const{klass:i}=Zr[e];if(!i)throw new Error(`can't deserialize unregistered class ${e}`);if(i.deserialize)return i.deserialize(r);const s=Object.create(i.prototype);for(const o of Object.keys(r)){if(o==="$name")continue;const u=r[o];s[o]=Zr[e].shallow.indexOf(o)>=0?u:Sa(u)}return s}class Sl{constructor(){this.first=!0}update(e,i){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=i):this.lastFloorZoom<s&&(this.lastIntegerZoom=s,this.lastIntegerZoomTime=i),e!==this.lastZoom&&(this.lastZoom=e,this.lastFloorZoom=s,!0))}}function mh(r){return/[\u02EA\u02EB\u2E80-\u2FDF\u2FF0-\u303F\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FD-\u30FF\u3105-\u312F\u31A0-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uF900-\uFA6D\uFA70-\uFAD9\uFE10-\uFE1F\uFE30-\uFE4F\uFF00-\uFFEF]|\uD81B[\uDFE0-\uDFFF]|[\uD81C-\uD822\uD840-\uD868\uD86A-\uD86D\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD88C][\uDC00-\uDFFF]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD1E\uDD80-\uDDF2]|\uD82B[\uDFF0-\uDFFF]|\uD82C[\uDC00-\uDEFB]|\uD83C[\uDE00-\uDEFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEAD\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD88D[\uDC00-\uDC79]/gim.test(String.fromCodePoint(r))}function ns(r){return/[\u02EA\u02EB\u1100-\u11FF\u1400-\u167F\u18B0-\u18F5\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u3007\u3012\u3013\u3020-\u302F\u3031-\u303F\u3041-\u3096\u309D-\u30FB\u30FD-\u30FF\u3105-\u312F\u3131-\u318E\u3190-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFE10-\uFE1F\uFE30-\uFE48\uFE50-\uFE57\uFE5F-\uFE62\uFE67-\uFE6F\uFF00-\uFF07\uFF0A-\uFF0C\uFF0E-\uFF19\uFF1F-\uFF3A\uFF3C\uFF3E\uFF40-\uFF5A\uFFE0-\uFFE2\uFFE4-\uFFE7]|\uD802[\uDD80-\uDD9F]|\uD805[\uDD80-\uDDFF]|\uD806[\uDE00-\uDEBF]|\uD811[\uDC00-\uDE7F]|\uD81B[\uDFE0-\uDFE4\uDFF0-\uDFF6]|[\uD81C-\uD822\uD83D\uD840-\uD868\uD86A-\uD86D\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD88C][\uDC00-\uDFFF]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD1E\uDD80-\uDDF2]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD30-\uDEFB]|\uD833[\uDEC0-\uDFCF]|\uD834[\uDC00-\uDDFF\uDEE0-\uDF7F]|\uD836[\uDC00-\uDEAF]|\uD83C[\uDC00-\uDE00\uDF00-\uDFFF]|\uD83E[\uDD00-\uDEFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEAD\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD88D[\uDC00-\uDC79]/gim.test(String.fromCodePoint(r))}function iu(r){return/\s/u.test(String.fromCodePoint(r))}function Pl(r){for(const e of r)if(ns(e.codePointAt(0)))return!0;return!1}function bo(r){for(const e of r)if(!wo(e.codePointAt(0)))return!1;return!0}function ru(r){const e=r.map(i=>{try{return new RegExp(`\\p{sc=${i}}`,"u").source}catch{return null}}).filter(i=>i);return new RegExp(e.join("|"),"u")}const Ml=ru(["Arab","Dupl","Mong","Ougr","Syrc"]);function wo(r){return!Ml.test(String.fromCodePoint(r))}function Il(r){return!(ns(r)||(e=r,/[\xA7\xA9\xAE\xB1\xBC-\xBE\xD7\xF7\u2016\u2020\u2021\u2030\u2031\u203B\u203C\u2042\u2047-\u2049\u2051\u2100-\u218F\u221E\u2234\u2235\u2300-\u2307\u230C-\u231F\u2324-\u2328\u232B\u237D-\u239A\u23BE-\u23CD\u23CF\u23D1-\u23DB\u23E2-\u2422\u2424-\u24FF\u25A0-\u2619\u2620-\u2767\u2776-\u2793\u2B12-\u2B2F\u2B50-\u2B59\u2BB8-\u2BEB\u3000-\u303F\u30A0-\u30FF\uE000-\uF8FF\uFE30-\uFE6F\uFF00-\uFFEF\uFFFC\uFFFD]|[\uDB80-\uDBFF][\uDC00-\uDFFF]/gim.test(String.fromCodePoint(e))));var e}const nu=ru(["Adlm","Arab","Armi","Avst","Chrs","Cprt","Egyp","Elym","Gara","Hatr","Hebr","Hung","Khar","Lydi","Mand","Mani","Mend","Merc","Mero","Narb","Nbat","Nkoo","Orkh","Palm","Phli","Phlp","Phnx","Prti","Rohg","Samr","Sarb","Sogo","Syrc","Thaa","Todr","Yezi"]);function El(r){return nu.test(String.fromCodePoint(r))}function su(r,e){return!(!e&&El(r)||/[\u0900-\u0DFF\u0F00-\u109F\u1780-\u17FF]/gim.test(String.fromCodePoint(r)))}function Cl(r){for(const e of r)if(El(e.codePointAt(0)))return!0;return!1}const fn=new class{constructor(){this.TIMEOUT=5e3,this.applyArabicShaping=null,this.processBidirectionalText=null,this.processStyledBidirectionalText=null,this.pluginStatus="unavailable",this.pluginURL=null,this.loadScriptResolve=()=>{}}setState(r){this.pluginStatus=r.pluginStatus,this.pluginURL=r.pluginURL}getState(){return{pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}}setMethods(r){if(fn.isParsed())throw new Error("RTL text plugin already registered.");this.applyArabicShaping=r.applyArabicShaping,this.processBidirectionalText=r.processBidirectionalText,this.processStyledBidirectionalText=r.processStyledBidirectionalText,this.loadScriptResolve()}isParsed(){return this.applyArabicShaping!=null&&this.processBidirectionalText!=null&&this.processStyledBidirectionalText!=null}getRTLTextPluginStatus(){return this.pluginStatus}syncState(r,e){return c(this,void 0,void 0,function*(){if(this.isParsed())return this.getState();if(r.pluginStatus!=="loading")return this.setState(r),r;const i=r.pluginURL,s=new Promise(u=>{this.loadScriptResolve=u});e(i);const o=new Promise(u=>setTimeout(()=>u(),this.TIMEOUT));if(yield Promise.race([s,o]),this.isParsed()){const u={pluginStatus:"loaded",pluginURL:i};return this.setState(u),u}throw this.setState({pluginStatus:"error",pluginURL:""}),new Error(`RTL Text Plugin failed to import scripts from ${i}`)})}};class Pt{constructor(e,i){this.isSupportedScript=au,this.zoom=e,i?(this.now=i.now||0,this.fadeDuration=i.fadeDuration||0,this.zoomHistory=i.zoomHistory||new Sl,this.transition=i.transition||{}):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Sl,this.transition={})}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const e=this.zoom,i=e-Math.floor(e),s=this.crossFadingFactor();return e>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:i+(1-i)*s}:{fromScale:.5,toScale:1,t:1-(1-s)*i}}}function au(r){return function(e,i){for(const s of e)if(!su(s.codePointAt(0),i))return!1;return!0}(r,fn.getRTLTextPluginStatus()==="loaded")}const To="-transition";class Pa{constructor(e,i,s){this.property=e,this.value=i,this.expression=function(o,u,h){if(ho(o))return new da(o,u);if(po(o)){const f=jc(o,u,h);if(f.result==="error")throw new Error(f.value.map(g=>`${g.key}: ${g.message}`).join(", "));return f.value}{let f=o;return u.type==="color"&&typeof o=="string"?f=dt.parse(o):u.type!=="padding"||typeof o!="number"&&!Array.isArray(o)?u.type!=="numberArray"||typeof o!="number"&&!Array.isArray(o)?u.type!=="colorArray"||typeof o!="string"&&!Array.isArray(o)?u.type==="variableAnchorOffsetCollection"&&Array.isArray(o)?f=ei.parse(o):u.type==="projectionDefinition"&&typeof o=="string"&&(f=$i.parse(o)):f=At.parse(o):f=Ei.parse(o):f=Ii.parse(o),{globalStateRefs:new Set,_globalState:null,kind:"constant",evaluate:()=>f}}}(i===void 0?e.specification.default:i,e.specification,s)}isDataDriven(){return this.expression.kind==="source"||this.expression.kind==="composite"}getGlobalStateRefs(){return this.expression.globalStateRefs||new Set}possiblyEvaluate(e,i,s){return this.property.possiblyEvaluate(this,e,i,s)}}class Al{constructor(e,i){this.property=e,this.value=new Pa(e,void 0,i)}transitioned(e,i){return new zl(this.property,this.value,i,_i({},e.transition,this.transition),e.now)}untransitioned(){return new zl(this.property,this.value,null,{},0)}}class Dl{constructor(e,i){this._properties=e,this._values=Object.create(e.defaultTransitionablePropertyValues),this._globalState=i}getValue(e){return oi(this._values[e].value.value)}setValue(e,i){Object.prototype.hasOwnProperty.call(this._values,e)||(this._values[e]=new Al(this._values[e].property,this._globalState)),this._values[e].value=new Pa(this._values[e].property,i===null?void 0:oi(i),this._globalState)}getTransition(e){return oi(this._values[e].transition)}setTransition(e,i){Object.prototype.hasOwnProperty.call(this._values,e)||(this._values[e]=new Al(this._values[e].property,this._globalState)),this._values[e].transition=oi(i)||void 0}serialize(){const e={};for(const i of Object.keys(this._values)){const s=this.getValue(i);s!==void 0&&(e[i]=s);const o=this.getTransition(i);o!==void 0&&(e[`${i}${To}`]=o)}return e}transitioned(e,i){const s=new ou(this._properties);for(const o of Object.keys(this._values))s._values[o]=this._values[o].transitioned(e,i._values[o]);return s}untransitioned(){const e=new ou(this._properties);for(const i of Object.keys(this._values))e._values[i]=this._values[i].untransitioned();return e}}class zl{constructor(e,i,s,o,u){this.property=e,this.value=i,this.begin=u+o.delay||0,this.end=this.begin+o.duration||0,e.specification.transition&&(o.delay||o.duration)&&(this.prior=s)}possiblyEvaluate(e,i,s){const o=e.now||0,u=this.value.possiblyEvaluate(e,i,s),h=this.prior;if(h){if(o>this.end)return this.prior=null,u;if(this.value.isDataDriven())return this.prior=null,u;if(o<this.begin)return h.possiblyEvaluate(e,i,s);{const f=(o-this.begin)/(this.end-this.begin);return this.property.interpolate(h.possiblyEvaluate(e,i,s),u,Qi(f))}}return u}}class ou{constructor(e){this._properties=e,this._values=Object.create(e.defaultTransitioningPropertyValues)}possiblyEvaluate(e,i,s){const o=new Ma(this._properties);for(const u of Object.keys(this._values))o._values[u]=this._values[u].possiblyEvaluate(e,i,s);return o}hasTransition(){for(const e of Object.keys(this._values))if(this._values[e].prior)return!0;return!1}}class gh{constructor(e,i){this._properties=e,this._values=Object.create(e.defaultPropertyValues),this._globalState=i}hasValue(e){return this._values[e].value!==void 0}getValue(e){return oi(this._values[e].value)}setValue(e,i){this._values[e]=new Pa(this._values[e].property,i===null?void 0:oi(i),this._globalState)}serialize(){const e={};for(const i of Object.keys(this._values)){const s=this.getValue(i);s!==void 0&&(e[i]=s)}return e}possiblyEvaluate(e,i,s){const o=new Ma(this._properties);for(const u of Object.keys(this._values))o._values[u]=this._values[u].possiblyEvaluate(e,i,s);return o}}class kr{constructor(e,i,s){this.property=e,this.value=i,this.parameters=s}isConstant(){return this.value.kind==="constant"}constantOr(e){return this.value.kind==="constant"?this.value.value:e}evaluate(e,i,s,o){return this.property.evaluate(this.value,this.parameters,e,i,s,o)}}class Ma{constructor(e){this._properties=e,this._values=Object.create(e.defaultPossiblyEvaluatedValues)}get(e){return this._values[e]}}class Ue{constructor(e){this.specification=e}possiblyEvaluate(e,i){if(e.isDataDriven())throw new Error("Value should not be data driven");return e.expression.evaluate(i)}interpolate(e,i,s){const o=xi[this.specification.type];return o?o(e,i,s):e}}class Ye{constructor(e,i){this.specification=e,this.overrides=i}possiblyEvaluate(e,i,s,o){return new kr(this,e.expression.kind==="constant"||e.expression.kind==="camera"?{kind:"constant",value:e.expression.evaluate(i,null,{},s,o)}:e.expression,i)}interpolate(e,i,s){if(e.value.kind!=="constant"||i.value.kind!=="constant")return e;if(e.value.value===void 0||i.value.value===void 0)return new kr(this,{kind:"constant",value:void 0},e.parameters);const o=xi[this.specification.type];if(o){const u=o(e.value.value,i.value.value,s);return new kr(this,{kind:"constant",value:u},e.parameters)}return e}evaluate(e,i,s,o,u,h){return e.kind==="constant"?e.value:e.evaluate(i,s,o,u,h)}}class Fn extends Ye{possiblyEvaluate(e,i,s,o){if(e.value===void 0)return new kr(this,{kind:"constant",value:void 0},i);if(e.expression.kind==="constant"){const u=e.expression.evaluate(i,null,{},s,o),h=e.property.specification.type==="resolvedImage"&&typeof u!="string"?u.name:u,f=this._calculate(h,h,h,i);return new kr(this,{kind:"constant",value:f},i)}if(e.expression.kind==="camera"){const u=this._calculate(e.expression.evaluate({zoom:i.zoom-1}),e.expression.evaluate({zoom:i.zoom}),e.expression.evaluate({zoom:i.zoom+1}),i);return new kr(this,{kind:"constant",value:u},i)}return new kr(this,e.expression,i)}evaluate(e,i,s,o,u,h){if(e.kind==="source"){const f=e.evaluate(i,s,o,u,h);return this._calculate(f,f,f,i)}return e.kind==="composite"?this._calculate(e.evaluate({zoom:Math.floor(i.zoom)-1},s,o),e.evaluate({zoom:Math.floor(i.zoom)},s,o),e.evaluate({zoom:Math.floor(i.zoom)+1},s,o),i):e.value}_calculate(e,i,s,o){return o.zoom>o.zoomHistory.lastIntegerZoom?{from:e,to:i}:{from:s,to:i}}interpolate(e){return e}}class lu{constructor(e){this.specification=e}possiblyEvaluate(e,i,s,o){if(e.value!==void 0){if(e.expression.kind==="constant"){const u=e.expression.evaluate(i,null,{},s,o);return this._calculate(u,u,u,i)}return this._calculate(e.expression.evaluate(new Pt(Math.floor(i.zoom-1),i)),e.expression.evaluate(new Pt(Math.floor(i.zoom),i)),e.expression.evaluate(new Pt(Math.floor(i.zoom+1),i)),i)}}_calculate(e,i,s,o){return o.zoom>o.zoomHistory.lastIntegerZoom?{from:e,to:i}:{from:s,to:i}}interpolate(e){return e}}class zs{constructor(e){this.specification=e}possiblyEvaluate(e,i,s,o){return!!e.expression.evaluate(i,null,{},s,o)}interpolate(){return!1}}class Bi{constructor(e){this.properties=e,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(const i in e){const s=e[i];s.specification.overridable&&this.overridableProperties.push(i);const o=this.defaultPropertyValues[i]=new Pa(s,void 0,void 0),u=this.defaultTransitionablePropertyValues[i]=new Al(s,void 0);this.defaultTransitioningPropertyValues[i]=u.untransitioned(),this.defaultPossiblyEvaluatedValues[i]=o.possiblyEvaluate({})}}}Fe("DataDrivenProperty",Ye),Fe("DataConstantProperty",Ue),Fe("CrossFadedDataDrivenProperty",Fn),Fe("CrossFadedProperty",lu),Fe("ColorRampProperty",zs);class Rr extends xe{constructor(e,i,s){if(super(),this.id=e.id,this.type=e.type,this._globalState=s,this._featureFilter={filter:()=>!0,needGeometry:!1,getGlobalStateRefs:()=>new Set},this._visibilityExpression=function(o,u){return new ph(o,u)}(this.visibility,s),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,this._featureFilter=fa(e.filter,s)),i.layout&&(this._unevaluatedLayout=new gh(i.layout,s)),i.paint)){this._transitionablePaint=new Dl(i.paint,s);for(const o in e.paint)this.setPaintProperty(o,e.paint[o],{validate:!1});for(const o in e.layout)this.setLayoutProperty(o,e.layout[o],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Ma(i.paint)}}setFilter(e){this.filter=e,this._featureFilter=fa(e,this._globalState)}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(e){return e==="visibility"?this.visibility:this._unevaluatedLayout.getValue(e)}getLayoutAffectingGlobalStateRefs(){const e=new Set;for(const i of this._visibilityExpression.getGlobalStateRefs())e.add(i);if(this._unevaluatedLayout)for(const i in this._unevaluatedLayout._values){const s=this._unevaluatedLayout._values[i];for(const o of s.getGlobalStateRefs())e.add(o)}for(const i of this._featureFilter.getGlobalStateRefs())e.add(i);return e}getPaintAffectingGlobalStateRefs(){var e;const i=new globalThis.Map;if(this._transitionablePaint)for(const s in this._transitionablePaint._values){const o=this._transitionablePaint._values[s].value;for(const u of o.getGlobalStateRefs()){const h=(e=i.get(u))!==null&&e!==void 0?e:[];h.push({name:s,value:o.value}),i.set(u,h)}}return i}getVisibilityAffectingGlobalStateRefs(){return this._visibilityExpression.getGlobalStateRefs()}setLayoutProperty(e,i,s={}){if(i==null||!this._validate(fh,`layers.${this.id}.layout.${e}`,e,i,s))return e==="visibility"?(this.visibility=i,this._visibilityExpression.setValue(i),void this.recalculateVisibility()):void this._unevaluatedLayout.setValue(e,i)}getPaintProperty(e){return e.endsWith(To)?this._transitionablePaint.getTransition(e.slice(0,-11)):this._transitionablePaint.getValue(e)}setPaintProperty(e,i,s={}){if(i!=null&&this._validate(Jc,`layers.${this.id}.paint.${e}`,e,i,s))return!1;if(e.endsWith(To))return this._transitionablePaint.setTransition(e.slice(0,-11),i||void 0),!1;{const o=this._transitionablePaint._values[e],u=o.property.specification["property-type"]==="cross-faded-data-driven",h=o.value.isDataDriven(),f=o.value;this._transitionablePaint.setValue(e,i),this._handleSpecialPaintPropertyUpdate(e);const g=this._transitionablePaint._values[e].value;return g.isDataDriven()||h||u||this._handleOverridablePaintPropertyUpdate(e,f,g)}}_handleSpecialPaintPropertyUpdate(e){}_handleOverridablePaintPropertyUpdate(e,i,s){return!1}isHidden(e=this.minzoom,i=!1){return!!(this.minzoom&&e<(i?Math.floor(this.minzoom):this.minzoom))||!!(this.maxzoom&&e>=this.maxzoom)||this._evaluatedVisibility==="none"}updateTransitions(e){this._transitioningPaint=this._transitionablePaint.transitioned(e,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculateVisibility(){this._evaluatedVisibility=this._visibilityExpression.evaluate()}recalculate(e,i){e.getCrossfadeParameters&&(this._crossfadeParameters=e.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(e,void 0,i)),this.paint=this._transitioningPaint.possiblyEvaluate(e,void 0,i)}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),Nr(e,(i,s)=>!(i===void 0||s==="layout"&&!Object.keys(i).length||s==="paint"&&!Object.keys(i).length))}_validate(e,i,s,o,u={}){return(!u||u.validate!==!1)&&Qc(this,e.call(qr,{key:i,layerType:this.type,objectKey:s,value:o,styleSpec:Q,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(const e in this.paint._values){const i=this.paint.get(e);if(i instanceof kr&&As(i.property.specification)&&(i.value.kind==="source"||i.value.kind==="composite")&&i.value.isStateDependent)return!0}return!1}}let kl;var cu={get paint(){return kl=kl||new Bi({"raster-opacity":new Ue(Q.paint_raster["raster-opacity"]),"raster-hue-rotate":new Ue(Q.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new Ue(Q.paint_raster["raster-brightness-min"]),"raster-brightness-max":new Ue(Q.paint_raster["raster-brightness-max"]),"raster-saturation":new Ue(Q.paint_raster["raster-saturation"]),"raster-contrast":new Ue(Q.paint_raster["raster-contrast"]),"raster-resampling":new Ue(Q.paint_raster["raster-resampling"]),"raster-fade-duration":new Ue(Q.paint_raster["raster-fade-duration"])})}};class uu extends Rr{constructor(e,i){super(e,cu,i)}}const _h={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class Ia{constructor(e,i){this._structArray=e,this._pos1=i*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class Nt{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(e,i){return e._trim(),i&&(e.isTransferred=!0,i.push(e.arrayBuffer)),{length:e.length,arrayBuffer:e.arrayBuffer}}static deserialize(e){const i=Object.create(this.prototype);return i.arrayBuffer=e.arrayBuffer,i.length=e.length,i.capacity=e.arrayBuffer.byteLength/i.bytesPerElement,i._refreshViews(),i}_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 i=this.uint8;this._refreshViews(),i&&this.uint8.set(i)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function Kt(r,e=1){let i=0,s=0;return{members:r.map(o=>{const u=_h[o.type].BYTES_PER_ELEMENT,h=i=hu(i,Math.max(e,u)),f=o.components||1;return s=Math.max(s,u),i+=u*f,{name:o.name,type:o.type,components:f,offset:h}}),size:hu(i,Math.max(s,e)),alignment:e}}function hu(r,e){return Math.ceil(r/e)*e}class $r extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i){const s=this.length;return this.resize(s+1),this.emplace(s,e,i)}emplace(e,i,s){const o=2*e;return this.int16[o+0]=i,this.int16[o+1]=s,e}}$r.prototype.bytesPerElement=4,Fe("StructArrayLayout2i4",$r);class So extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,s){const o=this.length;return this.resize(o+1),this.emplace(o,e,i,s)}emplace(e,i,s,o){const u=3*e;return this.int16[u+0]=i,this.int16[u+1]=s,this.int16[u+2]=o,e}}So.prototype.bytesPerElement=6,Fe("StructArrayLayout3i6",So);class Rl extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,s,o){const u=this.length;return this.resize(u+1),this.emplace(u,e,i,s,o)}emplace(e,i,s,o,u){const h=4*e;return this.int16[h+0]=i,this.int16[h+1]=s,this.int16[h+2]=o,this.int16[h+3]=u,e}}Rl.prototype.bytesPerElement=8,Fe("StructArrayLayout4i8",Rl);class Ll extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,s,o,u,h){const f=this.length;return this.resize(f+1),this.emplace(f,e,i,s,o,u,h)}emplace(e,i,s,o,u,h,f){const g=6*e;return this.int16[g+0]=i,this.int16[g+1]=s,this.int16[g+2]=o,this.int16[g+3]=u,this.int16[g+4]=h,this.int16[g+5]=f,e}}Ll.prototype.bytesPerElement=12,Fe("StructArrayLayout2i4i12",Ll);class Po extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,s,o,u,h){const f=this.length;return this.resize(f+1),this.emplace(f,e,i,s,o,u,h)}emplace(e,i,s,o,u,h,f){const g=4*e,y=8*e;return this.int16[g+0]=i,this.int16[g+1]=s,this.uint8[y+4]=o,this.uint8[y+5]=u,this.uint8[y+6]=h,this.uint8[y+7]=f,e}}Po.prototype.bytesPerElement=8,Fe("StructArrayLayout2i4ub8",Po);class Ea extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i){const s=this.length;return this.resize(s+1),this.emplace(s,e,i)}emplace(e,i,s){const o=2*e;return this.float32[o+0]=i,this.float32[o+1]=s,e}}Ea.prototype.bytesPerElement=8,Fe("StructArrayLayout2f8",Ea);class Fl extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i,s,o,u,h,f,g,y,v){const b=this.length;return this.resize(b+1),this.emplace(b,e,i,s,o,u,h,f,g,y,v)}emplace(e,i,s,o,u,h,f,g,y,v,b){const S=10*e;return this.uint16[S+0]=i,this.uint16[S+1]=s,this.uint16[S+2]=o,this.uint16[S+3]=u,this.uint16[S+4]=h,this.uint16[S+5]=f,this.uint16[S+6]=g,this.uint16[S+7]=y,this.uint16[S+8]=v,this.uint16[S+9]=b,e}}Fl.prototype.bytesPerElement=20,Fe("StructArrayLayout10ui20",Fl);class mn extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i,s,o,u,h,f,g){const y=this.length;return this.resize(y+1),this.emplace(y,e,i,s,o,u,h,f,g)}emplace(e,i,s,o,u,h,f,g,y){const v=8*e;return this.uint16[v+0]=i,this.uint16[v+1]=s,this.uint16[v+2]=o,this.uint16[v+3]=u,this.uint16[v+4]=h,this.uint16[v+5]=f,this.uint16[v+6]=g,this.uint16[v+7]=y,e}}mn.prototype.bytesPerElement=16,Fe("StructArrayLayout8ui16",mn);class Mo extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i,s,o,u,h,f,g,y,v,b,S){const P=this.length;return this.resize(P+1),this.emplace(P,e,i,s,o,u,h,f,g,y,v,b,S)}emplace(e,i,s,o,u,h,f,g,y,v,b,S,P){const C=12*e;return this.int16[C+0]=i,this.int16[C+1]=s,this.int16[C+2]=o,this.int16[C+3]=u,this.uint16[C+4]=h,this.uint16[C+5]=f,this.uint16[C+6]=g,this.uint16[C+7]=y,this.int16[C+8]=v,this.int16[C+9]=b,this.int16[C+10]=S,this.int16[C+11]=P,e}}Mo.prototype.bytesPerElement=24,Fe("StructArrayLayout4i4ui4i24",Mo);class Ca extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i,s){const o=this.length;return this.resize(o+1),this.emplace(o,e,i,s)}emplace(e,i,s,o){const u=3*e;return this.float32[u+0]=i,this.float32[u+1]=s,this.float32[u+2]=o,e}}Ca.prototype.bytesPerElement=12,Fe("StructArrayLayout3f12",Ca);class Io extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e){const i=this.length;return this.resize(i+1),this.emplace(i,e)}emplace(e,i){return this.uint32[1*e+0]=i,e}}Io.prototype.bytesPerElement=4,Fe("StructArrayLayout1ul4",Io);class Aa extends Nt{_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,i,s,o,u,h,f,g,y){const v=this.length;return this.resize(v+1),this.emplace(v,e,i,s,o,u,h,f,g,y)}emplace(e,i,s,o,u,h,f,g,y,v){const b=10*e,S=5*e;return this.int16[b+0]=i,this.int16[b+1]=s,this.int16[b+2]=o,this.int16[b+3]=u,this.int16[b+4]=h,this.int16[b+5]=f,this.uint32[S+3]=g,this.uint16[b+8]=y,this.uint16[b+9]=v,e}}Aa.prototype.bytesPerElement=20,Fe("StructArrayLayout6i1ul2ui20",Aa);class Bl extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,s,o,u,h){const f=this.length;return this.resize(f+1),this.emplace(f,e,i,s,o,u,h)}emplace(e,i,s,o,u,h,f){const g=6*e;return this.int16[g+0]=i,this.int16[g+1]=s,this.int16[g+2]=o,this.int16[g+3]=u,this.int16[g+4]=h,this.int16[g+5]=f,e}}Bl.prototype.bytesPerElement=12,Fe("StructArrayLayout2i2i2i12",Bl);class ks extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,s,o,u){const h=this.length;return this.resize(h+1),this.emplace(h,e,i,s,o,u)}emplace(e,i,s,o,u,h){const f=4*e,g=8*e;return this.float32[f+0]=i,this.float32[f+1]=s,this.float32[f+2]=o,this.int16[g+6]=u,this.int16[g+7]=h,e}}ks.prototype.bytesPerElement=16,Fe("StructArrayLayout2f1f2i16",ks);class ss extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,i,s,o,u,h){const f=this.length;return this.resize(f+1),this.emplace(f,e,i,s,o,u,h)}emplace(e,i,s,o,u,h,f){const g=16*e,y=4*e,v=8*e;return this.uint8[g+0]=i,this.uint8[g+1]=s,this.float32[y+1]=o,this.float32[y+2]=u,this.int16[v+6]=h,this.int16[v+7]=f,e}}ss.prototype.bytesPerElement=16,Fe("StructArrayLayout2ub2f2i16",ss);class Eo extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i,s){const o=this.length;return this.resize(o+1),this.emplace(o,e,i,s)}emplace(e,i,s,o){const u=3*e;return this.uint16[u+0]=i,this.uint16[u+1]=s,this.uint16[u+2]=o,e}}Eo.prototype.bytesPerElement=6,Fe("StructArrayLayout3ui6",Eo);class Co extends Nt{_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,i,s,o,u,h,f,g,y,v,b,S,P,C,D,R,V){const q=this.length;return this.resize(q+1),this.emplace(q,e,i,s,o,u,h,f,g,y,v,b,S,P,C,D,R,V)}emplace(e,i,s,o,u,h,f,g,y,v,b,S,P,C,D,R,V,q){const O=24*e,j=12*e,Y=48*e;return this.int16[O+0]=i,this.int16[O+1]=s,this.uint16[O+2]=o,this.uint16[O+3]=u,this.uint32[j+2]=h,this.uint32[j+3]=f,this.uint32[j+4]=g,this.uint16[O+10]=y,this.uint16[O+11]=v,this.uint16[O+12]=b,this.float32[j+7]=S,this.float32[j+8]=P,this.uint8[Y+36]=C,this.uint8[Y+37]=D,this.uint8[Y+38]=R,this.uint32[j+10]=V,this.int16[O+22]=q,e}}Co.prototype.bytesPerElement=48,Fe("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",Co);class as extends Nt{_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,i,s,o,u,h,f,g,y,v,b,S,P,C,D,R,V,q,O,j,Y,ie,ue,be,Te,Ie,ke,Ee){const Se=this.length;return this.resize(Se+1),this.emplace(Se,e,i,s,o,u,h,f,g,y,v,b,S,P,C,D,R,V,q,O,j,Y,ie,ue,be,Te,Ie,ke,Ee)}emplace(e,i,s,o,u,h,f,g,y,v,b,S,P,C,D,R,V,q,O,j,Y,ie,ue,be,Te,Ie,ke,Ee,Se){const ye=32*e,Be=16*e;return this.int16[ye+0]=i,this.int16[ye+1]=s,this.int16[ye+2]=o,this.int16[ye+3]=u,this.int16[ye+4]=h,this.int16[ye+5]=f,this.int16[ye+6]=g,this.int16[ye+7]=y,this.uint16[ye+8]=v,this.uint16[ye+9]=b,this.uint16[ye+10]=S,this.uint16[ye+11]=P,this.uint16[ye+12]=C,this.uint16[ye+13]=D,this.uint16[ye+14]=R,this.uint16[ye+15]=V,this.uint16[ye+16]=q,this.uint16[ye+17]=O,this.uint16[ye+18]=j,this.uint16[ye+19]=Y,this.uint16[ye+20]=ie,this.uint16[ye+21]=ue,this.uint16[ye+22]=be,this.uint32[Be+12]=Te,this.float32[Be+13]=Ie,this.float32[Be+14]=ke,this.uint16[ye+30]=Ee,this.uint16[ye+31]=Se,e}}as.prototype.bytesPerElement=64,Fe("StructArrayLayout8i15ui1ul2f2ui64",as);class Ao extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e){const i=this.length;return this.resize(i+1),this.emplace(i,e)}emplace(e,i){return this.float32[1*e+0]=i,e}}Ao.prototype.bytesPerElement=4,Fe("StructArrayLayout1f4",Ao);class Ol extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i,s){const o=this.length;return this.resize(o+1),this.emplace(o,e,i,s)}emplace(e,i,s,o){const u=3*e;return this.uint16[6*e+0]=i,this.float32[u+1]=s,this.float32[u+2]=o,e}}Ol.prototype.bytesPerElement=12,Fe("StructArrayLayout1ui2f12",Ol);class Do extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i,s){const o=this.length;return this.resize(o+1),this.emplace(o,e,i,s)}emplace(e,i,s,o){const u=4*e;return this.uint32[2*e+0]=i,this.uint16[u+2]=s,this.uint16[u+3]=o,e}}Do.prototype.bytesPerElement=8,Fe("StructArrayLayout1ul2ui8",Do);class Vl extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,i){const s=this.length;return this.resize(s+1),this.emplace(s,e,i)}emplace(e,i,s){const o=2*e;return this.uint16[o+0]=i,this.uint16[o+1]=s,e}}Vl.prototype.bytesPerElement=4,Fe("StructArrayLayout2ui4",Vl);class d extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e){const i=this.length;return this.resize(i+1),this.emplace(i,e)}emplace(e,i){return this.uint16[1*e+0]=i,e}}d.prototype.bytesPerElement=2,Fe("StructArrayLayout1ui2",d);class t extends Nt{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,i,s,o){const u=this.length;return this.resize(u+1),this.emplace(u,e,i,s,o)}emplace(e,i,s,o,u){const h=4*e;return this.float32[h+0]=i,this.float32[h+1]=s,this.float32[h+2]=o,this.float32[h+3]=u,e}}t.prototype.bytesPerElement=16,Fe("StructArrayLayout4f16",t);class n extends Ia{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 Pe(this.anchorPointX,this.anchorPointY)}}n.prototype.size=20;class a extends Aa{get(e){return new n(this,e)}}Fe("CollisionBoxArray",a);class l extends Ia{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]}}l.prototype.size=48;class p extends Co{get(e){return new l(this,e)}}Fe("PlacedSymbolArray",p);class m extends Ia{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 collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}m.prototype.size=64;class _ extends as{get(e){return new m(this,e)}}Fe("SymbolInstanceArray",_);class x extends Ao{getoffsetX(e){return this.float32[1*e+0]}}Fe("GlyphOffsetArray",x);class w extends So{getx(e){return this.int16[3*e+0]}gety(e){return this.int16[3*e+1]}gettileUnitDistanceFromAnchor(e){return this.int16[3*e+2]}}Fe("SymbolLineVertexArray",w);class T extends Ia{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}T.prototype.size=12;class I extends Ol{get(e){return new T(this,e)}}Fe("TextAnchorOffsetArray",I);class M extends Ia{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]}}M.prototype.size=8;class z extends Do{get(e){return new M(this,e)}}Fe("FeatureIndexArray",z);class F extends $r{}class N extends $r{}class G extends $r{}class U extends Ll{}class $ extends Po{}class K extends Ea{}class Z extends Fl{}class J extends mn{}class te extends Mo{}class X extends Ca{}class ae extends Io{}class _e extends Bl{}class fe extends ss{}class pe extends Eo{}class ge extends Vl{}const De=Kt([{name:"a_pos",components:2,type:"Int16"}],4),{members:ze}=De;class ve{constructor(e=[]){this._forceNewSegmentOnNextPrepare=!1,this.segments=e}prepareSegment(e,i,s,o){const u=this.segments[this.segments.length-1];return e>ve.MAX_VERTEX_ARRAY_LENGTH&&Mi(`Max vertices per segment is ${ve.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${e}. Consider using the \`fillLargeMeshArrays\` function if you require meshes with more than ${ve.MAX_VERTEX_ARRAY_LENGTH} vertices.`),this._forceNewSegmentOnNextPrepare||!u||u.vertexLength+e>ve.MAX_VERTEX_ARRAY_LENGTH||u.sortKey!==o?this.createNewSegment(i,s,o):u}createNewSegment(e,i,s){const o={vertexOffset:e.length,primitiveOffset:i.length,vertexLength:0,primitiveLength:0,vaos:{}};return s!==void 0&&(o.sortKey=s),this._forceNewSegmentOnNextPrepare=!1,this.segments.push(o),o}getOrCreateLatestSegment(e,i,s){return this.prepareSegment(0,e,i,s)}forceNewSegmentOnNextPrepare(){this._forceNewSegmentOnNextPrepare=!0}get(){return this.segments}destroy(){for(const e of this.segments)for(const i in e.vaos)e.vaos[i].destroy()}static simpleSegment(e,i,s,o){return new ve([{vertexOffset:e,primitiveOffset:i,vertexLength:s,primitiveLength:o,vaos:{},sortKey:0}])}}function Ve(r,e){return 256*(r=Pi(Math.floor(r),0,255))+Pi(Math.floor(e),0,255)}ve.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,Fe("SegmentVector",ve);const nt=Kt([{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"}]),yt=Kt([{name:"a_dasharray_from",components:4,type:"Uint16"},{name:"a_dasharray_to",components:4,type:"Uint16"}]);var Et,Mt,Rt,xt={exports:{}},ni={exports:{}},Lt={exports:{}},vi=function(){if(Rt)return xt.exports;Rt=1;var r=(Et||(Et=1,ni.exports=function(i,s){var o,u,h,f,g,y,v,b;for(u=i.length-(o=3&i.length),h=s,g=3432918353,y=461845907,b=0;b<u;)v=255&i.charCodeAt(b)|(255&i.charCodeAt(++b))<<8|(255&i.charCodeAt(++b))<<16|(255&i.charCodeAt(++b))<<24,++b,h=27492+(65535&(f=5*(65535&(h=(h^=v=(65535&(v=(v=(65535&v)*g+(((v>>>16)*g&65535)<<16)&4294967295)<<15|v>>>17))*y+(((v>>>16)*y&65535)<<16)&4294967295)<<13|h>>>19))+((5*(h>>>16)&65535)<<16)&4294967295))+((58964+(f>>>16)&65535)<<16);switch(v=0,o){case 3:v^=(255&i.charCodeAt(b+2))<<16;case 2:v^=(255&i.charCodeAt(b+1))<<8;case 1:h^=v=(65535&(v=(v=(65535&(v^=255&i.charCodeAt(b)))*g+(((v>>>16)*g&65535)<<16)&4294967295)<<15|v>>>17))*y+(((v>>>16)*y&65535)<<16)&4294967295}return h^=i.length,h=2246822507*(65535&(h^=h>>>16))+((2246822507*(h>>>16)&65535)<<16)&4294967295,h=3266489909*(65535&(h^=h>>>13))+((3266489909*(h>>>16)&65535)<<16)&4294967295,(h^=h>>>16)>>>0}),ni.exports),e=(Mt||(Mt=1,Lt.exports=function(i,s){for(var o,u=i.length,h=s^u,f=0;u>=4;)o=1540483477*(65535&(o=255&i.charCodeAt(f)|(255&i.charCodeAt(++f))<<8|(255&i.charCodeAt(++f))<<16|(255&i.charCodeAt(++f))<<24))+((1540483477*(o>>>16)&65535)<<16),h=1540483477*(65535&h)+((1540483477*(h>>>16)&65535)<<16)^(o=1540483477*(65535&(o^=o>>>24))+((1540483477*(o>>>16)&65535)<<16)),u-=4,++f;switch(u){case 3:h^=(255&i.charCodeAt(f+2))<<16;case 2:h^=(255&i.charCodeAt(f+1))<<8;case 1:h=1540483477*(65535&(h^=255&i.charCodeAt(f)))+((1540483477*(h>>>16)&65535)<<16)}return h=1540483477*(65535&(h^=h>>>13))+((1540483477*(h>>>16)&65535)<<16),(h^=h>>>15)>>>0}),Lt.exports);return xt.exports=r,xt.exports.murmur3=r,xt.exports.murmur2=e,xt.exports}(),qt=He(vi);class Zt{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(e,i,s,o){this.ids.push(Oi(e)),this.positions.push(i,s,o)}getPositions(e){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");const i=Oi(e);let s=0,o=this.ids.length-1;for(;s<o;){const h=s+o>>1;this.ids[h]>=i?o=h:s=h+1}const u=[];for(;this.ids[s]===i;)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,i){const s=new Float64Array(e.ids),o=new Uint32Array(e.positions);return gn(s,o,0,s.length-1),i&&i.push(s.buffer,o.buffer),{ids:s,positions:o}}static deserialize(e){const i=new Zt;return i.ids=e.ids,i.positions=e.positions,i.indexed=!0,i}}function Oi(r){const e=+r;return!isNaN(e)&&e<=Number.MAX_SAFE_INTEGER?e:qt(String(r))}function gn(r,e,i,s){for(;i<s;){const o=r[i+s>>1];let u=i-1,h=s+1;for(;;){do u++;while(r[u]<o);do h--;while(r[h]>o);if(u>=h)break;Wr(r,u,h),Wr(e,3*u,3*h),Wr(e,3*u+1,3*h+1),Wr(e,3*u+2,3*h+2)}h-i<s-h?(gn(r,e,i,h),i=h+1):(gn(r,e,h+1,s),s=h)}}function Wr(r,e,i){const s=r[e];r[e]=r[i],r[i]=s}Fe("FeaturePositionMap",Zt);class Vi{constructor(e,i){this.gl=e.gl,this.location=i}}class _n extends Vi{constructor(e,i){super(e,i),this.current=0}set(e){this.current!==e&&(this.current=e,this.gl.uniform1f(this.location,e))}}class Da extends Vi{constructor(e,i){super(e,i),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 za extends Vi{constructor(e,i){super(e,i),this.current=dt.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 Rs=new Float32Array(16);function Wi(r){return[Ve(255*r.r,255*r.g),Ve(255*r.b,255*r.a)]}class wr{constructor(e,i,s){this.value=e,this.uniformNames=i.map(o=>`u_${o}`),this.type=s}setUniform(e,i,s){e.set(s.constantOr(this.value))}getBinding(e,i,s){return this.type==="color"?new za(e,i):new _n(e,i)}}class or{constructor(e,i){this.uniformNames=i.map(s=>`u_${s}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(e,i){this.pixelRatioFrom=i.pixelRatio,this.pixelRatioTo=e.pixelRatio,this.patternFrom=i.tlbr,this.patternTo=e.tlbr}setConstantDashPositions(e,i){this.dashTo=[0,e.y,e.height,e.width],this.dashFrom=[0,i.y,i.height,i.width]}setUniform(e,i,s,o){let u=null;o==="u_pattern_to"?u=this.patternTo:o==="u_pattern_from"?u=this.patternFrom:o==="u_dasharray_to"?u=this.dashTo:o==="u_dasharray_from"?u=this.dashFrom:o==="u_pixel_ratio_to"?u=this.pixelRatioTo:o==="u_pixel_ratio_from"&&(u=this.pixelRatioFrom),u!==null&&e.set(u)}getBinding(e,i,s){return s.startsWith("u_pattern")||s.startsWith("u_dasharray_")?new Da(e,i):new _n(e,i)}}class lr{constructor(e,i,s,o){this.expression=e,this.type=s,this.maxValue=0,this.paintVertexAttributes=i.map(u=>({name:`a_${u}`,type:"Float32",components:s==="color"?2:1,offset:0})),this.paintVertexArray=new o}populatePaintArray(e,i,s){const o=this.paintVertexArray.length,u=this.expression.evaluate(new Pt(0,s),i,{},s.canonical,[],s.formattedSection);this.paintVertexArray.resize(e),this._setPaintValue(o,e,u)}updatePaintArray(e,i,s,o,u){const h=this.expression.evaluate(new Pt(0,u),s,o);this._setPaintValue(e,i,h)}_setPaintValue(e,i,s){if(this.type==="color"){const o=Wi(s);for(let u=e;u<i;u++)this.paintVertexArray.emplace(u,o[0],o[1])}else{for(let o=e;o<i;o++)this.paintVertexArray.emplace(o,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 wt{constructor(e,i,s,o,u,h){this.expression=e,this.uniformNames=i.map(f=>`u_${f}_t`),this.type=s,this.useIntegerZoom=o,this.zoom=u,this.maxValue=0,this.paintVertexAttributes=i.map(f=>({name:`a_${f}`,type:"Float32",components:s==="color"?4:2,offset:0})),this.paintVertexArray=new h}populatePaintArray(e,i,s){const o=this.expression.evaluate(new Pt(this.zoom,s),i,{},s.canonical,[],s.formattedSection),u=this.expression.evaluate(new Pt(this.zoom+1,s),i,{},s.canonical,[],s.formattedSection),h=this.paintVertexArray.length;this.paintVertexArray.resize(e),this._setPaintValue(h,e,o,u)}updatePaintArray(e,i,s,o,u){const h=this.expression.evaluate(new Pt(this.zoom,u),s,o),f=this.expression.evaluate(new Pt(this.zoom+1,u),s,o);this._setPaintValue(e,i,h,f)}_setPaintValue(e,i,s,o){if(this.type==="color"){const u=Wi(s),h=Wi(o);for(let f=e;f<i;f++)this.paintVertexArray.emplace(f,u[0],u[1],h[0],h[1])}else{for(let u=e;u<i;u++)this.paintVertexArray.emplace(u,s,o);this.maxValue=Math.max(this.maxValue,Math.abs(s),Math.abs(o))}}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,i){const s=this.useIntegerZoom?Math.floor(i.zoom):i.zoom,o=Pi(this.expression.interpolationFactor(s,this.zoom,this.zoom+1),0,1);e.set(o)}getBinding(e,i,s){return new _n(e,i)}}class Ft{constructor(e,i,s,o,u,h){this.expression=e,this.type=i,this.useIntegerZoom=s,this.zoom=o,this.layerId=h,this.zoomInPaintVertexArray=new u,this.zoomOutPaintVertexArray=new u}populatePaintArray(e,i,s){const o=this.zoomInPaintVertexArray.length;this.zoomInPaintVertexArray.resize(e),this.zoomOutPaintVertexArray.resize(e),this._setPaintValues(o,e,this.getPositionIds(i),s)}updatePaintArray(e,i,s,o,u){this._setPaintValues(e,i,this.getPositionIds(s),u)}_setPaintValues(e,i,s,o){const u=this.getPositions(o);if(!u||!s)return;const h=u[s.min],f=u[s.mid],g=u[s.max];if(h&&f&&g)for(let y=e;y<i;y++)this.emplace(this.zoomInPaintVertexArray,y,f,h),this.emplace(this.zoomOutPaintVertexArray,y,f,g)}upload(e){if(this.zoomInPaintVertexArray&&this.zoomInPaintVertexArray.arrayBuffer&&this.zoomOutPaintVertexArray&&this.zoomOutPaintVertexArray.arrayBuffer){const i=this.getVertexAttributes();this.zoomInPaintVertexBuffer=e.createVertexBuffer(this.zoomInPaintVertexArray,i,this.expression.isStateDependent),this.zoomOutPaintVertexBuffer=e.createVertexBuffer(this.zoomOutPaintVertexArray,i,this.expression.isStateDependent)}}destroy(){this.zoomOutPaintVertexBuffer&&this.zoomOutPaintVertexBuffer.destroy(),this.zoomInPaintVertexBuffer&&this.zoomInPaintVertexBuffer.destroy()}}class cr extends Ft{getPositions(e){return e.imagePositions}getPositionIds(e){return e.patterns&&e.patterns[this.layerId]}getVertexAttributes(){return nt.members}emplace(e,i,s,o){e.emplace(i,s.tlbr[0],s.tlbr[1],s.tlbr[2],s.tlbr[3],o.tlbr[0],o.tlbr[1],o.tlbr[2],o.tlbr[3],s.pixelRatio,o.pixelRatio)}}class ui extends Ft{getPositions(e){return e.dashPositions}getPositionIds(e){return e.dashes&&e.dashes[this.layerId]}getVertexAttributes(){return yt.members}emplace(e,i,s,o){e.emplace(i,0,s.y,s.height,s.width,0,o.y,o.height,o.width)}}class du{constructor(e,i,s){this.binders={},this._buffers=[];const o=[];for(const u in e.paint._values){if(!s(u))continue;const h=e.paint.get(u);if(!(h instanceof kr&&As(h.property.specification)))continue;const f=yh(u,e.type),g=h.value,y=h.property.specification.type,v=h.property.useIntegerZoom,b=h.property.specification["property-type"],S=b==="cross-faded"||b==="cross-faded-data-driven";if(g.kind==="constant")this.binders[u]=S?new or(g.value,f):new wr(g.value,f,y),o.push(`/u_${u}`);else if(g.kind==="source"||S){const P=pu(u,y,"source");this.binders[u]=S?u==="line-dasharray"?new ui(g,y,v,i,P,e.id):new cr(g,y,v,i,P,e.id):new lr(g,f,y,P),o.push(`/a_${u}`)}else{const P=pu(u,y,"composite");this.binders[u]=new wt(g,f,y,v,i,P),o.push(`/z_${u}`)}}this.cacheKey=o.sort().join("")}getMaxValue(e){const i=this.binders[e];return i instanceof lr||i instanceof wt?i.maxValue:0}populatePaintArrays(e,i,s){for(const o in this.binders){const u=this.binders[o];(u instanceof lr||u instanceof wt||u instanceof Ft)&&u.populatePaintArray(e,i,s)}}setConstantPatternPositions(e,i){for(const s in this.binders){const o=this.binders[s];o instanceof or&&o.setConstantPatternPositions(e,i)}}setConstantDashPositions(e,i){for(const s in this.binders){const o=this.binders[s];o instanceof or&&o.setConstantDashPositions(e,i)}}updatePaintArrays(e,i,s,o,u){let h=!1;for(const f in e){const g=i.getPositions(f);for(const y of g){const v=s.feature(y.index);for(const b in this.binders){const S=this.binders[b];if((S instanceof lr||S instanceof wt||S instanceof Ft)&&S.expression.isStateDependent===!0){const P=o.paint.get(b);S.expression=P.value,S.updatePaintArray(y.start,y.end,v,e[f],u),h=!0}}}}return h}defines(){const e=[];for(const i in this.binders){const s=this.binders[i];(s instanceof wr||s instanceof or)&&e.push(...s.uniformNames.map(o=>`#define HAS_UNIFORM_${o}`))}return e}getBinderAttributes(){const e=[];for(const i in this.binders){const s=this.binders[i];if(s instanceof lr||s instanceof wt)for(let o=0;o<s.paintVertexAttributes.length;o++)e.push(s.paintVertexAttributes[o].name);else if(s instanceof Ft){const o=s.getVertexAttributes();for(const u of o)e.push(u.name)}}return e}getBinderUniforms(){const e=[];for(const i in this.binders){const s=this.binders[i];if(s instanceof wr||s instanceof or||s instanceof wt)for(const o of s.uniformNames)e.push(o)}return e}getPaintVertexBuffers(){return this._buffers}getUniforms(e,i){const s=[];for(const o in this.binders){const u=this.binders[o];if(u instanceof wr||u instanceof or||u instanceof wt){for(const h of u.uniformNames)if(i[h]){const f=u.getBinding(e,i[h],h);s.push({name:h,property:o,binding:f})}}}return s}setUniforms(e,i,s,o){for(const{name:u,property:h,binding:f}of i)this.binders[h].setUniform(f,o,s.get(h),u)}updatePaintBuffers(e){this._buffers=[];for(const i in this.binders){const s=this.binders[i];if(e&&s instanceof Ft){const o=e.fromScale===2?s.zoomInPaintVertexBuffer:s.zoomOutPaintVertexBuffer;o&&this._buffers.push(o)}else(s instanceof lr||s instanceof wt)&&s.paintVertexBuffer&&this._buffers.push(s.paintVertexBuffer)}}upload(e){for(const i in this.binders){const s=this.binders[i];(s instanceof lr||s instanceof wt||s instanceof Ft)&&s.upload(e)}this.updatePaintBuffers()}destroy(){for(const e in this.binders){const i=this.binders[e];(i instanceof lr||i instanceof wt||i instanceof Ft)&&i.destroy()}}}class os{constructor(e,i,s=()=>!0){this.programConfigurations={};for(const o of e)this.programConfigurations[o.id]=new du(o,i,s);this.needsUpload=!1,this._featureMap=new Zt,this._bufferOffset=0}populatePaintArrays(e,i,s,o){for(const u in this.programConfigurations)this.programConfigurations[u].populatePaintArrays(e,i,o);i.id!==void 0&&this._featureMap.add(i.id,s,this._bufferOffset,e),this._bufferOffset=e,this.needsUpload=!0}updatePaintArrays(e,i,s,o){for(const u of s)this.needsUpload=this.programConfigurations[u.id].updatePaintArrays(e,this._featureMap,i,u,o)||this.needsUpload}get(e){return this.programConfigurations[e]}upload(e){if(this.needsUpload){for(const i in this.programConfigurations)this.programConfigurations[i].upload(e);this.needsUpload=!1}}destroy(){for(const e in this.programConfigurations)this.programConfigurations[e].destroy()}}function yh(r,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-dasharray":["dasharray_to","dasharray_from"],"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"]}[r]||[r.replace(`${e}-`,"").replace(/-/g,"_")]}function pu(r,e,i){const s={color:{source:Ea,composite:t},number:{source:Ao,composite:Ea}},o=function(u){return{"line-pattern":{source:Z,composite:Z},"fill-pattern":{source:Z,composite:Z},"fill-extrusion-pattern":{source:Z,composite:Z},"line-dasharray":{source:J,composite:J}}[u]}(r);return o&&o[i]||s[e][i]}Fe("ConstantBinder",wr),Fe("CrossFadedConstantBinder",or),Fe("SourceExpressionBinder",lr),Fe("CrossFadedPatternBinder",cr),Fe("CrossFadedDasharrayBinder",ui),Fe("CompositeExpressionBinder",wt),Fe("ProgramConfiguration",du,{omit:["_buffers"]}),Fe("ProgramConfigurationSet",os);const jl=Math.pow(2,14)-1,fu=-jl-1;function ur(r){const e=ht/r.extent,i=r.loadGeometry();for(let s=0;s<i.length;s++){const o=i[s];for(let u=0;u<o.length;u++){const h=o[u],f=Math.round(h.x*e),g=Math.round(h.y*e);h.x=Pi(f,fu,jl),h.y=Pi(g,fu,jl),(f<h.x||f>h.x+1||g<h.y||g>h.y+1)&&Mi("Geometry exceeds allowed extent, reduce your vector tile buffer size")}}return i}function Bn(r,e){return{type:r.type,id:r.id,properties:r.properties,geometry:e?ur(r):[]}}const Nl=-32768;function mu(r,e,i,s,o){r.emplaceBack(Nl+8*e+s,Nl+8*i+o)}class ka{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(i=>i.id),this.index=e.index,this.hasDependencies=!1,this.layoutVertexArray=new N,this.indexArray=new pe,this.segments=new ve,this.programConfigurations=new os(e.layers,e.zoom),this.stateDependentLayerIds=this.layers.filter(i=>i.isStateDependent()).map(i=>i.id)}populate(e,i,s){const o=this.layers[0],u=[];let h=null,f=!1,g=o.type==="heatmap";if(o.type==="circle"){const v=o;h=v.layout.get("circle-sort-key"),f=!h.isConstant(),g=g||v.paint.get("circle-pitch-alignment")==="map"}const y=g?i.subdivisionGranularity.circle:1;for(const{feature:v,id:b,index:S,sourceLayerIndex:P}of e){const C=this.layers[0]._featureFilter.needGeometry,D=Bn(v,C);if(!this.layers[0]._featureFilter.filter(new Pt(this.zoom),D,s))continue;const R=f?h.evaluate(D,{},s):void 0,V={id:b,properties:v.properties,type:v.type,sourceLayerIndex:P,index:S,geometry:C?D.geometry:ur(v),patterns:{},sortKey:R};u.push(V)}f&&u.sort((v,b)=>v.sortKey-b.sortKey);for(const v of u){const{geometry:b,index:S,sourceLayerIndex:P}=v,C=e[S].feature;this.addFeature(v,b,S,s,y),i.featureIndex.insert(C,b,S,P,this.index)}}update(e,i,s){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,i,this.stateDependentLayers,{imagePositions:s})}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,ze),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,i,s,o,u=1){let h;switch(u){case 1:h=[0,7];break;case 3:h=[0,2,5,7];break;case 5:h=[0,1,3,4,6,7];break;case 7:h=[0,1,2,3,4,5,6,7];break;default:throw new Error(`Invalid circle bucket granularity: ${u}; valid values are 1, 3, 5, 7.`)}const f=h.length;for(const g of i)for(const y of g){const v=y.x,b=y.y;if(v<0||v>=ht||b<0||b>=ht)continue;const S=this.segments.prepareSegment(f*f,this.layoutVertexArray,this.indexArray,e.sortKey),P=S.vertexLength;for(let C=0;C<f;C++)for(let D=0;D<f;D++)mu(this.layoutVertexArray,v,b,h[D],h[C]);for(let C=0;C<f-1;C++)for(let D=0;D<f-1;D++){const R=P+C*f+D,V=P+(C+1)*f+D;this.indexArray.emplaceBack(R,V+1,R+1),this.indexArray.emplaceBack(R,V,V+1)}S.vertexLength+=f*f,S.primitiveLength+=(f-1)*(f-1)*2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,s,{imagePositions:{},canonical:o})}}function Ul(r,e){for(let i=0;i<r.length;i++)if(zo(e,r[i]))return!0;for(let i=0;i<e.length;i++)if(zo(r,e[i]))return!0;return!!xh(r,e)}function Ls(r,e,i){return!!zo(r,e)||!!vh(e,r,i)}function kd(r,e){if(r.length===1)return Ld(e,r[0]);for(let i=0;i<e.length;i++){const s=e[i];for(let o=0;o<s.length;o++)if(zo(r,s[o]))return!0}for(let i=0;i<r.length;i++)if(Ld(e,r[i]))return!0;for(let i=0;i<e.length;i++)if(xh(r,e[i]))return!0;return!1}function bm(r,e,i){if(r.length>1){if(xh(r,e))return!0;for(let s=0;s<e.length;s++)if(vh(e[s],r,i))return!0}for(let s=0;s<r.length;s++)if(vh(r[s],e,i))return!0;return!1}function xh(r,e){if(r.length===0||e.length===0)return!1;for(let i=0;i<r.length-1;i++){const s=r[i],o=r[i+1];for(let u=0;u<e.length-1;u++)if(wm(s,o,e[u],e[u+1]))return!0}return!1}function wm(r,e,i,s){return er(r,i,s)!==er(e,i,s)&&er(r,e,i)!==er(r,e,s)}function vh(r,e,i){const s=i*i;if(e.length===1)return r.distSqr(e[0])<s;for(let o=1;o<e.length;o++)if(Rd(r,e[o-1],e[o])<s)return!0;return!1}function Rd(r,e,i){const s=e.distSqr(i);if(s===0)return r.distSqr(e);const o=((r.x-e.x)*(i.x-e.x)+(r.y-e.y)*(i.y-e.y))/s;return r.distSqr(o<0?e:o>1?i:i.sub(e)._mult(o)._add(e))}function Ld(r,e){let i,s,o,u=!1;for(let h=0;h<r.length;h++){i=r[h];for(let f=0,g=i.length-1;f<i.length;g=f++)s=i[f],o=i[g],s.y>e.y!=o.y>e.y&&e.x<(o.x-s.x)*(e.y-s.y)/(o.y-s.y)+s.x&&(u=!u)}return u}function zo(r,e){let i=!1;for(let s=0,o=r.length-1;s<r.length;o=s++){const u=r[s],h=r[o];u.y>e.y!=h.y>e.y&&e.x<(h.x-u.x)*(e.y-u.y)/(h.y-u.y)+u.x&&(i=!i)}return i}function Tm(r,e,i){const s=i[0],o=i[2];if(r.x<s.x&&e.x<s.x||r.x>o.x&&e.x>o.x||r.y<s.y&&e.y<s.y||r.y>o.y&&e.y>o.y)return!1;const u=er(r,e,i[0]);return u!==er(r,e,i[1])||u!==er(r,e,i[2])||u!==er(r,e,i[3])}function ko(r,e,i){const s=e.paint.get(r).value;return s.kind==="constant"?s.value:i.programConfigurations.get(e.id).getMaxValue(r)}function gu(r){return Math.sqrt(r[0]*r[0]+r[1]*r[1])}function _u(r,e,i,s,o){if(!e[0]&&!e[1])return r;const u=Pe.convert(e)._mult(o);i==="viewport"&&u._rotate(-s);const h=[];for(let f=0;f<r.length;f++)h.push(r[f].sub(u));return h}function Sm(r){const e=[];for(let i=0;i<r.length;i++){const s=r[i],o=e.at(-1);(i===0||o&&!s.equals(o))&&e.push(s)}return e}function Pm({queryGeometry:r,size:e},i){return Ls(r,i,e)}function Mm({queryGeometry:r,size:e,transform:i,unwrappedTileID:s,getElevation:o},u){return Ls(r,u,e*(i.projectTileCoordinates(u.x,u.y,s,o).signedDistanceFromCamera/i.cameraToCenterDistance))}function Im({queryGeometry:r,size:e,transform:i,unwrappedTileID:s,getElevation:o},u){const h=i.projectTileCoordinates(u.x,u.y,s,o).signedDistanceFromCamera,f=e*(i.cameraToCenterDistance/h);return Ls(r,bh(u,i,s,o),f)}function Em({queryGeometry:r,size:e,transform:i,unwrappedTileID:s,getElevation:o},u){return Ls(r,bh(u,i,s,o),e)}function Fd({queryGeometry:r,size:e,transform:i,unwrappedTileID:s,getElevation:o,pitchAlignment:u="map",pitchScale:h="map"},f){const g=u==="map"?h==="map"?Pm:Mm:h==="map"?Im:Em,y={queryGeometry:r,size:e,transform:i,unwrappedTileID:s,getElevation:o};for(const v of f)for(const b of v)if(g(y,b))return!0;return!1}function bh(r,e,i,s){const o=e.projectTileCoordinates(r.x,r.y,i,s).point;return new Pe((.5*o.x+.5)*e.width,(.5*-o.y+.5)*e.height)}let Bd,Od;Fe("CircleBucket",ka,{omit:["layers"]});var Cm={get paint(){return Od=Od||new Bi({"circle-radius":new Ye(Q.paint_circle["circle-radius"]),"circle-color":new Ye(Q.paint_circle["circle-color"]),"circle-blur":new Ye(Q.paint_circle["circle-blur"]),"circle-opacity":new Ye(Q.paint_circle["circle-opacity"]),"circle-translate":new Ue(Q.paint_circle["circle-translate"]),"circle-translate-anchor":new Ue(Q.paint_circle["circle-translate-anchor"]),"circle-pitch-scale":new Ue(Q.paint_circle["circle-pitch-scale"]),"circle-pitch-alignment":new Ue(Q.paint_circle["circle-pitch-alignment"]),"circle-stroke-width":new Ye(Q.paint_circle["circle-stroke-width"]),"circle-stroke-color":new Ye(Q.paint_circle["circle-stroke-color"]),"circle-stroke-opacity":new Ye(Q.paint_circle["circle-stroke-opacity"])})},get layout(){return Bd=Bd||new Bi({"circle-sort-key":new Ye(Q.layout_circle["circle-sort-key"])})}};class Am extends Rr{constructor(e,i){super(e,Cm,i)}createBucket(e){return new ka(e)}queryRadius(e){const i=e;return ko("circle-radius",this,i)+ko("circle-stroke-width",this,i)+gu(this.paint.get("circle-translate"))}queryIntersectsFeature({queryGeometry:e,feature:i,featureState:s,geometry:o,transform:u,pixelsToTileUnits:h,unwrappedTileID:f,getElevation:g}){const y=_u(e,this.paint.get("circle-translate"),this.paint.get("circle-translate-anchor"),-u.bearingInRadians,h),v=this.paint.get("circle-radius").evaluate(i,s)+this.paint.get("circle-stroke-width").evaluate(i,s),b=this.paint.get("circle-pitch-scale"),S=this.paint.get("circle-pitch-alignment");let P,C;return S==="map"?(P=y,C=v*h):(P=function(D,R,V,q){return D.map(O=>bh(O,R,V,q))}(y,u,f,g),C=v),Fd({queryGeometry:P,size:C,transform:u,unwrappedTileID:f,getElevation:g,pitchAlignment:S,pitchScale:b},o)}}class Vd extends ka{}let jd;Fe("HeatmapBucket",Vd,{omit:["layers"]});var Dm={get paint(){return jd=jd||new Bi({"heatmap-radius":new Ye(Q.paint_heatmap["heatmap-radius"]),"heatmap-weight":new Ye(Q.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new Ue(Q.paint_heatmap["heatmap-intensity"]),"heatmap-color":new zs(Q.paint_heatmap["heatmap-color"]),"heatmap-opacity":new Ue(Q.paint_heatmap["heatmap-opacity"])})}};function wh(r,{width:e,height:i},s,o){if(o){if(o instanceof Uint8ClampedArray)o=new Uint8Array(o.buffer);else if(o.length!==e*i*s)throw new RangeError(`mismatched image size. expected: ${o.length} but got: ${e*i*s}`)}else o=new Uint8Array(e*i*s);return r.width=e,r.height=i,r.data=o,r}function Nd(r,{width:e,height:i},s){if(e===r.width&&i===r.height)return;const o=wh({},{width:e,height:i},s);Th(r,o,{x:0,y:0},{x:0,y:0},{width:Math.min(r.width,e),height:Math.min(r.height,i)},s),r.width=e,r.height=i,r.data=o.data}function Th(r,e,i,s,o,u){if(o.width===0||o.height===0)return e;if(o.width>r.width||o.height>r.height||i.x>r.width-o.width||i.y>r.height-o.height)throw new RangeError("out of range source coordinates for image copy");if(o.width>e.width||o.height>e.height||s.x>e.width-o.width||s.y>e.height-o.height)throw new RangeError("out of range destination coordinates for image copy");const h=r.data,f=e.data;if(h===f)throw new Error("srcData equals dstData, so image is already copied");for(let g=0;g<o.height;g++){const y=((i.y+g)*r.width+i.x)*u,v=((s.y+g)*e.width+s.x)*u;for(let b=0;b<o.width*u;b++)f[v+b]=h[y+b]}return e}class Gl{constructor(e,i){wh(this,e,1,i)}resize(e){Nd(this,e,1)}clone(){return new Gl({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(e,i,s,o,u){Th(e,i,s,o,u,1)}}class hr{constructor(e,i){wh(this,e,4,i)}resize(e){Nd(this,e,4)}replace(e,i){i?this.data.set(e):this.data=e instanceof Uint8ClampedArray?new Uint8Array(e.buffer):e}clone(){return new hr({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(e,i,s,o,u){Th(e,i,s,o,u,4)}setPixel(e,i,s){const o=4*(e*this.width+i);this.data[o+0]=Math.round(255*s.r/s.a),this.data[o+1]=Math.round(255*s.g/s.a),this.data[o+2]=Math.round(255*s.b/s.a),this.data[o+3]=Math.round(255*s.a)}}function Ud(r){const e=new Uint8Array(r.length);for(let i=0;i<r.length;i+=4){const s=r[i+3];e[i+0]=Math.round(r[i+0]*s/255),e[i+1]=Math.round(r[i+1]*s/255),e[i+2]=Math.round(r[i+2]*s/255),e[i+3]=s}return e}function Gd(r){const e={},i=r.resolution||256,s=r.clips?r.clips.length:1,o=r.image||new hr({width:i,height:s});if(Math.log(i)/Math.LN2%1!=0)throw new Error(`width is not a power of 2 - ${i}`);const u=(h,f,g)=>{e[r.evaluationKey]=g;const y=r.expression.evaluate(e);o.setPixel(h/4/i,f/4,y)};if(r.clips)for(let h=0,f=0;h<s;++h,f+=4*i)for(let g=0,y=0;g<i;g++,y+=4){const v=g/(i-1),{start:b,end:S}=r.clips[h];u(f,y,b*(1-v)+S*v)}else for(let h=0,f=0;h<i;h++,f+=4)u(0,f,h/(i-1));return o}Fe("AlphaImage",Gl),Fe("RGBAImage",hr);const Sh="big-fb";class zm extends Rr{createBucket(e){return new Vd(e)}constructor(e,i){super(e,Dm,i),this.heatmapFbos=new Map,this._updateColorRamp()}_handleSpecialPaintPropertyUpdate(e){e==="heatmap-color"&&this._updateColorRamp()}_updateColorRamp(){this.colorRamp=Gd({expression:this._transitionablePaint._values["heatmap-color"].value.expression,evaluationKey:"heatmapDensity",image:this.colorRamp}),this.colorRampTexture=null}resize(){this.heatmapFbos.has(Sh)&&this.heatmapFbos.delete(Sh)}queryRadius(e){return ko("heatmap-radius",this,e)}queryIntersectsFeature({queryGeometry:e,feature:i,featureState:s,geometry:o,transform:u,pixelsToTileUnits:h,unwrappedTileID:f,getElevation:g}){return Fd({queryGeometry:e,size:this.paint.get("heatmap-radius").evaluate(i,s)*h,transform:u,unwrappedTileID:f,getElevation:g},o)}hasOffscreenPass(){return this.paint.get("heatmap-opacity")!==0&&!this.isHidden()}}let qd;var km={get paint(){return qd=qd||new Bi({"hillshade-illumination-direction":new Ue(Q.paint_hillshade["hillshade-illumination-direction"]),"hillshade-illumination-altitude":new Ue(Q.paint_hillshade["hillshade-illumination-altitude"]),"hillshade-illumination-anchor":new Ue(Q.paint_hillshade["hillshade-illumination-anchor"]),"hillshade-exaggeration":new Ue(Q.paint_hillshade["hillshade-exaggeration"]),"hillshade-shadow-color":new Ue(Q.paint_hillshade["hillshade-shadow-color"]),"hillshade-highlight-color":new Ue(Q.paint_hillshade["hillshade-highlight-color"]),"hillshade-accent-color":new Ue(Q.paint_hillshade["hillshade-accent-color"]),"hillshade-method":new Ue(Q.paint_hillshade["hillshade-method"])})}};class Rm extends Rr{constructor(e,i){super(e,km,i),this.recalculate({zoom:0,zoomHistory:{}},void 0)}getIlluminationProperties(){let e=this.paint.get("hillshade-illumination-direction").values,i=this.paint.get("hillshade-illumination-altitude").values,s=this.paint.get("hillshade-highlight-color").values,o=this.paint.get("hillshade-shadow-color").values;const u=Math.max(e.length,i.length,s.length,o.length);e=e.concat(Array(u-e.length).fill(e.at(-1))),i=i.concat(Array(u-i.length).fill(i.at(-1))),s=s.concat(Array(u-s.length).fill(s.at(-1))),o=o.concat(Array(u-o.length).fill(o.at(-1)));const h=i.map(Un);return{directionRadians:e.map(Un),altitudeRadians:h,shadowColor:o,highlightColor:s}}hasOffscreenPass(){return this.paint.get("hillshade-exaggeration")!==0&&!this.isHidden()}}let Zd;var Lm={get paint(){return Zd=Zd||new Bi({"color-relief-opacity":new Ue(Q["paint_color-relief"]["color-relief-opacity"]),"color-relief-color":new zs(Q["paint_color-relief"]["color-relief-color"])})}};function $d(r){return"data"in r}class Ph{constructor(e,i,s,o){this.context=e,this.format=s,this.texture=e.gl.createTexture(),this._ownedHandle=this.texture,this.update(i,o)}update(e,i,s){const{width:o,height:u}=e,h=!(this.size&&this.size[0]===o&&this.size[1]===u||s),{context:f}=this,{gl:g}=f;this.useMipmap=!!(i&&i.useMipmap),g.bindTexture(g.TEXTURE_2D,this.texture),f.pixelStoreUnpackFlipY.set(!1),f.pixelStoreUnpack.set(1);const y=this.format===g.RGBA&&(!i||i.premultiply!==!1);if(h)this.size=[o,u],$d(e)?(f.pixelStoreUnpackPremultiplyAlpha.set(!1),this._uploadRawData(e,y,o,u,g)):(f.pixelStoreUnpackPremultiplyAlpha.set(y),this._uploadDomImage(e,g));else{const{x:v,y:b}=s||{x:0,y:0};$d(e)?(f.pixelStoreUnpackPremultiplyAlpha.set(!1),this._updateRawData(e,y,v,b,o,u,g)):(f.pixelStoreUnpackPremultiplyAlpha.set(y),this._updateDomImage(e,v,b,g))}this.useMipmap&&this.isSizePowerOfTwo()&&g.generateMipmap(g.TEXTURE_2D),f.pixelStoreUnpackFlipY.setDefault(),f.pixelStoreUnpack.setDefault(),f.pixelStoreUnpackPremultiplyAlpha.setDefault()}_uploadDomImage(e,i){i.texImage2D(i.TEXTURE_2D,0,this.format,this.format,i.UNSIGNED_BYTE,e)}_uploadRawData(e,i,s,o,u){let{data:h}=e;i&&h&&(h=Ud(h)),u.texImage2D(u.TEXTURE_2D,0,this.format,s,o,0,this.format,u.UNSIGNED_BYTE,h)}_updateDomImage(e,i,s,o){o.texSubImage2D(o.TEXTURE_2D,0,i,s,o.RGBA,o.UNSIGNED_BYTE,e)}_updateRawData(e,i,s,o,u,h,f){let{data:g}=e;i&&g&&(g=Ud(g)),f.texSubImage2D(f.TEXTURE_2D,0,s,o,u,h,f.RGBA,f.UNSIGNED_BYTE,g)}bind(e,i,s){const{context:o}=this,{gl:u}=o;this.texture!==this._ownedHandle&&(this.texture=this._ownedHandle),u.bindTexture(u.TEXTURE_2D,this.texture),s!==u.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(s=u.LINEAR),e!==this.filter&&(u.texParameteri(u.TEXTURE_2D,u.TEXTURE_MAG_FILTER,e),u.texParameteri(u.TEXTURE_2D,u.TEXTURE_MIN_FILTER,s||e),this.filter=e),i!==this.wrap&&(u.texParameteri(u.TEXTURE_2D,u.TEXTURE_WRAP_S,i),u.texParameteri(u.TEXTURE_2D,u.TEXTURE_WRAP_T,i),this.wrap=i)}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){const{gl:e}=this.context;e.deleteTexture(this.texture),this.texture=null,this._ownedHandle=null}}class Wd{constructor(e,i,s,o=1,u=1,h=1,f=0){if(this.uid=e,i.height!==i.width)throw new RangeError("DEM tiles must be square");if(s&&!["mapbox","terrarium","custom"].includes(s))return void Mi(`"${s}" is not a valid encoding type. Valid types include "mapbox", "terrarium" and "custom".`);this.stride=i.height;const g=this.dim=i.height-2;switch(this.data=new Uint32Array(i.data.buffer),s){case"terrarium":this.redFactor=256,this.greenFactor=1,this.blueFactor=1/256,this.baseShift=32768;break;case"custom":this.redFactor=o,this.greenFactor=u,this.blueFactor=h,this.baseShift=f;break;default:this.redFactor=6553.6,this.greenFactor=25.6,this.blueFactor=.1,this.baseShift=1e4}for(let y=0;y<g;y++)this.data[this._idx(-1,y)]=this.data[this._idx(0,y)],this.data[this._idx(g,y)]=this.data[this._idx(g-1,y)],this.data[this._idx(y,-1)]=this.data[this._idx(y,0)],this.data[this._idx(y,g)]=this.data[this._idx(y,g-1)];this.data[this._idx(-1,-1)]=this.data[this._idx(0,0)],this.data[this._idx(g,-1)]=this.data[this._idx(g-1,0)],this.data[this._idx(-1,g)]=this.data[this._idx(0,g-1)],this.data[this._idx(g,g)]=this.data[this._idx(g-1,g-1)],this.min=Number.MAX_SAFE_INTEGER,this.max=Number.MIN_SAFE_INTEGER;for(let y=0;y<g;y++)for(let v=0;v<g;v++){const b=this.get(y,v);b>this.max&&(this.max=b),b<this.min&&(this.min=b)}}get(e,i){const s=new Uint8Array(this.data.buffer),o=4*this._idx(e,i);return this.unpack(s[o],s[o+1],s[o+2])}getUnpackVector(){return[this.redFactor,this.greenFactor,this.blueFactor,this.baseShift]}_idx(e,i){if(e<-1||e>=this.dim+1||i<-1||i>=this.dim+1)throw new RangeError(`Out of range source coordinates for DEM data. x: ${e}, y: ${i}, dim: ${this.dim}`);return(i+1)*this.stride+(e+1)}unpack(e,i,s){return e*this.redFactor+i*this.greenFactor+s*this.blueFactor-this.baseShift}pack(e){return Hd(e,this.getUnpackVector())}getPixels(){return new hr({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(e,i,s){if(this.dim!==e.dim)throw new Error("dem dimension mismatch");let o=i*this.dim,u=i*this.dim+this.dim,h=s*this.dim,f=s*this.dim+this.dim;switch(i){case-1:o=u-1;break;case 1:u=o+1}switch(s){case-1:h=f-1;break;case 1:f=h+1}const g=-i*this.dim,y=-s*this.dim;for(let v=h;v<f;v++)for(let b=o;b<u;b++)this.data[this._idx(b,v)]=e.data[this._idx(b+g,v+y)]}}function Hd(r,e){const i=e[0],s=e[1],o=e[2],u=e[3],h=Math.min(i,s,o),f=Math.round((r+u)/h);return{r:Math.floor(f*h/i)%256,g:Math.floor(f*h/s)%256,b:Math.floor(f*h/o)%256}}Fe("DEMData",Wd);class Fm extends Rr{constructor(e,i){super(e,Lm,i)}_createColorRamp(e){const i={elevationStops:[],colorStops:[]},s=this._transitionablePaint._values["color-relief-color"].value.expression;if(s instanceof fo&&s._styleExpression.expression instanceof Fi){this.colorRampExpression=s;const h=s._styleExpression.expression;i.elevationStops=h.labels,i.colorStops=[];for(const f of i.elevationStops)i.colorStops.push(h.evaluate({globals:{elevation:f}}))}if(i.elevationStops.length<1&&(i.elevationStops=[0],i.colorStops=[dt.transparent]),i.elevationStops.length<2&&(i.elevationStops.push(i.elevationStops[0]+1),i.colorStops.push(i.colorStops[0])),i.elevationStops.length<=e)return i;const o={elevationStops:[],colorStops:[]},u=(i.elevationStops.length-1)/(e-1);for(let h=0;h<i.elevationStops.length-.5;h+=u)o.elevationStops.push(i.elevationStops[Math.round(h)]),o.colorStops.push(i.colorStops[Math.round(h)]);return Mi(`Too many colors in specification of ${this.id} color-relief layer, may not render properly. Max possible colors: ${e}, provided: ${i.elevationStops.length}`),o}_colorRampChanged(){return this.colorRampExpression!=this._transitionablePaint._values["color-relief-color"].value.expression}getColorRampTextures(e,i,s){if(this.colorRampTextures&&!this._colorRampChanged())return this.colorRampTextures;const o=this._createColorRamp(i),u=new hr({width:o.colorStops.length,height:1}),h=new hr({width:o.colorStops.length,height:1});for(let f=0;f<o.elevationStops.length;f++){const g=Hd(o.elevationStops[f],s);h.setPixel(0,f,new dt(g.r/255,g.g/255,g.b/255,1)),u.setPixel(0,f,o.colorStops[f])}return this.colorRampTextures={elevationTexture:new Ph(e,h,e.gl.RGBA),colorTexture:new Ph(e,u,e.gl.RGBA)},this.colorRampTextures}hasOffscreenPass(){return!this.isHidden()&&!!this.colorRampTextures}}const Bm=Kt([{name:"a_pos",components:2,type:"Int16"}],4),{members:Om}=Bm;function yu(r,e,i){const s=i.patternDependencies;let o=!1;for(const u of e){const h=u.paint.get(`${r}-pattern`);h.isConstant()||(o=!0);const f=h.constantOr(null);f&&(o=!0,s[f.to]=!0,s[f.from]=!0)}return o}function Mh(r,e,i,s,o){const{zoom:u}=s,h=o.patternDependencies;for(const f of e){const g=f.paint.get(`${r}-pattern`).value;if(g.kind!=="constant"){let y=g.evaluate({zoom:u-1},i,{},o.availableImages),v=g.evaluate({zoom:u},i,{},o.availableImages),b=g.evaluate({zoom:u+1},i,{},o.availableImages);y=y&&y.name?y.name:y,v=v&&v.name?v.name:v,b=b&&b.name?b.name:b,h[y]=!0,h[v]=!0,h[b]=!0,i.patterns[f.id]={min:y,mid:v,max:b}}}return i}function Xd(r,e,i,s,o){let u;if(o===function(h,f,g,y){let v=0;for(let b=f,S=g-y;b<g;b+=y)v+=(h[S]-h[b])*(h[b+1]+h[S+1]),S=b;return v}(r,e,i,s)>0)for(let h=e;h<i;h+=s)u=Qd(h/s|0,r[h],r[h+1],u);else for(let h=i-s;h>=e;h-=s)u=Qd(h/s|0,r[h],r[h+1],u);return u&&Ro(u,u.next)&&(Wl(u),u=u.next),u}function Ra(r,e){if(!r)return r;e||(e=r);let i,s=r;do if(i=!1,s.steiner||!Ro(s,s.next)&&ti(s.prev,s,s.next)!==0)s=s.next;else{if(Wl(s),s=e=s.prev,s===s.next)break;i=!0}while(i||s!==e);return e}function ql(r,e,i,s,o,u,h){if(!r)return;!h&&u&&function(g,y,v,b){let S=g;do S.z===0&&(S.z=Ih(S.x,S.y,y,v,b)),S.prevZ=S.prev,S.nextZ=S.next,S=S.next;while(S!==g);S.prevZ.nextZ=null,S.prevZ=null,function(P){let C,D=1;do{let R,V=P;P=null;let q=null;for(C=0;V;){C++;let O=V,j=0;for(let ie=0;ie<D&&(j++,O=O.nextZ,O);ie++);let Y=D;for(;j>0||Y>0&&O;)j!==0&&(Y===0||!O||V.z<=O.z)?(R=V,V=V.nextZ,j--):(R=O,O=O.nextZ,Y--),q?q.nextZ=R:P=R,R.prevZ=q,q=R;V=O}q.nextZ=null,D*=2}while(C>1)}(S)}(r,s,o,u);let f=r;for(;r.prev!==r.next;){const g=r.prev,y=r.next;if(u?jm(r,s,o,u):Vm(r))e.push(g.i,r.i,y.i),Wl(r),r=y.next,f=y.next;else if((r=y)===f){h?h===1?ql(r=Nm(Ra(r),e),e,i,s,o,u,2):h===2&&Um(r,e,i,s,o,u):ql(Ra(r),e,i,s,o,u,1);break}}}function Vm(r){const e=r.prev,i=r,s=r.next;if(ti(e,i,s)>=0)return!1;const o=e.x,u=i.x,h=s.x,f=e.y,g=i.y,y=s.y,v=Math.min(o,u,h),b=Math.min(f,g,y),S=Math.max(o,u,h),P=Math.max(f,g,y);let C=s.next;for(;C!==e;){if(C.x>=v&&C.x<=S&&C.y>=b&&C.y<=P&&Zl(o,f,u,g,h,y,C.x,C.y)&&ti(C.prev,C,C.next)>=0)return!1;C=C.next}return!0}function jm(r,e,i,s){const o=r.prev,u=r,h=r.next;if(ti(o,u,h)>=0)return!1;const f=o.x,g=u.x,y=h.x,v=o.y,b=u.y,S=h.y,P=Math.min(f,g,y),C=Math.min(v,b,S),D=Math.max(f,g,y),R=Math.max(v,b,S),V=Ih(P,C,e,i,s),q=Ih(D,R,e,i,s);let O=r.prevZ,j=r.nextZ;for(;O&&O.z>=V&&j&&j.z<=q;){if(O.x>=P&&O.x<=D&&O.y>=C&&O.y<=R&&O!==o&&O!==h&&Zl(f,v,g,b,y,S,O.x,O.y)&&ti(O.prev,O,O.next)>=0||(O=O.prevZ,j.x>=P&&j.x<=D&&j.y>=C&&j.y<=R&&j!==o&&j!==h&&Zl(f,v,g,b,y,S,j.x,j.y)&&ti(j.prev,j,j.next)>=0))return!1;j=j.nextZ}for(;O&&O.z>=V;){if(O.x>=P&&O.x<=D&&O.y>=C&&O.y<=R&&O!==o&&O!==h&&Zl(f,v,g,b,y,S,O.x,O.y)&&ti(O.prev,O,O.next)>=0)return!1;O=O.prevZ}for(;j&&j.z<=q;){if(j.x>=P&&j.x<=D&&j.y>=C&&j.y<=R&&j!==o&&j!==h&&Zl(f,v,g,b,y,S,j.x,j.y)&&ti(j.prev,j,j.next)>=0)return!1;j=j.nextZ}return!0}function Nm(r,e){let i=r;do{const s=i.prev,o=i.next.next;!Ro(s,o)&&Kd(s,i,i.next,o)&&$l(s,o)&&$l(o,s)&&(e.push(s.i,i.i,o.i),Wl(i),Wl(i.next),i=r=o),i=i.next}while(i!==r);return Ra(i)}function Um(r,e,i,s,o,u){let h=r;do{let f=h.next.next;for(;f!==h.prev;){if(h.i!==f.i&&Wm(h,f)){let g=Jd(h,f);return h=Ra(h,h.next),g=Ra(g,g.next),ql(h,e,i,s,o,u,0),void ql(g,e,i,s,o,u,0)}f=f.next}h=h.next}while(h!==r)}function Gm(r,e){let i=r.x-e.x;return i===0&&(i=r.y-e.y,i===0)&&(i=(r.next.y-r.y)/(r.next.x-r.x)-(e.next.y-e.y)/(e.next.x-e.x)),i}function qm(r,e){const i=function(o,u){let h=u;const f=o.x,g=o.y;let y,v=-1/0;if(Ro(o,h))return h;do{if(Ro(o,h.next))return h.next;if(g<=h.y&&g>=h.next.y&&h.next.y!==h.y){const D=h.x+(g-h.y)*(h.next.x-h.x)/(h.next.y-h.y);if(D<=f&&D>v&&(v=D,y=h.x<h.next.x?h:h.next,D===f))return y}h=h.next}while(h!==u);if(!y)return null;const b=y,S=y.x,P=y.y;let C=1/0;h=y;do{if(f>=h.x&&h.x>=S&&f!==h.x&&Yd(g<P?f:v,g,S,P,g<P?v:f,g,h.x,h.y)){const D=Math.abs(g-h.y)/(f-h.x);$l(h,o)&&(D<C||D===C&&(h.x>y.x||h.x===y.x&&Zm(y,h)))&&(y=h,C=D)}h=h.next}while(h!==b);return y}(r,e);if(!i)return e;const s=Jd(i,r);return Ra(s,s.next),Ra(i,i.next)}function Zm(r,e){return ti(r.prev,r,e.prev)<0&&ti(e.next,r,r.next)<0}function Ih(r,e,i,s,o){return(r=1431655765&((r=858993459&((r=252645135&((r=16711935&((r=(r-i)*o|0)|r<<8))|r<<4))|r<<2))|r<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-s)*o|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function $m(r){let e=r,i=r;do(e.x<i.x||e.x===i.x&&e.y<i.y)&&(i=e),e=e.next;while(e!==r);return i}function Yd(r,e,i,s,o,u,h,f){return(o-h)*(e-f)>=(r-h)*(u-f)&&(r-h)*(s-f)>=(i-h)*(e-f)&&(i-h)*(u-f)>=(o-h)*(s-f)}function Zl(r,e,i,s,o,u,h,f){return!(r===h&&e===f)&&Yd(r,e,i,s,o,u,h,f)}function Wm(r,e){return r.next.i!==e.i&&r.prev.i!==e.i&&!function(i,s){let o=i;do{if(o.i!==i.i&&o.next.i!==i.i&&o.i!==s.i&&o.next.i!==s.i&&Kd(o,o.next,i,s))return!0;o=o.next}while(o!==i);return!1}(r,e)&&($l(r,e)&&$l(e,r)&&function(i,s){let o=i,u=!1;const h=(i.x+s.x)/2,f=(i.y+s.y)/2;do o.y>f!=o.next.y>f&&o.next.y!==o.y&&h<(o.next.x-o.x)*(f-o.y)/(o.next.y-o.y)+o.x&&(u=!u),o=o.next;while(o!==i);return u}(r,e)&&(ti(r.prev,r,e.prev)||ti(r,e.prev,e))||Ro(r,e)&&ti(r.prev,r,r.next)>0&&ti(e.prev,e,e.next)>0)}function ti(r,e,i){return(e.y-r.y)*(i.x-e.x)-(e.x-r.x)*(i.y-e.y)}function Ro(r,e){return r.x===e.x&&r.y===e.y}function Kd(r,e,i,s){const o=vu(ti(r,e,i)),u=vu(ti(r,e,s)),h=vu(ti(i,s,r)),f=vu(ti(i,s,e));return o!==u&&h!==f||!(o!==0||!xu(r,i,e))||!(u!==0||!xu(r,s,e))||!(h!==0||!xu(i,r,s))||!(f!==0||!xu(i,e,s))}function xu(r,e,i){return e.x<=Math.max(r.x,i.x)&&e.x>=Math.min(r.x,i.x)&&e.y<=Math.max(r.y,i.y)&&e.y>=Math.min(r.y,i.y)}function vu(r){return r>0?1:r<0?-1:0}function $l(r,e){return ti(r.prev,r,r.next)<0?ti(r,e,r.next)>=0&&ti(r,r.prev,e)>=0:ti(r,e,r.prev)<0||ti(r,r.next,e)<0}function Jd(r,e){const i=Eh(r.i,r.x,r.y),s=Eh(e.i,e.x,e.y),o=r.next,u=e.prev;return r.next=e,e.prev=r,i.next=o,o.prev=i,s.next=i,i.prev=s,u.next=s,s.prev=u,s}function Qd(r,e,i,s){const o=Eh(r,e,i);return s?(o.next=s.next,o.prev=s,s.next.prev=o,s.next=o):(o.prev=o,o.next=o),o}function Wl(r){r.next.prev=r.prev,r.prev.next=r.next,r.prevZ&&(r.prevZ.nextZ=r.nextZ),r.nextZ&&(r.nextZ.prevZ=r.prevZ)}function Eh(r,e,i){return{i:r,x:e,y:i,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}class Lo{constructor(e,i){if(i>e)throw new Error("Min granularity must not be greater than base granularity.");this._baseZoomGranularity=e,this._minGranularity=i}getGranularityForZoomLevel(e){return Math.max(Math.floor(this._baseZoomGranularity/(1<<e)),this._minGranularity,1)}}class bu{constructor(e){this.fill=e.fill,this.line=e.line,this.tile=e.tile,this.stencil=e.stencil,this.circle=e.circle}}bu.noSubdivision=new bu({fill:new Lo(0,0),line:new Lo(0,0),tile:new Lo(0,0),stencil:new Lo(0,0),circle:1}),Fe("SubdivisionGranularityExpression",Lo),Fe("SubdivisionGranularitySetting",bu);const Fo=-32768,Hl=32767;class Hm{constructor(e,i){this._vertexBuffer=[],this._vertexDictionary=new Map,this._used=!1,this._granularity=e,this._granularityCellSize=ht/e,this._canonical=i}_getKey(e,i){return(e+=32768)<<16|i+32768}_vertexToIndex(e,i){if(e<-32768||i<-32768||e>32767||i>32767)throw new Error("Vertex coordinates are out of signed 16 bit integer range.");const s=0|Math.round(e),o=0|Math.round(i),u=this._getKey(s,o);if(this._vertexDictionary.has(u))return this._vertexDictionary.get(u);const h=this._vertexBuffer.length/2;return this._vertexDictionary.set(u,h),this._vertexBuffer.push(s,o),h}_subdivideTrianglesScanline(e){if(this._granularity<2)return function(o,u){const h=[];for(let f=0;f<u.length;f+=3){const g=u[f],y=u[f+1],v=u[f+2],b=o[2*g],S=o[2*g+1];(o[2*y]-b)*(o[2*v+1]-S)-(o[2*y+1]-S)*(o[2*v]-b)>0?(h.push(g),h.push(v),h.push(y)):(h.push(g),h.push(y),h.push(v))}return h}(this._vertexBuffer,e);const i=[],s=e.length;for(let o=0;o<s;o+=3){const u=[e[o+0],e[o+1],e[o+2]],h=[this._vertexBuffer[2*e[o+0]+0],this._vertexBuffer[2*e[o+0]+1],this._vertexBuffer[2*e[o+1]+0],this._vertexBuffer[2*e[o+1]+1],this._vertexBuffer[2*e[o+2]+0],this._vertexBuffer[2*e[o+2]+1]];let f=1/0,g=1/0,y=-1/0,v=-1/0;for(let D=0;D<3;D++){const R=h[2*D],V=h[2*D+1];f=Math.min(f,R),y=Math.max(y,R),g=Math.min(g,V),v=Math.max(v,V)}if(f===y||g===v)continue;const b=Math.floor(f/this._granularityCellSize),S=Math.ceil(y/this._granularityCellSize),P=Math.floor(g/this._granularityCellSize),C=Math.ceil(v/this._granularityCellSize);if(b!==S||P!==C)for(let D=P;D<C;D++){const R=this._scanlineGenerateVertexRingForCellRow(D,h,u);Xm(this._vertexBuffer,R,i)}else i.push(...u)}return i}_scanlineGenerateVertexRingForCellRow(e,i,s){const o=e*this._granularityCellSize,u=o+this._granularityCellSize,h=[];for(let f=0;f<3;f++){const g=i[2*f],y=i[2*f+1],v=i[2*(f+1)%6],b=i[(2*(f+1)+1)%6],S=i[2*(f+2)%6],P=i[(2*(f+2)+1)%6],C=v-g,D=b-y,R=C===0,V=D===0,q=(o-y)/D,O=(u-y)/D,j=Math.min(q,O),Y=Math.max(q,O);if(!V&&(j>=1||Y<=0)||V&&(y<o||y>u)){b>=o&&b<=u&&h.push(s[(f+1)%3]);continue}!V&&j>0&&h.push(this._vertexToIndex(g+C*j,y+D*j));const ie=g+C*Math.max(j,0),ue=g+C*Math.min(Y,1);R||this._generateIntraEdgeVertices(h,g,y,v,b,ie,ue),!V&&Y<1&&h.push(this._vertexToIndex(g+C*Y,y+D*Y)),(V||b>=o&&b<=u)&&h.push(s[(f+1)%3]),!V&&(b<=o||b>=u)&&this._generateInterEdgeVertices(h,g,y,v,b,S,P,ue,o,u)}return h}_generateIntraEdgeVertices(e,i,s,o,u,h,f){const g=o-i,y=u-s,v=y===0,b=v?Math.min(i,o):Math.min(h,f),S=v?Math.max(i,o):Math.max(h,f),P=Math.floor(b/this._granularityCellSize)+1,C=Math.ceil(S/this._granularityCellSize)-1;if(v?i<o:h<f)for(let D=P;D<=C;D++){const R=D*this._granularityCellSize;e.push(this._vertexToIndex(R,s+y*(R-i)/g))}else for(let D=C;D>=P;D--){const R=D*this._granularityCellSize;e.push(this._vertexToIndex(R,s+y*(R-i)/g))}}_generateInterEdgeVertices(e,i,s,o,u,h,f,g,y,v){const b=u-s,S=h-o,P=f-u,C=(y-u)/P,D=(v-u)/P,R=Math.min(C,D),V=Math.max(C,D),q=o+S*R;let O=Math.floor(Math.min(q,g)/this._granularityCellSize)+1,j=Math.ceil(Math.max(q,g)/this._granularityCellSize)-1,Y=g<q;const ie=P===0;if(ie&&(f===y||f===v))return;if(ie||R>=1||V<=0){const be=s-f,Te=h+(i-h)*Math.min((y-f)/be,(v-f)/be);O=Math.floor(Math.min(Te,g)/this._granularityCellSize)+1,j=Math.ceil(Math.max(Te,g)/this._granularityCellSize)-1,Y=g<Te}const ue=b>0?v:y;if(Y)for(let be=O;be<=j;be++)e.push(this._vertexToIndex(be*this._granularityCellSize,ue));else for(let be=j;be>=O;be--)e.push(this._vertexToIndex(be*this._granularityCellSize,ue))}_generateOutline(e){const i=[];for(const s of e){const o=La(s,this._granularity,!0),u=this._pointArrayToIndices(o),h=[];for(let f=1;f<u.length;f++)h.push(u[f-1]),h.push(u[f]);i.push(h)}return i}_handlePoles(e){let i=!1,s=!1;this._canonical&&(this._canonical.y===0&&(i=!0),this._canonical.y===(1<<this._canonical.z)-1&&(s=!0)),(i||s)&&this._fillPoles(e,i,s)}_ensureNoPoleVertices(){const e=this._vertexBuffer;for(let i=0;i<e.length;i+=2){const s=e[i+1];s===Fo&&(e[i+1]=-32767),s===Hl&&(e[i+1]=32766)}}_generatePoleQuad(e,i,s,o,u,h){o>u!=(h===Fo)?(e.push(i),e.push(s),e.push(this._vertexToIndex(o,h)),e.push(s),e.push(this._vertexToIndex(u,h)),e.push(this._vertexToIndex(o,h))):(e.push(s),e.push(i),e.push(this._vertexToIndex(o,h)),e.push(this._vertexToIndex(u,h)),e.push(s),e.push(this._vertexToIndex(o,h)))}_fillPoles(e,i,s){const o=this._vertexBuffer,u=ht,h=e.length;for(let f=2;f<h;f+=3){const g=e[f-2],y=e[f-1],v=e[f],b=o[2*g],S=o[2*g+1],P=o[2*y],C=o[2*y+1],D=o[2*v],R=o[2*v+1];i&&(S===0&&C===0&&this._generatePoleQuad(e,g,y,b,P,Fo),C===0&&R===0&&this._generatePoleQuad(e,y,v,P,D,Fo),R===0&&S===0&&this._generatePoleQuad(e,v,g,D,b,Fo)),s&&(S===u&&C===u&&this._generatePoleQuad(e,g,y,b,P,Hl),C===u&&R===u&&this._generatePoleQuad(e,y,v,P,D,Hl),R===u&&S===u&&this._generatePoleQuad(e,v,g,D,b,Hl))}}_initializeVertices(e){for(let i=0;i<e.length;i+=2)this._vertexToIndex(e[i],e[i+1])}subdividePolygonInternal(e,i){if(this._used)throw new Error("Subdivision: multiple use not allowed.");this._used=!0;const{flattened:s,holeIndices:o}=function(f){const g=[],y=[];for(const v of f)if(v.length!==0){v!==f[0]&&g.push(y.length/2);for(let b=0;b<v.length;b++)y.push(v[b].x),y.push(v[b].y)}return{flattened:y,holeIndices:g}}(e);let u;this._initializeVertices(s);try{const f=function(y,v,b=2){const S=v&&v.length,P=S?v[0]*b:y.length;let C=Xd(y,0,P,b,!0);const D=[];if(!C||C.next===C.prev)return D;let R,V,q;if(S&&(C=function(O,j,Y,ie){const ue=[];for(let be=0,Te=j.length;be<Te;be++){const Ie=Xd(O,j[be]*ie,be<Te-1?j[be+1]*ie:O.length,ie,!1);Ie===Ie.next&&(Ie.steiner=!0),ue.push($m(Ie))}ue.sort(Gm);for(let be=0;be<ue.length;be++)Y=qm(ue[be],Y);return Y}(y,v,C,b)),y.length>80*b){R=y[0],V=y[1];let O=R,j=V;for(let Y=b;Y<P;Y+=b){const ie=y[Y],ue=y[Y+1];ie<R&&(R=ie),ue<V&&(V=ue),ie>O&&(O=ie),ue>j&&(j=ue)}q=Math.max(O-R,j-V),q=q!==0?32767/q:0}return ql(C,D,b,R,V,q,0),D}(s,o),g=this._convertIndices(s,f);u=this._subdivideTrianglesScanline(g)}catch(f){console.error(f)}let h=[];return i&&(h=this._generateOutline(e)),this._ensureNoPoleVertices(),this._handlePoles(u),{verticesFlattened:this._vertexBuffer,indicesTriangles:u,indicesLineList:h}}_convertIndices(e,i){const s=[];for(let o=0;o<i.length;o++)s.push(this._vertexToIndex(e[2*i[o]],e[2*i[o]+1]));return s}_pointArrayToIndices(e){const i=[];for(let s=0;s<e.length;s++){const o=e[s];i.push(this._vertexToIndex(o.x,o.y))}return i}}function ep(r,e,i,s=!0){return new Hm(i,e).subdividePolygonInternal(r,s)}function La(r,e,i=!1){if(!r||r.length<1)return[];if(r.length<2)return[];const s=r[0],o=r[r.length-1],u=i&&(s.x!==o.x||s.y!==o.y);if(e<2)return u?[...r,r[0]]:[...r];const h=Math.floor(ht/e),f=[];f.push(new Pe(r[0].x,r[0].y));const g=r.length,y=u?g:g-1;for(let v=0;v<y;v++){const b=r[v],S=v<g-1?r[v+1]:r[0],P=b.x,C=b.y,D=S.x,R=S.y,V=P!==D,q=C!==R;if(!V&&!q)continue;const O=D-P,j=R-C,Y=Math.abs(O),ie=Math.abs(j);let ue=P,be=C;for(;;){const Ie=O>0?(Math.floor(ue/h)+1)*h:(Math.ceil(ue/h)-1)*h,ke=j>0?(Math.floor(be/h)+1)*h:(Math.ceil(be/h)-1)*h,Ee=Math.abs(ue-Ie),Se=Math.abs(be-ke),ye=Math.abs(ue-D),Be=Math.abs(be-R),Oe=V?Ee/Y:Number.POSITIVE_INFINITY,qe=q?Se/ie:Number.POSITIVE_INFINITY;if((ye<=Ee||!V)&&(Be<=Se||!q))break;if(Oe<qe&&V||!q){ue=Ie,be+=j*Oe;const je=new Pe(ue,Math.round(be));f[f.length-1].x===je.x&&f[f.length-1].y===je.y||f.push(je)}else{ue+=O*qe,be=ke;const je=new Pe(Math.round(ue),be);f[f.length-1].x===je.x&&f[f.length-1].y===je.y||f.push(je)}}const Te=new Pe(D,R);f[f.length-1].x===Te.x&&f[f.length-1].y===Te.y||f.push(Te)}return f}function Xm(r,e,i){if(e.length===0)throw new Error("Subdivision vertex ring is empty.");let s=0,o=r[2*e[0]];for(let g=1;g<e.length;g++){const y=r[2*e[g]];y<o&&(o=y,s=g)}const u=e.length;let h=s,f=(h+1)%u;for(;;){const g=h-1>=0?h-1:u-1,y=(f+1)%u,v=r[2*e[g]],b=r[2*e[y]],S=r[2*e[h]],P=r[2*e[h]+1],C=r[2*e[f]+1];let D=!1;if(v<b)D=!0;else if(v>b)D=!1;else{const R=C-P,V=-(r[2*e[f]]-S),q=P<C?1:-1;((v-S)*R+(r[2*e[g]+1]-P)*V)*q>((b-S)*R+(r[2*e[y]+1]-P)*V)*q&&(D=!0)}if(D){const R=e[g],V=e[h],q=e[f];R!==V&&R!==q&&V!==q&&i.push(q,V,R),h--,h<0&&(h=u-1)}else{const R=e[y],V=e[h],q=e[f];R!==V&&R!==q&&V!==q&&i.push(q,V,R),f++,f>=u&&(f=0)}if(g===y)break}}function tp(r,e,i,s,o,u,h,f,g){const y=o.length/2,v=h&&f&&g;if(y<ve.MAX_VERTEX_ARRAY_LENGTH){const b=e.prepareSegment(y,i,s),S=b.vertexLength;for(let D=0;D<u.length;D+=3)s.emplaceBack(S+u[D],S+u[D+1],S+u[D+2]);let P,C;b.vertexLength+=y,b.primitiveLength+=u.length/3,v&&(C=h.prepareSegment(y,i,f),P=C.vertexLength,C.vertexLength+=y);for(let D=0;D<o.length;D+=2)r(o[D],o[D+1]);if(v)for(let D=0;D<g.length;D++){const R=g[D];for(let V=1;V<R.length;V+=2)f.emplaceBack(P+R[V-1],P+R[V]);C.primitiveLength+=R.length/2}}else(function(b,S,P,C,D,R){const V=[];for(let ie=0;ie<C.length/2;ie++)V.push(-1);const q={count:0};let O=0,j=b.getOrCreateLatestSegment(S,P),Y=j.vertexLength;for(let ie=2;ie<D.length;ie+=3){const ue=D[ie-2],be=D[ie-1],Te=D[ie];let Ie=V[ue]<O,ke=V[be]<O,Ee=V[Te]<O;j.vertexLength+((Ie?1:0)+(ke?1:0)+(Ee?1:0))>ve.MAX_VERTEX_ARRAY_LENGTH&&(j=b.createNewSegment(S,P),O=q.count,Ie=!0,ke=!0,Ee=!0,Y=0);const Se=Xl(V,C,R,q,ue,Ie,j),ye=Xl(V,C,R,q,be,ke,j),Be=Xl(V,C,R,q,Te,Ee,j);P.emplaceBack(Y+Se-O,Y+ye-O,Y+Be-O),j.primitiveLength++}})(e,i,s,o,u,r),v&&function(b,S,P,C,D,R){const V=[];for(let ie=0;ie<C.length/2;ie++)V.push(-1);const q={count:0};let O=0,j=b.getOrCreateLatestSegment(S,P),Y=j.vertexLength;for(let ie=0;ie<D.length;ie++){const ue=D[ie];for(let be=1;be<D[ie].length;be+=2){const Te=ue[be-1],Ie=ue[be];let ke=V[Te]<O,Ee=V[Ie]<O;j.vertexLength+((ke?1:0)+(Ee?1:0))>ve.MAX_VERTEX_ARRAY_LENGTH&&(j=b.createNewSegment(S,P),O=q.count,ke=!0,Ee=!0,Y=0);const Se=Xl(V,C,R,q,Te,ke,j),ye=Xl(V,C,R,q,Ie,Ee,j);P.emplaceBack(Y+Se-O,Y+ye-O),j.primitiveLength++}}}(h,i,f,o,g,r),e.forceNewSegmentOnNextPrepare(),h==null||h.forceNewSegmentOnNextPrepare()}function Xl(r,e,i,s,o,u,h){if(u){const f=s.count;return i(e[2*o],e[2*o+1]),r[o]=s.count,s.count++,h.vertexLength++,f}return r[o]}class Ch{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(i=>i.id),this.index=e.index,this.hasDependencies=!1,this.patternFeatures=[],this.layoutVertexArray=new G,this.indexArray=new pe,this.indexArray2=new ge,this.programConfigurations=new os(e.layers,e.zoom),this.segments=new ve,this.segments2=new ve,this.stateDependentLayerIds=this.layers.filter(i=>i.isStateDependent()).map(i=>i.id)}populate(e,i,s){this.hasDependencies=yu("fill",this.layers,i);const o=this.layers[0].layout.get("fill-sort-key"),u=!o.isConstant(),h=[];for(const{feature:f,id:g,index:y,sourceLayerIndex:v}of e){const b=this.layers[0]._featureFilter.needGeometry,S=Bn(f,b);if(!this.layers[0]._featureFilter.filter(new Pt(this.zoom),S,s))continue;const P=u?o.evaluate(S,{},s,i.availableImages):void 0,C={id:g,properties:f.properties,type:f.type,sourceLayerIndex:v,index:y,geometry:b?S.geometry:ur(f),patterns:{},sortKey:P};h.push(C)}u&&h.sort((f,g)=>f.sortKey-g.sortKey);for(const f of h){const{geometry:g,index:y,sourceLayerIndex:v}=f;if(this.hasDependencies){const b=Mh("fill",this.layers,f,{zoom:this.zoom},i);this.patternFeatures.push(b)}else this.addFeature(f,g,y,s,{},i.subdivisionGranularity);i.featureIndex.insert(e[y].feature,g,y,v,this.index)}}update(e,i,s){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,i,this.stateDependentLayers,{imagePositions:s})}addFeatures(e,i,s){for(const o of this.patternFeatures)this.addFeature(o,o.geometry,o.index,i,s,e.subdivisionGranularity)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Om),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,i,s,o,u,h){for(const f of aa(i,500)){const g=ep(f,o,h.fill.getGranularityForZoomLevel(o.z)),y=this.layoutVertexArray;tp((v,b)=>{y.emplaceBack(v,b)},this.segments,this.layoutVertexArray,this.indexArray,g.verticesFlattened,g.indicesTriangles,this.segments2,this.indexArray2,g.indicesLineList)}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,s,{imagePositions:u,canonical:o})}}let ip,rp;Fe("FillBucket",Ch,{omit:["layers","patternFeatures"]});var Ym={get paint(){return rp=rp||new Bi({"fill-antialias":new Ue(Q.paint_fill["fill-antialias"]),"fill-opacity":new Ye(Q.paint_fill["fill-opacity"]),"fill-color":new Ye(Q.paint_fill["fill-color"]),"fill-outline-color":new Ye(Q.paint_fill["fill-outline-color"]),"fill-translate":new Ue(Q.paint_fill["fill-translate"]),"fill-translate-anchor":new Ue(Q.paint_fill["fill-translate-anchor"]),"fill-pattern":new Fn(Q.paint_fill["fill-pattern"])})},get layout(){return ip=ip||new Bi({"fill-sort-key":new Ye(Q.layout_fill["fill-sort-key"])})}};class Km extends Rr{constructor(e,i){super(e,Ym,i)}recalculate(e,i){super.recalculate(e,i);const s=this.paint._values["fill-outline-color"];s.value.kind==="constant"&&s.value.value===void 0&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"])}createBucket(e){return new Ch(e)}queryRadius(){return gu(this.paint.get("fill-translate"))}queryIntersectsFeature({queryGeometry:e,geometry:i,transform:s,pixelsToTileUnits:o}){return kd(_u(e,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),-s.bearingInRadians,o),i)}isTileClipped(){return!0}}const Jm=Kt([{name:"a_pos",components:2,type:"Int16"},{name:"a_normal_ed",components:4,type:"Int16"}],4),Qm=Kt([{name:"a_centroid",components:2,type:"Int16"}],4),{members:eg}=Jm;class Yl{constructor(e,i,s,o,u){this.properties={},this.extent=s,this.type=0,this.id=void 0,this._pbf=e,this._geometry=-1,this._keys=o,this._values=u,e.readFields(tg,this,i)}loadGeometry(){const e=this._pbf;e.pos=this._geometry;const i=e.readVarint()+e.pos,s=[];let o,u=1,h=0,f=0,g=0;for(;e.pos<i;){if(h<=0){const y=e.readVarint();u=7&y,h=y>>3}if(h--,u===1||u===2)f+=e.readSVarint(),g+=e.readSVarint(),u===1&&(o&&s.push(o),o=[]),o&&o.push(new Pe(f,g));else{if(u!==7)throw new Error(`unknown command ${u}`);o&&o.push(o[0].clone())}}return o&&s.push(o),s}bbox(){const e=this._pbf;e.pos=this._geometry;const i=e.readVarint()+e.pos;let s=1,o=0,u=0,h=0,f=1/0,g=-1/0,y=1/0,v=-1/0;for(;e.pos<i;){if(o<=0){const b=e.readVarint();s=7&b,o=b>>3}if(o--,s===1||s===2)u+=e.readSVarint(),h+=e.readSVarint(),u<f&&(f=u),u>g&&(g=u),h<y&&(y=h),h>v&&(v=h);else if(s!==7)throw new Error(`unknown command ${s}`)}return[f,y,g,v]}toGeoJSON(e,i,s){const o=this.extent*Math.pow(2,s),u=this.extent*e,h=this.extent*i,f=this.loadGeometry();function g(S){return[360*(S.x+u)/o-180,360/Math.PI*Math.atan(Math.exp((1-2*(S.y+h)/o)*Math.PI))-90]}function y(S){return S.map(g)}let v;if(this.type===1){const S=[];for(const C of f)S.push(C[0]);const P=y(S);v=S.length===1?{type:"Point",coordinates:P[0]}:{type:"MultiPoint",coordinates:P}}else if(this.type===2){const S=f.map(y);v=S.length===1?{type:"LineString",coordinates:S[0]}:{type:"MultiLineString",coordinates:S}}else{if(this.type!==3)throw new Error("unknown feature type");{const S=np(f),P=[];for(const C of S)P.push(C.map(y));v=P.length===1?{type:"Polygon",coordinates:P[0]}:{type:"MultiPolygon",coordinates:P}}}const b={type:"Feature",geometry:v,properties:this.properties};return this.id!=null&&(b.id=this.id),b}}function tg(r,e,i){r===1?e.id=i.readVarint():r===2?function(s,o){const u=s.readVarint()+s.pos;for(;s.pos<u;){const h=o._keys[s.readVarint()],f=o._values[s.readVarint()];o.properties[h]=f}}(i,e):r===3?e.type=i.readVarint():r===4&&(e._geometry=i.pos)}function np(r){const e=r.length;if(e<=1)return[r];const i=[];let s,o;for(let u=0;u<e;u++){const h=ig(r[u]);h!==0&&(o===void 0&&(o=h<0),o===h<0?(s&&i.push(s),s=[r[u]]):s&&s.push(r[u]))}return s&&i.push(s),i}function ig(r){let e=0;for(let i,s,o=0,u=r.length,h=u-1;o<u;h=o++)i=r[o],s=r[h],e+=(s.x-i.x)*(i.y+s.y);return e}Yl.types=["Unknown","Point","LineString","Polygon"];class rg{constructor(e,i){this.version=1,this.name="",this.extent=4096,this.length=0,this._pbf=e,this._keys=[],this._values=[],this._features=[],e.readFields(ng,this,i),this.length=this._features.length}feature(e){if(e<0||e>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[e];const i=this._pbf.readVarint()+this._pbf.pos;return new Yl(this._pbf,i,this.extent,this._keys,this._values)}}function ng(r,e,i){r===15?e.version=i.readVarint():r===1?e.name=i.readString():r===5?e.extent=i.readVarint():r===2?e._features.push(i.pos):r===3?e._keys.push(i.readString()):r===4&&e._values.push(function(s){let o=null;const u=s.readVarint()+s.pos;for(;s.pos<u;){const h=s.readVarint()>>3;o=h===1?s.readString():h===2?s.readFloat():h===3?s.readDouble():h===4?s.readVarint64():h===5?s.readVarint():h===6?s.readSVarint():h===7?s.readBoolean():null}if(o==null)throw new Error("unknown feature value");return o}(i))}class sp{constructor(e,i){this.layers=e.readFields(sg,{},i)}}function sg(r,e,i){if(r===3){const s=new rg(i,i.readVarint()+i.pos);s.length&&(e[s.name]=s)}}const Ah=Math.pow(2,13);function Kl(r,e,i,s,o,u,h,f){r.emplaceBack(e,i,2*Math.floor(s*Ah)+h,o*Ah*2,u*Ah*2,Math.round(f))}class Dh{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(i=>i.id),this.index=e.index,this.hasDependencies=!1,this.layoutVertexArray=new U,this.centroidVertexArray=new F,this.indexArray=new pe,this.programConfigurations=new os(e.layers,e.zoom),this.segments=new ve,this.stateDependentLayerIds=this.layers.filter(i=>i.isStateDependent()).map(i=>i.id)}populate(e,i,s){this.features=[],this.hasDependencies=yu("fill-extrusion",this.layers,i);for(const{feature:o,id:u,index:h,sourceLayerIndex:f}of e){const g=this.layers[0]._featureFilter.needGeometry,y=Bn(o,g);if(!this.layers[0]._featureFilter.filter(new Pt(this.zoom),y,s))continue;const v={id:u,sourceLayerIndex:f,index:h,geometry:g?y.geometry:ur(o),properties:o.properties,type:o.type,patterns:{}};this.hasDependencies?this.features.push(Mh("fill-extrusion",this.layers,v,{zoom:this.zoom},i)):this.addFeature(v,v.geometry,h,s,{},i.subdivisionGranularity),i.featureIndex.insert(o,v.geometry,h,f,this.index,!0)}}addFeatures(e,i,s){for(const o of this.features){const{geometry:u}=o;this.addFeature(o,u,o.index,i,s,e.subdivisionGranularity)}}update(e,i,s){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,i,this.stateDependentLayers,{imagePositions: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,eg),this.centroidVertexBuffer=e.createVertexBuffer(this.centroidVertexArray,Qm.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,i,s,o,u,h){for(const f of aa(i,500)){const g={x:0,y:0,sampleCount:0},y=this.layoutVertexArray.length;this.processPolygon(g,o,e,f,h);const v=this.layoutVertexArray.length-y,b=Math.floor(g.x/g.sampleCount),S=Math.floor(g.y/g.sampleCount);for(let P=0;P<v;P++)this.centroidVertexArray.emplaceBack(b,S)}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,s,{imagePositions:u,canonical:o})}processPolygon(e,i,s,o,u){if(o.length<1||ap(o[0]))return;for(const b of o)b.length!==0&&ag(e,b);const h={segment:this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray)},f=u.fill.getGranularityForZoomLevel(i.z),g=Yl.types[s.type]==="Polygon";for(const b of o){if(b.length===0||ap(b))continue;const S=La(b,f,g);this._generateSideFaces(S,h)}if(!g)return;const y=ep(o,i,f,!1),v=this.layoutVertexArray;tp((b,S)=>{Kl(v,b,S,0,0,1,1,0)},this.segments,this.layoutVertexArray,this.indexArray,y.verticesFlattened,y.indicesTriangles)}_generateSideFaces(e,i){let s=0;for(let o=1;o<e.length;o++){const u=e[o],h=e[o-1];if(og(u,h))continue;i.segment.vertexLength+4>ve.MAX_VERTEX_ARRAY_LENGTH&&(i.segment=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));const f=u.sub(h)._perp()._unit(),g=h.dist(u);s+g>32768&&(s=0),Kl(this.layoutVertexArray,u.x,u.y,f.x,f.y,0,0,s),Kl(this.layoutVertexArray,u.x,u.y,f.x,f.y,0,1,s),s+=g,Kl(this.layoutVertexArray,h.x,h.y,f.x,f.y,0,0,s),Kl(this.layoutVertexArray,h.x,h.y,f.x,f.y,0,1,s);const y=i.segment.vertexLength;this.indexArray.emplaceBack(y,y+2,y+1),this.indexArray.emplaceBack(y+1,y+2,y+3),i.segment.vertexLength+=4,i.segment.primitiveLength+=2}}}function ag(r,e){for(let i=0;i<e.length;i++){const s=e[i];i===e.length-1&&e[0].x===s.x&&e[0].y===s.y||(r.x+=s.x,r.y+=s.y,r.sampleCount++)}}function og(r,e){return r.x===e.x&&(r.x<0||r.x>ht)||r.y===e.y&&(r.y<0||r.y>ht)}function ap(r){return r.every(e=>e.x<0)||r.every(e=>e.x>ht)||r.every(e=>e.y<0)||r.every(e=>e.y>ht)}let op;Fe("FillExtrusionBucket",Dh,{omit:["layers","features"]});var lg={get paint(){return op=op||new Bi({"fill-extrusion-opacity":new Ue(Q["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new Ye(Q["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new Ue(Q["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new Ue(Q["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Fn(Q["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new Ye(Q["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new Ye(Q["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new Ue(Q["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class cg extends Rr{constructor(e,i){super(e,lg,i)}createBucket(e){return new Dh(e)}queryRadius(){return gu(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}queryIntersectsFeature({queryGeometry:e,feature:i,featureState:s,geometry:o,transform:u,pixelsToTileUnits:h,pixelPosMatrix:f}){const g=_u(e,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),-u.bearingInRadians,h),y=this.paint.get("fill-extrusion-height").evaluate(i,s),v=this.paint.get("fill-extrusion-base").evaluate(i,s),b=function(P,C){const D=[];for(const R of P){const V=[R.x,R.y,0,1];jr(V,V,C),D.push(new Pe(V[0]/V[3],V[1]/V[3]))}return D}(g,f),S=function(P,C,D,R){const V=[],q=[],O=R[8]*C,j=R[9]*C,Y=R[10]*C,ie=R[11]*C,ue=R[8]*D,be=R[9]*D,Te=R[10]*D,Ie=R[11]*D;for(const ke of P){const Ee=[],Se=[];for(const ye of ke){const Be=ye.x,Oe=ye.y,qe=R[0]*Be+R[4]*Oe+R[12],je=R[1]*Be+R[5]*Oe+R[13],lt=R[2]*Be+R[6]*Oe+R[14],Bt=R[3]*Be+R[7]*Oe+R[15],si=lt+Y,Di=Bt+ie,Hr=qe+ue,Yi=je+be,bi=lt+Te,zi=Bt+Ie,Qt=new Pe((qe+O)/Di,(je+j)/Di);Qt.z=si/Di,Ee.push(Qt);const wi=new Pe(Hr/zi,Yi/zi);wi.z=bi/zi,Se.push(wi)}V.push(Ee),q.push(Se)}return[V,q]}(o,v,y,f);return function(P,C,D){let R=1/0;kd(D,C)&&(R=lp(D,C[0]));for(let V=0;V<C.length;V++){const q=C[V],O=P[V];for(let j=0;j<q.length-1;j++){const Y=q[j],ie=[Y,q[j+1],O[j+1],O[j],Y];Ul(D,ie)&&(R=Math.min(R,lp(D,ie)))}}return R!==1/0&&R}(S[0],S[1],b)}}function Jl(r,e){return r.x*e.x+r.y*e.y}function lp(r,e){if(r.length===1){let i=0;const s=e[i++];let o;for(;!o||s.equals(o);)if(o=e[i++],!o)return 1/0;for(;i<e.length;i++){const u=e[i],h=r[0],f=o.sub(s),g=u.sub(s),y=h.sub(s),v=Jl(f,f),b=Jl(f,g),S=Jl(g,g),P=Jl(y,f),C=Jl(y,g),D=v*S-b*b,R=(S*P-b*C)/D,V=(v*C-b*P)/D,q=s.z*(1-R-V)+o.z*R+u.z*V;if(isFinite(q))return q}return 1/0}{let i=1/0;for(const s of e)i=Math.min(i,s.z);return i}}const ug=Kt([{name:"a_pos_normal",components:2,type:"Int16"},{name:"a_data",components:4,type:"Uint8"}],4),{members:hg}=ug,dg=Kt([{name:"a_uv_x",components:1,type:"Float32"},{name:"a_split_index",components:1,type:"Float32"}]),{members:pg}=dg,fg=Math.cos(Math.PI/180*37.5),cp=Math.pow(2,14)/.5;class zh{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(i=>i.id),this.index=e.index,this.hasDependencies=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(i=>{this.gradients[i.id]={}}),this.layoutVertexArray=new $,this.layoutVertexArray2=new K,this.indexArray=new pe,this.programConfigurations=new os(e.layers,e.zoom),this.segments=new ve,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(i=>i.isStateDependent()).map(i=>i.id)}populate(e,i,s){this.hasDependencies=yu("line",this.layers,i)||this.hasLineDasharray(this.layers);const o=this.layers[0].layout.get("line-sort-key"),u=!o.isConstant(),h=[];for(const{feature:f,id:g,index:y,sourceLayerIndex:v}of e){const b=this.layers[0]._featureFilter.needGeometry,S=Bn(f,b);if(!this.layers[0]._featureFilter.filter(new Pt(this.zoom),S,s))continue;const P=u?o.evaluate(S,{},s):void 0,C={id:g,properties:f.properties,type:f.type,sourceLayerIndex:v,index:y,geometry:b?S.geometry:ur(f),patterns:{},dashes:{},sortKey:P};h.push(C)}u&&h.sort((f,g)=>f.sortKey-g.sortKey);for(const f of h){const{geometry:g,index:y,sourceLayerIndex:v}=f;this.hasDependencies?(yu("line",this.layers,i)?Mh("line",this.layers,f,{zoom:this.zoom},i):this.hasLineDasharray(this.layers)&&this.addLineDashDependencies(this.layers,f,this.zoom,i),this.patternFeatures.push(f)):this.addFeature(f,g,y,s,{},{},i.subdivisionGranularity),i.featureIndex.insert(e[y].feature,g,y,v,this.index)}}update(e,i,s,o){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,i,this.stateDependentLayers,{imagePositions:s,dashPositions:o})}addFeatures(e,i,s,o){for(const u of this.patternFeatures)this.addFeature(u,u.geometry,u.index,i,s,o,e.subdivisionGranularity)}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,pg)),this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,hg),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,i,s,o,u,h,f){const g=this.layers[0].layout,y=g.get("line-join").evaluate(e,{}),v=g.get("line-cap"),b=g.get("line-miter-limit"),S=g.get("line-round-limit");this.lineClips=this.lineFeatureClips(e);for(const P of i)this.addLine(P,e,y,v,b,S,o,f);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,s,{imagePositions:u,dashPositions:h,canonical:o})}addLine(e,i,s,o,u,h,f,g){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,e=La(e,f?g.line.getGranularityForZoomLevel(f.z):1),this.lineClips){this.lineClipsArray.push(this.lineClips);for(let O=0;O<e.length-1;O++)this.totalDistance+=e[O].dist(e[O+1]);this.updateScaledDistance(),this.maxLineLength=Math.max(this.maxLineLength,this.totalDistance)}const y=Yl.types[i.type]==="Polygon";let v=e.length;for(;v>=2&&e[v-1].equals(e[v-2]);)v--;let b=0;for(;b<v-1&&e[b].equals(e[b+1]);)b++;if(v<(y?3:2))return;s==="bevel"&&(u=1.05);const S=this.overscaling<=16?122880/(512*this.overscaling):0,P=this.segments.prepareSegment(10*v,this.layoutVertexArray,this.indexArray);let C,D,R,V,q;this.e1=this.e2=-1,y&&(C=e[v-2],q=e[b].sub(C)._unit()._perp());for(let O=b;O<v;O++){if(R=O===v-1?y?e[b+1]:void 0:e[O+1],R&&e[O].equals(R))continue;q&&(V=q),C&&(D=C),C=e[O],q=R?R.sub(C)._unit()._perp():V,V=V||q;let j=V.add(q);j.x===0&&j.y===0||j._unit();const Y=V.x*q.x+V.y*q.y,ie=j.x*q.x+j.y*q.y,ue=ie!==0?1/ie:1/0,be=2*Math.sqrt(2-2*ie),Te=ie<fg&&D&&R,Ie=V.x*q.y-V.y*q.x>0;if(Te&&O>b){const Se=C.dist(D);if(Se>2*S){const ye=C.sub(C.sub(D)._mult(S/Se)._round());this.updateDistance(D,ye),this.addCurrentVertex(ye,V,0,0,P),D=ye}}const ke=D&&R;let Ee=ke?s:y?"butt":o;if(ke&&Ee==="round"&&(ue<h?Ee="miter":ue<=2&&(Ee="fakeround")),Ee==="miter"&&ue>u&&(Ee="bevel"),Ee==="bevel"&&(ue>2&&(Ee="flipbevel"),ue<u&&(Ee="miter")),D&&this.updateDistance(D,C),Ee==="miter")j._mult(ue),this.addCurrentVertex(C,j,0,0,P);else if(Ee==="flipbevel"){if(ue>100)j=q.mult(-1);else{const Se=ue*V.add(q).mag()/V.sub(q).mag();j._perp()._mult(Se*(Ie?-1:1))}this.addCurrentVertex(C,j,0,0,P),this.addCurrentVertex(C,j.mult(-1),0,0,P)}else if(Ee==="bevel"||Ee==="fakeround"){const Se=-Math.sqrt(ue*ue-1),ye=Ie?Se:0,Be=Ie?0:Se;if(D&&this.addCurrentVertex(C,V,ye,Be,P),Ee==="fakeround"){const Oe=Math.round(180*be/Math.PI/20);for(let qe=1;qe<Oe;qe++){let je=qe/Oe;if(je!==.5){const Bt=je-.5;je+=je*Bt*(je-1)*((1.0904+Y*(Y*(3.55645-1.43519*Y)-3.2452))*Bt*Bt+(.848013+Y*(.215638*Y-1.06021)))}const lt=q.sub(V)._mult(je)._add(V)._unit()._mult(Ie?-1:1);this.addHalfVertex(C,lt.x,lt.y,!1,Ie,0,P)}}R&&this.addCurrentVertex(C,q,-ye,-Be,P)}else if(Ee==="butt")this.addCurrentVertex(C,j,0,0,P);else if(Ee==="square"){const Se=D?1:-1;this.addCurrentVertex(C,j,Se,Se,P)}else Ee==="round"&&(D&&(this.addCurrentVertex(C,V,0,0,P),this.addCurrentVertex(C,V,1,1,P,!0)),R&&(this.addCurrentVertex(C,q,-1,-1,P,!0),this.addCurrentVertex(C,q,0,0,P)));if(Te&&O<v-1){const Se=C.dist(R);if(Se>2*S){const ye=C.add(R.sub(C)._mult(S/Se)._round());this.updateDistance(C,ye),this.addCurrentVertex(ye,q,0,0,P),C=ye}}}}addCurrentVertex(e,i,s,o,u,h=!1){const f=i.y*o-i.x,g=-i.y-i.x*o;this.addHalfVertex(e,i.x+i.y*s,i.y-i.x*s,h,!1,s,u),this.addHalfVertex(e,f,g,h,!0,-o,u),this.distance>cp/2&&this.totalDistance===0&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(e,i,s,o,u,h))}addHalfVertex({x:e,y:i},s,o,u,h,f,g){const y=.5*(this.lineClips?this.scaledDistance*(cp-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((e<<1)+(u?1:0),(i<<1)+(h?1:0),Math.round(63*s)+128,Math.round(63*o)+128,1+(f===0?0:f<0?-1:1)|(63&y)<<2,y>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);const v=g.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,v,this.e2),g.primitiveLength++),h?this.e2=v:this.e1=v}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(e,i){this.distance+=e.dist(i),this.updateScaledDistance()}hasLineDasharray(e){for(const i of e){const s=i.paint.get("line-dasharray");if(s&&!s.isConstant())return!0}return!1}addLineDashDependencies(e,i,s,o){for(const u of e){const h=u.paint.get("line-dasharray");if(!h||h.value.kind==="constant")continue;const f=u.layout.get("line-cap")==="round",g={dasharray:h.value.evaluate({zoom:s-1},i,{}),round:f},y={dasharray:h.value.evaluate({zoom:s},i,{}),round:f},v={dasharray:h.value.evaluate({zoom:s+1},i,{}),round:f},b=`${g.dasharray.join(",")},${g.round}`,S=`${y.dasharray.join(",")},${y.round}`,P=`${v.dasharray.join(",")},${v.round}`;o.dashDependencies[b]=g,o.dashDependencies[S]=y,o.dashDependencies[P]=v,i.dashes[u.id]={min:b,mid:S,max:P}}}}let up,hp;Fe("LineBucket",zh,{omit:["layers","patternFeatures"]});var dp={get paint(){return hp=hp||new Bi({"line-opacity":new Ye(Q.paint_line["line-opacity"]),"line-color":new Ye(Q.paint_line["line-color"]),"line-translate":new Ue(Q.paint_line["line-translate"]),"line-translate-anchor":new Ue(Q.paint_line["line-translate-anchor"]),"line-width":new Ye(Q.paint_line["line-width"]),"line-gap-width":new Ye(Q.paint_line["line-gap-width"]),"line-offset":new Ye(Q.paint_line["line-offset"]),"line-blur":new Ye(Q.paint_line["line-blur"]),"line-dasharray":new Fn(Q.paint_line["line-dasharray"]),"line-pattern":new Fn(Q.paint_line["line-pattern"]),"line-gradient":new zs(Q.paint_line["line-gradient"])})},get layout(){return up=up||new Bi({"line-cap":new Ue(Q.layout_line["line-cap"]),"line-join":new Ye(Q.layout_line["line-join"]),"line-miter-limit":new Ue(Q.layout_line["line-miter-limit"]),"line-round-limit":new Ue(Q.layout_line["line-round-limit"]),"line-sort-key":new Ye(Q.layout_line["line-sort-key"])})}};class mg extends Ye{possiblyEvaluate(e,i){return i=new Pt(Math.floor(i.zoom),{now:i.now,fadeDuration:i.fadeDuration,zoomHistory:i.zoomHistory,transition:i.transition}),super.possiblyEvaluate(e,i)}evaluate(e,i,s,o){return i=_i({},i,{zoom:Math.floor(i.zoom)}),super.evaluate(e,i,s,o)}}let wu;class gg extends Rr{constructor(e,i){super(e,dp,i),this.gradientVersion=0,wu||(wu=new mg(dp.paint.properties["line-width"].specification),wu.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(e){if(e==="line-gradient"){const i=this.gradientExpression();this.stepInterpolant=!!function(s){return s._styleExpression!==void 0}(i)&&i._styleExpression.expression instanceof Yn,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(e,i){super.recalculate(e,i),this.paint._values["line-floorwidth"]=wu.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,e)}createBucket(e){return new zh(e)}queryRadius(e){const i=e,s=pp(ko("line-width",this,i),ko("line-gap-width",this,i)),o=ko("line-offset",this,i);return s/2+Math.abs(o)+gu(this.paint.get("line-translate"))}queryIntersectsFeature({queryGeometry:e,feature:i,featureState:s,geometry:o,transform:u,pixelsToTileUnits:h}){const f=_u(e,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),-u.bearingInRadians,h),g=h/2*pp(this.paint.get("line-width").evaluate(i,s),this.paint.get("line-gap-width").evaluate(i,s)),y=this.paint.get("line-offset").evaluate(i,s);return y&&(o=function(v,b){const S=[];for(let P=0;P<v.length;P++){const C=Sm(v[P]),D=[];for(let R=0;R<C.length;R++){const V=C[R],q=C[R-1],O=C[R+1],j=R===0?new Pe(0,0):V.sub(q)._unit()._perp(),Y=R===C.length-1?new Pe(0,0):O.sub(V)._unit()._perp(),ie=j._add(Y)._unit(),ue=ie.x*Y.x+ie.y*Y.y;ue!==0&&ie._mult(1/ue),D.push(ie._mult(b)._add(V))}S.push(D)}return S}(o,y*h)),function(v,b,S){for(let P=0;P<b.length;P++){const C=b[P];if(v.length>=3){for(let D=0;D<C.length;D++)if(zo(v,C[D]))return!0}if(bm(v,C,S))return!0}return!1}(f,o,g)}isTileClipped(){return!0}}function pp(r,e){return e>0?e+2*r:r}const _g=Kt([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),yg=Kt([{name:"a_projected_pos",components:3,type:"Float32"}],4);Kt([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);const xg=Kt([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"},{name:"a_box_real",components:2,type:"Int16"}]);Kt([{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 fp=Kt([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),vg=Kt([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function bg(r,e,i){return r.sections.forEach(s=>{s.text=function(o,u,h){const f=u.layout.get("text-transform").evaluate(h,{});return f==="uppercase"?o=o.toLocaleUpperCase():f==="lowercase"&&(o=o.toLocaleLowerCase()),fn.applyArabicShaping&&(o=fn.applyArabicShaping(o)),o}(s.text,e,i)}),r}Kt([{name:"triangle",components:3,type:"Uint16"}]),Kt([{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"}]),Kt([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",name:"collisionCircleDiameter"},{type:"Uint16",name:"textAnchorOffsetStartIndex"},{type:"Uint16",name:"textAnchorOffsetEndIndex"}]),Kt([{type:"Float32",name:"offsetX"}]),Kt([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),Kt([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);var pi=24;const Ql={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","⋯":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂"},wg={10:!0,32:!0,38:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0},Tg={40:!0};function mp(r,e,i,s,o,u){if("fontStack"in e){const h=i[e.fontStack],f=h&&h[r];return f?f.metrics.advance*e.scale+o:0}{const h=s[e.imageName];return h?h.displaySize[0]*e.scale*pi/u+o:0}}function gp(r,e,i,s){const o=Math.pow(r-e,2);return s?r<e?o/2:2*o:o+Math.abs(i)*i}function Sg(r,e,i){let s=0;return r===10&&(s-=1e4),i&&(s+=150),r!==40&&r!==65288||(s+=50),e!==41&&e!==65289||(s+=50),s}function _p(r,e,i,s,o,u){let h=null,f=gp(e,i,o,u);for(const g of s){const y=gp(e-g.x,i,o,u)+g.badness;y<=f&&(h=g,f=y)}return{index:r,x:e,priorBreak:h,badness:f}}function yp(r){return r?yp(r.priorBreak).concat(r.index):[]}class Bo{constructor(e="",i=[],s=[]){this.text=e,this.sections=i,this.sectionIndex=s,this.imageSectionID=null}static fromFeature(e,i){const s=new Bo;for(let o=0;o<e.sections.length;o++){const u=e.sections[o];u.image?s.addImageSection(u):s.addTextSection(u,i)}return s}length(){return[...this.text].length}getSection(e){return this.sections[this.sectionIndex[e]]}getSectionIndex(e){return this.sectionIndex[e]}verticalizePunctuation(){this.text=function(e){let i="",s={premature:!0,value:void 0};const o=e[Symbol.iterator]();let u=o.next();const h=e[Symbol.iterator]();h.next();let f=h.next();for(;!u.done;)i+=!f.done&&Il(f.value.codePointAt(0))&&!Ql[f.value]||!s.premature&&Il(s.value.codePointAt(0))&&!Ql[s.value]||!Ql[u.value]?u.value:Ql[u.value],s={value:u.value,premature:!1},u=o.next(),f=h.next();return i}(this.text)}hasZeroWidthSpaces(){return this.text.includes("")}trim(){const e=this.text.match(/^\s*/),i=e?e[0].length:0,s=this.text.match(/\S\s*$/),o=s?s[0].length-1:0;this.text=this.text.substring(i,this.text.length-o),this.sectionIndex=this.sectionIndex.slice(i,this.sectionIndex.length-o)}substring(e,i){const s=[...this.text].slice(e,i).join(""),o=this.sectionIndex.slice(e,i);return new Bo(s,this.sections,o)}toCodeUnitIndex(e){return[...this.text].slice(0,e).join("").length}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((e,i)=>Math.max(e,this.sections[i].scale),0)}getMaxImageSize(e){let i=0,s=0;for(let o=0;o<this.length();o++){const u=this.getSection(o);if("imageName"in u){const h=e[u.imageName];if(!h)continue;const f=h.displaySize;i=Math.max(i,f[0]),s=Math.max(s,f[1])}}return{maxImageWidth:i,maxImageHeight:s}}addTextSection(e,i){this.text+=e.text,this.sections.push({scale:e.scale||1,verticalAlign:e.verticalAlign||"bottom",fontStack:e.fontStack||i});const s=this.sections.length-1;this.sectionIndex.push(...[...e.text].map(()=>s))}addImageSection(e){const i=e.image?e.image.name:"";if(i.length===0)return void Mi("Can't add FormattedSection with an empty image.");const s=this.getNextImageSectionCharCode();s?(this.text+=String.fromCharCode(s),this.sections.push({scale:1,verticalAlign:e.verticalAlign||"bottom",imageName:i}),this.sectionIndex.push(this.sections.length-1)):Mi("Reached maximum number of images 6401")}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}determineLineBreaks(e,i,s,o,u){const h=[],f=this.determineAverageLineWidth(e,i,s,o,u),g=this.hasZeroWidthSpaces();let y=0,v=0;const b=this.text[Symbol.iterator]();let S=b.next();const P=this.text[Symbol.iterator]();P.next();let C=P.next();const D=this.text[Symbol.iterator]();D.next(),D.next();let R=D.next();for(;!S.done;){const V=this.getSection(v),q=S.value.codePointAt(0);if(iu(q)||(y+=mp(q,V,s,o,e,u)),!C.done){const O=mh(q),j=C.value.codePointAt(0);(wg[q]||O||"imageName"in V||!R.done&&Tg[j])&&h.push(_p(v+1,y,f,h,Sg(q,j,O&&g),!1))}v++,S=b.next(),C=P.next(),R=D.next()}return yp(_p(this.length(),y,f,h,0,!0))}determineAverageLineWidth(e,i,s,o,u){let h=0,f=0;for(const g of this.text){const y=this.getSection(f);h+=mp(g.codePointAt(0),y,s,o,e,u),f++}return h/Math.max(1,Math.ceil(h/i))}}const kh=4294967296,xp=1/kh,vp=typeof TextDecoder>"u"?null:new TextDecoder("utf-8");class Tu{constructor(e=new Uint8Array(16)){this.buf=ArrayBuffer.isView(e)?e:new Uint8Array(e),this.dataView=new DataView(this.buf.buffer),this.pos=0,this.type=0,this.length=this.buf.length}readFields(e,i,s=this.length){for(;this.pos<s;){const o=this.readVarint(),u=o>>3,h=this.pos;this.type=7&o,e(u,i,this),this.pos===h&&this.skip(o)}return i}readMessage(e,i){return this.readFields(e,i,this.readVarint()+this.pos)}readFixed32(){const e=this.dataView.getUint32(this.pos,!0);return this.pos+=4,e}readSFixed32(){const e=this.dataView.getInt32(this.pos,!0);return this.pos+=4,e}readFixed64(){const e=this.dataView.getUint32(this.pos,!0)+this.dataView.getUint32(this.pos+4,!0)*kh;return this.pos+=8,e}readSFixed64(){const e=this.dataView.getUint32(this.pos,!0)+this.dataView.getInt32(this.pos+4,!0)*kh;return this.pos+=8,e}readFloat(){const e=this.dataView.getFloat32(this.pos,!0);return this.pos+=4,e}readDouble(){const e=this.dataView.getFloat64(this.pos,!0);return this.pos+=8,e}readVarint(e){const i=this.buf;let s,o;return o=i[this.pos++],s=127&o,o<128?s:(o=i[this.pos++],s|=(127&o)<<7,o<128?s:(o=i[this.pos++],s|=(127&o)<<14,o<128?s:(o=i[this.pos++],s|=(127&o)<<21,o<128?s:(o=i[this.pos],s|=(15&o)<<28,function(u,h,f){const g=f.buf;let y,v;if(v=g[f.pos++],y=(112&v)>>4,v<128||(v=g[f.pos++],y|=(127&v)<<3,v<128)||(v=g[f.pos++],y|=(127&v)<<10,v<128)||(v=g[f.pos++],y|=(127&v)<<17,v<128)||(v=g[f.pos++],y|=(127&v)<<24,v<128)||(v=g[f.pos++],y|=(1&v)<<31,v<128))return Oo(u,y,h);throw new Error("Expected varint not more than 10 bytes")}(s,e,this)))))}readVarint64(){return this.readVarint(!0)}readSVarint(){const e=this.readVarint();return e%2==1?(e+1)/-2:e/2}readBoolean(){return!!this.readVarint()}readString(){const e=this.readVarint()+this.pos,i=this.pos;return this.pos=e,e-i>=12&&vp?vp.decode(this.buf.subarray(i,e)):function(s,o,u){let h="",f=o;for(;f<u;){const g=s[f];let y,v,b,S=null,P=g>239?4:g>223?3:g>191?2:1;if(f+P>u)break;P===1?g<128&&(S=g):P===2?(y=s[f+1],(192&y)==128&&(S=(31&g)<<6|63&y,S<=127&&(S=null))):P===3?(y=s[f+1],v=s[f+2],(192&y)==128&&(192&v)==128&&(S=(15&g)<<12|(63&y)<<6|63&v,(S<=2047||S>=55296&&S<=57343)&&(S=null))):P===4&&(y=s[f+1],v=s[f+2],b=s[f+3],(192&y)==128&&(192&v)==128&&(192&b)==128&&(S=(15&g)<<18|(63&y)<<12|(63&v)<<6|63&b,(S<=65535||S>=1114112)&&(S=null))),S===null?(S=65533,P=1):S>65535&&(S-=65536,h+=String.fromCharCode(S>>>10&1023|55296),S=56320|1023&S),h+=String.fromCharCode(S),f+=P}return h}(this.buf,i,e)}readBytes(){const e=this.readVarint()+this.pos,i=this.buf.subarray(this.pos,e);return this.pos=e,i}readPackedVarint(e=[],i){const s=this.readPackedEnd();for(;this.pos<s;)e.push(this.readVarint(i));return e}readPackedSVarint(e=[]){const i=this.readPackedEnd();for(;this.pos<i;)e.push(this.readSVarint());return e}readPackedBoolean(e=[]){const i=this.readPackedEnd();for(;this.pos<i;)e.push(this.readBoolean());return e}readPackedFloat(e=[]){const i=this.readPackedEnd();for(;this.pos<i;)e.push(this.readFloat());return e}readPackedDouble(e=[]){const i=this.readPackedEnd();for(;this.pos<i;)e.push(this.readDouble());return e}readPackedFixed32(e=[]){const i=this.readPackedEnd();for(;this.pos<i;)e.push(this.readFixed32());return e}readPackedSFixed32(e=[]){const i=this.readPackedEnd();for(;this.pos<i;)e.push(this.readSFixed32());return e}readPackedFixed64(e=[]){const i=this.readPackedEnd();for(;this.pos<i;)e.push(this.readFixed64());return e}readPackedSFixed64(e=[]){const i=this.readPackedEnd();for(;this.pos<i;)e.push(this.readSFixed64());return e}readPackedEnd(){return this.type===2?this.readVarint()+this.pos:this.pos+1}skip(e){const i=7&e;if(i===0)for(;this.buf[this.pos++]>127;);else if(i===2)this.pos=this.readVarint()+this.pos;else if(i===5)this.pos+=4;else{if(i!==1)throw new Error(`Unimplemented type: ${i}`);this.pos+=8}}writeTag(e,i){this.writeVarint(e<<3|i)}realloc(e){let i=this.length||16;for(;i<this.pos+e;)i*=2;if(i!==this.length){const s=new Uint8Array(i);s.set(this.buf),this.buf=s,this.dataView=new DataView(s.buffer),this.length=i}}finish(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)}writeFixed32(e){this.realloc(4),this.dataView.setInt32(this.pos,e,!0),this.pos+=4}writeSFixed32(e){this.realloc(4),this.dataView.setInt32(this.pos,e,!0),this.pos+=4}writeFixed64(e){this.realloc(8),this.dataView.setInt32(this.pos,-1&e,!0),this.dataView.setInt32(this.pos+4,Math.floor(e*xp),!0),this.pos+=8}writeSFixed64(e){this.realloc(8),this.dataView.setInt32(this.pos,-1&e,!0),this.dataView.setInt32(this.pos+4,Math.floor(e*xp),!0),this.pos+=8}writeVarint(e){(e=+e||0)>268435455||e<0?function(i,s){let o,u;if(i>=0?(o=i%4294967296|0,u=i/4294967296|0):(o=~(-i%4294967296),u=~(-i/4294967296),4294967295^o?o=o+1|0:(o=0,u=u+1|0)),i>=18446744073709552e3||i<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");s.realloc(10),function(h,f,g){g.buf[g.pos++]=127&h|128,h>>>=7,g.buf[g.pos++]=127&h|128,h>>>=7,g.buf[g.pos++]=127&h|128,h>>>=7,g.buf[g.pos++]=127&h|128,g.buf[g.pos]=127&(h>>>=7)}(o,0,s),function(h,f){const g=(7&h)<<4;f.buf[f.pos++]|=g|((h>>>=3)?128:0),h&&(f.buf[f.pos++]=127&h|((h>>>=7)?128:0),h&&(f.buf[f.pos++]=127&h|((h>>>=7)?128:0),h&&(f.buf[f.pos++]=127&h|((h>>>=7)?128:0),h&&(f.buf[f.pos++]=127&h|((h>>>=7)?128:0),h&&(f.buf[f.pos++]=127&h)))))}(u,s)}(e,this):(this.realloc(4),this.buf[this.pos++]=127&e|(e>127?128:0),e<=127||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),e<=127||(this.buf[this.pos++]=127&(e>>>=7)|(e>127?128:0),e<=127||(this.buf[this.pos++]=e>>>7&127))))}writeSVarint(e){this.writeVarint(e<0?2*-e-1:2*e)}writeBoolean(e){this.writeVarint(+e)}writeString(e){e=String(e),this.realloc(4*e.length),this.pos++;const i=this.pos;this.pos=function(o,u,h){for(let f,g,y=0;y<u.length;y++){if(f=u.charCodeAt(y),f>55295&&f<57344){if(!g){f>56319||y+1===u.length?(o[h++]=239,o[h++]=191,o[h++]=189):g=f;continue}if(f<56320){o[h++]=239,o[h++]=191,o[h++]=189,g=f;continue}f=g-55296<<10|f-56320|65536,g=null}else g&&(o[h++]=239,o[h++]=191,o[h++]=189,g=null);f<128?o[h++]=f:(f<2048?o[h++]=f>>6|192:(f<65536?o[h++]=f>>12|224:(o[h++]=f>>18|240,o[h++]=f>>12&63|128),o[h++]=f>>6&63|128),o[h++]=63&f|128)}return h}(this.buf,e,this.pos);const s=this.pos-i;s>=128&&bp(i,s,this),this.pos=i-1,this.writeVarint(s),this.pos+=s}writeFloat(e){this.realloc(4),this.dataView.setFloat32(this.pos,e,!0),this.pos+=4}writeDouble(e){this.realloc(8),this.dataView.setFloat64(this.pos,e,!0),this.pos+=8}writeBytes(e){const i=e.length;this.writeVarint(i),this.realloc(i);for(let s=0;s<i;s++)this.buf[this.pos++]=e[s]}writeRawMessage(e,i){this.pos++;const s=this.pos;e(i,this);const o=this.pos-s;o>=128&&bp(s,o,this),this.pos=s-1,this.writeVarint(o),this.pos+=o}writeMessage(e,i,s){this.writeTag(e,2),this.writeRawMessage(i,s)}writePackedVarint(e,i){i.length&&this.writeMessage(e,Pg,i)}writePackedSVarint(e,i){i.length&&this.writeMessage(e,Mg,i)}writePackedBoolean(e,i){i.length&&this.writeMessage(e,Cg,i)}writePackedFloat(e,i){i.length&&this.writeMessage(e,Ig,i)}writePackedDouble(e,i){i.length&&this.writeMessage(e,Eg,i)}writePackedFixed32(e,i){i.length&&this.writeMessage(e,Ag,i)}writePackedSFixed32(e,i){i.length&&this.writeMessage(e,Dg,i)}writePackedFixed64(e,i){i.length&&this.writeMessage(e,zg,i)}writePackedSFixed64(e,i){i.length&&this.writeMessage(e,kg,i)}writeBytesField(e,i){this.writeTag(e,2),this.writeBytes(i)}writeFixed32Field(e,i){this.writeTag(e,5),this.writeFixed32(i)}writeSFixed32Field(e,i){this.writeTag(e,5),this.writeSFixed32(i)}writeFixed64Field(e,i){this.writeTag(e,1),this.writeFixed64(i)}writeSFixed64Field(e,i){this.writeTag(e,1),this.writeSFixed64(i)}writeVarintField(e,i){this.writeTag(e,0),this.writeVarint(i)}writeSVarintField(e,i){this.writeTag(e,0),this.writeSVarint(i)}writeStringField(e,i){this.writeTag(e,2),this.writeString(i)}writeFloatField(e,i){this.writeTag(e,5),this.writeFloat(i)}writeDoubleField(e,i){this.writeTag(e,1),this.writeDouble(i)}writeBooleanField(e,i){this.writeVarintField(e,+i)}}function Oo(r,e,i){return i?4294967296*e+(r>>>0):4294967296*(e>>>0)+(r>>>0)}function bp(r,e,i){const s=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));i.realloc(s);for(let o=i.pos-1;o>=r;o--)i.buf[o+s]=i.buf[o]}function Pg(r,e){for(let i=0;i<r.length;i++)e.writeVarint(r[i])}function Mg(r,e){for(let i=0;i<r.length;i++)e.writeSVarint(r[i])}function Ig(r,e){for(let i=0;i<r.length;i++)e.writeFloat(r[i])}function Eg(r,e){for(let i=0;i<r.length;i++)e.writeDouble(r[i])}function Cg(r,e){for(let i=0;i<r.length;i++)e.writeBoolean(r[i])}function Ag(r,e){for(let i=0;i<r.length;i++)e.writeFixed32(r[i])}function Dg(r,e){for(let i=0;i<r.length;i++)e.writeSFixed32(r[i])}function zg(r,e){for(let i=0;i<r.length;i++)e.writeFixed64(r[i])}function kg(r,e){for(let i=0;i<r.length;i++)e.writeSFixed64(r[i])}function Rg(r,e,i){r===1&&i.readMessage(Lg,e)}function Lg(r,e,i){if(r===3){const{id:s,bitmap:o,width:u,height:h,left:f,top:g,advance:y}=i.readMessage(Fg,{});e.push({id:s,bitmap:new Gl({width:u+6,height:h+6},o),metrics:{width:u,height:h,left:f,top:g,advance:y}})}}function Fg(r,e,i){r===1?e.id=i.readVarint():r===2?e.bitmap=i.readBytes():r===3?e.width=i.readVarint():r===4?e.height=i.readVarint():r===5?e.left=i.readSVarint():r===6?e.top=i.readSVarint():r===7&&(e.advance=i.readVarint())}function wp(r){let e=0,i=0;for(const h of r)e+=h.w*h.h,i=Math.max(i,h.w);r.sort((h,f)=>f.h-h.h);const s=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),i),h:1/0}];let o=0,u=0;for(const h of r)for(let f=s.length-1;f>=0;f--){const g=s[f];if(!(h.w>g.w||h.h>g.h)){if(h.x=g.x,h.y=g.y,u=Math.max(u,h.y+h.h),o=Math.max(o,h.x+h.w),h.w===g.w&&h.h===g.h){const y=s.pop();y&&f<s.length&&(s[f]=y)}else h.h===g.h?(g.x+=h.w,g.w-=h.w):h.w===g.w?(g.y+=h.h,g.h-=h.h):(s.push({x:g.x+h.w,y:g.y,w:g.w-h.w,h:h.h}),g.y+=h.h,g.h-=h.h);break}}return{w:o,h:u,fill:e/(o*u)||0}}class Rh{constructor(e,{pixelRatio:i,version:s,stretchX:o,stretchY:u,content:h,textFitWidth:f,textFitHeight:g}){this.paddedRect=e,this.pixelRatio=i,this.stretchX=o,this.stretchY=u,this.content=h,this.version=s,this.textFitWidth=f,this.textFitHeight=g}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 Tp{constructor(e,i){const s={},o={};this.haveRenderCallbacks=[];const u=[];this.addImages(e,s,u),this.addImages(i,o,u);const{w:h,h:f}=wp(u),g=new hr({width:h||1,height:f||1});for(const y in e){const v=e[y],b=s[y].paddedRect;hr.copy(v.data,g,{x:0,y:0},{x:b.x+1,y:b.y+1},v.data)}for(const y in i){const v=i[y],b=o[y].paddedRect,S=b.x+1,P=b.y+1,C=v.data.width,D=v.data.height;hr.copy(v.data,g,{x:0,y:0},{x:S,y:P},v.data),hr.copy(v.data,g,{x:0,y:D-1},{x:S,y:P-1},{width:C,height:1}),hr.copy(v.data,g,{x:0,y:0},{x:S,y:P+D},{width:C,height:1}),hr.copy(v.data,g,{x:C-1,y:0},{x:S-1,y:P},{width:1,height:D}),hr.copy(v.data,g,{x:0,y:0},{x:S+C,y:P},{width:1,height:D})}this.image=g,this.iconPositions=s,this.patternPositions=o}addImages(e,i,s){for(const o in e){const u=e[o],h={x:0,y:0,w:u.data.width+2,h:u.data.height+2};s.push(h),i[o]=new Rh(h,u),u.hasRenderCallback&&this.haveRenderCallbacks.push(o)}}patchUpdatedImages(e,i){e.dispatchRenderCallbacks(this.haveRenderCallbacks);for(const s in e.updatedImages)this.patchUpdatedImage(this.iconPositions[s],e.getImage(s),i),this.patchUpdatedImage(this.patternPositions[s],e.getImage(s),i)}patchUpdatedImage(e,i,s){if(!e||!i||e.version===i.version)return;e.version=i.version;const[o,u]=e.tl;s.update(i.data,void 0,{x:o,y:u})}}var Fs;function Su(r,e,i,s,o,u,h,f,g,y,v,b,S,P,C){const D=Bo.fromFeature(r,o);let R;b===E.az.vertical&&D.verticalizePunctuation();let V=D.determineLineBreaks(y,u,e,s,P);const{processBidirectionalText:q,processStyledBidirectionalText:O}=fn;if(q&&D.sections.length===1){R=[],V=V.map(ue=>D.toCodeUnitIndex(ue));const ie=q(D.toString(),V);for(const ue of ie){const be=[...ue].map(()=>0);R.push(new Bo(ue,D.sections,be))}}else if(O){R=[],V=V.map(Te=>D.toCodeUnitIndex(Te));let ie=0;const ue=[];for(const Te of D.text)ue.push(...Array(Te.length).fill(D.sectionIndex[ie])),ie++;const be=O(D.text,ue,V);for(const Te of be){const Ie=[];let ke="";for(const Ee of Te[0])Ie.push(Te[1][ke.length]),ke+=Ee;R.push(new Bo(Te[0],D.sections,Ie))}}else R=function(ie,ue){const be=[];let Te=0;for(const Ie of ue)be.push(ie.substring(Te,Ie)),Te=Ie;return Te<ie.length()&&be.push(ie.substring(Te,ie.length())),be}(D,V);const j=[],Y={positionedLines:j,text:D.toString(),top:v[1],bottom:v[1],left:v[0],right:v[0],writingMode:b,iconsInText:!1,verticalizable:!1};return function(ie,ue,be,Te,Ie,ke,Ee,Se,ye,Be,Oe,qe){let je=0,lt=0,Bt=0,si=0;const Di=Se==="right"?1:Se==="left"?0:.5,Hr=pi/qe;let Yi=0;for(const Qt of Ie){Qt.trim();const wi=Qt.getMaxScale(),Ni={positionedGlyphs:[],lineOffset:0};ie.positionedLines[Yi]=Ni;const Ui=Ni.positionedGlyphs;let dr=0;if(!Qt.length()){lt+=ke,++Yi;continue}const ki=Bg(Te,Qt,Hr);let pr=0;for(const mi of Qt.text){const Ut=Qt.getSection(pr),ai=mi.codePointAt(0),Wt=Og(ye,Oe,ai),gi={glyph:ai,imageName:null,x:je,y:lt+-17,vertical:Wt,scale:1,fontStack:"",sectionIndex:Qt.getSectionIndex(pr),metrics:null,rect:null};let cs;if("fontStack"in Ut){if(cs=Vg(Ut,ai,Wt,ki,ue,be),!cs)continue;gi.fontStack=Ut.fontStack}else{if(ie.iconsInText=!0,Ut.scale*=Hr,cs=jg(Ut,Wt,wi,ki,Te),!cs)continue;dr=Math.max(dr,cs.imageOffset),gi.imageName=Ut.imageName}const{rect:vn,metrics:ac,baselineOffset:Us}=cs;gi.y+=Us,gi.scale=Ut.scale,gi.metrics=ac,gi.rect=vn,Ui.push(gi),Wt?(ie.verticalizable=!0,je+=("imageName"in Ut?ac.advance:pi)*Ut.scale+Be):je+=ac.advance*Ut.scale+Be,pr++}Ui.length!==0&&(Bt=Math.max(je-Be,Bt),Ng(Ui,0,Ui.length-1,Di)),je=0,Ni.lineOffset=Math.max(dr,(wi-1)*pi);const Xr=ke*wi+dr;lt+=Xr,si=Math.max(Xr,si),++Yi}const{horizontalAlign:bi,verticalAlign:zi}=Lh(Ee);(function(Qt,wi,Ni,Ui,dr,ki,pr,Xr,mi){const Ut=(wi-Ni)*dr;let ai=0;ai=ki!==pr?-Xr*Ui- -17:-Ui*mi*pr+.5*pr;for(const Wt of Qt)for(const gi of Wt.positionedGlyphs)gi.x+=Ut,gi.y+=ai})(ie.positionedLines,Di,bi,zi,Bt,si,ke,lt,Ie.length),ie.top+=-zi*lt,ie.bottom=ie.top+lt,ie.left+=-bi*Bt,ie.right=ie.left+Bt}(Y,e,i,s,R,h,f,g,b,y,S,C),!function(ie){for(const ue of ie)if(ue.positionedGlyphs.length!==0)return!1;return!0}(j)&&Y}function Lh(r){let e=.5,i=.5;switch(r){case"right":case"top-right":case"bottom-right":e=1;break;case"left":case"top-left":case"bottom-left":e=0}switch(r){case"bottom":case"bottom-right":case"bottom-left":i=1;break;case"top":case"top-right":case"top-left":i=0}return{horizontalAlign:e,verticalAlign:i}}function Bg(r,e,i){const s=e.getMaxScale()*pi,{maxImageWidth:o,maxImageHeight:u}=e.getMaxImageSize(r),h=Math.max(s,u*i);return{verticalLineContentWidth:Math.max(s,o*i),horizontalLineContentHeight:h}}function Sp(r){switch(r){case"top":return 0;case"center":return .5;default:return 1}}function Og(r,e,i){return!(r===E.az.horizontal||!e&&!ns(i)||e&&(iu(i)||(s=i,new RegExp("\\p{sc=Arab}","u").test(String.fromCodePoint(s)))));var s}function Vg(r,e,i,s,o,u){const h=u[r.fontStack],f=function(y,v,b,S){if(y&&y.rect)return y;const P=v[b.fontStack],C=P&&P[S];return C?{rect:null,metrics:C.metrics}:null}(h&&h[e],o,r,e);if(f===null)return null;let g;if(i)g=s.verticalLineContentWidth-r.scale*pi;else{const y=Sp(r.verticalAlign);g=(s.horizontalLineContentHeight-r.scale*pi)*y}return{rect:f.rect,metrics:f.metrics,baselineOffset:g}}function jg(r,e,i,s,o){const u=o[r.imageName];if(!u)return null;const h=u.paddedRect,f=u.displaySize,g={width:f[0],height:f[1],left:1,top:-3,advance:e?f[1]:f[0]};let y;if(e)y=s.verticalLineContentWidth-f[1]*r.scale;else{const v=Sp(r.verticalAlign);y=(s.horizontalLineContentHeight-f[1]*r.scale)*v}return{rect:h,metrics:g,baselineOffset:y,imageOffset:(e?f[0]:f[1])*r.scale-pi*i}}function Ng(r,e,i,s){if(s===0)return;const o=r[i],u=(r[i].x+o.metrics.advance*o.scale)*s;for(let h=e;h<=i;h++)r[h].x-=u}function Ug(r,e,i){const{horizontalAlign:s,verticalAlign:o}=Lh(i),u=e[0]-r.displaySize[0]*s,h=e[1]-r.displaySize[1]*o;return{image:r,top:h,bottom:h+r.displaySize[1],left:u,right:u+r.displaySize[0]}}function Pp(r){var e,i;let s=r.left,o=r.top,u=r.right-s,h=r.bottom-o;const f=(e=r.image.textFitWidth)!==null&&e!==void 0?e:"stretchOrShrink",g=(i=r.image.textFitHeight)!==null&&i!==void 0?i:"stretchOrShrink",y=(r.image.content[2]-r.image.content[0])/(r.image.content[3]-r.image.content[1]);if(g==="proportional"){if(f==="stretchOnly"&&u/h<y||f==="proportional"){const v=Math.ceil(h*y);s*=v/u,u=v}}else if(f==="proportional"&&g==="stretchOnly"&&y!==0&&u/h>y){const v=Math.ceil(u/y);o*=v/h,h=v}return{x1:s,y1:o,x2:s+u,y2:o+h}}function Mp(r,e,i,s,o,u){const h=r.image;let f;if(h.content){const R=h.content,V=h.pixelRatio||1;f=[R[0]/V,R[1]/V,h.displaySize[0]-R[2]/V,h.displaySize[1]-R[3]/V]}const g=e.left*u,y=e.right*u;let v,b,S,P;i==="width"||i==="both"?(P=o[0]+g-s[3],b=o[0]+y+s[1]):(P=o[0]+(g+y-h.displaySize[0])/2,b=P+h.displaySize[0]);const C=e.top*u,D=e.bottom*u;return i==="height"||i==="both"?(v=o[1]+C-s[0],S=o[1]+D+s[2]):(v=o[1]+(C+D-h.displaySize[1])/2,S=v+h.displaySize[1]),{image:h,top:v,right:b,bottom:S,left:P,collisionPadding:f}}Fe("ImagePosition",Rh),Fe("ImageAtlas",Tp),E.az=void 0,(Fs=E.az||(E.az={}))[Fs.none=0]="none",Fs[Fs.horizontal=1]="horizontal",Fs[Fs.vertical=2]="vertical",Fs[Fs.horizontalOnly=3]="horizontalOnly";const ls=128,Bs=32640;function Ip(r,e){const{expression:i}=e;if(i.kind==="constant")return{kind:"constant",layoutSize:i.evaluate(new Pt(r+1))};if(i.kind==="source")return{kind:"source"};{const{zoomStops:s,interpolationType:o}=i;let u=0;for(;u<s.length&&s[u]<=r;)u++;u=Math.max(0,u-1);let h=u;for(;h<s.length&&s[h]<r+1;)h++;h=Math.min(s.length-1,h);const f=s[u],g=s[h];return i.kind==="composite"?{kind:"composite",minZoom:f,maxZoom:g,interpolationType:o}:{kind:"camera",minZoom:f,maxZoom:g,minSize:i.evaluate(new Pt(f)),maxSize:i.evaluate(new Pt(g)),interpolationType:o}}}function Fh(r,e,i){let s="never";const o=r.get(e);return o?s=o:r.get(i)&&(s="always"),s}const Gg=[{name:"a_fade_opacity",components:1,type:"Uint8",offset:0}];function Pu(r,e,i,s,o,u,h,f,g,y,v,b,S){const P=f?Math.min(Bs,Math.round(f[0])):0,C=f?Math.min(Bs,Math.round(f[1])):0;r.emplaceBack(e,i,Math.round(32*s),Math.round(32*o),u,h,(P<<1)+(g?1:0),C,16*y,16*v,256*b,256*S)}function Bh(r,e,i){r.emplaceBack(e.x,e.y,i),r.emplaceBack(e.x,e.y,i),r.emplaceBack(e.x,e.y,i),r.emplaceBack(e.x,e.y,i)}function qg(r){for(const e of r.sections)if(Cl(e.text))return!0;return!1}class Oh{constructor(e){this.layoutVertexArray=new te,this.indexArray=new pe,this.programConfigurations=e,this.segments=new ve,this.dynamicLayoutVertexArray=new X,this.opacityVertexArray=new ae,this.hasVisibleVertices=!1,this.placedSymbolArray=new p}isEmpty(){return this.layoutVertexArray.length===0&&this.indexArray.length===0&&this.dynamicLayoutVertexArray.length===0&&this.opacityVertexArray.length===0}upload(e,i,s,o){this.isEmpty()||(s&&(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,_g.members),this.indexBuffer=e.createIndexBuffer(this.indexArray,i),this.dynamicLayoutVertexBuffer=e.createVertexBuffer(this.dynamicLayoutVertexArray,yg.members,!0),this.opacityVertexBuffer=e.createVertexBuffer(this.opacityVertexArray,Gg,!0),this.opacityVertexBuffer.itemSize=1),(s||o)&&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())}}Fe("SymbolBuffers",Oh);class Vh{constructor(e,i,s){this.layoutVertexArray=new e,this.layoutAttributes=i,this.indexArray=new s,this.segments=new ve,this.collisionVertexArray=new fe}upload(e){this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=e.createVertexBuffer(this.collisionVertexArray,xg.members,!0)}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy())}}Fe("CollisionBuffers",Vh);class Vo{constructor(e){this.collisionBoxArray=e.collisionBoxArray,this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(h=>h.id),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasDependencies=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[];const i=this.layers[0]._unevaluatedLayout._values;this.textSizeData=Ip(this.zoom,i["text-size"]),this.iconSizeData=Ip(this.zoom,i["icon-size"]);const s=this.layers[0].layout,o=s.get("symbol-sort-key"),u=s.get("symbol-z-order");this.canOverlap=Fh(s,"text-overlap","text-allow-overlap")!=="never"||Fh(s,"icon-overlap","icon-allow-overlap")!=="never"||s.get("text-ignore-placement")||s.get("icon-ignore-placement"),this.sortFeaturesByKey=u!=="viewport-y"&&!o.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(h=>E.az[h])),this.stateDependentLayerIds=this.layers.filter(h=>h.isStateDependent()).map(h=>h.id),this.sourceID=e.sourceID}createArrays(){this.text=new Oh(new os(this.layers,this.zoom,e=>/^text/.test(e))),this.icon=new Oh(new os(this.layers,this.zoom,e=>/^icon/.test(e))),this.glyphOffsetArray=new x,this.lineVertexArray=new w,this.symbolInstances=new _,this.textAnchorOffsets=new I}calculateGlyphDependencies(e,i,s,o,u){for(const h of e)if(i[h.codePointAt(0)]=!0,(s||o)&&u){const f=Ql[h];f&&(i[f.codePointAt(0)]=!0)}}populate(e,i,s){const o=this.layers[0],u=o.layout,h=u.get("text-font"),f=u.get("text-field"),g=u.get("icon-image"),y=(f.value.kind!=="constant"||f.value.value instanceof tr&&!f.value.value.isEmpty()||f.value.value.toString().length>0)&&(h.value.kind!=="constant"||h.value.value.length>0),v=g.value.kind!=="constant"||!!g.value.value||Object.keys(g.parameters).length>0,b=u.get("symbol-sort-key");if(this.features=[],!y&&!v)return;const S=i.iconDependencies,P=i.glyphDependencies,C=i.availableImages,D=new Pt(this.zoom);for(const{feature:R,id:V,index:q,sourceLayerIndex:O}of e){const j=o._featureFilter.needGeometry,Y=Bn(R,j);if(!o._featureFilter.filter(D,Y,s))continue;let ie,ue;if(j||(Y.geometry=ur(R)),y){const Te=o.getValueAndResolveTokens("text-field",Y,s,C),Ie=tr.factory(Te),ke=this.hasRTLText=this.hasRTLText||qg(Ie);(!ke||fn.getRTLTextPluginStatus()==="unavailable"||ke&&fn.isParsed())&&(ie=bg(Ie,o,Y))}if(v){const Te=o.getValueAndResolveTokens("icon-image",Y,s,C);ue=Te instanceof ir?Te:ir.fromString(Te)}if(!ie&&!ue)continue;const be=this.sortFeaturesByKey?b.evaluate(Y,{},s):void 0;if(this.features.push({id:V,text:ie,icon:ue,index:q,sourceLayerIndex:O,geometry:Y.geometry,properties:R.properties,type:Yl.types[R.type],sortKey:be}),ue&&(S[ue.name]=!0),ie){const Te=h.evaluate(Y,{},s).join(","),Ie=u.get("text-rotation-alignment")!=="viewport"&&u.get("symbol-placement")!=="point";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(E.az.vertical)>=0;for(const ke of ie.sections)if(ke.image)S[ke.image.name]=!0;else{const Ee=Pl(ie.toString()),Se=ke.fontStack||Te,ye=P[Se]=P[Se]||{};this.calculateGlyphDependencies(ke.text,ye,Ie,this.allowVerticalPlacement,Ee)}}}u.get("symbol-placement")==="line"&&(this.features=function(R){const V={},q={},O=[];let j=0;function Y(Te){O.push(R[Te]),j++}function ie(Te,Ie,ke){const Ee=q[Te];return delete q[Te],q[Ie]=Ee,O[Ee].geometry[0].pop(),O[Ee].geometry[0]=O[Ee].geometry[0].concat(ke[0]),Ee}function ue(Te,Ie,ke){const Ee=V[Ie];return delete V[Ie],V[Te]=Ee,O[Ee].geometry[0].shift(),O[Ee].geometry[0]=ke[0].concat(O[Ee].geometry[0]),Ee}function be(Te,Ie,ke){const Ee=ke?Ie[0][Ie[0].length-1]:Ie[0][0];return`${Te}:${Ee.x}:${Ee.y}`}for(let Te=0;Te<R.length;Te++){const Ie=R[Te],ke=Ie.geometry,Ee=Ie.text?Ie.text.toString():null;if(!Ee){Y(Te);continue}const Se=be(Ee,ke),ye=be(Ee,ke,!0);if(Se in q&&ye in V&&q[Se]!==V[ye]){const Be=ue(Se,ye,ke),Oe=ie(Se,ye,O[Be].geometry);delete V[Se],delete q[ye],q[be(Ee,O[Oe].geometry,!0)]=Oe,O[Be].geometry=null}else Se in q?ie(Se,ye,ke):ye in V?ue(Se,ye,ke):(Y(Te),V[Se]=j-1,q[ye]=j-1)}return O.filter(Te=>Te.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort((R,V)=>R.sortKey-V.sortKey)}update(e,i,s){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(e,i,this.layers,{imagePositions:s}),this.icon.programConfigurations.updatePaintArrays(e,i,this.layers,{imagePositions: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,i){const s=this.lineVertexArray.length;if(e.segment!==void 0){let o=e.dist(i[e.segment+1]),u=e.dist(i[e.segment]);const h={};for(let f=e.segment+1;f<i.length;f++)h[f]={x:i[f].x,y:i[f].y,tileUnitDistanceFromAnchor:o},f<i.length-1&&(o+=i[f+1].dist(i[f]));for(let f=e.segment||0;f>=0;f--)h[f]={x:i[f].x,y:i[f].y,tileUnitDistanceFromAnchor:u},f>0&&(u+=i[f-1].dist(i[f]));for(let f=0;f<i.length;f++){const g=h[f];this.lineVertexArray.emplaceBack(g.x,g.y,g.tileUnitDistanceFromAnchor)}}return{lineStartIndex:s,lineLength:this.lineVertexArray.length-s}}addSymbols(e,i,s,o,u,h,f,g,y,v,b,S){const P=e.indexArray,C=e.layoutVertexArray,D=e.segments.prepareSegment(4*i.length,C,P,this.canOverlap?h.sortKey:void 0),R=this.glyphOffsetArray.length,V=D.vertexLength,q=this.allowVerticalPlacement&&f===E.az.vertical?Math.PI/2:0,O=h.text&&h.text.sections;for(let j=0;j<i.length;j++){const{tl:Y,tr:ie,bl:ue,br:be,tex:Te,pixelOffsetTL:Ie,pixelOffsetBR:ke,minFontScaleX:Ee,minFontScaleY:Se,glyphOffset:ye,isSDF:Be,sectionIndex:Oe}=i[j],qe=D.vertexLength,je=ye[1];Pu(C,g.x,g.y,Y.x,je+Y.y,Te.x,Te.y,s,Be,Ie.x,Ie.y,Ee,Se),Pu(C,g.x,g.y,ie.x,je+ie.y,Te.x+Te.w,Te.y,s,Be,ke.x,Ie.y,Ee,Se),Pu(C,g.x,g.y,ue.x,je+ue.y,Te.x,Te.y+Te.h,s,Be,Ie.x,ke.y,Ee,Se),Pu(C,g.x,g.y,be.x,je+be.y,Te.x+Te.w,Te.y+Te.h,s,Be,ke.x,ke.y,Ee,Se),Bh(e.dynamicLayoutVertexArray,g,q),P.emplaceBack(qe,qe+2,qe+1),P.emplaceBack(qe+1,qe+2,qe+3),D.vertexLength+=4,D.primitiveLength+=2,this.glyphOffsetArray.emplaceBack(ye[0]),j!==i.length-1&&Oe===i[j+1].sectionIndex||e.programConfigurations.populatePaintArrays(C.length,h,h.index,{imagePositions:{},canonical:S,formattedSection:O&&O[Oe]})}e.placedSymbolArray.emplaceBack(g.x,g.y,R,this.glyphOffsetArray.length-R,V,y,v,g.segment,s?s[0]:0,s?s[1]:0,o[0],o[1],f,0,!1,0,b)}_addCollisionDebugVertex(e,i,s,o,u,h){return i.emplaceBack(0,0),e.emplaceBack(s.x,s.y,o,u,Math.round(h.x),Math.round(h.y))}addCollisionDebugVertices(e,i,s,o,u,h,f){const g=u.segments.prepareSegment(4,u.layoutVertexArray,u.indexArray),y=g.vertexLength,v=u.layoutVertexArray,b=u.collisionVertexArray,S=f.anchorX,P=f.anchorY;this._addCollisionDebugVertex(v,b,h,S,P,new Pe(e,i)),this._addCollisionDebugVertex(v,b,h,S,P,new Pe(s,i)),this._addCollisionDebugVertex(v,b,h,S,P,new Pe(s,o)),this._addCollisionDebugVertex(v,b,h,S,P,new Pe(e,o)),g.vertexLength+=4;const C=u.indexArray;C.emplaceBack(y,y+1),C.emplaceBack(y+1,y+2),C.emplaceBack(y+2,y+3),C.emplaceBack(y+3,y),g.primitiveLength+=4}addDebugCollisionBoxes(e,i,s,o){for(let u=e;u<i;u++){const h=this.collisionBoxArray.get(u);this.addCollisionDebugVertices(h.x1,h.y1,h.x2,h.y2,o?this.textCollisionBox:this.iconCollisionBox,h.anchorPoint,s)}}generateCollisionDebugBuffers(){this.hasDebugData()&&this.destroyDebugData(),this.textCollisionBox=new Vh(_e,fp.members,ge),this.iconCollisionBox=new Vh(_e,fp.members,ge);for(let e=0;e<this.symbolInstances.length;e++){const i=this.symbolInstances.get(e);this.addDebugCollisionBoxes(i.textBoxStartIndex,i.textBoxEndIndex,i,!0),this.addDebugCollisionBoxes(i.verticalTextBoxStartIndex,i.verticalTextBoxEndIndex,i,!0),this.addDebugCollisionBoxes(i.iconBoxStartIndex,i.iconBoxEndIndex,i,!1),this.addDebugCollisionBoxes(i.verticalIconBoxStartIndex,i.verticalIconBoxEndIndex,i,!1)}}_deserializeCollisionBoxesForSymbol(e,i,s,o,u,h,f,g,y){const v={};for(let b=i;b<s;b++){const S=e.get(b);v.textBox={x1:S.x1,y1:S.y1,x2:S.x2,y2:S.y2,anchorPointX:S.anchorPointX,anchorPointY:S.anchorPointY},v.textFeatureIndex=S.featureIndex;break}for(let b=o;b<u;b++){const S=e.get(b);v.verticalTextBox={x1:S.x1,y1:S.y1,x2:S.x2,y2:S.y2,anchorPointX:S.anchorPointX,anchorPointY:S.anchorPointY},v.verticalTextFeatureIndex=S.featureIndex;break}for(let b=h;b<f;b++){const S=e.get(b);v.iconBox={x1:S.x1,y1:S.y1,x2:S.x2,y2:S.y2,anchorPointX:S.anchorPointX,anchorPointY:S.anchorPointY},v.iconFeatureIndex=S.featureIndex;break}for(let b=g;b<y;b++){const S=e.get(b);v.verticalIconBox={x1:S.x1,y1:S.y1,x2:S.x2,y2:S.y2,anchorPointX:S.anchorPointX,anchorPointY:S.anchorPointY},v.verticalIconFeatureIndex=S.featureIndex;break}return v}deserializeCollisionBoxes(e){this.collisionArrays=[];for(let i=0;i<this.symbolInstances.length;i++){const s=this.symbolInstances.get(i);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,i){const s=e.placedSymbolArray.get(i),o=s.vertexStartIndex+4*s.numGlyphs;for(let u=s.vertexStartIndex;u<o;u+=4)e.indexArray.emplaceBack(u,u+2,u+1),e.indexArray.emplaceBack(u+1,u+2,u+3)}getSortedSymbolIndexes(e){if(this.sortedAngle===e&&this.symbolInstanceIndexes!==void 0)return this.symbolInstanceIndexes;const i=Math.sin(e),s=Math.cos(e),o=[],u=[],h=[];for(let f=0;f<this.symbolInstances.length;++f){h.push(f);const g=this.symbolInstances.get(f);o.push(0|Math.round(i*g.anchorX+s*g.anchorY)),u.push(g.featureIndex)}return h.sort((f,g)=>o[f]-o[g]||u[g]-u[f]),h}addToSortKeyRanges(e,i){const s=this.sortKeyRanges[this.sortKeyRanges.length-1];s&&s.sortKey===i?s.symbolInstanceEnd=e+1:this.sortKeyRanges.push({sortKey:i,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 i of this.symbolInstanceIndexes){const s=this.symbolInstances.get(i);this.featureSortOrder.push(s.featureIndex),[s.rightJustifiedTextSymbolIndex,s.centerJustifiedTextSymbolIndex,s.leftJustifiedTextSymbolIndex].forEach((o,u,h)=>{o>=0&&h.indexOf(o)===u&&this.addIndicesForPlacedSymbol(this.text,o)}),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)}}}let Ep,Cp;Fe("SymbolBucket",Vo,{omit:["layers","collisionBoxArray","features","compareText"]}),Vo.MAX_GLYPHS=65535,Vo.addDynamicAttributes=Bh;var jh={get paint(){return Cp=Cp||new Bi({"icon-opacity":new Ye(Q.paint_symbol["icon-opacity"]),"icon-color":new Ye(Q.paint_symbol["icon-color"]),"icon-halo-color":new Ye(Q.paint_symbol["icon-halo-color"]),"icon-halo-width":new Ye(Q.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Ye(Q.paint_symbol["icon-halo-blur"]),"icon-translate":new Ue(Q.paint_symbol["icon-translate"]),"icon-translate-anchor":new Ue(Q.paint_symbol["icon-translate-anchor"]),"text-opacity":new Ye(Q.paint_symbol["text-opacity"]),"text-color":new Ye(Q.paint_symbol["text-color"],{runtimeType:_r,getOverride:r=>r.textColor,hasOverride:r=>!!r.textColor}),"text-halo-color":new Ye(Q.paint_symbol["text-halo-color"]),"text-halo-width":new Ye(Q.paint_symbol["text-halo-width"]),"text-halo-blur":new Ye(Q.paint_symbol["text-halo-blur"]),"text-translate":new Ue(Q.paint_symbol["text-translate"]),"text-translate-anchor":new Ue(Q.paint_symbol["text-translate-anchor"])})},get layout(){return Ep=Ep||new Bi({"symbol-placement":new Ue(Q.layout_symbol["symbol-placement"]),"symbol-spacing":new Ue(Q.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new Ue(Q.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Ye(Q.layout_symbol["symbol-sort-key"]),"symbol-z-order":new Ue(Q.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new Ue(Q.layout_symbol["icon-allow-overlap"]),"icon-overlap":new Ue(Q.layout_symbol["icon-overlap"]),"icon-ignore-placement":new Ue(Q.layout_symbol["icon-ignore-placement"]),"icon-optional":new Ue(Q.layout_symbol["icon-optional"]),"icon-rotation-alignment":new Ue(Q.layout_symbol["icon-rotation-alignment"]),"icon-size":new Ye(Q.layout_symbol["icon-size"]),"icon-text-fit":new Ue(Q.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new Ue(Q.layout_symbol["icon-text-fit-padding"]),"icon-image":new Ye(Q.layout_symbol["icon-image"]),"icon-rotate":new Ye(Q.layout_symbol["icon-rotate"]),"icon-padding":new Ye(Q.layout_symbol["icon-padding"]),"icon-keep-upright":new Ue(Q.layout_symbol["icon-keep-upright"]),"icon-offset":new Ye(Q.layout_symbol["icon-offset"]),"icon-anchor":new Ye(Q.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new Ue(Q.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new Ue(Q.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new Ue(Q.layout_symbol["text-rotation-alignment"]),"text-field":new Ye(Q.layout_symbol["text-field"]),"text-font":new Ye(Q.layout_symbol["text-font"]),"text-size":new Ye(Q.layout_symbol["text-size"]),"text-max-width":new Ye(Q.layout_symbol["text-max-width"]),"text-line-height":new Ue(Q.layout_symbol["text-line-height"]),"text-letter-spacing":new Ye(Q.layout_symbol["text-letter-spacing"]),"text-justify":new Ye(Q.layout_symbol["text-justify"]),"text-radial-offset":new Ye(Q.layout_symbol["text-radial-offset"]),"text-variable-anchor":new Ue(Q.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new Ye(Q.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new Ye(Q.layout_symbol["text-anchor"]),"text-max-angle":new Ue(Q.layout_symbol["text-max-angle"]),"text-writing-mode":new Ue(Q.layout_symbol["text-writing-mode"]),"text-rotate":new Ye(Q.layout_symbol["text-rotate"]),"text-padding":new Ue(Q.layout_symbol["text-padding"]),"text-keep-upright":new Ue(Q.layout_symbol["text-keep-upright"]),"text-transform":new Ye(Q.layout_symbol["text-transform"]),"text-offset":new Ye(Q.layout_symbol["text-offset"]),"text-allow-overlap":new Ue(Q.layout_symbol["text-allow-overlap"]),"text-overlap":new Ue(Q.layout_symbol["text-overlap"]),"text-ignore-placement":new Ue(Q.layout_symbol["text-ignore-placement"]),"text-optional":new Ue(Q.layout_symbol["text-optional"])})}};class Ap{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:sn,this.defaultValue=e}evaluate(e){if(e.formattedSection){const i=this.defaultValue.property.overrides;if(i&&i.hasOverride(e.formattedSection))return i.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}}Fe("FormatSectionOverride",Ap,{omit:["defaultValue"]});class Mu extends Rr{constructor(e,i){super(e,jh,i)}recalculate(e,i){if(super.recalculate(e,i),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 o=[];for(const u of s)o.indexOf(u)<0&&o.push(u);this.layout._values["text-writing-mode"]=o}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()}getValueAndResolveTokens(e,i,s,o){const u=this.layout.get(e).evaluate(i,{},s,o),h=this._unevaluatedLayout._values[e];return h.isDataDriven()||po(h.value)||!u?u:function(f,g){return g.replace(/{([^{}]+)}/g,(y,v)=>f&&v in f?String(f[v]):"")}(i.properties,u)}createBucket(e){return new Vo(e)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(const e of jh.paint.overridableProperties){if(!Mu.hasPaintOverride(this.layout,e))continue;const i=this.paint.get(e),s=new Ap(i),o=new pl(s,i.property.specification);let u=null;u=i.value.kind==="constant"||i.value.kind==="source"?new fo("source",o):new fl("composite",o,i.value.zoomStops),this.paint._values[e]=new kr(i.property,u,i.parameters)}}_handleOverridablePaintPropertyUpdate(e,i,s){return!(!this.layout||i.isDataDriven()||s.isDataDriven())&&Mu.hasPaintOverride(this.layout,e)}static hasPaintOverride(e,i){const s=e.get("text-field"),o=jh.paint.properties[i];let u=!1;const h=f=>{for(const g of f)if(o.overrides&&o.overrides.hasOverride(g))return void(u=!0)};if(s.value.kind==="constant"&&s.value.value instanceof tr)h(s.value.value.sections);else if(s.value.kind==="source"||s.value.kind==="composite"){const f=y=>{u||(y instanceof ln&&jt(y.value)===_s?h(y.value.sections):y instanceof Ja?h(y.sections):y.eachChild(f))},g=s.value;g._styleExpression&&f(g._styleExpression.expression)}return u}}let Dp;var Zg={get paint(){return Dp=Dp||new Bi({"background-color":new Ue(Q.paint_background["background-color"]),"background-pattern":new lu(Q.paint_background["background-pattern"]),"background-opacity":new Ue(Q.paint_background["background-opacity"])})}};class $g extends Rr{constructor(e,i){super(e,Zg,i)}}class Wg extends Rr{constructor(e,i){super(e,{},i),this.onAdd=s=>{this.implementation.onAdd&&this.implementation.onAdd(s,s.painter.context.gl)},this.onRemove=s=>{this.implementation.onRemove&&this.implementation.onRemove(s,s.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")}}class Hg{constructor(e){this._methodToThrottle=e,this._triggered=!1,typeof MessageChannel<"u"&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._methodToThrottle()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout(()=>{this._triggered=!1,this._methodToThrottle()},0))}remove(){delete this._channel,this._methodToThrottle=()=>{}}}const Xg={once:!0},Nh=63710088e-1;class Os{constructor(e,i){if(isNaN(e)||isNaN(i))throw new Error(`Invalid LngLat object: (${e}, ${i})`);if(this.lng=+e,this.lat=+i,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new Os(ri(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(e){const i=Math.PI/180,s=this.lat*i,o=e.lat*i,u=Math.sin(s)*Math.sin(o)+Math.cos(s)*Math.cos(o)*Math.cos((e.lng-this.lng)*i);return Nh*Math.acos(Math.min(u,1))}static convert(e){if(e instanceof Os)return e;if(Array.isArray(e)&&(e.length===2||e.length===3))return new Os(Number(e[0]),Number(e[1]));if(!Array.isArray(e)&&typeof e=="object"&&e!==null)return new Os(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>]")}}const zp=2*Math.PI*Nh;function kp(r){return zp*Math.cos(r*Math.PI/180)}function Rp(r){return(180+r)/360}function Lp(r){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+r*Math.PI/360)))/360}function Fp(r,e){return r/kp(e)}function Bp(r){return 360*r-180}function Iu(r){return 360/Math.PI*Math.atan(Math.exp((180-360*r)*Math.PI/180))-90}function Op(r,e){return r*kp(Iu(e))}class ec{constructor(e,i,s=0){this.x=+e,this.y=+i,this.z=+s}static fromLngLat(e,i=0){const s=Os.convert(e);return new ec(Rp(s.lng),Lp(s.lat),Fp(i,s.lat))}toLngLat(){return new Os(Bp(this.x),Iu(this.y))}toAltitude(){return Op(this.z,this.y)}meterInMercatorCoordinateUnits(){return 1/zp*(e=Iu(this.y),1/Math.cos(e*Math.PI/180));var e}}function Vp(r,e,i){var s=2*Math.PI*6378137/256/Math.pow(2,i);return[r*s-2*Math.PI*6378137/2,e*s-2*Math.PI*6378137/2]}class Uh{constructor(e,i,s){if(!function(o,u,h){return!(o<0||o>25||h<0||h>=Math.pow(2,o)||u<0||u>=Math.pow(2,o))}(e,i,s))throw new Error(`x=${i}, 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=i,this.y=s,this.key=jo(0,e,e,i,s)}equals(e){return this.z===e.z&&this.x===e.x&&this.y===e.y}url(e,i,s){const o=(h=this.y,f=this.z,g=Vp(256*(u=this.x),256*(h=Math.pow(2,f)-h-1),f),y=Vp(256*(u+1),256*(h+1),f),g[0]+","+g[1]+","+y[0]+","+y[1]);var u,h,f,g,y;const v=function(b,S,P){let C,D="";for(let R=b;R>0;R--)C=1<<R-1,D+=(S&C?1:0)+(P&C?2:0);return D}(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,i>1?"@2x":"").replace(/{quadkey}/g,v).replace(/{bbox-epsg-3857}/g,o)}isChildOf(e){const i=this.z-e.z;return i>0&&e.x===this.x>>i&&e.y===this.y>>i}getTilePoint(e){const i=Math.pow(2,this.z);return new Pe((e.x*i-this.x)*ht,(e.y*i-this.y)*ht)}toString(){return`${this.z}/${this.x}/${this.y}`}}class jp{constructor(e,i){this.wrap=e,this.canonical=i,this.key=jo(e,i.z,i.z,i.x,i.y)}}class Tr{constructor(e,i,s,o,u){if(this.terrainRttPosMatrix32f=null,e<s)throw new Error(`overscaledZ should be >= z; overscaledZ = ${e}; z = ${s}`);this.overscaledZ=e,this.wrap=i,this.canonical=new Uh(s,+o,+u),this.key=jo(i,e,s,o,u)}clone(){return new Tr(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 i=this.canonical.z-e;return e>this.canonical.z?new Tr(e,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Tr(e,this.wrap,e,this.canonical.x>>i,this.canonical.y>>i)}isOverscaled(){return this.overscaledZ>this.canonical.z}calculateScaledKey(e,i){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?jo(this.wrap*+i,e,this.canonical.z,this.canonical.x,this.canonical.y):jo(this.wrap*+i,e,e,this.canonical.x>>s,this.canonical.y>>s)}isChildOf(e){if(e.wrap!==this.wrap||this.overscaledZ-e.overscaledZ<=0)return!1;if(e.overscaledZ===0)return this.overscaledZ>0;const i=this.canonical.z-e.canonical.z;return!(i<0)&&e.canonical.x===this.canonical.x>>i&&e.canonical.y===this.canonical.y>>i}children(e){if(this.overscaledZ>=e)return[new Tr(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const i=this.canonical.z+1,s=2*this.canonical.x,o=2*this.canonical.y;return[new Tr(i,this.wrap,i,s,o),new Tr(i,this.wrap,i,s+1,o),new Tr(i,this.wrap,i,s,o+1),new Tr(i,this.wrap,i,s+1,o+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 Tr(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)}unwrapTo(e){return new Tr(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 jp(this.wrap,this.canonical)}toString(){return`${this.overscaledZ}/${this.canonical.x}/${this.canonical.y}`}getTilePoint(e){return this.canonical.getTilePoint(new ec(e.x-this.wrap,e.y))}normalizeCoordinates(e,i,s=8192){if(e>=0&&e<s&&i>=0&&i<s)return{tileID:this,x:e,y:i};const o=Math.floor(e/s),u=Math.floor(i/s),h=e-o*s,f=i-u*s,g=this.canonical.z,y=1<<g,v=this.canonical.y+u;if(v<0||v>=y)return null;let b=this.canonical.x+o,S=this.wrap;return b<0?(S-=Math.ceil(-b/y),b=(b%y+y)%y):b>=y&&(S+=Math.floor(b/y),b%=y),{tileID:new Tr(this.overscaledZ,S,g,b,v),x:h,y:f}}}function jo(r,e,i,s,o){(r*=2)<0&&(r=-1*r-1);const u=1<<i;return(u*u*r+u*o+s).toString(36)+i.toString(36)+e.toString(36)}function Gh(r,e){return e?r.properties[e]:r.id}function Yg(r,e){const i={id:r.id};if(e.removeAllProperties&&(delete r.removeProperties,delete r.addOrUpdateProperties,delete e.removeProperties),e.removeProperties)for(const s of e.removeProperties){const o=r.addOrUpdateProperties.findIndex(u=>u.key===s);o>-1&&r.addOrUpdateProperties.splice(o,1)}return(r.removeAllProperties||e.removeAllProperties)&&(i.removeAllProperties=!0),(r.removeProperties||e.removeProperties)&&(i.removeProperties=[...r.removeProperties||[],...e.removeProperties||[]]),(r.addOrUpdateProperties||e.addOrUpdateProperties)&&(i.addOrUpdateProperties=[...r.addOrUpdateProperties||[],...e.addOrUpdateProperties||[]]),(r.newGeometry||e.newGeometry)&&(i.newGeometry=e.newGeometry||r.newGeometry),i}function Np(r){var e,i;if(!r)return{};const s={};return s.removeAll=r.removeAll,s.remove=new Set(r.remove||[]),s.add=new Map((e=r.add)===null||e===void 0?void 0:e.map(o=>[o.id,o])),s.update=new Map((i=r.update)===null||i===void 0?void 0:i.map(o=>[o.id,o])),s}Fe("CanonicalTileID",Uh),Fe("OverscaledTileID",Tr,{omit:["terrainRttPosMatrix32f"]});class Fa{constructor(){this.minX=1/0,this.maxX=-1/0,this.minY=1/0,this.maxY=-1/0}extend(e){return this.minX=Math.min(this.minX,e.x),this.minY=Math.min(this.minY,e.y),this.maxX=Math.max(this.maxX,e.x),this.maxY=Math.max(this.maxY,e.y),this}expandBy(e){return this.minX-=e,this.minY-=e,this.maxX+=e,this.maxY+=e,(this.minX>this.maxX||this.minY>this.maxY)&&(this.minX=1/0,this.maxX=-1/0,this.minY=1/0,this.maxY=-1/0),this}shrinkBy(e){return this.expandBy(-e)}map(e){const i=new Fa;return i.extend(e(new Pe(this.minX,this.minY))),i.extend(e(new Pe(this.maxX,this.minY))),i.extend(e(new Pe(this.minX,this.maxY))),i.extend(e(new Pe(this.maxX,this.maxY))),i}static fromPoints(e){const i=new Fa;for(const s of e)i.extend(s);return i}contains(e){return e.x>=this.minX&&e.x<=this.maxX&&e.y>=this.minY&&e.y<=this.maxY}empty(){return this.minX>this.maxX}width(){return this.maxX-this.minX}height(){return this.maxY-this.minY}covers(e){return!this.empty()&&!e.empty()&&e.minX>=this.minX&&e.maxX<=this.maxX&&e.minY>=this.minY&&e.maxY<=this.maxY}intersects(e){return!this.empty()&&!e.empty()&&e.minX<=this.maxX&&e.maxX>=this.minX&&e.minY<=this.maxY&&e.maxY>=this.minY}}class Up{constructor(e){this._stringToNumber={},this._numberToString=[];for(let i=0;i<e.length;i++){const s=e[i];this._stringToNumber[s]=i,this._numberToString[i]=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 Gp{constructor(e,i,s,o,u){this.type="Feature",this._vectorTileFeature=e,this._x=s,this._y=o,this._z=i,this.properties=e.properties,this.id=u}projectPoint(e,i,s,o){return[360*(e.x+i)/o-180,360/Math.PI*Math.atan(Math.exp((1-2*(e.y+s)/o)*Math.PI))-90]}projectLine(e,i,s,o){return e.map(u=>this.projectPoint(u,i,s,o))}get geometry(){if(this._geometry)return this._geometry;const e=this._vectorTileFeature,i=e.extent*Math.pow(2,this._z),s=e.extent*this._x,o=e.extent*this._y,u=e.loadGeometry();switch(e.type){case 1:{const h=[];for(const g of u)h.push(g[0]);const f=this.projectLine(h,s,o,i);this._geometry=h.length===1?{type:"Point",coordinates:f[0]}:{type:"MultiPoint",coordinates:f};break}case 2:{const h=u.map(f=>this.projectLine(f,s,o,i));this._geometry=h.length===1?{type:"LineString",coordinates:h[0]}:{type:"MultiLineString",coordinates:h};break}case 3:{const h=np(u),f=[];for(const g of h)f.push(g.map(y=>this.projectLine(y,s,o,i)));this._geometry=f.length===1?{type:"Polygon",coordinates:f[0]}:{type:"MultiPolygon",coordinates:f};break}default:throw new Error(`unknown feature type: ${e.type}`)}return this._geometry}set geometry(e){this._geometry=e}toJSON(){const e={geometry:this.geometry};for(const i in this)i!=="_geometry"&&i!=="_vectorTileFeature"&&i!=="_x"&&i!=="_y"&&i!=="_z"&&(e[i]=this[i]);return e}}class No{constructor(e,i,s){Qe(this,"_name");Qe(this,"dataBuffer");Qe(this,"nullabilityBuffer");Qe(this,"_size");this._name=e,this.dataBuffer=i,typeof s=="number"?this._size=s:(this.nullabilityBuffer=s,this._size=s.size())}getValue(e){return this.nullabilityBuffer&&!this.nullabilityBuffer.get(e)?null:this.getValueFromBuffer(e)}has(e){return this.nullabilityBuffer&&this.nullabilityBuffer.get(e)||!this.nullabilityBuffer}get name(){return this._name}get size(){return this._size}}class Eu extends No{}class qh extends Eu{getValueFromBuffer(e){return this.dataBuffer[e]}}class Zh extends Eu{getValueFromBuffer(e){return this.dataBuffer[e]}}class qp extends No{constructor(i,s,o,u){super(i,s,u);Qe(this,"delta");this.delta=o}}class $h extends qp{constructor(e,i,s,o){super(e,Int32Array.of(i),s,o)}getValueFromBuffer(e){return this.dataBuffer[0]+e*this.delta}}class Wh extends No{constructor(e,i,s){super(e,Int32Array.of(i),s)}getValueFromBuffer(e){return this.dataBuffer[0]}}class Kg{constructor(e,i,s,o,u=4096){Qe(this,"_name");Qe(this,"_geometryVector");Qe(this,"_idVector");Qe(this,"_propertyVectors");Qe(this,"_extent");Qe(this,"propertyVectorsMap");this._name=e,this._geometryVector=i,this._idVector=s,this._propertyVectors=o,this._extent=u}get name(){return this._name}get idVector(){return this._idVector}get geometryVector(){return this._geometryVector}get propertyVectors(){return this._propertyVectors}getPropertyVector(e){return this.propertyVectorsMap||(this.propertyVectorsMap=new Map(this._propertyVectors.map(i=>[i.name,i]))),this.propertyVectorsMap.get(e)}*[Symbol.iterator](){const e=this.geometryVector[Symbol.iterator]();let i=0;for(;i<this.numFeatures;){let s;this.idVector&&(s=this.containsMaxSaveIntegerValues(this.idVector)?Number(this.idVector.getValue(i)):this.idVector.getValue(i));const o=e==null?void 0:e.next().value,u={};for(const h of this.propertyVectors){if(!h)continue;const f=h.name,g=h.getValue(i);g!==null&&(u[f]=g)}i++,yield{id:s,geometry:o,properties:u}}}get numFeatures(){return this.geometryVector.numGeometries}get extent(){return this._extent}getFeatures(){const e=[],i=this.geometryVector.getGeometries();for(let s=0;s<this.numFeatures;s++){let o;this.idVector&&(o=this.containsMaxSaveIntegerValues(this.idVector)?Number(this.idVector.getValue(s)):this.idVector.getValue(s));const u={coordinates:i[s],type:this.geometryVector.geometryType(s)},h={};for(const f of this.propertyVectors){if(!f)continue;const g=f.name,y=f.getValue(s);y!==null&&(h[g]=y)}e.push({id:o,geometry:u,properties:h})}return e}containsMaxSaveIntegerValues(e){return e instanceof qh||e instanceof Wh&&e instanceof $h||e instanceof Zh}}class Jg{constructor(e){Qe(this,"value");this.value=e}get(){return this.value}set(e){this.value=e}increment(){return this.value++}add(e){this.value+=e}}var vt,Vs,Ci,yn,Ba,Sr,Jt,fi,Zp,Lr;function ji(r,e,i){const s=new Int32Array(i);let o=0,u=e.get();for(let h=0;h<s.length;h++){let f=r[u++],g=127&f;f<128||(f=r[u++],g|=(127&f)<<7,f<128||(f=r[u++],g|=(127&f)<<14,f<128||(f=r[u++],g|=(127&f)<<21,f<128||(f=r[u++],g|=(15&f)<<28)))),s[o++]=g}return e.set(u),s}function Hh(r,e,i){const s=new BigInt64Array(i);for(let o=0;o<s.length;o++)s[o]=Qg(r,e);return s}function Qg(r,e){let i=0n,s=0,o=e.get();for(;o<r.length;){const u=r[o++];if(i|=BigInt(127&u)<<BigInt(s),!(128&u))break;if(s+=7,s>=64)throw new Error("Varint too long")}return e.set(o),i}function e_(r,e){let i,s;return s=r[e.get()],e.increment(),i=127&s,s<128?i:(s=r[e.get()],e.increment(),i|=(127&s)<<7,s<128?i:(s=r[e.get()],e.increment(),i|=(127&s)<<14,s<128?i:(s=r[e.get()],e.increment(),i|=(127&s)<<21,s<128?i:(s=r[e.get()],i|=(15&s)<<28,function(o,u,h){let f,g;if(g=u[h.get()],h.increment(),f=(112&g)>>4,g<128||(g=u[h.get()],h.increment(),f|=(127&g)<<3,g<128)||(g=u[h.get()],h.increment(),f|=(127&g)<<10,g<128)||(g=u[h.get()],h.increment(),f|=(127&g)<<17,g<128)||(g=u[h.get()],h.increment(),f|=(127&g)<<24,g<128)||(g=u[h.get()],h.increment(),f|=(1&g)<<31,g<128))return 4294967296*f+(o>>>0);throw new Error("Expected varint not more than 10 bytes")}(i,r,e)))))}function $t(r){return r>>>1^-(1&r)}function Pr(r){return r>>1n^-(1n&r)}function Uo(r){return r%2==1?(r+1)/-2:r/2}function $p(r,e,i){if(i===void 0){i=0;for(let u=0;u<e;u++)i+=r[u]}const s=new Int32Array(i);let o=0;for(let u=0;u<e;u++){const h=r[u];s.fill(r[u+e],o,o+h),o+=h}return s}function Wp(r,e,i){if(i===void 0){i=0;for(let u=0;u<e;u++)i+=Number(r[u])}const s=new BigInt64Array(i);let o=0;for(let u=0;u<e;u++){const h=Number(r[u]);s.fill(r[u+e],o,o+h),o+=h}return s}function Hp(r,e,i){const s=new Float64Array(i);let o=0;for(let u=0;u<e;u++){const h=r[u];s.fill(r[u+e],o,o+h),o+=h}return s}function Xp(r){const e=r.length/4*4;let i=1;if(e>=4)for(let s=r[0];i<e-4;i+=4)s=r[i]+=s,s=r[i+1]+=s,s=r[i+2]+=s,s=r[i+3]+=s;for(;i!=r.length;)r[i]+=r[i-1],++i}(function(r){r.NONE="NONE",r.DELTA="DELTA",r.COMPONENTWISE_DELTA="COMPONENTWISE_DELTA",r.RLE="RLE",r.MORTON="MORTON",r.PDE="PDE"})(vt||(vt={})),function(r){r.NONE="NONE",r.FAST_PFOR="FAST_PFOR",r.VARINT="VARINT",r.ALP="ALP"}(Vs||(Vs={})),function(r){r.PRESENT="PRESENT",r.DATA="DATA",r.OFFSET="OFFSET",r.LENGTH="LENGTH"}(Ci||(Ci={}));class Xh{constructor(e,i,s){Qe(this,"_dictionaryType");Qe(this,"_offsetType");Qe(this,"_lengthType");this._dictionaryType=e,this._offsetType=i,this._lengthType=s}get dictionaryType(){return this._dictionaryType}get offsetType(){return this._offsetType}get lengthType(){return this._lengthType}}function Hi(r,e){const i=function(s,o){const u=s[o.get()],h=Object.values(Ci)[u>>4];let f=null;switch(h){case Ci.DATA:f=new Xh(Object.values(yn)[15&u]);break;case Ci.OFFSET:f=new Xh(null,Object.values(Ba)[15&u]);break;case Ci.LENGTH:f=new Xh(null,null,Object.values(Sr)[15&u])}o.increment();const g=s[o.get()],y=Object.values(vt)[g>>5],v=Object.values(vt)[g>>2&7],b=Object.values(Vs)[3&g];o.increment();const S=ji(s,o,2),P=S[0];return{physicalStreamType:h,logicalStreamType:f,logicalLevelTechnique1:y,logicalLevelTechnique2:v,physicalLevelTechnique:b,numValues:P,byteLength:S[1],decompressedCount:P}}(r,e);return i.logicalLevelTechnique1===vt.MORTON?function(s,o,u){const h=ji(o,u,2);return{physicalStreamType:s.physicalStreamType,logicalStreamType:s.logicalStreamType,logicalLevelTechnique1:s.logicalLevelTechnique1,logicalLevelTechnique2:s.logicalLevelTechnique2,physicalLevelTechnique:s.physicalLevelTechnique,numValues:s.numValues,byteLength:s.byteLength,decompressedCount:s.decompressedCount,numBits:h[0],coordinateShift:h[1]}}(i,r,e):vt.RLE!==i.logicalLevelTechnique1&&vt.RLE!==i.logicalLevelTechnique2||Vs.NONE===i.physicalLevelTechnique?i:function(s,o,u){const h=ji(o,u,2);return{physicalStreamType:s.physicalStreamType,logicalStreamType:s.logicalStreamType,logicalLevelTechnique1:s.logicalLevelTechnique1,logicalLevelTechnique2:s.logicalLevelTechnique2,physicalLevelTechnique:s.physicalLevelTechnique,numValues:s.numValues,byteLength:s.byteLength,decompressedCount:h[1],runs:h[0],numRleValues:h[1]}}(i,r,e)}(function(r){r.NONE="NONE",r.SINGLE="SINGLE",r.SHARED="SHARED",r.VERTEX="VERTEX",r.MORTON="MORTON",r.FSST="FSST"})(yn||(yn={})),function(r){r.VERTEX="VERTEX",r.INDEX="INDEX",r.STRING="STRING",r.KEY="KEY"}(Ba||(Ba={})),function(r){r.VAR_BINARY="VAR_BINARY",r.GEOMETRIES="GEOMETRIES",r.PARTS="PARTS",r.RINGS="RINGS",r.TRIANGLES="TRIANGLES",r.SYMBOL="SYMBOL",r.DICTIONARY="DICTIONARY"}(Sr||(Sr={})),function(r){r[r.FLAT=0]="FLAT",r[r.CONST=1]="CONST",r[r.SEQUENCE=2]="SEQUENCE",r[r.DICTIONARY=3]="DICTIONARY",r[r.FSST_DICTIONARY=4]="FSST_DICTIONARY"}(Jt||(Jt={}));class xn{constructor(e,i){Qe(this,"values");Qe(this,"_size");this.values=e,this._size=i}get(e){const i=Math.floor(e/8);return(this.values[i]>>e%8&1)==1}set(e,i){const s=Math.floor(e/8);this.values[s]=this.values[s]|(i?1:0)<<e%8}getInt(e){const i=Math.floor(e/8);return this.values[i]>>e%8&1}size(){return this._size}getBuffer(){return this.values}}function Cu(r,e,i){if(!e)return r;const s=e.size(),o=new r.constructor(s);let u=0;for(let h=0;h<s;h++)o[h]=e.get(h)?r[u++]:i;return o}function Xi(r,e,i,s,o,u){return function(h,f,g,y,v){switch(f.logicalLevelTechnique1){case vt.DELTA:if(f.logicalLevelTechnique2===vt.RLE){const b=f;if(!v)return function(S,P,C){const D=new Int32Array(C);let R=0,V=0;for(let q=0;q<P;q++){const O=S[q],j=$t(S[q+P]);for(let Y=0;Y<O;Y++)V+=j,D[R++]=V}return D}(h,b.runs,b.numRleValues);h=$p(h,b.runs,b.numRleValues)}(function(b){b[0]=$t(b[0]);const S=b.length/4*4;let P=1;if(S>=4)for(;P<S-4;P+=4){const C=b[P+1],D=b[P+2],R=b[P+3];b[P]=$t(b[P])+b[P-1],b[P+1]=$t(C)+b[P],b[P+2]=$t(D)+b[P+1],b[P+3]=$t(R)+b[P+2]}for(;P!=b.length;++P)b[P]=$t(b[P])+b[P-1]})(h);break;case vt.RLE:h=function(b,S,P){return P?function(C,D,R){if(R===void 0){R=0;for(let O=0;O<D;O++)R+=C[O]}const V=new Int32Array(R);let q=0;for(let O=0;O<D;O++){const j=C[O];let Y=C[O+D];Y=$t(Y),V.fill(Y,q,q+j),q+=j}return V}(b,S.runs,S.numRleValues):$p(b,S.runs,S.numRleValues)}(h,f,g);break;case vt.MORTON:Xp(h);break;case vt.COMPONENTWISE_DELTA:(function(b){if(b.length<2)return;b[0]=$t(b[0]),b[1]=$t(b[1]);const S=b.length/4*4;let P=2;if(S>=4)for(;P<S-4;P+=4){const C=b[P+1],D=b[P+2],R=b[P+3];b[P]=$t(b[P])+b[P-2],b[P+1]=$t(C)+b[P-1],b[P+2]=$t(D)+b[P],b[P+3]=$t(R)+b[P+1]}for(;P!=b.length;P+=2)b[P]=$t(b[P])+b[P-2],b[P+1]=$t(b[P+1])+b[P-1]})(h);break;case vt.NONE:g&&function(b){for(let S=0;S<b.length;S++)b[S]=$t(b[S])}(h);break;default:throw new Error(`The specified Logical level technique is not supported: ${f.logicalLevelTechnique1}`)}return v?Cu(h,v,0):h}(Au(r,e,i),i,s,0,u)}function js(r,e,i){return function(s,o){if(o.logicalLevelTechnique1===vt.DELTA&&o.logicalLevelTechnique2===vt.NONE)return function(u){const h=new Int32Array(u.length+1);h[0]=0,h[1]=$t(u[0]);let f=h[1];for(let g=2;g!=h.length;++g)f+=$t(u[g-1]),h[g]=h[g-1]+f;return new Uint32Array(h)}(s);if(o.logicalLevelTechnique1===vt.RLE&&o.logicalLevelTechnique2===vt.NONE)return function(u,h,f){const g=new Int32Array(f+1);g[0]=0;let y=1,v=g[0];for(let b=0;b<h;b++){const S=u[b],P=u[b+h];for(let C=y;C<y+S;C++)g[C]=P+v,v=g[C];y+=S}return new Uint32Array(g)}(s,o.runs,o.numRleValues);if(o.logicalLevelTechnique1===vt.NONE&&o.logicalLevelTechnique2===vt.NONE){(function(h){let f=0;for(let g=0;g<h.length;g++)h[g]+=f,f=h[g]})(s);const u=new Uint32Array(o.numValues+1);return u[0]=0,u.set(s,1),u}if(o.logicalLevelTechnique1===vt.DELTA&&o.logicalLevelTechnique2===vt.RLE){const u=function(h,f,g){const y=new Int32Array(g+1);y[0]=0;let v=1,b=y[0];for(let S=0;S<f;S++){const P=h[S];let C=h[S+f];C=$t(C);for(let D=v;D<v+P;D++)y[D]=C+b,b=y[D];v+=P}return new Uint32Array(y)}(s,o.runs,o.numRleValues);return Xp(u),u}throw new Error("Only delta encoding is supported for transforming length to offset streams yet.")}(Au(r,e,i),i)}function Au(r,e,i){const s=i.physicalLevelTechnique;if(s===Vs.FAST_PFOR)return function(){throw new Error("FastPFor is not implemented yet.")}();if(s===Vs.VARINT)return ji(r,e,i.numValues);if(s===Vs.NONE){const o=e.get();e.add(i.byteLength);const u=r.subarray(o,e.get());return new Int32Array(u)}throw new Error("Specified physicalLevelTechnique is not supported (yet).")}function Yh(r,e,i,s){const o=Au(r,e,i);if(o.length===1){const u=o[0];return s?$t(u):u}return s?function(u){return $t(u[1])}(o):function(u){return u[1]}(o)}function Yp(r,e,i){return function(s){if(s.length==2){const o=$t(s[1]);return[o,o]}return[$t(s[2]),$t(s[3])]}(Au(r,e,i))}function Kp(r,e,i){return function(s){if(s.length==2){const o=Pr(s[1]);return[o,o]}return[Pr(s[2]),Pr(s[3])]}(Hh(r,e,i.numValues))}function Jp(r,e,i,s,o){return function(u,h,f,g){switch(h.logicalLevelTechnique1){case vt.DELTA:if(h.logicalLevelTechnique2===vt.RLE){const y=h;if(!g)return function(v,b,S){const P=new BigInt64Array(S);let C=0,D=0n;for(let R=0;R<b;R++){const V=Number(v[R]),q=Pr(v[R+b]);for(let O=0;O<V;O++)D+=q,P[C++]=D}return P}(u,y.runs,y.numRleValues);u=Wp(u,y.runs,y.numRleValues)}(function(y){y[0]=Pr(y[0]);const v=y.length/4*4;let b=1;if(v>=4)for(;b<v-4;b+=4){const S=y[b+1],P=y[b+2],C=y[b+3];y[b]=Pr(y[b])+y[b-1],y[b+1]=Pr(S)+y[b],y[b+2]=Pr(P)+y[b+1],y[b+3]=Pr(C)+y[b+2]}for(;b!=y.length;++b)y[b]=Pr(y[b])+y[b-1]})(u);break;case vt.RLE:u=function(y,v,b){return b?function(S,P,C){if(C===void 0){C=0;for(let V=0;V<P;V++)C+=Number(S[V])}const D=new BigInt64Array(C);let R=0;for(let V=0;V<P;V++){const q=Number(S[V]);let O=S[V+P];O=Pr(O),D.fill(O,R,R+q),R+=q}return D}(y,v.runs,v.numRleValues):Wp(y,v.runs,v.numRleValues)}(u,h,f);break;case vt.NONE:f&&function(y){for(let v=0;v<y.length;v++)y[v]=Pr(y[v])}(u);break;default:throw new Error(`The specified Logical level technique is not supported: ${h.logicalLevelTechnique1}`)}return g?Cu(u,g,0n):u}(Hh(r,e,i.numValues),i,s,o)}function Qp(r,e,i,s){const o=Hh(r,e,i.numValues);if(o.length===1){const u=o[0];return s?Pr(u):u}return s?function(u){return Pr(u[1])}(o):function(u){return u[1]}(o)}function Du(r,e,i,s){const o=r.logicalLevelTechnique1;if(o===vt.RLE)return r.runs===1?Jt.CONST:Jt.FLAT;if(o!==vt.DELTA||r.logicalLevelTechnique2!==vt.RLE)return r.numValues===1?Jt.CONST:Jt.FLAT;const u=e instanceof xn?e.size():e;if(r.numRleValues!==u)return Jt.FLAT;if(r.runs===1)return Jt.SEQUENCE;if(r.runs!==2)return r.numValues===1?Jt.CONST:Jt.FLAT;const h=s.get();let f;if(r.physicalLevelTechnique===Vs.VARINT)f=ji(i,s,4);else{const g=s.get();f=new Int32Array(i.buffer,i.byteOffset+g,4)}return s.set(h),f[2]===2&&f[3]===2?Jt.SEQUENCE:r.numValues===1?Jt.CONST:Jt.FLAT}class ef extends Eu{getValueFromBuffer(e){return this.dataBuffer[e]}}class tf extends qp{constructor(e,i,s,o){super(e,BigInt64Array.of(i),s,o)}getValueFromBuffer(e){return this.dataBuffer[0]+BigInt(e)*this.delta}}class Go{constructor(e,i,s){Qe(this,"_geometryOffsets");Qe(this,"_partOffsets");Qe(this,"_ringOffsets");this._geometryOffsets=e,this._partOffsets=i,this._ringOffsets=s}get geometryOffsets(){return this._geometryOffsets}get partOffsets(){return this._partOffsets}get ringOffsets(){return this._ringOffsets}}function Kh(r,e,i){return{x:rf(r,e)-i,y:rf(r>>1,e)-i}}function rf(r,e){let i=0;for(let s=0;s<e;s++)i|=(r&1<<2*s)>>s;return i}(function(r){r[r.POINT=0]="POINT",r[r.LINESTRING=1]="LINESTRING",r[r.POLYGON=2]="POLYGON",r[r.MULTIPOINT=3]="MULTIPOINT",r[r.MULTILINESTRING=4]="MULTILINESTRING",r[r.MULTIPOLYGON=5]="MULTIPOLYGON"})(fi||(fi={})),function(r){r[r.POINT=0]="POINT",r[r.LINESTRING=1]="LINESTRING",r[r.POLYGON=2]="POLYGON"}(Zp||(Zp={})),function(r){r[r.MORTON=0]="MORTON",r[r.VEC_2=1]="VEC_2",r[r.VEC_3=2]="VEC_3"}(Lr||(Lr={}));class t_{createPoint(e){return[[e]]}createMultiPoint(e){return e.map(i=>[i])}createLineString(e){return[e]}createMultiLineString(e){return e}createPolygon(e,i){return[e].concat(i)}createMultiPolygon(e){return e.flat()}}function nf(r){const e=new Array(r.numGeometries);let i=1,s=1,o=1,u=0;const h=new t_;let f=0,g=0;const y=r.mortonSettings,v=r.topologyVector,b=v.geometryOffsets,S=v.partOffsets,P=v.ringOffsets,C=r.vertexOffsets,D=r.containsPolygonGeometry(),R=r.vertexBuffer;for(let V=0;V<r.numGeometries;V++){const q=r.geometryType(V);if(q===fi.POINT){if(C&&C.length!==0)if(r.vertexBufferType===Lr.VEC_2){const O=2*C[g++],j=new Pe(R[O],R[O+1]);e[u++]=h.createPoint(j)}else{const O=Kh(R[C[g++]],y.numBits,y.coordinateShift),j=new Pe(O.x,O.y);e[u++]=h.createPoint(j)}else{const O=new Pe(R[f++],R[f++]);e[u++]=h.createPoint(O)}b&&o++,S&&i++,P&&s++}else if(q===fi.MULTIPOINT){const O=b[o]-b[o-1];o++;const j=new Array(O);if(C&&C.length!==0){for(let Y=0;Y<O;Y++){const ie=2*C[g++];j[Y]=new Pe(R[ie],R[ie+1])}e[u++]=h.createMultiPoint(j)}else{for(let Y=0;Y<O;Y++){const ie=R[f++],ue=R[f++];j[Y]=new Pe(ie,ue)}e[u++]=h.createMultiPoint(j)}}else if(q===fi.LINESTRING){let O,j=0;D?(j=P[s]-P[s-1],s++):j=S[i]-S[i-1],i++,C&&C.length!==0?(O=r.vertexBufferType===Lr.VEC_2?Qh(R,C,g,j,!1):ed(R,C,g,j,!1,y),g+=j):(O=Jh(R,f,j,!1),f+=2*j),e[u++]=h.createLineString(O),b&&o++}else if(q===fi.POLYGON){const O=S[i]-S[i-1];i++;const j=new Array(O-1);let Y=P[s]-P[s-1];if(s++,C&&C.length!==0){const ie=r.vertexBufferType===Lr.VEC_2?ku(R,C,g,Y):Ru(R,C,g,Y,0,y);g+=Y;for(let ue=0;ue<j.length;ue++)Y=P[s]-P[s-1],s++,j[ue]=r.vertexBufferType===Lr.VEC_2?ku(R,C,g,Y):Ru(R,C,g,Y,0,y),g+=Y;e[u++]=h.createPolygon(ie,j)}else{const ie=zu(R,f,Y);f+=2*Y;for(let ue=0;ue<j.length;ue++)Y=P[s]-P[s-1],s++,j[ue]=zu(R,f,Y),f+=2*Y;e[u++]=h.createPolygon(ie,j)}b&&o++}else if(q===fi.MULTILINESTRING){const O=b[o]-b[o-1];o++;const j=new Array(O);if(C&&C.length!==0){for(let Y=0;Y<O;Y++){let ie=0;D?(ie=P[s]-P[s-1],s++):ie=S[i]-S[i-1],i++;const ue=r.vertexBufferType===Lr.VEC_2?Qh(R,C,g,ie,!1):ed(R,C,g,ie,!1,y);j[Y]=ue,g+=ie}e[u++]=h.createMultiLineString(j)}else{for(let Y=0;Y<O;Y++){let ie=0;D?(ie=P[s]-P[s-1],s++):ie=S[i]-S[i-1],i++,j[Y]=Jh(R,f,ie,!1),f+=2*ie}e[u++]=h.createMultiLineString(j)}}else{if(q!==fi.MULTIPOLYGON)throw new Error("The specified geometry type is currently not supported.");{const O=b[o]-b[o-1];o++;const j=new Array(O);let Y=0;if(C&&C.length!==0){for(let ie=0;ie<O;ie++){const ue=S[i]-S[i-1];i++;const be=new Array(ue-1);Y=P[s]-P[s-1],s++;const Te=r.vertexBufferType===Lr.VEC_2?ku(R,C,g,Y):Ru(R,C,g,Y,0,y);g+=Y;for(let Ie=0;Ie<be.length;Ie++)Y=P[s]-P[s-1],s++,be[Ie]=r.vertexBufferType===Lr.VEC_2?ku(R,C,g,Y):Ru(R,C,g,Y,0,y),g+=Y;j[ie]=h.createPolygon(Te,be)}e[u++]=h.createMultiPolygon(j)}else{for(let ie=0;ie<O;ie++){const ue=S[i]-S[i-1];i++;const be=new Array(ue-1);Y=P[s]-P[s-1],s++;const Te=zu(R,f,Y);f+=2*Y;for(let Ie=0;Ie<be.length;Ie++){const ke=P[s]-P[s-1];s++,be[Ie]=zu(R,f,ke),f+=2*ke}j[ie]=h.createPolygon(Te,be)}e[u++]=h.createMultiPolygon(j)}}}}return e}function zu(r,e,i){return Jh(r,e,i,!0)}function ku(r,e,i,s){return Qh(r,e,i,s,!0)}function Ru(r,e,i,s,o,u){return ed(r,e,i,s,!0,u)}function Jh(r,e,i,s){const o=new Array(s?i+1:i);for(let u=0;u<2*i;u+=2)o[u/2]=new Pe(r[e+u],r[e+u+1]);return s&&(o[o.length-1]=o[0]),o}function Qh(r,e,i,s,o){const u=new Array(o?s+1:s);for(let h=0;h<2*s;h+=2){const f=2*e[i+h/2];u[h/2]=new Pe(r[f],r[f+1])}return o&&(u[u.length-1]=u[0]),u}function ed(r,e,i,s,o,u){const h=new Array(o?s+1:s);for(let f=0;f<s;f++){const g=Kh(r[e[i+f]],u.numBits,u.coordinateShift);h[f]=new Pe(g.x,g.y)}return o&&(h[h.length-1]=h[0]),h}class sf{constructor(e,i,s,o,u){Qe(this,"_vertexBufferType");Qe(this,"_topologyVector");Qe(this,"_vertexOffsets");Qe(this,"_vertexBuffer");Qe(this,"_mortonSettings");this._vertexBufferType=e,this._topologyVector=i,this._vertexOffsets=s,this._vertexBuffer=o,this._mortonSettings=u}get vertexBufferType(){return this._vertexBufferType}get topologyVector(){return this._topologyVector}get vertexOffsets(){return this._vertexOffsets}get vertexBuffer(){return this._vertexBuffer}*[Symbol.iterator](){const e=nf(this);let i=0;for(;i<this.numGeometries;)yield{coordinates:e[i],type:this.geometryType(i)},i++}getSimpleEncodedVertex(e){const i=this.vertexOffsets?2*this.vertexOffsets[e]:2*e;return[this.vertexBuffer[i],this.vertexBuffer[i+1]]}getVertex(e){if(this.vertexOffsets&&this.mortonSettings){const s=Kh(this.vertexBuffer[this.vertexOffsets[e]],this.mortonSettings.numBits,this.mortonSettings.coordinateShift);return[s.x,s.y]}const i=this.vertexOffsets?2*this.vertexOffsets[e]:2*e;return[this.vertexBuffer[i],this.vertexBuffer[i+1]]}getGeometries(){return nf(this)}get mortonSettings(){return this._mortonSettings}}class af extends sf{constructor(i,s,o,u,h,f,g){super(o,u,h,f,g);Qe(this,"_numGeometries");Qe(this,"_geometryType");this._numGeometries=i,this._geometryType=s}geometryType(i){return this._geometryType}get numGeometries(){return this._numGeometries}containsPolygonGeometry(){return this._geometryType===fi.POLYGON||this._geometryType===fi.MULTIPOLYGON}containsSingleGeometryType(){return!0}}class of extends sf{constructor(i,s,o,u,h,f){super(i,o,u,h,f);Qe(this,"_geometryTypes");this._geometryTypes=s}geometryType(i){return this._geometryTypes[i]}get numGeometries(){return this._geometryTypes.length}containsPolygonGeometry(){for(let i=0;i<this.numGeometries;i++)if(this.geometryType(i)===fi.POLYGON||this.geometryType(i)===fi.MULTIPOLYGON)return!0;return!1}containsSingleGeometryType(){return!1}}class lf{constructor(e,i,s,o){Qe(this,"_triangleOffsets");Qe(this,"_indexBuffer");Qe(this,"_vertexBuffer");Qe(this,"_topologyVector");this._triangleOffsets=e,this._indexBuffer=i,this._vertexBuffer=s,this._topologyVector=o}get triangleOffsets(){return this._triangleOffsets}get indexBuffer(){return this._indexBuffer}get vertexBuffer(){return this._vertexBuffer}get topologyVector(){return this._topologyVector}getGeometries(){if(!this._topologyVector)throw new Error("Cannot convert GpuVector to coordinates without topology information");const e=new Array(this.numGeometries),i=this._topologyVector,s=i.partOffsets,o=i.ringOffsets,u=i.geometryOffsets;let h=0,f=1,g=1,y=1;for(let v=0;v<this.numGeometries;v++)switch(this.geometryType(v)){case fi.POLYGON:{const b=s[f]-s[f-1];f++;const S=[];for(let P=0;P<b;P++){const C=o[g]-o[g-1];g++;const D=[];for(let R=0;R<C;R++){const V=this._vertexBuffer[h++],q=this._vertexBuffer[h++];D.push(new Pe(V,q))}D.length>0&&D.push(D[0]),S.push(D)}e[v]=S,u&&y++}break;case fi.MULTIPOLYGON:{const b=u[y]-u[y-1];y++;const S=[];for(let P=0;P<b;P++){const C=s[f]-s[f-1];f++;for(let D=0;D<C;D++){const R=o[g]-o[g-1];g++;const V=[];for(let q=0;q<R;q++){const O=this._vertexBuffer[h++],j=this._vertexBuffer[h++];V.push(new Pe(O,j))}V.length>0&&V.push(V[0]),S.push(V)}}e[v]=S}}return e}[Symbol.iterator](){return null}}function cf(r,e,i,s,o,u){return new i_(r,e,i,s,o,u)}class i_ extends lf{constructor(i,s,o,u,h,f){super(o,u,h,f);Qe(this,"_numGeometries");Qe(this,"_geometryType");this._numGeometries=i,this._geometryType=s}geometryType(i){return this._geometryType}get numGeometries(){return this._numGeometries}containsSingleGeometryType(){return!0}}function uf(r,e,i,s,o){return new r_(r,e,i,s,o)}class r_ extends lf{constructor(i,s,o,u,h){super(s,o,u,h);Qe(this,"_geometryTypes");this._geometryTypes=i}geometryType(i){return this._geometryTypes[i]}get numGeometries(){return this._geometryTypes.length}containsSingleGeometryType(){return!1}}function n_(r,e,i,s,o){const u=Hi(r,i);let h=null,f=null,g=null,y=null;if(Du(u,s,r,i)===Jt.CONST){const q=Yh(r,i,u,!1);let O=null,j=null,Y=null,ie=null;for(let ue=0;ue<e-1;ue++){const be=Hi(r,i);switch(be.physicalStreamType){case Ci.LENGTH:switch(be.logicalStreamType.lengthType){case Sr.GEOMETRIES:O=js(r,i,be);break;case Sr.PARTS:j=js(r,i,be);break;case Sr.RINGS:Y=js(r,i,be);break;case Sr.TRIANGLES:ie=js(r,i,be)}break;case Ci.OFFSET:switch(be.logicalStreamType.offsetType){case Ba.VERTEX:h=Xi(r,i,be,!1);break;case Ba.INDEX:y=Xi(r,i,be,!1)}break;case Ci.DATA:yn.VERTEX===be.logicalStreamType.dictionaryType?f=Xi(r,i,be,!0):(g={numBits:be.numBits,coordinateShift:be.coordinateShift},f=Xi(r,i,be,!1))}}return y!==null?O!=null||j!=null?cf(s,q,ie,y,f,new Go(O,j,Y)):cf(s,q,ie,y,f):g===null?function(ue,be,Te,Ie,ke){return new af(ue,be,Lr.VEC_2,Te,Ie,ke)}(s,q,new Go(O,j,Y),h,f):function(ue,be,Te,Ie,ke,Ee){return new af(ue,be,Lr.MORTON,Te,Ie,ke,Ee)}(s,q,new Go(O,j,Y),h,f,g)}const v=Xi(r,i,u,!1);let b=null,S=null,P=null,C=null;for(let q=0;q<e-1;q++){const O=Hi(r,i);switch(O.physicalStreamType){case Ci.LENGTH:switch(O.logicalStreamType.lengthType){case Sr.GEOMETRIES:b=Xi(r,i,O,!1);break;case Sr.PARTS:S=Xi(r,i,O,!1);break;case Sr.RINGS:P=Xi(r,i,O,!1);break;case Sr.TRIANGLES:C=js(r,i,O)}break;case Ci.OFFSET:switch(O.logicalStreamType.offsetType){case Ba.VERTEX:h=Xi(r,i,O,!1);break;case Ba.INDEX:y=Xi(r,i,O,!1)}break;case Ci.DATA:yn.VERTEX===O.logicalStreamType.dictionaryType?f=Xi(r,i,O,!0):(g={numBits:O.numBits,coordinateShift:O.coordinateShift},f=Xi(r,i,O,!1))}}let D=null,R=null,V=null;return b!==null?(D=td(v,b,2),S!==null&&P!==null?(R=hf(v,D,S,!1),V=function(q,O,j,Y){const ie=new Uint32Array(j[j.length-1]+1);let ue=0;ie[0]=ue;let be=1,Te=1,Ie=0;for(let ke=0;ke<q.length;ke++){const Ee=q[ke],Se=O[ke+1]-O[ke];if(Ee!==0&&Ee!==3)for(let ye=0;ye<Se;ye++){const Be=j[be]-j[be-1];be++;for(let Oe=0;Oe<Be;Oe++)ue=ie[Te++]=ue+Y[Ie++]}else for(let ye=0;ye<Se;ye++)ie[Te++]=++ue,be++}return ie}(v,D,R,P)):S!==null&&(R=function(q,O,j){const Y=new Uint32Array(O[O.length-1]+1);let ie=0;Y[0]=ie;let ue=1,be=0;for(let Te=0;Te<q.length;Te++){const Ie=q[Te],ke=O[Te+1]-O[Te];if(Ie===4||Ie===1)for(let Ee=0;Ee<ke;Ee++)ie=Y[ue++]=ie+j[be++];else for(let Ee=0;Ee<ke;Ee++)Y[ue++]=++ie}return Y}(v,D,S))):S!==null&&P!==null?(R=td(v,S,1),V=hf(v,R,P,!0)):S!==null&&(R=td(v,S,0)),y!==null&&R===null?uf(v,C,y,f):y!==null?uf(v,C,y,f,new Go(D,R,V)):g===null?function(q,O,j,Y){return new of(Lr.VEC_2,q,O,j,Y)}(v,new Go(D,R,V),h,f):function(q,O,j,Y,ie){return new of(Lr.MORTON,q,O,j,Y,ie)}(v,new Go(D,R,V),h,f,g)}function td(r,e,i){const s=new Uint32Array(r.length+1);let o=0;s[0]=o;let u=0;for(let h=0;h<r.length;h++)o=s[h+1]=o+(r[h]>i?e[u++]:1);return s}function hf(r,e,i,s){const o=new Uint32Array(e[e.length-1]+1);let u=0;o[0]=u;let h=1,f=0;for(let g=0;g<r.length;g++){const y=r[g],v=e[g+1]-e[g];if(y===5||y===2||s&&(y===4||y===1))for(let b=0;b<v;b++)u=o[h++]=u+i[f++];else for(let b=0;b<v;b++)o[h++]=++u}return o}class s_ extends No{constructor(i,s,o){super(i,s.getBuffer(),o);Qe(this,"dataVector");this.dataVector=s}getValueFromBuffer(i){return this.dataVector.get(i)}}class a_ extends Eu{getValueFromBuffer(e){return this.dataBuffer[e]}}class df extends No{constructor(e,i,s){super(e,BigInt64Array.of(i),s)}getValueFromBuffer(e){return this.dataBuffer[0]}}function tc(r,e,i,s,o){const u=function(h,f,g,y){const v=new Uint8Array(f);let b=0;const S=y.get()+g;for(;b<f&&!(y.get()>=S);){const P=h[y.increment()];if(P<=127){const C=P+3,D=h[y.increment()],R=Math.min(b+C,f);v.fill(D,b,R),b=R}else{const C=256-P;for(let D=0;D<C&&b<f;D++)v[b++]=h[y.increment()]}}return y.set(S),v}(r,Math.ceil(e/8),i,s);return o?function(h,f,g){if(!g)return h;const y=g.size(),v=new xn(h,f),b=new xn(new Uint8Array(Math.ceil(y/8)),y);let S=0;for(let P=0;P<y;P++){const C=!!g.get(P)&&v.get(S++);b.set(P,C)}return b.getBuffer()}(u,e,o):u}const o_=new TextDecoder;function id(r,e,i){return i-e>=12?o_.decode(r.subarray(e,i)):function(s,o,u){let h="",f=o;for(;f<u;){const g=s[f];let y,v,b,S=null,P=g>239?4:g>223?3:g>191?2:1;if(f+P>u)break;P===1?g<128&&(S=g):P===2?(y=s[f+1],(192&y)==128&&(S=(31&g)<<6|63&y,S<=127&&(S=null))):P===3?(y=s[f+1],v=s[f+2],(192&y)==128&&(192&v)==128&&(S=(15&g)<<12|(63&y)<<6|63&v,(S<=2047||S>=55296&&S<=57343)&&(S=null))):P===4&&(y=s[f+1],v=s[f+2],b=s[f+3],(192&y)==128&&(192&v)==128&&(192&b)==128&&(S=(15&g)<<18|(63&y)<<12|(63&v)<<6|63&b,(S<=65535||S>=1114112)&&(S=null))),S===null?(S=65533,P=1):S>65535&&(S-=65536,h+=String.fromCharCode(S>>>10&1023|55296),S=56320|1023&S),h+=String.fromCharCode(S),f+=P}return h}(r,e,i)}class rd extends No{constructor(i,s,o,u){super(i,o,u);Qe(this,"offsetBuffer");this.offsetBuffer=s}}class pf extends rd{constructor(i,s,o,u){super(i,s,o,u??s.length-1);Qe(this,"textEncoder");this.textEncoder=new TextEncoder}getValueFromBuffer(i){return id(this.dataBuffer,this.offsetBuffer[i],this.offsetBuffer[i+1])}}class qo extends rd{constructor(i,s,o,u,h){super(i,o,u,h??s.length);Qe(this,"indexBuffer");Qe(this,"textEncoder");this.indexBuffer=s,this.indexBuffer=s,this.textEncoder=new TextEncoder}getValueFromBuffer(i){const s=this.indexBuffer[i];return id(this.dataBuffer,this.offsetBuffer[s],this.offsetBuffer[s+1])}}class ff extends rd{constructor(i,s,o,u,h,f,g){super(i,o,u,g);Qe(this,"indexBuffer");Qe(this,"symbolOffsetBuffer");Qe(this,"symbolTableBuffer");Qe(this,"textEncoder");Qe(this,"symbolLengthBuffer");Qe(this,"lengthBuffer");Qe(this,"decodedDictionary");this.indexBuffer=s,this.symbolOffsetBuffer=h,this.symbolTableBuffer=f,this.textEncoder=new TextEncoder}getValueFromBuffer(i){this.decodedDictionary==null&&(this.symbolLengthBuffer==null&&(this.symbolLengthBuffer=this.offsetToLengthBuffer(this.symbolOffsetBuffer),this.lengthBuffer=this.offsetToLengthBuffer(this.offsetBuffer)),this.decodedDictionary=function(o,u,h){const f=[],g=new Array(u.length).fill(0);for(let y=1;y<u.length;y++)g[y]=g[y-1]+u[y-1];for(let y=0;y<h.length;y++)if(h[y]===255)f.push(h[++y]);else{const v=u[h[y]],b=g[h[y]];for(let S=0;S<v;S++)f.push(o[b+S])}return new Uint8Array(f)}(this.symbolTableBuffer,this.symbolLengthBuffer,this.dataBuffer));const s=this.indexBuffer[i];return id(this.decodedDictionary,this.offsetBuffer[s],this.offsetBuffer[s+1])}offsetToLengthBuffer(i){const s=new Uint32Array(i.length-1);let o=i[0];for(let u=1;u<i.length;u++){const h=i[u];s[u-1]=h-o,o=h}return s}}function l_(r,e,i,s,o,u){return i.type==="scalarType"?function(h,f,g,y,v,b){let S=null,P=0;if(h===0)return null;if(b.nullable){const D=Hi(f,g);P=D.numValues;const R=g.get(),V=tc(f,P,D.byteLength,g);g.set(R+D.byteLength),S=new xn(V,D.numValues)}const C=S??y;switch(v.physicalType){case 4:case 3:return function(D,R,V,q,O){const j=Hi(D,R),Y=Du(j,O,D,R),ie=q.physicalType===3;if(Y===Jt.FLAT){const ue=Xi(D,R,j,ie,0,ic(O)?O:void 0);return new qh(V.name,ue,O)}if(Y===Jt.SEQUENCE){const ue=Yp(D,R,j);return new $h(V.name,ue[0],ue[1],j.numRleValues)}{const ue=Yh(D,R,j,ie);return new Wh(V.name,ue,O)}}(f,g,b,v,C);case 9:return function(D,R,V,q,O){let j=null,Y=null,ie=null,ue=null,be=null,Te=null,Ie=null,ke=null;for(let Ee=0;Ee<q;Ee++){const Se=Hi(R,V);if(Se.byteLength!==0)switch(Se.physicalStreamType){case Ci.PRESENT:{const ye=tc(R,Se.numValues,Se.byteLength,V);Te=new xn(ye,Se.numValues);break}case Ci.OFFSET:Y=Xi(R,V,Se,!1,0,O!=null||Te!=null?O??Te:void 0);break;case Ci.LENGTH:{const ye=js(R,V,Se);Sr.DICTIONARY===Se.logicalStreamType.lengthType?j=ye:Sr.SYMBOL===Se.logicalStreamType.lengthType?ue=ye:Ie=ye;break}case Ci.DATA:{const ye=R.subarray(V.get(),V.get()+Se.byteLength);V.add(Se.byteLength);const Be=Se.logicalStreamType.dictionaryType;yn.FSST===Be?be=ye:yn.SINGLE===Be||yn.SHARED===Be?ie=ye:yn.NONE===Be&&(ke=ye);break}}}return function(Ee,Se,ye,Be,Oe,qe,je){return Se?new ff(Ee,ye,Be,Oe,qe,Se,je):null}(D,be,Y,j,ie,ue,O??Te)??function(Ee,Se,ye,Be,Oe){return Se?Oe?new qo(Ee,ye,Be,Se,Oe):new qo(Ee,ye,Be,Se):null}(D,ie,Y,j,O??Te)??function(Ee,Se,ye,Be,Oe){if(!Se||!ye)return null;if(Be)return Oe?new qo(Ee,Be,Se,ye,Oe):new qo(Ee,Be,Se,ye);if(Oe&&Oe.size()!==Se.length-1){const qe=new Int32Array(Oe.size());let je=0;for(let lt=0;lt<Oe.size();lt++)qe[lt]=Oe.get(lt)?je++:0;return new qo(Ee,qe,Se,ye,Oe)}return Oe?new pf(Ee,Se,ye,Oe):new pf(Ee,Se,ye)}(D,Ie,ke,Y,O??Te)}(b.name,f,g,b.nullable?h-1:h,S);case 0:return function(D,R,V,q,O){const j=Hi(D,R),Y=j.numValues,ie=R.get(),ue=ic(O)?O:void 0,be=tc(D,Y,j.byteLength,R,ue);R.set(ie+j.byteLength);const Te=new xn(be,Y);return new s_(V.name,Te,O)}(f,g,b,0,C);case 6:case 5:return function(D,R,V,q,O){const j=Hi(D,R),Y=Du(j,q,D,R),ie=O.physicalType===5;if(Y===Jt.FLAT){const ue=Jp(D,R,j,ie,ic(q)?q:void 0);return new ef(V.name,ue,q)}if(Y===Jt.SEQUENCE){const ue=Kp(D,R,j);return new tf(V.name,ue[0],ue[1],j.numRleValues)}{const ue=Qp(D,R,j,ie);return new df(V.name,ue,q)}}(f,g,b,C,v);case 7:return function(D,R,V,q){const O=Hi(D,R),j=ic(q)?q:void 0,Y=function(ie,ue,be,Te){const Ie=ue.get(),ke=Ie+be*Float32Array.BYTES_PER_ELEMENT,Ee=new Uint8Array(ie.subarray(Ie,ke)).buffer,Se=new Float32Array(Ee);return ue.set(ke),Te?Cu(Se,Te,0):Se}(D,R,O.numValues,j);return new a_(V.name,Y,q)}(f,g,b,C);case 8:return function(D,R,V,q){const O=Hi(D,R),j=ic(q)?q:void 0,Y=function(ie,ue,be,Te){const Ie=ue.get(),ke=Ie+be*Float64Array.BYTES_PER_ELEMENT,Ee=new Uint8Array(ie.subarray(Ie,ke)).buffer,Se=new Float64Array(Ee);return ue.set(ke),Te?Cu(Se,Te,0):Se}(D,R,O.numValues,j);return new Zh(V.name,Y,q)}(f,g,b,C);default:throw new Error(`The specified data type for the field is currently not supported: ${v}`)}}(s,r,e,o,i.scalarType,i):s===0?null:function(h,f,g,y){let v=null,b=null,S=null,P=null,C=!1;for(;!C;){const q=Hi(h,f);switch(q.physicalStreamType){case Ci.LENGTH:Sr.DICTIONARY===q.logicalStreamType.lengthType?v=js(h,f,q):S=js(h,f,q);break;case Ci.DATA:yn.SINGLE===q.logicalStreamType.dictionaryType||yn.SHARED===q.logicalStreamType.dictionaryType?(b=h.subarray(f.get(),f.get()+q.byteLength),C=!0):P=h.subarray(f.get(),f.get()+q.byteLength),f.add(q.byteLength)}}const D=g.complexType.children,R=[];let V=0;for(const q of D){const O=ji(h,f,1)[0];if(O==0)continue;const j=q.name?`${g.name}${q.name}`:g.name;if(O!==2||q.type!=="scalarField"||q.scalarField.physicalType!==9)throw new Error("Currently only optional string fields are implemented for a struct.");const Y=Hi(h,f),ie=tc(h,Y.numValues,Y.byteLength,f),ue=Hi(h,f),be=Xi(h,f,ue,!1,0,ue.decompressedCount!==y?new xn(ie,Y.numValues):void 0);R[V++]=P?new ff(j,be,v,b,S,P,new xn(ie,Y.numValues)):new qo(j,be,v,b,new xn(ie,Y.numValues))}return R}(r,e,i,o)}function ic(r){return r instanceof xn}function mf(r){switch(r){case 0:case 1:case 2:case 3:{const e={};e.nullable=!!(1&r),e.columnScope=0;const i={};return i.physicalType=r>1?6:4,i.type="physicalType",e.scalarType=i,e.type="scalarType",e}case 4:{const e={nullable:!1,columnScope:0},i={type:"physicalType",physicalType:0};return e.type="complexType",e.complexType=i,e}case 30:{const e={nullable:!1,columnScope:0},i={type:"physicalType",physicalType:1};return e.type="complexType",e.complexType=i,e}default:return function(e){let i=null;switch(e){case 10:case 11:i=0;break;case 12:case 13:i=1;break;case 14:case 15:i=2;break;case 16:case 17:i=3;break;case 18:case 19:i=4;break;case 20:case 21:i=5;break;case 22:case 23:i=6;break;case 24:case 25:i=7;break;case 26:case 27:i=8;break;case 28:case 29:i=9;break;default:return null}const s={};s.nullable=!!(1&e),s.columnScope=0;const o={type:"physicalType"};return o.physicalType=i,s.type="scalarType",s.scalarType=o,s}(r)}}function gf(r){return r>=10}function _f(r){return r===30}function c_(r){if(r.name==="id")return!1;if(r.type==="scalarType"){const e=r.scalarType;if(e.type==="physicalType")switch(e.physicalType){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:default:return!1;case 9:return!0}else if(e.type==="logicalType")return!1}else if(r.type==="complexType"){const e=r.complexType;if(e.type==="physicalType")switch(e.physicalType){case 0:case 1:return!0;default:return!1}}return console.warn("Unexpected column type in hasStreamCount",r),!1}const u_=new TextDecoder;function nd(r,e){const i=ji(r,e,1)[0];if(i===0)return"";const s=e.get(),o=r.subarray(s,s+i);return e.add(i),u_.decode(o)}function yf(r,e){const i=ji(r,e,1)[0]>>>0;if(i<10||i>30)throw new Error(`Unsupported field type code ${i}. Supported: 10-29(scalars), 30(STRUCT)`);const s=mf(i);if(gf(i)&&(s.name=nd(r,e)),_f(i)){const o=ji(r,e,1)[0]>>>0;s.complexType.children=new Array(o);for(let u=0;u<o;u++)s.complexType.children[u]=yf(r,e)}return function(o){return{name:o.name,nullable:o.nullable,scalarField:o.scalarType,complexField:o.complexType,type:o.type==="scalarType"?"scalarField":"complexField"}}(s)}function h_(r,e){const i=ji(r,e,1)[0]>>>0,s=mf(i);if(!s)throw new Error(`Unsupported column type code ${i}. Supported: 0-3(ID), 4(GEOMETRY), 10-29(scalars), 30(STRUCT)`);if(gf(i)?s.name=nd(r,e):i>=0&&i<=3?s.name="id":i===4&&(s.name="geometry"),_f(i)){const o=ji(r,e,1)[0]>>>0,u=s.complexType;u.children=new Array(o);for(let h=0;h<o;h++)u.children[h]=yf(r,e)}return s}function d_(r,e){const i={featureTables:[]},s={};s.name=nd(r,e);const o=ji(r,e,1)[0]>>>0,u=ji(r,e,1)[0]>>>0;s.columns=new Array(u);for(let h=0;h<u;h++)s.columns[h]=h_(r,e);return i.featureTables.push(s),[i,o]}function p_(r,e,i,s,o,u,h=!1){const f=e.scalarType.physicalType,g=Du(o,u,r,i);if(f===4)switch(g){case Jt.FLAT:{const y=Xi(r,i,o,!1);return new qh(s,y,u)}case Jt.SEQUENCE:{const y=Yp(r,i,o);return new $h(s,y[0],y[1],o.numRleValues)}case Jt.CONST:{const y=Yh(r,i,o,!1);return new Wh(s,y,u)}}else switch(g){case Jt.FLAT:{if(h){const v=function(b,S,P){const C=function(D,R,V){const q=new Float64Array(V);for(let O=0;O<V;O++)q[O]=e_(D,R);return q}(b,S,P.numValues);return function(D,R){switch(R.logicalLevelTechnique1){case vt.DELTA:return R.logicalLevelTechnique2===vt.RLE&&(D=Hp(D,R.runs,R.numRleValues)),function(V){V[0]=Uo(V[0]);const q=V.length/4*4;let O=1;if(q>=4)for(;O<q-4;O+=4){const j=V[O+1],Y=V[O+2],ie=V[O+3];V[O]=Uo(V[O])+V[O-1],V[O+1]=Uo(j)+V[O],V[O+2]=Uo(Y)+V[O+1],V[O+3]=Uo(ie)+V[O+2]}for(;O!=V.length;++O)V[O]=Uo(V[O])+V[O-1]}(D),D;case vt.RLE:return function(V,q){return Hp(V,q.runs,q.numRleValues)}(D,R);case vt.NONE:return D;default:throw new Error(`The specified Logical level technique is not supported: ${R.logicalLevelTechnique1}`)}}(C,P)}(r,i,o);return new Zh(s,v,u)}const y=Jp(r,i,o,!1);return new ef(s,y,u)}case Jt.SEQUENCE:{const y=Kp(r,i,o);return new tf(s,y[0],y[1],o.numRleValues)}case Jt.CONST:{const y=Qp(r,i,o,!1);return new df(s,y,u)}}throw new Error("Vector type not supported for id column.")}class f_{constructor(e,i){var s;switch(this._featureData=e,this.properties=this._featureData.properties||{},(s=this._featureData.geometry)===null||s===void 0?void 0:s.type){case fi.POINT:case fi.MULTIPOINT:this.type=1;break;case fi.LINESTRING:case fi.MULTILINESTRING:this.type=2;break;case fi.POLYGON:case fi.MULTIPOLYGON:this.type=3;break;default:this.type=0}this.extent=i,this.id=Number(this._featureData.id)}loadGeometry(){const e=[];for(const i of this._featureData.geometry.coordinates){const s=[];for(const o of i)s.push(new Pe(o.x,o.y));e.push(s)}return e}}class m_{constructor(e){this.features=[],this.featureTable=e,this.name=e.name,this.extent=e.extent,this.version=2,this.features=e.getFeatures(),this.length=this.features.length}feature(e){return new f_(this.features[e],this.extent)}}class xf{constructor(e){this.layers={};const i=function(s,o,u=!0){const h=new Jg(0),f=[];for(;h.get()<s.length;){const g=ji(s,h,1)[0]>>>0,y=h.get()+g;if(y>s.length)throw new Error(`Block overruns tile: ${y} > ${s.length}`);if(ji(s,h,1)[0]>>>0!=1){h.set(y);continue}const v=d_(s,h),b=v[1],S=v[0].featureTables[0];let P=null,C=null;const D=[];let R=0;for(const q of S.columns){const O=q.name;if(O==="id"){let j=null;if(q.nullable){const ie=Hi(s,h),ue=h.get(),be=tc(s,ie.numValues,ie.byteLength,h);h.set(ue+ie.byteLength),j=new xn(be,ie.numValues)}const Y=Hi(s,h);R=Y.decompressedCount,P=p_(s,q,h,O,Y,j??R,u)}else if(O==="geometry"){const j=ji(s,h,1)[0];if(R===0){const Y=h.get();R=Hi(s,h).decompressedCount,h.set(Y)}C=n_(s,j,h,R)}else{const j=c_(q)?ji(s,h,1)[0]:1;if(j===0)continue;const Y=l_(s,h,q,j,R);if(Y)if(Array.isArray(Y))for(const ie of Y)D.push(ie);else D.push(Y)}}const V=new Kg(S.name,C,P,D,b);f.push(V),h.set(y)}return f}(new Uint8Array(e));this.layers=i.reduce((s,o)=>Object.assign(Object.assign({},s),{[o.name]:new m_(o)}),{})}}class g_{constructor(e,i){this.feature=e,this.type=e.type,this.properties=e.tags?e.tags:{},this.extent=i,"id"in e&&(typeof e.id=="string"?this.id=parseInt(e.id,10):typeof e.id!="number"||isNaN(e.id)||(this.id=e.id))}loadGeometry(){const e=[],i=this.feature.type===1?[this.feature.geometry]:this.feature.geometry;for(const s of i){const o=[];for(const u of s)o.push(new Pe(u[0],u[1]));e.push(o)}return e}}const rc="_geojsonTileLayer";function __(r,e){e.writeVarintField(15,r.version||1),e.writeStringField(1,r.name||""),e.writeVarintField(5,r.extent||4096);const i={keys:[],values:[],keycache:{},valuecache:{}};for(let u=0;u<r.length;u++)i.feature=r.feature(u),e.writeMessage(2,y_,i);const s=i.keys;for(const u of s)e.writeStringField(3,u);const o=i.values;for(const u of o)e.writeMessage(4,b_,u)}function y_(r,e){if(!r.feature)return;const i=r.feature;i.id!==void 0&&e.writeVarintField(1,i.id),e.writeMessage(2,x_,r),e.writeVarintField(3,i.type),e.writeMessage(4,v_,i)}function x_(r,e){var i;for(const s in(i=r.feature)==null?void 0:i.properties){let o=r.feature.properties[s],u=r.keycache[s];if(o==null)continue;u===void 0&&(r.keys.push(s),u=r.keys.length-1,r.keycache[s]=u),e.writeVarint(u),typeof o!="string"&&typeof o!="boolean"&&typeof o!="number"&&(o=JSON.stringify(o));const h=typeof o+":"+o;let f=r.valuecache[h];f===void 0&&(r.values.push(o),f=r.values.length-1,r.valuecache[h]=f),e.writeVarint(f)}}function sd(r,e){return(e<<3)+(7&r)}function vf(r){return r<<1^r>>31}function v_(r,e){const i=r.loadGeometry(),s=r.type;let o=0,u=0;for(const h of i){let f=1;s===1&&(f=h.length),e.writeVarint(sd(1,f));const g=s===3?h.length-1:h.length;for(let y=0;y<g;y++){y===1&&s!==1&&e.writeVarint(sd(2,g-1));const v=h[y].x-o,b=h[y].y-u;e.writeVarint(vf(v)),e.writeVarint(vf(b)),o+=v,u+=b}r.type===3&&e.writeVarint(sd(7,1))}}function b_(r,e){const i=typeof r;i==="string"?e.writeStringField(1,r):i==="boolean"?e.writeBooleanField(7,r):i==="number"&&(r%1!=0?e.writeDoubleField(3,r):r<0?e.writeSVarintField(6,r):e.writeVarintField(5,r))}class bf{constructor(e,i){this.tileID=e,this.x=e.canonical.x,this.y=e.canonical.y,this.z=e.canonical.z,this.grid=new dn(ht,16,0),this.grid3D=new dn(ht,16,0),this.featureIndexArray=new z,this.promoteId=i}insert(e,i,s,o,u,h){const f=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(s,o,u);const g=h?this.grid3D:this.grid;for(let y=0;y<i.length;y++){const v=i[y],b=[1/0,1/0,-1/0,-1/0];for(let S=0;S<v.length;S++){const P=v[S];b[0]=Math.min(b[0],P.x),b[1]=Math.min(b[1],P.y),b[2]=Math.max(b[2],P.x),b[3]=Math.max(b[3],P.y)}b[0]<ht&&b[1]<ht&&b[2]>=0&&b[3]>=0&&g.insert(f,b[0],b[1],b[2],b[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=this.encoding!=="mlt"?new sp(new Tu(this.rawTileData)).layers:new xf(this.rawTileData).layers,this.sourceLayerCoder=new Up(this.vtLayers?Object.keys(this.vtLayers).sort():[rc])),this.vtLayers}query(e,i,s,o){this.loadVTLayers();const u=e.params,h=ht/e.tileSize/e.scale,f=fa(u.filter,u.globalState),g=e.queryGeometry,y=e.queryPadding*h,v=Fa.fromPoints(g),b=this.grid.query(v.minX-y,v.minY-y,v.maxX+y,v.maxY+y),S=Fa.fromPoints(e.cameraQueryGeometry).expandBy(y),P=this.grid3D.query(S.minX,S.minY,S.maxX,S.maxY,(R,V,q,O)=>function(j,Y,ie,ue,be){for(const Ie of j)if(Y<=Ie.x&&ie<=Ie.y&&ue>=Ie.x&&be>=Ie.y)return!0;const Te=[new Pe(Y,ie),new Pe(Y,be),new Pe(ue,be),new Pe(ue,ie)];if(j.length>2){for(const Ie of Te)if(zo(j,Ie))return!0}for(let Ie=0;Ie<j.length-1;Ie++)if(Tm(j[Ie],j[Ie+1],Te))return!0;return!1}(e.cameraQueryGeometry,R-y,V-y,q+y,O+y));for(const R of P)b.push(R);b.sort(w_);const C={};let D;for(let R=0;R<b.length;R++){const V=b[R];if(V===D)continue;D=V;const q=this.featureIndexArray.get(V);let O=null;this.loadMatchingFeature(C,q.bucketIndex,q.sourceLayerIndex,q.featureIndex,f,u.layers,u.availableImages,i,s,o,(j,Y,ie)=>(O||(O=ur(j)),Y.queryIntersectsFeature({queryGeometry:g,feature:j,featureState:ie,geometry:O,zoom:this.z,transform:e.transform,pixelsToTileUnits:h,pixelPosMatrix:e.pixelPosMatrix,unwrappedTileID:this.tileID.toUnwrapped(),getElevation:e.getElevation})))}return C}loadMatchingFeature(e,i,s,o,u,h,f,g,y,v,b){const S=this.bucketLayerIDs[i];if(h&&!S.some(R=>h.has(R)))return;const P=this.sourceLayerCoder.decode(s),C=this.vtLayers[P].feature(o);if(u.needGeometry){const R=Bn(C,!0);if(!u.filter(new Pt(this.tileID.overscaledZ),R,this.tileID.canonical))return}else if(!u.filter(new Pt(this.tileID.overscaledZ),C))return;const D=this.getId(C,P);for(let R=0;R<S.length;R++){const V=S[R];if(h&&!h.has(V))continue;const q=g[V];if(!q)continue;let O={};D&&v&&(O=v.getState(q.sourceLayer||rc,D));const j=_i({},y[V]);j.paint=wf(j.paint,q.paint,C,O,f),j.layout=wf(j.layout,q.layout,C,O,f);const Y=!b||b(C,q,O);if(!Y)continue;const ie=new Gp(C,this.z,this.x,this.y,D);ie.layer=j;let ue=e[V];ue===void 0&&(ue=e[V]=[]),ue.push({featureIndex:o,feature:ie,intersectionZ:Y})}}lookupSymbolFeatures(e,i,s,o,u,h,f,g){const y={};this.loadVTLayers();const v=fa(u.filterSpec,u.globalState);for(const b of e)this.loadMatchingFeature(y,s,o,b,v,h,f,g,i);return y}hasLayer(e){for(const i of this.bucketLayerIDs)for(const s of i)if(e===s)return!0;return!1}getId(e,i){var s;let o=e.id;return this.promoteId&&(o=e.properties[typeof this.promoteId=="string"?this.promoteId:this.promoteId[i]],typeof o=="boolean"&&(o=Number(o)),o===void 0&&(!((s=e.properties)===null||s===void 0)&&s.cluster)&&this.promoteId&&(o=Number(e.properties.cluster_id))),o}}function wf(r,e,i,s,o){return tn(r,(u,h)=>{const f=e instanceof Ma?e.get(h):null;return f&&f.evaluate?f.evaluate(i,s,o):f})}function w_(r,e){return e-r}function Tf(r,e,i,s,o){const u=[];for(let h=0;h<r.length;h++){const f=r[h];let g;for(let y=0;y<f.length-1;y++){let v=f[y],b=f[y+1];v.x<e&&b.x<e||(v.x<e?v=new Pe(e,v.y+(e-v.x)/(b.x-v.x)*(b.y-v.y))._round():b.x<e&&(b=new Pe(e,v.y+(e-v.x)/(b.x-v.x)*(b.y-v.y))._round()),v.y<i&&b.y<i||(v.y<i?v=new Pe(v.x+(i-v.y)/(b.y-v.y)*(b.x-v.x),i)._round():b.y<i&&(b=new Pe(v.x+(i-v.y)/(b.y-v.y)*(b.x-v.x),i)._round()),v.x>=s&&b.x>=s||(v.x>=s?v=new Pe(s,v.y+(s-v.x)/(b.x-v.x)*(b.y-v.y))._round():b.x>=s&&(b=new Pe(s,v.y+(s-v.x)/(b.x-v.x)*(b.y-v.y))._round()),v.y>=o&&b.y>=o||(v.y>=o?v=new Pe(v.x+(o-v.y)/(b.y-v.y)*(b.x-v.x),o)._round():b.y>=o&&(b=new Pe(v.x+(o-v.y)/(b.y-v.y)*(b.x-v.x),o)._round()),g&&v.equals(g[g.length-1])||(g=[v],u.push(g)),g.push(b)))))}}return u}function Sf(r,e,i,s,o){switch(e){case 1:return function(u,h,f,g){const y=[];for(const v of u)for(const b of v){const S=g===0?b.x:b.y;S>=h&&S<=f&&y.push([b])}return y}(r,i,s,o);case 2:return Pf(r,i,s,o,!1);case 3:return Pf(r,i,s,o,!0)}return[]}function T_(r,e,i,s,o){const u=s===0?S_:P_;let h=[];const f=[];for(let v=0;v<r.length-1;v++){const b=r[v],S=r[v+1],P=s===0?b.x:b.y,C=s===0?S.x:S.y;let D=!1;P<e?C>e&&h.push(u(b,S,e)):P>i?C<i&&h.push(u(b,S,i)):h.push(b),C<e&&P>=e&&(h.push(u(b,S,e)),D=!0),C>i&&P<=i&&(h.push(u(b,S,i)),D=!0),!o&&D&&(f.push(h),h=[])}const g=r.length-1,y=s===0?r[g].x:r[g].y;return y>=e&&y<=i&&h.push(r[g]),o&&h.length>0&&!h[0].equals(h[h.length-1])&&h.push(new Pe(h[0].x,h[0].y)),h.length>0&&f.push(h),f}function Pf(r,e,i,s,o){const u=[];for(const h of r){const f=T_(h,e,i,s,o);f.length>0&&u.push(...f)}return u}function S_(r,e,i){return new Pe(i,r.y+(i-r.x)/(e.x-r.x)*(e.y-r.y))}function P_(r,e,i){return new Pe(r.x+(i-r.y)/(e.y-r.y)*(e.x-r.x),i)}Fe("FeatureIndex",bf,{omit:["rawTileData","sourceLayerCoder"]});class Ns extends Pe{constructor(e,i,s,o){super(e,i),this.angle=s,o!==void 0&&(this.segment=o)}clone(){return new Ns(this.x,this.y,this.angle,this.segment)}}function Mf(r,e,i,s,o){if(e.segment===void 0||i===0)return!0;let u=e,h=e.segment+1,f=0;for(;f>-i/2;){if(h--,h<0)return!1;f-=r[h].dist(u),u=r[h]}f+=r[h].dist(r[h+1]),h++;const g=[];let y=0;for(;f<i/2;){const v=r[h],b=r[h+1];if(!b)return!1;let S=r[h-1].angleTo(v)-v.angleTo(b);for(S=Math.abs((S+3*Math.PI)%(2*Math.PI)-Math.PI),g.push({distance:f,angleDelta:S}),y+=S;f-g[0].distance>s;)y-=g.shift().angleDelta;if(y>o)return!1;h++,f+=v.dist(b)}return!0}function If(r){let e=0;for(let i=0;i<r.length-1;i++)e+=r[i].dist(r[i+1]);return e}function Ef(r,e,i){return r?.6*e*i:0}function Cf(r,e){return Math.max(r?r.right-r.left:0,e?e.right-e.left:0)}function M_(r,e,i,s,o,u){const h=Ef(i,o,u),f=Cf(i,s)*u;let g=0;const y=If(r)/2;for(let v=0;v<r.length-1;v++){const b=r[v],S=r[v+1],P=b.dist(S);if(g+P>y){const C=(y-g)/P,D=xi.number(b.x,S.x,C),R=xi.number(b.y,S.y,C),V=new Ns(D,R,S.angleTo(b),v);return V._round(),!h||Mf(r,V,f,h,e)?V:void 0}g+=P}}function I_(r,e,i,s,o,u,h,f,g){const y=Ef(s,u,h),v=Cf(s,o),b=v*h,S=r[0].x===0||r[0].x===g||r[0].y===0||r[0].y===g;return e-b<e/4&&(e=b+e/4),Af(r,S?e/2*f%e:(v/2+2*u)*h*f%e,e,y,i,b,S,!1,g)}function Af(r,e,i,s,o,u,h,f,g){const y=u/2,v=If(r);let b=0,S=e-i,P=[];for(let C=0;C<r.length-1;C++){const D=r[C],R=r[C+1],V=D.dist(R),q=R.angleTo(D);for(;S+i<b+V;){S+=i;const O=(S-b)/V,j=xi.number(D.x,R.x,O),Y=xi.number(D.y,R.y,O);if(j>=0&&j<g&&Y>=0&&Y<g&&S-y>=0&&S+y<=v){const ie=new Ns(j,Y,q,C);ie._round(),s&&!Mf(r,ie,u,s,o)||P.push(ie)}}b+=V}return f||P.length||h||(P=Af(r,b/2,i,s,o,u,h,!0,g)),P}function Df(r,e,i,s){const o=[],u=r.image,h=u.pixelRatio,f=u.paddedRect.w-2,g=u.paddedRect.h-2;let y={x1:r.left,y1:r.top,x2:r.right,y2:r.bottom};const v=u.stretchX||[[0,f]],b=u.stretchY||[[0,g]],S=(ye,Be)=>ye+Be[1]-Be[0],P=v.reduce(S,0),C=b.reduce(S,0),D=f-P,R=g-C;let V=0,q=P,O=0,j=C,Y=0,ie=D,ue=0,be=R;if(u.content&&s){const ye=u.content,Be=ye[2]-ye[0],Oe=ye[3]-ye[1];(u.textFitWidth||u.textFitHeight)&&(y=Pp(r)),V=Lu(v,0,ye[0]),O=Lu(b,0,ye[1]),q=Lu(v,ye[0],ye[2]),j=Lu(b,ye[1],ye[3]),Y=ye[0]-V,ue=ye[1]-O,ie=Be-q,be=Oe-j}const Te=y.x1,Ie=y.y1,ke=y.x2-Te,Ee=y.y2-Ie,Se=(ye,Be,Oe,qe)=>{const je=Fu(ye.stretch-V,q,ke,Te),lt=Bu(ye.fixed-Y,ie,ye.stretch,P),Bt=Fu(Be.stretch-O,j,Ee,Ie),si=Bu(Be.fixed-ue,be,Be.stretch,C),Di=Fu(Oe.stretch-V,q,ke,Te),Hr=Bu(Oe.fixed-Y,ie,Oe.stretch,P),Yi=Fu(qe.stretch-O,j,Ee,Ie),bi=Bu(qe.fixed-ue,be,qe.stretch,C),zi=new Pe(je,Bt),Qt=new Pe(Di,Bt),wi=new Pe(Di,Yi),Ni=new Pe(je,Yi),Ui=new Pe(lt/h,si/h),dr=new Pe(Hr/h,bi/h),ki=e*Math.PI/180;if(ki){const mi=Math.sin(ki),Ut=Math.cos(ki),ai=[Ut,-mi,mi,Ut];zi._matMult(ai),Qt._matMult(ai),Ni._matMult(ai),wi._matMult(ai)}const pr=ye.stretch+ye.fixed,Xr=Be.stretch+Be.fixed;return{tl:zi,tr:Qt,bl:Ni,br:wi,tex:{x:u.paddedRect.x+1+pr,y:u.paddedRect.y+1+Xr,w:Oe.stretch+Oe.fixed-pr,h:qe.stretch+qe.fixed-Xr},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:Ui,pixelOffsetBR:dr,minFontScaleX:ie/h/ke,minFontScaleY:be/h/Ee,isSDF:i}};if(s&&(u.stretchX||u.stretchY)){const ye=zf(v,D,P),Be=zf(b,R,C);for(let Oe=0;Oe<ye.length-1;Oe++){const qe=ye[Oe],je=ye[Oe+1];for(let lt=0;lt<Be.length-1;lt++)o.push(Se(qe,Be[lt],je,Be[lt+1]))}}else o.push(Se({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:f+1},{fixed:0,stretch:g+1}));return o}function Lu(r,e,i){let s=0;for(const o of r)s+=Math.max(e,Math.min(i,o[1]))-Math.max(e,Math.min(i,o[0]));return s}function zf(r,e,i){const s=[{fixed:-1,stretch:0}];for(const[o,u]of r){const h=s[s.length-1];s.push({fixed:o-h.stretch,stretch:h.stretch}),s.push({fixed:o-h.stretch,stretch:h.stretch+(u-o)})}return s.push({fixed:e+1,stretch:i}),s}function Fu(r,e,i,s){return r/e*i+s}function Bu(r,e,i,s){return r-e*i/s}Fe("Anchor",Ns);class Ou{constructor(e,i,s,o,u,h,f,g,y,v){var b;if(this.boxStartIndex=e.length,y){let S=h.top,P=h.bottom;const C=h.collisionPadding;C&&(S-=C[1],P+=C[3]);let D=P-S;D>0&&(D=Math.max(10,D),this.circleDiameter=D)}else{const S=!((b=h.image)===null||b===void 0)&&b.content&&(h.image.textFitWidth||h.image.textFitHeight)?Pp(h):{x1:h.left,y1:h.top,x2:h.right,y2:h.bottom};S.y1=S.y1*f-g[0],S.y2=S.y2*f+g[2],S.x1=S.x1*f-g[3],S.x2=S.x2*f+g[1];const P=h.collisionPadding;if(P&&(S.x1-=P[0]*f,S.y1-=P[1]*f,S.x2+=P[2]*f,S.y2+=P[3]*f),v){const C=new Pe(S.x1,S.y1),D=new Pe(S.x2,S.y1),R=new Pe(S.x1,S.y2),V=new Pe(S.x2,S.y2),q=v*Math.PI/180;C._rotate(q),D._rotate(q),R._rotate(q),V._rotate(q),S.x1=Math.min(C.x,D.x,R.x,V.x),S.x2=Math.max(C.x,D.x,R.x,V.x),S.y1=Math.min(C.y,D.y,R.y,V.y),S.y2=Math.max(C.y,D.y,R.y,V.y)}e.emplaceBack(i.x,i.y,S.x1,S.y1,S.x2,S.y2,s,o,u)}this.boxEndIndex=e.length}}class E_{constructor(e=[],i=(s,o)=>s<o?-1:s>o?1:0){if(this.data=e,this.length=this.data.length,this.compare=i,this.length>0)for(let s=(this.length>>1)-1;s>=0;s--)this._down(s)}push(e){this.data.push(e),this._up(this.length++)}pop(){if(this.length===0)return;const e=this.data[0],i=this.data.pop();return--this.length>0&&(this.data[0]=i,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:i,compare:s}=this,o=i[e];for(;e>0;){const u=e-1>>1,h=i[u];if(s(o,h)>=0)break;i[e]=h,e=u}i[e]=o}_down(e){const{data:i,compare:s}=this,o=this.length>>1,u=i[e];for(;e<o;){let h=1+(e<<1);const f=h+1;if(f<this.length&&s(i[f],i[h])<0&&(h=f),s(i[h],u)>=0)break;i[e]=i[h],e=h}i[e]=u}}function C_(r,e=1,i=!1){const s=Fa.fromPoints(r[0]),o=Math.min(s.width(),s.height());let u=o/2;const h=new E_([],A_),{minX:f,minY:g,maxX:y,maxY:v}=s;if(o===0)return new Pe(f,g);for(let P=f;P<y;P+=o)for(let C=g;C<v;C+=o)h.push(new Zo(P+u,C+u,u,r));let b=function(P){let C=0,D=0,R=0;const V=P[0];for(let q=0,O=V.length,j=O-1;q<O;j=q++){const Y=V[q],ie=V[j],ue=Y.x*ie.y-ie.x*Y.y;D+=(Y.x+ie.x)*ue,R+=(Y.y+ie.y)*ue,C+=3*ue}return new Zo(D/C,R/C,0,P)}(r),S=h.length;for(;h.length;){const P=h.pop();(P.d>b.d||!b.d)&&(b=P,i&&console.log("found best %d after %d probes",Math.round(1e4*P.d)/1e4,S)),P.max-b.d<=e||(u=P.h/2,h.push(new Zo(P.p.x-u,P.p.y-u,u,r)),h.push(new Zo(P.p.x+u,P.p.y-u,u,r)),h.push(new Zo(P.p.x-u,P.p.y+u,u,r)),h.push(new Zo(P.p.x+u,P.p.y+u,u,r)),S+=4)}return i&&(console.log(`num probes: ${S}`),console.log(`best distance: ${b.d}`)),b.p}function A_(r,e){return e.max-r.max}function Zo(r,e,i,s){this.p=new Pe(r,e),this.h=i,this.d=function(o,u){let h=!1,f=1/0;for(let g=0;g<u.length;g++){const y=u[g];for(let v=0,b=y.length,S=b-1;v<b;S=v++){const P=y[v],C=y[S];P.y>o.y!=C.y>o.y&&o.x<(C.x-P.x)*(o.y-P.y)/(C.y-P.y)+P.x&&(h=!h),f=Math.min(f,Rd(o,P,C))}}return(h?1:-1)*Math.sqrt(f)}(this.p,s),this.max=this.d+this.h*Math.SQRT2}var Ai;E.aP=void 0,(Ai=E.aP||(E.aP={}))[Ai.center=1]="center",Ai[Ai.left=2]="left",Ai[Ai.right=3]="right",Ai[Ai.top=4]="top",Ai[Ai.bottom=5]="bottom",Ai[Ai["top-left"]=6]="top-left",Ai[Ai["top-right"]=7]="top-right",Ai[Ai["bottom-left"]=8]="bottom-left",Ai[Ai["bottom-right"]=9]="bottom-right";const ad=Number.POSITIVE_INFINITY;function kf(r,e){return e[1]!==ad?function(i,s,o){let u=0,h=0;switch(s=Math.abs(s),o=Math.abs(o),i){case"top-right":case"top-left":case"top":h=o-7;break;case"bottom-right":case"bottom-left":case"bottom":h=7-o}switch(i){case"top-right":case"bottom-right":case"right":u=-s;break;case"top-left":case"bottom-left":case"left":u=s}return[u,h]}(r,e[0],e[1]):function(i,s){let o=0,u=0;s<0&&(s=0);const h=s/Math.SQRT2;switch(i){case"top-right":case"top-left":u=h-7;break;case"bottom-right":case"bottom-left":u=7-h;break;case"bottom":u=7-s;break;case"top":u=s-7}switch(i){case"top-right":case"bottom-right":o=-h;break;case"top-left":case"bottom-left":o=h;break;case"left":o=s;break;case"right":o=-s}return[o,u]}(r,e[0])}function Rf(r,e,i){var s;const o=r.layout,u=(s=o.get("text-variable-anchor-offset"))===null||s===void 0?void 0:s.evaluate(e,{},i);if(u){const f=u.values,g=[];for(let y=0;y<f.length;y+=2){const v=g[y]=f[y],b=f[y+1].map(S=>S*pi);v.startsWith("top")?b[1]-=7:v.startsWith("bottom")&&(b[1]+=7),g[y+1]=b}return new ei(g)}const h=o.get("text-variable-anchor");if(h){let f;f=r._unevaluatedLayout.getValue("text-radial-offset")!==void 0?[o.get("text-radial-offset").evaluate(e,{},i)*pi,ad]:o.get("text-offset").evaluate(e,{},i).map(y=>y*pi);const g=[];for(const y of h)g.push(y,kf(y,f));return new ei(g)}return null}function od(r){switch(r){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function D_(r,e,i,s,o,u,h,f,g,y,v,b){let S=u.textMaxSize.evaluate(e,{});S===void 0&&(S=h);const P=r.layers[0].layout,C=P.get("icon-offset").evaluate(e,{},v),D=Ff(i.horizontal),R=h/24,V=r.tilePixelRatio*R,q=r.tilePixelRatio*S/24,O=r.tilePixelRatio*f,j=r.tilePixelRatio*P.get("symbol-spacing"),Y=P.get("text-padding")*r.tilePixelRatio,ie=function(Oe,qe,je,lt=1){const Bt=Oe.get("icon-padding").evaluate(qe,{},je),si=Bt&&Bt.values;return[si[0]*lt,si[1]*lt,si[2]*lt,si[3]*lt]}(P,e,v,r.tilePixelRatio),ue=P.get("text-max-angle")/180*Math.PI,be=P.get("text-rotation-alignment")!=="viewport"&&P.get("symbol-placement")!=="point",Te=P.get("icon-rotation-alignment")==="map"&&P.get("symbol-placement")!=="point",Ie=P.get("symbol-placement"),ke=j/2,Ee=P.get("icon-text-fit");let Se;s&&Ee!=="none"&&(r.allowVerticalPlacement&&i.vertical&&(Se=Mp(s,i.vertical,Ee,P.get("icon-text-fit-padding"),C,R)),D&&(s=Mp(s,D,Ee,P.get("icon-text-fit-padding"),C,R)));const ye=v?b.line.getGranularityForZoomLevel(v.z):1,Be=(Oe,qe)=>{qe.x<0||qe.x>=ht||qe.y<0||qe.y>=ht||function(je,lt,Bt,si,Di,Hr,Yi,bi,zi,Qt,wi,Ni,Ui,dr,ki,pr,Xr,mi,Ut,ai,Wt,gi,cs,vn,ac){const Us=je.addToLineVertexArray(lt,Bt);let Oa,$o,Wo,Ho,jf=0,Nf=0,Uf=0,Gf=0,md=-1,gd=-1;const us={};let qf=qt("");if(je.allowVerticalPlacement&&si.vertical){const Gi=bi.layout.get("text-rotate").evaluate(Wt,{},vn)+90;Wo=new Ou(zi,lt,Qt,wi,Ni,si.vertical,Ui,dr,ki,Gi),Yi&&(Ho=new Ou(zi,lt,Qt,wi,Ni,Yi,Xr,mi,ki,Gi))}if(Di){const Gi=bi.layout.get("icon-rotate").evaluate(Wt,{}),Fr=bi.layout.get("icon-text-fit")!=="none",Va=Df(Di,Gi,cs,Fr),wn=Yi?Df(Yi,Gi,cs,Fr):void 0;$o=new Ou(zi,lt,Qt,wi,Ni,Di,Xr,mi,!1,Gi),jf=4*Va.length;const ja=je.iconSizeData;let On=null;ja.kind==="source"?(On=[ls*bi.layout.get("icon-size").evaluate(Wt,{})],On[0]>Bs&&Mi(`${je.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)):ja.kind==="composite"&&(On=[ls*gi.compositeIconSizes[0].evaluate(Wt,{},vn),ls*gi.compositeIconSizes[1].evaluate(Wt,{},vn)],(On[0]>Bs||On[1]>Bs)&&Mi(`${je.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)),je.addSymbols(je.icon,Va,On,ai,Ut,Wt,E.az.none,lt,Us.lineStartIndex,Us.lineLength,-1,vn),md=je.icon.placedSymbolArray.length-1,wn&&(Nf=4*wn.length,je.addSymbols(je.icon,wn,On,ai,Ut,Wt,E.az.vertical,lt,Us.lineStartIndex,Us.lineLength,-1,vn),gd=je.icon.placedSymbolArray.length-1)}const Zf=Object.keys(si.horizontal);for(const Gi of Zf){const Fr=si.horizontal[Gi];if(!Oa){qf=qt(Fr.text);const wn=bi.layout.get("text-rotate").evaluate(Wt,{},vn);Oa=new Ou(zi,lt,Qt,wi,Ni,Fr,Ui,dr,ki,wn)}const Va=Fr.positionedLines.length===1;if(Uf+=Lf(je,lt,Fr,Hr,bi,ki,Wt,pr,Us,si.vertical?E.az.horizontal:E.az.horizontalOnly,Va?Zf:[Gi],us,md,gi,vn),Va)break}si.vertical&&(Gf+=Lf(je,lt,si.vertical,Hr,bi,ki,Wt,pr,Us,E.az.vertical,["vertical"],us,gd,gi,vn));const R_=Oa?Oa.boxStartIndex:je.collisionBoxArray.length,L_=Oa?Oa.boxEndIndex:je.collisionBoxArray.length,F_=Wo?Wo.boxStartIndex:je.collisionBoxArray.length,B_=Wo?Wo.boxEndIndex:je.collisionBoxArray.length,O_=$o?$o.boxStartIndex:je.collisionBoxArray.length,V_=$o?$o.boxEndIndex:je.collisionBoxArray.length,j_=Ho?Ho.boxStartIndex:je.collisionBoxArray.length,N_=Ho?Ho.boxEndIndex:je.collisionBoxArray.length;let bn=-1;const ju=(Gi,Fr)=>Gi&&Gi.circleDiameter?Math.max(Gi.circleDiameter,Fr):Fr;bn=ju(Oa,bn),bn=ju(Wo,bn),bn=ju($o,bn),bn=ju(Ho,bn);const $f=bn>-1?1:0;$f&&(bn*=ac/pi),je.glyphOffsetArray.length>=Vo.MAX_GLYPHS&&Mi("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),Wt.sortKey!==void 0&&je.addToSortKeyRanges(je.symbolInstances.length,Wt.sortKey);const U_=Rf(bi,Wt,vn),[G_,q_]=function(Gi,Fr){const Va=Gi.length,wn=Fr==null?void 0:Fr.values;if((wn==null?void 0:wn.length)>0)for(let ja=0;ja<wn.length;ja+=2){const On=wn[ja+1];Gi.emplaceBack(E.aP[wn[ja]],On[0],On[1])}return[Va,Gi.length]}(je.textAnchorOffsets,U_);je.symbolInstances.emplaceBack(lt.x,lt.y,us.right>=0?us.right:-1,us.center>=0?us.center:-1,us.left>=0?us.left:-1,us.vertical||-1,md,gd,qf,R_,L_,F_,B_,O_,V_,j_,N_,Qt,Uf,Gf,jf,Nf,$f,0,Ui,bn,G_,q_)}(r,qe,Oe,i,s,o,Se,r.layers[0],r.collisionBoxArray,e.index,e.sourceLayerIndex,r.index,V,[Y,Y,Y,Y],be,g,O,ie,Te,C,e,u,y,v,h)};if(Ie==="line")for(const Oe of Tf(e.geometry,0,0,ht,ht)){const qe=La(Oe,ye),je=I_(qe,j,ue,i.vertical||D,s,24,q,r.overscaling,ht);for(const lt of je)D&&z_(r,D.text,ke,lt)||Be(qe,lt)}else if(Ie==="line-center"){for(const Oe of e.geometry)if(Oe.length>1){const qe=La(Oe,ye),je=M_(qe,ue,i.vertical||D,s,24,q);je&&Be(qe,je)}}else if(e.type==="Polygon")for(const Oe of aa(e.geometry,0)){const qe=C_(Oe,16);Be(La(Oe[0],ye,!0),new Ns(qe.x,qe.y,0))}else if(e.type==="LineString")for(const Oe of e.geometry){const qe=La(Oe,ye);Be(qe,new Ns(qe[0].x,qe[0].y,0))}else if(e.type==="Point")for(const Oe of e.geometry)for(const qe of Oe)Be([qe],new Ns(qe.x,qe.y,0))}function Lf(r,e,i,s,o,u,h,f,g,y,v,b,S,P,C){const D=function(q,O,j,Y,ie,ue,be,Te){const Ie=Y.layout.get("text-rotate").evaluate(ue,{})*Math.PI/180,ke=[];for(const Ee of O.positionedLines)for(const Se of Ee.positionedGlyphs){if(!Se.rect)continue;const ye=Se.rect||{};let Be=4,Oe=!0,qe=1,je=0;const lt=(ie||Te)&&Se.vertical,Bt=Se.metrics.advance*Se.scale/2;if(Te&&O.verticalizable&&(je=Ee.lineOffset/2-(Se.imageName?-(pi-Se.metrics.width*Se.scale)/2:(Se.scale-1)*pi)),Se.imageName){const mi=be[Se.imageName];Oe=mi.sdf,qe=mi.pixelRatio,Be=1/qe}const si=ie?[Se.x+Bt,Se.y]:[0,0];let Di=ie?[0,0]:[Se.x+Bt+j[0],Se.y+j[1]-je],Hr=[0,0];lt&&(Hr=Di,Di=[0,0]);const Yi=Se.metrics.isDoubleResolution?2:1,bi=(Se.metrics.left-Be)*Se.scale-Bt+Di[0],zi=(-Se.metrics.top-Be)*Se.scale+Di[1],Qt=bi+ye.w/Yi*Se.scale/qe,wi=zi+ye.h/Yi*Se.scale/qe,Ni=new Pe(bi,zi),Ui=new Pe(Qt,zi),dr=new Pe(bi,wi),ki=new Pe(Qt,wi);if(lt){const mi=new Pe(-Bt,Bt- -17),Ut=-Math.PI/2,ai=12-Bt,Wt=new Pe(22-ai,-(Se.imageName?ai:0)),gi=new Pe(...Hr);Ni._rotateAround(Ut,mi)._add(Wt)._add(gi),Ui._rotateAround(Ut,mi)._add(Wt)._add(gi),dr._rotateAround(Ut,mi)._add(Wt)._add(gi),ki._rotateAround(Ut,mi)._add(Wt)._add(gi)}if(Ie){const mi=Math.sin(Ie),Ut=Math.cos(Ie),ai=[Ut,-mi,mi,Ut];Ni._matMult(ai),Ui._matMult(ai),dr._matMult(ai),ki._matMult(ai)}const pr=new Pe(0,0),Xr=new Pe(0,0);ke.push({tl:Ni,tr:Ui,bl:dr,br:ki,tex:ye,writingMode:O.writingMode,glyphOffset:si,sectionIndex:Se.sectionIndex,isSDF:Oe,pixelOffsetTL:pr,pixelOffsetBR:Xr,minFontScaleX:0,minFontScaleY:0})}return ke}(0,i,f,o,u,h,s,r.allowVerticalPlacement),R=r.textSizeData;let V=null;R.kind==="source"?(V=[ls*o.layout.get("text-size").evaluate(h,{})],V[0]>Bs&&Mi(`${r.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)):R.kind==="composite"&&(V=[ls*P.compositeTextSizes[0].evaluate(h,{},C),ls*P.compositeTextSizes[1].evaluate(h,{},C)],(V[0]>Bs||V[1]>Bs)&&Mi(`${r.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)),r.addSymbols(r.text,D,V,f,u,h,y,e,g.lineStartIndex,g.lineLength,S,C);for(const q of v)b[q]=r.text.placedSymbolArray.length-1;return 4*D.length}function Ff(r){for(const e in r)return r[e];return null}function z_(r,e,i,s){const o=r.compareText;if(e in o){const u=o[e];for(let h=u.length-1;h>=0;h--)if(s.dist(u[h])<i)return!0}else o[e]=[];return o[e].push(s),!1}const Bf=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class ld{static from(e){if(!(e instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");const[i,s]=new Uint8Array(e,0,2);if(i!==219)throw new Error("Data does not appear to be in a KDBush format.");const o=s>>4;if(o!==1)throw new Error(`Got v${o} data when expected v1.`);const u=Bf[15&s];if(!u)throw new Error("Unrecognized array type.");const[h]=new Uint16Array(e,2,1),[f]=new Uint32Array(e,4,1);return new ld(f,h,u,e)}constructor(e,i=64,s=Float64Array,o){if(isNaN(e)||e<0)throw new Error(`Unpexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+i,2),65535),this.ArrayType=s,this.IndexArrayType=e<65536?Uint16Array:Uint32Array;const u=Bf.indexOf(this.ArrayType),h=2*e*this.ArrayType.BYTES_PER_ELEMENT,f=e*this.IndexArrayType.BYTES_PER_ELEMENT,g=(8-f%8)%8;if(u<0)throw new Error(`Unexpected typed array class: ${s}.`);o&&o instanceof ArrayBuffer?(this.data=o,this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+f+g,2*e),this._pos=2*e,this._finished=!0):(this.data=new ArrayBuffer(8+h+f+g),this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+f+g,2*e),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+u]),new Uint16Array(this.data,2,1)[0]=i,new Uint32Array(this.data,4,1)[0]=e)}add(e,i){const s=this._pos>>1;return this.ids[s]=s,this.coords[this._pos++]=e,this.coords[this._pos++]=i,s}finish(){const e=this._pos>>1;if(e!==this.numItems)throw new Error(`Added ${e} items when expected ${this.numItems}.`);return cd(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(e,i,s,o){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:u,coords:h,nodeSize:f}=this,g=[0,u.length-1,0],y=[];for(;g.length;){const v=g.pop()||0,b=g.pop()||0,S=g.pop()||0;if(b-S<=f){for(let R=S;R<=b;R++){const V=h[2*R],q=h[2*R+1];V>=e&&V<=s&&q>=i&&q<=o&&y.push(u[R])}continue}const P=S+b>>1,C=h[2*P],D=h[2*P+1];C>=e&&C<=s&&D>=i&&D<=o&&y.push(u[P]),(v===0?e<=C:i<=D)&&(g.push(S),g.push(P-1),g.push(1-v)),(v===0?s>=C:o>=D)&&(g.push(P+1),g.push(b),g.push(1-v))}return y}within(e,i,s){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:o,coords:u,nodeSize:h}=this,f=[0,o.length-1,0],g=[],y=s*s;for(;f.length;){const v=f.pop()||0,b=f.pop()||0,S=f.pop()||0;if(b-S<=h){for(let R=S;R<=b;R++)Vf(u[2*R],u[2*R+1],e,i)<=y&&g.push(o[R]);continue}const P=S+b>>1,C=u[2*P],D=u[2*P+1];Vf(C,D,e,i)<=y&&g.push(o[P]),(v===0?e-s<=C:i-s<=D)&&(f.push(S),f.push(P-1),f.push(1-v)),(v===0?e+s>=C:i+s>=D)&&(f.push(P+1),f.push(b),f.push(1-v))}return g}}function cd(r,e,i,s,o,u){if(o-s<=i)return;const h=s+o>>1;Of(r,e,h,s,o,u),cd(r,e,i,s,h-1,1-u),cd(r,e,i,h+1,o,1-u)}function Of(r,e,i,s,o,u){for(;o>s;){if(o-s>600){const y=o-s+1,v=i-s+1,b=Math.log(y),S=.5*Math.exp(2*b/3),P=.5*Math.sqrt(b*S*(y-S)/y)*(v-y/2<0?-1:1);Of(r,e,i,Math.max(s,Math.floor(i-v*S/y+P)),Math.min(o,Math.floor(i+(y-v)*S/y+P)),u)}const h=e[2*i+u];let f=s,g=o;for(nc(r,e,s,i),e[2*o+u]>h&&nc(r,e,s,o);f<g;){for(nc(r,e,f,g),f++,g--;e[2*f+u]<h;)f++;for(;e[2*g+u]>h;)g--}e[2*s+u]===h?nc(r,e,s,g):(g++,nc(r,e,g,o)),g<=i&&(s=g+1),i<=g&&(o=g-1)}}function nc(r,e,i,s){ud(r,i,s),ud(e,2*i,2*s),ud(e,2*i+1,2*s+1)}function ud(r,e,i){const s=r[e];r[e]=r[i],r[i]=s}function Vf(r,e,i,s){const o=r-i,u=e-s;return o*o+u*u}var hd;E.cI=void 0,(hd=E.cI||(E.cI={})).create="create",hd.load="load",hd.fullLoad="fullLoad";let Vu=null,sc=[];const dd=1e3/60,pd="loadTime",fd="fullLoadTime",k_={mark(r){performance.mark(r)},recordStartOfFrameAt(r){Vu!=null&&sc.push(r-Vu),Vu=r},resetRuntimeMetrics(){Vu=null,sc=[]},clearInitializationMetrics(){performance.clearMeasures(pd),performance.clearMeasures(fd);for(const r in E.cI)performance.clearMarks(E.cI[r])},remove(){this.resetRuntimeMetrics(),this.clearInitializationMetrics()},getPerformanceMetrics(){performance.measure(pd,E.cI.create,E.cI.load),performance.measure(fd,E.cI.create,E.cI.fullLoad);const r=performance.getEntriesByName(pd)[0].duration,e=performance.getEntriesByName(fd)[0].duration,i=sc.length;return{loadTimeMs:r,fullLoadTimeMs:e,averageFramesPerSecond:1/(sc.reduce((s,o)=>s+o,0)/i/1e3),virtualDroppedFramesCount:sc.filter(s=>s>dd).reduce((s,o)=>s+(o-dd)/dd,0),totalFramesCount:i}}};E.$=de,E.A=ct,E.B=Qc,E.C=qr,E.D=Ue,E.E=xe,E.F=function([r,e,i]){return e+=90,e*=Math.PI/180,i*=Math.PI/180,{x:r*Math.cos(e)*Math.sin(i),y:r*Math.sin(e)*Math.sin(i),z:r*Math.cos(i)}},E.G=xi,E.H=Pt,E.I=Rh,E.J=wa,E.K=function(r){if(zt==null){const e=r.navigator?r.navigator.userAgent:null;zt=!!r.safari||!(!e||!(/\b(iPad|iPhone|iPod)\b/.test(e)||e.match("Safari")&&!e.match("Chrome")))}return zt},E.L=class{constructor(r,e){this.target=r,this.mapId=e,this.resolveRejects={},this.tasks={},this.taskQueue=[],this.abortControllers={},this.messageHandlers={},this.invoker=new Hg(()=>this.process()),this.subscription=In(this.target,"message",i=>this.receive(i),!1),this.globalScope=Ur(self)?r:window}registerMessageHandler(r,e){this.messageHandlers[r]=e}unregisterMessageHandler(r){delete this.messageHandlers[r]}sendAsync(r,e){return new Promise((i,s)=>{const o=Math.round(1e18*Math.random()).toString(36).substring(0,10),u=e?In(e.signal,"abort",()=>{u==null||u.unsubscribe(),delete this.resolveRejects[o];const g={id:o,type:"<cancel>",origin:location.origin,targetMapId:r.targetMapId,sourceMapId:this.mapId};this.target.postMessage(g)},Xg):null;this.resolveRejects[o]={resolve:g=>{u==null||u.unsubscribe(),i(g)},reject:g=>{u==null||u.unsubscribe(),s(g)}};const h=[],f=Object.assign(Object.assign({},r),{id:o,sourceMapId:this.mapId,origin:location.origin,data:pn(r.data,h)});this.target.postMessage(f,{transfer:h})})}receive(r){const e=r.data,i=e.id;if(!(e.origin!=="file://"&&location.origin!=="file://"&&e.origin!=="resource://android"&&location.origin!=="resource://android"&&e.origin!==location.origin||e.targetMapId&&this.mapId!==e.targetMapId)){if(e.type==="<cancel>"){delete this.tasks[i];const s=this.abortControllers[i];return delete this.abortControllers[i],void(s&&s.abort())}if(Ur(self)||e.mustQueue)return this.tasks[i]=e,this.taskQueue.push(i),void this.invoker.trigger();this.processTask(i,e)}}process(){if(this.taskQueue.length===0)return;const r=this.taskQueue.shift(),e=this.tasks[r];delete this.tasks[r],this.taskQueue.length>0&&this.invoker.trigger(),e&&this.processTask(r,e)}processTask(r,e){return c(this,void 0,void 0,function*(){if(e.type==="<response>"){const o=this.resolveRejects[r];return delete this.resolveRejects[r],o?void(e.error?o.reject(Sa(e.error)):o.resolve(Sa(e.data))):void 0}if(!this.messageHandlers[e.type])return void this.completeTask(r,new Error(`Could not find a registered handler for ${e.type}, map ID: ${this.mapId}, available handlers: ${Object.keys(this.messageHandlers).join(", ")}`));const i=Sa(e.data),s=new AbortController;this.abortControllers[r]=s;try{const o=yield this.messageHandlers[e.type](e.sourceMapId,i,s);this.completeTask(r,null,o)}catch(o){this.completeTask(r,o)}})}completeTask(r,e,i){const s=[];delete this.abortControllers[r];const o={id:r,type:"<response>",sourceMapId:this.mapId,origin:location.origin,error:e?pn(e):null,data:pn(i,s)};this.target.postMessage(o,{transfer:s})}remove(){this.invoker.remove(),this.subscription.unsubscribe()}},E.M=k,E.N=function(){var r=new ct(16);return ct!=Float32Array&&(r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[11]=0,r[12]=0,r[13]=0,r[14]=0),r[0]=1,r[5]=1,r[10]=1,r[15]=1,r},E.O=function(r,e,i){var s,o,u,h,f,g,y,v,b,S,P,C,D=i[0],R=i[1],V=i[2];return e===r?(r[12]=e[0]*D+e[4]*R+e[8]*V+e[12],r[13]=e[1]*D+e[5]*R+e[9]*V+e[13],r[14]=e[2]*D+e[6]*R+e[10]*V+e[14],r[15]=e[3]*D+e[7]*R+e[11]*V+e[15]):(o=e[1],u=e[2],h=e[3],f=e[4],g=e[5],y=e[6],v=e[7],b=e[8],S=e[9],P=e[10],C=e[11],r[0]=s=e[0],r[1]=o,r[2]=u,r[3]=h,r[4]=f,r[5]=g,r[6]=y,r[7]=v,r[8]=b,r[9]=S,r[10]=P,r[11]=C,r[12]=s*D+f*R+b*V+e[12],r[13]=o*D+g*R+S*V+e[13],r[14]=u*D+y*R+P*V+e[14],r[15]=h*D+v*R+C*V+e[15]),r},E.P=Pe,E.Q=function(r,e,i){var s=i[0],o=i[1],u=i[2];return r[0]=e[0]*s,r[1]=e[1]*s,r[2]=e[2]*s,r[3]=e[3]*s,r[4]=e[4]*o,r[5]=e[5]*o,r[6]=e[6]*o,r[7]=e[7]*o,r[8]=e[8]*u,r[9]=e[9]*u,r[10]=e[10]*u,r[11]=e[11]*u,r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r},E.R=hr,E.S=function(r,e,i){var s=e[0],o=e[1],u=e[2],h=e[3],f=e[4],g=e[5],y=e[6],v=e[7],b=e[8],S=e[9],P=e[10],C=e[11],D=e[12],R=e[13],V=e[14],q=e[15],O=i[0],j=i[1],Y=i[2],ie=i[3];return r[0]=O*s+j*f+Y*b+ie*D,r[1]=O*o+j*g+Y*S+ie*R,r[2]=O*u+j*y+Y*P+ie*V,r[3]=O*h+j*v+Y*C+ie*q,r[4]=(O=i[4])*s+(j=i[5])*f+(Y=i[6])*b+(ie=i[7])*D,r[5]=O*o+j*g+Y*S+ie*R,r[6]=O*u+j*y+Y*P+ie*V,r[7]=O*h+j*v+Y*C+ie*q,r[8]=(O=i[8])*s+(j=i[9])*f+(Y=i[10])*b+(ie=i[11])*D,r[9]=O*o+j*g+Y*S+ie*R,r[10]=O*u+j*y+Y*P+ie*V,r[11]=O*h+j*v+Y*C+ie*q,r[12]=(O=i[12])*s+(j=i[13])*f+(Y=i[14])*b+(ie=i[15])*D,r[13]=O*o+j*g+Y*S+ie*R,r[14]=O*u+j*y+Y*P+ie*V,r[15]=O*h+j*v+Y*C+ie*q,r},E.T=Ph,E.U=function(r,e){const i={};for(let s=0;s<e.length;s++){const o=e[s];o in r&&(i[o]=r[o])}return i},E.V=Os,E.W=ri,E.X=Lp,E.Y=Rp,E.Z=fs,E._=c,E.a=Zs,E.a$=mr,E.a0=Ot,E.a1=Nn,E.a2=Tr,E.a3=Bp,E.a4=Iu,E.a5=ht,E.a6=function(r,e,i){if(!r)return e||{};if(!e)return r||{};const s=Np(r),o=Np(e);(function(h,f){f.removeAll&&(h.add.clear(),h.update.clear(),h.remove.clear(),f.remove.clear());for(const g of f.remove)h.add.delete(g),h.update.delete(g);for(const[g,y]of f.update){const v=h.update.get(g);v&&(f.update.set(g,Yg(v,y)),h.update.delete(g))}})(s,o);const u={};if((s.removeAll||o.removeAll)&&(u.removeAll=!0),u.remove=new Set([...s.remove,...o.remove]),u.add=new Map([...s.add,...o.add]),u.update=new Map([...s.update,...o.update]),u.remove.size&&u.add.size)for(const h of u.add.keys())u.remove.delete(h);return function(h){const f={};return h.removeAll&&(f.removeAll=h.removeAll),h.remove&&(f.remove=Array.from(h.remove)),h.add&&(f.add=Array.from(h.add.values())),h.update&&(f.update=Array.from(h.update.values())),f}(u)},E.a7=function(r,e){const i=new Map;if(r==null||r.type==null)return i;if(r.type==="Feature"){const s=Gh(r,e);return s==null?void 0:(i.set(s,r),i)}if(r.type==="FeatureCollection"){const s=new Set;for(const o of r.features){const u=Gh(o,e);if(u==null||s.has(u))return;s.add(u),i.set(u,o)}return i}},E.a8=function(r,e,i){var s,o;const u=[];if(e.removeAll)r.clear();else if(e.remove)for(const h of e.remove){const f=r.get(h);f&&(u.push(f.geometry),r.delete(h))}if(e.add)for(const h of e.add){const f=Gh(h,i);if(f==null)continue;const g=r.get(f);g&&u.push(g.geometry),u.push(h.geometry),r.set(f,h)}if(e.update)for(const h of e.update){const f=r.get(h.id);if(!f)continue;const g=!!h.newGeometry,y=h.removeAllProperties||((s=h.removeProperties)===null||s===void 0?void 0:s.length)>0||((o=h.addOrUpdateProperties)===null||o===void 0?void 0:o.length)>0;if(!g&&!y)continue;u.push(f.geometry);const v=Object.assign({},f);if(r.set(h.id,v),g&&(u.push(h.newGeometry),v.geometry=h.newGeometry),y){if(v.properties=h.removeAllProperties?{}:Object.assign({},v.properties||{}),h.removeProperties)for(const b of h.removeProperties)delete v.properties[b];if(h.addOrUpdateProperties)for(const{key:b,value:S}of h.addOrUpdateProperties)v.properties[b]=S}}return u},E.a9=ec,E.aA=function(r,{uSize:e,uSizeT:i},{lowerSize:s,upperSize:o}){return r.kind==="source"?s/ls:r.kind==="composite"?xi.number(s/ls,o/ls,i):e},E.aB=function(r,e){var i=e[0],s=e[1],o=e[2],u=e[3],h=e[4],f=e[5],g=e[6],y=e[7],v=e[8],b=e[9],S=e[10],P=e[11],C=e[12],D=e[13],R=e[14],V=e[15],q=i*f-s*h,O=i*g-o*h,j=i*y-u*h,Y=s*g-o*f,ie=s*y-u*f,ue=o*y-u*g,be=v*D-b*C,Te=v*R-S*C,Ie=v*V-P*C,ke=b*R-S*D,Ee=b*V-P*D,Se=S*V-P*R,ye=q*Se-O*Ee+j*ke+Y*Ie-ie*Te+ue*be;return ye?(r[0]=(f*Se-g*Ee+y*ke)*(ye=1/ye),r[1]=(o*Ee-s*Se-u*ke)*ye,r[2]=(D*ue-R*ie+V*Y)*ye,r[3]=(S*ie-b*ue-P*Y)*ye,r[4]=(g*Ie-h*Se-y*Te)*ye,r[5]=(i*Se-o*Ie+u*Te)*ye,r[6]=(R*j-C*ue-V*O)*ye,r[7]=(v*ue-S*j+P*O)*ye,r[8]=(h*Ee-f*Ie+y*be)*ye,r[9]=(s*Ie-i*Ee-u*be)*ye,r[10]=(C*ie-D*j+V*q)*ye,r[11]=(b*j-v*ie-P*q)*ye,r[12]=(f*Te-h*ke-g*be)*ye,r[13]=(i*ke-s*Te+o*be)*ye,r[14]=(D*O-C*Y-R*q)*ye,r[15]=(v*Y-b*O+S*q)*ye,r):null},E.aC=qi,E.aD=function(r){var e=r[0],i=r[1];return Math.sqrt(e*e+i*i)},E.aE=function(r){return r[0]=0,r[1]=0,r},E.aF=function(r,e,i){return r[0]=e[0]*i,r[1]=e[1]*i,r},E.aG=Bh,E.aH=jr,E.aI=function(r,e,i,s){const o=e.y-r.y,u=e.x-r.x,h=s.y-i.y,f=s.x-i.x,g=h*u-f*o;if(g===0)return null;const y=(f*(r.y-i.y)-h*(r.x-i.x))/g;return new Pe(r.x+y*u,r.y+y*o)},E.aJ=Tf,E.aK=Ul,E.aL=function(r){let e=1/0,i=1/0,s=-1/0,o=-1/0;for(const u of r)e=Math.min(e,u.x),i=Math.min(i,u.y),s=Math.max(s,u.x),o=Math.max(o,u.y);return[e,i,s,o]},E.aM=pi,E.aN=Jr,E.aO=function(r,e,i,s,o=!1){if(!i[0]&&!i[1])return[0,0];const u=o?s==="map"?-r.bearingInRadians:0:s==="viewport"?r.bearingInRadians:0;if(u){const h=Math.sin(u),f=Math.cos(u);i=[i[0]*f-i[1]*h,i[0]*h+i[1]*f]}return[o?i[0]:Jr(e,i[0],r.zoom),o?i[1]:Jr(e,i[1],r.zoom)]},E.aQ=Fh,E.aR=od,E.aS=Lh,E.aT=ld,E.aU=Kt,E.aV=bu,E.aW=F,E.aX=ve,E.aY=pe,E.aZ=rn,E.a_=Op,E.aa=Fa,E.ab=25,E.ac=Uh,E.ad=r=>{const e=window.document.createElement("video");return e.muted=!0,new Promise(i=>{e.onloadstart=()=>{i(e)};for(const s of r){const o=window.document.createElement("source");ce(s)||(e.crossOrigin="Anonymous"),o.src=s,e.appendChild(o)}})},E.ae=Ce,E.af=function(){return en++},E.ag=a,E.ah=Vo,E.ai=rc,E.aj=fa,E.ak=Bn,E.al=Gp,E.am=function(r){const e={};if(r.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(i,s,o,u)=>{const h=o||u;return e[s]=!h||h.toLowerCase(),""}),e["max-age"]){const i=parseInt(e["max-age"],10);isNaN(i)?delete e["max-age"]:e["max-age"]=i}return e},E.an=Pi,E.ao=85.051129,E.ap=Un,E.aq=function(r){return Math.pow(2,r)},E.ar=Ti,E.as=Fp,E.at=function(r){return Math.log(r)/Math.LN2},E.au=function(r){var e=r[0],i=r[1];return e*e+i*i},E.av=function(r){if(!r.length)return new Set;const e=Math.max(...r.map(g=>g.canonical.z));let i=1/0,s=-1/0,o=1/0,u=-1/0;const h=[];for(const g of r){const{x:y,y:v,z:b}=g.canonical,S=Math.pow(2,e-b),P=y*S,C=v*S;h.push({id:g,x:P,y:C}),P<i&&(i=P),P>s&&(s=P),C<o&&(o=C),C>u&&(u=C)}const f=new Set;for(const g of h)g.x!==i&&g.x!==s&&g.y!==o&&g.y!==u||f.add(g.id);return f},E.aw=function(r,e){const i=Math.abs(2*r.wrap)-+(r.wrap<0),s=Math.abs(2*e.wrap)-+(e.wrap<0);return r.overscaledZ-e.overscaledZ||s-i||e.canonical.y-r.canonical.y||e.canonical.x-r.canonical.x},E.ax=class{constructor(r,e){this.max=r,this.onRemove=e,this.reset()}reset(){for(const r in this.data)for(const e of this.data[r])e.timeout&&clearTimeout(e.timeout),this.onRemove(e.value);return this.data={},this.order=[],this}add(r,e,i){const s=r.wrapped().key;this.data[s]===void 0&&(this.data[s]=[]);const o={value:e,timeout:void 0};if(i!==void 0&&(o.timeout=setTimeout(()=>{this.remove(r,o)},i)),this.data[s].push(o),this.order.push(s),this.order.length>this.max){const u=this._getAndRemoveByKey(this.order[0]);u&&this.onRemove(u)}return this}has(r){return r.wrapped().key in this.data}getAndRemove(r){return this.has(r)?this._getAndRemoveByKey(r.wrapped().key):null}_getAndRemoveByKey(r){const e=this.data[r].shift();return e.timeout&&clearTimeout(e.timeout),this.data[r].length===0&&delete this.data[r],this.order.splice(this.order.indexOf(r),1),e.value}getByKey(r){const e=this.data[r];return e?e[0].value:null}get(r){return this.has(r)?this.data[r.wrapped().key][0].value:null}remove(r,e){if(!this.has(r))return this;const i=r.wrapped().key,s=e===void 0?0:this.data[i].indexOf(e),o=this.data[i][s];return this.data[i].splice(s,1),o.timeout&&clearTimeout(o.timeout),this.data[i].length===0&&delete this.data[i],this.onRemove(o.value),this.order.splice(this.order.indexOf(i),1),this}setMaxSize(r){for(this.max=r;this.order.length>this.max;){const e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this}filter(r){const e=[];for(const i in this.data)for(const s of this.data[i])r(s.value)||e.push(s);for(const i of e)this.remove(i.value.tileID,i)}},E.ay=function(r,e){let i=0,s=0;if(r.kind==="constant")s=r.layoutSize;else if(r.kind!=="source"){const{interpolationType:o,minZoom:u,maxZoom:h}=r,f=o?Pi(Fi.interpolationFactor(o,e,u,h),0,1):0;r.kind==="camera"?s=xi.number(r.minSize,r.maxSize,f):i=f}return{uSizeT:i,uSize:s}},E.b=jn,E.b$=za,E.b0=Si,E.b1=function(r){var e=new ct(3);return e[0]=r[0],e[1]=r[1],e[2]=r[2],e},E.b2=function(r,e,i){return r[0]=e[0]-i[0],r[1]=e[1]-i[1],r[2]=e[2]-i[2],r},E.b3=function(r,e){var i=e[0],s=e[1],o=e[2],u=i*i+s*s+o*o;return u>0&&(u=1/Math.sqrt(u)),r[0]=e[0]*u,r[1]=e[1]*u,r[2]=e[2]*u,r},E.b4=ii,E.b5=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},E.b6=function(r,e,i){return r[0]=e[0]*i[0],r[1]=e[1]*i[1],r[2]=e[2]*i[2],r[3]=e[3]*i[3],r},E.b7=hi,E.b8=function(r,e,i){const s=e[0]*i[0]+e[1]*i[1]+e[2]*i[2];return s===0?null:(-(r[0]*i[0]+r[1]*i[1]+r[2]*i[2])-i[3])/s},E.b9=Ir,E.bA=function(){return new Float64Array(3)},E.bB=Ji,E.bC=function(r,e,i){var s=i[0],o=i[1],u=i[2],h=i[3],f=e[0],g=e[1],y=e[2],v=o*y-u*g,b=u*f-s*y,S=s*g-o*f;return r[0]=f+h*(v+=v)+o*(S+=S)-u*(b+=b),r[1]=g+h*b+u*v-s*S,r[2]=y+h*S+s*b-o*v,r},E.bD=function(r,e,i){const s=(o=[r[0],r[1],r[2],e[0],e[1],e[2],i[0],i[1],i[2]])[0]*((v=o[8])*(h=o[4])-(f=o[5])*(y=o[7]))+o[1]*(-v*(u=o[3])+f*(g=o[6]))+o[2]*(y*u-h*g);var o,u,h,f,g,y,v;if(s===0)return null;const b=ii([],[e[0],e[1],e[2]],[i[0],i[1],i[2]]),S=ii([],[i[0],i[1],i[2]],[r[0],r[1],r[2]]),P=ii([],[r[0],r[1],r[2]],[e[0],e[1],e[2]]),C=mr([],b,-r[3]);return Si(C,C,mr([],S,-e[3])),Si(C,C,mr([],P,-i[3])),mr(C,C,1/s),C},E.bE=Nh,E.bF=function(){return new Float64Array(4)},E.bG=function(r,e,i,s){var o=[],u=[];return o[0]=e[0]-i[0],o[1]=e[1]-i[1],o[2]=e[2]-i[2],u[0]=o[0]*Math.cos(s)-o[1]*Math.sin(s),u[1]=o[0]*Math.sin(s)+o[1]*Math.cos(s),u[2]=o[2],r[0]=u[0]+i[0],r[1]=u[1]+i[1],r[2]=u[2]+i[2],r},E.bH=function(r,e,i,s){var o=[],u=[];return o[0]=e[0]-i[0],o[1]=e[1]-i[1],o[2]=e[2]-i[2],u[0]=o[0],u[1]=o[1]*Math.cos(s)-o[2]*Math.sin(s),u[2]=o[1]*Math.sin(s)+o[2]*Math.cos(s),r[0]=u[0]+i[0],r[1]=u[1]+i[1],r[2]=u[2]+i[2],r},E.bI=function(r,e,i,s){var o=[],u=[];return o[0]=e[0]-i[0],o[1]=e[1]-i[1],o[2]=e[2]-i[2],u[0]=o[2]*Math.sin(s)+o[0]*Math.cos(s),u[1]=o[1],u[2]=o[2]*Math.cos(s)-o[0]*Math.sin(s),r[0]=u[0]+i[0],r[1]=u[1]+i[1],r[2]=u[2]+i[2],r},E.bJ=function(r,e,i){var s=Math.sin(i),o=Math.cos(i),u=e[0],h=e[1],f=e[2],g=e[3],y=e[8],v=e[9],b=e[10],S=e[11];return e!==r&&(r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[0]=u*o-y*s,r[1]=h*o-v*s,r[2]=f*o-b*s,r[3]=g*o-S*s,r[8]=u*s+y*o,r[9]=h*s+v*o,r[10]=f*s+b*o,r[11]=g*s+S*o,r},E.bK=function(r,e){const i=gr(r,360),s=gr(e,360),o=s-i,u=s>i?o-360:o+360;return Math.abs(o)<Math.abs(u)?o:u},E.bL=function(r){return r[0]=0,r[1]=0,r[2]=0,r},E.bM=function(r,e,i,s){const o=Math.sqrt(r*r+e*e),u=Math.sqrt(i*i+s*s);r/=o,e/=o,i/=u,s/=u;const h=Math.acos(r*i+e*s);return-e*i+r*s>0?h:-h},E.bN=function(r,e){const i=gr(r,2*Math.PI),s=gr(e,2*Math.PI);return Math.min(Math.abs(i-s),Math.abs(i-s+2*Math.PI),Math.abs(i-s-2*Math.PI))},E.bO=function(){const r={},e=Q.$version;for(const i in Q.$root){const s=Q.$root[i];if(s.required){let o=null;o=i==="version"?e:s.type==="array"?[]:{},o!=null&&(r[i]=o)}}return r},E.bP=W,E.bQ=Sl,E.bR=function r(e,i){if(Array.isArray(e)){if(!Array.isArray(i)||e.length!==i.length)return!1;for(let s=0;s<e.length;s++)if(!r(e[s],i[s]))return!1;return!0}if(typeof e=="object"&&e!==null&&i!==null){if(typeof i!="object"||Object.keys(e).length!==Object.keys(i).length)return!1;for(const s in e)if(!r(e[s],i[s]))return!1;return!0}return e===i},E.bS=function(r){r=r.slice();const e=Object.create(null);for(let i=0;i<r.length;i++)e[r[i].id]=r[i];for(let i=0;i<r.length;i++)"ref"in r[i]&&(r[i]=et(r[i],e[r[i].ref]));return r},E.bT=function(r,e){if(r.type==="custom")return new Wg(r,e);switch(r.type){case"background":return new $g(r,e);case"circle":return new Am(r,e);case"color-relief":return new Fm(r,e);case"fill":return new Km(r,e);case"fill-extrusion":return new cg(r,e);case"heatmap":return new zm(r,e);case"hillshade":return new Rm(r,e);case"line":return new gg(r,e);case"raster":return new uu(r,e);case"symbol":return new Mu(r,e)}},E.bU=r=>r.type==="raster",E.bV=oi,E.bW=function(r,e){if(!r)return[{command:"setStyle",args:[e]}];let i=[];try{if(!Xe(r.version,e.version))return[{command:"setStyle",args:[e]}];Xe(r.center,e.center)||i.push({command:"setCenter",args:[e.center]}),Xe(r.state,e.state)||i.push({command:"setGlobalState",args:[e.state]}),Xe(r.centerAltitude,e.centerAltitude)||i.push({command:"setCenterAltitude",args:[e.centerAltitude]}),Xe(r.zoom,e.zoom)||i.push({command:"setZoom",args:[e.zoom]}),Xe(r.bearing,e.bearing)||i.push({command:"setBearing",args:[e.bearing]}),Xe(r.pitch,e.pitch)||i.push({command:"setPitch",args:[e.pitch]}),Xe(r.roll,e.roll)||i.push({command:"setRoll",args:[e.roll]}),Xe(r.sprite,e.sprite)||i.push({command:"setSprite",args:[e.sprite]}),Xe(r.glyphs,e.glyphs)||i.push({command:"setGlyphs",args:[e.glyphs]}),Xe(r.transition,e.transition)||i.push({command:"setTransition",args:[e.transition]}),Xe(r.light,e.light)||i.push({command:"setLight",args:[e.light]}),Xe(r.terrain,e.terrain)||i.push({command:"setTerrain",args:[e.terrain]}),Xe(r.sky,e.sky)||i.push({command:"setSky",args:[e.sky]}),Xe(r.projection,e.projection)||i.push({command:"setProjection",args:[e.projection]});const s={},o=[];(function(h,f,g,y){let v;for(v in f=f||{},h=h||{})Object.prototype.hasOwnProperty.call(h,v)&&(Object.prototype.hasOwnProperty.call(f,v)||rt(v,g,y));for(v in f)Object.prototype.hasOwnProperty.call(f,v)&&(Object.prototype.hasOwnProperty.call(h,v)?Xe(h[v],f[v])||(h[v].type==="geojson"&&f[v].type==="geojson"&&It(h,f,v)?Ke(g,{command:"setGeoJSONSourceData",args:[v,f[v].data]}):Tt(v,f,g,y)):Je(v,f,g))})(r.sources,e.sources,o,s);const u=[];r.layers&&r.layers.forEach(h=>{"source"in h&&s[h.source]?i.push({command:"removeLayer",args:[h.id]}):u.push(h)}),i=i.concat(o),function(h,f,g){f=f||[];const y=(h=h||[]).map(yi),v=f.map(yi),b=h.reduce(Gt,{}),S=f.reduce(Gt,{}),P=y.slice(),C=Object.create(null);let D,R,V,q,O;for(let j=0,Y=0;j<y.length;j++)D=y[j],Object.prototype.hasOwnProperty.call(S,D)?Y++:(Ke(g,{command:"removeLayer",args:[D]}),P.splice(P.indexOf(D,Y),1));for(let j=0,Y=0;j<v.length;j++)D=v[v.length-1-j],P[P.length-1-j]!==D&&(Object.prototype.hasOwnProperty.call(b,D)?(Ke(g,{command:"removeLayer",args:[D]}),P.splice(P.lastIndexOf(D,P.length-Y),1)):Y++,q=P[P.length-j],Ke(g,{command:"addLayer",args:[S[D],q]}),P.splice(P.length-j,0,D),C[D]=!0);for(let j=0;j<v.length;j++)if(D=v[j],R=b[D],V=S[D],!C[D]&&!Xe(R,V))if(Xe(R.source,V.source)&&Xe(R["source-layer"],V["source-layer"])&&Xe(R.type,V.type)){for(O in Xt(R.layout,V.layout,g,D,null,"setLayoutProperty"),Xt(R.paint,V.paint,g,D,null,"setPaintProperty"),Xe(R.filter,V.filter)||Ke(g,{command:"setFilter",args:[D,V.filter]}),Xe(R.minzoom,V.minzoom)&&Xe(R.maxzoom,V.maxzoom)||Ke(g,{command:"setLayerZoomRange",args:[D,V.minzoom,V.maxzoom]}),R)Object.prototype.hasOwnProperty.call(R,O)&&O!=="layout"&&O!=="paint"&&O!=="filter"&&O!=="metadata"&&O!=="minzoom"&&O!=="maxzoom"&&(O.indexOf("paint.")===0?Xt(R[O],V[O],g,D,O.slice(6),"setPaintProperty"):Xe(R[O],V[O])||Ke(g,{command:"setLayerProperty",args:[D,O,V[O]]}));for(O in V)Object.prototype.hasOwnProperty.call(V,O)&&!Object.prototype.hasOwnProperty.call(R,O)&&O!=="layout"&&O!=="paint"&&O!=="filter"&&O!=="metadata"&&O!=="minzoom"&&O!=="maxzoom"&&(O.indexOf("paint.")===0?Xt(R[O],V[O],g,D,O.slice(6),"setPaintProperty"):Xe(R[O],V[O])||Ke(g,{command:"setLayerProperty",args:[D,O,V[O]]}))}else Ke(g,{command:"removeLayer",args:[D]}),q=P[P.lastIndexOf(D)+1],Ke(g,{command:"addLayer",args:[V,q]})}(u,e.layers,i)}catch(s){console.warn("Unable to compute style diff:",s),i=[{command:"setStyle",args:[e]}]}return i},E.bX=function(r){const e=[],i=r.id;return i===void 0&&e.push({message:`layers.${i}: missing required property "id"`}),r.render===void 0&&e.push({message:`layers.${i}: missing required method "render"`}),r.renderingMode&&r.renderingMode!=="2d"&&r.renderingMode!=="3d"&&e.push({message:`layers.${i}: property "renderingMode" must be either "2d" or "3d"`}),e},E.bY=tn,E.bZ=Nr,E.b_=class extends Vi{constructor(r,e){super(r,e),this.current=0}set(r){this.current!==r&&(this.current=r,this.gl.uniform1i(this.location,r))}},E.ba=function(r,e,i){return r[0]=e[0]*i,r[1]=e[1]*i,r[2]=e[2]*i,r[3]=e[3]*i,r},E.bb=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]+r[3]},E.bc=jp,E.bd=jo,E.be=function(r,e,i,s,o){var u=1/Math.tan(e/2);if(r[0]=u/i,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=u,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[11]=-1,r[12]=0,r[13]=0,r[15]=0,o!=null&&o!==1/0){var h=1/(s-o);r[10]=(o+s)*h,r[14]=2*o*s*h}else r[10]=-1,r[14]=-2*s;return r},E.bf=function(r){var e=new ct(16);return e[0]=r[0],e[1]=r[1],e[2]=r[2],e[3]=r[3],e[4]=r[4],e[5]=r[5],e[6]=r[6],e[7]=r[7],e[8]=r[8],e[9]=r[9],e[10]=r[10],e[11]=r[11],e[12]=r[12],e[13]=r[13],e[14]=r[14],e[15]=r[15],e},E.bg=function(r,e,i){var s=Math.sin(i),o=Math.cos(i),u=e[0],h=e[1],f=e[2],g=e[3],y=e[4],v=e[5],b=e[6],S=e[7];return e!==r&&(r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[0]=u*o+y*s,r[1]=h*o+v*s,r[2]=f*o+b*s,r[3]=g*o+S*s,r[4]=y*o-u*s,r[5]=v*o-h*s,r[6]=b*o-f*s,r[7]=S*o-g*s,r},E.bh=function(r,e,i){var s=Math.sin(i),o=Math.cos(i),u=e[4],h=e[5],f=e[6],g=e[7],y=e[8],v=e[9],b=e[10],S=e[11];return e!==r&&(r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15]),r[4]=u*o+y*s,r[5]=h*o+v*s,r[6]=f*o+b*s,r[7]=g*o+S*s,r[8]=y*o-u*s,r[9]=v*o-h*s,r[10]=b*o-f*s,r[11]=S*o-g*s,r},E.bi=function(){const r=new Float32Array(16);return Ti(r),r},E.bj=function(){const r=new Float64Array(16);return Ti(r),r},E.bk=function(){return new Float64Array(16)},E.bl=function(r,e,i){const s=new Float64Array(4);return Ji(s,r,e-90,i),s},E.bm=function(r,e,i,s){var o,u,h,f,g,y=e[0],v=e[1],b=e[2],S=e[3],P=i[0],C=i[1],D=i[2],R=i[3];return(u=y*P+v*C+b*D+S*R)<0&&(u=-u,P=-P,C=-C,D=-D,R=-R),1-u>pt?(o=Math.acos(u),h=Math.sin(o),f=Math.sin((1-s)*o)/h,g=Math.sin(s*o)/h):(f=1-s,g=s),r[0]=f*y+g*P,r[1]=f*v+g*C,r[2]=f*b+g*D,r[3]=f*S+g*R,r},E.bn=function(r){const e=new Float64Array(9);var i,s,o,u,h,f,g,y,v,b,S,P,C,D,R,V,q,O;b=(o=(s=r)[0])*(g=o+o),S=(u=s[1])*g,C=(h=s[2])*g,D=h*(y=u+u),V=(f=s[3])*g,q=f*y,O=f*(v=h+h),(i=e)[0]=1-(P=u*y)-(R=h*v),i[3]=S-O,i[6]=C+q,i[1]=S+O,i[4]=1-b-R,i[7]=D-V,i[2]=C-q,i[5]=D+V,i[8]=1-b-P;const j=rn(-Math.asin(Pi(e[2],-1,1)));let Y,ie;return Math.hypot(e[5],e[8])<.001?(Y=0,ie=-rn(Math.atan2(e[3],e[4]))):(Y=rn(e[5]===0&&e[8]===0?0:Math.atan2(e[5],e[8])),ie=rn(e[1]===0&&e[0]===0?0:Math.atan2(e[1],e[0]))),{roll:Y,pitch:j+90,bearing:ie}},E.bo=function(r,e){return r.roll==e.roll&&r.pitch==e.pitch&&r.bearing==e.bearing},E.bp=dt,E.bq=_n,E.br=Fo,E.bs=Hl,E.bt=Lo,E.bu=Qr,E.bv=Qi,E.bw=$i,E.bx=function(r,e,i,s,o){return Qr(s,o,Pi((r-e)/(i-e),0,1))},E.by=function(r,e,i,s){return r[0]=e[0]+i[0]*s,r[1]=e[1]+i[1]*s,r[2]=e[2]+i[2]*s,r},E.bz=gr,E.c=oe,E.c$=class{constructor(r){this.start=`${r}#start`,this.end=`${r}#end`,this.measure=r,performance.mark(this.start)}finish(){performance.mark(this.end);let r=performance.getEntriesByName(this.measure);return r.length===0&&(performance.measure(this.measure,this.start,this.end),r=performance.getEntriesByName(this.measure),performance.clearMarks(this.start),performance.clearMarks(this.end),performance.clearMeasures(this.measure)),r}},E.c0=class extends Vi{constructor(r,e){super(r,e),this.current=Rs}set(r){if(r[12]!==this.current[12]||r[0]!==this.current[0])return this.current=r,void this.gl.uniformMatrix4fv(this.location,!1,r);for(let e=1;e<16;e++)if(r[e]!==this.current[e]){this.current=r,this.gl.uniformMatrix4fv(this.location,!1,r);break}}},E.c1=Da,E.c2=class extends Vi{constructor(r,e){super(r,e),this.current=[0,0,0]}set(r){r[0]===this.current[0]&&r[1]===this.current[1]&&r[2]===this.current[2]||(this.current=r,this.gl.uniform3f(this.location,r[0],r[1],r[2]))}},E.c3=class extends Vi{constructor(r,e){super(r,e),this.current=[0,0]}set(r){r[0]===this.current[0]&&r[1]===this.current[1]||(this.current=r,this.gl.uniform2f(this.location,r[0],r[1]))}},E.c4=Ki,E.c5=function(r,e){var i=Math.sin(e),s=Math.cos(e);return r[0]=s,r[1]=i,r[2]=0,r[3]=-i,r[4]=s,r[5]=0,r[6]=0,r[7]=0,r[8]=1,r},E.c6=function(r,e,i){var s=e[0],o=e[1],u=e[2];return r[0]=s*i[0]+o*i[3]+u*i[6],r[1]=s*i[1]+o*i[4]+u*i[7],r[2]=s*i[2]+o*i[5]+u*i[8],r},E.c7=function(r,e,i,s,o,u,h){var f=1/(e-i),g=1/(s-o),y=1/(u-h);return r[0]=-2*f,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=-2*g,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=2*y,r[11]=0,r[12]=(e+i)*f,r[13]=(o+s)*g,r[14]=(h+u)*y,r[15]=1,r},E.c8=class extends Vi{constructor(r,e){super(r,e),this.current=new Array}set(r){if(r!=this.current){this.current=r;const e=new Float32Array(4*r.length);for(let i=0;i<r.length;i++)e[4*i]=r[i].r,e[4*i+1]=r[i].g,e[4*i+2]=r[i].b,e[4*i+3]=r[i].a;this.gl.uniform4fv(this.location,e)}}},E.c9=class extends Vi{constructor(r,e){super(r,e),this.current=new Array}set(r){if(r!=this.current){this.current=r;const e=new Float32Array(r);this.gl.uniform1fv(this.location,e)}}},E.cA=function(r,e){var i;if(!En[e])return!1;const s=r==null?void 0:r.target,o=((i=s==null?void 0:s.ownerDocument)===null||i===void 0?void 0:i.defaultView)||window;return r instanceof o.MouseEvent||r instanceof o.WheelEvent},E.cB=function(r,e){return nn[e]&&"touches"in r},E.cC=function(r){return nn[r]||En[r]},E.cD=function(r,e,i){var s=e[0],o=e[1];return r[0]=i[0]*s+i[4]*o+i[12],r[1]=i[1]*s+i[5]*o+i[13],r},E.cE=function(r,e){const{x:i,y:s}=ec.fromLngLat(e);return!(r<0||r>25||s<0||s>=1||i<0||i>=1)},E.cF=function(r,e){return r[0]=e[0],r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=e[1],r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=e[2],r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r},E.cG=class extends So{},E.cH=k_,E.cJ=B,E.cK=function(r,e){oe.REGISTERED_PROTOCOLS[r]=e},E.cL=function(r){delete oe.REGISTERED_PROTOCOLS[r]},E.cM=function(r,e){const i={};for(let o=0;o<r.length;o++){const u=e&&e[r[o].id]||Gc(r[o]);e&&(e[r[o].id]=u);let h=i[u];h||(h=i[u]=[]),h.push(r[o])}const s=[];for(const o in i)s.push(i[o]);return s},E.cN=Fe,E.cO=Up,E.cP=bf,E.cQ=Tp,E.cR=function(r){var e;r.bucket.createArrays(),r.bucket.tilePixelRatio=ht/(512*r.bucket.overscaling),r.bucket.compareText={},r.bucket.iconsNeedLinear=!1;const i=r.bucket.layers[0],s=i.layout,o=i._unevaluatedLayout._values,u={layoutIconSize:o["icon-size"].possiblyEvaluate(new Pt(r.bucket.zoom+1),r.canonical),layoutTextSize:o["text-size"].possiblyEvaluate(new Pt(r.bucket.zoom+1),r.canonical),textMaxSize:o["text-size"].possiblyEvaluate(new Pt(18))};if(r.bucket.textSizeData.kind==="composite"){const{minZoom:v,maxZoom:b}=r.bucket.textSizeData;u.compositeTextSizes=[o["text-size"].possiblyEvaluate(new Pt(v),r.canonical),o["text-size"].possiblyEvaluate(new Pt(b),r.canonical)]}if(r.bucket.iconSizeData.kind==="composite"){const{minZoom:v,maxZoom:b}=r.bucket.iconSizeData;u.compositeIconSizes=[o["icon-size"].possiblyEvaluate(new Pt(v),r.canonical),o["icon-size"].possiblyEvaluate(new Pt(b),r.canonical)]}const h=s.get("text-line-height")*pi,f=s.get("text-rotation-alignment")!=="viewport"&&s.get("symbol-placement")!=="point",g=s.get("text-keep-upright"),y=s.get("text-size");for(const v of r.bucket.features){const b=s.get("text-font").evaluate(v,{},r.canonical).join(","),S=y.evaluate(v,{},r.canonical),P=u.layoutTextSize.evaluate(v,{},r.canonical),C=u.layoutIconSize.evaluate(v,{},r.canonical),D={horizontal:{},vertical:void 0},R=v.text;let V,q=[0,0];if(R){const Y=R.toString(),ie=s.get("text-letter-spacing").evaluate(v,{},r.canonical)*pi,ue=bo(Y)?ie:0,be=s.get("text-anchor").evaluate(v,{},r.canonical),Te=Rf(i,v,r.canonical);if(!Te){const Se=s.get("text-radial-offset").evaluate(v,{},r.canonical);q=Se?kf(be,[Se*pi,ad]):s.get("text-offset").evaluate(v,{},r.canonical).map(ye=>ye*pi)}let Ie=f?"center":s.get("text-justify").evaluate(v,{},r.canonical);const ke=s.get("symbol-placement")==="point"?s.get("text-max-width").evaluate(v,{},r.canonical)*pi:1/0,Ee=()=>{r.bucket.allowVerticalPlacement&&Pl(Y)&&(D.vertical=Su(R,r.glyphMap,r.glyphPositions,r.imagePositions,b,ke,h,be,"left",ue,q,E.az.vertical,!0,P,S))};if(!f&&Te){const Se=new Set;if(Ie==="auto")for(let Be=0;Be<Te.values.length;Be+=2)Se.add(od(Te.values[Be]));else Se.add(Ie);let ye=!1;for(const Be of Se)if(!D.horizontal[Be])if(ye)D.horizontal[Be]=D.horizontal[0];else{const Oe=Su(R,r.glyphMap,r.glyphPositions,r.imagePositions,b,ke,h,"center",Be,ue,q,E.az.horizontal,!1,P,S);Oe&&(D.horizontal[Be]=Oe,ye=Oe.positionedLines.length===1)}Ee()}else{Ie==="auto"&&(Ie=od(be));const Se=Su(R,r.glyphMap,r.glyphPositions,r.imagePositions,b,ke,h,be,Ie,ue,q,E.az.horizontal,!1,P,S);Se&&(D.horizontal[Ie]=Se),Ee(),Pl(Y)&&f&&g&&(D.vertical=Su(R,r.glyphMap,r.glyphPositions,r.imagePositions,b,ke,h,be,Ie,ue,q,E.az.vertical,!1,P,S))}}let O=!1;if(v.icon&&v.icon.name){const Y=r.imageMap[v.icon.name];Y&&(V=Ug(r.imagePositions[v.icon.name],s.get("icon-offset").evaluate(v,{},r.canonical),s.get("icon-anchor").evaluate(v,{},r.canonical)),O=!!Y.sdf,r.bucket.sdfIcons===void 0?r.bucket.sdfIcons=O:r.bucket.sdfIcons!==O&&Mi("Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer"),(Y.pixelRatio!==r.bucket.pixelRatio||s.get("icon-rotate").constantOr(1)!==0)&&(r.bucket.iconsNeedLinear=!0))}const j=Ff(D.horizontal)||D.vertical;(e=r.bucket).iconsInText||(e.iconsInText=!!j&&j.iconsInText),(j||V)&&D_(r.bucket,v,D,V,r.imageMap,u,P,C,q,O,r.canonical,r.subdivisionGranularity)}r.showCollisionBoxes&&r.bucket.generateCollisionDebugBuffers()},E.cS=Ch,E.cT=Dh,E.cU=zh,E.cV=function(r){const e=new Tu;return function(i,s){for(const o in i.layers)s.writeMessage(3,__,i.layers[o])}(r,e),e.finish()},E.cW=function(r,e,i,s,o,u){let h=Sf(r,e,i,o,0);return h=Sf(h,e,s,u,1),h},E.cX=class{constructor(r){this.maxEntries=r,this.map=new Map}get(r){const e=this.map.get(r);return e!==void 0&&(this.map.delete(r),this.map.set(r,e)),e}set(r,e){if(this.map.has(r))this.map.delete(r);else if(this.map.size>=this.maxEntries){const i=this.map.keys().next().value;this.map.delete(i)}this.map.set(r,e)}clear(){this.map.clear()}},E.cY=sp,E.cZ=Tu,E.c_=xf,E.ca=class extends ks{},E.cb=vg,E.cc=class extends Eo{},E.cd=Sh,E.ce=function(r){return r<=1?1:Math.pow(2,Math.ceil(Math.log(r)/Math.LN2))},E.cf=Gd,E.cg=function(r,e,i){var s=e[0],o=e[1],u=e[2],h=i[3]*s+i[7]*o+i[11]*u+i[15];return r[0]=(i[0]*s+i[4]*o+i[8]*u+i[12])/(h=h||1),r[1]=(i[1]*s+i[5]*o+i[9]*u+i[13])/h,r[2]=(i[2]*s+i[6]*o+i[10]*u+i[14])/h,r},E.ch=class extends Rl{},E.ci=class extends d{},E.cj=function(r,e){return r[0]===e[0]&&r[1]===e[1]&&r[2]===e[2]&&r[3]===e[3]&&r[4]===e[4]&&r[5]===e[5]&&r[6]===e[6]&&r[7]===e[7]&&r[8]===e[8]&&r[9]===e[9]&&r[10]===e[10]&&r[11]===e[11]&&r[12]===e[12]&&r[13]===e[13]&&r[14]===e[14]&&r[15]===e[15]},E.ck=function(r,e){var i=r[0],s=r[1],o=r[2],u=r[3],h=r[4],f=r[5],g=r[6],y=r[7],v=r[8],b=r[9],S=r[10],P=r[11],C=r[12],D=r[13],R=r[14],V=r[15],q=e[0],O=e[1],j=e[2],Y=e[3],ie=e[4],ue=e[5],be=e[6],Te=e[7],Ie=e[8],ke=e[9],Ee=e[10],Se=e[11],ye=e[12],Be=e[13],Oe=e[14],qe=e[15];return Math.abs(i-q)<=pt*Math.max(1,Math.abs(i),Math.abs(q))&&Math.abs(s-O)<=pt*Math.max(1,Math.abs(s),Math.abs(O))&&Math.abs(o-j)<=pt*Math.max(1,Math.abs(o),Math.abs(j))&&Math.abs(u-Y)<=pt*Math.max(1,Math.abs(u),Math.abs(Y))&&Math.abs(h-ie)<=pt*Math.max(1,Math.abs(h),Math.abs(ie))&&Math.abs(f-ue)<=pt*Math.max(1,Math.abs(f),Math.abs(ue))&&Math.abs(g-be)<=pt*Math.max(1,Math.abs(g),Math.abs(be))&&Math.abs(y-Te)<=pt*Math.max(1,Math.abs(y),Math.abs(Te))&&Math.abs(v-Ie)<=pt*Math.max(1,Math.abs(v),Math.abs(Ie))&&Math.abs(b-ke)<=pt*Math.max(1,Math.abs(b),Math.abs(ke))&&Math.abs(S-Ee)<=pt*Math.max(1,Math.abs(S),Math.abs(Ee))&&Math.abs(P-Se)<=pt*Math.max(1,Math.abs(P),Math.abs(Se))&&Math.abs(C-ye)<=pt*Math.max(1,Math.abs(C),Math.abs(ye))&&Math.abs(D-Be)<=pt*Math.max(1,Math.abs(D),Math.abs(Be))&&Math.abs(R-Oe)<=pt*Math.max(1,Math.abs(R),Math.abs(Oe))&&Math.abs(V-qe)<=pt*Math.max(1,Math.abs(V),Math.abs(qe))},E.cl=function(r,e){return r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=e[3],r[4]=e[4],r[5]=e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r[9]=e[9],r[10]=e[10],r[11]=e[11],r[12]=e[12],r[13]=e[13],r[14]=e[14],r[15]=e[15],r},E.cm=r=>r.type==="symbol",E.cn=r=>r.type==="circle",E.co=r=>r.type==="heatmap",E.cp=r=>r.type==="line",E.cq=r=>r.type==="fill",E.cr=r=>r.type==="fill-extrusion",E.cs=r=>r.type==="hillshade",E.ct=r=>r.type==="color-relief",E.cu=r=>r.type==="background",E.cv=r=>r.type==="custom",E.cw=Er,E.cx=function(r,e,i){if(e<=0)return r;const s=1/e;return i===void 0||Math.abs(i)<1e-10?Math.round(r*s)/s:(i>0?Math.ceil(r*s-1e-9):Math.floor(r*s+1e-10))/s},E.cy=function(r,e,i){const s=Vt(e.x-i.x,e.y-i.y),o=Vt(r.x-i.x,r.y-i.y);var u,h;return rn(Math.atan2(s[0]*o[1]-s[1]*o[0],(u=s)[0]*(h=o)[0]+u[1]*h[1]))},E.cz=Li,E.d=ce,E.d0=function(r,e,i,s,o){return c(this,void 0,void 0,function*(){if(Ot())try{return yield Nn(r,e,i,s,o)}catch{}return function(u,h,f,g,y){const v=u.width,b=u.height;Mn&&Gr||(Mn=new OffscreenCanvas(v,b),Gr=Mn.getContext("2d",{willReadFrequently:!0})),Mn.width=v,Mn.height=b,Gr.drawImage(u,0,0,v,b);const S=Gr.getImageData(h,f,g,y);return Gr.clearRect(0,0,v,b),S.data}(r,e,i,s,o)})},E.d1=Wd,E.d2=He,E.d3=class{constructor(r,e){this.layers={[rc]:this},this.name=rc,this.version=e?e.version:1,this.extent=e?e.extent:4096,this.length=r.length,this.features=r}feature(r){return new g_(this.features[r],this.extent)}},E.d4=ts,E.d5=fn,E.e=_i,E.f=r=>c(void 0,void 0,void 0,function*(){if(r.byteLength===0)return createImageBitmap(new ImageData(1,1));const e=new Blob([new Uint8Array(r)],{type:"image/png"});try{return createImageBitmap(e)}catch(i){throw new Error(`Could not load image because of ${i.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`)}}),E.g=A,E.h=r=>new Promise((e,i)=>{const s=new Image;s.onload=()=>{e(s),URL.revokeObjectURL(s.src),s.onload=null,window.requestAnimationFrame(()=>{s.src=ds})},s.onerror=()=>i(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));const o=new Blob([new Uint8Array(r)],{type:"image/png"});s.src=r.byteLength?URL.createObjectURL(o):ds}),E.i=Ur,E.j=(r,e)=>ee(_i(r,{type:"json"}),e),E.k=Me,E.l=le,E.m=ee,E.n=(r,e)=>ee(_i(r,{type:"arrayBuffer"}),e),E.o=function(r){return new Tu(r).readFields(Rg,[])},E.p=wp,E.q=function(r){return/[\u02EA\u02EB\u1100-\u11FF\u2E80-\u2FDF\u3000-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFE10-\uFE1F\uFE30-\uFE4F\uFF00-\uFFEF]|\uD81B[\uDFE0-\uDFFF]|[\uD81C-\uD822\uD840-\uD868\uD86A-\uD86D\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD88C][\uDC00-\uDFFF]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD1E\uDD80-\uDDF2]|\uD82B[\uDFF0-\uDFFF]|\uD82C[\uDC00-\uDEFB]|\uD83C[\uDE00-\uDEFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEAD\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD88D[\uDC00-\uDC79]/gim.test(String.fromCodePoint(r))},E.r=Gl,E.s=In,E.t=Bi,E.u=Q,E.v=ba,E.w=Mi,E.x=Dl,E.y=ar,E.z=To}),we("worker",["./shared"],function(E){class c{constructor(A,k){this.keyCache={},A&&this.replace(A,k)}replace(A,k){this._layerConfigs={},this._layers={},this.update(A,[],k)}update(A,k,B){for(const ee of A){this._layerConfigs[ee.id]=ee;const ce=this._layers[ee.id]=E.bT(ee,B);ce._featureFilter=E.aj(ce.filter,B),this.keyCache[ee.id]&&delete this.keyCache[ee.id]}for(const ee of k)delete this.keyCache[ee],delete this._layerConfigs[ee],delete this._layers[ee];this.familiesBySource={};const W=E.cM(Object.values(this._layerConfigs),this.keyCache);for(const ee of W){const ce=ee.map(Q=>this._layers[Q.id]),me=ce[0];if(me.isHidden())continue;const se=me.source||"";let le=this.familiesBySource[se];le||(le=this.familiesBySource[se]={});const Me=me.sourceLayer||E.ai;let xe=le[Me];xe||(xe=le[Me]=[]),xe.push(ce)}}}class Pe{constructor(A){const k={},B=[];for(const me in A){const se=A[me],le=k[me]={};for(const Me in se){const xe=se[+Me];if(!xe||xe.bitmap.width===0||xe.bitmap.height===0)continue;const Q={x:0,y:0,w:xe.bitmap.width+2,h:xe.bitmap.height+2};B.push(Q),le[Me]={rect:Q,metrics:xe.metrics}}}const{w:W,h:ee}=E.p(B),ce=new E.r({width:W||1,height:ee||1});for(const me in A){const se=A[me];for(const le in se){const Me=se[+le];if(!Me||Me.bitmap.width===0||Me.bitmap.height===0)continue;const xe=k[me][le].rect;E.r.copy(Me.bitmap,ce,{x:0,y:0},{x:xe.x+1,y:xe.y+1},Me.bitmap)}}this.image=ce,this.positions=k}}E.cN("GlyphAtlas",Pe);class He{constructor(A){this.tileID=new E.a2(A.tileID.overscaledZ,A.tileID.wrap,A.tileID.canonical.z,A.tileID.canonical.x,A.tileID.canonical.y),this.uid=A.uid,this.zoom=A.zoom,this.pixelRatio=A.pixelRatio,this.tileSize=A.tileSize,this.source=A.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=A.showCollisionBoxes,this.collectResourceTiming=!!A.collectResourceTiming,this.returnDependencies=!!A.returnDependencies,this.promoteId=A.promoteId,this.inFlightDependencies=[]}parse(A,k,B,W,ee){return E._(this,void 0,void 0,function*(){this.status="parsing",this.data=A,this.collisionBoxArray=new E.ag;const ce=new E.cO(Object.keys(A.layers).sort()),me=new E.cP(this.tileID,this.promoteId);me.bucketLayerIDs=[];const se={},le={featureIndex:me,iconDependencies:{},patternDependencies:{},glyphDependencies:{},dashDependencies:{},availableImages:B,subdivisionGranularity:ee},Me=k.familiesBySource[this.source];for(const _t in Me){const kt=A.layers[_t];if(!kt)continue;kt.version===1&&E.w(`Vector tile source "${this.source}" layer "${_t}" does not use vector tile spec v2 and therefore may have some rendering errors.`);const Gn=ce.encode(_t),sn=[];for(let Ae=0;Ae<kt.length;Ae++){const tt=kt.feature(Ae),it=me.getId(tt,_t);sn.push({feature:tt,id:it,index:Ae,sourceLayerIndex:Gn})}for(const Ae of Me[_t]){const tt=Ae[0];tt.source!==this.source&&E.w(`layer.source = ${tt.source} does not equal this.source = ${this.source}`),tt.isHidden(this.zoom,!0)||(Ze(Ae,this.zoom,B),(se[tt.id]=tt.createBucket({index:me.bucketLayerIDs.length,layers:Ae,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:Gn,sourceID:this.source})).populate(sn,le,this.tileID.canonical),me.bucketLayerIDs.push(Ae.map(it=>it.id)))}}const xe=E.bY(le.glyphDependencies,_t=>Object.keys(_t).map(Number));this.inFlightDependencies.forEach(_t=>_t==null?void 0:_t.abort()),this.inFlightDependencies=[];let Q=Promise.resolve({});if(Object.keys(xe).length){const _t=new AbortController;this.inFlightDependencies.push(_t),Q=W.sendAsync({type:"GG",data:{stacks:xe,source:this.source,tileID:this.tileID,type:"glyphs"}},_t)}const Ge=Object.keys(le.iconDependencies);let et=Promise.resolve({});if(Ge.length){const _t=new AbortController;this.inFlightDependencies.push(_t),et=W.sendAsync({type:"GI",data:{icons:Ge,source:this.source,tileID:this.tileID,type:"icons"}},_t)}const Xe=Object.keys(le.patternDependencies);let Ke=Promise.resolve({});if(Xe.length){const _t=new AbortController;this.inFlightDependencies.push(_t),Ke=W.sendAsync({type:"GI",data:{icons:Xe,source:this.source,tileID:this.tileID,type:"patterns"}},_t)}const Je=le.dashDependencies;let rt=Promise.resolve({});if(Object.keys(Je).length){const _t=new AbortController;this.inFlightDependencies.push(_t),rt=W.sendAsync({type:"GDA",data:{dashes:Je}},_t)}const[Tt,It,Xt,yi]=yield Promise.all([Q,et,Ke,rt]),Gt=new Pe(Tt),Ce=new E.cQ(It,Xt);for(const _t in se){const kt=se[_t];kt instanceof E.ah?(Ze(kt.layers,this.zoom,B),E.cR({bucket:kt,glyphMap:Tt,glyphPositions:Gt.positions,imageMap:It,imagePositions:Ce.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical,subdivisionGranularity:le.subdivisionGranularity})):kt.hasDependencies&&(kt instanceof E.cS||kt instanceof E.cT||kt instanceof E.cU)&&(Ze(kt.layers,this.zoom,B),kt.addFeatures(le,this.tileID.canonical,Ce.patternPositions,yi))}return this.status="done",{buckets:Object.values(se).filter(_t=>!_t.isEmpty()),featureIndex:me,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:Gt.image,imageAtlas:Ce,dashPositions:yi,glyphMap:this.returnDependencies?Tt:null,iconMap:this.returnDependencies?It:null,glyphPositions:this.returnDependencies?Gt.positions:null}})}}function Ze(oe,A,k){const B=new E.H(A);for(const W of oe)W.recalculate(B,k)}class Ne{constructor(){this.loading={},this.loaded={},this.parsing={}}startLoading(A,k){this.loading[A]=k}finishLoading(A){delete this.loading[A]}abort(A){const k=this.loading[A];k!=null&&k.abort&&(k.abort.abort(),delete this.loading[A])}setParsing(A,k){this.parsing[A]=k}consumeParsing(A){const k=this.parsing[A];if(k)return delete this.parsing[A],k}clearParsing(A){delete this.parsing[A]}markLoaded(A,k){this.loaded[A]=k}getLoaded(A){const k=this.loaded[A];if(k)return k}removeLoaded(A){delete this.loaded[A]}clearLoaded(){this.loaded={}}}class $e{constructor(A,k,B,W,ee){this.type=A,this.properties=B||{},this.extent=ee,this.pointsArray=k,this.id=W}loadGeometry(){return this.pointsArray.map(A=>A.map(k=>new E.P(k.x,k.y)))}}class st{constructor(A,k,B){this.version=2,this._myFeatures=A,this.name=k,this.length=A.length,this.extent=B}feature(A){return this._myFeatures[A]}}class bt{constructor(){this.layers={}}addLayer(A){this.layers[A.name]=A}}function Re(oe){let A=E.cV(oe);return A.byteOffset===0&&A.byteLength===A.buffer.byteLength||(A=new Uint8Array(A)),{vectorTile:oe,rawData:A.buffer}}function de(oe,A,k){const{extent:B}=oe,W=Math.pow(2,k.z-A.z),ee=(k.x-A.x*W)*B,ce=(k.y-A.y*W)*B,me=[];for(let se=0;se<oe.length;se++){const le=oe.feature(se);let Me=le.loadGeometry();for(const Q of Me)for(const Ge of Q)Ge.x=Ge.x*W-ee,Ge.y=Ge.y*W-ce;const xe=128;Me=E.cW(Me,le.type,-128,-128,B+xe,B+xe),Me.length!==0&&me.push(new $e(le.type,Me,le.properties,le.id,B))}return new st(me,oe.name,B)}class Ot{constructor(A,k,B){this.actor=A,this.layerIndex=k,this.availableImages=B,this.tileState=new Ne,this.overzoomedTileResultCache=new E.cX(1e3)}loadVectorTile(A,k){return E._(this,void 0,void 0,function*(){const B=yield E.n(A.request,k);try{return{vectorTile:A.encoding!=="mlt"?new E.cY(new E.cZ(B.data)):new E.c_(B.data),rawData:B.data,cacheControl:B.cacheControl,expires:B.expires}}catch(W){const ee=new Uint8Array(B.data);let ce=`Unable to parse the tile at ${A.request.url}, `;throw ce+=ee[0]===31&&ee[1]===139?"please make sure the data is not gzipped and that you have configured the relevant header in the server":`got error: ${W.message}`,new Error(ce)}})}loadTile(A){return E._(this,void 0,void 0,function*(){const{uid:k,overzoomParameters:B}=A;B&&(A.request=B.overzoomRequest);const W=this._startRequestTiming(A),ee=new He(A);this.tileState.startLoading(k,ee);const ce=new AbortController;ee.abort=ce;try{const me=yield this.loadVectorTile(A,ce);if(this.tileState.finishLoading(k),!me)return null;let{vectorTile:se,rawData:le}=me;B&&({vectorTile:se,rawData:le}=this._getOverzoomTile(A,me.vectorTile));const Me=this._getExpiryData(me),xe=this._finishRequestTiming(W);ee.vectorTile=se,this.tileState.markLoaded(k,ee);const Q={rawData:le,cacheControl:Me,resourceTiming:xe};this.tileState.setParsing(k,Q);try{return yield this._parseWorkerTile(ee,A,Q)}finally{this.tileState.clearParsing(k)}}catch(me){throw this.tileState.finishLoading(k),ee.status="done",this.tileState.markLoaded(k,ee),me}})}_parseWorkerTile(A,k,B){return E._(this,void 0,void 0,function*(){let W=yield A.parse(A.vectorTile,this.layerIndex,this.availableImages,this.actor,k.subdivisionGranularity);if(B){const{rawData:ee,cacheControl:ce,resourceTiming:me}=B;W=E.e({rawTileData:ee.slice(0),encoding:k.encoding},W,ce,me)}return W})}_getExpiryData(A){const{expires:k,cacheControl:B}=A,W={};return k&&(W.expires=k),B&&(W.cacheControl=B),W}_startRequestTiming(A){var k;if(!((k=A.request)===null||k===void 0)&&k.collectResourceTiming)return new E.c$(A.request.url)}_finishRequestTiming(A){const k=A==null?void 0:A.finish();return k?{resourceTiming:JSON.parse(JSON.stringify(k))}:{}}_getOverzoomTile(A,k){const{tileID:B,source:W,overzoomParameters:ee}=A,{maxZoomTileID:ce}=ee,me=`${ce.key}_${B.key}`,se=this.overzoomedTileResultCache.get(me);if(se)return se;const le=new bt,Me=this.layerIndex.familiesBySource[W];for(const Q in Me){const Ge=k.layers[Q];if(!Ge)continue;const et=de(Ge,ce,B.canonical);et.length>0&&le.addLayer(et)}const xe=Re(le);return this.overzoomedTileResultCache.set(me,xe),xe}reloadTile(A){return E._(this,void 0,void 0,function*(){const k=A.uid,B=this.tileState.getLoaded(k);if(!B)throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");if(B.showCollisionBoxes=A.showCollisionBoxes,B.status==="parsing"){const W=this.tileState.consumeParsing(k);return yield this._parseWorkerTile(B,A,W)}if(B.status==="done"&&B.vectorTile)return yield this._parseWorkerTile(B,A)})}abortTile(A){return E._(this,void 0,void 0,function*(){this.tileState.abort(A.uid)})}removeTile(A){return E._(this,void 0,void 0,function*(){this.tileState.removeLoaded(A.uid)})}}class pt{constructor(){this.loaded={}}loadTile(A){return E._(this,void 0,void 0,function*(){const{uid:k,encoding:B,rawImageData:W,redFactor:ee,greenFactor:ce,blueFactor:me,baseShift:se}=A,le=W.width+2,Me=W.height+2,xe=E.b(W)?new E.R({width:le,height:Me},yield E.d0(W,-1,-1,le,Me)):W,Q=new E.d1(k,xe,B,ee,ce,me,se);return this.loaded=this.loaded||{},this.loaded[k]=Q,Q})}removeTile(A){const k=this.loaded,B=A.uid;k&&k[B]&&delete k[B]}}var ct,Ki,Ti=function(){if(Ki)return ct;function oe(k,B){if(k.length!==0){A(k[0],B);for(var W=1;W<k.length;W++)A(k[W],!B)}}function A(k,B){for(var W=0,ee=0,ce=0,me=k.length,se=me-1;ce<me;se=ce++){var le=(k[ce][0]-k[se][0])*(k[se][1]+k[ce][1]),Me=W+le;ee+=Math.abs(W)>=Math.abs(le)?W-Me+le:le-Me+W,W=Me}W+ee>=0!=!!B&&k.reverse()}return Ki=1,ct=function k(B,W){var ee,ce=B&&B.type;if(ce==="FeatureCollection")for(ee=0;ee<B.features.length;ee++)k(B.features[ee],W);else if(ce==="GeometryCollection")for(ee=0;ee<B.geometries.length;ee++)k(B.geometries[ee],W);else if(ce==="Feature")k(B.geometry,W);else if(ce==="Polygon")oe(B.coordinates,W);else if(ce==="MultiPolygon")for(ee=0;ee<B.coordinates.length;ee++)oe(B.coordinates[ee],W);return B}}(),fr=E.d2(Ti);const hi={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:oe=>oe},Sn=Math.fround||(Si=new Float32Array(1),oe=>(Si[0]=+oe,Si[0]));var Si;class mr{constructor(A){this.options=Object.assign(Object.create(hi),A),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(A){const{log:k,minZoom:B,maxZoom:W}=this.options;k&&console.time("total time");const ee=`prepare ${A.length} points`;k&&console.time(ee),this.points=A;const ce=[];for(let se=0;se<A.length;se++){const le=A[se];if(!le.geometry)continue;const[Me,xe]=le.geometry.coordinates,Q=Sn(Ir(Me)),Ge=Sn(jr(xe));ce.push(Q,Ge,1/0,se,-1,1),this.options.reduce&&ce.push(0)}let me=this.trees[W+1]=this._createTree(ce);k&&console.timeEnd(ee);for(let se=W;se>=B;se--){const le=+Date.now();me=this.trees[se]=this._createTree(this._cluster(me,se)),k&&console.log("z%d: %d clusters in %dms",se,me.numItems,+Date.now()-le)}return k&&console.timeEnd("total time"),this}getClusters(A,k){let B=((A[0]+180)%360+360)%360-180;const W=Math.max(-90,Math.min(90,A[1]));let ee=A[2]===180?180:((A[2]+180)%360+360)%360-180;const ce=Math.max(-90,Math.min(90,A[3]));if(A[2]-A[0]>=360)B=-180,ee=180;else if(B>ee){const xe=this.getClusters([B,W,180,ce],k),Q=this.getClusters([-180,W,ee,ce],k);return xe.concat(Q)}const me=this.trees[this._limitZoom(k)],se=me.range(Ir(B),jr(ce),Ir(ee),jr(W)),le=me.data,Me=[];for(const xe of se){const Q=this.stride*xe;Me.push(le[Q+5]>1?ii(le,Q,this.clusterProps):this.points[le[Q+3]])}return Me}getChildren(A){const k=this._getOriginId(A),B=this._getOriginZoom(A),W="No cluster with the specified id.",ee=this.trees[B];if(!ee)throw new Error(W);const ce=ee.data;if(k*this.stride>=ce.length)throw new Error(W);const me=this.options.radius/(this.options.extent*Math.pow(2,B-1)),se=ee.within(ce[k*this.stride],ce[k*this.stride+1],me),le=[];for(const Me of se){const xe=Me*this.stride;ce[xe+4]===A&&le.push(ce[xe+5]>1?ii(ce,xe,this.clusterProps):this.points[ce[xe+3]])}if(le.length===0)throw new Error(W);return le}getLeaves(A,k,B){const W=[];return this._appendLeaves(W,A,k=k||10,B=B||0,0),W}getTile(A,k,B){const W=this.trees[this._limitZoom(A)],ee=Math.pow(2,A),{extent:ce,radius:me}=this.options,se=me/ce,le=(B-se)/ee,Me=(B+1+se)/ee,xe={features:[]};return this._addTileFeatures(W.range((k-se)/ee,le,(k+1+se)/ee,Me),W.data,k,B,ee,xe),k===0&&this._addTileFeatures(W.range(1-se/ee,le,1,Me),W.data,ee,B,ee,xe),k===ee-1&&this._addTileFeatures(W.range(0,le,se/ee,Me),W.data,-1,B,ee,xe),xe.features.length?xe:null}getClusterExpansionZoom(A){let k=this._getOriginZoom(A)-1;for(;k<=this.options.maxZoom;){const B=this.getChildren(A);if(k++,B.length!==1)break;A=B[0].properties.cluster_id}return k}_appendLeaves(A,k,B,W,ee){const ce=this.getChildren(k);for(const me of ce){const se=me.properties;if(se&&se.cluster?ee+se.point_count<=W?ee+=se.point_count:ee=this._appendLeaves(A,se.cluster_id,B,W,ee):ee<W?ee++:A.push(me),A.length===B)break}return ee}_createTree(A){const k=new E.aT(A.length/this.stride|0,this.options.nodeSize,Float32Array);for(let B=0;B<A.length;B+=this.stride)k.add(A[B],A[B+1]);return k.finish(),k.data=A,k}_addTileFeatures(A,k,B,W,ee,ce){for(const me of A){const se=me*this.stride,le=k[se+5]>1;let Me,xe,Q;if(le)Me=Mr(k,se,this.clusterProps),xe=k[se],Q=k[se+1];else{const Xe=this.points[k[se+3]];Me=Xe.properties;const[Ke,Je]=Xe.geometry.coordinates;xe=Ir(Ke),Q=jr(Je)}const Ge={type:1,geometry:[[Math.round(this.options.extent*(xe*ee-B)),Math.round(this.options.extent*(Q*ee-W))]],tags:Me};let et;et=le||this.options.generateId?k[se+3]:this.points[k[se+3]].id,et!==void 0&&(Ge.id=et),ce.features.push(Ge)}}_limitZoom(A){return Math.max(this.options.minZoom,Math.min(Math.floor(+A),this.options.maxZoom+1))}_cluster(A,k){const{radius:B,extent:W,reduce:ee,minPoints:ce}=this.options,me=B/(W*Math.pow(2,k)),se=A.data,le=[],Me=this.stride;for(let xe=0;xe<se.length;xe+=Me){if(se[xe+2]<=k)continue;se[xe+2]=k;const Q=se[xe],Ge=se[xe+1],et=A.within(se[xe],se[xe+1],me),Xe=se[xe+5];let Ke=Xe;for(const Je of et){const rt=Je*Me;se[rt+2]>k&&(Ke+=se[rt+5])}if(Ke>Xe&&Ke>=ce){let Je,rt=Q*Xe,Tt=Ge*Xe,It=-1;const Xt=(xe/Me<<5)+(k+1)+this.points.length;for(const yi of et){const Gt=yi*Me;if(se[Gt+2]<=k)continue;se[Gt+2]=k;const Ce=se[Gt+5];rt+=se[Gt]*Ce,Tt+=se[Gt+1]*Ce,se[Gt+4]=Xt,ee&&(Je||(Je=this._map(se,xe,!0),It=this.clusterProps.length,this.clusterProps.push(Je)),ee(Je,this._map(se,Gt)))}se[xe+4]=Xt,le.push(rt/Ke,Tt/Ke,1/0,Xt,-1,Ke),ee&&le.push(It)}else{for(let Je=0;Je<Me;Je++)le.push(se[xe+Je]);if(Ke>1)for(const Je of et){const rt=Je*Me;if(!(se[rt+2]<=k)){se[rt+2]=k;for(let Tt=0;Tt<Me;Tt++)le.push(se[rt+Tt])}}}}return le}_getOriginId(A){return A-this.points.length>>5}_getOriginZoom(A){return(A-this.points.length)%32}_map(A,k,B){if(A[k+5]>1){const ce=this.clusterProps[A[k+6]];return B?Object.assign({},ce):ce}const W=this.points[A[k+3]].properties,ee=this.options.map(W);return B&&ee===W?Object.assign({},ee):ee}}function ii(oe,A,k){return{type:"Feature",id:oe[A+3],properties:Mr(oe,A,k),geometry:{type:"Point",coordinates:[(B=oe[A],360*(B-.5)),Pn(oe[A+1])]}};var B}function Mr(oe,A,k){const B=oe[A+5],W=B>=1e4?`${Math.round(B/1e3)}k`:B>=1e3?Math.round(B/100)/10+"k":B,ee=oe[A+6],ce=ee===-1?{}:Object.assign({},k[ee]);return Object.assign(ce,{cluster:!0,cluster_id:oe[A+3],point_count:B,point_count_abbreviated:W})}function Ir(oe){return oe/360+.5}function jr(oe){const A=Math.sin(oe*Math.PI/180),k=.5-.25*Math.log((1+A)/(1-A))/Math.PI;return k<0?0:k>1?1:k}function Pn(oe){const A=(180-360*oe)*Math.PI/180;return 360*Math.atan(Math.exp(A))/Math.PI-90}function Ji(oe,A,k,B){let W=B;const ee=A+(k-A>>1);let ce,me=k-A;const se=oe[A],le=oe[A+1],Me=oe[k],xe=oe[k+1];for(let Q=A+3;Q<k;Q+=3){const Ge=qi(oe[Q],oe[Q+1],se,le,Me,xe);if(Ge>W)ce=Q,W=Ge;else if(Ge===W){const et=Math.abs(Q-ee);et<me&&(ce=Q,me=et)}}W>B&&(ce-A>3&&Ji(oe,A,ce,B),oe[ce+2]=W,k-ce>3&&Ji(oe,ce,k,B))}function qi(oe,A,k,B,W,ee){let ce=W-k,me=ee-B;if(ce!==0||me!==0){const se=((oe-k)*ce+(A-B)*me)/(ce*ce+me*me);se>1?(k=W,B=ee):se>0&&(k+=ce*se,B+=me*se)}return ce=oe-k,me=A-B,ce*ce+me*me}function Vt(oe,A,k,B){const W={type:A,geom:k},ee={id:oe??null,type:W.type,geometry:W.geom,tags:B,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};switch(W.type){case"Point":case"MultiPoint":case"LineString":ht(ee,W.geom);break;case"Polygon":ht(ee,W.geom[0]);break;case"MultiLineString":for(const ce of W.geom)ht(ee,ce);break;case"MultiPolygon":for(const ce of W.geom)ht(ee,ce[0])}return ee}function ht(oe,A){for(let k=0;k<A.length;k+=3)oe.minX=Math.min(oe.minX,A[k]),oe.minY=Math.min(oe.minY,A[k+1]),oe.maxX=Math.max(oe.maxX,A[k]),oe.maxY=Math.max(oe.maxY,A[k+1])}function Jr(oe,A){const k=[];switch(oe.type){case"FeatureCollection":for(let B=0;B<oe.features.length;B++)gr(k,oe.features[B],A,B);break;case"Feature":gr(k,oe,A);break;default:gr(k,{geometry:oe,properties:void 0},A)}return k}function gr(oe,A,k,B){var me;if(!A.geometry)return;if(A.geometry.type==="GeometryCollection"){for(const se of A.geometry.geometries)gr(oe,{id:A.id,geometry:se,properties:A.properties},k,B);return}const W=A.geometry.coordinates;if(!(W!=null&&W.length))return;const ee=Math.pow(k.tolerance/((1<<k.maxZoom)*k.extent),2);let ce=A.id;switch(k.promoteId?ce=(me=A.properties)==null?void 0:me[k.promoteId]:k.generateId&&(ce=B||0),A.geometry.type){case"Point":{const se=[];return Qr(A.geometry.coordinates,se),void oe.push(Vt(ce,A.geometry.type,se,A.properties))}case"MultiPoint":{const se=[];for(const le of A.geometry.coordinates)Qr(le,se);return void oe.push(Vt(ce,A.geometry.type,se,A.properties))}case"LineString":{const se=[];return Qi(A.geometry.coordinates,se,ee,!1),void oe.push(Vt(ce,A.geometry.type,se,A.properties))}case"MultiLineString":{if(k.lineMetrics){for(const le of A.geometry.coordinates){const Me=[];Qi(le,Me,ee,!1),oe.push(Vt(ce,"LineString",Me,A.properties))}return}const se=[];return Er(A.geometry.coordinates,se,ee,!1),void oe.push(Vt(ce,A.geometry.type,se,A.properties))}case"Polygon":{const se=[];return Er(A.geometry.coordinates,se,ee,!0),void oe.push(Vt(ce,A.geometry.type,se,A.properties))}case"MultiPolygon":{const se=[];for(const le of A.geometry.coordinates){const Me=[];Er(le,Me,ee,!0),se.push(Me)}return void oe.push(Vt(ce,A.geometry.type,se,A.properties))}default:throw new Error("Input data is not a valid GeoJSON object.")}}function Qr(oe,A){A.push(Li(oe[0]),Pi(oe[1]),0)}function Qi(oe,A,k,B){let W,ee,ce=0;for(let se=0;se<oe.length;se++){const le=Li(oe[se][0]),Me=Pi(oe[se][1]);A.push(le,Me,0),se>0&&(ce+=B?(W*Me-le*ee)/2:Math.sqrt(Math.pow(le-W,2)+Math.pow(Me-ee,2))),W=le,ee=Me}const me=A.length-3;A[2]=1,k>0&&Ji(A,0,me,k),A[me+2]=1,A.size=Math.abs(ce),A.start=0,A.end=A.size}function Er(oe,A,k,B){for(let W=0;W<oe.length;W++){const ee=[];Qi(oe[W],ee,k,B),A.push(ee)}}function Li(oe){return oe/360+.5}function Pi(oe){const A=Math.sin(oe*Math.PI/180),k=.5-.25*Math.log((1+A)/(1-A))/Math.PI;return k<0?0:k>1?1:k}function ri(oe,A,k,B,W,ee,ce,me){if(B/=A,ee>=(k/=A)&&ce<B)return oe;if(ce<k||ee>=B)return null;const se=[];for(const le of oe){const Me=W===0?le.minX:le.minY,xe=W===0?le.maxX:le.maxY;if(Me>=k&&xe<B)se.push(le);else if(!(xe<k||Me>=B))switch(le.type){case"Point":case"MultiPoint":{const Q=[];if(_i(le.geometry,Q,k,B,W),!Q.length)continue;se.push(Vt(le.id,Q.length===3?"Point":"MultiPoint",Q,le.tags));continue}case"LineString":{const Q=[];if(en(le.geometry,Q,k,B,W,!1,me.lineMetrics),!Q.length)continue;if(me.lineMetrics){for(const Ge of Q)se.push(Vt(le.id,le.type,Ge,le.tags));continue}if(Q.length>1){se.push(Vt(le.id,"MultiLineString",Q,le.tags));continue}se.push(Vt(le.id,le.type,Q[0],le.tags));continue}case"MultiLineString":{const Q=[];if(Nr(le.geometry,Q,k,B,W,!1),!Q.length)continue;if(Q.length===1){se.push(Vt(le.id,"LineString",Q[0],le.tags));continue}se.push(Vt(le.id,le.type,Q,le.tags));continue}case"Polygon":{const Q=[];if(Nr(le.geometry,Q,k,B,W,!0),!Q.length)continue;se.push(Vt(le.id,le.type,Q,le.tags));continue}case"MultiPolygon":{const Q=[];for(const Ge of le.geometry){const et=[];Nr(Ge,et,k,B,W,!0),et.length&&Q.push(et)}if(!Q.length)continue;se.push(Vt(le.id,le.type,Q,le.tags));continue}}}return se.length?se:null}function _i(oe,A,k,B,W){for(let ee=0;ee<oe.length;ee+=3){const ce=oe[ee+W];ce>=k&&ce<=B&&oi(A,oe[ee],oe[ee+1],oe[ee+2])}}function en(oe,A,k,B,W,ee,ce){let me=tn(oe);const se=W===0?Vn:Mi;let le,Me,xe=oe.start;for(let Ke=0;Ke<oe.length-3;Ke+=3){const Je=oe[Ke],rt=oe[Ke+1],Tt=oe[Ke+2],It=oe[Ke+3],Xt=oe[Ke+4],yi=W===0?Je:rt,Gt=W===0?It:Xt;let Ce=!1;ce&&(le=Math.sqrt(Math.pow(Je-It,2)+Math.pow(rt-Xt,2))),yi<k?Gt>k&&(Me=se(me,Je,rt,It,Xt,k),ce&&(me.start=xe+le*Me)):yi>B?Gt<B&&(Me=se(me,Je,rt,It,Xt,B),ce&&(me.start=xe+le*Me)):oi(me,Je,rt,Tt),Gt<k&&yi>=k&&(Me=se(me,Je,rt,It,Xt,k),Ce=!0),Gt>B&&yi<=B&&(Me=se(me,Je,rt,It,Xt,B),Ce=!0),!ee&&Ce&&(ce&&(me.end=xe+le*Me),A.push(me),me=tn(oe)),ce&&(xe+=le)}let Q=oe.length-3;const Ge=oe[Q],et=oe[Q+1],Xe=W===0?Ge:et;Xe>=k&&Xe<=B&&oi(me,Ge,et,oe[Q+2]),Q=me.length-3,ee&&Q>=3&&(me[Q]!==me[0]||me[Q+1]!==me[1])&&oi(me,me[0],me[1],me[2]),me.length&&A.push(me)}function tn(oe){const A=[];return A.size=oe.size,A.start=oe.start,A.end=oe.end,A}function Nr(oe,A,k,B,W,ee){for(const ce of oe)en(ce,A,k,B,W,ee,!1)}function oi(oe,A,k,B){oe.push(A,k,B)}function Vn(oe,A,k,B,W,ee){const ce=(ee-A)/(B-A);return oi(oe,ee,k+(W-k)*ce,1),ce}function Mi(oe,A,k,B,W,ee){const ce=(ee-k)/(W-k);return oi(oe,A+(B-A)*ce,ee,1),ce}function er(oe,A){const k=A.buffer/A.extent;let B=oe;const W=ri(oe,1,-1-k,k,0,-1,2,A),ee=ri(oe,1,1-k,2+k,0,-1,2,A);return(W||ee)&&(B=ri(oe,1,-k,1+k,0,-1,2,A)||[],W&&(B=Ur(W,1).concat(B)),ee&&(B=B.concat(Ur(ee,-1)))),B}function Ur(oe,A){const k=[];for(const B of oe)switch(B.type){case"Point":case"MultiPoint":case"LineString":{const W=zt(B.geometry,A);k.push(Vt(B.id,B.type,W,B.tags));continue}case"MultiLineString":case"Polygon":{const W=[];for(const ee of B.geometry)W.push(zt(ee,A));k.push(Vt(B.id,B.type,W,B.tags));continue}case"MultiPolygon":{const W=[];for(const ee of B.geometry){const ce=[];for(const me of ee)ce.push(zt(me,A));W.push(ce)}k.push(Vt(B.id,B.type,W,B.tags));continue}}return k}function zt(oe,A){const k=[];k.size=oe.size,oe.start!==void 0&&(k.start=oe.start,k.end=oe.end);for(let B=0;B<oe.length;B+=3)k.push(oe[B]+A,oe[B+1],oe[B+2]);return k}function jn(oe,A){if(oe.transformed)return oe;const k=1<<oe.z,B=oe.x,W=oe.y;for(const ee of oe.features){if(ee.type===1){const me=[];for(let se=0;se<ee.geometry.length;se+=2)me.push(ds(ee.geometry[se],ee.geometry[se+1],A,k,B,W));ee.geometry=me;continue}const ce=[];for(const me of ee.geometry){const se=[];for(let le=0;le<me.length;le+=2)se.push(ds(me[le],me[le+1],A,k,B,W));ce.push(se)}ee.geometry=ce}return oe.transformed=!0,oe}function ds(oe,A,k,B,W,ee){return[Math.round(k*(oe*B-W)),Math.round(k*(A*B-ee))]}function Nn(oe,A,k,B,W){const ee=A===W.maxZoom?0:W.tolerance/((1<<A)*W.extent),ce={features:[],numPoints:0,numSimplified:0,numFeatures:oe.length,source:null,x:k,y:B,z:A,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0};for(const me of oe)Mn(ce,me,ee,W);return ce}function Mn(oe,A,k,B){oe.minX=Math.min(oe.minX,A.minX),oe.minY=Math.min(oe.minY,A.minY),oe.maxX=Math.max(oe.maxX,A.maxX),oe.maxY=Math.max(oe.maxY,A.maxY);let W,ee=A.tags||null;switch(A.type){case"Point":case"MultiPoint":{const ce=[];for(let me=0;me<A.geometry.length;me+=3)ce.push(A.geometry[me],A.geometry[me+1]),oe.numPoints++,oe.numSimplified++;if(!ce.length)return;W={type:1,tags:ee,geometry:ce};break}case"LineString":{const ce=[];if(Gr(ce,A.geometry,oe,k,!1,!1),!ce.length)return;if(B.lineMetrics){ee={};for(const me in A.tags)ee[me]=A.tags[me];ee.mapbox_clip_start=A.geometry.start/A.geometry.size,ee.mapbox_clip_end=A.geometry.end/A.geometry.size}W={type:2,tags:ee,geometry:ce};break}case"MultiLineString":case"Polygon":{const ce=[];for(let me=0;me<A.geometry.length;me++)Gr(ce,A.geometry[me],oe,k,A.type==="Polygon",me===0);if(!ce.length)return;W={type:A.type==="Polygon"?3:2,tags:ee,geometry:ce};break}case"MultiPolygon":{const ce=[];for(let me=0;me<A.geometry.length;me++){const se=A.geometry[me];for(let le=0;le<se.length;le++)Gr(ce,se[le],oe,k,!0,le===0)}if(!ce.length)return;W={type:3,tags:ee,geometry:ce};break}}A.id!==null&&(W.id=A.id),oe.features.push(W)}function Gr(oe,A,k,B,W,ee){const ce=B*B;if(B>0&&A.size<(W?ce:B))return void(k.numPoints+=A.length/3);const me=[];for(let se=0;se<A.length;se+=3)(B===0||A[se+2]>ce)&&(k.numSimplified++,me.push(A[se],A[se+1])),k.numPoints++;W&&function(se,le){let Me=0;for(let xe=0,Q=se.length,Ge=Q-2;xe<Q;Ge=xe,xe+=2)Me+=(se[xe]-se[Ge])*(se[xe+1]+se[Ge+1]);if(Me>0===le)for(let xe=0,Q=se.length;xe<Q/2;xe+=2){const Ge=se[xe],et=se[xe+1];se[xe]=se[Q-2-xe],se[xe+1]=se[Q-1-xe],se[Q-2-xe]=Ge,se[Q-1-xe]=et}}(me,ee),oe.push(me)}function In(oe,A,k){var ee,ce;const B=!!A.newGeometry,W=A.removeAllProperties||((ee=A.removeProperties)==null?void 0:ee.length)>0||((ce=A.addOrUpdateProperties)==null?void 0:ce.length)>0;if(B){let me=Jr({type:"FeatureCollection",features:[{type:"Feature",id:oe.id,geometry:A.newGeometry,properties:W?Un(oe.tags,A):oe.tags}]},k);return me=er(me,k),me[0]}if(W){const me={...oe};return me.tags=Un(me.tags,A),me}return null}function Un(oe,A){if(A.removeAllProperties)return{};const k={...oe||{}};if(A.removeProperties)for(const B of A.removeProperties)delete k[B];if(A.addOrUpdateProperties)for(const{key:B,value:W}of A.addOrUpdateProperties)k[B]=W;return k}const rn={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,updateable:!1,debug:0};class nn{constructor(A,k){Qe(this,"options");Qe(this,"tiles");Qe(this,"tileCoords");Qe(this,"stats",{});Qe(this,"total",0);Qe(this,"source");const B=(k=this.options=Object.assign({},rn,k)).debug;if(B&&console.time("preprocess data"),k.maxZoom<0||k.maxZoom>24)throw new Error("maxZoom should be in the 0-24 range");if(k.promoteId&&k.generateId)throw new Error("promoteId and generateId cannot be used together.");let W=Jr(A,k);this.tiles={},this.tileCoords=[],B&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",k.indexMaxZoom,k.indexMaxPoints),console.time("generate tiles"),this.stats={},this.total=0),W=er(W,k),W.length&&this.splitTile(W,0,0,0),k.updateable&&(this.source=W),B&&(W.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)))}splitTile(A,k,B,W,ee,ce,me){const se=[A,k,B,W],le=this.options,Me=le.debug;for(;se.length;){W=se.pop(),B=se.pop(),k=se.pop(),A=se.pop();const xe=1<<k,Q=En(k,B,W);let Ge=this.tiles[Q];if(!Ge&&(Me>1&&console.time("creation"),Ge=this.tiles[Q]=Nn(A,k,B,W,le),this.tileCoords.push({z:k,x:B,y:W,id:Q}),Me)){Me>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",k,B,W,Ge.numFeatures,Ge.numPoints,Ge.numSimplified),console.timeEnd("creation"));const Ce=`z${k}`;this.stats[Ce]=(this.stats[Ce]||0)+1,this.total++}if(Ge.source=A,ee==null){if(k===le.indexMaxZoom||Ge.numPoints<=le.indexMaxPoints)continue}else{if(k===le.maxZoom||k===ee)continue;if(ee!=null){const Ce=ee-k;if(B!==ce>>Ce||W!==me>>Ce)continue}}if(Ge.source=null,!A.length)continue;Me>1&&console.time("clipping");const et=.5*le.buffer/le.extent,Xe=.5-et,Ke=.5+et,Je=1+et;let rt=null,Tt=null,It=null,Xt=null;const yi=ri(A,xe,B-et,B+Ke,0,Ge.minX,Ge.maxX,le),Gt=ri(A,xe,B+Xe,B+Je,0,Ge.minX,Ge.maxX,le);yi&&(rt=ri(yi,xe,W-et,W+Ke,1,Ge.minY,Ge.maxY,le),Tt=ri(yi,xe,W+Xe,W+Je,1,Ge.minY,Ge.maxY,le)),Gt&&(It=ri(Gt,xe,W-et,W+Ke,1,Ge.minY,Ge.maxY,le),Xt=ri(Gt,xe,W+Xe,W+Je,1,Ge.minY,Ge.maxY,le)),Me>1&&console.timeEnd("clipping"),se.push(rt||[],k+1,2*B,2*W),se.push(Tt||[],k+1,2*B,2*W+1),se.push(It||[],k+1,2*B+1,2*W),se.push(Xt||[],k+1,2*B+1,2*W+1)}}getTile(A,k,B){A=+A,k=+k,B=+B;const W=this.options,{extent:ee,debug:ce}=W;if(A<0||A>24)return null;const me=1<<A,se=En(A,k=k+me&me-1,B);if(this.tiles[se])return jn(this.tiles[se],ee);ce>1&&console.log("drilling down to z%d-%d-%d",A,k,B);let le,Me=A,xe=k,Q=B;for(;!le&&Me>0;)Me--,xe>>=1,Q>>=1,le=this.tiles[En(Me,xe,Q)];return le!=null&&le.source?(ce>1&&(console.log("found parent tile z%d-%d-%d",Me,xe,Q),console.time("drilling down")),this.splitTile(le.source,Me,xe,Q,A,k,B),ce>1&&console.timeEnd("drilling down"),this.tiles[se]?jn(this.tiles[se],ee):null):null}invalidateTiles(A){const k=this.options,{debug:B}=k;let W=1/0,ee=-1/0,ce=1/0,me=-1/0;for(const Me of A)W=Math.min(W,Me.minX),ee=Math.max(ee,Me.maxX),ce=Math.min(ce,Me.minY),me=Math.max(me,Me.maxY);const se=k.buffer/k.extent,le=new Set;for(const Me in this.tiles){const xe=this.tiles[Me],Q=1<<xe.z,Ge=(xe.x-se)/Q,et=(xe.x+1+se)/Q,Xe=(xe.y-se)/Q,Ke=(xe.y+1+se)/Q;if(ee<Ge||W>=et||me<Xe||ce>=Ke)continue;let Je=!1;for(const rt of A)if(rt.maxX>=Ge&&rt.minX<et&&rt.maxY>=Xe&&rt.minY<Ke){Je=!0;break}if(Je){if(B){B>1&&console.log("invalidate tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",xe.z,xe.x,xe.y,xe.numFeatures,xe.numPoints,xe.numSimplified);const rt=`z${xe.z}`;this.stats[rt]=(this.stats[rt]||0)-1,this.total--}delete this.tiles[Me],le.add(Me)}}le.size&&(this.tileCoords=this.tileCoords.filter(Me=>!le.has(Me.id)))}updateData(A){const k=this.options,B=k.debug;if(!k.updateable)throw new Error("to update tile geojson `updateable` option must be set to true");const{affected:W,source:ee}=function(xe,Q,Ge){const et=function(Ke){var Je,rt;return Ke?{removeAll:Ke.removeAll,remove:new Set(Ke.remove||[]),add:new Map((Je=Ke.add)==null?void 0:Je.map(Tt=>[Tt.id,Tt])),update:new Map((rt=Ke.update)==null?void 0:rt.map(Tt=>[Tt.id,Tt]))}:{remove:new Set,add:new Map,update:new Map}}(Q);let Xe=[];if(et.removeAll&&(Xe=xe,xe=[]),et.remove.size||et.add.size){const Ke=[];for(const Je of xe){const{id:rt}=Je;(et.remove.has(rt)||et.add.has(rt))&&Ke.push(Je)}if(Ke.length){Xe.push(...Ke);const Je=new Set(Ke.map(rt=>rt.id));xe=xe.filter(rt=>!Je.has(rt.id))}if(et.add.size){let Je=Jr({type:"FeatureCollection",features:Array.from(et.add.values())},Ge);Je=er(Je,Ge),Xe.push(...Je),xe.push(...Je)}}if(et.update.size)for(const[Ke,Je]of et.update){const rt=xe.findIndex(Xt=>Xt.id===Ke);if(rt===-1)continue;const Tt=xe[rt],It=In(Tt,Je,Ge);It&&(Xe.push(Tt,It),xe[rt]=It)}return{affected:Xe,source:xe}}(this.source,A,k);if(!W.length)return;this.source=ee,B>1&&(console.log("invalidating tiles"),console.time("invalidating")),this.invalidateTiles(W),B>1&&console.timeEnd("invalidating");const[ce,me,se]=[0,0,0],le=Nn(this.source,ce,me,se,this.options);le.source=this.source;const Me=En(ce,me,se);if(this.tiles[Me]=le,this.tileCoords.push({z:ce,x:me,y:se,id:Me}),B){const xe=`z${ce}`;this.stats[xe]=(this.stats[xe]||0)+1,this.total++}}}function En(oe,A,k){return 32*((1<<oe)*k+A)+oe}class ps{constructor(A,k,B,W=Zs){this._dataUpdateable=new Map,this.actor=A,this.layerIndex=k,this.availableImages=B,this.tileState=new Ne,this._createGeoJSONIndex=W}loadVectorTile(A){if(!this._geoJSONIndex)throw new Error("Unable to parse the data into a cluster or geojson");const{z:k,x:B,y:W}=A.tileID.canonical,ee=this._geoJSONIndex.getTile(k,B,W);return ee?Re(new E.d3(ee.features,{version:2,extent:E.a5})):null}loadTile(A){return E._(this,void 0,void 0,function*(){const{uid:k}=A,B=new He(A);B.abort=new AbortController;try{const W=this.loadVectorTile(A);if(!W)return null;const{vectorTile:ee,rawData:ce}=W;B.vectorTile=ee,this.tileState.markLoaded(k,B);const me={rawData:ce};this.tileState.setParsing(k,me);try{return yield this._parseWorkerTile(B,A,me)}finally{this.tileState.clearParsing(k)}}catch(W){throw B.status="done",this.tileState.markLoaded(k,B),W}})}_reloadLoadedTile(A){return E._(this,void 0,void 0,function*(){const k=A.uid,B=this.tileState.getLoaded(k);if(!B)throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");if(B.showCollisionBoxes=A.showCollisionBoxes,B.status==="parsing"){const W=this.tileState.consumeParsing(k);return yield this._parseWorkerTile(B,A,W)}if(B.status==="done"&&B.vectorTile)return yield this._parseWorkerTile(B,A)})}_parseWorkerTile(A,k,B){return E._(this,void 0,void 0,function*(){let W=yield A.parse(A.vectorTile,this.layerIndex,this.availableImages,this.actor,k.subdivisionGranularity);if(B){const{rawData:ee}=B;W=E.e({rawTileData:ee.slice(0)},W)}return W})}abortTile(A){return E._(this,void 0,void 0,function*(){this.tileState.abort(A.uid)})}removeTile(A){return E._(this,void 0,void 0,function*(){this.tileState.removeLoaded(A.uid)})}loadData(A){return E._(this,void 0,void 0,function*(){var k;(k=this._pendingRequest)===null||k===void 0||k.abort();const B=this._startRequestTiming(A);this._pendingRequest=new AbortController;try{(!this._pendingData||A.request||A.data||A.dataDiff)&&(this._pendingData=this.loadAndProcessGeoJSON(A,this._pendingRequest));const W=yield this._pendingData;this._geoJSONIndex=this._createGeoJSONIndex(W,A),this.tileState.clearLoaded();const ee={};return A.request&&(ee.data=W),this._finishRequestTiming(B,A,ee),ee}catch(W){if(delete this._pendingRequest,E.Z(W))return{abandoned:!0};throw W}})}_startRequestTiming(A){var k;if(!((k=A.request)===null||k===void 0)&&k.collectResourceTiming)return new E.c$(A.request.url)}_finishRequestTiming(A,k,B){const W=A==null?void 0:A.finish();W&&(B.resourceTiming={[k.source]:JSON.parse(JSON.stringify(W))})}getData(){return E._(this,void 0,void 0,function*(){return this._pendingData})}reloadTile(A){return this.tileState.getLoaded(A.uid)?this._reloadLoadedTile(A):this.loadTile(A)}loadAndProcessGeoJSON(A,k){return E._(this,void 0,void 0,function*(){let B;if(A.request?B=yield this.loadGeoJSONFromUrl(A.request,A.promoteId,k):A.data?B=this._loadGeoJSONFromObject(A.data,A.promoteId):A.dataDiff&&(B=this._loadGeoJSONFromDiff(A.dataDiff,A.promoteId,A.source)),delete this._pendingRequest,typeof B!="object")throw new Error(`Input data given to '${A.source}' is not a valid GeoJSON object.`);return fr(B,!0),A.filter&&(B=this._filterGeoJSON(B,A.filter)),B})}loadGeoJSONFromUrl(A,k,B){return E._(this,void 0,void 0,function*(){const W=yield E.j(A,B);return this._dataUpdateable=E.a7(W.data,k),W.data})}_loadGeoJSONFromObject(A,k){return this._dataUpdateable=E.a7(A,k),A}_loadGeoJSONFromDiff(A,k,B){if(!this._dataUpdateable)throw new Error(`Cannot update existing geojson data in ${B}`);E.a8(this._dataUpdateable,A,k);const W=Array.from(this._dataUpdateable.values());return this._toFeatureCollection(W)}_filterGeoJSON(A,k){const B=E.d4(k,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if(B.result==="error")throw new Error(B.value.map(ee=>`${ee.key}: ${ee.message}`).join(", "));const W=A.features.filter(ee=>B.value.evaluate({zoom:0},ee));return this._toFeatureCollection(W)}_toFeatureCollection(A){return{type:"FeatureCollection",features:A}}removeSource(A){return E._(this,void 0,void 0,function*(){var k;(k=this._pendingRequest)===null||k===void 0||k.abort()})}getClusterExpansionZoom(A){return this._geoJSONIndex.getClusterExpansionZoom(A.clusterId)}getClusterChildren(A){return this._geoJSONIndex.getChildren(A.clusterId)}getClusterLeaves(A){return this._geoJSONIndex.getLeaves(A.clusterId,A.limit,A.offset)}}function Zs(oe,A){return A.cluster?new mr(function({superclusterOptions:k,clusterProperties:B}){if(!B||!k)return k;const W={},ee={},ce={accumulated:null,zoom:0},me={properties:null},se=Object.keys(B);for(const le of se){const[Me,xe]=B[le],Q=E.d4(xe),Ge=E.d4(typeof Me=="string"?[Me,["accumulated"],["get",le]]:Me);W[le]=Q.value,ee[le]=Ge.value}return k.map=le=>{me.properties=le;const Me={};for(const xe of se)Me[xe]=W[xe].evaluate(ce,me);return Me},k.reduce=(le,Me)=>{me.properties=Me;for(const xe of se)ce.accumulated=le[xe],le[xe]=ee[xe].evaluate(ce,me)},k}(A)).load(oe.features):function(k,B){return new nn(k,B)}(oe,A.geojsonVtOptions)}class fs{constructor(A){this.self=A,this.actor=new E.L(A),this.layerIndexes={},this.availableImages={},this.workerSources={},this.demWorkerSources={},this.externalWorkerSourceTypes={},this.globalStates=new Map,this.self.registerWorkerSource=(k,B)=>{if(this.externalWorkerSourceTypes[k])throw new Error(`Worker source with name "${k}" already registered.`);this.externalWorkerSourceTypes[k]=B},this.self.addProtocol=E.cK,this.self.removeProtocol=E.cL,this.self.registerRTLTextPlugin=k=>{E.d5.setMethods(k)},this.actor.registerMessageHandler("LDT",(k,B)=>this._getDEMWorkerSource(k,B.source).loadTile(B)),this.actor.registerMessageHandler("RDT",(k,B)=>E._(this,void 0,void 0,function*(){this._getDEMWorkerSource(k,B.source).removeTile(B)})),this.actor.registerMessageHandler("GCEZ",(k,B)=>E._(this,void 0,void 0,function*(){return this._getWorkerSource(k,B.type,B.source).getClusterExpansionZoom(B)})),this.actor.registerMessageHandler("GCC",(k,B)=>E._(this,void 0,void 0,function*(){return this._getWorkerSource(k,B.type,B.source).getClusterChildren(B)})),this.actor.registerMessageHandler("GCL",(k,B)=>E._(this,void 0,void 0,function*(){return this._getWorkerSource(k,B.type,B.source).getClusterLeaves(B)})),this.actor.registerMessageHandler("LD",(k,B)=>this._getWorkerSource(k,B.type,B.source).loadData(B)),this.actor.registerMessageHandler("GD",(k,B)=>this._getWorkerSource(k,B.type,B.source).getData()),this.actor.registerMessageHandler("LT",(k,B)=>this._getWorkerSource(k,B.type,B.source).loadTile(B)),this.actor.registerMessageHandler("RT",(k,B)=>this._getWorkerSource(k,B.type,B.source).reloadTile(B)),this.actor.registerMessageHandler("AT",(k,B)=>this._getWorkerSource(k,B.type,B.source).abortTile(B)),this.actor.registerMessageHandler("RMT",(k,B)=>this._getWorkerSource(k,B.type,B.source).removeTile(B)),this.actor.registerMessageHandler("RS",(k,B)=>E._(this,void 0,void 0,function*(){if(!this.workerSources[k]||!this.workerSources[k][B.type]||!this.workerSources[k][B.type][B.source])return;const W=this.workerSources[k][B.type][B.source];delete this.workerSources[k][B.type][B.source],W.removeSource!==void 0&&W.removeSource(B)})),this.actor.registerMessageHandler("RM",k=>E._(this,void 0,void 0,function*(){delete this.layerIndexes[k],delete this.availableImages[k],delete this.workerSources[k],delete this.demWorkerSources[k],this.globalStates.delete(k)})),this.actor.registerMessageHandler("SR",(k,B)=>E._(this,void 0,void 0,function*(){this.referrer=B})),this.actor.registerMessageHandler("SRPS",(k,B)=>this._syncRTLPluginState(k,B)),this.actor.registerMessageHandler("IS",(k,B)=>E._(this,void 0,void 0,function*(){this.self.importScripts(B)})),this.actor.registerMessageHandler("SI",(k,B)=>this._setImages(k,B)),this.actor.registerMessageHandler("UL",(k,B)=>E._(this,void 0,void 0,function*(){this._getLayerIndex(k).update(B.layers,B.removedIds,this._getGlobalState(k))})),this.actor.registerMessageHandler("UGS",(k,B)=>E._(this,void 0,void 0,function*(){const W=this._getGlobalState(k);for(const ee in B)W[ee]=B[ee]})),this.actor.registerMessageHandler("SL",(k,B)=>E._(this,void 0,void 0,function*(){this._getLayerIndex(k).replace(B,this._getGlobalState(k))}))}_getGlobalState(A){let k=this.globalStates.get(A);return k||(k={},this.globalStates.set(A,k)),k}_setImages(A,k){return E._(this,void 0,void 0,function*(){this.availableImages[A]=k;for(const B in this.workerSources[A]){const W=this.workerSources[A][B];for(const ee in W)W[ee].availableImages=k}})}_syncRTLPluginState(A,k){return E._(this,void 0,void 0,function*(){return yield E.d5.syncState(k,this.self.importScripts)})}_getAvailableImages(A){let k=this.availableImages[A];return k||(k=[]),k}_getLayerIndex(A){let k=this.layerIndexes[A];return k||(k=this.layerIndexes[A]=new c),k}_getWorkerSource(A,k,B){if(this.workerSources[A]||(this.workerSources[A]={}),this.workerSources[A][k]||(this.workerSources[A][k]={}),!this.workerSources[A][k][B]){const W={sendAsync:(ee,ce)=>(ee.targetMapId=A,this.actor.sendAsync(ee,ce))};switch(k){case"vector":this.workerSources[A][k][B]=new Ot(W,this._getLayerIndex(A),this._getAvailableImages(A));break;case"geojson":this.workerSources[A][k][B]=new ps(W,this._getLayerIndex(A),this._getAvailableImages(A));break;default:this.workerSources[A][k][B]=new this.externalWorkerSourceTypes[k](W,this._getLayerIndex(A),this._getAvailableImages(A))}}return this.workerSources[A][k][B]}_getDEMWorkerSource(A,k){return this.demWorkerSources[A]||(this.demWorkerSources[A]={}),this.demWorkerSources[A][k]||(this.demWorkerSources[A][k]=new pt),this.demWorkerSources[A][k]}}return E.i(self)&&(self.worker=new fs(self)),fs}),we("index",["exports","./shared"],function(E,c){var Pe="5.19.0";function He(){var d=new c.A(4);return c.A!=Float32Array&&(d[1]=0,d[2]=0),d[0]=1,d[3]=1,d}let Ze,Ne,$e;const st={frame(d,t,n,a){const l=a||window,p=l.requestAnimationFrame(_=>{m(),t(_)}),{unsubscribe:m}=c.s(d.signal,"abort",()=>{m(),l.cancelAnimationFrame(p),n(new c.a(d.signal.reason))},!1)},frameAsync(d,t){return new Promise((n,a)=>{this.frame(d,n,a,t)})},getImageData(d,t=0){return this.getImageCanvasContext(d).getImageData(-t,-t,d.width+2*t,d.height+2*t)},getImageCanvasContext(d){const t=window.document.createElement("canvas"),n=t.getContext("2d",{willReadFrequently:!0});if(!n)throw new Error("failed to create canvas 2d context");return t.width=d.width,t.height=d.height,n.drawImage(d,0,0,d.width,d.height),n},resolveURL:d=>(Ze||(Ze=document.createElement("a")),Ze.href=d,Ze.href),hardwareConcurrency:typeof navigator<"u"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return $e!==void 0?$e:!!matchMedia&&(Ne==null&&(Ne=matchMedia("(prefers-reduced-motion: reduce)")),Ne.matches)},set prefersReducedMotion(d){$e=d}},bt=new class{constructor(){this._realTime=typeof performance<"u"&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),this._frozenAt=null}getCurrentTime(){return this._frozenAt!==null?this._frozenAt:this._realTime()}setNow(d){this._frozenAt=d}restoreNow(){this._frozenAt=null}isFrozen(){return this._frozenAt!==null}};function Re(){return bt.getCurrentTime()}class de{static testProp(t){if(!de.docStyle)return t[0];for(let n=0;n<t.length;n++)if(t[n]in de.docStyle)return t[n];return t[0]}static create(t,n,a){const l=window.document.createElement(t);return n!==void 0&&(l.className=n),a&&a.appendChild(l),l}static createNS(t,n){return window.document.createElementNS(t,n)}static disableDrag(){de.docStyle&&de.selectProp&&(de.userSelect=de.docStyle[de.selectProp],de.docStyle[de.selectProp]="none")}static enableDrag(){de.docStyle&&de.selectProp&&(de.docStyle[de.selectProp]=de.userSelect)}static setTransform(t,n){t.style[de.transformProp]=n}static addEventListener(t,n,a,l={}){t.addEventListener(n,a,"passive"in l?l:l.capture)}static removeEventListener(t,n,a,l={}){t.removeEventListener(n,a,"passive"in l?l:l.capture)}static suppressClickInternal(t){t.preventDefault(),t.stopPropagation(),window.removeEventListener("click",de.suppressClickInternal,!0)}static suppressClick(){window.addEventListener("click",de.suppressClickInternal,!0),window.setTimeout(()=>{window.removeEventListener("click",de.suppressClickInternal,!0)},0)}static getScale(t){const n=t.getBoundingClientRect();return{x:n.width/t.offsetWidth||1,y:n.height/t.offsetHeight||1,boundingClientRect:n}}static getPoint(t,n,a){const l=n.boundingClientRect;return new c.P((a.clientX-l.left)/n.x-t.clientLeft,(a.clientY-l.top)/n.y-t.clientTop)}static mousePos(t,n){const a=de.getScale(t);return de.getPoint(t,a,n)}static touchPos(t,n){const a=[],l=de.getScale(t);for(let p=0;p<n.length;p++)a.push(de.getPoint(t,l,n[p]));return a}static mouseButton(t){return t.button}static remove(t){t.parentNode&&t.parentNode.removeChild(t)}static sanitize(t){const n=new DOMParser().parseFromString(t,"text/html").body||document.createElement("body"),a=n.querySelectorAll("script");for(const l of a)l.remove();return de.clean(n),n.innerHTML}static isPossiblyDangerous(t,n){const a=n.replace(/\s+/g,"").toLowerCase();return!(!["src","href","xlink:href"].includes(t)||!a.includes("javascript:")&&!a.includes("data:"))||!!t.startsWith("on")||void 0}static clean(t){const n=t.children;for(const a of n)de.removeAttributes(a),de.clean(a)}static removeAttributes(t){for(const{name:n,value:a}of t.attributes)de.isPossiblyDangerous(n,a)&&t.removeAttribute(n)}}de.docStyle=typeof window<"u"&&window.document&&window.document.documentElement.style,de.selectProp=de.testProp(["userSelect","MozUserSelect","WebkitUserSelect","msUserSelect"]),de.transformProp=de.testProp(["transform","WebkitTransform"]);const Ot={supported:!1,testSupport:function(d){!Ki&&ct&&(Ti?fr(d):pt=d)}};let pt,ct,Ki=!1,Ti=!1;function fr(d){const t=d.createTexture();d.bindTexture(d.TEXTURE_2D,t);try{if(d.texImage2D(d.TEXTURE_2D,0,d.RGBA,d.RGBA,d.UNSIGNED_BYTE,ct),d.isContextLost())return;Ot.supported=!0}catch{}d.deleteTexture(t),Ki=!0}var hi;typeof document<"u"&&(ct=document.createElement("img"),ct.onload=()=>{pt&&fr(pt),pt=null,Ti=!0},ct.onerror=()=>{Ki=!0,pt=null},ct.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA="),function(d){let t,n,a,l;d.resetRequestQueue=()=>{t=[],n=0,a=0,l={}},d.addThrottleControl=x=>{const w=a++;return l[w]=x,w},d.removeThrottleControl=x=>{delete l[x],m()},d.getImage=(x,w,T=!0)=>new Promise((I,M)=>{Ot.supported&&(x.headers||(x.headers={}),x.headers.accept="image/webp,*/*"),c.e(x,{type:"image"}),t.push({abortController:w,requestParameters:x,supportImageRefresh:T,state:"queued",onError:z=>{M(z)},onSuccess:z=>{I(z)}}),m()});const p=x=>c._(this,void 0,void 0,function*(){x.state="running";const{requestParameters:w,supportImageRefresh:T,onError:I,onSuccess:M,abortController:z}=x,F=T===!1&&!c.i(self)&&!c.g(w.url)&&(!w.headers||Object.keys(w.headers).reduce((U,$)=>U&&$==="accept",!0));n++;const N=F?_(w,z):c.m(w,z);try{const U=yield N;delete x.abortController,x.state="completed",U.data instanceof HTMLImageElement||c.b(U.data)?M(U):U.data&&M({data:yield(G=U.data,typeof createImageBitmap=="function"?c.f(G):c.h(G)),cacheControl:U.cacheControl,expires:U.expires})}catch(U){delete x.abortController,I(U)}finally{n--,m()}var G}),m=()=>{const x=(()=>{for(const w of Object.keys(l))if(l[w]())return!0;return!1})()?c.c.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:c.c.MAX_PARALLEL_IMAGE_REQUESTS;for(let w=n;w<x&&t.length>0;w++){const T=t.shift();T.abortController.signal.aborted?w--:p(T)}},_=(x,w)=>new Promise((T,I)=>{const M=new Image,z=x.url,F=x.credentials;F&&F==="include"?M.crossOrigin="use-credentials":(F&&F==="same-origin"||!c.d(z))&&(M.crossOrigin="anonymous"),w.signal.addEventListener("abort",()=>{M.src="",I(new c.a(w.signal.reason))}),M.fetchPriority="high",M.onload=()=>{M.onerror=M.onload=null,T({data:M})},M.onerror=()=>{M.onerror=M.onload=null,w.signal.aborted||I(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))},M.src=z})}(hi||(hi={})),hi.resetRequestQueue();class Sn{constructor(t){this._transformRequestFn=t??null}transformRequest(t,n){return this._transformRequestFn&&this._transformRequestFn(t,n)||{url:t}}setTransformRequest(t){this._transformRequestFn=t}}function Si(d){const t=[];if(typeof d=="string")t.push({id:"default",url:d});else if(d&&d.length>0){const n=[];for(const{id:a,url:l}of d){const p=`${a}${l}`;n.indexOf(p)===-1&&(n.push(p),t.push({id:a,url:l}))}}return t}function mr(d,t,n){try{const a=new URL(d);return a.pathname+=`${t}${n}`,a.toString()}catch{throw new Error(`Invalid sprite URL "${d}", must be absolute. Modify style specification directly or use TransformStyleFunction to correct the issue dynamically`)}}function ii(d){const{userImage:t}=d;return!!(t&&t.render&&t.render())&&(d.data.replace(new Uint8Array(t.data.buffer)),!0)}class Mr extends c.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new c.R({width:1,height:1}),this.dirty=!0}destroy(){this.atlasTexture&&(this.atlasTexture.destroy(),this.atlasTexture=null);for(const t of Object.keys(this.images))this.removeImage(t);this.patterns={},this.atlasImage=new c.R({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(t){if(this.loaded!==t&&(this.loaded=t,t)){for(const{ids:n,promiseResolve:a}of this.requestors)a(this._getImagesForIds(n));this.requestors=[]}}getImage(t){const n=this.images[t];if(n&&!n.data&&n.spriteData){const a=n.spriteData;n.data=new c.R({width:a.width,height:a.height},a.context.getImageData(a.x,a.y,a.width,a.height).data),n.spriteData=null}return n}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;const l=n.data||n.spriteData;return this._validateStretch(n.stretchX,l&&l.width)||(this.fire(new c.k(new Error(`Image "${t}" has invalid "stretchX" value`))),a=!1),this._validateStretch(n.stretchY,l&&l.height)||(this.fire(new c.k(new Error(`Image "${t}" has invalid "stretchY" value`))),a=!1),this._validateContent(n.content,n)||(this.fire(new c.k(new Error(`Image "${t}" has invalid "content" value`))),a=!1),a}_validateStretch(t,n){if(!t)return!0;let a=0;for(const l of t){if(l[0]<a||l[1]<l[0]||n<l[1])return!1;a=l[1]}return!0}_validateContent(t,n){if(!t)return!0;if(t.length!==4)return!1;const a=n.spriteData,l=a&&a.width||n.data.width,p=a&&a.height||n.data.height;return!(t[0]<0||l<t[0]||t[1]<0||p<t[1]||t[2]<0||l<t[2]||t[3]<0||p<t[3]||t[2]<t[0]||t[3]<t[1])}updateImage(t,n,a=!0){const l=this.getImage(t);if(a&&(l.data.width!==n.data.width||l.data.height!==n.data.height))throw new Error(`size mismatch between old image (${l.data.width}x${l.data.height}) and new image (${n.data.width}x${n.data.height}).`);n.version=l.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){return new Promise((n,a)=>{let l=!0;if(!this.isLoaded())for(const p of t)this.images[p]||(l=!1);this.isLoaded()||l?n(this._getImagesForIds(t)):this.requestors.push({ids:t,promiseResolve:n})})}_getImagesForIds(t){const n={};for(const a of t){let l=this.getImage(a);l||(this.fire(new c.l("styleimagemissing",{id:a})),l=this.getImage(a)),l?n[a]={data:l.data.clone(),pixelRatio:l.pixelRatio,sdf:l.sdf,version:l.version,stretchX:l.stretchX,stretchY:l.stretchY,content:l.content,textFitWidth:l.textFitWidth,textFitHeight:l.textFitHeight,hasRenderCallback:!!(l.userImage&&l.userImage.render)}:c.w(`Image "${a}" 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.`)}return n}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 l={w:a.data.width+2,h:a.data.height+2,x:0,y:0},p=new c.I(l,a);this.patterns[t]={bin:l,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 c.T(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.p(t),l=this.atlasImage;l.resize({width:n||1,height:a||1});for(const p in this.patterns){const{bin:m}=this.patterns[p],_=m.x+1,x=m.y+1,w=this.getImage(p).data,T=w.width,I=w.height;c.R.copy(w,l,{x:0,y:0},{x:_,y:x},{width:T,height:I}),c.R.copy(w,l,{x:0,y:I-1},{x:_,y:x-1},{width:T,height:1}),c.R.copy(w,l,{x:0,y:0},{x:_,y:x+I},{width:T,height:1}),c.R.copy(w,l,{x:T-1,y:0},{x:_-1,y:x},{width:1,height:I}),c.R.copy(w,l,{x:0,y:0},{x:_+T,y:x},{width:1,height:I})}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.getImage(n);a||c.w(`Image with ID: "${n}" was not found`),ii(a)&&this.updateImage(n,a)}}cloneImages(){const t={};for(const n in this.images){const a=this.images[n];t[n]=Object.assign(Object.assign({},a),{data:a.data?a.data.clone():null})}return t}}const Ir=1e20;function jr(d,t,n,a,l,p,m,_,x){for(let w=t;w<t+a;w++)Pn(d,n*p+w,p,l,m,_,x);for(let w=n;w<n+l;w++)Pn(d,w*p+t,1,a,m,_,x)}function Pn(d,t,n,a,l,p,m){p[0]=0,m[0]=-1e20,m[1]=Ir,l[0]=d[t];for(let _=1,x=0,w=0;_<a;_++){l[_]=d[t+_*n];const T=_*_;do{const I=p[x];w=(l[_]-l[I]+T-I*I)/(_-I)/2}while(w<=m[x]&&--x>-1);x++,p[x]=_,m[x]=w,m[x+1]=Ir}for(let _=0,x=0;_<a;_++){for(;m[x+1]<_;)x++;const w=p[x],T=_-w;d[t+_*n]=l[w]+T*T}}const Ji=c.v.layout_symbol["text-font"].default.join(",");class qi{constructor(t,n,a){this.requestManager=t,this.localIdeographFontFamily=n,this.entries={},this.lang=a}setURL(t){this.url=t}getGlyphs(t){return c._(this,void 0,void 0,function*(){const n=[];for(const p in t)for(const m of t[p])n.push(this._getAndCacheGlyphsPromise(p,m));const a=yield Promise.all(n),l={};for(const{stack:p,id:m,glyph:_}of a)l[p]||(l[p]={}),l[p][m]=_&&{id:_.id,bitmap:_.bitmap.clone(),metrics:_.metrics};return l})}_getAndCacheGlyphsPromise(t,n){return c._(this,void 0,void 0,function*(){let a=this.entries[t];a||(a=this.entries[t]={glyphs:{},requests:{},ranges:{}});let l=a.glyphs[n];return l!==void 0?{stack:t,id:n,glyph:l}:!this.url||this._charUsesLocalIdeographFontFamily(n)?(l=a.glyphs[n]=this._drawGlyph(a,t,n),{stack:t,id:n,glyph:l}):yield this._downloadAndCacheRangePromise(t,n)})}_downloadAndCacheRangePromise(t,n){return c._(this,void 0,void 0,function*(){const a=this.entries[t],l=Math.floor(n/256);if(a.ranges[l])return{stack:t,id:n,glyph:null};if(!a.requests[l]){const p=qi.loadGlyphRange(t,l,this.url,this.requestManager);a.requests[l]=p}try{const p=yield a.requests[l];for(const m in p)a.glyphs[+m]=p[+m];return a.ranges[l]=!0,{stack:t,id:n,glyph:p[n]||null}}catch(p){const m=a.glyphs[n]=this._drawGlyph(a,t,n);return this._warnOnMissingGlyphRange(m,l,n,p),{stack:t,id:n,glyph:m}}})}_warnOnMissingGlyphRange(t,n,a,l){const p=256*n,m=p+255,_=a.toString(16).padStart(4,"0").toUpperCase();c.w(`Unable to load glyph range ${n}, ${p}-${m}. Rendering codepoint U+${_} locally instead. ${l}`)}_charUsesLocalIdeographFontFamily(t){return!!this.localIdeographFontFamily&&c.q(t)}_drawGlyph(t,n,a){const l=n===Ji&&this.localIdeographFontFamily!==""&&this._charUsesLocalIdeographFontFamily(a),p=l?"ideographTinySDF":"tinySDF";t[p]||(t[p]=this._createTinySDF(l?this.localIdeographFontFamily:n));const m=t[p].draw(String.fromCodePoint(a)),_=new RegExp("^\\p{gc=Cf}+$","u").test(String.fromCodePoint(a));return{id:a,bitmap:new c.r({width:m.width||60,height:m.height||60},m.data),metrics:{width:_?0:m.glyphWidth/2||24,height:m.glyphHeight/2||24,left:m.glyphLeft/2+.5||0,top:m.glyphTop/2-27.5||-8,advance:_?0:m.glyphAdvance/2||24,isDoubleResolution:!0}}}_createTinySDF(t){const n=t?t.split(","):[];n.push("sans-serif");const a=n.map(l=>/[-\w]+/.test(l)?l:`'${CSS.escape(l)}'`).join(",");return new qi.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:a,fontWeight:this._fontWeight(n[0]),fontStyle:this._fontStyle(n[0]),lang:this.lang})}_fontStyle(t){return/italic/i.test(t)?"italic":/oblique/i.test(t)?"oblique":"normal"}_fontWeight(t){const n={thin:100,hairline:100,"extra light":200,"ultra light":200,light:300,normal:400,regular:400,medium:500,semibold:600,demibold:600,bold:700,"extra bold":800,"ultra bold":800,black:900,heavy:900,"extra black":950,"ultra black":950};let a;for(const[l,p]of Object.entries(n))new RegExp(`\\b${l}\\b`,"i").test(t)&&(a=`${p}`);return a}destroy(){for(const t in this.entries){const n=this.entries[t];n.tinySDF&&(n.tinySDF=null),n.ideographTinySDF&&(n.ideographTinySDF=null),n.glyphs={},n.requests={},n.ranges={}}this.entries={}}}qi.loadGlyphRange=function(d,t,n,a){return c._(this,void 0,void 0,function*(){const l=256*t,p=l+255,m=a.transformRequest(n.replace("{fontstack}",d).replace("{range}",`${l}-${p}`),"Glyphs"),_=yield c.n(m,new AbortController);if(!_||!_.data)throw new Error(`Could not load glyph range. range: ${t}, ${l}-${p}`);const x={};for(const w of c.o(_.data))x[w.id]=w;return x})},qi.TinySDF=class{constructor({fontSize:d=24,buffer:t=3,radius:n=8,cutoff:a=.25,fontFamily:l="sans-serif",fontWeight:p="normal",fontStyle:m="normal",lang:_=null}={}){this.buffer=t,this.cutoff=a,this.radius=n,this.lang=_;const x=this.size=d+4*t,w=this._createCanvas(x),T=this.ctx=w.getContext("2d",{willReadFrequently:!0});T.font=`${m} ${p} ${d}px ${l}`,T.textBaseline="alphabetic",T.textAlign="left",T.fillStyle="black",this.gridOuter=new Float64Array(x*x),this.gridInner=new Float64Array(x*x),this.f=new Float64Array(x),this.z=new Float64Array(x+1),this.v=new Uint16Array(x)}_createCanvas(d){const t=document.createElement("canvas");return t.width=t.height=d,t}draw(d){const{width:t,actualBoundingBoxAscent:n,actualBoundingBoxDescent:a,actualBoundingBoxLeft:l,actualBoundingBoxRight:p}=this.ctx.measureText(d),m=Math.ceil(n),_=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(p-l))),x=Math.min(this.size-this.buffer,m+Math.ceil(a)),w=_+2*this.buffer,T=x+2*this.buffer,I=Math.max(w*T,0),M=new Uint8ClampedArray(I),z={data:M,width:w,height:T,glyphWidth:_,glyphHeight:x,glyphTop:m,glyphLeft:0,glyphAdvance:t};if(_===0||x===0)return z;const{ctx:F,buffer:N,gridInner:G,gridOuter:U}=this;this.lang&&(F.lang=this.lang),F.clearRect(N,N,_,x),F.fillText(d,N,N+m);const $=F.getImageData(N,N,_,x);U.fill(Ir,0,I),G.fill(0,0,I);for(let K=0;K<x;K++)for(let Z=0;Z<_;Z++){const J=$.data[4*(K*_+Z)+3]/255;if(J===0)continue;const te=(K+N)*w+Z+N;if(J===1)U[te]=0,G[te]=Ir;else{const X=.5-J;U[te]=X>0?X*X:0,G[te]=X<0?X*X:0}}jr(U,0,0,w,T,w,this.f,this.v,this.z),jr(G,N,N,_,x,w,this.f,this.v,this.z);for(let K=0;K<I;K++){const Z=Math.sqrt(U[K])-Math.sqrt(G[K]);M[K]=Math.round(255-255*(Z/this.radius+this.cutoff))}return z}};class Vt{constructor(){this.specification=c.u.light.position}possiblyEvaluate(t,n){return c.F(t.expression.evaluate(n))}interpolate(t,n,a){return{x:c.G.number(t.x,n.x,a),y:c.G.number(t.y,n.y,a),z:c.G.number(t.z,n.z,a)}}}let ht;class Jr extends c.E{constructor(t){super(),ht=ht||new c.t({anchor:new c.D(c.u.light.anchor),position:new Vt,color:new c.D(c.u.light.color),intensity:new c.D(c.u.light.intensity)}),this._transitionable=new c.x(ht,void 0),this.setLight(t),this._transitioning=this._transitionable.untransitioned()}getLight(){return this._transitionable.serialize()}setLight(t,n={}){if(!this._validate(c.y,t,n))for(const a in t){const l=t[a];a.endsWith(c.z)?this._transitionable.setTransition(a.slice(0,-c.z.length),l):this._transitionable.setValue(a,l)}}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.B(this,t.call(c.C,{value:n,style:{glyphs:!0,sprite:!0},styleSpec:c.u}))}}const gr=new c.t({"sky-color":new c.D(c.u.sky["sky-color"]),"horizon-color":new c.D(c.u.sky["horizon-color"]),"fog-color":new c.D(c.u.sky["fog-color"]),"fog-ground-blend":new c.D(c.u.sky["fog-ground-blend"]),"horizon-fog-blend":new c.D(c.u.sky["horizon-fog-blend"]),"sky-horizon-blend":new c.D(c.u.sky["sky-horizon-blend"]),"atmosphere-blend":new c.D(c.u.sky["atmosphere-blend"])});class Qr extends c.E{constructor(t){super(),this._transitionable=new c.x(gr,void 0),this.setSky(t),this._transitioning=this._transitionable.untransitioned(),this.recalculate(new c.H(0))}setSky(t,n={}){if(!this._validate(c.J,t,n)){t||(t={"sky-color":"transparent","horizon-color":"transparent","fog-color":"transparent","fog-ground-blend":1,"atmosphere-blend":0});for(const a in t){const l=t[a];a.endsWith(c.z)?this._transitionable.setTransition(a.slice(0,-c.z.length),l):this._transitionable.setValue(a,l)}}}getSky(){return this._transitionable.serialize()}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==null?void 0:a.validate)!==!1&&c.B(this,t.call(c.C,c.e({value:n,style:{glyphs:!0,sprite:!0},styleSpec:c.u})))}calculateFogBlendOpacity(t){return t<60?0:t<70?(t-60)/10:1}}class Qi{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 l=[];let p=t.length%2==1?-t[t.length-1]*a:0,m=t[0]*a,_=!0;l.push({left:p,right:m,isDash:_,zeroLength:t[0]===0});let x=t[0];for(let w=1;w<t.length;w++){_=!_;const T=t[w];p=x*a,x+=T,m=x*a,l.push({left:p,right:m,isDash:_,zeroLength:T===0})}return l}addRoundDash(t,n,a){const l=n/2;for(let p=-a;p<=a;p++){const m=this.width*(this.nextRow+a+p);let _=0,x=t[_];for(let w=0;w<this.width;w++){w/x.right>1&&(x=t[++_]);const T=Math.abs(w-x.left),I=Math.abs(w-x.right),M=Math.min(T,I);let z;const F=p/a*(l+1);if(x.isDash){const N=l-Math.abs(F);z=Math.sqrt(M*M+N*N)}else z=l-Math.sqrt(M*M+F*F);this.data[m+w]=Math.max(0,Math.min(255,z+128))}}}addRegularDash(t){for(let _=t.length-1;_>=0;--_){const x=t[_],w=t[_+1];x.zeroLength?t.splice(_,1):w&&w.isDash===x.isDash&&(w.left=x.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 l=this.width*this.nextRow;let p=0,m=t[p];for(let _=0;_<this.width;_++){_/m.right>1&&(m=t[++p]);const x=Math.abs(_-m.left),w=Math.abs(_-m.right),T=Math.min(x,w);this.data[l+_]=Math.max(0,Math.min(255,(m.isDash?T:-T)+128))}}addDash(t,n){const a=n?7:0,l=2*a+1;if(this.nextRow+l>this.height)return c.w("LineAtlas out of space"),null;let p=0;for(let _=0;_<t.length;_++)p+=t[_];if(p!==0){const _=this.width/p,x=this.getDashRanges(t,this.width,_);n?this.addRoundDash(x,_,a):this.addRegularDash(x)}const m={y:this.nextRow+a,height:2*a,width:p};return this.nextRow+=l,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))}}const Er="maplibre_preloaded_worker_pool";class Li{constructor(){this.active={}}acquire(t){if(!this.workers)for(this.workers=[];this.workers.length<Li.workerCount;)this.workers.push(new Worker(c.c.WORKER_URL));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 Pi=Math.floor(st.hardwareConcurrency/2);let ri,_i;function en(){return ri||(ri=new Li),ri}Li.workerCount=c.K(globalThis)?Math.max(Math.min(Pi,3),1):1;class tn{constructor(t,n){this.workerPool=t,this.actors=[],this.currentActor=0,this.id=n;const a=this.workerPool.acquire(n);for(let l=0;l<a.length;l++){const p=new c.L(a[l],n);p.name=`Worker ${l}`,this.actors.push(p)}if(!this.actors.length)throw new Error("No actors found")}broadcast(t,n){const a=[];for(const l of this.actors)a.push(l.sendAsync({type:t,data:n}));return Promise.all(a)}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(t=!0){this.actors.forEach(n=>{n.remove()}),this.actors=[],t&&this.workerPool.release(this.id)}registerMessageHandler(t,n){for(const a of this.actors)a.registerMessageHandler(t,n)}unregisterMessageHandler(t){for(const n of this.actors)n.unregisterMessageHandler(t)}}function Nr(){return _i||(_i=new tn(en(),c.M),_i.registerMessageHandler("GR",(d,t,n)=>c.m(t,n))),_i}function oi(d,t){const n=c.N();return c.O(n,n,[1,1,0]),c.Q(n,n,[.5*d.width,.5*d.height,1]),d.calculatePosMatrix?c.S(n,n,d.calculatePosMatrix(t.toUnwrapped())):n}function Vn(d,t,n,a,l,p,m){var _;const x=function(M,z,F){if(M)for(const N of M){const G=z[N];if(G&&G.source===F&&G.type==="fill-extrusion")return!0}else for(const N in z){const G=z[N];if(G.source===F&&G.type==="fill-extrusion")return!0}return!1}((_=l==null?void 0:l.layers)!==null&&_!==void 0?_:null,t,d.id),w=p.maxPitchScaleFactor(),T=d.tilesIn(a,w,x);T.sort(Mi);const I=[];for(const M of T)I.push({wrappedTileID:M.tileID.wrapped().key,queryResults:M.tile.queryRenderedFeatures(t,n,d.getState(),M.queryGeometry,M.cameraQueryGeometry,M.scale,l,p,w,oi(p,M.tileID),m?(z,F)=>m(M.tileID,z,F):void 0)});return function(M,z){for(const F in M)for(const N of M[F])er(N,z);return M}(function(M){const z={},F={};for(const N of M){const G=N.queryResults,U=N.wrappedTileID,$=F[U]=F[U]||{};for(const K in G){const Z=G[K],J=$[K]=$[K]||{},te=z[K]=z[K]||[];for(const X of Z)J[X.featureIndex]||(J[X.featureIndex]=!0,te.push(X))}}return z}(I),d)}function Mi(d,t){const n=d.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}function er(d,t){const n=d.feature,a=t.getFeatureState(n.layer["source-layer"],n.id);n.source=n.layer.source,n.layer["source-layer"]&&(n.sourceLayer=n.layer["source-layer"]),n.state=a}function Ur(d,t,n,a){return c._(this,void 0,void 0,function*(){let l=d;if(d.url?l=(yield c.j(t.transformRequest(d.url,"Source"),n)).data:yield st.frameAsync(n,a),!l)return null;const p=c.U(c.e(l,d),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);return"vector_layers"in l&&l.vector_layers&&(p.vectorLayerIds=l.vector_layers.map(m=>m.id)),p})}class zt{constructor(t,n){t&&(n?this.setSouthWest(t).setNorthEast(n):Array.isArray(t)&&(t.length===4?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1])))}setNorthEast(t){return this._ne=t instanceof c.V?new c.V(t.lng,t.lat):c.V.convert(t),this}setSouthWest(t){return this._sw=t instanceof c.V?new c.V(t.lng,t.lat):c.V.convert(t),this}extend(t){const n=this._sw,a=this._ne;let l,p;if(t instanceof c.V)l=t,p=t;else{if(!(t instanceof zt))return Array.isArray(t)?t.length===4||t.every(Array.isArray)?this.extend(zt.convert(t)):this.extend(c.V.convert(t)):t&&("lng"in t||"lon"in t)&&"lat"in t?this.extend(c.V.convert(t)):this;if(l=t._sw,p=t._ne,!l||!p)return this}return n||a?(n.lng=Math.min(l.lng,n.lng),n.lat=Math.min(l.lat,n.lat),a.lng=Math.max(p.lng,a.lng),a.lat=Math.max(p.lat,a.lat)):(this._sw=new c.V(l.lng,l.lat),this._ne=new c.V(p.lng,p.lat)),this}getCenter(){return new c.V((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 c.V(this.getWest(),this.getNorth())}getSouthEast(){return new c.V(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(t){const{lng:n,lat:a}=c.V.convert(t);let l=this._sw.lng<=n&&n<=this._ne.lng;return this._sw.lng>this._ne.lng&&(l=this._sw.lng>=n&&n>=this._ne.lng),this._sw.lat<=a&&a<=this._ne.lat&&l}intersects(t){if(!((t=zt.convert(t)).getNorth()>=this.getSouth()&&t.getSouth()<=this.getNorth()))return!1;const n=Math.abs(this.getEast()-this.getWest()),a=Math.abs(t.getEast()-t.getWest());if(n>=360||a>=360)return!0;const l=c.W(this.getWest(),-180,180),p=c.W(this.getEast(),-180,180),m=c.W(t.getWest(),-180,180),_=c.W(t.getEast(),-180,180),x=l>p,w=m>_;return!(!x||!w)||(x?_>=l||m<=p:w?p>=m||l<=_:m<=p&&_>=l)}static convert(t){return t instanceof zt?t:t&&new zt(t)}static fromLngLat(t,n=0){const a=360*n/40075017,l=a/Math.cos(Math.PI/180*t.lat);return new zt(new c.V(t.lng-l,t.lat-a),new c.V(t.lng+l,t.lat+a))}adjustAntiMeridian(){const t=new c.V(this._sw.lng,this._sw.lat),n=new c.V(this._ne.lng,this._ne.lat);return new zt(t,t.lng>n.lng?new c.V(n.lng+360,n.lat):n)}}class jn{constructor(t,n,a){this.bounds=zt.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.Y(this.bounds.getWest())*n),l=Math.floor(c.X(this.bounds.getNorth())*n),p=Math.ceil(c.Y(this.bounds.getEast())*n),m=Math.ceil(c.X(this.bounds.getSouth())*n);return t.x>=a&&t.x<p&&t.y>=l&&t.y<m}}class ds extends c.E{constructor(t,n,a,l){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.e(this,c.U(n,["url","scheme","tileSize","promoteId","encoding"])),this._options=c.e({type:"vector"},n),this._collectResourceTiming=n.collectResourceTiming,this.tileSize!==512)throw new Error("vector tile sources must have a tileSize of 512");this.setEventedParent(l)}load(){return c._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new c.l("dataloading",{dataType:"source"})),this._tileJSONRequest=new AbortController;try{const t=yield Ur(this._options,this.map._requestManager,this._tileJSONRequest,this.map._ownerWindow);this._tileJSONRequest=null,this._loaded=!0,this.map.style.tileManagers[this.id].clearTiles(),t&&(c.e(this,t),t.bounds&&(this.tileBounds=new jn(t.bounds,this.minzoom,this.maxzoom)),this.fire(new c.l("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new c.l("data",{dataType:"source",sourceDataType:"content"})))}catch(t){this._tileJSONRequest=null,this._loaded=!0,c.Z(t)||this.fire(new c.k(t))}})}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.abort(),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.abort(),this._tileJSONRequest=null)}serialize(){return c.e({},this._options)}loadTile(t){return c._(this,void 0,void 0,function*(){const n=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),a={request:this.map._requestManager.transformRequest(n,"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,subdivisionGranularity:this.map.style.projection.subdivisionGranularity,encoding:this.encoding,overzoomParameters:this._getOverzoomParameters(t)};a.request.collectResourceTiming=this._collectResourceTiming;let l="RT";if(t.actor&&t.state!=="expired"){if(t.state==="loading")return new Promise((p,m)=>{t.reloadPromise={resolve:p,reject:m}})}else t.actor=this.dispatcher.getActor(),l="LT";t.abortController=new AbortController;try{const p=yield t.actor.sendAsync({type:l,data:a},t.abortController);if(delete t.abortController,t.aborted)return;this._afterTileLoadWorkerResponse(t,p)}catch(p){if(delete t.abortController,t.aborted)return;if(p&&p.status!==404)throw p;this._afterTileLoadWorkerResponse(t,null)}})}_getOverzoomParameters(t){if(t.tileID.canonical.z<=this.maxzoom||this.map._zoomLevelsToOverscale===void 0)return;const n=t.tileID.scaledTo(this.maxzoom).canonical,a=n.url(this.tiles,this.map.getPixelRatio(),this.scheme);return{maxZoomTileID:n,overzoomRequest:this.map._requestManager.transformRequest(a,"Tile")}}_afterTileLoadWorkerResponse(t,n){if(n&&n.resourceTiming&&(t.resourceTiming=n.resourceTiming),n&&this.map._refreshExpiredTiles&&t.setExpiryData(n),t.loadVectorData(n,this.map.painter),t.reloadPromise){const a=t.reloadPromise;t.reloadPromise=null,this.loadTile(t).then(a.resolve).catch(a.reject)}}abortTile(t){return c._(this,void 0,void 0,function*(){t.abortController&&(t.abortController.abort(),delete t.abortController),t.actor&&(yield t.actor.sendAsync({type:"AT",data:{uid:t.uid,type:this.type,source:this.id}}))})}unloadTile(t){return c._(this,void 0,void 0,function*(){t.unloadVectorData(),t.actor&&(yield t.actor.sendAsync({type:"RMT",data:{uid:t.uid,type:this.type,source:this.id}}))})}hasTransition(){return!1}}class Nn extends c.E{constructor(t,n,a,l){super(),this.id=t,this.dispatcher=a,this.setEventedParent(l),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=c.e({type:"raster"},n),c.e(this,c.U(n,["url","scheme","tileSize"]))}load(){return c._(this,arguments,void 0,function*(t=!1){this._loaded=!1,this.fire(new c.l("dataloading",{dataType:"source"})),this._tileJSONRequest=new AbortController;try{const n=yield Ur(this._options,this.map._requestManager,this._tileJSONRequest,this.map._ownerWindow);this._tileJSONRequest=null,this._loaded=!0,n&&(c.e(this,n),n.bounds&&(this.tileBounds=new jn(n.bounds,this.minzoom,this.maxzoom)),this.fire(new c.l("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new c.l("data",{dataType:"source",sourceDataType:"content",sourceDataChanged:t})))}catch(n){this._tileJSONRequest=null,this._loaded=!0,c.Z(n)||this.fire(new c.k(n))}})}loaded(){return this._loaded}onAdd(t){this.map=t,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}setSourceProperty(t){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null),t(),this.load(!0)}setTiles(t){return this.setSourceProperty(()=>{this._options.tiles=t}),this}setUrl(t){return this.setSourceProperty(()=>{this.url=t,this._options.url=t}),this}serialize(){return c.e({},this._options)}hasTile(t){return!this.tileBounds||this.tileBounds.contains(t.canonical)}loadTile(t){return c._(this,void 0,void 0,function*(){const n=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);t.abortController=new AbortController;try{const a=yield hi.getImage(this.map._requestManager.transformRequest(n,"Tile"),t.abortController,this.map._refreshExpiredTiles);if(delete t.abortController,t.aborted)return void(t.state="unloaded");if(a&&a.data){this.map._refreshExpiredTiles&&(a.cacheControl||a.expires)&&t.setExpiryData({cacheControl:a.cacheControl,expires:a.expires});const l=this.map.painter.context,p=l.gl,m=a.data;t.texture=this.map.painter.getTileTexture(m.width),t.texture?t.texture.update(m,{useMipmap:!0}):(t.texture=new c.T(l,m,p.RGBA,{useMipmap:!0}),t.texture.bind(p.LINEAR,p.CLAMP_TO_EDGE,p.LINEAR_MIPMAP_NEAREST)),t.state="loaded"}}catch(a){if(delete t.abortController,t.aborted)t.state="unloaded";else if(a)throw t.state="errored",a}})}abortTile(t){return c._(this,void 0,void 0,function*(){t.abortController&&(t.abortController.abort(),delete t.abortController)})}unloadTile(t){return c._(this,void 0,void 0,function*(){t.texture&&this.map.painter.saveTileTexture(t.texture)})}hasTransition(){return!1}}class Mn extends Nn{constructor(t,n,a,l){super(t,n,a,l),this.type="raster-dem",this.maxzoom=22,this._options=c.e({type:"raster-dem"},n),this.encoding=n.encoding||"mapbox",this.redFactor=n.redFactor,this.greenFactor=n.greenFactor,this.blueFactor=n.blueFactor,this.baseShift=n.baseShift}loadTile(t){return c._(this,void 0,void 0,function*(){const n=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),a=this.map._requestManager.transformRequest(n,"Tile");t.neighboringTiles=this._getNeighboringTiles(t.tileID),t.abortController=new AbortController;try{const l=yield hi.getImage(a,t.abortController,this.map._refreshExpiredTiles);if(delete t.abortController,t.aborted)return void(t.state="unloaded");if(l&&l.data){const p=l.data;this.map._refreshExpiredTiles&&(l.cacheControl||l.expires)&&t.setExpiryData({cacheControl:l.cacheControl,expires:l.expires});const m=c.b(p)&&c.$()?p:yield this.readImageNow(p),_={type:this.type,uid:t.uid,source:this.id,rawImageData:m,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};if(!t.actor||t.state==="expired"){t.actor=this.dispatcher.getActor();const x=yield t.actor.sendAsync({type:"LDT",data:_});t.dem=x,t.needsHillshadePrepare=!0,t.needsTerrainPrepare=!0,t.state="loaded"}}}catch(l){if(delete t.abortController,t.aborted)t.state="unloaded";else if(l)throw t.state="errored",l}})}readImageNow(t){return c._(this,void 0,void 0,function*(){if(typeof VideoFrame<"u"&&c.a0()){const n=t.width+2,a=t.height+2;try{return new c.R({width:n,height:a},yield c.a1(t,-1,-1,n,a))}catch{}}return st.getImageData(t,1)})}_getNeighboringTiles(t){const n=t.canonical,a=Math.pow(2,n.z),l=(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,x={};return x[new c.a2(t.overscaledZ,p,n.z,l,n.y).key]={backfilled:!1},x[new c.a2(t.overscaledZ,_,n.z,m,n.y).key]={backfilled:!1},n.y>0&&(x[new c.a2(t.overscaledZ,p,n.z,l,n.y-1).key]={backfilled:!1},x[new c.a2(t.overscaledZ,t.wrap,n.z,n.x,n.y-1).key]={backfilled:!1},x[new c.a2(t.overscaledZ,_,n.z,m,n.y-1).key]={backfilled:!1}),n.y+1<a&&(x[new c.a2(t.overscaledZ,p,n.z,l,n.y+1).key]={backfilled:!1},x[new c.a2(t.overscaledZ,t.wrap,n.z,n.x,n.y+1).key]={backfilled:!1},x[new c.a2(t.overscaledZ,_,n.z,m,n.y+1).key]={backfilled:!1}),x}unloadTile(t){return c._(this,void 0,void 0,function*(){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&&(yield t.actor.sendAsync({type:"RDT",data:{type:this.type,uid:t.uid,source:this.id}}))})}}function Gr(d){return d&&d.length!==0?typeof d[0]=="number"?[d]:d.flatMap(t=>Gr(t)):[]}function In(d){return d.type==="GeometryCollection"?d.geometries.flatMap(t=>In(t)):Gr(d.coordinates)}function Un(d){const t=new zt;let n;switch(d.type){case"FeatureCollection":n=d.features.flatMap(a=>In(a.geometry));break;case"Feature":n=In(d.geometry);break;default:n=In(d)}if(n.length===0)return t;for(let a=0;a<n.length;a++){const[l,p]=n[a];t.extend([l,p])}return t}class rn extends c.E{constructor(t,n,a,l){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._isUpdatingWorker=!1,this._pendingWorkerUpdate={data:n.data},this.actor=a.getActor(),this.setEventedParent(l),this._data=typeof n.data=="string"?{url:n.data}:{geojson:n.data},this._options=c.e({},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,n.clusterMaxZoom!==void 0&&this.maxzoom<=n.clusterMaxZoom&&c.w(`The maxzoom value "${this.maxzoom}" is expected to be greater than the clusterMaxZoom value "${n.clusterMaxZoom}".`),this.workerOptions=c.e({source:this.id,cluster:n.cluster||!1,geojsonVtOptions:{buffer:this._pixelsToTileUnits(n.buffer!==void 0?n.buffer:128),tolerance:this._pixelsToTileUnits(n.tolerance!==void 0?n.tolerance:.375),extent:c.a5,maxZoom:this.maxzoom,lineMetrics:n.lineMetrics||!1,generateId:n.generateId||!1},superclusterOptions:{maxZoom:this._getClusterMaxZoom(n.clusterMaxZoom),minPoints:Math.max(2,n.clusterMinPoints||2),extent:c.a5,radius:this._pixelsToTileUnits(n.clusterRadius||50),log:!1,generateId:n.generateId||!1},clusterProperties:n.clusterProperties,filter:n.filter},n.workerOptions),typeof this.promoteId=="string"&&(this.workerOptions.promoteId=this.promoteId)}_hasPendingWorkerUpdate(){return this._pendingWorkerUpdate.data!==void 0||this._pendingWorkerUpdate.diff!==void 0||this._pendingWorkerUpdate.optionsChanged}_pixelsToTileUnits(t){return t*(c.a5/this.tileSize)}_getClusterMaxZoom(t){const n=t?Math.round(t):this.maxzoom-1;return Number.isInteger(t)||t===void 0||c.w(`Integer expected for option 'clusterMaxZoom': provided value "${t}" rounded to "${n}"`),n}load(){return c._(this,void 0,void 0,function*(){yield this._updateWorkerData()})}onAdd(t){this.map=t,this.load()}setData(t,n){this._data=typeof t=="string"?{url:t}:{geojson:t},this._pendingWorkerUpdate={data:t};const a=this._updateWorkerData();return n?a:this}updateData(t,n){this._pendingWorkerUpdate.diff=c.a6(this._pendingWorkerUpdate.diff,t);const a=this._updateWorkerData();return n?a:this}getData(){return c._(this,void 0,void 0,function*(){const t=c.e({type:this.type},this.workerOptions);return this.actor.sendAsync({type:"GD",data:t})})}getBounds(){return c._(this,void 0,void 0,function*(){return Un(yield this.getData())})}setClusterOptions(t){return this.workerOptions.cluster=t.cluster,t.clusterRadius!==void 0&&(this.workerOptions.superclusterOptions.radius=this._pixelsToTileUnits(t.clusterRadius)),t.clusterMaxZoom!==void 0&&(this.workerOptions.superclusterOptions.maxZoom=this._getClusterMaxZoom(t.clusterMaxZoom)),this._pendingWorkerUpdate.optionsChanged=!0,this._updateWorkerData(),this}getClusterExpansionZoom(t){return this.actor.sendAsync({type:"GCEZ",data:{type:this.type,clusterId:t,source:this.id}})}getClusterChildren(t){return this.actor.sendAsync({type:"GCC",data:{type:this.type,clusterId:t,source:this.id}})}getClusterLeaves(t,n,a){return this.actor.sendAsync({type:"GCL",data:{type:this.type,source:this.id,clusterId:t,limit:n,offset:a}})}_updateWorkerData(){return c._(this,void 0,void 0,function*(){if(this._isUpdatingWorker)return;if(!this._hasPendingWorkerUpdate())return void c.w(`No pending worker updates for GeoJSONSource ${this.id}.`);const{data:t,diff:n}=this._pendingWorkerUpdate,a=this._getLoadGeoJSONParameters(t,n);t!==void 0?this._pendingWorkerUpdate.data=void 0:n&&(this._pendingWorkerUpdate.diff=void 0),this._pendingWorkerUpdate.optionsChanged=void 0,yield this._dispatchWorkerUpdate(a)})}_getLoadGeoJSONParameters(t,n){const a=c.e({type:this.type},this.workerOptions);return typeof t=="string"?(a.request=this.map._requestManager.transformRequest(st.resolveURL(t),"Source"),a.request.collectResourceTiming=this._collectResourceTiming,a):t!==void 0?(a.data=t,a):(n&&(a.dataDiff=n),a)}_dispatchWorkerUpdate(t){return c._(this,void 0,void 0,function*(){this._isUpdatingWorker=!0,this.fire(new c.l("dataloading",{dataType:"source"}));try{const n=yield this.actor.sendAsync({type:"LD",data:t});if(this._isUpdatingWorker=!1,this._removed||n.abandoned)return void this.fire(new c.l("dataabort",{dataType:"source"}));n.data&&(this._data={geojson:n.data});const a=this._applyDiffToSource(t.dataDiff),l=this._getShouldReloadTileOptions(a),p={dataType:"source"};this._applyResourceTiming(p,n),this.fire(new c.l("data",Object.assign(Object.assign({},p),{sourceDataType:"metadata"}))),this.fire(new c.l("data",Object.assign(Object.assign({},p),{sourceDataType:"content",shouldReloadTileOptions:l})))}catch(n){if(this._isUpdatingWorker=!1,this._removed)return void this.fire(new c.l("dataabort",{dataType:"source"}));this.fire(new c.k(n))}finally{this._hasPendingWorkerUpdate()&&this._updateWorkerData()}})}_applyResourceTiming(t,n){var a;if(!this._collectResourceTiming)return;const l=(a=n.resourceTiming)===null||a===void 0?void 0:a[this.id];if(!l)return;const p=l.slice(0);p!=null&&p.length&&c.e(t,{resourceTiming:p})}_applyDiffToSource(t){if(!t)return;const n=typeof this.promoteId=="string"?this.promoteId:void 0;if(!this._data.url&&!this._data.updateable){const l=c.a7(this._data.geojson,n);if(!l)throw new Error(`GeoJSONSource "${this.id}": GeoJSON data is not compatible with updateData`);this._data={updateable:l}}if(!this._data.updateable)return;const a=c.a8(this._data.updateable,t,n);return t.removeAll||this._options.cluster?void 0:a}_getShouldReloadTileOptions(t){if(t)return{affectedBounds:t.filter(Boolean).map(n=>Un(n))}}shouldReloadTile(t,{affectedBounds:n}){if(t.state==="loading")return!0;if(t.state==="unloaded")return!1;const{buffer:a,extent:l}=this.workerOptions.geojsonVtOptions,p=function({x:m,y:_,z:x},w=0){const T=c.a3((m-w)/Math.pow(2,x)),I=c.a4((_+1+w)/Math.pow(2,x)),M=c.a3((m+1+w)/Math.pow(2,x)),z=c.a4((_-w)/Math.pow(2,x));return new zt([T,I],[M,z])}(t.tileID.canonical,a/l);for(const m of n)if(p.intersects(m))return!0;return!1}loaded(){return!this._isUpdatingWorker&&!this._hasPendingWorkerUpdate()}loadTile(t){return c._(this,void 0,void 0,function*(){const n=t.actor?"RT":"LT";t.actor=this.actor;const a={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,subdivisionGranularity:this.map.style.projection.subdivisionGranularity};t.abortController=new AbortController;const l=yield this.actor.sendAsync({type:n,data:a},t.abortController);delete t.abortController,t.unloadVectorData(),t.aborted||t.loadVectorData(l,this.map.painter,n==="RT")})}abortTile(t){return c._(this,void 0,void 0,function*(){t.abortController&&(t.abortController.abort(),delete t.abortController),t.aborted=!0})}unloadTile(t){return c._(this,void 0,void 0,function*(){t.unloadVectorData(),yield this.actor.sendAsync({type:"RMT",data:{uid:t.uid,type:this.type,source:this.id}})})}onRemove(){this._removed=!0,this.actor.sendAsync({type:"RS",data:{type:this.type,source:this.id}})}serialize(){return c.e({},this._options,{type:this.type,data:this._data.updateable?{type:"FeatureCollection",features:Array.from(this._data.updateable.values())}:this._data.url||this._data.geojson})}hasTransition(){return!1}}class nn extends c.E{constructor(t,n,a,l){super(),this.flippedWindingOrder=!1,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(l),this.options=n}load(t){return c._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new c.l("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=new AbortController;try{const n=yield hi.getImage(this.map._requestManager.transformRequest(this.url,"Image"),this._request);this._request=null,this._loaded=!0,n&&n.data&&(this.image=n.data,t&&(this.coordinates=t),this._finishLoading())}catch(n){this._request=null,this._loaded=!0,c.Z(n)||this.fire(new c.k(n))}})}loaded(){return this._loaded}updateImage(t){return t.url?(this._request&&(this._request.abort(),this._request=null),this.options.url=t.url,this.load(t.coordinates).finally(()=>{this.texture=null}),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new c.l("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(t){this.map=t,this.load()}onRemove(){this._request&&(this._request.abort(),this._request=null)}setCoordinates(t){this.coordinates=t;const n=t.map(c.a9.fromLngLat);var a;return this.tileID=function(l){const p=c.aa.fromPoints(l),m=p.width(),_=p.height(),x=Math.max(m,_),w=Math.max(0,Math.floor(-Math.log(x)/Math.LN2)),T=Math.pow(2,w);return new c.ac(w,Math.floor((p.minX+p.maxX)/2*T),Math.floor((p.minY+p.maxY)/2*T))}(n),this.terrainTileRanges=this._getOverlappingTileRanges(n),this.minzoom=this.maxzoom=this.tileID.z,this.tileCoords=n.map(l=>this.tileID.getTilePoint(l)._round()),this.flippedWindingOrder=((a=this.tileCoords)[1].x-a[0].x)*(a[2].y-a[0].y)-(a[1].y-a[0].y)*(a[2].x-a[0].x)<0,this.fire(new c.l("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.texture||(this.texture=new c.T(t,this.image,n.RGBA),this.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE));let a=!1;for(const l in this.tiles){const p=this.tiles[l];p.state!=="loaded"&&(p.state="loaded",p.texture=this.texture,a=!0)}a&&this.fire(new c.l("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}loadTile(t){return c._(this,void 0,void 0,function*(){this.tileID&&this.tileID.equals(t.tileID.canonical)?(this.tiles[String(t.tileID.wrap)]=t,t.buckets={}):t.state="errored"})}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}_getOverlappingTileRanges(t){const{minX:n,minY:a,maxX:l,maxY:p}=c.aa.fromPoints(t),m={};for(let _=0;_<=c.ab;_++){const x=Math.pow(2,_),w=Math.floor(n*x),T=Math.floor(a*x),I=Math.floor(l*x),M=Math.floor(p*x),z=(w%x+x)%x,F=I%x,N=Math.floor(w/x),G=Math.floor(I/x);m[_]={minWrap:N,maxWrap:G,minTileXWrapped:z,maxTileXWrapped:F,minTileY:T,maxTileY:M}}return m}}class En extends nn{constructor(t,n,a,l){super(t,n,a,l),this.roundZoom=!0,this.type="video",this.options=n}load(){return c._(this,void 0,void 0,function*(){this._loaded=!1;const t=this.options;this.urls=[];for(const n of t.urls)this.urls.push(this.map._requestManager.transformRequest(n,"Source").url);try{const n=yield c.ad(this.urls);if(this._loaded=!0,!n)return;this.video=n,this.video.loop=!0,this.video.addEventListener("playing",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading()}catch(n){this.fire(new c.k(n))}})}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.k(new c.ae(`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.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 c.T(t,this.video,n.RGBA),this.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE));let a=!1;for(const l in this.tiles){const p=this.tiles[l];p.state!=="loaded"&&(p.state="loaded",p.texture=this.texture,a=!0)}a&&this.fire(new c.l("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class ps extends nn{constructor(t,n,a,l){super(t,n,a,l),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.k(new c.ae(`sources.${t}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new c.k(new c.ae(`sources.${t}`,null,'missing required property "coordinates"'))),n.animate&&typeof n.animate!="boolean"&&this.fire(new c.k(new c.ae(`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.k(new c.ae(`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.k(new c.ae(`sources.${t}`,null,'missing required property "canvas"'))),this.options=n,this.animate=n.animate===void 0||n.animate}load(){return c._(this,void 0,void 0,function*(){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.k(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.texture?(t||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):(this.texture=new c.T(n,this.canvas,a.RGBA,{premultiply:!0}),this.texture.bind(a.LINEAR,a.CLAMP_TO_EDGE));let l=!1;for(const p in this.tiles){const m=this.tiles[p];m.state!=="loaded"&&(m.state="loaded",m.texture=this.texture,l=!0)}l&&this.fire(new c.l("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"canvas",animate:this.animate,canvas:this.options.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 Zs={},fs=d=>{switch(d){case"geojson":return rn;case"image":return nn;case"raster":return Nn;case"raster-dem":return Mn;case"vector":return ds;case"video":return En;case"canvas":return ps}return Zs[d]},oe="RTLPluginLoaded";class A extends c.E{constructor(){super(...arguments),this.status="unavailable",this.url=null,this.dispatcher=Nr()}_syncState(t){return this.status=t,this.dispatcher.broadcast("SRPS",{pluginStatus:t,pluginURL:this.url}).catch(n=>{throw this.status="error",n})}getRTLTextPluginStatus(){return this.status}clearRTLTextPlugin(){this.status="unavailable",this.url=null}setRTLTextPlugin(t){return c._(this,arguments,void 0,function*(n,a=!1){if(this.url)throw new Error("setRTLTextPlugin cannot be called multiple times.");if(this.url=st.resolveURL(n),!this.url)throw new Error(`requested url ${n} is invalid`);if(this.status==="unavailable"){if(!a)return this._requestImport();this.status="deferred",this._syncState(this.status)}else if(this.status==="requested")return this._requestImport()})}_requestImport(){return c._(this,void 0,void 0,function*(){yield this._syncState("loading"),this.status="loaded",this.fire(new c.l(oe))})}lazyLoad(){this.status==="unavailable"?this.status="requested":this.status==="deferred"&&this._requestImport()}}let k=null;function B(){return k||(k=new A),k}var W,ee;(function(d){d[d.Base=0]="Base",d[d.Parent=1]="Parent"})(W||(W={})),function(d){d[d.Departing=0]="Departing",d[d.Incoming=1]="Incoming"}(ee||(ee={}));class ce{constructor(t,n){this.timeAdded=0,this.fadeEndTime=0,this.fadeOpacity=1,this.tileID=t,this.uid=c.af(),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.rttFingerprint={},this.expiredRequestCount=0,this.state="loading"}isRenderable(t){return this.hasData()&&(!this.fadeEndTime||this.fadeOpacity>0)&&(t||!this.holdingForSymbolFade())}setCrossFadeLogic({fadingRole:t,fadingDirection:n,fadingParentID:a,fadeEndTime:l}){this.resetFadeLogic(),this.fadingRole=t,this.fadingDirection=n,this.fadingParentID=a,this.fadeEndTime=l}setSelfFadeLogic(t){this.resetFadeLogic(),this.selfFading=!0,this.fadeEndTime=t}resetFadeLogic(){this.fadingRole=null,this.fadingDirection=null,this.fadingParentID=null,this.selfFading=!1,this.timeAdded=Re(),this.fadeEndTime=0,this.fadeOpacity=1}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.latestFeatureIndex.encoding=t.encoding):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData,this.latestFeatureIndex.encoding=this.latestEncoding)),this.collisionBoxArray=t.collisionBoxArray,this.buckets=function(l,p){const m={};if(!p)return m;for(const _ of l){const x=_.layerIds.map(w=>p.getLayer(w)).filter(Boolean);if(x.length!==0){_.layers=x,_.stateDependentLayerIds&&(_.stateDependentLayers=_.stateDependentLayerIds.map(w=>x.filter(T=>T.id===w)[0]));for(const w of x)m[w.id]=_}}return m}(t.buckets,n==null?void 0:n.style),this.hasSymbolBuckets=!1;for(const l in this.buckets){const p=this.buckets[l];if(p instanceof c.ah){if(this.hasSymbolBuckets=!0,!a)break;p.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const l in this.buckets){const p=this.buckets[l];if(p instanceof c.ah&&p.hasRTLText){this.hasRTLText=!0,B().lazyLoad();break}}this.queryPadding=0;for(const l in this.buckets){const p=this.buckets[l];this.queryPadding=Math.max(this.queryPadding,n.style.getLayer(l).queryRadius(p))}t.imageAtlas&&(this.imageAtlas=t.imageAtlas),t.glyphAtlasImage&&(this.glyphAtlasImage=t.glyphAtlasImage),this.dashPositions=t.dashPositions}else this.collisionBoxArray=new c.ag}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.dashPositions&&(this.dashPositions=null),this.latestFeatureIndex=null,this.state="unloaded"}getBucket(t){return this.buckets[t.id]}upload(t){for(const a in this.buckets){const l=this.buckets[a];l.uploadPending()&&l.upload(t)}const n=t.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new c.T(t,this.imageAtlas.image,n.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new c.T(t,this.glyphAtlasImage,n.ALPHA),this.glyphAtlasImage=null)}prepare(t){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture)}queryRenderedFeatures(t,n,a,l,p,m,_,x,w,T,I){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:l,cameraQueryGeometry:p,scale:m,tileSize:this.tileSize,pixelPosMatrix:T,transform:x,params:_,queryPadding:this.queryPadding*w,getElevation:I},t,n,a):{}}querySourceFeatures(t,n){const a=this.latestFeatureIndex;if(!a||!a.rawTileData)return;const l=a.loadVTLayers(),p=n&&n.sourceLayer?n.sourceLayer:"",m=l[c.ai]||l[p];if(!m)return;const _=c.aj(n==null?void 0:n.filter,n==null?void 0:n.globalState),{z:x,x:w,y:T}=this.tileID.canonical,I={z:x,x:w,y:T};for(let M=0;M<m.length;M++){const z=m.feature(M);if(_.needGeometry){const G=c.ak(z,!0);if(!_.filter(new c.H(this.tileID.overscaledZ),G,this.tileID.canonical))continue}else if(!_.filter(new c.H(this.tileID.overscaledZ),z))continue;const F=a.getId(z,p),N=new c.al(z,x,w,T,F);N.tile=I,t.push(N)}}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.am(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 l=!1;if(this.expirationTime>a)l=!1;else if(n)if(this.expirationTime<n)l=!0;else{const p=this.expirationTime-n;p?this.expirationTime=a+Math.max(p,3e4):l=!0}else l=!0;l?(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 l in this.buckets){if(!n.style.hasLayer(l))continue;const p=this.buckets[l],m=p.layers[0].sourceLayer||c.ai,_=a[m],x=t[m];if(!_||!x||Object.keys(x).length===0)continue;p.update(x,_,this.imageAtlas&&this.imageAtlas.patternPositions||{},this.dashPositions||{});const w=n&&n.style&&n.style.getLayer(l);w&&(this.queryPadding=Math.max(this.queryPadding,w.queryRadius(p)))}}holdingForSymbolFade(){return this.symbolFadeHoldUntil!==void 0}symbolFadeFinished(){return!this.symbolFadeHoldUntil||this.symbolFadeHoldUntil<Re()}clearSymbolFadeHold(){this.symbolFadeHoldUntil=void 0}setSymbolHoldDuration(t){this.symbolFadeHoldUntil=Re()+t}setDependencies(t,n){const a={};for(const l of n)a[l]=!0;this.dependencies[t]=a}hasDependency(t,n){for(const a of t){const l=this.dependencies[a];if(l){for(const p of n)if(l[p])return!0}}return!1}}class me{constructor(){this.state={},this.stateChanges={},this.deletedStates={},this.revision=0}updateState(t,n,a){const l=String(n);if(this.stateChanges[t]=this.stateChanges[t]||{},this.stateChanges[t][l]=this.stateChanges[t][l]||{},c.e(this.stateChanges[t][l],a),this.deletedStates[t]===null){this.deletedStates[t]={};for(const p in this.state[t])p!==l&&(this.deletedStates[t][p]=null)}else if(this.deletedStates[t]&&this.deletedStates[t][l]===null){this.deletedStates[t][l]={};for(const p in this.state[t][l])a[p]||(this.deletedStates[t][l][p]=null)}else for(const p in a)this.deletedStates[t]&&this.deletedStates[t][l]&&this.deletedStates[t][l][p]===null&&delete this.deletedStates[t][l][p]}removeFeatureState(t,n,a){if(this.deletedStates[t]===null)return;const l=String(n);if(this.deletedStates[t]=this.deletedStates[t]||{},a&&n!==void 0)this.deletedStates[t][l]!==null&&(this.deletedStates[t][l]=this.deletedStates[t][l]||{},this.deletedStates[t][l][a]=null);else if(n!==void 0)if(this.stateChanges[t]&&this.stateChanges[t][l])for(a in this.deletedStates[t][l]={},this.stateChanges[t][l])this.deletedStates[t][l][a]=null;else this.deletedStates[t][l]=null;else this.deletedStates[t]=null}getState(t,n){const a=String(n),l=c.e({},(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 l[m]}return l}initializeTileState(t,n){t.setFeatureState(this.state,n)}coalesceChanges(t,n){const a={};for(const l in this.stateChanges){this.state[l]=this.state[l]||{};const p={};for(const m in this.stateChanges[l])this.state[l][m]||(this.state[l][m]={}),c.e(this.state[l][m],this.stateChanges[l][m]),p[m]=this.state[l][m];a[l]=p}for(const l in this.deletedStates){this.state[l]=this.state[l]||{};const p={};if(this.deletedStates[l]===null)for(const m in this.state[l])p[m]={},this.state[l][m]={};else for(const m in this.deletedStates[l]){if(this.deletedStates[l][m]===null)this.state[l][m]={};else for(const _ of Object.keys(this.deletedStates[l][m]))delete this.state[l][m][_];p[m]=this.state[l][m]}a[l]=a[l]||{},c.e(a[l],p)}this.stateChanges={},this.deletedStates={},Object.keys(a).length!==0&&(this.revision++,t.setFeatureState(a,n))}}const se=89.25;function le(d,t){const n=c.an(t.lat,-c.ao,c.ao);return new c.P(c.Y(t.lng)*d,c.X(n)*d)}function Me(d,t){return new c.a9(t.x/d,t.y/d).toLngLat()}function xe(d){return d.cameraToCenterDistance*Math.min(.85*Math.tan(c.ap(90-d.pitch)),Math.tan(c.ap(se-d.pitch)))}function Q(d,t){const n=d.canonical,a=t/c.aq(n.z),l=n.x+Math.pow(2,n.z)*d.wrap,p=c.ar(new Float64Array(16));return c.O(p,p,[l*a,n.y*a,0]),c.Q(p,p,[a/c.a5,a/c.a5,1]),p}function Ge(d,t,n,a,l){const p=c.a9.fromLngLat(d,t),m=l*c.as(1,d.lat),{x:_,y:x,z:w}=et(n,a);return new c.a9(p.x+m*-_,p.y+m*-x,p.z+m*-w)}function et(d,t){const n=c.ap(d),a=c.ap(t),l=Math.cos(-n),p=Math.sin(n);return{x:p*Math.sin(a),y:-p*Math.cos(a),z:l}}function Xe(d,t,n){const a=t.intersectsFrustum(d);if(!n||a===0)return a;const l=t.intersectsPlane(n);return l===0?0:a===2&&l===2?2:1}function Ke(d,t,n){let a=0;const l=(n-t)/10;for(let p=0;p<10;p++)a+=l*Math.pow(Math.cos(t+(p+.5)/10*(n-t)),d);return a}function Je(d,t){return function(n,a,l,p,m){const _=2*((d-1)/c.at(Math.cos(c.ap(se-m))/Math.cos(c.ap(se)))-1),x=Math.acos(l/p),w=2*Ke(_-1,0,c.ap(m/2)),T=Math.min(c.ap(se),x+c.ap(m/2)),I=Ke(_-1,Math.min(T,x-c.ap(m/2)),T),M=Math.atan(a/l),z=Math.hypot(a,l);let F=n;return F+=c.at(p/z/Math.max(.5,Math.cos(c.ap(m/2)))),F+=_*c.at(Math.cos(M))/2,F-=c.at(Math.max(1,I/w/t))/2,F}}const rt=Je(9.314,3);function Tt(d,t){const n=(t.roundZoom?Math.round:Math.floor)(d.zoom+c.at(d.tileSize/t.tileSize));return Math.max(0,n)}function It(d,t){const n=d.getCameraFrustum(),a=d.getClippingPlane(),l=d.screenPointToMercatorCoordinate(d.getCameraPoint()),p=c.a9.fromLngLat(d.center,d.elevation);l.z=p.z+Math.cos(d.pitchInRadians)*d.cameraToCenterDistance/d.worldSize;const m=d.getCoveringTilesDetailsProvider(),_=m.allowVariableZoom(d,t),x=Tt(d,t),w=t.minzoom||0,T=t.maxzoom!==void 0?t.maxzoom:d.maxZoom,I=Math.min(Math.max(0,x),T),M=Math.pow(2,I),z=[M*l.x,M*l.y,0],F=[M*p.x,M*p.y,0],N=Math.hypot(p.x-l.x,p.y-l.y),G=Math.abs(p.z-l.z),U=Math.hypot(N,G),$=J=>({zoom:0,x:0,y:0,wrap:J,fullyVisible:!1}),K=[],Z=[];if(d.renderWorldCopies&&m.allowWorldCopies())for(let J=1;J<=3;J++)K.push($(-J)),K.push($(J));for(K.push($(0));K.length>0;){const J=K.pop(),te=J.x,X=J.y;let ae=J.fullyVisible;const _e={x:te,y:X,z:J.zoom},fe=m.getTileBoundingVolume(_e,J.wrap,d.elevation,t);if(!ae){const ze=Xe(n,fe,a);if(ze===0)continue;ae=ze===2}const pe=m.distanceToTile2d(l.x,l.y,_e,fe);let ge=x;_&&(ge=(t.calculateTileZoom||rt)(d.zoom+c.at(d.tileSize/t.tileSize),pe,G,U,d.fov)),ge=(t.roundZoom?Math.round:Math.floor)(ge),ge=Math.max(0,ge);const De=Math.min(ge,T);if(J.wrap=m.getWrap(p,_e,J.wrap),J.zoom>=De){if(J.zoom<w)continue;const ze=I-J.zoom,ve=z[0]-.5-(te<<ze),Ve=z[1]-.5-(X<<ze),nt=t.reparseOverscaled?Math.max(J.zoom,ge):J.zoom;Z.push({tileID:new c.a2(J.zoom===T?nt:J.zoom,J.wrap,J.zoom,te,X),distanceSq:c.au([F[0]-.5-te,F[1]-.5-X]),tileDistanceToCamera:Math.sqrt(ve*ve+Ve*Ve)})}else for(let ze=0;ze<4;ze++)K.push({zoom:J.zoom+1,x:(te<<1)+ze%2,y:(X<<1)+(ze>>1),wrap:J.wrap,fullyVisible:ae})}return Z.sort((J,te)=>J.distanceSq-te.distanceSq).map(J=>J.tileID)}const Xt=c.aa.fromPoints([new c.P(0,0),new c.P(c.a5,c.a5)]);function yi(d){return d==="raster"||d==="image"||d==="video"}function Gt(d,t,n,a,l,p,m){if(!t.hasData())return!1;const{tileID:_,fadingRole:x,fadingDirection:w,fadingParentID:T}=t;if(x===W.Base&&w===ee.Incoming&&T)return n[T.key]=T,!0;const I=Math.max(_.overscaledZ-l,p);for(let M=_.overscaledZ-1;M>=I;M--){const z=_.scaledTo(M),F=d.getLoadedTile(z);if(F)return t.setCrossFadeLogic({fadingRole:W.Base,fadingDirection:ee.Incoming,fadingParentID:F.tileID,fadeEndTime:a+m}),F.setCrossFadeLogic({fadingRole:W.Parent,fadingDirection:ee.Departing,fadeEndTime:a+m}),n[z.key]=z,!0}return!1}function Ce(d,t,n,a,l,p){if(!t.hasData())return!1;const m=t.tileID.children(l);let _=_t(d,t,m,n,a,l,p);if(_)return!0;for(const x of m)_t(d,t,x.children(l),n,a,l,p)&&(_=!0);return _}function _t(d,t,n,a,l,p,m){if(n[0].overscaledZ>=p)return!1;let _=!1;for(const x of n){const w=d.getLoadedTile(x);if(!w)continue;const{fadingRole:T,fadingDirection:I,fadingParentID:M}=w;T===W.Base&&I===ee.Departing&&M||(w.setCrossFadeLogic({fadingRole:W.Base,fadingDirection:ee.Departing,fadingParentID:t.tileID,fadeEndTime:l+m}),t.setCrossFadeLogic({fadingRole:W.Parent,fadingDirection:ee.Incoming,fadeEndTime:l+m})),a[x.key]=x,_=!0}return _}function kt(d,t,n,a){const l=d.tileID;return!!d.selfFading||!d.hasData()&&!!t.has(l)&&(d.setSelfFadeLogic(n+a),!0)}function Gn(d,t){var n;d.needsHillshadePrepare=!0,d.needsTerrainPrepare=!0;let a=t.tileID.canonical.x-d.tileID.canonical.x;const l=t.tileID.canonical.y-d.tileID.canonical.y,p=Math.pow(2,d.tileID.canonical.z),m=t.tileID.key;a===0&&l===0||Math.abs(l)>1||(Math.abs(a)>1&&(Math.abs(a+p)===1?a+=p:Math.abs(a-p)===1&&(a-=p)),t.dem&&d.dem&&(d.dem.backfillBorder(t.dem,a,l),!((n=d.neighboringTiles)===null||n===void 0)&&n[m]&&(d.neighboringTiles[m].backfilled=!0)))}class sn{constructor(){this._tiles={}}handleWrapJump(t){const n={};for(const a in this._tiles){const l=this._tiles[a];l.tileID=l.tileID.unwrapTo(l.tileID.wrap+t),n[l.tileID.key]=l}this._tiles=n}setFeatureState(t,n){for(const a in this._tiles)this._tiles[a].setFeatureState(t,n)}getAllTiles(){return Object.values(this._tiles)}getAllIds(t=!1){return t?Object.values(this._tiles).map(n=>n.tileID).sort(c.aw).map(n=>n.key):Object.keys(this._tiles)}getTileById(t){return this._tiles[t]}setTile(t,n){this._tiles[t]=n}deleteTileById(t){delete this._tiles[t]}getLoadedTile(t){const n=this.getTileById(t.key);return n!=null&&n.hasData()?n:null}isIdRenderable(t,n=!1){var a;return(a=this.getTileById(t))===null||a===void 0?void 0:a.isRenderable(n)}getRenderableIds(t=0,n){const a=[];for(const l of this.getAllIds())this.isIdRenderable(l,n)&&a.push(this.getTileById(l));return n?a.sort((l,p)=>{const m=l.tileID,_=p.tileID,x=new c.P(m.canonical.x,m.canonical.y)._rotate(-t),w=new c.P(_.canonical.x,_.canonical.y)._rotate(-t);return m.overscaledZ-_.overscaledZ||w.y-x.y||w.x-x.x}).map(l=>l.tileID.key):a.map(l=>l.tileID).sort(c.aw).map(l=>l.key)}}class Ae extends c.E{constructor(t,n,a){super(),this.id=t,this.dispatcher=a,this.on("data",l=>this._dataHandler(l)),this.on("dataloading",()=>{this._sourceErrored=!1}),this.on("error",()=>{this._sourceErrored=this._source.loaded()}),this._source=((l,p,m,_)=>{const x=new(fs(p.type))(l,p,m,_);if(x.id!==l)throw new Error(`Expected Source id to be ${l} instead of ${x.id}`);return x})(t,n,a,this),this._inViewTiles=new sn,this._outOfViewCache=new c.ax(0,l=>this._unloadTile(l)),this._timers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._rasterFadeDuration=0,this._maxFadingAncestorLevels=5,this._state=new me,this._didEmitContent=!1,this._updated=!1}onAdd(t){this.map=t,this._maxTileCacheSize=t?t._maxTileCacheSize:null,this._maxTileCacheZoomLevels=t?t._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(t)}onRemove(t){for(const n of this._inViewTiles.getAllTiles())n.unloadVectorData();this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(t),this._inViewTiles=new sn}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;if(!(this.used===void 0&&this.usedForTerrain===void 0||this.used||this.usedForTerrain))return!0;if(!this._updated)return!1;for(const t of this._inViewTiles.getAllTiles())if(t.state!=="loaded"&&t.state!=="errored")return!1;return!0}getSource(){return this._source}getState(){return this._state}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,a){return c._(this,void 0,void 0,function*(){try{yield this._source.loadTile(t),this._tileLoaded(t,n,a)}catch(l){t.state="errored",l.status!==404?this._source.fire(new c.k(l,{tile:t})):this.update(this.transform,this.terrain)}})}_unloadTile(t){this._source.unloadTile&&this._source.unloadTile(t)}_abortTile(t){this._source.abortTile&&this._source.abortTile(t),this._source.fire(new c.l("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._inViewTiles,this.map?this.map.painter:null);for(const n of this._inViewTiles.getAllTiles())n.upload(t),n.prepare(this.map.style.imageManager)}getIds(){return this._inViewTiles.getAllIds(!0)}getRenderableIds(t){var n;return this._inViewTiles.getRenderableIds((n=this.transform)===null||n===void 0?void 0:n.bearingInRadians,t)}hasRenderableParent(t){const n=t.overscaledZ-1;if(n>=this._source.minzoom){const a=this.getLoadedTile(t.scaledTo(n));if(a)return this._inViewTiles.isIdRenderable(a.tileID.key)}return!1}reload(t,n=void 0){if(this._paused)this._shouldReloadOnResume=!0;else{this._outOfViewCache.reset();for(const a of this._inViewTiles.getAllIds()){const l=this._inViewTiles.getTileById(a);n&&!this._source.shouldReloadTile(l,n)||(t?this._reloadTile(a,"expired"):l.state!=="errored"&&this._reloadTile(a,"reloading"))}}}_reloadTile(t,n){return c._(this,void 0,void 0,function*(){const a=this._inViewTiles.getTileById(t);a&&(a.state!=="loading"&&(a.state=n),yield this._loadTile(a,t,n))})}_tileLoaded(t,n,a){t.timeAdded=Re(),t.selfFading&&(t.fadeEndTime=t.timeAdded+this._rasterFadeDuration),a==="expired"&&(t.refreshedUponExpiration=!0),this._setTileReloadTimer(n,t),this.getSource().type==="raster-dem"&&t.dem&&function(l,p){var m,_;const x=p.getRenderableIds();for(const w of x){if(!l.neighboringTiles||!l.neighboringTiles[w])continue;const T=p.getTileById(w);l.neighboringTiles[w].backfilled||Gn(l,T),!((_=(m=T.neighboringTiles)===null||m===void 0?void 0:m[l.tileID.key])===null||_===void 0)&&_.backfilled||Gn(T,l)}}(t,this._inViewTiles),this._state.initializeTileState(t,this.map?this.map.painter:null),t.aborted||this._source.fire(new c.l("data",{dataType:"source",tile:t,coord:t.tileID}))}getTile(t){return this.getTileByID(t.key)}getTileByID(t){return this._inViewTiles.getTileById(t)}_retainLoadedChildren(t,n){const a=this._getLoadedDescendents(n),l=new Set;for(const p of n){const m=a[p.key];if(!(m!=null&&m.length)){l.add(p);continue}const _=p.overscaledZ+Ae.maxOverzooming,x=m.filter(I=>I.tileID.overscaledZ<=_);if(!x.length){l.add(p);continue}const w=Math.min(...x.map(I=>I.tileID.overscaledZ)),T=x.filter(I=>I.tileID.overscaledZ===w).map(I=>I.tileID);for(const I of T)t[I.key]=I;this._areDescendentsComplete(T,w,p.overscaledZ)||l.add(p)}return l}_getLoadedDescendents(t){var n;const a={};for(const l of this._inViewTiles.getAllTiles().filter(p=>p.hasData()))for(const p of t)l.tileID.isChildOf(p)&&(a[n=p.key]||(a[n]=[])).push(l);return a}_areDescendentsComplete(t,n,a){return t.length===1&&t[0].isOverscaled()?t[0].overscaledZ===n:Math.pow(4,n-a)===t.length}getLoadedTile(t){return this._inViewTiles.getLoadedTile(t)}updateCacheSize(t){const n=Math.ceil(t.width/this._source.tileSize)+1,a=Math.ceil(t.height/this._source.tileSize)+1,l=Math.floor(n*a*(this._maxTileCacheZoomLevels===null?c.c.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),p=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,l):l;this._outOfViewCache.setMaxSize(p)}handleWrapJump(t){const n=Math.round((t-(this._prevLng===void 0?t:this._prevLng))/360);this._prevLng=t,n&&(this._inViewTiles.handleWrapJump(n),this._resetTileReloadTimers())}update(t,n){if(!this._sourceLoaded||this._paused)return;let a;this.transform=t,this.terrain=n,this.updateCacheSize(t),this.handleWrapJump(this.transform.center.lng),this.used||this.usedForTerrain?this._source.tileID?a=t.getVisibleUnwrappedCoordinates(this._source.tileID).map(x=>new c.a2(x.canonical.z,x.wrap,x.canonical.z,x.canonical.x,x.canonical.y)):(a=It(t,{tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.type==="vector"&&this.map._zoomLevelsToOverscale!==void 0?t.maxZoom-this.map._zoomLevelsToOverscale:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:n,calculateTileZoom:this._source.calculateTileZoom}),this._source.hasTile&&(a=a.filter(x=>this._source.hasTile(x)))):a=[],this.usedForTerrain&&(a=this._addTerrainIdealTiles(a));const l=a.length===0&&!this._updated&&this._didEmitContent;this._updated=!0,l&&this.fire(new c.l("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));const p=Tt(t,this._source),m=this._updateRetainedTiles(a,p),_=yi(this._source.type);_&&this._rasterFadeDuration>0&&!n&&function(x,w,T,I,M,z,F){const N=Re(),G=c.av(w);for(const U of w){const $=x.getTileById(U.key);$.fadingDirection!==ee.Departing&&$.fadeOpacity!==0||$.resetFadeLogic(),Gt(x,$,T,N,I,M,F)||Ce(x,$,T,N,z,F)||kt($,G,N,F)||$.resetFadeLogic()}}(this._inViewTiles,a,m,this._maxFadingAncestorLevels,this._source.minzoom,this._source.maxzoom,this._rasterFadeDuration),_?this._cleanUpRasterTiles(m):this._cleanUpVectorTiles(m)}_cleanUpRasterTiles(t){for(const n of this._inViewTiles.getAllIds())t[n]||this._removeTile(n)}_cleanUpVectorTiles(t){for(const n of this._inViewTiles.getAllIds()){const a=this._inViewTiles.getTileById(n);t[n]?a.clearSymbolFadeHold():a.hasSymbolBuckets?a.holdingForSymbolFade()?a.symbolFadeFinished()&&this._removeTile(n):a.setSymbolHoldDuration(this.map._fadeDuration):this._removeTile(n)}}_addTerrainIdealTiles(t){const n=[];for(const a of t)if(a.canonical.z>this._source.minzoom){const l=a.scaledTo(a.canonical.z-1);n.push(l);const p=a.scaledTo(Math.max(this._source.minzoom,Math.min(a.canonical.z,5)));n.push(p)}return t.concat(n)}releaseSymbolFadeTiles(){for(const t of this._inViewTiles.getAllIds())this._inViewTiles.getTileById(t).holdingForSymbolFade()&&this._removeTile(t)}_updateRetainedTiles(t,n){var a;const l=new Set;for(const w of t)this._addTile(w).hasData()||l.add(w);const p=t.reduce((w,T)=>(w[T.key]=T,w),{}),m=this._retainLoadedChildren(p,l),_={},x=Math.max(n-Ae.maxUnderzooming,this._source.minzoom);for(const w of m){let T=this._inViewTiles.getTileById(w.key),I=T==null?void 0:T.wasRequested();for(let M=w.overscaledZ-1;M>=x;--M){const z=w.scaledTo(M);if(_[z.key])break;if(_[z.key]=!0,T=this.getTile(z),!T&&I&&(T=this._addTile(z)),T){const F=T.hasData();if((F||!(!((a=this.map)===null||a===void 0)&&a.cancelPendingTileRequestsWhileZooming)||I)&&(p[z.key]=z),I=T.wasRequested(),F)break}}}return p}_addTile(t){let n=this._inViewTiles.getTileById(t.key);if(n)return n;n=this._outOfViewCache.getAndRemove(t),n&&(n.resetFadeLogic(),this._setTileReloadTimer(t.key,n),n.tileID=t,this._state.initializeTileState(n,this.map?this.map.painter:null));const a=n;return n||(n=new ce(t,this._source.tileSize*t.overscaleFactor()),this._loadTile(n,t.key,n.state)),n.uses++,this._inViewTiles.setTile(t.key,n),a||this._source.fire(new c.l("dataloading",{tile:n,coord:n.tileID,dataType:"source"})),n}_setTileReloadTimer(t,n){this._clearTileReloadTimer(t);const a=n.getExpiryTimeout();a&&(this._timers[t]=setTimeout(()=>{this._reloadTile(t,"expired"),delete this._timers[t]},a))}_clearTileReloadTimer(t){const n=this._timers[t];n&&(clearTimeout(n),delete this._timers[t])}_resetTileReloadTimers(){for(const t in this._timers)clearTimeout(this._timers[t]),delete this._timers[t];for(const t of this._inViewTiles.getAllIds()){const n=this._inViewTiles.getTileById(t);this._setTileReloadTimer(t,n)}}refreshTiles(t){for(const n of this._inViewTiles.getAllIds()){const a=this._inViewTiles.getTileById(n);(this._inViewTiles.isIdRenderable(n)||a.state=="errored")&&t.some(l=>l.equals(a.tileID.canonical))&&this._reloadTile(n,"expired")}}_removeTile(t){const n=this._inViewTiles.getTileById(t);n&&(n.uses--,this._inViewTiles.deleteTileById(t),this._clearTileReloadTimer(t),n.uses>0||(n.hasData()&&n.state!=="reloading"?this._outOfViewCache.add(n.tileID,n,n.getExpiryTimeout()):(n.aborted=!0,this._abortTile(n),this._unloadTile(n))))}_dataHandler(t){t.dataType==="source"&&(t.sourceDataType!=="metadata"?t.sourceDataType==="content"&&this._sourceLoaded&&!this._paused&&(this.reload(t.sourceDataChanged,t.shouldReloadTileOptions),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0):this._sourceLoaded=!0)}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const t of this._inViewTiles.getAllIds())this._removeTile(t);this._outOfViewCache.reset()}tilesIn(t,n,a){const l=[],p=this.transform;if(!p)return l;const m=p.getCoveringTilesDetailsProvider().allowWorldCopies(),_=a?p.getCameraQueryGeometry(t):t,x=z=>p.screenPointToMercatorCoordinate(z,this.terrain),w=this.transformBbox(t,x,!m),T=this.transformBbox(_,x,!m),I=this.getIds(),M=c.aa.fromPoints(T);for(let z=0;z<I.length;z++){const F=this._inViewTiles.getTileById(I[z]);if(F.holdingForSymbolFade())continue;const N=m?[F.tileID]:[F.tileID.unwrapTo(-1),F.tileID.unwrapTo(0)],G=Math.pow(2,p.zoom-F.tileID.overscaledZ),U=n*F.queryPadding*c.a5/F.tileSize/G;for(const $ of N){const K=M.map(Z=>$.getTilePoint(new c.a9(Z.x,Z.y)));if(K.expandBy(U),K.intersects(Xt)){const Z=w.map(te=>$.getTilePoint(te)),J=T.map(te=>$.getTilePoint(te));l.push({tile:F,tileID:m?$:$.unwrapTo(0),queryGeometry:Z,cameraQueryGeometry:J,scale:G})}}}return l}transformBbox(t,n,a){let l=t.map(n);if(a){const p=c.aa.fromPoints(t);p.shrinkBy(.001*Math.min(p.width(),p.height()));const m=p.map(n);c.aa.fromPoints(l).covers(m)||(l=l.map(_=>_.x>.5?new c.a9(_.x-1,_.y,_.z):_))}return l}getVisibleCoordinates(t){const n=this.getRenderableIds(t).map(a=>this._inViewTiles.getTileById(a).tileID);return this.transform&&this.transform.populateCache(n),n}hasTransition(){return!!this._source.hasTransition()||!(!yi(this._source.type)||!function(t,n){if(n<=0)return!1;const a=Re();for(const l of t.getAllTiles())if(l.fadeEndTime>=a)return!0;return!1}(this._inViewTiles,this._rasterFadeDuration))}setRasterFadeDuration(t){this._rasterFadeDuration=t}setFeatureState(t,n,a){this._state.updateState(t=t||c.ai,n,a)}removeFeatureState(t,n,a){this._state.removeFeatureState(t=t||c.ai,n,a)}getFeatureState(t,n){return this._state.getState(t=t||c.ai,n)}setDependencies(t,n,a){const l=this._inViewTiles.getTileById(t);l&&l.setDependencies(n,a)}reloadTilesForDependencies(t,n){for(const a of this._inViewTiles.getAllIds())this._inViewTiles.getTileById(a).hasDependency(t,n)&&this._reloadTile(a,"reloading");this._outOfViewCache.filter(a=>!a.hasDependency(t,n))}areTilesLoaded(){for(const t of this._inViewTiles.getAllTiles())if(t.state!=="loaded"&&t.state!=="errored")return!1;return!0}}Ae.maxUnderzooming=10,Ae.maxOverzooming=3;class tt{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.an(t,0,1);let n=1,a=this._distances[n];const l=t*this.paddedLength+this.padding;for(;a<l&&n<this._distances.length;)a=this._distances[++n];const p=n-1,m=this._distances[p],_=a-m,x=_>0?(l-m)/_:0;return this.points[p].mult(1-x).add(this.points[n].mult(x))}}function it(d,t){let n=!0;return d==="always"||d!=="never"&&t!=="never"||(n=!1),n}class _r{constructor(t,n,a){const l=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++)l.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,l,p){this._forEachCell(n,a,l,p,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(n),this.bboxes.push(a),this.bboxes.push(l),this.bboxes.push(p)}insertCircle(t,n,a,l){this._forEachCell(n-l,a-l,n+l,a+l,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(n),this.circles.push(a),this.circles.push(l)}_insertBoxCell(t,n,a,l,p,m){this.boxCells[p].push(m)}_insertCircleCell(t,n,a,l,p,m){this.circleCells[p].push(m)}_query(t,n,a,l,p,m,_){if(a<0||t>this.width||l<0||n>this.height)return[];const x=[];if(t<=0&&n<=0&&this.width<=a&&this.height<=l){if(p)return[{key:null,x1:t,y1:n,x2:a,y2:l}];for(let w=0;w<this.boxKeys.length;w++)x.push({key:this.boxKeys[w],x1:this.bboxes[4*w],y1:this.bboxes[4*w+1],x2:this.bboxes[4*w+2],y2:this.bboxes[4*w+3]});for(let w=0;w<this.circleKeys.length;w++){const T=this.circles[3*w],I=this.circles[3*w+1],M=this.circles[3*w+2];x.push({key:this.circleKeys[w],x1:T-M,y1:I-M,x2:T+M,y2:I+M})}}else this._forEachCell(t,n,a,l,this._queryCell,x,{hitTest:p,overlapMode:m,seenUids:{box:{},circle:{}}},_);return x}query(t,n,a,l){return this._query(t,n,a,l,!1,null)}hitTest(t,n,a,l,p,m){return this._query(t,n,a,l,!0,p,m).length>0}hitTestCircle(t,n,a,l,p){const m=t-a,_=t+a,x=n-a,w=n+a;if(_<0||m>this.width||w<0||x>this.height)return!1;const T=[];return this._forEachCell(m,x,_,w,this._queryCellCircle,T,{hitTest:!0,overlapMode:l,circle:{x:t,y:n,radius:a},seenUids:{box:{},circle:{}}},p),T.length>0}_queryCell(t,n,a,l,p,m,_,x){const{seenUids:w,hitTest:T,overlapMode:I}=_,M=this.boxCells[p];if(M!==null){const F=this.bboxes;for(const N of M)if(!w.box[N]){w.box[N]=!0;const G=4*N,U=this.boxKeys[N];if(t<=F[G+2]&&n<=F[G+3]&&a>=F[G+0]&&l>=F[G+1]&&(!x||x(U))&&(!T||!it(I,U.overlapMode))&&(m.push({key:U,x1:F[G],y1:F[G+1],x2:F[G+2],y2:F[G+3]}),T))return!0}}const z=this.circleCells[p];if(z!==null){const F=this.circles;for(const N of z)if(!w.circle[N]){w.circle[N]=!0;const G=3*N,U=this.circleKeys[N];if(this._circleAndRectCollide(F[G],F[G+1],F[G+2],t,n,a,l)&&(!x||x(U))&&(!T||!it(I,U.overlapMode))){const $=F[G],K=F[G+1],Z=F[G+2];if(m.push({key:U,x1:$-Z,y1:K-Z,x2:$+Z,y2:K+Z}),T)return!0}}}return!1}_queryCellCircle(t,n,a,l,p,m,_,x){const{circle:w,seenUids:T,overlapMode:I}=_,M=this.boxCells[p];if(M!==null){const F=this.bboxes;for(const N of M)if(!T.box[N]){T.box[N]=!0;const G=4*N,U=this.boxKeys[N];if(this._circleAndRectCollide(w.x,w.y,w.radius,F[G+0],F[G+1],F[G+2],F[G+3])&&(!x||x(U))&&!it(I,U.overlapMode))return m.push(!0),!0}}const z=this.circleCells[p];if(z!==null){const F=this.circles;for(const N of z)if(!T.circle[N]){T.circle[N]=!0;const G=3*N,U=this.circleKeys[N];if(this._circlesCollide(F[G],F[G+1],F[G+2],w.x,w.y,w.radius)&&(!x||x(U))&&!it(I,U.overlapMode))return m.push(!0),!0}}}_forEachCell(t,n,a,l,p,m,_,x){const w=this._convertToXCellCoord(t),T=this._convertToYCellCoord(n),I=this._convertToXCellCoord(a),M=this._convertToYCellCoord(l);for(let z=w;z<=I;z++)for(let F=T;F<=M;F++)if(p.call(this,t,n,a,l,this.xCellCount*F+z,m,_,x))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,l,p,m){const _=l-t,x=p-n,w=a+m;return w*w>_*_+x*x}_circleAndRectCollide(t,n,a,l,p,m,_){const x=(m-l)/2,w=Math.abs(t-(l+x));if(w>x+a)return!1;const T=(_-p)/2,I=Math.abs(n-(p+T));if(I>T+a)return!1;if(w<=x||I<=T)return!0;const M=w-x,z=I-T;return M*M+z*z<=a*a}}function ms(d,t,n){const a=c.N();if(!d){const{vecSouth:I,vecEast:M}=ot(t),z=He();z[0]=M[0],z[1]=M[1],z[2]=I[0],z[3]=I[1],l=z,(T=(m=(p=z)[0])*(w=p[3])-(x=p[2])*(_=p[1]))&&(l[0]=w*(T=1/T),l[1]=-_*T,l[2]=-x*T,l[3]=m*T),a[0]=z[0],a[1]=z[1],a[4]=z[2],a[5]=z[3]}var l,p,m,_,x,w,T;return c.Q(a,a,[1/n,1/n,1]),a}function qn(d,t,n,a){if(d){const l=c.N();if(!t){const{vecSouth:p,vecEast:m}=ot(n);l[0]=m[0],l[1]=m[1],l[4]=p[0],l[5]=p[1]}return c.Q(l,l,[a,a,1]),l}return n.pixelsToClipSpaceMatrix}function ot(d){const t=Math.cos(d.rollInRadians),n=Math.sin(d.rollInRadians),a=Math.cos(d.pitchInRadians),l=Math.cos(d.bearingInRadians),p=Math.sin(d.bearingInRadians),m=c.aC();m[0]=-l*a*n-p*t,m[1]=-p*a*n+l*t;const _=c.aD(m);_<1e-9?c.aE(m):c.aF(m,m,1/_);const x=c.aC();x[0]=l*a*t-p*n,x[1]=p*a*t+l*n;const w=c.aD(x);return w<1e-9?c.aE(x):c.aF(x,x,1/w),{vecEast:x,vecSouth:m}}function gs(d,t,n,a){let l;a?(l=[d,t,a(d,t),1],c.aH(l,l,n)):(l=[d,t,0,1],Dn(l,l,n));const p=l[3];return{point:new c.P(l[0]/p,l[1]/p),signedDistanceFromCamera:p,isOccluded:!1}}function _s(d,t){return .5+d/t*.5}function Ua(d,t){return d.x>=-t[0]&&d.x<=t[0]&&d.y>=-t[1]&&d.y<=t[1]}function $s(d,t,n,a,l,p,m,_,x,w,T,I,M){const z=n?d.textSizeData:d.iconSizeData,F=c.ay(z,t.transform.zoom),N=[256/t.width*2+1,256/t.height*2+1],G=n?d.text.dynamicLayoutVertexArray:d.icon.dynamicLayoutVertexArray;G.clear();const U=d.lineVertexArray,$=n?d.text.placedSymbolArray:d.icon.placedSymbolArray,K=t.transform.width/t.transform.height;let Z=!1;for(let J=0;J<$.length;J++){const te=$.get(J);if(te.hidden||te.writingMode===c.az.vertical&&!Z){$n(te.numGlyphs,G);continue}Z=!1;const X=new c.P(te.anchorX,te.anchorY),ae={getElevation:M,pitchedLabelPlaneMatrix:a,lineVertexArray:U,pitchWithMap:p,projectionCache:{projections:{},offsets:{},cachedAnchorPoint:void 0,anyProjectionOccluded:!1},transform:t.transform,tileAnchorPoint:X,unwrappedTileID:x,width:w,height:T,translation:I},_e=Ga(te.anchorX,te.anchorY,ae);if(!Ua(_e.point,N)){$n(te.numGlyphs,G);continue}const fe=_s(t.transform.cameraToCenterDistance,_e.signedDistanceFromCamera),pe=c.aA(z,F,te),ge=p?pe*t.transform.getPitchedTextCorrection(te.anchorX,te.anchorY,x)/fe:pe*fe,De=Hs({projectionContext:ae,pitchedLabelPlaneMatrixInverse:l,symbol:te,fontSize:ge,flip:!1,keepUpright:m,glyphOffsetArray:d.glyphOffsetArray,dynamicLayoutVertexArray:G,aspectRatio:K,rotateToLine:_});Z=De.useVertical,(De.notEnoughRoom||Z||De.needsFlipping&&Hs({projectionContext:ae,pitchedLabelPlaneMatrixInverse:l,symbol:te,fontSize:ge,flip:!0,keepUpright:m,glyphOffsetArray:d.glyphOffsetArray,dynamicLayoutVertexArray:G,aspectRatio:K,rotateToLine:_}).notEnoughRoom)&&$n(te.numGlyphs,G)}n?d.text.dynamicLayoutVertexBuffer.updateData(G):d.icon.dynamicLayoutVertexBuffer.updateData(G)}function Ws(d,t,n,a,l,p,m,_){const x=p.glyphStartIndex+p.numGlyphs,w=p.lineStartIndex,T=p.lineStartIndex+p.lineLength,I=t.getoffsetX(p.glyphStartIndex),M=t.getoffsetX(x-1),z=Xs(d*I,n,a,l,p.segment,w,T,_,m);if(!z)return null;const F=Xs(d*M,n,a,l,p.segment,w,T,_,m);return F?_.projectionCache.anyProjectionOccluded?null:{first:z,last:F}:null}function ys(d,t,n,a){return d===c.az.horizontal&&Math.abs(n.y-t.y)>Math.abs(n.x-t.x)*a?{useVertical:!0}:(d===c.az.vertical?t.y<n.y:t.x>n.x)?{needsFlipping:!0}:null}function Hs(d){const{projectionContext:t,pitchedLabelPlaneMatrixInverse:n,symbol:a,fontSize:l,flip:p,keepUpright:m,glyphOffsetArray:_,dynamicLayoutVertexArray:x,aspectRatio:w,rotateToLine:T}=d,I=l/24,M=a.lineOffsetX*I,z=a.lineOffsetY*I;let F;if(a.numGlyphs>1){const N=a.glyphStartIndex+a.numGlyphs,G=a.lineStartIndex,U=a.lineStartIndex+a.lineLength,$=Ws(I,_,M,z,p,a,T,t);if(!$)return{notEnoughRoom:!0};const K=Cn($.first.point.x,$.first.point.y,t,n),Z=Cn($.last.point.x,$.last.point.y,t,n);if(m&&!p){const J=ys(a.writingMode,K,Z,w);if(J)return J}F=[$.first];for(let J=a.glyphStartIndex+1;J<N-1;J++){const te=Xs(I*_.getoffsetX(J),M,z,p,a.segment,G,U,t,T);if(!te)return{notEnoughRoom:!0};F.push(te)}F.push($.last)}else{if(m&&!p){const G=Zn(t.tileAnchorPoint.x,t.tileAnchorPoint.y,t).point,U=a.lineStartIndex+a.segment+1,$=new c.P(t.lineVertexArray.getx(U),t.lineVertexArray.gety(U)),K=Zn($.x,$.y,t),Z=K.signedDistanceFromCamera>0?K.point:Zi(t.tileAnchorPoint,$,G,1,t),J=Cn(G.x,G.y,t,n),te=Cn(Z.x,Z.y,t,n),X=ys(a.writingMode,J,te,w);if(X)return X}const N=Xs(I*_.getoffsetX(a.glyphStartIndex),M,z,p,a.segment,a.lineStartIndex,a.lineStartIndex+a.lineLength,t,T);if(!N||t.projectionCache.anyProjectionOccluded)return{notEnoughRoom:!0};F=[N]}for(const N of F)c.aG(x,N.point,N.angle);return{}}function Zi(d,t,n,a,l){const p=d.add(d.sub(t)._unit()),m=Zn(p.x,p.y,l).point,_=n.sub(m);return n.add(_._mult(a/_.mag()))}function Ct(d,t,n){const a=t.projectionCache;if(a.projections[d])return a.projections[d];const l=new c.P(t.lineVertexArray.getx(d),t.lineVertexArray.gety(d)),p=Zn(l.x,l.y,t);if(p.signedDistanceFromCamera>0)return a.projections[d]=p.point,a.anyProjectionOccluded=a.anyProjectionOccluded||p.isOccluded,p.point;const m=d-n.direction;return Zi(n.distanceFromAnchor===0?t.tileAnchorPoint:new c.P(t.lineVertexArray.getx(m),t.lineVertexArray.gety(m)),l,n.previousVertex,n.absOffsetX-n.distanceFromAnchor+1,t)}function Zn(d,t,n){const a=d+n.translation[0],l=t+n.translation[1];let p;return n.pitchWithMap?(p=gs(a,l,n.pitchedLabelPlaneMatrix,n.getElevation),p.isOccluded=!1):(p=n.transform.projectTileCoordinates(a,l,n.unwrappedTileID,n.getElevation),p.point.x=(.5*p.point.x+.5)*n.width,p.point.y=(.5*-p.point.y+.5)*n.height),p}function Cn(d,t,n,a){if(n.pitchWithMap){const l=[d,t,0,1];return c.aH(l,l,a),n.transform.projectTileCoordinates(l[0]/l[3],l[1]/l[3],n.unwrappedTileID,n.getElevation).point}return{x:d/n.width*2-1,y:1-t/n.height*2}}function Ga(d,t,n){return n.transform.projectTileCoordinates(d,t,n.unwrappedTileID,n.getElevation)}function an(d,t,n){return d._unit()._perp()._mult(t*n)}function An(d,t,n,a,l,p,m,_,x){if(_.projectionCache.offsets[d])return _.projectionCache.offsets[d];const w=n.add(t);if(d+x.direction<a||d+x.direction>=l)return _.projectionCache.offsets[d]=w,w;const T=Ct(d+x.direction,_,x),I=an(T.sub(n),m,x.direction),M=n.add(I),z=T.add(I);return _.projectionCache.offsets[d]=c.aI(p,w,M,z)||w,_.projectionCache.offsets[d]}function Xs(d,t,n,a,l,p,m,_,x){const w=a?d-t:d+t;let T=w>0?1:-1,I=0;a&&(T*=-1,I=Math.PI),T<0&&(I+=Math.PI);let M,z=T>0?p+l:p+l+1;_.projectionCache.cachedAnchorPoint?M=_.projectionCache.cachedAnchorPoint:(M=Zn(_.tileAnchorPoint.x,_.tileAnchorPoint.y,_).point,_.projectionCache.cachedAnchorPoint=M);let F,N,G=M,U=M,$=0,K=0;const Z=Math.abs(w),J=[];let te;for(;$+K<=Z;){if(z+=T,z<p||z>=m)return null;$+=K,U=G,N=F;const _e={absOffsetX:Z,direction:T,distanceFromAnchor:$,previousVertex:U};if(G=Ct(z,_,_e),n===0)J.push(U),te=G.sub(U);else{let fe;const pe=G.sub(U);fe=pe.mag()===0?an(Ct(z+T,_,_e).sub(G),n,T):an(pe,n,T),N||(N=U.add(fe)),F=An(z,fe,G,p,m,N,n,_,_e),J.push(N),te=F.sub(N)}K=te.mag()}const X=te._mult((Z-$)/K)._add(N||U),ae=I+Math.atan2(G.y-U.y,G.x-U.x);return J.push(X),{point:X,angle:x?ae:0,path:J}}const uc=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function $n(d,t){for(let n=0;n<d;n++){const a=t.length;t.resize(a+4),t.float32.set(uc,3*a)}}function Dn(d,t,n){const a=t[0],l=t[1];return d[0]=n[0]*a+n[4]*l+n[12],d[1]=n[1]*a+n[5]*l+n[13],d[3]=n[3]*a+n[7]*l+n[15],d}const li=100;class $u{constructor(t,n=new _r(t.width+200,t.height+200,25),a=new _r(t.width+200,t.height+200,25)){this.transform=t,this.grid=n,this.ignoredGrid=a,this.pitchFactor=Math.cos(t.pitch*Math.PI/180)*t.cameraToCenterDistance,this.screenRightBoundary=t.width+li,this.screenBottomBoundary=t.height+li,this.gridRightBoundary=t.width+200,this.gridBottomBoundary=t.height+200,this.perspectiveRatioCutoff=.6}placeCollisionBox(t,n,a,l,p,m,_,x,w,T,I,M){const z=this.projectAndGetPerspectiveRatio(t.anchorPointX+x[0],t.anchorPointY+x[1],p,T,M),F=a*z.perspectiveRatio;let N;if(m||_)N=this._projectCollisionBox(t,F,l,p,m,_,x,z,T,I,M);else{const te=z.x+(I?I.x*F:0),X=z.y+(I?I.y*F:0);N={allPointsOccluded:!1,box:[te+t.x1*F,X+t.y1*F,te+t.x2*F,X+t.y2*F]}}const[G,U,$,K]=N.box,Z=m?N.allPointsOccluded:z.isOccluded;let J=Z;return J||(J=z.perspectiveRatio<this.perspectiveRatioCutoff),J||(J=!this.isInsideGrid(G,U,$,K)),J||n!=="always"&&this.grid.hitTest(G,U,$,K,n,w)?{box:[G,U,$,K],placeable:!1,offscreen:!1,occluded:Z}:{box:[G,U,$,K],placeable:!0,offscreen:this.isOffscreen(G,U,$,K),occluded:Z}}placeCollisionCircles(t,n,a,l,p,m,_,x,w,T,I,M,z,F){const N=[],G=new c.P(n.anchorX,n.anchorY),U=this.getPerspectiveRatio(G.x,G.y,m,F),$=(w?p*this.transform.getPitchedTextCorrection(n.anchorX,n.anchorY,m)/U:p*U)/c.aM,K={getElevation:F,pitchedLabelPlaneMatrix:_,lineVertexArray:a,pitchWithMap:w,projectionCache:{projections:{},offsets:{},cachedAnchorPoint:void 0,anyProjectionOccluded:!1},transform:this.transform,tileAnchorPoint:G,unwrappedTileID:m,width:this.transform.width,height:this.transform.height,translation:z},Z=Ws($,l,n.lineOffsetX*$,n.lineOffsetY*$,!1,n,!1,K);let J=!1,te=!1,X=!0;if(Z){const ae=.5*I*U+M,_e=new c.P(-100,-100),fe=new c.P(this.screenRightBoundary,this.screenBottomBoundary),pe=new tt,ge=Z.first,De=Z.last;let ze=[];for(let nt=ge.path.length-1;nt>=1;nt--)ze.push(ge.path[nt]);for(let nt=1;nt<De.path.length;nt++)ze.push(De.path[nt]);const ve=2.5*ae;if(w){const nt=this.projectPathToScreenSpace(ze,K);ze=nt.some(yt=>yt.signedDistanceFromCamera<=0)?[]:nt.map(yt=>yt.point)}let Ve=[];if(ze.length>0){const nt=ze[0].clone(),yt=ze[0].clone();for(let Et=1;Et<ze.length;Et++)nt.x=Math.min(nt.x,ze[Et].x),nt.y=Math.min(nt.y,ze[Et].y),yt.x=Math.max(yt.x,ze[Et].x),yt.y=Math.max(yt.y,ze[Et].y);Ve=nt.x>=_e.x&&yt.x<=fe.x&&nt.y>=_e.y&&yt.y<=fe.y?[ze]:yt.x<_e.x||nt.x>fe.x||yt.y<_e.y||nt.y>fe.y?[]:c.aJ([ze],_e.x,_e.y,fe.x,fe.y)}for(const nt of Ve){pe.reset(nt,.25*ae);let yt=0;yt=pe.length<=.5*ae?1:Math.ceil(pe.paddedLength/ve)+1;for(let Et=0;Et<yt;Et++){const Mt=Et/Math.max(yt-1,1),Rt=pe.lerp(Mt),xt=Rt.x+li,ni=Rt.y+li;N.push(xt,ni,ae,0);const Lt=xt-ae,vi=ni-ae,qt=xt+ae,Zt=ni+ae;if(X=X&&this.isOffscreen(Lt,vi,qt,Zt),te=te||this.isInsideGrid(Lt,vi,qt,Zt),t!=="always"&&this.grid.hitTestCircle(xt,ni,ae,t,T)&&(J=!0,!x))return{circles:[],offscreen:!1,collisionDetected:J}}}}return{circles:!x&&J||!te||U<this.perspectiveRatioCutoff?[]:N,offscreen:X,collisionDetected:J}}projectPathToScreenSpace(t,n){const a=function(l,p){const m=c.N();return c.aB(m,p.pitchedLabelPlaneMatrix),l.map(_=>{const x=gs(_.x,_.y,m,p.getElevation),w=p.transform.projectTileCoordinates(x.point.x,x.point.y,p.unwrappedTileID,p.getElevation);return w.point.x=(.5*w.point.x+.5)*p.width,w.point.y=(.5*-w.point.y+.5)*p.height,w})}(t,n);return function(l){let p=0,m=0,_=0,x=0;for(let w=0;w<l.length;w++)l[w].isOccluded?(_=w+1,x=0):(x++,x>m&&(m=x,p=_));return l.slice(p,p+m)}(a)}queryRenderedSymbols(t){if(t.length===0||this.grid.keysLength()===0&&this.ignoredGrid.keysLength()===0)return{};const n=[],a=new c.aa;for(const I of t){const M=new c.P(I.x+li,I.y+li);a.extend(M),n.push(M)}const{minX:l,minY:p,maxX:m,maxY:_}=a,x=this.grid.query(l,p,m,_).concat(this.ignoredGrid.query(l,p,m,_)),w={},T={};for(const I of x){const M=I.key;if(w[M.bucketInstanceId]===void 0&&(w[M.bucketInstanceId]={}),w[M.bucketInstanceId][M.featureIndex])continue;const z=[new c.P(I.x1,I.y1),new c.P(I.x2,I.y1),new c.P(I.x2,I.y2),new c.P(I.x1,I.y2)];c.aK(n,z)&&(w[M.bucketInstanceId][M.featureIndex]=!0,T[M.bucketInstanceId]===void 0&&(T[M.bucketInstanceId]=[]),T[M.bucketInstanceId].push(M.featureIndex))}return T}insertCollisionBox(t,n,a,l,p,m){(a?this.ignoredGrid:this.grid).insert({bucketInstanceId:l,featureIndex:p,collisionGroupID:m,overlapMode:n},t[0],t[1],t[2],t[3])}insertCollisionCircles(t,n,a,l,p,m){const _=a?this.ignoredGrid:this.grid,x={bucketInstanceId:l,featureIndex:p,collisionGroupID:m,overlapMode:n};for(let w=0;w<t.length;w+=4)_.insertCircle(x,t[w],t[w+1],t[w+2])}projectAndGetPerspectiveRatio(t,n,a,l,p){if(p){let m;l?(m=[t,n,l(t,n),1],c.aH(m,m,p)):(m=[t,n,0,1],Dn(m,m,p));const _=m[3];return{x:(m[0]/_+1)/2*this.transform.width+li,y:(-m[1]/_+1)/2*this.transform.height+li,perspectiveRatio:.5+this.transform.cameraToCenterDistance/_*.5,isOccluded:!1,signedDistanceFromCamera:_}}{const m=this.transform.projectTileCoordinates(t,n,a,l);return{x:(m.point.x+1)/2*this.transform.width+li,y:(1-m.point.y)/2*this.transform.height+li,perspectiveRatio:.5+this.transform.cameraToCenterDistance/m.signedDistanceFromCamera*.5,isOccluded:m.isOccluded,signedDistanceFromCamera:m.signedDistanceFromCamera}}}getPerspectiveRatio(t,n,a,l){const p=this.transform.projectTileCoordinates(t,n,a,l);return .5+this.transform.cameraToCenterDistance/p.signedDistanceFromCamera*.5}isOffscreen(t,n,a,l){return a<li||t>=this.screenRightBoundary||l<li||n>this.screenBottomBoundary}isInsideGrid(t,n,a,l){return a>=0&&t<this.gridRightBoundary&&l>=0&&n<this.gridBottomBoundary}getViewportMatrix(){const t=c.ar([]);return c.O(t,t,[-100,-100,0]),t}_projectCollisionBox(t,n,a,l,p,m,_,x,w,T,I){let M=1,z=0,F=0,N=1;const G=t.anchorPointX+_[0],U=t.anchorPointY+_[1];if(m&&!p){const ze=this.projectAndGetPerspectiveRatio(G+1,U,l,w,I),ve=ze.x-x.x,Ve=Math.atan((ze.y-x.y)/ve)+(ve<0?Math.PI:0),nt=Math.sin(Ve),yt=Math.cos(Ve);M=yt,z=nt,F=-nt,N=yt}else if(!m&&p){const ze=ot(this.transform);M=ze.vecEast[0],z=ze.vecEast[1],F=ze.vecSouth[0],N=ze.vecSouth[1]}let $=x.x,K=x.y,Z=n;p&&($=G,K=U,Z=Math.pow(2,-(this.transform.zoom-a.overscaledZ)),Z*=this.transform.getPitchedTextCorrection(G,U,l),T||(Z*=c.an(.5+x.signedDistanceFromCamera/this.transform.cameraToCenterDistance*.5,0,4))),T&&($+=M*T.x*Z+F*T.y*Z,K+=z*T.x*Z+N*T.y*Z);const J=t.x1*Z,te=t.x2*Z,X=(J+te)/2,ae=t.y1*Z,_e=t.y2*Z,fe=(ae+_e)/2,pe=[{offsetX:J,offsetY:ae},{offsetX:X,offsetY:ae},{offsetX:te,offsetY:ae},{offsetX:te,offsetY:fe},{offsetX:te,offsetY:_e},{offsetX:X,offsetY:_e},{offsetX:J,offsetY:_e},{offsetX:J,offsetY:fe}];let ge=[];for(const{offsetX:ze,offsetY:ve}of pe)ge.push(new c.P($+M*ze+F*ve,K+z*ze+N*ve));let De=!1;if(p){const ze=ge.map(ve=>this.projectAndGetPerspectiveRatio(ve.x,ve.y,l,w,I));De=ze.some(ve=>!ve.isOccluded),ge=ze.map(ve=>new c.P(ve.x,ve.y))}else De=!0;return{box:c.aL(ge),allPointsOccluded:!De}}}class hc{constructor(t,n,a,l){this.opacity=t?Math.max(0,Math.min(1,t.opacity+(t.placed?n:-n))):l&&a?1:0,this.placed=a}isHidden(){return this.opacity===0&&!this.placed}}class Ys{constructor(t,n,a,l,p){this.text=new hc(t?t.text:null,n,a,p),this.icon=new hc(t?t.icon:null,n,l,p)}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class Ko{constructor(t,n,a){this.text=t,this.icon=n,this.skipFade=a}}class dc{constructor(t,n,a,l,p){this.bucketInstanceId=t,this.featureIndex=n,this.sourceLayerIndex=a,this.bucketIndex=l,this.tileID=p}}class Jo{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 qa(d,t,n,a,l){const{horizontalAlign:p,verticalAlign:m}=c.aS(d);return new c.P(-(p-.5)*t+a[0]*l,-(m-.5)*n+a[1]*l)}class pc{constructor(t,n,a,l,p){this.transform=t.clone(),this.terrain=n,this.collisionIndex=new $u(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=a,this.retainedQueryData={},this.collisionGroups=new Jo(l),this.collisionCircleArrays={},this.collisionBoxArrays=new Map,this.prevPlacement=p,p&&(p.prevPlacement=void 0),this.placedOrientations={}}_getTerrainElevationFunc(t){const n=this.terrain;return n?(a,l)=>n.getElevation(t,a,l):null}getBucketParts(t,n,a,l){const p=a.getBucket(n),m=a.latestFeatureIndex;if(!p||!m||n.id!==p.layerIds[0])return;const _=a.collisionBoxArray,x=p.layers[0].layout,w=p.layers[0].paint,T=Math.pow(2,this.transform.zoom-a.tileID.overscaledZ),I=a.tileSize/c.a5,M=a.tileID.toUnwrapped(),z=x.get("text-rotation-alignment")==="map",F=c.aN(a,1,this.transform.zoom),N=c.aO(this.collisionIndex.transform,a,w.get("text-translate"),w.get("text-translate-anchor")),G=c.aO(this.collisionIndex.transform,a,w.get("icon-translate"),w.get("icon-translate-anchor")),U=ms(z,this.transform,F);this.retainedQueryData[p.bucketInstanceId]=new dc(p.bucketInstanceId,m,p.sourceLayerIndex,p.index,a.tileID);const $={bucket:p,layout:x,translationText:N,translationIcon:G,unwrappedTileID:M,pitchedLabelPlaneMatrix:U,scale:T,textPixelRatio:I,holdingForFade:a.holdingForSymbolFade(),collisionBoxArray:_,partiallyEvaluatedTextSize:c.ay(p.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(p.sourceID)};if(l)for(const K of p.sortKeyRanges){const{sortKey:Z,symbolInstanceStart:J,symbolInstanceEnd:te}=K;t.push({sortKey:Z,symbolInstanceStart:J,symbolInstanceEnd:te,parameters:$})}else t.push({symbolInstanceStart:0,symbolInstanceEnd:p.symbolInstances.length,parameters:$})}attemptAnchorPlacement(t,n,a,l,p,m,_,x,w,T,I,M,z,F,N,G,U,$,K,Z){const J=c.aP[t.textAnchor],te=[t.textOffset0,t.textOffset1],X=qa(J,a,l,te,p),ae=this.collisionIndex.placeCollisionBox(n,M,x,w,T,_,m,G,I.predicate,K,X,Z);if((!$||this.collisionIndex.placeCollisionBox($,M,x,w,T,_,m,U,I.predicate,K,X,Z).placeable)&&ae.placeable){let _e;if(this.prevPlacement&&this.prevPlacement.variableOffsets[z.crossTileID]&&this.prevPlacement.placements[z.crossTileID]&&this.prevPlacement.placements[z.crossTileID].text&&(_e=this.prevPlacement.variableOffsets[z.crossTileID].anchor),z.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[z.crossTileID]={textOffset:te,width:a,height:l,anchor:J,textBoxScale:p,prevAnchor:_e},this.markUsedJustification(F,J,z,N),F.allowVerticalPlacement&&(this.markUsedOrientation(F,N,z),this.placedOrientations[z.crossTileID]=N),{shift:X,placedGlyphBoxes:ae}}}placeLayerBucketPart(t,n,a){const{bucket:l,layout:p,translationText:m,translationIcon:_,unwrappedTileID:x,pitchedLabelPlaneMatrix:w,textPixelRatio:T,holdingForFade:I,collisionBoxArray:M,partiallyEvaluatedTextSize:z,collisionGroup:F}=t.parameters,N=p.get("text-optional"),G=p.get("icon-optional"),U=c.aQ(p,"text-overlap","text-allow-overlap"),$=U==="always",K=c.aQ(p,"icon-overlap","icon-allow-overlap"),Z=K==="always",J=p.get("text-rotation-alignment")==="map",te=p.get("text-pitch-alignment")==="map",X=p.get("icon-text-fit")!=="none",ae=p.get("symbol-z-order")==="viewport-y",_e=$&&(Z||!l.hasIconData()||G),fe=Z&&($||!l.hasTextData()||N);!l.collisionArrays&&M&&l.deserializeCollisionBoxes(M);const pe=this.retainedQueryData[l.bucketInstanceId].tileID,ge=this._getTerrainElevationFunc(pe),De=this.transform.getFastPathSimpleProjectionMatrix(pe),ze=(ve,Ve,nt)=>{var yt,Et;if(n[ve.crossTileID])return;if(I)return void(this.placements[ve.crossTileID]=new Ko(!1,!1,!1));let Mt=!1,Rt=!1,xt=!0,ni=null,Lt={box:null,placeable:!1,offscreen:null,occluded:!1},vi={placeable:!1},qt=null,Zt=null,Oi=null,gn=0,Wr=0,Vi=0;Ve.textFeatureIndex?gn=Ve.textFeatureIndex:ve.useRuntimeCollisionCircles&&(gn=ve.featureIndex),Ve.verticalTextFeatureIndex&&(Wr=Ve.verticalTextFeatureIndex);const _n=Ve.textBox;if(_n){const Wi=wt=>{let Ft=c.az.horizontal;if(l.allowVerticalPlacement&&!wt&&this.prevPlacement){const cr=this.prevPlacement.placedOrientations[ve.crossTileID];cr&&(this.placedOrientations[ve.crossTileID]=cr,Ft=cr,this.markUsedOrientation(l,Ft,ve))}return Ft},wr=(wt,Ft)=>{if(l.allowVerticalPlacement&&ve.numVerticalGlyphVertices>0&&Ve.verticalTextBox){for(const cr of l.writingModes)if(cr===c.az.vertical?(Lt=Ft(),vi=Lt):Lt=wt(),Lt&&Lt.placeable)break}else Lt=wt()},or=ve.textAnchorOffsetStartIndex,lr=ve.textAnchorOffsetEndIndex;if(lr===or){const wt=(Ft,cr)=>{const ui=this.collisionIndex.placeCollisionBox(Ft,U,T,pe,x,te,J,m,F.predicate,ge,void 0,De);return ui&&ui.placeable&&(this.markUsedOrientation(l,cr,ve),this.placedOrientations[ve.crossTileID]=cr),ui};wr(()=>wt(_n,c.az.horizontal),()=>{const Ft=Ve.verticalTextBox;return l.allowVerticalPlacement&&ve.numVerticalGlyphVertices>0&&Ft?wt(Ft,c.az.vertical):{box:null,offscreen:null}}),Wi(Lt&&Lt.placeable)}else{let wt=c.aP[(Et=(yt=this.prevPlacement)===null||yt===void 0?void 0:yt.variableOffsets[ve.crossTileID])===null||Et===void 0?void 0:Et.anchor];const Ft=(ui,du,os)=>{const yh=ui.x2-ui.x1,pu=ui.y2-ui.y1,jl=ve.textBoxScale,fu=X&&K==="never"?du:null;let ur=null,Bn=U==="never"?1:2,Nl="never";wt&&Bn++;for(let mu=0;mu<Bn;mu++){for(let ka=or;ka<lr;ka++){const Ul=l.textAnchorOffsets.get(ka);if(wt&&Ul.textAnchor!==wt)continue;const Ls=this.attemptAnchorPlacement(Ul,ui,yh,pu,jl,J,te,T,pe,x,F,Nl,ve,l,os,m,_,fu,ge);if(Ls&&(ur=Ls.placedGlyphBoxes,ur&&ur.placeable))return Mt=!0,ni=Ls.shift,ur}wt?wt=null:Nl=U}return a&&!ur&&(ur={box:this.collisionIndex.placeCollisionBox(_n,"always",T,pe,x,te,J,m,F.predicate,ge,void 0,De).box,offscreen:!1,placeable:!1,occluded:!1}),ur};wr(()=>Ft(_n,Ve.iconBox,c.az.horizontal),()=>{const ui=Ve.verticalTextBox;return l.allowVerticalPlacement&&(!Lt||!Lt.placeable)&&ve.numVerticalGlyphVertices>0&&ui?Ft(ui,Ve.verticalIconBox,c.az.vertical):{box:null,occluded:!0,offscreen:null}}),Lt&&(Mt=Lt.placeable,xt=Lt.offscreen);const cr=Wi(Lt&&Lt.placeable);if(!Mt&&this.prevPlacement){const ui=this.prevPlacement.variableOffsets[ve.crossTileID];ui&&(this.variableOffsets[ve.crossTileID]=ui,this.markUsedJustification(l,ui.anchor,ve,cr))}}}if(qt=Lt,Mt=qt&&qt.placeable,xt=qt&&qt.offscreen,ve.useRuntimeCollisionCircles&&ve.centerJustifiedTextSymbolIndex>=0){const Wi=l.text.placedSymbolArray.get(ve.centerJustifiedTextSymbolIndex),wr=c.aA(l.textSizeData,z,Wi),or=p.get("text-padding");Zt=this.collisionIndex.placeCollisionCircles(U,Wi,l.lineVertexArray,l.glyphOffsetArray,wr,x,w,a,te,F.predicate,ve.collisionCircleDiameter,or,m,ge),Zt.circles.length&&Zt.collisionDetected&&!a&&c.w("Collisions detected, but collision boxes are not shown"),Mt=$||Zt.circles.length>0&&!Zt.collisionDetected,xt=xt&&Zt.offscreen}if(Ve.iconFeatureIndex&&(Vi=Ve.iconFeatureIndex),Ve.iconBox){const Wi=wr=>this.collisionIndex.placeCollisionBox(wr,K,T,pe,x,te,J,_,F.predicate,ge,X&&ni?ni:void 0,De);vi&&vi.placeable&&Ve.verticalIconBox?(Oi=Wi(Ve.verticalIconBox),Rt=Oi.placeable):(Oi=Wi(Ve.iconBox),Rt=Oi.placeable),xt=xt&&Oi.offscreen}const Da=N||ve.numHorizontalGlyphVertices===0&&ve.numVerticalGlyphVertices===0,za=G||ve.numIconVertices===0;Da||za?za?Da||(Rt=Rt&&Mt):Mt=Rt&&Mt:Rt=Mt=Rt&&Mt;const Rs=Rt&&Oi.placeable;if(Mt&&qt.placeable&&this.collisionIndex.insertCollisionBox(qt.box,U,p.get("text-ignore-placement"),l.bucketInstanceId,vi&&vi.placeable&&Wr?Wr:gn,F.ID),Rs&&this.collisionIndex.insertCollisionBox(Oi.box,K,p.get("icon-ignore-placement"),l.bucketInstanceId,Vi,F.ID),Zt&&Mt&&this.collisionIndex.insertCollisionCircles(Zt.circles,U,p.get("text-ignore-placement"),l.bucketInstanceId,gn,F.ID),a&&this.storeCollisionData(l.bucketInstanceId,nt,Ve,qt,Oi,Zt),ve.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");if(l.bucketInstanceId===0)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[ve.crossTileID]=new Ko((Mt||_e)&&!(qt!=null&&qt.occluded),(Rt||fe)&&!(Oi!=null&&Oi.occluded),xt||l.justReloaded),n[ve.crossTileID]=!0};if(ae){if(t.symbolInstanceStart!==0)throw new Error("bucket.bucketInstanceId should be 0");const ve=l.getSortedSymbolIndexes(-this.transform.bearingInRadians);for(let Ve=ve.length-1;Ve>=0;--Ve){const nt=ve[Ve];ze(l.symbolInstances.get(nt),l.collisionArrays[nt],nt)}}else for(let ve=t.symbolInstanceStart;ve<t.symbolInstanceEnd;ve++)ze(l.symbolInstances.get(ve),l.collisionArrays[ve],ve);l.justReloaded=!1}storeCollisionData(t,n,a,l,p,m){if(a.textBox||a.iconBox){let _,x;this.collisionBoxArrays.has(t)?_=this.collisionBoxArrays.get(t):(_=new Map,this.collisionBoxArrays.set(t,_)),_.has(n)?x=_.get(n):(x={text:null,icon:null},_.set(n,x)),a.textBox&&(x.text=l.box),a.iconBox&&(x.icon=p.box)}if(m){let _=this.collisionCircleArrays[t];_===void 0&&(_=this.collisionCircleArrays[t]=[]);for(let x=0;x<m.circles.length;x+=4)_.push(m.circles[x+0]-li),_.push(m.circles[x+1]-li),_.push(m.circles[x+2]),_.push(m.collisionDetected?1:0)}}markUsedJustification(t,n,a,l){let p;p=l===c.az.vertical?a.verticalPlacedTextSymbolIndex:{left:a.leftJustifiedTextSymbolIndex,center:a.centerJustifiedTextSymbolIndex,right:a.rightJustifiedTextSymbolIndex}[c.aR(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 l=n===c.az.horizontal||n===c.az.horizontalOnly?n:0,p=n===c.az.vertical?n:0,m=[a.leftJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.rightJustifiedTextSymbolIndex];for(const _ of m)t.text.placedSymbolArray.get(_).placedOrientation=l;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 l=n?n.symbolFadeChange(t):1,p=n?n.opacities:{},m=n?n.variableOffsets:{},_=n?n.placedOrientations:{};for(const x in this.placements){const w=this.placements[x],T=p[x];T?(this.opacities[x]=new Ys(T,l,w.text,w.icon),a=a||w.text!==T.text.placed||w.icon!==T.icon.placed):(this.opacities[x]=new Ys(null,l,w.text,w.icon,w.skipFade),a=a||w.text||w.icon)}for(const x in p){const w=p[x];if(!this.opacities[x]){const T=new Ys(w,l,!1,!1);T.isHidden()||(this.opacities[x]=T,a=a||w.text.placed||w.icon.placed)}}for(const x in m)this.variableOffsets[x]||!this.opacities[x]||this.opacities[x].isHidden()||(this.variableOffsets[x]=m[x]);for(const x in _)this.placedOrientations[x]||!this.opacities[x]||this.opacities[x].isHidden()||(this.placedOrientations[x]=_[x]);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 l of n){const p=l.getBucket(t);p&&l.latestFeatureIndex&&t.id===p.layerIds[0]&&this.updateBucketOpacities(p,l.tileID,a,l.collisionBoxArray)}}updateBucketOpacities(t,n,a,l){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 p=t.layers[0],m=p.layout,_=new Ys(null,0,!1,!1,!0),x=m.get("text-allow-overlap"),w=m.get("icon-allow-overlap"),T=p._unevaluatedLayout.hasValue("text-variable-anchor")||p._unevaluatedLayout.hasValue("text-variable-anchor-offset"),I=m.get("text-rotation-alignment")==="map",M=m.get("text-pitch-alignment")==="map",z=m.get("icon-text-fit")!=="none",F=new Ys(null,0,x&&(w||!t.hasIconData()||m.get("icon-optional")),w&&(x||!t.hasTextData()||m.get("text-optional")),!0);!t.collisionArrays&&l&&(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData())&&t.deserializeCollisionBoxes(l);const N=(U,$,K)=>{for(let Z=0;Z<$/4;Z++)U.opacityVertexArray.emplaceBack(K);U.hasVisibleVertices=U.hasVisibleVertices||K!==yr},G=this.collisionBoxArrays.get(t.bucketInstanceId);for(let U=0;U<t.symbolInstances.length;U++){const $=t.symbolInstances.get(U),{numHorizontalGlyphVertices:K,numVerticalGlyphVertices:Z,crossTileID:J}=$;let te=this.opacities[J];a[J]?te=_:te||(te=F,this.opacities[J]=te),a[J]=!0;const X=$.numIconVertices>0,ae=this.placedOrientations[$.crossTileID],_e=ae===c.az.vertical,fe=ae===c.az.horizontal||ae===c.az.horizontalOnly;if(K>0||Z>0){const ge=gc(te.text);N(t.text,K,_e?yr:ge),N(t.text,Z,fe?yr:ge);const De=te.text.isHidden();[$.rightJustifiedTextSymbolIndex,$.centerJustifiedTextSymbolIndex,$.leftJustifiedTextSymbolIndex].forEach(Ve=>{Ve>=0&&(t.text.placedSymbolArray.get(Ve).hidden=De||_e?1:0)}),$.verticalPlacedTextSymbolIndex>=0&&(t.text.placedSymbolArray.get($.verticalPlacedTextSymbolIndex).hidden=De||fe?1:0);const ze=this.variableOffsets[$.crossTileID];ze&&this.markUsedJustification(t,ze.anchor,$,ae);const ve=this.placedOrientations[$.crossTileID];ve&&(this.markUsedJustification(t,"left",$,ve),this.markUsedOrientation(t,ve,$))}if(X){const ge=gc(te.icon),De=!(z&&$.verticalPlacedIconSymbolIndex&&_e);$.placedIconSymbolIndex>=0&&(N(t.icon,$.numIconVertices,De?ge:yr),t.icon.placedSymbolArray.get($.placedIconSymbolIndex).hidden=te.icon.isHidden()),$.verticalPlacedIconSymbolIndex>=0&&(N(t.icon,$.numVerticalIconVertices,De?yr:ge),t.icon.placedSymbolArray.get($.verticalPlacedIconSymbolIndex).hidden=te.icon.isHidden())}const pe=G&&G.has(U)?G.get(U):{text:null,icon:null};if(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData()){const ge=t.collisionArrays[U];if(ge){let De=new c.P(0,0);if(ge.textBox||ge.verticalTextBox){let ze=!0;if(T){const ve=this.variableOffsets[J];ve?(De=qa(ve.anchor,ve.width,ve.height,ve.textOffset,ve.textBoxScale),I&&De._rotate(M?-this.transform.bearingInRadians:this.transform.bearingInRadians)):ze=!1}if(ge.textBox||ge.verticalTextBox){let ve;ge.textBox&&(ve=_e),ge.verticalTextBox&&(ve=fe),Za(t.textCollisionBox.collisionVertexArray,te.text.placed,!ze||ve,pe.text,De.x,De.y)}}if(ge.iconBox||ge.verticalIconBox){const ze=!!(!fe&&ge.verticalIconBox);let ve;ge.iconBox&&(ve=ze),ge.verticalIconBox&&(ve=!ze),Za(t.iconCollisionBox.collisionVertexArray,te.icon.placed,ve,pe.icon,z?De.x:0,z?De.y:0)}}}}if(t.sortFeatures(-this.transform.bearingInRadians),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`);t.bucketInstanceId in this.collisionCircleArrays&&(t.collisionCircleArray=this.collisionCircleArrays[t.bucketInstanceId],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 Za(d,t,n,a,l,p){a&&a.length!==0||(a=[0,0,0,0]);const m=a[0]-li,_=a[1]-li,x=a[2]-li,w=a[3]-li;d.emplaceBack(t?1:0,n?1:0,l||0,p||0,m,_),d.emplaceBack(t?1:0,n?1:0,l||0,p||0,x,_),d.emplaceBack(t?1:0,n?1:0,l||0,p||0,x,w),d.emplaceBack(t?1:0,n?1:0,l||0,p||0,m,w)}const Qo=Math.pow(2,25),Wu=Math.pow(2,24),Ks=Math.pow(2,17),$a=Math.pow(2,16),fc=Math.pow(2,9),xs=Math.pow(2,8),mc=Math.pow(2,1);function gc(d){if(d.opacity===0&&!d.placed)return 0;if(d.opacity===1&&d.placed)return 4294967295;const t=d.placed?1:0,n=Math.floor(127*d.opacity);return n*Qo+t*Wu+n*Ks+t*$a+n*fc+t*xs+n*mc+t}const yr=0;class vs{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,l,p){const m=this._bucketParts;for(;this._currentTileIndex<t.length;)if(n.getBucketParts(m,l,t[this._currentTileIndex],this._sortAcrossTiles),this._currentTileIndex++,p())return!0;for(this._sortAcrossTiles&&(this._sortAcrossTiles=!1,m.sort((_,x)=>_.sortKey-x.sortKey));this._currentPartIndex<m.length;)if(n.placeLayerBucketPart(m[this._currentPartIndex],this._seenCrossTileIDs,a),this._currentPartIndex++,p())return!0;return!1}}class dt{constructor(t,n,a,l,p,m,_,x){this.placement=new pc(t,n,m,_,x),this._currentPlacementIndex=a.length-1,this._forceFullPlacement=l,this._showCollisionBoxes=p,this._done=!1}isDone(){return this._done}continuePlacement(t,n,a){const l=Re(),p=()=>!this._forceFullPlacement&&Re()-l>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 vs(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 Wn=512/c.a5/2;class Hu{constructor(t,n,a){this.tileID=t,this.bucketInstanceId=a,this._symbolsByKey={};const l=new Map;for(let p=0;p<n.length;p++){const m=n.get(p),_=m.key,x=l.get(_);x?x.push(m):l.set(_,[m])}for(const[p,m]of l){const _={positions:m.map(x=>({x:Math.floor(x.anchorX*Wn),y:Math.floor(x.anchorY*Wn)})),crossTileIDs:m.map(x=>x.crossTileID)};if(_.positions.length>128){const x=new c.aT(_.positions.length,16,Uint16Array);for(const{x:w,y:T}of _.positions)x.add(w,T);x.finish(),delete _.positions,_.index=x}this._symbolsByKey[p]=_}}getScaledCoordinates(t,n){const{x:a,y:l,z:p}=this.tileID.canonical,{x:m,y:_,z:x}=n.canonical,w=Wn/Math.pow(2,x-p),T=(_*c.a5+t.anchorY)*w,I=l*c.a5*Wn;return{x:Math.floor((m*c.a5+t.anchorX)*w-a*c.a5*Wn),y:Math.floor(T-I)}}findMatches(t,n,a){const l=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 x=this.getScaledCoordinates(m,n);if(_.index){const w=_.index.range(x.x-l,x.y-l,x.x+l,x.y+l).sort();for(const T of w){const I=_.crossTileIDs[T];if(!a[I]){a[I]=!0,m.crossTileID=I;break}}}else if(_.positions)for(let w=0;w<_.positions.length;w++){const T=_.positions[w],I=_.crossTileIDs[w];if(Math.abs(T.x-x.x)<=l&&Math.abs(T.y-x.y)<=l&&!a[I]){a[I]=!0,m.crossTileID=I;break}}}}getCrossTileIDsLists(){return Object.values(this._symbolsByKey).map(({crossTileIDs:t})=>t)}}class el{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class tr{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 l=this.indexes[a],p={};for(const m in l){const _=l[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 l=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 x=m[_];x.tileID.isChildOf(t)&&x.findMatches(n.symbolInstances,t,l)}else{const _=m[t.scaledTo(Number(p)).key];_&&_.findMatches(n.symbolInstances,t,l)}}for(let p=0;p<n.symbolInstances.length;p++){const m=n.symbolInstances.get(p);m.crossTileID||(m.crossTileID=a.generate(),l[m.crossTileID]=!0)}return this.indexes[t.overscaledZ]===void 0&&(this.indexes[t.overscaledZ]={}),this.indexes[t.overscaledZ][t.key]=new Hu(t,n.symbolInstances,n.bucketInstanceId),!0}removeBucketCrossTileIDs(t,n){for(const a of n.getCrossTileIDsLists())for(const l of a)delete this.usedCrossTileIDs[t][l]}removeStaleBuckets(t){let n=!1;for(const a in this.indexes){const l=this.indexes[a];for(const p in l)t[l[p].bucketInstanceId]||(this.removeBucketCrossTileIDs(a,l[p]),delete l[p],n=!0)}return n}}class Ii{constructor(){this.layerIndexes={},this.crossTileIDs=new el,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={}}addLayer(t,n,a){let l=this.layerIndexes[t.id];l===void 0&&(l=this.layerIndexes[t.id]=new tr);let p=!1;const m={};l.handleWrapJump(a);for(const _ of n){const x=_.getBucket(t);x&&t.id===x.layerIds[0]&&(x.bucketInstanceId||(x.bucketInstanceId=++this.maxBucketInstanceId),l.addBucket(_.tileID,x,this.crossTileIDs)&&(p=!0),m[x.bucketInstanceId]=!0)}return l.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]}}var Ei="void main() {fragColor=vec4(1.0);}";const At={prelude:We(`#ifdef GL_ES
|
||
precision mediump float;
|
||
#else
|
||
#if !defined(lowp)
|
||
#define lowp
|
||
#endif
|
||
#if !defined(mediump)
|
||
#define mediump
|
||
#endif
|
||
#if !defined(highp)
|
||
#define highp
|
||
#endif
|
||
#endif
|
||
out highp vec4 fragColor;`,`#ifdef GL_ES
|
||
precision highp float;
|
||
#else
|
||
#if !defined(lowp)
|
||
#define lowp
|
||
#endif
|
||
#if !defined(mediump)
|
||
#define mediump
|
||
#endif
|
||
#if !defined(highp)
|
||
#define highp
|
||
#endif
|
||
#endif
|
||
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
|
||
);}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;}mat3 rotationMatrixFromAxisAngle(vec3 u,float angle) {float c=cos(angle);float s=sin(angle);float c2=1.0-c;return mat3(u.x*u.x*c2+ c,u.x*u.y*c2-u.z*s,u.x*u.z*c2+u.y*s,u.y*u.x*c2+u.z*s,u.y*u.y*c2+ c,u.y*u.z*c2-u.x*s,u.z*u.x*c2-u.y*s,u.z*u.y*c2+u.x*s,u.z*u.z*c2+ c
|
||
);}
|
||
#ifdef TERRAIN3D
|
||
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;
|
||
#endif
|
||
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) {
|
||
#ifdef TERRAIN3D
|
||
highp float d=unpack(texture(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0));
|
||
#else
|
||
return 1.0;
|
||
#endif
|
||
}float calculate_visibility(vec4 pos) {
|
||
#ifdef TERRAIN3D
|
||
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;
|
||
#else
|
||
return 1.0;
|
||
#endif
|
||
}float ele(vec2 pos) {
|
||
#ifdef TERRAIN3D
|
||
vec4 rgb=(texture(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;
|
||
#else
|
||
return 0.0;
|
||
#endif
|
||
}float get_elevation(vec2 pos) {
|
||
#ifdef TERRAIN3D
|
||
#ifdef GLOBE
|
||
if ((pos.y <-32767.5) || (pos.y > 32766.5)) {return 0.0;}
|
||
#endif
|
||
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;
|
||
#else
|
||
return 0.0;
|
||
#endif
|
||
}const float PI=3.141592653589793;uniform mat4 u_projection_matrix;`),projectionMercator:We("","float projectLineThickness(float tileY) {return 1.0;}float projectCircleRadius(float tileY) {return 1.0;}vec4 projectTile(vec2 p) {vec4 result=u_projection_matrix*vec4(p,0.0,1.0);return result;}vec4 projectTile(vec2 p,vec2 rawPos) {vec4 result=u_projection_matrix*vec4(p,0.0,1.0);if (rawPos.y <-32767.5 || rawPos.y > 32766.5) {result.z=-10000000.0;}return result;}vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_projection_matrix*vec4(posInTile,elevation,1.0);}vec4 projectTileFor3D(vec2 posInTile,float elevation) {return projectTileWithElevation(posInTile,elevation);}"),projectionGlobe:We("",`#define GLOBE_RADIUS 6371008.8
|
||
uniform highp vec4 u_projection_tile_mercator_coords;uniform highp vec4 u_projection_clipping_plane;uniform highp float u_projection_transition;uniform mat4 u_projection_fallback_matrix;vec3 globeRotateVector(vec3 vec,vec2 angles) {vec3 axisRight=vec3(vec.z,0.0,-vec.x);vec3 axisUp=cross(axisRight,vec);axisRight=normalize(axisRight);axisUp=normalize(axisUp);vec2 t=tan(angles);return normalize(vec+axisRight*t.x+axisUp*t.y);}mat3 globeGetRotationMatrix(vec3 spherePos) {vec3 axisRight=vec3(spherePos.z,0.0,-spherePos.x);vec3 axisDown=cross(axisRight,spherePos);axisRight=normalize(axisRight);axisDown=normalize(axisDown);return mat3(axisRight,axisDown,spherePos
|
||
);}float circumferenceRatioAtTileY(float tileY) {float mercator_pos_y=u_projection_tile_mercator_coords.y+u_projection_tile_mercator_coords.w*tileY;float spherical_y=2.0*atan(exp(PI-(mercator_pos_y*PI*2.0)))-PI*0.5;return cos(spherical_y);}float projectLineThickness(float tileY) {float thickness=1.0/circumferenceRatioAtTileY(tileY);
|
||
if (u_projection_transition < 0.999) {return mix(1.0,thickness,u_projection_transition);} else {return thickness;}}vec3 projectToSphere(vec2 translatedPos,vec2 rawPos) {vec2 mercator_pos=u_projection_tile_mercator_coords.xy+u_projection_tile_mercator_coords.zw*translatedPos;vec2 spherical;spherical.x=mercator_pos.x*PI*2.0+PI;spherical.y=2.0*atan(exp(PI-(mercator_pos.y*PI*2.0)))-PI*0.5;float len=cos(spherical.y);vec3 pos=vec3(sin(spherical.x)*len,sin(spherical.y),cos(spherical.x)*len
|
||
);if (rawPos.y <-32767.5) {pos=vec3(0.0,1.0,0.0);}if (rawPos.y > 32766.5) {pos=vec3(0.0,-1.0,0.0);}return pos;}vec3 projectToSphere(vec2 posInTile) {return projectToSphere(posInTile,vec2(0.0,0.0));}float globeComputeClippingZ(vec3 spherePos) {return (1.0-(dot(spherePos,u_projection_clipping_plane.xyz)+u_projection_clipping_plane.w));}vec4 interpolateProjection(vec2 posInTile,vec3 spherePos,float elevation) {vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);vec4 globePosition=u_projection_matrix*vec4(elevatedPos,1.0);globePosition.z=globeComputeClippingZ(elevatedPos)*globePosition.w;if (u_projection_transition > 0.999) {return globePosition;}vec4 flatPosition=u_projection_fallback_matrix*vec4(posInTile,elevation,1.0);const float z_globeness_threshold=0.2;vec4 result=globePosition;result.z=mix(0.0,globePosition.z,clamp((u_projection_transition-z_globeness_threshold)/(1.0-z_globeness_threshold),0.0,1.0));result.xyw=mix(flatPosition.xyw,globePosition.xyw,u_projection_transition);if ((posInTile.y <-32767.5) || (posInTile.y > 32766.5)) {result=globePosition;const float poles_hidden_anim_percentage=0.02;result.z=mix(globePosition.z,100.0,pow(max((1.0-u_projection_transition)/poles_hidden_anim_percentage,0.0),8.0));}return result;}vec4 interpolateProjectionFor3D(vec2 posInTile,vec3 spherePos,float elevation) {vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);vec4 globePosition=u_projection_matrix*vec4(elevatedPos,1.0);if (u_projection_transition > 0.999) {return globePosition;}vec4 fallbackPosition=u_projection_fallback_matrix*vec4(posInTile,elevation,1.0);return mix(fallbackPosition,globePosition,u_projection_transition);}vec4 projectTile(vec2 posInTile) {return interpolateProjection(posInTile,projectToSphere(posInTile),0.0);}vec4 projectTile(vec2 posInTile,vec2 rawPos) {return interpolateProjection(posInTile,projectToSphere(posInTile,rawPos),0.0);}vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return interpolateProjection(posInTile,projectToSphere(posInTile),elevation);}vec4 projectTileFor3D(vec2 posInTile,float elevation) {vec3 spherePos=projectToSphere(posInTile,posInTile);return interpolateProjectionFor3D(posInTile,spherePos,elevation);}`),background:We(`uniform vec4 u_color;uniform float u_opacity;void main() {fragColor=u_color*u_opacity;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,"in vec2 a_pos;void main() {gl_Position=projectTile(a_pos);}"),backgroundPattern:We(`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;in vec2 v_pos_a;in 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=texture(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=texture(u_image,pos2);fragColor=mix(color1,color2,u_mix)*u_opacity;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,"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;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;void main() {gl_Position=projectTile(a_pos);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:We(`in vec3 v_data;in float v_visibility;
|
||
#pragma mapbox: define highp vec4 color
|
||
#pragma mapbox: define mediump float radius
|
||
#pragma mapbox: define lowp float blur
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define highp vec4 stroke_color
|
||
#pragma mapbox: define mediump float stroke_width
|
||
#pragma mapbox: define lowp float stroke_opacity
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 color
|
||
#pragma mapbox: initialize mediump float radius
|
||
#pragma mapbox: initialize lowp float blur
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize highp vec4 stroke_color
|
||
#pragma mapbox: initialize mediump float stroke_width
|
||
#pragma mapbox: initialize lowp float stroke_opacity
|
||
vec2 extrude=v_data.xy;float extrude_length=length(extrude);float antialiased_blur=v_data.z;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));fragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);const float epsilon=0.5/255.0;if (fragColor.r < epsilon && fragColor.g < epsilon && fragColor.b < epsilon && fragColor.a < epsilon) {discard;}
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,`uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform highp float u_globe_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;uniform vec2 u_translate;in vec2 a_pos;out vec3 v_data;out float v_visibility;
|
||
#pragma mapbox: define highp vec4 color
|
||
#pragma mapbox: define mediump float radius
|
||
#pragma mapbox: define lowp float blur
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define highp vec4 stroke_color
|
||
#pragma mapbox: define mediump float stroke_width
|
||
#pragma mapbox: define lowp float stroke_opacity
|
||
void main(void) {
|
||
#pragma mapbox: initialize highp vec4 color
|
||
#pragma mapbox: initialize mediump float radius
|
||
#pragma mapbox: initialize lowp float blur
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize highp vec4 stroke_color
|
||
#pragma mapbox: initialize mediump float stroke_width
|
||
#pragma mapbox: initialize lowp float stroke_opacity
|
||
vec2 pos_raw=a_pos+32768.0;vec2 extrude=vec2(mod(pos_raw,8.0)/7.0*2.0-1.0);vec2 circle_center=floor(pos_raw/8.0)+u_translate;float ele=get_elevation(circle_center);v_visibility=calculate_visibility(projectTileWithElevation(circle_center,ele));if (u_pitch_with_map) {
|
||
#ifdef GLOBE
|
||
vec3 center_vector=projectToSphere(circle_center);
|
||
#endif
|
||
float angle_scale=u_globe_extrude_scale;vec2 corner_position=circle_center;if (u_scale_with_map) {angle_scale*=(radius+stroke_width);corner_position+=extrude*u_extrude_scale*(radius+stroke_width);} else {
|
||
#ifdef GLOBE
|
||
vec4 projected_center=interpolateProjection(circle_center,center_vector,ele);
|
||
#else
|
||
vec4 projected_center=projectTileWithElevation(circle_center,ele);
|
||
#endif
|
||
corner_position+=extrude*u_extrude_scale*(radius+stroke_width)*(projected_center.w/u_camera_to_center_distance);angle_scale*=(radius+stroke_width)*(projected_center.w/u_camera_to_center_distance);}
|
||
#ifdef GLOBE
|
||
vec2 angles=extrude*angle_scale;vec3 corner_vector=globeRotateVector(center_vector,angles);gl_Position=interpolateProjection(corner_position,corner_vector,ele);
|
||
#else
|
||
gl_Position=projectTileWithElevation(corner_position,ele);
|
||
#endif
|
||
} else {gl_Position=projectTileWithElevation(circle_center,ele);if (gl_Position.z/gl_Position.w > 1.0) {gl_Position.xy=vec2(10000.0);}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;}}float antialiasblur=-max(1.0/u_device_pixel_ratio/(radius+stroke_width),blur);v_data=vec3(extrude.x,extrude.y,antialiasblur);}`),clippingMask:We(Ei,"in vec2 a_pos;void main() {gl_Position=projectTile(a_pos);}"),heatmap:We(`uniform highp float u_intensity;in vec2 v_extrude;
|
||
#pragma mapbox: define highp float weight
|
||
#define GAUSS_COEF 0.3989422804014327
|
||
void main() {
|
||
#pragma mapbox: initialize highp float weight
|
||
float d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);fragColor=vec4(val,1.0,1.0,1.0);
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,`uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;uniform highp float u_globe_extrude_scale;in vec2 a_pos;out vec2 v_extrude;
|
||
#pragma mapbox: define highp float weight
|
||
#pragma mapbox: define mediump float radius
|
||
const highp float ZERO=1.0/255.0/16.0;
|
||
#define GAUSS_COEF 0.3989422804014327
|
||
void main(void) {
|
||
#pragma mapbox: initialize highp float weight
|
||
#pragma mapbox: initialize mediump float radius
|
||
vec2 pos_raw=a_pos+32768.0;vec2 unscaled_extrude=vec2(mod(pos_raw,8.0)/7.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;vec2 circle_center=floor(pos_raw/8.0);
|
||
#ifdef GLOBE
|
||
vec2 angles=v_extrude*radius*u_globe_extrude_scale;vec3 center_vector=projectToSphere(circle_center);vec3 corner_vector=globeRotateVector(center_vector,angles);gl_Position=interpolateProjection(circle_center+extrude,corner_vector,0.0);
|
||
#else
|
||
gl_Position=projectTileFor3D(circle_center+extrude,get_elevation(circle_center));
|
||
#endif
|
||
}`),heatmapTexture:We(`uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;in vec2 v_pos;void main() {float t=texture(u_image,v_pos).r;vec4 color=texture(u_color_ramp,vec2(t,0.5));fragColor=color*u_opacity;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(0.0);
|
||
#endif
|
||
}`,"uniform mat4 u_matrix;uniform vec2 u_world;in vec2 a_pos;out 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:We("in float v_placed;in float v_notUsed;void main() {float alpha=0.5;fragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {fragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {fragColor*=.1;}}","in vec2 a_anchor_pos;in vec2 a_placed;in vec2 a_box_real;uniform vec2 u_pixel_extrude_scale;out float v_placed;out float v_notUsed;void main() {gl_Position=projectTileWithElevation(a_anchor_pos,get_elevation(a_anchor_pos));gl_Position.xy=((a_box_real+0.5)*u_pixel_extrude_scale*2.0-1.0)*vec2(1.0,-1.0)*gl_Position.w;if (gl_Position.z/gl_Position.w < 1.1) {gl_Position.z=0.5;}v_placed=a_placed.x;v_notUsed=a_placed.y;}"),collisionCircle:We("in float v_radius;in vec2 v_extrude;in float v_collision;void main() {float alpha=0.5;float stroke_radius=0.9;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);fragColor=color*alpha*opacity_t;}","in vec2 a_pos;in float a_radius;in vec2 a_flags;uniform vec2 u_viewport_size;out float v_radius;out vec2 v_extrude;out float v_collision;void main() {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;float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_collision=collision;gl_Position=vec4((a_pos/u_viewport_size*2.0-1.0)*vec2(1.0,-1.0),0.0,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),colorRelief:We(`#ifdef GL_ES
|
||
precision highp float;
|
||
#endif
|
||
uniform sampler2D u_image;uniform vec4 u_unpack;uniform sampler2D u_elevation_stops;uniform sampler2D u_color_stops;uniform int u_color_ramp_size;uniform float u_opacity;in vec2 v_pos;float getElevation(vec2 coord) {vec4 data=texture(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack);}float getElevationStop(int stop) {float x=(float(stop)+0.5)/float(u_color_ramp_size);vec4 data=texture(u_elevation_stops,vec2(x,0))*255.0;data.a=-1.0;return dot(data,u_unpack);}void main() {float el=getElevation(v_pos);int r=(u_color_ramp_size-1);int l=0;float el_l=getElevationStop(l);float el_r=getElevationStop(r);while(r-l > 1){int m=(r+l)/2;float el_m=getElevationStop(m);if(el < el_m){r=m;el_r=el_m;}else
|
||
{l=m;el_l=el_m;}}float x=(float(l)+(el-el_l)/(el_r-el_l)+0.5)/float(u_color_ramp_size);fragColor=u_opacity*texture(u_color_stops,vec2(x,0));
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,"uniform vec2 u_dimension;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=projectTile(a_pos,a_pos);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_pos/8192.0)*scale+epsilon;if (a_pos.y <-32767.5) {v_pos.y=0.0;}if (a_pos.y > 32766.5) {v_pos.y=1.0;}}"),debug:We("uniform highp vec4 u_color;uniform sampler2D u_overlay;in vec2 v_uv;void main() {vec4 overlay_color=texture(u_overlay,v_uv);fragColor=mix(u_color,overlay_color,overlay_color.a);}","in vec2 a_pos;out vec2 v_uv;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=projectTileWithElevation(a_pos*u_overlay_scale,get_elevation(a_pos));}"),depth:We(Ei,`in vec2 a_pos;void main() {
|
||
#ifdef GLOBE
|
||
gl_Position=projectTileFor3D(a_pos,0.0);
|
||
#else
|
||
gl_Position=u_projection_matrix*vec4(a_pos,0.0,1.0);
|
||
#endif
|
||
}`),fill:We(`#pragma mapbox: define highp vec4 color
|
||
#pragma mapbox: define lowp float opacity
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 color
|
||
#pragma mapbox: initialize lowp float opacity
|
||
fragColor=color*opacity;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,`uniform vec2 u_fill_translate;in vec2 a_pos;
|
||
#pragma mapbox: define highp vec4 color
|
||
#pragma mapbox: define lowp float opacity
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 color
|
||
#pragma mapbox: initialize lowp float opacity
|
||
gl_Position=projectTile(a_pos+u_fill_translate,a_pos);}`),fillOutline:We(`in vec2 v_pos;
|
||
#ifdef GLOBE
|
||
in float v_depth;
|
||
#endif
|
||
#pragma mapbox: define highp vec4 outline_color
|
||
#pragma mapbox: define lowp float opacity
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 outline_color
|
||
#pragma mapbox: initialize lowp float opacity
|
||
float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);fragColor=outline_color*(alpha*opacity);
|
||
#ifdef GLOBE
|
||
if (v_depth > 1.0) {discard;}
|
||
#endif
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,`uniform vec2 u_world;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos;
|
||
#ifdef GLOBE
|
||
out float v_depth;
|
||
#endif
|
||
#pragma mapbox: define highp vec4 outline_color
|
||
#pragma mapbox: define lowp float opacity
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 outline_color
|
||
#pragma mapbox: initialize lowp float opacity
|
||
gl_Position=projectTile(a_pos+u_fill_translate,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;
|
||
#ifdef GLOBE
|
||
v_depth=gl_Position.z/gl_Position.w;
|
||
#endif
|
||
}`),fillOutlinePattern:We(`uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;in vec2 v_pos_a;in vec2 v_pos_b;in vec2 v_pos;
|
||
#ifdef GLOBE
|
||
in float v_depth;
|
||
#endif
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define lowp vec4 pattern_from
|
||
#pragma mapbox: define lowp vec4 pattern_to
|
||
void main() {
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize mediump vec4 pattern_from
|
||
#pragma mapbox: initialize mediump vec4 pattern_to
|
||
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=texture(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=texture(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);fragColor=mix(color1,color2,u_fade)*alpha*opacity;
|
||
#ifdef GLOBE
|
||
if (v_depth > 1.0) {discard;}
|
||
#endif
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,`uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;out vec2 v_pos;
|
||
#ifdef GLOBE
|
||
out float v_depth;
|
||
#endif
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define lowp vec4 pattern_from
|
||
#pragma mapbox: define lowp vec4 pattern_to
|
||
#pragma mapbox: define lowp float pixel_ratio_from
|
||
#pragma mapbox: define lowp float pixel_ratio_to
|
||
void main() {
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize mediump vec4 pattern_from
|
||
#pragma mapbox: initialize mediump vec4 pattern_to
|
||
#pragma mapbox: initialize lowp float pixel_ratio_from
|
||
#pragma mapbox: initialize lowp float pixel_ratio_to
|
||
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=projectTile(a_pos+u_fill_translate,a_pos);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;
|
||
#ifdef GLOBE
|
||
v_depth=gl_Position.z/gl_Position.w;
|
||
#endif
|
||
}`),fillPattern:We(`#ifdef GL_ES
|
||
precision highp float;
|
||
#endif
|
||
uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define lowp vec4 pattern_from
|
||
#pragma mapbox: define lowp vec4 pattern_to
|
||
void main() {
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize mediump vec4 pattern_from
|
||
#pragma mapbox: initialize mediump vec4 pattern_to
|
||
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=texture(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=texture(u_image,pos2);fragColor=mix(color1,color2,u_fade)*opacity;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,`uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;uniform vec2 u_fill_translate;in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define lowp vec4 pattern_from
|
||
#pragma mapbox: define lowp vec4 pattern_to
|
||
#pragma mapbox: define lowp float pixel_ratio_from
|
||
#pragma mapbox: define lowp float pixel_ratio_to
|
||
void main() {
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize mediump vec4 pattern_from
|
||
#pragma mapbox: initialize mediump vec4 pattern_to
|
||
#pragma mapbox: initialize lowp float pixel_ratio_from
|
||
#pragma mapbox: initialize lowp float pixel_ratio_to
|
||
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=projectTile(a_pos+u_fill_translate,a_pos);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:We(`in vec4 v_color;void main() {fragColor=v_color;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,`uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp vec3 u_lightpos_globe;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec2 u_fill_translate;in vec2 a_pos;in vec4 a_normal_ed;
|
||
#ifdef TERRAIN3D
|
||
in vec2 a_centroid;
|
||
#endif
|
||
out vec4 v_color;
|
||
#pragma mapbox: define highp float base
|
||
#pragma mapbox: define highp float height
|
||
#pragma mapbox: define highp vec4 color
|
||
void main() {
|
||
#pragma mapbox: initialize highp float base
|
||
#pragma mapbox: initialize highp float height
|
||
#pragma mapbox: initialize highp vec4 color
|
||
vec3 normal=a_normal_ed.xyz;
|
||
#ifdef TERRAIN3D
|
||
float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);
|
||
#else
|
||
float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;
|
||
#endif
|
||
base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float elevation=t > 0.0 ? height : base;vec2 posInTile=a_pos+u_fill_translate;
|
||
#ifdef GLOBE
|
||
vec3 spherePos=projectToSphere(posInTile,a_pos);gl_Position=interpolateProjectionFor3D(posInTile,spherePos,elevation);
|
||
#else
|
||
gl_Position=u_projection_matrix*vec4(posInTile,elevation,1.0);
|
||
#endif
|
||
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;vec3 normalForLighting=normal/16384.0;float directional=clamp(dot(normalForLighting,u_lightpos),0.0,1.0);
|
||
#ifdef GLOBE
|
||
mat3 rotMatrix=globeGetRotationMatrix(spherePos);normalForLighting=rotMatrix*normalForLighting;directional=mix(directional,clamp(dot(normalForLighting,u_lightpos_globe),0.0,1.0),u_projection_transition);
|
||
#endif
|
||
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:We(`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;in vec4 v_lighting;
|
||
#pragma mapbox: define lowp float base
|
||
#pragma mapbox: define lowp float height
|
||
#pragma mapbox: define lowp vec4 pattern_from
|
||
#pragma mapbox: define lowp vec4 pattern_to
|
||
#pragma mapbox: define lowp float pixel_ratio_from
|
||
#pragma mapbox: define lowp float pixel_ratio_to
|
||
void main() {
|
||
#pragma mapbox: initialize lowp float base
|
||
#pragma mapbox: initialize lowp float height
|
||
#pragma mapbox: initialize mediump vec4 pattern_from
|
||
#pragma mapbox: initialize mediump vec4 pattern_to
|
||
#pragma mapbox: initialize lowp float pixel_ratio_from
|
||
#pragma mapbox: initialize lowp float pixel_ratio_to
|
||
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=texture(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=texture(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);fragColor=mixedColor*v_lighting;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,`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 vec2 u_fill_translate;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp vec3 u_lightpos_globe;uniform lowp float u_lightintensity;in vec2 a_pos;in vec4 a_normal_ed;
|
||
#ifdef TERRAIN3D
|
||
in vec2 a_centroid;
|
||
#endif
|
||
#ifdef GLOBE
|
||
out vec3 v_sphere_pos;
|
||
#endif
|
||
out vec2 v_pos_a;out vec2 v_pos_b;out vec4 v_lighting;
|
||
#pragma mapbox: define lowp float base
|
||
#pragma mapbox: define lowp float height
|
||
#pragma mapbox: define lowp vec4 pattern_from
|
||
#pragma mapbox: define lowp vec4 pattern_to
|
||
#pragma mapbox: define lowp float pixel_ratio_from
|
||
#pragma mapbox: define lowp float pixel_ratio_to
|
||
void main() {
|
||
#pragma mapbox: initialize lowp float base
|
||
#pragma mapbox: initialize lowp float height
|
||
#pragma mapbox: initialize mediump vec4 pattern_from
|
||
#pragma mapbox: initialize mediump vec4 pattern_to
|
||
#pragma mapbox: initialize lowp float pixel_ratio_from
|
||
#pragma mapbox: initialize lowp float pixel_ratio_to
|
||
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;
|
||
#ifdef TERRAIN3D
|
||
float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);
|
||
#else
|
||
float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;
|
||
#endif
|
||
base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float elevation=t > 0.0 ? height : base;vec2 posInTile=a_pos+u_fill_translate;
|
||
#ifdef GLOBE
|
||
vec3 spherePos=projectToSphere(posInTile,a_pos);vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);v_sphere_pos=elevatedPos;gl_Position=interpolateProjectionFor3D(posInTile,spherePos,elevation);
|
||
#else
|
||
gl_Position=u_projection_matrix*vec4(posInTile,elevation,1.0);
|
||
#endif
|
||
vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0
|
||
? a_pos
|
||
: vec2(edgedistance,elevation*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:We(`#ifdef GL_ES
|
||
precision highp float;
|
||
#endif
|
||
uniform sampler2D u_image;in vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack);}void main() {vec2 epsilon=1.0/u_dimension;float tileSize=u_dimension.x-2.0;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))*tileSize/pow(2.0,exaggeration+(28.2562-u_zoom));fragColor=clamp(vec4(deriv.x/8.0+0.5,deriv.y/8.0+0.5,1.0,1.0),0.0,1.0);
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,"uniform mat4 u_matrix;uniform vec2 u_dimension;in vec2 a_pos;in vec2 a_texture_pos;out 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:We(`uniform sampler2D u_image;in vec2 v_pos;uniform vec2 u_latrange;uniform float u_exaggeration;uniform vec4 u_accent;uniform int u_method;uniform float u_altitudes[NUM_ILLUMINATION_SOURCES];uniform float u_azimuths[NUM_ILLUMINATION_SOURCES];uniform vec4 u_shadows[NUM_ILLUMINATION_SOURCES];uniform vec4 u_highlights[NUM_ILLUMINATION_SOURCES];
|
||
#define PI 3.141592653589793
|
||
#define STANDARD 0
|
||
#define COMBINED 1
|
||
#define IGOR 2
|
||
#define MULTIDIRECTIONAL 3
|
||
#define BASIC 4
|
||
float get_aspect(vec2 deriv){return deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);}void igor_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float aspect=get_aspect(deriv);float azimuth=u_azimuths[0]+PI;float slope_stength=atan(length(deriv))*2.0/PI;float aspect_strength=1.0-abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);float shadow_strength=slope_stength*aspect_strength;float highlight_strength=slope_stength*(1.0-aspect_strength);fragColor=u_shadows[0]*shadow_strength+u_highlights[0]*highlight_strength;}void standard_hillshade(vec2 deriv){float azimuth=u_azimuths[0]+PI;float slope=atan(0.625*length(deriv));float aspect=get_aspect(deriv);float intensity=u_exaggeration;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_shadows[0],u_highlights[0],shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);fragColor=accent_color*(1.0-shade_color.a)+shade_color;}void basic_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float azimuth=u_azimuths[0]+PI;float cos_az=cos(azimuth);float sin_az=sin(azimuth);float cos_alt=cos(u_altitudes[0]);float sin_alt=sin(u_altitudes[0]);float cang=(sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv));float shade=clamp(cang,0.0,1.0);if(shade > 0.5){fragColor=u_highlights[0]*(2.0*shade-1.0);}else
|
||
{fragColor=u_shadows[0]*(1.0-2.0*shade);}}void multidirectional_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;fragColor=vec4(0,0,0,0);for(int i=0; i < NUM_ILLUMINATION_SOURCES; i++){float cos_alt=cos(u_altitudes[i]);float sin_alt=sin(u_altitudes[i]);float cos_az=-cos(u_azimuths[i]);float sin_az=-sin(u_azimuths[i]);float cang=(sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv));float shade=clamp(cang,0.0,1.0);if(shade > 0.5){fragColor+=u_highlights[i]*(2.0*shade-1.0)/float(NUM_ILLUMINATION_SOURCES);}else
|
||
{fragColor+=u_shadows[i]*(1.0-2.0*shade)/float(NUM_ILLUMINATION_SOURCES);}}}void combined_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float azimuth=u_azimuths[0]+PI;float cos_az=cos(azimuth);float sin_az=sin(azimuth);float cos_alt=cos(u_altitudes[0]);float sin_alt=sin(u_altitudes[0]);float cang=acos((sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv)));cang=clamp(cang,0.0,PI/2.0);float shade=cang*atan(length(deriv))*4.0/PI/PI;float highlight=(PI/2.0-cang)*atan(length(deriv))*4.0/PI/PI;fragColor=u_shadows[0]*shade+u_highlights[0]*highlight;}void main() {vec4 pixel=texture(u_image,v_pos);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));vec2 deriv=((pixel.rg*8.0)-4.0)/scaleFactor;if (u_method==BASIC) {basic_hillshade(deriv);} else if (u_method==COMBINED) {combined_hillshade(deriv);} else if (u_method==IGOR) {igor_hillshade(deriv);} else if (u_method==MULTIDIRECTIONAL) {multidirectional_hillshade(deriv);} else if (u_method==STANDARD) {standard_hillshade(deriv);} else {standard_hillshade(deriv);}
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,"uniform mat4 u_matrix;in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=projectTile(a_pos,a_pos);v_pos=a_pos/8192.0;if (a_pos.y <-32767.5) {v_pos.y=0.0;}if (a_pos.y > 32766.5) {v_pos.y=1.0;}}"),line:We(`uniform lowp float u_device_pixel_ratio;in vec2 v_width2;in vec2 v_normal;in float v_gamma_scale;
|
||
#ifdef GLOBE
|
||
in float v_depth;
|
||
#endif
|
||
#pragma mapbox: define highp vec4 color
|
||
#pragma mapbox: define lowp float blur
|
||
#pragma mapbox: define lowp float opacity
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 color
|
||
#pragma mapbox: initialize lowp float blur
|
||
#pragma mapbox: initialize lowp float opacity
|
||
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);fragColor=color*(alpha*opacity);
|
||
#ifdef GLOBE
|
||
if (v_depth > 1.0) {discard;}
|
||
#endif
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,`
|
||
#define scale 0.015873016
|
||
in vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp float v_linesofar;
|
||
#ifdef GLOBE
|
||
out float v_depth;
|
||
#endif
|
||
#pragma mapbox: define highp vec4 color
|
||
#pragma mapbox: define lowp float blur
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define mediump float gapwidth
|
||
#pragma mapbox: define lowp float offset
|
||
#pragma mapbox: define mediump float width
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 color
|
||
#pragma mapbox: initialize lowp float blur
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize mediump float gapwidth
|
||
#pragma mapbox: initialize lowp float offset
|
||
#pragma mapbox: initialize mediump float width
|
||
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);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;
|
||
#ifdef GLOBE
|
||
v_depth=gl_Position.z/gl_Position.w;
|
||
#endif
|
||
#ifdef TERRAIN3D
|
||
v_gamma_scale=1.0;
|
||
#else
|
||
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
|
||
#endif
|
||
v_width2=vec2(outset,inset);}`),lineGradient:We(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;in vec2 v_width2;in vec2 v_normal;in float v_gamma_scale;in highp vec2 v_uv;
|
||
#ifdef GLOBE
|
||
in float v_depth;
|
||
#endif
|
||
#pragma mapbox: define lowp float blur
|
||
#pragma mapbox: define lowp float opacity
|
||
void main() {
|
||
#pragma mapbox: initialize lowp float blur
|
||
#pragma mapbox: initialize lowp float opacity
|
||
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=texture(u_image,v_uv);fragColor=color*(alpha*opacity);
|
||
#ifdef GLOBE
|
||
if (v_depth > 1.0) {discard;}
|
||
#endif
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,`
|
||
#define scale 0.015873016
|
||
in vec2 a_pos_normal;in vec4 a_data;in float a_uv_x;in float a_split_index;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp vec2 v_uv;
|
||
#ifdef GLOBE
|
||
out float v_depth;
|
||
#endif
|
||
#pragma mapbox: define lowp float blur
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define mediump float gapwidth
|
||
#pragma mapbox: define lowp float offset
|
||
#pragma mapbox: define mediump float width
|
||
void main() {
|
||
#pragma mapbox: initialize lowp float blur
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize mediump float gapwidth
|
||
#pragma mapbox: initialize lowp float offset
|
||
#pragma mapbox: initialize mediump float width
|
||
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);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;
|
||
#ifdef GLOBE
|
||
v_depth=gl_Position.z/gl_Position.w;
|
||
#endif
|
||
#ifdef TERRAIN3D
|
||
v_gamma_scale=1.0;
|
||
#else
|
||
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
|
||
#endif
|
||
v_width2=vec2(outset,inset);}`),linePattern:We(`#ifdef GL_ES
|
||
precision highp float;
|
||
#endif
|
||
uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;in vec2 v_normal;in vec2 v_width2;in float v_linesofar;in float v_gamma_scale;in float v_width;
|
||
#ifdef GLOBE
|
||
in float v_depth;
|
||
#endif
|
||
#pragma mapbox: define lowp vec4 pattern_from
|
||
#pragma mapbox: define lowp vec4 pattern_to
|
||
#pragma mapbox: define lowp float pixel_ratio_from
|
||
#pragma mapbox: define lowp float pixel_ratio_to
|
||
#pragma mapbox: define lowp float blur
|
||
#pragma mapbox: define lowp float opacity
|
||
void main() {
|
||
#pragma mapbox: initialize mediump vec4 pattern_from
|
||
#pragma mapbox: initialize mediump vec4 pattern_to
|
||
#pragma mapbox: initialize lowp float pixel_ratio_from
|
||
#pragma mapbox: initialize lowp float pixel_ratio_to
|
||
#pragma mapbox: initialize lowp float blur
|
||
#pragma mapbox: initialize lowp float opacity
|
||
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(texture(u_image,pos_a),texture(u_image,pos_b),u_fade);fragColor=color*alpha*opacity;
|
||
#ifdef GLOBE
|
||
if (v_depth > 1.0) {discard;}
|
||
#endif
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,`
|
||
#define scale 0.015873016
|
||
#define LINE_DISTANCE_SCALE 2.0
|
||
in vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;out vec2 v_normal;out vec2 v_width2;out float v_linesofar;out float v_gamma_scale;out float v_width;
|
||
#ifdef GLOBE
|
||
out float v_depth;
|
||
#endif
|
||
#pragma mapbox: define lowp float blur
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define lowp float offset
|
||
#pragma mapbox: define mediump float gapwidth
|
||
#pragma mapbox: define mediump float width
|
||
#pragma mapbox: define lowp float floorwidth
|
||
#pragma mapbox: define lowp vec4 pattern_from
|
||
#pragma mapbox: define lowp vec4 pattern_to
|
||
#pragma mapbox: define lowp float pixel_ratio_from
|
||
#pragma mapbox: define lowp float pixel_ratio_to
|
||
void main() {
|
||
#pragma mapbox: initialize lowp float blur
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize lowp float offset
|
||
#pragma mapbox: initialize mediump float gapwidth
|
||
#pragma mapbox: initialize mediump float width
|
||
#pragma mapbox: initialize lowp float floorwidth
|
||
#pragma mapbox: initialize mediump vec4 pattern_from
|
||
#pragma mapbox: initialize mediump vec4 pattern_to
|
||
#pragma mapbox: initialize lowp float pixel_ratio_from
|
||
#pragma mapbox: initialize lowp float pixel_ratio_to
|
||
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);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;
|
||
#ifdef GLOBE
|
||
v_depth=gl_Position.z/gl_Position.w;
|
||
#endif
|
||
#ifdef TERRAIN3D
|
||
v_gamma_scale=1.0;
|
||
#else
|
||
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
|
||
#endif
|
||
v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`),lineSDF:We(`uniform lowp float u_device_pixel_ratio;uniform lowp float u_lineatlas_width;uniform sampler2D u_image;uniform float u_mix;in vec2 v_normal;in vec2 v_width2;in vec2 v_tex_a;in vec2 v_tex_b;in float v_gamma_scale;
|
||
#ifdef GLOBE
|
||
in float v_depth;
|
||
#endif
|
||
#pragma mapbox: define highp vec4 color
|
||
#pragma mapbox: define lowp float blur
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define mediump float width
|
||
#pragma mapbox: define lowp float floorwidth
|
||
#pragma mapbox: define mediump vec4 dasharray_from
|
||
#pragma mapbox: define mediump vec4 dasharray_to
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 color
|
||
#pragma mapbox: initialize lowp float blur
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize mediump float width
|
||
#pragma mapbox: initialize lowp float floorwidth
|
||
#pragma mapbox: initialize mediump vec4 dasharray_from
|
||
#pragma mapbox: initialize mediump vec4 dasharray_to
|
||
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=texture(u_image,v_tex_a).a;float sdfdist_b=texture(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfgamma=(u_lineatlas_width/256.0/u_device_pixel_ratio)/min(dasharray_from.w,dasharray_to.w);alpha*=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);fragColor=color*(alpha*opacity);
|
||
#ifdef GLOBE
|
||
if (v_depth > 1.0) {discard;}
|
||
#endif
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,`
|
||
#define scale 0.015873016
|
||
#define LINE_DISTANCE_SCALE 2.0
|
||
in vec2 a_pos_normal;in vec4 a_data;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_tileratio;uniform float u_crossfade_from;uniform float u_crossfade_to;uniform float u_lineatlas_height;out vec2 v_normal;out vec2 v_width2;out vec2 v_tex_a;out vec2 v_tex_b;out float v_gamma_scale;
|
||
#ifdef GLOBE
|
||
out float v_depth;
|
||
#endif
|
||
#pragma mapbox: define highp vec4 color
|
||
#pragma mapbox: define lowp float blur
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define mediump float gapwidth
|
||
#pragma mapbox: define lowp float offset
|
||
#pragma mapbox: define mediump float width
|
||
#pragma mapbox: define lowp float floorwidth
|
||
#pragma mapbox: define mediump vec4 dasharray_from
|
||
#pragma mapbox: define mediump vec4 dasharray_to
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 color
|
||
#pragma mapbox: initialize lowp float blur
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize mediump float gapwidth
|
||
#pragma mapbox: initialize lowp float offset
|
||
#pragma mapbox: initialize mediump float width
|
||
#pragma mapbox: initialize lowp float floorwidth
|
||
#pragma mapbox: initialize mediump vec4 dasharray_from
|
||
#pragma mapbox: initialize mediump vec4 dasharray_to
|
||
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);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;
|
||
#ifdef GLOBE
|
||
v_depth=gl_Position.z/gl_Position.w;
|
||
#endif
|
||
#ifdef TERRAIN3D
|
||
v_gamma_scale=1.0;
|
||
#else
|
||
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
|
||
#endif
|
||
float u_patternscale_a_x=u_tileratio/dasharray_from.w/u_crossfade_from;float u_patternscale_a_y=-dasharray_from.z/2.0/u_lineatlas_height;float u_patternscale_b_x=u_tileratio/dasharray_to.w/u_crossfade_to;float u_patternscale_b_y=-dasharray_to.z/2.0/u_lineatlas_height;v_tex_a=vec2(a_linesofar*u_patternscale_a_x/floorwidth,normal.y*u_patternscale_a_y+(float(dasharray_from.y)+0.5)/u_lineatlas_height);v_tex_b=vec2(a_linesofar*u_patternscale_b_x/floorwidth,normal.y*u_patternscale_b_y+(float(dasharray_to.y)+0.5)/u_lineatlas_height);v_width2=vec2(outset,inset);}`),lineGradientSDF:We(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform sampler2D u_image_dash;uniform float u_mix;uniform lowp float u_lineatlas_width;in vec2 v_normal;in vec2 v_width2;in vec2 v_tex_a;in vec2 v_tex_b;in float v_gamma_scale;in highp vec2 v_uv;
|
||
#ifdef GLOBE
|
||
in float v_depth;
|
||
#endif
|
||
#pragma mapbox: define lowp float blur
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define mediump float width
|
||
#pragma mapbox: define lowp float floorwidth
|
||
#pragma mapbox: define mediump vec4 dasharray_from
|
||
#pragma mapbox: define mediump vec4 dasharray_to
|
||
void main() {
|
||
#pragma mapbox: initialize lowp float blur
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize mediump float width
|
||
#pragma mapbox: initialize lowp float floorwidth
|
||
#pragma mapbox: initialize mediump vec4 dasharray_from
|
||
#pragma mapbox: initialize mediump vec4 dasharray_to
|
||
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=texture(u_image,v_uv);float sdfdist_a=texture(u_image_dash,v_tex_a).a;float sdfdist_b=texture(u_image_dash,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfgamma=(u_lineatlas_width/256.0)/min(dasharray_from.w,dasharray_to.w);float dash_alpha=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);fragColor=color*(alpha*dash_alpha*opacity);
|
||
#ifdef GLOBE
|
||
if (v_depth > 1.0) {discard;}
|
||
#endif
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,`
|
||
#define scale 0.015873016
|
||
#define LINE_DISTANCE_SCALE 2.0
|
||
in vec2 a_pos_normal;in vec4 a_data;in float a_uv_x;in float a_split_index;uniform vec2 u_translation;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;uniform float u_tileratio;uniform float u_crossfade_from;uniform float u_crossfade_to;uniform float u_lineatlas_height;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp vec2 v_uv;out vec2 v_tex_a;out vec2 v_tex_b;
|
||
#ifdef GLOBE
|
||
out float v_depth;
|
||
#endif
|
||
#pragma mapbox: define lowp float blur
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define mediump float gapwidth
|
||
#pragma mapbox: define lowp float offset
|
||
#pragma mapbox: define mediump float width
|
||
#pragma mapbox: define lowp float floorwidth
|
||
#pragma mapbox: define mediump vec4 dasharray_from
|
||
#pragma mapbox: define mediump vec4 dasharray_to
|
||
void main() {
|
||
#pragma mapbox: initialize lowp float blur
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize mediump float gapwidth
|
||
#pragma mapbox: initialize lowp float offset
|
||
#pragma mapbox: initialize mediump float width
|
||
#pragma mapbox: initialize lowp float floorwidth
|
||
#pragma mapbox: initialize mediump vec4 dasharray_from
|
||
#pragma mapbox: initialize mediump vec4 dasharray_to
|
||
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;float texel_height=1.0/u_image_height;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);float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;
|
||
#ifdef GLOBE
|
||
v_depth=gl_Position.z/gl_Position.w;
|
||
#endif
|
||
#ifdef TERRAIN3D
|
||
v_gamma_scale=1.0;
|
||
#else
|
||
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
|
||
#endif
|
||
float u_patternscale_a_x=u_tileratio/dasharray_from.w/u_crossfade_from;float u_patternscale_a_y=-dasharray_from.z/2.0/u_lineatlas_height;float u_patternscale_b_x=u_tileratio/dasharray_to.w/u_crossfade_to;float u_patternscale_b_y=-dasharray_to.z/2.0/u_lineatlas_height;v_tex_a=vec2(a_linesofar*u_patternscale_a_x/floorwidth,normal.y*u_patternscale_a_y+(float(dasharray_from.y)+0.5)/u_lineatlas_height);v_tex_b=vec2(a_linesofar*u_patternscale_b_x/floorwidth,normal.y*u_patternscale_b_y+(float(dasharray_to.y)+0.5)/u_lineatlas_height);v_width2=vec2(outset,inset);}`),raster:We(`uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;in vec2 v_pos0;in 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=texture(u_image0,v_pos0);vec4 color1=texture(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);fragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,`uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;uniform vec4 u_coords_top;uniform vec4 u_coords_bottom;in vec2 a_pos;out vec2 v_pos0;out vec2 v_pos1;void main() {vec2 fractionalPos=a_pos/8192.0;vec2 position=mix(mix(u_coords_top.xy,u_coords_top.zw,fractionalPos.x),mix(u_coords_bottom.xy,u_coords_bottom.zw,fractionalPos.x),fractionalPos.y);gl_Position=projectTile(position,position);v_pos0=((fractionalPos-0.5)/u_buffer_scale)+0.5;
|
||
#ifdef GLOBE
|
||
if (a_pos.y <-32767.5) {v_pos0.y=0.0;}if (a_pos.y > 32766.5) {v_pos0.y=1.0;}
|
||
#endif
|
||
v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}`),symbolIcon:We(`uniform sampler2D u_texture;in vec2 v_tex;in float v_fade_opacity;
|
||
#pragma mapbox: define lowp float opacity
|
||
void main() {
|
||
#pragma mapbox: initialize lowp float opacity
|
||
lowp float alpha=opacity*v_fade_opacity;fragColor=texture(u_texture,v_tex)*alpha;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,`in vec4 a_pos_offset;in vec4 a_data;in vec4 a_pixeloffset;in vec3 a_projected_pos;in 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_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;out vec2 v_tex;out float v_fade_opacity;
|
||
#pragma mapbox: define lowp float opacity
|
||
void main() {
|
||
#pragma mapbox: initialize lowp float opacity
|
||
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;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?
|
||
camera_to_anchor_distance/u_camera_to_center_distance :
|
||
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=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);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;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;
|
||
#ifdef GLOBE
|
||
if(u_pitch_with_map) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}
|
||
#endif
|
||
vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}gl_Position=finalPos;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:We(`#define SDF_PX 8.0
|
||
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;in vec2 v_data0;in vec3 v_data1;
|
||
#pragma mapbox: define highp vec4 fill_color
|
||
#pragma mapbox: define highp vec4 halo_color
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define lowp float halo_width
|
||
#pragma mapbox: define lowp float halo_blur
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 fill_color
|
||
#pragma mapbox: initialize highp vec4 halo_color
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize lowp float halo_width
|
||
#pragma mapbox: initialize lowp float halo_blur
|
||
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 inner_edge=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);inner_edge=inner_edge+gamma*gamma_scale;}lowp float dist=texture(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);if (u_is_halo) {lowp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha=min(smoothstep(halo_edge-gamma_scaled,halo_edge+gamma_scaled,dist),1.0-alpha);}fragColor=color*(alpha*opacity*fade_opacity);
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,`in vec4 a_pos_offset;in vec4 a_data;in vec4 a_pixeloffset;in vec3 a_projected_pos;in 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_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;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_translation;uniform float u_pitched_scale;out vec2 v_data0;out vec3 v_data1;
|
||
#pragma mapbox: define highp vec4 fill_color
|
||
#pragma mapbox: define highp vec4 halo_color
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define lowp float halo_width
|
||
#pragma mapbox: define lowp float halo_blur
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 fill_color
|
||
#pragma mapbox: initialize highp vec4 halo_color
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize lowp float halo_width
|
||
#pragma mapbox: initialize lowp float halo_blur
|
||
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/16.0;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;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?
|
||
camera_to_anchor_distance/u_camera_to_center_distance :
|
||
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=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);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;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;
|
||
#ifdef GLOBE
|
||
if(u_pitch_with_map) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}
|
||
#endif
|
||
vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;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:We(`#define SDF_PX 8.0
|
||
#define SDF 1.0
|
||
#define ICON 0.0
|
||
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;in vec4 v_data0;in vec4 v_data1;
|
||
#pragma mapbox: define highp vec4 fill_color
|
||
#pragma mapbox: define highp vec4 halo_color
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define lowp float halo_width
|
||
#pragma mapbox: define lowp float halo_blur
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 fill_color
|
||
#pragma mapbox: initialize highp vec4 halo_color
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize lowp float halo_width
|
||
#pragma mapbox: initialize lowp float halo_blur
|
||
float fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;fragColor=texture(u_texture_icon,tex_icon)*alpha;
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
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=texture(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);fragColor=color*(alpha*opacity*fade_opacity);
|
||
#ifdef OVERDRAW_INSPECTOR
|
||
fragColor=vec4(1.0);
|
||
#endif
|
||
}`,`in vec4 a_pos_offset;in vec4 a_data;in vec3 a_projected_pos;in 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_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;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;out vec4 v_data0;out vec4 v_data1;
|
||
#pragma mapbox: define highp vec4 fill_color
|
||
#pragma mapbox: define highp vec4 halo_color
|
||
#pragma mapbox: define lowp float opacity
|
||
#pragma mapbox: define lowp float halo_width
|
||
#pragma mapbox: define lowp float halo_blur
|
||
void main() {
|
||
#pragma mapbox: initialize highp vec4 fill_color
|
||
#pragma mapbox: initialize highp vec4 halo_color
|
||
#pragma mapbox: initialize lowp float opacity
|
||
#pragma mapbox: initialize lowp float halo_width
|
||
#pragma mapbox: initialize lowp float halo_blur
|
||
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;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?
|
||
camera_to_anchor_distance/u_camera_to_center_distance :
|
||
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=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);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;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;
|
||
#ifdef GLOBE
|
||
if(u_pitch_with_map && !u_is_along_line) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}
|
||
#endif
|
||
vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;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:We("uniform sampler2D u_texture;uniform vec4 u_fog_color;uniform vec4 u_horizon_color;uniform float u_fog_ground_blend;uniform float u_fog_ground_blend_opacity;uniform float u_horizon_fog_blend;uniform bool u_is_globe_mode;in vec2 v_texture_pos;in float v_fog_depth;const float gamma=2.2;vec4 gammaToLinear(vec4 color) {return pow(color,vec4(gamma));}vec4 linearToGamma(vec4 color) {return pow(color,vec4(1.0/gamma));}void main() {vec4 surface_color=texture(u_texture,vec2(v_texture_pos.x,1.0-v_texture_pos.y));if (!u_is_globe_mode && v_fog_depth > u_fog_ground_blend) {vec4 surface_color_linear=gammaToLinear(surface_color);float blend_color=smoothstep(0.0,1.0,max((v_fog_depth-u_horizon_fog_blend)/(1.0-u_horizon_fog_blend),0.0));vec4 fog_horizon_color_linear=mix(gammaToLinear(u_fog_color),gammaToLinear(u_horizon_color),blend_color);float factor_fog=max(v_fog_depth-u_fog_ground_blend,0.0)/(1.0-u_fog_ground_blend);fragColor=linearToGamma(mix(surface_color_linear,fog_horizon_color_linear,pow(factor_fog,2.0)*u_fog_ground_blend_opacity));} else {fragColor=surface_color;}}","in vec3 a_pos3d;uniform mat4 u_fog_matrix;uniform float u_ele_delta;out vec2 v_texture_pos;out float v_fog_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=projectTileFor3D(a_pos3d.xy,get_elevation(a_pos3d.xy)-ele_delta);vec4 pos=u_fog_matrix*vec4(a_pos3d.xy,ele,1.0);v_fog_depth=pos.z/pos.w*0.5+0.5;}"),terrainDepth:We("in 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() {fragColor=pack(v_depth);}","in vec3 a_pos3d;uniform float u_ele_delta;out float v_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;gl_Position=projectTileFor3D(a_pos3d.xy,ele-ele_delta);v_depth=gl_Position.z/gl_Position.w;}"),terrainCoords:We("precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;in vec2 v_texture_pos;void main() {vec4 rgba=texture(u_texture,v_texture_pos);fragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}","in vec3 a_pos3d;uniform float u_ele_delta;out vec2 v_texture_pos;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=projectTileFor3D(a_pos3d.xy,ele-ele_delta);}"),projectionErrorMeasurement:We("in vec4 v_output_error_encoded;void main() {fragColor=v_output_error_encoded;}","in vec2 a_pos;uniform highp float u_input;uniform highp float u_output_expected;out vec4 v_output_error_encoded;void main() {float real_output=2.0*atan(exp(PI-(u_input*PI*2.0)))-PI*0.5;float error=real_output-u_output_expected;float abs_error=abs(error)*128.0;v_output_error_encoded.x=min(floor(abs_error*256.0),255.0)/255.0;abs_error-=v_output_error_encoded.x;v_output_error_encoded.y=min(floor(abs_error*65536.0),255.0)/255.0;abs_error-=v_output_error_encoded.x/255.0;v_output_error_encoded.z=min(floor(abs_error*16777216.0),255.0)/255.0;v_output_error_encoded.w=error >=0.0 ? 1.0 : 0.0;gl_Position=vec4(a_pos,0.0,1.0);}"),atmosphere:We(`#ifdef GL_ES
|
||
precision highp float;
|
||
#endif
|
||
in vec3 view_direction;uniform vec3 u_sun_pos;uniform vec3 u_globe_position;uniform float u_globe_radius;uniform float u_atmosphere_blend;/**Shader use from https:*Made some change to adapt to MapLibre Globe geometry*/const float PI=3.141592653589793;const int iSteps=5;const int jSteps=3;/*radius of the planet*/const float EARTH_RADIUS=6371e3;/*radius of the atmosphere*/const float ATMOS_RADIUS=6471e3;vec2 rsi(vec3 r0,vec3 rd,float sr) {float a=dot(rd,rd);float b=2.0*dot(rd,r0);float c=dot(r0,r0)-(sr*sr);float d=(b*b)-4.0*a*c;if (d < 0.0) return vec2(1e5,-1e5);return vec2((-b-sqrt(d))/(2.0*a),(-b+sqrt(d))/(2.0*a));}vec4 atmosphere(vec3 r,vec3 r0,vec3 pSun,float iSun,float rPlanet,float rAtmos,vec3 kRlh,float kMie,float shRlh,float shMie,float g) {pSun=normalize(pSun);r=normalize(r);vec2 p=rsi(r0,r,rAtmos);if (p.x > p.y) {return vec4(0.0,0.0,0.0,1.0);}if (p.x < 0.0) {p.x=0.0;}vec3 pos=r0+r*p.x;vec2 p2=rsi(r0,r,rPlanet);if (p2.x <=p2.y && p2.x > 0.0) {p.y=min(p.y,p2.x);}float iStepSize=(p.y-p.x)/float(iSteps);float iTime=p.x+iStepSize*0.5;vec3 totalRlh=vec3(0,0,0);vec3 totalMie=vec3(0,0,0);float iOdRlh=0.0;float iOdMie=0.0;float mu=dot(r,pSun);float mumu=mu*mu;float gg=g*g;float pRlh=3.0/(16.0*PI)*(1.0+mumu);float pMie=3.0/(8.0*PI)*((1.0-gg)*(mumu+1.0))/(pow(1.0+gg-2.0*mu*g,1.5)*(2.0+gg));for (int i=0; i < iSteps; i++) {vec3 iPos=r0+r*iTime;float iHeight=length(iPos)-rPlanet;float odStepRlh=exp(-iHeight/shRlh)*iStepSize;float odStepMie=exp(-iHeight/shMie)*iStepSize;iOdRlh+=odStepRlh;iOdMie+=odStepMie;float jStepSize=rsi(iPos,pSun,rAtmos).y/float(jSteps);float jTime=jStepSize*0.5;float jOdRlh=0.0;float jOdMie=0.0;for (int j=0; j < jSteps; j++) {vec3 jPos=iPos+pSun*jTime;float jHeight=length(jPos)-rPlanet;jOdRlh+=exp(-jHeight/shRlh)*jStepSize;jOdMie+=exp(-jHeight/shMie)*jStepSize;jTime+=jStepSize;}vec3 attn=exp(-(kMie*(iOdMie+jOdMie)+kRlh*(iOdRlh+jOdRlh)));totalRlh+=odStepRlh*attn;totalMie+=odStepMie*attn;iTime+=iStepSize;}float opacity=exp(-(length(kRlh)*length(totalRlh)+kMie*length(totalMie)));vec3 color=iSun*(pRlh*kRlh*totalRlh+pMie*kMie*totalMie);return vec4(color,opacity);}void main() {vec3 scale_camera_pos=-u_globe_position*EARTH_RADIUS/u_globe_radius;vec4 color=atmosphere(normalize(view_direction),scale_camera_pos,u_sun_pos,22.0,EARTH_RADIUS,ATMOS_RADIUS,vec3(5.5e-6,13.0e-6,22.4e-6),21e-6,8e3,1.2e3,0.758
|
||
);color.rgb=1.0-exp(-1.0*color.rgb);color=pow(color,vec4(1.0/2.2));fragColor=vec4(color.rgb,1.0-color.a)*u_atmosphere_blend;}`,"in vec2 a_pos;uniform mat4 u_inv_proj_matrix;out vec3 view_direction;void main() {view_direction=(u_inv_proj_matrix*vec4(a_pos,0.0,1.0)).xyz;gl_Position=vec4(a_pos,0.0,1.0);}"),sky:We("uniform vec4 u_sky_color;uniform vec4 u_horizon_color;uniform vec2 u_horizon;uniform vec2 u_horizon_normal;uniform float u_sky_horizon_blend;uniform float u_sky_blend;void main() {float x=gl_FragCoord.x;float y=gl_FragCoord.y;float blend=(y-u_horizon.y)*u_horizon_normal.y+(x-u_horizon.x)*u_horizon_normal.x;if (blend > 0.0) {if (blend < u_sky_horizon_blend) {fragColor=mix(u_sky_color,u_horizon_color,pow(1.0-blend/u_sky_horizon_blend,2.0));} else {fragColor=u_sky_color;}}fragColor=mix(fragColor,vec4(vec3(0.0),0.0),u_sky_blend);}","in vec2 a_pos;void main() {gl_Position=vec4(a_pos,1.0,1.0);}")};function We(d,t){const n=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,a=t.match(/in ([\w]+) ([\w]+)/g),l=d.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),p=t.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),m=p?p.concat(l):l,_={};return{fragmentSource:d=d.replace(n,(x,w,T,I,M)=>(_[M]=!0,w==="define"?`
|
||
#ifndef HAS_UNIFORM_u_${M}
|
||
in ${T} ${I} ${M};
|
||
#else
|
||
uniform ${T} ${I} u_${M};
|
||
#endif
|
||
`:`
|
||
#ifdef HAS_UNIFORM_u_${M}
|
||
${T} ${I} ${M} = u_${M};
|
||
#endif
|
||
`)),vertexSource:t=t.replace(n,(x,w,T,I,M)=>{const z=I==="float"?"vec2":"vec4",F=M.match(/color/)?"color":z;return _[M]?w==="define"?`
|
||
#ifndef HAS_UNIFORM_u_${M}
|
||
uniform lowp float u_${M}_t;
|
||
in ${T} ${z} a_${M};
|
||
out ${T} ${I} ${M};
|
||
#else
|
||
uniform ${T} ${I} u_${M};
|
||
#endif
|
||
`:F==="vec4"?`
|
||
#ifndef HAS_UNIFORM_u_${M}
|
||
${M} = a_${M};
|
||
#else
|
||
${T} ${I} ${M} = u_${M};
|
||
#endif
|
||
`:`
|
||
#ifndef HAS_UNIFORM_u_${M}
|
||
${M} = unpack_mix_${F}(a_${M}, u_${M}_t);
|
||
#else
|
||
${T} ${I} ${M} = u_${M};
|
||
#endif
|
||
`:w==="define"?`
|
||
#ifndef HAS_UNIFORM_u_${M}
|
||
uniform lowp float u_${M}_t;
|
||
in ${T} ${z} a_${M};
|
||
#else
|
||
uniform ${T} ${I} u_${M};
|
||
#endif
|
||
`:F==="vec4"?`
|
||
#ifndef HAS_UNIFORM_u_${M}
|
||
${T} ${I} ${M} = a_${M};
|
||
#else
|
||
${T} ${I} ${M} = u_${M};
|
||
#endif
|
||
`:`
|
||
#ifndef HAS_UNIFORM_u_${M}
|
||
${T} ${I} ${M} = unpack_mix_${F}(a_${M}, u_${M}_t);
|
||
#else
|
||
${T} ${I} ${M} = u_${M};
|
||
#endif
|
||
`}),staticAttributes:a,staticUniforms:m}}class bs{constructor(t,n,a){this.vertexBuffer=t,this.indexBuffer=n,this.segments=a}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.vertexBuffer=null,this.indexBuffer=null,this.segments=null}}var ei=c.aU([{name:"a_pos",type:"Int16",components:2}]);const ir="#define PROJECTION_MERCATOR",$i="mercator";class Wa{constructor(){this._cachedMesh=null}get name(){return"mercator"}get useSubdivision(){return!1}get shaderVariantName(){return $i}get shaderDefine(){return ir}get shaderPreludeCode(){return At.projectionMercator}get vertexShaderPreludeCode(){return At.projectionMercator.vertexSource}get subdivisionGranularity(){return c.aV.noSubdivision}get useGlobeControls(){return!1}get transitionState(){return 0}get latitudeErrorCorrectionRadians(){return 0}destroy(){}updateGPUdependent(t){}getMeshFromTileID(t,n,a,l,p){if(this._cachedMesh)return this._cachedMesh;const m=new c.aW;m.emplaceBack(0,0),m.emplaceBack(c.a5,0),m.emplaceBack(0,c.a5),m.emplaceBack(c.a5,c.a5);const _=t.createVertexBuffer(m,ei.members),x=c.aX.simpleSegment(0,0,4,2),w=new c.aY;w.emplaceBack(1,0,2),w.emplaceBack(1,2,3);const T=t.createIndexBuffer(w);return this._cachedMesh=new bs(_,T,x),this._cachedMesh}recalculate(){}hasTransition(){return!1}setErrorQueryLatitudeDegrees(t){}}class on{constructor(t=0,n=0,a=0,l=0){if(isNaN(t)||t<0||isNaN(n)||n<0||isNaN(a)||a<0||isNaN(l)||l<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=l}interpolate(t,n,a){return n.top!=null&&t.top!=null&&(this.top=c.G.number(t.top,n.top,a)),n.bottom!=null&&t.bottom!=null&&(this.bottom=c.G.number(t.bottom,n.bottom,a)),n.left!=null&&t.left!=null&&(this.left=c.G.number(t.left,n.left,a)),n.right!=null&&t.right!=null&&(this.right=c.G.number(t.right,n.right,a)),this}getCenter(t,n){const a=c.an((this.left+t-this.right)/2,0,t),l=c.an((this.top+n-this.bottom)/2,0,n);return new c.P(a,l)}equals(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right}clone(){return new on(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}function jt(d,t){if(!d.renderWorldCopies||d.lngRange)return;const n=t.lng-d.center.lng;t.lng+=n>180?-360:n<-180?360:0}function ws(d){return Math.max(0,Math.floor(d))}class ln{constructor(t,n){var a;this.applyConstrain=(l,p)=>this._constrainOverride!==null?this._constrainOverride(l,p):this._callbacks.defaultConstrain(l,p),this._callbacks=t,this._tileSize=512,this._renderWorldCopies=(n==null?void 0:n.renderWorldCopies)===void 0||!!(n!=null&&n.renderWorldCopies),this._minZoom=(n==null?void 0:n.minZoom)||0,this._maxZoom=(n==null?void 0:n.maxZoom)||22,this._minPitch=(n==null?void 0:n.minPitch)==null?0:n==null?void 0:n.minPitch,this._maxPitch=(n==null?void 0:n.maxPitch)==null?60:n==null?void 0:n.maxPitch,this._constrainOverride=(a=n==null?void 0:n.constrainOverride)!==null&&a!==void 0?a:null,this.setMaxBounds(),this._width=0,this._height=0,this._center=new c.V(0,0),this._elevation=0,this._zoom=0,this._tileZoom=ws(this._zoom),this._scale=c.aq(this._zoom),this._bearingInRadians=0,this._fovInRadians=.6435011087932844,this._pitchInRadians=0,this._rollInRadians=0,this._unmodified=!0,this._edgeInsets=new on,this._minElevationForCurrentTile=0,this._autoCalculateNearFarZ=!0}apply(t,n,a){this._constrainOverride=t.constrainOverride,this._latRange=t.latRange,this._lngRange=t.lngRange,this._width=t.width,this._height=t.height,this._center=t.center,this._elevation=t.elevation,this._minElevationForCurrentTile=t.minElevationForCurrentTile,this._zoom=t.zoom,this._tileZoom=ws(this._zoom),this._scale=c.aq(this._zoom),this._bearingInRadians=t.bearingInRadians,this._fovInRadians=t.fovInRadians,this._pitchInRadians=t.pitchInRadians,this._rollInRadians=t.rollInRadians,this._unmodified=t.unmodified,this._edgeInsets=new on(t.padding.top,t.padding.bottom,t.padding.left,t.padding.right),this._minZoom=t.minZoom,this._maxZoom=t.maxZoom,this._minPitch=t.minPitch,this._maxPitch=t.maxPitch,this._renderWorldCopies=t.renderWorldCopies,this._cameraToCenterDistance=t.cameraToCenterDistance,this._nearZ=t.nearZ,this._farZ=t.farZ,this._autoCalculateNearFarZ=!a&&t.autoCalculateNearFarZ,n&&this.constrainInternal(),this._calcMatrices()}get pixelsToClipSpaceMatrix(){return this._pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._clipSpaceToPixelsMatrix}get minElevationForCurrentTile(){return this._minElevationForCurrentTile}setMinElevationForCurrentTile(t){this._minElevationForCurrentTile=t}get tileSize(){return this._tileSize}get tileZoom(){return this._tileZoom}get scale(){return this._scale}get width(){return this._width}get height(){return this._height}get bearingInRadians(){return this._bearingInRadians}get lngRange(){return this._lngRange}get latRange(){return this._latRange}get pixelsToGLUnits(){return this._pixelsToGLUnits}get minZoom(){return this._minZoom}setMinZoom(t){this._minZoom!==t&&(this._minZoom=t,this.setZoom(this.applyConstrain(this._center,this.zoom).zoom))}get maxZoom(){return this._maxZoom}setMaxZoom(t){this._maxZoom!==t&&(this._maxZoom=t,this.setZoom(this.applyConstrain(this._center,this.zoom).zoom))}get minPitch(){return this._minPitch}setMinPitch(t){this._minPitch!==t&&(this._minPitch=t,this.setPitch(Math.max(this.pitch,t)))}get maxPitch(){return this._maxPitch}setMaxPitch(t){this._maxPitch!==t&&(this._maxPitch=t,this.setPitch(Math.min(this.pitch,t)))}get renderWorldCopies(){return this._renderWorldCopies}setRenderWorldCopies(t){t===void 0?t=!0:t===null&&(t=!1),this._renderWorldCopies=t}get constrainOverride(){return this._constrainOverride}setConstrainOverride(t){t===void 0&&(t=null),this._constrainOverride!==t&&(this._constrainOverride=t,this.constrainInternal(),this._calcMatrices())}get worldSize(){return this._tileSize*this._scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new c.P(this._width,this._height)}get bearing(){return this._bearingInRadians/Math.PI*180}setBearing(t){const n=c.W(t,-180,180)*Math.PI/180;var a,l,p,m,_,x,w,T,I;this._bearingInRadians!==n&&(this._unmodified=!1,this._bearingInRadians=n,this._calcMatrices(),this._rotationMatrix=He(),a=this._rotationMatrix,p=-this._bearingInRadians,m=(l=this._rotationMatrix)[0],_=l[1],x=l[2],w=l[3],T=Math.sin(p),I=Math.cos(p),a[0]=m*I+x*T,a[1]=_*I+w*T,a[2]=m*-T+x*I,a[3]=_*-T+w*I)}get rotationMatrix(){return this._rotationMatrix}get pitchInRadians(){return this._pitchInRadians}get pitch(){return this._pitchInRadians/Math.PI*180}setPitch(t){const n=c.an(t,this.minPitch,this.maxPitch)/180*Math.PI;this._pitchInRadians!==n&&(this._unmodified=!1,this._pitchInRadians=n,this._calcMatrices())}get rollInRadians(){return this._rollInRadians}get roll(){return this._rollInRadians/Math.PI*180}setRoll(t){const n=t/180*Math.PI;this._rollInRadians!==n&&(this._unmodified=!1,this._rollInRadians=n,this._calcMatrices())}get fovInRadians(){return this._fovInRadians}get fov(){return c.aZ(this._fovInRadians)}setFov(t){t=c.an(t,.1,150),this.fov!==t&&(this._unmodified=!1,this._fovInRadians=c.ap(t),this._calcMatrices())}get zoom(){return this._zoom}setZoom(t){const n=this.applyConstrain(this._center,t).zoom;this._zoom!==n&&(this._unmodified=!1,this._zoom=n,this._tileZoom=Math.max(0,Math.floor(n)),this._scale=c.aq(n),this.constrainInternal(),this._calcMatrices())}get center(){return this._center}setCenter(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this.constrainInternal(),this._calcMatrices())}get elevation(){return this._elevation}setElevation(t){t!==this._elevation&&(this._elevation=t,this.constrainInternal(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}setPadding(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)}get pixelsPerMeter(){return this._pixelPerMeter}get unmodified(){return this._unmodified}get cameraToCenterDistance(){return this._cameraToCenterDistance}get nearZ(){return this._nearZ}get farZ(){return this._farZ}get autoCalculateNearFarZ(){return this._autoCalculateNearFarZ}overrideNearFarZ(t,n){this._autoCalculateNearFarZ=!1,this._nearZ=t,this._farZ=n,this._calcMatrices()}clearNearFarZOverride(){this._autoCalculateNearFarZ=!0,this._calcMatrices()}isPaddingEqual(t){return this._edgeInsets.equals(t)}interpolatePadding(t,n,a){this._unmodified=!1,this._edgeInsets.interpolate(t,n,a),this.constrainInternal(),this._calcMatrices()}resize(t,n,a=!0){this._width=t,this._height=n,a&&this.constrainInternal(),this._calcMatrices()}getMaxBounds(){return this._latRange&&this._latRange.length===2&&this._lngRange&&this._lngRange.length===2?new zt([this._lngRange[0],this._latRange[0]],[this._lngRange[1],this._latRange[1]]):null}setMaxBounds(t){t?(this._lngRange=[t.getWest(),t.getEast()],this._latRange=[t.getSouth(),t.getNorth()],this.constrainInternal()):(this._lngRange=null,this._latRange=[-c.ao,c.ao])}getCameraQueryGeometry(t,n){if(n.length===1)return[n[0],t];{const{minX:a,minY:l,maxX:p,maxY:m}=c.aa.fromPoints(n).extend(t);return[new c.P(a,l),new c.P(p,l),new c.P(p,m),new c.P(a,m),new c.P(a,l)]}}constrainInternal(){if(!this.center||!this._width||!this._height||this._constraining)return;this._constraining=!0;const t=this._unmodified,{center:n,zoom:a}=this.applyConstrain(this.center,this.zoom);this.setCenter(n),this.setZoom(a),this._unmodified=t,this._constraining=!1}_calcMatrices(){if(this._width&&this._height){this._pixelsToGLUnits=[2/this._width,-2/this._height];let t=c.ar(new Float64Array(16));c.Q(t,t,[this._width/2,-this._height/2,1]),c.O(t,t,[1,-1,0]),this._clipSpaceToPixelsMatrix=t,t=c.ar(new Float64Array(16)),c.Q(t,t,[1,-1,1]),c.O(t,t,[-1,-1,0]),c.Q(t,t,[2/this._width,2/this._height,1]),this._pixelsToClipSpaceMatrix=t,this._cameraToCenterDistance=.5/Math.tan(this.fovInRadians/2)*this._height}this._callbacks.calcMatrices()}calculateCenterFromCameraLngLatAlt(t,n,a,l){const p=a!==void 0?a:this.bearing,m=l=l!==void 0?l:this.pitch,{distanceToCenter:_,clampedElevation:x}=this._distanceToCenterFromAltElevationPitch(n,this.elevation,m),{x:w,y:T}=et(m,p),I=c.a9.fromLngLat(t,n);let M,z,F=c.a_(1,I.y),N=0;do{if(N+=1,N>10)break;z=_/F,M=new c.a9(I.x+w*z,I.y+T*z),F=1/M.meterInMercatorCoordinateUnits()}while(Math.abs(_-z*F)>1e-12);return{center:M.toLngLat(),elevation:x,zoom:c.at(this.height/2/Math.tan(this.fovInRadians/2)/z/this.tileSize)}}recalculateZoomAndCenter(t){if(this.elevation-t==0)return;const n=1/this.worldSize,a=c.as(1,this.center.lat)*this.worldSize,l=c.a9.fromLngLat(this.center,this.elevation),p=l.x/n,m=l.y/n,_=l.z/n,x=this.pitch,w=this.bearing,{x:T,y:I,z:M}=et(x,w),z=this.cameraToCenterDistance,F=p+z*-T,N=m+z*-I,G=_+z*M,{distanceToCenter:U,clampedElevation:$}=this._distanceToCenterFromAltElevationPitch(G/a,t,x),K=U*a,Z=new c.a9((F+T*K)*n,(N+I*K)*n,0).toLngLat(),J=c.as(1,Z.lat),te=c.at(this.height/2/Math.tan(this.fovInRadians/2)/U/J/this.tileSize);this._elevation=$,this._center=Z,this.setZoom(te)}_distanceToCenterFromAltElevationPitch(t,n,a){const l=-Math.cos(c.ap(a)),p=t-n;let m,_=n;return l*p>=0||Math.abs(l)<.1?(m=1e4,_=t+m*l):m=-p/l,{distanceToCenter:m,clampedElevation:_}}getCameraPoint(){const t=Math.tan(this.pitchInRadians)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new c.P(t*Math.sin(this.rollInRadians),t*Math.cos(this.rollInRadians)))}getCameraAltitude(){return Math.cos(this.pitchInRadians)*this._cameraToCenterDistance/this._pixelPerMeter+this.elevation}getCameraLngLat(){const t=c.as(1,this.center.lat)*this.worldSize;return Ge(this.center,this.elevation,this.pitch,this.bearing,this.cameraToCenterDistance/t).toLngLat()}getMercatorTileCoordinates(t){if(!t)return[0,0,1,1];const n=t.canonical.z>=0?1<<t.canonical.z:Math.pow(2,t.canonical.z);return[t.canonical.x/n,t.canonical.y/n,1/n/c.a5,1/n/c.a5]}}class Hn{constructor(t,n){this.min=t,this.max=n,this.center=c.a$([],c.b0([],this.min,this.max),.5)}quadrant(t){const n=[t%2==0,t<2],a=c.b1(this.min),l=c.b1(this.max);for(let p=0;p<n.length;p++)a[p]=n[p]?this.min[p]:this.center[p],l[p]=n[p]?this.center[p]:this.max[p];return l[2]=this.max[2],new Hn(a,l)}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]}intersectsFrustum(t){let n=!0;for(let a=0;a<t.planes.length;a++){const l=this.intersectsPlane(t.planes[a]);if(l===0)return 0;l===1&&(n=!1)}return n?2:t.aabb.min[0]>this.max[0]||t.aabb.min[1]>this.max[1]||t.aabb.min[2]>this.max[2]||t.aabb.max[0]<this.min[0]||t.aabb.max[1]<this.min[1]||t.aabb.max[2]<this.min[2]?0:1}intersectsPlane(t){let n=t[3],a=t[3];for(let l=0;l<3;l++)t[l]>0?(n+=t[l]*this.min[l],a+=t[l]*this.max[l]):(a+=t[l]*this.min[l],n+=t[l]*this.max[l]);return n>=0?2:a<0?0:1}}class Cr{distanceToTile2d(t,n,a,l){const p=l.distanceX([t,n]),m=l.distanceY([t,n]);return Math.hypot(p,m)}getWrap(t,n,a){return a}getTileBoundingVolume(t,n,a,l){var p,m;let _=0,x=0;if(l!=null&&l.terrain){const T=new c.a2(t.z,n,t.z,t.x,t.y),I=l.terrain.getMinMaxElevation(T);_=(p=I.minElevation)!==null&&p!==void 0?p:Math.min(0,a),x=(m=I.maxElevation)!==null&&m!==void 0?m:Math.max(0,a)}const w=1<<t.z;return new Hn([n+t.x/w,t.y/w,_],[n+(t.x+1)/w,(t.y+1)/w,x])}allowVariableZoom(t,n){const a=t.fov*(Math.abs(Math.cos(t.rollInRadians))*t.height+Math.abs(Math.sin(t.rollInRadians))*t.width)/t.height,l=c.an(78.5-a/2,0,60);return!!n.terrain||t.pitch>l}allowWorldCopies(){return!0}prepareNextFrame(){}}class Js{constructor(t,n,a){this.points=t,this.planes=n,this.aabb=a}static fromInvProjectionMatrix(t,n=1,a=0,l,p){const m=p?[[6,5,4],[0,1,2],[0,3,7],[2,1,5],[3,2,6],[0,4,5]]:[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]],_=Math.pow(2,a),x=[[-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(M=>function(z,F,N,G){const U=c.aH([],z,F),$=1/U[3]/N*G;return c.b6(U,U,[$,$,1/U[3],$])}(M,t,n,_));l&&function(M,z,F,N){const G=N?4:0,U=N?0:4;let $=0;const K=[],Z=[];for(let X=0;X<4;X++){const ae=c.b2([],M[X+U],M[X+G]),_e=c.b7(ae);c.a$(ae,ae,1/_e),K.push(_e),Z.push(ae)}for(let X=0;X<4;X++){const ae=c.b8(M[X+G],Z[X],F);$=ae!==null&&ae>=0?Math.max($,ae):Math.max($,K[X])}const J=function(X,ae){const _e=c.b2([],X[ae[0]],X[ae[1]]),fe=c.b2([],X[ae[2]],X[ae[1]]),pe=[0,0,0,0];return c.b3(pe,c.b4([],_e,fe)),pe[3]=-c.b5(pe,X[ae[0]]),pe}(M,z),te=function(X,ae){const _e=c.b9(X),fe=c.ba([],X,1/_e),pe=c.b2([],ae,c.a$([],fe,c.b5(ae,fe))),ge=c.b9(pe);if(ge>0){const De=Math.sqrt(1-fe[3]*fe[3]),ze=c.a$([],fe,-fe[3]),ve=c.b0([],ze,c.a$([],pe,De/ge));return c.bb(ae,ve)}return null}(F,J);if(te!==null){const X=te/c.b5(Z[0],J);$=Math.min($,X)}for(let X=0;X<4;X++){const ae=Math.min($,K[X]);M[X+U]=[M[X+G][0]+Z[X][0]*ae,M[X+G][1]+Z[X][1]*ae,M[X+G][2]+Z[X][2]*ae,1]}}(x,m[0],l,p);const w=m.map(M=>{const z=c.b2([],x[M[0]],x[M[1]]),F=c.b2([],x[M[2]],x[M[1]]),N=c.b3([],c.b4([],z,F)),G=-c.b5(N,x[M[1]]);return N.concat(G)}),T=[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY],I=[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY];for(const M of x)for(let z=0;z<3;z++)T[z]=Math.min(T[z],M[z]),I[z]=Math.max(I[z],M[z]);return new Js(x,w,new Hn(T,I))}}class rr{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(t){this._helper.setMinZoom(t)}setMaxZoom(t){this._helper.setMaxZoom(t)}setMinPitch(t){this._helper.setMinPitch(t)}setMaxPitch(t){this._helper.setMaxPitch(t)}setRenderWorldCopies(t){this._helper.setRenderWorldCopies(t)}setBearing(t){this._helper.setBearing(t)}setPitch(t){this._helper.setPitch(t)}setRoll(t){this._helper.setRoll(t)}setFov(t){this._helper.setFov(t)}setZoom(t){this._helper.setZoom(t)}setCenter(t){this._helper.setCenter(t)}setElevation(t){this._helper.setElevation(t)}setMinElevationForCurrentTile(t){this._helper.setMinElevationForCurrentTile(t)}setPadding(t){this._helper.setPadding(t)}interpolatePadding(t,n,a){return this._helper.interpolatePadding(t,n,a)}isPaddingEqual(t){return this._helper.isPaddingEqual(t)}resize(t,n,a=!0){this._helper.resize(t,n,a)}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(t){this._helper.setMaxBounds(t)}setConstrainOverride(t){this._helper.setConstrainOverride(t)}overrideNearFarZ(t,n){this._helper.overrideNearFarZ(t,n)}clearNearFarZOverride(){this._helper.clearNearFarZOverride()}getCameraQueryGeometry(t){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),t)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}get constrainOverride(){return this._helper.constrainOverride}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}setTransitionState(t,n){}constructor(t){this._posMatrixCache=new Map,this._alignedPosMatrixCache=new Map,this._fogMatrixCacheF32=new Map,this.defaultConstrain=(n,a)=>{a=c.an(+a,this.minZoom,this.maxZoom);const l={center:new c.V(n.lng,n.lat),zoom:a};let p=this._helper._lngRange;!this._helper._renderWorldCopies&&p===null&&(p=[-179.9999999999,179.9999999999]);const m=this.tileSize*c.aq(l.zoom);let _=0,x=m,w=0,T=m,I=0,M=0;const{x:z,y:F}=this.size;if(this._helper._latRange){const Z=this._helper._latRange;_=c.X(Z[1])*m,x=c.X(Z[0])*m,x-_<F&&(I=F/(x-_))}p&&(w=c.W(c.Y(p[0])*m,0,m),T=c.W(c.Y(p[1])*m,0,m),T<w&&(T+=m),T-w<z&&(M=z/(T-w)));const{x:N,y:G}=le(m,n);let U,$;const K=Math.max(M||0,I||0);if(K){const Z=new c.P(M?(T+w)/2:N,I?(x+_)/2:G);return l.center=Me(m,Z).wrap(),l.zoom+=c.at(K),l}if(this._helper._latRange){const Z=F/2;G-Z<_&&($=_+Z),G+Z>x&&($=x-Z)}if(p){const Z=(w+T)/2;let J=N;this._helper._renderWorldCopies&&(J=c.W(N,Z-m/2,Z+m/2));const te=z/2;J-te<w&&(U=w+te),J+te>T&&(U=T-te)}if(U!==void 0||$!==void 0){const Z=new c.P(U??N,$??G);l.center=Me(m,Z).wrap()}return l},this.applyConstrain=(n,a)=>this._helper.applyConstrain(n,a),this._helper=new ln({calcMatrices:()=>{this._calcMatrices()},defaultConstrain:(n,a)=>this.defaultConstrain(n,a)},t),this._coveringTilesDetailsProvider=new Cr}clone(){const t=new rr;return t.apply(this,!1),t}apply(t,n,a){this._helper.apply(t,n,a)}get cameraPosition(){return this._cameraPosition}get projectionMatrix(){return this._projectionMatrix}get modelViewProjectionMatrix(){return this._viewProjMatrix}get inverseProjectionMatrix(){return this._invProjMatrix}get mercatorMatrix(){return this._mercatorMatrix}getVisibleUnwrappedCoordinates(t){const n=[new c.bc(0,t)];if(this._helper._renderWorldCopies){const a=this.screenPointToMercatorCoordinate(new c.P(0,0)),l=this.screenPointToMercatorCoordinate(new c.P(this._helper._width,0)),p=this.screenPointToMercatorCoordinate(new c.P(this._helper._width,this._helper._height)),m=this.screenPointToMercatorCoordinate(new c.P(0,this._helper._height)),_=Math.floor(Math.min(a.x,l.x,p.x,m.x)),x=Math.floor(Math.max(a.x,l.x,p.x,m.x)),w=1;for(let T=_-w;T<=x+w;T++)T!==0&&n.push(new c.bc(T,t))}return n}getCameraFrustum(){return Js.fromInvProjectionMatrix(this._invViewProjMatrix,this.worldSize)}getClippingPlane(){return null}getCoveringTilesDetailsProvider(){return this._coveringTilesDetailsProvider}recalculateZoomAndCenter(t){const n=this.screenPointToLocation(this.centerPoint,t),a=t?t.getElevationForLngLatZoom(n,this._helper._tileZoom):0;this._helper.recalculateZoomAndCenter(a)}setLocationAtPoint(t,n){const a=c.as(this.elevation,this.center.lat),l=this.screenPointToMercatorCoordinateAtZ(n,a),p=this.screenPointToMercatorCoordinateAtZ(this.centerPoint,a),m=c.a9.fromLngLat(t),_=new c.a9(m.x-(l.x-p.x),m.y-(l.y-p.y));this.setCenter(_==null?void 0:_.toLngLat()),this._helper._renderWorldCopies&&this.setCenter(this.center.wrap())}locationToScreenPoint(t,n){return n?this.coordinatePoint(c.a9.fromLngLat(t),n.getElevationForLngLat(t,this),this._pixelMatrix3D):this.coordinatePoint(c.a9.fromLngLat(t))}screenPointToLocation(t,n){var a;return(a=this.screenPointToMercatorCoordinate(t,n))===null||a===void 0?void 0:a.toLngLat()}screenPointToMercatorCoordinate(t,n){if(n){const a=n.pointCoordinate(t);if(a!=null)return a}return this.screenPointToMercatorCoordinateAtZ(t)}screenPointToMercatorCoordinateAtZ(t,n){const a=n||0,l=[t.x,t.y,0,1],p=[t.x,t.y,1,1];c.aH(l,l,this._pixelMatrixInverse),c.aH(p,p,this._pixelMatrixInverse);const m=l[3],_=p[3],x=l[1]/m,w=p[1]/_,T=l[2]/m,I=p[2]/_,M=T===I?0:(a-T)/(I-T);return new c.a9(c.G.number(l[0]/m,p[0]/_,M)/this.worldSize,c.G.number(x,w,M)/this.worldSize,a)}coordinatePoint(t,n=0,a=this._pixelMatrix){const l=[t.x*this.worldSize,t.y*this.worldSize,n,1];return c.aH(l,l,a),new c.P(l[0]/l[3],l[1]/l[3])}getBounds(){const t=Math.max(0,this._helper._height/2-xe(this));return new zt().extend(this.screenPointToLocation(new c.P(0,t))).extend(this.screenPointToLocation(new c.P(this._helper._width,t))).extend(this.screenPointToLocation(new c.P(this._helper._width,this._helper._height))).extend(this.screenPointToLocation(new c.P(0,this._helper._height)))}isPointOnMapSurface(t,n){return n?n.pointCoordinate(t)!=null:t.y>this.height/2-xe(this)}calculatePosMatrix(t,n=!1,a){var l;const p=(l=t.key)!==null&&l!==void 0?l:c.bd(t.wrap,t.canonical.z,t.canonical.z,t.canonical.x,t.canonical.y),m=n?this._alignedPosMatrixCache:this._posMatrixCache;if(m.has(p)){const w=m.get(p);return a?w.f32:w.f64}const _=Q(t,this.worldSize);c.S(_,n?this._alignedProjMatrix:this._viewProjMatrix,_);const x={f64:_,f32:new Float32Array(_)};return m.set(p,x),a?x.f32:x.f64}calculateFogMatrix(t){const n=t.key,a=this._fogMatrixCacheF32;if(a.has(n))return a.get(n);const l=Q(t,this.worldSize);return c.S(l,this._fogMatrix,l),a.set(n,new Float32Array(l)),a.get(n)}calculateCenterFromCameraLngLatAlt(t,n,a,l){return this._helper.calculateCenterFromCameraLngLatAlt(t,n,a,l)}_calculateNearFarZIfNeeded(t,n,a){if(!this._helper.autoCalculateNearFarZ)return;const l=Math.min(this.elevation,this.minElevationForCurrentTile,this.getCameraAltitude()-100),p=t-l*this._helper._pixelPerMeter/Math.cos(n),m=l<0?p:t,_=Math.PI/2+this.pitchInRadians,x=c.ap(this.fov)*(Math.abs(Math.cos(c.ap(this.roll)))*this.height+Math.abs(Math.sin(c.ap(this.roll)))*this.width)/this.height*(.5+a.y/this.height),w=Math.sin(x)*m/Math.sin(c.an(Math.PI-_-x,.01,Math.PI-.01)),T=xe(this),I=Math.atan(T/this._helper.cameraToCenterDistance),M=c.ap(.75),z=I>M?2*I*(.5+a.y/(2*T)):M,F=Math.sin(z)*m/Math.sin(c.an(Math.PI-_-z,.01,Math.PI-.01)),N=Math.min(w,F);this._helper._farZ=1.01*(Math.cos(Math.PI/2-n)*N+m),this._helper._nearZ=this._helper._height/50}_calcMatrices(){if(!this._helper._height)return;const t=this.centerOffset,n=le(this.worldSize,this.center),a=n.x,l=n.y;this._helper._pixelPerMeter=c.as(1,this.center.lat)*this.worldSize;const p=c.ap(Math.min(this.pitch,se)),m=Math.max(this._helper.cameraToCenterDistance/2,this._helper.cameraToCenterDistance+this._helper._elevation*this._helper._pixelPerMeter/Math.cos(p));let _;this._calculateNearFarZIfNeeded(m,p,t),_=new Float64Array(16),c.be(_,this.fovInRadians,this._helper._width/this._helper._height,this._helper._nearZ,this._helper._farZ),this._invProjMatrix=new Float64Array(16),c.aB(this._invProjMatrix,_),_[8]=2*-t.x/this._helper._width,_[9]=2*t.y/this._helper._height,this._projectionMatrix=c.bf(_),c.Q(_,_,[1,-1,1]),c.O(_,_,[0,0,-this._helper.cameraToCenterDistance]),c.bg(_,_,-this.rollInRadians),c.bh(_,_,this.pitchInRadians),c.bg(_,_,-this.bearingInRadians),c.O(_,_,[-a,-l,0]),this._mercatorMatrix=c.Q([],_,[this.worldSize,this.worldSize,this.worldSize]),c.Q(_,_,[1,1,this._helper._pixelPerMeter]),this._pixelMatrix=c.S(new Float64Array(16),this.clipSpaceToPixelsMatrix,_),c.O(_,_,[0,0,-this.elevation]),this._viewProjMatrix=_,this._invViewProjMatrix=c.aB([],_);const x=[0,0,-1,1];c.aH(x,x,this._invViewProjMatrix),this._cameraPosition=[x[0]/x[3],x[1]/x[3],x[2]/x[3]],this._fogMatrix=new Float64Array(16),c.be(this._fogMatrix,this.fovInRadians,this.width/this.height,m,this._helper._farZ),this._fogMatrix[8]=2*-t.x/this.width,this._fogMatrix[9]=2*t.y/this.height,c.Q(this._fogMatrix,this._fogMatrix,[1,-1,1]),c.O(this._fogMatrix,this._fogMatrix,[0,0,-this.cameraToCenterDistance]),c.bg(this._fogMatrix,this._fogMatrix,-this.rollInRadians),c.bh(this._fogMatrix,this._fogMatrix,this.pitchInRadians),c.bg(this._fogMatrix,this._fogMatrix,-this.bearingInRadians),c.O(this._fogMatrix,this._fogMatrix,[-a,-l,0]),c.Q(this._fogMatrix,this._fogMatrix,[1,1,this._helper._pixelPerMeter]),c.O(this._fogMatrix,this._fogMatrix,[0,0,-this.elevation]),this._pixelMatrix3D=c.S(new Float64Array(16),this.clipSpaceToPixelsMatrix,_);const w=this._helper._width%2/2,T=this._helper._height%2/2,I=Math.cos(this.bearingInRadians),M=Math.sin(-this.bearingInRadians),z=a-Math.round(a)+I*w+M*T,F=l-Math.round(l)+I*T+M*w,N=new Float64Array(_);if(c.O(N,N,[z>.5?z-1:z,F>.5?F-1:F,0]),this._alignedProjMatrix=N,_=c.aB(new Float64Array(16),this._pixelMatrix),!_)throw new Error("failed to invert matrix");this._pixelMatrixInverse=_,this._clearMatrixCaches()}_clearMatrixCaches(){this._posMatrixCache.clear(),this._alignedPosMatrixCache.clear(),this._fogMatrixCacheF32.clear()}maxPitchScaleFactor(){if(!this._pixelMatrixInverse)return 1;const t=this.screenPointToMercatorCoordinate(new c.P(0,0)),n=[t.x*this.worldSize,t.y*this.worldSize,0,1];return c.aH(n,n,this._pixelMatrix)[3]/this._helper.cameraToCenterDistance}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return this._helper.getCameraAltitude()}getCameraLngLat(){const t=c.as(1,this.center.lat)*this.worldSize;return Ge(this.center,this.elevation,this.pitch,this.bearing,this._helper.cameraToCenterDistance/t).toLngLat()}lngLatToCameraDepth(t,n){const a=c.a9.fromLngLat(t),l=[a.x*this.worldSize,a.y*this.worldSize,n,1];return c.aH(l,l,this._viewProjMatrix),l[2]/l[3]}getProjectionData(t){const{overscaledTileID:n,aligned:a,applyTerrainMatrix:l}=t,p=this._helper.getMercatorTileCoordinates(n),m=n?this.calculatePosMatrix(n,a,!0):null;let _;return _=n&&n.terrainRttPosMatrix32f&&l?n.terrainRttPosMatrix32f:m||c.bi(),{mainMatrix:_,tileMercatorCoords:p,clippingPlane:[0,0,0,0],projectionTransition:0,fallbackMatrix:_}}isLocationOccluded(t){return!1}getPixelScale(){return 1}getCircleRadiusCorrection(){return 1}getPitchedTextCorrection(t,n,a){return 1}transformLightDirection(t){return c.b1(t)}getRayDirectionFromPixel(t){throw new Error("Not implemented.")}projectTileCoordinates(t,n,a,l){const p=this.calculatePosMatrix(a);let m;l?(m=[t,n,l(t,n),1],c.aH(m,m,p)):(m=[t,n,0,1],Dn(m,m,p));const _=m[3];return{point:new c.P(m[0]/_,m[1]/_),signedDistanceFromCamera:_,isOccluded:!1}}populateCache(t){for(const n of t)this.calculatePosMatrix(n)}getMatrixForModel(t,n){const a=c.a9.fromLngLat(t,n),l=a.meterInMercatorCoordinateUnits(),p=c.bj();return c.O(p,p,[a.x,a.y,a.z]),c.bg(p,p,Math.PI),c.bh(p,p,Math.PI/2),c.Q(p,p,[-l,l,l]),p}getProjectionDataForCustomLayer(t=!0){const n=new c.a2(0,0,0,0,0),a=this.getProjectionData({overscaledTileID:n,applyGlobeMatrix:t}),l=Q(n,this.worldSize);c.S(l,this._viewProjMatrix,l),a.tileMercatorCoords=[0,0,1,1];const p=[c.a5,c.a5,this.worldSize/this._helper.pixelsPerMeter],m=c.bk();return c.Q(m,l,p),a.fallbackMatrix=m,a.mainMatrix=m,a}getFastPathSimpleProjectionMatrix(t){return this.calculatePosMatrix(t)}}function _c(){c.w("Map cannot fit within canvas with the given bounds, padding, and/or offset.")}function tl(d){if(d.useSlerp)if(d.k<1){const t=c.bl(d.startEulerAngles.roll,d.startEulerAngles.pitch,d.startEulerAngles.bearing),n=c.bl(d.endEulerAngles.roll,d.endEulerAngles.pitch,d.endEulerAngles.bearing),a=new Float64Array(4);c.bm(a,t,n,d.k);const l=c.bn(a);d.tr.setRoll(l.roll),d.tr.setPitch(l.pitch),d.tr.setBearing(l.bearing)}else d.tr.setRoll(d.endEulerAngles.roll),d.tr.setPitch(d.endEulerAngles.pitch),d.tr.setBearing(d.endEulerAngles.bearing);else d.tr.setRoll(c.G.number(d.startEulerAngles.roll,d.endEulerAngles.roll,d.k)),d.tr.setPitch(c.G.number(d.startEulerAngles.pitch,d.endEulerAngles.pitch,d.k)),d.tr.setBearing(c.G.number(d.startEulerAngles.bearing,d.endEulerAngles.bearing,d.k))}function Qs(d,t,n,a,l){const p=l.padding,m=le(l.worldSize,n.getNorthWest()),_=le(l.worldSize,n.getNorthEast()),x=le(l.worldSize,n.getSouthEast()),w=le(l.worldSize,n.getSouthWest()),T=c.ap(-a),I=m.rotate(T),M=_.rotate(T),z=x.rotate(T),F=w.rotate(T),N=new c.P(Math.max(I.x,M.x,F.x,z.x),Math.max(I.y,M.y,F.y,z.y)),G=new c.P(Math.min(I.x,M.x,F.x,z.x),Math.min(I.y,M.y,F.y,z.y)),U=N.sub(G),$=(l.width-(p.left+p.right+t.left+t.right))/U.x,K=(l.height-(p.top+p.bottom+t.top+t.bottom))/U.y;if(K<0||$<0)return void _c();const Z=Math.min(c.at(l.scale*Math.min($,K)),d.maxZoom),J=c.P.convert(d.offset),te=new c.P((t.left-t.right)/2,(t.top-t.bottom)/2).rotate(c.ap(a)),X=J.add(te).mult(l.scale/c.aq(Z));return{center:Me(l.worldSize,m.add(x).div(2).sub(X)),zoom:Z,bearing:a}}class Xn{get useGlobeControls(){return!1}handlePanInertia(t,n){const a=t.mag(),l=Math.abs(xe(n));return{easingOffset:t.mult(Math.min(.75*l/a,1)),easingCenter:n.center}}handleMapControlsRollPitchBearingZoom(t,n){t.bearingDelta&&n.setBearing(n.bearing+t.bearingDelta),t.pitchDelta&&n.setPitch(n.pitch+t.pitchDelta),t.rollDelta&&n.setRoll(n.roll+t.rollDelta),t.zoomDelta&&n.setZoom(n.zoom+t.zoomDelta)}handleMapControlsPan(t,n,a){t.around.distSqr(n.centerPoint)<.01||n.setLocationAtPoint(a,t.around)}cameraForBoxAndBearing(t,n,a,l,p){return Qs(t,n,a,l,p)}handleJumpToCenterZoom(t,n){t.zoom!==(n.zoom!==void 0?+n.zoom:t.zoom)&&t.setZoom(+n.zoom),n.center!==void 0&&t.setCenter(c.V.convert(n.center))}handleEaseTo(t,n){const a=t.zoom,l=t.padding,p={roll:t.roll,pitch:t.pitch,bearing:t.bearing},m={roll:n.roll===void 0?t.roll:n.roll,pitch:n.pitch===void 0?t.pitch:n.pitch,bearing:n.bearing===void 0?t.bearing:n.bearing},_=n.zoom!==void 0,x=!t.isPaddingEqual(n.padding);let w=!1;const T=_?+n.zoom:t.zoom;let I=t.centerPoint.add(n.offsetAsPoint);const M=t.screenPointToLocation(I),{center:z,zoom:F}=t.applyConstrain(c.V.convert(n.center||M),T??a);jt(t,z);const N=le(t.worldSize,M),G=le(t.worldSize,z).sub(N),U=c.aq(F-a);return w=F!==a,{easeFunc:$=>{if(w&&t.setZoom(c.G.number(a,F,$)),c.bo(p,m)||tl({startEulerAngles:p,endEulerAngles:m,tr:t,k:$,useSlerp:p.roll!=m.roll}),x&&(t.interpolatePadding(l,n.padding,$),I=t.centerPoint.add(n.offsetAsPoint)),n.around)t.setLocationAtPoint(n.around,n.aroundPoint);else{const K=c.aq(t.zoom-a),Z=F>a?Math.min(2,U):Math.max(.5,U),J=Math.pow(Z,1-$),te=Me(t.worldSize,N.add(G.mult($*J)).mult(K));t.setLocationAtPoint(t.renderWorldCopies?te.wrap():te,I)}},isZooming:w,elevationCenter:z}}handleFlyTo(t,n){const a=n.zoom!==void 0,l=t.zoom,p=t.applyConstrain(c.V.convert(n.center||n.locationAtOffset),a?+n.zoom:l),m=p.center,_=p.zoom;jt(t,m);const x=le(t.worldSize,n.locationAtOffset),w=le(t.worldSize,m).sub(x),T=w.mag(),I=c.aq(_-l);let M;if(n.minZoom!==void 0){const z=Math.min(+n.minZoom,l,_),F=t.applyConstrain(m,z).zoom;M=c.aq(F-l)}return{easeFunc:(z,F,N,G)=>{t.setZoom(z===1?_:l+c.at(F));const U=z===1?m:Me(t.worldSize,x.add(w.mult(N)).mult(F));t.setLocationAtPoint(t.renderWorldCopies?U.wrap():U,G)},scaleOfZoom:I,targetCenter:m,scaleOfMinZoom:M,pixelPathLength:T}}}class St{constructor(t,n,a){this.blendFunction=t,this.blendColor=n,this.mask=a}}St.Replace=[1,0],St.disabled=new St(St.Replace,c.bp.transparent,[!1,!1,!1,!1]),St.unblended=new St(St.Replace,c.bp.transparent,[!0,!0,!0,!0]),St.alphaBlended=new St([1,771],c.bp.transparent,[!0,!0,!0,!0]);const ea=2305;class ft{constructor(t,n,a){this.enable=t,this.mode=n,this.frontFace=a}}ft.disabled=new ft(!1,1029,ea),ft.backCCW=new ft(!0,1029,ea),ft.frontCCW=new ft(!0,1028,ea);class at{constructor(t,n,a){this.func=t,this.mask=n,this.range=a}}at.ReadOnly=!1,at.ReadWrite=!0,at.disabled=new at(519,at.ReadOnly,[0,1]);const ta=7680;class mt{constructor(t,n,a,l,p,m){this.test=t,this.ref=n,this.mask=a,this.fail=l,this.depthFail=p,this.pass=m}}mt.disabled=new mt({func:519,mask:0},0,0,ta,ta,ta);const Ts=new WeakMap;function xr(d){var t;if(Ts.has(d))return Ts.get(d);{const n=(t=d.getParameter(d.VERSION))===null||t===void 0?void 0:t.startsWith("WebGL 2.0");return Ts.set(d,n),n}}class Yn{get awaitingQuery(){return!!this._readbackQueue}constructor(t){this._readbackWaitFrames=4,this._measureWaitFrames=6,this._texWidth=1,this._texHeight=1,this._measuredError=0,this._updateCount=0,this._lastReadbackFrame=-1e3,this._readbackQueue=null,this._cachedRenderContext=t;const n=t.context,a=n.gl;this._texFormat=a.RGBA,this._texType=a.UNSIGNED_BYTE;const l=new c.aW;l.emplaceBack(-1,-1),l.emplaceBack(2,-1),l.emplaceBack(-1,2);const p=new c.aY;p.emplaceBack(0,1,2),this._fullscreenTriangle=new bs(n.createVertexBuffer(l,ei.members),n.createIndexBuffer(p),c.aX.simpleSegment(0,0,l.length,p.length)),this._resultBuffer=new Uint8Array(4),n.activeTexture.set(a.TEXTURE1);const m=a.createTexture();a.bindTexture(a.TEXTURE_2D,m),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST),a.texImage2D(a.TEXTURE_2D,0,this._texFormat,this._texWidth,this._texHeight,0,this._texFormat,this._texType,null),this._fbo=n.createFramebuffer(this._texWidth,this._texHeight,!1,!1),this._fbo.colorAttachment.set(m),xr(a)&&(this._pbo=a.createBuffer(),a.bindBuffer(a.PIXEL_PACK_BUFFER,this._pbo),a.bufferData(a.PIXEL_PACK_BUFFER,4,a.STREAM_READ),a.bindBuffer(a.PIXEL_PACK_BUFFER,null))}destroy(){const t=this._cachedRenderContext.context.gl;this._fullscreenTriangle.destroy(),this._fbo.destroy(),t.deleteBuffer(this._pbo),this._fullscreenTriangle=null,this._fbo=null,this._pbo=null,this._resultBuffer=null}updateErrorLoop(t,n){const a=this._updateCount;return this._readbackQueue?a>=this._readbackQueue.frameNumberIssued+this._readbackWaitFrames&&this._tryReadback():a>=this._lastReadbackFrame+this._measureWaitFrames&&this._renderErrorTexture(t,n),this._updateCount++,this._measuredError}_bindFramebuffer(){const t=this._cachedRenderContext.context,n=t.gl;t.activeTexture.set(n.TEXTURE1),n.bindTexture(n.TEXTURE_2D,this._fbo.colorAttachment.get()),t.bindFramebuffer.set(this._fbo.framebuffer)}_renderErrorTexture(t,n){const a=this._cachedRenderContext.context,l=a.gl;if(this._bindFramebuffer(),a.viewport.set([0,0,this._texWidth,this._texHeight]),a.clear({color:c.bp.transparent}),this._cachedRenderContext.useProgram("projectionErrorMeasurement").draw(a,l.TRIANGLES,at.disabled,mt.disabled,St.unblended,ft.disabled,((p,m)=>({u_input:p,u_output_expected:m}))(t,n),null,null,"$clipping",this._fullscreenTriangle.vertexBuffer,this._fullscreenTriangle.indexBuffer,this._fullscreenTriangle.segments),this._pbo&&xr(l)){l.bindBuffer(l.PIXEL_PACK_BUFFER,this._pbo),l.readBuffer(l.COLOR_ATTACHMENT0),l.readPixels(0,0,this._texWidth,this._texHeight,this._texFormat,this._texType,0),l.bindBuffer(l.PIXEL_PACK_BUFFER,null);const p=l.fenceSync(l.SYNC_GPU_COMMANDS_COMPLETE,0);l.flush(),this._readbackQueue={frameNumberIssued:this._updateCount,sync:p}}else this._readbackQueue={frameNumberIssued:this._updateCount,sync:null}}_tryReadback(){const t=this._cachedRenderContext.context.gl;if(this._pbo&&this._readbackQueue&&xr(t)){const n=t.clientWaitSync(this._readbackQueue.sync,0,0);if(n===t.WAIT_FAILED)return c.w("WebGL2 clientWaitSync failed."),this._readbackQueue=null,void(this._lastReadbackFrame=this._updateCount);if(n===t.TIMEOUT_EXPIRED)return;t.bindBuffer(t.PIXEL_PACK_BUFFER,this._pbo),t.getBufferSubData(t.PIXEL_PACK_BUFFER,0,this._resultBuffer,0,4),t.bindBuffer(t.PIXEL_PACK_BUFFER,null)}else this._bindFramebuffer(),t.readPixels(0,0,this._texWidth,this._texHeight,this._texFormat,this._texType,this._resultBuffer);this._readbackQueue=null,this._measuredError=Yn._parseRGBA8float(this._resultBuffer),this._lastReadbackFrame=this._updateCount}static _parseRGBA8float(t){let n=0;return n+=t[0]/256,n+=t[1]/65536,n+=t[2]/16777216,t[3]<127&&(n=-n),n/128}}const Ha=c.a5/128;function Xa(d,t){const n=d.granularity!==void 0?Math.max(d.granularity,1):1,a=n+(d.generateBorders?2:0),l=n+(d.extendToNorthPole||d.generateBorders?1:0)+(d.extendToSouthPole||d.generateBorders?1:0),p=a+1,m=l+1,_=d.generateBorders?-1:0,x=d.generateBorders||d.extendToNorthPole?-1:0,w=n+(d.generateBorders?1:0),T=n+(d.generateBorders||d.extendToSouthPole?1:0),I=p*m,M=a*l*6,z=p*m>65536;if(z&&t==="16bit")throw new Error("Granularity is too large and meshes would not fit inside 16 bit vertex indices.");const F=z||t==="32bit",N=new Int16Array(2*I);let G=0;for(let K=x;K<=T;K++)for(let Z=_;Z<=w;Z++){let J=Z/n*c.a5;Z===-1&&(J=-Ha),Z===n+1&&(J=c.a5+Ha);let te=K/n*c.a5;K===-1&&(te=d.extendToNorthPole?c.br:-Ha),K===n+1&&(te=d.extendToSouthPole?c.bs:c.a5+Ha),N[G++]=J,N[G++]=te}const U=F?new Uint32Array(M):new Uint16Array(M);let $=0;for(let K=0;K<l;K++)for(let Z=0;Z<a;Z++){const J=Z+1+K*p,te=Z+(K+1)*p,X=Z+1+(K+1)*p;U[$++]=Z+K*p,U[$++]=te,U[$++]=J,U[$++]=J,U[$++]=te,U[$++]=X}return{vertices:N.buffer.slice(0),indices:U.buffer.slice(0),uses32bitIndices:F}}const Ya=new c.aV({fill:new c.bt(128,2),line:new c.bt(512,0),tile:new c.bt(128,32),stencil:new c.bt(128,1),circle:3});class yc{constructor(){this._tileMeshCache={},this._errorCorrectionUsable=0,this._errorMeasurementLastValue=0,this._errorCorrectionPreviousValue=0,this._errorMeasurementLastChangeTime=-1e3}get name(){return"vertical-perspective"}get transitionState(){return 1}get useSubdivision(){return!0}get shaderVariantName(){return"globe"}get shaderDefine(){return"#define GLOBE"}get shaderPreludeCode(){return At.projectionGlobe}get vertexShaderPreludeCode(){return At.projectionMercator.vertexSource}get subdivisionGranularity(){return Ya}get useGlobeControls(){return!0}get latitudeErrorCorrectionRadians(){return this._errorCorrectionUsable}destroy(){this._errorMeasurement&&this._errorMeasurement.destroy()}updateGPUdependent(t){this._errorMeasurement||(this._errorMeasurement=new Yn(t));const n=c.X(this._errorQueryLatitudeDegrees),a=2*Math.atan(Math.exp(Math.PI-n*Math.PI*2))-.5*Math.PI,l=this._errorMeasurement.updateErrorLoop(n,a),p=Re();l!==this._errorMeasurementLastValue&&(this._errorCorrectionPreviousValue=this._errorCorrectionUsable,this._errorMeasurementLastValue=l,this._errorMeasurementLastChangeTime=p);const m=Math.min(Math.max((p-this._errorMeasurementLastChangeTime)/1e3/.5,0),1);this._errorCorrectionUsable=c.bu(this._errorCorrectionPreviousValue,-this._errorMeasurementLastValue,c.bv(m))}_getMeshKey(t){return`${t.granularity.toString(36)}_${t.generateBorders?"b":""}${t.extendToNorthPole?"n":""}${t.extendToSouthPole?"s":""}`}getMeshFromTileID(t,n,a,l,p){const m=(p==="stencil"?Ya.stencil:Ya.tile).getGranularityForZoomLevel(n.z);return this._getMesh(t,{granularity:m,generateBorders:a,extendToNorthPole:n.y===0&&l,extendToSouthPole:n.y===(1<<n.z)-1&&l})}_getMesh(t,n){const a=this._getMeshKey(n);if(a in this._tileMeshCache)return this._tileMeshCache[a];const l=function(p,m){const _=Xa(m,"16bit"),x=c.aW.deserialize({arrayBuffer:_.vertices,length:_.vertices.byteLength/2/2}),w=c.aY.deserialize({arrayBuffer:_.indices,length:_.indices.byteLength/2/3});return new bs(p.createVertexBuffer(x,ei.members),p.createIndexBuffer(w),c.aX.simpleSegment(0,0,x.length,w.length))}(t,n);return this._tileMeshCache[a]=l,l}recalculate(t){}hasTransition(){const t=Re();let n=!1;return n=n||(t-this._errorMeasurementLastChangeTime)/1e3<.7,n=n||this._errorMeasurement&&this._errorMeasurement.awaitingQuery,n}setErrorQueryLatitudeDegrees(t){this._errorQueryLatitudeDegrees=t}}const Xu=new c.t({type:new c.D(c.u.projection.type)});class Fi extends c.E{constructor(t){super(),this._transitionable=new c.x(Xu,void 0),this.setProjection(t),this._transitioning=this._transitionable.untransitioned(),this.recalculate(new c.H(0)),this._mercatorProjection=new Wa,this._verticalPerspectiveProjection=new yc}get transitionState(){const t=this.properties.get("type");if(typeof t=="string"&&t==="mercator")return 0;if(typeof t=="string"&&t==="vertical-perspective")return 1;if(t instanceof c.bw){if(t.from==="vertical-perspective"&&t.to==="mercator")return 1-t.transition;if(t.from==="mercator"&&t.to==="vertical-perspective")return t.transition}return 1}get useGlobeRendering(){return this.transitionState>0}get latitudeErrorCorrectionRadians(){return this._verticalPerspectiveProjection.latitudeErrorCorrectionRadians}get currentProjection(){return this.useGlobeRendering?this._verticalPerspectiveProjection:this._mercatorProjection}get name(){return"globe"}get useSubdivision(){return this.currentProjection.useSubdivision}get shaderVariantName(){return this.currentProjection.shaderVariantName}get shaderDefine(){return this.currentProjection.shaderDefine}get shaderPreludeCode(){return this.currentProjection.shaderPreludeCode}get vertexShaderPreludeCode(){return this.currentProjection.vertexShaderPreludeCode}get subdivisionGranularity(){return this.currentProjection.subdivisionGranularity}get useGlobeControls(){return this.transitionState>0}destroy(){this._mercatorProjection.destroy(),this._verticalPerspectiveProjection.destroy()}updateGPUdependent(t){this._mercatorProjection.updateGPUdependent(t),this._verticalPerspectiveProjection.updateGPUdependent(t)}getMeshFromTileID(t,n,a,l,p){return this.currentProjection.getMeshFromTileID(t,n,a,l,p)}setProjection(t){this._transitionable.setValue("type",(t==null?void 0:t.type)||"mercator")}updateTransitions(t){this._transitioning=this._transitionable.transitioned(t,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()||this.currentProjection.hasTransition()}recalculate(t){this.properties=this._transitioning.possiblyEvaluate(t)}setErrorQueryLatitudeDegrees(t){this._verticalPerspectiveProjection.setErrorQueryLatitudeDegrees(t),this._mercatorProjection.setErrorQueryLatitudeDegrees(t)}}function Ka(d){const t=ia(d.worldSize,d.center.lat);return 2*Math.PI*t}function xi(d,t,n,a,l){const p=1/(1<<l),m=t/c.a5*p+a*p,_=c.bz((d/c.a5*p+n*p)*Math.PI*2+Math.PI,2*Math.PI),x=2*Math.atan(Math.exp(Math.PI-m*Math.PI*2))-.5*Math.PI,w=Math.cos(x),T=new Float64Array(3);return T[0]=Math.sin(_)*w,T[1]=Math.sin(x),T[2]=Math.cos(_)*w,T}function ci(d){return function(t,n){const a=Math.cos(n),l=new Float64Array(3);return l[0]=Math.sin(t)*a,l[1]=Math.sin(n),l[2]=Math.cos(t)*a,l}(d.lng*Math.PI/180,d.lat*Math.PI/180)}function ia(d,t){return d/(2*Math.PI)/Math.cos(t*Math.PI/180)}function il(d){const t=Math.asin(d[1])/Math.PI*180,n=Math.sqrt(d[0]*d[0]+d[2]*d[2]);if(n>1e-6){const a=d[0]/n,l=Math.acos(d[2]/n),p=(a>0?l:-l)/Math.PI*180;return new c.V(c.W(p,-180,180),t)}return new c.V(0,t)}function cn(d){return Math.cos(d*Math.PI/180)}function di(d,t){const n=cn(d),a=cn(t);return c.at(a/n)}function xc(d,t){const n=d.rotate(t.bearingInRadians),a=t.zoom+di(t.center.lat,0),l=c.bu(1/cn(t.center.lat),1/cn(Math.min(Math.abs(t.center.lat),60)),c.bx(a,7,3,0,1)),p=360/Ka({worldSize:t.worldSize,center:{lat:t.center.lat}});return new c.V(t.center.lng-n.x*p*l,c.an(t.center.lat+n.y*p,-c.ao,c.ao))}function rl(d){const t=.5*d,n=Math.sin(t),a=Math.cos(t);return Math.log(n+a)-Math.log(a-n)}function vc(d,t,n,a){const l=d.lat+n*a;if(Math.abs(n)>1){const p=(Math.sign(d.lat+n)!==Math.sign(d.lat)?-Math.abs(d.lat):Math.abs(d.lat))*Math.PI/180,m=Math.abs(d.lat+n)*Math.PI/180,_=rl(p+a*(m-p)),x=rl(p),w=rl(m);return new c.V(d.lng+t*((_-x)/(w-x)),l)}return new c.V(d.lng+t*a,l)}class Yu{constructor(t){this._cachePrevious=new Map,this._cache=new Map,this._hadAnyChanges=!1,this._boundingVolumeFactory=t}swapBuffers(){if(!this._hadAnyChanges)return;const t=this._cachePrevious;this._cachePrevious=this._cache,this._cache=t,this._cache.clear(),this._hadAnyChanges=!1}getTileBoundingVolume(t,n,a,l){const p=`${t.z}_${t.x}_${t.y}_${l!=null&&l.terrain?"t":""}`,m=this._cache.get(p);if(m)return m;const _=this._cachePrevious.get(p);if(_)return this._cache.set(p,_),_;const x=this._boundingVolumeFactory(t,n,a,l);return this._cache.set(p,x),this._hadAnyChanges=!0,x}}class Ss{constructor(t,n,a,l){this.min=a,this.max=l,this.points=t,this.planes=n}static fromAabb(t,n){const a=[];for(let l=0;l<8;l++)a.push([1&~l?t[0]:n[0],(l>>1&1)==1?n[1]:t[1],(l>>2&1)==1?n[2]:t[2]]);return new Ss(a,[[-1,0,0,n[0]],[1,0,0,-t[0]],[0,-1,0,n[1]],[0,1,0,-t[1]],[0,0,-1,n[2]],[0,0,1,-t[2]]],t,n)}static fromCenterSizeAngles(t,n,a){const l=c.bB([],a[0],a[1],a[2]),p=c.bC([],[n[0],0,0],l),m=c.bC([],[0,n[1],0],l),_=c.bC([],[0,0,n[2]],l),x=[...t],w=[...t];for(let I=0;I<8;I++)for(let M=0;M<3;M++){const z=t[M]+p[M]*(1&~I?-1:1)+m[M]*((I>>1&1)==1?1:-1)+_[M]*((I>>2&1)==1?1:-1);x[M]=Math.min(x[M],z),w[M]=Math.max(w[M],z)}const T=[];for(let I=0;I<8;I++){const M=[...t];c.b0(M,M,c.a$([],p,1&~I?-1:1)),c.b0(M,M,c.a$([],m,(I>>1&1)==1?1:-1)),c.b0(M,M,c.a$([],_,(I>>2&1)==1?1:-1)),T.push(M)}return new Ss(T,[[...p,-c.b5(p,T[0])],[...m,-c.b5(m,T[0])],[..._,-c.b5(_,T[0])],[-p[0],-p[1],-p[2],-c.b5(p,T[7])],[-m[0],-m[1],-m[2],-c.b5(m,T[7])],[-_[0],-_[1],-_[2],-c.b5(_,T[7])]],x,w)}intersectsFrustum(t){let n=!0;const a=this.points.length,l=this.planes.length,p=t.planes.length,m=t.points.length;for(let _=0;_<p;_++){const x=t.planes[_];let w=0;for(let T=0;T<a;T++){const I=this.points[T];x[0]*I[0]+x[1]*I[1]+x[2]*I[2]+x[3]>=0&&w++}if(w===0)return 0;w<a&&(n=!1)}if(n)return 2;for(let _=0;_<l;_++){const x=this.planes[_];let w=0;for(let T=0;T<m;T++){const I=t.points[T];x[0]*I[0]+x[1]*I[1]+x[2]*I[2]+x[3]>=0&&w++}if(w===0)return 0}return 1}intersectsPlane(t){const n=this.points.length;let a=0;for(let l=0;l<n;l++){const p=this.points[l];t[0]*p[0]+t[1]*p[1]+t[2]*p[2]+t[3]>=0&&a++}return a===n?2:a===0?0:1}}function Kn(d,t,n){const a=d-t;return a<0?-a:Math.max(0,a-n)}function ra(d,t,n,a,l){const p=d-n;let m;return m=p<0?Math.min(-p,1+p-l):p>1?Math.min(Math.max(p-l,0),1-p):0,Math.max(m,Kn(t,a,l))}class Ja{constructor(){this._boundingVolumeCache=new Yu(this._computeTileBoundingVolume)}prepareNextFrame(){this._boundingVolumeCache.swapBuffers()}distanceToTile2d(t,n,a,l){const p=1<<a.z,m=1/p,_=a.x/p,x=a.y/p;let w=2;return w=Math.min(w,ra(t,n,_,x,m)),w=Math.min(w,ra(t,n,_+.5,-x-m,m)),w=Math.min(w,ra(t,n,_+.5,2-x-m,m)),w}getWrap(t,n,a){const l=1<<n.z,p=1/l,m=n.x/l,_=Kn(t.x,m,p),x=Kn(t.x,m-1,p),w=Kn(t.x,m+1,p),T=Math.min(_,x,w);return T===w?1:T===x?-1:0}allowVariableZoom(t,n){return Tt(t,n)>4}allowWorldCopies(){return!1}getTileBoundingVolume(t,n,a,l){return this._boundingVolumeCache.getTileBoundingVolume(t,n,a,l)}_computeTileBoundingVolume(t,n,a,l){var p,m;let _=0,x=0;if(l!=null&&l.terrain){const w=new c.a2(t.z,n,t.z,t.x,t.y),T=l.terrain.getMinMaxElevation(w);_=(p=T.minElevation)!==null&&p!==void 0?p:Math.min(0,a),x=(m=T.maxElevation)!==null&&m!==void 0?m:Math.max(0,a)}if(_/=c.bE,x/=c.bE,_+=1,x+=1,t.z<=0)return Ss.fromAabb([-x,-x,-x],[x,x,x]);if(t.z===1)return Ss.fromAabb([t.x===0?-x:0,t.y===0?0:-x,-x],[t.x===0?0:x,t.y===0?x:0,x]);{const w=[xi(0,0,t.x,t.y,t.z),xi(c.a5,0,t.x,t.y,t.z),xi(c.a5,c.a5,t.x,t.y,t.z),xi(0,c.a5,t.x,t.y,t.z)],T=[];for(const pe of w)T.push(c.a$([],pe,x));if(x!==_)for(const pe of w)T.push(c.a$([],pe,_));t.y===0&&T.push([0,1,0]),t.y===(1<<t.z)-1&&T.push([0,-1,0]);const I=[1,1,1],M=[-1,-1,-1];for(const pe of T)for(let ge=0;ge<3;ge++)I[ge]=Math.min(I[ge],pe[ge]),M[ge]=Math.max(M[ge],pe[ge]);const z=xi(c.a5/2,c.a5/2,t.x,t.y,t.z),F=c.b4([],[0,1,0],z);c.b3(F,F);const N=c.b4([],z,F);c.b3(N,N);const G=c.b4([],w[2],w[1]);c.b3(G,G);const U=c.b4([],w[0],w[3]);c.b3(U,U),T.push(c.a$([],z,x)),t.y>=(1<<t.z)/2&&T.push(c.a$([],xi(c.a5/2,0,t.x,t.y,t.z),x)),t.y<(1<<t.z)/2&&T.push(c.a$([],xi(c.a5/2,c.a5,t.x,t.y,t.z),x));const $=Qa(z,T),K=Qa(N,T),Z=[-z[0],-z[1],-z[2],$.max],J=[z[0],z[1],z[2],-$.min],te=[-N[0],-N[1],-N[2],K.max],X=[N[0],N[1],N[2],-K.min],ae=[...G,0],_e=[...U,0],fe=[];return t.y===0?fe.push(c.bD(_e,ae,Z),c.bD(_e,ae,J)):fe.push(c.bD(te,ae,Z),c.bD(te,ae,J),c.bD(te,_e,Z),c.bD(te,_e,J)),t.y===(1<<t.z)-1?fe.push(c.bD(_e,ae,Z),c.bD(_e,ae,J)):fe.push(c.bD(X,ae,Z),c.bD(X,ae,J),c.bD(X,_e,Z),c.bD(X,_e,J)),new Ss(fe,[Z,J,te,X,ae,_e],I,M)}}}function Qa(d,t){let n=1/0,a=-1/0;for(const l of t){const p=c.b5(d,l);n=Math.min(n,p),a=Math.max(a,p)}return{min:n,max:a}}class Ps{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(t){this._helper.setMinZoom(t)}setMaxZoom(t){this._helper.setMaxZoom(t)}setMinPitch(t){this._helper.setMinPitch(t)}setMaxPitch(t){this._helper.setMaxPitch(t)}setRenderWorldCopies(t){this._helper.setRenderWorldCopies(t)}setBearing(t){this._helper.setBearing(t)}setPitch(t){this._helper.setPitch(t)}setRoll(t){this._helper.setRoll(t)}setFov(t){this._helper.setFov(t)}setZoom(t){this._helper.setZoom(t)}setCenter(t){this._helper.setCenter(t)}setElevation(t){this._helper.setElevation(t)}setMinElevationForCurrentTile(t){this._helper.setMinElevationForCurrentTile(t)}setPadding(t){this._helper.setPadding(t)}interpolatePadding(t,n,a){return this._helper.interpolatePadding(t,n,a)}isPaddingEqual(t){return this._helper.isPaddingEqual(t)}resize(t,n){this._helper.resize(t,n)}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(t){this._helper.setMaxBounds(t)}setConstrainOverride(t){this._helper.setConstrainOverride(t)}overrideNearFarZ(t,n){this._helper.overrideNearFarZ(t,n)}clearNearFarZOverride(){this._helper.clearNearFarZOverride()}getCameraQueryGeometry(t){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),t)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get constrainOverride(){return this._helper.constrainOverride}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}setTransitionState(t){}constructor(t){this._cachedClippingPlane=c.bF(),this._projectionMatrix=c.bj(),this._globeViewProjMatrix32f=c.bi(),this._globeViewProjMatrixNoCorrection=c.bj(),this._globeViewProjMatrixNoCorrectionInverted=c.bj(),this._globeProjMatrixInverted=c.bj(),this._cameraPosition=c.bA(),this._globeLatitudeErrorCorrectionRadians=0,this.defaultConstrain=(n,a)=>{const l=c.an(n.lat,-c.ao,c.ao),p=c.an(+a,this.minZoom+di(0,l),this.maxZoom);return{center:new c.V(n.lng,l),zoom:p}},this.applyConstrain=(n,a)=>this._helper.applyConstrain(n,a),this._helper=new ln({calcMatrices:()=>{this._calcMatrices()},defaultConstrain:(n,a)=>this.defaultConstrain(n,a)},t),this._coveringTilesDetailsProvider=new Ja}clone(){const t=new Ps;return t.apply(this,!1),t}apply(t,n,a){this._globeLatitudeErrorCorrectionRadians=a||0,this._helper.apply(t,n)}get projectionMatrix(){return this._projectionMatrix}get modelViewProjectionMatrix(){return this._globeViewProjMatrixNoCorrection}get inverseProjectionMatrix(){return this._globeProjMatrixInverted}get cameraPosition(){const t=c.bA();return t[0]=this._cameraPosition[0],t[1]=this._cameraPosition[1],t[2]=this._cameraPosition[2],t}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}getProjectionData(t){const{overscaledTileID:n,applyGlobeMatrix:a}=t,l=this._helper.getMercatorTileCoordinates(n);return{mainMatrix:this._globeViewProjMatrix32f,tileMercatorCoords:l,clippingPlane:this._cachedClippingPlane,projectionTransition:a?1:0,fallbackMatrix:this._globeViewProjMatrix32f}}_computeClippingPlane(t){const n=this.pitchInRadians,a=this.cameraToCenterDistance/t,l=Math.sin(n)*a,p=Math.cos(n)*a+1,m=1/Math.sqrt(l*l+p*p)*1;let _=-l,x=p;const w=Math.sqrt(_*_+x*x);_/=w,x/=w;const T=[0,_,x];c.bG(T,T,[0,0,0],-this.bearingInRadians),c.bH(T,T,[0,0,0],-1*this.center.lat*Math.PI/180),c.bI(T,T,[0,0,0],this.center.lng*Math.PI/180);const I=1/c.b7(T);return c.a$(T,T,I),[...T,-m*I]}isLocationOccluded(t){return!this.isSurfacePointVisible(ci(t))}transformLightDirection(t){const n=this._helper._center.lng*Math.PI/180,a=this._helper._center.lat*Math.PI/180,l=Math.cos(a),p=[Math.sin(n)*l,Math.sin(a),Math.cos(n)*l],m=[p[2],0,-p[0]],_=[0,0,0];c.b4(_,m,p),c.b3(m,m),c.b3(_,_);const x=[0,0,0];return c.b3(x,[m[0]*t[0]+_[0]*t[1]+p[0]*t[2],m[1]*t[0]+_[1]*t[1]+p[1]*t[2],m[2]*t[0]+_[2]*t[1]+p[2]*t[2]]),x}getPixelScale(){return 1/Math.cos(this._helper._center.lat*Math.PI/180)}getCircleRadiusCorrection(){return Math.cos(this._helper._center.lat*Math.PI/180)}getPitchedTextCorrection(t,n,a){const l=function(_,x,w){const T=1/(1<<w.z);return new c.a9(_/c.a5*T+w.x*T,x/c.a5*T+w.y*T)}(t,n,a.canonical),p=(m=l.y,[c.bz(l.x*Math.PI*2+Math.PI,2*Math.PI),2*Math.atan(Math.exp(Math.PI-m*Math.PI*2))-.5*Math.PI]);var m;return this.getCircleRadiusCorrection()/Math.cos(p[1])}projectTileCoordinates(t,n,a,l){const p=a.canonical,m=xi(t,n,p.x,p.y,p.z),_=1+(l?l(t,n):0)/c.bE,x=[m[0]*_,m[1]*_,m[2]*_,1];c.aH(x,x,this._globeViewProjMatrixNoCorrection);const w=this._cachedClippingPlane,T=w[0]*m[0]+w[1]*m[1]+w[2]*m[2]+w[3]<0;return{point:new c.P(x[0]/x[3],x[1]/x[3]),signedDistanceFromCamera:x[3],isOccluded:T}}_calcMatrices(){if(!this._helper._width||!this._helper._height)return;const t=ia(this.worldSize,this.center.lat),n=c.bk(),a=c.bk();this._helper.autoCalculateNearFarZ&&(this._helper._nearZ=.5,this._helper._farZ=this.cameraToCenterDistance+2*t),c.be(n,this.fovInRadians,this.width/this.height,this._helper._nearZ,this._helper._farZ);const l=this.centerOffset;n[8]=2*-l.x/this._helper._width,n[9]=2*l.y/this._helper._height,this._projectionMatrix=c.bf(n),this._globeProjMatrixInverted=c.bk(),c.aB(this._globeProjMatrixInverted,n),c.O(n,n,[0,0,-this.cameraToCenterDistance]),c.bg(n,n,this.rollInRadians),c.bh(n,n,-this.pitchInRadians),c.bg(n,n,this.bearingInRadians),c.O(n,n,[0,0,-t]);const p=c.bA();p[0]=t,p[1]=t,p[2]=t,c.bh(a,n,this.center.lat*Math.PI/180),c.bJ(a,a,-this.center.lng*Math.PI/180),c.Q(a,a,p),this._globeViewProjMatrixNoCorrection=a,c.bh(n,n,this.center.lat*Math.PI/180-this._globeLatitudeErrorCorrectionRadians),c.bJ(n,n,-this.center.lng*Math.PI/180),c.Q(n,n,p),this._globeViewProjMatrix32f=new Float32Array(n),this._globeViewProjMatrixNoCorrectionInverted=c.bk(),c.aB(this._globeViewProjMatrixNoCorrectionInverted,a);const m=c.bA();this._cameraPosition=c.bA(),this._cameraPosition[2]=this.cameraToCenterDistance/t,c.bG(this._cameraPosition,this._cameraPosition,m,-this.rollInRadians),c.bH(this._cameraPosition,this._cameraPosition,m,this.pitchInRadians),c.bG(this._cameraPosition,this._cameraPosition,m,-this.bearingInRadians),c.b0(this._cameraPosition,this._cameraPosition,[0,0,1]),c.bH(this._cameraPosition,this._cameraPosition,m,-this.center.lat*Math.PI/180),c.bI(this._cameraPosition,this._cameraPosition,m,this.center.lng*Math.PI/180),this._cachedClippingPlane=this._computeClippingPlane(t);const _=c.bf(this._globeViewProjMatrixNoCorrectionInverted);c.Q(_,_,[1,1,-1]),this._cachedFrustum=Js.fromInvProjectionMatrix(_,1,0,this._cachedClippingPlane,!0)}calculateFogMatrix(t){c.w("calculateFogMatrix is not supported on globe projection.");const n=c.bk();return c.ar(n),n}getVisibleUnwrappedCoordinates(t){return[new c.bc(0,t)]}getCameraFrustum(){return this._cachedFrustum}getClippingPlane(){return this._cachedClippingPlane}getCoveringTilesDetailsProvider(){return this._coveringTilesDetailsProvider}recalculateZoomAndCenter(t){t&&c.w("terrain is not fully supported on vertical perspective projection."),this._helper.recalculateZoomAndCenter(0)}maxPitchScaleFactor(){return 1}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return this._helper.getCameraAltitude()}getCameraLngLat(){return this._helper.getCameraLngLat()}lngLatToCameraDepth(t,n){if(!this._globeViewProjMatrixNoCorrection)return 1;const a=ci(t);c.a$(a,a,1+n/c.bE);const l=c.bF();return c.aH(l,[a[0],a[1],a[2],1],this._globeViewProjMatrixNoCorrection),l[2]/l[3]}populateCache(t){}getBounds(){const t=.5*this.width,n=.5*this.height,a=[new c.P(0,0),new c.P(t,0),new c.P(this.width,0),new c.P(this.width,n),new c.P(this.width,this.height),new c.P(t,this.height),new c.P(0,this.height),new c.P(0,n)],l=[];for(const I of a)l.push(this.unprojectScreenPoint(I));let p=0,m=0,_=0,x=0;const w=this.center;for(const I of l){const M=c.bK(w.lng,I.lng),z=c.bK(w.lat,I.lat);M<m&&(m=M),M>p&&(p=M),z<x&&(x=z),z>_&&(_=z)}const T=[w.lng+m,w.lat+x,w.lng+p,w.lat+_];return this.isSurfacePointOnScreen([0,1,0])&&(T[3]=90,T[0]=-180,T[2]=180),this.isSurfacePointOnScreen([0,-1,0])&&(T[1]=-90,T[0]=-180,T[2]=180),new zt(T)}calculateCenterFromCameraLngLatAlt(t,n,a,l){return this._helper.calculateCenterFromCameraLngLatAlt(t,n,a,l)}setLocationAtPoint(t,n){const a=ci(this.unprojectScreenPoint(n)),l=ci(t),p=c.bA();c.bL(p);const m=c.bA();c.bI(m,a,p,-this.center.lng*Math.PI/180),c.bH(m,m,p,this.center.lat*Math.PI/180);const _=l[0]*l[0]+l[2]*l[2],x=m[0]*m[0];if(_<x)return;const w=Math.sqrt(_-x),T=-w,I=c.bM(l[0],l[2],m[0],w),M=c.bM(l[0],l[2],m[0],T),z=c.bA();c.bI(z,l,p,-I);const F=c.bM(z[1],z[2],m[1],m[2]),N=c.bA();c.bI(N,l,p,-M);const G=c.bM(N[1],N[2],m[1],m[2]),U=.5*Math.PI,$=F>=-U&&F<=U,K=G>=-U&&G<=U;let Z,J;if($&&K){const _e=this.center.lng*Math.PI/180,fe=this.center.lat*Math.PI/180;c.bN(I,_e)+c.bN(F,fe)<c.bN(M,_e)+c.bN(G,fe)?(Z=I,J=F):(Z=M,J=G)}else if($)Z=I,J=F;else{if(!K)return;Z=M,J=G}const te=Z/Math.PI*180,X=J/Math.PI*180,ae=this.center.lat;this.setCenter(new c.V(te,c.an(X,-90,90))),this.setZoom(this.zoom+di(ae,this.center.lat))}locationToScreenPoint(t,n){const a=ci(t);if(n){const l=n.getElevationForLngLatZoom(t,this._helper._tileZoom);c.a$(a,a,1+l/c.bE)}return this._projectSurfacePointToScreen(a)}_projectSurfacePointToScreen(t){const n=c.bF();return c.aH(n,[...t,1],this._globeViewProjMatrixNoCorrection),n[0]/=n[3],n[1]/=n[3],new c.P((.5*n[0]+.5)*this.width,(.5*-n[1]+.5)*this.height)}screenPointToMercatorCoordinate(t,n){if(n){const a=n.pointCoordinate(t);if(a)return a}return c.a9.fromLngLat(this.unprojectScreenPoint(t))}screenPointToLocation(t,n){var a;return(a=this.screenPointToMercatorCoordinate(t,n))===null||a===void 0?void 0:a.toLngLat()}isPointOnMapSurface(t,n){const a=this._cameraPosition,l=this.getRayDirectionFromPixel(t);return!!this.rayPlanetIntersection(a,l)}getRayDirectionFromPixel(t){const n=c.bF();n[0]=t.x/this.width*2-1,n[1]=-1*(t.y/this.height*2-1),n[2]=1,n[3]=1,c.aH(n,n,this._globeViewProjMatrixNoCorrectionInverted),n[0]/=n[3],n[1]/=n[3],n[2]/=n[3];const a=c.bA();a[0]=n[0]-this._cameraPosition[0],a[1]=n[1]-this._cameraPosition[1],a[2]=n[2]-this._cameraPosition[2];const l=c.bA();return c.b3(l,a),l}isSurfacePointVisible(t){const n=this._cachedClippingPlane;return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]>=0}isSurfacePointOnScreen(t){if(!this.isSurfacePointVisible(t))return!1;const n=c.bF();return c.aH(n,[...t,1],this._globeViewProjMatrixNoCorrection),n[0]/=n[3],n[1]/=n[3],n[2]/=n[3],n[0]>-1&&n[0]<1&&n[1]>-1&&n[1]<1&&n[2]>-1&&n[2]<1}rayPlanetIntersection(t,n){const a=c.b5(t,n),l=c.bA(),p=c.bA();c.a$(p,n,a),c.b2(l,t,p);const m=1-c.b5(l,l);if(m<0)return null;const _=c.b5(t,t)-1,x=-a+(a<0?1:-1)*Math.sqrt(m),w=_/x,T=x;return{tMin:Math.min(w,T),tMax:Math.max(w,T)}}unprojectScreenPoint(t){const n=this._cameraPosition,a=this.getRayDirectionFromPixel(t),l=this.rayPlanetIntersection(n,a);if(l){const T=c.bA();c.b0(T,n,[a[0]*l.tMin,a[1]*l.tMin,a[2]*l.tMin]);const I=c.bA();return c.b3(I,T),il(I)}const p=this._cachedClippingPlane,m=p[0]*a[0]+p[1]*a[1]+p[2]*a[2],_=-c.bb(p,n)/m,x=c.bA();if(_>0)c.b0(x,n,[a[0]*_,a[1]*_,a[2]*_]);else{const T=c.bA();c.b0(T,n,[2*a[0],2*a[1],2*a[2]]);const I=c.bb(this._cachedClippingPlane,T);c.b2(x,T,[this._cachedClippingPlane[0]*I,this._cachedClippingPlane[1]*I,this._cachedClippingPlane[2]*I])}const w=function(T){const I=c.bA();return I[0]=T[0]*-T[3],I[1]=T[1]*-T[3],I[2]=T[2]*-T[3],{center:I,radius:Math.sqrt(1-T[3]*T[3])}}(p);return il(function(T,I,M){const z=c.bA();c.b2(z,M,T);const F=c.bA();return c.by(F,T,z,I/c.b9(z)),F}(w.center,w.radius,x))}getMatrixForModel(t,n){const a=c.V.convert(t),l=1/c.bE,p=c.bj();return c.bJ(p,p,a.lng/180*Math.PI),c.bh(p,p,-a.lat/180*Math.PI),c.O(p,p,[0,0,1+n/c.bE]),c.bh(p,p,.5*Math.PI),c.Q(p,p,[l,l,l]),p}getProjectionDataForCustomLayer(t=!0){const n=this.getProjectionData({overscaledTileID:new c.a2(0,0,0,0,0),applyGlobeMatrix:t});return n.tileMercatorCoords=[0,0,1,1],n}getFastPathSimpleProjectionMatrix(t){}}class nr{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(t){this._helper.setMinZoom(t)}setMaxZoom(t){this._helper.setMaxZoom(t)}setMinPitch(t){this._helper.setMinPitch(t)}setMaxPitch(t){this._helper.setMaxPitch(t)}setRenderWorldCopies(t){this._helper.setRenderWorldCopies(t)}setBearing(t){this._helper.setBearing(t)}setPitch(t){this._helper.setPitch(t)}setRoll(t){this._helper.setRoll(t)}setFov(t){this._helper.setFov(t)}setZoom(t){this._helper.setZoom(t)}setCenter(t){this._helper.setCenter(t)}setElevation(t){this._helper.setElevation(t)}setMinElevationForCurrentTile(t){this._helper.setMinElevationForCurrentTile(t)}setPadding(t){this._helper.setPadding(t)}interpolatePadding(t,n,a){return this._helper.interpolatePadding(t,n,a)}isPaddingEqual(t){return this._helper.isPaddingEqual(t)}resize(t,n,a=!0){this._helper.resize(t,n,a)}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(t){this._helper.setMaxBounds(t)}setConstrainOverride(t){this._helper.setConstrainOverride(t)}overrideNearFarZ(t,n){this._helper.overrideNearFarZ(t,n)}clearNearFarZOverride(){this._helper.clearNearFarZOverride()}getCameraQueryGeometry(t){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),t)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}get constrainOverride(){return this._helper.constrainOverride}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}get isGlobeRendering(){return this._globeness>0}setTransitionState(t,n){this._globeness=t,this._globeLatitudeErrorCorrectionRadians=n,this._calcMatrices(),this._verticalPerspectiveTransform.getCoveringTilesDetailsProvider().prepareNextFrame(),this._mercatorTransform.getCoveringTilesDetailsProvider().prepareNextFrame()}get currentTransform(){return this.isGlobeRendering?this._verticalPerspectiveTransform:this._mercatorTransform}constructor(t){this._globeLatitudeErrorCorrectionRadians=0,this._globeness=1,this.defaultConstrain=(n,a)=>this.currentTransform.defaultConstrain(n,a),this.applyConstrain=(n,a)=>this._helper.applyConstrain(n,a),this._helper=new ln({calcMatrices:()=>{this._calcMatrices()},defaultConstrain:(n,a)=>this.defaultConstrain(n,a)},t),this._globeness=1,this._mercatorTransform=new rr,this._verticalPerspectiveTransform=new Ps}clone(){const t=new nr;return t._globeness=this._globeness,t._globeLatitudeErrorCorrectionRadians=this._globeLatitudeErrorCorrectionRadians,t.apply(this,!1),t}apply(t,n){this._helper.apply(t,n),this._mercatorTransform.apply(this,!1),this._verticalPerspectiveTransform.apply(this,!1,this._globeLatitudeErrorCorrectionRadians)}get projectionMatrix(){return this.currentTransform.projectionMatrix}get modelViewProjectionMatrix(){return this.currentTransform.modelViewProjectionMatrix}get inverseProjectionMatrix(){return this.currentTransform.inverseProjectionMatrix}get cameraPosition(){return this.currentTransform.cameraPosition}getProjectionData(t){const n=this._mercatorTransform.getProjectionData(t),a=this._verticalPerspectiveTransform.getProjectionData(t);return{mainMatrix:this.isGlobeRendering?a.mainMatrix:n.mainMatrix,clippingPlane:a.clippingPlane,tileMercatorCoords:a.tileMercatorCoords,projectionTransition:t.applyGlobeMatrix?this._globeness:0,fallbackMatrix:n.fallbackMatrix}}isLocationOccluded(t){return this.currentTransform.isLocationOccluded(t)}transformLightDirection(t){return this.currentTransform.transformLightDirection(t)}getPixelScale(){return c.bu(this._mercatorTransform.getPixelScale(),this._verticalPerspectiveTransform.getPixelScale(),this._globeness)}getCircleRadiusCorrection(){return c.bu(this._mercatorTransform.getCircleRadiusCorrection(),this._verticalPerspectiveTransform.getCircleRadiusCorrection(),this._globeness)}getPitchedTextCorrection(t,n,a){const l=this._mercatorTransform.getPitchedTextCorrection(t,n,a),p=this._verticalPerspectiveTransform.getPitchedTextCorrection(t,n,a);return c.bu(l,p,this._globeness)}projectTileCoordinates(t,n,a,l){return this.currentTransform.projectTileCoordinates(t,n,a,l)}_calcMatrices(){this._helper._width&&this._helper._height&&(this._verticalPerspectiveTransform.apply(this,!1,this._globeLatitudeErrorCorrectionRadians),this._helper._nearZ=this._verticalPerspectiveTransform.nearZ,this._helper._farZ=this._verticalPerspectiveTransform.farZ,this._mercatorTransform.apply(this,!0,this.isGlobeRendering),this._helper._nearZ=this._mercatorTransform.nearZ,this._helper._farZ=this._mercatorTransform.farZ)}calculateFogMatrix(t){return this.currentTransform.calculateFogMatrix(t)}getVisibleUnwrappedCoordinates(t){return this.currentTransform.getVisibleUnwrappedCoordinates(t)}getCameraFrustum(){return this.currentTransform.getCameraFrustum()}getClippingPlane(){return this.currentTransform.getClippingPlane()}getCoveringTilesDetailsProvider(){return this.currentTransform.getCoveringTilesDetailsProvider()}recalculateZoomAndCenter(t){this._mercatorTransform.recalculateZoomAndCenter(t),this._verticalPerspectiveTransform.recalculateZoomAndCenter(t)}maxPitchScaleFactor(){return this._mercatorTransform.maxPitchScaleFactor()}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return this._helper.getCameraAltitude()}getCameraLngLat(){return this._helper.getCameraLngLat()}lngLatToCameraDepth(t,n){return this.currentTransform.lngLatToCameraDepth(t,n)}populateCache(t){this._mercatorTransform.populateCache(t),this._verticalPerspectiveTransform.populateCache(t)}getBounds(){return this.currentTransform.getBounds()}calculateCenterFromCameraLngLatAlt(t,n,a,l){return this._helper.calculateCenterFromCameraLngLatAlt(t,n,a,l)}setLocationAtPoint(t,n){if(!this.isGlobeRendering)return this._mercatorTransform.setLocationAtPoint(t,n),void this.apply(this._mercatorTransform,!1);this._verticalPerspectiveTransform.setLocationAtPoint(t,n),this.apply(this._verticalPerspectiveTransform,!1)}locationToScreenPoint(t,n){return this.currentTransform.locationToScreenPoint(t,n)}screenPointToMercatorCoordinate(t,n){return this.currentTransform.screenPointToMercatorCoordinate(t,n)}screenPointToLocation(t,n){return this.currentTransform.screenPointToLocation(t,n)}isPointOnMapSurface(t,n){return this.currentTransform.isPointOnMapSurface(t,n)}getRayDirectionFromPixel(t){return this._verticalPerspectiveTransform.getRayDirectionFromPixel(t)}getMatrixForModel(t,n){return this.currentTransform.getMatrixForModel(t,n)}getProjectionDataForCustomLayer(t=!0){const n=this._mercatorTransform.getProjectionDataForCustomLayer(t);if(!this.isGlobeRendering)return n;const a=this._verticalPerspectiveTransform.getProjectionDataForCustomLayer(t);return a.fallbackMatrix=n.mainMatrix,a}getFastPathSimpleProjectionMatrix(t){return this.currentTransform.getFastPathSimpleProjectionMatrix(t)}}class Ar{get useGlobeControls(){return!0}handlePanInertia(t,n){const a=xc(t,n);return Math.abs(a.lng-n.center.lng)>180&&(a.lng=n.center.lng+179.5*Math.sign(a.lng-n.center.lng)),{easingCenter:a,easingOffset:new c.P(0,0)}}handleMapControlsRollPitchBearingZoom(t,n){const a=t.around,l=n.screenPointToLocation(a);t.bearingDelta&&n.setBearing(n.bearing+t.bearingDelta),t.pitchDelta&&n.setPitch(n.pitch+t.pitchDelta),t.rollDelta&&n.setRoll(n.roll+t.rollDelta);const p=n.zoom;t.zoomDelta&&n.setZoom(n.zoom+t.zoomDelta);const m=n.zoom-p;if(m===0)return;const _=c.bK(n.center.lng,l.lng),x=_/(Math.abs(_/180)+1),w=c.bK(n.center.lat,l.lat),T=n.getRayDirectionFromPixel(a),I=n.cameraPosition,M=-1*c.b5(I,T),z=c.bA();c.b0(z,I,[T[0]*M,T[1]*M,T[2]*M]);const F=c.b7(z)-1,N=Math.exp(.5*-Math.max(F-.3,0)),G=ia(n.worldSize,n.center.lat)/Math.min(n.width,n.height),U=c.bx(G,.9,.5,1,.25),$=(1-c.aq(-m))*Math.min(N,U),K=n.center.lat,Z=n.zoom,J=new c.V(n.center.lng+x*$,c.an(n.center.lat+w*$,-c.ao,c.ao));n.setLocationAtPoint(l,a);const te=n.center,X=c.bx(Math.abs(_),45,85,0,1),ae=c.bx(G,.75,.35,0,1),_e=Math.pow(Math.max(X,ae),.25),fe=c.bK(te.lng,J.lng),pe=c.bK(te.lat,J.lat);n.setCenter(new c.V(te.lng+fe*_e,te.lat+pe*_e).wrap()),n.setZoom(Z+di(K,n.center.lat))}handleMapControlsPan(t,n,a){if(!t.panDelta)return;const l=n.center.lat,p=n.zoom;n.setCenter(xc(t.panDelta,n).wrap()),n.setZoom(p+di(l,n.center.lat))}cameraForBoxAndBearing(t,n,a,l,p){const m=Qs(t,n,a,l,p),_=n.left/p.width*2-1,x=(p.width-n.right)/p.width*2-1,w=n.top/p.height*-2+1,T=(p.height-n.bottom)/p.height*-2+1,I=c.bK(a.getWest(),a.getEast())<0,M=I?a.getEast():a.getWest(),z=I?a.getWest():a.getEast(),F=Math.max(a.getNorth(),a.getSouth()),N=Math.min(a.getNorth(),a.getSouth()),G=M+.5*c.bK(M,z),U=F+.5*c.bK(F,N),$=p.clone();$.setCenter(m.center),$.setBearing(m.bearing),$.setPitch(0),$.setRoll(0),$.setZoom(m.zoom);const K=$.modelViewProjectionMatrix,Z=[ci(a.getNorthWest()),ci(a.getNorthEast()),ci(a.getSouthWest()),ci(a.getSouthEast()),ci(new c.V(z,U)),ci(new c.V(M,U)),ci(new c.V(G,F)),ci(new c.V(G,N))],J=ci(m.center);let te=Number.POSITIVE_INFINITY;for(const X of Z)_<0&&(te=Ar.getLesserNonNegativeNonNull(te,Ar.solveVectorScale(X,J,K,"x",_))),x>0&&(te=Ar.getLesserNonNegativeNonNull(te,Ar.solveVectorScale(X,J,K,"x",x))),w>0&&(te=Ar.getLesserNonNegativeNonNull(te,Ar.solveVectorScale(X,J,K,"y",w))),T<0&&(te=Ar.getLesserNonNegativeNonNull(te,Ar.solveVectorScale(X,J,K,"y",T)));if(Number.isFinite(te)&&te!==0)return m.zoom=$.zoom+c.at(te),m;_c()}handleJumpToCenterZoom(t,n){const a=t.center.lat,l=t.applyConstrain(n.center?c.V.convert(n.center):t.center,t.zoom).center;t.setCenter(l.wrap());const p=n.zoom!==void 0?+n.zoom:t.zoom+di(a,l.lat);t.zoom!==p&&t.setZoom(p)}handleEaseTo(t,n){const a=t.zoom,l=t.center,p=t.padding,m={roll:t.roll,pitch:t.pitch,bearing:t.bearing},_={roll:n.roll===void 0?t.roll:n.roll,pitch:n.pitch===void 0?t.pitch:n.pitch,bearing:n.bearing===void 0?t.bearing:n.bearing},x=n.zoom!==void 0,w=!t.isPaddingEqual(n.padding);let T=!1;const I=n.center?c.V.convert(n.center):l,M=t.applyConstrain(I,a).center;jt(t,M);const z=t.clone();z.setCenter(M),z.setZoom(x?+n.zoom:a+di(l.lat,I.lat)),z.setBearing(n.bearing);const F=new c.P(c.an(t.centerPoint.x+n.offsetAsPoint.x,0,t.width),c.an(t.centerPoint.y+n.offsetAsPoint.y,0,t.height));z.setLocationAtPoint(M,F);const N=(n.offset&&n.offsetAsPoint.mag())>0?z.center:M,G=x?+n.zoom:a+di(l.lat,N.lat),U=a+di(l.lat,0),$=G+di(N.lat,0),K=c.bK(l.lng,N.lng),Z=c.bK(l.lat,N.lat),J=c.aq($-U);return T=G!==a,{easeFunc:te=>{if(c.bo(m,_)||tl({startEulerAngles:m,endEulerAngles:_,tr:t,k:te,useSlerp:m.roll!=_.roll}),w&&t.interpolatePadding(p,n.padding,te),n.around)c.w("Easing around a point is not supported under globe projection."),t.setLocationAtPoint(n.around,n.aroundPoint);else{const X=$>U?Math.min(2,J):Math.max(.5,J),ae=Math.pow(X,1-te),_e=vc(l,K,Z,te*ae);t.setCenter(_e.wrap())}if(T){const X=c.G.number(U,$,te)+di(0,t.center.lat);t.setZoom(X)}},isZooming:T,elevationCenter:N}}handleFlyTo(t,n){const a=n.zoom!==void 0,l=t.center,p=t.zoom,m=t.padding,_=!t.isPaddingEqual(n.padding),x=t.applyConstrain(c.V.convert(n.center||n.locationAtOffset),p).center,w=a?+n.zoom:t.zoom+di(t.center.lat,x.lat),T=t.clone();T.setCenter(x),T.setZoom(w),T.setBearing(n.bearing);const I=new c.P(c.an(t.centerPoint.x+n.offsetAsPoint.x,0,t.width),c.an(t.centerPoint.y+n.offsetAsPoint.y,0,t.height));T.setLocationAtPoint(x,I);const M=T.center;jt(t,M);const z=function(Z,J,te){const X=ci(J),ae=ci(te),_e=c.b5(X,ae),fe=Math.acos(_e),pe=Ka(Z);return fe/(2*Math.PI)*pe}(t,l,M),F=p+di(l.lat,0),N=w+di(M.lat,0),G=c.aq(N-F);let U;if(typeof n.minZoom=="number"){const Z=+n.minZoom+di(M.lat,0),J=Math.min(Z,F,N)+di(0,M.lat),te=t.applyConstrain(M,J).zoom+di(M.lat,0);U=c.aq(te-F)}const $=c.bK(l.lng,M.lng),K=c.bK(l.lat,M.lat);return{easeFunc:(Z,J,te,X)=>{const ae=vc(l,$,K,te);_&&t.interpolatePadding(m,n.padding,Z);const _e=Z===1?M:ae;t.setCenter(_e.wrap());const fe=F+c.at(J);t.setZoom(Z===1?w:fe+di(0,_e.lat))},scaleOfZoom:G,targetCenter:M,scaleOfMinZoom:U,pixelPathLength:z}}static solveVectorScale(t,n,a,l,p){const m=l==="x"?[a[0],a[4],a[8],a[12]]:[a[1],a[5],a[9],a[13]],_=[a[3],a[7],a[11],a[15]],x=t[0]*m[0]+t[1]*m[1]+t[2]*m[2],w=t[0]*_[0]+t[1]*_[1]+t[2]*_[2],T=n[0]*m[0]+n[1]*m[1]+n[2]*m[2],I=n[0]*_[0]+n[1]*_[1]+n[2]*_[2];return T+p*w===x+p*I||_[3]*(x-T)+m[3]*(I-w)+x*I==T*w?null:(T+m[3]-p*I-p*_[3])/(T-x-p*I+p*w)}static getLesserNonNegativeNonNull(t,n){return n!==null&&n>=0&&n<t?n:t}}class eo{constructor(t){this._globe=t,this._mercatorCameraHelper=new Xn,this._verticalPerspectiveCameraHelper=new Ar}get useGlobeControls(){return this._globe.useGlobeRendering}get currentHelper(){return this.useGlobeControls?this._verticalPerspectiveCameraHelper:this._mercatorCameraHelper}handlePanInertia(t,n){return this.currentHelper.handlePanInertia(t,n)}handleMapControlsRollPitchBearingZoom(t,n){return this.currentHelper.handleMapControlsRollPitchBearingZoom(t,n)}handleMapControlsPan(t,n,a){this.currentHelper.handleMapControlsPan(t,n,a)}cameraForBoxAndBearing(t,n,a,l,p){return this.currentHelper.cameraForBoxAndBearing(t,n,a,l,p)}handleJumpToCenterZoom(t,n){this.currentHelper.handleJumpToCenterZoom(t,n)}handleEaseTo(t,n){return this.currentHelper.handleEaseTo(t,n)}handleFlyTo(t,n){return this.currentHelper.handleFlyTo(t,n)}}const zn=(d,t)=>c.B(d,t&&t.filter(n=>n.identifier!=="source.canvas")),na=c.bO();class nl extends c.E{constructor(t,n={}){var a,l;super(),this._rtlPluginLoaded=()=>{for(const m in this.tileManagers){const _=this.tileManagers[m].getSource().type;_!=="vector"&&_!=="geojson"||this.tileManagers[m].reload()}},this.map=t,this.dispatcher=new tn(en(),t._getMapId()),this.dispatcher.registerMessageHandler("GG",(m,_)=>this.getGlyphs(m,_)),this.dispatcher.registerMessageHandler("GI",(m,_)=>this.getImages(m,_)),this.dispatcher.registerMessageHandler("GDA",(m,_)=>this.getDashes(m,_)),this.imageManager=new Mr,this.imageManager.setEventedParent(this);const p=((a=t._container)===null||a===void 0?void 0:a.lang)||typeof document<"u"&&((l=document.documentElement)===null||l===void 0?void 0:l.lang)||void 0;this.glyphManager=new qi(t._requestManager,n.localIdeographFontFamily,p),this.lineAtlas=new Qi(256,512),this.crossTileSymbolIndex=new Ii,this._setInitialValues(),this._resetUpdates(),this.dispatcher.broadcast("SR",c.bP()),B().on(oe,this._rtlPluginLoaded),this.on("data",m=>{if(m.dataType!=="source"||m.sourceDataType!=="metadata")return;const _=this.tileManagers[m.sourceId];if(!_)return;const x=_.getSource();if(x&&x.vectorLayerIds)for(const w in this._layers){const T=this._layers[w];T.source===x.id&&this._validateLayer(T)}})}_setInitialValues(){var t;this._spritesImagesIds={},this._layers={},this._order=[],this.tileManagers={},this.zoomHistory=new c.bQ,this._availableImages=[],this._globalState={},this._serializedLayers={},this.stylesheet=null,this.light=null,this.sky=null,this.projection&&(this.projection.destroy(),delete this.projection),this._loaded=!1,this._changed=!1,this._updatedLayers={},this._updatedSources={},this._changedImages={},this._glyphsDidChange=!1,this._updatedPaintProps={},this._layerOrderChanged=!1,this.crossTileSymbolIndex=new(((t=this.crossTileSymbolIndex)===null||t===void 0?void 0:t.constructor)||Object),this.pauseablePlacement=void 0,this.placement=void 0,this.z=0}setGlobalStateProperty(t,n){var a,l,p;this._checkLoaded();const m=n===null?(p=(l=(a=this.stylesheet.state)===null||a===void 0?void 0:a[t])===null||l===void 0?void 0:l.default)!==null&&p!==void 0?p:null:n;if(c.bR(m,this._globalState[t]))return this;this._globalState[t]=m,this._applyGlobalStateChanges([t])}getGlobalState(){return this._globalState}setGlobalState(t){this._checkLoaded();const n=[];for(const a in t)!c.bR(this._globalState[a],t[a].default)&&(n.push(a),this._globalState[a]=t[a].default);this._applyGlobalStateChanges(n)}_applyGlobalStateChanges(t){if(t.length===0)return;const n=new Set,a={};for(const l of t){a[l]=this._globalState[l];for(const p in this._layers){const m=this._layers[p],_=m.getLayoutAffectingGlobalStateRefs(),x=m.getPaintAffectingGlobalStateRefs(),w=m.getVisibilityAffectingGlobalStateRefs();if(_.has(l)&&n.add(m.source),x.has(l))for(const{name:T,value:I}of x.get(l))this._updatePaintProperty(m,T,I);w!=null&&w.has(l)&&(m.recalculateVisibility(),this._updateLayer(m))}}this.dispatcher.broadcast("UGS",a);for(const l in this.tileManagers)n.has(l)&&(this._reloadSource(l),this._changed=!0)}loadURL(t,n={},a){this.fire(new c.l("dataloading",{dataType:"style"})),n.validate=typeof n.validate!="boolean"||n.validate;const l=this.map._requestManager.transformRequest(t,"Style");this._loadStyleRequest=new AbortController;const p=this._loadStyleRequest;c.j(l,this._loadStyleRequest).then(m=>{this._loadStyleRequest=null,this._load(m.data,n,a)}).catch(m=>{this._loadStyleRequest=null,m&&!p.signal.aborted&&this.fire(new c.k(m))})}loadJSON(t,n={},a){this.fire(new c.l("dataloading",{dataType:"style"})),this._frameRequest=new AbortController,st.frameAsync(this._frameRequest,this.map._ownerWindow).then(()=>{this._frameRequest=null,n.validate=n.validate!==!1,this._load(t,n,a)}).catch(()=>{})}loadEmpty(){this.fire(new c.l("dataloading",{dataType:"style"})),this._load(na,{validate:!1})}_load(t,n,a){var l,p;let m=n.transformStyle?n.transformStyle(a,t):t;if(!n.validate||!zn(this,c.C(m))){m=Object.assign({},m),this._loaded=!0,this.stylesheet=m;for(const _ in m.sources)this.addSource(_,m.sources[_],{validate:!1});m.sprite?this._loadSprite(m.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(m.glyphs),this._createLayers(),this.light=new Jr(this.stylesheet.light),this._setProjectionInternal(((l=this.stylesheet.projection)===null||l===void 0?void 0:l.type)||"mercator"),this.sky=new Qr(this.stylesheet.sky),this.map.setTerrain((p=this.stylesheet.terrain)!==null&&p!==void 0?p:null),this.fire(new c.l("data",{dataType:"style"})),this.fire(new c.l("style.load"))}}_createLayers(){var t,n,a;const l=c.bS(this.stylesheet.layers);this.setGlobalState((t=this.stylesheet.state)!==null&&t!==void 0?t:null),this.dispatcher.broadcast("SL",l),this._order=l.map(p=>p.id),this._layers={},this._serializedLayers=null;for(const p of l){const m=c.bT(p,this._globalState);if(m.setEventedParent(this,{layer:{id:p.id}}),this._layers[p.id]=m,c.bU(m)&&this.tileManagers[m.source]){const _=(a=(n=p.paint)===null||n===void 0?void 0:n["raster-fade-duration"])!==null&&a!==void 0?a:m.paint.get("raster-fade-duration");this.tileManagers[m.source].setRasterFadeDuration(_)}}}_loadSprite(t,n=!1,a=void 0){this.imageManager.setLoaded(!1);const l=new AbortController;let p;this._spriteRequest=l,function(m,_,x,w){return c._(this,void 0,void 0,function*(){const T=Si(m),I=x>1?"@2x":"",M={},z={};for(const{id:F,url:N}of T){const G=_.transformRequest(mr(N,I,".json"),"SpriteJSON");M[F]=c.j(G,w);const U=_.transformRequest(mr(N,I,".png"),"SpriteImage");z[F]=hi.getImage(U,w)}return yield Promise.all([...Object.values(M),...Object.values(z)]),function(F,N){return c._(this,void 0,void 0,function*(){const G={};for(const U in F){G[U]={};const $=st.getImageCanvasContext((yield N[U]).data),K=(yield F[U]).data;for(const Z in K){const{width:J,height:te,x:X,y:ae,sdf:_e,pixelRatio:fe,stretchX:pe,stretchY:ge,content:De,textFitWidth:ze,textFitHeight:ve}=K[Z];G[U][Z]={data:null,pixelRatio:fe,sdf:_e,stretchX:pe,stretchY:ge,content:De,textFitWidth:ze,textFitHeight:ve,spriteData:{width:J,height:te,x:X,y:ae,context:$}}}}return G})}(M,z)})}(t,this.map._requestManager,this.map.getPixelRatio(),this._spriteRequest).then(m=>{if(this._spriteRequest=null,m)for(const _ in m){this._spritesImagesIds[_]=[];const x=this._spritesImagesIds[_]?this._spritesImagesIds[_].filter(w=>!(w in m)):[];for(const w of x)this.imageManager.removeImage(w),this._changedImages[w]=!0;for(const w in m[_]){const T=_==="default"?w:`${_}:${w}`;this._spritesImagesIds[_].push(T),T in this.imageManager.images?this.imageManager.updateImage(T,m[_][w],!1):this.imageManager.addImage(T,m[_][w]),n&&(this._changedImages[T]=!0)}}}).catch(m=>{this._spriteRequest=null,p=m,l.signal.aborted||this.fire(new c.k(p))}).finally(()=>{this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),n&&(this._changed=!0),this.dispatcher.broadcast("SI",this._availableImages),this.fire(new c.l("data",{dataType:"style"})),a&&a(p)})}_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("SI",this._availableImages),this.fire(new c.l("data",{dataType:"style"}))}_validateLayer(t){const n=this.tileManagers[t.source];if(!n)return;const a=t.sourceLayer;if(!a)return;const l=n.getSource();(l.type==="geojson"||l.vectorLayerIds&&l.vectorLayerIds.indexOf(a)===-1)&&this.fire(new c.k(new Error(`Source layer "${a}" does not exist on source "${l.id}" as specified by style layer "${t.id}".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(const t in this.tileManagers)if(!this.tileManagers[t].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeByIds(t,n=!1){const a=this._serializedAllLayers();if(!t||t.length===0)return Object.values(n?c.bV(a):a);const l=[];for(const p of t)if(a[p]){const m=n?c.bV(a[p]):a[p];l.push(m)}return l}_serializedAllLayers(){let t=this._serializedLayers;if(t)return t;t=this._serializedLayers={};const n=Object.keys(this._layers);for(const a of n){const l=this._layers[a];l.type!=="custom"&&(t[a]=l.serialize())}return t}hasTransitions(){var t,n,a;if(!((t=this.light)===null||t===void 0)&&t.hasTransition()||!((n=this.sky)===null||n===void 0)&&n.hasTransition()||!((a=this.projection)===null||a===void 0)&&a.hasTransition())return!0;for(const l in this.tileManagers)if(this.tileManagers[l].hasTransition())return!0;for(const l in this._layers)if(this._layers[l].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(n){const l=Object.keys(this._updatedLayers),p=Object.keys(this._removedLayers);(l.length||p.length)&&this._updateWorkerLayers(l,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.sky.updateTransitions(t),this._resetUpdates()}const a={};for(const l in this.tileManagers){const p=this.tileManagers[l];a[l]=p.used,p.used=!1}for(const l of this._order){const p=this._layers[l];p.recalculate(t,this._availableImages),!p.isHidden(t.zoom)&&p.source&&(this.tileManagers[p.source].used=!0)}for(const l in a){const p=this.tileManagers[l];!!a[l]!=!!p.used&&p.fire(new c.l("data",{sourceDataType:"visibility",dataType:"source",sourceId:l}))}this.light.recalculate(t),this.sky.recalculate(t),this.projection.recalculate(t),this.z=t.zoom,n&&this.fire(new c.l("data",{dataType:"style"}))}_updateTilesForChangedImages(){const t=Object.keys(this._changedImages);if(t.length){for(const n in this.tileManagers)this.tileManagers[n].reloadTilesForDependencies(["icons","patterns"],t);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(const t in this.tileManagers)this.tileManagers[t].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1}}_updateWorkerLayers(t,n){this.dispatcher.broadcast("UL",{layers:this._serializeByIds(t,!1),removedIds:n})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(t,n={}){var a;this._checkLoaded();const l=this.serialize();if(t=n.transformStyle?n.transformStyle(l,t):t,((a=n.validate)===null||a===void 0||a)&&zn(this,c.C(t)))return!1;(t=c.bV(t)).layers=c.bS(t.layers);const p=c.bW(l,t),m=this._getOperationsToPerform(p);if(m.unimplemented.length>0)throw new Error(`Unimplemented: ${m.unimplemented.join(", ")}.`);if(m.operations.length===0)return!1;for(const _ of m.operations)_();return this.stylesheet=t,this._serializedLayers=null,this.fire(new c.l("style.load",{style:this})),!0}_getOperationsToPerform(t){const n=[],a=[];for(const l of t)switch(l.command){case"setCenter":case"setZoom":case"setBearing":case"setPitch":case"setRoll":continue;case"addLayer":n.push(()=>this.addLayer.apply(this,l.args));break;case"removeLayer":n.push(()=>this.removeLayer.apply(this,l.args));break;case"setPaintProperty":n.push(()=>this.setPaintProperty.apply(this,l.args));break;case"setLayoutProperty":n.push(()=>this.setLayoutProperty.apply(this,l.args));break;case"setFilter":n.push(()=>this.setFilter.apply(this,l.args));break;case"addSource":n.push(()=>this.addSource.apply(this,l.args));break;case"removeSource":n.push(()=>this.removeSource.apply(this,l.args));break;case"setLayerZoomRange":n.push(()=>this.setLayerZoomRange.apply(this,l.args));break;case"setLight":n.push(()=>this.setLight.apply(this,l.args));break;case"setGeoJSONSourceData":n.push(()=>this.setGeoJSONSourceData.apply(this,l.args));break;case"setGlyphs":n.push(()=>this.setGlyphs.apply(this,l.args));break;case"setSprite":n.push(()=>this.setSprite.apply(this,l.args));break;case"setTerrain":n.push(()=>this.map.setTerrain.apply(this,l.args));break;case"setSky":n.push(()=>this.setSky.apply(this,l.args));break;case"setProjection":this.setProjection.apply(this,l.args);break;case"setGlobalState":n.push(()=>this.setGlobalState.apply(this,l.args));break;case"setTransition":n.push(()=>{});break;default:a.push(l.command)}return{operations:n,unimplemented:a}}addImage(t,n){if(this.getImage(t))return this.fire(new c.k(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.k(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("SI",this._availableImages),this.fire(new c.l("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(t,n,a={}){if(this._checkLoaded(),this.tileManagers[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.C.source,`sources.${t}`,n,null,a))return;this.map&&this.map._collectResourceTiming&&(n.collectResourceTiming=!0);const l=this.tileManagers[t]=new Ae(t,n,this.dispatcher);l.style=this,l.setEventedParent(this,()=>({isSourceLoaded:l.loaded(),source:l.serialize(),sourceId:t})),l.onAdd(this.map),this._changed=!0}removeSource(t){if(this._checkLoaded(),this.tileManagers[t]===void 0)throw new Error(`There is no source with this ID=${t}`);for(const a in this._layers)if(this._layers[a].source===t)return this.fire(new c.k(new Error(`Source "${t}" cannot be removed while layer "${a}" is using it.`)));const n=this.tileManagers[t];delete this.tileManagers[t],delete this._updatedSources[t],n.fire(new c.l("data",{sourceDataType:"metadata",dataType:"source",sourceId:t})),n.setEventedParent(null),n.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(t,n){if(this._checkLoaded(),this.tileManagers[t]===void 0)throw new Error(`There is no source with this ID=${t}`);const a=this.tileManagers[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.tileManagers[t]&&this.tileManagers[t].getSource()}addLayer(t,n,a={}){this._checkLoaded();const l=t.id;if(this.getLayer(l))return void this.fire(new c.k(new Error(`Layer "${l}" already exists on this map.`)));let p;if(t.type==="custom"){if(zn(this,c.bX(t)))return;p=c.bT(t,this._globalState)}else{if("source"in t&&typeof t.source=="object"&&(this.addSource(l,t.source),t=c.bV(t),t=c.e(t,{source:l})),this._validate(c.C.layer,`layers.${l}`,t,{arrayIndex:-1},a))return;p=c.bT(t,this._globalState),this._validateLayer(p),p.setEventedParent(this,{layer:{id:l}})}const m=n?this._order.indexOf(n):this._order.length;if(n&&m===-1)this.fire(new c.k(new Error(`Cannot add layer "${l}" before non-existing layer "${n}".`)));else{if(this._order.splice(m,0,l),this._layerOrderChanged=!0,this._layers[l]=p,this._removedLayers[l]&&p.source&&p.type!=="custom"){const _=this._removedLayers[l];delete this._removedLayers[l],_.type!==p.type?this._updatedSources[p.source]="clear":(this._updatedSources[p.source]="reload",this.tileManagers[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.k(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 l=n?this._order.indexOf(n):this._order.length;n&&l===-1?this.fire(new c.k(new Error(`Cannot move layer "${t}" before non-existing layer "${n}".`))):(this._order.splice(l,0,t),this._layerOrderChanged=!0)}removeLayer(t){this._checkLoaded();const n=this._layers[t];if(!n)return void this.fire(new c.k(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],this._serializedLayers&&delete this._serializedLayers[t],delete this._updatedLayers[t],delete this._updatedPaintProps[t],n.onRemove&&n.onRemove(this.map)}getLayer(t){return this._layers[t]}getLayersOrder(){return[...this._order]}hasLayer(t){return t in this._layers}setLayerZoomRange(t,n,a){this._checkLoaded();const l=this.getLayer(t);l?l.minzoom===n&&l.maxzoom===a||(n!=null&&(l.minzoom=n),a!=null&&(l.maxzoom=a),this._updateLayer(l)):this.fire(new c.k(new Error(`Cannot set the zoom range of non-existing layer "${t}".`)))}setFilter(t,n,a={}){this._checkLoaded();const l=this.getLayer(t);if(l){if(!c.bR(l.filter,n))return n==null?(l.setFilter(void 0),void this._updateLayer(l)):void(this._validate(c.C.filter,`layers.${l.id}.filter`,n,null,a)||(l.setFilter(c.bV(n)),this._updateLayer(l)))}else this.fire(new c.k(new Error(`Cannot filter non-existing layer "${t}".`)))}getFilter(t){return c.bV(this.getLayer(t).filter)}setLayoutProperty(t,n,a,l={}){this._checkLoaded();const p=this.getLayer(t);p?c.bR(p.getLayoutProperty(n),a)||(p.setLayoutProperty(n,a,l),this._updateLayer(p)):this.fire(new c.k(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.k(new Error(`Cannot get style of non-existing layer "${t}".`)))}setPaintProperty(t,n,a,l={}){this._checkLoaded();const p=this.getLayer(t);p?c.bR(p.getPaintProperty(n),a)||this._updatePaintProperty(p,n,a,l):this.fire(new c.k(new Error(`Cannot style non-existing layer "${t}".`)))}_updatePaintProperty(t,n,a,l={}){t.setPaintProperty(n,a,l)&&this._updateLayer(t),c.bU(t)&&n==="raster-fade-duration"&&this.tileManagers[t.source].setRasterFadeDuration(a),this._changed=!0,this._updatedPaintProps[t.id]=!0,this._serializedLayers=null}getPaintProperty(t,n){return this.getLayer(t).getPaintProperty(n)}setFeatureState(t,n){this._checkLoaded();const a=t.source,l=t.sourceLayer,p=this.tileManagers[a];if(p===void 0)return void this.fire(new c.k(new Error(`The source '${a}' does not exist in the map's style.`)));const m=p.getSource().type;m==="geojson"&&l?this.fire(new c.k(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):m!=="vector"||l?(t.id===void 0&&this.fire(new c.k(new Error("The feature id parameter must be provided."))),p.setFeatureState(l,t.id,n)):this.fire(new c.k(new Error("The sourceLayer parameter must be provided for vector source types.")))}removeFeatureState(t,n){this._checkLoaded();const a=t.source,l=this.tileManagers[a];if(l===void 0)return void this.fire(new c.k(new Error(`The source '${a}' does not exist in the map's style.`)));const p=l.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.k(new Error("A feature id is required to remove its specific state property."))):l.removeFeatureState(m,t.id,n):this.fire(new c.k(new Error("The sourceLayer parameter must be provided for vector source types.")))}getFeatureState(t){this._checkLoaded();const n=t.source,a=t.sourceLayer,l=this.tileManagers[n];if(l!==void 0)return l.getSource().type!=="vector"||a?(t.id===void 0&&this.fire(new c.k(new Error("The feature id parameter must be provided."))),l.getFeatureState(a,t.id)):void this.fire(new c.k(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new c.k(new Error(`The source '${n}' does not exist in the map's style.`)))}getTransition(){return c.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;const t=c.bY(this.tileManagers,p=>p.serialize()),n=this._serializeByIds(this._order,!0),a=this.map.getTerrain()||void 0,l=this.stylesheet;return c.bZ({version:l.version,name:l.name,metadata:l.metadata,light:l.light,sky:l.sky,center:l.center,zoom:l.zoom,bearing:l.bearing,pitch:l.pitch,sprite:l.sprite,glyphs:l.glyphs,transition:l.transition,projection:l.projection,sources:t,layers:n,terrain:a},p=>p!==void 0)}_updateLayer(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&this.tileManagers[t.source].getSource().type!=="raster"&&(this._updatedSources[t.source]="reload",this.tileManagers[t.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(t){const n=m=>this._layers[m].type==="fill-extrusion",a={},l=[];for(let m=this._order.length-1;m>=0;m--){const _=this._order[m];if(n(_)){a[_]=m;for(const x of t){const w=x[_];if(w)for(const T of w)l.push(T)}}}l.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 x=l.length-1;x>=0;x--){const w=l[x].feature;if(a[w.layer.id]<m)break;p.push(w),l.pop()}else for(const x of t){const w=x[_];if(w)for(const T of w)p.push(T.feature)}}return p}queryRenderedFeatures(t,n,a){n&&n.filter&&this._validate(c.C.filter,"queryRenderedFeatures.filter",n.filter,null,n);const l={};if(n&&n.layers){if(!(Array.isArray(n.layers)||n.layers instanceof Set))return this.fire(new c.k(new Error("parameters.layers must be an Array or a Set of strings"))),[];for(const w of n.layers){const T=this._layers[w];if(!T)return this.fire(new c.k(new Error(`The layer '${w}' does not exist in the map's style and cannot be queried for features.`))),[];l[T.source]=!0}}const p=[];n.availableImages=this._availableImages;const m=this._serializedAllLayers(),_=n.layers instanceof Set?n.layers:Array.isArray(n.layers)?new Set(n.layers):null,x=Object.assign(Object.assign({},n),{layers:_,globalState:this._globalState});for(const w in this.tileManagers)n.layers&&!l[w]||p.push(Vn(this.tileManagers[w],this._layers,m,t,x,a,this.map.terrain?(T,I,M)=>this.map.terrain.getElevation(T,I,M):void 0));return this.placement&&p.push(function(w,T,I,M,z,F,N){const G={},U=F.queryRenderedSymbols(M),$=[];for(const K of Object.keys(U).map(Number))$.push(N[K]);$.sort(Mi);for(const K of $){const Z=K.featureIndex.lookupSymbolFeatures(U[K.bucketInstanceId],T,K.bucketIndex,K.sourceLayerIndex,{filterSpec:z.filter,globalState:z.globalState},z.layers,z.availableImages,w);for(const J in Z){const te=G[J]=G[J]||[],X=Z[J];X.sort((ae,_e)=>{const fe=K.featureSortOrder;if(fe){const pe=fe.indexOf(ae.featureIndex);return fe.indexOf(_e.featureIndex)-pe}return _e.featureIndex-ae.featureIndex});for(const ae of X)te.push(ae)}}return function(K,Z,J){for(const te in K)for(const X of K[te])er(X,J[Z[te].source]);return K}(G,w,I)}(this._layers,m,this.tileManagers,t,x,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(p)}querySourceFeatures(t,n){n!=null&&n.filter&&this._validate(c.C.filter,"querySourceFeatures.filter",n.filter,null,n);const a=this.tileManagers[t];return a?function(l,p){const m=l.getRenderableIds().map(w=>l.getTileByID(w)),_=[],x={};for(let w=0;w<m.length;w++){const T=m[w],I=T.tileID.canonical.key;x[I]||(x[I]=!0,T.querySourceFeatures(_,p))}return _}(a,n?Object.assign(Object.assign({},n),{globalState:this._globalState}):{globalState:this._globalState}):[]}getLight(){return this.light.getLight()}setLight(t,n={}){this._checkLoaded();const a=this.light.getLight();let l=!1;for(const m in t)if(!c.bR(t[m],a[m])){l=!0;break}if(!l)return;const p={now:Re(),transition:c.e({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(t,n),this.light.updateTransitions(p)}getProjection(){var t;return(t=this.stylesheet)===null||t===void 0?void 0:t.projection}setProjection(t){if(this._checkLoaded(),this.stylesheet.projection=t,this.projection){if(this.projection.name===t.type)return;this.projection.destroy(),delete this.projection}this._setProjectionInternal(t.type)}getSky(){var t;return(t=this.stylesheet)===null||t===void 0?void 0:t.sky}setSky(t,n={}){this._checkLoaded();const a=this.getSky();let l=!1;if(!t&&!a)return;if(t&&!a)l=!0;else if(!t&&a)l=!0;else for(const m in t)if(!c.bR(t[m],a[m])){l=!0;break}if(!l)return;const p={now:Re(),transition:c.e({duration:300,delay:0},this.stylesheet.transition)};this.stylesheet.sky=t,this.sky.setSky(t,n),this.sky.updateTransitions(p)}_setProjectionInternal(t){const n=function(a,l){const p={constrainOverride:l};if(Array.isArray(a)){const m=new Fi({type:a});return{projection:m,transform:new nr(p),cameraHelper:new eo(m)}}switch(a){case"mercator":return{projection:new Wa,transform:new rr(p),cameraHelper:new Xn};case"globe":{const m=new Fi({type:["interpolate",["linear"],["zoom"],11,"vertical-perspective",12,"mercator"]});return{projection:m,transform:new nr(p),cameraHelper:new eo(m)}}case"vertical-perspective":return{projection:new yc,transform:new Ps(p),cameraHelper:new Ar};default:return c.w(`Unknown projection name: ${a}. Falling back to mercator projection.`),{projection:new Wa,transform:new rr(p),cameraHelper:new Xn}}}(t,this.map.transformConstrain);this.projection=n.projection,this.map.migrateProjection(n.transform,n.cameraHelper);for(const a in this.tileManagers)this.tileManagers[a].reload()}_validate(t,n,a,l,p={}){return(!p||p.validate!==!1)&&zn(this,t.call(c.C,c.e({key:n,style:this.serialize(),value:a,styleSpec:c.u},l)))}_remove(t=!0){this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._loadStyleRequest&&(this._loadStyleRequest.abort(),this._loadStyleRequest=null),this._spriteRequest&&(this._spriteRequest.abort(),this._spriteRequest=null),B().off(oe,this._rtlPluginLoaded);for(const n in this._layers)this._layers[n].setEventedParent(null);for(const n in this.tileManagers){const a=this.tileManagers[n];a.setEventedParent(null),a.onRemove(this.map)}this.imageManager.setEventedParent(null),this.setEventedParent(null),t&&this.dispatcher.broadcast("RM",void 0),this.dispatcher.remove(t)}_clearSource(t){this.tileManagers[t].clearTiles()}_reloadSource(t){this.tileManagers[t].resume(),this.tileManagers[t].reload()}_updateSources(t){for(const n in this.tileManagers)this.tileManagers[n].update(t,this.map.terrain)}_generateCollisionBoxes(){for(const t in this.tileManagers)this._reloadSource(t)}_updatePlacement(t,n,a,l,p=!1){let m=!1,_=!1;const x={};for(const w of this._order){const T=this._layers[w];if(T.type!=="symbol")continue;if(!x[T.source]){const M=this.tileManagers[T.source];x[T.source]=M.getRenderableIds(!0).map(z=>M.getTileByID(z)).sort((z,F)=>F.tileID.overscaledZ-z.tileID.overscaledZ||(z.tileID.isLessThan(F.tileID)?-1:1))}const I=this.crossTileSymbolIndex.addLayer(T,x[T.source],t.center.lng);m=m||I}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((p=p||this._layerOrderChanged||a===0)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(Re(),t.zoom))&&(this.pauseablePlacement=new dt(t,this.map.terrain,this._order,p,n,a,l,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,x),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(Re()),_=!0),m&&this.pauseablePlacement.placement.setStale()),_||m)for(const w of this._order){const T=this._layers[w];T.type==="symbol"&&this.placement.updateLayerOpacities(T,x[T.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(Re())}_releaseSymbolFadeTiles(){for(const t in this.tileManagers)this.tileManagers[t].releaseSymbolFadeTiles()}getImages(t,n){return c._(this,void 0,void 0,function*(){const a=yield this.imageManager.getImages(n.icons);this._updateTilesForChangedImages();const l=this.tileManagers[n.source];return l&&l.setDependencies(n.tileID.key,n.type,n.icons),a})}getGlyphs(t,n){return c._(this,void 0,void 0,function*(){const a=yield this.glyphManager.getGlyphs(n.stacks),l=this.tileManagers[n.source];return l&&l.setDependencies(n.tileID.key,n.type,[""]),a})}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(t,n={}){this._checkLoaded(),t&&this._validate(c.C.glyphs,"glyphs",t,null,n)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=t,this.glyphManager.entries={},this.glyphManager.setURL(t))}getDashes(t,n){return c._(this,void 0,void 0,function*(){const a={};for(const[l,p]of Object.entries(n.dashes))a[l]=this.lineAtlas.getDash(p.dasharray,p.round);return a})}addSprite(t,n,a={},l){this._checkLoaded();const p=[{id:t,url:n}],m=[...Si(this.stylesheet.sprite),...p];this._validate(c.C.sprite,"sprite",m,null,a)||(this.stylesheet.sprite=m,this._loadSprite(p,!0,l))}removeSprite(t){this._checkLoaded();const n=Si(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("SI",this._availableImages),this.fire(new c.l("data",{dataType:"style"}))}else this.fire(new c.k(new Error(`Sprite "${t}" doesn't exists on this map.`)))}getSprite(){return Si(this.stylesheet.sprite)}setSprite(t,n={},a){this._checkLoaded(),t&&this._validate(c.C.sprite,"sprite",t,null,n)||(this.stylesheet.sprite=t,t?this._loadSprite(t,!0,a):(this._unloadSprite(),a&&a(null)))}destroy(){this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._loadStyleRequest&&(this._loadStyleRequest.abort(),this._loadStyleRequest=null),this._spriteRequest&&(this._spriteRequest.abort(),this._spriteRequest=null);for(const t in this.tileManagers){const n=this.tileManagers[t];n.setEventedParent(null),n.onRemove(this.map)}this.tileManagers={},this.imageManager&&(this.imageManager.setEventedParent(null),this.imageManager.destroy(),this._availableImages=[],this._spritesImagesIds={}),this.glyphManager&&this.glyphManager.destroy();for(const t in this._layers){const n=this._layers[t];n.setEventedParent(null),n.onRemove&&n.onRemove(this.map)}this._setInitialValues(),this.setEventedParent(null),this.dispatcher.unregisterMessageHandler("GG"),this.dispatcher.unregisterMessageHandler("GI"),this.dispatcher.unregisterMessageHandler("GDA"),this.dispatcher.remove(!0),this._listeners={},this._oneTimeListeners={}}}var to=c.aU([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class Ku{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,l,p,m,_,x,w){this.context=t;let T=this.boundPaintVertexBuffers.length!==l.length;for(let I=0;!T&&I<l.length;I++)this.boundPaintVertexBuffers[I]!==l[I]&&(T=!0);!this.vao||this.boundProgram!==n||this.boundLayoutVertexBuffer!==a||T||this.boundIndexBuffer!==p||this.boundVertexOffset!==m||this.boundDynamicVertexBuffer!==_||this.boundDynamicVertexBuffer2!==x||this.boundDynamicVertexBuffer3!==w?this.freshBind(n,a,l,p,m,_,x,w):(t.bindVertexArray.set(this.vao),_&&_.bind(),p&&p.dynamicDraw&&p.bind(),x&&x.bind(),w&&w.bind())}freshBind(t,n,a,l,p,m,_,x){const w=t.numAttributes,T=this.context,I=T.gl;this.vao&&this.destroy(),this.vao=T.createVertexArray(),T.bindVertexArray.set(this.vao),this.boundProgram=t,this.boundLayoutVertexBuffer=n,this.boundPaintVertexBuffers=a,this.boundIndexBuffer=l,this.boundVertexOffset=p,this.boundDynamicVertexBuffer=m,this.boundDynamicVertexBuffer2=_,this.boundDynamicVertexBuffer3=x,n.enableAttributes(I,t);for(const M of a)M.enableAttributes(I,t);m&&m.enableAttributes(I,t),_&&_.enableAttributes(I,t),x&&x.enableAttributes(I,t),n.bind(),n.setVertexAttribPointers(I,t,p);for(const M of a)M.bind(),M.setVertexAttribPointers(I,t,p);m&&(m.bind(),m.setVertexAttribPointers(I,t,p)),l&&l.bind(),_&&(_.bind(),_.setVertexAttribPointers(I,t,p)),x&&(x.bind(),x.setVertexAttribPointers(I,t,p)),T.currentNumAttributes=w}destroy(){this.vao&&(this.context.deleteVertexArray(this.vao),this.vao=null)}}const Ms=(d,t,n,a,l)=>({u_texture:0,u_ele_delta:d,u_fog_matrix:t,u_fog_color:n?n.properties.get("fog-color"):c.bp.white,u_fog_ground_blend:n?n.properties.get("fog-ground-blend"):1,u_fog_ground_blend_opacity:l?0:n?n.calculateFogBlendOpacity(a):0,u_horizon_color:n?n.properties.get("horizon-color"):c.bp.white,u_horizon_fog_blend:n?n.properties.get("horizon-fog-blend"):1,u_is_globe_mode:l?1:0}),Ju={mainMatrix:"u_projection_matrix",tileMercatorCoords:"u_projection_tile_mercator_coords",clippingPlane:"u_projection_clipping_plane",projectionTransition:"u_projection_transition",fallbackMatrix:"u_projection_fallback_matrix"};function sa(d){const t=[];for(let n=0;n<d.length;n++){if(d[n]===null)continue;const a=d[n].split(" ");t.push(a.pop())}return t}class Qu{constructor(t,n,a,l,p,m,_,x,w=[]){const T=t.gl;this.program=T.createProgram();const I=sa(n.staticAttributes),M=a?a.getBinderAttributes():[],z=I.concat(M),F=At.prelude.staticUniforms?sa(At.prelude.staticUniforms):[],N=_.staticUniforms?sa(_.staticUniforms):[],G=n.staticUniforms?sa(n.staticUniforms):[],U=a?a.getBinderUniforms():[],$=F.concat(N).concat(G).concat(U),K=[];for(const fe of $)K.indexOf(fe)<0&&K.push(fe);const Z=a?a.defines():[];xr(T)&&Z.unshift("#version 300 es"),p&&Z.push("#define OVERDRAW_INSPECTOR;"),m&&Z.push("#define TERRAIN3D;"),x&&Z.push(x),w&&Z.push(...w);let J=Z.concat(At.prelude.fragmentSource,_.fragmentSource,n.fragmentSource).join(`
|
||
`),te=Z.concat(At.prelude.vertexSource,_.vertexSource,n.vertexSource).join(`
|
||
`);xr(T)||(J=function(fe){return fe.replace(/\bin\s/g,"varying ").replace("out highp vec4 fragColor;","").replace(/fragColor/g,"gl_FragColor").replace(/texture\(/g,"texture2D(")}(J),te=function(fe){return fe.replace(/\bin\s/g,"attribute ").replace(/\bout\s/g,"varying ").replace(/texture\(/g,"texture2D(")}(te));const X=T.createShader(T.FRAGMENT_SHADER);if(T.isContextLost())return void(this.failedToCreate=!0);if(T.shaderSource(X,J),T.compileShader(X),!T.getShaderParameter(X,T.COMPILE_STATUS))throw new Error(`Could not compile fragment shader: ${T.getShaderInfoLog(X)}`);T.attachShader(this.program,X);const ae=T.createShader(T.VERTEX_SHADER);if(T.isContextLost())return void(this.failedToCreate=!0);if(T.shaderSource(ae,te),T.compileShader(ae),!T.getShaderParameter(ae,T.COMPILE_STATUS))throw new Error(`Could not compile vertex shader: ${T.getShaderInfoLog(ae)}`);T.attachShader(this.program,ae),this.attributes={};const _e={};this.numAttributes=z.length;for(let fe=0;fe<this.numAttributes;fe++)z[fe]&&(T.bindAttribLocation(this.program,fe,z[fe]),this.attributes[z[fe]]=fe);if(T.linkProgram(this.program),!T.getProgramParameter(this.program,T.LINK_STATUS))throw new Error(`Program failed to link: ${T.getProgramInfoLog(this.program)}`);T.deleteShader(ae),T.deleteShader(X);for(let fe=0;fe<K.length;fe++){const pe=K[fe];if(pe&&!_e[pe]){const ge=T.getUniformLocation(this.program,pe);ge&&(_e[pe]=ge)}}this.fixedUniforms=l(t,_e),this.terrainUniforms=((fe,pe)=>({u_depth:new c.b_(fe,pe.u_depth),u_terrain:new c.b_(fe,pe.u_terrain),u_terrain_dim:new c.bq(fe,pe.u_terrain_dim),u_terrain_matrix:new c.c0(fe,pe.u_terrain_matrix),u_terrain_unpack:new c.c1(fe,pe.u_terrain_unpack),u_terrain_exaggeration:new c.bq(fe,pe.u_terrain_exaggeration)}))(t,_e),this.projectionUniforms=((fe,pe)=>({u_projection_matrix:new c.c0(fe,pe.u_projection_matrix),u_projection_tile_mercator_coords:new c.c1(fe,pe.u_projection_tile_mercator_coords),u_projection_clipping_plane:new c.c1(fe,pe.u_projection_clipping_plane),u_projection_transition:new c.bq(fe,pe.u_projection_transition),u_projection_fallback_matrix:new c.c0(fe,pe.u_projection_fallback_matrix)}))(t,_e),this.binderUniforms=a?a.getUniforms(t,_e):[]}draw(t,n,a,l,p,m,_,x,w,T,I,M,z,F,N,G,U,$,K){const Z=t.gl;if(this.failedToCreate)return;if(t.program.set(this.program),t.setDepthMode(a),t.setStencilMode(l),t.setColorMode(p),t.setCullFace(m),x){t.activeTexture.set(Z.TEXTURE2),Z.bindTexture(Z.TEXTURE_2D,x.depthTexture),t.activeTexture.set(Z.TEXTURE3),Z.bindTexture(Z.TEXTURE_2D,x.texture);for(const te in this.terrainUniforms)this.terrainUniforms[te].set(x[te])}if(w)for(const te in w)this.projectionUniforms[Ju[te]].set(w[te]);if(_)for(const te in this.fixedUniforms)this.fixedUniforms[te].set(_[te]);G&&G.setUniforms(t,this.binderUniforms,F,{zoom:N});let J=0;switch(n){case Z.LINES:J=2;break;case Z.TRIANGLES:J=3;break;case Z.LINE_STRIP:J=1}for(const te of z.get()){const X=te.vaos||(te.vaos={});(X[T]||(X[T]=new Ku)).bind(t,this,I,G?G.getPaintVertexBuffers():[],M,te.vertexOffset,U,$,K),Z.drawElements(n,te.primitiveLength*J,Z.UNSIGNED_SHORT,te.primitiveOffset*J*2)}}}function sl(d,t,n){const a=1/c.aN(n,1,t.transform.tileZoom),l=Math.pow(2,n.tileID.overscaledZ),p=n.tileSize*Math.pow(2,t.transform.tileZoom)/l,m=p*(n.tileID.canonical.x+n.tileID.wrap*l),_=p*n.tileID.canonical.y;return{u_image:0,u_texsize:n.imageAtlasTexture.size,u_scale:[a,d.fromScale,d.toScale],u_fade:d.t,u_pixel_coord_upper:[m>>16,_>>16],u_pixel_coord_lower:[65535&m,65535&_]}}const io=(d,t,n,a)=>{const l=d.style.light,p=l.properties.get("position"),m=[p.x,p.y,p.z],_=c.c4();l.properties.get("anchor")==="viewport"&&c.c5(_,d.transform.bearingInRadians),c.c6(m,m,_);const x=d.transform.transformLightDirection(m),w=l.properties.get("color");return{u_lightpos:m,u_lightpos_globe:x,u_lightintensity:l.properties.get("intensity"),u_lightcolor:[w.r,w.g,w.b],u_vertical_gradient:+t,u_opacity:n,u_fill_translate:a}},bc=(d,t,n,a,l,p,m)=>c.e(io(d,t,n,a),sl(p,d,m),{u_height_factor:-Math.pow(2,l.overscaledZ)/m.tileSize/8}),al=(d,t,n,a)=>c.e(sl(t,d,n),{u_fill_translate:a}),wc=(d,t)=>({u_world:d,u_fill_translate:t}),Tc=(d,t,n,a,l)=>c.e(al(d,t,n,l),{u_world:a}),Jn=(d,t,n,a,l)=>{const p=d.transform;let m,_,x=0;if(n.paint.get("circle-pitch-alignment")==="map"){const w=c.aN(t,1,p.zoom);m=!0,_=[w,w],x=w/(c.a5*Math.pow(2,t.tileID.overscaledZ))*2*Math.PI*l}else m=!1,_=p.pixelsToGLUnits;return{u_camera_to_center_distance:p.cameraToCenterDistance,u_scale_with_map:+(n.paint.get("circle-pitch-scale")==="map"),u_pitch_with_map:+m,u_device_pixel_ratio:d.pixelRatio,u_extrude_scale:_,u_globe_extrude_scale:x,u_translate:a}},Sc=d=>({u_pixel_extrude_scale:[1/d.width,1/d.height]}),Pc=d=>({u_viewport_size:[d.width,d.height]}),Is=(d,t=1)=>({u_color:d,u_overlay:0,u_overlay_scale:t}),Mc=(d,t,n,a)=>{const l=c.aN(d,1,t)/(c.a5*Math.pow(2,d.tileID.overscaledZ))*2*Math.PI*a;return{u_extrude_scale:c.aN(d,1,t),u_intensity:n,u_globe_extrude_scale:l}},aa=(d,t,n,a)=>{const l=c.N();c.c7(l,0,d.width,d.height,0,0,1);const p=d.context.gl;return{u_matrix:l,u_world:[p.drawingBufferWidth,p.drawingBufferHeight],u_image:n,u_color_ramp:a,u_opacity:t.paint.get("heatmap-opacity")}},eh=(d,t,n)=>{const a=n.paint.get("hillshade-accent-color");let l;switch(n.paint.get("hillshade-method")){case"basic":l=4;break;case"combined":l=1;break;case"igor":l=2;break;case"multidirectional":l=3;break;default:l=0}const p=n.getIlluminationProperties();for(let m=0;m<p.directionRadians.length;m++)n.paint.get("hillshade-illumination-anchor")==="viewport"&&(p.directionRadians[m]+=d.transform.bearingInRadians);return{u_image:0,u_latrange:Ic(0,t.tileID),u_exaggeration:n.paint.get("hillshade-exaggeration"),u_altitudes:p.altitudeRadians,u_azimuths:p.directionRadians,u_accent:a,u_method:l,u_highlights:p.highlightColor,u_shadows:p.shadowColor}},th=(d,t)=>{const n=t.stride,a=c.N();return c.c7(a,0,c.a5,-c.a5,0,0,1),c.O(a,a,[0,-c.a5,0]),{u_matrix:a,u_image:1,u_dimension:[n,n],u_zoom:d.overscaledZ,u_unpack:t.getUnpackVector()}};function Ic(d,t){const n=Math.pow(2,t.canonical.z),a=t.canonical.y;return[new c.a9(0,a/n).toLngLat().lat,new c.a9(0,(a+1)/n).toLngLat().lat]}const Ec=(d,t,n=0)=>({u_image:0,u_unpack:t.getUnpackVector(),u_dimension:[t.stride,t.stride],u_elevation_stops:1,u_color_stops:4,u_color_ramp_size:n,u_opacity:d.paint.get("color-relief-opacity")}),oa=(d,t,n,a)=>{const l=d.transform;return{u_translation:no(d,t,n),u_ratio:a/c.aN(t,1,l.zoom),u_device_pixel_ratio:d.pixelRatio,u_units_to_pixels:[1/l.pixelsToGLUnits[0],1/l.pixelsToGLUnits[1]]}},ol=(d,t,n,a,l)=>c.e(oa(d,t,n,a),{u_image:0,u_image_height:l}),Cc=(d,t,n,a,l)=>{const p=d.transform,m=la(t,p);return{u_translation:no(d,t,n),u_texsize:t.imageAtlasTexture.size,u_ratio:a/c.aN(t,1,p.zoom),u_device_pixel_ratio:d.pixelRatio,u_image:0,u_scale:[m,l.fromScale,l.toScale],u_fade:l.t,u_units_to_pixels:[1/p.pixelsToGLUnits[0],1/p.pixelsToGLUnits[1]]}},ro=(d,t,n,a,l)=>{const p=la(t,d.transform);return c.e(oa(d,t,n,a),{u_tileratio:p,u_crossfade_from:l.fromScale,u_crossfade_to:l.toScale,u_image:0,u_mix:l.t,u_lineatlas_width:d.lineAtlas.width,u_lineatlas_height:d.lineAtlas.height})},un=(d,t,n,a,l,p)=>{const m=la(t,d.transform);return c.e(oa(d,t,n,a),{u_image:0,u_image_height:p,u_tileratio:m,u_crossfade_from:l.fromScale,u_crossfade_to:l.toScale,u_image_dash:1,u_mix:l.t,u_lineatlas_width:d.lineAtlas.width,u_lineatlas_height:d.lineAtlas.height})};function la(d,t){return 1/c.aN(d,1,t.tileZoom)}function no(d,t,n){return c.aO(d.transform,t,n.paint.get("line-translate"),n.paint.get("line-translate-anchor"))}const ll=(d,t,n,a,l)=>{return{u_tl_parent:d,u_scale_parent:t,u_buffer_scale:1,u_fade_t:n.mix,u_opacity:n.opacity*a.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:a.paint.get("raster-brightness-min"),u_brightness_high:a.paint.get("raster-brightness-max"),u_saturation_factor:(m=a.paint.get("raster-saturation"),m>0?1-1/(1.001-m):-m),u_contrast_factor:(p=a.paint.get("raster-contrast"),p>0?1/(1-p):1+p),u_spin_weights:Ac(a.paint.get("raster-hue-rotate")),u_coords_top:[l[0].x,l[0].y,l[1].x,l[1].y],u_coords_bottom:[l[3].x,l[3].y,l[2].x,l[2].y]};var p,m};function Ac(d){d*=Math.PI/180;const t=Math.sin(d),n=Math.cos(d);return[(2*n+1)/3,(-Math.sqrt(3)*t-n+1)/3,(Math.sqrt(3)*t-n+1)/3]}const so=(d,t,n,a,l,p,m,_,x,w,T,I,M)=>{const z=m.transform;return{u_is_size_zoom_constant:+(d==="constant"||d==="source"),u_is_size_feature_constant:+(d==="constant"||d==="camera"),u_size_t:t?t.uSizeT:0,u_size:t?t.uSize:0,u_camera_to_center_distance:z.cameraToCenterDistance,u_pitch:z.pitch/360*2*Math.PI,u_rotate_symbol:+n,u_aspect_ratio:z.width/z.height,u_fade_change:m.options.fadeDuration?m.symbolFadeChange:1,u_label_plane_matrix:_,u_coord_matrix:x,u_is_text:+T,u_pitch_with_map:+a,u_is_along_line:l,u_is_variable_anchor:p,u_texsize:I,u_texture:0,u_translation:w,u_pitched_scale:M}},kn=(d,t,n,a,l,p,m,_,x,w,T,I,M,z)=>{const F=m.transform;return c.e(so(d,t,n,a,l,p,m,_,x,w,T,I,z),{u_gamma_scale:a?Math.cos(F.pitch*Math.PI/180)*F.cameraToCenterDistance:1,u_device_pixel_ratio:m.pixelRatio,u_is_halo:1})},cl=(d,t,n,a,l,p,m,_,x,w,T,I,M)=>c.e(kn(d,t,n,a,l,p,m,_,x,w,!0,T,0,M),{u_texsize_icon:I,u_texture_icon:1}),ih=(d,t)=>({u_opacity:d,u_color:t}),rh=(d,t,n,a,l)=>c.e(function(p,m,_,x){const w=_.imageManager.getPattern(p.from.toString()),T=_.imageManager.getPattern(p.to.toString()),{width:I,height:M}=_.imageManager.getPixelSize(),z=Math.pow(2,x.tileID.overscaledZ),F=x.tileSize*Math.pow(2,_.transform.tileZoom)/z,N=F*(x.tileID.canonical.x+x.tileID.wrap*z),G=F*x.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:w.tl,u_pattern_br_a:w.br,u_pattern_tl_b:T.tl,u_pattern_br_b:T.br,u_texsize:[I,M],u_mix:m.t,u_pattern_size_a:w.displaySize,u_pattern_size_b:T.displaySize,u_scale_a:m.fromScale,u_scale_b:m.toScale,u_tile_units_to_pixels:1/c.aN(x,1,_.transform.tileZoom),u_pixel_coord_upper:[N>>16,G>>16],u_pixel_coord_lower:[65535&N,65535&G]}}(n,l,t,a),{u_opacity:d}),Dc=(d,t)=>{},nh={fillExtrusion:(d,t)=>({u_lightpos:new c.c2(d,t.u_lightpos),u_lightpos_globe:new c.c2(d,t.u_lightpos_globe),u_lightintensity:new c.bq(d,t.u_lightintensity),u_lightcolor:new c.c2(d,t.u_lightcolor),u_vertical_gradient:new c.bq(d,t.u_vertical_gradient),u_opacity:new c.bq(d,t.u_opacity),u_fill_translate:new c.c3(d,t.u_fill_translate)}),fillExtrusionPattern:(d,t)=>({u_lightpos:new c.c2(d,t.u_lightpos),u_lightpos_globe:new c.c2(d,t.u_lightpos_globe),u_lightintensity:new c.bq(d,t.u_lightintensity),u_lightcolor:new c.c2(d,t.u_lightcolor),u_vertical_gradient:new c.bq(d,t.u_vertical_gradient),u_height_factor:new c.bq(d,t.u_height_factor),u_opacity:new c.bq(d,t.u_opacity),u_fill_translate:new c.c3(d,t.u_fill_translate),u_image:new c.b_(d,t.u_image),u_texsize:new c.c3(d,t.u_texsize),u_pixel_coord_upper:new c.c3(d,t.u_pixel_coord_upper),u_pixel_coord_lower:new c.c3(d,t.u_pixel_coord_lower),u_scale:new c.c2(d,t.u_scale),u_fade:new c.bq(d,t.u_fade)}),fill:(d,t)=>({u_fill_translate:new c.c3(d,t.u_fill_translate)}),fillPattern:(d,t)=>({u_image:new c.b_(d,t.u_image),u_texsize:new c.c3(d,t.u_texsize),u_pixel_coord_upper:new c.c3(d,t.u_pixel_coord_upper),u_pixel_coord_lower:new c.c3(d,t.u_pixel_coord_lower),u_scale:new c.c2(d,t.u_scale),u_fade:new c.bq(d,t.u_fade),u_fill_translate:new c.c3(d,t.u_fill_translate)}),fillOutline:(d,t)=>({u_world:new c.c3(d,t.u_world),u_fill_translate:new c.c3(d,t.u_fill_translate)}),fillOutlinePattern:(d,t)=>({u_world:new c.c3(d,t.u_world),u_image:new c.b_(d,t.u_image),u_texsize:new c.c3(d,t.u_texsize),u_pixel_coord_upper:new c.c3(d,t.u_pixel_coord_upper),u_pixel_coord_lower:new c.c3(d,t.u_pixel_coord_lower),u_scale:new c.c2(d,t.u_scale),u_fade:new c.bq(d,t.u_fade),u_fill_translate:new c.c3(d,t.u_fill_translate)}),circle:(d,t)=>({u_camera_to_center_distance:new c.bq(d,t.u_camera_to_center_distance),u_scale_with_map:new c.b_(d,t.u_scale_with_map),u_pitch_with_map:new c.b_(d,t.u_pitch_with_map),u_extrude_scale:new c.c3(d,t.u_extrude_scale),u_device_pixel_ratio:new c.bq(d,t.u_device_pixel_ratio),u_globe_extrude_scale:new c.bq(d,t.u_globe_extrude_scale),u_translate:new c.c3(d,t.u_translate)}),collisionBox:(d,t)=>({u_pixel_extrude_scale:new c.c3(d,t.u_pixel_extrude_scale)}),collisionCircle:(d,t)=>({u_viewport_size:new c.c3(d,t.u_viewport_size)}),debug:(d,t)=>({u_color:new c.b$(d,t.u_color),u_overlay:new c.b_(d,t.u_overlay),u_overlay_scale:new c.bq(d,t.u_overlay_scale)}),depth:Dc,clippingMask:Dc,heatmap:(d,t)=>({u_extrude_scale:new c.bq(d,t.u_extrude_scale),u_intensity:new c.bq(d,t.u_intensity),u_globe_extrude_scale:new c.bq(d,t.u_globe_extrude_scale)}),heatmapTexture:(d,t)=>({u_matrix:new c.c0(d,t.u_matrix),u_world:new c.c3(d,t.u_world),u_image:new c.b_(d,t.u_image),u_color_ramp:new c.b_(d,t.u_color_ramp),u_opacity:new c.bq(d,t.u_opacity)}),hillshade:(d,t)=>({u_image:new c.b_(d,t.u_image),u_latrange:new c.c3(d,t.u_latrange),u_exaggeration:new c.bq(d,t.u_exaggeration),u_altitudes:new c.c9(d,t.u_altitudes),u_azimuths:new c.c9(d,t.u_azimuths),u_accent:new c.b$(d,t.u_accent),u_method:new c.b_(d,t.u_method),u_shadows:new c.c8(d,t.u_shadows),u_highlights:new c.c8(d,t.u_highlights)}),hillshadePrepare:(d,t)=>({u_matrix:new c.c0(d,t.u_matrix),u_image:new c.b_(d,t.u_image),u_dimension:new c.c3(d,t.u_dimension),u_zoom:new c.bq(d,t.u_zoom),u_unpack:new c.c1(d,t.u_unpack)}),colorRelief:(d,t)=>({u_image:new c.b_(d,t.u_image),u_unpack:new c.c1(d,t.u_unpack),u_dimension:new c.c3(d,t.u_dimension),u_elevation_stops:new c.b_(d,t.u_elevation_stops),u_color_stops:new c.b_(d,t.u_color_stops),u_color_ramp_size:new c.b_(d,t.u_color_ramp_size),u_opacity:new c.bq(d,t.u_opacity)}),line:(d,t)=>({u_translation:new c.c3(d,t.u_translation),u_ratio:new c.bq(d,t.u_ratio),u_device_pixel_ratio:new c.bq(d,t.u_device_pixel_ratio),u_units_to_pixels:new c.c3(d,t.u_units_to_pixels)}),lineGradient:(d,t)=>({u_translation:new c.c3(d,t.u_translation),u_ratio:new c.bq(d,t.u_ratio),u_device_pixel_ratio:new c.bq(d,t.u_device_pixel_ratio),u_units_to_pixels:new c.c3(d,t.u_units_to_pixels),u_image:new c.b_(d,t.u_image),u_image_height:new c.bq(d,t.u_image_height)}),linePattern:(d,t)=>({u_translation:new c.c3(d,t.u_translation),u_texsize:new c.c3(d,t.u_texsize),u_ratio:new c.bq(d,t.u_ratio),u_device_pixel_ratio:new c.bq(d,t.u_device_pixel_ratio),u_image:new c.b_(d,t.u_image),u_units_to_pixels:new c.c3(d,t.u_units_to_pixels),u_scale:new c.c2(d,t.u_scale),u_fade:new c.bq(d,t.u_fade)}),lineSDF:(d,t)=>({u_translation:new c.c3(d,t.u_translation),u_ratio:new c.bq(d,t.u_ratio),u_device_pixel_ratio:new c.bq(d,t.u_device_pixel_ratio),u_units_to_pixels:new c.c3(d,t.u_units_to_pixels),u_image:new c.b_(d,t.u_image),u_mix:new c.bq(d,t.u_mix),u_tileratio:new c.bq(d,t.u_tileratio),u_crossfade_from:new c.bq(d,t.u_crossfade_from),u_crossfade_to:new c.bq(d,t.u_crossfade_to),u_lineatlas_width:new c.bq(d,t.u_lineatlas_width),u_lineatlas_height:new c.bq(d,t.u_lineatlas_height)}),lineGradientSDF:(d,t)=>({u_translation:new c.c3(d,t.u_translation),u_ratio:new c.bq(d,t.u_ratio),u_device_pixel_ratio:new c.bq(d,t.u_device_pixel_ratio),u_units_to_pixels:new c.c3(d,t.u_units_to_pixels),u_image:new c.b_(d,t.u_image),u_image_height:new c.bq(d,t.u_image_height),u_tileratio:new c.bq(d,t.u_tileratio),u_crossfade_from:new c.bq(d,t.u_crossfade_from),u_crossfade_to:new c.bq(d,t.u_crossfade_to),u_image_dash:new c.b_(d,t.u_image_dash),u_mix:new c.bq(d,t.u_mix),u_lineatlas_width:new c.bq(d,t.u_lineatlas_width),u_lineatlas_height:new c.bq(d,t.u_lineatlas_height)}),raster:(d,t)=>({u_tl_parent:new c.c3(d,t.u_tl_parent),u_scale_parent:new c.bq(d,t.u_scale_parent),u_buffer_scale:new c.bq(d,t.u_buffer_scale),u_fade_t:new c.bq(d,t.u_fade_t),u_opacity:new c.bq(d,t.u_opacity),u_image0:new c.b_(d,t.u_image0),u_image1:new c.b_(d,t.u_image1),u_brightness_low:new c.bq(d,t.u_brightness_low),u_brightness_high:new c.bq(d,t.u_brightness_high),u_saturation_factor:new c.bq(d,t.u_saturation_factor),u_contrast_factor:new c.bq(d,t.u_contrast_factor),u_spin_weights:new c.c2(d,t.u_spin_weights),u_coords_top:new c.c1(d,t.u_coords_top),u_coords_bottom:new c.c1(d,t.u_coords_bottom)}),symbolIcon:(d,t)=>({u_is_size_zoom_constant:new c.b_(d,t.u_is_size_zoom_constant),u_is_size_feature_constant:new c.b_(d,t.u_is_size_feature_constant),u_size_t:new c.bq(d,t.u_size_t),u_size:new c.bq(d,t.u_size),u_camera_to_center_distance:new c.bq(d,t.u_camera_to_center_distance),u_pitch:new c.bq(d,t.u_pitch),u_rotate_symbol:new c.b_(d,t.u_rotate_symbol),u_aspect_ratio:new c.bq(d,t.u_aspect_ratio),u_fade_change:new c.bq(d,t.u_fade_change),u_label_plane_matrix:new c.c0(d,t.u_label_plane_matrix),u_coord_matrix:new c.c0(d,t.u_coord_matrix),u_is_text:new c.b_(d,t.u_is_text),u_pitch_with_map:new c.b_(d,t.u_pitch_with_map),u_is_along_line:new c.b_(d,t.u_is_along_line),u_is_variable_anchor:new c.b_(d,t.u_is_variable_anchor),u_texsize:new c.c3(d,t.u_texsize),u_texture:new c.b_(d,t.u_texture),u_translation:new c.c3(d,t.u_translation),u_pitched_scale:new c.bq(d,t.u_pitched_scale)}),symbolSDF:(d,t)=>({u_is_size_zoom_constant:new c.b_(d,t.u_is_size_zoom_constant),u_is_size_feature_constant:new c.b_(d,t.u_is_size_feature_constant),u_size_t:new c.bq(d,t.u_size_t),u_size:new c.bq(d,t.u_size),u_camera_to_center_distance:new c.bq(d,t.u_camera_to_center_distance),u_pitch:new c.bq(d,t.u_pitch),u_rotate_symbol:new c.b_(d,t.u_rotate_symbol),u_aspect_ratio:new c.bq(d,t.u_aspect_ratio),u_fade_change:new c.bq(d,t.u_fade_change),u_label_plane_matrix:new c.c0(d,t.u_label_plane_matrix),u_coord_matrix:new c.c0(d,t.u_coord_matrix),u_is_text:new c.b_(d,t.u_is_text),u_pitch_with_map:new c.b_(d,t.u_pitch_with_map),u_is_along_line:new c.b_(d,t.u_is_along_line),u_is_variable_anchor:new c.b_(d,t.u_is_variable_anchor),u_texsize:new c.c3(d,t.u_texsize),u_texture:new c.b_(d,t.u_texture),u_gamma_scale:new c.bq(d,t.u_gamma_scale),u_device_pixel_ratio:new c.bq(d,t.u_device_pixel_ratio),u_is_halo:new c.b_(d,t.u_is_halo),u_translation:new c.c3(d,t.u_translation),u_pitched_scale:new c.bq(d,t.u_pitched_scale)}),symbolTextAndIcon:(d,t)=>({u_is_size_zoom_constant:new c.b_(d,t.u_is_size_zoom_constant),u_is_size_feature_constant:new c.b_(d,t.u_is_size_feature_constant),u_size_t:new c.bq(d,t.u_size_t),u_size:new c.bq(d,t.u_size),u_camera_to_center_distance:new c.bq(d,t.u_camera_to_center_distance),u_pitch:new c.bq(d,t.u_pitch),u_rotate_symbol:new c.b_(d,t.u_rotate_symbol),u_aspect_ratio:new c.bq(d,t.u_aspect_ratio),u_fade_change:new c.bq(d,t.u_fade_change),u_label_plane_matrix:new c.c0(d,t.u_label_plane_matrix),u_coord_matrix:new c.c0(d,t.u_coord_matrix),u_is_text:new c.b_(d,t.u_is_text),u_pitch_with_map:new c.b_(d,t.u_pitch_with_map),u_is_along_line:new c.b_(d,t.u_is_along_line),u_is_variable_anchor:new c.b_(d,t.u_is_variable_anchor),u_texsize:new c.c3(d,t.u_texsize),u_texsize_icon:new c.c3(d,t.u_texsize_icon),u_texture:new c.b_(d,t.u_texture),u_texture_icon:new c.b_(d,t.u_texture_icon),u_gamma_scale:new c.bq(d,t.u_gamma_scale),u_device_pixel_ratio:new c.bq(d,t.u_device_pixel_ratio),u_is_halo:new c.b_(d,t.u_is_halo),u_translation:new c.c3(d,t.u_translation),u_pitched_scale:new c.bq(d,t.u_pitched_scale)}),background:(d,t)=>({u_opacity:new c.bq(d,t.u_opacity),u_color:new c.b$(d,t.u_color)}),backgroundPattern:(d,t)=>({u_opacity:new c.bq(d,t.u_opacity),u_image:new c.b_(d,t.u_image),u_pattern_tl_a:new c.c3(d,t.u_pattern_tl_a),u_pattern_br_a:new c.c3(d,t.u_pattern_br_a),u_pattern_tl_b:new c.c3(d,t.u_pattern_tl_b),u_pattern_br_b:new c.c3(d,t.u_pattern_br_b),u_texsize:new c.c3(d,t.u_texsize),u_mix:new c.bq(d,t.u_mix),u_pattern_size_a:new c.c3(d,t.u_pattern_size_a),u_pattern_size_b:new c.c3(d,t.u_pattern_size_b),u_scale_a:new c.bq(d,t.u_scale_a),u_scale_b:new c.bq(d,t.u_scale_b),u_pixel_coord_upper:new c.c3(d,t.u_pixel_coord_upper),u_pixel_coord_lower:new c.c3(d,t.u_pixel_coord_lower),u_tile_units_to_pixels:new c.bq(d,t.u_tile_units_to_pixels)}),terrain:(d,t)=>({u_texture:new c.b_(d,t.u_texture),u_ele_delta:new c.bq(d,t.u_ele_delta),u_fog_matrix:new c.c0(d,t.u_fog_matrix),u_fog_color:new c.b$(d,t.u_fog_color),u_fog_ground_blend:new c.bq(d,t.u_fog_ground_blend),u_fog_ground_blend_opacity:new c.bq(d,t.u_fog_ground_blend_opacity),u_horizon_color:new c.b$(d,t.u_horizon_color),u_horizon_fog_blend:new c.bq(d,t.u_horizon_fog_blend),u_is_globe_mode:new c.bq(d,t.u_is_globe_mode)}),terrainDepth:(d,t)=>({u_ele_delta:new c.bq(d,t.u_ele_delta)}),terrainCoords:(d,t)=>({u_texture:new c.b_(d,t.u_texture),u_terrain_coords_id:new c.bq(d,t.u_terrain_coords_id),u_ele_delta:new c.bq(d,t.u_ele_delta)}),projectionErrorMeasurement:(d,t)=>({u_input:new c.bq(d,t.u_input),u_output_expected:new c.bq(d,t.u_output_expected)}),atmosphere:(d,t)=>({u_sun_pos:new c.c2(d,t.u_sun_pos),u_atmosphere_blend:new c.bq(d,t.u_atmosphere_blend),u_globe_position:new c.c2(d,t.u_globe_position),u_globe_radius:new c.bq(d,t.u_globe_radius),u_inv_proj_matrix:new c.c0(d,t.u_inv_proj_matrix)}),sky:(d,t)=>({u_sky_color:new c.b$(d,t.u_sky_color),u_horizon_color:new c.b$(d,t.u_horizon_color),u_horizon:new c.c3(d,t.u_horizon),u_horizon_normal:new c.c3(d,t.u_horizon_normal),u_sky_horizon_blend:new c.bq(d,t.u_sky_horizon_blend),u_sky_blend:new c.bq(d,t.u_sky_blend)})};class zc{constructor(t,n,a){this.context=t;const l=t.gl;this.buffer=l.createBuffer(),this.dynamicDraw=!!a,this.context.unbindVAO(),t.bindElementBuffer.set(this.buffer),l.bufferData(l.ELEMENT_ARRAY_BUFFER,n.arrayBuffer,this.dynamicDraw?l.DYNAMIC_DRAW:l.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 sh={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class kc{constructor(t,n,a,l){this.length=n.length,this.attributes=a,this.itemSize=n.bytesPerElement,this.dynamicDraw=l,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 l=n.attributes[this.attributes[a].name];l!==void 0&&t.enableVertexAttribArray(l)}}setVertexAttribPointers(t,n,a){for(let l=0;l<this.attributes.length;l++){const p=this.attributes[l],m=n.attributes[p.name];m!==void 0&&t.vertexAttribPointer(m,p.components,t[sh[p.type]],!1,this.itemSize,p.offset+this.itemSize*(a||0))}}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}class gt{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 ao extends gt{getDefault(){return c.bp.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 oo extends gt{getDefault(){return 1}set(t){(t!==this.current||this.dirty)&&(this.gl.clearDepth(t),this.current=t,this.dirty=!1)}}class ul extends gt{getDefault(){return 0}set(t){(t!==this.current||this.dirty)&&(this.gl.clearStencil(t),this.current=t,this.dirty=!1)}}class Qn extends gt{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 ca extends gt{getDefault(){return!0}set(t){(t!==this.current||this.dirty)&&(this.gl.depthMask(t),this.current=t,this.dirty=!1)}}class Es extends gt{getDefault(){return 255}set(t){(t!==this.current||this.dirty)&&(this.gl.stencilMask(t),this.current=t,this.dirty=!1)}}class vr extends gt{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 Rc extends gt{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 Lc extends gt{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 hl extends gt{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 es extends gt{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 lo extends gt{getDefault(){return this.gl.LESS}set(t){(t!==this.current||this.dirty)&&(this.gl.depthFunc(t),this.current=t,this.dirty=!1)}}class co extends gt{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 ua extends gt{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 uo extends gt{getDefault(){return c.bp.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 Fc extends gt{getDefault(){return this.gl.FUNC_ADD}set(t){(t!==this.current||this.dirty)&&(this.gl.blendEquation(t),this.current=t,this.dirty=!1)}}class Cs extends gt{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 As extends gt{getDefault(){return this.gl.BACK}set(t){(t!==this.current||this.dirty)&&(this.gl.cullFace(t),this.current=t,this.dirty=!1)}}class Bc extends gt{getDefault(){return this.gl.CCW}set(t){(t!==this.current||this.dirty)&&(this.gl.frontFace(t),this.current=t,this.dirty=!1)}}class dl extends gt{getDefault(){return null}set(t){(t!==this.current||this.dirty)&&(this.gl.useProgram(t),this.current=t,this.dirty=!1)}}class ut extends gt{getDefault(){return this.gl.TEXTURE0}set(t){(t!==this.current||this.dirty)&&(this.gl.activeTexture(t),this.current=t,this.dirty=!1)}}class ho extends gt{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 ah extends gt{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 Oc extends gt{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 ha extends gt{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 oh extends gt{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 lh extends gt{getDefault(){return null}set(t){const n=this.gl;n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,t),this.current=t,this.dirty=!1}}class Vc extends gt{getDefault(){return null}set(t){var n;if(t===this.current&&!this.dirty)return;const a=this.gl;xr(a)?a.bindVertexArray(t):(n=a.getExtension("OES_vertex_array_object"))===null||n===void 0||n.bindVertexArrayOES(t),this.current=t,this.dirty=!1}}class ch extends gt{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 pl extends gt{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 po extends gt{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 ts extends gt{constructor(t,n){super(t),this.context=t,this.parent=n}getDefault(){return null}}class fo extends ts{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 fl extends ts{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 jc extends ts{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_STENCIL_ATTACHMENT,n.RENDERBUFFER,t),this.current=t,this.dirty=!1}}const da="Framebuffer is not complete";class mo{constructor(t,n,a,l,p){this.context=t,this.width=n,this.height=a;const m=t.gl,_=this.framebuffer=m.createFramebuffer();if(this.colorAttachment=new fo(t,_),l)this.depthAttachment=p?new jc(t,_):new fl(t,_);else if(p)throw new Error("Stencil cannot be set without depth");if(m.checkFramebufferStatus(m.FRAMEBUFFER)!==m.FRAMEBUFFER_COMPLETE)throw new Error(da)}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 pa{constructor(t){var n,a;if(this.gl=t,this.clearColor=new ao(this),this.clearDepth=new oo(this),this.clearStencil=new ul(this),this.colorMask=new Qn(this),this.depthMask=new ca(this),this.stencilMask=new Es(this),this.stencilFunc=new vr(this),this.stencilOp=new Rc(this),this.stencilTest=new Lc(this),this.depthRange=new hl(this),this.depthTest=new es(this),this.depthFunc=new lo(this),this.blend=new co(this),this.blendFunc=new ua(this),this.blendColor=new uo(this),this.blendEquation=new Fc(this),this.cullFace=new Cs(this),this.cullFaceSide=new As(this),this.frontFace=new Bc(this),this.program=new dl(this),this.activeTexture=new ut(this),this.viewport=new ho(this),this.bindFramebuffer=new ah(this),this.bindRenderbuffer=new Oc(this),this.bindTexture=new ha(this),this.bindVertexBuffer=new oh(this),this.bindElementBuffer=new lh(this),this.bindVertexArray=new Vc(this),this.pixelStoreUnpack=new ch(this),this.pixelStoreUnpackPremultiplyAlpha=new pl(this),this.pixelStoreUnpackFlipY=new po(this),this.extTextureFilterAnisotropic=t.getExtension("EXT_texture_filter_anisotropic")||t.getExtension("MOZ_EXT_texture_filter_anisotropic")||t.getExtension("WEBKIT_EXT_texture_filter_anisotropic"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=t.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.maxTextureSize=t.getParameter(t.MAX_TEXTURE_SIZE),xr(t)){this.HALF_FLOAT=t.HALF_FLOAT;const l=t.getExtension("EXT_color_buffer_half_float");this.RGBA16F=(n=t.RGBA16F)!==null&&n!==void 0?n:l==null?void 0:l.RGBA16F_EXT,this.RGB16F=(a=t.RGB16F)!==null&&a!==void 0?a:l==null?void 0:l.RGB16F_EXT,t.getExtension("EXT_color_buffer_float")}else{t.getExtension("EXT_color_buffer_half_float"),t.getExtension("OES_texture_half_float_linear");const l=t.getExtension("OES_texture_half_float");this.HALF_FLOAT=l==null?void 0:l.HALF_FLOAT_OES}}setDefault(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault()}setDirty(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.bindVertexArray.dirty=!0,this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0}createIndexBuffer(t,n){return new zc(this,t,n)}createVertexBuffer(t,n,a){return new kc(this,t,n,a)}createRenderbuffer(t,n,a){const l=this.gl,p=l.createRenderbuffer();return this.bindRenderbuffer.set(p),l.renderbufferStorage(l.RENDERBUFFER,t,n,a),this.bindRenderbuffer.set(null),p}createFramebuffer(t,n,a,l){return new mo(this,t,n,a,l)}clear({color:t,depth:n,stencil:a}){const l=this.gl;let p=0;t&&(p|=l.COLOR_BUFFER_BIT,this.clearColor.set(t),this.colorMask.set([!0,!0,!0,!0])),n!==void 0&&(p|=l.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(n),this.depthMask.set(!0)),a!==void 0&&(p|=l.STENCIL_BUFFER_BIT,this.clearStencil.set(a),this.stencilMask.set(255)),l.clear(p)}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){c.bR(t.blendFunction,St.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(t.blendFunction),this.blendColor.set(t.blendColor)),this.colorMask.set(t.mask)}createVertexArray(){var t;return xr(this.gl)?this.gl.createVertexArray():(t=this.gl.getExtension("OES_vertex_array_object"))===null||t===void 0?void 0:t.createVertexArrayOES()}deleteVertexArray(t){var n;return xr(this.gl)?this.gl.deleteVertexArray(t):(n=this.gl.getExtension("OES_vertex_array_object"))===null||n===void 0?void 0:n.deleteVertexArrayOES(t)}unbindVAO(){this.bindVertexArray.set(null)}}let hn;function go(d,t,n,a,l){const p=d.context,m=d.transform,_=p.gl,x=d.useProgram("collisionBox"),w=[];let T=0,I=0;for(let U=0;U<a.length;U++){const $=a[U],K=t.getTile($).getBucket(n);if(!K)continue;const Z=l?K.textCollisionBox:K.iconCollisionBox,J=K.collisionCircleArray;J.length>0&&(w.push({circleArray:J,circleOffset:I,coord:$}),T+=J.length/4,I=T),Z&&x.draw(p,_.LINES,at.disabled,mt.disabled,d.colorModeForRenderPass(),ft.disabled,Sc(d.transform),d.style.map.terrain&&d.style.map.terrain.getTerrainData($),m.getProjectionData({overscaledTileID:$,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),n.id,Z.layoutVertexBuffer,Z.indexBuffer,Z.segments,null,d.transform.zoom,null,null,Z.collisionVertexBuffer)}if(!l||!w.length)return;const M=d.useProgram("collisionCircle"),z=new c.ca;z.resize(4*T),z._trim();let F=0;for(const U of w)for(let $=0;$<U.circleArray.length/4;$++){const K=4*$,Z=U.circleArray[K+0],J=U.circleArray[K+1],te=U.circleArray[K+2],X=U.circleArray[K+3];z.emplace(F++,Z,J,te,X,0),z.emplace(F++,Z,J,te,X,1),z.emplace(F++,Z,J,te,X,2),z.emplace(F++,Z,J,te,X,3)}(!hn||hn.length<2*T)&&(hn=function(U){const $=2*U,K=new c.cc;K.resize($),K._trim();for(let Z=0;Z<$;Z++){const J=6*Z;K.uint16[J+0]=4*Z+0,K.uint16[J+1]=4*Z+1,K.uint16[J+2]=4*Z+2,K.uint16[J+3]=4*Z+2,K.uint16[J+4]=4*Z+3,K.uint16[J+5]=4*Z+0}return K}(T));const N=p.createIndexBuffer(hn,!0),G=p.createVertexBuffer(z,c.cb.members,!0);for(const U of w){const $=Pc(d.transform);M.draw(p,_.TRIANGLES,at.disabled,mt.disabled,d.colorModeForRenderPass(),ft.disabled,$,d.style.map.terrain&&d.style.map.terrain.getTerrainData(U.coord),null,n.id,G,N,c.aX.simpleSegment(0,2*U.circleOffset,U.circleArray.length,U.circleArray.length/2),null,d.transform.zoom,null,null,null)}G.destroy(),N.destroy()}const uh=c.ar(new Float32Array(16));function fa(d,t,n,a,l,p){const{horizontalAlign:m,verticalAlign:_}=c.aS(d);return new c.P((-(m-.5)*t/l+a[0])*p,(-(_-.5)*n/l+a[1])*p)}function hh(d,t,n,a,l,p){const m=t.tileAnchorPoint.add(new c.P(t.translation[0],t.translation[1]));if(t.pitchWithMap){let _=a.mult(p);n||(_=_.rotate(-l));const x=m.add(_);return gs(x.x,x.y,t.pitchedLabelPlaneMatrix,t.getElevation).point}if(n){const _=Zn(t.tileAnchorPoint.x+1,t.tileAnchorPoint.y,t).point.sub(d),x=Math.atan(_.y/_.x)+(_.x<0?Math.PI:0);return d.add(a.rotate(x))}return d.add(a)}function Nc(d,t,n,a,l,p,m,_,x,w,T,I){const M=d.text.placedSymbolArray,z=d.text.dynamicLayoutVertexArray,F=d.icon.dynamicLayoutVertexArray,N={};z.clear();for(let G=0;G<M.length;G++){const U=M.get(G),$=U.hidden||!U.crossTileID||d.allowVerticalPlacement&&!U.placedOrientation?null:a[U.crossTileID];if($){const K=new c.P(U.anchorX,U.anchorY),Z={getElevation:I,width:l.width,height:l.height,pitchedLabelPlaneMatrix:p,pitchWithMap:n,transform:l,tileAnchorPoint:K,translation:w,unwrappedTileID:T},J=n?Ga(K.x,K.y,Z):Zn(K.x,K.y,Z),te=_s(l.cameraToCenterDistance,J.signedDistanceFromCamera);let X=c.aA(d.textSizeData,_,U)*te/c.aM;n&&(X*=d.tilePixelRatio/m);const{width:ae,height:_e,anchor:fe,textOffset:pe,textBoxScale:ge}=$,De=fa(fe,ae,_e,pe,ge,X),ze=l.getPitchedTextCorrection(K.x+w[0],K.y+w[1],T),ve=hh(J.point,Z,t,De,-l.bearingInRadians,ze),Ve=d.allowVerticalPlacement&&U.placedOrientation===c.az.vertical?Math.PI/2:0;for(let nt=0;nt<U.numGlyphs;nt++)c.aG(z,ve,Ve);x&&U.associatedIconIndex>=0&&(N[U.associatedIconIndex]={shiftedAnchor:ve,angle:Ve})}else $n(U.numGlyphs,z)}if(x){F.clear();const G=d.icon.placedSymbolArray;for(let U=0;U<G.length;U++){const $=G.get(U);if($.hidden)$n($.numGlyphs,F);else{const K=N[U];if(K)for(let Z=0;Z<$.numGlyphs;Z++)c.aG(F,K.shiftedAnchor,K.angle);else $n($.numGlyphs,F)}}d.icon.dynamicLayoutVertexBuffer.updateData(F)}d.text.dynamicLayoutVertexBuffer.updateData(z)}function _o(d,t,n){return n.iconsInText&&t?"symbolTextAndIcon":d?"symbolSDF":"symbolIcon"}function yo(d,t,n,a,l,p,m,_,x,w,T,I,M){const z=d.context,F=z.gl,N=d.transform,G=_==="map",U=x==="map",$=_!=="viewport"&&n.layout.get("symbol-placement")!=="point",K=G&&!U&&!$,Z=!n.layout.get("symbol-sort-key").isConstant();let J=!1;const te=d.getDepthModeForSublayer(0,at.ReadOnly),X=n._unevaluatedLayout.hasValue("text-variable-anchor")||n._unevaluatedLayout.hasValue("text-variable-anchor-offset"),ae=[],_e=N.getCircleRadiusCorrection();for(const fe of a){const pe=t.getTile(fe),ge=pe.getBucket(n);if(!ge)continue;const De=l?ge.text:ge.icon;if(!De||!De.segments.get().length||!De.hasVisibleVertices)continue;const ze=De.programConfigurations.get(n.id),ve=l||ge.sdfIcons,Ve=l?ge.textSizeData:ge.iconSizeData,nt=U||N.pitch!==0,yt=d.useProgram(_o(ve,l,ge),ze),Et=c.ay(Ve,N.zoom),Mt=d.style.map.terrain&&d.style.map.terrain.getTerrainData(fe);let Rt,xt,ni,Lt,vi=[0,0],qt=null;if(l)xt=pe.glyphAtlasTexture,ni=F.LINEAR,Rt=pe.glyphAtlasTexture.size,ge.iconsInText&&(vi=pe.imageAtlasTexture.size,qt=pe.imageAtlasTexture,Lt=nt||d.options.rotating||d.options.zooming||Ve.kind==="composite"||Ve.kind==="camera"?F.LINEAR:F.NEAREST);else{const wt=n.layout.get("icon-size").constantOr(0)!==1||ge.iconsNeedLinear;xt=pe.imageAtlasTexture,ni=ve||d.options.rotating||d.options.zooming||wt||nt?F.LINEAR:F.NEAREST,Rt=pe.imageAtlasTexture.size}const Zt=c.aN(pe,1,d.transform.zoom),Oi=ms(G,d.transform,Zt),gn=c.N();c.aB(gn,Oi);const Wr=qn(U,G,d.transform,Zt),Vi=c.aO(N,pe,p,m),_n=N.getProjectionData({overscaledTileID:fe,applyGlobeMatrix:!M,applyTerrainMatrix:!0}),Da=X&&ge.hasTextData(),za=n.layout.get("icon-text-fit")!=="none"&&Da&&ge.hasIconData();if($){const wt=d.style.map.terrain?(cr,ui)=>d.style.map.terrain.getElevation(fe,cr,ui):null,Ft=n.layout.get("text-rotation-alignment")==="map";$s(ge,d,l,Oi,gn,U,w,Ft,fe.toUnwrapped(),N.width,N.height,Vi,wt)}const Rs=l&&X||za,Wi=$||Rs?uh:U?Oi:d.transform.clipSpaceToPixelsMatrix,wr=ve&&n.paint.get(l?"text-halo-width":"icon-halo-width").constantOr(1)!==0;let or;or=ve?ge.iconsInText?cl(Ve.kind,Et,K,U,$,Rs,d,Wi,Wr,Vi,Rt,vi,_e):kn(Ve.kind,Et,K,U,$,Rs,d,Wi,Wr,Vi,l,Rt,0,_e):so(Ve.kind,Et,K,U,$,Rs,d,Wi,Wr,Vi,l,Rt,_e);const lr={program:yt,buffers:De,uniformValues:or,projectionData:_n,atlasTexture:xt,atlasTextureIcon:qt,atlasInterpolation:ni,atlasInterpolationIcon:Lt,isSDF:ve,hasHalo:wr};if(Z&&ge.canOverlap){J=!0;const wt=De.segments.get();for(const Ft of wt)ae.push({segments:new c.aX([Ft]),sortKey:Ft.sortKey,state:lr,terrainData:Mt})}else ae.push({segments:De.segments,sortKey:0,state:lr,terrainData:Mt})}J&&ae.sort((fe,pe)=>fe.sortKey-pe.sortKey);for(const fe of ae){const pe=fe.state;if(z.activeTexture.set(F.TEXTURE0),pe.atlasTexture.bind(pe.atlasInterpolation,F.CLAMP_TO_EDGE),pe.atlasTextureIcon&&(z.activeTexture.set(F.TEXTURE1),pe.atlasTextureIcon&&pe.atlasTextureIcon.bind(pe.atlasInterpolationIcon,F.CLAMP_TO_EDGE)),pe.isSDF){const ge=pe.uniformValues;pe.hasHalo&&(ge.u_is_halo=1,ml(pe.buffers,fe.segments,n,d,pe.program,te,T,I,ge,pe.projectionData,fe.terrainData)),ge.u_is_halo=0}ml(pe.buffers,fe.segments,n,d,pe.program,te,T,I,pe.uniformValues,pe.projectionData,fe.terrainData)}}function ml(d,t,n,a,l,p,m,_,x,w,T){const I=a.context;l.draw(I,I.gl.TRIANGLES,p,m,_,ft.backCCW,x,T,w,n.id,d.layoutVertexBuffer,d.indexBuffer,t,n.paint,a.transform.zoom,d.programConfigurations.get(n.id),d.dynamicLayoutVertexBuffer,d.opacityVertexBuffer)}function Uc(d,t,n,a,l){const p=d.context,m=p.gl,_=mt.disabled,x=new St([m.ONE,m.ONE],c.bp.transparent,[!0,!0,!0,!0]),w=t.getBucket(n);if(!w)return;const T=a.key;let I=n.heatmapFbos.get(T);I||(I=vo(p,t.tileSize,t.tileSize),n.heatmapFbos.set(T,I)),p.bindFramebuffer.set(I.framebuffer),p.viewport.set([0,0,t.tileSize,t.tileSize]),p.clear({color:c.bp.transparent});const M=w.programConfigurations.get(n.id),z=d.useProgram("heatmap",M,!l),F=d.transform.getProjectionData({overscaledTileID:t.tileID,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),N=d.style.map.terrain.getTerrainData(a);z.draw(p,m.TRIANGLES,at.disabled,_,x,ft.disabled,Mc(t,d.transform.zoom,n.paint.get("heatmap-intensity"),1),N,F,n.id,w.layoutVertexBuffer,w.indexBuffer,w.segments,n.paint,d.transform.zoom,M)}function xo(d,t,n,a,l){const p=d.context,m=p.gl,_=d.transform;p.setColorMode(d.colorModeForRenderPass());const x=Gc(p,t),w=n.key,T=t.heatmapFbos.get(w);if(!T)return;p.activeTexture.set(m.TEXTURE0),m.bindTexture(m.TEXTURE_2D,T.colorAttachment.get()),p.activeTexture.set(m.TEXTURE1),x.bind(m.LINEAR,m.CLAMP_TO_EDGE);const I=_.getProjectionData({overscaledTileID:n,applyTerrainMatrix:l,applyGlobeMatrix:!a});d.useProgram("heatmapTexture").draw(p,m.TRIANGLES,at.disabled,mt.disabled,d.colorModeForRenderPass(),ft.disabled,aa(d,t,0,1),null,I,t.id,d.rasterBoundsBuffer,d.quadTriangleIndexBuffer,d.rasterBoundsSegments,t.paint,_.zoom),T.destroy(),t.heatmapFbos.delete(w)}function vo(d,t,n){var a,l;const p=d.gl,m=p.createTexture();p.bindTexture(p.TEXTURE_2D,m),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_WRAP_S,p.CLAMP_TO_EDGE),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_WRAP_T,p.CLAMP_TO_EDGE),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_MIN_FILTER,p.LINEAR),p.texParameteri(p.TEXTURE_2D,p.TEXTURE_MAG_FILTER,p.LINEAR);const _=(a=d.HALF_FLOAT)!==null&&a!==void 0?a:p.UNSIGNED_BYTE,x=(l=d.RGBA16F)!==null&&l!==void 0?l:p.RGBA;p.texImage2D(p.TEXTURE_2D,0,x,t,n,0,p.RGBA,_,null);const w=d.createFramebuffer(t,n,!1,!1);return w.colorAttachment.set(m),w}function Gc(d,t){return t.colorRampTexture||(t.colorRampTexture=new c.T(d,t.colorRamp,d.gl.RGBA)),t.colorRampTexture}function gl(d,t,n,a,l,p,m,_){let x=256;if(l.stepInterpolant){const w=t.getSource().maxzoom,T=m.canonical.z===w?Math.ceil(1<<d.transform.maxZoom-m.canonical.z):1;x=c.an(c.ce(p.maxLineLength/c.a5*1024*T),256,n.maxTextureSize)}return _.gradient=c.cf({expression:l.gradientExpression(),evaluationKey:"lineProgress",resolution:x,image:_.gradient||void 0,clips:p.lineClipsArray}),_.texture?_.texture.update(_.gradient):_.texture=new c.T(n,_.gradient,a.RGBA),_.version=l.gradientVersion,_.texture}function Yt(d,t,n,a,l){d.activeTexture.set(t.TEXTURE0),n.imageAtlasTexture.bind(t.LINEAR,t.CLAMP_TO_EDGE),a.updatePaintBuffers(l)}function is(d,t,n,a,l,p){(l||d.lineAtlas.dirty)&&(t.activeTexture.set(n.TEXTURE0),d.lineAtlas.bind(t)),a.updatePaintBuffers(p)}function sr(d,t,n,a,l,p,m){const _=p.gradients[l.id];let x=_.texture;l.gradientVersion!==_.version&&(x=gl(d,t,n,a,l,p,m,_)),n.activeTexture.set(a.TEXTURE0),x.bind(l.stepInterpolant?a.NEAREST:a.LINEAR,a.CLAMP_TO_EDGE)}function _l(d,t,n,a,l,p,m,_,x){const w=p.gradients[l.id];let T=w.texture;l.gradientVersion!==w.version&&(T=gl(d,t,n,a,l,p,m,w)),n.activeTexture.set(a.TEXTURE0),T.bind(l.stepInterpolant?a.NEAREST:a.LINEAR,a.CLAMP_TO_EDGE),n.activeTexture.set(a.TEXTURE1),d.lineAtlas.bind(n),_.updatePaintBuffers(x)}function ma(d,t,n,a,l){if(!n||!a||!a.imageAtlas)return;const p=a.imageAtlas.patternPositions;let m=p[n.to.toString()],_=p[n.from.toString()];if(!m&&_&&(m=_),!_&&m&&(_=m),!m||!_){const x=l.getPaintProperty(t);m=p[x],_=p[x]}m&&_&&d.setConstantPatternPositions(m,_)}function yl(d,t,n,a,l,p,m,_){const x=d.context.gl,w="fill-pattern",T=n.paint.get(w),I=T&&T.constantOr(1),M=n.getCrossfadeParameters();let z,F,N,G,U;const $=d.transform,K=n.paint.get("fill-translate"),Z=n.paint.get("fill-translate-anchor");m?(F=I&&!n.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",z=x.LINES):(F=I?"fillPattern":"fill",z=x.TRIANGLES);const J=T.constantOr(null);for(const te of a){const X=t.getTile(te);if(I&&!X.patternsLoaded())continue;const ae=X.getBucket(n);if(!ae)continue;const _e=ae.programConfigurations.get(n.id),fe=d.useProgram(F,_e),pe=d.style.map.terrain&&d.style.map.terrain.getTerrainData(te);I&&(d.context.activeTexture.set(x.TEXTURE0),X.imageAtlasTexture.bind(x.LINEAR,x.CLAMP_TO_EDGE),_e.updatePaintBuffers(M)),ma(_e,w,J,X,n);const ge=$.getProjectionData({overscaledTileID:te,applyGlobeMatrix:!_,applyTerrainMatrix:!0}),De=c.aO($,X,K,Z);if(m){G=ae.indexBuffer2,U=ae.segments2;const ve=[x.drawingBufferWidth,x.drawingBufferHeight];N=F==="fillOutlinePattern"&&I?Tc(d,M,X,ve,De):wc(ve,De)}else G=ae.indexBuffer,U=ae.segments,N=I?al(d,M,X,De):{u_fill_translate:De};const ze=d.stencilModeForClipping(te);fe.draw(d.context,z,l,ze,p,ft.backCCW,N,pe,ge,n.id,ae.layoutVertexBuffer,G,U,n.paint,d.transform.zoom,_e)}}function Rn(d,t,n,a,l,p,m,_){const x=d.context,w=x.gl,T="fill-extrusion-pattern",I=n.paint.get(T),M=I.constantOr(1),z=n.getCrossfadeParameters(),F=n.paint.get("fill-extrusion-opacity"),N=I.constantOr(null),G=d.transform;for(const U of a){const $=t.getTile(U),K=$.getBucket(n);if(!K)continue;const Z=d.style.map.terrain&&d.style.map.terrain.getTerrainData(U),J=K.programConfigurations.get(n.id),te=d.useProgram(M?"fillExtrusionPattern":"fillExtrusion",J);M&&(d.context.activeTexture.set(w.TEXTURE0),$.imageAtlasTexture.bind(w.LINEAR,w.CLAMP_TO_EDGE),J.updatePaintBuffers(z));const X=G.getProjectionData({overscaledTileID:U,applyGlobeMatrix:!_,applyTerrainMatrix:!0});ma(J,T,N,$,n);const ae=c.aO(G,$,n.paint.get("fill-extrusion-translate"),n.paint.get("fill-extrusion-translate-anchor")),_e=n.paint.get("fill-extrusion-vertical-gradient"),fe=M?bc(d,_e,F,ae,U,z,$):io(d,_e,F,ae);te.draw(x,x.gl.TRIANGLES,l,p,m,ft.backCCW,fe,Z,X,n.id,K.layoutVertexBuffer,K.indexBuffer,K.segments,n.paint,d.transform.zoom,J,d.style.map.terrain&&K.centroidVertexBuffer)}}function ga(d,t,n,a,l,p,m,_,x){var w;const T=d.style.projection,I=d.context,M=d.transform,z=I.gl,F=[`#define NUM_ILLUMINATION_SOURCES ${n.paint.get("hillshade-highlight-color").values.length}`],N=d.useProgram("hillshade",null,!1,F),G=!d.options.moving;for(const U of a){const $=t.getTile(U),K=$.fbo;if(!K)continue;const Z=T.getMeshFromTileID(I,U.canonical,_,!0,"raster"),J=(w=d.style.map.terrain)===null||w===void 0?void 0:w.getTerrainData(U);I.activeTexture.set(z.TEXTURE0),z.bindTexture(z.TEXTURE_2D,K.colorAttachment.get());const te=M.getProjectionData({overscaledTileID:U,aligned:G,applyGlobeMatrix:!x,applyTerrainMatrix:!0});N.draw(I,z.TRIANGLES,p,l[U.overscaledZ],m,ft.backCCW,eh(d,$,n),J,te,n.id,Z.vertexBuffer,Z.indexBuffer,Z.segments)}}function rs(d,t,n,a,l,p,m,_,x){var w;const T=d.style.projection,I=d.context,M=d.transform,z=I.gl,F=d.useProgram("colorRelief"),N=!d.options.moving;let G=!0,U=0;for(const $ of a){const K=t.getTile($),Z=K.dem;if(G){const fe=z.getParameter(z.MAX_TEXTURE_SIZE),{elevationTexture:pe,colorTexture:ge}=n.getColorRampTextures(I,fe,Z.getUnpackVector());I.activeTexture.set(z.TEXTURE1),pe.bind(z.NEAREST,z.CLAMP_TO_EDGE),I.activeTexture.set(z.TEXTURE4),ge.bind(z.LINEAR,z.CLAMP_TO_EDGE),G=!1,U=pe.size[0]}if(!Z||!Z.data)continue;const J=Z.stride,te=Z.getPixels();if(I.activeTexture.set(z.TEXTURE0),I.pixelStoreUnpackPremultiplyAlpha.set(!1),K.demTexture=K.demTexture||d.getTileTexture(J),K.demTexture){const fe=K.demTexture;fe.update(te,{premultiply:!1}),fe.bind(z.LINEAR,z.CLAMP_TO_EDGE)}else K.demTexture=new c.T(I,te,z.RGBA,{premultiply:!1}),K.demTexture.bind(z.LINEAR,z.CLAMP_TO_EDGE);const X=T.getMeshFromTileID(I,$.canonical,_,!0,"raster"),ae=(w=d.style.map.terrain)===null||w===void 0?void 0:w.getTerrainData($),_e=M.getProjectionData({overscaledTileID:$,aligned:N,applyGlobeMatrix:!x,applyTerrainMatrix:!0});F.draw(I,z.TRIANGLES,p,l[$.overscaledZ],m,ft.backCCW,Ec(n,K.dem,U),ae,_e,n.id,X.vertexBuffer,X.indexBuffer,X.segments)}}const _a=[new c.P(0,0),new c.P(c.a5,0),new c.P(c.a5,c.a5),new c.P(0,c.a5)];function ya(d,t,n,a,l,p,m,_,x=!1,w=!1){const T=a[a.length-1].overscaledZ,I=d.context,M=I.gl,z=d.useProgram("raster"),F=d.transform,N=d.style.projection,G=d.colorModeForRenderPass(),U=!d.options.moving,$=n.paint.get("raster-opacity"),K=n.paint.get("raster-resampling"),Z=n.paint.get("raster-fade-duration"),J=!!d.style.map.terrain;for(const te of a){const X=d.getDepthModeForSublayer(te.overscaledZ-T,$===1?at.ReadWrite:at.ReadOnly,M.LESS),ae=t.getTile(te),_e=K==="nearest"?M.NEAREST:M.LINEAR;I.activeTexture.set(M.TEXTURE0),ae.texture.bind(_e,M.CLAMP_TO_EDGE,M.LINEAR_MIPMAP_NEAREST),I.activeTexture.set(M.TEXTURE1);const{parentTile:fe,parentScaleBy:pe,parentTopLeft:ge,fadeValues:De}=qc(ae,t,Z,J);ae.fadeOpacity=De.tileOpacity,fe?(fe.fadeOpacity=De.parentTileOpacity,fe.texture.bind(_e,M.CLAMP_TO_EDGE,M.LINEAR_MIPMAP_NEAREST)):ae.texture.bind(_e,M.CLAMP_TO_EDGE,M.LINEAR_MIPMAP_NEAREST),ae.texture.useMipmap&&I.extTextureFilterAnisotropic&&d.transform.pitch>d.options.anisotropicFilterPitch&&M.texParameterf(M.TEXTURE_2D,I.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,I.extTextureFilterAnisotropicMax);const ze=d.style.map.terrain&&d.style.map.terrain.getTerrainData(te),ve=F.getProjectionData({overscaledTileID:te,aligned:U,applyGlobeMatrix:!w,applyTerrainMatrix:!0}),Ve=ll(ge,pe,De.fadeMix,n,_),nt=N.getMeshFromTileID(I,te.canonical,p,m,"raster");z.draw(I,M.TRIANGLES,X,l?l[te.overscaledZ]:mt.disabled,G,x?ft.frontCCW:ft.backCCW,Ve,ze,ve,n.id,nt.vertexBuffer,nt.indexBuffer,nt.segments)}}function qc(d,t,n,a){const l={parentTile:null,parentScaleBy:1,parentTopLeft:[0,0],fadeValues:{tileOpacity:1,parentTileOpacity:1,fadeMix:{opacity:1,mix:0}}};if(n===0||a)return l;if(d.fadingParentID){const p=t.getLoadedTile(d.fadingParentID);if(!p)return l;const m=Math.pow(2,p.tileID.overscaledZ-d.tileID.overscaledZ),_=[d.tileID.canonical.x*m%1,d.tileID.canonical.y*m%1],x=function(w,T,I){const M=Re(),z=(M-T.timeAdded)/I,F=w.fadingDirection===ee.Incoming,N=c.an((M-w.timeAdded)/I,0,1),G=c.an(1-z,0,1),U=F?N:G;return{tileOpacity:U,parentTileOpacity:F?G:N,fadeMix:{opacity:1,mix:1-U}}}(d,p,n);return{parentTile:p,parentScaleBy:m,parentTopLeft:_,fadeValues:x}}if(d.selfFading){const p=function(m,_){const x=(Re()-m.timeAdded)/_,w=c.an(x,0,1);return{tileOpacity:w,fadeMix:{opacity:w,mix:0}}}(d,n);return{parentTile:null,parentScaleBy:1,parentTopLeft:[0,0],fadeValues:p}}return l}const Zc=new c.bp(1,0,0,1),$c=new c.bp(0,1,0,1),Wc=new c.bp(0,0,1,1),Ln=new c.bp(1,0,1,1),Hc=new c.bp(0,1,1,1);function xl(d,t,n,a){xa(d,0,t+n/2,d.transform.width,n,a)}function vl(d,t,n,a){xa(d,t-n/2,0,n,d.transform.height,a)}function xa(d,t,n,a,l,p){const m=d.context,_=m.gl;_.enable(_.SCISSOR_TEST),_.scissor(t*d.pixelRatio,n*d.pixelRatio,a*d.pixelRatio,l*d.pixelRatio),m.clear({color:p}),_.disable(_.SCISSOR_TEST)}function Xc(d,t,n){const a=d.context,l=a.gl,p=d.useProgram("debug"),m=at.disabled,_=mt.disabled,x=d.colorModeForRenderPass(),w="$debug",T=d.style.map.terrain&&d.style.map.terrain.getTerrainData(n);a.activeTexture.set(l.TEXTURE0);const I=t.getTileByID(n.key).latestRawTileData,M=Math.floor((I&&I.byteLength||0)/1024),z=t.getTile(n).tileSize,F=512/Math.min(z,512)*(n.overscaledZ/d.transform.zoom)*.5;let N=n.canonical.toString();n.overscaledZ!==n.canonical.z&&(N+=` => ${n.overscaledZ}`),function(U,$){U.initDebugOverlayCanvas();const K=U.debugOverlayCanvas,Z=U.context.gl,J=U.debugOverlayCanvas.getContext("2d");J.clearRect(0,0,K.width,K.height),J.shadowColor="white",J.shadowBlur=2,J.lineWidth=1.5,J.strokeStyle="white",J.textBaseline="top",J.font="bold 36px Open Sans, sans-serif",J.fillText($,5,5),J.strokeText($,5,5),U.debugOverlayTexture.update(K),U.debugOverlayTexture.bind(Z.LINEAR,Z.CLAMP_TO_EDGE)}(d,`${N} ${M}kB`);const G=d.transform.getProjectionData({overscaledTileID:n,applyGlobeMatrix:!0,applyTerrainMatrix:!0});p.draw(a,l.TRIANGLES,m,_,St.alphaBlended,ft.disabled,Is(c.bp.transparent,F),null,G,w,d.debugBuffer,d.quadTriangleIndexBuffer,d.debugSegments),p.draw(a,l.LINE_STRIP,m,_,x,ft.disabled,Is(c.bp.red),T,G,w,d.debugBuffer,d.tileBorderIndexBuffer,d.debugSegments)}function bl(d,t,n,a){const{isRenderingGlobe:l}=a,p=d.context,m=p.gl,_=d.transform,x=d.colorModeForRenderPass(),w=d.getDepthModeFor3D(),T=d.useProgram("terrain");p.bindFramebuffer.set(null),p.viewport.set([0,0,d.width,d.height]);for(const I of n){const M=t.getTerrainMesh(I.tileID),z=d.renderToTexture.getTexture(I),F=t.getTerrainData(I.tileID);p.activeTexture.set(m.TEXTURE0),m.bindTexture(m.TEXTURE_2D,z.texture);const N=t.getMeshFrameDelta(_.zoom),G=_.calculateFogMatrix(I.tileID.toUnwrapped()),U=Ms(N,G,d.style.sky,_.pitch,l),$=_.getProjectionData({overscaledTileID:I.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0});T.draw(p,m.TRIANGLES,w,mt.disabled,x,ft.backCCW,U,F,$,"terrain",M.vertexBuffer,M.indexBuffer,M.segments)}}function wl(d,t){if(!t.mesh){const n=new c.aW;n.emplaceBack(-1,-1),n.emplaceBack(1,-1),n.emplaceBack(1,1),n.emplaceBack(-1,1);const a=new c.aY;a.emplaceBack(0,1,2),a.emplaceBack(0,2,3),t.mesh=new bs(d.createVertexBuffer(n,ei.members),d.createIndexBuffer(a),c.aX.simpleSegment(0,0,n.length,a.length))}return t.mesh}class Yc{constructor(t,n){this.context=new pa(t),this.transform=n,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:c.ar(new Float64Array(16)),renderTime:0},this.setup(),this.numSublayers=Ae.maxOverzooming+Ae.maxUnderzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Ii}resize(t,n,a){if(this.width=Math.floor(t*a),this.height=Math.floor(n*a),this.pixelRatio=a,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const l of this.style._order)this.style._layers[l].resize()}setup(){const t=this.context,n=new c.aW;n.emplaceBack(0,0),n.emplaceBack(c.a5,0),n.emplaceBack(0,c.a5),n.emplaceBack(c.a5,c.a5),this.tileExtentBuffer=t.createVertexBuffer(n,ei.members),this.tileExtentSegments=c.aX.simpleSegment(0,0,4,2);const a=new c.aW;a.emplaceBack(0,0),a.emplaceBack(c.a5,0),a.emplaceBack(0,c.a5),a.emplaceBack(c.a5,c.a5),this.debugBuffer=t.createVertexBuffer(a,ei.members),this.debugSegments=c.aX.simpleSegment(0,0,4,5);const l=new c.ch;l.emplaceBack(0,0,0,0),l.emplaceBack(c.a5,0,c.a5,0),l.emplaceBack(0,c.a5,0,c.a5),l.emplaceBack(c.a5,c.a5,c.a5,c.a5),this.rasterBoundsBuffer=t.createVertexBuffer(l,to.members),this.rasterBoundsSegments=c.aX.simpleSegment(0,0,4,2);const p=new c.aW;p.emplaceBack(0,0),p.emplaceBack(c.a5,0),p.emplaceBack(0,c.a5),p.emplaceBack(c.a5,c.a5),this.rasterBoundsBufferPosOnly=t.createVertexBuffer(p,ei.members),this.rasterBoundsSegmentsPosOnly=c.aX.simpleSegment(0,0,4,5);const m=new c.aW;m.emplaceBack(0,0),m.emplaceBack(1,0),m.emplaceBack(0,1),m.emplaceBack(1,1),this.viewportBuffer=t.createVertexBuffer(m,ei.members),this.viewportSegments=c.aX.simpleSegment(0,0,4,2);const _=new c.ci;_.emplaceBack(0),_.emplaceBack(1),_.emplaceBack(3),_.emplaceBack(2),_.emplaceBack(0),this.tileBorderIndexBuffer=t.createIndexBuffer(_);const x=new c.aY;x.emplaceBack(1,0,2),x.emplaceBack(1,2,3),this.quadTriangleIndexBuffer=t.createIndexBuffer(x);const w=this.context.gl;this.stencilClearMode=new mt({func:w.ALWAYS,mask:0},0,255,w.ZERO,w.ZERO,w.ZERO),this.tileExtentMesh=new bs(this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}clearStencil(){const t=this.context,n=t.gl;this.nextStencilID=1,this.currentStencilSource=void 0;const a=c.N();c.c7(a,0,this.width,this.height,0,0,1),c.Q(a,a,[n.drawingBufferWidth,n.drawingBufferHeight,0]);const l={mainMatrix:a,tileMercatorCoords:[0,0,1,1],clippingPlane:[0,0,0,0],projectionTransition:0,fallbackMatrix:a};this.useProgram("clippingMask",null,!0).draw(t,n.TRIANGLES,at.disabled,this.stencilClearMode,St.disabled,ft.disabled,null,null,l,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(t,n,a){if(this.currentStencilSource===t.source||!t.isTileClipped()||!n||!n.length)return;this.currentStencilSource=t.source,this.nextStencilID+n.length>256&&this.clearStencil();const l=this.context;l.setColorMode(St.disabled),l.setDepthMode(at.disabled);const p={};for(const m of n)p[m.key]=this.nextStencilID++;this._renderTileMasks(p,n,a,!0),this._renderTileMasks(p,n,a,!1),this._tileClippingMaskIDs=p}_renderTileMasks(t,n,a,l){const p=this.context,m=p.gl,_=this.style.projection,x=this.transform,w=this.useProgram("clippingMask");for(const T of n){const I=t[T.key],M=this.style.map.terrain&&this.style.map.terrain.getTerrainData(T),z=_.getMeshFromTileID(this.context,T.canonical,l,!0,"stencil"),F=x.getProjectionData({overscaledTileID:T,applyGlobeMatrix:!a,applyTerrainMatrix:!0});w.draw(p,m.TRIANGLES,at.disabled,new mt({func:m.ALWAYS,mask:0},I,255,m.KEEP,m.KEEP,m.REPLACE),St.disabled,a?ft.disabled:ft.backCCW,null,M,F,"$clipping",z.vertexBuffer,z.indexBuffer,z.segments)}}_renderTilesDepthBuffer(){const t=this.context,n=t.gl,a=this.style.projection,l=this.transform,p=this.useProgram("depth"),m=this.getDepthModeFor3D(),_=It(l,{tileSize:l.tileSize});for(const x of _){const w=this.style.map.terrain&&this.style.map.terrain.getTerrainData(x),T=a.getMeshFromTileID(this.context,x.canonical,!0,!0,"raster"),I=l.getProjectionData({overscaledTileID:x,applyGlobeMatrix:!0,applyTerrainMatrix:!0});p.draw(t,n.TRIANGLES,m,mt.disabled,St.disabled,ft.backCCW,null,w,I,"$clipping",T.vertexBuffer,T.indexBuffer,T.segments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const t=this.nextStencilID++,n=this.context.gl;return new mt({func:n.NOTEQUAL,mask:255},t,255,n.KEEP,n.KEEP,n.REPLACE)}stencilModeForClipping(t){const n=this.context.gl;return new mt({func:n.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,n.KEEP,n.KEEP,n.REPLACE)}getStencilConfigForOverlapAndUpdateStencilID(t){const n=this.context.gl,a=t.sort((m,_)=>_.overscaledZ-m.overscaledZ),l=a[a.length-1].overscaledZ,p=a[0].overscaledZ-l+1;if(p>1){this.currentStencilSource=void 0,this.nextStencilID+p>256&&this.clearStencil();const m={};for(let _=0;_<p;_++)m[_+l]=new mt({func:n.GEQUAL,mask:255},_+this.nextStencilID,255,n.KEEP,n.KEEP,n.REPLACE);return this.nextStencilID+=p,[m,a]}return[{[l]:mt.disabled},a]}stencilConfigForOverlapTwoPass(t){const n=this.context.gl,a=t.sort((m,_)=>_.overscaledZ-m.overscaledZ),l=a[a.length-1].overscaledZ,p=a[0].overscaledZ-l+1;if(this.clearStencil(),p>1){const m={},_={};for(let x=0;x<p;x++)m[x+l]=new mt({func:n.GREATER,mask:255},p+1+x,255,n.KEEP,n.KEEP,n.REPLACE),_[x+l]=new mt({func:n.GREATER,mask:255},1+x,255,n.KEEP,n.KEEP,n.REPLACE);return this.nextStencilID=2*p+1,[m,_,a]}return this.nextStencilID=3,[{[l]:new mt({func:n.GREATER,mask:255},2,255,n.KEEP,n.KEEP,n.REPLACE)},{[l]:new mt({func:n.GREATER,mask:255},1,255,n.KEEP,n.KEEP,n.REPLACE)},a]}colorModeForRenderPass(){const t=this.context.gl;return this._showOverdrawInspector?new St([t.CONSTANT_COLOR,t.ONE],new c.bp(.125,.125,.125,0),[!0,!0,!0,!0]):this.renderPass==="opaque"?St.unblended:St.alphaBlended}getDepthModeForSublayer(t,n,a){if(!this.opaquePassEnabledForLayer())return at.disabled;const l=1-((1+this.currentLayer)*this.numSublayers+t)*this.depthEpsilon;return new at(a||this.context.gl.LEQUAL,n,[l,l])}getDepthModeFor3D(){return new at(this.context.gl.LEQUAL,at.ReadWrite,this.depthRangeFor3D)}opaquePassEnabledForLayer(){return this.currentLayer<this.opaquePassCutoff}render(t,n){var a,l;this.style=t,this.options=n,this.lineAtlas=t.lineAtlas,this.imageManager=t.imageManager,this.glyphManager=t.glyphManager,this.symbolFadeChange=t.placement.symbolFadeChange(Re()),this.imageManager.beginFrame();const p=this.style._order,m=this.style.tileManagers,_={},x={},w={},T={isRenderingToTexture:!1,isRenderingGlobe:((a=t.projection)===null||a===void 0?void 0:a.transitionState)>0};for(const M in m){const z=m[M];z.used&&z.prepare(this.context),_[M]=z.getVisibleCoordinates(!1),x[M]=_[M].slice().reverse(),w[M]=z.getVisibleCoordinates(!0).reverse()}this.opaquePassCutoff=1/0;for(let M=0;M<p.length;M++)if(this.style._layers[p[M]].is3D()){this.opaquePassCutoff=M;break}this.maybeDrawDepthAndCoords(!1),this.renderToTexture&&(this.renderToTexture.prepareForRender(this.style,this.transform.zoom),this.opaquePassCutoff=0),this.renderPass="offscreen";for(const M of p){const z=this.style._layers[M];if(!z.hasOffscreenPass()||z.isHidden(this.transform.zoom))continue;const F=x[z.source];(z.type==="custom"||F.length)&&this.renderLayer(this,m[z.source],z,F,T)}if((l=this.style.projection)===null||l===void 0||l.updateGPUdependent({context:this.context,useProgram:M=>this.useProgram(M)}),this.context.viewport.set([0,0,this.width,this.height]),this.context.bindFramebuffer.set(null),this.context.clear({color:n.showOverdrawInspector?c.bp.black:c.bp.transparent,depth:1}),this.clearStencil(),this.style.sky&&function(M,z){const F=M.context,N=F.gl,G=((te,X,ae)=>{const _e=Math.cos(X.rollInRadians),fe=Math.sin(X.rollInRadians),pe=xe(X),ge=X.getProjectionData({overscaledTileID:null,applyGlobeMatrix:!0,applyTerrainMatrix:!0}).projectionTransition;return{u_sky_color:te.properties.get("sky-color"),u_horizon_color:te.properties.get("horizon-color"),u_horizon:[(X.width/2-pe*fe)*ae,(X.height/2+pe*_e)*ae],u_horizon_normal:[-fe,_e],u_sky_horizon_blend:te.properties.get("sky-horizon-blend")*X.height/2*ae,u_sky_blend:ge}})(z,M.style.map.transform,M.pixelRatio),U=new at(N.LEQUAL,at.ReadWrite,[0,1]),$=mt.disabled,K=M.colorModeForRenderPass(),Z=M.useProgram("sky"),J=wl(F,z);Z.draw(F,N.TRIANGLES,U,$,K,ft.disabled,G,null,void 0,"sky",J.vertexBuffer,J.indexBuffer,J.segments)}(this,this.style.sky),this._showOverdrawInspector=n.showOverdrawInspector,this.depthRangeFor3D=[0,1-(t._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=p.length-1;this.currentLayer>=0;this.currentLayer--){const M=this.style._layers[p[this.currentLayer]],z=m[M.source],F=_[M.source];this._renderTileClippingMasks(M,F,!1),this.renderLayer(this,z,M,F,T)}this.renderPass="translucent";let I=!1;for(this.currentLayer=0;this.currentLayer<p.length;this.currentLayer++){const M=this.style._layers[p[this.currentLayer]],z=m[M.source];if(this.renderToTexture&&this.renderToTexture.renderLayer(M,T))continue;this.opaquePassEnabledForLayer()||I||(I=!0,T.isRenderingGlobe&&!this.style.map.terrain&&this._renderTilesDepthBuffer());const F=(M.type==="symbol"?w:x)[M.source];this._renderTileClippingMasks(M,_[M.source],!!this.renderToTexture),this.renderLayer(this,z,M,F,T)}if(T.isRenderingGlobe&&function(M,z,F){const N=M.context,G=N.gl,U=M.useProgram("atmosphere"),$=new at(G.LEQUAL,at.ReadOnly,[0,1]),K=M.transform,Z=function(ge,De){const ze=ge.properties.get("position"),ve=[-ze.x,-ze.y,-ze.z],Ve=c.ar(new Float64Array(16));return ge.properties.get("anchor")==="map"&&(c.bg(Ve,Ve,De.rollInRadians),c.bh(Ve,Ve,-De.pitchInRadians),c.bg(Ve,Ve,De.bearingInRadians),c.bh(Ve,Ve,De.center.lat*Math.PI/180),c.bJ(Ve,Ve,-De.center.lng*Math.PI/180)),c.cg(ve,ve,Ve),ve}(F,M.transform),J=K.getProjectionData({overscaledTileID:null,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),te=z.properties.get("atmosphere-blend")*J.projectionTransition;if(te===0)return;const X=ia(K.worldSize,K.center.lat),ae=K.inverseProjectionMatrix,_e=new Float64Array(4);_e[3]=1,c.aH(_e,_e,K.modelViewProjectionMatrix),_e[0]/=_e[3],_e[1]/=_e[3],_e[2]/=_e[3],_e[3]=1,c.aH(_e,_e,ae),_e[0]/=_e[3],_e[1]/=_e[3],_e[2]/=_e[3],_e[3]=1;const fe=((ge,De,ze,ve,Ve)=>({u_sun_pos:ge,u_atmosphere_blend:De,u_globe_position:ze,u_globe_radius:ve,u_inv_proj_matrix:Ve}))(Z,te,[_e[0],_e[1],_e[2]],X,ae),pe=wl(N,z);U.draw(N,G.TRIANGLES,$,mt.disabled,St.alphaBlended,ft.disabled,fe,null,null,"atmosphere",pe.vertexBuffer,pe.indexBuffer,pe.segments)}(this,this.style.sky,this.style.light),this.options.showTileBoundaries){const M=function(z,F){let N=null;const G=Object.values(z._layers).flatMap(Z=>Z.source&&!Z.isHidden(F)?[z.tileManagers[Z.source]]:[]),U=G.filter(Z=>Z.getSource().type==="vector"),$=G.filter(Z=>Z.getSource().type!=="vector"),K=Z=>{(!N||N.getSource().maxzoom<Z.getSource().maxzoom)&&(N=Z)};return U.forEach(Z=>K(Z)),N||$.forEach(Z=>K(Z)),N}(this.style,this.transform.zoom);M&&function(z,F,N){for(let G=0;G<N.length;G++)Xc(z,F,N[G])}(this,M,M.getVisibleCoordinates())}this.options.showPadding&&function(M){const z=M.transform.padding;xl(M,M.transform.height-(z.top||0),3,Zc),xl(M,z.bottom||0,3,$c),vl(M,z.left||0,3,Wc),vl(M,M.transform.width-(z.right||0),3,Ln);const F=M.transform.centerPoint;(function(N,G,U,$){xa(N,G-1,U-10,2,20,$),xa(N,G-10,U-1,20,2,$)})(M,F.x,M.transform.height-F.y,Hc)}(this),this.context.setDefault()}maybeDrawDepthAndCoords(t){if(!this.style||!this.style.map||!this.style.map.terrain)return;const n=this.terrainFacilitator.matrix,a=this.transform.modelViewProjectionMatrix;let l=this.terrainFacilitator.dirty;l||(l=t?!c.cj(n,a):!c.ck(n,a)),l||(l=this.style.map.terrain.tileManager.anyTilesAfterTime(this.terrainFacilitator.renderTime)),l&&(c.cl(n,a),this.terrainFacilitator.renderTime=Date.now(),this.terrainFacilitator.dirty=!1,function(p,m){const _=p.context,x=_.gl,w=p.transform,T=St.unblended,I=new at(x.LEQUAL,at.ReadWrite,[0,1]),M=m.tileManager.getRenderableTiles(),z=p.useProgram("terrainDepth");_.bindFramebuffer.set(m.getFramebuffer("depth").framebuffer),_.viewport.set([0,0,p.width/devicePixelRatio,p.height/devicePixelRatio]),_.clear({color:c.bp.transparent,depth:1});for(const F of M){const N=m.getTerrainMesh(F.tileID),G=m.getTerrainData(F.tileID),U=w.getProjectionData({overscaledTileID:F.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0}),$={u_ele_delta:m.getMeshFrameDelta(w.zoom)};z.draw(_,x.TRIANGLES,I,mt.disabled,T,ft.backCCW,$,G,U,"terrain",N.vertexBuffer,N.indexBuffer,N.segments)}_.bindFramebuffer.set(null),_.viewport.set([0,0,p.width,p.height])}(this,this.style.map.terrain),function(p,m){const _=p.context,x=_.gl,w=p.transform,T=St.unblended,I=new at(x.LEQUAL,at.ReadWrite,[0,1]),M=m.getCoordsTexture(),z=m.tileManager.getRenderableTiles(),F=p.useProgram("terrainCoords");_.bindFramebuffer.set(m.getFramebuffer("coords").framebuffer),_.viewport.set([0,0,p.width/devicePixelRatio,p.height/devicePixelRatio]),_.clear({color:c.bp.transparent,depth:1}),m.coordsIndex=[];for(const N of z){const G=m.getTerrainMesh(N.tileID),U=m.getTerrainData(N.tileID);_.activeTexture.set(x.TEXTURE0),x.bindTexture(x.TEXTURE_2D,M.texture);const $={u_terrain_coords_id:(255-m.coordsIndex.length)/255,u_texture:0,u_ele_delta:m.getMeshFrameDelta(w.zoom)},K=w.getProjectionData({overscaledTileID:N.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0});F.draw(_,x.TRIANGLES,I,mt.disabled,T,ft.backCCW,$,U,K,"terrain",G.vertexBuffer,G.indexBuffer,G.segments),m.coordsIndex.push(N.tileID.key)}_.bindFramebuffer.set(null),_.viewport.set([0,0,p.width,p.height])}(this,this.style.map.terrain))}renderLayer(t,n,a,l,p){a.isHidden(this.transform.zoom)||(a.type==="background"||a.type==="custom"||(l||[]).length)&&(this.id=a.id,c.cm(a)?function(m,_,x,w,T,I){if(m.renderPass!=="translucent")return;const{isRenderingToTexture:M}=I,z=mt.disabled,F=m.colorModeForRenderPass();(x._unevaluatedLayout.hasValue("text-variable-anchor")||x._unevaluatedLayout.hasValue("text-variable-anchor-offset"))&&function(N,G,U,$,K,Z,J,te,X){const ae=G.transform,_e=G.style.map.terrain,fe=K==="map",pe=Z==="map";for(const ge of N){const De=$.getTile(ge),ze=De.getBucket(U);if(!ze||!ze.text||!ze.text.segments.get().length)continue;const ve=c.ay(ze.textSizeData,ae.zoom),Ve=c.aN(De,1,G.transform.zoom),nt=ms(fe,G.transform,Ve),yt=U.layout.get("icon-text-fit")!=="none"&&ze.hasIconData();if(ve){const Et=Math.pow(2,ae.zoom-De.tileID.overscaledZ),Mt=_e?(Rt,xt)=>_e.getElevation(ge,Rt,xt):null;Nc(ze,fe,pe,X,ae,nt,Et,ve,yt,c.aO(ae,De,J,te),ge.toUnwrapped(),Mt)}}}(w,m,x,_,x.layout.get("text-rotation-alignment"),x.layout.get("text-pitch-alignment"),x.paint.get("text-translate"),x.paint.get("text-translate-anchor"),T),x.paint.get("icon-opacity").constantOr(1)!==0&&yo(m,_,x,w,!1,x.paint.get("icon-translate"),x.paint.get("icon-translate-anchor"),x.layout.get("icon-rotation-alignment"),x.layout.get("icon-pitch-alignment"),x.layout.get("icon-keep-upright"),z,F,M),x.paint.get("text-opacity").constantOr(1)!==0&&yo(m,_,x,w,!0,x.paint.get("text-translate"),x.paint.get("text-translate-anchor"),x.layout.get("text-rotation-alignment"),x.layout.get("text-pitch-alignment"),x.layout.get("text-keep-upright"),z,F,M),_.map.showCollisionBoxes&&(go(m,_,x,w,!0),go(m,_,x,w,!1))}(t,n,a,l,this.style.placement.variableOffsets,p):c.cn(a)?function(m,_,x,w,T){if(m.renderPass!=="translucent")return;const{isRenderingToTexture:I}=T,M=x.paint.get("circle-opacity"),z=x.paint.get("circle-stroke-width"),F=x.paint.get("circle-stroke-opacity"),N=!x.layout.get("circle-sort-key").isConstant();if(M.constantOr(1)===0&&(z.constantOr(1)===0||F.constantOr(1)===0))return;const G=m.context,U=G.gl,$=m.transform,K=m.getDepthModeForSublayer(0,at.ReadOnly),Z=mt.disabled,J=m.colorModeForRenderPass(),te=[],X=$.getCircleRadiusCorrection();for(let ae=0;ae<w.length;ae++){const _e=w[ae],fe=_.getTile(_e),pe=fe.getBucket(x);if(!pe)continue;const ge=x.paint.get("circle-translate"),De=x.paint.get("circle-translate-anchor"),ze=c.aO($,fe,ge,De),ve=pe.programConfigurations.get(x.id),Ve=m.useProgram("circle",ve),nt=pe.layoutVertexBuffer,yt=pe.indexBuffer,Et=m.style.map.terrain&&m.style.map.terrain.getTerrainData(_e),Mt={programConfiguration:ve,program:Ve,layoutVertexBuffer:nt,indexBuffer:yt,uniformValues:Jn(m,fe,x,ze,X),terrainData:Et,projectionData:$.getProjectionData({overscaledTileID:_e,applyGlobeMatrix:!I,applyTerrainMatrix:!0})};if(N){const Rt=pe.segments.get();for(const xt of Rt)te.push({segments:new c.aX([xt]),sortKey:xt.sortKey,state:Mt})}else te.push({segments:pe.segments,sortKey:0,state:Mt})}N&&te.sort((ae,_e)=>ae.sortKey-_e.sortKey);for(const ae of te){const{programConfiguration:_e,program:fe,layoutVertexBuffer:pe,indexBuffer:ge,uniformValues:De,terrainData:ze,projectionData:ve}=ae.state;fe.draw(G,U.TRIANGLES,K,Z,J,ft.backCCW,De,ze,ve,x.id,pe,ge,ae.segments,x.paint,m.transform.zoom,_e)}}(t,n,a,l,p):c.co(a)?function(m,_,x,w,T){if(x.paint.get("heatmap-opacity")===0)return;const I=m.context,{isRenderingToTexture:M,isRenderingGlobe:z}=T;if(m.style.map.terrain){for(const F of w){const N=_.getTile(F);_.hasRenderableParent(F)||(m.renderPass==="offscreen"?Uc(m,N,x,F,z):m.renderPass==="translucent"&&xo(m,x,F,M,z))}I.viewport.set([0,0,m.width,m.height])}else m.renderPass==="offscreen"?function(F,N,G,U){const $=F.context,K=$.gl,Z=F.transform,J=mt.disabled,te=new St([K.ONE,K.ONE],c.bp.transparent,[!0,!0,!0,!0]);(function(X,ae,_e){const fe=X.gl;X.activeTexture.set(fe.TEXTURE1),X.viewport.set([0,0,ae.width/4,ae.height/4]);let pe=_e.heatmapFbos.get(c.cd);pe?(fe.bindTexture(fe.TEXTURE_2D,pe.colorAttachment.get()),X.bindFramebuffer.set(pe.framebuffer)):(pe=vo(X,ae.width/4,ae.height/4),_e.heatmapFbos.set(c.cd,pe))})($,F,G),$.clear({color:c.bp.transparent});for(let X=0;X<U.length;X++){const ae=U[X];if(N.hasRenderableParent(ae))continue;const _e=N.getTile(ae),fe=_e.getBucket(G);if(!fe)continue;const pe=fe.programConfigurations.get(G.id),ge=F.useProgram("heatmap",pe),De=Z.getProjectionData({overscaledTileID:ae,applyGlobeMatrix:!0,applyTerrainMatrix:!1}),ze=Z.getCircleRadiusCorrection();ge.draw($,K.TRIANGLES,at.disabled,J,te,ft.backCCW,Mc(_e,Z.zoom,G.paint.get("heatmap-intensity"),ze),null,De,G.id,fe.layoutVertexBuffer,fe.indexBuffer,fe.segments,G.paint,Z.zoom,pe)}$.viewport.set([0,0,F.width,F.height])}(m,_,x,w):m.renderPass==="translucent"&&function(F,N){const G=F.context,U=G.gl;G.setColorMode(F.colorModeForRenderPass());const $=N.heatmapFbos.get(c.cd);$&&(G.activeTexture.set(U.TEXTURE0),U.bindTexture(U.TEXTURE_2D,$.colorAttachment.get()),G.activeTexture.set(U.TEXTURE1),Gc(G,N).bind(U.LINEAR,U.CLAMP_TO_EDGE),F.useProgram("heatmapTexture").draw(G,U.TRIANGLES,at.disabled,mt.disabled,F.colorModeForRenderPass(),ft.disabled,aa(F,N,0,1),null,null,N.id,F.viewportBuffer,F.quadTriangleIndexBuffer,F.viewportSegments,N.paint,F.transform.zoom))}(m,x)}(t,n,a,l,p):c.cp(a)?function(m,_,x,w,T){if(m.renderPass!=="translucent")return;const{isRenderingToTexture:I}=T,M=x.paint.get("line-opacity"),z=x.paint.get("line-width");if(M.constantOr(1)===0||z.constantOr(1)===0)return;const F=m.getDepthModeForSublayer(0,at.ReadOnly),N=m.colorModeForRenderPass(),G=x.paint.get("line-dasharray"),U=G.constantOr(1),$=x.paint.get("line-pattern"),K=$.constantOr(1),Z=x.paint.get("line-gradient"),J=x.getCrossfadeParameters();let te;te=K?"linePattern":U&&Z?"lineGradientSDF":U?"lineSDF":Z?"lineGradient":"line";const X=m.context,ae=X.gl,_e=m.transform;let fe=!0;for(const pe of w){const ge=_.getTile(pe);if(K&&!ge.patternsLoaded())continue;const De=ge.getBucket(x);if(!De)continue;const ze=De.programConfigurations.get(x.id),ve=m.context.program.get(),Ve=m.useProgram(te,ze),nt=fe||Ve.program!==ve,yt=m.style.map.terrain&&m.style.map.terrain.getTerrainData(pe),Et=$.constantOr(null),Mt=G&&G.constantOr(null);if(Et&&ge.imageAtlas){const vi=ge.imageAtlas,qt=vi.patternPositions[Et.to.toString()],Zt=vi.patternPositions[Et.from.toString()];qt&&Zt&&ze.setConstantPatternPositions(qt,Zt)}else if(Mt){const vi=x.layout.get("line-cap")==="round",qt=m.lineAtlas.getDash(Mt.to,vi),Zt=m.lineAtlas.getDash(Mt.from,vi);ze.setConstantDashPositions(qt,Zt)}const Rt=_e.getProjectionData({overscaledTileID:pe,applyGlobeMatrix:!I,applyTerrainMatrix:!0}),xt=_e.getPixelScale();let ni;K?(ni=Cc(m,ge,x,xt,J),Yt(X,ae,ge,ze,J)):U&&Z?(ni=un(m,ge,x,xt,J,De.lineClipsArray.length),_l(m,_,X,ae,x,De,pe,ze,J)):U?(ni=ro(m,ge,x,xt,J),is(m,X,ae,ze,nt,J)):Z?(ni=ol(m,ge,x,xt,De.lineClipsArray.length),sr(m,_,X,ae,x,De,pe)):ni=oa(m,ge,x,xt);const Lt=m.stencilModeForClipping(pe);Ve.draw(X,ae.TRIANGLES,F,Lt,N,ft.disabled,ni,yt,Rt,x.id,De.layoutVertexBuffer,De.indexBuffer,De.segments,x.paint,m.transform.zoom,ze,De.layoutVertexBuffer2),fe=!1}}(t,n,a,l,p):c.cq(a)?function(m,_,x,w,T){const I=x.paint.get("fill-color"),M=x.paint.get("fill-opacity");if(M.constantOr(1)===0)return;const{isRenderingToTexture:z}=T,F=m.colorModeForRenderPass(),N=x.paint.get("fill-pattern"),G=m.opaquePassEnabledForLayer()&&!N.constantOr(1)&&I.constantOr(c.bp.transparent).a===1&&M.constantOr(0)===1?"opaque":"translucent";if(m.renderPass===G){const U=m.getDepthModeForSublayer(1,m.renderPass==="opaque"?at.ReadWrite:at.ReadOnly);yl(m,_,x,w,U,F,!1,z)}if(m.renderPass==="translucent"&&x.paint.get("fill-antialias")){const U=m.getDepthModeForSublayer(x.getPaintProperty("fill-outline-color")?2:0,at.ReadOnly);yl(m,_,x,w,U,F,!0,z)}}(t,n,a,l,p):c.cr(a)?function(m,_,x,w,T){const I=x.paint.get("fill-extrusion-opacity");if(I===0)return;const{isRenderingToTexture:M}=T;if(m.renderPass==="translucent"){const z=new at(m.context.gl.LEQUAL,at.ReadWrite,m.depthRangeFor3D);if(I!==1||x.paint.get("fill-extrusion-pattern").constantOr(1))Rn(m,_,x,w,z,mt.disabled,St.disabled,M),Rn(m,_,x,w,z,m.stencilModeFor3D(),m.colorModeForRenderPass(),M);else{const F=m.colorModeForRenderPass();Rn(m,_,x,w,z,mt.disabled,F,M)}}}(t,n,a,l,p):c.cs(a)?function(m,_,x,w,T){if(m.renderPass!=="offscreen"&&m.renderPass!=="translucent")return;const{isRenderingToTexture:I}=T,M=m.context,z=m.style.projection.useSubdivision,F=m.getDepthModeForSublayer(0,at.ReadOnly),N=m.colorModeForRenderPass();if(m.renderPass==="offscreen")(function(G,U,$,K,Z,J,te){const X=G.context,ae=X.gl;for(const _e of $){const fe=U.getTile(_e),pe=fe.dem;if(!pe||!pe.data||!fe.needsHillshadePrepare)continue;const ge=pe.dim,De=pe.stride,ze=pe.getPixels();if(X.activeTexture.set(ae.TEXTURE1),X.pixelStoreUnpackPremultiplyAlpha.set(!1),fe.demTexture=fe.demTexture||G.getTileTexture(De),fe.demTexture){const Ve=fe.demTexture;Ve.update(ze,{premultiply:!1}),Ve.bind(ae.NEAREST,ae.CLAMP_TO_EDGE)}else fe.demTexture=new c.T(X,ze,ae.RGBA,{premultiply:!1}),fe.demTexture.bind(ae.NEAREST,ae.CLAMP_TO_EDGE);X.activeTexture.set(ae.TEXTURE0);let ve=fe.fbo;if(!ve){const Ve=new c.T(X,{width:ge,height:ge,data:null},ae.RGBA);Ve.bind(ae.LINEAR,ae.CLAMP_TO_EDGE),ve=fe.fbo=X.createFramebuffer(ge,ge,!0,!1),ve.colorAttachment.set(Ve.texture)}X.bindFramebuffer.set(ve.framebuffer),X.viewport.set([0,0,ge,ge]),G.useProgram("hillshadePrepare").draw(X,ae.TRIANGLES,Z,J,te,ft.disabled,th(fe.tileID,pe),null,null,K.id,G.rasterBoundsBuffer,G.quadTriangleIndexBuffer,G.rasterBoundsSegments),fe.needsHillshadePrepare=!1}})(m,_,w,x,F,mt.disabled,N),M.viewport.set([0,0,m.width,m.height]);else if(m.renderPass==="translucent")if(z){const[G,U,$]=m.stencilConfigForOverlapTwoPass(w);ga(m,_,x,$,G,F,N,!1,I),ga(m,_,x,$,U,F,N,!0,I)}else{const[G,U]=m.getStencilConfigForOverlapAndUpdateStencilID(w);ga(m,_,x,U,G,F,N,!1,I)}}(t,n,a,l,p):c.ct(a)?function(m,_,x,w,T){if(m.renderPass!=="translucent"||!w.length)return;const{isRenderingToTexture:I}=T,M=m.style.projection.useSubdivision,z=m.getDepthModeForSublayer(0,at.ReadOnly),F=m.colorModeForRenderPass();if(M){const[N,G,U]=m.stencilConfigForOverlapTwoPass(w);rs(m,_,x,U,N,z,F,!1,I),rs(m,_,x,U,G,z,F,!0,I)}else{const[N,G]=m.getStencilConfigForOverlapAndUpdateStencilID(w);rs(m,_,x,G,N,z,F,!1,I)}}(t,n,a,l,p):c.bU(a)?function(m,_,x,w,T){if(m.renderPass!=="translucent"||x.paint.get("raster-opacity")===0||!w.length)return;const{isRenderingToTexture:I}=T,M=_.getSource(),z=m.style.projection.useSubdivision;if(M instanceof nn)ya(m,_,x,w,null,!1,!1,M.tileCoords,M.flippedWindingOrder,I);else if(z){const[F,N,G]=m.stencilConfigForOverlapTwoPass(w);ya(m,_,x,G,F,!1,!0,_a,!1,I),ya(m,_,x,G,N,!0,!0,_a,!1,I)}else{const[F,N]=m.getStencilConfigForOverlapAndUpdateStencilID(w);ya(m,_,x,N,F,!1,!0,_a,!1,I)}}(t,n,a,l,p):c.cu(a)?function(m,_,x,w,T){const I=x.paint.get("background-color"),M=x.paint.get("background-opacity");if(M===0)return;const{isRenderingToTexture:z}=T,F=m.context,N=F.gl,G=m.style.projection,U=m.transform,$=U.tileSize,K=x.paint.get("background-pattern");if(m.isPatternMissing(K))return;const Z=!K&&I.a===1&&M===1&&m.opaquePassEnabledForLayer()?"opaque":"translucent";if(m.renderPass!==Z)return;const J=mt.disabled,te=m.getDepthModeForSublayer(0,Z==="opaque"?at.ReadWrite:at.ReadOnly),X=m.colorModeForRenderPass(),ae=m.useProgram(K?"backgroundPattern":"background"),_e=w||It(U,{tileSize:$,terrain:m.style.map.terrain});K&&(F.activeTexture.set(N.TEXTURE0),m.imageManager.bind(m.context));const fe=x.getCrossfadeParameters();for(const pe of _e){const ge=U.getProjectionData({overscaledTileID:pe,applyGlobeMatrix:!z,applyTerrainMatrix:!0}),De=K?rh(M,m,K,{tileID:pe,tileSize:$},fe):ih(M,I),ze=m.style.map.terrain&&m.style.map.terrain.getTerrainData(pe),ve=G.getMeshFromTileID(F,pe.canonical,!1,!0,"raster");ae.draw(F,N.TRIANGLES,te,J,X,ft.backCCW,De,ze,ge,x.id,ve.vertexBuffer,ve.indexBuffer,ve.segments)}}(t,0,a,l,p):c.cv(a)&&function(m,_,x,w){const{isRenderingGlobe:T}=w,I=m.context,M=x.implementation,z=m.style.projection,F=m.transform,N=F.getProjectionDataForCustomLayer(T),G={farZ:F.farZ,nearZ:F.nearZ,fov:F.fov*Math.PI/180,modelViewProjectionMatrix:F.modelViewProjectionMatrix,projectionMatrix:F.projectionMatrix,shaderData:{variantName:z.shaderVariantName,vertexShaderPrelude:`const float PI = 3.141592653589793;
|
||
uniform mat4 u_projection_matrix;
|
||
${z.shaderPreludeCode.vertexSource}`,define:z.shaderDefine},defaultProjectionData:N},U=M.renderingMode?M.renderingMode:"2d";if(m.renderPass==="offscreen"){const $=M.prerender;$&&(m.setCustomLayerDefaults(),I.setColorMode(m.colorModeForRenderPass()),$.call(M,I.gl,G),I.setDirty(),m.setBaseState())}else if(m.renderPass==="translucent"){m.setCustomLayerDefaults(),I.setColorMode(m.colorModeForRenderPass()),I.setStencilMode(mt.disabled);const $=U==="3d"?m.getDepthModeFor3D():m.getDepthModeForSublayer(0,at.ReadOnly);I.setDepthMode($),M.render(I.gl,G),I.setDirty(),m.setBaseState(),I.bindFramebuffer.set(null)}}(t,0,a,p))}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,a=!1,l=[]){this.cache=this.cache||{};const p=!!this.style.map.terrain,m=this.style.projection,_=a?At.projectionMercator:m.shaderPreludeCode,x=a?ir:m.shaderDefine,w=t+(n?n.cacheKey:"")+`/${a?$i:m.shaderVariantName}`+(this._showOverdrawInspector?"/overdraw":"")+(p?"/terrain":"")+(l?`/${l.join("/")}`:"");return this.cache[w]||(this.cache[w]=new Qu(this.context,At[t],n,nh[t],this._showOverdrawInspector,p,_,x,l)),this.cache[w]}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 c.T(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){var t,n;if(this._tileTextures){for(const a in this._tileTextures){const l=this._tileTextures[a];if(l)for(const p of l)p.destroy()}this._tileTextures={}}if(this.tileExtentBuffer&&this.tileExtentBuffer.destroy(),this.debugBuffer&&this.debugBuffer.destroy(),this.rasterBoundsBuffer&&this.rasterBoundsBuffer.destroy(),this.rasterBoundsBufferPosOnly&&this.rasterBoundsBufferPosOnly.destroy(),this.viewportBuffer&&this.viewportBuffer.destroy(),this.tileBorderIndexBuffer&&this.tileBorderIndexBuffer.destroy(),this.quadTriangleIndexBuffer&&this.quadTriangleIndexBuffer.destroy(),this.tileExtentMesh&&((t=this.tileExtentMesh.vertexBuffer)===null||t===void 0||t.destroy()),this.tileExtentMesh&&((n=this.tileExtentMesh.indexBuffer)===null||n===void 0||n.destroy()),this.debugOverlayTexture&&this.debugOverlayTexture.destroy(),this.cache){for(const a in this.cache){const l=this.cache[a];l&&l.program&&this.context.gl.deleteProgram(l.program)}this.cache={}}this.context&&this.context.setDefault()}overLimit(){const{drawingBufferWidth:t,drawingBufferHeight:n}=this.context.gl;return this.width!==t||this.height!==n}}function Tl(d,t){let n,a=!1,l=null,p=null;const m=()=>{l=null,a&&(d.apply(p,n),l=setTimeout(m,t),a=!1)};return(..._)=>(a=!0,p=this,n=_,l||m(),l)}class va{constructor(t){this._getCurrentHash=()=>{const n=window.location.hash.replace("#","");if(this._hashName){let a;return n.split("&").map(l=>l.split("=")).forEach(l=>{l[0]===this._hashName&&(a=l)}),(a&&a[1]||"").split("/")}return n.split("/")},this._onHashChange=()=>{const n=this._getCurrentHash();if(!this._isValidHash(n))return!1;const a=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(n[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+n[2],+n[1]],zoom:+n[0],bearing:a,pitch:+(n[4]||0)}),!0},this._updateHashUnthrottled=()=>{const n=window.location.href.replace(/(#.*)?$/,this.getHashString());window.history.replaceState(window.history.state,null,n)},this._removeHash=()=>{const n=this._getCurrentHash();if(n.length===0)return;const a=n.join("/");let l=a;l.split("&").length>0&&(l=l.split("&")[0]),this._hashName&&(l=`${this._hashName}=${a}`);let p=window.location.hash.replace(l,"");p.startsWith("#&")?p=p.slice(0,1)+p.slice(2):p==="#"&&(p="");let m=window.location.href.replace(/(#.+)?$/,p);m=m.replace("&&","&"),window.history.replaceState(window.history.state,null,m)},this._updateHash=Tl(this._updateHashUnthrottled,300),this._hashName=t&&encodeURIComponent(t)}addTo(t){return this._map=t,addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this}remove(){return removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),this._removeHash(),delete this._map,this}getHashString(t){const n=this._map.getCenter(),a=Math.round(100*this._map.getZoom())/100,l=Math.ceil((a*Math.LN2+Math.log(512/360/.5))/Math.LN10),p=Math.pow(10,l),m=Math.round(n.lng*p)/p,_=Math.round(n.lat*p)/p,x=this._map.getBearing(),w=this._map.getPitch();let T="";if(T+=t?`/${m}/${_}/${a}`:`${a}/${_}/${m}`,(x||w)&&(T+="/"+Math.round(10*x)/10),w&&(T+=`/${Math.round(w)}`),this._hashName){const I=this._hashName;let M=!1;const z=window.location.hash.slice(1).split("&").map(F=>{const N=F.split("=")[0];return N===I?(M=!0,`${N}=${T}`):F}).filter(F=>F);return M||z.push(`${I}=${T}`),`#${z.join("&")}`}return`#${T}`}_isValidHash(t){if(t.length<3||t.some(isNaN))return!1;try{new c.V(+t[2],+t[1])}catch{return!1}const n=+t[0],a=+(t[3]||0),l=+(t[4]||0);return n>=this._map.getMinZoom()&&n<=this._map.getMaxZoom()&&a>=-180&&a<=180&&l>=this._map.getMinPitch()&&l<=this._map.getMaxPitch()}}const Ds={linearity:.3,easing:c.cw(0,0,.3,1)},br=c.e({deceleration:2500,maxSpeed:1400},Ds),Dr=c.e({deceleration:20,maxSpeed:1400},Ds),Kc=c.e({deceleration:1e3,maxSpeed:360},Ds),zr=c.e({deceleration:1e3,maxSpeed:90},Ds),dh=c.e({deceleration:1e3,maxSpeed:360},Ds);class ph{constructor(t){this._map=t,this.clear()}clear(){this._inertiaBuffer=[]}record(t){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:Re(),settings:t})}_drainInertiaBuffer(){const t=this._inertiaBuffer,n=Re();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,roll:0,pan:new c.P(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,n.roll+=p.rollDelta||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,l={};if(n.pan.mag()){const p=qr(n.pan.mag(),a,c.e({},br,t||{})),m=n.pan.mult(p.amount/n.pan.mag()),_=this._map.cameraHelper.handlePanInertia(m,this._map.transform);l.center=_.easingCenter,l.offset=_.easingOffset,ba(l,p)}if(n.zoom){const p=qr(n.zoom,a,Dr),m=c.cx(this._map.transform.zoom+p.amount,this._map.getZoomSnap(),p.amount);l.zoom=m,ba(l,p)}if(n.bearing){const p=qr(n.bearing,a,Kc);l.bearing=this._map.transform.bearing+c.an(p.amount,-179,179),ba(l,p)}if(n.pitch){const p=qr(n.pitch,a,zr);l.pitch=this._map.transform.pitch+p.amount,ba(l,p)}if(n.roll){const p=qr(n.roll,a,dh);l.roll=this._map.transform.roll+c.an(p.amount,-179,179),ba(l,p)}if(l.zoom||l.bearing){const p=n.pinchAround===void 0?n.around:n.pinchAround;l.around=p?this._map.unproject(p):this._map.getCenter()}return this.clear(),c.e(l,{noMoveStart:!0})}}function ba(d,t){(!d.duration||d.duration<t.duration)&&(d.duration=t.duration,d.easing=t.easing)}function qr(d,t,n){const{maxSpeed:a,linearity:l,deceleration:p}=n,m=c.an(d*l/(t/1e3),-a,a),_=Math.abs(m)/(p*l);return{easing:n.easing,duration:1e3*_,amount:m*(_/2)}}class ar extends c.l{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,n,a,l={}){a=a instanceof MouseEvent?a:new MouseEvent(t,a);const p=de.mousePos(n.getCanvas(),a),m=n.unproject(p);super(t,c.e({point:p,lngLat:m,originalEvent:a},l)),this._defaultPrevented=!1,this.target=n}}class wa extends c.l{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,n,a){const l=t==="touchend"?a.changedTouches:a.touches,p=de.touchPos(n.getCanvasContainer(),l),m=p.map(x=>n.unproject(x)),_=p.reduce((x,w,T,I)=>x.add(w.div(I.length)),new c.P(0,0));super(t,{points:p,point:_,lngLats:m,lngLat:n.unproject(_),originalEvent:a}),this._defaultPrevented=!1}}class Jc extends c.l{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,n,a){super(t,{originalEvent:a}),this._defaultPrevented=!1}}class fh{constructor(t,n){this._map=t,this._clickTolerance=n.clickTolerance}reset(){delete this._mousedownPos}wheel(t){return this._firePreventable(new Jc(t.type,this._map,t))}mousedown(t,n){return this._mousedownPos=n,this._firePreventable(new ar(t.type,this._map,t))}mouseup(t){this._map.fire(new ar(t.type,this._map,t))}click(t,n){this._mousedownPos&&this._mousedownPos.dist(n)>=this._clickTolerance||this._map.fire(new ar(t.type,this._map,t))}dblclick(t){return this._firePreventable(new ar(t.type,this._map,t))}mouseover(t){this._map.fire(new ar(t.type,this._map,t))}mouseout(t){this._map.fire(new ar(t.type,this._map,t))}touchstart(t){return this._firePreventable(new wa(t.type,this._map,t))}touchmove(t){this._map.fire(new wa(t.type,this._map,t))}touchend(t){this._map.fire(new wa(t.type,this._map,t))}touchcancel(t){this._map.fire(new wa(t.type,this._map,t))}_firePreventable(t){if(this._map.fire(t),t.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class Qc{constructor(t){this._map=t}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(t){this._map.fire(new ar(t.type,this._map,t))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new ar("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(t){this._delayContextMenu?this._contextMenuEvent=t:this._ignoreContextMenu||this._map.fire(new ar(t.type,this._map,t)),this._map.listens("contextmenu")&&t.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class dn{constructor(t){this._map=t}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return{lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(t){return this.transform.screenPointToLocation(c.P.convert(t),this._map.terrain)}}class Zr{constructor(t,n){this._map=t,this._tr=new dn(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&&(de.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 l=this._startPos;this._lastPos=a,this._box||(this._box=de.create("div","maplibregl-boxzoom",this._container),this._container.classList.add("maplibregl-crosshair"),this._fireEvent("boxzoomstart",t));const p=Math.min(l.x,a.x),m=Math.max(l.x,a.x),_=Math.min(l.y,a.y),x=Math.max(l.y,a.y);de.setTransform(this._box,`translate(${p}px,${_}px)`),this._box.style.width=m-p+"px",this._box.style.height=x-_+"px"}mouseupWindow(t,n){if(!this._active||t.button!==0)return;const a=this._startPos,l=n;if(this.reset(),de.suppressClick(),a.x!==l.x||a.y!==l.y)return this._map.fire(new c.l("boxzoomend",{originalEvent:t})),{cameraAnimation:p=>p.fitScreenCoordinates(a,l,this._tr.bearing,{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&&(de.remove(this._box),this._box=null),de.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(t,n){return this._map.fire(new c.l(t,{originalEvent:n}))}}function Fe(d,t){if(d.length!==t.length)throw new Error(`The number of touches and points are not equal - touches ${d.length}, points ${t.length}`);const n={};for(let a=0;a<d.length;a++)n[d[a].identifier]=t[a];return n}class eu{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(l){const p=new c.P(0,0);for(const m of l)p._add(m);return p.div(l.length)}(n),this.touches=Fe(a,n)))}touchmove(t,n,a){if(this.aborted||!this.centroid)return;const l=Fe(a,n);for(const p in this.touches){const m=l[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 l=!this.aborted&&this.centroid;if(this.reset(),l)return l}}}class Ta{constructor(t){this.singleTap=new eu(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 l=this.singleTap.touchend(t,n,a);if(l){const p=t.timeStamp-this.lastTime<500,m=!this.lastTap||this.lastTap.dist(l)<30;if(p&&m||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=l,this.count===this.numTaps)return this.reset(),l}}}class tu{constructor(t){this._tr=new dn(t),this._zoomIn=new Ta({numTouches:1,numTaps:2}),this._zoomOut=new Ta({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 l=this._zoomIn.touchend(t,n,a),p=this._zoomOut.touchend(t,n,a),m=this._tr;return l?(this._active=!0,t.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:_=>_.easeTo({duration:300,zoom:c.cx(m.zoom+1,_.getZoomSnap()),around:m.unproject(l)},{originalEvent:t})}):p?(this._active=!0,t.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:_=>_.easeTo({duration:300,zoom:c.cx(m.zoom-1,_.getZoomSnap()),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 pn{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.rollDelta||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=Array.isArray(n)?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 l=Array.isArray(n)?n[0]:n;return!this._moved&&l.dist(a)<this._clickTolerance?void 0:(this._moved=!0,this._lastPoint=l,this._move(a,l))}dragEnd(t){this.isEnabled()&&this._lastPoint&&this._moveStateManager.isValidEndEvent(t)&&(this._moved&&de.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 Sa=0,Sl=2,mh={[Sa]:1,[Sl]:2};class ns{constructor(t){this._correctEvent=t.checkCorrectEvent}startMove(t){const n=de.mouseButton(t);this._eventButton=n}endMove(t){delete this._eventButton}isValidStartEvent(t){return this._correctEvent(t)}isValidMoveEvent(t){return!function(n,a){const l=mh[a];return n.buttons===void 0||(n.buttons&l)!==l}(t,this._eventButton)}isValidEndEvent(t){return de.mouseButton(t)===this._eventButton}}class iu{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)}}class Pl{constructor(t=new ns({checkCorrectEvent:()=>!0}),n=new iu){this.mouseMoveStateManager=t,this.oneFingerTouchMoveStateManager=n}_executeRelevantHandler(t,n,a){return t instanceof MouseEvent?n(t):typeof TouchEvent<"u"&&t instanceof TouchEvent?a(t):void 0}startMove(t){this._executeRelevantHandler(t,n=>this.mouseMoveStateManager.startMove(n),n=>this.oneFingerTouchMoveStateManager.startMove(n))}endMove(t){this._executeRelevantHandler(t,n=>this.mouseMoveStateManager.endMove(n),n=>this.oneFingerTouchMoveStateManager.endMove(n))}isValidStartEvent(t){return this._executeRelevantHandler(t,n=>this.mouseMoveStateManager.isValidStartEvent(n),n=>this.oneFingerTouchMoveStateManager.isValidStartEvent(n))}isValidMoveEvent(t){return this._executeRelevantHandler(t,n=>this.mouseMoveStateManager.isValidMoveEvent(n),n=>this.oneFingerTouchMoveStateManager.isValidMoveEvent(n))}isValidEndEvent(t){return this._executeRelevantHandler(t,n=>this.mouseMoveStateManager.isValidEndEvent(n),n=>this.oneFingerTouchMoveStateManager.isValidEndEvent(n))}}const bo=d=>{d.mousedown=d.dragStart,d.mousemoveWindow=d.dragMove,d.mouseup=d.dragEnd,d.contextmenu=t=>{t.preventDefault()}};class ru{constructor(t,n){this._clickTolerance=t.clickTolerance||1,this._map=n,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new c.P(0,0)}_shouldBePrevented(t){return t<(this._map.cooperativeGestures.isEnabled()?2:1)}touchstart(t,n,a){return this._calculateTransform(t,n,a)}touchmove(t,n,a){if(this._active){if(!this._shouldBePrevented(a.length))return t.preventDefault(),this._calculateTransform(t,n,a);this._map.cooperativeGestures.notifyGestureBlocked("touch_pan",t)}}touchend(t,n,a){this._calculateTransform(t,n,a),this._active&&this._shouldBePrevented(a.length)&&this.reset()}touchcancel(){this.reset()}_calculateTransform(t,n,a){a.length>0&&(this._active=!0);const l=Fe(a,n),p=new c.P(0,0),m=new c.P(0,0);let _=0;for(const w in l){const T=l[w],I=this._touches[w];I&&(p._add(T),m._add(T.sub(I)),_++,l[w]=T)}if(this._touches=l,this._shouldBePrevented(_)||!m.mag())return;const x=m.div(_);return this._sum._add(x),this._sum.mag()<this._clickTolerance?void 0:{around:p.div(_),panDelta:x}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Ml{constructor(){this.reset()}reset(){this._active=!1,delete this._firstTwoTouches}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[l,p]=this._firstTwoTouches,m=wo(a,n,l),_=wo(a,n,p);if(!m||!_)return;const x=this._aroundCenter?null:m.add(_).div(2);return this._move([m,_],x,t)}touchend(t,n,a){if(!this._firstTwoTouches)return;const[l,p]=this._firstTwoTouches,m=wo(a,n,l),_=wo(a,n,p);m&&_||(this._active&&de.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 wo(d,t,n){for(let a=0;a<d.length;a++)if(d[a].identifier===n)return t[a]}function Il(d,t){return Math.log(d/t)/Math.LN2}class nu extends Ml{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(Il(this._distance,this._startDistance))<.1))return this._active=!0,{zoomDelta:Il(this._distance,a),pinchAround:n}}}function El(d,t){return 180*d.angleWith(t)/Math.PI}class su extends Ml{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,a){const l=this._vector;if(this._vector=t[0].sub(t[1]),this._active||!this._isBelowThreshold(this._vector))return this._active=!0,{bearingDelta:El(this._vector,l),pinchAround:n}}_isBelowThreshold(t){this._minDiameter=Math.min(this._minDiameter,t.mag());const n=25/(Math.PI*this._minDiameter)*360,a=El(t,this._startVector);return Math.abs(a)<n}}function Cl(d){return Math.abs(d.y)>Math.abs(d.x)}class fn extends Ml{constructor(t){super(),this._currentTouchCount=0,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,Cl(t[0].sub(t[1]))&&(this._valid=!1)}_move(t,n,a){if(this._map.cooperativeGestures.isEnabled()&&this._currentTouchCount<3)return;const l=t[0].sub(this._lastPoints[0]),p=t[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(l,p,a.timeStamp),this._valid?(this._lastPoints=t,this._active=!0,{pitchDelta:(l.y+p.y)/2*-.5}):void 0}gestureBeginsVertically(t,n,a){if(this._valid!==void 0)return this._valid;const l=t.mag()>=2,p=n.mag()>=2;if(!l&&!p)return;if(!l||!p)return this._firstMove===void 0&&(this._firstMove=a),a-this._firstMove<100&&void 0;const m=t.y>0==n.y>0;return Cl(t)&&Cl(n)&&m}}const Pt={panStep:100,bearingStep:15,pitchStep:10};class au{constructor(t){this._tr=new dn(t);const n=Pt;this._panStep=n.panStep,this._bearingStep=n.bearingStep,this._pitchStep=n.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(t){if(t.altKey||t.ctrlKey||t.metaKey)return;let n=0,a=0,l=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?l=1:(t.preventDefault(),m=-1);break;case 40:t.shiftKey?l=-1:(t.preventDefault(),m=1);break;default:return}return this._rotationDisabled&&(a=0,l=0),{cameraAnimation:_=>{const x=this._tr;_.easeTo({duration:300,easeId:"keyboardHandler",easing:To,zoom:n?c.cx(x.zoom+n*(t.shiftKey?2:1),_.getZoomSnap()):x.zoom,bearing:x.bearing+a*this._bearingStep,pitch:x.pitch+l*this._pitchStep,offset:[-p*this._panStep,-m*this._panStep],center:x.center},{originalEvent:t})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}}function To(d){return d*(2-d)}const Pa=4.000244140625,Al=1/450;class Dl{constructor(t,n){this._onTimeout=a=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(a)},this._map=t,this._tr=new dn(t),this._triggerRenderFrame=n,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=Al}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)}_shouldBePrevented(t){return!!this._map.cooperativeGestures.isEnabled()&&!(t.ctrlKey||this._map.cooperativeGestures.isBypassed(t))}wheel(t){if(!this.isEnabled())return;if(this._shouldBePrevented(t))return void this._map.cooperativeGestures.notifyGestureBlocked("wheel_zoom",t);let n=t.deltaMode===WheelEvent.DOM_DELTA_LINE?40*t.deltaY:t.deltaY;const a=Re(),l=a-(this._lastWheelEventTime||0);this._lastWheelEventTime=a,n!==0&&n%Pa==0?this._type="wheel":n!==0&&Math.abs(n)<4?this._type="trackpad":l>400?(this._type=null,this._lastValue=n,this._timeout=setTimeout(this._onTimeout,40,t)):this._type||(this._type=Math.abs(l*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()}_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=de.mousePos(this._map.getCanvas(),t),a=this._tr;this._aroundPoint=this._aroundCenter?a.transform.locationToScreenPoint(c.V.convert(a.center)):n,this._frameId||(this._frameId=!0,this._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;const t=this._tr.transform;if(typeof this._lastExpectedZoom=="number"){const _=t.zoom-this._lastExpectedZoom;typeof this._startZoom=="number"&&(this._startZoom+=_),typeof this._targetZoom=="number"&&(this._targetZoom+=_)}if(this._delta!==0){const _=this._type==="wheel"&&Math.abs(this._delta)>Pa?this._wheelZoomRate:this._defaultZoomRate;let x=2/(1+Math.exp(-Math.abs(this._delta*_)));this._delta<0&&x!==0&&(x=1/x);const w=typeof this._targetZoom!="number"?t.scale:c.aq(this._targetZoom),T=t.applyConstrain(t.getCameraLngLat(),c.at(w*x)).zoom,I=this._map.getZoomSnap();if(this._type==="wheel"&&I>0){const M=c.cx(t.zoom,I);this._targetZoom=c.cx(T,I,T-M)}else this._targetZoom=T;this._type==="wheel"&&(this._startZoom=t.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}const n=typeof this._targetZoom!="number"?t.zoom:this._targetZoom,a=this._startZoom,l=this._easing;let p,m=!1;if(this._type==="wheel"&&a&&l){const _=Re()-this._lastWheelEventTime,x=Math.min((_+5)/200,1),w=l(x);p=c.G.number(a,n,w),x<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._triggerRenderFrame(),delete this._targetZoom,delete this._lastExpectedZoom,delete this._finishTimeout},200)),this._lastExpectedZoom=p,{noInertia:!0,needsRenderFrame:!m,zoomDelta:p-t.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(t){let n=c.cz;if(this._prevEase){const a=this._prevEase,l=(Re()-a.start)/a.duration,p=a.easing(l+.01)-a.easing(l),m=.27/Math.sqrt(p*p+1e-4)*.01,_=Math.sqrt(.0729-m*m);n=c.cw(m,_,.25,1)}return this._prevEase={start:Re(),duration:t,easing:n},n}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,delete this._lastExpectedZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}}class zl{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 ou{constructor(t){this._tr=new dn(t),this.reset()}reset(){this._active=!1}dblclick(t,n){return t.preventDefault(),{cameraAnimation:a=>{a.easeTo({duration:300,zoom:c.cx(this._tr.zoom+(t.shiftKey?-1:1),a.getZoomSnap()),around:this._tr.unproject(n)},{originalEvent:t})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class gh{constructor(){this._tap=new Ta({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset()}touchstart(t,n,a){if(!this._swipePoint)if(this._tapTime){const l=n[0],p=t.timeStamp-this._tapTime<500,m=this._tapPoint.dist(l)<30;p&&m?a.length>0&&(this._swipePoint=l,this._swipeTouch=a[0].identifier):this.reset()}else this._tap.touchstart(t,n,a)}touchmove(t,n,a){if(this._tapTime){if(this._swipePoint){if(a[0].identifier!==this._swipeTouch)return;const l=n[0],p=l.y-this._swipePoint.y;return this._swipePoint=l,t.preventDefault(),this._active=!0,{zoomDelta:p/128}}}else this._tap.touchmove(t,n,a)}touchend(t,n,a){if(this._tapTime)this._swipePoint&&a.length===0&&this.reset();else{const l=this._tap.touchend(t,n,a);l&&(this._tapTime=t.timeStamp,this._tapPoint=l)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class kr{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 Ma{constructor(t,n,a,l){this._pitchWithRotate=t.pitchWithRotate,this._rollEnabled=t.rollEnabled,this._mouseRotate=n,this._mousePitch=a,this._mouseRoll=l}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable(),this._rollEnabled&&this._mouseRoll.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable(),this._mouseRoll.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())&&(!this._rollEnabled||this._mouseRoll.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()||this._mouseRoll.isActive()}}class Ue{constructor(t,n,a,l){this._el=t,this._touchZoom=n,this._touchRotate=a,this._tapDragZoom=l,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()}}class Ye{constructor(t,n){this._bypassKey=navigator.userAgent.indexOf("Mac")!==-1?"metaKey":"ctrlKey",this._map=t,this._options=n,this._enabled=!1}isActive(){return!1}reset(){}_setupUI(){if(this._container)return;const t=this._map.getCanvasContainer();t.classList.add("maplibregl-cooperative-gestures"),this._container=de.create("div","maplibregl-cooperative-gesture-screen",t);let n=this._map._getUIString("CooperativeGesturesHandler.WindowsHelpText");this._bypassKey==="metaKey"&&(n=this._map._getUIString("CooperativeGesturesHandler.MacHelpText"));const a=this._map._getUIString("CooperativeGesturesHandler.MobileHelpText"),l=document.createElement("div");l.className="maplibregl-desktop-message",l.textContent=n,this._container.appendChild(l);const p=document.createElement("div");p.className="maplibregl-mobile-message",p.textContent=a,this._container.appendChild(p),this._container.setAttribute("aria-hidden","true")}_destroyUI(){this._container&&(de.remove(this._container),this._map.getCanvasContainer().classList.remove("maplibregl-cooperative-gestures")),delete this._container}enable(){this._setupUI(),this._enabled=!0}disable(){this._enabled=!1,this._destroyUI()}isEnabled(){return this._enabled}isBypassed(t){return t[this._bypassKey]}notifyGestureBlocked(t,n){this._enabled&&(this._map.fire(new c.l("cooperativegestureprevented",{gestureType:t,originalEvent:n})),this._container.classList.add("maplibregl-show"),setTimeout(()=>{this._container.classList.remove("maplibregl-show")},100))}}const Fn=d=>d.zoom||d.drag||d.roll||d.pitch||d.rotate;class lu extends c.l{}function zs(d){return d.panDelta&&d.panDelta.mag()||d.zoomDelta||d.bearingDelta||d.pitchDelta||d.rollDelta}class Bi{get _ownerDocument(){var t;return((t=this._el)===null||t===void 0?void 0:t.ownerDocument)||document}get _ownerWindow(){var t,n;return((n=(t=this._el)===null||t===void 0?void 0:t.ownerDocument)===null||n===void 0?void 0:n.defaultView)||window}constructor(t,n){this.handleWindowEvent=l=>{this.handleEvent(l,`${l.type}Window`)},this.handleEvent=(l,p)=>{if(l.type==="blur")return void this.stop(!0);this._updatingCamera=!0;const m=l.type==="renderFrame"?void 0:l,_={needsRenderFrame:!1},x={},w={};for(const{handlerName:M,handler:z,allowed:F}of this._handlers){if(!z.isEnabled())continue;let N;if(this._blockedByActive(w,F,M))z.reset();else if(z[p||l.type]){if(c.cA(l,p||l.type)){const G=de.mousePos(this._map.getCanvas(),l);N=z[p||l.type](l,G)}else if(c.cB(l,p||l.type)){const G=this._getMapTouches(l.touches),U=de.touchPos(this._map.getCanvas(),G);N=z[p||l.type](l,U,G)}else c.cC(p||l.type)||(N=z[p||l.type](l));this.mergeHandlerResult(_,x,N,M,m),N&&N.needsRenderFrame&&this._triggerRenderFrame()}(N||z.isActive())&&(w[M]=z)}const T={};for(const M in this._previousActiveHandlers)w[M]||(T[M]=m);this._previousActiveHandlers=w,(Object.keys(T).length||zs(_))&&(this._changes.push([_,x,T]),this._triggerRenderFrame()),(Object.keys(w).length||zs(_))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:I}=_;I&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],I(this._map))},this._map=t,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new ph(t),this._bearingSnap=n.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(n);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],[this._ownerDocument,"mousemove",{capture:!0}],[this._ownerDocument,"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],[this._ownerWindow,"blur",void 0]];for(const[l,p,m]of this._listeners)de.addEventListener(l,p,l===this._ownerDocument?this.handleWindowEvent:this.handleEvent,m)}destroy(){for(const[t,n,a]of this._listeners)de.removeEventListener(t,n,t===this._ownerDocument?this.handleWindowEvent:this.handleEvent,a)}_addDefaultHandlers(t){const n=this._map,a=n.getCanvasContainer();this._add("mapEvent",new fh(n,t));const l=n.boxZoom=new Zr(n,t);this._add("boxZoom",l),t.interactive&&t.boxZoom&&l.enable();const p=n.cooperativeGestures=new Ye(n,t.cooperativeGestures);this._add("cooperativeGestures",p),t.cooperativeGestures&&p.enable();const m=new tu(n),_=new ou(n);n.doubleClickZoom=new zl(_,m),this._add("tapZoom",m),this._add("clickZoom",_),t.interactive&&t.doubleClickZoom&&n.doubleClickZoom.enable();const x=new gh;this._add("tapDragZoom",x);const w=n.touchPitch=new fn(n);this._add("touchPitch",w),t.interactive&&t.touchPitch&&n.touchPitch.enable(t.touchPitch);const T=()=>n.project(n.getCenter()),I=function({enable:Z,clickTolerance:J,aroundCenter:te=!0,minPixelCenterThreshold:X=100,rotateDegreesPerPixelMoved:ae=.8},_e){const fe=new ns({checkCorrectEvent:pe=>de.mouseButton(pe)===0&&pe.ctrlKey||de.mouseButton(pe)===2&&!pe.ctrlKey});return new pn({clickTolerance:J,move:(pe,ge)=>{const De=_e();if(te&&Math.abs(De.y-pe.y)>X)return{bearingDelta:c.cy(new c.P(pe.x,ge.y),ge,De)};let ze=(ge.x-pe.x)*ae;return te&&ge.y<De.y&&(ze=-ze),{bearingDelta:ze}},moveStateManager:fe,enable:Z,assignEvents:bo})}(t,T),M=function({enable:Z,clickTolerance:J,pitchDegreesPerPixelMoved:te=-.5}){const X=new ns({checkCorrectEvent:ae=>de.mouseButton(ae)===0&&ae.ctrlKey||de.mouseButton(ae)===2});return new pn({clickTolerance:J,move:(ae,_e)=>({pitchDelta:(_e.y-ae.y)*te}),moveStateManager:X,enable:Z,assignEvents:bo})}(t),z=function({enable:Z,clickTolerance:J,rollDegreesPerPixelMoved:te=.3},X){const ae=new ns({checkCorrectEvent:_e=>de.mouseButton(_e)===2&&_e.ctrlKey});return new pn({clickTolerance:J,move:(_e,fe)=>{const pe=X();let ge=(fe.x-_e.x)*te;return fe.y<pe.y&&(ge=-ge),{rollDelta:ge}},moveStateManager:ae,enable:Z,assignEvents:bo})}(t,T);n.dragRotate=new Ma(t,I,M,z),this._add("mouseRotate",I,["mousePitch"]),this._add("mousePitch",M,["mouseRotate","mouseRoll"]),this._add("mouseRoll",z,["mousePitch"]),t.interactive&&t.dragRotate&&n.dragRotate.enable();const F=function({enable:Z,clickTolerance:J}){const te=new ns({checkCorrectEvent:X=>de.mouseButton(X)===0&&!X.ctrlKey});return new pn({clickTolerance:J,move:(X,ae)=>({around:ae,panDelta:ae.sub(X)}),activateOnStart:!0,moveStateManager:te,enable:Z,assignEvents:bo})}(t),N=new ru(t,n);n.dragPan=new kr(a,F,N),this._add("mousePan",F),this._add("touchPan",N,["touchZoom","touchRotate"]),t.interactive&&t.dragPan&&n.dragPan.enable(t.dragPan);const G=new su,U=new nu;n.touchZoomRotate=new Ue(a,U,G,x),this._add("touchRotate",G,["touchPan","touchZoom"]),this._add("touchZoom",U,["touchPan","touchRotate"]),t.interactive&&t.touchZoomRotate&&n.touchZoomRotate.enable(t.touchZoomRotate),this._add("blockableMapEvent",new Qc(n));const $=n.scrollZoom=new Dl(n,()=>this._triggerRenderFrame());this._add("scrollZoom",$,["mousePan"]),t.interactive&&t.scrollZoom&&n.scrollZoom.enable(t.scrollZoom);const K=n.keyboard=new au(n);this._add("keyboard",K),t.interactive&&t.keyboard&&n.keyboard.enable()}_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!!Fn(this._eventsInProgress)||this.isZooming()}_blockedByActive(t,n,a){for(const l in t)if(l!==a&&(!n||n.indexOf(l)<0))return!0;return!1}_getMapTouches(t){const n=[];for(const a of t)this._el.contains(a.target)&&n.push(a);return n}mergeHandlerResult(t,n,a,l,p){if(!a)return;c.e(t,a);const m={handlerName:l,originalEvent:a.originalEvent||p};a.zoomDelta!==void 0&&(n.zoom=m),a.panDelta!==void 0&&(n.drag=m),a.rollDelta!==void 0&&(n.roll=m),a.pitchDelta!==void 0&&(n.pitch=m),a.bearingDelta!==void 0&&(n.rotate=m)}_applyChanges(){const t={},n={},a={};for(const[l,p,m]of this._changes)l.panDelta&&(t.panDelta=(t.panDelta||new c.P(0,0))._add(l.panDelta)),l.zoomDelta&&(t.zoomDelta=(t.zoomDelta||0)+l.zoomDelta),l.bearingDelta&&(t.bearingDelta=(t.bearingDelta||0)+l.bearingDelta),l.pitchDelta&&(t.pitchDelta=(t.pitchDelta||0)+l.pitchDelta),l.rollDelta&&(t.rollDelta=(t.rollDelta||0)+l.rollDelta),l.around!==void 0&&(t.around=l.around),l.pinchAround!==void 0&&(t.pinchAround=l.pinchAround),l.noInertia&&(t.noInertia=l.noInertia),c.e(n,p),c.e(a,m);this._updateMapTransform(t,n,a),this._changes=[]}_updateMapTransform(t,n,a){const l=this._map,p=l._getTransformForUpdate(),m=l.terrain;if(!(zs(t)||m&&this._terrainMovement))return this._fireEvents(n,a,!0);l._stop(!0);let{panDelta:_,zoomDelta:x,bearingDelta:w,pitchDelta:T,rollDelta:I,around:M,pinchAround:z}=t;z!==void 0&&(M=z),M=M||l.transform.centerPoint,m&&!p.isPointOnMapSurface(M)&&(M=p.centerPoint);const F={panDelta:_,zoomDelta:x,rollDelta:I,pitchDelta:T,bearingDelta:w,around:M};this._map.cameraHelper.useGlobeControls&&!p.isPointOnMapSurface(M)&&(M=p.centerPoint);const N=M.distSqr(p.centerPoint)<.01?p.center:p.screenPointToLocation(_?M.sub(_):M);this._handleMapControls({terrain:m,tr:p,deltasForHelper:F,preZoomAroundLoc:N,combinedEventsInProgress:n,panDelta:_}),l._applyUpdatedTransform(p),this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(n,a,!0)}_handleMapControls({terrain:t,tr:n,deltasForHelper:a,preZoomAroundLoc:l,combinedEventsInProgress:p,panDelta:m}){const _=this._map.cameraHelper;if(_.handleMapControlsRollPitchBearingZoom(a,n),t)return _.useGlobeControls?(this._terrainMovement||!p.drag&&!p.zoom||(this._terrainMovement=!0,this._map._elevationFreeze=!0),void _.handleMapControlsPan(a,n,l)):this._terrainMovement||!p.drag&&!p.zoom?void(p.drag&&this._terrainMovement&&m?n.setCenter(n.screenPointToLocation(n.centerPoint.sub(m))):_.handleMapControlsPan(a,n,l)):(this._terrainMovement=!0,this._map._elevationFreeze=!0,void _.handleMapControlsPan(a,n,l));_.handleMapControlsPan(a,n,l)}_fireEvents(t,n,a){const l=Fn(this._eventsInProgress),p=Fn(t),m={};for(const I in t){const{originalEvent:M}=t[I];this._eventsInProgress[I]||(m[`${I}start`]=M),this._eventsInProgress[I]=t[I]}!l&&p&&this._fireEvent("movestart",p.originalEvent);for(const I in m)this._fireEvent(I,m[I]);p&&this._fireEvent("move",p.originalEvent);for(const I in t){const{originalEvent:M}=t[I];this._fireEvent(I,M)}const _={};let x;for(const I in this._eventsInProgress){const{handlerName:M,originalEvent:z}=this._eventsInProgress[I];this._handlersById[M].isActive()||(delete this._eventsInProgress[I],x=n[M]||z,_[`${I}end`]=x)}for(const I in _)this._fireEvent(I,_[I]);const w=Fn(this._eventsInProgress),T=(l||p)&&!w;if(T&&this._terrainMovement){this._map._elevationFreeze=!1,this._terrainMovement=!1;const I=this._map._getTransformForUpdate();this._map.getCenterClampedToGround()&&I.recalculateZoomAndCenter(this._map.terrain),this._map._applyUpdatedTransform(I)}if(a&&T){this._updatingCamera=!0;const I=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),M=z=>z!==0&&-this._bearingSnap<z&&z<this._bearingSnap;!I||!I.essential&&st.prefersReducedMotion?(this._map.fire(new c.l("moveend",{originalEvent:x})),M(this._map.getBearing())&&this._map.resetNorth()):(M(I.bearing||this._map.getBearing())&&(I.bearing=0),I.freezeElevation=!0,this._map.easeTo(I,{originalEvent:x})),this._updatingCamera=!1}}_fireEvent(t,n){this._map.fire(new c.l(t,n?{originalEvent:n}:{}))}_requestFrame(){return this._map.triggerRepaint(),this._map._renderTaskQueue.add(t=>{delete this._frameId,this.handleEvent(new lu("renderFrame",{timeStamp:t})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}class Rr extends c.E{constructor(t,n,a){super(),this._renderFrameCallback=()=>{const l=Math.min((Re()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(l)),l<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this._moving=!1,this._zooming=!1,this.transform=t,this._bearingSnap=a.bearingSnap,this._zoomSnap=a.zoomSnap,this.cameraHelper=n,this.on("moveend",()=>{delete this._requestedCameraState})}migrateProjection(t,n){t.apply(this.transform,!0),this.transform=t,this.cameraHelper=n}getCenter(){return new c.V(this.transform.center.lng,this.transform.center.lat)}setCenter(t,n){return this.jumpTo({center:t},n)}getCenterElevation(){return this.transform.elevation}setCenterElevation(t,n){return this.jumpTo({elevation:t},n),this}getCenterClampedToGround(){return this._centerClampedToGround}setCenterClampedToGround(t){this._centerClampedToGround=t}panBy(t,n,a){return t=c.P.convert(t).mult(-1),this.panTo(this.transform.center,c.e({offset:t},n),a)}panTo(t,n,a){return this.easeTo(c.e({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.e({zoom:t},n),a)}zoomIn(t,n){return this.zoomTo(c.cx(this.getZoom()+1,this._zoomSnap),t,n),this}zoomOut(t,n){return this.zoomTo(c.cx(this.getZoom()-1,this._zoomSnap),t,n),this}getVerticalFieldOfView(){return this.transform.fov}setVerticalFieldOfView(t,n){return t!=this.transform.fov&&(this.transform.setFov(t),this.fire(new c.l("movestart",n)).fire(new c.l("move",n)).fire(new c.l("moveend",n))),this}getBearing(){return this.transform.bearing}setZoomSnap(t){return this._zoomSnap=t,this}getZoomSnap(){return this._zoomSnap}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.e({bearing:t},n),a)}resetNorth(t,n){return this.rotateTo(0,c.e({duration:1e3},t),n),this}resetNorthPitch(t,n){return this.easeTo(c.e({bearing:0,pitch:0,roll: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}getRoll(){return this.transform.roll}setRoll(t,n){return this.jumpTo({roll:t},n),this}cameraForBounds(t,n){t=zt.convert(t).adjustAntiMeridian();const a=n&&n.bearing||0;return this._cameraForBoxAndBearing(t.getNorthWest(),t.getSouthEast(),a,n)}_cameraForBoxAndBearing(t,n,a,l){const p={top:0,bottom:0,right:0,left:0};if(typeof(l=c.e({padding:p,offset:[0,0],maxZoom:this.transform.maxZoom},l)).padding=="number"){const w=l.padding;l.padding={top:w,bottom:w,right:w,left:w}}const m=c.e(p,l.padding);l.padding=m;const _=this.transform,x=new zt(t,n);return this.cameraHelper.cameraForBoxAndBearing(l,m,x,a,_)}fitBounds(t,n,a){return this._fitInternal(this.cameraForBounds(t,n),n,a)}fitScreenCoordinates(t,n,a,l,p){return this._fitInternal(this._cameraForBoxAndBearing(this.transform.screenPointToLocation(c.P.convert(t)),this.transform.screenPointToLocation(c.P.convert(n)),a,l),l,p)}_fitInternal(t,n,a){return t?(delete(n=c.e(t,n)).padding,n.linear?this.easeTo(n,a):this.flyTo(n,a)):this}jumpTo(t,n){this.stop();const a=this._getTransformForUpdate();let l=!1,p=!1,m=!1;const _=a.zoom;this.cameraHelper.handleJumpToCenterZoom(a,t);const x=a.zoom!==_;return"elevation"in t&&a.elevation!==+t.elevation&&a.setElevation(+t.elevation),"bearing"in t&&a.bearing!==+t.bearing&&(l=!0,a.setBearing(+t.bearing)),"pitch"in t&&a.pitch!==+t.pitch&&(p=!0,a.setPitch(+t.pitch)),"roll"in t&&a.roll!==+t.roll&&(m=!0,a.setRoll(+t.roll)),t.padding==null||a.isPaddingEqual(t.padding)||a.setPadding(t.padding),this._applyUpdatedTransform(a),this.fire(new c.l("movestart",n)).fire(new c.l("move",n)),x&&this.fire(new c.l("zoomstart",n)).fire(new c.l("zoom",n)).fire(new c.l("zoomend",n)),l&&this.fire(new c.l("rotatestart",n)).fire(new c.l("rotate",n)).fire(new c.l("rotateend",n)),p&&this.fire(new c.l("pitchstart",n)).fire(new c.l("pitch",n)).fire(new c.l("pitchend",n)),m&&this.fire(new c.l("rollstart",n)).fire(new c.l("roll",n)).fire(new c.l("rollend",n)),this.fire(new c.l("moveend",n))}calculateCameraOptionsFromTo(t,n,a,l=0){const p=c.a9.fromLngLat(t,n),m=c.a9.fromLngLat(a,l),_=m.x-p.x,x=m.y-p.y,w=m.z-p.z,T=Math.hypot(_,x,w);if(T===0)throw new Error("Can't calculate camera options with same From and To");const I=Math.hypot(_,x),M=c.at(this.transform.cameraToCenterDistance/T/this.transform.tileSize),z=180*Math.atan2(_,-x)/Math.PI;let F=180*Math.acos(I/T)/Math.PI;return F=w<0?90-F:90+F,{center:m.toLngLat(),elevation:l,zoom:M,pitch:F,bearing:z}}calculateCameraOptionsFromCameraLngLatAltRotation(t,n,a,l,p){const m=this.transform.calculateCenterFromCameraLngLatAlt(t,n,a,l);return{center:m.center,elevation:m.elevation,zoom:m.zoom,bearing:a,pitch:l,roll:p}}easeTo(t,n){this._stop(!1,t.easeId),((t=c.e({offset:[0,0],duration:500,easing:c.cz},t)).animate===!1||!t.essential&&st.prefersReducedMotion)&&(t.duration=0);const a=this._getTransformForUpdate(),l=this.getBearing(),p=a.pitch,m=a.roll,_="bearing"in t?this._normalizeBearing(t.bearing,l):l,x="pitch"in t?+t.pitch:p,w="roll"in t?this._normalizeBearing(t.roll,m):m,T="padding"in t?t.padding:a.padding,I=c.P.convert(t.offset);let M,z;t.around&&(M=c.V.convert(t.around),z=a.locationToScreenPoint(M));const F={moving:this._moving,zooming:this._zooming,rotating:this._rotating,pitching:this._pitching,rolling:this._rolling},N=this.cameraHelper.handleEaseTo(a,{bearing:_,pitch:x,roll:w,padding:T,around:M,aroundPoint:z,offsetAsPoint:I,offset:t.offset,zoom:t.zoom,center:t.center});return this._rotating=this._rotating||l!==_,this._pitching=this._pitching||x!==p,this._rolling=this._rolling||w!==m,this._padding=!a.isPaddingEqual(T),this._zooming=this._zooming||N.isZooming,this._easeId=t.easeId,this._prepareEase(n,t.noMoveStart,F),this.terrain&&this._prepareElevation(N.elevationCenter),this._ease(G=>{N.easeFunc(G),this.terrain&&!t.freezeElevation&&this._updateElevation(G),this._applyUpdatedTransform(a),this._fireMoveEvents(n)},G=>{this.terrain&&t.freezeElevation&&this._finalizeElevation(),this._afterEase(n,G)},t),this}_prepareEase(t,n,a={}){this._moving=!0,n||a.moving||this.fire(new c.l("movestart",t)),this._zooming&&!a.zooming&&this.fire(new c.l("zoomstart",t)),this._rotating&&!a.rotating&&this.fire(new c.l("rotatestart",t)),this._pitching&&!a.pitching&&this.fire(new c.l("pitchstart",t)),this._rolling&&!a.rolling&&this.fire(new c.l("rollstart",t))}_prepareElevation(t){this._elevationCenter=t,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(t,this.transform.tileZoom),this._elevationFreeze=!0}_updateElevation(t){this._elevationStart!==void 0&&this._elevationCenter!==void 0||this._prepareElevation(this.transform.center),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom));const n=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);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.setElevation(c.G.number(this._elevationStart,this._elevationTarget,t))}_finalizeElevation(){this._elevationFreeze=!1,this.getCenterClampedToGround()&&this.transform.recalculateZoomAndCenter(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate||this.terrain?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_elevateCameraIfInsideTerrain(t){if(!this.terrain&&t.elevation>=0&&t.pitch<=90)return{};const n=t.getCameraLngLat(),a=t.getCameraAltitude(),l=this.terrain?this.terrain.getElevationForLngLatZoom(n,t.zoom):0;if(a<l){const p=this.calculateCameraOptionsFromTo(n,l,t.center,t.elevation);return{pitch:p.pitch,zoom:p.zoom}}return{}}_applyUpdatedTransform(t){const n=[];if(n.push(l=>this._elevateCameraIfInsideTerrain(l)),this.transformCameraUpdate&&n.push(l=>this.transformCameraUpdate(l)),!n.length)return;const a=t.clone();for(const l of n){const p=a.clone(),{center:m,zoom:_,roll:x,pitch:w,bearing:T,elevation:I}=l(p);m&&p.setCenter(m),I!==void 0&&p.setElevation(I),_!==void 0&&p.setZoom(_),x!==void 0&&p.setRoll(x),w!==void 0&&p.setPitch(w),T!==void 0&&p.setBearing(T),a.apply(p,!1)}this.transform.apply(a,!1)}_fireMoveEvents(t){this.fire(new c.l("move",t)),this._zooming&&this.fire(new c.l("zoom",t)),this._rotating&&this.fire(new c.l("rotate",t)),this._pitching&&this.fire(new c.l("pitch",t)),this._rolling&&this.fire(new c.l("roll",t))}_afterEase(t,n){if(this._easeId&&n&&this._easeId===n)return;delete this._easeId;const a=this._zooming,l=this._rotating,p=this._pitching,m=this._rolling;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._rolling=!1,this._padding=!1,a&&this.fire(new c.l("zoomend",t)),l&&this.fire(new c.l("rotateend",t)),p&&this.fire(new c.l("pitchend",t)),m&&this.fire(new c.l("rollend",t)),this.fire(new c.l("moveend",t))}flyTo(t,n){if(!t.essential&&st.prefersReducedMotion){const ge=c.U(t,["center","zoom","bearing","pitch","roll","elevation","padding"]);return this.jumpTo(ge,n)}this.stop(),t=c.e({offset:[0,0],speed:1.2,curve:1.42,easing:c.cz},t);const a=this._getTransformForUpdate(),l=a.bearing,p=a.pitch,m=a.roll,_=a.padding,x="bearing"in t?this._normalizeBearing(t.bearing,l):l,w="pitch"in t?+t.pitch:p,T="roll"in t?this._normalizeBearing(t.roll,m):m,I="padding"in t?t.padding:a.padding,M=c.P.convert(t.offset);let z=a.centerPoint.add(M);const F=a.screenPointToLocation(z),N=this.cameraHelper.handleFlyTo(a,{bearing:x,pitch:w,roll:T,padding:I,locationAtOffset:F,offsetAsPoint:M,center:t.center,minZoom:t.minZoom,zoom:t.zoom});let G=t.curve;const U=Math.max(a.width,a.height),$=U/N.scaleOfZoom,K=N.pixelPathLength;typeof N.scaleOfMinZoom=="number"&&(G=Math.sqrt(U/N.scaleOfMinZoom/K*2));const Z=G*G;function J(ge){const De=($*$-U*U+(ge?-1:1)*Z*Z*K*K)/(2*(ge?$:U)*Z*K);return Math.log(Math.sqrt(De*De+1)-De)}function te(ge){return(Math.exp(ge)-Math.exp(-ge))/2}function X(ge){return(Math.exp(ge)+Math.exp(-ge))/2}const ae=J(!1);let _e=function(ge){return X(ae)/X(ae+G*ge)},fe=function(ge){return U*((X(ae)*(te(De=ae+G*ge)/X(De))-te(ae))/Z)/K;var De},pe=(J(!0)-ae)/G;if(Math.abs(K)<2e-6||!isFinite(pe)){if(Math.abs(U-$)<1e-6)return this.easeTo(t,n);const ge=$<U?-1:1;pe=Math.abs(Math.log($/U))/G,fe=()=>0,_e=De=>Math.exp(ge*G*De)}return t.duration="duration"in t?+t.duration:1e3*pe/("screenSpeed"in t?+t.screenSpeed/G:+t.speed),t.maxDuration&&t.duration>t.maxDuration&&(t.duration=0),this._zooming=!0,this._rotating=l!==x,this._pitching=w!==p,this._rolling=T!==m,this._padding=!a.isPaddingEqual(I),this._prepareEase(n,!1),this.terrain&&this._prepareElevation(N.targetCenter),this._ease(ge=>{const De=ge*pe,ze=1/_e(De),ve=fe(De);this._rotating&&a.setBearing(c.G.number(l,x,ge)),this._pitching&&a.setPitch(c.G.number(p,w,ge)),this._rolling&&a.setRoll(c.G.number(m,T,ge)),this._padding&&(a.interpolatePadding(_,I,ge),z=a.centerPoint.add(M)),N.easeFunc(ge,ze,ve,z),this.terrain&&!t.freezeElevation&&this._updateElevation(ge),this._applyUpdatedTransform(a),this._fireMoveEvents(n)},()=>{this.terrain&&t.freezeElevation&&this._finalizeElevation(),this._afterEase(n)},t),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(t,n){var a;if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){const l=this._onEaseEnd;delete this._onEaseEnd,l.call(this,n)}return t||(a=this.handlers)===null||a===void 0||a.stop(!1),this}_ease(t,n,a){a.animate===!1||a.duration===0?(t(1),n()):(this._easeStart=Re(),this._easeOptions=a,this._onEaseFrame=t,this._onEaseEnd=n,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(t,n){t=c.W(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}queryTerrainElevation(t){return this.terrain?this.terrain.getElevationForLngLat(c.V.convert(t),this.transform):null}}const kl={compact:!0,customAttribution:'<a href="https://maplibre.org/" target="_blank">MapLibre</a>'};class cu{constructor(t=kl){this._toggleAttribution=()=>{this._container.classList.contains("maplibregl-compact")&&(this._container.classList.contains("maplibregl-compact-show")?(this._container.setAttribute("open",""),this._container.classList.remove("maplibregl-compact-show")):(this._container.classList.add("maplibregl-compact-show"),this._container.removeAttribute("open")))},this._updateData=n=>{!n||n.sourceDataType!=="metadata"&&n.sourceDataType!=="visibility"&&n.dataType!=="style"&&n.type!=="terrain"||this._updateAttributions()},this._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"))},this._updateCompactMinimize=()=>{this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show")},this.options=t}getDefaultPosition(){return"bottom-right"}onAdd(t){return this._map=t,this._compact=this.options.compact,this._container=de.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=de.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=de.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(){de.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)}_updateAttributions(){if(!this._map.style)return;let t=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?t=t.concat(this.options.customAttribution.map(l=>typeof l!="string"?"":l)):typeof this.options.customAttribution=="string"&&t.push(this.options.customAttribution)),this._map.style.stylesheet){const l=this._map.style.stylesheet;this.styleOwner=l.owner,this.styleId=l.id}const n=this._map.style.tileManagers;for(const l in n){const p=n[l];if(p.used||p.usedForTerrain){const m=p.getSource();m.attribution&&t.indexOf(m.attribution)<0&&t.push(m.attribution)}}t=t.filter(l=>String(l).trim()),t.sort((l,p)=>l.length-p.length),t=t.filter((l,p)=>{for(let m=p+1;m<t.length;m++)if(t[m].indexOf(l)>=0)return!1;return!0});const a=t.join(" | ");a!==this._attribHTML&&(this._attribHTML=a,t.length?(this._innerContainer.innerHTML=de.sanitize(a),this._container.classList.remove("maplibregl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty"),this._updateCompact(),this._editLink=null)}}class uu{constructor(t={}){this._updateCompact=()=>{const n=this._container.children;if(n.length){const a=n[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&a.classList.add("maplibregl-compact"):a.classList.remove("maplibregl-compact")}},this.options=t}getDefaultPosition(){return"bottom-left"}onAdd(t){this._map=t,this._compact=this.options&&this.options.compact,this._container=de.create("div","maplibregl-ctrl");const n=de.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(){de.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0}}class _h{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 l of a)if(l.id===t)return void(l.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=[]}}var Ia=c.aU([{name:"a_pos3d",type:"Int16",components:3}]);class Nt extends c.E{constructor(t){super(),this._lastTilesetChange=Re(),this.tileManager=t,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.deltaZoom=1,this.tileSize=t._source.tileSize*2**this.deltaZoom,t.usedForTerrain=!0,t.tileSize=this.tileSize}destruct(){this.tileManager.usedForTerrain=!1,this.tileManager.tileSize=null}getSource(){return this.tileManager._source}update(t,n){this.tileManager.update(t,n),this._renderableTilesKeys=[];const a={};for(const l of It(t,{tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:n,calculateTileZoom:this.tileManager._source.calculateTileZoom}))a[l.key]=!0,this._renderableTilesKeys.push(l.key),this._tiles[l.key]||(l.terrainRttPosMatrix32f=new Float64Array(16),c.c7(l.terrainRttPosMatrix32f,0,c.a5,c.a5,0,0,1),this._tiles[l.key]=new ce(l,this.tileSize),this._lastTilesetChange=Re());for(const l in this._tiles)a[l]||delete this._tiles[l]}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,n){return n?this._getTerrainCoordsForTileRanges(t,n):this._getTerrainCoordsForRegularTile(t)}_getTerrainCoordsForRegularTile(t){const n={};for(const a of this._renderableTilesKeys){const l=this._tiles[a].tileID,p=t.clone(),m=c.bk();if(l.canonical.equals(t.canonical))c.c7(m,0,c.a5,c.a5,0,0,1);else if(l.canonical.isChildOf(t.canonical)){const _=l.canonical.z-t.canonical.z,x=l.canonical.x-(l.canonical.x>>_<<_),w=l.canonical.y-(l.canonical.y>>_<<_),T=c.a5>>_;c.c7(m,0,T,T,0,0,1),c.O(m,m,[-x*T,-w*T,0])}else{if(!t.canonical.isChildOf(l.canonical))continue;{const _=t.canonical.z-l.canonical.z,x=t.canonical.x-(t.canonical.x>>_<<_),w=t.canonical.y-(t.canonical.y>>_<<_),T=c.a5>>_;c.c7(m,0,c.a5,c.a5,0,0,1),c.O(m,m,[x*T,w*T,0]),c.Q(m,m,[1/2**_,1/2**_,0])}}p.terrainRttPosMatrix32f=new Float32Array(m),n[a]=p}return n}_getTerrainCoordsForTileRanges(t,n){const a={};for(const l of this._renderableTilesKeys){const p=this._tiles[l].tileID;if(!this._isWithinTileRanges(p,n))continue;const m=t.clone(),_=c.bk();if(p.canonical.z===t.canonical.z){const x=t.canonical.x-p.canonical.x+t.wrap*(1<<t.canonical.z),w=t.canonical.y-p.canonical.y;c.c7(_,0,c.a5,c.a5,0,0,1),c.O(_,_,[x*c.a5,w*c.a5,0])}else if(p.canonical.z>t.canonical.z){const x=p.canonical.z-t.canonical.z,w=p.canonical.x-(p.canonical.x>>x<<x)+t.wrap*(1<<p.canonical.z),T=p.canonical.y-(p.canonical.y>>x<<x),I=t.canonical.x-(p.canonical.x>>x),M=t.canonical.y-(p.canonical.y>>x),z=c.a5>>x;c.c7(_,0,z,z,0,0,1),c.O(_,_,[-w*z+I*c.a5,-T*z+M*c.a5,0])}else{const x=t.canonical.z-p.canonical.z,w=t.canonical.x-(t.canonical.x>>x<<x)+t.wrap*(1<<t.canonical.z),T=t.canonical.y-(t.canonical.y>>x<<x),I=(t.canonical.x>>x)-p.canonical.x,M=(t.canonical.y>>x)-p.canonical.y,z=c.a5<<x;c.c7(_,0,z,z,0,0,1),c.O(_,_,[w*c.a5+I*z,T*c.a5+M*z,0])}m.terrainRttPosMatrix32f=new Float32Array(_),a[l]=m}return a}getSourceTile(t,n){const a=this.tileManager._source;let l=t.overscaledZ-this.deltaZoom;if(l>a.maxzoom&&(l=a.maxzoom),l<a.minzoom)return;this._sourceTileCache[t.key]||(this._sourceTileCache[t.key]=t.scaledTo(l).key);let p=this.findTileInCaches(this._sourceTileCache[t.key]);if(!(p!=null&&p.dem)&&n)for(;l>=a.minzoom&&!(p!=null&&p.dem);)p=this.findTileInCaches(t.scaledTo(l--).key);return p}findTileInCaches(t){let n=this.tileManager.getTileByID(t);return n||(n=this.tileManager._outOfViewCache.getByKey(t),n)}anyTilesAfterTime(t=Date.now()){return this._lastTilesetChange>=t}_isWithinTileRanges(t,n){const a=n[t.canonical.z];return!!a&&(t.wrap>a.minWrap||t.wrap<a.maxWrap||t.canonical.x>=a.minTileXWrapped&&t.canonical.x<=a.maxTileXWrapped&&t.canonical.y>=a.minTileY&&t.canonical.y<=a.maxTileY)}}class Kt{constructor(t,n,a){this._meshCache={},this.painter=t,this.tileManager=new Nt(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,l=c.a5){var p;const m=t.normalizeCoordinates(n,a,l);if(!m)return 0;const _=this.getTerrainData(m.tileID),x=(p=_.tile)===null||p===void 0?void 0:p.dem;if(!x)return 0;const w=c.cD([],[m.x/l*c.a5,m.y/l*c.a5],_.u_terrain_matrix),T=[w[0]*x.dim,w[1]*x.dim],I=Math.floor(T[0]),M=Math.floor(T[1]),z=T[0]-I,F=T[1]-M;return x.get(I,M)*(1-z)*(1-F)+x.get(I+1,M)*z*(1-F)+x.get(I,M+1)*(1-z)*F+x.get(I+1,M+1)*z*F}getElevationForLngLatZoom(t,n){if(!c.cE(n,t.wrap()))return 0;const{tileID:a,mercatorX:l,mercatorY:p}=this._getOverscaledTileIDFromLngLatZoom(t,n);return this.getElevation(a,l%c.a5,p%c.a5,c.a5)}getElevationForLngLat(t,n){const a=It(n,{maxzoom:this.tileManager.maxzoom,minzoom:this.tileManager.minzoom,tileSize:512,terrain:this});let l=0;for(const p of a)p.canonical.z>l&&(l=Math.min(p.canonical.z,this.tileManager.maxzoom));return this.getElevationForLngLatZoom(t,l)}getElevation(t,n,a,l=c.a5){return this.getDEMElevation(t,n,a,l)*this.exaggeration}getTerrainData(t){if(!this._emptyDemTexture){const l=this.painter.context,p=new c.R({width:1,height:1},new Uint8Array(4));this._emptyDepthTexture=new c.T(l,p,l.gl.RGBA,{premultiply:!1}),this._emptyDemUnpack=[0,0,0,0],this._emptyDemTexture=new c.T(l,new c.R({width:1,height:1}),l.gl.RGBA,{premultiply:!1}),this._emptyDemTexture.bind(l.gl.NEAREST,l.gl.CLAMP_TO_EDGE),this._emptyDemMatrix=c.ar([])}const n=this.tileManager.getSourceTile(t,!0);if(n&&n.dem&&(!n.demTexture||n.needsTerrainPrepare)){const l=this.painter.context;n.demTexture=this.painter.getTileTexture(n.dem.stride),n.demTexture?n.demTexture.update(n.dem.getPixels(),{premultiply:!1}):n.demTexture=new c.T(l,n.dem.getPixels(),l.gl.RGBA,{premultiply:!1}),n.demTexture.bind(l.gl.NEAREST,l.gl.CLAMP_TO_EDGE),n.needsTerrainPrepare=!1}const a=n&&n.toString()+n.tileID.key+t.key;if(a&&!this._demMatrixCache[a]){const l=this.tileManager.getSource().maxzoom;let p=t.canonical.z-n.tileID.canonical.z;t.overscaledZ>t.canonical.z&&(t.canonical.z>=l?p=t.canonical.z-l:c.w("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),x=c.cF(new Float64Array(16),[1/(c.a5<<p),1/(c.a5<<p),0]);c.O(x,x,[m*c.a5,_*c.a5,0]),this._demMatrixCache[t.key]={matrix:x,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,l=n.height/devicePixelRatio;return!this._fbo||this._fbo.width===a&&this._fbo.height===l||(this._fbo.destroy(),this._fboCoordsTexture.destroy(),this._fboDepthTexture.destroy(),delete this._fbo,delete this._fboDepthTexture,delete this._fboCoordsTexture),this._fboCoordsTexture||(this._fboCoordsTexture=new c.T(n.context,{width:a,height:l,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 c.T(n.context,{width:a,height:l,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,l,!0,!1),this._fbo.depthAttachment.set(n.context.createRenderbuffer(n.context.gl.DEPTH_COMPONENT16,a,l))),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.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(n.buffer)),l=new c.T(t,a,t.gl.RGBA,{premultiply:!1});return l.bind(t.gl.NEAREST,t.gl.CLAMP_TO_EDGE),this._coordsTexture=l,l}pointCoordinate(t){this.painter.maybeDrawDepthAndCoords(!0);const n=new Uint8Array(4),a=this.painter.context,l=a.gl,p=Math.round(t.x*this.painter.pixelRatio/devicePixelRatio),m=Math.round(t.y*this.painter.pixelRatio/devicePixelRatio),_=Math.round(this.painter.height/devicePixelRatio);a.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),l.readPixels(p,_-m-1,1,1,l.RGBA,l.UNSIGNED_BYTE,n),a.bindFramebuffer.set(null);const x=n[0]+(n[2]>>4<<8),w=n[1]+((15&n[2])<<8),T=this.coordsIndex[255-n[3]],I=T&&this.tileManager.getTileByID(T);if(!I)return null;const M=this._coordsTextureSize,z=(1<<I.tileID.canonical.z)*M;return new c.a9((I.tileID.canonical.x*M+x)/z+I.tileID.wrap,(I.tileID.canonical.y*M+w)/z,this.getElevation(I.tileID,x,w,M))}depthAtPoint(t){const n=new Uint8Array(4),a=this.painter.context,l=a.gl;return a.bindFramebuffer.set(this.getFramebuffer("depth").framebuffer),l.readPixels(t.x,this.painter.height/devicePixelRatio-t.y-1,1,1,l.RGBA,l.UNSIGNED_BYTE,n),a.bindFramebuffer.set(null),(n[0]/16777216+n[1]/65536+n[2]/256+n[3])/256}getTerrainMesh(t){var n;const a=((n=this.painter.style.projection)===null||n===void 0?void 0:n.transitionState)>0,l=a&&t.canonical.y===0,p=a&&t.canonical.y===(1<<t.canonical.z)-1,m=`m_${l?"n":""}_${p?"s":""}`;if(this._meshCache[m])return this._meshCache[m];const _=this.painter.context,x=new c.cG,w=new c.aY,T=this.meshSize,I=c.a5/T,M=T*T;for(let X=0;X<=T;X++)for(let ae=0;ae<=T;ae++)x.emplaceBack(ae*I,X*I,0);for(let X=0;X<M;X+=T+1)for(let ae=0;ae<T;ae++)w.emplaceBack(ae+X,T+ae+X+1,T+ae+X+2),w.emplaceBack(ae+X,T+ae+X+2,ae+X+1);const z=x.length,F=z+(T+1),N=(T+1)*T,G=l?c.br:0,U=l?0:1,$=p?c.bs:c.a5,K=p?0:1;for(let X=0;X<=T;X++)x.emplaceBack(X*I,G,U);for(let X=0;X<=T;X++)x.emplaceBack(X*I,$,K);for(let X=0;X<T;X++)w.emplaceBack(N+X,F+X,F+X+1),w.emplaceBack(N+X,F+X+1,N+X+1),w.emplaceBack(0+X,z+X+1,z+X),w.emplaceBack(0+X,0+X+1,z+X+1);const Z=x.length,J=Z+2*(T+1);for(const X of[0,1])for(let ae=0;ae<=T;ae++)for(const _e of[0,1])x.emplaceBack(X*c.a5,ae*I,_e);for(let X=0;X<2*T;X+=2)w.emplaceBack(Z+X,Z+X+1,Z+X+3),w.emplaceBack(Z+X,Z+X+3,Z+X+2),w.emplaceBack(J+X,J+X+3,J+X+1),w.emplaceBack(J+X,J+X+2,J+X+3);const te=new bs(_.createVertexBuffer(x,Ia.members),_.createIndexBuffer(w),c.aX.simpleSegment(0,0,x.length,w.length));return this._meshCache[m]=te,te}getMeshFrameDelta(t){return 2*Math.PI*c.bE/Math.pow(2,Math.max(t,0))/5}getMinTileElevationForLngLatZoom(t,n){var a;if(!c.cE(n,t.wrap()))return 0;const{tileID:l}=this._getOverscaledTileIDFromLngLatZoom(t,n);return(a=this.getMinMaxElevation(l).minElevation)!==null&&a!==void 0?a:0}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}_getOverscaledTileIDFromLngLatZoom(t,n){const a=c.a9.fromLngLat(t.wrap()),l=(1<<n)*c.a5,p=a.x*l,m=a.y*l,_=Math.floor(p/c.a5),x=Math.floor(m/c.a5);return{tileID:new c.a2(n,0,n,_,x),mercatorX:p,mercatorY:m}}}class hu{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,!0),a=new c.T(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),this._context.extTextureFilterAnisotropic&&this._context.gl.texParameterf(this._context.gl.TEXTURE_2D,this._context.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,this._context.extTextureFilterAnisotropicMax),n.depthAttachment.set(this._context.createRenderbuffer(this._context.gl.DEPTH_STENCIL,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 $r={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0,"color-relief":!0};class So{constructor(t,n){this.painter=t,this.terrain=n,this.pool=new hu(t.context,30,n.tileManager.tileSize*n.qualityFactor)}destruct(){this.pool.destruct()}getTexture(t){return this.pool.getObjectForId(t.rtt[this._stacks.length-1].id).texture}prepareForRender(t,n){var a,l;this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.tileManager.getRenderableTiles(),this._renderableLayerIds=t._order.filter(p=>!t._layers[p].isHidden(n)),this._coordsAscending={};for(const p in t.tileManagers){this._coordsAscending[p]={};const m=t.tileManagers[p].getVisibleCoordinates(),_=t.tileManagers[p].getSource(),x=_ instanceof nn?_.terrainTileRanges:null;for(const w of m){const T=this.terrain.tileManager.getTerrainCoords(w,x);for(const I in T)this._coordsAscending[p][I]||(this._coordsAscending[p][I]=[]),this._coordsAscending[p][I].push(T[I])}}this._rttFingerprints={};for(const p of t._order){const m=t._layers[p],_=m.source;if($r[m.type]&&!this._rttFingerprints[_]){this._rttFingerprints[_]={};const x=(l=(a=t.tileManagers[_])===null||a===void 0?void 0:a.getState().revision)!==null&&l!==void 0?l:0;for(const w in this._coordsAscending[_])this._rttFingerprints[_][w]=`${this._coordsAscending[_][w].map(T=>T.key).sort().join()}#${x}`}}for(const p of this._renderableTiles)for(const m in this._rttFingerprints){const _=this._rttFingerprints[m][p.tileID.key];_&&_!==p.rttFingerprint[m]&&(p.rtt=[])}}renderLayer(t,n){if(t.isHidden(this.painter.transform.zoom))return!1;const a=Object.assign(Object.assign({},n),{isRenderingToTexture:!0}),l=t.type,p=this.painter,m=this._renderableLayerIds[this._renderableLayerIds.length-1]===t.id;if($r[l]&&(this._prevType&&$r[this._prevType]||this._stacks.push([]),this._prevType=l,this._stacks[this._stacks.length-1].push(t.id),!m))return!0;if($r[this._prevType]||$r[l]&&m){this._prevType=l;const _=this._stacks.length-1,x=this._stacks[_]||[];for(const w of this._renderableTiles){if(this.pool.isFull()&&(bl(this.painter,this.terrain,this._rttTiles,a),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(w),w.rtt[_]){const I=this.pool.getObjectForId(w.rtt[_].id);if(I.stamp===w.rtt[_].stamp){this.pool.useObject(I);continue}}const T=this.pool.getOrCreateFreeObject();this.pool.useObject(T),this.pool.stampObject(T),w.rtt[_]={id:T.id,stamp:T.stamp},p.context.bindFramebuffer.set(T.fbo.framebuffer),p.context.clear({color:c.bp.transparent,stencil:0}),p.currentStencilSource=void 0;for(let I=0;I<x.length;I++){const M=p.style._layers[x[I]],z=M.source?this._coordsAscending[M.source][w.tileID.key]:[w.tileID];p.context.viewport.set([0,0,T.fbo.width,T.fbo.height]),p._renderTileClippingMasks(M,z,!0),p.renderLayer(p,p.style.tileManagers[M.source],M,z,a),M.source&&(w.rttFingerprint[M.source]=this._rttFingerprints[M.source][w.tileID.key])}}return bl(this.painter,this.terrain,this._rttTiles,a),this._rttTiles=[],this.pool.freeAllObjects(),$r[l]}return!1}}const Rl={"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":"MapLibre logo","Map.Title":"Map","Marker.Title":"Map marker","NavigationControl.ResetBearing":"Drag to rotate map, click to reset north","NavigationControl.ZoomIn":"Zoom in","NavigationControl.ZoomOut":"Zoom out","Popup.Close":"Close popup","ScaleControl.Feet":"ft","ScaleControl.Meters":"m","ScaleControl.Kilometers":"km","ScaleControl.Miles":"mi","ScaleControl.NauticalMiles":"nm","GlobeControl.Enable":"Enable globe","GlobeControl.Disable":"Disable globe","TerrainControl.Enable":"Enable terrain","TerrainControl.Disable":"Disable terrain","CooperativeGesturesHandler.WindowsHelpText":"Use Ctrl + scroll to zoom the map","CooperativeGesturesHandler.MacHelpText":"Use ⌘ + scroll to zoom the map","CooperativeGesturesHandler.MobileHelpText":"Use two fingers to move the map"},Ll=Pe,Po={hash:!1,interactive:!0,bearingSnap:7,zoomSnap:0,attributionControl:kl,maplibreLogo:!1,refreshExpiredTiles:!0,canvasContextAttributes:{antialias:!1,preserveDrawingBuffer:!1,powerPreference:"high-performance",failIfMajorPerformanceCaveat:!1,desynchronized:!1,contextType:void 0},scrollZoom:!0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:60,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:!1,trackResize:!0,center:[0,0],elevation:0,zoom:0,bearing:0,pitch:0,roll:0,renderWorldCopies:!0,maxTileCacheSize:null,maxTileCacheZoomLevels:c.c.MAX_TILE_CACHE_ZOOM_LEVELS,transformRequest:null,transformCameraUpdate:null,transformConstrain:null,fadeDuration:300,crossSourceCollisions:!0,clickTolerance:3,localIdeographFontFamily:"sans-serif",pitchWithRotate:!0,rollEnabled:!1,reduceMotion:void 0,validateStyle:!0,maxCanvasSize:[4096,4096],cancelPendingTileRequestsWhileZooming:!0,centerClampedToGround:!0,experimentalZoomLevelsToOverscale:void 0,anisotropicFilterPitch:20},Ea={showCompass:!0,showZoom:!0,visualizePitch:!1,visualizeRoll:!0};class Fl{constructor(t,n,a=!1){this.mousedown=p=>{this.startMove(p,de.mousePos(this.element,p)),de.addEventListener(window,"mousemove",this.mousemove),de.addEventListener(window,"mouseup",this.mouseup)},this.mousemove=p=>{this.move(p,de.mousePos(this.element,p))},this.mouseup=p=>{this._rotatePitchHandler.dragEnd(p),this.offTemp()},this.touchstart=p=>{p.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=de.touchPos(this.element,p.targetTouches)[0],this.startMove(p,this._startPos),de.addEventListener(window,"touchmove",this.touchmove,{passive:!1}),de.addEventListener(window,"touchend",this.touchend))},this.touchmove=p=>{p.targetTouches.length!==1?this.reset():(this._lastPos=de.touchPos(this.element,p.targetTouches)[0],this.move(p,this._lastPos))},this.touchend=p=>{p.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()},this.reset=()=>{this._rotatePitchHandler.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10,this.element=n;const l=new Pl;this._rotatePitchHandler=new pn({clickTolerance:3,move:(p,m)=>{const _=n.getBoundingClientRect(),x=new c.P((_.bottom-_.top)/2,(_.right-_.left)/2);return{bearingDelta:c.cy(new c.P(p.x,m.y),m,x),pitchDelta:a?-.5*(m.y-p.y):void 0}},moveStateManager:l,enable:!0,assignEvents:()=>{}}),this.map=t,de.addEventListener(n,"mousedown",this.mousedown),de.addEventListener(n,"touchstart",this.touchstart,{passive:!1}),de.addEventListener(n,"touchcancel",this.reset)}startMove(t,n){this._rotatePitchHandler.dragStart(t,n),de.disableDrag()}move(t,n){const a=this.map,{bearingDelta:l,pitchDelta:p}=this._rotatePitchHandler.dragMove(t,n)||{};l&&a.setBearing(a.getBearing()+l),p&&a.setPitch(a.getPitch()+p)}off(){const t=this.element;de.removeEventListener(t,"mousedown",this.mousedown),de.removeEventListener(t,"touchstart",this.touchstart,{passive:!1}),de.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),de.removeEventListener(window,"touchend",this.touchend),de.removeEventListener(t,"touchcancel",this.reset),this.offTemp()}offTemp(){de.enableDrag(),de.removeEventListener(window,"mousemove",this.mousemove),de.removeEventListener(window,"mouseup",this.mouseup),de.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),de.removeEventListener(window,"touchend",this.touchend)}}let mn;function Mo(d,t,n,a=!1){if(a||!n.getCoveringTilesDetailsProvider().allowWorldCopies())return d==null?void 0:d.wrap();const l=new c.V(d.lng,d.lat);if(d=new c.V(d.lng,d.lat),t){const p=new c.V(d.lng-360,d.lat),m=new c.V(d.lng+360,d.lat),_=n.locationToScreenPoint(d).distSqr(t);n.locationToScreenPoint(p).distSqr(t)<_?d=p:n.locationToScreenPoint(m).distSqr(t)<_&&(d=m)}for(;Math.abs(d.lng-n.center.lng)>180;){const p=n.locationToScreenPoint(d);if(p.x>=0&&p.y>=0&&p.x<=n.width&&p.y<=n.height)break;d.lng>n.center.lng?d.lng-=360:d.lng+=360}return d.lng!==l.lng&&n.isPointOnMapSurface(n.locationToScreenPoint(d))?d:l}const Ca={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 Io(d,t,n){const a=d.classList;for(const l in Ca)a.remove(`maplibregl-${n}-anchor-${l}`);a.add(`maplibregl-${n}-anchor-${t}`)}class Aa extends c.E{constructor(t){if(super(),this._onClick=n=>{this.fire(new c.l("click",{originalEvent:n}))},this._onKeyPress=n=>{const a=n.code,l=n.charCode||n.keyCode;a!=="Space"&&a!=="Enter"&&l!==32&&l!==13||this.togglePopup()},this._onMapClick=n=>{const a=n.originalEvent.target,l=this._element;this._popup&&(a===l||l.contains(a))&&this.togglePopup()},this._update=n=>{if(!this._map)return;const a=this._map.loaded()&&!this._map.isMoving();((n==null?void 0:n.type)==="terrain"||(n==null?void 0:n.type)==="render"&&!a)&&this._map.once("render",this._update),this._lngLat=Mo(this._lngLat,this._flatPos,this._map.transform),this._flatPos=this._pos=this._map.project(this._lngLat)._add(this._offset),this._map.terrain&&(this._flatPos=this._map.transform.locationToScreenPoint(this._lngLat)._add(this._offset));let l="";this._rotationAlignment==="viewport"||this._rotationAlignment==="auto"?l=`rotateZ(${this._rotation}deg)`:this._rotationAlignment==="map"&&(l=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let p="";this._pitchAlignment==="viewport"||this._pitchAlignment==="auto"?p="rotateX(0deg)":this._pitchAlignment==="map"&&(p=`rotateX(${this._map.getPitch()}deg)`),this._subpixelPositioning||n&&n.type!=="moveend"||(this._pos=this._pos.round()),de.setTransform(this._element,`${Ca[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${p} ${l}`),st.frameAsync(new AbortController,this._map._ownerWindow).then(()=>{this._updateOpacity(n&&n.type==="moveend")}).catch(()=>{})},this._onMove=n=>{if(!this._isDragging){const a=this._clickTolerance||this._map._clickTolerance;this._isDragging=n.point.dist(this._pointerdownPos)>=a}this._isDragging&&(this._pos=n.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.l("dragstart"))),this.fire(new c.l("drag")))},this._onUp=()=>{this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),this._state==="active"&&this.fire(new c.l("dragend")),this._state="inactive"},this._addDragHandler=n=>{this._element.contains(n.originalEvent.target)&&(n.preventDefault(),this._positionDelta=n.point.sub(this._pos).add(this._offset),this._pointerdownPos=n.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},this._anchor=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._subpixelPositioning=t&&t.subpixelPositioning||!1,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,this.setOpacity(t==null?void 0:t.opacity,t==null?void 0:t.opacityWhenCovered),t&&t.element)this._element=t.element,this._offset=c.P.convert(t&&t.offset||[0,0]);else{this._defaultMarker=!0,this._element=de.create("div");const n=de.createNS("http://www.w3.org/2000/svg","svg"),a=41,l=27;n.setAttributeNS(null,"display","block"),n.setAttributeNS(null,"height",`${a}px`),n.setAttributeNS(null,"width",`${l}px`),n.setAttributeNS(null,"viewBox",`0 0 ${l} ${a}`);const p=de.createNS("http://www.w3.org/2000/svg","g");p.setAttributeNS(null,"stroke","none"),p.setAttributeNS(null,"stroke-width","1"),p.setAttributeNS(null,"fill","none"),p.setAttributeNS(null,"fill-rule","evenodd");const m=de.createNS("http://www.w3.org/2000/svg","g");m.setAttributeNS(null,"fill-rule","nonzero");const _=de.createNS("http://www.w3.org/2000/svg","g");_.setAttributeNS(null,"transform","translate(3.0, 29.0)"),_.setAttributeNS(null,"fill","#000000");const x=[{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 U of x){const $=de.createNS("http://www.w3.org/2000/svg","ellipse");$.setAttributeNS(null,"opacity","0.04"),$.setAttributeNS(null,"cx","10.5"),$.setAttributeNS(null,"cy","5.80029008"),$.setAttributeNS(null,"rx",U.rx),$.setAttributeNS(null,"ry",U.ry),_.appendChild($)}const w=de.createNS("http://www.w3.org/2000/svg","g");w.setAttributeNS(null,"fill",this._color);const T=de.createNS("http://www.w3.org/2000/svg","path");T.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"),w.appendChild(T);const I=de.createNS("http://www.w3.org/2000/svg","g");I.setAttributeNS(null,"opacity","0.25"),I.setAttributeNS(null,"fill","#000000");const M=de.createNS("http://www.w3.org/2000/svg","path");M.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"),I.appendChild(M);const z=de.createNS("http://www.w3.org/2000/svg","g");z.setAttributeNS(null,"transform","translate(6.0, 7.0)"),z.setAttributeNS(null,"fill","#FFFFFF");const F=de.createNS("http://www.w3.org/2000/svg","g");F.setAttributeNS(null,"transform","translate(8.0, 8.0)");const N=de.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 G=de.createNS("http://www.w3.org/2000/svg","circle");G.setAttributeNS(null,"fill","#FFFFFF"),G.setAttributeNS(null,"cx","5.5"),G.setAttributeNS(null,"cy","5.5"),G.setAttributeNS(null,"r","5.4999962"),F.appendChild(N),F.appendChild(G),m.appendChild(_),m.appendChild(w),m.appendChild(I),m.appendChild(z),m.appendChild(F),n.appendChild(m),n.setAttributeNS(null,"height",a*this._scale+"px"),n.setAttributeNS(null,"width",l*this._scale+"px"),this._element.appendChild(n),this._offset=c.P.convert(t&&t.offset||[0,-14])}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",n=>{n.preventDefault()}),this._element.addEventListener("mousedown",n=>{n.preventDefault()}),Io(this._element,this._anchor,"marker"),this._element.addEventListener("click",this._onClick),t&&t.className)for(const n of t.className.split(" "))this._element.classList.add(n);this._popup=null}addTo(t){return this.remove(),this._map=t,this._element.hasAttribute("aria-label")||this._element.setAttribute("aria-label",t._getUIString("Marker.Title")),this._element.hasAttribute("role")||this._element.setAttribute("role","button"),t.getCanvasContainer().appendChild(this._element),t.on("move",this._update),t.on("moveend",this._update),t.on("terrain",this._update),t.on("projectiontransition",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("terrain",this._update),this._map.off("projectiontransition",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),de.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(t){return this._lngLat=c.V.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 l=Math.abs(13.5)/Math.SQRT2;t.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[l,-1*(38.1-13.5+l)],"bottom-right":[-l,-1*(38.1-13.5+l)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}:this._offset}this._popup=t,this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress)}return this}setSubpixelPositioning(t){return this._subpixelPositioning=t,this}getPopup(){return this._popup}togglePopup(){const t=this._popup;return this._element.style.opacity===this._opacityWhenCovered?this:t?(t.isOpen()?t.remove():(t.setLngLat(this._lngLat),t.addTo(this._map)),this):this}_updateOpacity(t=!1){var n,a;const l=(n=this._map)===null||n===void 0?void 0:n.terrain,p=this._map.transform.isLocationOccluded(this._lngLat);if(!l||p){const z=p?this._opacityWhenCovered:this._opacity;return void(this._element.style.opacity!==z&&(this._element.style.opacity=z))}if(t)this._opacityTimeout=null;else{if(this._opacityTimeout)return;this._opacityTimeout=setTimeout(()=>{this._opacityTimeout=null},100)}const m=this._map,_=m.terrain.depthAtPoint(this._pos),x=m.terrain.getElevationForLngLat(this._lngLat,m.transform);if(m.transform.lngLatToCameraDepth(this._lngLat,x)-_<.006)return void(this._element.style.opacity=this._opacity);const w=-this._offset.y/m.transform.pixelsPerMeter,T=Math.sin(m.getPitch()*Math.PI/180)*w,I=m.terrain.depthAtPoint(new c.P(this._pos.x,this._pos.y-this._offset.y)),M=m.transform.lngLatToCameraDepth(this._lngLat,x+T)-I>.006;!((a=this._popup)===null||a===void 0)&&a.isOpen()&&M&&this._popup.remove(),this._element.style.opacity=M?this._opacityWhenCovered:this._opacity}getOffset(){return this._offset}setOffset(t){return this._offset=c.P.convert(t),this._update(),this}addClassName(t){this._element.classList.add(t)}removeClassName(t){this._element.classList.remove(t)}toggleClassName(t){return this._element.classList.toggle(t)}setDraggable(t){return this._draggable=!!t,this._map&&(t?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(t){return this._rotation=t||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(t){return this._rotationAlignment=t||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(t){return this._pitchAlignment=t&&t!=="auto"?t:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}setOpacity(t,n){return(this._opacity===void 0||t===void 0&&n===void 0)&&(this._opacity="1",this._opacityWhenCovered="0.2"),t!==void 0&&(this._opacity=t),n!==void 0&&(this._opacityWhenCovered=n),this._map&&this._updateOpacity(!0),this}}const Bl={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0};let ks=0,ss=!1;const Eo={maxWidth:100,unit:"metric"};function Co(d,t,n){const a=n&&n.maxWidth||100,l=d._container.clientHeight/2,p=d._container.clientWidth/2,m=d.unproject([p-a/2,l]),_=d.unproject([p+a/2,l]),x=Math.round(d.project(_).x-d.project(m).x),w=Math.min(a,x,d._container.clientWidth),T=m.distanceTo(_);if(n&&n.unit==="imperial"){const I=3.2808*T;I>5280?as(t,w,I/5280,d._getUIString("ScaleControl.Miles")):as(t,w,I,d._getUIString("ScaleControl.Feet"))}else n&&n.unit==="nautical"?as(t,w,T/1852,d._getUIString("ScaleControl.NauticalMiles")):T>=1e3?as(t,w,T/1e3,d._getUIString("ScaleControl.Kilometers")):as(t,w,T,d._getUIString("ScaleControl.Meters"))}function as(d,t,n,a){const l=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(x){const w=Math.pow(10,Math.ceil(-Math.log(x)/Math.LN10));return Math.round(x*w)/w}(_),m*_}(n);d.style.width=t*(l/n)+"px",d.innerHTML=`${l} ${a}`}const Ao={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px",subpixelPositioning:!1,locationOccludedOpacity:void 0,padding:void 0},Ol=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function Do(d){if(d){if(typeof d=="number"){const t=Math.round(Math.abs(d)/Math.SQRT2);return{center:new c.P(0,0),top:new c.P(0,d),"top-left":new c.P(t,t),"top-right":new c.P(-t,t),bottom:new c.P(0,-d),"bottom-left":new c.P(t,-t),"bottom-right":new c.P(-t,-t),left:new c.P(d,0),right:new c.P(-d,0)}}if(d instanceof c.P||Array.isArray(d)){const t=c.P.convert(d);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.P.convert(d.center||[0,0]),top:c.P.convert(d.top||[0,0]),"top-left":c.P.convert(d["top-left"]||[0,0]),"top-right":c.P.convert(d["top-right"]||[0,0]),bottom:c.P.convert(d.bottom||[0,0]),"bottom-left":c.P.convert(d["bottom-left"]||[0,0]),"bottom-right":c.P.convert(d["bottom-right"]||[0,0]),left:c.P.convert(d.left||[0,0]),right:c.P.convert(d.right||[0,0])}}return Do(new c.P(0,0))}const Vl=Pe;E.AJAXError=c.cJ,E.EXTENT=c.a5,E.Event=c.l,E.Evented=c.E,E.LngLat=c.V,E.MercatorCoordinate=c.a9,E.Point=c.P,E.addProtocol=c.cK,E.config=c.c,E.removeProtocol=c.cL,E.AttributionControl=cu,E.BoxZoomHandler=Zr,E.CanvasSource=ps,E.CooperativeGesturesHandler=Ye,E.DoubleClickZoomHandler=zl,E.DragPanHandler=kr,E.DragRotateHandler=Ma,E.EdgeInsets=on,E.FullscreenControl=class extends c.E{constructor(d={}){var t;super(),this._onFullscreenChange=()=>{var n;let a=window.document.fullscreenElement||window.document.webkitFullscreenElement;for(;!((n=a==null?void 0:a.shadowRoot)===null||n===void 0)&&n.fullscreenElement;)a=a.shadowRoot.fullscreenElement;a===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,this._pseudo=(t=d.pseudo)!==null&&t!==void 0&&t,d&&d.container&&(d.container instanceof HTMLElement?this._container=d.container:c.w("Full screen control 'container' must be a DOM element.")),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in document&&(this._fullscreenchange="MSFullscreenChange")}onAdd(d){return this._map=d,this._container||(this._container=this._map.getContainer()),this._controlContainer=de.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){de.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){const d=this._fullscreenButton=de.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);de.create("span","maplibregl-ctrl-icon",d).setAttribute("aria-hidden","true"),d.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){const d=this._getTitle();this._fullscreenButton.setAttribute("aria-label",d),this._fullscreenButton.title=d}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._updateTitle(),this._fullscreen?(this.fire(new c.l("fullscreenstart")),this._prevCooperativeGesturesEnabled=this._map.cooperativeGestures.isEnabled(),this._map.cooperativeGestures.disable()):(this.fire(new c.l("fullscreenend")),this._prevCooperativeGesturesEnabled&&this._map.cooperativeGestures.enable())}_exitFullscreen(){this._pseudo?this._togglePseudoFullScreen():window.document.exitFullscreen?window.document.exitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._pseudo?this._togglePseudoFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize()}},E.GeoJSONSource=rn,E.GeolocateControl=class extends c.E{constructor(d){super(),this._onSuccess=t=>{if(this._map){if(this._isOutOfMapMaxBounds(t))return this._setErrorState(),this.fire(new c.l("outofmaxbounds",t)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=t,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(t),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(t),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new c.l("geolocate",t)),this._finish()}},this._updateCamera=t=>{const n=new c.V(t.coords.longitude,t.coords.latitude),a=t.coords.accuracy,l=this._map.getBearing(),p=c.e({bearing:l},this.options.fitBoundsOptions),m=zt.fromLngLat(n,a);this._map.fitBounds(m,p,{geolocateSource:!0})},this._updateMarker=t=>{if(t){const n=new c.V(t.coords.longitude,t.coords.latitude);this._accuracyCircleMarker.setLngLat(n).addTo(this._map),this._userLocationDotMarker.setLngLat(n).addTo(this._map),this._accuracy=t.coords.accuracy,this._updateCircleRadiusIfNeeded()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onUpdate=()=>{this._updateCircleRadiusIfNeeded()},this._onError=t=>{if(this._map){if(t.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 n=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=n,this._geolocateButton.setAttribute("aria-label",n),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(t.code===3&&ss)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new c.l("error",t)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._setupUI=()=>{this._map&&(this._container.addEventListener("contextmenu",t=>t.preventDefault()),this._geolocateButton=de.create("button","maplibregl-ctrl-geolocate",this._container),de.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",this._geolocateButton.disabled=!0)},this._finishSetupUI=t=>{if(this._map){if(t===!1){c.w("Geolocation support is not available so the GeolocateControl will be disabled.");const n=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=n,this._geolocateButton.setAttribute("aria-label",n)}else{const n=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.disabled=!1,this._geolocateButton.title=n,this._geolocateButton.setAttribute("aria-label",n)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=de.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new Aa({element:this._dotElement}),this._circleElement=de.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Aa({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onUpdate),this._map.on("move",this._onUpdate),this._map.on("rotate",this._onUpdate),this._map.on("pitch",this._onUpdate)),this._geolocateButton.addEventListener("click",()=>this.trigger()),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",n=>{const a=(n==null?void 0:n[0])instanceof ResizeObserverEntry;n.geolocateSource||this._watchState!=="ACTIVE_LOCK"||a||this._map.isZooming()||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new c.l("trackuserlocationend")),this.fire(new c.l("userlocationlostfocus")))})}},this.options=c.e({},Bl,d)}onAdd(d){return this._map=d,this._container=de.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),function(){return c._(this,arguments,void 0,function*(t=!1){if(mn!==void 0&&!t)return mn;if(window.navigator.permissions===void 0)return mn=!!window.navigator.geolocation,mn;try{mn=(yield window.navigator.permissions.query({name:"geolocation"})).state!=="denied"}catch{mn=!!window.navigator.geolocation}return mn})}().then(t=>this._finishSetupUI(t)),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(),de.remove(this._container),this._map.off("zoom",this._onUpdate),this._map.off("move",this._onUpdate),this._map.off("rotate",this._onUpdate),this._map.off("pitch",this._onUpdate),this._map=void 0,ks=0,ss=!1}_isOutOfMapMaxBounds(d){const t=this._map.getMaxBounds(),n=d.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":case"BACKGROUND_ERROR":case"OFF":case void 0:break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadiusIfNeeded(){const d=this._userLocationDotMarker.getLngLat();if(!(this.options.showUserLocation&&this.options.showAccuracyCircle&&this._accuracy&&d))return;const t=this._map.project(d),n=this._map.unproject([t.x+100,t.y]),a=d.distanceTo(n)/100,l=2*this._accuracy/a;this._circleElement.style.width=`${l.toFixed(2)}px`,this._circleElement.style.height=`${l.toFixed(2)}px`}trigger(){if(!this._setup)return c.w("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new c.l("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":ks--,ss=!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.l("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.l("trackuserlocationstart")),this.fire(new c.l("userlocationfocus"));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 d;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),ks++,ks>1?(d={maximumAge:6e5,timeout:0},ss=!0):(d=this.options.positionOptions,ss=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,d)}}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)}},E.GlobeControl=class{constructor(){this._toggleProjection=()=>{var d;const t=(d=this._map.getProjection())===null||d===void 0?void 0:d.type;this._map.setProjection(t!=="mercator"&&t?{type:"mercator"}:{type:"globe"}),this._updateGlobeIcon()},this._updateGlobeIcon=()=>{var d;this._globeButton.classList.remove("maplibregl-ctrl-globe"),this._globeButton.classList.remove("maplibregl-ctrl-globe-enabled"),((d=this._map.getProjection())===null||d===void 0?void 0:d.type)==="globe"?(this._globeButton.classList.add("maplibregl-ctrl-globe-enabled"),this._globeButton.title=this._map._getUIString("GlobeControl.Disable")):(this._globeButton.classList.add("maplibregl-ctrl-globe"),this._globeButton.title=this._map._getUIString("GlobeControl.Enable"))}}onAdd(d){return this._map=d,this._container=de.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._globeButton=de.create("button","maplibregl-ctrl-globe",this._container),de.create("span","maplibregl-ctrl-icon",this._globeButton).setAttribute("aria-hidden","true"),this._globeButton.type="button",this._globeButton.addEventListener("click",this._toggleProjection),this._updateGlobeIcon(),this._map.on("styledata",this._updateGlobeIcon),this._map.on("projectiontransition",this._updateGlobeIcon),this._container}onRemove(){de.remove(this._container),this._map.off("styledata",this._updateGlobeIcon),this._map.off("projectiontransition",this._updateGlobeIcon),this._globeButton.removeEventListener("click",this._toggleProjection),this._map=void 0}},E.Hash=va,E.ImageSource=nn,E.KeyboardHandler=au,E.LngLatBounds=zt,E.LogoControl=uu,E.Map=class extends Rr{get _ownerWindow(){var d,t;return((t=(d=this._container)===null||d===void 0?void 0:d.ownerDocument)===null||t===void 0?void 0:t.defaultView)||window}constructor(d){var t,n;c.cH.mark(c.cI.create);const a=Object.assign(Object.assign(Object.assign({},Po),d),{canvasContextAttributes:Object.assign(Object.assign({},Po.canvasContextAttributes),d.canvasContextAttributes)});if(a.minZoom!=null&&a.maxZoom!=null&&a.minZoom>a.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(a.minPitch!=null&&a.maxPitch!=null&&a.minPitch>a.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(a.minPitch!=null&&a.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(a.maxPitch!=null&&a.maxPitch>180)throw new Error("maxPitch must be less than or equal to 180");const l=new rr,p=new Xn;a.minZoom!==void 0&&l.setMinZoom(a.minZoom),a.maxZoom!==void 0&&l.setMaxZoom(a.maxZoom),a.minPitch!==void 0&&l.setMinPitch(a.minPitch),a.maxPitch!==void 0&&l.setMaxPitch(a.maxPitch),a.renderWorldCopies!==void 0&&l.setRenderWorldCopies(a.renderWorldCopies),a.transformConstrain!==null&&l.setConstrainOverride(a.transformConstrain),super(l,p,{bearingSnap:a.bearingSnap,zoomSnap:a.zoomSnap}),this._idleTriggered=!1,this._crossFadingFactor=1,this._renderTaskQueue=new _h,this._controls=[],this._mapId=c.af(),this._lostContextStyle={style:null,images:null},this._contextLost=_=>{if(_.preventDefault(),this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this.painter.destroy(),this._lostContextStyle=this._getStyleAndImages(),this.style){for(const x of Object.values(this.style._layers))if(x.type==="custom"&&console.warn(`Custom layer with id '${x.id}' cannot be restored after WebGL context loss. You will need to re-add it manually after context restoration.`),x._listeners)for(const[w]of Object.entries(x._listeners))console.warn(`Custom layer with id '${x.id}' had event listeners for event '${w}' which cannot be restored after WebGL context loss. You will need to re-add them manually after context restoration.`);this.style.destroy(),this.style=null,this.fire(new c.l("webglcontextlost",{originalEvent:_}))}else this.fire(new c.l("webglcontextlost",{originalEvent:_}))},this._contextRestored=_=>{this._lostContextStyle.style&&this.setStyle(this._lostContextStyle.style,{diff:!1}),this._lostContextStyle.images&&(this.style.imageManager.images=this._lostContextStyle.images),this._lostContextStyle={style:null,images:null},this._setupPainter(),this.resize(),this._update(),this._resizeInternal(),this.fire(new c.l("webglcontextrestored",{originalEvent:_}))},this._onMapScroll=_=>{if(_.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update()},this._interactive=a.interactive,this._maxTileCacheSize=a.maxTileCacheSize,this._maxTileCacheZoomLevels=a.maxTileCacheZoomLevels,this._canvasContextAttributes=Object.assign({},a.canvasContextAttributes),this._trackResize=a.trackResize===!0,this._bearingSnap=a.bearingSnap,this._zoomSnap=a.zoomSnap,this._centerClampedToGround=a.centerClampedToGround,this._refreshExpiredTiles=a.refreshExpiredTiles===!0,this._fadeDuration=a.fadeDuration,this._crossSourceCollisions=a.crossSourceCollisions===!0,this._collectResourceTiming=a.collectResourceTiming===!0,this._locale=Object.assign(Object.assign({},Rl),a.locale),this._clickTolerance=a.clickTolerance,this._overridePixelRatio=a.pixelRatio,this._maxCanvasSize=a.maxCanvasSize,this._zoomLevelsToOverscale=a.experimentalZoomLevelsToOverscale,this.transformCameraUpdate=a.transformCameraUpdate,this.transformConstrain=a.transformConstrain,this.cancelPendingTileRequestsWhileZooming=a.cancelPendingTileRequestsWhileZooming===!0,this.setAnisotropicFilterPitch(a.anisotropicFilterPitch),a.reduceMotion!==void 0&&(st.prefersReducedMotion=a.reduceMotion),this._imageQueueHandle=hi.addThrottleControl(()=>this.isMoving()),this._requestManager=new Sn(a.transformRequest),this._container=this._resolveContainer(a.container),a.maxBounds&&this.setMaxBounds(a.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",()=>this._update(!1)),this.on("moveend",()=>this._update(!1)),this.on("zoom",()=>this._update(!0)),this.on("terrain",()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0)}),this.once("idle",()=>{this._idleTriggered=!0}),typeof window<"u"&&(this._ownerWindow.addEventListener("online",this._onWindowOnline,!1),this._setupResizeObserver()),this.handlers=new Bi(this,a),this._hash=a.hash&&new va(typeof a.hash=="string"&&a.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:a.center,elevation:a.elevation,zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,roll:a.roll}),a.bounds&&(this.resize(),this.fitBounds(a.bounds,c.e({},a.fitBoundsOptions,{duration:0}))));const m=typeof a.style=="string"||((n=(t=a.style)===null||t===void 0?void 0:t.projection)===null||n===void 0?void 0:n.type)!=="globe";this.resize(null,m),this._localIdeographFontFamily=a.localIdeographFontFamily,this._validateStyle=a.validateStyle,a.style&&this.setStyle(a.style,{localIdeographFontFamily:a.localIdeographFontFamily}),a.attributionControl&&this.addControl(new cu(typeof a.attributionControl=="boolean"?void 0:a.attributionControl)),a.maplibreLogo&&this.addControl(new uu,a.logoPosition),this.on("style.load",()=>{if(m||this._resizeTransform(),this.transform.unmodified){const _=c.U(this.style.stylesheet,["center","zoom","bearing","pitch","roll"]);this.jumpTo(_)}}),this.on("data",_=>{this._update(_.dataType==="style"),this.fire(new c.l(`${_.dataType}data`,_))}),this.on("dataloading",_=>{this.fire(new c.l(`${_.dataType}dataloading`,_))}),this.on("dataabort",_=>{this.fire(new c.l("sourcedataabort",_))})}_getMapId(){return this._mapId}setGlobalStateProperty(d,t){return this.style.setGlobalStateProperty(d,t),this._update(!0)}getGlobalState(){return this.style.getGlobalState()}addControl(d,t){if(t===void 0&&(t=d.getDefaultPosition?d.getDefaultPosition():"top-right"),!d||!d.onAdd)return this.fire(new c.k(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));const n=d.onAdd(this);this._controls.push(d);const a=this._controlPositions[t];return t.indexOf("bottom")!==-1?a.insertBefore(n,a.firstChild):a.appendChild(n),this}removeControl(d){if(!d||!d.onRemove)return this.fire(new c.k(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));const t=this._controls.indexOf(d);return t>-1&&this._controls.splice(t,1),d.onRemove(this),this}hasControl(d){return this._controls.indexOf(d)>-1}coveringTiles(d){return It(this.transform,d)}calculateCameraOptionsFromTo(d,t,n,a){return a==null&&this.terrain&&(a=this.terrain.getElevationForLngLat(n,this.transform)),super.calculateCameraOptionsFromTo(d,t,n,a)}resize(d,t=!0){if(this._lostContextStyle.style!==null)return this;this._resizeInternal(t);const n=!this._moving;return n&&(this.stop(),this.fire(new c.l("movestart",d)).fire(new c.l("move",d))),this.fire(new c.l("resize",d)),n&&this.fire(new c.l("moveend",d)),this}_resizeInternal(d=!0){const[t,n]=this._containerDimensions(),a=this._getClampedPixelRatio(t,n);if(this._resizeCanvas(t,n,a),this.painter.resize(t,n,a),this.painter.overLimit()){const l=this.painter.context.gl;this._maxCanvasSize=[l.drawingBufferWidth,l.drawingBufferHeight];const p=this._getClampedPixelRatio(t,n);this._resizeCanvas(t,n,p),this.painter.resize(t,n,p)}this._resizeTransform(d)}_resizeTransform(d=!0){var t;const[n,a]=this._containerDimensions();this.transform.resize(n,a,d),(t=this._requestedCameraState)===null||t===void 0||t.resize(n,a,d)}_getClampedPixelRatio(d,t){const{0:n,1:a}=this._maxCanvasSize,l=this.getPixelRatio(),p=d*l,m=t*l;return Math.min(p>n?n/p:1,m>a?a/m:1)*l}getPixelRatio(){var d;return(d=this._overridePixelRatio)!==null&&d!==void 0?d:devicePixelRatio}setPixelRatio(d){this._overridePixelRatio=d,this.resize()}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(d){return this.transform.setMaxBounds(zt.convert(d)),this._update()}setMinZoom(d){if((d=d??-2)>=-2&&d<=this.transform.maxZoom){const t=this.transform.zoom,n=this._getTransformForUpdate();return n.setMinZoom(d),this._applyUpdatedTransform(n),this._update(),t!==this.transform.zoom&&this.fire(new c.l("zoomstart")).fire(new c.l("zoom")).fire(new c.l("zoomend")).fire(new c.l("movestart")).fire(new c.l("move")).fire(new c.l("moveend")),this}throw new Error("minZoom must be between -2 and the current maxZoom, inclusive")}getMinZoom(){return this.transform.minZoom}setMaxZoom(d){if((d=d??22)>=this.transform.minZoom){const t=this.transform.zoom,n=this._getTransformForUpdate();return n.setMaxZoom(d),this._applyUpdatedTransform(n),this._update(),t!==this.transform.zoom&&this.fire(new c.l("zoomstart")).fire(new c.l("zoom")).fire(new c.l("zoomend")).fire(new c.l("movestart")).fire(new c.l("move")).fire(new c.l("moveend")),this}throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(d){if((d=d??0)<0)throw new Error("minPitch must be greater than or equal to 0");if(d>=0&&d<=this.transform.maxPitch){const t=this.transform.pitch,n=this._getTransformForUpdate();return n.setMinPitch(d),this._applyUpdatedTransform(n),this._update(),t!==this.transform.pitch&&this.fire(new c.l("pitchstart")).fire(new c.l("pitch")).fire(new c.l("pitchend")).fire(new c.l("movestart")).fire(new c.l("move")).fire(new c.l("moveend")),this}throw new Error("minPitch must be between 0 and the current maxPitch, inclusive")}getMinPitch(){return this.transform.minPitch}setMaxPitch(d){if((d=d??60)>180)throw new Error("maxPitch must be less than or equal to 180");if(d>=this.transform.minPitch){const t=this.transform.pitch,n=this._getTransformForUpdate();return n.setMaxPitch(d),this._applyUpdatedTransform(n),this._update(),t!==this.transform.pitch&&this.fire(new c.l("pitchstart")).fire(new c.l("pitch")).fire(new c.l("pitchend")).fire(new c.l("movestart")).fire(new c.l("move")).fire(new c.l("moveend")),this}throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getAnisotropicFilterPitch(){return this._anisotropicFilterPitch}setAnisotropicFilterPitch(d){if((d=d??20)>180)throw new Error("anisotropicFilterPitch must be less than or equal to 180");if(d<0)throw new Error("anisotropicFilterPitch must be greater than or equal to 0");return this._anisotropicFilterPitch=d,this._update()}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(d){return this.transform.setRenderWorldCopies(d),this._update()}setTransformConstrain(d){return this.transform.setConstrainOverride(d),this._update()}project(d){return this.transform.locationToScreenPoint(c.V.convert(d),this.style&&this.terrain)}unproject(d){return this.transform.screenPointToLocation(c.P.convert(d),this.terrain)}isMoving(){var d;return this._moving||((d=this.handlers)===null||d===void 0?void 0:d.isMoving())}isZooming(){var d;return this._zooming||((d=this.handlers)===null||d===void 0?void 0:d.isZooming())}isRotating(){var d;return this._rotating||((d=this.handlers)===null||d===void 0?void 0:d.isRotating())}_createDelegatedListener(d,t,n){if(d==="mouseenter"||d==="mouseover"){let a=!1;return{layers:t,listener:n,delegates:{mousemove:p=>{const m=t.filter(x=>this.getLayer(x)),_=m.length!==0?this.queryRenderedFeatures(p.point,{layers:m}):[];_.length?a||(a=!0,n.call(this,new ar(d,this,p.originalEvent,{features:_}))):a=!1},mouseout:()=>{a=!1}}}}if(d==="mouseleave"||d==="mouseout"){let a=!1;return{layers:t,listener:n,delegates:{mousemove:m=>{const _=t.filter(x=>this.getLayer(x));(_.length!==0?this.queryRenderedFeatures(m.point,{layers:_}):[]).length?a=!0:a&&(a=!1,n.call(this,new ar(d,this,m.originalEvent)))},mouseout:m=>{a&&(a=!1,n.call(this,new ar(d,this,m.originalEvent)))}}}}{const a=l=>{const p=t.filter(_=>this.getLayer(_)),m=p.length!==0?this.queryRenderedFeatures(l.point,{layers:p}):[];m.length&&(l.features=m,n.call(this,l),delete l.features)};return{layers:t,listener:n,delegates:{[d]:a}}}}_saveDelegatedListener(d,t){this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[d]=this._delegatedListeners[d]||[],this._delegatedListeners[d].push(t)}_removeDelegatedListener(d,t,n){if(!this._delegatedListeners||!this._delegatedListeners[d])return;const a=this._delegatedListeners[d];for(let l=0;l<a.length;l++){const p=a[l];if(p.listener===n&&p.layers.length===t.length&&p.layers.every(m=>t.includes(m))){for(const m in p.delegates)this.off(m,p.delegates[m]);return void a.splice(l,1)}}}on(d,t,n){if(n===void 0)return super.on(d,t);const a=typeof t=="string"?[t]:t,l=this._createDelegatedListener(d,a,n);this._saveDelegatedListener(d,l);for(const p in l.delegates)this.on(p,l.delegates[p]);return{unsubscribe:()=>{this._removeDelegatedListener(d,a,n)}}}once(d,t,n){if(n===void 0)return super.once(d,t);const a=typeof t=="string"?[t]:t,l=this._createDelegatedListener(d,a,n);for(const p in l.delegates){const m=l.delegates[p];l.delegates[p]=(..._)=>{this._removeDelegatedListener(d,a,n),m(..._)}}this._saveDelegatedListener(d,l);for(const p in l.delegates)this.once(p,l.delegates[p]);return this}off(d,t,n){return n===void 0?super.off(d,t):(this._removeDelegatedListener(d,typeof t=="string"?[t]:t,n),this)}queryRenderedFeatures(d,t){if(!this.style)return[];let n;const a=d instanceof c.P||Array.isArray(d),l=a?d:[[0,0],[this.transform.width,this.transform.height]];if(t=t||(a?{}:d)||{},l instanceof c.P||typeof l[0]=="number")n=[c.P.convert(l)];else{const p=c.P.convert(l[0]),m=c.P.convert(l[1]);n=[p,new c.P(m.x,p.y),m,new c.P(p.x,m.y),p]}return this.style.queryRenderedFeatures(n,t,this.transform)}querySourceFeatures(d,t){return this.style.querySourceFeatures(d,t)}setStyle(d,t){return(t=c.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle},t)).diff!==!1&&t.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&d?(this._diffStyle(d,t),this):(this._localIdeographFontFamily=t.localIdeographFontFamily,this._updateStyle(d,t))}setTransformRequest(d){return this._requestManager.setTransformRequest(d),this}_getUIString(d){const t=this._locale[d];if(t==null)throw new Error(`Missing UI string '${d}'`);return t}_updateStyle(d,t){var n,a;if(t.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",()=>this._updateStyle(d,t));const l=this.style&&t.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!d)),d?(this.style=new nl(this,t||{}),this.style.setEventedParent(this,{style:this.style}),typeof d=="string"?this.style.loadURL(d,t,l):this.style.loadJSON(d,t,l),this):((a=(n=this.style)===null||n===void 0?void 0:n.projection)===null||a===void 0||a.destroy(),delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new nl(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(d,t){if(typeof d=="string"){const n=this._requestManager.transformRequest(d,"Style");c.j(n,new AbortController).then(a=>{this._updateDiff(a.data,t)}).catch(a=>{a&&this.fire(new c.k(a))})}else typeof d=="object"&&this._updateDiff(d,t)}_updateDiff(d,t){try{this.style.setState(d,t)&&this._update(!0)}catch(n){c.w(`Unable to perform style diff: ${n.message||n.error||n}. Rebuilding the style from scratch.`),this._updateStyle(d,t)}}getStyle(){if(this.style)return this.style.serialize()}_getStyleAndImages(){return this.style?{style:this.style.serialize(),images:this.style.imageManager.cloneImages()}:{style:null,images:{}}}isStyleLoaded(){return this.style?this.style.loaded():c.w("There is no style added to the map.")}addSource(d,t){return this._lazyInitEmptyStyle(),this.style.addSource(d,t),this._update(!0)}isSourceLoaded(d){const t=this.style&&this.style.tileManagers[d];if(t!==void 0)return t.loaded();this.fire(new c.k(new Error(`There is no tile manager with ID '${d}'`)))}setTerrain(d){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),d){const t=this.style.tileManagers[d.source];if(!t)throw new Error(`cannot load terrain, because there exists no source with ID: ${d.source}`);this.terrain===null&&t.reload();for(const n in this.style._layers){const a=this.style._layers[n];a.type==="hillshade"&&a.source===d.source&&c.w("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality."),a.type==="color-relief"&&a.source===d.source&&c.w("You are using the same source for a color-relief layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.")}this.terrain=new Kt(this.painter,t,d),this.painter.renderToTexture=new So(this.painter,this.terrain),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this._terrainDataCallback=n=>{var a;n.dataType==="style"?this.terrain.tileManager.freeRtt():n.dataType==="source"&&n.tile&&(n.sourceId!==d.source||this._elevationFreeze||(this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this._centerClampedToGround&&this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))),((a=n.source)===null||a===void 0?void 0:a.type)==="image"?this.terrain.tileManager.freeRtt():this.terrain.tileManager.freeRtt(n.tile.tileID))},this.style.on("data",this._terrainDataCallback)}else this.terrain&&this.terrain.tileManager.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform.setMinElevationForCurrentTile(0),this._centerClampedToGround&&this.transform.setElevation(0);return this.fire(new c.l("terrain",{terrain:d})),this}getTerrain(){var d,t;return(t=(d=this.terrain)===null||d===void 0?void 0:d.options)!==null&&t!==void 0?t:null}areTilesLoaded(){const d=this.style&&this.style.tileManagers;for(const t of Object.values(d))if(!t.areTilesLoaded())return!1;return!0}removeSource(d){return this.style.removeSource(d),this._update(!0)}getSource(d){return this.style.getSource(d)}setSourceTileLodParams(d,t,n){if(n){const a=this.getSource(n);if(!a)throw new Error(`There is no source with ID "${n}", cannot set LOD parameters`);a.calculateTileZoom=Je(Math.max(1,d),Math.max(1,t))}else for(const a in this.style.tileManagers)this.style.tileManagers[a].getSource().calculateTileZoom=Je(Math.max(1,d),Math.max(1,t));return this._update(!0),this}refreshTiles(d,t){const n=this.style.tileManagers[d];if(!n)throw new Error(`There is no tile manager with ID "${d}", cannot refresh tile`);t===void 0?n.reload(!0):n.refreshTiles(t.map(a=>new c.ac(a.z,a.x,a.y)))}addImage(d,t,n={}){const{pixelRatio:a=1,sdf:l=!1,stretchX:p,stretchY:m,content:_,textFitWidth:x,textFitHeight:w}=n;if(this._lazyInitEmptyStyle(),!(t instanceof HTMLImageElement||c.b(t))){if(t.width===void 0||t.height===void 0)return this.fire(new c.k(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:T,height:I,data:M}=t,z=t;return this.style.addImage(d,{data:new c.R({width:T,height:I},new Uint8Array(M)),pixelRatio:a,stretchX:p,stretchY:m,content:_,textFitWidth:x,textFitHeight:w,sdf:l,version:0,userImage:z}),z.onAdd&&z.onAdd(this,d),this}}{const{width:T,height:I,data:M}=st.getImageData(t);this.style.addImage(d,{data:new c.R({width:T,height:I},M),pixelRatio:a,stretchX:p,stretchY:m,content:_,textFitWidth:x,textFitHeight:w,sdf:l,version:0})}}updateImage(d,t){const n=this.style.getImage(d);if(!n)return this.fire(new c.k(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.b(t)?st.getImageData(t):t,{width:l,height:p,data:m}=a;if(l===void 0||p===void 0)return this.fire(new c.k(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(l!==n.data.width||p!==n.data.height)return this.fire(new c.k(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.b(t));return n.data.replace(m,_),this.style.updateImage(d,n),this}getImage(d){return this.style.getImage(d)}hasImage(d){return d?!!this.style.getImage(d):(this.fire(new c.k(new Error("Missing required image id"))),!1)}removeImage(d){this.style.removeImage(d)}loadImage(d){return hi.getImage(this._requestManager.transformRequest(d,"Image"),new AbortController)}listImages(){return this.style.listImages()}addLayer(d,t){return this._lazyInitEmptyStyle(),this.style.addLayer(d,t),this._update(!0)}moveLayer(d,t){return this.style.moveLayer(d,t),this._update(!0)}removeLayer(d){return this.style.removeLayer(d),this._update(!0)}getLayer(d){return this.style.getLayer(d)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(d,t,n){return this.style.setLayerZoomRange(d,t,n),this._update(!0)}setFilter(d,t,n={}){return this.style.setFilter(d,t,n),this._update(!0)}getFilter(d){return this.style.getFilter(d)}setPaintProperty(d,t,n,a={}){return this.style.setPaintProperty(d,t,n,a),this._update(!0)}getPaintProperty(d,t){return this.style.getPaintProperty(d,t)}setLayoutProperty(d,t,n,a={}){return this.style.setLayoutProperty(d,t,n,a),this._update(!0)}getLayoutProperty(d,t){return this.style.getLayoutProperty(d,t)}setGlyphs(d,t={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(d,t),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(d,t,n={}){return this._lazyInitEmptyStyle(),this.style.addSprite(d,t,n,a=>{a||this._update(!0)}),this}removeSprite(d){return this._lazyInitEmptyStyle(),this.style.removeSprite(d),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(d,t={}){return this._lazyInitEmptyStyle(),this.style.setSprite(d,t,n=>{n||this._update(!0)}),this}setLight(d,t={}){return this._lazyInitEmptyStyle(),this.style.setLight(d,t),this._update(!0)}getLight(){return this.style.getLight()}setSky(d,t={}){return this._lazyInitEmptyStyle(),this.style.setSky(d,t),this._update(!0)}getSky(){return this.style.getSky()}setFeatureState(d,t){return this.style.setFeatureState(d,t),this._update()}removeFeatureState(d,t){return this.style.removeFeatureState(d,t),this._update()}getFeatureState(d){return this.style.getFeatureState(d)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let d=0,t=0;return this._container&&(d=this._container.clientWidth||400,t=this._container.clientHeight||300),[d,t]}_setupResizeObserver(){var d;let t=!1;const n=Tl(l=>{this._trackResize&&!this._removed&&(this.resize(l),this.redraw())},50),a=(d=this._ownerWindow.ResizeObserver)!==null&&d!==void 0?d:ResizeObserver;this._resizeObserver=new a(l=>{t?n(l):t=!0}),this._resizeObserver.observe(this._container)}_resolveContainer(d){if(typeof d=="string"){const t=document.getElementById(d);if(!t)throw new Error(`Container '${d}' not found.`);return t}if(d instanceof HTMLElement||d&&typeof d=="object"&&d.nodeType===1)return d;throw new Error("Invalid type: 'container' must be a String or HTMLElement.")}_setupContainer(){const d=this._container;d.classList.add("maplibregl-map");const t=this._canvasContainer=de.create("div","maplibregl-canvas-container",d);this._interactive&&t.classList.add("maplibregl-interactive"),this._canvas=de.create("canvas","maplibregl-canvas",t),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex",this._interactive?"0":"-1"),this._canvas.setAttribute("aria-label",this._getUIString("Map.Title")),this._canvas.setAttribute("role","region");const n=this._containerDimensions(),a=this._getClampedPixelRatio(n[0],n[1]);this._resizeCanvas(n[0],n[1],a);const l=this._controlContainer=de.create("div","maplibregl-control-container",d),p=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach(m=>{p[m]=de.create("div",`maplibregl-ctrl-${m} `,l)}),this._container.addEventListener("scroll",this._onMapScroll,!1)}_resizeCanvas(d,t,n){this._canvas.width=Math.floor(n*d),this._canvas.height=Math.floor(n*t),this._canvas.style.width=`${d}px`,this._canvas.style.height=`${t}px`}_setupPainter(){const d=Object.assign(Object.assign({},this._canvasContextAttributes),{alpha:!0,depth:!0,stencil:!0,premultipliedAlpha:!0});let t=null;this._canvas.addEventListener("webglcontextcreationerror",a=>{t={requestedAttributes:d},a&&(t.statusMessage=a.statusMessage,t.type=a.type)},{once:!0});let n=null;if(n=this._canvasContextAttributes.contextType?this._canvas.getContext(this._canvasContextAttributes.contextType,d):this._canvas.getContext("webgl2",d)||this._canvas.getContext("webgl",d),!n){const a="Failed to initialize WebGL";throw t?(t.message=a,new Error(JSON.stringify(t))):new Error(a)}this.painter=new Yc(n,this.transform),Ot.testSupport(n)}migrateProjection(d,t){super.migrateProjection(d,t),this.painter.transform=d,this.fire(new c.l("projectiontransition",{newProjection:this.style.projection.name}))}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(d){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||d,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(d){return this._update(),this._renderTaskQueue.add(d)}_cancelRenderFrame(d){this._renderTaskQueue.remove(d)}_render(d){var t,n,a,l,p;const m=this._idleTriggered?this._fadeDuration:0,_=((t=this.style.projection)===null||t===void 0?void 0:t.transitionState)>0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(d),this._removed)return;let x=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;const I=this.transform.zoom,M=Re();this.style.zoomHistory.update(I,M);const z=new c.H(I,{now:M,fadeDuration:m,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),F=z.crossFadingFactor();F===1&&F===this._crossFadingFactor||(x=!0,this._crossFadingFactor=F),this.style.update(z)}const w=((n=this.style.projection)===null||n===void 0?void 0:n.transitionState)>0!==_;(a=this.style.projection)===null||a===void 0||a.setErrorQueryLatitudeDegrees(this.transform.center.lat),this.transform.setTransitionState((l=this.style.projection)===null||l===void 0?void 0:l.transitionState,(p=this.style.projection)===null||p===void 0?void 0:p.latitudeErrorCorrectionRadians),this.style&&(this._sourcesDirty||w)&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.tileManager.update(this.transform,this.terrain),this.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),!this._elevationFreeze&&this._centerClampedToGround&&this.transform.setElevation(this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform.setMinElevationForCurrentTile(0),this._centerClampedToGround&&this.transform.setElevation(0)),this._placementDirty=this.style&&this.style._updatePlacement(this.transform,this.showCollisionBoxes,m,this._crossSourceCollisions,w),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:m,showPadding:this.showPadding,anisotropicFilterPitch:this.getAnisotropicFilterPitch()}),this.fire(new c.l("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,c.cH.mark(c.cI.load),this.fire(new c.l("load"))),this.style&&(this.style.hasTransitions()||x)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();const T=this._sourcesDirty||this._styleDirty||this._placementDirty;return T||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new c.l("idle")),!this._loaded||this._fullyLoaded||T||(this._fullyLoaded=!0,c.cH.mark(c.cI.fullLoad)),this}redraw(){return this.style&&(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._render(0)),this}remove(){var d;this._hash&&this._hash.remove();for(const n of this._controls)n.onRemove(this);this._controls=[],this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),typeof window<"u"&&this._ownerWindow.removeEventListener("online",this._onWindowOnline,!1),hi.removeThrottleControl(this._imageQueueHandle),(d=this._resizeObserver)===null||d===void 0||d.disconnect();const t=this.painter.context.gl.getExtension("WEBGL_lose_context");t!=null&&t.loseContext&&t.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),de.remove(this._canvasContainer),de.remove(this._controlContainer),this._container.removeEventListener("scroll",this._onMapScroll,!1),this._container.classList.remove("maplibregl-map"),c.cH.remove(),this._removed=!0,this.fire(new c.l("remove"))}triggerRepaint(){this.style&&!this._frameRequest&&(this._frameRequest=new AbortController,st.frame(this._frameRequest,d=>{c.cH.recordStartOfFrameAt(d),this._frameRequest=null;try{this._render(d)}catch(t){if(!c.Z(t)&&!function(n){return n.message===da}(t))throw t}},()=>{},this._ownerWindow))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(d){this._showTileBoundaries!==d&&(this._showTileBoundaries=d,this._update())}get showPadding(){return!!this._showPadding}set showPadding(d){this._showPadding!==d&&(this._showPadding=d,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(d){this._showCollisionBoxes!==d&&(this._showCollisionBoxes=d,d?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(d){this._showOverdrawInspector!==d&&(this._showOverdrawInspector=d,this._update())}get repaint(){return!!this._repaint}set repaint(d){this._repaint!==d&&(this._repaint=d,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(d){this._vertices=d,this._update()}get version(){return Ll}getCameraTargetElevation(){return this.transform.elevation}getProjection(){return this.style.getProjection()}setProjection(d){return this._lazyInitEmptyStyle(),this.style.setProjection(d),this._update(!0)}},E.MapMouseEvent=ar,E.MapTouchEvent=wa,E.MapWheelEvent=Jc,E.Marker=Aa,E.NavigationControl=class{constructor(d){this._updateZoomButtons=()=>{const t=this._map.getZoom(),n=t===this._map.getMaxZoom(),a=t===this._map.getMinZoom();this._zoomInButton.disabled=n,this._zoomOutButton.disabled=a,this._zoomInButton.setAttribute("aria-disabled",n.toString()),this._zoomOutButton.setAttribute("aria-disabled",a.toString())},this._rotateCompassArrow=()=>{this._compassIcon.style.transform=this.options.visualizePitch&&this.options.visualizeRoll?`scale(${1/Math.pow(Math.cos(this._map.transform.pitchInRadians),.5)}) rotateZ(${-this._map.transform.roll}deg) rotateX(${this._map.transform.pitch}deg) rotateZ(${-this._map.transform.bearing}deg)`:this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitchInRadians),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${-this._map.transform.bearing}deg)`:this.options.visualizeRoll?`rotate(${-this._map.transform.bearing-this._map.transform.roll}deg)`:`rotate(${-this._map.transform.bearing}deg)`},this._setButtonTitle=(t,n)=>{const a=this._map._getUIString(`NavigationControl.${n}`);t.title=a,t.setAttribute("aria-label",a)},this.options=c.e({},Ea,d),this._container=de.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",t=>t.preventDefault()),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",t=>this._map.zoomIn({},{originalEvent:t})),de.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})),de.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",t=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:t}):this._map.resetNorth({},{originalEvent:t})}),this._compassIcon=de.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}onAdd(d){return this._map=d,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.options.visualizeRoll&&this._map.on("roll",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Fl(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){de.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.options.visualizeRoll&&this._map.off("roll",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(d,t){const n=de.create("button",d,this._container);return n.type="button",n.addEventListener("click",t),n}},E.Popup=class extends c.E{constructor(d){super(),this._updateOpacity=()=>{this.options.locationOccludedOpacity!==void 0&&(this._container.style.opacity=this._map.transform.isLocationOccluded(this.getLngLat())?`${this.options.locationOccludedOpacity}`:"")},this.remove=()=>(this._content&&de.remove(this._content),this._container&&(de.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),this._map._canvasContainer.classList.remove("maplibregl-track-pointer"),delete this._map,this.fire(new c.l("close"))),this),this._onMouseUp=t=>{this._update(t.point)},this._onMouseMove=t=>{this._update(t.point)},this._onDrag=t=>{this._update(t.point)},this._update=t=>{if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=de.create("div","maplibregl-popup",this._map.getContainer()),this._tip=de.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(const m of this.options.className.split(" "))this._container.classList.add(m);this._closeButton&&this._closeButton.setAttribute("aria-label",this._map._getUIString("Popup.Close")),this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer")}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._lngLat=Mo(this._lngLat,this._flatPos,this._map.transform,this._trackPointer),this._trackPointer&&!t)return;const n=this._flatPos=this._pos=this._trackPointer&&t?t:this._map.project(this._lngLat);this._map.terrain&&(this._flatPos=this._trackPointer&&t?t:this._map.transform.locationToScreenPoint(this._lngLat));let a=this.options.anchor;const l=Do(this.options.offset);if(!a){const m=this._container.offsetWidth,_=this._container.offsetHeight,x=function(T){var I,M,z,F;return T?{top:(I=T.top)!==null&&I!==void 0?I:0,right:(M=T.right)!==null&&M!==void 0?M:0,bottom:(z=T.bottom)!==null&&z!==void 0?z:0,left:(F=T.left)!==null&&F!==void 0?F:0}:{top:0,right:0,bottom:0,left:0}}(this.options.padding);let w;w=n.y+l.bottom.y<_+x.top?["top"]:n.y>this._map.transform.height-_-x.bottom?["bottom"]:[],n.x<m/2+x.left?w.push("left"):n.x>this._map.transform.width-m/2-x.right&&w.push("right"),a=w.length===0?"bottom":w.join("-")}let p=n.add(l[a]);this.options.subpixelPositioning||(p=p.round()),de.setTransform(this._container,`${Ca[a]} translate(${p.x}px,${p.y}px)`),Io(this._container,a,"popup"),this._updateOpacity()},this._onClose=()=>{this.remove()},this.options=c.e(Object.create(Ao),d)}addTo(d){return this._map&&this.remove(),this._map=d,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.l("open")),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(d){return this._lngLat=c.V.convert(d),this._pos=null,this._flatPos=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._flatPos=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(d){return this.setDOMContent(document.createTextNode(d))}setHTML(d){const t=document.createDocumentFragment(),n=document.createElement("body");let a;for(n.innerHTML=d;a=n.firstChild,a;)t.appendChild(a);return this.setDOMContent(t)}getMaxWidth(){var d;return(d=this._container)===null||d===void 0?void 0:d.style.maxWidth}setMaxWidth(d){return this.options.maxWidth=d,this._update(),this}setDOMContent(d){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=de.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(d),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(d){return this._container&&this._container.classList.add(d),this}removeClassName(d){return this._container&&this._container.classList.remove(d),this}setOffset(d){return this.options.offset=d,this._update(),this}toggleClassName(d){if(this._container)return this._container.classList.toggle(d)}setSubpixelPositioning(d){this.options.subpixelPositioning=d}setPadding(d){this.options.padding=d,this._update()}_createCloseButton(){this.options.closeButton&&(this._closeButton=de.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const d=this._container.querySelector(Ol);d&&d.focus()}},E.RasterDEMTileSource=Mn,E.RasterTileSource=Nn,E.ScaleControl=class{constructor(d){this._onMove=()=>{Co(this._map,this._container,this.options)},this.setUnit=t=>{this.options.unit=t,Co(this._map,this._container,this.options)},this.options=Object.assign(Object.assign({},Eo),d)}getDefaultPosition(){return"bottom-left"}onAdd(d){return this._map=d,this._container=de.create("div","maplibregl-ctrl maplibregl-ctrl-scale",d.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){de.remove(this._container),this._map.off("move",this._onMove),this._map=void 0}},E.ScrollZoomHandler=Dl,E.Style=nl,E.TerrainControl=class{constructor(d){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.Disable")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.Enable"))},this.options=d}onAdd(d){return this._map=d,this._container=de.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=de.create("button","maplibregl-ctrl-terrain",this._container),de.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(){de.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}},E.TwoFingersTouchPitchHandler=fn,E.TwoFingersTouchRotateHandler=su,E.TwoFingersTouchZoomHandler=nu,E.TwoFingersTouchZoomRotateHandler=Ue,E.VectorTileSource=ds,E.VideoSource=En,E.addSourceType=(d,t)=>c._(void 0,void 0,void 0,function*(){if(fs(d))throw new Error(`A source type called "${d}" already exists.`);((n,a)=>{Zs[n]=a})(d,t)}),E.clearPrewarmedResources=function(){const d=ri;d&&(d.isPreloaded()&&d.numActive()===1?(d.release(Er),ri=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()"))},E.createTileMesh=Xa,E.getMaxParallelImageRequests=function(){return c.c.MAX_PARALLEL_IMAGE_REQUESTS},E.getRTLTextPluginStatus=function(){return B().getRTLTextPluginStatus()},E.getVersion=function(){return Vl},E.getWorkerCount=function(){return Li.workerCount},E.getWorkerUrl=function(){return c.c.WORKER_URL},E.importScriptInWorkers=function(d){return Nr().broadcast("IS",d)},E.isTimeFrozen=function(){return bt.isFrozen()},E.now=Re,E.prewarm=function(){en().acquire(Er)},E.restoreNow=function(){bt.restoreNow()},E.setMaxParallelImageRequests=function(d){c.c.MAX_PARALLEL_IMAGE_REQUESTS=d},E.setNow=function(d){bt.setNow(d)},E.setRTLTextPlugin=function(d,t){return B().setRTLTextPlugin(d,t)},E.setWorkerCount=function(d){Li.workerCount=d},E.setWorkerUrl=function(d){c.c.WORKER_URL=d}});var Le=re;return Le})}(Uu)),Uu.exports}var $y=Zy();const Td=uy($y);let Yf=!1;function Wy(){if(!Yf){const ne=new Ly;Td.addProtocol("pmtiles",ne.tile),Yf=!0}}var Hy=Sd('<div class="map svelte-a9fykh"><div class="map-container svelte-a9fykh"></div> <!></div>');function zd(ne,H){Md(H,!0);let re=Br(H,"id",19,()=>`map-${Math.random().toString(36).substring(2,9)}`),he=Br(H,"center",19,()=>[0,0]),we=Br(H,"zoom",3,2),Le=Br(H,"minZoom",3,0),E=Br(H,"maxZoom",3,22),c=Br(H,"interactive",3,!0),Pe=Br(H,"styleUrl",3,"https://graphics.thomsonreuters.com/reuters-protomaps/style.json"),He=Br(H,"height",3,"500px"),Ze=Br(H,"width",3,"normal"),Ne=Br(H,"textWidth",3,"normal"),$e,st=null;const bt=W_(null);K_("map",bt),Qf(()=>{if(typeof window<"u"&&$e){Wy();const Re={container:$e,style:Pe(),center:he(),zoom:we(),minZoom:Le(),maxZoom:E(),attributionControl:!1,scrollZoom:!1,doubleClickZoom:c(),dragPan:c(),touchPitch:!1,touchZoomRotate:c(),boxZoom:c(),keyboard:c()},de=new Td.Map(Re);st=de,bt.set(de),c()&&st.addControl(new Td.NavigationControl({showCompass:!1})),st.on("load",()=>{st&&(H.projection&&st.setProjection(H.projection),H.onMapReady&&H.onMapReady(st))})}}),ny(()=>{st&&(st.remove(),st=null,bt.set(null))}),hy(ne,{get width(){return Ze()},get textWidth(){return Ne()},get title(){return H.title},get description(){return H.description},get notes(){return H.notes},children:(Re,de)=>{var Ot=Hy(),pt=J_(Ot);cy(pt,Ti=>$e=Ti,()=>$e);var ct=hs(pt,2);{var Ki=Ti=>{var fr=H_(),hi=vd(fr);ay(hi,()=>H.children),Gu(Ti,fr)};sy(ct,Ti=>{H.children&&Ti(Ki)})}Q_(()=>{oy(Ot,"id",re()),ly(pt,`height: ${He()??""}`)}),Gu(Re,Ot)},$$slots:{default:!0}}),Pd()}zd.__docgen={data:[{name:"title",visibility:"public",description:"Title of the map as a string or a custom snippet.",keywords:[],kind:"let",type:{kind:"union",type:[{kind:"type",type:"string",text:"string"},{kind:"function",text:"Snippet<[]>"}],text:"string | Snippet<[]>"},static:!1,readonly:!1},{name:"description",visibility:"public",description:"Description of the map, passed in as a markdown string.",keywords:[],kind:"let",type:{kind:"type",type:"string",text:"string"},static:!1,readonly:!1},{name:"notes",visibility:"public",description:"Notes to the map, passed in as a markdown string or a custom snippet.",keywords:[],kind:"let",type:{kind:"union",type:[{kind:"type",type:"string",text:"string"},{kind:"function",text:"Snippet<[]>"}],text:"string | Snippet<[]>"},static:!1,readonly:!1},{name:"id",visibility:"public",description:"Map container id",keywords:[],kind:"let",type:{kind:"type",type:"string",text:"string"},static:!1,readonly:!1,defaultValue:"..."},{name:"center",visibility:"public",description:"Map center coordinates [longitude, latitude]",keywords:[],kind:"let",type:{kind:"type",type:"array",text:"[number, number]"},static:!1,readonly:!1,defaultValue:"[0, 0]"},{name:"zoom",visibility:"public",description:"Initial zoom level",keywords:[],kind:"let",type:{kind:"type",type:"number",text:"number"},static:!1,readonly:!1,defaultValue:"2"},{name:"minZoom",visibility:"public",description:"Minimum zoom level",keywords:[],kind:"let",type:{kind:"type",type:"number",text:"number"},static:!1,readonly:!1,defaultValue:"0"},{name:"maxZoom",visibility:"public",description:"Maximum zoom level",keywords:[],kind:"let",type:{kind:"type",type:"number",text:"number"},static:!1,readonly:!1,defaultValue:"22"},{name:"projection",visibility:"public",description:`Map projection. Use 'globe' for 3D globe view.
|
||
See https://maplibre.org/maplibre-style-spec/types/#projectiondefinition`,keywords:[],kind:"let",type:{kind:"type",type:"object",text:"ProjectionSpecification"},static:!1,readonly:!1},{name:"interactive",visibility:"public",description:"Enable interactive controls (zoom, pan, etc.)",keywords:[],kind:"let",type:{kind:"type",type:"boolean",text:"boolean"},static:!1,readonly:!1,defaultValue:"true"},{name:"styleUrl",visibility:"public",description:"Map style URL",keywords:[],kind:"let",type:{kind:"type",type:"string",text:"string"},static:!1,readonly:!1,defaultValue:'"https://graphics.thomsonreuters.com/reuters-protomaps/style.json"'},{name:"height",visibility:"public",description:"Map height (default: '500px')",keywords:[],kind:"let",type:{kind:"type",type:"string",text:"string"},static:!1,readonly:!1,defaultValue:'"500px"'},{name:"width",visibility:"public",description:"Width of the map within the text well.",keywords:[],kind:"let",type:{kind:"union",type:[{kind:"const",type:"string",value:"narrower",text:'"narrower"'},{kind:"const",type:"string",value:"narrow",text:'"narrow"'},{kind:"const",type:"string",value:"normal",text:'"normal"'},{kind:"const",type:"string",value:"wide",text:'"wide"'},{kind:"const",type:"string",value:"wider",text:'"wider"'},{kind:"const",type:"string",value:"widest",text:'"widest"'},{kind:"const",type:"string",value:"fluid",text:'"fluid"'}],text:'"narrower" | "narrow" | "normal" | "wide" | "wider" | "widest" | "fluid"'},static:!1,readonly:!1,defaultValue:'"normal"'},{name:"textWidth",visibility:"public",description:`Set a different width for the text within the text well, for example,
|
||
"normal" to keep the title, description and notes inline with the rest
|
||
of the text well. Can't ever be wider than \`width\`.`,keywords:[],kind:"let",type:{kind:"union",type:[{kind:"const",type:"string",value:"narrower",text:'"narrower"'},{kind:"const",type:"string",value:"narrow",text:'"narrow"'},{kind:"const",type:"string",value:"normal",text:'"normal"'},{kind:"const",type:"string",value:"wide",text:'"wide"'},{kind:"const",type:"string",value:"wider",text:'"wider"'},{kind:"const",type:"string",value:"widest",text:'"widest"'},{kind:"const",type:"string",value:"fluid",text:'"fluid"'}],text:'"narrower" | "narrow" | "normal" | "wide" | "wider" | "widest" | "fluid"'},static:!1,readonly:!1,defaultValue:'"normal"'},{name:"onMapReady",visibility:"public",description:"Callback function that receives the map instance when ready",keywords:[],kind:"let",type:{kind:"function",text:"(map: Map$1) => void"},static:!1,readonly:!1},{name:"children",visibility:"public",description:"Child components (e.g., TileMapLayer)",keywords:[],kind:"let",type:{kind:"function",text:"Snippet<[]>"},static:!1,readonly:!1}],name:"TileMap.svelte"};function Na(ne,H){Md(H,!0);const[re,he]=Y_(),we=()=>X_(Pe,"$mapStore",re);let Le=Br(H,"type",3,"fill"),E=Br(H,"paint",19,()=>({})),c=Br(H,"layout",19,()=>({}));const Pe=ey("map");if(!Pe)throw new Error("TileMapLayer must be used inside a TileMap component");const He=`${H.id}-source`;let Ze=_d(!1),Ne=_d(null),$e=_d(!1);oc(()=>{typeof H.data=="string"&&(H.data.startsWith("http://")||H.data.startsWith("https://"))?(Gs($e,!0),Gs(Ne,null),fetch(H.data).then(Re=>{if(!Re.ok)throw new Error(`Failed to fetch GeoJSON: ${Re.statusText}`);return Re.json()}).then(Re=>{Gs(Ne,Re,!0),Gs($e,!1)}).catch(Re=>{console.error(`Error fetching GeoJSON from ${H.data}:`,Re),Gs($e,!1)})):(Gs(Ne,null),Gs($e,!1))});const st=Wf(()=>typeof H.data=="string"&&(H.data.startsWith("http://")||H.data.startsWith("https://"))),bt=Wf(()=>Yr(Ne)||(Yr(st)?null:H.data));oc(()=>{const Re=we(),de=Yr(bt),Ot=Yr($e);if(!Re||Yr(Ze)||Ot||!de)return;const pt=()=>{if(!Yr(Ze)){if(Re.getSource(He)||Re.addSource(He,{type:"geojson",data:de}),!Re.getLayer(H.id)){const ct={id:H.id,type:Le(),source:He,paint:E(),layout:c()};H.minZoom!==void 0&&(ct.minzoom=H.minZoom),H.maxZoom!==void 0&&(ct.maxzoom=H.maxZoom),H.filter&&(ct.filter=H.filter),Re.addLayer(ct,H.beforeId)}Gs(Ze,!0)}};Re.loaded()?pt():Re.once("load",pt)}),oc(()=>{const Re=we(),de=Yr(bt),Ot=Yr($e);if(!Re||!Yr(Ze)||Ot||!de)return;const pt=Re.getSource(He);pt&&pt.setData&&pt.setData(de)}),oc(()=>{const Re=we();!Re||!Yr(Ze)||!E()||Object.entries(E()).forEach(([de,Ot])=>{Re.setPaintProperty(H.id,de,Ot)})}),oc(()=>{const Re=we();!Re||!Yr(Ze)||!c()||Object.entries(c()).forEach(([de,Ot])=>{Re.setLayoutProperty(H.id,de,Ot)})}),Qf(()=>()=>{const Re=we();Re&&Yr(Ze)&&(Re.getLayer(H.id)&&Re.removeLayer(H.id),Re.getSource(He)&&Re.removeSource(He))}),Pd(),he()}Na.__docgen={data:[{name:"id",visibility:"public",description:"Unique ID for this layer",keywords:[{name:"required",description:""}],kind:"let",type:{kind:"type",type:"string",text:"string"},static:!1,readonly:!1},{name:"data",visibility:"public",description:"GeoJSON data to display (FeatureCollection, Feature, Geometry, or URL string to fetch from)",keywords:[{name:"required",description:""}],kind:"let",type:{kind:"union",type:[{kind:"type",type:"string",text:"string"},{kind:"type",type:"object",text:"Point"},{kind:"type",type:"object",text:"MultiPoint"},{kind:"type",type:"object",text:"LineString"},{kind:"type",type:"object",text:"MultiLineString"},{kind:"type",type:"object",text:"Polygon"},{kind:"type",type:"object",text:"MultiPolygon"},{kind:"type",type:"object",text:"GeometryCollection<Geometry>"},{kind:"type",type:"object",text:"Feature<Geometry, GeoJsonProperties>"},{kind:"type",type:"object",text:"FeatureCollection<Geometry, GeoJsonProperties>"}],text:"string | Point | MultiPoint | LineString | MultiLineString | Polygon | MultiPolygon | GeometryCollection<Geometry> | Feature<Geometry, GeoJsonProperties> | FeatureCollection<Geometry, GeoJsonProperties>"},static:!1,readonly:!1},{name:"type",visibility:"public",description:"Layer type: 'fill', 'line', 'circle', 'symbol', etc.",keywords:[],kind:"let",type:{kind:"union",type:[{kind:"const",type:"string",value:"symbol",text:'"symbol"'},{kind:"const",type:"string",value:"fill",text:'"fill"'},{kind:"const",type:"string",value:"line",text:'"line"'},{kind:"const",type:"string",value:"circle",text:'"circle"'},{kind:"const",type:"string",value:"fill-extrusion",text:'"fill-extrusion"'},{kind:"const",type:"string",value:"raster",text:'"raster"'},{kind:"const",type:"string",value:"background",text:'"background"'},{kind:"const",type:"string",value:"heatmap",text:'"heatmap"'},{kind:"const",type:"string",value:"hillshade",text:'"hillshade"'}],text:'"symbol" | "fill" | "line" | "circle" | "fill-extrusion" | "raster" | "background" | "heatmap" | "hillshade"'},static:!1,readonly:!1,defaultValue:'"fill"'},{name:"paint",visibility:"public",description:"Paint properties for the layer",keywords:[],kind:"let",type:{kind:"type",type:"object",text:"Record<string, unknown>"},static:!1,readonly:!1,defaultValue:"{}"},{name:"layout",visibility:"public",description:"Layout properties for the layer",keywords:[],kind:"let",type:{kind:"type",type:"object",text:"Record<string, unknown>"},static:!1,readonly:!1,defaultValue:"{}"},{name:"beforeId",visibility:"public",description:"Layer to insert before (for layer ordering)",keywords:[],kind:"let",type:{kind:"type",type:"string",text:"string"},static:!1,readonly:!1},{name:"minZoom",visibility:"public",description:"Minimum zoom level to display layer",keywords:[],kind:"let",type:{kind:"type",type:"number",text:"number"},static:!1,readonly:!1},{name:"maxZoom",visibility:"public",description:"Maximum zoom level to display layer",keywords:[],kind:"let",type:{kind:"type",type:"number",text:"number"},static:!1,readonly:!1},{name:"filter",visibility:"public",description:"Filter expression for the layer",keywords:[],kind:"let",type:{kind:"type",type:"array",text:"unknown[]"},static:!1,readonly:!1}],name:"TileMapLayer.svelte"};const Kf={type:"FeatureCollection",features:[{id:"f3ef5ee1562ab29699c4cef0d6dd8c5c",type:"Feature",properties:{},geometry:{coordinates:[[[-73.95763681123009,40.80049109333228],[-73.98164644416437,40.76837409197461],[-73.97304299236308,40.76488876644504],[-73.94923343970315,40.796855986010655],[-73.95763681123009,40.80049109333228]]],type:"Polygon"}}]},Jf={type:"FeatureCollection",features:[{type:"Feature",properties:{name:"Reuters Office"},geometry:{type:"Point",coordinates:[-73.98681906441799,40.756672373025765]}}]},Xy={type:"FeatureCollection",features:[{type:"Feature",properties:{},geometry:{type:"Point",coordinates:[-74.05850529670715,40.60216238663875]}},{type:"Feature",properties:{},geometry:{type:"Point",coordinates:[-73.97666573524475,40.77265656734981]}}]},xm={title:"Components/Graphics/TileMap",component:zd,tags:["autodocs"],argTypes:{width:{control:"select",options:["normal","wide","wider","widest","fluid"]},interactive:{control:"boolean"}}},{Story:Nu}=ry();var Yy=Sd("<!> <!> <!> <!> <!> <!>",1),Ky=Sd("<!> <!> <!> <!>",1);function vm(ne,H){Md(H,!1),ty();var re=Ky(),he=vd(re);Nu(he,{name:"Demo",args:{id:"demo-map",center:[-98,39],zoom:3,interactive:!0,height:"500px"},parameters:{__svelteCsf:{rawCode:"<TileMap {...args} />"}}});var we=hs(he,2);Nu(we,{name:"Globe view",tags:["!autodocs"],args:{id:"globe-map",center:[0,0],zoom:2,projection:{type:"globe"},interactive:!0,title:"Globe View",description:"A 3D globe projection of the Earth.",height:"600px"},parameters:{__svelteCsf:{rawCode:"<TileMap {...args} />"}}});var Le=hs(we,2);Nu(Le,{name:"Non-interactive",tags:["!autodocs"],args:{id:"static-map",center:[2.3522,48.8566],zoom:12,interactive:!1,title:"Paris",description:"A static map of Paris, France.",height:"400px"},parameters:{__svelteCsf:{rawCode:"<TileMap {...args} />"}}});var E=hs(Le,2);Nu(E,{name:"With GeoJSON layers",tags:["!autodocs"],children:(c,Pe)=>{zd(c,{id:"geojson-map",center:[-73.9712,40.7831],zoom:11,interactive:!0,title:"Map with GeoJSON Layers",description:"Example showing multiple GeoJSON layers including local data and data fetched from a URL.",notes:"Demonstrates polygon fills, line overlays, point markers, and text labels.",height:"600px",children:(He,Ze)=>{var Ne=Yy(),$e=vd(Ne);Na($e,{id:"park-area",get data(){return Kf},type:"fill",paint:{"fill-color":"#179639","fill-opacity":.7}});var st=hs($e,2);Na(st,{id:"park-outline",get data(){return Kf},type:"line",paint:{"line-color":"#228b22","line-width":2}});var bt=hs(st,2);Na(bt,{id:"route-line",data:"https://raw.githubusercontent.com/datanews/ny-marathon/refs/heads/master/route.geojson",type:"line",paint:{"line-color":"#4287f5","line-width":2}});var Re=hs(bt,2);Na(Re,{id:"reuters-office-point",get data(){return Jf},type:"circle",paint:{"circle-radius":4,"circle-color":"#ff0000","circle-stroke-width":2,"circle-stroke-color":"#ffffff"}});var de=hs(Re,2);Na(de,{id:"reuters-office-label",get data(){return Jf},type:"symbol",layout:{"text-field":"Reuters Office","text-offset":[.25,.5],"text-anchor":"top-left","text-size":12},paint:{"text-color":"#000000","text-halo-color":"#ffffff","text-halo-width":2}});var Ot=hs(de,2);Na(Ot,{id:"points-layer",get data(){return Xy},type:"circle",paint:{"circle-radius":4,"circle-color":"#9c27b0","circle-stroke-width":2,"circle-stroke-color":"#ffffff"}}),Gu(He,Ne)},$$slots:{default:!0}})},$$slots:{default:!0},parameters:{__svelteCsf:{rawCode:`<TileMap
|
||
id="geojson-map"
|
||
center={[-73.9712, 40.7831]}
|
||
zoom={11}
|
||
interactive={true}
|
||
title="Map with GeoJSON Layers"
|
||
description="Example showing multiple GeoJSON layers including local data and data fetched from a URL."
|
||
notes="Demonstrates polygon fills, line overlays, point markers, and text labels."
|
||
height="600px"
|
||
>
|
||
<TileMapLayer
|
||
id="park-area"
|
||
data={centralParkData}
|
||
type="fill"
|
||
paint={{
|
||
'fill-color': '#179639',
|
||
'fill-opacity': 0.7,
|
||
}}
|
||
/>
|
||
<TileMapLayer
|
||
id="park-outline"
|
||
data={centralParkData}
|
||
type="line"
|
||
paint={{
|
||
'line-color': '#228b22',
|
||
'line-width': 2,
|
||
}}
|
||
/>
|
||
<TileMapLayer
|
||
id="route-line"
|
||
data="https://raw.githubusercontent.com/datanews/ny-marathon/refs/heads/master/route.geojson"
|
||
type="line"
|
||
paint={{
|
||
'line-color': '#4287f5',
|
||
'line-width': 2,
|
||
}}
|
||
/>
|
||
<TileMapLayer
|
||
id="reuters-office-point"
|
||
data={reutersOfficePoint}
|
||
type="circle"
|
||
paint={{
|
||
'circle-radius': 4,
|
||
'circle-color': '#ff0000',
|
||
'circle-stroke-width': 2,
|
||
'circle-stroke-color': '#ffffff',
|
||
}}
|
||
/>
|
||
<TileMapLayer
|
||
id="reuters-office-label"
|
||
data={reutersOfficePoint}
|
||
type="symbol"
|
||
layout={{
|
||
'text-field': 'Reuters Office',
|
||
'text-offset': [0.25, 0.5],
|
||
'text-anchor': 'top-left',
|
||
'text-size': 12,
|
||
}}
|
||
paint={{
|
||
'text-color': '#000000',
|
||
'text-halo-color': '#ffffff',
|
||
'text-halo-width': 2,
|
||
}}
|
||
/>
|
||
<TileMapLayer
|
||
id="points-layer"
|
||
data={points}
|
||
type="circle"
|
||
paint={{
|
||
'circle-radius': 4,
|
||
'circle-color': '#9c27b0',
|
||
'circle-stroke-width': 2,
|
||
'circle-stroke-color': '#ffffff',
|
||
}}
|
||
/>
|
||
</TileMap>`}}}),Gu(ne,re),Pd()}vm.__docgen={version:3,name:"TileMap.stories.svelte",data:[],computed:[],methods:[],components:[],description:null,keywords:[],events:[],slots:[],refs:[]};const Zu=iy(vm,xm),Jy=["Demo","GlobeView","NonInteractive","WithGeoJSONLayers"],Qy=Zu.Demo,ex=Zu.GlobeView,tx=Zu.NonInteractive,ix=Zu.WithGeoJSONLayers,Tx=Object.freeze(Object.defineProperty({__proto__:null,Demo:Qy,GlobeView:ex,NonInteractive:tx,WithGeoJSONLayers:ix,__namedExportsOrder:Jy,default:xm},Symbol.toStringTag,{value:"Module"}));export{Qy as D,ex as G,tx as N,Tx as T,ix as W};
|