isard 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/CHANGELOG.md +165 -1
  2. package/README.md +3 -2
  3. package/dist/basemap/furniture.d.ts +8 -0
  4. package/dist/basemap/furniture.js +26 -0
  5. package/dist/basemap/furniture.js.map +1 -0
  6. package/dist/basemap/trees.d.ts +35 -8
  7. package/dist/basemap/trees.js +105 -52
  8. package/dist/basemap/trees.js.map +1 -1
  9. package/dist/basemap/vectorstyle.d.ts +9 -3
  10. package/dist/basemap/vectorstyle.js +5 -6
  11. package/dist/basemap/vectorstyle.js.map +1 -1
  12. package/dist/basemap/vectortiles/context.d.ts +3 -0
  13. package/dist/basemap/vectortiles/context.js.map +1 -1
  14. package/dist/basemap/vectortiles/extrusions.d.ts +4 -0
  15. package/dist/basemap/vectortiles/extrusions.js +17 -2
  16. package/dist/basemap/vectortiles/extrusions.js.map +1 -1
  17. package/dist/basemap/vectortiles/labels.d.ts +3 -0
  18. package/dist/basemap/vectortiles/labels.js +42 -17
  19. package/dist/basemap/vectortiles/labels.js.map +1 -1
  20. package/dist/basemap/vectortiles/lamps.d.ts +23 -0
  21. package/dist/basemap/vectortiles/lamps.js +90 -0
  22. package/dist/basemap/vectortiles/lamps.js.map +1 -0
  23. package/dist/basemap/vectortiles/requests.d.ts +4 -0
  24. package/dist/basemap/vectortiles/requests.js +15 -2
  25. package/dist/basemap/vectortiles/requests.js.map +1 -1
  26. package/dist/basemap/vectortiles/trees.d.ts +9 -0
  27. package/dist/basemap/vectortiles/trees.js +114 -29
  28. package/dist/basemap/vectortiles/trees.js.map +1 -1
  29. package/dist/basemap/vectortiles/vectors.d.ts +17 -0
  30. package/dist/basemap/vectortiles/vectors.js +72 -8
  31. package/dist/basemap/vectortiles/vectors.js.map +1 -1
  32. package/dist/basemap/vectortiles.d.ts +26 -6
  33. package/dist/basemap/vectortiles.js +43 -10
  34. package/dist/basemap/vectortiles.js.map +1 -1
  35. package/dist/basemap.worker.js +2 -2
  36. package/dist/basemap.worker.js.map +12 -10
  37. package/dist/bind/layers.js +1 -0
  38. package/dist/bind/layers.js.map +1 -1
  39. package/dist/data/collada.d.ts +19 -0
  40. package/dist/data/collada.js +319 -0
  41. package/dist/data/collada.js.map +1 -0
  42. package/dist/data/ifc.d.ts +100 -0
  43. package/dist/data/ifc.js +372 -0
  44. package/dist/data/ifc.js.map +1 -0
  45. package/dist/decoder.worker.js +5 -5
  46. package/dist/decoder.worker.js.map +3 -3
  47. package/dist/formats.d.ts +7 -2
  48. package/dist/formats.js +7 -2
  49. package/dist/formats.js.map +1 -1
  50. package/dist/index.d.ts +8 -1
  51. package/dist/index.js +6 -1
  52. package/dist/index.js.map +1 -1
  53. package/dist/isard_bg.wasm +0 -0
  54. package/dist/isard_core_bg.wasm +0 -0
  55. package/dist/isard_grid_bg.wasm +0 -0
  56. package/dist/isard_tess_bg.wasm +0 -0
  57. package/dist/layers/extrusions.d.ts +10 -0
  58. package/dist/layers/extrusions.js +28 -2
  59. package/dist/layers/extrusions.js.map +1 -1
  60. package/dist/layers/layers.d.ts +12 -0
  61. package/dist/layers/layers.js +44 -1
  62. package/dist/layers/layers.js.map +1 -1
  63. package/dist/layers/photos.d.ts +48 -0
  64. package/dist/layers/photos.js +140 -0
  65. package/dist/layers/photos.js.map +1 -0
  66. package/dist/layers/symbols.d.ts +5 -1
  67. package/dist/layers/symbols.js +111 -32
  68. package/dist/layers/symbols.js.map +1 -1
  69. package/dist/layers/trees.d.ts +28 -0
  70. package/dist/layers/trees.js +51 -0
  71. package/dist/layers/trees.js.map +1 -0
  72. package/dist/layers/vectors.d.ts +28 -2
  73. package/dist/layers/vectors.js +81 -7
  74. package/dist/layers/vectors.js.map +1 -1
  75. package/dist/map/layer-spec.d.ts +3 -0
  76. package/dist/map/layer-spec.js +2 -0
  77. package/dist/map/layer-spec.js.map +1 -1
  78. package/dist/map.d.ts +8 -0
  79. package/dist/map.js +15 -2
  80. package/dist/map.js.map +1 -1
  81. package/dist/panoramax.d.ts +49 -0
  82. package/dist/panoramax.js +71 -0
  83. package/dist/panoramax.js.map +1 -0
  84. package/dist/react/Layer.d.ts +1 -0
  85. package/dist/react/Layer.js.map +1 -1
  86. package/dist/react/VectorGeometry.d.ts +5 -0
  87. package/dist/react/VectorGeometry.js +12 -4
  88. package/dist/react/VectorGeometry.js.map +1 -1
  89. package/dist/util/gltf.d.ts +9 -0
  90. package/dist/util/gltf.js +27 -0
  91. package/dist/util/gltf.js.map +1 -0
  92. package/dist/util/roofs.d.ts +10 -0
  93. package/dist/util/roofs.js +30 -0
  94. package/dist/util/roofs.js.map +1 -0
  95. package/dist/wasm/isard.d.ts +56 -17
  96. package/dist/wasm/isard.js +128 -18
  97. package/dist/wasm/isard_core.d.ts +44 -17
  98. package/dist/wasm/isard_core.js +104 -18
  99. package/dist/wasm/isard_tess.d.ts +6 -3
  100. package/dist/wasm/isard_tess.js +27 -4
  101. package/dist/workers/basemap/geometry.d.ts +38 -22
  102. package/dist/workers/basemap/labels.d.ts +14 -1
  103. package/dist/workers/basemap/lamps.d.ts +10 -0
  104. package/dist/workers/basemap/trees.d.ts +3 -1
  105. package/dist/workers/basemap.worker.d.ts +43 -3
  106. package/dist/workers/basemap.worker.js +14 -2
  107. package/dist/workers/basemap.worker.js.map +1 -1
  108. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- var it=[];var at=(e)=>{it=e};var X=(e,t={})=>{let r=String(e),o=it.filter(([s])=>r.startsWith(s));if(o.length===0)return t;let n=new Headers(t.headers);return o.forEach(([,s])=>{Object.entries(s).forEach(([a,i])=>{n.set(a,i)})}),{...t,headers:n}};class ee{capacity;evict;entries=new Map;constructor(e,t){this.capacity=e;this.evict=t}get size(){return this.entries.size}get(e){let t=this.entries.get(e);if(t!==void 0)this.entries.delete(e),this.entries.set(e,t);return t}has(e){return this.entries.has(e)}set(e,t){this.entries.delete(e),this.entries.set(e,t);for(let[r,o]of this.entries){if(this.entries.size<=this.capacity)break;this.entries.delete(r),this.evict?.(o,r)}}delete(e){return this.entries.delete(e)}values(){return this.entries.values()}clear(){this.entries.clear()}}var tr=96,rr=(e,t,r,o,n,s)=>{let a=new Uint8ClampedArray(s*s*4),i=s/n,l=n+1;for(let u=0;u<s;u+=1){let c=(u+0.5)/i,d=Math.min(n-1,Math.floor(c)),m=c-d;for(let h=0;h<s;h+=1){let f=(h+0.5)/i,y=Math.min(n-1,Math.floor(f)),p=f-y,b=2*(d*l+y),g=b+2*l,R=(1-p)*(1-m),V=p*(1-m),P=(1-p)*m,A=p*m,_=R*o[b]+V*o[b+2]+P*o[g]+A*o[g+2],S=R*o[b+1]+V*o[b+3]+P*o[g+1]+A*o[g+3],w=_-0.5,v=S-0.5;if(!(w>-1&&v>-1&&w<t&&v<r))continue;let L=Math.floor(w),F=Math.floor(v),x=w-L,k=v-F,C=0,T=0,E=0,M=0;for(let U=0;U<4;U+=1){let W=L+(U&1),J=F+(U>>1);if(W<0||J<0||W>=t||J>=r)continue;let Y=4*(J*t+W),D=(U&1?x:1-x)*(U>>1?k:1-k)*e[Y+3];C+=D*e[Y],T+=D*e[Y+1],E+=D*e[Y+2],M+=D}if(M<=0)continue;let B=4*(u*s+h);a[B]=C/M,a[B+1]=T/M,a[B+2]=E/M,a[B+3]=M}}return a},lt=(e=tr)=>{let t=new Map,r=new Set,o=(u)=>{r.delete(u),u.then((c)=>c?.close(),()=>{return})},n=(u)=>{if(t.has(u))r.add(u);else o(u)},s=new ee(e,n),a=(u)=>{let c=(t.get(u)??1)-1;if(c>0)t.set(u,c);else if(t.delete(u),r.has(u))o(u)},i=(u)=>{let c=()=>{let m=(async()=>{let h=await fetch(u,X(u));if(h.status===404||h.status===204||h.status===410)return null;if(!h.ok)throw Error(`isard: ${h.status} for a raster to reproject`);return createImageBitmap(await h.blob())})();return m.catch(()=>s.delete(u)),s.set(u,m),m},d=s.get(u)??c();return t.set(d,(t.get(d)??0)+1),d};return{draw:async(u,c)=>{let d=u.sources.map((m)=>[m,i(m.url)]);try{let m=await Promise.all(d.map(async([b,g])=>[b,await g]));if(c.throwIfAborted(),!m.some(([,b])=>b))return null;let f=new OffscreenCanvas(u.width,u.height).getContext("2d",{willReadFrequently:!0});if(!f)throw Error("isard: no 2D canvas to reproject the tiles");m.forEach(([b,g])=>{if(g)f.drawImage(g,b.x,b.y,b.w,b.h)});let y=f.getImageData(0,0,u.width,u.height).data,p=rr(y,u.width,u.height,u.mesh,u.n,u.size);return createImageBitmap(new ImageData(p,u.size,u.size),{premultiplyAlpha:"none"})}finally{d.forEach(([,m])=>{a(m)})}},cache:s,close:()=>{[...s.values()].forEach(n),s.clear()}}};var se=256,nr=(e,t,r=Number.NEGATIVE_INFINITY)=>{let o=e.length>>2,n=new Float32Array(o);if(t==="terrarium")for(let s=0,a=0;s<o;s+=1,a+=4){let i=e[a]*256+e[a+1]+e[a+2]/256-32768;n[s]=i>r?i:r}else for(let s=0,a=0;s<o;s+=1,a+=4){let i=-1e4+(e[a]*65536+e[a+1]*256+e[a+2])*0.1;n[s]=i>r?i:r}return n},ut=async(e,t,r,o,n)=>{let s=await fetch(e,X(e,{signal:o}));if(s.status===404||s.status===204||s.status===410)return null;if(!s.ok)throw Error(`${s.url}: ${s.status}`);let a=await createImageBitmap(await s.blob(),{premultiplyAlpha:"none",colorSpaceConversion:"none"});try{n.canvas??=new OffscreenCanvas(se,se);let i=n.canvas.getContext("2d",{willReadFrequently:!0});if(!i)throw Error("no 2D context");return i.imageSmoothingEnabled=!1,i.clearRect(0,0,se,se),i.drawImage(a,0,0,se,se),nr(i.getImageData(0,0,se,se).data,t,r)}finally{a.close()}};var or="aliceblue f0f8ff antiquewhite faebd7 aqua 00ffff aquamarine 7fffd4 azure f0ffff beige f5f5dc bisque ffe4c4 black 000000 blanchedalmond ffebcd blue 0000ff blueviolet 8a2be2 brown a52a2a burlywood deb887 cadetblue 5f9ea0 chartreuse 7fff00 chocolate d2691e coral ff7f50 cornflowerblue 6495ed cornsilk fff8dc crimson dc143c cyan 00ffff darkblue 00008b darkcyan 008b8b darkgoldenrod b8860b darkgray a9a9a9 darkgreen 006400 darkgrey a9a9a9 darkkhaki bdb76b darkmagenta 8b008b darkolivegreen 556b2f darkorange ff8c00 darkorchid 9932cc darkred 8b0000 darksalmon e9967a darkseagreen 8fbc8f darkslateblue 483d8b darkslategray 2f4f4f darkslategrey 2f4f4f darkturquoise 00ced1 darkviolet 9400d3 deeppink ff1493 deepskyblue 00bfff dimgray 696969 dimgrey 696969 dodgerblue 1e90ff firebrick b22222 floralwhite fffaf0 forestgreen 228b22 fuchsia ff00ff gainsboro dcdcdc ghostwhite f8f8ff gold ffd700 goldenrod daa520 gray 808080 green 008000 greenyellow adff2f grey 808080 honeydew f0fff0 hotpink ff69b4 indianred cd5c5c indigo 4b0082 ivory fffff0 khaki f0e68c lavender e6e6fa lavenderblush fff0f5 lawngreen 7cfc00 lemonchiffon fffacd lightblue add8e6 lightcoral f08080 lightcyan e0ffff lightgoldenrodyellow fafad2 lightgray d3d3d3 lightgreen 90ee90 lightgrey d3d3d3 lightpink ffb6c1 lightsalmon ffa07a lightseagreen 20b2aa lightskyblue 87cefa lightslategray 778899 lightslategrey 778899 lightsteelblue b0c4de lightyellow ffffe0 lime 00ff00 limegreen 32cd32 linen faf0e6 magenta ff00ff maroon 800000 mediumaquamarine 66cdaa mediumblue 0000cd mediumorchid ba55d3 mediumpurple 9370db mediumseagreen 3cb371 mediumslateblue 7b68ee mediumspringgreen 00fa9a mediumturquoise 48d1cc mediumvioletred c71585 midnightblue 191970 mintcream f5fffa mistyrose ffe4e1 moccasin ffe4b5 navajowhite ffdead navy 000080 oldlace fdf5e6 olive 808000 olivedrab 6b8e23 orange ffa500 orangered ff4500 orchid da70d6 palegoldenrod eee8aa palegreen 98fb98 paleturquoise afeeee palevioletred db7093 papayawhip ffefd5 peachpuff ffdab9 peru cd853f pink ffc0cb plum dda0dd powderblue b0e0e6 purple 800080 rebeccapurple 663399 red ff0000 rosybrown bc8f8f royalblue 4169e1 saddlebrown 8b4513 salmon fa8072 sandybrown f4a460 seagreen 2e8b57 seashell fff5ee sienna a0522d silver c0c0c0 skyblue 87ceeb slateblue 6a5acd slategray 708090 slategrey 708090 snow fffafa springgreen 00ff7f steelblue 4682b4 tan d2b48c teal 008080 thistle d8bfd8 tomato ff6347 turquoise 40e0d0 violet ee82ee wheat f5deb3 white ffffff whitesmoke f5f5f5 yellow ffff00 yellowgreen 9acd32",We,sr=(e)=>{if(!We){let t=or.split(" ");We=new Map(Array.from({length:Math.floor(t.length/2)},(r,o)=>[t[2*o]??"",t[2*o+1]??""]))}return We.get(e)},Te=(e)=>Number.isFinite(e)?Math.max(0,Math.min(1,e)):0,ct=(e)=>{if(!/^[0-9a-f]+$/.test(e)||![3,4,6,8].includes(e.length))return;let t=e.length<=4?[...e].map((o)=>o+o).join(""):e,r=(o)=>Number.parseInt(t.slice(o,o+2),16)/255;return[r(0),r(2),r(4),t.length===8?r(6):1]},ir=(e)=>{if(e===void 0)return 1;return Te(e.endsWith("%")?Number.parseFloat(e)/100:Number.parseFloat(e))},ar=(e,t,r)=>{let o=r<0.5?r*(1+t):r+t-r*t,n=2*r-o,s=(a)=>{let i=(a%1+1)%1;if(i<0.16666666666666666)return n+(o-n)*6*i;if(i<0.5)return o;if(i<0.6666666666666666)return n+(o-n)*(0.6666666666666666-i)*6;return n};return[s(e+0.3333333333333333),s(e),s(e-0.3333333333333333)]},ft=(e)=>{if(typeof e!=="string")return;let t=e.trim().toLowerCase();if(t.startsWith("#"))return ct(t.slice(1));if(t==="transparent")return[0,0,0,0];let r=sr(t);if(r)return ct(r);let o=/^(rgba?|hsla?)\(([^)]*)\)$/.exec(t);if(!o?.[1]||o[2]===void 0)return;let n=o[2].split(/[\s,/]+/).filter(Boolean);if(n.length<3||n.slice(0,3).some((c)=>Number.isNaN(Number.parseFloat(c))))return;let s=ir(n[3]);if(o[1].startsWith("rgb")){let c=(d)=>Te(d.endsWith("%")?Number.parseFloat(d)/100:Number.parseFloat(d)/255);return[c(n[0]??""),c(n[1]??""),c(n[2]??""),s]}let a=Number.parseFloat(n[0]??"")/360,[i,l,u]=ar(a,Te(Number.parseFloat(n[1]??"")/100),Te(Number.parseFloat(n[2]??"")/100));return[i,l,u,s]};var me=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e);var lr=["Unknown","Point","LineString","Polygon"],re=(e,t)=>({zoom:t,properties:e.properties,type:lr[e.type]??"Unknown"}),te=(e)=>ft(e),Fe=([e,t,r,o])=>`rgba(${Math.round(e*255)},${Math.round(t*255)},${Math.round(r*255)},${o})`,dt=(e,t,r,o=1)=>{let n=r-t;if(n===0)return 0;let s=e-t;return o===1?s/n:(o**s-1)/(o**n-1)},je=(e,t,r)=>{if(typeof e==="number"&&typeof t==="number")return e+(t-e)*r;let o=te(e),n=te(t);if(o&&n){let s=(a)=>o[a]+(n[a]-o[a])*r;return Fe([s(0),s(1),s(2),s(3)])}if(Array.isArray(e)&&Array.isArray(t))return e.map((s,a)=>je(s,t[a],r));return r<0.5?e:t},yt=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e)&&Array.isArray(e.stops),ur=(e,t)=>{let r=e.property===void 0?t.zoom:t.properties[e.property],o=e.stops,n=e.type??(e.property===void 0||typeof o[0]?.[0]==="number"?"exponential":"categorical");if(n==="identity")return r??e.default;if(n==="categorical")return o.find(([c])=>c===r)?.[1]??e.default;if(typeof r!=="number"||!o.length)return e.default??o[0]?.[1];let s=([c])=>{if(Array.isArray(c))return Number.NaN;return me(c)?Number(c.zoom):Number(c)},a=o[0];if(!a)return e.default;if(r<=s(a))return a[1];let i=o.findIndex((c,d)=>d>0&&Boolean(o[d-1])&&Boolean(c)&&r<s(c)),[l,u]=[o[i-1],o[i]];if(i<0||!l||!u)return o.at(-1)?.[1];if(n==="interval")return l[1];return je(l[1],u[1],dt(r,s(l),s(u),e.base??1))},Je=(e)=>e,mt={"<":(e,t)=>e<t,"<=":(e,t)=>e<=t,">":(e,t)=>e>t,">=":(e,t)=>e>=t},gt=(e,t,r)=>{let o=(a)=>typeof a==="object"&&a!==null?String(a):a,[n,s]=[o(t),o(r)];return typeof n==="string"&&typeof s==="string"?mt[e](n,s):mt[e](Number(n),Number(s))},Ee=(e,t)=>{if(t==="$type")return e.type;return typeof t==="string"?e.properties[t]:void 0},cr=new Set(["literal","zoom","get","has","!has","properties","id","geometry-type","concat","format","image","number-format","to-number","to-string","to-boolean","to-color","number","string","boolean","typeof","length","at","upcase","downcase","coalesce","!","all","any","==","!=","<","<=",">",">=","in","case","match","step","interpolate","interpolate-hcl","interpolate-lab","rgb","rgba","+","-","*","/","%","^","min","max","abs","round","floor","ceil","sqrt","ln","log10","log2","pi","e"]),be=(e)=>Array.isArray(e)&&typeof e[0]==="string"&&cr.has(e[0]),pt=new Set,pe=(e)=>e===void 0||e===null?"":String(e),Z=(e,t)=>{if(yt(e))return ur(e,t);if(!Array.isArray(e))return e;let[r,...o]=e;if(typeof r!=="string")return e;let n=(i)=>Z(o[i]??null,t),s=(i)=>Number(n(i)),a=()=>o.map((i,l)=>s(l));switch(r){case"literal":return o[0];case"zoom":return t.zoom;case"get":return Ee(t,n(0));case"has":return Ee(t,n(0))!==void 0;case"!has":return Ee(t,n(0))===void 0;case"properties":return t.properties;case"id":return null;case"geometry-type":return t.type;case"concat":return o.map((i,l)=>pe(n(l))).join("");case"format":return o.map((i,l)=>i!==null&&typeof i==="object"&&!Array.isArray(i)?"":pe(n(l))).join("");case"image":return n(0);case"number-format":{let i=me(o[1])?o[1]:{},l=(c)=>{let d=i[c];return typeof d==="number"?d:void 0},u=s(0);if(!Number.isFinite(u))return"";return u.toLocaleString(typeof i.locale==="string"?i.locale:void 0,{minimumFractionDigits:l("min-fraction-digits"),maximumFractionDigits:l("max-fraction-digits")})}case"to-number":{for(let i=0;i<o.length;i+=1){let l=n(i),u=typeof l==="string"&&l.trim()===""?Number.NaN:Number(l);if(l!==null&&l!==void 0&&!Number.isNaN(u))return u}return 0}case"to-string":return pe(n(0));case"to-boolean":{let i=n(0);return!(i===""||i===0||i===!1||i===null||i===void 0||Number.isNaN(i))}case"to-color":case"number":case"string":case"boolean":{let i={"to-color":(l)=>te(l)!==void 0,number:(l)=>typeof l==="number",string:(l)=>typeof l==="string",boolean:(l)=>typeof l==="boolean"};for(let l=0;l<o.length;l+=1){let u=n(l);if(i[r]?.(u))return u}return o.length?n(o.length-1):null}case"typeof":{let i=n(0);if(i===null||i===void 0)return"null";return Array.isArray(i)?"array":typeof i}case"length":{let i=n(0);return typeof i==="string"||Array.isArray(i)?i.length:0}case"at":{let i=n(1);return Array.isArray(i)?i[s(0)]??null:null}case"upcase":return pe(n(0)).toUpperCase();case"downcase":return pe(n(0)).toLowerCase();case"coalesce":for(let i=0;i<o.length;i+=1){let l=n(i);if(l!==void 0&&l!==null)return l}return null;case"!":return!n(0);case"all":return o.every((i,l)=>Boolean(n(l)));case"any":return o.some((i,l)=>Boolean(n(l)));case"==":return n(0)===n(1);case"!=":return n(0)!==n(1);case"<":case"<=":case">":case">=":return gt(r,n(0),n(1));case"in":{let i=n(1),l=n(0);if(typeof i==="string")return i.includes(String(l));return Array.isArray(i)&&i.includes(l)}case"case":{let i=o.findIndex((l,u)=>u%2===0&&u+1<o.length&&Boolean(n(u)));return i<0?n(o.length-1):n(i+1)}case"match":{let i=n(0),l=o.findIndex((u,c)=>c%2===1&&c+1<o.length&&(Array.isArray(u)?Je(u).includes(i):u===i));return l<0?n(o.length-1):n(l+1)}case"step":{let i=s(0),l=n(1);for(let u=2;u+1<o.length;u+=2)if(i>=Number(o[u]))l=n(u+1);else break;return l}case"interpolate":case"interpolate-hcl":case"interpolate-lab":{let i=o[0],l=s(1),u=Array.isArray(i)&&i[0]==="exponential"?Number(i[1]):1,c=Array.from({length:Math.floor((o.length-2)/2)},(y,p)=>[Number(o[2+2*p]),o[3+2*p]??null]),d=c[0];if(!d)return null;if(l<=d[0])return Z(d[1],t);let m=c.findIndex((y,p)=>p>0&&l<y[0]),[h,f]=[c[m-1],c[m]];if(m<0||!h||!f)return Z(c.at(-1)?.[1]??null,t);return je(Z(h[1],t),Z(f[1],t),dt(l,h[0],f[0],u))}case"rgb":case"rgba":return Fe([s(0)/255,s(1)/255,s(2)/255,o.length>3?s(3):1]);case"+":return a().reduce((i,l)=>i+l,0);case"*":return a().reduce((i,l)=>i*l,1);case"-":return o.length===1?-s(0):s(0)-s(1);case"/":return s(0)/s(1);case"%":return s(0)%s(1);case"^":return s(0)**s(1);case"min":return Math.min(...a());case"max":return Math.max(...a());case"abs":return Math.abs(s(0));case"round":return Math.sign(s(0))*Math.round(Math.abs(s(0)));case"floor":return Math.floor(s(0));case"ceil":return Math.ceil(s(0));case"sqrt":return Math.sqrt(s(0));case"ln":return Math.log(s(0));case"log10":return Math.log10(s(0));case"log2":return Math.log2(s(0));case"pi":return Math.PI;case"e":return Math.E;default:if(!pt.has(r))pt.add(r),console.warn(`isard: the style expression "${r}" is not supported`);return null}},fr=new Set(["==","!=","<","<=",">",">="]),Pe=(e)=>{let t=e.paint??{};if(["fill-pattern","line-pattern","fill-extrusion-pattern","background-pattern"].some((r)=>(r in t)))return;if(e.type==="line")return"line";if(e.type==="fill-extrusion")return"extrusion";return e.type==="fill"||e.type==="background"?"fill":void 0},mr=(e)=>{let[t,r,...o]=e;if(typeof t!=="string"||typeof r!=="string"||o.some(Array.isArray))return!1;if(fr.has(t))return e.length===3;if(t==="in")return e.length!==3||!Array.isArray(e[2]);return t==="!in"||t==="has"||t==="!has"},pr=(e,t)=>{let[r,o,...n]=e,s=Ee(t,o);switch(r){case"==":return s===n[0];case"!=":return s!==n[0];case"<":case"<=":case">":case">=":return gt(r,s,n[0]);case"in":return Je(n).includes(s);case"!in":return!Je(n).includes(s);case"has":return s!==void 0;case"!has":return s===void 0;default:return!0}},bt=new WeakMap,ht=(e)=>{if(!Array.isArray(e))return()=>Boolean(e);let t=bt.get(e);if(t)return t;let o=(()=>{let n=e[0];if(n==="all"||n==="any"||n==="none"){let s=e.slice(1).map(ht);if(n==="all")return(a)=>s.every((i)=>i(a));if(n==="any")return(a)=>s.some((i)=>i(a));return(a)=>!s.some((i)=>i(a))}if(mr(e))return(s)=>pr(e,s);return(s)=>Boolean(Z(e,s))})();return bt.set(e,o),o},ne=(e,t)=>{if(e===void 0||e===null)return!0;return ht(e)(t)},br=new Set(["get","has","!has","geometry-type","properties","id"]),ie=(e)=>{if(e!==void 0&&yt(e))return e.property!==void 0;if(!Array.isArray(e))return!1;if(br.has(e[0]))return!0;return e.some((t)=>ie(t))},ze=(e,t)=>{if(e===void 0||e===null)return"";if(typeof e==="string")return e.replace(/\{([^}]+)\}/g,(o,n)=>{let s=t.properties[n];return s===void 0?"":String(s)});let r=Z(e,t);if(Array.isArray(r))return r.filter((o)=>typeof o==="string").join("");return r===void 0||r===null?"":String(r)},wt=(e)=>/Regular|Bold|Italic|Semibold|Light|Medium|Black/.test(e)?e:`${e} Regular`,$e=(e)=>{let t=new Set,r=(i)=>i.filter((l,u)=>u>=3&&u%2===1).map(Number),o=(i)=>{if(!Array.isArray(i))return;let l=(u)=>Array.isArray(u)&&u[0]==="zoom";if((i[0]==="interpolate"||i[0]==="interpolate-hcl"||i[0]==="interpolate-lab")&&l(i[2]))r(i).forEach((u)=>{t.add(u)});else if(i[0]==="step"&&l(i[1]))r(i).forEach((u)=>{t.add(u),t.add(u-0.01)});i.forEach(o)};o(e);let n=[...t].filter(Number.isFinite);if(n.length===0)n.push(0);let[s,a]=[Math.min(...n),Math.max(...n)];return n.push(...Array.from({length:Math.floor(a)-Math.ceil(s)+1},(i,l)=>Math.ceil(s)+l)),[...new Set(n)].sort((i,l)=>i-l).map((i)=>[i,Number(Z(e,{zoom:i,properties:{},type:"Unknown"}))])};class we{static __wrap(e){let t=Object.create(we.prototype);return t.__wbg_ptr=e,xt.register(t,t.__wbg_ptr,t),t}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,xt.unregister(this),e}free(){let e=this.__destroy_into_raw();O.__wbg_gridset_free(e,0)}count(){return O.gridset_count(this.__wbg_ptr)>>>0}meta(e){let t,r;try{let o=O.gridset_meta(this.__wbg_ptr,e);return t=o[0],r=o[1],qe(o[0],o[1])}finally{O.__wbindgen_free(t,r,1)}}values(e){return O.gridset_values(this.__wbg_ptr,e)}}if(Symbol.dispose)we.prototype[Symbol.dispose]=we.prototype.free;class xe{static __wrap(e){let t=Object.create(xe.prototype);return t.__wbg_ptr=e,_t.register(t,t.__wbg_ptr,t),t}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,_t.unregister(this),e}free(){let e=this.__destroy_into_raw();O.__wbg_streetflow_free(e,0)}eastU(){return O.streetflow_eastU(this.__wbg_ptr)}eastV(){return O.streetflow_eastV(this.__wbg_ptr)}northU(){return O.streetflow_northU(this.__wbg_ptr)}northV(){return O.streetflow_northV(this.__wbg_ptr)}}if(Symbol.dispose)xe.prototype[Symbol.dispose]=xe.prototype.free;function St(e){let t=xr(e,O.__wbindgen_malloc),r=le,o=O.readGrids(t,r);if(o[2])throw Ar(o[1]);return we.__wrap(o[0])}function Mt(e,t,r,o,n,s){let a=_r(e,O.__wbindgen_malloc),i=le,l=At(t,O.__wbindgen_malloc),u=le,c=At(r,O.__wbindgen_malloc),d=le,m=O.streetFlow(a,i,l,u,c,d,o,n,s);return xe.__wrap(m)}function dr(){return{__proto__:null,"./isard_grid_bg.js":{__proto__:null,__wbg___wbindgen_throw_41e9ee4f547fc59a:function(t,r){throw Error(qe(t,r))},__wbg_new_from_slice_ca6ad97db1f4779a:function(t,r){return new Float32Array(yr(t,r))},__wbindgen_generic_0000000000000001:function(t,r){return qe(t,r)},__wbindgen_init_externref_table:function(){let t=O.__wbindgen_externrefs,r=t.grow(4);t.set(0,void 0),t.set(r+0,void 0),t.set(r+1,null),t.set(r+2,!0),t.set(r+3,!1)}}}}var xt=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e)=>O.__wbg_gridset_free(e,1)),_t=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e)=>O.__wbg_streetflow_free(e,1));function yr(e,t){return e=e>>>0,gr().subarray(e/4,e/4+t)}var de=null;function gr(){if(de===null||de.byteLength===0)de=new Float32Array(O.memory.buffer);return de}var ye=null;function hr(){if(ye===null||ye.byteLength===0)ye=new Float64Array(O.memory.buffer);return ye}function qe(e,t){return Mr(e>>>0,t)}var ge=null;function wr(){if(ge===null||ge.byteLength===0)ge=new Uint32Array(O.memory.buffer);return ge}var he=null;function vt(){if(he===null||he.byteLength===0)he=new Uint8Array(O.memory.buffer);return he}function At(e,t){let r=t(e.length*4,4)>>>0;return wr().set(e,r/4),le=e.length,r}function xr(e,t){let r=t(e.length*1,1)>>>0;return vt().set(e,r/1),le=e.length,r}function _r(e,t){let r=t(e.length*8,8)>>>0;return hr().set(e,r/8),le=e.length,r}function Ar(e){let t=O.__wbindgen_externrefs.get(e);return O.__externref_table_dealloc(e),t}var Le=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});Le.decode();var Sr=2146435072,He=0;function Mr(e,t){if(He+=t,He>=Sr)Le=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),Le.decode(),He=t;return Le.decode(vt().subarray(e,e+t))}var le=0,vr,kr,O;function Rr(e,t){return kr=e,O=e.exports,vr=t,de=null,ye=null,ge=null,he=null,O.__wbindgen_start(),O}async function Ir(e,t){if(typeof Response==="function"&&e instanceof Response){if(!e.ok)throw Error(`failed to fetch Wasm: ${e.status} ${e.statusText} fetching '${e.url}'`);if(typeof WebAssembly.instantiateStreaming==="function")try{return await WebAssembly.instantiateStreaming(e,t)}catch(n){if(r(e.type)&&e.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",n);else throw n}let o=await e.arrayBuffer();return await WebAssembly.instantiate(o,t)}else{let o=await WebAssembly.instantiate(e,t);if(o instanceof WebAssembly.Instance)return{instance:o,module:e};else return o}function r(o){switch(o){case"basic":case"cors":case"default":return!0}return!1}}async function kt(e){if(O!==void 0)return O;if(e!==void 0)if(Object.getPrototypeOf(e)===Object.prototype)({module_or_path:e}=e);else console.warn("using deprecated parameters for the initialization function; pass a single object instead");if(e===void 0)e=new URL("isard_grid_bg.wasm",import.meta.url);let t=dr();if(typeof e==="string"||typeof Request==="function"&&e instanceof Request||typeof URL==="function"&&e instanceof URL)e=fetch(e);let{instance:r,module:o}=await Ir(await e,t);return Rr(r,o)}var Ye={},Rt=async(e)=>{let t=Ye.ready??kt({module_or_path:e});Ye.ready=t,await t.catch((r)=>{throw Ye.ready=void 0,r})},It=async(e,t,r,o,n)=>{await Rt(n);let s=Mt(e.points,e.ringStart,e.polygonStart,t,r,o);try{return{eastU:s.eastU(),eastV:s.eastV(),northU:s.northU(),northV:s.northV()}}finally{s.free()}},Tr=(e)=>typeof e==="object"&&e!==null&&("name"in e)&&("width"in e)&&("height"in e)&&("bounds"in e)&&Array.isArray(e.bounds),Tt=async(e,t)=>{await Rt(t);let r=St(e);try{let o=[],n=[];for(let s=0;s<r.count();s++){let a=JSON.parse(r.meta(s));if(!Tr(a))throw Error("isard: a grid without its description");o.push(a),n.push(r.values(s))}return{grids:o,values:n}}finally{r.free()}};class ve{static __wrap(e){let t=Object.create(ve.prototype);return t.__wbg_ptr=e,Et.register(t,t.__wbg_ptr,t),t}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Et.unregister(this),e}free(){let e=this.__destroy_into_raw();I.__wbg_tessellatedtile_free(e,0)}blockIndices(){return I.tessellatedtile_blockIndices(this.__wbg_ptr)}blockRanges(){let e=I.tessellatedtile_blockRanges(this.__wbg_ptr);var t=Ue(e[0],e[1]).slice();return I.__wbindgen_free(e[0],e[1]*4,4),t}blocks(){return I.tessellatedtile_blocks(this.__wbg_ptr)}bounds(){let e=I.tessellatedtile_bounds(this.__wbg_ptr);var t=Pr(e[0],e[1]).slice();return I.__wbindgen_free(e[0],e[1]*8,8),t}fillRanges(){let e=I.tessellatedtile_fillRanges(this.__wbg_ptr);var t=Ue(e[0],e[1]).slice();return I.__wbindgen_free(e[0],e[1]*4,4),t}indices(){return I.tessellatedtile_indices(this.__wbg_ptr)}lineRanges(){let e=I.tessellatedtile_lineRanges(this.__wbg_ptr);var t=Ue(e[0],e[1]).slice();return I.__wbindgen_free(e[0],e[1]*4,4),t}lineTable(){return I.tessellatedtile_lineTable(this.__wbg_ptr)}pieces(){return I.tessellatedtile_pieces(this.__wbg_ptr)}prism(){return I.tessellatedtile_prism(this.__wbg_ptr)!==0}vertices(){return I.tessellatedtile_vertices(this.__wbg_ptr)}}if(Symbol.dispose)ve.prototype[Symbol.dispose]=ve.prototype.free;function Ft(e,t,r,o,n,s,a,i,l,u,c,d){let m=Ge(e,I.__wbindgen_malloc),h=K,f=ue(t,I.__wbindgen_malloc),y=K,p=ue(r,I.__wbindgen_malloc),b=K,g=ue(o,I.__wbindgen_malloc),R=K,V=ue(n,I.__wbindgen_malloc),P=K,A=Ge(s,I.__wbindgen_malloc),_=K,S=ue(a,I.__wbindgen_malloc),w=K,v=ue(i,I.__wbindgen_malloc),L=K,F=ue(l,I.__wbindgen_malloc),x=K,k=Cr(u,I.__wbindgen_malloc),C=K,T=Ge(d,I.__wbindgen_malloc),E=K,M=I.tessellateVectorTile(m,h,f,y,p,b,g,R,V,P,A,_,S,w,v,L,F,x,k,C,c,T,E);return ve.__wrap(M)}function Er(){return{__proto__:null,"./isard_tess_bg.js":{__proto__:null,__wbg___wbindgen_throw_41e9ee4f547fc59a:function(t,r){throw Error(Nr(t,r))},__wbg_new_from_slice_37a3c3a194266cb8:function(t,r){return new Uint32Array(Ue(t,r))},__wbg_new_from_slice_9a868026ffa4208a:function(t,r){return new Uint8Array(Lr(t,r))},__wbg_new_from_slice_ca6ad97db1f4779a:function(t,r){return new Float32Array(Fr(t,r))},__wbindgen_init_externref_table:function(){let t=I.__wbindgen_externrefs,r=t.grow(4);t.set(0,void 0),t.set(r+0,void 0),t.set(r+1,null),t.set(r+2,!0),t.set(r+3,!1)}}}}var Et=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e)=>I.__wbg_tessellatedtile_free(e,1));function Fr(e,t){return e=e>>>0,Ur().subarray(e/4,e/4+t)}function Pr(e,t){return e=e>>>0,Pt().subarray(e/8,e/8+t)}function Ue(e,t){return e=e>>>0,Lt().subarray(e/4,e/4+t)}function Lr(e,t){return e=e>>>0,Xe().subarray(e/1,e/1+t)}var _e=null;function Ur(){if(_e===null||_e.byteLength===0)_e=new Float32Array(I.memory.buffer);return _e}var Ae=null;function Pt(){if(Ae===null||Ae.byteLength===0)Ae=new Float64Array(I.memory.buffer);return Ae}function Nr(e,t){return Dr(e>>>0,t)}var Se=null;function Lt(){if(Se===null||Se.byteLength===0)Se=new Uint32Array(I.memory.buffer);return Se}var Me=null;function Xe(){if(Me===null||Me.byteLength===0)Me=new Uint8Array(I.memory.buffer);return Me}function ue(e,t){let r=t(e.length*4,4)>>>0;return Lt().set(e,r/4),K=e.length,r}function Cr(e,t){let r=t(e.length*1,1)>>>0;return Xe().set(e,r/1),K=e.length,r}function Ge(e,t){let r=t(e.length*8,8)>>>0;return Pt().set(e,r/8),K=e.length,r}var Ne=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});Ne.decode();var Or=2146435072,Ke=0;function Dr(e,t){if(Ke+=t,Ke>=Or)Ne=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),Ne.decode(),Ke=t;return Ne.decode(Xe().subarray(e,e+t))}var K=0,Vr,Br,I;function Wr(e,t){return Br=e,I=e.exports,Vr=t,_e=null,Ae=null,Se=null,Me=null,I.__wbindgen_start(),I}async function Jr(e,t){if(typeof Response==="function"&&e instanceof Response){if(!e.ok)throw Error(`failed to fetch Wasm: ${e.status} ${e.statusText} fetching '${e.url}'`);if(typeof WebAssembly.instantiateStreaming==="function")try{return await WebAssembly.instantiateStreaming(e,t)}catch(n){if(r(e.type)&&e.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",n);else throw n}let o=await e.arrayBuffer();return await WebAssembly.instantiate(o,t)}else{let o=await WebAssembly.instantiate(e,t);if(o instanceof WebAssembly.Instance)return{instance:o,module:e};else return o}function r(o){switch(o){case"basic":case"cors":case"default":return!0}return!1}}async function Ut(e){if(I!==void 0)return I;if(e!==void 0)if(Object.getPrototypeOf(e)===Object.prototype)({module_or_path:e}=e);else console.warn("using deprecated parameters for the initialization function; pass a single object instead");if(e===void 0)e=new URL("isard_tess_bg.wasm",import.meta.url);let t=Er();if(typeof e==="string"||typeof Request==="function"&&e instanceof Request||typeof URL==="function"&&e instanceof URL)e=fetch(e);let{instance:r,module:o}=await Jr(await e,t);return Wr(r,o)}class Ze{buf;end;pos;constructor(e,t=0,r=e.length){this.buf=e;this.end=r;this.pos=t}varint(){let e=0;for(let t=0;t<70;t+=7){let r=this.buf[this.pos++]??0;if(e+=(r&127)*2**t,r<128)break}return e}int64(){let e=0,t=0;for(let r=0;r<10;r+=1){let o=this.buf[this.pos++]??0,n=o&127;if(r<4)e|=n<<7*r;else if(r===4)e|=(n&15)<<28,t|=n>>4;else t|=n<<7*r-32;if(o<128)break}return(t|0)*4294967296+(e>>>0)}sint(){let e=this.varint();return e%2===1?-(e+1)/2:e/2}sub(){let e=this.varint(),t=Math.min(this.pos+e,this.end),r=new Ze(this.buf,this.pos,t);return this.pos=t,r}string(){let e=this.varint(),t=Math.min(this.pos+e,this.end),r=jr.decode(this.buf.subarray(this.pos,t));return this.pos=t,r}float(){let e=this.pos+4<=this.end?this.view().getFloat32(this.pos,!0):0;return this.pos+=4,e}double(){let e=this.pos+8<=this.end?this.view().getFloat64(this.pos,!0):0;return this.pos+=8,e}view(){return new DataView(this.buf.buffer,this.buf.byteOffset,this.buf.byteLength)}skip(e){if(e===0)this.varint();else if(e===1)this.pos+=8;else if(e===2)this.pos+=this.varint();else if(e===5)this.pos+=4}get more(){return this.pos<this.end}}var jr=new TextDecoder,zr=(e)=>{let t="";while(e.more){let r=e.varint();switch(r>>3){case 1:t=e.string();break;case 2:t=e.float();break;case 3:t=e.double();break;case 4:t=e.int64();break;case 5:t=e.varint();break;case 6:t=e.sint();break;case 7:t=e.varint()!==0;break;default:e.skip(r&7)}}return t},$r=(e)=>{let t=[],r,[o,n]=[0,0];while(e.more){let s=e.varint(),a=s&7,i=s>>3;if(a===7){if(r&&r.length>=2)r.push(r[0]??0,r[1]??0);continue}for(let l=0;l<i&&e.more;l+=1){if(o+=e.sint(),n+=e.sint(),a===1)r=[],t.push(r);r?.push(o,n)}}return t},Qe=(e,t)=>{let r=new Map,o=new Ze(e);while(o.more){let n=o.varint();if(n>>3!==3){o.skip(n&7);continue}let s=o.sub(),a="",i=4096,l=[],u=[],c=[];while(s.more){let m=s.varint();switch(m>>3){case 1:a=s.string();break;case 2:c.push(s.sub());break;case 3:l.push(s.string());break;case 4:u.push(zr(s.sub()));break;case 5:i=s.varint();break;default:s.skip(m&7)}}if(t&&!t.has(a))continue;let d=[];for(let m of c){let h=1,f={},y=[];while(m.more){let p=m.varint();switch(p>>3){case 2:{let b=m.sub();while(b.more){let g=l[b.varint()],R=u[b.varint()];if(g!==void 0&&R!==void 0)f[g]=R}break}case 3:h=Math.min(3,Math.max(1,m.varint()));break;case 4:y=$r(m.sub());break;default:m.skip(p&7)}}d.push({type:h,properties:f,geometry:y})}r.set(a,{extent:i,features:d})}return r};var Hr=127,qr=16384,Yr=["unknown","mvt","png","jpeg","webp","avif"],Gr=(e)=>(4**e-1)/3,Kr=(e,t,r)=>{if(e>26)throw Error(`isard: PMTiles level ${e} past 26`);let o=2**e;if(t<0||r<0||t>=o||r>=o)throw Error(`isard: PMTiles tile ${e}/${t}/${r} out of its level`);let[n,s]=[t,r],a=0;for(let i=o/2;i>=1;i/=2){let l=(n&i)>0?1:0,u=(s&i)>0?1:0;if(a+=i*i*(3*l^u),u===0){if(l===1)[n,s]=[i-1-n,i-1-s];[n,s]=[s,n]}}return Gr(e)+a};class Ot{bytes;pos=0;constructor(e){this.bytes=e}next(){let e=0,t=1;for(;;){let r=this.bytes[this.pos++];if(r===void 0)throw Error("isard: PMTiles directory truncated");if(e+=(r&127)*t,r<128)return e;if(t*=128,t>9223372036854776000)throw Error("isard: PMTiles varint too long")}}}var Nt=(e)=>{let t=new Ot(e),r=t.next();if(r>e.length)throw Error("isard: PMTiles directory larger than its bytes");let o=[],n=0;for(let s=0;s<r;s+=1)n+=t.next(),o.push({tileId:n,offset:0,length:0,runLength:1});for(let s of o)s.runLength=t.next();for(let s of o)s.length=t.next();return o.forEach((s,a)=>{let i=t.next(),l=o[a-1];s.offset=i===0&&l?l.offset+l.length:i-1}),o},Xr=(e,t)=>{let[r,o]=[0,e.length-1];while(r<=o){let s=r+o>>1,a=e[s];if(!a)break;if(a.tileId===t)return a;if(a.tileId<t)r=s+1;else o=s-1}let n=e[o];if(!n)return;if(n.runLength===0||t-n.tileId<n.runLength)return n;return},Zr=(e)=>{if(e.length<Hr||String.fromCharCode(...e.subarray(0,7))!=="PMTiles")throw Error("isard: not a PMTiles archive");if(e[7]!==3)throw Error(`isard: PMTiles version ${e[7]} (only 3 is read)`);let t=new DataView(e.buffer,e.byteOffset,e.byteLength),r=(n)=>Number(t.getBigUint64(n,!0)),o=(n)=>t.getInt32(n,!0)/1e7;return{rootDirectoryOffset:r(8),rootDirectoryLength:r(16),metadataOffset:r(24),metadataLength:r(32),leafDirectoryOffset:r(40),leafDirectoryLength:r(48),tileDataOffset:r(56),tileDataLength:r(64),internalCompression:t.getUint8(97),tileCompression:t.getUint8(98),tileType:Yr[t.getUint8(99)]??"unknown",minZoom:t.getUint8(100),maxZoom:t.getUint8(101),bounds:[o(102),o(106),o(110),o(114)],center:[o(119),o(123),t.getUint8(118)]}},Ce=async(e,t)=>{if(t===0||t===1)return e;if(t!==2)throw Error(`isard: PMTiles compression ${t===3?"brotli":"zstd"} is not read (gzip only)`);let r=new Blob([e]).stream().pipeThrough(new DecompressionStream("gzip"));return new Uint8Array(await new Response(r).arrayBuffer())},Qr=67108864;class Dt{source;head;leaves=new ee(64);whole;constructor(e){this.source=e}async range(e,t,r){if(typeof this.source!=="string")return new Uint8Array(await this.source.slice(e,e+t).arrayBuffer());if(this.whole)return(await this.whole).subarray(e,e+t);let o=await fetch(this.source,X(this.source,{headers:{Range:`bytes=${e}-${e+Math.max(t,1)-1}`},...r?{signal:r}:{}}));if(!o.ok)throw Error(`${this.source}: HTTP ${o.status}`);if(o.status===206)return new Uint8Array(await o.arrayBuffer());if(Number(o.headers.get("Content-Length"))>Qr)throw await o.body?.cancel(),Error(`${this.source}: the server ignores range requests (HTTP 206 expected)`);let s=o.arrayBuffer().then((a)=>new Uint8Array(a));return this.whole=s,s.catch(()=>{this.whole=void 0}),(await s).subarray(e,e+t)}load(){return this.head??=(async()=>{let e=await this.range(0,qr),t=Zr(e),{rootDirectoryOffset:r,rootDirectoryLength:o}=t,n=r+o<=e.length?e.subarray(r,r+o):await this.range(r,o),s=Nt(await Ce(n,t.internalCompression));return{header:t,root:s}})(),this.head.catch(()=>{this.head=void 0}),this.head}async header(){return(await this.load()).header}async metadata(){let{header:e}=await this.load();if(e.metadataLength===0)return{};let t=await this.range(e.metadataOffset,e.metadataLength),r=new TextDecoder().decode(await Ce(t,e.internalCompression)),o=JSON.parse(r);return me(o)?o:{}}leaf(e,t){let r=e.leafDirectoryOffset+t.offset,o=this.leaves.get(r);if(o)return o;let n=this.range(r,t.length).then(async(s)=>Nt(await Ce(s,e.internalCompression)));return n.catch(()=>this.leaves.delete(r)),this.leaves.set(r,n),n}async tile(e,t,r,o){let{header:n,root:s}=await this.load();if(e<n.minZoom||e>n.maxZoom)return;let a=Kr(e,t,r),i=s;for(let l=0;l<4;l+=1){let u=Xr(i,a);if(!u)return;if(u.runLength>0){let c=await this.range(n.tileDataOffset+u.offset,u.length,o);return Ce(c,n.tileCompression)}i=await this.leaf(n,u)}throw Error("isard: PMTiles directories nested too deep")}}var Ct=new ee(16),en=(e)=>{let t=Ct.get(e);if(t)return t;let r=new Dt(e);return Ct.set(e,r),r};var et=(e,t)=>{let r=/^pmtiles:\/\/(.+)\/(\d+)\/(\d+)\/(\d+)$/.exec(e);if(!r)return!1;let[,o="",n,s,a]=r;return en(o).tile(Number(n),Number(s),Number(a),t)};var Vt=(e)=>e*360-180,Oe=(e)=>Math.atan(Math.sinh(Math.PI*(1-2*e)))*180/Math.PI;var rt=(e,t)=>{let r=e.sprites.find((n)=>Boolean(n.icons[t])),o=r?.icons[t];return r&&o?{icon:o,image:r.image}:void 0},Re=new Map,Bt=96,ke=new ee(Bt),Wt=(e)=>Math.max(16,Math.ceil(Bt/Math.max(1,e))),De=new Set,G=new Set,tt=new ee(64,(e)=>e.then((t)=>setTimeout(()=>t?.close(),0),()=>{return})),Jt=(e,t="auto")=>{let r=tt.get(e);if(r)return r;let o=(async()=>{let n=et(e);if(n){let i=await n;return i&&createImageBitmap(new Blob([i]))}let a=await fetch(e,X(e,{priority:t}));if(a.status===404||a.status===204)return;if(!a.ok)throw Error(`${e}: ${a.status}`);return createImageBitmap(await a.blob())})();return o.catch(()=>tt.delete(e)),tt.set(e,o),o},oe=(e,t="auto")=>{let r=ke.get(e);if(r)return r;let o=(async()=>{let n=et(e);if(n){let s=await n;return s&&Qe(s)}for(let s=0;;s+=1){let i=await fetch(e,X(e,{priority:t}));if(i.status===404||i.status===204)return;if(i.ok)return Qe(new Uint8Array(await i.arrayBuffer()));if(s>=2)throw Error(`${e}: ${i.status}`);await new Promise((l)=>setTimeout(l,400*(s+1)))}})();return o.catch(()=>ke.delete(e)),ke.set(e,o),o},jt=(e,t,r,o)=>{let n=Math.max(0,Math.min(t-1,e.maxzoom)),s=t-n,a=2**Math.max(0,s),[i,l]=s>=0?[Math.floor(r/a),Math.floor(o/a)]:[r,o],u=e.tiles.replace("{z}",String(n)).replace("{x}",String(i)).replace("{y}",String(l)),c=1/a;return{url:u,vz:n,vx:i,vy:l,part:c,ox:r%a*c,oy:o%a*c}},N=(e,t,r,o,n)=>{let s=e[t]?.[r];if(s===void 0)return n;let a=Array.isArray(s)&&!be(s)?s:Z(s,o);return a===void 0||a===null?n:a},ae=(e,t)=>{let r=te(e)??[0,0,0,1];return Fe([r[0],r[1],r[2],r[3]*t])},Ve=(e,t)=>{if(e.layout?.visibility==="none")return!1;return t>=(e.minzoom??0)&&t<(e.maxzoom??24)},Q=(e,t,r,o,n,s)=>{let a=2**e;return[Vt((t+n/o)/a),Oe((r+s/o)/a)]};var Be=async(e,t,r,o,n,s)=>{let a=e.tiles.replace("{z}",String(t)).replace("{x}",String(r)).replace("{y}",String(o)),i=await oe(a,s),l={points:[],ringStart:[],polygonStart:[],feature:[]},u=[];if(!i||G.has(n))return;let c=new Set,d=2**t;return e.layers.forEach((m)=>{let h=i.get(m["source-layer"]??"");if(!h)return;h.features.forEach((f)=>{if(f.type!==3||c.has(f)||!ne(m.filter,re(f,t)))return;c.add(f);let y=u.length;u.push(f.properties),f.geometry.forEach((p)=>{let b=0;for(let g=0;g+1<p.length;g+=2){let R=(g+2)%p.length;b+=(p[g]??0)*(p[R+1]??0)-(p[R]??0)*(p[g+1]??0)}if(b===0)return;if(b>0||l.polygonStart.length===0||l.feature.at(-1)!==y)l.polygonStart.push(l.ringStart.length),l.feature.push(y);l.ringStart.push(l.points.length/2);for(let g=0;g+1<p.length;g+=2)l.points.push((r+(p[g]??0)/h.extent)/d,(o+(p[g+1]??0)/h.extent)/d)})})}),l.ringStart.push(l.points.length/2),l.polygonStart.push(l.ringStart.length-1),{arrays:{points:Float64Array.from(l.points),ringStart:Uint32Array.from(l.ringStart),polygonStart:Uint32Array.from(l.polygonStart),feature:Uint32Array.from(l.feature)},properties:u}},tn=32,rn=(e,t)=>{let r=e.slice(),o=[[0,0,(n)=>n>=0],[0,t,(n)=>n<=t],[1,0,(n)=>n>=0],[1,t,(n)=>n<=t]];for(let[n,s,a]of o){let i=[],l=r.length/2;for(let u=0;u<l;u+=1){let[c,d]=[r[u*2]??0,r[u*2+1]??0],m=(u+1)%l,[h,f]=[r[m*2]??0,r[m*2+1]??0],[y,p]=n===0?[c,h]:[d,f];if(a(y))i.push(c,d);if(a(y)!==a(p)){let b=(s-y)/(p-y);i.push(n===0?s:c+(h-c)*b,n===0?d+(f-d)*b:s)}}if(r=i,r.length===0)break}return r},nn=(e,t)=>{let r=[],o=[],n=()=>{if(o.length>=4)r.push(o);o=[]};for(let s=2;s+1<e.length;s+=2){let[a,i,l,u]=[e[s-2]??0,e[s-1]??0,e[s]??0,e[s+1]??0],[c,d]=[l-a,u-i],[m,h]=[0,1];for(let[f,y]of[[-c,a],[c,t-a],[-d,i],[d,t-i]])if(f===0){if(y<0)h=-1}else if(f<0)m=Math.max(m,y/f);else h=Math.min(h,y/f);if(m>h){n();continue}if(o.length===0||m>0)n(),o.push(a+c*m,i+d*m);if(o.push(a+c*h,i+d*h),h<1)n()}return n(),r},on=(e,t)=>e>=t?[e-0.5,e+1,e+3,e+6]:[e-0.5,e-0.16666666666666666,e+0.16666666666666666,e+0.5],sn=(e,t,r,o,n)=>{let s=2**r,[a,i]=[o*t,n*t],l=[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY];e.forEach((h)=>{for(let f=0;f+1<h.length;f+=2){let[y,p]=[(h[f]??0)*s-a,(h[f+1]??0)*s-i];l[0]=Math.min(l[0]??y,y),l[1]=Math.min(l[1]??p,p),l[2]=Math.max(l[2]??y,y),l[3]=Math.max(l[3]??p,p)}});let[u=0,c=0,d=0,m=0]=l;if(d<=0||m<=0||u>=t||c>=t)return;return e.map((h)=>h.map((f,y)=>f*s-(y%2===0?a:i)))},zt=async(e,{z:t,x:r,y:o,deepest:n=e.maxzoom},s,a,i)=>{let l=Math.max(0,t-e.maxzoom),[u,c,d]=[t-l,Math.floor(r/2**l),Math.floor(o/2**l)],[m,h]=[r-c*2**l,o-d*2**l],f=e.tiles.replace("{z}",String(u)).replace("{x}",String(c)).replace("{y}",String(d)),y=await oe(f,i);if(G.has(s))return;let p=2**t,b=on(t,Math.max(n,e.maxzoom)),g={points:[],ringStart:[],polygonStart:[],feature:[]},R={points:[],start:[],feature:[]},V=[],P=[],A=[],_=[],S=[],w={},v=(x,k,C,T,E=!1)=>{let M=(D,j,q)=>N(k,"paint",D,{...C,zoom:q},j),B=`${k.type}-opacity`,U=ie(k.paint?.[B]),W=(D)=>{let[j,q,H,fe]=te(M(E?"fill-outline-color":`${k.type}-color`,"#000",D))??[0,0,0,1];return[j,q,H,fe*(U?Number(M(B,1,D)):1)]},J=Array(tn).fill(0),Y=b[3]-b[0]>1.5?b[1]:b[3];return J.splice(0,8,...W(b[0]),...W(Y)),b.forEach((D,j)=>{if(J[8+j]=D,E){J[12+j]=1;return}if(k.type==="fill-extrusion"){J[12+j]=Math.max(0,Number(M("fill-extrusion-height",0,D))||0),J[16+j]=D,J[20+j]=Math.max(0,Number(M("fill-extrusion-base",0,D))||0);return}if(k.type!=="line")return;let q=Number(M("line-width",1,D)),H=Number(M("line-gap-width",0,D));J[12+j]=Math.max(0,H>0?H+2*q:q)}),A.push(...J),_.push(T),S.push(x),_.length-1},L=(x,k,C)=>[(r+x/C)/p,(o+k/C)/p],F=(x,k,C,T)=>{x.forEach((E)=>{let M=k&&E.length>=2?[...E,E[0]??0,E[1]??0]:E;nn(M,T).forEach((B)=>{R.start.push(R.points.length/2),R.feature.push(C);for(let U=0;U+1<B.length;U+=2)R.points.push(...L(B[U]??0,B[U+1]??0,T))})})};if(e.layers.forEach((x,k)=>{V.push(g.polygonStart.length),P.push(R.start.length);let C=Pe(x),T=x.type==="fill"&&x.paint?.["fill-outline-color"]!==void 0&&x.paint?.["fill-antialias"]!==!1;if(!C)return;if(x.type==="background"){let M=v(k,x,{zoom:t,properties:{},type:"Unknown"},w);if(a)return;g.polygonStart.push(g.ringStart.length),g.feature.push(M),g.ringStart.push(g.points.length/2),g.points.push(r/p,o/p,(r+1)/p,o/p,(r+1)/p,(o+1)/p,r/p,(o+1)/p);return}let E=y?.get(x["source-layer"]??"");E?.features.forEach((M)=>{if(C==="line"?M.type===1:M.type!==3)return;let B=re(M,t);if(!ne(x.filter,B))return;let U=l>0?sn(M.geometry,E.extent,l,m,h):M.geometry;if(!U)return;let W=v(k,x,B,M.properties),J=T?v(k,x,B,M.properties,!0):-1;if(a)return;if(C==="line"){F(U,M.type===3,W,E.extent);return}if(J>=0)F(U,!0,J,E.extent);let Y=!1;U.forEach((D)=>{let j=0;for(let H=0;H+1<D.length;H+=2){let fe=(H+2)%D.length;j+=(D[H]??0)*(D[fe+1]??0)-(D[fe]??0)*(D[H+1]??0)}if(j===0)return;if(j<0&&!Y)return;let q=rn(D,E.extent);if(j>0)Y=q.length>=6;if(q.length<6)return;if(j>0)g.polygonStart.push(g.ringStart.length),g.feature.push(W);g.ringStart.push(g.points.length/2);for(let H=0;H+1<q.length;H+=2)g.points.push(...L(q[H]??0,q[H+1]??0,E.extent))})})}),V.push(g.polygonStart.length),P.push(R.start.length),g.ringStart.push(g.points.length/2),g.polygonStart.push(g.ringStart.length-1),R.start.push(R.points.length/2),a)return Float32Array.from(A);return{fills:{points:Float64Array.from(g.points),ringStart:Uint32Array.from(g.ringStart),polygonStart:Uint32Array.from(g.polygonStart),feature:Uint32Array.from(g.feature),fillStart:Uint32Array.from(V)},lines:{points:Float64Array.from(R.points),start:Uint32Array.from(R.start),feature:Uint32Array.from(R.feature),lineStart:Uint32Array.from(P)},styles:Float32Array.from(A),tile:Float64Array.of(r/p,o/p,(r+1)/p,(o+1)/p),properties:_,sublayer:Uint16Array.from(S)}},ce={},$t=()=>{if(!ce.url)return Promise.resolve(!1);let e=ce.ready??Ut({module_or_path:ce.url}).then(()=>!0,(t)=>(console.warn("isard: the tessellation module failed to load, the main thread does its work",t),!1));return ce.ready=e,e},Ht=(e,t,r)=>{let{fills:o,lines:n}=e;try{let s=Ft(o.points,o.ringStart,o.polygonStart,o.feature,o.fillStart,n.points,n.start,n.feature,n.lineStart,t,r,e.tile??new Float64Array),a={vertices:s.vertices(),indices:s.indices(),fillRanges:s.fillRanges(),prism:s.prism(),pieces:s.pieces(),lineTable:s.lineTable(),lineRanges:s.lineRanges(),blocks:s.blocks(),blockIndices:s.blockIndices(),blockRanges:s.blockRanges(),bounds:s.bounds()};return s.free(),a}catch(s){console.warn("isard: the tessellation module failed, the main thread does its work",s),ce.ready=Promise.resolve(!1);return}};var qt=(e,t,r)=>{let o=Boolean(N(e,"layout",`${t}-allow-overlap`,r,!1)),n=Boolean(N(e,"layout",`${t}-ignore-placement`,r,!1));if(o&&n)return!0;if(o)return"allow";return n?"ignore":!1},Yt=(e,t)=>Array.isArray(e)?[Number(e[0]??t[0]),Number(e[1]??t[1])]:t,an=(e)=>{let t=(Array.isArray(e)?e:[e]).map((a)=>Number(a)||0),[r=0,o=r,n=r,s=o]=t;return[r,o,n,s]},ln=(e,t)=>{if(t==="uppercase")return e.toUpperCase();if(t==="lowercase")return e.toLowerCase();return e},un=(e,t)=>{let r=0;for(let a=2;a+1<e.length;a+=2)r+=Math.hypot((e[a]??0)-(e[a-2]??0),(e[a+1]??0)-(e[a-1]??0));let o=[];if(!(r>0)||!(t>0))return o;let n=Math.min(t/2,r/2),s=0;for(let a=2;a+1<e.length;a+=2){let[i,l,u,c]=[e[a-2]??0,e[a-1]??0,e[a]??0,e[a+1]??0],d=Math.hypot(u-i,c-l);while(d>0&&n<=s+d){let m=(n-s)/d;o.push([i+(u-i)*m,l+(c-l)*m,i,l,u,c]),n+=t}s+=d}return o},cn=(e,t,r,o,n)=>{let s=N(e,"layout","icon-rotation-alignment",r,"auto"),a=String(N(e,"layout","icon-text-fit",r,"none")),i=N(e,"layout","icon-text-fit-padding",r,[0,0,0,0]);return{image:t,size:ie(e.layout?.["icon-size"])?Number(N(e,"layout","icon-size",r,1)):n(e),anchor:String(N(e,"layout","icon-anchor",r,"center")),offset:Yt(N(e,"layout","icon-offset",r,[0,0]),[0,0]),rotate:Number(N(e,"layout","icon-rotate",r,0))||0,alignment:s==="map"||s==="auto"&&o==="line"?"map":"viewport",overlap:qt(e,"icon",r),optional:Boolean(N(e,"layout","icon-optional",r,!1)),fit:a==="width"||a==="height"||a==="both"?a:"none",padding:an(i),color:String(N(e,"paint","icon-color",r,"#000")),opacity:Number(N(e,"paint","icon-opacity",r,1))}},Gt=async(e,t,r,o,n,s,a=t)=>{let i=e.tiles.replace("{z}",String(t)).replace("{x}",String(r)).replace("{y}",String(o)),l=await oe(i,s);if(!l||G.has(n))return[];let u=[],c=new Map,d=(f)=>{let y=c.get(f);if(y!==void 0)return y;let p=f.layout?.["text-size"]??16,b=be(p)?$e(p):p;return c.set(f,b),b},m=new Map,h=(f)=>{let y=m.get(f);if(y!==void 0)return y;let p=f.layout?.["icon-size"]??1,b=be(p)?$e(p):p;return m.set(f,b),b};return e.layers.forEach((f,y)=>{let p=f.layout??{};if(f.type!=="symbol"||!Ve(f,a))return;if(p["text-field"]===void 0&&p["icon-image"]===void 0)return;let b=l.get(f["source-layer"]??"");if(!b)return;let g={zoom:a,properties:{},type:"Unknown"},R=N(f,"layout","symbol-placement",g,"point")==="line"?"line":"point",V=R==="line"&&N(f,"layout","text-rotation-alignment",g,"auto")!=="viewport";for(let P of b.features){let A=re(P,a);if(!ne(f.filter,A))continue;let _=ze(p["text-field"],A).trim(),S=ze(p["icon-image"],A).trim();if(!_&&!S)continue;let w=ln(_,N(f,"layout","text-transform",A,"none")),v=N(f,"layout","text-font",A,["Noto Sans Regular"]),L=wt(Array.isArray(v)&&typeof v[0]==="string"?v[0]:"Noto Sans Regular"),F={layer:y,text:w,font:L,size:ie(f.layout?.["text-size"])?Number(N(f,"layout","text-size",A,16)):d(f),color:String(N(f,"paint","text-color",A,"#000")),haloColor:String(N(f,"paint","text-halo-color",A,"rgba(0,0,0,0)")),haloWidth:Number(N(f,"paint","text-halo-width",A,0)),anchor:String(N(f,"layout","text-anchor",A,"center")),offset:Yt(N(f,"layout","text-offset",A,[0,0]),[0,0]),maxWidth:Number(N(f,"layout","text-max-width",A,10)),lineHeight:Number(N(f,"layout","text-line-height",A,1.2)),overlap:qt(f,"text",A),...V?{textAlong:V}:{},...N(f,"layout","text-optional",A,!1)?{textOptional:!0}:{},...S?{icon:cn(f,S,A,R,h)}:{}};if(P.type===1)for(let x of P.geometry)for(let k=0;k+1<x.length;k+=2){let[C,T]=[x[k]??0,x[k+1]??0];if(C<0||T<0||C>=b.extent||T>=b.extent)continue;let[E,M]=Q(t,r,o,b.extent,C,T);u.push({...F,lon:E,lat:M})}else if(!w&&R==="line"){let x=Number(N(f,"layout","symbol-spacing",A,250))*b.extent/(512*2**(a-t));for(let k of P.geometry)for(let[C=0,T=0,E=0,M=0,B=0,U=0]of un(k,Math.max(x,1))){if(C<0||T<0||C>=b.extent||T>=b.extent)continue;let[W,J]=Q(t,r,o,b.extent,C,T),[Y,D]=Q(t,r,o,b.extent,B,U),[j,q]=Q(t,r,o,b.extent,E,M);u.push({...F,lon:W,lat:J,along:[Y-j,D-q]})}}else{let x,k=0;for(let T of P.geometry){let E=0;for(let M=2;M+1<T.length;M+=2)E+=Math.hypot((T[M]??0)-(T[M-2]??0),(T[M+1]??0)-(T[M-1]??0));if(E>k)k=E,x=T}if(!x||k<b.extent/32)continue;let C=k/2;for(let T=2;T+1<x.length;T+=2){let[E,M,B,U]=[x[T-2]??0,x[T-1]??0,x[T]??0,x[T+1]??0],W=Math.hypot(B-E,U-M);if(W>=C&&W>0){let[J,Y]=[E+(B-E)*C/W,M+(U-M)*C/W];if(J<0||Y<0||J>=b.extent||Y>=b.extent)break;let[D,j]=Q(t,r,o,b.extent,J,Y),[q,H]=Q(t,r,o,b.extent,B,U),[fe,er]=Q(t,r,o,b.extent,E,M);u.push({...F,lon:D,lat:j,...R==="line"?{along:[q-fe,H-er]}:{}});break}C-=W}}}}),u};var fn=new Set(["butt","round","square"]),mn=new Set(["bevel","miter","round"]),pn=(e)=>fn.has(e),bn=(e)=>mn.has(e),dn=(e)=>pn(e)?e:"butt",yn=(e)=>bn(e)?e:"miter",gn=(e,t)=>{if(e.patterns.has(t))return e.patterns.get(t);let o=(()=>{let n=rt(e,t);if(!n||!(n.icon.width>0)||!(n.icon.height>0))return;let{icon:s}=n,a=new OffscreenCanvas(s.width,s.height);return a.getContext("2d")?.drawImage(n.image,s.x,s.y,s.width,s.height,0,0,s.width,s.height),a})();return e.patterns.set(t,o),o},nt=new Map,hn=(e)=>{let t=nt.get(e)?.pop()??new OffscreenCanvas(e,e),r=t.getContext("2d",{willReadFrequently:!0});if(!r)throw Error("no 2D context");return r.setTransform(1,0,0,1,0,0),r.globalAlpha=1,r.setLineDash([]),r.clearRect(0,0,e,e),{canvas:t,g:r}},wn=(e)=>{let t=nt.get(e.width)??[];if(nt.set(e.width,t),t.length<4)t.push(e)},xn=(e,t,r)=>{if(r)return Promise.resolve(e.transferToImageBitmap());return createImageBitmap(t.getImageData(0,0,e.width,e.height),{premultiplyAlpha:"none"})},Kt=async(e,t,r,o,n,s,a)=>{let i=jt(e,t,r,o),l=await oe(i.url,a);if(G.has(s))return;let{canvas:u,g:c}=hn(n);try{return await _n(e,i,l,u,c,t,r,o,n,s,a)}finally{wn(u)}},_n=async(e,t,r,o,n,s,a,i,l,u,c)=>{let d=Math.max(0,s-1),m=l/256,h=!1,f=!1;for(let y of e.layers){if(!Ve(y,d))continue;let p={zoom:d,properties:{},type:"Unknown"};if(y.type==="background"){let S=N(y,"paint","background-color",p,"#000"),w=Number(N(y,"paint","background-opacity",p,1));if(n.fillStyle=ae(S,w),n.fillRect(0,0,l,l),(te(S)??[0,0,0,1])[3]*w>=1)f=!0;h=!0;continue}if(y.type==="raster"){let S=y.source===void 0?void 0:e.rasters[y.source];if(!S)continue;let w=Math.max(0,Math.min(s-(S.tileSize>=512?1:0),S.maxzoom)),v=2**(s-w),L=S.tiles.replace("{z}",String(w)).replace("{x}",String(Math.floor(a/v))).replace("{y}",String(Math.floor(i/v))),F=await Jt(L,c);if(G.has(u))return;if(!F)continue;let[x,k]=[F.width/v,F.height/v];n.globalAlpha=Number(N(y,"paint","raster-opacity",p,1)),n.drawImage(F,a%v*x,i%v*k,x,k,0,0,l,l),n.globalAlpha=1,h=!0;continue}let b=r?.get(y["source-layer"]??"");if(!b)continue;let g=l/(b.extent*t.part),[R,V]=[t.ox*b.extent,t.oy*b.extent],P=(S,w)=>{n.beginPath();for(let v of S.geometry){for(let L=0;L+1<v.length;L+=2){let[F,x]=[((v[L]??0)-R)*g,((v[L+1]??0)-V)*g];if(L===0)n.moveTo(F,x);else n.lineTo(F,x)}if(w)n.closePath()}},A=new Map,_=(S,w,v,L)=>{let F=A.get(w),x=F??ie(y[S]?.[w]);if(F===void 0)A.set(w,x);return N(y,S,w,x?v:p,L)};for(let S of b.features){let w=re(S,d);if(!ne(y.filter,w))continue;if(y.type==="fill-extrusion"&&S.type===3)P(S,!0),n.fillStyle=ae(_("paint","fill-extrusion-color",w,"#000"),Number(_("paint","fill-extrusion-opacity",w,1))),n.fill("evenodd"),h=!0;else if(y.type==="fill"&&S.type===3){let v=Number(_("paint","fill-opacity",w,1)),L=_("paint","fill-pattern",w,void 0);P(S,!0);let F=typeof L==="string"?rt(e,L)?.icon:void 0,x=F&&typeof L==="string"&&gn(e,L);if(F&&x){let k=n.createPattern(x,"repeat");if(k)k.setTransform(new DOMMatrix().scale(m/(F.pixelRatio??1))),n.globalAlpha=v,n.fillStyle=k,n.fill("evenodd"),n.globalAlpha=1}else{n.fillStyle=ae(_("paint","fill-color",w,"#000"),v),n.fill("evenodd");let k=_("paint","fill-outline-color",w,void 0);if(k!==void 0)n.strokeStyle=ae(k,v),n.lineWidth=m,n.setLineDash([]),n.stroke()}h=!0}else if(y.type==="line"&&S.type!==1){let v=Number(_("paint","line-width",w,1));if(v<=0)continue;let L=Number(_("paint","line-gap-width",w,0));n.strokeStyle=ae(_("paint","line-color",w,"#000"),Number(_("paint","line-opacity",w,1))),n.lineWidth=(L>0?L+2*v:v)*m,n.lineCap=dn(_("layout","line-cap",w,"butt")),n.lineJoin=yn(_("layout","line-join",w,"miter"));let F=_("paint","line-dasharray",w,void 0);n.setLineDash(Array.isArray(F)?F.map((x)=>Number(x)*v*m):[]),P(S,S.type===3),n.stroke(),h=!0}else if(y.type==="circle"&&S.type===1){let v=Number(_("paint","circle-radius",w,5))*m;n.fillStyle=ae(_("paint","circle-color",w,"#000"),Number(_("paint","circle-opacity",w,1)));let L=Number(_("paint","circle-stroke-width",w,0))*m;n.strokeStyle=ae(_("paint","circle-stroke-color",w,"#000"),Number(_("paint","circle-stroke-opacity",w,1))),n.lineWidth=L;for(let F of S.geometry)for(let x=0;x+1<F.length;x+=2)if(n.beginPath(),n.arc(((F[x]??0)-R)*g,((F[x+1]??0)-V)*g,v,0,2*Math.PI),n.fill(),L>0)n.stroke();h=!0}}}if(!h&&!r)return null;return xn(o,n,f)};var Xt=async(e,t,r)=>{let{z:o,tiles:n,bounds:s,width:a,height:i,iterations:l,module:u,priority:c}=t,[d,m,h,f]=s,y=[],p=[],b=[],g=2**o;for(let R=0;R+1<n.length;R+=2){let V=n[R]??0,P=(V%g+g)%g,A=(V-P)/g,_=await Be(e,o,P,n[R+1]??0,r,c);if(G.has(r))throw Error("aborted");if(!_)continue;let{points:S,ringStart:w,polygonStart:v}=_.arrays;for(let L=0;L+1<v.length;L++){let[F,x]=[v[L]??0,v[L+1]??0],k=w[F]??0,C=w[x]??0,[T,E,M,B]=[1/0,1/0,-1/0,-1/0];for(let U=k;U<C;U++){let[W,J]=[(S[U*2]??0)+A,S[U*2+1]??0];T=Math.min(T,W),E=Math.min(E,J),M=Math.max(M,W),B=Math.max(B,J)}if(M<d||T>h||B<m||E>f)continue;b.push(p.length);for(let U=F;U<x;U++){p.push(y.length/2);for(let W=w[U]??0;W<(w[U+1]??0);W++)y.push(((S[W*2]??0)+A-d)/(h-d)*a,((S[W*2+1]??0)-m)/(f-m)*i)}}}return p.push(y.length/2),b.push(p.length-1),It({points:Float64Array.from(y),ringStart:Uint32Array.from(p),polygonStart:Uint32Array.from(b)},a,i,l,u)};var ot=5;var Ie=(e,t,r,o)=>{let n=Math.imul(e^2654435769,2246822507)^Math.imul(t^3266489909,668265263);return n=Math.imul(n^n>>>15^Math.imul(r,374761393),739982445),n=Math.imul(n^n>>>13^Math.imul(o,695872825),695872825),((n^n>>>16)>>>0)/4294967296},An=(e,t,r)=>e.reduce((o,n)=>{let s=n.length/2,a=0;for(let i=0,l=s-1;i<s;l=i,i+=1){let[u,c,d,m]=[n[i*2]??0,n[i*2+1]??0,n[l*2]??0,n[l*2+1]??0];if(c>r!==m>r&&t<(d-u)*(r-c)/(m-c)+u)a+=1}return a%2===1?!o:o},!1),Sn=(e,t,r,o,n=Number.POSITIVE_INFINITY)=>{let s=e[0]??[],a=[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY];for(let P=0;P+1<s.length;P+=2){let[A,_]=[s[P]??0,s[P+1]??0];a[0]=Math.min(a[0]??A,A),a[1]=Math.min(a[1]??_,_),a[2]=Math.max(a[2]??A,A),a[3]=Math.max(a[3]??_,_)}let[i,l]=[Math.max(0,a[0]??0),Math.max(0,a[1]??0)],[u,c]=[Math.min(t,a[2]??0),Math.min(t,a[3]??0)];if(!(r>0)||i>=u||l>=c)return[];let d=(u-i)/r*((c-l)/r),m=d>n?r*Math.sqrt(d/n):r,[h,f,y,p]=[Math.floor(i/m),Math.ceil(u/m),Math.floor(l/m),Math.ceil(c/m)],[b,g,R]=o,V=Math.imul(b+1,16777619)^Math.imul(g,1540483477)^Math.imul(R,461845907);return Array.from({length:Math.max(0,p-y)},(P,A)=>y+A).flatMap((P)=>Array.from({length:Math.max(0,f-h)},(A,_)=>h+_).flatMap((A)=>{let _=(A+Ie(V,A,P,1))*m,S=(P+Ie(V,A,P,2))*m;if(_<0||S<0||_>=t||S>=t||!An(e,_,S))return[];return[[_,S,Ie(V,A,P,3)]]}))},Zt=async(e,t,r,o,n,s,a,i)=>{let l=e.tiles.replace("{z}",String(t)).replace("{x}",String(r)).replace("{y}",String(o)),u=await oe(l,i);if(!u||G.has(n))return;let c=40075016.686*Math.cos(Oe((o+0.5)/2**t)*Math.PI/180)/2**t,d=[];e.layers.forEach((y,p)=>{let b=s[p]??0,g=u.get(y["source-layer"]??"");if(!g||!(b>0))return;let R=b/c*g.extent;g.features.forEach((V)=>{if(V.type!==3||!ne(y.filter,re(V,t)))return;V.geometry.reduce((A,_)=>{let S=0;for(let w=0;w+1<_.length;w+=2){let v=(w+2)%_.length;S+=(_[w]??0)*(_[v+1]??0)-(_[v]??0)*(_[w+1]??0)}if(S>0)A.push([_]);else if(S<0)A.at(-1)?.push(_);return A},[]).forEach((A)=>{Sn(A,g.extent,R,[t,r,o],a*4).forEach(([_,S,w])=>{d.push([_,S,w,g.extent])})})})});let m=d.length>a?a/d.length:1,h=d.filter(([,,y])=>m>=1||Ie(Math.floor(y*2147483648),t,r,o)<m),f=new Float64Array(h.length*ot);return h.forEach(([y,p,b,g],R)=>{let[V,P]=Q(t,r,o,g,y,p),A=Ie(Math.floor(b*2147483648),7,11,13);f.set([V,P,0.75+0.5*b,b*7919%360,A],R*ot)}),f};var st=new Map,Mn={},Qt=lt(),z=(e,t=[])=>self.postMessage(e,t);self.onmessage=async({data:e})=>{if(e.type==="headers"){at(e.rules);return}if(e.type==="tess"){ce.url=e.url;return}if(e.type==="init"){if(e.workers!==void 0)ke.capacity=Wt(e.workers);Re.set(e.key,{tiles:e.tiles,maxzoom:e.maxzoom,layers:e.layers,rasters:e.rasters??{},sprites:e.sprites??[],patterns:new Map});return}if(e.type==="drop"){Re.get(e.key)?.sprites.forEach((r)=>{r.image.close()}),Re.delete(e.key);return}if(e.type==="abort"){if(De.has(e.id))G.add(e.id);st.get(e.id)?.abort();return}if(e.type==="heights"||e.type==="reproject"||e.type==="grids"){await kn(e);return}De.add(e.id);let t=Re.get(e.key);try{if(!t)throw Error(`no renderer ${e.key}`);if(e.type==="render"){let r=await Kt(t,e.z,e.x,e.y,e.size,e.id,e.priority);if(r)z({id:e.id,image:r},[r]);else z({id:e.id,missing:!0})}else if(e.type==="trees"){let r=await Zt(t,e.z,e.x,e.y,e.id,e.spacing,e.maxTrees,e.priority);if(!r)z({id:e.id,missing:!0});else z({id:e.id,trees:r},[r.buffer])}else if(e.type==="street"){let r=await Xt(t,e,e.id);z({id:e.id,street:r},[r.eastU,r.eastV,r.northU,r.northV].map((o)=>o.buffer))}else if(e.type==="polygons"){let r=await Be(t,e.z,e.x,e.y,e.id,e.priority);if(!r)z({id:e.id,missing:!0});else{let{points:o,ringStart:n,polygonStart:s,feature:a}=r.arrays;z({id:e.id,polygons:r},[o.buffer,n.buffer,s.buffer,a.buffer])}}else if(e.type==="vectors"){let r=await zt(t,e,e.id,e.styles===!0,e.priority);if(!r)z({id:e.id,missing:!0});else if(r instanceof Float32Array)z({id:e.id,styles:r},[r.buffer]);else{let o=Uint8Array.from(t.layers,(i)=>Pe(i)==="extrusion"?1:0),n=await $t()?Ht(r,o,e.prism===!0):void 0,{fills:s,lines:a}=r;z({id:e.id,vectors:n?{...r,mesh:n}:r},[...[s.points,s.ringStart,s.polygonStart,s.feature,s.fillStart].map((i)=>i.buffer),...[a.points,a.start,a.feature,a.lineStart].map((i)=>i.buffer),r.styles.buffer,r.sublayer.buffer,...(n?[n.vertices,n.indices,n.fillRanges,n.pieces,n.lineTable,n.lineRanges,n.blocks,n.blockIndices,n.blockRanges,n.bounds]:[]).map((i)=>i.buffer)])}}else z({id:e.id,labels:await Gt(t,e.z,e.x,e.y,e.id,e.priority,e.zoom)})}catch(r){z({id:e.id,error:String(r)})}finally{De.delete(e.id),G.delete(e.id)}};var vn=async(e,t)=>{let r=await fetch(e,X(e,{signal:t}));if(!r.ok)throw Error(`${e}: ${r.status}`);return r.arrayBuffer()},kn=async(e)=>{let t=new AbortController;st.set(e.id,t);try{if(e.type==="grids"){let{module:r,url:o,bytes:n}=e,s=n??(o?await vn(o,t.signal):new ArrayBuffer(0)),{grids:a,values:i}=await Tt(new Uint8Array(s),r);z({id:e.id,grids:a,values:i},i.map((l)=>l.buffer))}else if(e.type==="heights"){let r=await ut(e.url,e.encoding,e.floor,t.signal,Mn);if(r)z({id:e.id,heights:r},[r.buffer]);else z({id:e.id,missing:!0})}else{Qt.cache.capacity=e.cached;let r=await Qt.draw(e.job,t.signal);if(r)z({id:e.id,image:r},[r]);else z({id:e.id,missing:!0})}}catch(r){z({id:e.id,error:String(r)})}finally{st.delete(e.id)}};
1
+ var At=[];var St=(e)=>{At=e};var ce=(e,t={})=>{let r=String(e),n=At.filter(([s])=>r.startsWith(s));if(n.length===0)return t;let o=new Headers(t.headers);return n.forEach(([,s])=>{Object.entries(s).forEach(([a,i])=>{o.set(a,i)})}),{...t,headers:o}};class de{capacity;evict;entries=new Map;constructor(e,t){this.capacity=e;this.evict=t}get size(){return this.entries.size}get(e){let t=this.entries.get(e);if(t!==void 0)this.entries.delete(e),this.entries.set(e,t);return t}has(e){return this.entries.has(e)}set(e,t){this.entries.delete(e),this.entries.set(e,t);for(let[r,n]of this.entries){if(this.entries.size<=this.capacity)break;this.entries.delete(r),this.evict?.(n,r)}}delete(e){return this.entries.delete(e)}values(){return this.entries.values()}clear(){this.entries.clear()}}var vr=96,kr=(e,t,r,n,o,s)=>{let a=new Uint8ClampedArray(s*s*4),i=s/o,l=o+1;for(let u=0;u<s;u+=1){let c=(u+0.5)/i,b=Math.min(o-1,Math.floor(c)),m=c-b;for(let d=0;d<s;d+=1){let w=(d+0.5)/i,f=Math.min(o-1,Math.floor(w)),g=w-f,y=2*(b*l+f),h=y+2*l,F=(1-g)*(1-m),D=g*(1-m),M=(1-g)*m,L=g*m,p=F*n[y]+D*n[y+2]+M*n[h]+L*n[h+2],x=F*n[y+1]+D*n[y+3]+M*n[h+1]+L*n[h+3],_=p-0.5,A=x-0.5;if(!(_>-1&&A>-1&&_<t&&A<r))continue;let S=Math.floor(_),O=Math.floor(A),P=_-S,E=A-O,Y=0,U=0,I=0,v=0;for(let B=0;B<4;B+=1){let k=S+(B&1),R=O+(B>>1);if(k<0||R<0||k>=t||R>=r)continue;let V=4*(R*t+k),G=(B&1?P:1-P)*(B>>1?E:1-E)*e[V+3];Y+=G*e[V],U+=G*e[V+1],I+=G*e[V+2],v+=G}if(v<=0)continue;let N=4*(u*s+d);a[N]=Y/v,a[N+1]=U/v,a[N+2]=I/v,a[N+3]=v}}return a},Mt=(e=vr)=>{let t=new Map,r=new Set,n=(u)=>{r.delete(u),u.then((c)=>c?.close(),()=>{return})},o=(u)=>{if(t.has(u))r.add(u);else n(u)},s=new de(e,o),a=(u)=>{let c=(t.get(u)??1)-1;if(c>0)t.set(u,c);else if(t.delete(u),r.has(u))n(u)},i=(u)=>{let c=()=>{let m=(async()=>{let d=await fetch(u,ce(u));if(d.status===404||d.status===204||d.status===410)return null;if(!d.ok)throw Error(`isard: ${d.status} for a raster to reproject`);return createImageBitmap(await d.blob())})();return m.catch(()=>s.delete(u)),s.set(u,m),m},b=s.get(u)??c();return t.set(b,(t.get(b)??0)+1),b};return{draw:async(u,c)=>{let b=u.sources.map((m)=>[m,i(m.url)]);try{let m=await Promise.all(b.map(async([y,h])=>[y,await h]));if(c.throwIfAborted(),!m.some(([,y])=>y))return null;let w=new OffscreenCanvas(u.width,u.height).getContext("2d",{willReadFrequently:!0});if(!w)throw Error("isard: no 2D canvas to reproject the tiles");m.forEach(([y,h])=>{if(h)w.drawImage(h,y.x,y.y,y.w,y.h)});let f=w.getImageData(0,0,u.width,u.height).data,g=kr(f,u.width,u.height,u.mesh,u.n,u.size);return createImageBitmap(new ImageData(g,u.size,u.size),{premultiplyAlpha:"none"})}finally{b.forEach(([,m])=>{a(m)})}},cache:s,close:()=>{[...s.values()].forEach(o),s.clear()}}};var ye=256,Rr=(e,t,r=Number.NEGATIVE_INFINITY)=>{let n=e.length>>2,o=new Float32Array(n);if(t==="terrarium")for(let s=0,a=0;s<n;s+=1,a+=4){let i=e[a]*256+e[a+1]+e[a+2]/256-32768;o[s]=i>r?i:r}else for(let s=0,a=0;s<n;s+=1,a+=4){let i=-1e4+(e[a]*65536+e[a+1]*256+e[a+2])*0.1;o[s]=i>r?i:r}return o},vt=async(e,t,r,n,o)=>{let s=await fetch(e,ce(e,{signal:n}));if(s.status===404||s.status===204||s.status===410)return null;if(!s.ok)throw Error(`${s.url}: ${s.status}`);let a=await createImageBitmap(await s.blob(),{premultiplyAlpha:"none",colorSpaceConversion:"none"});try{o.canvas??=new OffscreenCanvas(ye,ye);let i=o.canvas.getContext("2d",{willReadFrequently:!0});if(!i)throw Error("no 2D context");return i.imageSmoothingEnabled=!1,i.clearRect(0,0,ye,ye),i.drawImage(a,0,0,ye,ye),Rr(i.getImageData(0,0,ye,ye).data,t,r)}finally{a.close()}};var Tr="aliceblue f0f8ff antiquewhite faebd7 aqua 00ffff aquamarine 7fffd4 azure f0ffff beige f5f5dc bisque ffe4c4 black 000000 blanchedalmond ffebcd blue 0000ff blueviolet 8a2be2 brown a52a2a burlywood deb887 cadetblue 5f9ea0 chartreuse 7fff00 chocolate d2691e coral ff7f50 cornflowerblue 6495ed cornsilk fff8dc crimson dc143c cyan 00ffff darkblue 00008b darkcyan 008b8b darkgoldenrod b8860b darkgray a9a9a9 darkgreen 006400 darkgrey a9a9a9 darkkhaki bdb76b darkmagenta 8b008b darkolivegreen 556b2f darkorange ff8c00 darkorchid 9932cc darkred 8b0000 darksalmon e9967a darkseagreen 8fbc8f darkslateblue 483d8b darkslategray 2f4f4f darkslategrey 2f4f4f darkturquoise 00ced1 darkviolet 9400d3 deeppink ff1493 deepskyblue 00bfff dimgray 696969 dimgrey 696969 dodgerblue 1e90ff firebrick b22222 floralwhite fffaf0 forestgreen 228b22 fuchsia ff00ff gainsboro dcdcdc ghostwhite f8f8ff gold ffd700 goldenrod daa520 gray 808080 green 008000 greenyellow adff2f grey 808080 honeydew f0fff0 hotpink ff69b4 indianred cd5c5c indigo 4b0082 ivory fffff0 khaki f0e68c lavender e6e6fa lavenderblush fff0f5 lawngreen 7cfc00 lemonchiffon fffacd lightblue add8e6 lightcoral f08080 lightcyan e0ffff lightgoldenrodyellow fafad2 lightgray d3d3d3 lightgreen 90ee90 lightgrey d3d3d3 lightpink ffb6c1 lightsalmon ffa07a lightseagreen 20b2aa lightskyblue 87cefa lightslategray 778899 lightslategrey 778899 lightsteelblue b0c4de lightyellow ffffe0 lime 00ff00 limegreen 32cd32 linen faf0e6 magenta ff00ff maroon 800000 mediumaquamarine 66cdaa mediumblue 0000cd mediumorchid ba55d3 mediumpurple 9370db mediumseagreen 3cb371 mediumslateblue 7b68ee mediumspringgreen 00fa9a mediumturquoise 48d1cc mediumvioletred c71585 midnightblue 191970 mintcream f5fffa mistyrose ffe4e1 moccasin ffe4b5 navajowhite ffdead navy 000080 oldlace fdf5e6 olive 808000 olivedrab 6b8e23 orange ffa500 orangered ff4500 orchid da70d6 palegoldenrod eee8aa palegreen 98fb98 paleturquoise afeeee palevioletred db7093 papayawhip ffefd5 peachpuff ffdab9 peru cd853f pink ffc0cb plum dda0dd powderblue b0e0e6 purple 800080 rebeccapurple 663399 red ff0000 rosybrown bc8f8f royalblue 4169e1 saddlebrown 8b4513 salmon fa8072 sandybrown f4a460 seagreen 2e8b57 seashell fff5ee sienna a0522d silver c0c0c0 skyblue 87ceeb slateblue 6a5acd slategray 708090 slategrey 708090 snow fffafa springgreen 00ff7f steelblue 4682b4 tan d2b48c teal 008080 thistle d8bfd8 tomato ff6347 turquoise 40e0d0 violet ee82ee wheat f5deb3 white ffffff whitesmoke f5f5f5 yellow ffff00 yellowgreen 9acd32",rt,Er=(e)=>{if(!rt){let t=Tr.split(" ");rt=new Map(Array.from({length:Math.floor(t.length/2)},(r,n)=>[t[2*n]??"",t[2*n+1]??""]))}return rt.get(e)},Je=(e)=>Number.isFinite(e)?Math.max(0,Math.min(1,e)):0,kt=(e)=>{if(!/^[0-9a-f]+$/.test(e)||![3,4,6,8].includes(e.length))return;let t=e.length<=4?[...e].map((n)=>n+n).join(""):e,r=(n)=>Number.parseInt(t.slice(n,n+2),16)/255;return[r(0),r(2),r(4),t.length===8?r(6):1]},Fr=(e)=>{if(e===void 0)return 1;return Je(e.endsWith("%")?Number.parseFloat(e)/100:Number.parseFloat(e))},Ir=(e,t,r)=>{let n=r<0.5?r*(1+t):r+t-r*t,o=2*r-n,s=(a)=>{let i=(a%1+1)%1;if(i<0.16666666666666666)return o+(n-o)*6*i;if(i<0.5)return n;if(i<0.6666666666666666)return o+(n-o)*(0.6666666666666666-i)*6;return o};return[s(e+0.3333333333333333),s(e),s(e-0.3333333333333333)]},Rt=(e)=>{if(typeof e!=="string")return;let t=e.trim().toLowerCase();if(t.startsWith("#"))return kt(t.slice(1));if(t==="transparent")return[0,0,0,0];let r=Er(t);if(r)return kt(r);let n=/^(rgba?|hsla?)\(([^)]*)\)$/.exec(t);if(!n?.[1]||n[2]===void 0)return;let o=n[2].split(/[\s,/]+/).filter(Boolean);if(o.length<3||o.slice(0,3).some((c)=>Number.isNaN(Number.parseFloat(c))))return;let s=Fr(o[3]);if(n[1].startsWith("rgb")){let c=(b)=>Je(b.endsWith("%")?Number.parseFloat(b)/100:Number.parseFloat(b)/255);return[c(o[0]??""),c(o[1]??""),c(o[2]??""),s]}let a=Number.parseFloat(o[0]??"")/360,[i,l,u]=Ir(a,Je(Number.parseFloat(o[1]??"")/100),Je(Number.parseFloat(o[2]??"")/100));return[i,l,u,s]};var ve=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e);var Nr=["Unknown","Point","LineString","Polygon"],ae=(e,t)=>({zoom:t,properties:e.properties,type:Nr[e.type]??"Unknown"}),pe=(e)=>Rt(e),$e=([e,t,r,n])=>`rgba(${Math.round(e*255)},${Math.round(t*255)},${Math.round(r*255)},${n})`,It=(e,t,r,n=1)=>{let o=r-t;if(o===0)return 0;let s=e-t;return n===1?s/o:(n**s-1)/(n**o-1)},ot=(e,t,r)=>{if(typeof e==="number"&&typeof t==="number")return e+(t-e)*r;let n=pe(e),o=pe(t);if(n&&o){let s=(a)=>n[a]+(o[a]-n[a])*r;return $e([s(0),s(1),s(2),s(3)])}if(Array.isArray(e)&&Array.isArray(t))return e.map((s,a)=>ot(s,t[a],r));return r<0.5?e:t},Nt=(e)=>typeof e==="object"&&e!==null&&!Array.isArray(e)&&Array.isArray(e.stops),Pr=(e,t)=>{let r=e.property===void 0?t.zoom:t.properties[e.property],n=e.stops,o=e.type??(e.property===void 0||typeof n[0]?.[0]==="number"?"exponential":"categorical");if(o==="identity")return r??e.default;if(o==="categorical")return n.find(([c])=>c===r)?.[1]??e.default;if(typeof r!=="number"||!n.length)return e.default??n[0]?.[1];let s=([c])=>{if(Array.isArray(c))return Number.NaN;return ve(c)?Number(c.zoom):Number(c)},a=n[0];if(!a)return e.default;if(r<=s(a))return a[1];let i=n.findIndex((c,b)=>b>0&&Boolean(n[b-1])&&Boolean(c)&&r<s(c)),[l,u]=[n[i-1],n[i]];if(i<0||!l||!u)return n.at(-1)?.[1];if(o==="interval")return l[1];return ot(l[1],u[1],It(r,s(l),s(u),e.base??1))},nt=(e)=>e,Tt={"<":(e,t)=>e<t,"<=":(e,t)=>e<=t,">":(e,t)=>e>t,">=":(e,t)=>e>=t},Pt=(e,t,r)=>{let n=(a)=>typeof a==="object"&&a!==null?String(a):a,[o,s]=[n(t),n(r)];return typeof o==="string"&&typeof s==="string"?Tt[e](o,s):Tt[e](Number(o),Number(s))},je=(e,t)=>{if(t==="$type")return e.type;return typeof t==="string"?e.properties[t]:void 0},Lr=new Set(["literal","zoom","get","has","!has","properties","id","geometry-type","concat","format","image","number-format","to-number","to-string","to-boolean","to-color","number","string","boolean","typeof","length","at","upcase","downcase","coalesce","!","all","any","==","!=","<","<=",">",">=","in","case","match","step","interpolate","interpolate-hcl","interpolate-lab","rgb","rgba","+","-","*","/","%","^","min","max","abs","round","floor","ceil","sqrt","ln","log10","log2","pi","e"]),Re=(e)=>Array.isArray(e)&&typeof e[0]==="string"&&Lr.has(e[0]),Et=new Set,ke=(e)=>e===void 0||e===null?"":String(e),me=(e,t)=>{if(Nt(e))return Pr(e,t);if(!Array.isArray(e))return e;let[r,...n]=e;if(typeof r!=="string")return e;let o=(i)=>me(n[i]??null,t),s=(i)=>Number(o(i)),a=()=>n.map((i,l)=>s(l));switch(r){case"literal":return n[0];case"zoom":return t.zoom;case"get":return je(t,o(0));case"has":return je(t,o(0))!==void 0;case"!has":return je(t,o(0))===void 0;case"properties":return t.properties;case"id":return null;case"geometry-type":return t.type;case"concat":return n.map((i,l)=>ke(o(l))).join("");case"format":return n.map((i,l)=>i!==null&&typeof i==="object"&&!Array.isArray(i)?"":ke(o(l))).join("");case"image":return o(0);case"number-format":{let i=ve(n[1])?n[1]:{},l=(c)=>{let b=i[c];return typeof b==="number"?b:void 0},u=s(0);if(!Number.isFinite(u))return"";return u.toLocaleString(typeof i.locale==="string"?i.locale:void 0,{minimumFractionDigits:l("min-fraction-digits"),maximumFractionDigits:l("max-fraction-digits")})}case"to-number":{for(let i=0;i<n.length;i+=1){let l=o(i),u=typeof l==="string"&&l.trim()===""?Number.NaN:Number(l);if(l!==null&&l!==void 0&&!Number.isNaN(u))return u}return 0}case"to-string":return ke(o(0));case"to-boolean":{let i=o(0);return!(i===""||i===0||i===!1||i===null||i===void 0||Number.isNaN(i))}case"to-color":case"number":case"string":case"boolean":{let i={"to-color":(l)=>pe(l)!==void 0,number:(l)=>typeof l==="number",string:(l)=>typeof l==="string",boolean:(l)=>typeof l==="boolean"};for(let l=0;l<n.length;l+=1){let u=o(l);if(i[r]?.(u))return u}return n.length?o(n.length-1):null}case"typeof":{let i=o(0);if(i===null||i===void 0)return"null";return Array.isArray(i)?"array":typeof i}case"length":{let i=o(0);return typeof i==="string"||Array.isArray(i)?i.length:0}case"at":{let i=o(1);return Array.isArray(i)?i[s(0)]??null:null}case"upcase":return ke(o(0)).toUpperCase();case"downcase":return ke(o(0)).toLowerCase();case"coalesce":for(let i=0;i<n.length;i+=1){let l=o(i);if(l!==void 0&&l!==null)return l}return null;case"!":return!o(0);case"all":return n.every((i,l)=>Boolean(o(l)));case"any":return n.some((i,l)=>Boolean(o(l)));case"==":return o(0)===o(1);case"!=":return o(0)!==o(1);case"<":case"<=":case">":case">=":return Pt(r,o(0),o(1));case"in":{let i=o(1),l=o(0);if(typeof i==="string")return i.includes(String(l));return Array.isArray(i)&&i.includes(l)}case"case":{let i=n.findIndex((l,u)=>u%2===0&&u+1<n.length&&Boolean(o(u)));return i<0?o(n.length-1):o(i+1)}case"match":{let i=o(0),l=n.findIndex((u,c)=>c%2===1&&c+1<n.length&&(Array.isArray(u)?nt(u).includes(i):u===i));return l<0?o(n.length-1):o(l+1)}case"step":{let i=s(0),l=o(1);for(let u=2;u+1<n.length;u+=2)if(i>=Number(n[u]))l=o(u+1);else break;return l}case"interpolate":case"interpolate-hcl":case"interpolate-lab":{let i=n[0],l=s(1),u=Array.isArray(i)&&i[0]==="exponential"?Number(i[1]):1,c=Array.from({length:Math.floor((n.length-2)/2)},(f,g)=>[Number(n[2+2*g]),n[3+2*g]??null]),b=c[0];if(!b)return null;if(l<=b[0])return me(b[1],t);let m=c.findIndex((f,g)=>g>0&&l<f[0]),[d,w]=[c[m-1],c[m]];if(m<0||!d||!w)return me(c.at(-1)?.[1]??null,t);return ot(me(d[1],t),me(w[1],t),It(l,d[0],w[0],u))}case"rgb":case"rgba":return $e([s(0)/255,s(1)/255,s(2)/255,n.length>3?s(3):1]);case"+":return a().reduce((i,l)=>i+l,0);case"*":return a().reduce((i,l)=>i*l,1);case"-":return n.length===1?-s(0):s(0)-s(1);case"/":return s(0)/s(1);case"%":return s(0)%s(1);case"^":return s(0)**s(1);case"min":return Math.min(...a());case"max":return Math.max(...a());case"abs":return Math.abs(s(0));case"round":return Math.sign(s(0))*Math.round(Math.abs(s(0)));case"floor":return Math.floor(s(0));case"ceil":return Math.ceil(s(0));case"sqrt":return Math.sqrt(s(0));case"ln":return Math.log(s(0));case"log10":return Math.log10(s(0));case"log2":return Math.log2(s(0));case"pi":return Math.PI;case"e":return Math.E;default:if(!Et.has(r))Et.add(r),console.warn(`isard: the style expression "${r}" is not supported`);return null}},Or=new Set(["==","!=","<","<=",">",">="]),qe=(e)=>{if(e.type==="line")return"line";if(e.type==="fill-extrusion")return"extrusion";if(e.type==="circle")return"circle";return e.type==="fill"||e.type==="background"?"fill":void 0},Ur=(e)=>{let[t,r,...n]=e;if(typeof t!=="string"||typeof r!=="string"||n.some(Array.isArray))return!1;if(Or.has(t))return e.length===3;if(t==="in")return e.length!==3||!Array.isArray(e[2]);return t==="!in"||t==="has"||t==="!has"},Cr=(e,t)=>{let[r,n,...o]=e,s=je(t,n);switch(r){case"==":return s===o[0];case"!=":return s!==o[0];case"<":case"<=":case">":case">=":return Pt(r,s,o[0]);case"in":return nt(o).includes(s);case"!in":return!nt(o).includes(s);case"has":return s!==void 0;case"!has":return s===void 0;default:return!0}},Ft=new WeakMap,Lt=(e)=>{if(!Array.isArray(e))return()=>Boolean(e);let t=Ft.get(e);if(t)return t;let n=(()=>{let o=e[0];if(o==="all"||o==="any"||o==="none"){let s=e.slice(1).map(Lt);if(o==="all")return(a)=>s.every((i)=>i(a));if(o==="any")return(a)=>s.some((i)=>i(a));return(a)=>!s.some((i)=>i(a))}if(Ur(e))return(s)=>Cr(e,s);return(s)=>Boolean(me(e,s))})();return Ft.set(e,n),n},ue=(e,t)=>{if(e===void 0||e===null)return!0;return Lt(e)(t)},st=(e)=>Array.isArray(e)&&(e[0]==="zoom"||e.some(st)),Dr=new Set(["get","has","!has","geometry-type","properties","id"]),he=(e)=>{if(e!==void 0&&Nt(e))return e.property!==void 0;if(!Array.isArray(e))return!1;if(Dr.has(e[0]))return!0;return e.some((t)=>he(t))},it=(e,t)=>{if(e===void 0||e===null)return"";if(typeof e==="string")return e.replace(/\{([^}]+)\}/g,(n,o)=>{let s=t.properties[o];return s===void 0?"":String(s)});let r=me(e,t);if(Array.isArray(r))return r.filter((n)=>typeof n==="string").join("");return r===void 0||r===null?"":String(r)},Ot=(e)=>/Regular|Bold|Italic|Semibold|Light|Medium|Black/.test(e)?e:`${e} Regular`,at=(e)=>{let t=new Set,r=(i)=>i.filter((l,u)=>u>=3&&u%2===1).map(Number),n=(i)=>{if(!Array.isArray(i))return;let l=(u)=>Array.isArray(u)&&u[0]==="zoom";if((i[0]==="interpolate"||i[0]==="interpolate-hcl"||i[0]==="interpolate-lab")&&l(i[2]))r(i).forEach((u)=>{t.add(u)});else if(i[0]==="step"&&l(i[1]))r(i).forEach((u)=>{t.add(u),t.add(u-0.01)});i.forEach(n)};n(e);let o=[...t].filter(Number.isFinite);if(o.length===0)o.push(0);let[s,a]=[Math.min(...o),Math.max(...o)];return o.push(...Array.from({length:Math.floor(a)-Math.ceil(s)+1},(i,l)=>Math.ceil(s)+l)),[...new Set(o)].sort((i,l)=>i-l).map((i)=>[i,Number(me(e,{zoom:i,properties:{},type:"Unknown"}))])};class Ne{static __wrap(e){let t=Object.create(Ne.prototype);return t.__wbg_ptr=e,Ut.register(t,t.__wbg_ptr,t),t}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ut.unregister(this),e}free(){let e=this.__destroy_into_raw();H.__wbg_gridset_free(e,0)}count(){return H.gridset_count(this.__wbg_ptr)>>>0}meta(e){let t,r;try{let n=H.gridset_meta(this.__wbg_ptr,e);return t=n[0],r=n[1],ut(n[0],n[1])}finally{H.__wbindgen_free(t,r,1)}}values(e){return H.gridset_values(this.__wbg_ptr,e)}}if(Symbol.dispose)Ne.prototype[Symbol.dispose]=Ne.prototype.free;class Pe{static __wrap(e){let t=Object.create(Pe.prototype);return t.__wbg_ptr=e,Ct.register(t,t.__wbg_ptr,t),t}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Ct.unregister(this),e}free(){let e=this.__destroy_into_raw();H.__wbg_streetflow_free(e,0)}eastU(){return H.streetflow_eastU(this.__wbg_ptr)}eastV(){return H.streetflow_eastV(this.__wbg_ptr)}northU(){return H.streetflow_northU(this.__wbg_ptr)}northV(){return H.streetflow_northV(this.__wbg_ptr)}}if(Symbol.dispose)Pe.prototype[Symbol.dispose]=Pe.prototype.free;function Bt(e){let t=jr(e,H.__wbindgen_malloc),r=Ae,n=H.readGrids(t,r);if(n[2])throw qr(n[1]);return Ne.__wrap(n[0])}function Vt(e,t,r,n,o,s){let a=$r(e,H.__wbindgen_malloc),i=Ae,l=Dt(t,H.__wbindgen_malloc),u=Ae,c=Dt(r,H.__wbindgen_malloc),b=Ae,m=H.streetFlow(a,i,l,u,c,b,n,o,s);return Pe.__wrap(m)}function Br(){return{__proto__:null,"./isard_grid_bg.js":{__proto__:null,__wbg___wbindgen_throw_41e9ee4f547fc59a:function(t,r){throw Error(ut(t,r))},__wbg_new_from_slice_ca6ad97db1f4779a:function(t,r){return new Float32Array(Vr(t,r))},__wbindgen_generic_0000000000000001:function(t,r){return ut(t,r)},__wbindgen_init_externref_table:function(){let t=H.__wbindgen_externrefs,r=t.grow(4);t.set(0,void 0),t.set(r+0,void 0),t.set(r+1,null),t.set(r+2,!0),t.set(r+3,!1)}}}}var Ut=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e)=>H.__wbg_gridset_free(e,1)),Ct=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e)=>H.__wbg_streetflow_free(e,1));function Vr(e,t){return e=e>>>0,Wr().subarray(e/4,e/4+t)}var Te=null;function Wr(){if(Te===null||Te.byteLength===0)Te=new Float32Array(H.memory.buffer);return Te}var Ee=null;function Hr(){if(Ee===null||Ee.byteLength===0)Ee=new Float64Array(H.memory.buffer);return Ee}function ut(e,t){return Yr(e>>>0,t)}var Fe=null;function Jr(){if(Fe===null||Fe.byteLength===0)Fe=new Uint32Array(H.memory.buffer);return Fe}var Ie=null;function Wt(){if(Ie===null||Ie.byteLength===0)Ie=new Uint8Array(H.memory.buffer);return Ie}function Dt(e,t){let r=t(e.length*4,4)>>>0;return Jr().set(e,r/4),Ae=e.length,r}function jr(e,t){let r=t(e.length*1,1)>>>0;return Wt().set(e,r/1),Ae=e.length,r}function $r(e,t){let r=t(e.length*8,8)>>>0;return Hr().set(e,r/8),Ae=e.length,r}function qr(e){let t=H.__wbindgen_externrefs.get(e);return H.__externref_table_dealloc(e),t}var ze=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});ze.decode();var zr=2146435072,lt=0;function Yr(e,t){if(lt+=t,lt>=zr)ze=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),ze.decode(),lt=t;return ze.decode(Wt().subarray(e,e+t))}var Ae=0,Gr,Kr,H;function Xr(e,t){return Kr=e,H=e.exports,Gr=t,Te=null,Ee=null,Fe=null,Ie=null,H.__wbindgen_start(),H}async function Zr(e,t){if(typeof Response==="function"&&e instanceof Response){if(!e.ok)throw Error(`failed to fetch Wasm: ${e.status} ${e.statusText} fetching '${e.url}'`);if(typeof WebAssembly.instantiateStreaming==="function")try{return await WebAssembly.instantiateStreaming(e,t)}catch(o){if(r(e.type)&&e.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",o);else throw o}let n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}else{let n=await WebAssembly.instantiate(e,t);if(n instanceof WebAssembly.Instance)return{instance:n,module:e};else return n}function r(n){switch(n){case"basic":case"cors":case"default":return!0}return!1}}async function Ht(e){if(H!==void 0)return H;if(e!==void 0)if(Object.getPrototypeOf(e)===Object.prototype)({module_or_path:e}=e);else console.warn("using deprecated parameters for the initialization function; pass a single object instead");if(e===void 0)e=new URL("isard_grid_bg.wasm",import.meta.url);let t=Br();if(typeof e==="string"||typeof Request==="function"&&e instanceof Request||typeof URL==="function"&&e instanceof URL)e=fetch(e);let{instance:r,module:n}=await Zr(await e,t);return Xr(r,n)}var ct={},Jt=async(e)=>{let t=ct.ready??Ht({module_or_path:e});ct.ready=t,await t.catch((r)=>{throw ct.ready=void 0,r})},jt=async(e,t,r,n,o)=>{await Jt(o);let s=Vt(e.points,e.ringStart,e.polygonStart,t,r,n);try{return{eastU:s.eastU(),eastV:s.eastV(),northU:s.northU(),northV:s.northV()}}finally{s.free()}},Qr=(e)=>typeof e==="object"&&e!==null&&("name"in e)&&("width"in e)&&("height"in e)&&("bounds"in e)&&Array.isArray(e.bounds),$t=async(e,t)=>{await Jt(t);let r=Bt(e);try{let n=[],o=[];for(let s=0;s<r.count();s++){let a=JSON.parse(r.meta(s));if(!Qr(a))throw Error("isard: a grid without its description");n.push(a),o.push(r.values(s))}return{grids:n,values:o}}finally{r.free()}};var en={flat:1,skillion:1,hipped:2,"half-hipped":2,side_hipped:2,dome:2,onion:2,round:2,gabled:3,saltbox:3,pyramidal:4,cone:4,mansard:5,gambrel:5},qt=255;var zt=(e)=>e==="generated"?255:en[e],Yt=(e)=>40075016.686*Math.cos(Math.atan(Math.sinh(Math.PI*(1-2*e))));class De{static __wrap(e){let t=Object.create(De.prototype);return t.__wbg_ptr=e,Gt.register(t,t.__wbg_ptr,t),t}__destroy_into_raw(){let e=this.__wbg_ptr;return this.__wbg_ptr=0,Gt.unregister(this),e}free(){let e=this.__destroy_into_raw();T.__wbg_tessellatedtile_free(e,0)}blockIndices(){return T.tessellatedtile_blockIndices(this.__wbg_ptr)}blockRanges(){let e=T.tessellatedtile_blockRanges(this.__wbg_ptr);var t=Ge(e[0],e[1]).slice();return T.__wbindgen_free(e[0],e[1]*4,4),t}blocks(){return T.tessellatedtile_blocks(this.__wbg_ptr)}bounds(){let e=T.tessellatedtile_bounds(this.__wbg_ptr);var t=nn(e[0],e[1]).slice();return T.__wbindgen_free(e[0],e[1]*8,8),t}fillRanges(){let e=T.tessellatedtile_fillRanges(this.__wbg_ptr);var t=Ge(e[0],e[1]).slice();return T.__wbindgen_free(e[0],e[1]*4,4),t}indices(){return T.tessellatedtile_indices(this.__wbg_ptr)}lineRanges(){let e=T.tessellatedtile_lineRanges(this.__wbg_ptr);var t=Ge(e[0],e[1]).slice();return T.__wbindgen_free(e[0],e[1]*4,4),t}lineTable(){return T.tessellatedtile_lineTable(this.__wbg_ptr)}pieces(){return T.tessellatedtile_pieces(this.__wbg_ptr)}prism(){return T.tessellatedtile_prism(this.__wbg_ptr)!==0}vertices(){return T.tessellatedtile_vertices(this.__wbg_ptr)}}if(Symbol.dispose)De.prototype[Symbol.dispose]=De.prototype.free;function Xt(e,t,r,n,o,s,a,i,l,u,c,b,m,d,w,f,g){let y=Ye(e,T.__wbindgen_malloc),h=ee,F=ge(t,T.__wbindgen_malloc),D=ee,M=ge(r,T.__wbindgen_malloc),L=ee,p=ge(n,T.__wbindgen_malloc),x=ee,_=ge(o,T.__wbindgen_malloc),A=ee,S=Ye(s,T.__wbindgen_malloc),O=ee,P=ge(a,T.__wbindgen_malloc),E=ee,Y=ge(i,T.__wbindgen_malloc),U=ee,I=ge(l,T.__wbindgen_malloc),v=ee,N=Kt(u,T.__wbindgen_malloc),B=ee,k=Kt(c,T.__wbindgen_malloc),R=ee,V=an(b,T.__wbindgen_malloc),G=ee,J=Ye(m,T.__wbindgen_malloc),j=ee,q=ge(d,T.__wbindgen_malloc),oe=ee,te=Ye(g,T.__wbindgen_malloc),ie=ee,K=T.tessellateVectorTile(y,h,F,D,M,L,p,x,_,A,S,O,P,E,Y,U,I,v,N,B,k,R,V,G,J,j,q,oe,w,f,te,ie);return De.__wrap(K)}function tn(){return{__proto__:null,"./isard_tess_bg.js":{__proto__:null,__wbg___wbindgen_throw_41e9ee4f547fc59a:function(t,r){throw Error(sn(t,r))},__wbg_new_from_slice_37a3c3a194266cb8:function(t,r){return new Uint32Array(Ge(t,r))},__wbg_new_from_slice_9a868026ffa4208a:function(t,r){return new Uint8Array(on(t,r))},__wbg_new_from_slice_ca6ad97db1f4779a:function(t,r){return new Float32Array(rn(t,r))},__wbindgen_init_externref_table:function(){let t=T.__wbindgen_externrefs,r=t.grow(4);t.set(0,void 0),t.set(r+0,void 0),t.set(r+1,null),t.set(r+2,!0),t.set(r+3,!1)}}}}var Gt=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e)=>T.__wbg_tessellatedtile_free(e,1));function rn(e,t){return e=e>>>0,Zt().subarray(e/4,e/4+t)}function nn(e,t){return e=e>>>0,Qt().subarray(e/8,e/8+t)}function Ge(e,t){return e=e>>>0,er().subarray(e/4,e/4+t)}function on(e,t){return e=e>>>0,mt().subarray(e/1,e/1+t)}var Le=null;function Zt(){if(Le===null||Le.byteLength===0)Le=new Float32Array(T.memory.buffer);return Le}var Oe=null;function Qt(){if(Oe===null||Oe.byteLength===0)Oe=new Float64Array(T.memory.buffer);return Oe}function sn(e,t){return un(e>>>0,t)}var Ue=null;function er(){if(Ue===null||Ue.byteLength===0)Ue=new Uint32Array(T.memory.buffer);return Ue}var Ce=null;function mt(){if(Ce===null||Ce.byteLength===0)Ce=new Uint8Array(T.memory.buffer);return Ce}function ge(e,t){let r=t(e.length*4,4)>>>0;return er().set(e,r/4),ee=e.length,r}function Kt(e,t){let r=t(e.length*1,1)>>>0;return mt().set(e,r/1),ee=e.length,r}function an(e,t){let r=t(e.length*4,4)>>>0;return Zt().set(e,r/4),ee=e.length,r}function Ye(e,t){let r=t(e.length*8,8)>>>0;return Qt().set(e,r/8),ee=e.length,r}var Ke=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});Ke.decode();var ln=2146435072,ft=0;function un(e,t){if(ft+=t,ft>=ln)Ke=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),Ke.decode(),ft=t;return Ke.decode(mt().subarray(e,e+t))}var ee=0,cn,fn,T;function mn(e,t){return fn=e,T=e.exports,cn=t,Le=null,Oe=null,Ue=null,Ce=null,T.__wbindgen_start(),T}async function pn(e,t){if(typeof Response==="function"&&e instanceof Response){if(!e.ok)throw Error(`failed to fetch Wasm: ${e.status} ${e.statusText} fetching '${e.url}'`);if(typeof WebAssembly.instantiateStreaming==="function")try{return await WebAssembly.instantiateStreaming(e,t)}catch(o){if(r(e.type)&&e.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",o);else throw o}let n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}else{let n=await WebAssembly.instantiate(e,t);if(n instanceof WebAssembly.Instance)return{instance:n,module:e};else return n}function r(n){switch(n){case"basic":case"cors":case"default":return!0}return!1}}async function tr(e){if(T!==void 0)return T;if(e!==void 0)if(Object.getPrototypeOf(e)===Object.prototype)({module_or_path:e}=e);else console.warn("using deprecated parameters for the initialization function; pass a single object instead");if(e===void 0)e=new URL("isard_tess_bg.wasm",import.meta.url);let t=tn();if(typeof e==="string"||typeof Request==="function"&&e instanceof Request||typeof URL==="function"&&e instanceof URL)e=fetch(e);let{instance:r,module:n}=await pn(await e,t);return mn(r,n)}class pt{buf;end;pos;constructor(e,t=0,r=e.length){this.buf=e;this.end=r;this.pos=t}varint(){let e=0;for(let t=0;t<70;t+=7){let r=this.buf[this.pos++]??0;if(e+=(r&127)*2**t,r<128)break}return e}int64(){let e=0,t=0;for(let r=0;r<10;r+=1){let n=this.buf[this.pos++]??0,o=n&127;if(r<4)e|=o<<7*r;else if(r===4)e|=(o&15)<<28,t|=o>>4;else t|=o<<7*r-32;if(n<128)break}return(t|0)*4294967296+(e>>>0)}sint(){let e=this.varint();return e%2===1?-(e+1)/2:e/2}sub(){let e=this.varint(),t=Math.min(this.pos+e,this.end),r=new pt(this.buf,this.pos,t);return this.pos=t,r}string(){let e=this.varint(),t=Math.min(this.pos+e,this.end),r=bn.decode(this.buf.subarray(this.pos,t));return this.pos=t,r}float(){let e=this.pos+4<=this.end?this.view().getFloat32(this.pos,!0):0;return this.pos+=4,e}double(){let e=this.pos+8<=this.end?this.view().getFloat64(this.pos,!0):0;return this.pos+=8,e}view(){return new DataView(this.buf.buffer,this.buf.byteOffset,this.buf.byteLength)}skip(e){if(e===0)this.varint();else if(e===1)this.pos+=8;else if(e===2)this.pos+=this.varint();else if(e===5)this.pos+=4}get more(){return this.pos<this.end}}var bn=new TextDecoder,dn=(e)=>{let t="";while(e.more){let r=e.varint();switch(r>>3){case 1:t=e.string();break;case 2:t=e.float();break;case 3:t=e.double();break;case 4:t=e.int64();break;case 5:t=e.varint();break;case 6:t=e.sint();break;case 7:t=e.varint()!==0;break;default:e.skip(r&7)}}return t},yn=(e)=>{let t=[],r,[n,o]=[0,0];while(e.more){let s=e.varint(),a=s&7,i=s>>3;if(a===7){if(r&&r.length>=2)r.push(r[0]??0,r[1]??0);continue}for(let l=0;l<i&&e.more;l+=1){if(n+=e.sint(),o+=e.sint(),a===1)r=[],t.push(r);r?.push(n,o)}}return t},bt=(e,t)=>{let r=new Map,n=new pt(e);while(n.more){let o=n.varint();if(o>>3!==3){n.skip(o&7);continue}let s=n.sub(),a="",i=4096,l=[],u=[],c=[];while(s.more){let m=s.varint();switch(m>>3){case 1:a=s.string();break;case 2:c.push(s.sub());break;case 3:l.push(s.string());break;case 4:u.push(dn(s.sub()));break;case 5:i=s.varint();break;default:s.skip(m&7)}}if(t&&!t.has(a))continue;let b=[];for(let m of c){let d=1,w={},f=[];while(m.more){let g=m.varint();switch(g>>3){case 2:{let y=m.sub();while(y.more){let h=l[y.varint()],F=u[y.varint()];if(h!==void 0&&F!==void 0)w[h]=F}break}case 3:d=Math.min(3,Math.max(1,m.varint()));break;case 4:f=yn(m.sub());break;default:m.skip(g&7)}}b.push({type:d,properties:w,geometry:f})}r.set(a,{extent:i,features:b})}return r};var hn=127,gn=16384,wn=["unknown","mvt","png","jpeg","webp","avif"],xn=(e)=>(4**e-1)/3,_n=(e,t,r)=>{if(e>26)throw Error(`isard: PMTiles level ${e} past 26`);let n=2**e;if(t<0||r<0||t>=n||r>=n)throw Error(`isard: PMTiles tile ${e}/${t}/${r} out of its level`);let[o,s]=[t,r],a=0;for(let i=n/2;i>=1;i/=2){let l=(o&i)>0?1:0,u=(s&i)>0?1:0;if(a+=i*i*(3*l^u),u===0){if(l===1)[o,s]=[i-1-o,i-1-s];[o,s]=[s,o]}}return xn(e)+a};class or{bytes;pos=0;constructor(e){this.bytes=e}next(){let e=0,t=1;for(;;){let r=this.bytes[this.pos++];if(r===void 0)throw Error("isard: PMTiles directory truncated");if(e+=(r&127)*t,r<128)return e;if(t*=128,t>9223372036854776000)throw Error("isard: PMTiles varint too long")}}}var rr=(e)=>{let t=new or(e),r=t.next();if(r>e.length)throw Error("isard: PMTiles directory larger than its bytes");let n=[],o=0;for(let s=0;s<r;s+=1)o+=t.next(),n.push({tileId:o,offset:0,length:0,runLength:1});for(let s of n)s.runLength=t.next();for(let s of n)s.length=t.next();return n.forEach((s,a)=>{let i=t.next(),l=n[a-1];s.offset=i===0&&l?l.offset+l.length:i-1}),n},An=(e,t)=>{let[r,n]=[0,e.length-1];while(r<=n){let s=r+n>>1,a=e[s];if(!a)break;if(a.tileId===t)return a;if(a.tileId<t)r=s+1;else n=s-1}let o=e[n];if(!o)return;if(o.runLength===0||t-o.tileId<o.runLength)return o;return},Sn=(e)=>{if(e.length<hn||String.fromCharCode(...e.subarray(0,7))!=="PMTiles")throw Error("isard: not a PMTiles archive");if(e[7]!==3)throw Error(`isard: PMTiles version ${e[7]} (only 3 is read)`);let t=new DataView(e.buffer,e.byteOffset,e.byteLength),r=(o)=>Number(t.getBigUint64(o,!0)),n=(o)=>t.getInt32(o,!0)/1e7;return{rootDirectoryOffset:r(8),rootDirectoryLength:r(16),metadataOffset:r(24),metadataLength:r(32),leafDirectoryOffset:r(40),leafDirectoryLength:r(48),tileDataOffset:r(56),tileDataLength:r(64),internalCompression:t.getUint8(97),tileCompression:t.getUint8(98),tileType:wn[t.getUint8(99)]??"unknown",minZoom:t.getUint8(100),maxZoom:t.getUint8(101),bounds:[n(102),n(106),n(110),n(114)],center:[n(119),n(123),t.getUint8(118)]}},Xe=async(e,t)=>{if(t===0||t===1)return e;if(t!==2)throw Error(`isard: PMTiles compression ${t===3?"brotli":"zstd"} is not read (gzip only)`);let r=new Blob([e]).stream().pipeThrough(new DecompressionStream("gzip"));return new Uint8Array(await new Response(r).arrayBuffer())},Mn=67108864;class sr{source;head;leaves=new de(64);whole;constructor(e){this.source=e}async range(e,t,r){if(typeof this.source!=="string")return new Uint8Array(await this.source.slice(e,e+t).arrayBuffer());if(this.whole)return(await this.whole).subarray(e,e+t);let n=await fetch(this.source,ce(this.source,{headers:{Range:`bytes=${e}-${e+Math.max(t,1)-1}`},...r?{signal:r}:{}}));if(!n.ok)throw Error(`${this.source}: HTTP ${n.status}`);if(n.status===206)return new Uint8Array(await n.arrayBuffer());if(Number(n.headers.get("Content-Length"))>Mn)throw await n.body?.cancel(),Error(`${this.source}: the server ignores range requests (HTTP 206 expected)`);let s=n.arrayBuffer().then((a)=>new Uint8Array(a));return this.whole=s,s.catch(()=>{this.whole=void 0}),(await s).subarray(e,e+t)}load(){return this.head??=(async()=>{let e=await this.range(0,gn),t=Sn(e),{rootDirectoryOffset:r,rootDirectoryLength:n}=t,o=r+n<=e.length?e.subarray(r,r+n):await this.range(r,n),s=rr(await Xe(o,t.internalCompression));return{header:t,root:s}})(),this.head.catch(()=>{this.head=void 0}),this.head}async header(){return(await this.load()).header}async metadata(){let{header:e}=await this.load();if(e.metadataLength===0)return{};let t=await this.range(e.metadataOffset,e.metadataLength),r=new TextDecoder().decode(await Xe(t,e.internalCompression)),n=JSON.parse(r);return ve(n)?n:{}}leaf(e,t){let r=e.leafDirectoryOffset+t.offset,n=this.leaves.get(r);if(n)return n;let o=this.range(r,t.length).then(async(s)=>rr(await Xe(s,e.internalCompression)));return o.catch(()=>this.leaves.delete(r)),this.leaves.set(r,o),o}async tile(e,t,r,n){let{header:o,root:s}=await this.load();if(e<o.minZoom||e>o.maxZoom)return;let a=_n(e,t,r),i=s;for(let l=0;l<4;l+=1){let u=An(i,a);if(!u)return;if(u.runLength>0){let c=await this.range(o.tileDataOffset+u.offset,u.length,n);return Xe(c,o.tileCompression)}i=await this.leaf(o,u)}throw Error("isard: PMTiles directories nested too deep")}}var nr=new de(16),vn=(e)=>{let t=nr.get(e);if(t)return t;let r=new sr(e);return nr.set(e,r),r};var dt=(e,t)=>{let r=/^pmtiles:\/\/(.+)\/(\d+)\/(\d+)\/(\d+)$/.exec(e);if(!r)return!1;let[,n="",o,s,a]=r;return vn(n).tile(Number(o),Number(s),Number(a),t)};var ir=(e)=>e*360-180,Me=(e)=>Math.atan(Math.sinh(Math.PI*(1-2*e)))*180/Math.PI;var ht=(e,t)=>{let r=e.sprites.find((o)=>Boolean(o.icons[t])),n=r?.icons[t];return r&&n?{icon:n,image:r.image}:void 0},Ve=new Map,ar=96,Be=new de(ar),lr=(e)=>Math.max(16,Math.ceil(ar/Math.max(1,e))),Ze=new Set,ne=new Set,yt=new de(64,(e)=>e.then((t)=>setTimeout(()=>t?.close(),0),()=>{return})),ur=(e,t="auto")=>{let r=yt.get(e);if(r)return r;let n=(async()=>{let o=dt(e);if(o){let i=await o;return i&&createImageBitmap(new Blob([i]))}let a=await fetch(e,ce(e,{priority:t}));if(a.status===404||a.status===204)return;if(!a.ok)throw Error(`${e}: ${a.status}`);return createImageBitmap(await a.blob())})();return n.catch(()=>yt.delete(e)),yt.set(e,n),n},fe=(e,t="auto")=>{let r=Be.get(e);if(r)return r;let n=(async()=>{let o=dt(e);if(o){let s=await o;return s&&bt(s)}for(let s=0;;s+=1){let i=await fetch(e,ce(e,{priority:t}));if(i.status===404||i.status===204)return;if(i.ok)return bt(new Uint8Array(await i.arrayBuffer()));if(s>=2)throw Error(`${e}: ${i.status}`);await new Promise((l)=>setTimeout(l,400*(s+1)))}})();return n.catch(()=>Be.delete(e)),Be.set(e,n),n},cr=(e,t,r,n)=>{let o=Math.max(0,Math.min(t-1,e.maxzoom)),s=t-o,a=2**Math.max(0,s),[i,l]=s>=0?[Math.floor(r/a),Math.floor(n/a)]:[r,n],u=e.tiles.replace("{z}",String(o)).replace("{x}",String(i)).replace("{y}",String(l)),c=1/a;return{url:u,vz:o,vx:i,vy:l,part:c,ox:r%a*c,oy:n%a*c}},C=(e,t,r,n,o)=>{let s=e[t]?.[r];if(s===void 0)return o;let a=Array.isArray(s)&&!Re(s)?s:me(s,n);return a===void 0||a===null?o:a},we=(e,t)=>{let r=pe(e)??[0,0,0,1];return $e([r[0],r[1],r[2],r[3]*t])},We=(e,t)=>{if(e.layout?.visibility==="none")return!1;return t>=(e.minzoom??0)&&t<(e.maxzoom??24)},se=(e,t,r,n,o,s)=>{let a=2**e;return[ir((t+o/n)/a),Me((r+s/n)/a)]};var xe=6;var fr=(e)=>{let t=e.leaf_type,r=typeof e.nature==="string"?e.nature:"";if(t==="needleleaved"||/conif/i.test(r))return 1;if(t==="broadleaved"||/feuillu/i.test(r))return 0;if(t==="mixed"||/mixte/i.test(r))return 0.5;if(e.class==="wood")return e.subclass==="forest"?0.35:0.15;return 0};var _e=(e,t,r,n)=>{let o=Math.imul(e^2654435769,2246822507)^Math.imul(t^3266489909,668265263);return o=Math.imul(o^o>>>15^Math.imul(r,374761393),739982445),o=Math.imul(o^o>>>13^Math.imul(n,695872825),695872825),((o^o>>>16)>>>0)/4294967296},He=(e,t,r)=>e.reduce((n,o)=>{let s=o.length/2,a=0;for(let i=0,l=s-1;i<s;l=i,i+=1){let[u,c,b,m]=[o[i*2]??0,o[i*2+1]??0,o[l*2]??0,o[l*2+1]??0];if(c>r!==m>r&&t<(b-u)*(r-c)/(m-c)+u)a+=1}return a%2===1?!n:n},!1),kn=(e,t,r,n,o=Number.POSITIVE_INFINITY)=>{let s=e[0]??[],a=[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY];for(let M=0;M+1<s.length;M+=2){let[L,p]=[s[M]??0,s[M+1]??0];a[0]=Math.min(a[0]??L,L),a[1]=Math.min(a[1]??p,p),a[2]=Math.max(a[2]??L,L),a[3]=Math.max(a[3]??p,p)}let[i,l]=[Math.max(0,a[0]??0),Math.max(0,a[1]??0)],[u,c]=[Math.min(t,a[2]??0),Math.min(t,a[3]??0)];if(!(r>0)||i>=u||l>=c)return[];let b=(u-i)/r*((c-l)/r),m=b>o?r*Math.sqrt(b/o):r,[d,w,f,g]=[Math.floor(i/m),Math.ceil(u/m),Math.floor(l/m),Math.ceil(c/m)],[y,h,F]=n,D=Math.imul(y+1,16777619)^Math.imul(h,1540483477)^Math.imul(F,461845907);return Array.from({length:Math.max(0,g-f)},(M,L)=>f+L).flatMap((M)=>Array.from({length:Math.max(0,w-d)},(L,p)=>d+p).flatMap((L)=>{let p=(L+_e(D,L,M,1))*m,x=(M+_e(D,L,M,2))*m;if(p<0||x<0||p>=t||x>=t||!He(e,p,x))return[];return[[p,x,_e(D,L,M,3)]]}))},mr=async(e,t,r,n,o,s,a,i)=>{let l=e.tiles.replace("{z}",String(t)).replace("{x}",String(r)).replace("{y}",String(n)),u=await fe(l,i);if(!u||ne.has(o))return;let c=40075016.686*Math.cos(Me((n+0.5)/2**t)*Math.PI/180)/2**t,b=[];e.layers.forEach((f,g)=>{let y=s[g]??0,h=u.get(f["source-layer"]??"");if(!h||!(y>0))return;let F=y/c*h.extent;h.features.forEach((D)=>{if(D.type!==3||!ue(f.filter,ae(D,t)))return;let M=fr(D.properties);D.geometry.reduce((p,x)=>{let _=0;for(let A=0;A+1<x.length;A+=2){let S=(A+2)%x.length;_+=(x[A]??0)*(x[S+1]??0)-(x[S]??0)*(x[A+1]??0)}if(_>0)p.push([x]);else if(_<0)p.at(-1)?.push(x);return p},[]).forEach((p)=>{kn(p,h.extent,F,[t,r,n],a*4).forEach(([x,_,A])=>{b.push([x,_,A,h.extent,M])})})})});let m=b.length>a?a/b.length:1,d=b.filter(([,,f])=>m>=1||_e(Math.floor(f*2147483648),t,r,n)<m),w=new Float64Array(d.length*xe);return d.forEach(([f,g,y,h,F],D)=>{let[M,L]=se(t,r,n,h,f,g),p=_e(Math.floor(y*2147483648),7,11,13),x=_e(Math.floor(y*2147483648),3,5,17)<F?1:0;w.set([M,L,0.75+0.5*y,y*7919%360,p,x],D*xe)}),w};var Qe=async(e,t,r,n,o,s)=>{let a=e.tiles.replace("{z}",String(t)).replace("{x}",String(r)).replace("{y}",String(n)),i=await fe(a,s),l={points:[],ringStart:[],polygonStart:[],feature:[]},u=[];if(!i||ne.has(o))return;let c=new Set,b=2**t;return e.layers.forEach((m)=>{let d=i.get(m["source-layer"]??"");if(!d)return;d.features.forEach((w)=>{if(w.type!==3||c.has(w)||!ue(m.filter,ae(w,t)))return;c.add(w);let f=u.length;u.push(w.properties),w.geometry.forEach((g)=>{let y=0;for(let h=0;h+1<g.length;h+=2){let F=(h+2)%g.length;y+=(g[h]??0)*(g[F+1]??0)-(g[F]??0)*(g[h+1]??0)}if(y===0)return;if(y>0||l.polygonStart.length===0||l.feature.at(-1)!==f)l.polygonStart.push(l.ringStart.length),l.feature.push(f);l.ringStart.push(l.points.length/2);for(let h=0;h+1<g.length;h+=2)l.points.push((r+(g[h]??0)/d.extent)/b,(n+(g[h+1]??0)/d.extent)/b)})})}),l.ringStart.push(l.points.length/2),l.polygonStart.push(l.ringStart.length-1),{arrays:{points:Float64Array.from(l.points),ringStart:Uint32Array.from(l.ringStart),polygonStart:Uint32Array.from(l.polygonStart),feature:Uint32Array.from(l.feature)},properties:u}},pr=32,Rn=26,Tn=new Set(["theatre","museum","place_of_worship","castle","monument","attraction","town_hall"]),En=(e)=>(e?.get("poi")?.features??[]).filter((t)=>t.type===1&&Tn.has(String(t.properties.class))).flatMap((t)=>t.geometry.flat()),gt=(e)=>{let[t,r,n,o]=[1/0,1/0,-1/0,-1/0];for(let s=0;s+1<e.length;s+=2)[t,r]=[Math.min(t,e[s]??0),Math.min(r,e[s+1]??0)],[n,o]=[Math.max(n,e[s]??0),Math.max(o,e[s+1]??0)];return[t,r,n,o]},Fn=(e,t)=>{if(t.length===0)return!1;let[r,n,o,s]=gt(e[0]??[]);for(let a=0;a+1<t.length;a+=2){let[i,l]=[t[a]??0,t[a+1]??0];if(i>=r&&i<=o&&l>=n&&l<=s&&He(e,i,l))return!0}return!1},br=(e)=>{let t=e.length>2&&e[0]===e[e.length-2]&&e[1]===e[e.length-1],r=Math.max(1,e.length/2-(t?1:0)),[n,o]=[0,0];for(let s=0;s<r;s+=1)[n,o]=[n+(e[s*2]??0),o+(e[s*2+1]??0)];return[n/r,o/r]},In=(e,t)=>{let r=e.filter((s)=>s.type===3),n=r.filter((s)=>Fn(s.geometry,t)),o=new Set(n);return n.forEach((s)=>{let[a,i,l,u]=gt(s.geometry[0]??[]),c=br(s.geometry[0]??[]);r.forEach((b)=>{if(o.has(b))return;let[m,d,w,f]=gt(b.geometry[0]??[]);if(w<a||m>l||f<i||d>u)return;if(He(s.geometry,...br(b.geometry[0]??[]))||He(b.geometry,...c))o.add(b)})}),o},Nn={line:(e)=>e!==1,circle:(e)=>e===1,fill:(e)=>e===3,extrusion:(e)=>e===3},Pn=(e,t)=>{let r=e["roof:shape"]??e.roof_shape,n=typeof r==="string"&&r!=="generated"?zt(r):void 0,o=Number(e["roof:height"]??e.roof_height??Number.NaN);return[t==="flat"?0:n??(t==="generated"?qt:0),o]},Ln=24,On=(e,t,r,n)=>{if(!st(e.filter))return ue(e.filter,ae(t,r))?[0,0]:void 0;let o,s=0;for(let a=r-1;a<=n;a+=1)if(ue(e.filter,ae(t,a)))o??=a,s=a+1;else if(o!==void 0)break;return o===void 0?void 0:[o<=r-1?0:o,s>n?99:s]},Un=(e,t)=>{let r=e.slice(),n=[[0,0,(o)=>o>=0],[0,t,(o)=>o<=t],[1,0,(o)=>o>=0],[1,t,(o)=>o<=t]];for(let[o,s,a]of n){let i=[],l=r.length/2;for(let u=0;u<l;u+=1){let[c,b]=[r[u*2]??0,r[u*2+1]??0],m=(u+1)%l,[d,w]=[r[m*2]??0,r[m*2+1]??0],[f,g]=o===0?[c,d]:[b,w];if(a(f))i.push(c,b);if(a(f)!==a(g)){let y=(s-f)/(g-f);i.push(o===0?s:c+(d-c)*y,o===0?b+(w-b)*y:s)}}if(r=i,r.length===0)break}return r},Cn=0.00048828125,Dn=(e,t)=>{let r=e.length/2;if(r<=2)return[...e];let n=new Uint8Array(r),o=[[0,r-1]],s=t*t;n[0]=1,n[r-1]=1;while(o.length>0){let[a,i]=o.pop()??[0,0],[l,u,c,b]=[e[a*2]??0,e[a*2+1]??0,e[i*2]??0,e[i*2+1]??0],[m,d]=[c-l,b-u],w=m*m+d*d,[f,g]=[-1,s];for(let y=a+1;y<i;y+=1){let[h,F]=[(e[y*2]??0)-l,(e[y*2+1]??0)-u],D=w>0?Math.max(0,Math.min(1,(h*m+F*d)/w)):0,M=(h-D*m)**2+(F-D*d)**2;if(M>g)[f,g]=[y,M]}if(f>=0)n[f]=1,o.push([a,f],[f,i])}return e.filter((a,i)=>n[i>>1]===1)},Bn=(e,t)=>{let r=[],n=[],o=()=>{if(n.length>=4)r.push(n);n=[]};for(let s=2;s+1<e.length;s+=2){let[a,i,l,u]=[e[s-2]??0,e[s-1]??0,e[s]??0,e[s+1]??0],[c,b]=[l-a,u-i],[m,d]=[0,1];for(let[w,f]of[[-c,a],[c,t-a],[-b,i],[b,t-i]])if(w===0){if(f<0)d=-1}else if(w<0)m=Math.max(m,f/w);else d=Math.min(d,f/w);if(m>d){o();continue}if(n.length===0||m>0)o(),n.push(a+c*m,i+b*m);if(n.push(a+c*d,i+b*d),d<1)o()}return o(),r},Vn=(e,t)=>e>=t?[e-0.5,e+1,e+3,e+6]:[e-0.5,e-0.16666666666666666,e+0.16666666666666666,e+0.5],Wn=(e,t,r,n,o)=>{let s=2**r,[a,i]=[n*t,o*t],l=[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY];e.forEach((d)=>{for(let w=0;w+1<d.length;w+=2){let[f,g]=[(d[w]??0)*s-a,(d[w+1]??0)*s-i];l[0]=Math.min(l[0]??f,f),l[1]=Math.min(l[1]??g,g),l[2]=Math.max(l[2]??f,f),l[3]=Math.max(l[3]??g,g)}});let[u=0,c=0,b=0,m=0]=l;if(b<=0||m<=0||u>=t||c>=t)return;return e.map((d)=>d.map((w,f)=>w*s-(f%2===0?a:i)))},dr=async(e,{z:t,x:r,y:n,deepest:o=e.maxzoom,roofs:s="data"},a,i,l)=>{let u=Math.max(0,t-e.maxzoom),[c,b,m]=[t-u,Math.floor(r/2**u),Math.floor(n/2**u)],[d,w]=[r-b*2**u,n-m*2**u],f=e.tiles.replace("{z}",String(c)).replace("{x}",String(b)).replace("{y}",String(m)),g=await fe(f,l);if(ne.has(a))return;let y=2**t,h=En(g),F=new Map,D=(k)=>{let R=F.get(k)??(h.length>0?In(k,h):new Set);return F.set(k,R),R},M=Vn(t,Math.max(o,e.maxzoom)),L=t>=Math.max(o,e.maxzoom)?Ln:t,p={points:[],ringStart:[],polygonStart:[],feature:[],roofs:[],roofHeights:[],roofOutlines:[],roofOutlineStart:[]},x={points:[],start:[],feature:[]},_=[],A=[],S={points:[],feature:[]},O=[],P=[],E=[],Y=[],U=[],I={},v=(k,R,V,G,J,j=!1)=>{let q=(W,z,X)=>C(R,"paint",W,{...V,zoom:X},z),oe=`${R.type}-opacity`,te=he(R.paint?.[oe]),ie=(W)=>{let[z,X,re,le]=pe(q(j?"fill-outline-color":`${R.type}-color`,"#000",W))??[0,0,0,1];return[z,X,re,le*(te?Number(q(oe,1,W)):1)]},K=Array(pr).fill(0),be=M[3]-M[0]>1.5?M[1]:M[3];if(K.splice(0,8,...ie(M[0]),...ie(be)),K.splice(24,2,...J),!j&&["fill","background","line","fill-extrusion"].includes(R.type)){let W=q(`${R.type}-pattern`,"",(M[0]+be)/2);if(typeof W==="string"&&W){let z=E.indexOf(W);K[R.type==="fill"||R.type==="background"?28:29]=(z>=0?z:E.push(W)-1)+1}}if(R.type==="circle"){let W=(M[0]+be)/2,[z,X,re,le]=pe(q("circle-stroke-color","#000",W))??[0,0,0,1];K.splice(0,8,...ie(W),z,X,re,le*Number(q("circle-stroke-opacity",1,W)))}return M.forEach((W,z)=>{if(K[8+z]=W,j){K[12+z]=1;return}if(R.type==="circle"){K[12+z]=Math.max(0,Number(q("circle-radius",5,W))||0),K[16+z]=W,K[20+z]=Math.max(0,Number(q("circle-stroke-width",0,W))||0);return}if(R.type==="fill-extrusion"){K[12+z]=Math.max(0,Number(q("fill-extrusion-height",0,W))||0),K[16+z]=W,K[20+z]=Math.max(0,Number(q("fill-extrusion-base",0,W))||0);return}if(R.type!=="line")return;if(z===0)K[26]=Math.max(0,Number(q("line-blur",0,(M[0]+be)/2))||0);let X=Number(q("line-width",1,W)),re=Number(q("line-gap-width",0,W));K[12+z]=Math.max(0,re>0?re+2*X:X),K[16+z]=W,K[20+z]=Number(q("line-offset",0,W))||0}),P.push(...K),Y.push(G),U.push(k),Y.length-1},N=(k,R,V)=>[(r+k/V)/y,(n+R/V)/y],B=(k,R,V,G)=>{k.forEach((J)=>{let j=R&&J.length>=2?[...J,J[0]??0,J[1]??0]:J;Bn(j,G).forEach((q)=>{let oe=Dn(q,G*Cn);x.start.push(x.points.length/2),x.feature.push(V);for(let te=0;te+1<oe.length;te+=2)x.points.push(...N(oe[te]??0,oe[te+1]??0,G))})})};if(e.layers.forEach((k,R)=>{_.push(p.polygonStart.length),A.push(x.start.length),O.push(S.feature.length);let V=qe(k),G=k.type==="fill"&&k.paint?.["fill-outline-color"]!==void 0&&k.paint?.["fill-antialias"]!==!1;if(!V)return;if(k.type==="background"){let j=v(R,k,{zoom:t,properties:{},type:"Unknown"},I,[0,0]);if(i)return;p.polygonStart.push(p.ringStart.length),p.feature.push(j),p.roofs.push(0),p.roofHeights.push(Number.NaN),p.roofOutlineStart.push(p.roofOutlines.length/2),p.ringStart.push(p.points.length/2),p.points.push(r/y,n/y,(r+1)/y,n/y,(r+1)/y,(n+1)/y,r/y,(n+1)/y);return}let J=g?.get(k["source-layer"]??"");J?.features.forEach((j)=>{if(!Nn[V](j.type))return;let q=ae(j,t),oe=On(k,j,t,L);if(!oe)return;let te=u>0?Wn(j.geometry,J.extent,u,d,w):j.geometry;if(!te)return;let ie=v(R,k,q,j.properties,oe),K=G?v(R,k,q,j.properties,oe,!0):-1;if(V==="extrusion"&&D(J.features).has(j))P[ie*pr+Rn]=1;if(i)return;if(V==="circle"){te.forEach((X)=>{for(let re=0;re+1<X.length;re+=2){let[le=0,Z=0]=[X[re],X[re+1]];if(le<0||Z<0||le>=J.extent||Z>=J.extent)continue;S.points.push(...N(le,Z,J.extent)),S.feature.push(ie)}});return}if(V==="line"){B(te,j.type===3,ie,J.extent);return}if(K>=0)B(te,!0,K,J.extent);let be=!1,[W,z]=V==="extrusion"?Pn(j.properties,s):[0,Number.NaN];te.forEach((X)=>{let re=0;for(let Z=0;Z+1<X.length;Z+=2){let _t=(Z+2)%X.length;re+=(X[Z]??0)*(X[_t+1]??0)-(X[_t]??0)*(X[Z+1]??0)}if(re===0)return;if(re<0&&!be)return;let le=Un(X,J.extent);if(re>0)be=le.length>=6;if(le.length<6)return;if(re>0){if(p.polygonStart.push(p.ringStart.length),p.feature.push(ie),p.roofs.push(W),p.roofHeights.push(z),p.roofOutlineStart.push(p.roofOutlines.length/2),W!==0&&X.some((Z)=>Z<0||Z>J.extent))for(let Z=0;Z+1<X.length;Z+=2)p.roofOutlines.push(...N(X[Z]??0,X[Z+1]??0,J.extent))}p.ringStart.push(p.points.length/2);for(let Z=0;Z+1<le.length;Z+=2)p.points.push(...N(le[Z]??0,le[Z+1]??0,J.extent))})})}),_.push(p.polygonStart.length),A.push(x.start.length),O.push(S.feature.length),p.ringStart.push(p.points.length/2),p.polygonStart.push(p.ringStart.length-1),p.roofOutlineStart.push(p.roofOutlines.length/2),x.start.push(x.points.length/2),i)return{styles:Float32Array.from(P),patterns:E};return{fills:{points:Float64Array.from(p.points),ringStart:Uint32Array.from(p.ringStart),polygonStart:Uint32Array.from(p.polygonStart),feature:Uint32Array.from(p.feature),fillStart:Uint32Array.from(_),roofs:Uint8Array.from(p.roofs),roofHeights:Float32Array.from(p.roofHeights),roofOutlines:Float64Array.from(p.roofOutlines),roofOutlineStart:Uint32Array.from(p.roofOutlineStart),roofMetres:Yt((n+0.5)/y)},lines:{points:Float64Array.from(x.points),start:Uint32Array.from(x.start),feature:Uint32Array.from(x.feature),lineStart:Uint32Array.from(A)},circles:{points:Float64Array.from(S.points),feature:Uint32Array.from(S.feature),circleStart:Uint32Array.from(O)},styles:Float32Array.from(P),patterns:E,tile:Float64Array.of(r/y,n/y,(r+1)/y,(n+1)/y),properties:Y,sublayer:Uint16Array.from(U)}},Se={},yr=()=>{if(!Se.url)return Promise.resolve(!1);let e=Se.ready??tr({module_or_path:Se.url}).then(()=>!0,(t)=>(console.warn("isard: the tessellation module failed to load, the main thread does its work",t),!1));return Se.ready=e,e},hr=(e,t,r)=>{let{fills:n,lines:o}=e;try{let s=Xt(n.points,n.ringStart,n.polygonStart,n.feature,n.fillStart,o.points,o.start,o.feature,o.lineStart,t,n.roofs??new Uint8Array,n.roofHeights??new Float32Array,n.roofOutlines??new Float64Array,n.roofOutlineStart??new Uint32Array,n.roofMetres??0,r,e.tile??new Float64Array),a={vertices:s.vertices(),indices:s.indices(),fillRanges:s.fillRanges(),prism:s.prism(),pieces:s.pieces(),lineTable:s.lineTable(),lineRanges:s.lineRanges(),blocks:s.blocks(),blockIndices:s.blockIndices(),blockRanges:s.blockRanges(),bounds:s.bounds()};return s.free(),a}catch(s){console.warn("isard: the tessellation module failed, the main thread does its work",s),Se.ready=Promise.resolve(!1);return}};var Hn=300,gr=(e,t,r)=>{let n=Boolean(C(e,"layout",`${t}-allow-overlap`,r,!1)),o=Boolean(C(e,"layout",`${t}-ignore-placement`,r,!1));if(n&&o)return!0;if(n)return"allow";return o?"ignore":!1},wr=(e,t)=>Array.isArray(e)?[Number(e[0]??t[0]),Number(e[1]??t[1])]:t,Jn=(e)=>{let t=(Array.isArray(e)?e:[e]).map((a)=>Number(a)||0),[r=0,n=r,o=r,s=n]=t;return[r,n,o,s]},jn=(e,t)=>{if(t==="uppercase")return e.toUpperCase();if(t==="lowercase")return e.toLowerCase();return e},tt=(e,t)=>{let r=0;for(let a=2;a+1<e.length;a+=2)r+=Math.hypot((e[a]??0)-(e[a-2]??0),(e[a+1]??0)-(e[a-1]??0));let n=[];if(!(r>0)||!(t>0))return n;let o=Math.min(t/2,r/2),s=0;for(let a=2;a+1<e.length;a+=2){let[i,l,u,c]=[e[a-2]??0,e[a-1]??0,e[a]??0,e[a+1]??0],b=Math.hypot(u-i,c-l);while(b>0&&o<=s+b){let m=(o-s)/b;n.push([i+(u-i)*m,l+(c-l)*m,i,l,u,c,a/2-1,o]),o+=t}s+=b}return n},$n=(e,t,r)=>{let n=[],o=0;for(let s=2;s+1<e.length;s+=2){let[a,i,l,u]=[e[s-2]??0,e[s-1]??0,e[s]??0,e[s+1]??0],c=Math.hypot(l-a,u-i),[b,m]=[o,o+c];if(o=m,c<=0||m<t||b>r)continue;let d=(w)=>[a+(l-a)*(w-b)/c,i+(u-i)*(w-b)/c];if(n.length===0)n.push(...d(Math.max(t,b)));n.push(...d(Math.min(r,m)))}return n},qn=(e,t,r,n,o)=>{let s=C(e,"layout","icon-rotation-alignment",r,"auto"),a=String(C(e,"layout","icon-text-fit",r,"none")),i=C(e,"layout","icon-text-fit-padding",r,[0,0,0,0]);return{image:t,size:he(e.layout?.["icon-size"])?Number(C(e,"layout","icon-size",r,1)):o(e),anchor:String(C(e,"layout","icon-anchor",r,"center")),offset:wr(C(e,"layout","icon-offset",r,[0,0]),[0,0]),rotate:Number(C(e,"layout","icon-rotate",r,0))||0,alignment:s==="map"||s==="auto"&&n==="line"?"map":"viewport",overlap:gr(e,"icon",r),optional:Boolean(C(e,"layout","icon-optional",r,!1)),fit:a==="width"||a==="height"||a==="both"?a:"none",padding:Jn(i),color:String(C(e,"paint","icon-color",r,"#000")),opacity:Number(C(e,"paint","icon-opacity",r,1))}},et=16,zn=(e,t,r)=>{let n=[],o=new Map,s=4096;e.layers.forEach((l)=>{if(l.type!=="fill-extrusion"||!We(l,r))return;let u=t.get(l["source-layer"]??"");if(!u)return;s=u.extent;for(let c of u.features){let b=ae(c,r);if(c.type!==3||!ue(l.filter,b))continue;let m=Number(C(l,"paint","fill-extrusion-height",b,0));if(!(m>0))continue;let d=[1/0,1/0,-1/0,-1/0];for(let w of c.geometry)for(let f=0;f+1<w.length;f+=2){let[g,y]=[w[f]??0,w[f+1]??0];d[0]=Math.min(d[0],g),d[1]=Math.min(d[1],y),d[2]=Math.max(d[2],g),d[3]=Math.max(d[3],y)}n.push({rings:c.geometry,height:m,box:d})}});let a=(l)=>Math.max(0,Math.min(et-1,Math.floor(l/s*et)));n.forEach(({box:l},u)=>{for(let c=a(l[1]);c<=a(l[3]);c++)for(let b=a(l[0]);b<=a(l[2]);b++){let m=c*et+b,d=o.get(m);if(d)d.push(u);else o.set(m,[u])}});let i=(l,u,c)=>{let b=!1;for(let m of l)for(let d=0,w=m.length-2;d+1<m.length;w=d,d+=2){let[f,g,y,h]=[m[d]??0,m[d+1]??0,m[w]??0,m[w+1]??0];if(g>c!==h>c&&u<(y-f)*(c-g)/(h-g)+f)b=!b}return b};return(l,u)=>(o.get(a(u)*et+a(l))??[]).reduce((c,b)=>{let m=n[b];return m&&i(m.rings,l,u)?Math.max(c??0,m.height):c},void 0)},xr=async(e,t,r,n,o,s,a=t)=>{let i=e.tiles.replace("{z}",String(t)).replace("{x}",String(r)).replace("{y}",String(n)),l=await fe(i,s);if(!l||ne.has(o))return[];let u=[],c=zn(e,l,a),b=new Map,m=(f)=>{let g=b.get(f);if(g!==void 0)return g;let y=f.layout?.["text-size"]??16,h=Re(y)?at(y):y;return b.set(f,h),h},d=new Map,w=(f)=>{let g=d.get(f);if(g!==void 0)return g;let y=f.layout?.["icon-size"]??1,h=Re(y)?at(y):y;return d.set(f,h),h};return e.layers.forEach((f,g)=>{let y=f.layout??{};if(f.type!=="symbol"||!We(f,a))return;if(y["text-field"]===void 0&&y["icon-image"]===void 0)return;let h=l.get(f["source-layer"]??"");if(!h)return;let F={zoom:a,properties:{},type:"Unknown"},D=C(f,"layout","symbol-placement",F,"point")==="line"?"line":"point",M=D==="line"&&C(f,"layout","text-rotation-alignment",F,"auto")!=="viewport";for(let L of h.features){let p=ae(L,a);if(!ue(f.filter,p))continue;let x=it(y["text-field"],p).trim(),_=it(y["icon-image"],p).trim();if(!x&&!_)continue;let A=jn(x,C(f,"layout","text-transform",p,"none")),S=C(f,"layout","text-font",p,["Noto Sans Regular"]),O=Ot(Array.isArray(S)&&typeof S[0]==="string"?S[0]:"Noto Sans Regular"),P={layer:g,text:A,font:O,size:he(f.layout?.["text-size"])?Number(C(f,"layout","text-size",p,16)):m(f),color:String(C(f,"paint","text-color",p,"#000")),haloColor:String(C(f,"paint","text-halo-color",p,"rgba(0,0,0,0)")),haloWidth:Number(C(f,"paint","text-halo-width",p,0)),anchor:String(C(f,"layout","text-anchor",p,"center")),offset:wr(C(f,"layout","text-offset",p,[0,0]),[0,0]),maxWidth:Number(C(f,"layout","text-max-width",p,10)),lineHeight:Number(C(f,"layout","text-line-height",p,1.2)),overlap:gr(f,"text",p),...M?{textAlong:M}:{},...C(f,"layout","text-optional",p,!1)?{textOptional:!0}:{},..._?{icon:qn(f,_,p,D,w)}:{}};if(L.type===1)for(let E of L.geometry)for(let Y=0;Y+1<E.length;Y+=2){let[U,I]=[E[Y]??0,E[Y+1]??0];if(U<0||I<0||U>=h.extent||I>=h.extent)continue;let[v,N]=se(t,r,n,h.extent,U,I),B=c(U,I);u.push({...P,lon:v,lat:N,...B===void 0?{}:{height:B}})}else if(!A&&D==="line"){let E=Number(C(f,"layout","symbol-spacing",p,250))*h.extent/(512*2**(a-t));for(let Y of L.geometry)for(let[U=0,I=0,v=0,N=0,B=0,k=0]of tt(Y,Math.max(E,1))){if(U<0||I<0||U>=h.extent||I>=h.extent)continue;let[R,V]=se(t,r,n,h.extent,U,I),[G,J]=se(t,r,n,h.extent,B,k),[j,q]=se(t,r,n,h.extent,v,N);u.push({...P,lon:R,lat:V,along:[G-j,J-q]})}}else if(A&&M){let E=h.extent/(512*2**(a-t)),Y=Number(C(f,"layout","symbol-spacing",p,250))*E;for(let U of L.geometry){let I=0;for(let v=2;v+1<U.length;v+=2)I+=Math.hypot((U[v]??0)-(U[v-2]??0),(U[v+1]??0)-(U[v-1]??0));if(I<h.extent/32)continue;for(let[v=0,N=0,B=0,k=0,R=0,V=0,,G=0]of tt(U,Math.max(Y,1))){if(v<0||N<0||v>=h.extent||N>=h.extent)continue;let J=Math.min(G,I-G,Hn*E),j=$n(U,G-J,G+J),q=[];for(let z=0;z+1<j.length;z+=2)q.push(...se(t,r,n,h.extent,j[z]??0,j[z+1]??0));let[oe,te]=se(t,r,n,h.extent,v,N),[ie,K]=se(t,r,n,h.extent,R,V),[be,W]=se(t,r,n,h.extent,B,k);u.push({...P,lon:oe,lat:te,along:[ie-be,K-W],...q.length>=4?{path:q}:{}})}}}else{let E,Y=0;for(let I of L.geometry){let v=0;for(let N=2;N+1<I.length;N+=2)v+=Math.hypot((I[N]??0)-(I[N-2]??0),(I[N+1]??0)-(I[N-1]??0));if(v>Y)Y=v,E=I}if(!E||Y<h.extent/32)continue;let U=Y/2;for(let I=2;I+1<E.length;I+=2){let[v,N,B,k]=[E[I-2]??0,E[I-1]??0,E[I]??0,E[I+1]??0],R=Math.hypot(B-v,k-N);if(R>=U&&R>0){let[V,G]=[v+(B-v)*U/R,N+(k-N)*U/R];if(V<0||G<0||V>=h.extent||G>=h.extent)break;let[J,j]=se(t,r,n,h.extent,V,G),[q,oe]=se(t,r,n,h.extent,B,k),[te,ie]=se(t,r,n,h.extent,v,N);u.push({...P,lon:J,lat:j,...D==="line"?{along:[q-te,oe-ie]}:{}});break}U-=R}}}}),u};var Yn={primary:8,secondary:7,tertiary:6,minor:5,service:4},_r=async(e,t,r,n,o,s,a,i)=>{let l=e.tiles.replace("{z}",String(t)).replace("{x}",String(r)).replace("{y}",String(n)),u=await fe(l,i);if(!u||ne.has(o))return;let c=40075016.686*Math.cos(Me((n+0.5)/2**t)*Math.PI/180)/2**t,b=new Set,m=[];e.layers.forEach((g)=>{let y=u.get(g["source-layer"]??"");if(!y)return;let h=y.extent/c;y.features.forEach((F)=>{let D=Yn[String(F.properties.class)];if(F.type!==2||D===void 0||b.has(F)||!ue(g.filter,ae(F,t)))return;b.add(F),F.geometry.forEach((M)=>{tt(M,s*h).forEach(([L=0,p=0,x=0,_=0,A=0,S=0,,O=0],P)=>{let E=Math.hypot(A-x,S-_)||1,Y=P%2===0?1:-1,[U,I]=[-(S-_)/E*Y,(A-x)/E*Y],[v,N]=[L+U*D*h,p+I*D*h];if(v<0||N<0||v>=y.extent||N>=y.extent)return;let[B,k]=se(t,r,n,y.extent,v,N),R=Math.atan2(-U,I)*180/Math.PI,V=_e(Math.floor(v),Math.floor(N),Math.floor(O),29);m.push(B,k,1,R,V,0)})})})});let d=m.length/xe,w=d>a?a/d:1,f=[];for(let g=0;g<d;g+=1)if(w>=1||(m[g*xe+4]??0)<w)f.push(...m.slice(g*xe,(g+1)*xe));return Float64Array.from(f)};var Gn=new Set(["butt","round","square"]),Kn=new Set(["bevel","miter","round"]),Xn=(e)=>Gn.has(e),Zn=(e)=>Kn.has(e),Qn=(e)=>Xn(e)?e:"butt",eo=(e)=>Zn(e)?e:"miter",to=(e,t)=>{if(e.patterns.has(t))return e.patterns.get(t);let n=(()=>{let o=ht(e,t);if(!o||!(o.icon.width>0)||!(o.icon.height>0))return;let{icon:s}=o,a=new OffscreenCanvas(s.width,s.height);return a.getContext("2d")?.drawImage(o.image,s.x,s.y,s.width,s.height,0,0,s.width,s.height),a})();return e.patterns.set(t,n),n},wt=new Map,ro=(e)=>{let t=wt.get(e)?.pop()??new OffscreenCanvas(e,e),r=t.getContext("2d",{willReadFrequently:!0});if(!r)throw Error("no 2D context");return r.setTransform(1,0,0,1,0,0),r.globalAlpha=1,r.setLineDash([]),r.clearRect(0,0,e,e),{canvas:t,g:r}},no=(e)=>{let t=wt.get(e.width)??[];if(wt.set(e.width,t),t.length<4)t.push(e)},oo=(e,t,r)=>{if(r)return Promise.resolve(e.transferToImageBitmap());return createImageBitmap(t.getImageData(0,0,e.width,e.height),{premultiplyAlpha:"none"})},Ar=async(e,t,r,n,o,s,a)=>{let i=cr(e,t,r,n),l=await fe(i.url,a);if(ne.has(s))return;let{canvas:u,g:c}=ro(o);try{return await so(e,i,l,u,c,t,r,n,o,s,a)}finally{no(u)}},so=async(e,t,r,n,o,s,a,i,l,u,c)=>{let b=Math.max(0,s-1),m=l/256,d=!1,w=!1;for(let f of e.layers){if(!We(f,b))continue;let g={zoom:b,properties:{},type:"Unknown"};if(f.type==="background"){let x=C(f,"paint","background-color",g,"#000"),_=Number(C(f,"paint","background-opacity",g,1));if(o.fillStyle=we(x,_),o.fillRect(0,0,l,l),(pe(x)??[0,0,0,1])[3]*_>=1)w=!0;d=!0;continue}if(f.type==="raster"){let x=f.source===void 0?void 0:e.rasters[f.source];if(!x)continue;let _=Math.max(0,Math.min(s-(x.tileSize>=512?1:0),x.maxzoom)),A=2**(s-_),S=x.tiles.replace("{z}",String(_)).replace("{x}",String(Math.floor(a/A))).replace("{y}",String(Math.floor(i/A))),O=await ur(S,c);if(ne.has(u))return;if(!O)continue;let[P,E]=[O.width/A,O.height/A];o.globalAlpha=Number(C(f,"paint","raster-opacity",g,1)),o.drawImage(O,a%A*P,i%A*E,P,E,0,0,l,l),o.globalAlpha=1,d=!0;continue}let y=r?.get(f["source-layer"]??"");if(!y)continue;let h=l/(y.extent*t.part),[F,D]=[t.ox*y.extent,t.oy*y.extent],M=(x,_)=>{o.beginPath();for(let A of x.geometry){for(let S=0;S+1<A.length;S+=2){let[O,P]=[((A[S]??0)-F)*h,((A[S+1]??0)-D)*h];if(S===0)o.moveTo(O,P);else o.lineTo(O,P)}if(_)o.closePath()}},L=new Map,p=(x,_,A,S)=>{let O=L.get(_),P=O??he(f[x]?.[_]);if(O===void 0)L.set(_,P);return C(f,x,_,P?A:g,S)};for(let x of y.features){let _=ae(x,b);if(!ue(f.filter,_))continue;if(f.type==="fill-extrusion"&&x.type===3)M(x,!0),o.fillStyle=we(p("paint","fill-extrusion-color",_,"#000"),Number(p("paint","fill-extrusion-opacity",_,1))),o.fill("evenodd"),d=!0;else if(f.type==="fill"&&x.type===3){let A=Number(p("paint","fill-opacity",_,1)),S=p("paint","fill-pattern",_,void 0);M(x,!0);let O=typeof S==="string"?ht(e,S)?.icon:void 0,P=O&&typeof S==="string"&&to(e,S);if(O&&P){let E=o.createPattern(P,"repeat");if(E)E.setTransform(new DOMMatrix().scale(m/(O.pixelRatio??1))),o.globalAlpha=A,o.fillStyle=E,o.fill("evenodd"),o.globalAlpha=1}else{o.fillStyle=we(p("paint","fill-color",_,"#000"),A),o.fill("evenodd");let E=p("paint","fill-outline-color",_,void 0);if(E!==void 0)o.strokeStyle=we(E,A),o.lineWidth=m,o.setLineDash([]),o.stroke()}d=!0}else if(f.type==="line"&&x.type!==1){let A=Number(p("paint","line-width",_,1));if(A<=0)continue;let S=Number(p("paint","line-gap-width",_,0));o.strokeStyle=we(p("paint","line-color",_,"#000"),Number(p("paint","line-opacity",_,1))),o.lineWidth=(S>0?S+2*A:A)*m,o.lineCap=Qn(p("layout","line-cap",_,"butt")),o.lineJoin=eo(p("layout","line-join",_,"miter"));let O=p("paint","line-dasharray",_,void 0);o.setLineDash(Array.isArray(O)?O.map((P)=>Number(P)*A*m):[]),M(x,x.type===3),o.stroke(),d=!0}else if(f.type==="circle"&&x.type===1){let A=Number(p("paint","circle-radius",_,5))*m;o.fillStyle=we(p("paint","circle-color",_,"#000"),Number(p("paint","circle-opacity",_,1)));let S=Number(p("paint","circle-stroke-width",_,0))*m;o.strokeStyle=we(p("paint","circle-stroke-color",_,"#000"),Number(p("paint","circle-stroke-opacity",_,1))),o.lineWidth=S;for(let O of x.geometry)for(let P=0;P+1<O.length;P+=2)if(o.beginPath(),o.arc(((O[P]??0)-F)*h,((O[P+1]??0)-D)*h,A,0,2*Math.PI),o.fill(),S>0)o.stroke();d=!0}}}if(!d&&!r)return null;return oo(n,o,w)};var Sr=async(e,t,r)=>{let{z:n,tiles:o,bounds:s,width:a,height:i,iterations:l,module:u,priority:c}=t,[b,m,d,w]=s,f=[],g=[],y=[],h=2**n;for(let F=0;F+1<o.length;F+=2){let D=o[F]??0,M=(D%h+h)%h,L=(D-M)/h,p=await Qe(e,n,M,o[F+1]??0,r,c);if(ne.has(r))throw Error("aborted");if(!p)continue;let{points:x,ringStart:_,polygonStart:A}=p.arrays;for(let S=0;S+1<A.length;S++){let[O,P]=[A[S]??0,A[S+1]??0],E=_[O]??0,Y=_[P]??0,[U,I,v,N]=[1/0,1/0,-1/0,-1/0];for(let B=E;B<Y;B++){let[k,R]=[(x[B*2]??0)+L,x[B*2+1]??0];U=Math.min(U,k),I=Math.min(I,R),v=Math.max(v,k),N=Math.max(N,R)}if(v<b||U>d||N<m||I>w)continue;y.push(g.length);for(let B=O;B<P;B++){g.push(f.length/2);for(let k=_[B]??0;k<(_[B+1]??0);k++)f.push(((x[k*2]??0)+L-b)/(d-b)*a,((x[k*2+1]??0)-m)/(w-m)*i)}}}return g.push(f.length/2),y.push(g.length-1),jt({points:Float64Array.from(f),ringStart:Uint32Array.from(g),polygonStart:Uint32Array.from(y)},a,i,l,u)};var xt=new Map,io={},Mr=Mt(),Q=(e,t=[])=>self.postMessage(e,t);self.onmessage=async({data:e})=>{if(e.type==="headers"){St(e.rules);return}if(e.type==="tess"){Se.url=e.url;return}if(e.type==="init"){if(e.workers!==void 0)Be.capacity=lr(e.workers);Ve.set(e.key,{tiles:e.tiles,maxzoom:e.maxzoom,layers:e.layers,rasters:e.rasters??{},sprites:e.sprites??[],patterns:new Map});return}if(e.type==="drop"){Ve.get(e.key)?.sprites.forEach((r)=>{r.image.close()}),Ve.delete(e.key);return}if(e.type==="abort"){if(Ze.has(e.id))ne.add(e.id);xt.get(e.id)?.abort();return}if(e.type==="heights"||e.type==="reproject"||e.type==="grids"){await lo(e);return}Ze.add(e.id);let t=Ve.get(e.key);try{if(!t)throw Error(`no renderer ${e.key}`);if(e.type==="render"){let r=await Ar(t,e.z,e.x,e.y,e.size,e.id,e.priority);if(r)Q({id:e.id,image:r},[r]);else Q({id:e.id,missing:!0})}else if(e.type==="trees"){let r=await mr(t,e.z,e.x,e.y,e.id,e.spacing,e.maxTrees,e.priority);if(!r)Q({id:e.id,missing:!0});else Q({id:e.id,trees:r},[r.buffer])}else if(e.type==="lamps"){let r=await _r(t,e.z,e.x,e.y,e.id,e.spacing,e.maxLamps,e.priority);if(!r)Q({id:e.id,missing:!0});else Q({id:e.id,lamps:r},[r.buffer])}else if(e.type==="street"){let r=await Sr(t,e,e.id);Q({id:e.id,street:r},[r.eastU,r.eastV,r.northU,r.northV].map((n)=>n.buffer))}else if(e.type==="polygons"){let r=await Qe(t,e.z,e.x,e.y,e.id,e.priority);if(!r)Q({id:e.id,missing:!0});else{let{points:n,ringStart:o,polygonStart:s,feature:a}=r.arrays;Q({id:e.id,polygons:r},[n.buffer,o.buffer,s.buffer,a.buffer])}}else if(e.type==="vectors"){let r=await dr(t,e,e.id,e.styles===!0,e.priority);if(!r)Q({id:e.id,missing:!0});else if(!("fills"in r))Q({id:e.id,...r},[r.styles.buffer]);else{let n=Uint8Array.from(t.layers,(i)=>qe(i)==="extrusion"?1:0),o=await yr()?hr(r,n,e.prism===!0):void 0,{fills:s,lines:a}=r;Q({id:e.id,vectors:o?{...r,mesh:o}:r},[...[s.points,s.ringStart,s.polygonStart,s.feature,s.fillStart].map((i)=>i.buffer),...[s.roofs,s.roofHeights,s.roofOutlines,s.roofOutlineStart].flatMap((i)=>i?[i.buffer]:[]),...[a.points,a.start,a.feature,a.lineStart].map((i)=>i.buffer),...r.circles?[r.circles.points,r.circles.feature,r.circles.circleStart].map((i)=>i.buffer):[],r.styles.buffer,r.sublayer.buffer,...(o?[o.vertices,o.indices,o.fillRanges,o.pieces,o.lineTable,o.lineRanges,o.blocks,o.blockIndices,o.blockRanges,o.bounds]:[]).map((i)=>i.buffer)])}}else Q({id:e.id,labels:await xr(t,e.z,e.x,e.y,e.id,e.priority,e.zoom)})}catch(r){Q({id:e.id,error:String(r)})}finally{Ze.delete(e.id),ne.delete(e.id)}};var ao=async(e,t)=>{let r=await fetch(e,ce(e,{signal:t}));if(!r.ok)throw Error(`${e}: ${r.status}`);return r.arrayBuffer()},lo=async(e)=>{let t=new AbortController;xt.set(e.id,t);try{if(e.type==="grids"){let{module:r,url:n,bytes:o}=e,s=o??(n?await ao(n,t.signal):new ArrayBuffer(0)),{grids:a,values:i}=await $t(new Uint8Array(s),r);Q({id:e.id,grids:a,values:i},i.map((l)=>l.buffer))}else if(e.type==="heights"){let r=await vt(e.url,e.encoding,e.floor,t.signal,io);if(r)Q({id:e.id,heights:r},[r.buffer]);else Q({id:e.id,missing:!0})}else{Mr.cache.capacity=e.cached;let r=await Mr.draw(e.job,t.signal);if(r)Q({id:e.id,image:r},[r]);else Q({id:e.id,missing:!0})}}catch(r){Q({id:e.id,error:String(r)})}finally{xt.delete(e.id)}};
2
2
 
3
- //# debugId=0099C5A222DA236564756E2164756E21
3
+ //# debugId=1675DDEC0CF5131764756E2164756E21
4
4
  //# sourceMappingURL=basemap.worker.js.map