@loaders.gl/tiles 5.0.0-alpha.8 → 5.0.0-alpha.9

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.
package/dist/dist.min.js CHANGED
@@ -4,8 +4,8 @@
4
4
  else if (typeof define === 'function' && define.amd) define([], factory);
5
5
  else if (typeof exports === 'object') exports['loaders'] = factory();
6
6
  else root['loaders'] = factory();})(globalThis, function () {
7
- "use strict";var __exports__=(()=>{var Cf=Object.create;var nn=Object.defineProperty;var Af=Object.getOwnPropertyDescriptor;var If=Object.getOwnPropertyNames;var Of=Object.getPrototypeOf,Nf=Object.prototype.hasOwnProperty;var Lf=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(r){throw e=0,r}},$i=(t,e)=>{for(var r in e)nn(t,r,{get:e[r],enumerable:!0})},rn=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of If(e))!Nf.call(t,i)&&i!==r&&nn(t,i,{get:()=>e[i],enumerable:!(n=Af(e,i))||n.enumerable});return t},on=(t,e,r)=>(rn(t,e,"default"),r&&rn(r,e,"default")),Gf=(t,e,r)=>(r=t!=null?Cf(Of(t)):{},rn(e||!t||!t.__esModule?nn(r,"default",{value:t,enumerable:!0}):r,t)),qf=t=>rn(nn({},"__esModule",{value:!0}),t);var la=Lf((N2,ca)=>{ca.exports=globalThis.loaders});var tn={};$i(tn,{I3SSource:()=>Li,I3SSpatialTransformer:()=>tr,ImageSet:()=>qi,IndexedArchiveTilesetSource:()=>Xn,LOD_METRIC_TYPE:()=>Dt,PointCloudTile:()=>rr,PointCloudTileset:()=>Di,RasterSet:()=>zi,STRATEGY_DEFAULT:()=>Jr,STRATEGY_NEVER:()=>ia,STRATEGY_REPLACE:()=>oa,SharedTile2DHeader:()=>Ct,SpatialCoordinateTransformer:()=>Be,TILESET_TYPE:()=>he,TILE_CONTENT_STATE:()=>ae,TILE_REFINEMENT:()=>te,TILE_TYPE:()=>Ke,Tile3D:()=>Pe,Tiles3DSource:()=>Ai,Tiles3DSpatialTransformer:()=>Mt,Tileset2D:()=>Qr,Tileset3D:()=>$n,TilesetCache:()=>Bt,TilesetTraverser:()=>Xe,applyTilesetSpatialOptions:()=>wt,calculateTransformProps:()=>kn,convertS2BoundingVolumeToOBB:()=>Ri,createBoundingVolume:()=>Ut,createImplicitSubtreeReference:()=>Js,createTilesetSpatialReference:()=>ve,get3DTilesSpatialReference:()=>ri,getFrameState:()=>Fn,getGeoidModel:()=>bi,getI3SSpatialReference:()=>ti,getLodStatus:()=>Jn,getSpatialCoordinateFrame:()=>_e,getTileset3DTraversalSnapshot:()=>Il,isTileset3DSource:()=>Wn,markTilesetSpatialReferenceTransformed:()=>Ft,materializeImplicitSubtree:()=>Ci,registerGeoidModel:()=>Hs,registerGeoidModelFromPgm:()=>I0,registerSpatialCrs:()=>C0,registerSpatialDatumGrid:()=>A0,replaceImplicitUrlTemplate:()=>Zr,traverseTilesetContents:()=>Ol});on(tn,Gf(la(),1));var V={};$i(V,{EPSILON1:()=>zf,EPSILON10:()=>Hf,EPSILON11:()=>$f,EPSILON12:()=>Yf,EPSILON13:()=>Kf,EPSILON14:()=>sn,EPSILON15:()=>Xf,EPSILON16:()=>Zf,EPSILON17:()=>Qf,EPSILON18:()=>Jf,EPSILON19:()=>ed,EPSILON2:()=>Bf,EPSILON20:()=>td,EPSILON3:()=>Df,EPSILON4:()=>kf,EPSILON5:()=>Ff,EPSILON6:()=>Uf,EPSILON7:()=>Vf,EPSILON8:()=>jf,EPSILON9:()=>Wf,PI:()=>At,PI_OVER_FOUR:()=>nd,PI_OVER_SIX:()=>id,PI_OVER_TWO:()=>rd,TWO_PI:()=>nr});var zf=.1,Bf=.01,Df=.001,kf=1e-4,Ff=1e-5,Uf=1e-6,Vf=1e-7,jf=1e-8,Wf=1e-9,Hf=1e-10,$f=1e-11,Yf=1e-12,Kf=1e-13,sn=1e-14,Xf=1e-15,Zf=1e-16,Qf=1e-17,Jf=1e-18,ed=1e-19,td=1e-20,rd=Math.PI/2,nd=Math.PI/4,id=Math.PI/6,At=Math.PI,nr=Math.PI*2;var od=1/Math.PI*180,sd=1/180*Math.PI,ad={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...ad}};var Y=globalThis.mathgl.config;function Yi(t,{precision:e=Y.precision}={}){return t=ld(t),`${parseFloat(t.toPrecision(e))}`}function $e(t){return Array.isArray(t)||ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Ki(t){return an(t)}function Xi(t){return ge(t)}function an(t,e){return Qi(t,r=>r*sd,e)}function ge(t,e){return Qi(t,r=>r*od,e)}function ha(t,e){return Math.sign(t)===Math.sign(e)&&Math.abs(t)<Math.abs(e)?t:(t%e+e)%e}function Zi(t,e){switch(e){case"negative-pi-to-pi":return cd(t);case"zero-to-two-pi":return ua(t);default:return t}}function ua(t){if(t>=0&&t<=nr)return t;let e=ha(t,nr);return Math.abs(e)<1e-14&&Math.abs(t)>1e-14?nr:e}function cd(t){return t>=-At&&t<=At?t:ua(t+At)-At}function ir(t,e,r){return Qi(t,n=>Math.max(e,Math.min(r,n)))}function Te(t,e,r){let n=Y.EPSILON;r&&(Y.EPSILON=r);try{if(t===e)return!0;if($e(t)&&$e(e)){if(t.length!==e.length)return!1;for(let i=0;i<t.length;++i)if(!Te(t[i],e[i]))return!1;return!0}return t&&t.equals?t.equals(e):e&&e.equals?e.equals(t):typeof t=="number"&&typeof e=="number"?Math.abs(t-e)<=Y.EPSILON*Math.max(1,Math.abs(t),Math.abs(e)):!1}finally{Y.EPSILON=n}}function ld(t){return Math.round(t/Y.EPSILON)*Y.EPSILON}function hd(t){return t.clone?t.clone():new Array(t.length)}function Qi(t,e,r){if($e(t)){let n=t;r=r||hd(n);for(let i=0;i<r.length&&i<n.length;++i){let o=typeof t=="number"?t:t[i];r[i]=e(o,i,r)}return r}return e(t)}var ut=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(e,r=0){for(let n=0;n<this.ELEMENTS;++n)this[n]=e[n+r];return this.check()}toArray(e=[],r=0){for(let n=0;n<this.ELEMENTS;++n)e[r+n]=this[n];return e}toObject(e){return e}from(e){return Array.isArray(e)?this.copy(e):this.fromObject(e)}to(e){return e===this?this:$e(e)?this.toArray(e):this.toObject(e)}toTarget(e){return e?this.to(e):this}toString(){return this.formatString(Y)}formatString(e){let r="";for(let n=0;n<this.ELEMENTS;++n)r+=(n>0?", ":"")+Yi(this[n],e);return`${e.printTypes?this.constructor.name:""}[${r}]`}equals(e){if(!e||this.length!==e.length)return!1;for(let r=0;r<this.ELEMENTS;++r)if(!Te(this[r],e[r]))return!1;return!0}exactEquals(e){if(!e||this.length!==e.length)return!1;for(let r=0;r<this.ELEMENTS;++r)if(this[r]!==e[r])return!1;return!0}negate(){for(let e=0;e<this.ELEMENTS;++e)this[e]=-this[e];return this.check()}lerp(e,r,n){if(n===void 0)return this.lerp(this,e,r);for(let i=0;i<this.ELEMENTS;++i){let o=e[i],s=typeof r=="number"?r:r[i];this[i]=o+n*(s-o)}return this.check()}min(e){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.min(e[r],this[r]);return this.check()}max(e){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.max(e[r],this[r]);return this.check()}clamp(e,r){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e[n]),r[n]);return this.check()}add(...e){for(let r of e)for(let n=0;n<this.ELEMENTS;++n)this[n]+=r[n];return this.check()}subtract(...e){for(let r of e)for(let n=0;n<this.ELEMENTS;++n)this[n]-=r[n];return this.check()}scale(e){if(typeof e=="number")for(let r=0;r<this.ELEMENTS;++r)this[r]*=e;else for(let r=0;r<this.ELEMENTS&&r<e.length;++r)this[r]*=e[r];return this.check()}multiplyByScalar(e){for(let r=0;r<this.ELEMENTS;++r)this[r]*=e;return this.check()}check(){if(Y.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let e=this.length===this.ELEMENTS;for(let r=0;r<this.ELEMENTS;++r)e=e&&Number.isFinite(this[r]);return e}};function ud(t,e){if(t.length!==e)return!1;for(let r=0;r<t.length;++r)if(!Number.isFinite(t[r]))return!1;return!0}function j(t){if(!Number.isFinite(t))throw new Error(`Invalid number ${JSON.stringify(t)}`);return t}function It(t,e,r=""){if(Y.debug&&!ud(t,e))throw new Error(`math.gl: ${r} some fields set to invalid numbers'`);return t}var Ot=class extends ut{toString(){let e="[";if(Y.printRowMajor){e+="row-major:";for(let r=0;r<this.RANK;++r)for(let n=0;n<this.RANK;++n)e+=` ${this[n*this.RANK+r]}`}else{e+="column-major:";for(let r=0;r<this.ELEMENTS;++r)e+=` ${this[r]}`}return e+="]",e}getElementIndex(e,r){return r*this.RANK+e}getElement(e,r){return this[r*this.RANK+e]}setElement(e,r,n){return this[r*this.RANK+e]=j(n),this}getColumn(e,r=new Array(this.RANK).fill(-0)){let n=e*this.RANK;for(let i=0;i<this.RANK;++i)r[i]=this[n+i];return r}setColumn(e,r){let n=e*this.RANK;for(let i=0;i<this.RANK;++i)this[n+i]=r[i];return this}};function oe(t,e){if(!t)throw new Error(`math.gl assertion ${e}`)}var Nt=class extends ut{get x(){return this[0]}set x(e){this[0]=j(e)}get y(){return this[1]}set y(e){this[1]=j(e)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let e=0;for(let r=0;r<this.ELEMENTS;++r)e+=this[r]*this[r];return e}magnitudeSquared(){return this.lengthSquared()}distance(e){return Math.sqrt(this.distanceSquared(e))}distanceSquared(e){let r=0;for(let n=0;n<this.ELEMENTS;++n){let i=this[n]-e[n];r+=i*i}return j(r)}dot(e){let r=0;for(let n=0;n<this.ELEMENTS;++n)r+=this[n]*e[n];return j(r)}normalize(){let e=this.magnitude();if(e!==0)for(let r=0;r<this.ELEMENTS;++r)this[r]/=e;return this.check()}multiply(...e){for(let r of e)for(let n=0;n<this.ELEMENTS;++n)this[n]*=r[n];return this.check()}divide(...e){for(let r of e)for(let n=0;n<this.ELEMENTS;++n)this[n]/=r[n];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(e){return this.distance(e)}distanceToSquared(e){return this.distanceSquared(e)}getComponent(e){return oe(e>=0&&e<this.ELEMENTS,"index is out of range"),j(this[e])}setComponent(e,r){return oe(e>=0&&e<this.ELEMENTS,"index is out of range"),this[e]=r,this.check()}addVectors(e,r){return this.copy(e).add(r)}subVectors(e,r){return this.copy(e).subtract(r)}multiplyVectors(e,r){return this.copy(e).multiply(r)}addScaledVector(e,r){for(let n=0;n<this.ELEMENTS;++n)this[n]+=e[n]*r;return this.check()}};var cn=typeof Float32Array<"u"?Float32Array:Array;var K2=Math.PI/180;function fa(t,e,r){let n=e[0],i=e[1];return t[0]=r[0]*n+r[2]*i,t[1]=r[1]*n+r[3]*i,t}function da(t,e,r){let n=e[0],i=e[1];return t[0]=r[0]*n+r[2]*i+r[4],t[1]=r[1]*n+r[3]*i+r[5],t}function ln(t,e,r){let n=e[0],i=e[1];return t[0]=r[0]*n+r[3]*i+r[6],t[1]=r[1]*n+r[4]*i+r[7],t}function hn(t,e,r){let n=e[0],i=e[1];return t[0]=r[0]*n+r[4]*i+r[12],t[1]=r[1]*n+r[5]*i+r[13],t}function un(t,e,r){let n=e[0],i=e[1],o=r[3]*n+r[7]*i||1;return t[0]=(r[0]*n+r[4]*i)/o,t[1]=(r[1]*n+r[5]*i)/o,t}function fn(t,e,r){let n=e[0],i=e[1],o=e[2],s=r[3]*n+r[7]*i+r[11]*o||1;return t[0]=(r[0]*n+r[4]*i+r[8]*o)/s,t[1]=(r[1]*n+r[5]*i+r[9]*o)/s,t[2]=(r[2]*n+r[6]*i+r[10]*o)/s,t}function ma(t,e,r){let n=e[0],i=e[1];return t[0]=r[0]*n+r[2]*i,t[1]=r[1]*n+r[3]*i,t[2]=e[2],t}function pa(t,e,r){let n=e[0],i=e[1],o=e[2];return t[0]=r[0]*n+r[3]*i+r[6]*o,t[1]=r[1]*n+r[4]*i+r[7]*o,t[2]=r[2]*n+r[5]*i+r[8]*o,t[3]=e[3],t}var Oe=class extends Nt{constructor(e=0,r=0){super(2),$e(e)&&arguments.length===1?this.copy(e):(Y.debug&&(j(e),j(r)),this[0]=e,this[1]=r)}set(e,r){return this[0]=e,this[1]=r,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this.check()}fromObject(e){return Y.debug&&(j(e.x),j(e.y)),this[0]=e.x,this[1]=e.y,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e}get ELEMENTS(){return 2}horizontalAngle(){return Math.atan2(this.y,this.x)}verticalAngle(){return Math.atan2(this.x,this.y)}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return hn(this,this,e),this.check()}transformAsVector(e){return un(this,this,e),this.check()}transformByMatrix3(e){return ln(this,this,e),this.check()}transformByMatrix2x3(e){return da(this,this,e),this.check()}transformByMatrix2(e){return fa(this,this,e),this.check()}};function ga(){let t=new cn(3);return cn!==Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function Ji(t){let e=t[0],r=t[1],n=t[2];return Math.sqrt(e*e+r*r+n*n)}function eo(t,e,r){let n=new cn(3);return n[0]=t,n[1]=e,n[2]=r,n}function _a(t,e){let r=e[0],n=e[1],i=e[2],o=r*r+n*n+i*i;return o>0&&(o=1/Math.sqrt(o)),t[0]=e[0]*o,t[1]=e[1]*o,t[2]=e[2]*o,t}function sr(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Lt(t,e,r){let n=e[0],i=e[1],o=e[2],s=r[0],a=r[1],c=r[2];return t[0]=i*c-o*a,t[1]=o*s-n*c,t[2]=n*a-i*s,t}function dn(t,e,r){let n=e[0],i=e[1],o=e[2],s=r[3]*n+r[7]*i+r[11]*o+r[15];return s=s||1,t[0]=(r[0]*n+r[4]*i+r[8]*o+r[12])/s,t[1]=(r[1]*n+r[5]*i+r[9]*o+r[13])/s,t[2]=(r[2]*n+r[6]*i+r[10]*o+r[14])/s,t}function mn(t,e,r){let n=e[0],i=e[1],o=e[2];return t[0]=n*r[0]+i*r[3]+o*r[6],t[1]=n*r[1]+i*r[4]+o*r[7],t[2]=n*r[2]+i*r[5]+o*r[8],t}function Ma(t,e,r){let n=r[0],i=r[1],o=r[2],s=r[3],a=e[0],c=e[1],l=e[2],h=i*l-o*c,u=o*a-n*l,f=n*c-i*a,d=i*f-o*u,m=o*h-n*f,_=n*u-i*h,p=s*2;return h*=p,u*=p,f*=p,d*=2,m*=2,_*=2,t[0]=a+h+d,t[1]=c+u+m,t[2]=l+f+_,t}function ya(t,e,r,n){let i=[],o=[];return i[0]=e[0]-r[0],i[1]=e[1]-r[1],i[2]=e[2]-r[2],o[0]=i[0],o[1]=i[1]*Math.cos(n)-i[2]*Math.sin(n),o[2]=i[1]*Math.sin(n)+i[2]*Math.cos(n),t[0]=o[0]+r[0],t[1]=o[1]+r[1],t[2]=o[2]+r[2],t}function xa(t,e,r,n){let i=[],o=[];return i[0]=e[0]-r[0],i[1]=e[1]-r[1],i[2]=e[2]-r[2],o[0]=i[2]*Math.sin(n)+i[0]*Math.cos(n),o[1]=i[1],o[2]=i[2]*Math.cos(n)-i[0]*Math.sin(n),t[0]=o[0]+r[0],t[1]=o[1]+r[1],t[2]=o[2]+r[2],t}function Sa(t,e,r,n){let i=[],o=[];return i[0]=e[0]-r[0],i[1]=e[1]-r[1],i[2]=e[2]-r[2],o[0]=i[0]*Math.cos(n)-i[1]*Math.sin(n),o[1]=i[0]*Math.sin(n)+i[1]*Math.cos(n),o[2]=i[2],t[0]=o[0]+r[0],t[1]=o[1]+r[1],t[2]=o[2]+r[2],t}function wa(t,e){let r=t[0],n=t[1],i=t[2],o=e[0],s=e[1],a=e[2],c=Math.sqrt((r*r+n*n+i*i)*(o*o+s*s+a*a)),l=c&&sr(t,e)/c;return Math.acos(Math.min(Math.max(l,-1),1))}var Ea=Ji;var to=[0,0,0],pn,g=class t extends Nt{static get ZERO(){return pn||(pn=new t(0,0,0),Object.freeze(pn)),pn}constructor(e=0,r=0,n=0){super(-0,-0,-0),arguments.length===1&&$e(e)?this.copy(e):(Y.debug&&(j(e),j(r),j(n)),this[0]=e,this[1]=r,this[2]=n)}set(e,r,n){return this[0]=e,this[1]=r,this[2]=n,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this.check()}fromObject(e){return Y.debug&&(j(e.x),j(e.y),j(e.z)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e.z=this[2],e}get ELEMENTS(){return 3}get z(){return this[2]}set z(e){this[2]=j(e)}angle(e){return wa(this,e)}cross(e){return Lt(this,this,e),this.check()}rotateX({radians:e,origin:r=to}){return ya(this,this,r,e),this.check()}rotateY({radians:e,origin:r=to}){return xa(this,this,r,e),this.check()}rotateZ({radians:e,origin:r=to}){return Sa(this,this,r,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return dn(this,this,e),this.check()}transformAsVector(e){return fn(this,this,e),this.check()}transformByMatrix3(e){return mn(this,this,e),this.check()}transformByMatrix2(e){return ma(this,this,e),this.check()}transformByQuaternion(e){return Ma(this,this,e),this.check()}};function Ta(t,e){if(t===e){let r=e[1],n=e[2],i=e[5];t[1]=e[3],t[2]=e[6],t[3]=r,t[5]=e[7],t[6]=n,t[7]=i}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t}function ba(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=e[4],a=e[5],c=e[6],l=e[7],h=e[8],u=h*s-a*l,f=-h*o+a*c,d=l*o-s*c,m=r*u+n*f+i*d;return m?(m=1/m,t[0]=u*m,t[1]=(-h*n+i*l)*m,t[2]=(a*n-i*s)*m,t[3]=f*m,t[4]=(h*r-i*c)*m,t[5]=(-a*r+i*o)*m,t[6]=d*m,t[7]=(-l*r+n*c)*m,t[8]=(s*r-n*o)*m,t):null}function va(t){let e=t[0],r=t[1],n=t[2],i=t[3],o=t[4],s=t[5],a=t[6],c=t[7],l=t[8];return e*(l*o-s*c)+r*(-l*i+s*a)+n*(c*i-o*a)}function ro(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3],a=e[4],c=e[5],l=e[6],h=e[7],u=e[8],f=r[0],d=r[1],m=r[2],_=r[3],p=r[4],M=r[5],y=r[6],S=r[7],x=r[8];return t[0]=f*n+d*s+m*l,t[1]=f*i+d*a+m*h,t[2]=f*o+d*c+m*u,t[3]=_*n+p*s+M*l,t[4]=_*i+p*a+M*h,t[5]=_*o+p*c+M*u,t[6]=y*n+S*s+x*l,t[7]=y*i+S*a+x*h,t[8]=y*o+S*c+x*u,t}function Pa(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3],a=e[4],c=e[5],l=e[6],h=e[7],u=e[8],f=r[0],d=r[1];return t[0]=n,t[1]=i,t[2]=o,t[3]=s,t[4]=a,t[5]=c,t[6]=f*n+d*s+l,t[7]=f*i+d*a+h,t[8]=f*o+d*c+u,t}function Ra(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3],a=e[4],c=e[5],l=e[6],h=e[7],u=e[8],f=Math.sin(r),d=Math.cos(r);return t[0]=d*n+f*s,t[1]=d*i+f*a,t[2]=d*o+f*c,t[3]=d*s-f*n,t[4]=d*a-f*i,t[5]=d*c-f*o,t[6]=l,t[7]=h,t[8]=u,t}function no(t,e,r){let n=r[0],i=r[1];return t[0]=n*e[0],t[1]=n*e[1],t[2]=n*e[2],t[3]=i*e[3],t[4]=i*e[4],t[5]=i*e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function Ca(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=r+r,a=n+n,c=i+i,l=r*s,h=n*s,u=n*a,f=i*s,d=i*a,m=i*c,_=o*s,p=o*a,M=o*c;return t[0]=1-u-m,t[3]=h-M,t[6]=f+p,t[1]=h+M,t[4]=1-l-m,t[7]=d-_,t[2]=f-p,t[5]=d+_,t[8]=1-l-u,t}var io;(function(t){t[t.COL0ROW0=0]="COL0ROW0",t[t.COL0ROW1=1]="COL0ROW1",t[t.COL0ROW2=2]="COL0ROW2",t[t.COL1ROW0=3]="COL1ROW0",t[t.COL1ROW1=4]="COL1ROW1",t[t.COL1ROW2=5]="COL1ROW2",t[t.COL2ROW0=6]="COL2ROW0",t[t.COL2ROW1=7]="COL2ROW1",t[t.COL2ROW2=8]="COL2ROW2"})(io||(io={}));var md=Object.freeze([1,0,0,0,1,0,0,0,1]),W=class extends Ot{static get IDENTITY(){return gd()}static get ZERO(){return pd()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return io}constructor(e){super(-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(e)?this.copy(e):this.identity()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this.check()}identity(){return this.copy(md)}fromObject(e){return this.check()}fromQuaternion(e){return Ca(this,e),this.check()}fromMatrix4(e){return this.set(e[0],e[1],e[2],e[4],e[5],e[6],e[8],e[9],e[10])}set(e,r,n,i,o,s,a,c,l){return this[0]=e,this[1]=r,this[2]=n,this[3]=i,this[4]=o,this[5]=s,this[6]=a,this[7]=c,this[8]=l,this.check()}setRowMajor(e,r,n,i,o,s,a,c,l){return this[0]=e,this[1]=i,this[2]=a,this[3]=r,this[4]=o,this[5]=c,this[6]=n,this[7]=s,this[8]=l,this.check()}determinant(){return va(this)}transpose(){return Ta(this,this),this.check()}invert(){return ba(this,this),this.check()}multiplyLeft(e){return ro(this,e,this),this.check()}multiplyRight(e){return ro(this,this,e),this.check()}rotate(e){return Ra(this,this,e),this.check()}scale(e){return Array.isArray(e)?no(this,this,e):no(this,this,[e,e]),this.check()}translate(e){return Pa(this,this,e),this.check()}transform(e,r){let n;switch(e.length){case 2:n=ln(r||[-0,-0],e,this);break;case 3:n=mn(r||[-0,-0,-0],e,this);break;case 4:n=pa(r||[-0,-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return It(n,e.length),n}},gn,_n=null;function pd(){return gn||(gn=new W([0,0,0,0,0,0,0,0,0]),Object.freeze(gn)),gn}function gd(){return _n||(_n=new W,Object.freeze(_n)),_n}function _d(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Aa(t,e){if(t===e){let r=e[1],n=e[2],i=e[3],o=e[6],s=e[7],a=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[6]=e[9],t[7]=e[13],t[8]=n,t[9]=o,t[11]=e[14],t[12]=i,t[13]=s,t[14]=a}else t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15];return t}function Ia(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=e[4],a=e[5],c=e[6],l=e[7],h=e[8],u=e[9],f=e[10],d=e[11],m=e[12],_=e[13],p=e[14],M=e[15],y=r*a-n*s,S=r*c-i*s,x=r*l-o*s,E=n*c-i*a,T=n*l-o*a,R=i*l-o*c,C=h*_-u*m,O=h*p-f*m,v=h*M-d*m,A=u*p-f*_,I=u*M-d*_,k=f*M-d*p,B=y*k-S*I+x*A+E*v-T*O+R*C;return B?(B=1/B,t[0]=(a*k-c*I+l*A)*B,t[1]=(i*I-n*k-o*A)*B,t[2]=(_*R-p*T+M*E)*B,t[3]=(f*T-u*R-d*E)*B,t[4]=(c*v-s*k-l*O)*B,t[5]=(r*k-i*v+o*O)*B,t[6]=(p*x-m*R-M*S)*B,t[7]=(h*R-f*x+d*S)*B,t[8]=(s*I-a*v+l*C)*B,t[9]=(n*v-r*I-o*C)*B,t[10]=(m*T-_*x+M*y)*B,t[11]=(u*x-h*T-d*y)*B,t[12]=(a*O-s*A-c*C)*B,t[13]=(r*A-n*O+i*C)*B,t[14]=(_*S-m*E-p*y)*B,t[15]=(h*E-u*S+f*y)*B,t):null}function Oa(t){let e=t[0],r=t[1],n=t[2],i=t[3],o=t[4],s=t[5],a=t[6],c=t[7],l=t[8],h=t[9],u=t[10],f=t[11],d=t[12],m=t[13],_=t[14],p=t[15],M=e*s-r*o,y=e*a-n*o,S=r*a-n*s,x=l*m-h*d,E=l*_-u*d,T=h*_-u*m,R=e*T-r*E+n*x,C=o*T-s*E+a*x,O=l*S-h*y+u*M,v=d*S-m*y+_*M;return c*R-i*C+p*O-f*v}function oo(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3],a=e[4],c=e[5],l=e[6],h=e[7],u=e[8],f=e[9],d=e[10],m=e[11],_=e[12],p=e[13],M=e[14],y=e[15],S=r[0],x=r[1],E=r[2],T=r[3];return t[0]=S*n+x*a+E*u+T*_,t[1]=S*i+x*c+E*f+T*p,t[2]=S*o+x*l+E*d+T*M,t[3]=S*s+x*h+E*m+T*y,S=r[4],x=r[5],E=r[6],T=r[7],t[4]=S*n+x*a+E*u+T*_,t[5]=S*i+x*c+E*f+T*p,t[6]=S*o+x*l+E*d+T*M,t[7]=S*s+x*h+E*m+T*y,S=r[8],x=r[9],E=r[10],T=r[11],t[8]=S*n+x*a+E*u+T*_,t[9]=S*i+x*c+E*f+T*p,t[10]=S*o+x*l+E*d+T*M,t[11]=S*s+x*h+E*m+T*y,S=r[12],x=r[13],E=r[14],T=r[15],t[12]=S*n+x*a+E*u+T*_,t[13]=S*i+x*c+E*f+T*p,t[14]=S*o+x*l+E*d+T*M,t[15]=S*s+x*h+E*m+T*y,t}function Na(t,e,r){let n=r[0],i=r[1],o=r[2],s,a,c,l,h,u,f,d,m,_,p,M;return e===t?(t[12]=e[0]*n+e[4]*i+e[8]*o+e[12],t[13]=e[1]*n+e[5]*i+e[9]*o+e[13],t[14]=e[2]*n+e[6]*i+e[10]*o+e[14],t[15]=e[3]*n+e[7]*i+e[11]*o+e[15]):(s=e[0],a=e[1],c=e[2],l=e[3],h=e[4],u=e[5],f=e[6],d=e[7],m=e[8],_=e[9],p=e[10],M=e[11],t[0]=s,t[1]=a,t[2]=c,t[3]=l,t[4]=h,t[5]=u,t[6]=f,t[7]=d,t[8]=m,t[9]=_,t[10]=p,t[11]=M,t[12]=s*n+h*i+m*o+e[12],t[13]=a*n+u*i+_*o+e[13],t[14]=c*n+f*i+p*o+e[14],t[15]=l*n+d*i+M*o+e[15]),t}function La(t,e,r){let n=r[0],i=r[1],o=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*o,t[9]=e[9]*o,t[10]=e[10]*o,t[11]=e[11]*o,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function Ga(t,e,r,n){let i=n[0],o=n[1],s=n[2],a=Math.sqrt(i*i+o*o+s*s),c,l,h,u,f,d,m,_,p,M,y,S,x,E,T,R,C,O,v,A,I,k,B,$;return a<1e-6?null:(a=1/a,i*=a,o*=a,s*=a,l=Math.sin(r),c=Math.cos(r),h=1-c,u=e[0],f=e[1],d=e[2],m=e[3],_=e[4],p=e[5],M=e[6],y=e[7],S=e[8],x=e[9],E=e[10],T=e[11],R=i*i*h+c,C=o*i*h+s*l,O=s*i*h-o*l,v=i*o*h-s*l,A=o*o*h+c,I=s*o*h+i*l,k=i*s*h+o*l,B=o*s*h-i*l,$=s*s*h+c,t[0]=u*R+_*C+S*O,t[1]=f*R+p*C+x*O,t[2]=d*R+M*C+E*O,t[3]=m*R+y*C+T*O,t[4]=u*v+_*A+S*I,t[5]=f*v+p*A+x*I,t[6]=d*v+M*A+E*I,t[7]=m*v+y*A+T*I,t[8]=u*k+_*B+S*$,t[9]=f*k+p*B+x*$,t[10]=d*k+M*B+E*$,t[11]=m*k+y*B+T*$,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)}function qa(t,e,r){let n=Math.sin(r),i=Math.cos(r),o=e[4],s=e[5],a=e[6],c=e[7],l=e[8],h=e[9],u=e[10],f=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=o*i+l*n,t[5]=s*i+h*n,t[6]=a*i+u*n,t[7]=c*i+f*n,t[8]=l*i-o*n,t[9]=h*i-s*n,t[10]=u*i-a*n,t[11]=f*i-c*n,t}function za(t,e,r){let n=Math.sin(r),i=Math.cos(r),o=e[0],s=e[1],a=e[2],c=e[3],l=e[8],h=e[9],u=e[10],f=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=o*i-l*n,t[1]=s*i-h*n,t[2]=a*i-u*n,t[3]=c*i-f*n,t[8]=o*n+l*i,t[9]=s*n+h*i,t[10]=a*n+u*i,t[11]=c*n+f*i,t}function Ba(t,e,r){let n=Math.sin(r),i=Math.cos(r),o=e[0],s=e[1],a=e[2],c=e[3],l=e[4],h=e[5],u=e[6],f=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=o*i+l*n,t[1]=s*i+h*n,t[2]=a*i+u*n,t[3]=c*i+f*n,t[4]=l*i-o*n,t[5]=h*i-s*n,t[6]=u*i-a*n,t[7]=f*i-c*n,t}function Da(t,e){let r=e[0],n=e[1],i=e[2],o=e[4],s=e[5],a=e[6],c=e[8],l=e[9],h=e[10];return t[0]=Math.sqrt(r*r+n*n+i*i),t[1]=Math.sqrt(o*o+s*s+a*a),t[2]=Math.sqrt(c*c+l*l+h*h),t}function ka(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=r+r,a=n+n,c=i+i,l=r*s,h=n*s,u=n*a,f=i*s,d=i*a,m=i*c,_=o*s,p=o*a,M=o*c;return t[0]=1-u-m,t[1]=h+M,t[2]=f-p,t[3]=0,t[4]=h-M,t[5]=1-l-m,t[6]=d+_,t[7]=0,t[8]=f+p,t[9]=d-_,t[10]=1-l-u,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Fa(t,e,r,n,i,o,s){let a=1/(r-e),c=1/(i-n),l=1/(o-s);return t[0]=o*2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o*2*c,t[6]=0,t[7]=0,t[8]=(r+e)*a,t[9]=(i+n)*c,t[10]=(s+o)*l,t[11]=-1,t[12]=0,t[13]=0,t[14]=s*o*2*l,t[15]=0,t}function Md(t,e,r,n,i){let o=1/Math.tan(e/2);if(t[0]=o/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,i!=null&&i!==1/0){let s=1/(n-i);t[10]=(i+n)*s,t[14]=2*i*n*s}else t[10]=-1,t[14]=-2*n;return t}var Ua=Md;function yd(t,e,r,n,i,o,s){let a=1/(e-r),c=1/(n-i),l=1/(o-s);return t[0]=-2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*l,t[11]=0,t[12]=(e+r)*a,t[13]=(i+n)*c,t[14]=(s+o)*l,t[15]=1,t}var Va=yd;function ja(t,e,r,n){let i,o,s,a,c,l,h,u,f,d,m=e[0],_=e[1],p=e[2],M=n[0],y=n[1],S=n[2],x=r[0],E=r[1],T=r[2];return Math.abs(m-x)<1e-6&&Math.abs(_-E)<1e-6&&Math.abs(p-T)<1e-6?_d(t):(u=m-x,f=_-E,d=p-T,i=1/Math.sqrt(u*u+f*f+d*d),u*=i,f*=i,d*=i,o=y*d-S*f,s=S*u-M*d,a=M*f-y*u,i=Math.sqrt(o*o+s*s+a*a),i?(i=1/i,o*=i,s*=i,a*=i):(o=0,s=0,a=0),c=f*a-d*s,l=d*o-u*a,h=u*s-f*o,i=Math.sqrt(c*c+l*l+h*h),i?(i=1/i,c*=i,l*=i,h*=i):(c=0,l=0,h=0),t[0]=o,t[1]=c,t[2]=u,t[3]=0,t[4]=s,t[5]=l,t[6]=f,t[7]=0,t[8]=a,t[9]=h,t[10]=d,t[11]=0,t[12]=-(o*m+s*_+a*p),t[13]=-(c*m+l*_+h*p),t[14]=-(u*m+f*_+d*p),t[15]=1,t)}function Wa(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t}function Ha(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t}function $a(t){let e=t[0],r=t[1],n=t[2],i=t[3];return Math.sqrt(e*e+r*r+n*n+i*i)}function Ya(t){let e=t[0],r=t[1],n=t[2],i=t[3];return e*e+r*r+n*n+i*i}function Ka(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=r*r+n*n+i*i+o*o;return s>0&&(s=1/Math.sqrt(s)),t[0]=r*s,t[1]=n*s,t[2]=i*s,t[3]=o*s,t}function Xa(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function Za(t,e,r,n){let i=e[0],o=e[1],s=e[2],a=e[3];return t[0]=i+n*(r[0]-i),t[1]=o+n*(r[1]-o),t[2]=s+n*(r[2]-s),t[3]=a+n*(r[3]-a),t}function Qa(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*o+r[12]*s,t[1]=r[1]*n+r[5]*i+r[9]*o+r[13]*s,t[2]=r[2]*n+r[6]*i+r[10]*o+r[14]*s,t[3]=r[3]*n+r[7]*i+r[11]*o+r[15]*s,t}var co;(function(t){t[t.COL0ROW0=0]="COL0ROW0",t[t.COL0ROW1=1]="COL0ROW1",t[t.COL0ROW2=2]="COL0ROW2",t[t.COL0ROW3=3]="COL0ROW3",t[t.COL1ROW0=4]="COL1ROW0",t[t.COL1ROW1=5]="COL1ROW1",t[t.COL1ROW2=6]="COL1ROW2",t[t.COL1ROW3=7]="COL1ROW3",t[t.COL2ROW0=8]="COL2ROW0",t[t.COL2ROW1=9]="COL2ROW1",t[t.COL2ROW2=10]="COL2ROW2",t[t.COL2ROW3=11]="COL2ROW3",t[t.COL3ROW0=12]="COL3ROW0",t[t.COL3ROW1=13]="COL3ROW1",t[t.COL3ROW2=14]="COL3ROW2",t[t.COL3ROW3=15]="COL3ROW3"})(co||(co={}));var Sd=45*Math.PI/180,wd=1,so=.1,ao=500,Ed=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),G=class extends Ot{static get IDENTITY(){return bd()}static get ZERO(){return Td()}get ELEMENTS(){return 16}get RANK(){return 4}get INDICES(){return co}constructor(e){super(-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(e)?this.copy(e):this.identity()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this[9]=e[9],this[10]=e[10],this[11]=e[11],this[12]=e[12],this[13]=e[13],this[14]=e[14],this[15]=e[15],this.check()}set(e,r,n,i,o,s,a,c,l,h,u,f,d,m,_,p){return this[0]=e,this[1]=r,this[2]=n,this[3]=i,this[4]=o,this[5]=s,this[6]=a,this[7]=c,this[8]=l,this[9]=h,this[10]=u,this[11]=f,this[12]=d,this[13]=m,this[14]=_,this[15]=p,this.check()}setRowMajor(e,r,n,i,o,s,a,c,l,h,u,f,d,m,_,p){return this[0]=e,this[1]=o,this[2]=l,this[3]=d,this[4]=r,this[5]=s,this[6]=h,this[7]=m,this[8]=n,this[9]=a,this[10]=u,this[11]=_,this[12]=i,this[13]=c,this[14]=f,this[15]=p,this.check()}toRowMajor(e){return e[0]=this[0],e[1]=this[4],e[2]=this[8],e[3]=this[12],e[4]=this[1],e[5]=this[5],e[6]=this[9],e[7]=this[13],e[8]=this[2],e[9]=this[6],e[10]=this[10],e[11]=this[14],e[12]=this[3],e[13]=this[7],e[14]=this[11],e[15]=this[15],e}identity(){return this.copy(Ed)}fromObject(e){return this.check()}fromQuaternion(e){return ka(this,e),this.check()}fromMatrix3(e){return this.set(e[0],e[1],e[2],0,e[3],e[4],e[5],0,e[6],e[7],e[8],0,0,0,0,1)}frustum(e){let{left:r,right:n,bottom:i,top:o,near:s=so,far:a=ao}=e;return a===1/0?vd(this,r,n,i,o,s):Fa(this,r,n,i,o,s,a),this.check()}lookAt(e){let{eye:r,center:n=[0,0,0],up:i=[0,1,0]}=e;return ja(this,r,n,i),this.check()}ortho(e){let{left:r,right:n,bottom:i,top:o,near:s=so,far:a=ao}=e;return Va(this,r,n,i,o,s,a),this.check()}orthographic(e){let{fovy:r=Sd,aspect:n=wd,focalDistance:i=1,near:o=so,far:s=ao}=e;Ja(r);let a=r/2,c=i*Math.tan(a),l=c*n;return this.ortho({left:-l,right:l,bottom:-c,top:c,near:o,far:s})}perspective(e){let{fovy:r=45*Math.PI/180,aspect:n=1,near:i=.1,far:o=500}=e;return Ja(r),Ua(this,r,n,i,o),this.check()}determinant(){return Oa(this)}getScale(e=[-0,-0,-0]){return e[0]=Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2]),e[1]=Math.sqrt(this[4]*this[4]+this[5]*this[5]+this[6]*this[6]),e[2]=Math.sqrt(this[8]*this[8]+this[9]*this[9]+this[10]*this[10]),e}getTranslation(e=[-0,-0,-0]){return e[0]=this[12],e[1]=this[13],e[2]=this[14],e}getRotation(e,r){e=e||[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],r=r||[-0,-0,-0];let n=this.getScale(r),i=1/n[0],o=1/n[1],s=1/n[2];return e[0]=this[0]*i,e[1]=this[1]*o,e[2]=this[2]*s,e[3]=0,e[4]=this[4]*i,e[5]=this[5]*o,e[6]=this[6]*s,e[7]=0,e[8]=this[8]*i,e[9]=this[9]*o,e[10]=this[10]*s,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}getRotationMatrix3(e,r){e=e||[-0,-0,-0,-0,-0,-0,-0,-0,-0],r=r||[-0,-0,-0];let n=this.getScale(r),i=1/n[0],o=1/n[1],s=1/n[2];return e[0]=this[0]*i,e[1]=this[1]*o,e[2]=this[2]*s,e[3]=this[4]*i,e[4]=this[5]*o,e[5]=this[6]*s,e[6]=this[8]*i,e[7]=this[9]*o,e[8]=this[10]*s,e}transpose(){return Aa(this,this),this.check()}invert(){return Ia(this,this),this.check()}multiplyLeft(e){return oo(this,e,this),this.check()}multiplyRight(e){return oo(this,this,e),this.check()}rotateX(e){return qa(this,this,e),this.check()}rotateY(e){return za(this,this,e),this.check()}rotateZ(e){return Ba(this,this,e),this.check()}rotateXYZ(e){return this.rotateX(e[0]).rotateY(e[1]).rotateZ(e[2])}rotateAxis(e,r){return Ga(this,this,e,r),this.check()}scale(e){return La(this,this,Array.isArray(e)?e:[e,e,e]),this.check()}translate(e){return Na(this,this,e),this.check()}transform(e,r){return e.length===4?(r=Qa(r||[-0,-0,-0,-0],e,this),It(r,4),r):this.transformAsPoint(e,r)}transformAsPoint(e,r){let{length:n}=e,i;switch(n){case 2:i=hn(r||[-0,-0],e,this);break;case 3:i=dn(r||[-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return It(i,e.length),i}transformAsVector(e,r){let n;switch(e.length){case 2:n=un(r||[-0,-0],e,this);break;case 3:n=fn(r||[-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return It(n,e.length),n}makeRotationX(e){return this.identity().rotateX(e)}makeTranslation(e,r,n){return this.identity().translate([e,r,n])}},Mn,yn;function Td(){return Mn||(Mn=new G([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),Object.freeze(Mn)),Mn}function bd(){return yn||(yn=new G,Object.freeze(yn)),yn}function Ja(t){if(t>Math.PI*2)throw Error("expected radians")}function vd(t,e,r,n,i,o){let s=2*o/(r-e),a=2*o/(i-n),c=(r+e)/(r-e),l=(i+n)/(i-n),h=-1,u=-1,f=-2*o;return t[0]=s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=c,t[9]=l,t[10]=h,t[11]=u,t[12]=0,t[13]=0,t[14]=f,t[15]=0,t}function ec(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}function lo(t,e,r){r=r*.5;let n=Math.sin(r);return t[0]=n*e[0],t[1]=n*e[1],t[2]=n*e[2],t[3]=Math.cos(r),t}function ho(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3],a=r[0],c=r[1],l=r[2],h=r[3];return t[0]=n*h+s*a+i*l-o*c,t[1]=i*h+s*c+o*a-n*l,t[2]=o*h+s*l+n*c-i*a,t[3]=s*h-n*a-i*c-o*l,t}function tc(t,e,r){r*=.5;let n=e[0],i=e[1],o=e[2],s=e[3],a=Math.sin(r),c=Math.cos(r);return t[0]=n*c+s*a,t[1]=i*c+o*a,t[2]=o*c-i*a,t[3]=s*c-n*a,t}function rc(t,e,r){r*=.5;let n=e[0],i=e[1],o=e[2],s=e[3],a=Math.sin(r),c=Math.cos(r);return t[0]=n*c-o*a,t[1]=i*c+s*a,t[2]=o*c+n*a,t[3]=s*c-i*a,t}function nc(t,e,r){r*=.5;let n=e[0],i=e[1],o=e[2],s=e[3],a=Math.sin(r),c=Math.cos(r);return t[0]=n*c+i*a,t[1]=i*c-n*a,t[2]=o*c+s*a,t[3]=s*c-o*a,t}function ic(t,e){let r=e[0],n=e[1],i=e[2];return t[0]=r,t[1]=n,t[2]=i,t[3]=Math.sqrt(Math.abs(1-r*r-n*n-i*i)),t}function oc(t,e,r,n){let i=e[0],o=e[1],s=e[2],a=e[3],c=r[0],l=r[1],h=r[2],u=r[3],f,d,m,_,p;return f=i*c+o*l+s*h+a*u,f<0&&(f=-f,c=-c,l=-l,h=-h,u=-u),1-f>1e-6?(d=Math.acos(f),p=Math.sin(d),m=Math.sin((1-n)*d)/p,_=Math.sin(n*d)/p):(m=1-n,_=n),t[0]=m*i+_*c,t[1]=m*o+_*l,t[2]=m*s+_*h,t[3]=m*a+_*u,t}function sc(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=r*r+n*n+i*i+o*o,a=s?1/s:0;return t[0]=-r*a,t[1]=-n*a,t[2]=-i*a,t[3]=o*a,t}function ac(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t}function cc(t,e){let r=e[0]+e[4]+e[8],n;if(r>0)n=Math.sqrt(r+1),t[3]=.5*n,n=.5/n,t[0]=(e[5]-e[7])*n,t[1]=(e[6]-e[2])*n,t[2]=(e[1]-e[3])*n;else{let i=0;e[4]>e[0]&&(i=1),e[8]>e[i*3+i]&&(i=2);let o=(i+1)%3,s=(i+2)%3;n=Math.sqrt(e[i*3+i]-e[o*3+o]-e[s*3+s]+1),t[i]=.5*n,n=.5/n,t[3]=(e[o*3+s]-e[s*3+o])*n,t[o]=(e[o*3+i]+e[i*3+o])*n,t[s]=(e[s*3+i]+e[i*3+s])*n}return t}var lc=Wa;var hc=Ha,uc=Xa,fc=Za,dc=$a;var mc=Ya;var Pd=Ka;var pc=(function(){let t=ga(),e=eo(1,0,0),r=eo(0,1,0);return function(n,i,o){let s=sr(i,o);return s<-.999999?(Lt(t,e,i),Ea(t)<1e-6&&Lt(t,r,i),_a(t,t),lo(n,t,Math.PI),n):s>.999999?(n[0]=0,n[1]=0,n[2]=0,n[3]=1,n):(Lt(t,i,o),n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=1+s,Pd(n,n))}})();var Ne=class extends ut{constructor(e=0,r=0,n=0,i=1){super(-0,-0,-0,-0),Array.isArray(e)&&arguments.length===1?this.copy(e):this.set(e,r,n,i)}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this.check()}set(e,r,n,i){return this[0]=e,this[1]=r,this[2]=n,this[3]=i,this.check()}fromObject(e){return this[0]=e.x,this[1]=e.y,this[2]=e.z,this[3]=e.w,this.check()}fromMatrix3(e){return cc(this,e),this.check()}fromEuler(e){switch(this.identity(),e.order){case"xyz":return this.rotateX(e.x).rotateY(e.y).rotateZ(e.z);case"yxz":return this.rotateY(e.y).rotateX(e.x).rotateZ(e.z);case"zxy":return this.rotateZ(e.z).rotateX(e.x).rotateY(e.y);case"zyx":return this.rotateZ(e.z).rotateY(e.y).rotateX(e.x);case"yzx":return this.rotateY(e.y).rotateZ(e.z).rotateX(e.x);case"xzy":return this.rotateX(e.x).rotateZ(e.z).rotateY(e.y);default:throw new Error("Unknown Euler angle order")}}fromAxisRotation(e,r){return lo(this,e,r),this.check()}identity(){return ec(this),this.check()}setAxisAngle(e,r){return this.fromAxisRotation(e,r)}get ELEMENTS(){return 4}get x(){return this[0]}set x(e){this[0]=j(e)}get y(){return this[1]}set y(e){this[1]=j(e)}get z(){return this[2]}set z(e){this[2]=j(e)}get w(){return this[3]}set w(e){this[3]=j(e)}len(){return dc(this)}lengthSquared(){return mc(this)}dot(e){return uc(this,e)}rotationTo(e,r){return pc(this,e,r),this.check()}add(e){return lc(this,this,e),this.check()}calculateW(){return ic(this,this),this.check()}conjugate(){return ac(this,this),this.check()}invert(){return sc(this,this),this.check()}lerp(e,r,n){return n===void 0?this.lerp(this,e,r):(fc(this,e,r,n),this.check())}multiplyRight(e){return ho(this,this,e),this.check()}multiplyLeft(e){return ho(this,e,this),this.check()}normalize(){let e=this.len(),r=e>0?1/e:0;return this[0]=this[0]*r,this[1]=this[1]*r,this[2]=this[2]*r,this[3]=this[3]*r,e===0&&(this[3]=1),this.check()}rotateX(e){return tc(this,this,e),this.check()}rotateY(e){return rc(this,this,e),this.check()}rotateZ(e){return nc(this,this,e),this.check()}scale(e){return hc(this,this,e),this.check()}slerp(e,r,n){let i,o,s;return arguments.length===2?(i=this,o=e,s=r):(i=e,o=r,s=n),oc(this,i,o,s),this.check()}lengthSq(){return this.lengthSquared()}setFromAxisAngle(e,r){return this.setAxisAngle(e,r)}premultiply(e){return this.multiplyLeft(e)}multiply(e){return this.multiplyRight(e)}};var it=6356752314245179e-9,Rd={radii:[6378137,6378137,it],radiiSquared:[6378137*6378137,6378137*6378137,it*it],oneOverRadii:[1/6378137,1/6378137,1/it],oneOverRadiiSquared:[1/(6378137*6378137),1/(6378137*6378137),1/(it*it)],maximumRadius:Math.max(6378137,6378137,it),centerToleranceSquared:.1};function xn(t){return t}var tM=new g;function Cd(t,e=[],r=xn){return"longitude"in t?(e[0]=r(t.longitude),e[1]=r(t.latitude),e[2]=t.height):"x"in t?(e[0]=r(t.x),e[1]=r(t.y),e[2]=t.z):(e[0]=r(t[0]),e[1]=r(t[1]),e[2]=t[2]),e}function gc(t,e=[]){return Cd(t,e,Y._cartographicRadians?xn:Ki)}function Ad(t,e,r=xn){return"longitude"in e?(e.longitude=r(t[0]),e.latitude=r(t[1]),e.height=t[2]):"x"in e?(e.x=r(t[0]),e.y=r(t[1]),e.z=t[2]):(e[0]=r(t[0]),e[1]=r(t[1]),e[2]=t[2]),e}function _c(t,e){return Ad(t,e,Y._cartographicRadians?xn:Xi)}var Mc=1e-14,Id=new g,yc={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},uo={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},ar={east:new g,north:new g,up:new g,west:new g,south:new g,down:new g},Od=new g,Nd=new g,Ld=new g;function fo(t,e,r,n,i,o){let s=yc[e]&&yc[e][r];oe(s&&(!n||n===s));let a,c,l,h=Id.copy(i);if(Te(h.x,0,Mc)&&Te(h.y,0,Mc)){let f=Math.sign(h.z);a=Od.fromArray(uo[e]),e!=="east"&&e!=="west"&&a.scale(f),c=Nd.fromArray(uo[r]),r!=="east"&&r!=="west"&&c.scale(f),l=Ld.fromArray(uo[n]),n!=="east"&&n!=="west"&&l.scale(f)}else{let{up:f,east:d,north:m}=ar;d.set(-h.y,h.x,0).normalize(),t.geodeticSurfaceNormal(h,f),m.copy(f).cross(d);let{down:_,west:p,south:M}=ar;_.copy(f).scale(-1),p.copy(d).scale(-1),M.copy(m).scale(-1),a=ar[e],c=ar[r],l=ar[n]}return o[0]=a.x,o[1]=a.y,o[2]=a.z,o[3]=0,o[4]=c.x,o[5]=c.y,o[6]=c.z,o[7]=0,o[8]=l.x,o[9]=l.y,o[10]=l.z,o[11]=0,o[12]=h.x,o[13]=h.y,o[14]=h.z,o[15]=1,o}var Gt=new g,Gd=new g,qd=new g;function xc(t,e,r=[]){let{oneOverRadii:n,oneOverRadiiSquared:i,centerToleranceSquared:o}=e;Gt.from(t);let s=Gt.x,a=Gt.y,c=Gt.z,l=n.x,h=n.y,u=n.z,f=s*s*l*l,d=a*a*h*h,m=c*c*u*u,_=f+d+m,p=Math.sqrt(1/_);if(!Number.isFinite(p))return;let M=Gd;if(M.copy(t).scale(p),_<o)return M.to(r);let y=i.x,S=i.y,x=i.z,E=qd;E.set(M.x*y*2,M.y*S*2,M.z*x*2);let T=(1-p)*Gt.len()/(.5*E.len()),R=0,C,O,v,A;do{T-=R,C=1/(1+T*y),O=1/(1+T*S),v=1/(1+T*x);let I=C*C,k=O*O,B=v*v,$=I*C,nt=k*O,ki=B*v;A=f*I+d*k+m*B-1;let Fi=-2*(f*$*y+d*nt*S+m*ki*x);R=A/Fi}while(Math.abs(A)>V.EPSILON12);return Gt.scale([C,O,v]).to(r)}var Sn=new g,Sc=new g,Dd=new g,De=new g,kd=new g,wn=new g,N=class{constructor(e=0,r=0,n=0){this.centerToleranceSquared=V.EPSILON1,oe(e>=0),oe(r>=0),oe(n>=0),this.radii=new g(e,r,n),this.radiiSquared=new g(e*e,r*r,n*n),this.radiiToTheFourth=new g(e*e*e*e,r*r*r*r,n*n*n*n),this.oneOverRadii=new g(e===0?0:1/e,r===0?0:1/r,n===0?0:1/n),this.oneOverRadiiSquared=new g(e===0?0:1/(e*e),r===0?0:1/(r*r),n===0?0:1/(n*n)),this.minimumRadius=Math.min(e,r,n),this.maximumRadius=Math.max(e,r,n),this.radiiSquared.z!==0&&(this.squaredXOverSquaredZ=this.radiiSquared.x/this.radiiSquared.z),Object.freeze(this)}equals(e){return this===e||!!(e&&this.radii.equals(e.radii))}toString(){return this.radii.toString()}cartographicToCartesian(e,r=[0,0,0]){let n=Sc,i=Dd,[,,o]=e;this.geodeticSurfaceNormalCartographic(e,n),i.copy(this.radiiSquared).scale(n);let s=Math.sqrt(n.dot(i));return i.scale(1/s),n.scale(o),i.add(n),i.to(r)}cartesianToCartographic(e,r=[0,0,0]){wn.from(e);let n=this.scaleToGeodeticSurface(wn,De);if(!n)return;let i=this.geodeticSurfaceNormal(n,Sc),o=kd;o.copy(wn).subtract(n);let s=Math.atan2(i.y,i.x),a=Math.asin(i.z),c=Math.sign(sr(o,wn))*Ji(o);return _c([s,a,c],r)}eastNorthUpToFixedFrame(e,r=new G){return fo(this,"east","north","up",e,r)}localFrameToFixedFrame(e,r,n,i,o=new G){return fo(this,e,r,n,i,o)}geocentricSurfaceNormal(e,r=[0,0,0]){return Sn.from(e).normalize().to(r)}geodeticSurfaceNormalCartographic(e,r=[0,0,0]){let n=gc(e),i=n[0],o=n[1],s=Math.cos(o);return Sn.set(s*Math.cos(i),s*Math.sin(i),Math.sin(o)).normalize(),Sn.to(r)}geodeticSurfaceNormal(e,r=[0,0,0]){return Sn.from(e).scale(this.oneOverRadiiSquared).normalize().to(r)}scaleToGeodeticSurface(e,r){return xc(e,this,r)}scaleToGeocentricSurface(e,r=[0,0,0]){De.from(e);let n=De.x,i=De.y,o=De.z,s=this.oneOverRadiiSquared,a=1/Math.sqrt(n*n*s.x+i*i*s.y+o*o*s.z);return De.multiplyByScalar(a).to(r)}transformPositionToScaledSpace(e,r=[0,0,0]){return De.from(e).scale(this.oneOverRadii).to(r)}transformPositionFromScaledSpace(e,r=[0,0,0]){return De.from(e).scale(this.radii).to(r)}getSurfaceNormalIntersectionWithZAxis(e,r=0,n=[0,0,0]){oe(Te(this.radii.x,this.radii.y,V.EPSILON15)),oe(this.radii.z>0),De.from(e);let i=De.z*(1-this.squaredXOverSquaredZ);if(!(Math.abs(i)>=this.radii.z-r))return De.set(0,0,i).to(n)}};N.WGS84=new N(6378137,6378137,it);var mo;(function(t){t.OUTSIDE="outside",t.INTERSECTING="intersecting",t.INSIDE="inside"})(mo||(mo={}));var gM=new g,_M=new g;var cr=new g,wc=new g,fe=class t{constructor(e=[0,0,0],r=0){this.radius=-0,this.center=new g,this.fromCenterRadius(e,r)}fromCenterRadius(e,r){return this.center.from(e),this.radius=r,this}fromCornerPoints(e,r){return r=cr.from(r),this.center=new g().from(e).add(r).scale(.5),this.radius=this.center.distance(r),this}equals(e){return this===e||!!e&&this.center.equals(e.center)&&this.radius===e.radius}clone(){return new t(this.center,this.radius)}union(e){let r=this.center,n=this.radius,i=e.center,o=e.radius,s=cr.copy(i).subtract(r),a=s.magnitude();if(n>=a+o)return this.clone();if(o>=a+n)return e.clone();let c=(n+a+o)*.5;return wc.copy(s).scale((-n+c)/a).add(r),this.center.copy(wc),this.radius=c,this}expand(e){let n=cr.from(e).subtract(this.center).magnitude();return n>this.radius&&(this.radius=n),this}transform(e){this.center.transform(e);let r=Da(cr,e);return this.radius=Math.max(r[0],Math.max(r[1],r[2]))*this.radius,this}distanceSquaredTo(e){let r=this.distanceTo(e);return r*r}distanceTo(e){let n=cr.from(e).subtract(this.center);return Math.max(0,n.len()-this.radius)}intersectPlane(e){let r=this.center,n=this.radius,o=e.normal.dot(r)+e.distance;return o<-n?"outside":o<n?"intersecting":"inside"}};var Fd=new g,Ud=new g,En=new g,Tn=new g,bn=new g,Vd=new g,jd=new g,ot={COLUMN0ROW0:0,COLUMN0ROW1:1,COLUMN0ROW2:2,COLUMN1ROW0:3,COLUMN1ROW1:4,COLUMN1ROW2:5,COLUMN2ROW0:6,COLUMN2ROW1:7,COLUMN2ROW2:8},Ye=class t{constructor(e=[0,0,0],r=[0,0,0,0,0,0,0,0,0]){this.center=new g().from(e),this.halfAxes=new W(r)}get halfSize(){let e=this.halfAxes.getColumn(0),r=this.halfAxes.getColumn(1),n=this.halfAxes.getColumn(2);return[new g(e).len(),new g(r).len(),new g(n).len()]}get quaternion(){let e=this.halfAxes.getColumn(0),r=this.halfAxes.getColumn(1),n=this.halfAxes.getColumn(2),i=new g(e).normalize(),o=new g(r).normalize(),s=new g(n).normalize();return new Ne().fromMatrix3(new W([...i,...o,...s]))}fromCenterHalfSizeQuaternion(e,r,n){let i=new Ne(n),o=new W().fromQuaternion(i);return o[0]=o[0]*r[0],o[1]=o[1]*r[0],o[2]=o[2]*r[0],o[3]=o[3]*r[1],o[4]=o[4]*r[1],o[5]=o[5]*r[1],o[6]=o[6]*r[2],o[7]=o[7]*r[2],o[8]=o[8]*r[2],this.center=new g().from(e),this.halfAxes=o,this}clone(){return new t(this.center,this.halfAxes)}equals(e){return this===e||!!e&&this.center.equals(e.center)&&this.halfAxes.equals(e.halfAxes)}getBoundingSphere(e=new fe){let r=this.halfAxes,n=r.getColumn(0,En),i=r.getColumn(1,Tn),o=r.getColumn(2,bn),s=Fd.copy(n).add(i).add(o);return e.center.copy(this.center),e.radius=s.magnitude(),e}intersectPlane(e){let r=this.center,n=e.normal,i=this.halfAxes,o=n.x,s=n.y,a=n.z,c=Math.abs(o*i[ot.COLUMN0ROW0]+s*i[ot.COLUMN0ROW1]+a*i[ot.COLUMN0ROW2])+Math.abs(o*i[ot.COLUMN1ROW0]+s*i[ot.COLUMN1ROW1]+a*i[ot.COLUMN1ROW2])+Math.abs(o*i[ot.COLUMN2ROW0]+s*i[ot.COLUMN2ROW1]+a*i[ot.COLUMN2ROW2]),l=n.dot(r)+e.distance;return l<=-c?"outside":l>=c?"inside":"intersecting"}distanceTo(e){return Math.sqrt(this.distanceSquaredTo(e))}distanceSquaredTo(e){let r=Ud.from(e).subtract(this.center),n=this.halfAxes,i=n.getColumn(0,En),o=n.getColumn(1,Tn),s=n.getColumn(2,bn),a=i.magnitude(),c=o.magnitude(),l=s.magnitude();i.normalize(),o.normalize(),s.normalize();let h=0,u;return u=Math.abs(r.dot(i))-a,u>0&&(h+=u*u),u=Math.abs(r.dot(o))-c,u>0&&(h+=u*u),u=Math.abs(r.dot(s))-l,u>0&&(h+=u*u),h}computePlaneDistances(e,r,n=[-0,-0]){let i=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY,s=this.center,a=this.halfAxes,c=a.getColumn(0,En),l=a.getColumn(1,Tn),h=a.getColumn(2,bn),u=Vd.copy(c).add(l).add(h).add(s),f=jd.copy(u).subtract(e),d=r.dot(f);return i=Math.min(d,i),o=Math.max(d,o),u.copy(s).add(c).add(l).subtract(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),u.copy(s).add(c).subtract(l).add(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),u.copy(s).add(c).subtract(l).subtract(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),s.copy(u).subtract(c).add(l).add(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),s.copy(u).subtract(c).add(l).subtract(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),s.copy(u).subtract(c).subtract(l).add(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),s.copy(u).subtract(c).subtract(l).subtract(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),n[0]=i,n[1]=o,n}transform(e){this.center.transformAsPoint(e);let r=this.halfAxes.getColumn(0,En);r.transformAsPoint(e);let n=this.halfAxes.getColumn(1,Tn);n.transformAsPoint(e);let i=this.halfAxes.getColumn(2,bn);return i.transformAsPoint(e),this.halfAxes=new W([...r,...n,...i]),this}getTransform(){throw new Error("not implemented")}};var Ec=new g,Tc=new g,re=class t{constructor(e=[0,0,1],r=0){this.normal=new g,this.distance=-0,this.fromNormalDistance(e,r)}fromNormalDistance(e,r){return oe(Number.isFinite(r)),this.normal.from(e).normalize(),this.distance=r,this}fromPointNormal(e,r){e=Ec.from(e),this.normal.from(r).normalize();let n=-this.normal.dot(e);return this.distance=n,this}fromCoefficients(e,r,n,i){return this.normal.set(e,r,n),oe(Te(this.normal.len(),1)),this.distance=i,this}clone(){return new t(this.normal,this.distance)}equals(e){return Te(this.distance,e.distance)&&Te(this.normal,e.normal)}getPointDistance(e){return this.normal.dot(e)+this.distance}transform(e){let r=Tc.copy(this.normal).transformAsVector(e).normalize(),n=this.normal.scale(-this.distance).transform(e);return this.fromPointNormal(n,r)}projectPointOntoPlane(e,r=[0,0,0]){let n=Ec.from(e),i=this.getPointDistance(n),o=Tc.copy(this.normal).scale(i);return n.subtract(o).to(r)}intersectWithRay(e,r=new g){let n=e.origin,i=e.direction,o=this.normal,s=o.dot(i);if(Math.abs(s)<V.EPSILON15)return;let a=(-this.distance-o.dot(n))/s;if(!(a<0))return r.copy(i).multiplyByScalar(a).add(n)}};var bc=[new g([1,0,0]),new g([0,1,0]),new g([0,0,1])],vc=new g,Wd=new g,se=class t{constructor(e=[]){this.planes=e}fromBoundingSphere(e){this.planes.length=2*bc.length;let r=e.center,n=e.radius,i=0;for(let o of bc){let s=this.planes[i],a=this.planes[i+1];s||(s=this.planes[i]=new re),a||(a=this.planes[i+1]=new re);let c=vc.copy(o).scale(-n).add(r);s.fromPointNormal(c,o);let l=vc.copy(o).scale(n).add(r),h=Wd.copy(o).negate();a.fromPointNormal(l,h),i+=2}return this}computeVisibility(e){let r="inside";for(let n of this.planes)switch(e.intersectPlane(n)){case"outside":return"outside";case"intersecting":r="intersecting";break;default:}return r}computeVisibilityWithPlaneMask(e,r){if(oe(Number.isFinite(r),"parentPlaneMask is required."),r===t.MASK_OUTSIDE||r===t.MASK_INSIDE)return r;let n=t.MASK_INSIDE,i=this.planes;for(let o=0;o<this.planes.length;++o){let s=o<31?1<<o:0;if(o<31&&(r&s)===0)continue;let a=i[o],c=e.intersectPlane(a);if(c==="outside")return t.MASK_OUTSIDE;c==="intersecting"&&(n|=s)}return n}};se.MASK_OUTSIDE=4294967295;se.MASK_INSIDE=0;se.MASK_INDETERMINATE=2147483647;var YM=new g,KM=new g,XM=new g,ZM=new g,QM=new g;var iy=new g,oy=new g,sy=new g,ay=new g,cy=new g,ly=new g,hy=new g,uy=new g,fy=new g,dy=new g,my=new g,py=new g;var My=new W,yy=new W,xy=new W,Sy=new W,wy=new W;var Ry=new g,Cy=new g,Ay=new g,Iy=new g,Oy=new g,Ny=new W,Ly={diagonal:new W,unitary:new W};var Kd=new g,po=new g,Xd=new G,Zd=new g,lr=class{constructor(e,r=N.WGS84){let n=r.scaleToGeodeticSurface(e,Kd),i=r.eastNorthUpToFixedFrame(n,Xd);this._origin=new g(n),this._xAxis=new g(po.from(i.getColumn(0))),this._yAxis=new g(po.from(i.getColumn(1)));let o=new g(po.from(i.getColumn(2)));this._plane=new re().fromPointNormal(this._origin,o)}projectPointToNearestOnPlane(e,r){r||(r=new Oe);let i=this._plane.projectPointOntoPlane(e,Zd).subtract(this._origin),o=this._xAxis.dot(i),s=this._yAxis.dot(i);return r.x=o,r.y=s,r}get plane(){return this._plane}get origin(){return this._origin}get xAxis(){return this._xAxis}get yAxis(){return this._yAxis}get zAxis(){return this._plane.normal}};var qt=class{constructor(e,r,n,i){this.west=e,this.south=r,this.east=n,this.north=i}static center(e,r){r||(r=new g);let n=e.east,i=e.west;n<i&&(n+=V.TWO_PI);let o=Zi((i+n)*.5,"negative-pi-to-pi"),s=(e.south+e.north)*.5;return r.x=o,r.y=s,r.z=0,r}get width(){let e=this.east,r=this.west;return e<r&&(e+=V.TWO_PI),e-r}};var Qd=new g,Jd=new g,em=new g,tm=new g,rm=new g,nm=new g,im=new g,om=new g,Cc=new g,sm=new g,Ac=new g,am=new g,cm=new Oe,lm=new Oe,hm=new Oe,um=new Oe,fm=new Oe,dm=new re,mm=new g,pm=new g,gm=new g,_m=new g,Mm=new Oe,ym=new g,xm=new g,Sm=new g(1,0,0),wm=new g(0,0,1);function hr(t,e=N.WGS84,r={}){if(!t||t.length!==6||t.some(y=>!Number.isFinite(y)))throw new Error("makeOBBFromRegion: region must contain exactly six finite numbers");let n=r.units==="degrees"?an(1):1,[i,o,s,a,c,l]=t;if(c>l)throw new Error("makeOBBFromRegion: minimumHeight must not exceed maximumHeight");let h=o*n,u=a*n,f=Ic(i*n),d=Ic(s*n);s*n-i*n>=V.TWO_PI-1e-12&&(d=f+V.TWO_PI);let _=1e-12;if(h>u||h<-V.PI_OVER_TWO-_||u>V.PI_OVER_TWO+_)throw new Error("makeOBBFromRegion: latitude must be within [-\u03C0/2, \u03C0/2] and south \u2264 north");let p=Math.max(-V.PI_OVER_TWO,Math.min(V.PI_OVER_TWO,h)),M=Math.max(-V.PI_OVER_TWO,Math.min(V.PI_OVER_TWO,u));return Em([f,p,d,M,c,l],e,r.transform)}function Ic(t){let e=((t+Math.PI)%V.TWO_PI+V.TWO_PI)%V.TWO_PI-Math.PI;return e===-Math.PI&&t>0?Math.PI:e}function Em(t,e,r){let n=new Ye,[i,o,s,a,c,l]=t,h=ge(a),u=ge(o),f,d,m,_,p,M,y,S=new qt(i,o,s,a),x=qt.center(S,Jd),E=new g([ge(x.x),ge(x.y),0]),T=x.x,R=E.x;if(S.width<=V.PI){let Ui=ge(i),Mf=e.cartographicToCartesian(E),He=new lr(Mf,e),yf=u<0&&h>0?0:E.y,xf=em.copy([R,h,l]),Vi=tm.copy([Ui,h,l]),Sf=rm.copy([Ui,yf,l]),ji=nm.copy([Ui,u,l]),wf=im.copy([R,u,l]),Ef=e.cartographicToCartesian(xf,om),Wi=e.cartographicToCartesian(Vi,Cc),Tf=e.cartographicToCartesian(Sf,sm),Hi=e.cartographicToCartesian(ji,Ac),bf=e.cartographicToCartesian(wf,am),vf=He.projectPointToNearestOnPlane(Ef,cm),sa=He.projectPointToNearestOnPlane(Wi,lm),Pf=He.projectPointToNearestOnPlane(Tf,hm),aa=He.projectPointToNearestOnPlane(Hi,um),Rf=He.projectPointToNearestOnPlane(bf,fm);return _=Math.min(sa.x,Pf.x,aa.x),f=-_,d=Math.max(sa.y,vf.y),p=Math.min(aa.y,Rf.y),Vi.z=ji.z=c,Wi=e.cartographicToCartesian(Vi,Cc),Hi=e.cartographicToCartesian(ji,Ac),y=He.plane,M=Math.min(y.getPointDistance(Wi),y.getPointDistance(Hi)),m=l,Oc(Lc(He.origin,He.xAxis,He.yAxis,He.zAxis,_,f,p,d,M,m,n),r)}let C=ge(s),O=o>0,v=a<0,A=O?u:v?h:0,I=e.cartographicToCartesian([R,A,l],mm);I.z=0;let B=Math.abs(I.x)<V.EPSILON10&&Math.abs(I.y)<V.EPSILON10?Sm:pm.copy(I).normalize(),$=wm,nt=gm.copy(B).cross($);y=dm.fromPointNormal(I,B);let ki=e.cartographicToCartesian([ge(T+V.PI_OVER_TWO),A,l],_m);f=y.projectPointOntoPlane(ki,Mm).dot(nt),_=-f;let Fi=v?c:l,gf=O?c:l;d=Nc(e,h,Fi,!0),p=Nc(e,u,gf,!1);let _f=e.cartographicToCartesian([C,A,l],xm);return M=y.getPointDistance(_f),m=0,Oc(Lc(I,nt,$,B,_,f,p,d,M,m,n),r)}function Oc(t,e){if(!e)return t;let r=[0,1,2].map(a=>t.halfAxes.getColumn(a,new g)),n=e.transformAsPoint(t.center),i=[1/0,1/0,1/0],o=[-1/0,-1/0,-1/0];for(let a=0;a<8;a++){let c=new g(n);for(let l=0;l<3;l++){let h=e.transformAsVector(r[l]);c.add(new g(h).scale((a&1<<l)===0?-1:1))}for(let l=0;l<3;l++)i[l]=Math.min(i[l],c[l]),o[l]=Math.max(o[l],c[l])}t.center.copy(i).add(o).scale(.5);let s=new g(o).subtract(i).scale(.5);return t.halfAxes=new W().set(s.x,0,0,0,s.y,0,0,0,s.z),t}function Nc(t,e,r,n){let i=n?-1/0:1/0;for(let o of[0,90,180,270]){let s=t.cartographicToCartesian([o,e,r],ym).z;i=n?Math.max(i,s):Math.min(i,s)}return i}function Lc(t,e,r,n,i,o,s,a,c,l,h){let u=h.center,f=h.halfAxes;f.setColumn(0,e),f.setColumn(1,r),f.setColumn(2,n);let d=Qd.set((i+o)/2,(s+a)/2,(c+l)/2).transformByMatrix3(f),m=(o-i)/2,_=(a-s)/2,p=(l-c)/2;return f[0]*=m,f[1]*=m,f[2]*=m,f[3]*=_,f[4]*=_,f[5]*=_,f[6]*=p,f[7]*=p,f[8]*=p,u.copy(t).add(d),h}function ur(){let t;if(typeof window<"u"&&window.performance)t=window.performance.now();else if(typeof process<"u"&&process.hrtime){let e=process.hrtime();t=e[0]*1e3+e[1]/1e6}else t=Date.now();return t}var xt=class{constructor(e,r){this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=e,this.type=r,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(e){return this.sampleSize=e,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(e){return this._count+=e,this._samples++,this._checkSampling(),this}subtractCount(e){return this._count-=e,this._samples++,this._checkSampling(),this}addTime(e){return this._time+=e,this.lastTiming=e,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=ur(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(ur()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var Le=class{constructor(e){this.stats={},this.id=e.id,this.stats={},this._initializeStats(e.stats),Object.seal(this)}get(e,r="count"){return this._getOrCreate({name:e,type:r})}get size(){return Object.keys(this.stats).length}reset(){for(let e of Object.values(this.stats))e.reset();return this}forEach(e){for(let r of Object.values(this.stats))e(r)}getTable(){let e={};return this.forEach(r=>{e[r.name]={time:r.time||0,count:r.count||0,average:r.getAverageTime()||0,hz:r.getHz()||0}}),e}_initializeStats(e=[]){e.forEach(r=>this._getOrCreate(r))}_getOrCreate(e){let{name:r,type:n}=e,i=this.stats[r];return i||(e instanceof xt?i=e:i=new xt(r,n),this.stats[r]=i),i}};function ke(t,e){if(!t)throw new Error(e||"loader assertion failed.")}function Pn(t,e,r){let n=r!==void 0?new Uint8Array(t).subarray(e,e+r):new Uint8Array(t).subarray(e);return new Uint8Array(n).buffer}var Tm="Queued Requests",bm="Active Requests",vm="Cancelled Requests",Pm="Queued Requests Ever",Rm="Active Requests Ever",Cm={id:"request-scheduler",throttleRequests:!0,maxRequests:6,debounceTime:0},st=class{props;stats;activeRequestCount=0;requestQueue=[];requestMap=new Map;updateTimer=null;constructor(e={}){this.props={...Cm,...e},this.stats=new Le({id:this.props.id}),this.stats.get(Tm),this.stats.get(bm),this.stats.get(vm),this.stats.get(Pm),this.stats.get(Rm)}setProps(e){e.throttleRequests!==void 0&&(this.props.throttleRequests=e.throttleRequests),e.maxRequests!==void 0&&(this.props.maxRequests=e.maxRequests),e.debounceTime!==void 0&&(this.props.debounceTime=e.debounceTime)}scheduleRequest(e,r=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(e))return this.requestMap.get(e);let n={handle:e,priority:0,getPriority:r},i=new Promise(o=>(n.resolve=o,n));return this.requestQueue.push(n),this.requestMap.set(e,i),this._issueNewRequests(),i}_issueRequest(e){let{handle:r,resolve:n}=e,i=!1,o=()=>{i||(i=!0,this.requestMap.delete(r),this.activeRequestCount--,this.scheduleRefill())};return this.activeRequestCount++,n?n({done:o}):Promise.resolve({done:o})}scheduleRefill(){this.updateTimer===null&&(this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),0))}_issueNewRequests(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),this.props.debounceTime)}_issueNewRequestsAsync(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=null;let e=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(e!==0){this._updateAllRequests();for(let r=0;r<e;++r){let n=this.requestQueue.shift();n&&this._issueRequest(n)}}}_updateAllRequests(){let e=this.requestQueue;for(let r=0;r<e.length;++r){let n=e[r];this._updateRequest(n)||(e.splice(r,1),this.requestMap.delete(n.handle),r--)}e.sort((r,n)=>r.priority-n.priority)}_updateRequest(e){return e.priority=e.getPriority(e.handle),e.priority<0?(e.resolve(null),!1):!0}};var Am=Number.POSITIVE_INFINITY,Im=Number.POSITIVE_INFINITY,fr=class{maxEntries;maxBytes;getByteLength;onRemove;entries=new Map;retainedByteLength=0;constructor(e={}){this.maxEntries=Gc(e.maxEntries,Am,"maxEntries"),this.maxBytes=Gc(e.maxBytes,Im,"maxBytes"),this.getByteLength=e.getByteLength||(()=>0),this.onRemove=e.onRemove}get size(){return this.entries.size}get pendingSize(){let e=0;for(let r of this.entries.values())e+=r.pending?1:0;return e}get byteLength(){return this.retainedByteLength}get(e,r){let n=this.entries.get(e);if(n)return this.touch(e,n),this.waitForEntry(e,n,r)}has(e){return this.entries.has(e)}set(e,r){this.removeEntry(e,"replace");let n=qc(this.getByteLength(r)),i={promise:Promise.resolve(r),pending:!1,waiterCount:0,byteLength:n};return this.entries.set(e,i),this.retainedByteLength+=n,this.trim(),r}getOrLoad(e,r,n){let i=this.get(e,n);if(i)return i;if(n?.aborted)return Promise.reject(go());let o=new AbortController,s,a,l={promise:new Promise((h,u)=>{s=h,a=u}),controller:o,pending:!0,waiterCount:0,byteLength:0};this.entries.set(e,l),l.promise.then(h=>this.handleLoadedValue(e,l,h),()=>this.handleLoadError(e,l));try{Promise.resolve(r(o.signal)).then(s,a)}catch(h){a(h)}return this.waitForEntry(e,l,n)}delete(e){return this.removeEntry(e,"delete")}clear(){for(let e of Array.from(this.entries.keys()))this.removeEntry(e,"clear")}handleLoadedValue(e,r,n){if(this.entries.get(e)===r){r.pending=!1,r.controller=void 0;try{r.byteLength=qc(this.getByteLength(n))}catch{this.removeEntry(e,"error");return}this.retainedByteLength+=r.byteLength,this.trim()}}handleLoadError(e,r){this.entries.get(e)===r&&this.removeEntry(e,r.controller?.signal.aborted?"abort":"error")}waitForEntry(e,r,n){return n?.aborted?Promise.reject(go()):r.pending?(r.waiterCount++,new Promise((i,o)=>{let s=!0,a=()=>{s&&(s=!1,n?.removeEventListener("abort",c),r.waiterCount--)},c=()=>{s&&(a(),o(go()),r.pending&&r.waiterCount===0&&this.entries.get(e)===r&&this.removeEntry(e,"abort"))};n?.addEventListener("abort",c,{once:!0}),r.promise.then(l=>{s&&(a(),i(l))},l=>{s&&(a(),o(l))})})):r.promise}touch(e,r){this.entries.delete(e),this.entries.set(e,r)}trim(){let e=this.entries.size-this.pendingSize;if(!(e<=this.maxEntries&&this.retainedByteLength<=this.maxBytes)){for(let[r,n]of this.entries)if(n.pending||(this.removeEntry(r,"evict"),e--),e<=this.maxEntries&&this.retainedByteLength<=this.maxBytes)break}}removeEntry(e,r){let n=this.entries.get(e);return n?(this.entries.delete(e),this.retainedByteLength-=n.byteLength,n.pending&&n.controller?.abort(),this.onRemove?.(e,r),!0):!1}};function go(){let t=new Error("Request aborted");return t.name="AbortError",t}function Gc(t,e,r){let n=t??e;if(n<0||Number.isNaN(n))throw new Error(`${r} must be a non-negative number`);return n}function qc(t){if(!Number.isFinite(t)||t<0)throw new Error("Request cache entry byte length must be a non-negative finite number");return t}var H={logicalRanges:"Logical Range Requests",rangeBatches:"Range Request Batches",transportRanges:"Transport Ranges Created",completedTransportRanges:"Range Transport Requests Completed",coalescedRanges:"Coalesced Logical Ranges",requestedBytes:"Logical Range Request Bytes",transportBytes:"Range Transport Bytes Requested",responseBytes:"Range Response Bytes",networkTimeMs:"Range Network Time",overfetchBytes:"Range Overfetch Bytes",failedTransportRanges:"Range Transport Requests Failed",abortedLogicalRanges:"Aborted Logical Range Requests",fullResponseFallbacks:"Full Response Fallbacks"},_o={batchDelayMs:50,maxGapBytes:65536,rangeExpansionBytes:65536,maxMergedBytes:8388608,stats:Dc("range-request-scheduler-default"),onEvent:()=>{}},Rn=class{props;stats;onEvent;pendingRequests=[];flushTimer=null;constructor(e={}){let r=e.rangeExpansionBytes??e.maxGapBytes??_o.rangeExpansionBytes;this.props={batchDelayMs:e.batchDelayMs??_o.batchDelayMs,maxGapBytes:e.maxGapBytes??r,rangeExpansionBytes:r,maxMergedBytes:e.maxMergedBytes??_o.maxMergedBytes},this.stats=e.stats||Dc("range-request-scheduler"),this.onEvent=e.onEvent,kc(this.stats)}scheduleRequest(e){if(e.length<0)return Promise.reject(new Error("Byte range length cannot be negative"));if(e.signal?.aborted)return Promise.reject(Bc());if(e.length===0)return Promise.resolve(new ArrayBuffer(0));let r=new Promise((n,i)=>{let o={...e,resolve:n,reject:i,settled:!1};e.signal&&(o.abortListener=()=>{this.abortRequest(o),o.onAbort?.()},e.signal.addEventListener("abort",o.abortListener,{once:!0})),this.pendingRequests.push(o)});return this.trackEvent({type:"queued",sourceId:e.sourceId,offset:e.offset,length:e.length,logicalRequestCount:1,logicalBytes:e.length}),this.scheduleFlush(),r}fetch(e){let r=e.fetch||globalThis.fetch;return this.scheduleRequest({sourceId:e.sourceId||e.url,offset:e.offset,length:e.length,signal:e.signal,isolationKey:e.isolationKey??{},fetchRange:(n,i,o)=>Nm({url:e.url,offset:n,length:i,signal:o,fetch:r,fetchOptions:e.fetchOptions})})}flush(){this.flushTimer!==null&&(clearTimeout(this.flushTimer),this.flushTimer=null);let e=this.pendingRequests;this.pendingRequests=[];let r=e.filter(i=>i.settled||i.signal?.aborted?(this.abortRequest(i),!1):!0),n=this.mergeRequests(r);r.length>0&&this.trackBatch(r,n);for(let i of n)this.fetchMergedRequest(i)}scheduleFlush(){this.flushTimer===null&&(this.flushTimer=setTimeout(()=>this.flush(),this.props.batchDelayMs))}mergeRequests(e){e.sort((n,i)=>n.sourceId!==i.sourceId?n.sourceId<i.sourceId?-1:1:n.offset-i.offset);let r=[];for(let n of e){let i=n.offset+n.length,o=r[r.length-1];o&&Lm(o,n,this.props)?(o.endOffset=Math.max(o.endOffset,i),o.requests.push(n)):r.push({sourceId:n.sourceId,isolationKey:n.isolationKey??n.sourceId,offset:n.offset,endOffset:i,fetchRange:n.fetchRange,requests:[n]})}return r}async fetchMergedRequest(e){let{offset:r,endOffset:n,fetchRange:i,requests:o}=e,s=new AbortController,a=dr(),c=()=>{o.every(l=>l.signal?.aborted)&&s.abort()};try{for(let p of o)p.onAbort=c;if(c(),o.every(p=>p.settled))return;let l=Mo(o),h=n-r;this.trackEvent({type:"request",sourceId:e.sourceId,offset:r,length:h,logicalRequestCount:o.length,logicalBytes:l,transportBytes:h,overfetchBytes:Math.max(h-l,0)});let u=Gm(await i(r,h,s.signal)),{arrayBuffer:f}=u,d=u.fullResponse&&r===0&&f.byteLength<h,m=f.byteLength<h&&Number.isSafeInteger(u.sourceByteLength)&&r+f.byteLength===u.sourceByteLength;if(f.byteLength!==h&&!d&&!m)throw new Error(`Byte-range transport returned ${f.byteLength} bytes; expected ${h}`);let _=u.networkTimeMs??dr()-a;this.trackEvent({type:"response",sourceId:e.sourceId,offset:r,length:h,logicalRequestCount:o.length,logicalBytes:l,transportBytes:h,responseBytes:u.transportBytes??f.byteLength,networkTimeMs:_,overfetchBytes:Math.max(h-l,0),status:u.status,fullResponse:u.fullResponse});for(let p of o){if(p.settled)continue;let M=p.offset-r;p.settled=!0,p.resolve(f.slice(M,M+p.length))}}catch(l){this.trackEvent({type:"error",sourceId:e.sourceId,offset:r,length:n-r,logicalRequestCount:o.length,logicalBytes:Mo(o),networkTimeMs:dr()-a,error:l});for(let h of o)h.settled||(h.signal?.aborted?this.abortRequest(h):(h.settled=!0,h.reject(l)))}finally{for(let l of o)l.abortListener&&l.signal?.removeEventListener("abort",l.abortListener),l.onAbort=void 0}}abortRequest(e){e.settled||(e.settled=!0,e.reject(Bc()),this.trackEvent({type:"abort",sourceId:e.sourceId,offset:e.offset,length:e.length,logicalRequestCount:1,logicalBytes:e.length}))}trackEvent(e){Om(this.stats,e);try{this.onEvent?.(e)}catch{}}trackBatch(e,r){let n=Mo(e),i=r.reduce((o,s)=>o+s.endOffset-s.offset,0);this.trackEvent({type:"batch",logicalRequestCount:e.length,transportRequestCount:r.length,logicalBytes:n,transportBytes:i,overfetchBytes:Math.max(i-n,0)})}};function Om(t,e){switch((e.type==="response"||e.type==="error")&&e.networkTimeMs!==void 0&&t.get(H.networkTimeMs,"time").addTime(e.networkTimeMs),e.type){case"queued":t.get(H.logicalRanges,"count").incrementCount(),t.get(H.requestedBytes,"count").addCount(e.logicalBytes||0);break;case"batch":t.get(H.rangeBatches,"count").incrementCount(),t.get("Logical Ranges Batched","count").addCount(e.logicalRequestCount||0),t.get(H.transportRanges,"count").addCount(e.transportRequestCount||0),t.get(H.coalescedRanges,"count").addCount(Math.max((e.logicalRequestCount||0)-(e.transportRequestCount||0),0)),t.get(H.transportBytes,"count").addCount(e.transportBytes||0),t.get(H.overfetchBytes,"count").addCount(e.overfetchBytes||0);break;case"response":t.get(H.completedTransportRanges,"count").incrementCount(),t.get(H.responseBytes,"count").addCount(e.responseBytes||0),e.fullResponse&&t.get(H.fullResponseFallbacks,"count").incrementCount();break;case"error":t.get(H.failedTransportRanges,"count").incrementCount();break;case"abort":t.get(H.abortedLogicalRanges,"count").incrementCount();break;default:}}function Dc(t="range-request-scheduler"){let e=new Le({id:t});return kc(e),e}async function Nm(t){let e=Dm(t.signal),r=dr();try{let n=!1,i=await t.fetch(t.url,zc(t.fetchOptions,t.offset,t.length,e.signal));if(i.status===416&&t.offset===0){let c=zm(i.headers.get("Content-Range"));if(!c)throw new Error("Missing content-length on 416 response");i=await t.fetch(t.url,zc(t.fetchOptions,0,c,e.signal)),n=!0}if(i.status===200)throw e.abort(),await km(i),new Error("Byte-range request failed: server returned 200 instead of 206");if(i.status!==206&&!i.ok)throw new Error(`Bad response code: ${i.status}`);let o=await i.arrayBuffer(),s=i.headers.get("Content-Range"),a=Bm(s);if(s&&!a)throw new Error(`Invalid Content-Range header: ${s}`);if(a){let c=a.endOffset-a.offset+1,l=t.offset+t.length-1;if(a.offset!==t.offset||a.endOffset>l||c!==o.byteLength||a.sourceByteLength!==void 0&&a.endOffset>=a.sourceByteLength)throw new Error(`Content-Range does not match requested range: ${s}`)}return{arrayBuffer:o,status:i.status,sourceByteLength:a?.sourceByteLength,transportBytes:o.byteLength,networkTimeMs:dr()-r,fullResponse:n}}finally{e.removeAbortListener()}}function Lm(t,e,r){if(t.sourceId!==e.sourceId||t.isolationKey!==(e.isolationKey??e.sourceId))return!1;let n=e.offset+e.length,i=e.offset-t.endOffset,o=Math.max(t.endOffset,n)-t.offset;return i<=r.rangeExpansionBytes&&o<=r.maxMergedBytes}function kc(t){t.get(H.logicalRanges,"count"),t.get(H.requestedBytes,"count"),t.get(H.rangeBatches,"count"),t.get("Logical Ranges Batched","count"),t.get(H.transportRanges,"count"),t.get(H.coalescedRanges,"count"),t.get(H.transportBytes,"count"),t.get(H.completedTransportRanges,"count"),t.get(H.responseBytes,"count"),t.get(H.networkTimeMs,"time"),t.get(H.overfetchBytes,"count"),t.get(H.fullResponseFallbacks,"count"),t.get(H.failedTransportRanges,"count"),t.get(H.abortedLogicalRanges,"count")}function Mo(t){return t.reduce((e,r)=>e+r.length,0)}function Gm(t){return t instanceof ArrayBuffer?{arrayBuffer:t}:t}function zc(t,e,r,n){return{...t,signal:n,headers:{...qm(t?.headers),Range:`bytes=${e}-${e+r-1}`}}}function qm(t){return t?t instanceof Headers?Object.fromEntries(t.entries()):Array.isArray(t)?Object.fromEntries(t):t:{}}function zm(t){let e=t?.match(/^bytes \*\/(\d+)$/);return e?Number(e[1]):null}function Bm(t){let e=t?.match(/^bytes (\d+)-(\d+)\/(\d+|\*)$/);if(!e)return null;let r=Number(e[1]),n=Number(e[2]),i=e[3]==="*"?void 0:Number(e[3]);return!Number.isSafeInteger(r)||!Number.isSafeInteger(n)||r>n||i!==void 0&&!Number.isSafeInteger(i)?null:{offset:r,endOffset:n,sourceByteLength:i}}function Dm(t){let e=new AbortController,r=()=>e.abort();return t?.aborted?e.abort():t?.addEventListener("abort",r,{once:!0}),{signal:e.signal,abort:()=>e.abort(),removeAbortListener:()=>t?.removeEventListener("abort",r)}}async function km(t){await t.body?.cancel().catch(()=>{})}function dr(){return globalThis.performance?.now()??Date.now()}function Bc(){if(typeof DOMException<"u")return new DOMException("Request aborted","AbortError");let t=new Error("Request aborted");return t.name="AbortError",t}var be={};$i(be,{dirname:()=>Um,filename:()=>Fm,join:()=>Vm,resolve:()=>jm});function Fc(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let t=window.location?.pathname;return t?.slice(0,t.lastIndexOf("/")+1)||""}function Fm(t){let e=t?t.lastIndexOf("/"):-1;return e>=0?t.substr(e+1):t}function Um(t){let e=t?t.lastIndexOf("/"):-1;return e>=0?t.substr(0,e):""}function Vm(...t){return t=t.map((r,n)=>(n&&(r=r.replace(new RegExp("^/"),"")),n!==t.length-1&&(r=r.replace(new RegExp("/$"),"")),r)),t.join("/")}function jm(...t){let e=[];for(let o=0;o<t.length;o++)e[o]=t[o];let r="",n=!1,i;for(let o=e.length-1;o>=-1&&!n;o--){let s;o>=0?s=e[o]:(i===void 0&&(i=Fc()),s=i),s.length!==0&&(r=`${s}/${r}`,n=s.charCodeAt(0)===mr)}return r=Wm(r,!n),n?`/${r}`:r.length>0?r:"."}var mr=47,yo=46;function Wm(t,e){let r="",n=-1,i=0,o,s=!1;for(let a=0;a<=t.length;++a){if(a<t.length)o=t.charCodeAt(a);else{if(o===mr)break;o=mr}if(o===mr){if(!(n===a-1||i===1))if(n!==a-1&&i===2){if(r.length<2||!s||r.charCodeAt(r.length-1)!==yo||r.charCodeAt(r.length-2)!==yo){if(r.length>2){let c=r.length-1,l=c;for(;l>=0&&r.charCodeAt(l)!==mr;--l);if(l!==c){r=l===-1?"":r.slice(0,l),n=a,i=0,s=!1;continue}}else if(r.length===2||r.length===1){r="",n=a,i=0,s=!1;continue}}e&&(r.length>0?r+="/..":r="..",s=!0)}else{let c=t.slice(n+1,a);r.length>0?r+=`/${c}`:r=c,s=!1}n=a,i=0}else o===yo&&i!==-1?++i:i=-1}return r}var zt=class{handle;size;bigsize;url;constructor(e){this.handle=e instanceof ArrayBuffer?new Blob([e]):e,this.size=e instanceof ArrayBuffer?e.byteLength:e.size,this.bigsize=BigInt(this.size),this.url=e instanceof File?e.name:""}async close(){}async stat(){return{size:this.handle.size,bigsize:BigInt(this.handle.size),isDirectory:!1}}async read(e,r,n){if(n?.aborted)throw new Error("Request aborted");let i=await this.handle.slice(Number(e),Number(e)+Number(r)).arrayBuffer();if(n?.aborted)throw new Error("Request aborted");return i}};var In=class{url;fetchFunction;fetchOptions;consistency;identityHints;countedFailures=new WeakSet;telemetry={requestedBytes:0,downloadedBytes:0,requestCount:0,networkTimeMs:0,abortCount:0,errorCount:0};constructor(e,r){Zm(r.byteLength),this.url=e,this.fetchFunction=r.fetch||((n,i)=>globalThis.fetch(n,i)),this.fetchOptions=r.fetchOptions?{...r.fetchOptions,headers:new Headers(r.fetchOptions.headers)}:void 0,this.consistency=r.consistency||"best-effort",this.identityHints={byteLength:r.byteLength,etag:Nn(r.etag),lastModified:Nn(r.lastModified)}}getInitialIdentity(){let{byteLength:e,etag:r,lastModified:n}=this.identityHints;return e!==void 0&&(r!==void 0||n!==void 0)?On(e,r,n):e===0&&this.consistency==="best-effort"?On(0):null}getTelemetry(){return Object.freeze({...this.telemetry})}trackFailure(e){if(typeof e=="object"&&e!==null){if(this.countedFailures.has(e))return;this.countedFailures.add(e)}Wc(e)?this.telemetry.abortCount++:this.telemetry.errorCount++}async requestRange(e,r,n,i){let o=Cn(),s=Qm(n,this.fetchOptions?.signal);this.telemetry.requestCount++,this.telemetry.requestedBytes+=r;try{let a=await this.fetchFunction(this.url,Hm(this.fetchOptions,e,r,s.signal));if($m(a,e,r,i))return await this.readEmptyIdentityProbe(a,o);if(a.status!==206)throw await An(a),new Error(`HTTP byte-range request expected 206, received ${a.status}`);let c=await Ym(a),l=Uc(a,c.byteLength),h=jc(i,l,this.identityHints,this.consistency)||Xm(c,e,r);if(h)throw await An(a),new Error(h);let u=await a.arrayBuffer();if(this.telemetry.downloadedBytes+=u.byteLength,u.byteLength!==r)throw new Error(`HTTP byte-range response contained ${u.byteLength} bytes; expected ${r}`);return{arrayBuffer:u,identity:Vc(i,l,this.identityHints),status:a.status,transportBytes:u.byteLength,networkTimeMs:Cn()-o}}catch(a){throw(i===null||!Wc(a))&&this.trackFailure(a),a}finally{s.removeAbortListeners(),this.telemetry.networkTimeMs+=Cn()-o}}async readEmptyIdentityProbe(e,r){let n=Uc(e,0),i=jc(null,n,this.identityHints,this.consistency);if(await An(e),i)throw new Error(i);return{arrayBuffer:new ArrayBuffer(0),identity:Vc(null,n,this.identityHints),status:e.status,transportBytes:0,networkTimeMs:Cn()-r}}};function Hm(t,e,r,n){let i=new Headers(t?.headers);return i.set("Range",`bytes=${e}-${e+r-1}`),{...t,method:"GET",body:void 0,headers:i,signal:n}}function $m(t,e,r,n){return t.status===416&&n===null&&e===0&&r===1&&/^bytes \*\/0$/i.test(t.headers.get("Content-Range")||"")}async function Ym(t){try{return Km(t.headers.get("Content-Range"))}catch(e){throw await An(t),e}}function Km(t){let e=t?.match(/^bytes (\d+)-(\d+)\/(\d+)$/);if(!e)throw new Error("HTTP byte-range response has an invalid Content-Range header");return{offset:Number(e[1]),endOffset:Number(e[2]),byteLength:Number(e[3])}}function Uc(t,e){return On(e,Nn(t.headers.get("ETag")),Nn(t.headers.get("Last-Modified")))}function Vc(t,e,r){return t||On(e.byteLength,e.etag??r.etag,e.lastModified??r.lastModified)}function Xm(t,e,r){return!Number.isSafeInteger(t.offset)||!Number.isSafeInteger(t.endOffset)||!Number.isSafeInteger(t.byteLength)||t.offset<0||t.endOffset<t.offset||t.endOffset>=t.byteLength?"HTTP byte-range response has invalid range bounds":t.offset!==e||t.endOffset!==e+r-1?"HTTP byte-range response does not match the requested range":null}function jc(t,e,r,n){let i=t?.byteLength??r.byteLength;if(i!==void 0&&e.byteLength!==i)return"HTTP file length changed while the file was open";let o=t?.etag??r.etag,s=t?.lastModified??r.lastModified;return o?e.etag?o===e.etag?null:"HTTP file ETag changed while the file was open":n==="strict"?"HTTP byte-range response is missing the pinned ETag":s&&e.lastModified&&s!==e.lastModified?"HTTP file Last-Modified value changed while the file was open":null:s?e.lastModified&&s!==e.lastModified?"HTTP file Last-Modified value changed while the file was open":n==="strict"&&!e.lastModified?"HTTP byte-range response is missing the pinned Last-Modified value":null:n==="strict"&&!e.etag&&!e.lastModified?"HTTP byte-range response does not provide an ETag or Last-Modified validator":null}function On(t,e,r){return Object.freeze({byteLength:t,etag:e,lastModified:r})}function Zm(t){if(t!==void 0&&(!Number.isSafeInteger(t)||t<0))throw new Error("HttpFile byteLength must be a non-negative safe integer")}async function An(t){await t.body?.cancel().catch(()=>{})}function Nn(t){return t||void 0}function Cn(){return globalThis.performance?.now()??Date.now()}function Wc(t){return t instanceof Error&&t.name==="AbortError"||t instanceof Error&&/aborted/i.test(t.message)}function Qm(...t){let e=new AbortController,r=[...new Set(t.filter(i=>!!i))],n=()=>e.abort();for(let i of r)i.aborted?e.abort():i.addEventListener("abort",n,{once:!0});return{signal:e.signal,removeAbortListeners:()=>{for(let i of r)i.removeEventListener("abort",n)}}}var pr=class t{handle;url;transport;rangeScheduler;schedulerIsolationKey={};suppliedByteLength;identity;openPromise=null;closed=!1;constructor(e,r={}){this.handle=e,this.url=e,this.transport=new In(e,r),this.rangeScheduler=r.rangeScheduler||new Rn({batchDelayMs:0,...r.rangeSchedulerProps}),this.suppliedByteLength=r.byteLength,this.identity=this.transport.getInitialIdentity()}static async open(e,r={},n){let i=new t(e,r);return await i.open(n),i}async open(e){if(this.assertOpen(),e?.aborted){let r=Ln();throw this.transport.trackFailure(r),r}return await this.getIdentity(e),this}get size(){return this.identity?.byteLength??this.suppliedByteLength??0}get bigsize(){return BigInt(this.size)}getIdentitySnapshot(){return this.identity}getTelemetry(){return this.transport.getTelemetry()}async close(){this.closed=!0}async stat(){this.assertOpen();let e=await this.getIdentity();return{size:e.byteLength,bigsize:BigInt(e.byteLength),isDirectory:!1}}async read(e=0,r=0,n){if(this.assertOpen(),n?.aborted){let s=Ln();throw this.transport.trackFailure(s),s}let i=await this.getIdentity(n),o=Hc(e);if(ep(o,r,i.byteLength),r===0)return new ArrayBuffer(0);try{return await this.rangeScheduler.scheduleRequest({sourceId:this.url,isolationKey:this.schedulerIsolationKey,offset:o,length:r,signal:n,fetchRange:this.fetchScheduledRange})}catch(s){throw this.transport.trackFailure(s),s}}async fetchRange(e,r,n){let i=Hc(e),o=await this.read(i,r,n),s=Jm(this.identity,i,r);return new Response(o,{status:206,headers:s})}fetchScheduledRange=async(e,r,n)=>{let i=await this.getIdentity(n),o=await this.transport.requestRange(e,r,n,i);return{arrayBuffer:o.arrayBuffer,status:o.status,transportBytes:o.transportBytes,networkTimeMs:o.networkTimeMs}};getIdentity(e){if(this.identity)return Promise.resolve(this.identity);if(!this.openPromise){let n=this.probeIdentity().catch(i=>{throw this.openPromise===n&&(this.openPromise=null),i});this.openPromise=n}return tp(this.openPromise,e).catch(r=>{throw this.transport.trackFailure(r),r})}async probeIdentity(){try{let e=await this.transport.requestRange(0,1,void 0,null);return this.identity=e.identity,e.identity}catch(e){throw this.transport.trackFailure(e),e}}assertOpen(){if(this.closed)throw new Error("HttpFile is closed")}};function Jm(t,e,r){let n=new Headers;return r>0&&t&&n.set("Content-Range",`bytes ${e}-${e+r-1}/${t.byteLength}`),t?.etag&&n.set("ETag",t.etag),t?.lastModified&&n.set("Last-Modified",t.lastModified),n}function Hc(t){let e=Number(t);if(!Number.isSafeInteger(e)||e<0)throw new Error("HTTP byte-range offset must be a non-negative safe integer");return e}function ep(t,e,r){if(!Number.isSafeInteger(e)||e<0)throw new Error("HTTP byte-range length must be a non-negative safe integer");if(t+e>r)throw new Error("HTTP byte range extends beyond the end of the file")}function Ln(){if(typeof DOMException<"u")return new DOMException("Request aborted","AbortError");let t=new Error("Request aborted");return t.name="AbortError",t}function tp(t,e){return e?e.aborted?Promise.reject(Ln()):new Promise((r,n)=>{let i=()=>{e.removeEventListener("abort",i),n(Ln())};e.addEventListener("abort",i,{once:!0}),t.then(o=>{e.removeEventListener("abort",i),r(o)},o=>{e.removeEventListener("abort",i),n(o)})}):t}function Gn(t={}){if(t.coordinateEpoch!==void 0&&!Number.isFinite(t.coordinateEpoch))throw new Error("Spatial reference coordinate epoch must be a finite decimal year");return Object.freeze({crs:$c(t.crs||{state:"absent",provenance:"unknown"}),vertical:t.vertical?$c(t.vertical):void 0,coordinateEpoch:t.coordinateEpoch,coordinateFrame:t.coordinateFrame||"unknown",coordinateOrder:Object.freeze([...t.coordinateOrder||[]]),units:t.units?Object.freeze([...t.units]):void 0})}function Me(t){if(typeof t=="object")return"projjson";let e=t.trim();return/^[A-Z][A-Z0-9_]*\s*[\[(]/i.test(e)?"wkt":/(?:^|\s)\+?proj=/i.test(e)?"proj-string":/^[A-Z][A-Z0-9._-]*(?::[A-Z0-9._-]+)+$/i.test(e)||/^urn:ogc:def:crs:/i.test(e)||/^https?:\/\//i.test(e)||/^[A-Z][A-Z0-9._-]*$/i.test(e)?"identifier":"opaque"}function $c(t){return t.state==="explicit"||t.state==="default"?Object.freeze({...t,definition:Yc(t.definition),alternatives:t.alternatives?Object.freeze(t.alternatives.map(e=>Object.freeze({...e,definition:Yc(e.definition)}))):void 0}):Object.freeze({...t})}function Yc(t){return typeof t=="string"?t:xo(t)}function xo(t){return Array.isArray(t)?Object.freeze(t.map(e=>xo(e))):t&&typeof t=="object"?Object.freeze(Object.fromEntries(Object.entries(t).map(([e,r])=>[e,xo(r)]))):t}var qn=class extends SyntaxError{constructor(e,r,n){let i=mp(r,n);super(`${e} at ${i.line}:${i.column}`),this.name="WKTCRSSyntaxError",this.offset=n,this.line=i.line,this.column=i.column}},zn=class extends Error{constructor(e){super(e[0]?.message||"WKT validation failed"),this.name="WKTCRSValidationError",this.issues=e}},rp=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[Ee][+-]?\d+)?$/,np=/^[A-Za-z][A-Za-z0-9_]*/,gr=new Set(["COMPD_CS","CONCAT_MT","FITTED_CS","GEOCCS","GEOGCS","INVERSE_MT","LOCAL_CS","PARAM_MT","PASSTHROUGH_MT","PROJCS","VERT_CS"]),wo=new Set([...gr,"AUTHORITY","AXIS","CONCAT_MT","DATUM","INVERSE_MT","LOCAL_DATUM","PARAMETER","PARAM_MT","PASSTHROUGH_MT","PRIMEM","PROJECTION","SPHEROID","TOWGS84","UNIT","VERT_DATUM"]),ip=new Set(gr),op=new Set([...wo,"EXTENSION"]),sp=new Set([...gr,"COMPDCS","LOCALCS","VERTCS"]),ap=new Set([...wo,"COMPDCS","LOCALCS","VDATUM","VERTCS"]),Kc=new Set(["BOUNDCRS","COMPOUNDCRS","COORDINATEOPERATION","ENGCRS","ENGINEERINGCRS","GEODCRS","GEODETICCRS","PARAMETRICCRS","PROJCRS","PROJECTEDCRS","TIMECRS","VERTCRS","VERTICALCRS"]),Xc=new Set([...Kc,"CONCATENATEDOPERATION","COORDINATEMETADATA","DERIVEDPROJCRS","GEOGCRS","GEOGRAPHICCRS","POINTMOTIONOPERATION"]),Zc=new Set([...Xc,"ABRIDGEDTRANSFORMATION","ANCHOR","ANGLEUNIT","AREA","AXIS","BASEENGCRS","BASEGEODCRS","BASEGEOGCRS","BASEPARAMCRS","BASEPROJCRS","BASETIMECRS","BASEVERTCRS","BBOX","BEARING","CALENDAR","CITATION","CONVERSION","COORDEPOCH","CS","DATUM","DERIVINGCONVERSION","DYNAMIC","EDATUM","ELLIPSOID","ENGINEERINGDATUM","ENSEMBLE","ENSEMBLEACCURACY","EPOCH","FRAMEEPOCH","GEODETICDATUM","GEOIDMODEL","ID","INTERPOLATIONCRS","LENGTHUNIT","MEMBER","MERIDIAN","METHOD","MODEL","OPERATIONACCURACY","ORDER","PARAMETER","PARAMETERFILE","PARAMETRICDATUM","PARAMETRICUNIT","PDATUM","PRIMEM","PRIMEMERIDIAN","REMARK","SCALEUNIT","SCOPE","SOURCECRS","STEP","TARGETCRS","TDATUM","TEMPORALQUANTITY","TIMEEXTENT","TIMEORIGIN","TIMEUNIT","TIMEDATUM","TRIAXIAL","TRF","URI","USAGE","VDATUM","VERSION","VERTICALDATUM","VERTICALEXTENT","VELOCITYGRID","VRF"]),cp=new Set(["BASEGEOGCRS","CALENDAR","CONCATENATEDOPERATION","COORDEPOCH","COORDINATEMETADATA","DERIVEDPROJCRS","DYNAMIC","ENSEMBLE","ENSEMBLEACCURACY","EPOCH","FRAMEEPOCH","GEOGCRS","GEOGRAPHICCRS","GEOIDMODEL","MEMBER","MODEL","POINTMOTIONOPERATION","STEP","TEMPORALQUANTITY","TRF","TRIAXIAL","VELOCITYGRID","VRF"]),lp=new Set([...Zc].filter(t=>!cp.has(t))),hp={wkt1:gr,gdal:ip,esri:sp,"wkt2:2015":Kc,"wkt2:2019":Xc},up={wkt1:wo,gdal:op,esri:ap,"wkt2:2015":lp,"wkt2:2019":Zc};function _r(t,e){let n={type:"wkt-crs",root:new So(t).parse()};if(e?.strict){let i=Qc(n,{profile:e.profile,allowExtensions:!1});if(i.length>0)throw new zn(i)}return n}function Qc(t,e){if(!t||t.type!=="wkt-crs"||t.root?.type!=="node")throw new TypeError("validateWKTCRS expects a WKTCRSAst");let r=fp(t.root.keyword,e?.profile||"auto"),n=hp[r],i=up[r],o=[],s=t.root.keyword.toUpperCase();return n.has(s)||o.push({code:"invalid-root",message:`${t.root.keyword} is not a ${r} root keyword`,path:[],keyword:t.root.keyword}),Jc(t.root,[],a=>{let c=a.node.keyword.toUpperCase();!e?.allowExtensions&&!i.has(c)&&o.push({code:"unknown-keyword",message:`${a.node.keyword} is not defined by the ${r} profile`,path:a.path,keyword:a.node.keyword}),a.node.values.length===0&&o.push({code:"empty-node",message:`${a.node.keyword} must contain at least one value`,path:a.path,keyword:a.node.keyword});let l=dp(a.node);l&&o.push({code:"invalid-value",message:l,path:a.path,keyword:a.node.keyword})}),o}var So=class{constructor(e){this.offset=0,this.source=e}parse(){this.skipWhitespace();let e=this.parseNode();return this.skipWhitespace(),this.offset!==this.source.length&&this.fail("Unexpected content after WKT root"),e}parseNode(){let e=this.parseKeyword();return this.parseNodeAfterKeyword(e)}parseNodeAfterKeyword(e){this.skipWhitespace();let r=this.source[this.offset];r!=="["&&r!=="("&&this.fail(`Expected '[' or '(' after ${e}`),this.offset++;let n=r==="["?"bracket":"parenthesis",i=r==="["?"]":")",o=[];if(this.skipWhitespace(),this.source[this.offset]===i)return this.offset++,{type:"node",keyword:e,delimiter:n,values:o};for(;this.offset<this.source.length;){o.push(this.parseValue()),this.skipWhitespace();let s=this.source[this.offset];if(s===","){this.offset++,this.skipWhitespace(),this.source[this.offset]===i&&this.fail("Expected a WKT value after comma");continue}if(s===i)return this.offset++,{type:"node",keyword:e,delimiter:n,values:o};(s==="]"||s===")")&&this.fail(`Expected '${i}' to close ${e}`),this.fail(`Expected ',' or '${i}' in ${e}`)}this.fail(`Unterminated ${e} node`)}parseValue(){if(this.skipWhitespace(),this.source[this.offset]==='"')return this.parseString();let r=this.offset;for(;this.offset<this.source.length&&!/[\s,\[\]()"]/.test(this.source[this.offset]);)this.offset++;r===this.offset&&this.fail("Expected a WKT value");let n=this.source.slice(r,this.offset);return this.source[this.offset]==='"'&&this.fail("Unexpected quote in unquoted WKT value"),this.skipWhitespace(),this.source[this.offset]==="["||this.source[this.offset]==="("?(/^[A-Za-z][A-Za-z0-9_]*$/.test(n)||this.fail(`Invalid WKT keyword '${n}'`),this.parseNodeAfterKeyword(n)):rp.test(n)?{type:"number",value:Number(n),raw:n}:{type:"enumeration",value:n}}parseKeyword(){let e=this.source.slice(this.offset).match(np);return e||this.fail("Expected a WKT keyword"),this.offset+=e[0].length,e[0]}parseString(){this.offset++;let e="";for(;this.offset<this.source.length;){let r=this.source[this.offset++];if(r==='"'){if(this.source[this.offset]==='"'){e+='"',this.offset++;continue}return{type:"string",value:e}}e+=r}this.fail("Unterminated WKT string")}skipWhitespace(){for(;this.offset<this.source.length&&/\s/.test(this.source[this.offset]);)this.offset++}fail(e){throw new qn(e,this.source,this.offset)}};function fp(t,e){return e!=="auto"?e:gr.has(t.toUpperCase())?"wkt1":"wkt2:2019"}function dp(t){let e=t.keyword.toUpperCase(),r=t.values,n=(o,...s)=>!!(r[o]&&s.includes(r[o].type)),i=(o,...s)=>r.length===o&&s.every((a,c)=>n(c,a));if(["ANGLEUNIT","LENGTHUNIT","PARAMETRICUNIT","SCALEUNIT","TIMEUNIT","TEMPORALQUANTITY","UNIT"].includes(e)&&!(r.length>=2&&n(0,"string")&&n(1,"number")))return`${t.keyword} must start with a quoted name and numeric conversion factor`;if(e==="CS"&&!i(2,"enumeration","number"))return`${t.keyword} must contain a coordinate-system type and dimension`;if(e==="BBOX"&&!i(4,"number","number","number","number"))return`${t.keyword} must contain four numeric bounds`;if(["ENSEMBLEACCURACY","EPOCH","COORDEPOCH","FRAMEEPOCH","OPERATIONACCURACY","ORDER"].includes(e)&&!i(1,"number"))return`${t.keyword} must contain one number`;if(["ANCHOR","AREA","CALENDAR","CITATION","REMARK","SCOPE","URI","VERSION"].includes(e)&&!i(1,"string"))return`${t.keyword} must contain one quoted string`;if(["ELLIPSOID","SPHEROID","TRIAXIAL"].includes(e)&&!(r.length>=3&&n(0,"string")&&n(1,"number")&&n(2,"number")))return`${t.keyword} must start with a quoted name and numeric ellipsoid axes`;if(["PARAMETER"].includes(e)&&!(r.length>=2&&n(0,"string")&&n(1,"number")))return`${t.keyword} must start with a quoted name and numeric value`;if(e==="PARAMETERFILE"&&!i(2,"string","string"))return`${t.keyword} must contain a quoted name and file name`;if(["AUTHORITY","ID"].includes(e)&&!(r.length>=2&&n(0,"string")&&n(1,"string","number")))return`${t.keyword} must start with a quoted authority and identifier`;if(["AXIS"].includes(e)&&!(r.length>=2&&n(0,"string")&&n(1,"enumeration")))return`${t.keyword} must start with a quoted name and axis direction`;if(["METHOD","PROJECTION"].includes(e)&&!(r.length>=1&&n(0,"string")))return`${t.keyword} must start with a quoted name`;if(e==="TIMEEXTENT"){let o=s=>n(s,"enumeration","string");if(r.length!==2||!o(0)||!o(1))return`${t.keyword} must contain two date-time or quoted values`}if(e==="VERTICALEXTENT"&&(r.length<2||r.length>3||!n(0,"number")||!n(1,"number")||r.length===3&&!n(2,"node")))return`${t.keyword} must contain two numeric bounds and an optional unit`;if(e==="COORDINATEMETADATA"&&(r.length<1||r.length>2||!n(0,"node")||r.length===2&&(!n(1,"node")||!["EPOCH","COORDEPOCH"].includes(r[1].keyword.toUpperCase()))))return`${t.keyword} must contain a CRS and an optional coordinate epoch`;if(e==="BOUNDCRS"){let o=r.slice(0,3).map(s=>s.type==="node"?s.keyword.toUpperCase():"");if(o[0]!=="SOURCECRS"||o[1]!=="TARGETCRS"||o[2]!=="ABRIDGEDTRANSFORMATION")return`${t.keyword} must start with SOURCECRS, TARGETCRS, and ABRIDGEDTRANSFORMATION`}return["COMPOUNDCRS","CONCATENATEDOPERATION","COORDINATEOPERATION","DERIVEDPROJCRS","ENGCRS","ENGINEERINGCRS","GEODCRS","GEODETICCRS","GEOGCRS","GEOGRAPHICCRS","PARAMETRICCRS","POINTMOTIONOPERATION","PROJCRS","PROJECTEDCRS","TIMECRS","VERTCRS","VERTICALCRS"].includes(e)&&!n(0,"string")?`${t.keyword} must start with a quoted name`:null}function Jc(t,e,r){r({node:t,path:e});for(let n=0;n<t.values.length;n++){let i=t.values[n];i.type==="node"&&Jc(i,[...e,n],r)}}function mp(t,e){let r=1,n=1;for(let i=0;i<e&&i<t.length;i++)t[i]===`
8
- `?(r++,n=1):n++;return{line:r,column:n}}var at=class extends SyntaxError{constructor(e,r,n){let i=yp(r,n);super(`${e} at ${i.line}:${i.column}`),this.name="PROJStringSyntaxError",this.offset=n,this.line=i.line,this.column=i.column}};function Mr(t){let e=_p(t);if(e.length===0)throw new at("PROJ string is empty",t,0);return{type:"proj-string",parameters:e.map(n=>gp(n.raw,n.offset,t))}}var pp=/^[+-]?\d+(?:\.\d*)?d(?:\d+(?:\.\d*)?'(?:\d+(?:\.\d*)?")?)?[NSEW]?$/i;function gp(t,e,r){let n=t.startsWith("+")?t.slice(1):t;if(!n)throw new at("Expected a parameter after '+'",r,e);let i=n.indexOf("="),o=i<0?n:n.slice(0,i);if(!o||/[\s+=]/.test(o))throw new at(`Invalid PROJ parameter name '${o}'`,r,e);if(i<0)return{type:"parameter",name:o};let s=n.slice(i+1),a=Mp(s,r,e+i+1);return{type:"parameter",name:o,value:a,rawValue:s}}function _p(t){let e=[],r=0;for(;r<t.length;){for(;r<t.length&&/\s/.test(t[r]);)r++;if(r>=t.length)break;let n=r,i=null,o=!1;for(;r<t.length;){let s=t[r];if(o){o=!1,r++;continue}if(s==="\\"&&i){o=!0,r++;continue}if(i){s===i&&(i=null),r++;continue}if((s==='"'||s==="'")&&t[r-1]==="="){i=s,r++;continue}if(/\s/.test(s))break;r++}if(i)throw new at("Unterminated quoted PROJ value",t,n);e.push({raw:t.slice(n,r),offset:n})}return e}function Mp(t,e,r){if(!t)return"";let n=t[0];if(n!=='"'&&n!=="'"){if((t.includes('"')||t.includes("'"))&&!pp.test(t))throw new at("Quote must begin a PROJ parameter value",e,r);return t}if(t[t.length-1]!==n)throw new at("Unterminated quoted PROJ value",e,r);let i="";for(let o=1;o<t.length-1;o++){let s=t[o];s==="\\"&&o+1<t.length-1?i+=t[++o]:i+=s}return i}function yp(t,e){let r=1,n=1;for(let i=0;i<e&&i<t.length;i++)t[i]===`
9
- `?(r++,n=1):n++;return{line:r,column:n}}var Bn=class{item;previous;next;constructor(e,r,n){this.item=e,this.previous=r,this.next=n}};var Dn=class{head=null;tail=null;_length=0;get length(){return this._length}add(e){let r=new Bn(e,this.tail,null);return this.tail?(this.tail.next=r,this.tail=r):(this.head=r,this.tail=r),++this._length,r}remove(e){e&&(e.previous&&e.next?(e.previous.next=e.next,e.next.previous=e.previous):e.previous?(e.previous.next=null,this.tail=e.previous):e.next?(e.next.previous=null,this.head=e.next):(this.head=null,this.tail=null),e.next=null,e.previous=null,--this._length)}splice(e,r){e!==r&&(this.remove(r),this._insert(e,r))}_insert(e,r){let n=e.next;e.next=r,this.tail===e?this.tail=r:n.previous=r,r.next=n,r.previous=e,++this._length}};var Bt=class{_list;_sentinel;_trimTiles;constructor(){this._list=new Dn,this._sentinel=this._list.add("sentinel"),this._trimTiles=!1}reset(){this._list.splice(this._list.tail,this._sentinel)}touch(e){let r=e._cacheNode;r&&this._list.splice(this._sentinel,r)}add(e,r,n){r._cacheNode||(r._cacheNode=this._list.add(r),n&&n(e,r))}unloadTile(e,r,n){let i=r._cacheNode;i&&(this._list.remove(i),r._cacheNode=null,n&&n(e,r))}unloadTiles(e,r){let n=this._trimTiles;this._trimTiles=!1;let i=this._list,o=this._sentinel,s=i.head;for(;s!==o&&(e.gpuMemoryUsageInBytes>e.cacheBytes||n);){let a=s.item;s=s.next,this.unloadTile(e,a,r)}}trim(){this._trimTiles=!0}};function kn(t,e){ke(t),ke(e);let{rtcCenter:r,gltfUpAxis:n}=e,{computedTransform:i,boundingVolume:{center:o}}=t,s=new G(i);switch(r&&s.translate(r),n){case"Z":break;case"Y":let f=new G().rotateX(Math.PI/2);s=s.multiplyRight(f);break;case"X":let d=new G().rotateY(-Math.PI/2);s=s.multiplyRight(d);break;default:break}e.isQuantized&&s.translate(e.quantizedVolumeOffset).scale(e.quantizedVolumeScale);let a=new g(o);e.cartesianModelMatrix=s,e.cartesianOrigin=a;let c=N.WGS84.cartesianToCartographic(a,new g),h=N.WGS84.eastNorthUpToFixedFrame(a).invert();e.cartographicModelMatrix=h.multiplyRight(s),e.cartographicOrigin=c;let u=Sp(e);u&&(e.cartesianModelMatrix=new G(s).multiplyRight(u.matrix),e.cartographicModelMatrix.multiplyRight(u.matrix),u.matrix=G.IDENTITY),e.coordinateSystem||(e.modelMatrix=e.cartographicModelMatrix)}var xp=1e6**2;function Sp(t){let e=t.gltf;if(!e)return null;let r=typeof e.scene=="number"?e.scene:0,i=e.scenes?.[r]?.nodes?.[0];if(!i?.matrix)return null;let o=i.matrix;return o[12]*o[12]+o[13]*o[13]+o[14]*o[14]<=xp?null:i}var el=new g,Eo=new g,wp=1e-5,Ep=1e-7,To=new se([new re,new re,new re,new re,new re,new re]);function Fn(t,e,r={}){let{cameraUp:n,height:i}=t,o=t.cameraDirection,{metersPerUnit:s}=t.distanceScales,a=yr(t,t.center),c=N.WGS84.eastNorthUpToFixedFrame(a),l=t.unprojectPosition(t.cameraPosition),h=N.WGS84.cartographicToCartesian(l,new g),u;if(o)u=new g(c.transformAsVector(new g(o).scale(s))).normalize();else{let T=t.getFrustumPlanes().near,R=bo(T,t.cameraPosition),C=yr(t,R);u=new g(C).subtract(h).normalize()}let f=new g(c.transformAsVector(new g(n).scale(s))).normalize();Tp(t);let d=t.constructor,{longitude:m,latitude:_,width:p,bearing:M,zoom:y,position:S}=t,x=new d({longitude:m,latitude:_,height:i,width:p,bearing:M,zoom:y,position:S,pitch:0}),E=Number.isFinite(t.fovy)&&Number(t.fovy)>0&&Number(t.fovy)<180?Number(t.fovy)*Math.PI/180:Math.PI/3;return{camera:{position:h,direction:u,up:f,cartographicPosition:l,verticalFieldOfView:E,timeSinceMovement:r.timeSinceCameraMovement??Number.POSITIVE_INFINITY},viewport:t,topDownViewport:x,height:i,cullingVolume:To,clippingPlanes:t.clippingPlanes,frameNumber:e,sseDenominator:2*Math.tan(E/2),dynamicScreenSpaceErrorDensity:0}}function tl(t,e,r,n){let i=Array.from(e),o=Array.from(r),s=t?i.length!==t.position.length||i.some((l,h)=>Math.abs(l-t.position[h])>wp):!1,a=t?o.length!==t.direction.length||o.some((l,h)=>Math.abs(l-t.direction[h])>Ep):!1,c=s||a?n:t?.lastMovementTime??Number.NEGATIVE_INFINITY;return{state:{position:i,direction:o,lastMovementTime:c},timeSinceMovement:Math.max((n-c)/1e3,0)}}function rl(t,e,r){if(r===0||t.length<=r)return[t,[]];let n=[],{longitude:i,latitude:o}=e.viewport;for(let[l,h]of t.entries()){let[u,f]=h.header.mbs,d=Math.abs(i-u),m=Math.abs(o-f),_=Math.sqrt(m*m+d*d);n.push([l,_])}let s=n.sort((l,h)=>l[1]-h[1]),a=[];for(let l=0;l<r;l++)a.push(t[s[l][0]]);let c=[];for(let l=r;l<s.length;l++)c.push(t[s[l][0]]);return[a,c]}function Tp(t){let e=t.getFrustumPlanes(),r=bo(e.near,t.cameraPosition),n=yr(t,r),i=yr(t,t.cameraPosition,Eo),o=0;To.planes[o++].fromPointNormal(n,el.copy(n).subtract(i));for(let s in e){if(s==="near")continue;let a=e[s],c=bo(a,r,Eo),l=yr(t,c,Eo);To.planes[o++].fromPointNormal(l,el.copy(n).subtract(l))}}function bo(t,e,r=new g){let n=t.normal.dot(e);return r.copy(t.normal).scale(t.distance-n).add(e),r}function yr(t,e,r=new g){let n=t.unprojectPosition(e);return N.WGS84.cartographicToCartesian(n,r)}var al=new g,bp=new g,St=new g,nl=new g,xr=new g,il=new g,ol=new g,sl=new g,Un=new Ne,vp=new g(0,0,1);function cl(t,e){t._updateTransform(e)}function ll(t,e,r){if(!Number.isFinite(r.dynamicScreenSpaceErrorDensity)||r.dynamicScreenSpaceErrorDensity<=0)return 0;let n=Ap(t),i=n.region?Ip(n.region,e):Op(t,n,e);if(!i)return 0;let o=ir(r.dynamicScreenSpaceErrorHeightFalloff,0,1),s=i.minimumHeight+(i.maximumHeight-i.minimumHeight)*o,a=i.maximumHeight-s,c=a>0?ir((i.cameraHeight-s)/a,0,1):i.cameraHeight>=i.maximumHeight?1:0,h=(1-ir(Math.abs(i.cameraDirection.dot(i.upDirection)),0,1))*(1-c);return r.dynamicScreenSpaceErrorDensity*h}function Pp(t,e){let r=t*e;return 1-Math.exp(-(r*r))}function Rp(t,e,r){return e<=0||r<=0||!Number.isFinite(e)||!Number.isFinite(r)?0:Pp(t,e)*r}function hl(t,e,r,n=1){let i=t.tileset,o=t.parent&&t.parent.lodMetricValue||t.lodMetricValue,s=r?o:t.lodMetricValue;if(s===0)return 0;let{viewDistanceScale:a}=i.options,c=a||1,l=Number.isFinite(n)?Math.max(n,0):1,h=Cp(s,e,c,l);if(h!==null)return h;let u=Math.max(t._distanceToCamera,1e-7),{height:f,sseDenominator:d}=e,m=s*f*l*c/(u*d);return i.options.dynamicScreenSpaceError&&!e.viewport.orthographic&&(m-=Rp(u,e.dynamicScreenSpaceErrorDensity,i.options.dynamicScreenSpaceErrorFactor)),m}function Cp(t,e,r,n){let i=e.viewport;if(!i?.orthographic)return null;let o=i.metersPerPixel;return!Number.isFinite(o)||!o||o<=0?null:t*r*n/o}function Ap(t){return t.header.content?.boundingVolume||t.header.boundingVolume}function Ip(t,e){let r=al.copy(e.camera.position).normalize(),n=xr.copy(e.camera.direction).normalize();return{cameraHeight:e.camera.cartographicPosition[2],minimumHeight:t[4],maximumHeight:t[5],cameraDirection:n,upDirection:r}}function Op(t,e,r){let n=Np(e,St);if(n===null)return null;let i=new G(t.computedTransform).invert(),o=t.tileset.ellipsoid;if(Math.hypot(St[0],St[1],St[2])>o.minimumRadius){let a=o.cartesianToCartographic(St,bp),c=al.copy(r.camera.position).normalize(),l=xr.copy(r.camera.direction).normalize();return{cameraHeight:r.camera.cartographicPosition[2],minimumHeight:0,maximumHeight:a[2]*2,cameraDirection:l,upDirection:c}}return i.transformAsPoint(r.camera.position,nl),i.transformAsVector(r.camera.direction,xr),xr.normalize(),{cameraHeight:nl[2],minimumHeight:St[2]-n,maximumHeight:St[2]+n,cameraDirection:xr,upDirection:vp}}function Np(t,e){if(t.box){let r=t.box;return e.set(r[0],r[1],r[2]),Lp(r)}if(t.sphere){let r=t.sphere;return e.set(r[0],r[1],r[2]),r[3]}return null}function Lp(t){return t.length===10?(Un.fromArray(t,6),il.set(t[3],0,0).transformByQuaternion(Un),ol.set(0,t[4],0).transformByQuaternion(Un),sl.set(0,0,t[5]).transformByQuaternion(Un),Math.abs(il[2])+Math.abs(ol[2])+Math.abs(sl[2])):Math.abs(t[5])+Math.abs(t[8])+Math.abs(t[11])}var ae={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5},te;(function(t){t[t.ADD=1]="ADD",t[t.REPLACE=2]="REPLACE"})(te||(te={}));var Ke;(function(t){t.EMPTY="empty",t.SCENEGRAPH="scenegraph",t.POINTCLOUD="pointcloud",t.MESH="mesh"})(Ke||(Ke={}));var he;(function(t){t.I3S="I3S",t.TILES3D="TILES3D"})(he||(he={}));var Dt;(function(t){t.GEOMETRIC_ERROR="geometricError",t.MAX_SCREEN_THRESHOLD="maxScreenThreshold"})(Dt||(Dt={}));var ul={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0};var fl=1e4,Gp=1e4,qp=1e8,zp=new fe,dl=new g,ml=new g,vo=new g,Vn=new g;function Po(t,e,r){return t+(e-t)*r}function pl(t,e){let r=t instanceof fe?t:t.getBoundingSphere(zp),{center:n,radius:i}=r;dl.copy(n).subtract(e.position);let o=Math.max(dl.dot(e.direction),0);return ml.copy(e.direction).scale(o).add(e.position),vo.copy(ml).subtract(n),vo.magnitude()<=i||(Vn.copy(vo).normalize().scale(i).add(n).subtract(e.position),Vn.magnitude()===0)?0:(Vn.normalize(),Math.min(Math.max(1-Vn.dot(e.direction),0),1))}function gl(t,e,r,n){return!Number.isFinite(n)||n<=0||n>.5?!1:t>r?!0:e!==void 0&&e>r}function _l(t){let e=Number.isFinite(t.foveatedConeSize)?Math.min(Math.max(t.foveatedConeSize,0),1):1,r=t.refinement===te.REPLACE;if(r&&!t.skipLevelOfDetail||!t.foveatedScreenSpaceError||e>=1||r&&t.skipLevelOfDetail&&t.priorityProgressiveResolution)return!1;let n=Number.isFinite(t.verticalFieldOfView)&&t.verticalFieldOfView>0?t.verticalFieldOfView:Math.PI/3,i=1-Math.cos(n*.5),o=e*i;if(t.foveatedFactor<=o||i<=o)return!1;let s=Math.min(Math.max((t.foveatedFactor-o)/(i-o),0),1),c=(typeof t.interpolationCallback=="function"?t.interpolationCallback:Po)(t.minimumScreenSpaceErrorRelaxation,t.maximumScreenSpaceError,s),l=Number.isFinite(c)?Math.min(Math.max(c,0),t.maximumScreenSpaceError):0,h=t.screenSpaceError===0&&t.parentScreenSpaceError!==void 0?t.parentScreenSpaceError*.5:t.screenSpaceError;return t.maximumScreenSpaceError-l<=h}function Ml(t,e,r){return t&&Number.isFinite(e)&&Number.isFinite(r)&&r>0&&e<r}function yl(t){let e=t.rootScreenSpaceError>0?Math.min(Math.max(t.reverseScreenSpaceError/t.rootScreenSpaceError,0),1):0,r=Math.floor(e*(fl-1)),n=Number.isFinite(t.foveatedFactor)?Math.min(Math.max(t.foveatedFactor,0),1):0,i=Math.floor(n*(fl-1))*Gp;return(t.priorityProgressiveResolution?0:qp)+i+r}var kt="EPSG:4326",jn="EPSG:4978";function Sr(t){let e=t.trim().toUpperCase(),r=e.match(/(?:\/DEF\/CRS\/|URN:OGC:DEF:CRS:)([A-Z0-9_-]+)(?:\/|::)(?:[^/:]*[/:])?([A-Z0-9_.-]+)$/);return r?`${r[1]}:${r[2]}`:e}function _e(t){if(typeof t=="string"){let r=Me(t);return r==="wkt"?Bp(t):r==="proj-string"?Dp(t):Ro(t)||"projected"}let e=t;return e.type==="BoundCRS"&&e.source_crs?_e(e.source_crs):e.type==="CompoundCRS"&&e.components?.[0]?_e(e.components[0]):String(e.type).includes("Projected")?"projected":String(e.type).includes("Geographic")?"geographic":String(e.type).includes("Geodetic")?e.coordinate_system?.subtype==="Cartesian"?"geocentric":"geographic":"unknown"}function Ro(t){if(typeof t!="string")return;let e=Sr(t);if(e===jn)return"geocentric";if(e===kt||e==="OGC:CRS84")return"geographic";let r=/^EPSG:(\d+)$/.exec(e);if(!r)return;let n=Number(r[1]);if(n===7789)return"geocentric";if(n===4490||n===4979)return"geographic";if(n===3857||n>=32601&&n<=32660||n>=32701&&n<=32760)return"projected"}function Bp(t){let e;try{e=_r(t).root}catch{return"unknown"}switch(e.keyword.toUpperCase()){case"GEOCCS":return"geocentric";case"GEOGCS":case"GEOGCRS":case"GEOGRAPHICCRS":case"GEOGRAPHIC2DCRS":case"GEOGRAPHIC3DCRS":return"geographic";case"PROJCS":case"PROJCRS":case"PROJECTEDCRS":return"projected";case"GEODCRS":case"GEODETICCRS":{let n=e.values.find(i=>i.type==="node"&&i.keyword.toUpperCase()==="CS")?.values[0];return n?.type!=="enumeration"&&n?.type!=="string"?"unknown":n.value.toUpperCase()==="CARTESIAN"?"geocentric":n.value.toUpperCase()==="ELLIPSOIDAL"?"geographic":"unknown"}default:return"unknown"}}function Dp(t){try{let e=Mr(t).parameters.find(r=>r.name.toLowerCase()==="proj")?.value;switch(e?.toLowerCase()){case"longlat":case"latlong":return"geographic";case"geocent":return"geocentric";default:return e?"projected":"unknown"}}catch{return"unknown"}}function ve(t,e={}){let r=e.sourceCrs!==void 0,n=e.sourceCrs||t.sourceCrs,i=e.outputCoordinates||"auto",o=e.targetCrs||(i==="ecef"?"EPSG:4978":void 0),s=e.targetHeightReference||"native",a=t.verticalUnitScale??1,c=t.elevationUnitScale??1,l=t.elevationOffset||0,h=t.elevationMode==="onTheGround"||t.elevationMode==="relativeToGround"||t.elevationMode==="relativeToScene",u=t.elevationMode==="relativeToScene"?!!e.sceneElevationProvider:!h||!!e.terrainElevationProvider,f=a!==1||c!==1||t.elevationMode!==void 0&&(h||t.elevationMode==="absoluteHeight"&&l!==0),d=s!=="native"&&s!==t.heightReference,m=!!o||s!=="native"||i!=="auto"||f,_=i!=="target-crs"||!!o,p=!d||(t.heightReference||"unknown")!=="unknown",M=Number.isFinite(a)&&a>0&&Number.isFinite(c)&&c>0,y=!!n&&m&&_&&p&&M&&u&&i!=="local-enu",S=r?"caller-override":t.provenance||"unknown",x=r&&n?_e(n):t.coordinateFrame,E=r?"explicit":t.sourceCrsState||(n?S==="format-default"?"default":"explicit":"absent"),T=Gn({crs:n?{state:E==="default"?"default":"explicit",definition:n,representation:!r&&t.sourceCrsRepresentation||Me(n),provenance:S,alternatives:r?void 0:t.sourceCrsAlternatives}:{state:E==="unknown"?"unknown":"absent",provenance:S},vertical:t.verticalCrs?{state:"explicit",definition:t.verticalCrs,representation:Me(t.verticalCrs),provenance:t.provenance||"metadata"}:void 0,coordinateEpoch:e.coordinateEpoch??t.coordinateEpoch,coordinateFrame:x,coordinateOrder:Fp(t.axisOrder),units:r?void 0:t.units}),R=Co(T.crs),C=T.vertical?Co(T.vertical):void 0,O=o?kp(o):void 0;return Object.freeze({...T,sourceCrs:R,verticalCrs:C,verticalUnitScale:a,coordinateEpoch:e.coordinateEpoch??t.coordinateEpoch,heightReference:t.heightReference||"unknown",elevationMode:t.elevationMode,elevationOffset:t.elevationOffset,elevationUnit:t.elevationUnit,elevationUnitScale:c,coordinateFrame:x||"unknown",axisOrder:t.axisOrder||"unknown",provenance:S,targetCrs:O,targetHeightReference:s,outputCoordinates:i,status:m?y?"transformable":"unresolved":"native",warnings:Object.freeze([...t.warnings||[]])})}function wt(t,e={}){return ve({sourceCrs:t?.sourceCrs,sourceCrsState:t?.crs.state,sourceCrsRepresentation:t?.crs.state==="explicit"||t?.crs.state==="default"?t.crs.representation:void 0,sourceCrsAlternatives:t?.crs.state==="explicit"||t?.crs.state==="default"?t.crs.alternatives:void 0,verticalCrs:t?.verticalCrs,units:t?.units,verticalUnitScale:t?.verticalUnitScale,coordinateEpoch:t?.coordinateEpoch,heightReference:t?.heightReference,elevationMode:t?.elevationMode,elevationOffset:t?.elevationOffset,elevationUnit:t?.elevationUnit,elevationUnitScale:t?.elevationUnitScale,coordinateFrame:t?.coordinateFrame,axisOrder:t?.axisOrder,provenance:t?.provenance,warnings:t?.warnings},e)}function Co(t){return t.state==="explicit"||t.state==="default"?t.definition:void 0}function kp(t){let e=Gn({crs:{state:"explicit",definition:t,representation:Me(t),provenance:"caller-override"}}),r=Co(e.crs);if(!r)throw new Error("Failed to normalize a known target CRS definition");return r}function Fp(t){switch(t){case"xy":return["x","y"];case"yx":return["y","x"];case"xyz":return["x","y","z"];default:return[]}}function Ft(t){if(t.status!=="transformable"&&t.status!=="transformed")throw new Error("Only a transformable spatial reference can be marked as transformed");return Object.freeze({...t,status:"transformed"})}function Wn(t){return!!(t&&typeof t=="object"&&"initialize"in t&&"getRootTileset"in t&&"initializeTileHeaders"in t&&"loadTileContent"in t)}var Yn=1024*1024,Cl=512*Yn,Al=512*Yn,Up=32*Yn,Vp=Yn;function Hn(t,e){if(!Number.isFinite(t)||t<0)throw new Error(`${e} must be a finite number greater than or equal to 0`);return t}function xl(t,e){let r=t.cacheBytes??e;return Hn(r,"cacheBytes")}function Sl(t,e){let r=t.maximumCacheOverflowBytes??e;return Hn(r,"maximumCacheOverflowBytes")}var Ao={description:"",ellipsoid:N.WGS84,modelMatrix:new G,throttleRequests:!0,maxRequests:64,cacheBytes:Cl,maximumCacheOverflowBytes:Al,maximumTilesSelected:0,debounceTime:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{},onSourceError:()=>{},onTilesetError:()=>{},onTraversalComplete:t=>t,onUpdate:()=>{},contentLoader:void 0,viewDistanceScale:1,progressiveResolutionHeightFraction:.3,foveatedScreenSpaceError:!0,foveatedConeSize:.1,foveatedMinimumScreenSpaceErrorRelaxation:0,foveatedInterpolationCallback:Po,foveatedTimeDelay:.2,maximumScreenSpaceError:8,skipLevelOfDetail:!1,baseScreenSpaceError:1024,skipScreenSpaceErrorFactor:16,skipLevels:1,immediatelyLoadDesiredLevelOfDetail:!1,dynamicScreenSpaceError:!0,dynamicScreenSpaceErrorDensity:2e-4,dynamicScreenSpaceErrorFactor:24,dynamicScreenSpaceErrorHeightFalloff:.25,memoryAdjustedScreenSpaceError:!0,loadTiles:!0,updateTransforms:!0,viewportTraversersMap:null,loadOptions:{fetch:{}},attributions:[],basePath:"",i3s:{},spatial:{}},Io="Tiles In Tileset(s)",Oo="Tiles In Memory",wl="Tiles In View",El="Tiles To Render",Tl="Tiles Loaded",No="Tiles Loading",bl="Tiles Unloaded",vl="Failed Tile Loads",Pl="Points/Vertices",Lo="Tile Memory Use",Rl="Maximum Screen Space Error",$n=class{options;loadOptions;source;type;tileset;loader;url;basePath;modelMatrix;ellipsoid;lodMetricType;lodMetricValue;refine;root=null;roots={};asset={};schema=null;schemaUri=null;groups=[];metadata=null;statistics=null;spatialReference=ve({});description="";properties;extras=null;attributions={};credits={};stats;contentFormats;cartographicCenter=null;cartesianCenter=null;zoom=1;boundingVolume=null;dynamicScreenSpaceErrorComputedDensity=0;gpuMemoryUsageInBytes=0;memoryAdjustedScreenSpaceError=0;_cacheBytes=Cl;_maximumCacheOverflowBytes=Al;_frameNumber=0;_tiles={};_pendingCount=0;selectedTiles=[];traverseCounter=0;geometricError=0;lastUpdatedVieports=null;_requestedTiles=[];_emptyTiles=[];frameStateData={};_cameraMotionStates={};_deferredTraversalTimeout=null;_traverser;_cache=new Bt;_requestScheduler;_heldTiles=new Set;updatePromise=null;tilesetInitializationPromise;constructor(e,r){if(!Wn(e))throw new Error("Tileset3D requires a Tileset3DSource instance");let n=r||{},i=e.type===he.TILES3D,o=i?Ao.cacheBytes:Up,s=i?Ao.maximumCacheOverflowBytes:Vp,a=xl(n,o),c=Sl(n,s);this.options={...Ao,...n,cacheBytes:a,maximumCacheOverflowBytes:c,memoryAdjustedScreenSpaceError:n.memoryAdjustedScreenSpaceError??i},this.loadOptions=this.options.loadOptions||{},this.source=e,this.tileset=null,this.loader=this.source.loader,this.type=this.source.type,this.url=this.source.url,this.basePath=this.source.basePath,this.modelMatrix=this.options.modelMatrix,this.ellipsoid=this.options.ellipsoid,this.lodMetricType="",this.lodMetricValue=0,this.refine="",this.contentFormats=this.source.contentFormats,this._traverser=this._initializeTraverser(),this._requestScheduler=new st({throttleRequests:this.options.throttleRequests,maxRequests:this.options.maxRequests}),this.memoryAdjustedScreenSpaceError=this.options.maximumScreenSpaceError,this._cacheBytes=a,this._maximumCacheOverflowBytes=c;let l=this._getSourceMetadata();l&&(this.spatialReference=wt(l.spatialReference,this.options.spatial)),this.stats=new Le({id:this.url}),this._initializeStats(),this.tilesetInitializationPromise=this._initializeTileSet()}destroy(){this._clearDeferredTraversal(),this.source.destroy?.(),this._destroy()}isLoaded(){return this._pendingCount===0&&this._frameNumber!==0&&this._requestedTiles.length===0}get tiles(){return Object.values(this._tiles)}get frameNumber(){return this._frameNumber}get requestedTiles(){return this._requestedTiles.slice()}get emptyTiles(){return this._emptyTiles.slice()}get cacheBytes(){return this._cacheBytes}set cacheBytes(e){this._cacheBytes=Hn(e,"cacheBytes"),this.options.cacheBytes=this._cacheBytes}get maximumCacheOverflowBytes(){return this._maximumCacheOverflowBytes}set maximumCacheOverflowBytes(e){this._maximumCacheOverflowBytes=Hn(e,"maximumCacheOverflowBytes"),this.options.maximumCacheOverflowBytes=this._maximumCacheOverflowBytes}get queryParams(){let e=this.source.getTileUrl(this.url),r=e.indexOf("?");return r>=0?e.slice(r+1):""}setProps(e){let r=xl(e,this.cacheBytes),n=Sl(e,this.maximumCacheOverflowBytes);this.options={...this.options,...e,cacheBytes:r,maximumCacheOverflowBytes:n},this._cacheBytes=r,this._maximumCacheOverflowBytes=n}getTileUrl(e){return this.source.getTileUrl(e)}hasExtension(e){return!!this.source.hasExtension?.(e)}update(e=null){this.tilesetInitializationPromise.then(()=>{!e&&this.lastUpdatedVieports?e=this.lastUpdatedVieports:this.lastUpdatedVieports=e,e&&this.doUpdate(e)})}async selectTiles(e=null){return await this.tilesetInitializationPromise,e&&(this.lastUpdatedVieports=e),this.updatePromise||(this.updatePromise=new Promise(r=>{setTimeout(()=>{this.lastUpdatedVieports&&this.doUpdate(this.lastUpdatedVieports),r(this._frameNumber),this.updatePromise=null},this.options.debounceTime)})),this.updatePromise}adjustScreenSpaceError(){this.gpuMemoryUsageInBytes<this.cacheBytes?this.memoryAdjustedScreenSpaceError=Math.max(this.memoryAdjustedScreenSpaceError/1.02,this.options.maximumScreenSpaceError):this.gpuMemoryUsageInBytes>this.cacheBytes+this.maximumCacheOverflowBytes&&(this.memoryAdjustedScreenSpaceError*=1.02)}doUpdate(e){if("loadTiles"in this.options&&!this.options.loadTiles||this.traverseCounter>0)return;let r=e instanceof Array?e:[e],n=new Set(r.map(a=>a.id));for(let a of Object.keys(this.frameStateData))n.has(a)||delete this.frameStateData[a];this._cache.reset(),this._frameNumber++,this.traverseCounter=r.length;let i=Date.now(),o=Number.POSITIVE_INFINITY,s=[];for(let a of r){let c=a.id;this._needTraverse(c)?s.push(c):this.traverseCounter--}for(let a of r){let c=a.id;if(this.roots[c]||(this.roots[c]=this._initializeTileHeaders(this.tileset,null)),!s.includes(c))continue;let l=Fn(a,this._frameNumber),h=this.roots[c],u=tl(this._cameraMotionStates[c],l.camera.position,l.camera.direction,i);this._cameraMotionStates[c]=u.state,l.camera.timeSinceMovement=u.timeSinceMovement,cl(h,this.modelMatrix),l.dynamicScreenSpaceErrorDensity=this.type===he.TILES3D&&this.options.dynamicScreenSpaceError&&!l.viewport.orthographic?ll(h,l,this.options):0,this.dynamicScreenSpaceErrorComputedDensity=l.dynamicScreenSpaceErrorDensity,this._traverser.traverse(h,l,this.options),Object.keys(this._traverser.deferredTiles).length>0&&(o=Math.min(o,Math.max(this.options.foveatedTimeDelay-u.timeSinceMovement,0)))}Number.isFinite(o)?this._scheduleDeferredTraversal(o):this._clearDeferredTraversal()}_scheduleDeferredTraversal(e){this._clearDeferredTraversal(),this._deferredTraversalTimeout=setTimeout(()=>{this._deferredTraversalTimeout=null,this.selectTiles().catch(r=>{let n=r instanceof Error?r:new Error(String(r));this._onTilesetError(n)})},Math.max(e*1e3,0))}_clearDeferredTraversal(){this._deferredTraversalTimeout!==null&&(clearTimeout(this._deferredTraversalTimeout),this._deferredTraversalTimeout=null)}_needTraverse(e){let r=e;return this.options.viewportTraversersMap&&(r=this.options.viewportTraversersMap[e]),r===e}_onTraversalEnd(e){let r=e.viewport.id;this.frameStateData[r]||(this.frameStateData[r]={selectedTiles:[],_requestedTiles:[],_emptyTiles:[]});let n=this.frameStateData[r],i=Object.values(this._traverser.selectedTiles),[o,s]=rl(i,e,this.options.maximumTilesSelected);n.selectedTiles=o;for(let a of s)a.unselect();n._requestedTiles=Object.values(this._traverser.requestedTiles),n._emptyTiles=Object.values(this._traverser.emptyTiles),this.traverseCounter--,!(this.traverseCounter>0)&&this._updateTiles()}_updateTiles(){let e=this.selectedTiles;this.selectedTiles=[],this._requestedTiles=[],this._emptyTiles=[];for(let o in this.frameStateData){let s=this.frameStateData[o];this.selectedTiles=this.selectedTiles.concat(s.selectedTiles),this._requestedTiles=this._requestedTiles.concat(s._requestedTiles),this._emptyTiles=this._emptyTiles.concat(s._emptyTiles)}this.selectedTiles=this.options.onTraversalComplete(this.selectedTiles);let r=new Set(this.selectedTiles.map(o=>o.id)),n=this.selectedTiles.some(o=>!o.tileDrawn),i=0;if(n){for(let o of r)this._heldTiles.add(o);for(let o of this._heldTiles){if(r.has(o))continue;let s=this._tiles[o];s&&s.contentAvailable?(s._selectedFrame=this._frameNumber,this.selectedTiles.push(s),i++):this._heldTiles.delete(o)}}else this._heldTiles=r;i>0&&setTimeout(()=>{this.selectTiles()},0);for(let o of this.selectedTiles)this._tiles[o.id]=o;this._loadTiles(),this._unloadTiles(),this._updateStats(),this._tilesChanged(e,this.selectedTiles)&&this.options.onUpdate()}_tilesChanged(e,r){if(e.length!==r.length)return!0;let n=new Set(e.map(s=>s.id)),i=new Set(r.map(s=>s.id)),o=e.some(s=>!i.has(s.id));return o=o||r.some(s=>!n.has(s.id)),o}_loadTiles(){this._requestedTiles.sort((e,r)=>e._priority-r._priority);for(let e of this._requestedTiles)e.contentUnloaded&&this._loadTile(e)}_unloadTiles(){this._cache.unloadTiles(this,(e,r)=>e._unloadTile(r)),this.options.memoryAdjustedScreenSpaceError&&this.adjustScreenSpaceError()}_updateStats(){let e=0,r=0;for(let n of this.selectedTiles)if(n.contentAvailable&&n.content){e++;let i=n.contents.length?n.contents:[n.content];for(let o of i)o.pointCount?r+=o.pointCount:r+=o.vertexCount||0}this.stats.get(wl).count=this.selectedTiles.length,this.stats.get(El).count=e,this.stats.get(Pl).count=r,this.stats.get(Rl).count=this.memoryAdjustedScreenSpaceError}async _initializeTileSet(){try{let e=this.source.initialize(),r=this._getSourceMetadata();r&&this._syncSourceState(r),r?.tileset?.root&&typeof r.tileset.root.then!="function"&&(!this.source.prepareTileset||this.spatialReference?.status==="native")&&(this.root=this._initializeTileHeaders(r.tileset,null),this._applyViewState()),await e;let n=this.source.getMetadata();this._syncSourceState(n),await this.source.prepareTileset?.(this),this.root||(this.root=this._initializeTileHeaders(n.tileset,null)),this._applyViewState()}catch(e){let r=e instanceof Error?e:new Error(String(e));throw this._onSourceError(r,this.root),this._onTilesetError(r),r}}_initializeStats(){this.stats.get(Io),this.stats.get(No),this.stats.get(Oo),this.stats.get(wl),this.stats.get(El),this.stats.get(Tl),this.stats.get(bl),this.stats.get(vl),this.stats.get(Pl),this.stats.get(Lo,"memory"),this.stats.get(Rl)}_initializeTileHeaders(e,r){return this.source.initializeTileHeaders(this,e,r)}_initializeTraverser(){return this.source.createTraverser({basePath:this.basePath,onTraversalEnd:this._onTraversalEnd.bind(this)})}_destroyTileHeaders(e){this._destroySubtree(e)}async _loadTile(e){let r=null;try{this._onStartTileLoading(),r=await e.loadContent()}catch(n){let i=n instanceof Error?n:new Error("load failed");this._onSourceError(i,e),this._onTileLoadError(e,i)}finally{this._onEndTileLoading(),this._onTileLoad(e,r)}}async _loadTileChildren(e,r){try{this._onStartTileLoading(),await e.loadChildren(r)}catch(n){let i=n instanceof Error?n:new Error("subtree load failed");this._onSourceError(i,e),this._onTileLoadError(e,i)}finally{this._onEndTileLoading()}}_onTileLoadError(e,r){this.stats.get(vl).incrementCount();let n=r.message||r.toString(),i=e.url;console.error(`A 3D tile failed to load: ${e.url} ${n}`),this.options.onTileError(e,n,i)}_onSourceError(e,r=null){this.options.onSourceError(e,this.source,r)}_onTilesetError(e){this.options.onTilesetError(e,this)}_onTileLoad(e,r){if(!r?.loaded)return;e.content&&kn(e,e.content),this.source.onTileLoaded?.(this,e,r),this._syncSourceState(this.source.getMetadata());let n=this.source.getTilesTotalCount?.();n&&(this.stats.get(Io).reset(),this.stats.get(Io).addCount(n)),this._addTileToCache(e),this.options.onTileLoad(e)}_onStartTileLoading(){this._pendingCount++,this.stats.get(No).incrementCount()}_onEndTileLoading(){this._pendingCount--,this.stats.get(No).decrementCount()}_addTileToCache(e){this._cache.add(this,e,r=>r._updateCacheStats(e))}_updateCacheStats(e){this.stats.get(Tl).incrementCount(),this.stats.get(Oo).incrementCount(),this.gpuMemoryUsageInBytes+=e.gpuMemoryUsageInBytes||0,this.stats.get(Lo).count=this.gpuMemoryUsageInBytes,this.options.memoryAdjustedScreenSpaceError&&this.adjustScreenSpaceError()}_unloadTile(e){this.gpuMemoryUsageInBytes-=e.gpuMemoryUsageInBytes||0,this.stats.get(Oo).decrementCount(),this.stats.get(bl).incrementCount(),this.stats.get(Lo).count=this.gpuMemoryUsageInBytes,this.options.onTileUnload(e),e.unloadContent()}_destroy(){let e=[];for(this.root&&e.push(this.root);e.length>0;){let r=e.pop();for(let n of r.children)e.push(n);this._destroyTile(r)}this.root=null}_destroySubtree(e){let r=e,n=[r];for(;n.length>0;){e=n.pop();for(let i of e.children)n.push(i);e!==r&&this._destroyTile(e)}r.children=[]}_destroyTile(e){this._cache.unloadTile(this,e),this._unloadTile(e),e.destroy()}_syncSourceState(e){this.tileset=e.tileset,this.loader=e.loader,this.type=e.type,this.url=e.url,this.basePath=e.basePath,this.lodMetricType=e.lodMetricType,this.lodMetricValue=e.lodMetricValue,this.refine=e.refine,this.contentFormats=this.source.contentFormats,this.asset=this.source.asset||this.asset;let r=e.tileset;this.schema=r.schema||null,this.schemaUri=r.schemaUri||null,this.groups=r.groups||[],this.metadata=r.metadata||null,this.statistics=r.statistics??null;let n=wt(e.spatialReference,this.options.spatial);this.spatialReference=jp(this.spatialReference,n),this.properties=this.source.properties??this.properties,this.extras=this.source.extras??this.extras,this.options.attributions?.length?this.credits={attributions:this.options.attributions}:this.credits=this.source.credits||this.credits}_applyViewState(){let e=this.source.getViewState(this.root);this.asset=e.asset||this.source.asset||{},this.properties=e.properties??this.source.properties,this.extras=e.extras??this.source.extras??null,this.credits=e.credits||this.source.credits||this.credits||{attributions:this.options.attributions||[]},this.description=e.description||this.options.description||"",this.boundingVolume=e.boundingVolume||this.root?.boundingVolume||null,this.cartographicCenter=e.cartographicCenter||new g,this.cartesianCenter=e.cartesianCenter||null,this.zoom=e.zoom||1,this.geometricError=this.tileset?.geometricError||0}_getSourceMetadata(){try{return this.source.getMetadata()}catch{return null}}};function jp(t,e){return t?.status==="transformed"&&t.sourceCrs===e.sourceCrs&&t.targetCrs===e.targetCrs&&t.targetHeightReference===e.targetHeightReference&&t.outputCoordinates===e.outputCoordinates?t:e}function Il(t){let e=t.selectedTiles.slice(),r=t.requestedTiles.slice(),n=t.emptyTiles.slice(),i=c=>c.map(l=>String(l.id)).sort(),o=c=>{let l=t.stats.get(c).count;return typeof l=="number"&&Number.isFinite(l)?l:0},a=t.source.getImplicitTilingStats?.();return{frameNumber:t.frameNumber,selectedTileIds:i(e),requestedTileIds:i(r),emptyTileIds:i(n),visibleTileCount:e.length,renderableTileCount:e.filter(c=>c.contentAvailable&&!!c.content).length,loadingTileCount:o("Tiles Loading"),loadedTileCount:o("Tiles Loaded"),failedTileCount:o("Failed Tile Loads"),cachedTileCount:o("Tiles In Memory"),cacheBytes:t.gpuMemoryUsageInBytes,maximumScreenSpaceError:t.memoryAdjustedScreenSpaceError,...a?{implicitTiling:a}:{}}}async function*Ol(t,e={}){if(await t.tilesetInitializationPromise,Kn(e.signal),!t.root)throw new Error("Tileset initialization completed without a root tile");let r=[t.root],n=new Set;for(;r.length>0;){Kn(e.signal);let i=r.pop();if(n.has(i))continue;if(n.add(i),i.header.implicitSubtree&&i.childrenState!=="ready"){let s=t.source.loadTileChildrenForTraversal;if(!s)throw new Error("Tileset source does not support camera-independent subtree loading");if(!(await s.call(t.source,i,e.signal)).loaded)throw new Error(`Unable to load implicit subtree for tile ${i.id}`);i.childrenState="ready"}if(t.type===he.I3S&&t.source.loadTileChildrenForTraversal&&!(await t.source.loadTileChildrenForTraversal(i,e.signal)).loaded)throw new Error(`Unable to load I3S child nodes for tile ${i.id}`);Kn(e.signal);let o=i.contentUrls.length>0&&!i.content;try{if(o){let s=await i.loadContentForTraversal();if(Kn(e.signal),!s.loaded)throw new Error(`Unable to load tile content for tile ${i.id}`);t.source.onTileLoaded?.(t,i,s)}yield{tile:i,contents:i.contentEntries}}finally{e.unloadContent&&o&&i.unloadContent()}for(let s=i.children.length-1;s>=0;s--)r.push(i.children[s])}}function Kn(t){if(t?.aborted)throw t.reason??new DOMException("The operation was aborted","AbortError")}var Xn=class{sourceUrl;options;archivePromise;constructor(e){this.options=e,this.sourceUrl=Wp(e.data,e.fallbackFilename)}async loadRoot(e,r,n){return await this.parseArchiveResource(e,this.options.rootPath,r,n,this.options.rootMode)}async loadResource(e,r,n){let i=this.resolveArchivePath(e,e);return await this.parseArchiveResource(e,i,r,n)}async parseArchiveResource(e,r,n,i,o){let s=this.options.getCoreApi();if(!s)throw new Error(this.options.missingCoreApiMessage);let a=await this.loadFile(r,o),c=this.createArchiveFetch(e);return await s.parse(a,n,{...i,fetch:c},{url:e,fetch:c,_parse:s.parse,loaders:[n],coreApi:s})}createArchiveFetch(e){return async r=>{let n=typeof r=="string"?r:r instanceof URL?r.toString():r.url,i=this.resolveArchivePath(n,e),o=await this.loadFile(i);return new Response(o,{status:200})}}async loadFile(e,r){this.archivePromise||=this.openArchiveReadableFile().then(i=>this.options.parseArchive(i));let n=await this.archivePromise;return await this.options.getFile(n,e,r)}async openArchiveReadableFile(){let{data:e}=this.options;if(typeof e!="string")return new zt(e);if(/^https?:\/\//i.test(e))return new pr(e);let r=this.options.getCoreApi();if(!r)throw new Error(this.options.missingCoreApiMessage);let n=await r.fetchFile(e);return new zt(await n.arrayBuffer())}resolveArchivePath(e,r){let n=Go(e),i=Go(this.sourceUrl),o=Go(r),s=o===i?i:be.dirname(o),a=new RegExp(`\\.${this.options.archiveExtension}/(.*)$`,"i"),c=n.match(a);if(c?.[1])return c[1];let l=/^[a-z][a-z0-9+.-]*:/i.test(n)||n.startsWith("/"),h=n.startsWith(i)?n:o===i&&!l?`${i}/${n}`:be.resolve(s,n);return h===i?"":h.startsWith(`${i}/`)?h.slice(i.length+1):h.replace(/^\/+/,"")}};function Wp(t,e){return typeof t=="string"?t:`memory://${"name"in t&&typeof t.name=="string"&&t.name?t.name:e}`}function Go(t){let e=t.indexOf("?");return e>=0?t.slice(0,e):t}function Zn(t){let e=[],r=new Set,n=i=>{if(!i||typeof i!="object"||r.has(i))return;r.add(i);let o=i,s=o.extensions?.EXT_mesh_features?.featureIds;if(Array.isArray(s))for(let a of s){if(!a||typeof a!="object")continue;let c=a.texture?"texture":a.implicit?"implicit":a.attribute!==void 0?"attribute":a.propertyTable!==void 0?"property-table":"constant";e.push({source:c,attribute:a.attribute,propertyTable:a.propertyTable,constant:a.constant,texture:a.texture,implicit:a.implicit,values:a.values,details:a})}for(let a of Object.values(o))n(a)};return n(t),e}function Gl(t){return t!=null}var de=new g,Qn=new g,Nl=new G;function Ut(t,e,r,n=e){if(ke(t,"3D Tile: boundingVolume must be defined"),t.box){let i=t.s2VolumeInfo?Nl:e;return Ll(t.box,i,r)}if(t.region){let i=hr(t.region),o=e.equals(n)?Nl:e.clone().multiplyRight(n.clone().invert());return Ll([...i.center,...i.halfAxes],o,r)}if(t.sphere)return Hp(t.sphere,e,r);throw new Error("3D Tile: boundingVolume must contain a sphere, region, or box")}function ql(t,e,r=!1){if(t.box||t.region&&r)return $p(e);if(t.region){let[n,i,o,s,a,c]=t.region;return[[ge(n),ge(i),a],[ge(o),ge(s),c]]}if(t.sphere)return Yp(e);throw new Error("Unkown boundingVolume type")}function Ll(t,e,r){let n=new g(t[0],t[1],t[2]);e.transform(n,n);let i=[];if(t.length===10){let l=t.slice(3,6),h=new Ne;h.fromArray(t,6);let u=new g([1,0,0]),f=new g([0,1,0]),d=new g([0,0,1]);u.transformByQuaternion(h),u.scale(l[0]),f.transformByQuaternion(h),f.scale(l[1]),d.transformByQuaternion(h),d.scale(l[2]),i=[...u.toArray(),...f.toArray(),...d.toArray()]}else i=[...t.slice(3,6),...t.slice(6,9),...t.slice(9,12)];let o=e.transformAsVector(i.slice(0,3)),s=e.transformAsVector(i.slice(3,6)),a=e.transformAsVector(i.slice(6,9)),c=new W([o[0],o[1],o[2],s[0],s[1],s[2],a[0],a[1],a[2]]);return Gl(r)?(r.center=n,r.halfAxes=c,r):new Ye(n,c)}function Hp(t,e,r){let n=new g(t[0],t[1],t[2]);e.transform(n,n);let i=e.getScale(Qn),o=Math.max(Math.max(i[0],i[1]),i[2]),s=t[3]*o;return Gl(r)?(r.center=n,r.radius=s,r):new fe(n,s)}function $p(t){let e=zl(),{halfAxes:r}=t,n=new g(r.getColumn(0)),i=new g(r.getColumn(1)),o=new g(r.getColumn(2));for(let s=0;s<2;s++){for(let a=0;a<2;a++){for(let c=0;c<2;c++)de.copy(t.center),de.add(n),de.add(i),de.add(o),Bl(e,de),o.negate();i.negate()}n.negate()}return e}function Yp(t){let e=zl(),{center:r,radius:n}=t,i=N.WGS84.scaleToGeodeticSurface(r,de),o;i?o=N.WGS84.geodeticSurfaceNormal(i):o=new g(0,0,1);let s=new g(o[2],-o[1],0);s.len()>0?s.normalize():s=new g(0,1,0);let a=s.clone().cross(o);for(let c of[s,a,o]){Qn.copy(c).scale(n);for(let l=0;l<2;l++)de.copy(r),de.add(Qn),Bl(e,de),Qn.negate()}return e}function zl(){return[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]]}function Bl(t,e){N.WGS84.cartesianToCartographic(e,de),t[0][0]=Math.min(t[0][0],de[0]),t[0][1]=Math.min(t[0][1],de[1]),t[0][2]=Math.min(t[0][2],de[2]),t[1][0]=Math.max(t[1][0],de[0]),t[1][1]=Math.max(t[1][1],de[1]),t[1][2]=Math.max(t[1][2],de[2])}var qo=new g,Dl=new g,ft=new g,kl=new g,Kp=new g,zo=new G,Fl=new G;function Jn(t,e){if(t.lodMetricValue===0||Number.isNaN(t.lodMetricValue))return"DIG";let r=2*Bo(t,e);if(r<2)return"OUT";if(!t.header.children)return"DRAW";switch(t.lodMetricType){case"screenSpaceRelative":{let n=e.topDownViewport.height||1;return r/n<=t.lodMetricValue?"DRAW":"DIG"}case"distanceRangeFromDefaultCamera":return t.distanceToTile(e)>=t.lodMetricValue?"DRAW":"DIG";case"maxScreenThresholdSQ":{let n=Math.sqrt(t.lodMetricValue/(Math.PI*.25));return r<=n?"DRAW":"DIG"}default:return r<=t.lodMetricValue?"DRAW":"DIG"}}function Bo(t,e){let{topDownViewport:r}=e,n=t.header.i3sLodMbs||t.header.mbs,i=n[1],o=n[0],s=n[2],a=n[3],c=[...t.boundingVolume.center],l=r.unprojectPosition(r.cameraPosition);N.WGS84.cartographicToCartesian(l,qo),Dl.copy(qo).subtract(c).normalize(),N.WGS84.eastNorthUpToFixedFrame(c,zo),Fl.copy(zo).invert(),ft.copy(qo).transform(Fl);let h=Math.sqrt(ft[0]*ft[0]+ft[1]*ft[1]),u=h*h/ft[2];kl.copy([ft[0],ft[1],u]);let d=kl.transform(zo).subtract(c).normalize(),_=Dl.cross(d).normalize().scale(a).add(c),p=N.WGS84.cartesianToCartographic(_),M=r.project([o,i,s]),y=r.project(p);return Kp.copy(M).subtract(y).magnitude()}var wr=class{_map=new Map;_array;_length;constructor(e=0){this._array=new Array(e),this._length=e}get length(){return this._length}set length(e){this._length=e,e>this._array.length&&(this._array.length=e)}get values(){return this._array}get(e){return ke(e<this._array.length),this._array[e]}set(e,r){ke(e>=0),e>=this.length&&(this.length=e+1),this._map.has(this._array[e])&&this._map.delete(this._array[e]),this._array[e]=r,this._map.set(r,e)}delete(e){let r=this._map.get(e);r>=0&&(this._array.splice(r,1),this._map.delete(e),this.length--)}peek(){return this._array[this._length-1]}push(e){if(!this._map.has(e)){let r=this.length++;this._array[r]=e,this._map.set(e,r)}}pop(){let e=this._array[--this.length];return this._map.delete(e),e}reserve(e){ke(e>=0),e>this._array.length&&(this._array.length=e)}resize(e){ke(e>=0),this.length=e}trim(e){e==null&&(e=this.length),this._array.length=e}reset(){this._array=[],this._map=new Map,this._length=0}find(e){return this._map.has(e)}};var Xp={loadSiblings:!1,skipLevelOfDetail:!1,baseScreenSpaceError:1024,skipScreenSpaceErrorFactor:16,skipLevels:1,immediatelyLoadDesiredLevelOfDetail:!1,updateTransforms:!0,onTraversalEnd:()=>{},viewportTraversersMap:{},basePath:""},Xe=class{options;disableSkipLevelOfDetail=!1;root=null;selectedTiles={};requestedTiles={};deferredTiles={};emptyTiles={};lastUpdate=new Date().getTime();updateDebounceTime=1e3;_traversalStack=new wr;_emptyTraversalStack=new wr;_frameNumber=null;traversalFinished(e){return!0}constructor(e){this.options={...Xp,...e}}isSkipLevelOfDetailEnabled(){return this.options.skipLevelOfDetail&&!this.disableSkipLevelOfDetail}traverse(e,r,n){this.root=e,this.options={...this.options,...n},this.reset(),this.updateTile(e,r),this._frameNumber=r.frameNumber,this.executeTraversal(e,r)}reset(){this.requestedTiles={},this.deferredTiles={},this.selectedTiles={},this.emptyTiles={},this._traversalStack.reset(),this._emptyTraversalStack.reset()}executeTraversal(e,r){let n=this._traversalStack;for(e._selectionDepth=1,n.push(e);n.length>0;){let i=n.pop(),o=!1;this.canTraverse(i,r)&&(this.updateChildTiles(i,r),o=this.updateAndPushChildren(i,r,n,i.hasRenderContent?i._selectionDepth+1:i._selectionDepth));let s=i.parent,a=!!(!s||s._shouldRefine),c=!o;i.hasRenderContent?i.refine===te.ADD?(this.loadTile(i,r),this.selectTile(i,r)):i.refine===te.REPLACE&&(this.loadTile(i,r),(c||this.isSkipLevelOfDetailEnabled())&&this.selectTile(i,r)):(this.emptyTiles[i.id]=i,this.loadTile(i,r),c&&this.selectTile(i,r)),this.touchTile(i,r),i._shouldRefine=o&&a}this.completeTraversal(r)}completeTraversal(e){let r=new Date().getTime();(this.traversalFinished(e)||r-this.lastUpdate>this.updateDebounceTime)&&(this.lastUpdate=r,this.options.onTraversalEnd(e))}updateChildTiles(e,r){let n=e.children;for(let i of n)this.updateTile(i,r)}updateAndPushChildren(e,r,n,i){let{loadSiblings:o}=this.options,s=this.isSkipLevelOfDetailEnabled(),a=e.children;a.sort(this.compareDistanceToCamera.bind(this));let c=e.refine===te.REPLACE&&e.hasRenderContent&&!s,l=!1,h=!0;for(let u of a)if(u._selectionDepth=i,u.isVisibleAndInRequestVolume?(n.find(u)&&n.delete(u),n.push(u),l=!0):(c||o)&&u._inRequestVolume&&(this.loadTile(u,r),this.touchTile(u,r)),c){let f;if(u._inRequestVolume?u.hasRenderContent?f=u.contentAvailable:f=this.executeEmptyTraversal(u,r):f=!1,h=h&&f,!h)return!1}return l||(h=!1),h}updateTile(e,r){this.updateTileVisibility(e,r)}selectTile(e,r){this.shouldSelectTile(e,r)&&(e._selectedFrame=r.frameNumber,this.selectedTiles[e.id]=e)}loadTile(e,r){if(this.shouldLoadTile(e)){if(this.shouldDeferTileRequest(e)){this.deferredTiles[e.id]=e;return}e._requestedFrame=r.frameNumber,e._priority=e._getPriority(),this.requestedTiles[e.id]=e}}shouldDeferTileRequest(e){return e.priorityDeferred}touchTile(e,r){e.tileset._cache.touch(e),e._touchedFrame=r.frameNumber}canTraverse(e,r){return e.hasChildren?e.hasTilesetContent?!e.contentExpired:this.shouldRefine(e,r):!1}shouldLoadTile(e){return e.hasUnloadedContent||e.contentExpired}shouldSelectTile(e,r){return e.contentAvailable&&e.contentVisibility(r)!=="outside"}shouldRefine(e,r,n=!1){let i=e._screenSpaceError;return n&&(i=e.getScreenSpaceError(r,!0)),i>e.tileset.memoryAdjustedScreenSpaceError}updateTileVisibility(e,r){let n=[];if(this.options.viewportTraversersMap)for(let i in this.options.viewportTraversersMap)this.options.viewportTraversersMap[i]===r.viewport.id&&n.push(i);else n.push(r.viewport.id);e.updateVisibility(r,n)}compareDistanceToCamera(e,r){return e._distanceToCamera-r._distanceToCamera}anyChildrenVisible(e,r){let n=!1;for(let i of e.children)i.updateVisibility(r),n=n||i.isVisibleAndInRequestVolume;return n}executeEmptyTraversal(e,r){let n=!0,i=!1,o=this._emptyTraversalStack;for(o.push(e);o.length>0;){let s=o.pop(),a=!s.hasRenderContent&&this.canTraverse(s,r),c=!s.hasRenderContent&&s.children.length===0;if(s.header.implicitSubtree&&(i=!0,n=!1),!a&&!s.contentAvailable&&!c&&(n=!1),this.updateTile(s,r),s.isVisibleAndInRequestVolume||(this.loadTile(s,r),this.touchTile(s,r)),a){let l=s.children;for(let h of l)o.push(h)}}return e.hasEmptyContent&&!i||n}};var Do=new g;function Zp(t,e,r,n,i=[]){let o=t.length?t:[e],s=!1,a=!1;for(let c of o){let l="inside";if(n!==se.MASK_INSIDE&&(l=r.computeVisibility(c),l==="outside"))continue;let h=!1;for(let u of i)if(c.intersectPlane(u)==="outside"){h=!0;break}h||(s=!0,a=a||l==="intersecting")}return s?a?"intersecting":"inside":"outside"}function Ul(t){if(!t||typeof t!="object")return!1;let e=t;return e.shape==="tileset3d"||e.type==="tileset3d"||!!e.tileset}function Qp(t){return t!=null}var Pe=class{tileset;header;id;url;parent;refine;type;contentUrl;contentUrls=[];lodMetricType="geometricError";lodMetricValue=0;_unscaledLodMetricValue=0;_scaleGeometricError=!0;boundingVolume=null;content=null;contents=[];contentEntries=[];metadataContext={};featureIdSets=[];vectorContent=null;metadata=null;contentMetadata=[];contentState=ae.UNLOADED;gpuMemoryUsageInBytes=0;children=[];childrenState="ready";depth=0;viewportIds=[];transform=new G;extensions=null;implicitTiling=null;userData={};computedTransform;hasEmptyContent=!1;hasTilesetContent=!1;traverser=new Xe({});_cacheNode=null;_frameNumber=null;_expireDate=null;_expiredContent=null;_childrenPromise=null;_boundingBox=void 0;_distanceToCamera=0;_screenSpaceError=0;_screenSpaceErrorProgressiveResolution=0;_priorityProgressiveResolution=!1;_foveatedFactor=0;priorityDeferred=!1;_visibilityPlaneMask;_visible=void 0;_contentBoundingVolume;_contentBoundingVolumes=[];_contentBoundingVolumeHeaders=[];_viewerRequestVolume;get contentBoundingVolume(){return this._contentBoundingVolume}get contentBoundingVolumes(){return this._contentBoundingVolumes}get viewerRequestVolume(){return this._viewerRequestVolume}_initialTransform=new G;_priority=0;_selectedFrame=0;_requestedFrame=0;_selectionDepth=0;_touchedFrame=0;_centerZDepth=0;_shouldRefine=!1;_stackLength=0;_visitedFrame=0;_inRequestVolume=!1;_lodJudge=null;tileDrawn=!0;constructor(e,r,n,i=""){this.header=r,this.tileset=e,this.id=i||r.id,this.url=r.url,this.parent=n,this.refine=this._getRefine(r.refine),this.type=r.type,this.contentUrl=r.contentUrl,this.contentUrls=r.contentUrls||(r.contentUrl?[r.contentUrl]:[]),this._initializeMetadata(r),this.childrenState=r.implicitSubtree?"unloaded":"ready",this._initializeLodMetric(r),this._initializeTransforms(r),this._updateLodMetricScale(),this._initializeBoundingVolumes(r),this._initializeContent(r),this._initializeContentEntries(r),this._initializeRenderingState(r),Object.seal(this)}destroy(){this.header=null}isDestroyed(){return this.header===null}get selected(){return this._selectedFrame===this.tileset._frameNumber}get isVisible(){return this._visible}get isVisibleAndInRequestVolume(){return this._visible&&this._inRequestVolume}get hasRenderContent(){return!this.hasEmptyContent&&!this.hasTilesetContent}get hasChildren(){return this.children.length>0||this.header.children&&this.header.children.length>0||!!(this.header.implicitSubtree&&this.childrenState!=="ready")}get hasUnloadedChildren(){return!!(this.header.implicitSubtree&&(this.childrenState==="unloaded"||this.childrenState==="failed"))}get childrenLoading(){return this.childrenState==="loading"}get contentReady(){return this.contentState===ae.READY||this.hasEmptyContent}get contentAvailable(){return!!(this.contentReady&&this.hasRenderContent||this._expiredContent&&!this.contentFailed)}get hasUnloadedContent(){return this.hasRenderContent&&this.contentUnloaded}get contentUnloaded(){return this.contentState===ae.UNLOADED}get contentExpired(){return this.contentState===ae.EXPIRED}get contentFailed(){return this.contentState===ae.FAILED}get distanceToCamera(){return this._distanceToCamera}get screenSpaceError(){return this._screenSpaceError}get boundingBox(){return this._boundingBox||(this._boundingBox=ql(this.header.boundingVolume,this.boundingVolume,!this.computedTransform.equals(this._initialTransform))),this._boundingBox}getScreenSpaceError(e,r,n=1){switch(this.tileset.type){case he.I3S:return Bo(this,e);case he.TILES3D:return hl(this,e,r,n);default:throw new Error("Unsupported tileset type")}}unselect(){this._selectedFrame=0}_getGpuMemoryUsageInBytes(){return(this.contents.length?this.contents:[this.content]).reduce((r,n)=>r+(n?.gpuMemoryUsageInBytes||n?.byteLength||0),0)}_getPriority(){return this._calculateRequestPriority(!1)}_getChildrenPriority(){return this._calculateRequestPriority(!0)}_calculateRequestPriority(e){let r=this.tileset._traverser,n=r.options.skipLevelOfDetail&&!r.disableSkipLevelOfDetail,i=this.refine===te.ADD||n;if(i&&!this.isVisible&&this._visible!==void 0||this.tileset._frameNumber-this._touchedFrame>=1||this.priorityDeferred||!e&&this.contentState===ae.UNLOADED)return-1;let o=this.parent,a=o&&(!i||this._screenSpaceError===0||o.hasTilesetContent)?o._screenSpaceError:this._screenSpaceError,c=r.root?r.root._screenSpaceError:0,l=Math.max(c-a,0);return yl({priorityProgressiveResolution:this._priorityProgressiveResolution,foveatedFactor:this._foveatedFactor,reverseScreenSpaceError:l,rootScreenSpaceError:c})}async loadContent(){if(this.hasEmptyContent)return{loaded:!1};if(this.content)return{loaded:!0};this.contentExpired&&(this._expireDate=null),this.contentState=ae.LOADING;let r=await this.tileset._requestScheduler.scheduleRequest(this.id,this._getPriority.bind(this));if(!r)return this.contentState=ae.UNLOADED,{loaded:!1};try{return await this._loadContentFromSource()}catch(n){throw this.contentState=ae.FAILED,n}finally{r.done()}}async loadContentForTraversal(){if(this.hasEmptyContent)return{loaded:!1};if(this.content)return{loaded:!0,contents:this.contents};this.contentState=ae.LOADING;try{return await this._loadContentFromSource()}catch(e){throw this.contentState=ae.FAILED,e}}async _loadContentFromSource(){let e=await this.tileset.source.loadTileContent(this);return e.contents&&(this.contents=e.contents,this.content=this.contents[0]||null),this.vectorContent=this.contents.find(r=>!!r?.vectorContent)?.vectorContent||null,this.tileset.options.contentLoader&&await this.tileset.options.contentLoader(this),this.contentState=ae.READY,this._onContentLoaded(),this._updateContentEntriesAfterLoad(e),e}async loadChildren(e){if(!this.header.implicitSubtree||this.childrenState==="ready")return{loaded:!1,tileCount:0,childSubtreeCount:0};if(this._childrenPromise)return await this._childrenPromise;if(!this.tileset.source.loadTileChildren)throw new Error("Tileset source does not support lazy tile children");this.childrenState="loading",this._childrenPromise=this._loadChildrenWithScheduler(e);try{return await this._childrenPromise}finally{this._childrenPromise=null}}async _loadChildrenWithScheduler(e){let r=await this.tileset._requestScheduler.scheduleRequest(`${this.id}:implicit-subtree`,this._getChildrenPriority.bind(this));if(!r)return this.childrenState="unloaded",{loaded:!1,tileCount:0,childSubtreeCount:0};try{let n=await this.tileset.source.loadTileChildren(this,e);return this.childrenState=n.loaded?"ready":"unloaded",n}catch(n){throw this.childrenState="failed",n}finally{r.done()}}applyImplicitSubtreeHeader(e){let r=this.header.transform,n=this.header.transformMatrix,i=e.transform!==void 0;this.header={...this.header,...e,transform:i?e.transform:r,transformMatrix:i?e.transformMatrix:n,implicitSubtree:void 0},i&&this._initializeTransforms(this.header),this.refine=this._getRefine(e.refine),this.type=e.type,this.contentUrl=e.contentUrl,this.contentUrls=e.contentUrls||(e.contentUrl?[e.contentUrl]:[]),this._initializeMetadata(this.header),this._initializeLodMetric(e),this._updateLodMetricScale(),this._initializeBoundingVolumes(this.header),this._boundingBox=void 0,this._initializeContent(this.header),this._initializeContentEntries(this.header)}_initializeMetadata(e){this.metadata=e.metadata||null;let r=Array.isArray(e.content)?e.content:[e.content];this.contentMetadata=r.filter(Boolean).map(a=>a.metadata||null);let i=(r.find(Boolean)||{}).group,o=typeof i=="number"?this.tileset.groups?.[i]||null:i||null,s={tileset:this.tileset.metadata||null,group:o,tile:this.metadata,content:this.contentMetadata[0]||null,subtree:e.implicitMetadata||null};this.tileset.groups&&(s.groups=this.tileset.groups),this.metadataContext=s}_updateContentEntriesAfterLoad(e){if(e.contentEntries){this.contentEntries=e.contentEntries.map((r,n)=>({...r,index:n,boundingVolume:r.boundingVolume||this._contentBoundingVolumes[n]||this.boundingVolume,payload:r.payload??this.contents[n]??null,featureIds:r.featureIds?.length?r.featureIds:Zn(r.payload??this.contents[n]),renderable:!!(r.renderable!==!1&&(r.payload??this.contents[n])&&!Ul(r.payload??this.contents[n]))})),this.featureIdSets=this.contentEntries.flatMap(r=>r.featureIds);return}this.contentEntries=this.contentEntries.map((r,n)=>({...r,payload:this.contents[n]??null,featureIds:Zn(this.contents[n]),renderable:!!this.contents[n]&&!Ul(this.contents[n])})),this.featureIdSets=this.contentEntries.flatMap(r=>r.featureIds)}getContentEntry(e){return this.contentEntries[e]||null}isContentRenderable(e){return!!this.contentEntries[e]?.renderable}_initializeContentEntries(e){let r=Array.isArray(e.content)?e.content:e.content?[e.content]:[];this.contentEntries=r.map((n,i)=>{let o=n||{};return{index:i,uri:this.contentUrls[i]||o.uri||o.url,group:o.group,type:o.type,payload:null,metadata:o.metadata||null,boundingVolume:this._contentBoundingVolumes[i]||this.boundingVolume,featureIds:this._getFeatureIdSets(o),renderable:!1}})}_getFeatureIdSets(e){return Zn(e)}unloadContent(){for(let e of this.contents.length?this.contents:[this.content])e&&e.destroy&&e.destroy();return this.contents=[],this.content=null,this.vectorContent=null,this.contentEntries=this.contentEntries.map(e=>({...e,payload:null,renderable:!1})),this.featureIdSets=this.contentEntries.flatMap(e=>e.featureIds),this.header.content&&this.header.content.destroy&&this.header.content.destroy(),this.header.content=null,this.contentState=ae.UNLOADED,this.tileDrawn=!0,!0}updateVisibility(e,r){if(this._frameNumber===e.frameNumber)return;let n=this.parent,i=n?n._visibilityPlaneMask:se.MASK_INDETERMINATE;if(this.tileset._traverser.options.updateTransforms){let o=n?n.computedTransform:this.tileset.modelMatrix;this._updateTransform(o)}this._distanceToCamera=this.distanceToTile(e),this._screenSpaceError=this.getScreenSpaceError(e,!1),this._updateRequestPriorityMetrics(e),this._visibilityPlaneMask=this.visibility(e,i),this._visible=this._visibilityPlaneMask!==se.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(e),this._frameNumber=e.frameNumber,this.viewportIds=r}_updateRequestPriorityMetrics(e){if(this.tileset.type!==he.TILES3D){this._screenSpaceErrorProgressiveResolution=this._screenSpaceError,this._priorityProgressiveResolution=!1,this._foveatedFactor=0,this.priorityDeferred=!1;return}let r=this.tileset.options,n=r.progressiveResolutionHeightFraction;if(this._screenSpaceErrorProgressiveResolution=this.getScreenSpaceError(e,!1,n),this._priorityProgressiveResolution=gl(this._screenSpaceErrorProgressiveResolution,this.parent?._screenSpaceErrorProgressiveResolution,this.tileset.memoryAdjustedScreenSpaceError,n),!r.foveatedScreenSpaceError||e.viewport?.orthographic||!e.camera?.position||!e.camera?.direction){this._foveatedFactor=0,this.priorityDeferred=!1;return}this._foveatedFactor=pl(this.boundingVolume,e.camera);let i=this.tileset._traverser,o=i.options.skipLevelOfDetail&&!i.disableSkipLevelOfDetail,s=_l({refinement:this.refine,skipLevelOfDetail:o,foveatedScreenSpaceError:r.foveatedScreenSpaceError,foveatedConeSize:r.foveatedConeSize,minimumScreenSpaceErrorRelaxation:r.foveatedMinimumScreenSpaceErrorRelaxation,interpolationCallback:r.foveatedInterpolationCallback,foveatedFactor:this._foveatedFactor,verticalFieldOfView:e.camera.verticalFieldOfView,screenSpaceError:this._screenSpaceError,parentScreenSpaceError:this.parent?._screenSpaceError,maximumScreenSpaceError:this.tileset.memoryAdjustedScreenSpaceError,priorityProgressiveResolution:this._priorityProgressiveResolution});this.priorityDeferred=Ml(s,e.camera.timeSinceMovement,r.foveatedTimeDelay)}visibility(e,r){let{cullingVolume:n}=e,{boundingVolume:i}=this;return n.computeVisibilityWithPlaneMask(i,r)}contentVisibility(e,r){let n=r===void 0?this._contentBoundingVolumes:this._contentBoundingVolumes[r]?[this._contentBoundingVolumes[r]]:[];return Zp(n,this.boundingVolume,e.cullingVolume,this._visibilityPlaneMask,e.clippingPlanes)}distanceToTile(e){let r=this.boundingVolume;return Math.sqrt(Math.max(r.distanceSquaredTo(e.camera.position),0))}cameraSpaceZDepth({camera:e}){let r=this.boundingVolume;return Do.subVectors(r.center,e.position),e.direction.dot(Do)}insideViewerRequestVolume(e){let r=this._viewerRequestVolume;return!r||r.distanceSquaredTo(e.camera.position)<=0}updateExpiration(){if(Qp(this._expireDate)&&this.contentReady&&!this.hasEmptyContent){let e=Date.now();Date.lessThan(this._expireDate,e)&&(this.contentState=ae.EXPIRED,this._expiredContent=this.content)}}get extras(){return this.header.extras}_initializeLodMetric(e){this._scaleGeometricError=typeof e._scaleGeometricError=="boolean"?e._scaleGeometricError:this.parent?._scaleGeometricError??!0,"lodMetricType"in e?this.lodMetricType=e.lodMetricType:(this.lodMetricType=this.parent&&this.parent.lodMetricType||this.tileset.lodMetricType,console.warn("3D Tile: Required prop lodMetricType is undefined. Using parent lodMetricType")),"lodMetricValue"in e?this._unscaledLodMetricValue=e.lodMetricValue:(this._unscaledLodMetricValue=this.parent?this.parent._unscaledLodMetricValue:this.tileset.lodMetricValue,console.warn("3D Tile: Required prop lodMetricValue is undefined. Using parent lodMetricValue")),this.lodMetricValue=this._unscaledLodMetricValue}_initializeTransforms(e){this.transform=e.transform?new G(e.transform):new G;let r=this.parent,n=this.tileset,i=r&&r.computedTransform?r.computedTransform.clone():n.modelMatrix.clone();this.computedTransform=new G(i).multiplyRight(this.transform);let o=r&&r._initialTransform?r._initialTransform.clone():new G;this._initialTransform=new G(o).multiplyRight(this.transform)}_updateLodMetricScale(){if(this.lodMetricType!==Dt.GEOMETRIC_ERROR||!this._scaleGeometricError){this.lodMetricValue=this._unscaledLodMetricValue;return}let e=this.computedTransform.getScale(Do),r=Math.max(e[0],e[1],e[2]);this.lodMetricValue=this._unscaledLodMetricValue*r}_initializeBoundingVolumes(e){this._contentBoundingVolume=null,this._contentBoundingVolumeHeaders=[],this._viewerRequestVolume=null,this._updateBoundingVolume(e)}_initializeContent(e){this.content={_tileset:this.tileset,_tile:this},this.contents=[],this.hasEmptyContent=!0,this.contentState=ae.UNLOADED,this.hasTilesetContent=!1,(e.contentUrl||e.contentUrls?.length)&&(this.content=null,this.hasEmptyContent=!1)}_initializeRenderingState(e){this.depth=e.level||(this.parent?this.parent.depth+1:0),this._shouldRefine=!1,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._screenSpaceErrorProgressiveResolution=0,this._priorityProgressiveResolution=!1,this._foveatedFactor=0,this.priorityDeferred=!1,this._visibilityPlaneMask=se.MASK_INDETERMINATE,this._visible=void 0,this._inRequestVolume=!1,this._stackLength=0,this._selectionDepth=0,this._frameNumber=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._requestedFrame=0,this._priority=0}_getRefine(e){return e||this.parent&&this.parent.refine||te.REPLACE}_isTileset(){return(this.contents.length?this.contents:[this.content]).some(e=>e?.shape==="tileset3d")}_onContentLoaded(){let e=this.contents.length?this.contents:[this.content];for(let r of e)switch(r&&r.type){case"vctr":case"geom":this.tileset._traverser.disableSkipLevelOfDetail=!0;break;default:}this._isTileset()?this.hasTilesetContent=!0:this.gpuMemoryUsageInBytes=this._getGpuMemoryUsageInBytes()}_updateBoundingVolume(e){this._boundingBox=void 0,this.boundingVolume=Ut(e.boundingVolume,this.computedTransform,this.boundingVolume,this._initialTransform),e.viewerRequestVolume&&(this._viewerRequestVolume=Ut(e.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume,this._initialTransform));let r=e.content;r&&(this._contentBoundingVolumeHeaders=Array.isArray(r)?r:[r]);let n=r?Array.isArray(r)?r:[r]:this._contentBoundingVolumeHeaders;this._contentBoundingVolumes=n.length?n.map(i=>i?.boundingVolume?Ut(i.boundingVolume,this.computedTransform,void 0,this._initialTransform):this.boundingVolume):[this.boundingVolume],this._contentBoundingVolume=this._contentBoundingVolumes[0]||null}_updateTransform(e=new G){let r=e.clone().multiplyRight(this.transform);r.equals(this.computedTransform)||(this.computedTransform=r,this._updateLodMetricScale(),this._updateBoundingVolume(this.header))}};var ei=class extends Xe{pendingImplicitSubtrees=new Map;traversalFinished(e){let r=`${e.viewport.id}:`;for(let[n,i]of this.pendingImplicitSubtrees)if(n.startsWith(r)&&i===e.frameNumber)return!1;return!0}executeTraversal(e,r){if(!this.isSkipLevelOfDetailEnabled()){super.executeTraversal(e,r);return}this.executeSkipTraversal(e,r)}executeSkipTraversal(e,r){let n=[e];for(e._selectionDepth=e.parent?e.parent._selectionDepth:1;n.length>0;){let i=n.pop(),o=!i.parent||i.parent._shouldRefine,s=this.canTraverse(i,r)&&this.updateAndPushSkipChildren(i,r,n)&&o,a=!s&&o;i.hasRenderContent?i.refine===te.ADD?(this.loadTile(i,r),this.selectDesiredTile(i,r)):i.refine===te.REPLACE&&(this.isInBaseTraversal(i,r)?(this.loadTile(i,r),a&&this.selectDesiredTile(i,r)):a?(this.loadTile(i,r),this.selectDesiredTile(i,r)):this.hasReachedSkippingThreshold(i,r)&&this.loadTile(i,r)):(this.emptyTiles[i.id]=i,this.loadTile(i,r),a&&this.selectDesiredTile(i,r)),this.touchTile(i,r),i._shouldRefine=s}this.completeTraversal(r)}updateAndPushSkipChildren(e,r,n){this.updateChildTiles(e,r),e.children.sort(this.compareDistanceToCamera.bind(this));let i=!1;for(let o of e.children)o._selectionDepth=e.hasRenderContent?e._selectionDepth+1:e._selectionDepth,o.isVisibleAndInRequestVolume?(n.push(o),i=!0):this.options.loadSiblings&&(this.loadTile(o,r),this.touchTile(o,r));return i}isInBaseTraversal(e,r){if(this.options.immediatelyLoadDesiredLevelOfDetail)return!1;if(!this.findNearestRequestedOrLoadedAncestor(e,r))return!0;let n=Number.isFinite(this.options.baseScreenSpaceError)?Math.max(this.options.baseScreenSpaceError,0):1024,i=Math.max(n,e.tileset.memoryAdjustedScreenSpaceError);return e._screenSpaceError===0&&e.parent?e.parent._screenSpaceError>i:e._screenSpaceError>i}hasReachedSkippingThreshold(e,r){if(this.options.immediatelyLoadDesiredLevelOfDetail)return!1;if(e._priorityProgressiveResolution&&e._screenSpaceErrorProgressiveResolution<=e.tileset.memoryAdjustedScreenSpaceError&&!!(e.parent&&e.parent._screenSpaceErrorProgressiveResolution>e.tileset.memoryAdjustedScreenSpaceError))return!0;let i=this.findNearestRequestedOrLoadedAncestor(e,r);if(!i)return!1;let o=Number.isFinite(this.options.skipScreenSpaceErrorFactor)&&this.options.skipScreenSpaceErrorFactor>0?this.options.skipScreenSpaceErrorFactor:16,s=Number.isFinite(this.options.skipLevels)?Math.max(Math.floor(this.options.skipLevels),0):1;return e._screenSpaceError<i._screenSpaceError/o&&e.depth>i.depth+s}findNearestRequestedOrLoadedAncestor(e,r){let n=e.parent;for(;n;){if(n.hasRenderContent&&!n.contentFailed&&(!n.hasUnloadedContent||n._requestedFrame===r.frameNumber))return n;n=n.parent}return null}selectDesiredTile(e,r){let n=e;for(;n;){if(this.shouldSelectTile(n,r)){this.selectTile(n,r);return}n=n.parent}this.selectLoadedDescendants(e,r)}selectLoadedDescendants(e,r){let n=[{tile:e,depth:0}];for(;n.length>0;){let{tile:i,depth:o}=n.pop();for(let s of i.children)this.updateTile(s,r),s.isVisibleAndInRequestVolume&&(s.contentAvailable?(this.selectTile(s,r),this.touchTile(s,r)):o<1&&n.push({tile:s,depth:o+1}))}}compareDistanceToCamera(e,r){return r._distanceToCamera===0&&e._distanceToCamera===0?r._centerZDepth-e._centerZDepth:r._distanceToCamera-e._distanceToCamera}updateChildTiles(e,r){let n=e.header.implicitSubtree?.coordinates.level===0;if(e.hasUnloadedChildren&&e.isVisibleAndInRequestVolume&&(n||this.shouldRefine(e,r))){let i=`${r.viewport.id}:${e.id}`;this.pendingImplicitSubtrees.has(i)||(this.pendingImplicitSubtrees.set(i,r.frameNumber),e.tileset._loadTileChildren(e,r).finally(()=>{this.handleImplicitSubtreeLoad(e,r,i)}))}super.updateChildTiles(e,r)}handleImplicitSubtreeLoad(e,r,n){this.pendingImplicitSubtrees.delete(n),this._frameNumber===r.frameNumber&&(e.childrenState==="ready"?this.executeTraversal(e,r):this.traversalFinished(r)&&this.options.onTraversalEnd(r))}updateTileVisibility(e,r){if(super.updateTileVisibility(e,r),!e.isVisibleAndInRequestVolume)return;let n=e.children.length>0;if(e.hasTilesetContent&&n){let s=e.children[0];this.updateTileVisibility(s,r),e._visible=s._visible;return}if(this.meetsScreenSpaceErrorEarly(e,r)){e._visible=!1;return}let i=e.refine===te.REPLACE,o=e._optimChildrenWithinParent===ul.USE_OPTIMIZATION;if(i&&o&&n&&!this.anyChildrenVisible(e,r)){e._visible=!1;return}}meetsScreenSpaceErrorEarly(e,r){let{parent:n}=e;return!n||n.hasTilesetContent||n.refine!==te.ADD?!1:!this.shouldRefine(e,r,!0)}};var Jp=6378137,e1=6378137,ko=6356752314245179e-9,Vt=new g;function Vl(t,e){if(t instanceof Ye){let{halfAxes:r}=t,n=t1(r);return Math.log2(ko/(n+e[2]))}else if(t instanceof fe){let{radius:r}=t;return Math.log2(ko/(r+e[2]))}else if(t.width&&t.height){let{width:r,height:n}=t,i=Math.log2(Jp/r),o=Math.log2(e1/n);return(i+o)/2}return 1}function Fo(t,e,r){N.WGS84.cartographicToCartesian([t.xmax,t.ymax,t.zmax],Vt);let n=Math.sqrt(Math.pow(Vt[0]-r[0],2)+Math.pow(Vt[1]-r[1],2)+Math.pow(Vt[2]-r[2],2));return Math.log2(ko/(n+e[2]))}function jl(t,e,r){let[n,i,o,s]=t;return Fo({xmin:n,xmax:o,ymin:i,ymax:s,zmin:0,zmax:0},e,r)}function t1(t){t.getColumn(0,Vt);let e=t.getColumn(1),r=t.getColumn(2);return Vt.add(e).add(r).len()}var r1=Object.freeze({meter:1,millimeter:.001,centimeter:.01,decimeter:.1,kilometer:1e3,foot:.3048,yard:.9144,mile:1609.344,"us-foot":.3048006096012192,"us-inch":.0254000508001016,"us-yard":.9144018288036576,"us-mile":1609.3472186944373,"clarke-foot":.3047972654,"clarke-yard":.9143917962,"clarke-link":.201166195164,"sears-yard":.914398414616,"sears-foot":.304799471539,"sears-chain":20.1167651216,"sears-1922-truncated-chain":20.116756,"benoit-1895-b-chain":20.1167824944,"indian-yard":.914398530744,"indian-1937-yard":.91439523,"gold-coast-foot":.304799710181}),n1=Object.freeze({m:"meter",metre:"meter",meters:"meter",metres:"meter",mm:"millimeter",millimetre:"millimeter",millimeters:"millimeter",millimetres:"millimeter",cm:"centimeter",centimetre:"centimeter",centimeters:"centimeter",centimetres:"centimeter",dm:"decimeter",decimetre:"decimeter",decimeters:"decimeter",decimetres:"decimeter",km:"kilometer",kilometre:"kilometer",kilometers:"kilometer",kilometres:"kilometer",ft:"foot",feet:"foot","us-survey-foot":"us-foot","us-survey-feet":"us-foot",yd:"yard",yards:"yard",mi:"mile",miles:"mile"});function Er(t){if(!t)return;let e=t.trim().toLowerCase().replaceAll("_","-"),r=n1[e]||e;return r1[r]}function Wl(t,e){return e!==void 0?Number.isFinite(e)&&e>0?e:void 0:t?Er(t):1}function ti(t){let e=t.spatialReference||t.fullExtent?.spatialReference,r=c1(e),n=t.heightModelInfo?.vertCRS||l1(e),i=t.heightModelInfo?.heightModel,o=t.heightModelInfo?.heightUnit,s=Wl(o,t.ZFactor),a=i==="ellipsoidal"?"ellipsoidal":i==="gravity_related_height"?"orthometric":"unknown",c=Yl(e),l=c===void 0?r?_e(r):"unknown":_e(`EPSG:${c}`),h=i1(l,o,t.ZFactor),u=[],f=o1(t.elevationInfo?.mode),d=t.elevationInfo?t.elevationInfo.unit||"meter":void 0,m=Er(d);return s===void 0&&u.push(t.ZFactor!==void 0?`I3S ZFactor ${t.ZFactor} is not a positive finite conversion factor`:`Unsupported I3S vertical unit ${o}`),t.elevationInfo&&m===void 0&&u.push(`Unsupported I3S elevation unit ${d}`),t.elevationInfo?.mode&&!f&&u.push(`Unsupported I3S elevation mode ${t.elevationInfo.mode}`),f&&f!=="absoluteHeight"&&u.push(`I3S elevation mode ${f} requires a terrain or scene elevation provider`),ve({sourceCrs:r,sourceCrsRepresentation:c!==void 0?"identifier":r?"wkt":void 0,sourceCrsAlternatives:c!==void 0&&e?.wkt?[{definition:e.wkt,representation:"wkt"}]:void 0,verticalCrs:n,units:h,verticalUnitScale:s??Number.NaN,heightReference:a,elevationMode:f,elevationOffset:t.elevationInfo?.offset,elevationUnit:d,elevationUnitScale:t.elevationInfo?.mode&&!f?Number.NaN:m??(t.elevationInfo?Number.NaN:1),coordinateFrame:l,axisOrder:r?"xyz":"unknown",provenance:r?"metadata":"unknown",warnings:u})}function i1(t,e,r){if(t==="geocentric")return["meter","meter","meter"];if(t==="geographic"&&(e||r===void 0))return["degree","degree",e||"meter"]}function o1(t){switch(t){case"absoluteHeight":case"onTheGround":case"relativeToGround":case"relativeToScene":return t;default:return}}function ri(t){let e=s1(t);if(e)return e;let r=Hl(t,"TILESET_CRS_GEOCENTRIC"),n=Hl(t,"TILESET_CRS_COORDINATE_EPOCH"),i=[],o,s="unknown",a;typeof r=="string"&&r.toUpperCase()!=="UNKNOWN"?(o=r,s="metadata",a="explicit"):r!==void 0?(i.push("3D Tiles geocentric CRS is explicitly unknown"),s="metadata",a="unknown"):t.root?.boundingVolume?.region?(o="EPSG:4978",s="format-default",a="default"):t.schemaUri&&!t.schema&&i.push("External 3D Tiles metadata schema must be loaded before CRS semantics can resolve");let c=$l(n);return n!==void 0&&c===void 0&&i.push("3D Tiles coordinate epoch is not a finite decimal year"),ve({sourceCrs:o,sourceCrsState:a,sourceCrsRepresentation:o?"identifier":void 0,coordinateEpoch:c,heightReference:o?"ellipsoidal":"unknown",coordinateFrame:o?"geocentric":"unknown",axisOrder:o?"xyz":"unknown",provenance:s,warnings:i})}function s1(t){let e=t.extensions?.EXT_geospatial_crs;if(!e)return;let r=[],n,i,o,s;if(e.format==="wkid"){let h=e.extensions?.EXT_geospatial_crs_wkid;typeof h?.authority=="string"&&Number.isInteger(h.wkid)?(n=`${h.authority}:${h.wkid}`,s="identifier",Number.isInteger(h.vcsWkid)&&(i=`${h.authority}:${h.vcsWkid}`),o=$l(h.epoch),h.epoch!==void 0&&o===void 0&&r.push("EXT_geospatial_crs_wkid epoch is not a finite decimal year")):r.push("EXT_geospatial_crs_wkid requires string authority and integer wkid")}else if(e.format==="wkt2"){let h=e.extensions?.EXT_geospatial_crs_wkt2;typeof h?.wkt2=="string"&&h.wkt2.trim()?(n=h.wkt2,s="wkt"):r.push("EXT_geospatial_crs_wkt2 requires a nonempty wkt2 string")}else r.push(`Unsupported EXT_geospatial_crs format ${String(e.format)}`);let a=s==="wkt"?_e(n):Ro(n)||"unknown",c=a1(i);i&&!c&&r.push(`Unsupported vertical CRS ${String(i)}; vertical unit and height reference are unknown`);let l=i?c?.unit:"meter";return ve({sourceCrs:n,sourceCrsState:n?"explicit":"unknown",sourceCrsRepresentation:s,verticalCrs:i,coordinateEpoch:o,units:a==="geocentric"?["meter","meter","meter"]:a==="geographic"&&l?["degree","degree",l]:void 0,verticalUnitScale:i?c?.verticalUnitScale??Number.NaN:1,heightReference:i?c?.heightReference??"unknown":n?"ellipsoidal":"unknown",coordinateFrame:a,axisOrder:n?"xyz":"unknown",provenance:"metadata",warnings:r})}function a1(t){if(typeof t!="string")return;let e=/^EPSG:(\d+)$/i.exec(t);if(e)switch(Number(e[1])){case 5702:case 6360:return{unit:"us-foot",verticalUnitScale:1200/3937,heightReference:"orthometric"};case 5703:return{unit:"meter",verticalUnitScale:1,heightReference:"orthometric"};default:return}}function $l(t){if(typeof t!="string"&&typeof t!="number"||typeof t=="string"&&!t.trim())return;let e=Number(t);return Number.isFinite(e)?e:void 0}function c1(t){let e=Yl(t);return e!==void 0?`EPSG:${e}`:t?.wkt}function l1(t){let e=t?.latestVcsWkid??t?.vcsWkid;return e===void 0?void 0:`EPSG:${e}`}function Yl(t){return t?.latestWkid??t?.wkid}function Hl(t,e){let r=t.metadata?.class;if(!r)return;let i=t.schema?.classes?.[r]?.properties,o=t.metadata?.properties;for(let[s,a]of Object.entries(i||{}))if(a.semantic===e)return o?.[s]}var Uo=Symbol.for("@math.gl/proj4/projection-implementations");function Vo(){let t=globalThis;return t[Uo]||(t[Uo]=new WeakMap),t[Uo]}function Kl(t){return"create"in t?t:Vo().get(t)?.implementation}function Xl(t){if("create"in t)return Promise.resolve(t);let e=Vo().get(t);if(e||(e={load:()=>t.preload()},Vo().set(t,e)),e.implementation)return Promise.resolve(e.implementation);let r=e;return r.pending||(r.pending=Promise.resolve().then(r.load).then(n=>{let i=s=>s.toLowerCase().replace(/[\s_-]/g,""),o=new Set([n.name,...n.aliases||[]].map(i));if(typeof n.create!="function"||![t.name,...t.aliases||[]].every(s=>o.has(i(s))))throw new Error("Loaded projection does not match descriptor: "+t.name);return r.implementation=n,n}).catch(n=>{throw r.pending=void 0,n})),r.pending}function Ge(t,e){return{forward(r,n){let i={x:r,y:n,z:0};return t(i),[i.x,i.y]},inverse(r,n){let i={x:r,y:n,z:0};return e(i),[i.x,i.y]},forwardInPlace:t,inverseInPlace:e}}function ct(t,e,r=!1){let n=e?t.inverseInPlace:t.forwardInPlace;if(n)return n.bind(t);if(r){let o=e?t.inverse3D:t.forward3D;return s=>{let a=o.call(t,[s.x,s.y,s.z]);s.x=a[0],s.y=a[1],s.z=a[2]}}let i=e?t.inverse:t.forward;return o=>{let s=i.call(t,o.x,o.y);o.x=s[0],o.y=s[1]}}var Zl,Ql=Symbol.for("@math.gl/proj4/TypeScriptCRSError"),Re=class t extends Error{static[(Zl=Ql,Symbol.hasInstance)](e){return this!==t?Function.prototype[Symbol.hasInstance].call(this,e):e instanceof Error&&e[Ql]===!0}constructor(e,r){super(r),this.reason=e,this[Zl]=!0,this.name="TypeScriptCRSError"}};function D(t){throw new Re("missing-transform-stage",t)}function Jl(t,e){if(typeof t=="string"||"type"in t)return{definition:t,lossy:!1};let r=t,n="crs"in r?r:void 0,i="crs"in r?r.crs:r;if(i.state!=="explicit"&&i.state!=="default")throw new Re("unknown-syntax","Cannot transform an "+i.state+" CRS reference");let o=!1;return n?.coordinateEpoch!==void 0&&D("Coordinate epochs require a time-dependent transformation"),n?.vertical&&n.vertical.state!=="absent"&&(e.mode!=="horizontal"&&D("A separately declared vertical CRS requires explicit horizontal extraction"),o=!0),{definition:i.definition,spatialReference:n,lossy:o}}function eh(t,e){if(!e)return t;if(e.coordinateFrame!=="unknown"&&e.coordinateFrame!==t.kind)throw new Error("SpatialReference coordinate frame disagrees with its CRS");let r=e.coordinateOrder,n=t.kind==="geocentric"?{x:"e",y:"n",z:"u"}:{longitude:"e",lon:"e",latitude:"n",lat:"n",easting:"e",northing:"n",height:"u",altitude:"u",x:"e",y:"n",z:"u"},i;if(r.length&&(i=r.slice(0,3).map(o=>n[o.toLowerCase()]||"?").join(""),i.length===2&&(i+="u"),(i.length!==3||!i.includes("e")||!i.includes("n")||!i.includes("u"))&&D("Unsupported SpatialReference coordinate order"),(r.length>4||r.length>3&&!["m","measure"].includes(r[3]))&&D("Unsupported fourth coordinate component")),e.units?.length){let o={m:1,meter:1,metre:1,meters:1,metres:1,km:1e3,ft:.3048,"us-ft":.3048006096012192,degree:Math.PI/180,degrees:Math.PI/180,radian:1,radians:1,grad:Math.PI/200};for(let s=0;s<Math.min(e.units.length,3);s++){let a=(i||"enu")[s]==="u",c=t.kind==="geocentric"?t.toMeter:a?t.verticalUnit:t.kind==="geographic"?t.angularUnit:t.toMeter;(Math.abs((o[e.units[s]]??NaN)-c)>1e-12||o[e.units[s]]===void 0)&&D("SpatialReference units disagree with its CRS")}}return Object.freeze({...t,storedAxis:i})}var ee=Math.PI/180;function L(t,e,r){if(!Object.prototype.hasOwnProperty.call(t,e))return r;let n=t[e];if(typeof n!="string"||!/^[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/i.test(n))throw new Error(`Invalid numeric PROJ parameter: +${e}`);let i=Number(n);if(!Number.isFinite(i))throw new Error(`Invalid numeric PROJ parameter: +${e}`);return i}function Tr(t,e){let r=L(t,e,0);if(Math.abs(r)>=90)throw new Error(`+${e} must be between -90 and 90 degrees`);return r*ee}function qe(t){if(Math.abs(t)<=Math.PI)return t;let e=2*Math.PI;return((t+Math.PI)%e+e)%e-Math.PI}var ni={wgs84:{towgs84:"0,0,0",ellipse:"WGS84",datumName:"WGS84"},ch1903:{towgs84:"674.374,15.056,405.346",ellipse:"bessel",datumName:"swiss"},ggrs87:{towgs84:"-199.87,74.79,246.62",ellipse:"GRS80",datumName:"Greek_Geodetic_Reference_System_1987"},nad83:{towgs84:"0,0,0",ellipse:"GRS80",datumName:"North_American_Datum_1983"},nad27:{nadgrids:"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",ellipse:"clrk66",datumName:"North_American_Datum_1927"},potsdam:{towgs84:"598.1,73.7,418.2,0.202,0.045,-2.455,6.7",ellipse:"bessel",datumName:"Potsdam Rauenberg 1950 DHDN"},carthage:{towgs84:"-263.0,6.0,431.0",ellipse:"clrk80ign",datumName:"Carthage 1934 Tunisia"},hermannskogel:{towgs84:"577.326,90.129,463.919,5.137,1.474,5.297,2.4232",ellipse:"bessel",datumName:"Hermannskogel"},mgi:{towgs84:"577.326,90.129,463.919,5.137,1.474,5.297,2.4232",ellipse:"bessel",datumName:"Militar-Geographische Institut"},osni52:{towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"airy",datumName:"Irish National"},ire65:{towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"mod_airy",datumName:"Ireland 1965"},rassadiran:{towgs84:"-133.63,-157.5,-158.62",ellipse:"intl",datumName:"Rassadiran"},nzgd49:{towgs84:"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",ellipse:"intl",datumName:"New Zealand Geodetic Datum 1949"},osgb36:{towgs84:"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",ellipse:"airy",datumName:"Ordnance Survey of Great Britain 1936"},s_jtsk:{towgs84:"589,76,480",ellipse:"bessel",datumName:"S-JTSK (Ferro)"},beduaram:{towgs84:"-106,-87,188",ellipse:"clrk80",datumName:"Beduaram"},gunung_segara:{towgs84:"-403,684,41",ellipse:"bessel",datumName:"Gunung Segara Jakarta"},rnb72:{towgs84:"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",ellipse:"intl",datumName:"Reseau National Belge 1972"},EPSG_5451:{towgs84:"6.41,-49.05,-11.28,1.5657,0.5242,6.9718,-5.7649"},IGNF_LURESG:{towgs84:"-192.986,13.673,-39.309,-0.4099,-2.9332,2.6881,0.43"},EPSG_4614:{towgs84:"-119.4248,-303.65872,-11.00061,1.164298,0.174458,1.096259,3.657065"},EPSG_4615:{towgs84:"-494.088,-312.129,279.877,-1.423,-1.013,1.59,-0.748"},ESRI_37241:{towgs84:"-76.822,257.457,-12.817,2.136,-0.033,-2.392,-0.031"},ESRI_37249:{towgs84:"-440.296,58.548,296.265,1.128,10.202,4.559,-0.438"},ESRI_37245:{towgs84:"-511.151,-181.269,139.609,1.05,2.703,1.798,3.071"},EPSG_4178:{towgs84:"24.9,-126.4,-93.2,-0.063,-0.247,-0.041,1.01"},EPSG_4622:{towgs84:"-472.29,-5.63,-304.12,0.4362,-0.8374,0.2563,1.8984"},EPSG_4625:{towgs84:"126.93,547.94,130.41,-2.7867,5.1612,-0.8584,13.8227"},EPSG_5252:{towgs84:"0.023,0.036,-0.068,0.00176,0.00912,-0.01136,0.00439"},EPSG_4314:{towgs84:"597.1,71.4,412.1,0.894,0.068,-1.563,7.58"},EPSG_4282:{towgs84:"-178.3,-316.7,-131.5,5.278,6.077,10.979,19.166"},EPSG_4231:{towgs84:"-83.11,-97.38,-117.22,0.005693,-0.044698,0.044285,0.1218"},EPSG_4274:{towgs84:"-230.994,102.591,25.199,0.633,-0.239,0.9,1.95"},EPSG_4134:{towgs84:"-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.71006"},EPSG_4254:{towgs84:"18.38,192.45,96.82,0.056,-0.142,-0.2,-0.0013"},EPSG_4159:{towgs84:"-194.513,-63.978,-25.759,-3.4027,3.756,-3.352,-0.9175"},EPSG_4687:{towgs84:"0.072,-0.507,-0.245,0.0183,-0.0003,0.007,-0.0093"},EPSG_4227:{towgs84:"-83.58,-397.54,458.78,-17.595,-2.847,4.256,3.225"},EPSG_4746:{towgs84:"599.4,72.4,419.2,-0.062,-0.022,-2.723,6.46"},EPSG_4745:{towgs84:"612.4,77,440.2,-0.054,0.057,-2.797,2.55"},EPSG_6311:{towgs84:"8.846,-4.394,-1.122,-0.00237,-0.146528,0.130428,0.783926"},EPSG_4289:{towgs84:"565.7381,50.4018,465.2904,-0.395026,0.330772,-1.876073,4.07244"},EPSG_4230:{towgs84:"-68.863,-134.888,-111.49,-0.53,-0.14,0.57,-3.4"},EPSG_4154:{towgs84:"-123.02,-158.95,-168.47"},EPSG_4156:{towgs84:"570.8,85.7,462.8,4.998,1.587,5.261,3.56"},EPSG_4299:{towgs84:"482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"},EPSG_4179:{towgs84:"33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84"},EPSG_4313:{towgs84:"-106.8686,52.2978,-103.7239,0.3366,-0.457,1.8422,-1.2747"},EPSG_4194:{towgs84:"163.511,127.533,-159.789"},EPSG_4195:{towgs84:"105,326,-102.5"},EPSG_4196:{towgs84:"-45,417,-3.5"},EPSG_4611:{towgs84:"-162.619,-276.959,-161.764,0.067753,-2.243648,-1.158828,-1.094246"},EPSG_4633:{towgs84:"137.092,131.66,91.475,-1.9436,-11.5993,-4.3321,-7.4824"},EPSG_4641:{towgs84:"-408.809,366.856,-412.987,1.8842,-0.5308,2.1655,-121.0993"},EPSG_4643:{towgs84:"-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7002"},EPSG_4300:{towgs84:"482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"},EPSG_4188:{towgs84:"482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"},EPSG_4660:{towgs84:"982.6087,552.753,-540.873,6.681627,-31.611492,-19.848161,16.805"},EPSG_4662:{towgs84:"97.295,-263.247,310.882,-1.5999,0.8386,3.1409,13.3259"},EPSG_3906:{towgs84:"577.88891,165.22205,391.18289,4.9145,-0.94729,-13.05098,7.78664"},EPSG_4307:{towgs84:"-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547"},EPSG_6892:{towgs84:"-76.269,-16.683,68.562,-6.275,10.536,-4.286,-13.686"},EPSG_4690:{towgs84:"221.597,152.441,176.523,2.403,1.3893,0.884,11.4648"},EPSG_4691:{towgs84:"218.769,150.75,176.75,3.5231,2.0037,1.288,10.9817"},EPSG_4629:{towgs84:"72.51,345.411,79.241,-1.5862,-0.8826,-0.5495,1.3653"},EPSG_4630:{towgs84:"165.804,216.213,180.26,-0.6251,-0.4515,-0.0721,7.4111"},EPSG_4692:{towgs84:"217.109,86.452,23.711,0.0183,-0.0003,0.007,-0.0093"},EPSG_9333:{towgs84:"0,0,0,-0.008393,0.000749,-0.010276,0"},EPSG_9059:{towgs84:"0,0,0"},EPSG_4312:{towgs84:"601.705,84.263,485.227,4.7354,1.3145,5.393,-2.3887"},EPSG_4123:{towgs84:"-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496"},EPSG_4309:{towgs84:"-124.45,183.74,44.64,-0.4384,0.5446,-0.9706,-2.1365"},ESRI_104106:{towgs84:"-283.088,-70.693,117.445,-1.157,0.059,-0.652,-4.058"},EPSG_4281:{towgs84:"-219.247,-73.802,269.529"},EPSG_4322:{towgs84:"0,0,4.5"},EPSG_4324:{towgs84:"0,0,1.9"},EPSG_4284:{towgs84:"43.822,-108.842,-119.585,1.455,-0.761,0.737,0.549"},EPSG_4277:{towgs84:"446.448,-125.157,542.06,0.15,0.247,0.842,-20.489"},EPSG_4207:{towgs84:"-282.1,-72.2,120,-1.529,0.145,-0.89,-4.46"},EPSG_4688:{towgs84:"347.175,1077.618,2623.677,33.9058,-70.6776,9.4013,186.0647"},EPSG_4689:{towgs84:"410.793,54.542,80.501,-2.5596,-2.3517,-0.6594,17.3218"},EPSG_4720:{towgs84:"0,0,4.5"},EPSG_4273:{towgs84:"278.3,93,474.5,7.889,0.05,-6.61,6.21"},EPSG_4240:{towgs84:"204.64,834.74,293.8"},EPSG_4817:{towgs84:"278.3,93,474.5,7.889,0.05,-6.61,6.21"},ESRI_104131:{towgs84:"426.62,142.62,460.09,4.98,4.49,-12.42,-17.1"},EPSG_4265:{towgs84:"-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68"},EPSG_4263:{towgs84:"-111.92,-87.85,114.5,1.875,0.202,0.219,0.032"},EPSG_4298:{towgs84:"-689.5937,623.84046,-65.93566,-0.02331,1.17094,-0.80054,5.88536"},EPSG_4270:{towgs84:"-253.4392,-148.452,386.5267,0.15605,0.43,-0.1013,-0.0424"},EPSG_4229:{towgs84:"-121.8,98.1,-10.7"},EPSG_4220:{towgs84:"-55.5,-348,-229.2"},EPSG_4214:{towgs84:"12.646,-155.176,-80.863"},EPSG_4232:{towgs84:"-345,3,223"},EPSG_4238:{towgs84:"-1.977,-13.06,-9.993,0.364,0.254,0.689,-1.037"},EPSG_4168:{towgs84:"-170,33,326"},EPSG_4131:{towgs84:"199,931,318.9"},EPSG_4152:{towgs84:"-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"},EPSG_5228:{towgs84:"572.213,85.334,461.94,4.9732,1.529,5.2484,3.5378"},EPSG_8351:{towgs84:"485.021,169.465,483.839,7.786342,4.397554,4.102655,0"},EPSG_4683:{towgs84:"-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06"},EPSG_4133:{towgs84:"0,0,0"},EPSG_7373:{towgs84:"0.819,-0.5762,-1.6446,-0.00378,-0.03317,0.00318,0.0693"},EPSG_9075:{towgs84:"-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"},EPSG_9072:{towgs84:"-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"},EPSG_9294:{towgs84:"1.16835,-1.42001,-2.24431,-0.00822,-0.05508,0.01818,0.23388"},EPSG_4212:{towgs84:"-267.434,173.496,181.814,-13.4704,8.7154,7.3926,14.7492"},EPSG_4191:{towgs84:"-44.183,-0.58,-38.489,2.3867,2.7072,-3.5196,-8.2703"},EPSG_4237:{towgs84:"52.684,-71.194,-13.975,-0.312,-0.1063,-0.3729,1.0191"},EPSG_4740:{towgs84:"-1.08,-0.27,-0.9"},EPSG_4124:{towgs84:"419.3836,99.3335,591.3451,0.850389,1.817277,-7.862238,-0.99496"},EPSG_5681:{towgs84:"584.9636,107.7175,413.8067,1.1155,0.2824,-3.1384,7.9922"},EPSG_4141:{towgs84:"23.772,17.49,17.859,-0.3132,-1.85274,1.67299,-5.4262"},EPSG_4204:{towgs84:"-85.645,-273.077,-79.708,2.289,-1.421,2.532,3.194"},EPSG_4319:{towgs84:"226.702,-193.337,-35.371,-2.229,-4.391,9.238,0.9798"},EPSG_4200:{towgs84:"24.82,-131.21,-82.66"},EPSG_4130:{towgs84:"0,0,0"},EPSG_4127:{towgs84:"-82.875,-57.097,-156.768,-2.158,1.524,-0.982,-0.359"},EPSG_4149:{towgs84:"674.374,15.056,405.346"},EPSG_4617:{towgs84:"-0.991,1.9072,0.5129,0.02579,0.00965,0.01166,0"},EPSG_4663:{towgs84:"-210.502,-66.902,-48.476,2.094,-15.067,-5.817,0.485"},EPSG_4664:{towgs84:"-211.939,137.626,58.3,-0.089,0.251,0.079,0.384"},EPSG_4665:{towgs84:"-105.854,165.589,-38.312,-0.003,-0.026,0.024,-0.048"},EPSG_4666:{towgs84:"631.392,-66.551,481.442,1.09,-4.445,-4.487,-4.43"},EPSG_4756:{towgs84:"-192.873,-39.382,-111.202,-0.00205,-0.0005,0.00335,0.0188"},EPSG_4723:{towgs84:"-179.483,-69.379,-27.584,-7.862,8.163,6.042,-13.925"},EPSG_4726:{towgs84:"8.853,-52.644,180.304,-0.393,-2.323,2.96,-24.081"},EPSG_4267:{towgs84:"-8.0,160.0,176.0"},EPSG_5365:{towgs84:"-0.16959,0.35312,0.51846,0.03385,-0.16325,0.03446,0.03693"},EPSG_4218:{towgs84:"304.5,306.5,-318.1"},EPSG_4242:{towgs84:"-33.722,153.789,94.959,-8.581,-4.478,4.54,8.95"},EPSG_4216:{towgs84:"-292.295,248.758,429.447,4.9971,2.99,6.6906,1.0289"},ESRI_104105:{towgs84:"631.392,-66.551,481.442,1.09,-4.445,-4.487,-4.43"},ESRI_104129:{towgs84:"0,0,0"},EPSG_4673:{towgs84:"174.05,-25.49,112.57"},EPSG_4202:{towgs84:"-124,-60,154"},EPSG_4203:{towgs84:"-117.763,-51.51,139.061,0.292,0.443,0.277,-0.191"},EPSG_3819:{towgs84:"595.48,121.69,515.35,4.115,-2.9383,0.853,-3.408"},EPSG_8694:{towgs84:"-93.799,-132.737,-219.073,-1.844,0.648,-6.37,-0.169"},EPSG_4145:{towgs84:"275.57,676.78,229.6"},EPSG_4283:{towgs84:"0.06155,-0.01087,-0.04019,0.039492,0.032722,0.032898,-0.009994"},EPSG_4317:{towgs84:"2.3287,-147.0425,-92.0802,-0.309248,0.324822,0.497299,5.689063"},EPSG_4272:{towgs84:"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993"},EPSG_4248:{towgs84:"-307.7,265.3,-363.5"},EPSG_5561:{towgs84:"24,-121,-76"},EPSG_5233:{towgs84:"-0.293,766.95,87.713,0.195704,1.695068,3.473016,-0.039338"},ESRI_104130:{towgs84:"-86,-98,-119"},ESRI_104102:{towgs84:"682,-203,480"},ESRI_37207:{towgs84:"7,-10,-26"},EPSG_4675:{towgs84:"59.935,118.4,-10.871"},ESRI_104109:{towgs84:"-89.121,-348.182,260.871"},ESRI_104112:{towgs84:"-185.583,-230.096,281.361"},ESRI_104113:{towgs84:"25.1,-275.6,222.6"},IGNF_WGS72G:{towgs84:"0,12,6"},IGNF_NTFG:{towgs84:"-168,-60,320"},IGNF_EFATE57G:{towgs84:"-127,-769,472"},IGNF_PGP50G:{towgs84:"324.8,153.6,172.1"},IGNF_REUN47G:{towgs84:"94,-948,-1262"},IGNF_CSG67G:{towgs84:"-186,230,110"},IGNF_GUAD48G:{towgs84:"-467,-16,-300"},IGNF_TAHI51G:{towgs84:"162,117,154"},IGNF_TAHAAG:{towgs84:"65,342,77"},IGNF_NUKU72G:{towgs84:"84,274,65"},IGNF_PETRELS72G:{towgs84:"365,194,166"},IGNF_WALL78G:{towgs84:"253,-133,-127"},IGNF_MAYO50G:{towgs84:"-382,-59,-262"},IGNF_TANNAG:{towgs84:"-139,-967,436"},IGNF_IGN72G:{towgs84:"-13,-348,292"},IGNF_ATIGG:{towgs84:"1118,23,66"},IGNF_FANGA84G:{towgs84:"150.57,158.33,118.32"},IGNF_RUSAT84G:{towgs84:"202.13,174.6,-15.74"},IGNF_KAUE70G:{towgs84:"126.74,300.1,-75.49"},IGNF_MOP90G:{towgs84:"-10.8,-1.8,12.77"},IGNF_MHPF67G:{towgs84:"338.08,212.58,-296.17"},IGNF_TAHI79G:{towgs84:"160.61,116.05,153.69"},IGNF_ANAA92G:{towgs84:"1.5,3.84,4.81"},IGNF_MARQUI72G:{towgs84:"330.91,-13.92,58.56"},IGNF_APAT86G:{towgs84:"143.6,197.82,74.05"},IGNF_TUBU69G:{towgs84:"237.17,171.61,-77.84"},IGNF_STPM50G:{towgs84:"11.363,424.148,373.13"},EPSG_4150:{towgs84:"674.374,15.056,405.346"},EPSG_4754:{towgs84:"-208.4058,-109.8777,-2.5764"},ESRI_104101:{towgs84:"372.87,149.23,585.29"},EPSG_4693:{towgs84:"0,-0.15,0.68"},EPSG_6207:{towgs84:"293.17,726.18,245.36"},EPSG_4153:{towgs84:"-133.63,-157.5,-158.62"},EPSG_4132:{towgs84:"-241.54,-163.64,396.06"},EPSG_4221:{towgs84:"-154.5,150.7,100.4"},EPSG_4266:{towgs84:"-80.7,-132.5,41.1"},EPSG_4193:{towgs84:"-70.9,-151.8,-41.4"},EPSG_5340:{towgs84:"-0.41,0.46,-0.35"},EPSG_4246:{towgs84:"-294.7,-200.1,525.5"},EPSG_4318:{towgs84:"-3.2,-5.7,2.8"},EPSG_4121:{towgs84:"-199.87,74.79,246.62"},EPSG_4223:{towgs84:"-260.1,5.5,432.2"},EPSG_4158:{towgs84:"-0.465,372.095,171.736"},EPSG_4285:{towgs84:"-128.16,-282.42,21.93"},EPSG_4613:{towgs84:"-404.78,685.68,45.47"},EPSG_4607:{towgs84:"195.671,332.517,274.607"},EPSG_4475:{towgs84:"-381.788,-57.501,-256.673"},EPSG_4208:{towgs84:"-157.84,308.54,-146.6"},EPSG_4743:{towgs84:"70.995,-335.916,262.898"},EPSG_4710:{towgs84:"-323.65,551.39,-491.22"},EPSG_7881:{towgs84:"-0.077,0.079,0.086"},EPSG_4682:{towgs84:"283.729,735.942,261.143"},EPSG_4739:{towgs84:"-156,-271,-189"},EPSG_4679:{towgs84:"-80.01,253.26,291.19"},EPSG_4750:{towgs84:"-56.263,16.136,-22.856"},EPSG_4644:{towgs84:"-10.18,-350.43,291.37"},EPSG_4695:{towgs84:"-103.746,-9.614,-255.95"},EPSG_4292:{towgs84:"-355,21,72"},EPSG_4302:{towgs84:"-61.702,284.488,472.052"},EPSG_4143:{towgs84:"-124.76,53,466.79"},EPSG_4606:{towgs84:"-153,153,307"},EPSG_4699:{towgs84:"-770.1,158.4,-498.2"},EPSG_4247:{towgs84:"-273.5,110.6,-357.9"},EPSG_4160:{towgs84:"8.88,184.86,106.69"},EPSG_4161:{towgs84:"-233.43,6.65,173.64"},EPSG_9251:{towgs84:"-9.5,122.9,138.2"},EPSG_9253:{towgs84:"-78.1,101.6,133.3"},EPSG_4297:{towgs84:"-198.383,-240.517,-107.909"},EPSG_4269:{towgs84:"0,0,0"},EPSG_4301:{towgs84:"-147,506,687"},EPSG_4618:{towgs84:"-59,-11,-52"},EPSG_4612:{towgs84:"0,0,0"},EPSG_4678:{towgs84:"44.585,-131.212,-39.544"},EPSG_4250:{towgs84:"-130,29,364"},EPSG_4144:{towgs84:"214,804,268"},EPSG_4147:{towgs84:"-17.51,-108.32,-62.39"},EPSG_4259:{towgs84:"-254.1,-5.36,-100.29"},EPSG_4164:{towgs84:"-76,-138,67"},EPSG_4211:{towgs84:"-378.873,676.002,-46.255"},EPSG_4182:{towgs84:"-422.651,-172.995,84.02"},EPSG_4224:{towgs84:"-143.87,243.37,-33.52"},EPSG_4225:{towgs84:"-205.57,168.77,-4.12"},EPSG_5527:{towgs84:"-67.35,3.88,-38.22"},EPSG_4752:{towgs84:"98,390,-22"},EPSG_4310:{towgs84:"-30,190,89"},EPSG_9248:{towgs84:"-192.26,65.72,132.08"},EPSG_4680:{towgs84:"124.5,-63.5,-281"},EPSG_4701:{towgs84:"-79.9,-158,-168.9"},EPSG_4706:{towgs84:"-146.21,112.63,4.05"},EPSG_4805:{towgs84:"682,-203,480"},EPSG_4201:{towgs84:"-165,-11,206"},EPSG_4210:{towgs84:"-157,-2,-299"},EPSG_4183:{towgs84:"-104,167,-38"},EPSG_4139:{towgs84:"11,72,-101"},EPSG_4668:{towgs84:"-86,-98,-119"},EPSG_4717:{towgs84:"-2,151,181"},EPSG_4732:{towgs84:"102,52,-38"},EPSG_4280:{towgs84:"-377,681,-50"},EPSG_4209:{towgs84:"-138,-105,-289"},EPSG_4261:{towgs84:"31,146,47"},EPSG_4658:{towgs84:"-73,46,-86"},EPSG_4721:{towgs84:"265.025,384.929,-194.046"},EPSG_4222:{towgs84:"-136,-108,-292"},EPSG_4601:{towgs84:"-255,-15,71"},EPSG_4602:{towgs84:"725,685,536"},EPSG_4603:{towgs84:"72,213.7,93"},EPSG_4605:{towgs84:"9,183,236"},EPSG_4621:{towgs84:"137,248,-430"},EPSG_4657:{towgs84:"-28,199,5"},EPSG_4316:{towgs84:"103.25,-100.4,-307.19"},EPSG_4642:{towgs84:"-13,-348,292"},EPSG_4698:{towgs84:"145,-187,103"},EPSG_4192:{towgs84:"-206.1,-174.7,-87.7"},EPSG_4311:{towgs84:"-265,120,-358"},EPSG_4135:{towgs84:"58,-283,-182"},ESRI_104138:{towgs84:"198,-226,-347"},EPSG_4245:{towgs84:"-11,851,5"},EPSG_4142:{towgs84:"-125,53,467"},EPSG_4213:{towgs84:"-106,-87,188"},EPSG_4253:{towgs84:"-133,-77,-51"},EPSG_4129:{towgs84:"-132,-110,-335"},EPSG_4713:{towgs84:"-77,-128,142"},EPSG_4239:{towgs84:"217,823,299"},EPSG_4146:{towgs84:"295,736,257"},EPSG_4155:{towgs84:"-83,37,124"},EPSG_4165:{towgs84:"-173,253,27"},EPSG_4672:{towgs84:"175,-38,113"},EPSG_4236:{towgs84:"-637,-549,-203"},EPSG_4251:{towgs84:"-90,40,88"},EPSG_4271:{towgs84:"-2,374,172"},EPSG_4175:{towgs84:"-88,4,101"},EPSG_4716:{towgs84:"298,-304,-375"},EPSG_4315:{towgs84:"-23,259,-9"},EPSG_4744:{towgs84:"-242.2,-144.9,370.3"},EPSG_4244:{towgs84:"-97,787,86"},EPSG_4293:{towgs84:"616,97,-251"},EPSG_4714:{towgs84:"-127,-769,472"},EPSG_4736:{towgs84:"260,12,-147"},EPSG_6883:{towgs84:"-235,-110,393"},EPSG_6894:{towgs84:"-63,176,185"},EPSG_4205:{towgs84:"-43,-163,45"},EPSG_4256:{towgs84:"41,-220,-134"},EPSG_4262:{towgs84:"639,405,60"},EPSG_4604:{towgs84:"174,359,365"},EPSG_4169:{towgs84:"-115,118,426"},EPSG_4620:{towgs84:"-106,-129,165"},EPSG_4184:{towgs84:"-203,141,53"},EPSG_4616:{towgs84:"-289,-124,60"},EPSG_9403:{towgs84:"-307,-92,127"},EPSG_4684:{towgs84:"-133,-321,50"},EPSG_4708:{towgs84:"-491,-22,435"},EPSG_4707:{towgs84:"114,-116,-333"},EPSG_4709:{towgs84:"145,75,-272"},EPSG_4712:{towgs84:"-205,107,53"},EPSG_4711:{towgs84:"124,-234,-25"},EPSG_4718:{towgs84:"230,-199,-752"},EPSG_4719:{towgs84:"211,147,111"},EPSG_4724:{towgs84:"208,-435,-229"},EPSG_4725:{towgs84:"189,-79,-202"},EPSG_4735:{towgs84:"647,1777,-1124"},EPSG_4722:{towgs84:"-794,119,-298"},EPSG_4728:{towgs84:"-307,-92,127"},EPSG_4734:{towgs84:"-632,438,-609"},EPSG_4727:{towgs84:"912,-58,1227"},EPSG_4729:{towgs84:"185,165,42"},EPSG_4730:{towgs84:"170,42,84"},EPSG_4733:{towgs84:"276,-57,149"},ESRI_37218:{towgs84:"230,-199,-752"},ESRI_37240:{towgs84:"-7,215,225"},ESRI_37221:{towgs84:"252,-209,-751"},ESRI_4305:{towgs84:"-123,-206,219"},ESRI_104139:{towgs84:"-73,-247,227"},EPSG_4748:{towgs84:"51,391,-36"},EPSG_4219:{towgs84:"-384,664,-48"},EPSG_4255:{towgs84:"-333,-222,114"},EPSG_4257:{towgs84:"-587.8,519.75,145.76"},EPSG_4646:{towgs84:"-963,510,-359"},EPSG_6881:{towgs84:"-24,-203,268"},EPSG_6882:{towgs84:"-183,-15,273"},EPSG_4715:{towgs84:"-104,-129,239"},IGNF_RGF93GDD:{towgs84:"0,0,0"},IGNF_RGM04GDD:{towgs84:"0,0,0"},IGNF_RGSPM06GDD:{towgs84:"0,0,0"},IGNF_RGTAAF07GDD:{towgs84:"0,0,0"},IGNF_RGFG95GDD:{towgs84:"0,0,0"},IGNF_RGNCG:{towgs84:"0,0,0"},IGNF_RGPFGDD:{towgs84:"0,0,0"},IGNF_ETRS89G:{towgs84:"0,0,0"},IGNF_RGR92GDD:{towgs84:"0,0,0"},EPSG_4173:{towgs84:"0,0,0"},EPSG_4180:{towgs84:"0,0,0"},EPSG_4619:{towgs84:"0,0,0"},EPSG_4667:{towgs84:"0,0,0"},EPSG_4075:{towgs84:"0,0,0"},EPSG_6706:{towgs84:"0,0,0"},EPSG_7798:{towgs84:"0,0,0"},EPSG_4661:{towgs84:"0,0,0"},EPSG_4669:{towgs84:"0,0,0"},EPSG_8685:{towgs84:"0,0,0"},EPSG_4151:{towgs84:"0,0,0"},EPSG_9702:{towgs84:"0,0,0"},EPSG_4758:{towgs84:"0,0,0"},EPSG_4761:{towgs84:"0,0,0"},EPSG_4765:{towgs84:"0,0,0"},EPSG_8997:{towgs84:"0,0,0"},EPSG_4023:{towgs84:"0,0,0"},EPSG_4670:{towgs84:"0,0,0"},EPSG_4694:{towgs84:"0,0,0"},EPSG_4148:{towgs84:"0,0,0"},EPSG_4163:{towgs84:"0,0,0"},EPSG_4167:{towgs84:"0,0,0"},EPSG_4189:{towgs84:"0,0,0"},EPSG_4190:{towgs84:"0,0,0"},EPSG_4176:{towgs84:"0,0,0"},EPSG_4659:{towgs84:"0,0,0"},EPSG_3824:{towgs84:"0,0,0"},EPSG_3889:{towgs84:"0,0,0"},EPSG_4046:{towgs84:"0,0,0"},EPSG_4081:{towgs84:"0,0,0"},EPSG_4558:{towgs84:"0,0,0"},EPSG_4483:{towgs84:"0,0,0"},EPSG_5013:{towgs84:"0,0,0"},EPSG_5264:{towgs84:"0,0,0"},EPSG_5324:{towgs84:"0,0,0"},EPSG_5354:{towgs84:"0,0,0"},EPSG_5371:{towgs84:"0,0,0"},EPSG_5373:{towgs84:"0,0,0"},EPSG_5381:{towgs84:"0,0,0"},EPSG_5393:{towgs84:"0,0,0"},EPSG_5489:{towgs84:"0,0,0"},EPSG_5593:{towgs84:"0,0,0"},EPSG_6135:{towgs84:"0,0,0"},EPSG_6365:{towgs84:"0,0,0"},EPSG_5246:{towgs84:"0,0,0"},EPSG_7886:{towgs84:"0,0,0"},EPSG_8431:{towgs84:"0,0,0"},EPSG_8427:{towgs84:"0,0,0"},EPSG_8699:{towgs84:"0,0,0"},EPSG_8818:{towgs84:"0,0,0"},EPSG_4757:{towgs84:"0,0,0"},EPSG_9140:{towgs84:"0,0,0"},EPSG_8086:{towgs84:"0,0,0"},EPSG_4686:{towgs84:"0,0,0"},EPSG_4737:{towgs84:"0,0,0"},EPSG_4702:{towgs84:"0,0,0"},EPSG_4747:{towgs84:"0,0,0"},EPSG_4749:{towgs84:"0,0,0"},EPSG_4674:{towgs84:"0,0,0"},EPSG_4755:{towgs84:"0,0,0"},EPSG_4759:{towgs84:"0,0,0"},EPSG_4762:{towgs84:"0,0,0"},EPSG_4763:{towgs84:"0,0,0"},EPSG_4764:{towgs84:"0,0,0"},EPSG_4166:{towgs84:"0,0,0"},EPSG_4170:{towgs84:"0,0,0"},EPSG_5546:{towgs84:"0,0,0"},EPSG_7844:{towgs84:"0,0,0"},EPSG_4818:{towgs84:"589,76,480"},EPSG_10328:{towgs84:"0,0,0"},EPSG_9782:{towgs84:"0,0,0"},EPSG_9777:{towgs84:"0,0,0"},EPSG_10690:{towgs84:"0,0,0"},EPSG_10639:{towgs84:"0,0,0"},EPSG_10739:{towgs84:"0,0,0"},EPSG_7686:{towgs84:"0,0,0"},EPSG_8900:{towgs84:"0,0,0"},EPSG_5886:{towgs84:"0,0,0"},EPSG_7683:{towgs84:"0,0,0"},EPSG_6668:{towgs84:"0,0,0"},EPSG_20046:{towgs84:"0,0,0"},EPSG_10299:{towgs84:"0,0,0"},EPSG_10310:{towgs84:"0,0,0"},EPSG_10475:{towgs84:"0,0,0"},EPSG_4742:{towgs84:"0,0,0"},EPSG_10671:{towgs84:"0,0,0"},EPSG_10762:{towgs84:"0,0,0"},EPSG_10725:{towgs84:"0,0,0"},EPSG_10791:{towgs84:"0,0,0"},EPSG_10800:{towgs84:"0,0,0"},EPSG_10305:{towgs84:"0,0,0"},EPSG_10941:{towgs84:"0,0,0"},EPSG_10968:{towgs84:"0,0,0"},EPSG_10875:{towgs84:"0,0,0"},EPSG_6318:{towgs84:"0,0,0"},EPSG_10910:{towgs84:"0,0,0"}};for(let t in ni){let e=ni[t];e.datumName&&(ni[e.datumName]=e)}var br=ni;var h1={MERIT:{a:6378137,rf:298.257,ellipseName:"MERIT 1983"},SGS85:{a:6378136,rf:298.257,ellipseName:"Soviet Geodetic System 85"},GRS80:{a:6378137,rf:298.257222101,ellipseName:"GRS 1980(IUGG, 1980)"},IAU76:{a:6378140,rf:298.257,ellipseName:"IAU 1976"},airy:{a:6377563396e-3,b:635625691e-2,ellipseName:"Airy 1830"},APL4:{a:6378137,rf:298.25,ellipseName:"Appl. Physics. 1965"},NWL9D:{a:6378145,rf:298.25,ellipseName:"Naval Weapons Lab., 1965"},mod_airy:{a:6377340189e-3,b:6356034446e-3,ellipseName:"Modified Airy"},andrae:{a:637710443e-2,rf:300,ellipseName:"Andrae 1876 (Den., Iclnd.)"},aust_SA:{a:6378160,rf:298.25,ellipseName:"Australian Natl & S. Amer. 1969"},GRS67:{a:6378160,rf:298.247167427,ellipseName:"GRS 67(IUGG 1967)"},bessel:{a:6377397155e-3,rf:299.1528128,ellipseName:"Bessel 1841"},bess_nam:{a:6377483865e-3,rf:299.1528128,ellipseName:"Bessel 1841 (Namibia)"},clrk66:{a:63782064e-1,b:63565838e-1,ellipseName:"Clarke 1866"},clrk80:{a:6378249145e-3,rf:293.4663,ellipseName:"Clarke 1880 mod."},clrk80ign:{a:63782492e-1,b:6356515,rf:293.4660213,ellipseName:"Clarke 1880 (IGN)"},clrk58:{a:6378293645208759e-9,rf:294.2606763692654,ellipseName:"Clarke 1858"},CPM:{a:63757387e-1,rf:334.29,ellipseName:"Comm. des Poids et Mesures 1799"},delmbr:{a:6376428,rf:311.5,ellipseName:"Delambre 1810 (Belgium)"},engelis:{a:637813605e-2,rf:298.2566,ellipseName:"Engelis 1985"},evrst30:{a:6377276345e-3,rf:300.8017,ellipseName:"Everest 1830"},evrst48:{a:6377304063e-3,rf:300.8017,ellipseName:"Everest 1948"},evrst56:{a:6377301243e-3,rf:300.8017,ellipseName:"Everest 1956"},evrst69:{a:6377295664e-3,rf:300.8017,ellipseName:"Everest 1969"},evrstSS:{a:6377298556e-3,rf:300.8017,ellipseName:"Everest (Sabah & Sarawak)"},fschr60:{a:6378166,rf:298.3,ellipseName:"Fischer (Mercury Datum) 1960"},fschr60m:{a:6378155,rf:298.3,ellipseName:"Fischer 1960"},fschr68:{a:6378150,rf:298.3,ellipseName:"Fischer 1968"},helmert:{a:6378200,rf:298.3,ellipseName:"Helmert 1906"},hough:{a:6378270,rf:297,ellipseName:"Hough"},intl:{a:6378388,rf:297,ellipseName:"International 1909 (Hayford)"},kaula:{a:6378163,rf:298.24,ellipseName:"Kaula 1961"},lerch:{a:6378139,rf:298.257,ellipseName:"Lerch 1979"},mprts:{a:6397300,rf:191,ellipseName:"Maupertius 1738"},new_intl:{a:63781575e-1,b:63567722e-1,ellipseName:"New International 1967"},plessis:{a:6376523,b:6355863,ellipseName:"Plessis 1817 (France)"},krass:{a:6378245,rf:298.3,ellipseName:"Krassovsky, 1942"},SEasia:{a:6378155,b:63567733205e-4,ellipseName:"Southeast Asia"},walbeck:{a:6376896,b:63558348467e-4,ellipseName:"Walbeck"},WGS60:{a:6378165,rf:298.3,ellipseName:"WGS 60"},WGS66:{a:6378145,rf:298.25,ellipseName:"WGS 66"},WGS72:{a:6378135,rf:298.26,ellipseName:"WGS 72"},WGS84:{a:6378137,rf:298.257223563,ellipseName:"WGS 84"},sphere:{a:6370997,b:6370997,ellipseName:"Normal Sphere (r=6370997)"}},th=h1;var ye={};ye.greenwich=0;ye.lisbon=-9.131906111111;ye.paris=2.337229166667;ye.bogota=-74.080916666667;ye.madrid=-3.687938888889;ye.rome=12.452333333333;ye.bern=7.439583333333;ye.jakarta=106.807719444444;ye.ferro=-17.666666666667;ye.brussels=4.367975;ye.stockholm=18.058277777778;ye.athens=23.7163375;ye.oslo=10.722916666667;var rh=ye;var nh={mm:{to_meter:.001},cm:{to_meter:.01},ft:{to_meter:.3048},"us-ft":{to_meter:1200/3937},fath:{to_meter:1.8288},kmi:{to_meter:1852},"us-ch":{to_meter:20.1168402336805},"us-mi":{to_meter:1609.34721869444},km:{to_meter:1e3},"ind-ft":{to_meter:.30479841},"ind-yd":{to_meter:.91439523},mi:{to_meter:1609.344},yd:{to_meter:.9144},ch:{to_meter:20.1168},link:{to_meter:.201168},dm:{to_meter:.1},in:{to_meter:.0254},"ind-ch":{to_meter:20.11669506},"us-in":{to_meter:.025400050800101},"us-yd":{to_meter:.914401828803658}};var ih={WGS84:"+proj=longlat +datum=WGS84","EPSG:4326":"+proj=longlat +datum=WGS84","EPSG:4269":"+proj=longlat +datum=NAD83","EPSG:4978":"+proj=geocent +datum=WGS84","EPSG:4979":"+proj=longlat +datum=WGS84","EPSG:3857":"+proj=merc +a=6378137 +b=6378137 +nadgrids=@null +units=m","EPSG:3785":"EPSG:3857",GOOGLE:"EPSG:3857","EPSG:900913":"EPSG:3857","EPSG:102113":"EPSG:3857"},ii=["proj","datum","ellps","a","b","rf","f","R","units","to_meter","vunits","vto_meter","no_defs","type","title","towgs84","nadgrids","geoidgrids","axis","pm","over","lon_wrap"],lh=["no_defs","over"],Ze=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),oh=t=>t.toLowerCase().replace(/[\s_-]/g,"");function jo(t,e){let r=Object.keys(t).find(n=>oh(n)===oh(e));return r===void 0?void 0:t[r]}function sh(t){if(/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i.test(t)){let r=Number(t);if(Number.isFinite(r))return r}if(/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?r$/i.test(t)){let r=Number(t.slice(0,-1))/ee;if(Number.isFinite(r))return r}let e=/^([+-]?)(\d+(?:\.\d*)?)(?:d(?:(\d+(?:\.\d*)?)'(?:(\d+(?:\.\d*)?)")?)?)?([NSEW])?$/i.exec(t);if(e&&(/d/i.test(t)||e[5])){let r=Number(e[3]||0),n=Number(e[4]||0);if(r<60&&n<60){let i=e[1]==="-"?-1:1,o=/[SW]/i.test(e[5]||"")?-1:1,s=i*o*(Number(e[2])+r/60+n/3600);if(Number.isFinite(s))return s}}throw new Error("Invalid angular parameter: "+t)}function vr(t,e={}){let r=Jl(t,e),n=r.definition,i=e.aliases||{},o=new Set;for(;typeof n=="string"&&(Ze(i,n)||Ze(ih,n));){if(o.has(n))throw new Error("Circular CRS alias: "+n);o.add(n),n=Ze(i,n)?i[n]:ih[n]}if(typeof n=="string"){let v=/^EPSG:(326|327)(\d{2})$/.exec(n);v&&Number(v[2])>=1&&Number(v[2])<=60&&(n="+proj=utm +datum=WGS84 +zone="+Number(v[2])+(v[1]==="327"?" +south":"")),(n==="EPSG:5041"||n==="EPSG:5042")&&(n="+proj=stere +datum=WGS84 +lat_0="+(n==="EPSG:5041"?90:-90)+" +k_0=0.994 +x_0=2000000 +y_0=2000000")}let s;if(Me(n)==="proj-string"&&typeof n=="string"){let v=Object.create(null);for(let A of Mr(n).parameters){if(Ze(v,A.name))throw new Error("Duplicate PROJ parameter: +"+A.name);v[A.name]=A.value}s={parameters:v}}else{let v=e.parsers?.find(A=>A.canParse(n));if(!v){let A=["wkt","projjson"].includes(Me(n));throw new Re(A?"missing-parser":"unknown-syntax","Unsupported CRS definition; register a WKT or PROJJSON parser for structured definitions")}s=v.parse(n,e)}let a={...s.parameters};for(let v of["lon_0","lat_0","lat_1","lat_2","lat_ts","lon_wrap","lon_1","lon_2","lonc","alpha","gamma","tilt","azi","o_alpha","o_lon_c","o_lat_c","o_lon_p","o_lat_p","o_lon_1","o_lat_1","o_lon_2","o_lat_2"])a[v]!==void 0&&(a[v]=String(sh(a[v])));let c=a.proj,l=c?.toLowerCase(),h=l==="geocentric"?"geocent":["longlat","latlong","latlon","lonlat","identity","geocent"].includes(l)?l:c;if(!h)throw new Error("CRS requires +proj");let u=["longlat","latlong","latlon","lonlat"].includes(h)?"geographic":h==="geocent"?"geocentric":h==="identity"?"identity":"projected",f=a.datum,d=f&&f!=="none"?jo(br,f):void 0;f&&f!=="none"&&!d&&D("Unknown datum: "+f);let m=ch(a,d?.ellipse),_=a.nadgrids??d?.nadgrids,p=_===void 0?void 0:_.split(",").map(v=>{let A=v.startsWith("@"),I=A?v.slice(1):v;if(!I||/\s/.test(I))throw new Error("Invalid datum grid name");return Object.freeze({name:I,optional:A})}),M=a.towgs84??d?.towgs84,y;if(M!==void 0&&(y=M.split(",").map(v=>L({value:v},"value",NaN)),![3,7].includes(y.length)||y.some(v=>!Number.isFinite(v))||y.length===7&&y[6]<=-1e6))throw new Error("+towgs84 requires three or seven finite values and positive scale");f==="none"&&(y=void 0),p&&f!=="none"&&(y=[0,0,0]);let S=_==="@null"||_==="null"?ch({ellps:"WGS84"}):m,x=a.axis||"enu";if(x.length!==3||!/[ew]/.test(x)||!/[ns]/.test(x)||!/[ud]/.test(x))throw new Error("Invalid axis: "+x);let E=s.angularUnit??ee;if(u==="geographic"&&(a.units&&a.units!=="degrees"||Ze(a,"to_meter")))throw new Error("Geographic coordinates must use angular units");if(u!=="geographic"&&a.units==="degrees")throw new Error("Linear coordinates require linear units");let T=ah(a,"units","to_meter"),R=s.verticalUnit??ah(a,"vunits","vto_meter");if(!(R>0)||!Number.isFinite(R))throw new Error("Invalid vertical unit");if(!(E>0)||!Number.isFinite(E))throw new Error("Invalid angular unit");let C=a.pm,O=C===void 0?0:(jo(rh,C)??sh(C))*ee;return eh(Object.freeze({kind:u,projection:h,parameters:Object.freeze(a),ellipsoid:m,datum:Object.freeze({ellipsoid:S,towgs84:y&&Object.freeze(y),grids:f==="none"||_==="@null"||_==="null"?void 0:p&&Object.freeze(p)}),angularUnit:E,toMeter:T,verticalUnit:R,primeMeridian:O,axis:x,longitudeWrap:a.lon_wrap===void 0?void 0:Number(a.lon_wrap)*ee,lossy:!!(s.lossy||r.lossy)}),r.spatialReference)}function ah(t,e,r){let n=t[e],i=nh;if(e==="vunits"&&n==="degrees")throw new Error("Height requires linear units");if(n&&!["m","degrees"].includes(n)&&!Ze(i,n))throw new Error("Unsupported units: "+n);let o=L(t,r,n&&i[n]?i[n].to_meter:1);if(!(o>0))throw new Error("+"+r+" must be positive");return o}function ch(t,e){let r=e||t.ellps||"WGS84",n=jo(th,r);if(!n)throw new Error("Unsupported ellipsoid: "+r);let i=L(t,"a",n.a),o=L(t,"f",NaN),s=L(t,"rf",Number.isNaN(o)?n.rf||0:o===0?0:1/o),a=L(t,"b",s?i*(1-1/s):Ze(t,"f")||Ze(t,"rf")||Ze(t,"a")?i:n.b||i),c=L(t,"R",0);if(i<=0||a<=0||a>i||s<0||s>0&&s<=1||Ze(t,"R")&&c<=0||!Number.isNaN(o)&&(o<0||o>=1))throw new Error("Invalid ellipsoid dimensions");return Object.freeze({semiMajorAxis:c||i,semiMinorAxis:c||a,eccentricitySquared:c?0:1-(a/i)**2})}var Wo=Math.PI/648e3,oi={ellipsoid:{semiMajorAxis:6378137,semiMinorAxis:6356752314245179e-9,eccentricitySquared:.0066943799901413165},towgs84:[0,0,0]};function ai(t,e){let r=t.x,n=t.y,i=t.z,{semiMajorAxis:o,eccentricitySquared:s}=e;if(Math.abs(n)>Math.PI/2)throw new Error("Latitude outside geocentric domain");let a=Math.sin(n),c=Math.cos(n),l=o/Math.sqrt(1-s*a*a);t.x=(l+i)*c*Math.cos(r),t.y=(l+i)*c*Math.sin(r),t.z=(l*(1-s)+i)*a}function ci(t,e){let r=t.x,n=t.y,i=t.z,{semiMajorAxis:o,semiMinorAxis:s,eccentricitySquared:a}=e,c=Math.hypot(r,n),l=Math.hypot(r,n,i);if(l===0)throw new Error("Geodetic coordinates are undefined at the Earth center");if(c<1e-12*o){t.x=0,t.y=Math.sign(i)*Math.PI/2,t.z=Math.abs(i)-s;return}let h=i/l,u=c/l,f=1/Math.sqrt(1-a*(2-a)*u*u),d=u*(1-a)*f,m=h*f;for(let _=0;_<30;_++){let p=o/Math.sqrt(1-a*m*m),M=c*d+i*m-p*(1-a*m*m),y=a*p/(p+M);f=1/Math.sqrt(1-y*(2-y)*u*u);let S=u*(1-y)*f,x=h*f;if(Math.abs(x*d-S*m)<=1e-12){t.x=Math.atan2(n,r),t.y=Math.atan2(x,Math.abs(S)),t.z=M;return}d=S,m=x}throw new Error("Geocentric inverse did not converge")}function hh(t,e){let r=t[0],n=t[1],i=t[2],o=(t[3]||0)*Wo,s=(t[4]||0)*Wo,a=(t[5]||0)*Wo,c=1+(t[6]||0)/1e6;return e?l=>{let h=(l.x-r)/c,u=(l.y-n)/c,f=(l.z-i)/c;l.x=h+a*u-s*f,l.y=-a*h+u+o*f,l.z=s*h-o*u+f}:l=>{let h=l.x,u=l.y,f=l.z;l.x=c*(h-a*u+s*f)+r,l.y=c*(a*h+u-o*f)+n,l.z=c*(-s*h+o*u+f)+i}}function si(t){return!!t.towgs84?.some(e=>e!==0)}function $o(t,e){if(!(!t.towgs84||!e.towgs84)){if(t.grids||e.grids){if(t.grids&&e.grids&&t.ellipsoid.semiMajorAxis===e.ellipsoid.semiMajorAxis&&t.ellipsoid.eccentricitySquared===e.ellipsoid.eccentricitySquared&&t.grids.length===e.grids.length&&t.grids.every((n,i)=>n.name===e.grids[i].name&&n.optional===e.grids[i].optional&&n.grid===e.grids[i].grid))return;let r=$o(t.grids?oi:t,e.grids?oi:e);return n=>{t.grids&&uh(n,t,!1),r?.(n),e.grids&&uh(n,e,!0)}}if(si(t)||si(e)){let r=Ho(t,oi),n=Ho(oi,e);return i=>{r?.(i),n?.(i)}}return Ho(t,e)}}function Ho(t,e){if(!t.towgs84||!e.towgs84)return;let r=t.ellipsoid,n=e.ellipsoid,i=!0;for(let a=0;a<7;a++)(t.towgs84[a]||0)!==(e.towgs84[a]||0)&&(i=!1);if(r.semiMajorAxis===n.semiMajorAxis&&Math.abs(r.eccentricitySquared-n.eccentricitySquared)<=5e-11&&i)return;let o=si(t)?hh(t.towgs84,!1):void 0,s=si(e)?hh(e.towgs84,!0):void 0;return a=>{ai(a,r),o?.(a),s?.(a),ci(a,n)}}function uh(t,e,r){for(let n of e.grids){if(n.name==="null")return;if(!n.grid){if(n.optional)continue;throw new Error("Required datum grid is not registered: "+n.name)}let i=!1;if(n.grid.shiftInPlace)i=n.grid.shiftInPlace(t,r);else{let o=n.grid.shift(t.x,t.y,r);o&&(t.x=o[0],t.y=o[1],i=!0)}if(i){if(!Number.isFinite(t.x)||!Number.isFinite(t.y)||Math.abs(t.y)>Math.PI/2)throw new Error("Datum grid produced a coordinate outside the geographic domain");return}}throw new Error("No datum grid covers coordinate: "+e.grids.map(n=>n.name).join(","))}function fh(t,e){let r={x:t[0],y:t[1],z:t[2]};return ai(r,e),[r.x,r.y,r.z]}function dh(t,e){let r={x:t[0],y:t[1],z:t[2]};return ci(r,e),[r.x,r.y,r.z]}function mh(t,e={}){if(t===void 0)return;let r=[];for(let n of t.split(",")){let i=n.startsWith("@"),o=i?n.slice(1):n;if(!o||/\s/.test(o))throw new Error("Invalid vertical grid name");if(o==="null"){r.push(null);break}let s=Object.prototype.hasOwnProperty.call(e,o)?e[o]:void 0;if(s){if(typeof s.getOffset!="function")throw new Error("Invalid vertical grid: "+o);r.push(s.getOffset.bind(s))}else i||D("Required vertical grid is not registered: "+o)}return(n,i)=>{for(let o of r){if(!o)return 0;let s=o(n,i);if(s!==void 0){if(!Number.isFinite(s))throw new Error("Vertical grid returned a non-finite offset");return s}}throw new Error("No vertical grid covers this coordinate")}}var ui=class t{static async create(e={}){let r=await Promise.all(ph(e).map(Xl));return new t({...e,projections:r})}constructor(e={}){let r=e.projections||[],n=yh(r);if(r.some(i=>!("create"in i))){let i=vr(e.from??"WGS84",e),o=vr(e.to??"WGS84",e);this.lossy=i.lossy||o.lossy,this.deferred={options:{...e,projections:[...r]}}}else{let i=e,o=n,s=gh(i.from??"WGS84",o,i),a=gh(i.to??"WGS84",o,i);this.lossy=s.lossy||a.lossy,this.lossy&&(s.kind==="geocentric"||a.kind==="geocentric")&&D("Horizontal extraction cannot supply ellipsoidal height for geocentric coordinates"),this.lossy&&(s.verticalGrid||a.verticalGrid)&&D("Horizontal extraction cannot be combined with vertical grids"),this.forwardTransform=Mh(s,a,!!e.enforceAxis),this.inverseTransform=Mh(a,s,!!e.enforceAxis)}this.project=this.project.bind(this),this.unproject=this.unproject.bind(this),this.projectFlat=this.projectFlat.bind(this),this.unprojectFlat=this.unprojectFlat.bind(this),this.projectSync=this.projectSync.bind(this),this.unprojectSync=this.unprojectSync.bind(this),this.projectFlatSync=this.projectFlatSync.bind(this),this.unprojectFlatSync=this.unprojectFlatSync.bind(this)}load(){let e=this.deferred;return e?e.implementation?Promise.resolve(e.implementation):(e.pending||(e.pending=t.create(e.options).then(r=>(e.implementation=r,r)).catch(r=>{throw e.pending=void 0,r})),e.pending):Promise.resolve(this)}loadSync(){let e=this.deferred;if(!e)return this;if(!e.implementation){let r=ph(e.options).map(n=>{let i=Kl(n);if(!i)throw new Error("Projection is not preloaded: "+n.name+". Call preload() first.");return i});e.implementation=new t({...e.options,projections:r})}return e.implementation}projectSync(e){return this.deferred?this.loadSync().project(e):li(e,this.forwardTransform)}unprojectSync(e){return this.deferred?this.loadSync().unproject(e):li(e,this.inverseTransform)}projectFlatSync(e,r=2){return this.deferred?this.loadSync().projectFlat(e,r):hi(e,r,this.forwardTransform)}unprojectFlatSync(e,r=2){return this.deferred?this.loadSync().unprojectFlat(e,r):hi(e,r,this.inverseTransform)}async preload(){await this.load()}project(e){return this.deferred?this.projectLoaded(e,!1):li(e,this.forwardTransform)}unproject(e){return this.deferred?this.projectLoaded(e,!0):li(e,this.inverseTransform)}projectLoaded(e,r){let n=e.slice();return this.load().then(i=>r?i.unproject(n):i.project(n))}projectFlat(e,r=2){return this.deferred?this.load().then(i=>i.projectFlat(e,r)):hi(e,r,this.forwardTransform)}unprojectFlat(e,r=2){return this.deferred?this.load().then(i=>i.unprojectFlat(e,r)):hi(e,r,this.inverseTransform)}};function ph(t){let e=yh(t.projections||[]),r=new Set;for(let n of[t.from??"WGS84",t.to??"WGS84"]){let i=vr(n,t);if(["geographic","identity"].includes(i.kind))continue;let o=e.get(fi(i.projection));if(!o)throw new Re("missing-plugin","Projection plugin is not registered: "+i.projection);r.add(o)}return[...r]}var fi=t=>t.toLowerCase().replace(/[\s_-]/g,"");function yh(t){let e=new Map;for(let r of t)for(let n of new Set([r.name,...r.aliases||[]].map(fi))){if(!n||["longlat","latlong","latlon","lonlat","identity"].includes(n)||e.has(n))throw new Error("Duplicate or reserved projection plugin: "+n);e.set(n,r)}return e}function gh(t,e,r){let n=vr(t,r),i=e.get(fi(n.projection));if(!["geographic","identity"].includes(n.kind)&&!i)throw new Re("missing-plugin","Projection plugin is not registered: "+n.projection);let o=new Set([...ii,...i?.parameters||[]]);for(let d of Object.keys(n.parameters)){if(!o.has(d))throw new Re("missing-transform-stage","Unsupported PROJ parameter: +"+d);let m=lh.includes(d)||i?.flags?.includes(d);if(m&&n.parameters[d]!==void 0)throw new Error("Expected a flag without a value: +"+d);if(!m&&!n.parameters[d])throw new Error("PROJ parameter requires a value: +"+d)}if(n.parameters.type&&n.parameters.type!=="crs")throw new Error("Only +type=crs is supported");let s=fi(n.projection)==="fasttransversemercator"?Object.freeze({...n.parameters,approx:void 0}):n.parameters,a=i?.create({...n.ellipsoid,parameters:s});if(n.kind==="geocentric"&&(!a?.forward3D||!a?.inverse3D))throw new Error("Geocentric plugin must implement 3D operations");let c=n.datum.grids,l=c?.findIndex(d=>d.name==="null")??-1,h=c?.slice(0,l<0?void 0:l+1).map(d=>{let m=Object.prototype.hasOwnProperty.call(r.datumGrids||{},d.name)?r.datumGrids[d.name]:void 0;if(m&&typeof m.shift!="function")throw new Error("Invalid prepared datum grid: "+d.name);return Object.freeze({...d,grid:m})});for(let d of h||[]){if(d.name==="null")break;!d.optional&&!d.grid&&D("Required datum grid is not registered: "+d.name)}let u=h?Object.freeze({...n.datum,grids:Object.freeze(h)}):n.datum,f=mh(n.parameters.geoidgrids,r.verticalGrids);return f&&(n.kind==="geocentric"||n.kind==="identity"||n.lossy)&&D("Vertical grids require a non-lossy geographic or projected CRS"),{...n,datum:u,implementation:a,verticalGrid:f}}function Yo(t){return Number.isFinite(t.x)&&Number.isFinite(t.y)&&Number.isFinite(t.z)}function _h(t,e){if(t==="enu")return;let r=[0,0,0],n=[0,0,0];for(let i=0;i<3;i++){let o=t[i],s="ew".includes(o)?0:"ns".includes(o)?1:2;r[e?i:s]=e?s:i,n[e?i:s]="wsd".includes(o)?-1:1}return i=>{let o=i.x,s=i.y,a=i.z;i.x=n[0]*(r[0]===0?o:r[0]===1?s:a),i.y=n[1]*(r[1]===0?o:r[1]===1?s:a),i.z=n[2]*(r[2]===0?o:r[2]===1?s:a)}}function Mh(t,e,r){let n=t.storedAxis||(r?t.axis:"enu"),i=e.storedAxis||(r?e.axis:"enu"),o=_h(n,!1),s=_h(i,!0),a=t.implementation&&ct(t.implementation,!0,t.kind==="geocentric"),c=e.implementation&&ct(e.implementation,!1,e.kind==="geocentric"),l=$o(t.datum,e.datum),h=t.lossy||e.lossy,u=t.kind==="geocentric",f=t.kind==="geographic"?t.angularUnit:t.toMeter,d=e.kind==="geographic"?e.angularUnit:e.toMeter,m=u?1:t.verticalUnit,_=e.kind==="geocentric"?d:e.verticalUnit,p=t.primeMeridian,M=e.primeMeridian,y=e.kind==="geographic"?e.longitudeWrap:void 0,S;if(!l&&!t.verticalGrid&&!e.verticalGrid&&!h&&!o&&!s&&!p&&!M&&t.verticalUnit===1&&e.verticalUnit===1&&y===void 0){let x=Object.freeze({inputScale:f,outputScale:d});t.kind==="geographic"&&e.kind==="projected"&&(S=e.implementation?.createForwardFlat?.(x)),t.kind==="projected"&&e.kind==="geographic"&&(S=t.implementation?.createInverseFlat?.(x))}return{flat:S,requiresInputZ:!!(t.verticalGrid||e.verticalGrid)||t.kind==="geocentric"||/[ud]/.test(n.slice(0,2))||/[ud]/.test(i.slice(0,2)),geocentricOutput:e.kind==="geocentric",run(x){if(!Yo(x))throw new Error("Coordinates must contain finite x, y and optional z values");o?.(x);let E=x.z;if(h&&(x.z=0),f!==1&&(x.x*=f,x.y*=f,u&&(x.z*=f)),a?.(x),m!==1&&(x.z*=m),Math.abs(x.y)>Math.PI/2||!Yo(x))throw new Error("Coordinate is outside the geographic domain");if(x.x+=p,t.verticalGrid&&(x.z+=t.verticalGrid(x.x,x.y)),l?.(x),e.verticalGrid&&(x.z-=e.verticalGrid(x.x,x.y)),x.x-=M,y!==void 0&&(x.x=y+qe(x.x-y)),c?.(x),d!==1&&(x.x/=d,x.y/=d),_!==1&&(x.z/=_),h&&(x.z=E),s?.(x),!Yo(x))throw new Error("Projection produced non-finite coordinates")}}}function li(t,e){if(t.length<2)throw new Error("Coordinates must contain finite x, y and optional z values");if(t.length<3&&e.requiresInputZ)throw new Error("This transform requires three ordinates");let r={x:t[0],y:t[1],z:t.length>=3?t[2]:0};e.run(r);let n=t.slice();return n[0]=r.x,n[1]=r.y,(t.length>=3||e.geocentricOutput)&&(n[2]=r.z),n}function hi(t,e,r){if(!(t instanceof Float32Array||t instanceof Float64Array))throw new Error("In-place projection requires a Float32Array or Float64Array");if(!Number.isSafeInteger(e)||e<2||t.length%e!==0)throw new Error("Dimension must be an integer >= 2 and divide the typed array length");if(e<3&&(r.requiresInputZ||r.geocentricOutput))throw new Error("This transform requires a dimension of at least 3");if(r.flat)return r.flat(t,e),t;let n={x:0,y:0,z:0},i=t instanceof Float32Array;for(let o=0;o<t.length;o+=e){if(n.x=t[o],n.y=t[o+1],n.z=e>=3?t[o+2]:0,r.run(n),i&&(Math.abs(n.x)>34028234663852886e22||Math.abs(n.y)>34028234663852886e22||e>=3&&Math.abs(n.z)>34028234663852886e22))throw new Error("Projected coordinate exceeds Float32 range");t[o]=n.x,t[o+1]=n.y,e>=3&&(t[o+2]=n.z)}return t}function Fe(t,e){return{...Ge(t,e),createForwardFlat(r){return this.forwardInPlace===t?xh(t,!1,r):void 0},createInverseFlat(r){return this.inverseInPlace===e?xh(e,!0,r):void 0}}}function xh(t,e,{inputScale:r,outputScale:n}){return(i,o)=>{let s={x:0,y:0,z:0},a=i instanceof Float32Array;for(let c=0;c<i.length;c+=o){if(s.x=i[c],s.y=i[c+1],s.z=o>=3?i[c+2]:0,!Number.isFinite(s.x)||!Number.isFinite(s.y)||!Number.isFinite(s.z))throw new Error("Coordinates must contain finite x, y and optional z values");if(r!==1&&(s.x*=r,s.y*=r),e&&t(s),Math.abs(s.y)>Math.PI/2||!Number.isFinite(s.x)||!Number.isFinite(s.y))throw new Error("Coordinate is outside the geographic domain");if(s.x+=0,s.x-=0,e||t(s),n!==1&&(s.x/=n,s.y/=n),!Number.isFinite(s.x)||!Number.isFinite(s.y))throw new Error("Projection produced non-finite coordinates");if(a&&(Math.abs(s.x)>34028234663852886e22||Math.abs(s.y)>34028234663852886e22))throw new Error("Projected coordinate exceeds Float32 range");i[c]=s.x,i[c+1]=s.y}}}var Ko={name:"merc",aliases:["Mercator","Popular Visualisation Pseudo Mercator","Mercator_1SP","Mercator_Auxiliary_Sphere","Mercator_Variant_A"],parameters:["lon_0","lat_ts","k","k_0","x_0","y_0"],create({semiMajorAxis:t,eccentricitySquared:e,parameters:r}){let n=Math.sqrt(e),i=Object.prototype.hasOwnProperty.call(r,"over")?h=>h:qe,o=L(r,"lon_0",0)*ee,s=L(r,"x_0",0),a=L(r,"y_0",0),c=L(r,"k_0",L(r,"k",1));if(Object.prototype.hasOwnProperty.call(r,"lat_ts")){let h=Tr(r,"lat_ts");c=Math.cos(h)/Math.sqrt(1-e*Math.sin(h)**2)}if(c<=0)throw new Error("Mercator scale must be positive");let l=t*c;return Fe(h=>{let u=h.x,f=h.y;if(Math.abs(f)>=Math.PI/2)throw new Error("Mercator is undefined at the poles");let d=Math.asinh(Math.tan(f));h.x=s+l*i(u-o),h.y=a+l*(n===0?d+0:d-n*Math.atanh(n*Math.sin(f)))},h=>{let u=h.x,d=(h.y-a)/l,m=Math.atan(Math.sinh(d));if(n===0){h.x=i(o+(u-s)/l),h.y=m+0;return}for(let _=0;_<30;_++){let p=Math.atan(Math.sinh(d+n*Math.atanh(n*Math.sin(m))));if(Math.abs(p-m)<1e-13){h.x=i(o+(u-s)/l),h.y=p;return}m=p}throw new Error("Mercator inverse did not converge")})}};var Xo={name:"eqc",aliases:["Equirectangular","Equidistant_Cylindrical","Equidistant_Cylindrical_Spherical"],parameters:["lon_0","lat_0","lat_ts","x_0","y_0"],create({semiMajorAxis:t,parameters:e}){let r=Object.prototype.hasOwnProperty.call(e,"over")?c=>c:qe,n=L(e,"lon_0",0)*ee,i=Tr(e,"lat_0"),o=Math.cos(Tr(e,"lat_ts")),s=L(e,"x_0",0),a=L(e,"y_0",0);return Ge(c=>{c.x=s+t*o*r(c.x-n),c.y=a+t*(c.y-i)},c=>{c.x=r(n+(c.x-s)/(t*o)),c.y=i+(c.y-a)/t})}};var ue=["lon_0","lat_0","x_0","y_0"],lt=["k","k_0"];function dt(t,e,r=0){let n=L(t,e,r);if(e!=="lon_0"&&Math.abs(n)>90)throw new Error("Latitude parameter must be between -90 and 90 degrees: +"+e);return n*ee}function Ue(t,e){let r=Object.prototype.hasOwnProperty.call(t,e);if(r&&t[e]!==void 0)throw new Error("Expected a flag without a value: +"+e);return r}function ce({semiMajorAxis:t,eccentricitySquared:e,parameters:r}){let n=L(r,"k_0",L(r,"k",1));if(n<=0)throw new Error("Projection scale must be positive");return{a:t,b:t*Math.sqrt(1-e),es:e,e:Math.sqrt(e),ep2:e/(1-e),sphere:e===0,over:Ue(r,"over"),long0:dt(r,"lon_0"),lat0:dt(r,"lat_0"),lat1:dt(r,"lat_1"),lat2:dt(r,"lat_2",L(r,"lat_1",0)),lat_ts:dt(r,"lat_ts",NaN),x0:L(r,"x_0",0),y0:L(r,"y_0",0),k0:n}}function jt(t,e){if(!Object.prototype.hasOwnProperty.call(e,"lat_1"))throw new Error("Conic projections require +lat_1");if(Math.abs(t.lat1+t.lat2)<1e-10||Math.abs(t.lat1)>=Math.PI/2||Math.abs(t.lat2)>=Math.PI/2)throw new Error("Conic standard parallels must not be opposite or at a pole")}function ie(t,e,r,n,i=Ge){let o=(s,a)=>{let c=s(e,a);if(!c||typeof c!="object"||!Number.isFinite(c.x)||!Number.isFinite(c.y))throw new Error(t+": coordinate outside projection domain or inverse did not converge");a.x=c.x,a.y=c.y};return i(s=>o(r,s),s=>o(n,s))}function mt(t,e){let r=ct(e,!1);return Ge(n=>{let i=n.x,o=n.y,s=Math.atan2(Math.sin(i-t.long0),Math.cos(i-t.long0)),a=Math.abs(Math.abs(t.lat0)-Math.PI/2)<1e-10;if(Math.abs(o+t.lat0)<1e-10&&(a||Math.abs(Math.abs(s)-Math.PI)<1e-10))throw new Error("Azimuthal projection is undefined at the antipode");r(n)},ct(e,!0))}function xe(t,e,r){var n=t*e;return r/Math.sqrt(1-n*n)}var w=Math.PI/2,F=Math.PI/4,pt=Math.PI*2,X=3.14159265359,Zo=Math.PI/180,Qo=180/Math.PI,Jo=Math.PI/(180*3600);function Ce(t,e,r){var n=t*r,i=.5*t;return n=Math.pow((1-n)/(1+n),i),Math.tan(.5*(w-e))/n}function Qe(t){return t<0?-1:1}function b(t,e){return e||Math.abs(t)<=X?t:t-Qe(t)*pt}function Et(t,e){for(var r=.5*t,n,i,o=w-2*Math.atan(e),s=0;s<=15;s++)if(n=t*Math.sin(o),i=w-2*Math.atan(e*Math.pow((1-n)/(1+n),r))-o,o+=i,Math.abs(i)<=1e-10)return o;return-9999}function u1(t){if(t.k0||(t.k0=1),t.x0=t.x0||0,t.y0=t.y0||0,t.long0=t.long0||0,!(Math.abs(t.lat1+t.lat2)<1e-10)){var e=t.b/t.a;t.e=Math.sqrt(1-e*e);var r=Math.sin(t.lat1),n=Math.cos(t.lat1),i=xe(t.e,r,n),o=Ce(t.e,t.lat1,r),s=Math.sin(t.lat2),a=Math.cos(t.lat2),c=xe(t.e,s,a),l=Ce(t.e,t.lat2,s),h=Ce(t.e,t.lat0,Math.sin(t.lat0));Math.abs(t.lat1-t.lat2)>1e-10?t.ns=Math.log(i/c)/Math.log(o/l):t.ns=r,Number.isNaN(t.ns)&&(t.ns=r),t.f0=i/(t.ns*Math.pow(o,t.ns)),t.rh=Math.abs(Math.abs(t.lat0)-w)<1e-10?0:t.a*t.f0*Math.pow(h,t.ns)}}function Sh(t,e){var r=e.x,n=e.y;Math.abs(2*Math.abs(n)-Math.PI)<=1e-10&&(n=Qe(n)*(w-2*1e-10));var i=Math.abs(Math.abs(n)-w),o,s;if(i>1e-10)o=Ce(t.e,n,Math.sin(n)),s=t.a*t.f0*Math.pow(o,t.ns);else{if(i=n*t.ns,i<=0)return null;s=0}var a=t.ns*b(r-t.long0,t.over);return e.x=t.k0*(s*Math.sin(a))+t.x0,e.y=t.k0*(t.rh-s*Math.cos(a))+t.y0,e}function wh(t,e){var r,n,i,o,s,a=(e.x-t.x0)/t.k0,c=t.rh-(e.y-t.y0)/t.k0;t.ns>0?(r=Math.sqrt(a*a+c*c),n=1):(r=-Math.sqrt(a*a+c*c),n=-1);var l=0;if(r!==0&&(l=Math.atan2(n*a,n*c)),r!==0||t.ns>0){if(n=1/t.ns,i=Math.pow(r/(t.a*t.f0),n),o=Et(t.e,i),o===-9999)return null}else o=-w;return s=b(l/t.ns+t.long0,t.over),e.x=s,e.y=o,e}function Eh(t){let e={...t,ns:0,f0:0,rh:0};return u1(e),e}var es={name:"lcc",aliases:["Lambert Tangential Conformal Conic Projection","Lambert_Conformal_Conic","Lambert_Conformal_Conic_1SP","Lambert_Conformal_Conic_2SP","Lambert Conic Conformal (1SP)","Lambert Conic Conformal (2SP)"],parameters:[...ue,...lt,"lat_1","lat_2"],create(t){let e=ce(t);jt(e,t.parameters);let r=Eh(e),n=ie("lcc",r,Sh,wh);return Fe(i=>{let o=i.y;if(Math.abs(o)===Math.PI/2&&o*r.ns<0)throw new Error("Lambert conformal conic is undefined at the opposite pole");n.forwardInPlace(i)},n.inverseInPlace)}};function Se(t,e){var r;return t>1e-7?(r=t*e,(1-t*t)*(e/(1-r*r)-.5/t*Math.log((1-r)/(1+r)))):2*e}function we(t){return Math.abs(t)>1&&(t=t>1?1:-1),Math.asin(t)}function f1(t){Math.abs(t.lat1+t.lat2)<1e-10||(t.temp=t.b/t.a,t.es=1-Math.pow(t.temp,2),t.e3=Math.sqrt(t.es),t.sin_po=Math.sin(t.lat1),t.cos_po=Math.cos(t.lat1),t.t1=t.sin_po,t.con=t.sin_po,t.ms1=xe(t.e3,t.sin_po,t.cos_po),t.qs1=Se(t.e3,t.sin_po),t.sin_po=Math.sin(t.lat2),t.cos_po=Math.cos(t.lat2),t.t2=t.sin_po,t.ms2=xe(t.e3,t.sin_po,t.cos_po),t.qs2=Se(t.e3,t.sin_po),t.sin_po=Math.sin(t.lat0),t.cos_po=Math.cos(t.lat0),t.t3=t.sin_po,t.qs0=Se(t.e3,t.sin_po),Math.abs(t.lat1-t.lat2)>1e-10?t.ns0=(t.ms1*t.ms1-t.ms2*t.ms2)/(t.qs2-t.qs1):t.ns0=t.con,t.c=t.ms1*t.ms1+t.ns0*t.qs1,t.rh=t.a*Math.sqrt(t.c-t.ns0*t.qs0)/t.ns0)}function Th(t,e){var r=e.x,n=e.y;t.sin_phi=Math.sin(n),t.cos_phi=Math.cos(n);var i=Se(t.e3,t.sin_phi),o=t.a*Math.sqrt(t.c-t.ns0*i)/t.ns0,s=t.ns0*b(r-t.long0,t.over),a=o*Math.sin(s)+t.x0,c=t.rh-o*Math.cos(s)+t.y0;return e.x=a,e.y=c,e}function bh(t,e){var r,n,i,o,s,a;return e.x-=t.x0,e.y=t.rh-e.y+t.y0,t.ns0>=0?(r=Math.sqrt(e.x*e.x+e.y*e.y),i=1):(r=-Math.sqrt(e.x*e.x+e.y*e.y),i=-1),o=0,r!==0&&(o=Math.atan2(i*e.x,i*e.y)),i=r*t.ns0/t.a,t.sphere?a=Math.asin((t.c-i*i)/(2*t.ns0)):(n=(t.c-i*i)/t.ns0,a=d1(t.e3,n)),s=b(o/t.ns0+t.long0,t.over),e.x=s,e.y=a,e}function d1(t,e){var r,n,i,o,s,a=we(.5*e);if(t<1e-10)return a;for(var c=t*t,l=1;l<=25;l++)if(r=Math.sin(a),n=Math.cos(a),i=t*r,o=1-i*i,s=.5*o*o/n*(e/(1-c)-r/o+.5/t*Math.log((1-i)/(1+i))),a=a+s,Math.abs(s)<=1e-7)return a;return null}function vh(t){let e={...t,temp:0,e3:0,sin_po:0,cos_po:0,t1:0,con:0,ms1:0,qs1:0,t2:0,ms2:0,qs2:0,t3:0,qs0:0,ns0:0,c:0,rh:0,sin_phi:0,cos_phi:0};return f1(e),e}var ts={name:"aea",aliases:["Albers_Conic_Equal_Area","Albers_Equal_Area","Albers"],parameters:[...ue,"lat_1","lat_2"],create(t){let e=ce(t);return jt(e,t.parameters),ie("aea",vh(e),Th,bh,Fe)}};var m1=1,p1=.25,Ph=.046875,Rh=.01953125,Ch=.01068115234375,g1=.75,_1=.46875,M1=.013020833333333334,y1=.007120768229166667,x1=.3645833333333333,S1=.005696614583333333,w1=.3076171875;function Je(t){var e=[];e[0]=m1-t*(p1+t*(Ph+t*(Rh+t*Ch))),e[1]=t*(g1-t*(Ph+t*(Rh+t*Ch)));var r=t*t;return e[2]=r*(_1-t*(M1+t*y1)),r*=t,e[3]=r*(x1-t*S1),e[4]=r*t*w1,e}function le(t,e,r,n){return r*=e,e*=e,n[0]*t-r*(n[1]+e*(n[2]+e*(n[3]+e*n[4])))}var E1=20;function et(t,e,r){for(var n=1/(1-e),i=t,o=E1;o;--o){var s=Math.sin(i),a=1-e*s*s;if(a=(le(i,s,Math.cos(i),r)-t)*(a*Math.sqrt(a))*n,i-=a,Math.abs(a)<1e-10)return i}return i}function Ve(t){return Math.abs(t)<w?t:t-Qe(t)*Math.PI}function T1(t){Math.abs(t.lat1+t.lat2)<1e-10||(t.temp=t.b/t.a,t.es=1-Math.pow(t.temp,2),t.e=Math.sqrt(t.es),t.en=Je(t.es),t.sin_phi=Math.sin(t.lat1),t.cos_phi=Math.cos(t.lat1),t.ms1=xe(t.e,t.sin_phi,t.cos_phi),t.ml1=le(t.lat1,Math.sin(t.lat1),Math.cos(t.lat1),t.en),Math.abs(t.lat1-t.lat2)<1e-10?t.ns=t.sin_phi:(t.sin_phi=Math.sin(t.lat2),t.cos_phi=Math.cos(t.lat2),t.ms2=xe(t.e,t.sin_phi,t.cos_phi),t.ml2=le(t.lat2,Math.sin(t.lat2),Math.cos(t.lat2),t.en),t.ns=(t.ms1-t.ms2)/(t.ml2-t.ml1)),t.g=t.ml1+t.ms1/t.ns,t.ml0=le(t.lat0,Math.sin(t.lat0),Math.cos(t.lat0),t.en),t.rh=t.a*(t.g-t.ml0))}function Ah(t,e){var r=e.x,n=e.y,i;if(t.sphere)i=t.a*(t.g-n);else{var o=le(n,Math.sin(n),Math.cos(n),t.en);i=t.a*(t.g-o)}var s=t.ns*b(r-t.long0,t.over),a=t.x0+i*Math.sin(s),c=t.y0+t.rh-i*Math.cos(s);return e.x=a,e.y=c,e}function Ih(t,e){e.x-=t.x0,e.y=t.rh-e.y+t.y0;var r,n,i,o;t.ns>=0?(n=Math.sqrt(e.x*e.x+e.y*e.y),r=1):(n=-Math.sqrt(e.x*e.x+e.y*e.y),r=-1);var s=0;if(n!==0&&(s=Math.atan2(r*e.x,r*e.y)),t.sphere)return o=b(t.long0+s/t.ns,t.over),i=Ve(t.g-n/t.a),e.x=o,e.y=i,e;var a=t.g-n/t.a;return i=et(a,t.es,t.en),o=b(t.long0+s/t.ns,t.over),e.x=o,e.y=i,e}function Oh(t){let e={...t,temp:0,en:[],sin_phi:0,cos_phi:0,ms1:0,ml1:0,ns:0,ms2:0,ml2:0,g:0,ml0:0,rh:0};return T1(e),e}var rs={name:"eqdc",aliases:["Equidistant_Conic"],parameters:[...ue,"lat_1","lat_2"],create(t){let e=ce(t);return jt(e,t.parameters),ie("eqdc",Oh(e),Ah,Ih,Fe)}};var b1=.3333333333333333,v1=.17222222222222222,P1=.10257936507936508,R1=.06388888888888888,C1=.0664021164021164,A1=.016415012942191543;function Pr(t){var e,r=[];return r[0]=t*b1,e=t*t,r[0]+=e*v1,r[1]=e*R1,e*=t,r[0]+=e*P1,r[1]+=e*C1,r[2]=e*A1,r}function Rr(t,e){var r=t+t;return t+e[0]*Math.sin(r)+e[1]*Math.sin(r+r)+e[2]*Math.sin(r+r+r)}var tt=1,ht=2,ze=3,Ae=4;function I1(t){var e=Math.abs(t.lat0);if(Math.abs(e-w)<1e-10?t.mode=t.lat0<0?tt:ht:Math.abs(e)<1e-10?t.mode=ze:t.mode=Ae,t.es>0){var r;switch(t.qp=Se(t.e,1),t.mmf=.5/(1-t.es),t.apa=Pr(t.es),t.mode){case ht:t.dd=1;break;case tt:t.dd=1;break;case ze:t.rq=Math.sqrt(.5*t.qp),t.dd=1/t.rq,t.xmf=1,t.ymf=.5*t.qp;break;case Ae:t.rq=Math.sqrt(.5*t.qp),r=Math.sin(t.lat0),t.sinb1=Se(t.e,r)/t.qp,t.cosb1=Math.sqrt(1-t.sinb1*t.sinb1),t.dd=Math.cos(t.lat0)/(Math.sqrt(1-t.es*r*r)*t.rq*t.cosb1),t.xmf=t.rq,t.ymf=t.xmf/t.dd,t.xmf*=t.dd;break}}else t.mode===Ae&&(t.sinph0=Math.sin(t.lat0),t.cosph0=Math.cos(t.lat0))}function Nh(t,e){var r,n,i,o,s,a,c,l,h,u,f=e.x,d=e.y;if(f=b(f-t.long0,t.over),t.sphere){if(s=Math.sin(d),u=Math.cos(d),i=Math.cos(f),t.mode===Ae||t.mode===ze){if(n=t.mode===ze?1+u*i:1+t.sinph0*s+t.cosph0*u*i,n<=1e-10)return null;n=Math.sqrt(2/n),r=n*u*Math.sin(f),n*=t.mode===ze?s:t.cosph0*s-t.sinph0*u*i}else if(t.mode===ht||t.mode===tt){if(t.mode===ht&&(i=-i),Math.abs(d+t.lat0)<1e-10)return null;n=F-d*.5,n=2*(t.mode===tt?Math.cos(n):Math.sin(n)),r=n*Math.sin(f),n*=i}}else{switch(c=0,l=0,h=0,i=Math.cos(f),o=Math.sin(f),s=Math.sin(d),a=Se(t.e,s),(t.mode===Ae||t.mode===ze)&&(c=a/t.qp,l=Math.sqrt(1-c*c)),t.mode){case Ae:h=1+t.sinb1*c+t.cosb1*l*i;break;case ze:h=1+l*i;break;case ht:h=w+d,a=t.qp-a;break;case tt:h=d-w,a=t.qp+a;break}if(Math.abs(h)<1e-10)return null;switch(t.mode){case Ae:case ze:h=Math.sqrt(2/h),t.mode===Ae?n=t.ymf*h*(t.cosb1*c-t.sinb1*l*i):(h=Math.sqrt(2/(1+l*i)),n=h*c*t.ymf),r=t.xmf*h*l*o;break;case ht:case tt:a>=0?(h=Math.sqrt(a),r=h*o,n=i*(t.mode===tt?h:-h)):r=n=0;break}}return e.x=t.a*r+t.x0,e.y=t.a*n+t.y0,e}function Lh(t,e){e.x-=t.x0,e.y-=t.y0;var r=e.x/t.a,n=e.y/t.a,i,o,s,a,c,l,h;if(t.sphere){var u=0,f,d=0;if(f=Math.sqrt(r*r+n*n),o=f*.5,o>1)return null;switch(o=2*Math.asin(o),(t.mode===Ae||t.mode===ze)&&(d=Math.sin(o),u=Math.cos(o)),t.mode){case ze:o=Math.abs(f)<=1e-10?0:Math.asin(n*d/f),r*=d,n=u*f;break;case Ae:o=Math.abs(f)<=1e-10?t.lat0:Math.asin(u*t.sinph0+n*d*t.cosph0/f),r*=d*t.cosph0,n=(u-Math.sin(o)*t.sinph0)*f;break;case ht:n=-n,o=w-o;break;case tt:o-=w;break}i=n===0&&(t.mode===ze||t.mode===Ae)?0:Math.atan2(r,n)}else{if(h=0,t.mode===Ae||t.mode===ze){if(r/=t.dd,n*=t.dd,l=Math.sqrt(r*r+n*n),l<1e-10)return e.x=t.long0,e.y=t.lat0,e;a=2*Math.asin(.5*l/t.rq),s=Math.cos(a),r*=a=Math.sin(a),t.mode===Ae?(h=s*t.sinb1+n*a*t.cosb1/l,c=t.qp*h,n=l*t.cosb1*s-n*t.sinb1*a):(h=n*a/l,c=t.qp*h,n=l*s)}else if(t.mode===ht||t.mode===tt){if(t.mode===ht&&(n=-n),c=r*r+n*n,!c)return e.x=t.long0,e.y=t.lat0,e;h=1-c/t.qp,t.mode===tt&&(h=-h)}i=Math.atan2(r,n),o=Rr(Math.asin(h),t.apa)}return e.x=b(t.long0+i,t.over),e.y=o,e}function Gh(t){let e={...t,mode:0,qp:0,mmf:0,apa:[],dd:0,rq:0,xmf:0,ymf:0,sinb1:0,cosb1:0,sinph0:0,cosph0:0};return I1(e),e}var ns={name:"laea",aliases:["Lambert Azimuthal Equal Area","Lambert_Azimuthal_Equal_Area"],parameters:ue,create(t){let e=ce(t);return mt(e,ie("laea",Gh(e),Nh,Lh))}};function qh(t,e,r){return e*=r,Math.tan(.5*(w+t))*Math.pow((1-e)/(1+e),.5*r)}function O1(t){t.x0=t.x0||0,t.y0=t.y0||0,t.lat0=t.lat0||0,t.long0=t.long0||0,t.coslat0=Math.cos(t.lat0),t.sinlat0=Math.sin(t.lat0),t.sphere?!Number.isNaN(t.lat_ts)&&Math.abs(t.coslat0)<=1e-10&&(t.k0=.5*(1+Qe(t.lat0)*Math.sin(t.lat_ts))):(Math.abs(t.coslat0)<=1e-10&&(t.lat0>0?t.con=1:t.con=-1),t.cons=Math.sqrt(Math.pow(1+t.e,1+t.e)*Math.pow(1-t.e,1-t.e)),!Number.isNaN(t.lat_ts)&&Math.abs(t.coslat0)<=1e-10&&Math.abs(Math.cos(t.lat_ts))>1e-10&&(t.k0=.5*t.cons*xe(t.e,Math.sin(t.lat_ts),Math.cos(t.lat_ts))/Ce(t.e,t.con*t.lat_ts,t.con*Math.sin(t.lat_ts))),t.ms1=xe(t.e,t.sinlat0,t.coslat0),t.X0=2*Math.atan(qh(t.lat0,t.sinlat0,t.e))-w,t.cosX0=Math.cos(t.X0),t.sinX0=Math.sin(t.X0))}function zh(t,e){var r=e.x,n=e.y,i=Math.sin(n),o=Math.cos(n),s,a,c,l,h,u,f=b(r-t.long0,t.over);return Math.abs(Math.abs(r-t.long0)-Math.PI)<=1e-10&&Math.abs(n+t.lat0)<=1e-10?(e.x=NaN,e.y=NaN,e):t.sphere?(s=2*t.k0/(1+t.sinlat0*i+t.coslat0*o*Math.cos(f)),e.x=t.a*s*o*Math.sin(f)+t.x0,e.y=t.a*s*(t.coslat0*i-t.sinlat0*o*Math.cos(f))+t.y0,e):(a=2*Math.atan(qh(n,i,t.e))-w,l=Math.cos(a),c=Math.sin(a),Math.abs(t.coslat0)<=1e-10?(h=Ce(t.e,n*t.con,t.con*i),u=2*t.a*t.k0*h/t.cons,e.x=t.x0+u*Math.sin(r-t.long0),e.y=t.y0-t.con*u*Math.cos(r-t.long0),e):(Math.abs(t.sinlat0)<1e-10?(s=2*t.a*t.k0/(1+l*Math.cos(f)),e.y=s*c+t.y0):(s=2*t.a*t.k0*t.ms1/(t.cosX0*(1+t.sinX0*c+t.cosX0*l*Math.cos(f))),e.y=s*(t.cosX0*c-t.sinX0*l*Math.cos(f))+t.y0),e.x=s*l*Math.sin(f)+t.x0,e))}function Bh(t,e){e.x-=t.x0,e.y-=t.y0;var r,n,i,o,s,a=Math.sqrt(e.x*e.x+e.y*e.y);if(t.sphere){var c=2*Math.atan(a/(2*t.a*t.k0));return r=t.long0,n=t.lat0,a<=1e-10?(e.x=r,e.y=n,e):(n=Math.asin(Math.cos(c)*t.sinlat0+e.y*Math.sin(c)*t.coslat0/a),Math.abs(t.coslat0)<1e-10?t.lat0>0?r=b(t.long0+Math.atan2(e.x,-1*e.y),t.over):r=b(t.long0+Math.atan2(e.x,e.y),t.over):r=b(t.long0+Math.atan2(e.x*Math.sin(c),a*t.coslat0*Math.cos(c)-e.y*t.sinlat0*Math.sin(c)),t.over),e.x=r,e.y=n,e)}else if(Math.abs(t.coslat0)<=1e-10){if(a<=1e-10)return n=t.lat0,r=t.long0,e.x=r,e.y=n,e;e.x*=t.con,e.y*=t.con,i=a*t.cons/(2*t.a*t.k0),n=t.con*Et(t.e,i),r=t.con*b(t.con*t.long0+Math.atan2(e.x,-1*e.y),t.over)}else o=2*Math.atan(a*t.cosX0/(2*t.a*t.k0*t.ms1)),r=t.long0,a<=1e-10?s=t.X0:(s=Math.asin(Math.cos(o)*t.sinX0+e.y*Math.sin(o)*t.cosX0/a),r=b(t.long0+Math.atan2(e.x*Math.sin(o),a*t.cosX0*Math.cos(o)-e.y*t.sinX0*Math.sin(o)),t.over)),n=-1*Et(t.e,Math.tan(.5*(w+s)));return e.x=r,e.y=n,e}function Dh(t){let e={...t,coslat0:0,sinlat0:0,con:0,cons:0,ms1:0,X0:0,cosX0:0,sinX0:0};return O1(e),e}var is={name:"stere",aliases:["Stereographic_South_Pole","Polar_Stereographic_variant_A","Polar_Stereographic_variant_B","Polar_Stereographic"],parameters:[...ue,...lt,"lat_ts"],create(t){let e=ce(t);return mt(e,ie("stere",Dh(e),zh,Bh))}};function di(t,e){return Math.pow((1-t)/(1+t),e)}var N1=20;function L1(t){var e=Math.sin(t.lat0),r=Math.cos(t.lat0);r*=r,t.rc=Math.sqrt(1-t.es)/(1-t.es*e*e),t.C=Math.sqrt(1+t.es*r*r/(1-t.es)),t.phic0=Math.asin(e/t.C),t.ratexp=.5*t.C*t.e,t.K=Math.tan(.5*t.phic0+F)/(Math.pow(Math.tan(.5*t.lat0+F),t.C)*di(t.e*e,t.ratexp))}function kh(t,e){var r=e.x,n=e.y;return e.y=2*Math.atan(t.K*Math.pow(Math.tan(.5*n+F),t.C)*di(t.e*Math.sin(n),t.ratexp))-w,e.x=t.C*r,e}function Fh(t,e){for(var r=1e-14,n=e.x/t.C,i=e.y,o=Math.pow(Math.tan(.5*i+F)/t.K,1/t.C),s=N1;s>0&&(i=2*Math.atan(o*di(t.e*Math.sin(e.y),-.5*t.e))-w,!(Math.abs(i-e.y)<r));--s)e.y=i;return s?(e.x=n,e.y=i,e):null}function Uh(t){let e={...t,rc:0,C:0,phic0:0,ratexp:0,K:0};return L1(e),e}function ne(t,e){t=Math.abs(t),e=Math.abs(e);var r=Math.max(t,e),n=Math.min(t,e)/(r||1);return r*Math.sqrt(1+Math.pow(n,2))}function G1(t){t.rc&&(t.sinc0=Math.sin(t.phic0),t.cosc0=Math.cos(t.phic0),t.R2=2*t.rc)}function Vh(t,e){var r,n,i,o;return e.x=b(e.x-t.long0,t.over),kh(t,e),r=Math.sin(e.y),n=Math.cos(e.y),i=Math.cos(e.x),o=t.k0*t.R2/(1+t.sinc0*r+t.cosc0*n*i),e.x=o*n*Math.sin(e.x),e.y=o*(t.cosc0*r-t.sinc0*n*i),e.x=t.a*e.x+t.x0,e.y=t.a*e.y+t.y0,e}function jh(t,e){var r,n,i,o,s;if(e.x=(e.x-t.x0)/t.a,e.y=(e.y-t.y0)/t.a,e.x/=t.k0,e.y/=t.k0,s=ne(e.x,e.y),s){var a=2*Math.atan2(s,t.R2);r=Math.sin(a),n=Math.cos(a),o=Math.asin(n*t.sinc0+e.y*r*t.cosc0/s),i=Math.atan2(e.x*r,s*t.cosc0*n-e.y*t.sinc0*r)}else o=t.phic0,i=0;if(e.x=i,e.y=o,!Fh(t,e))throw new Error("Oblique stereographic inverse did not converge");return e.x=b(e.x+t.long0,t.over),e}function Wh(t){let e={...Uh(t),sinc0:0,cosc0:0,R2:0};return G1(e),e}var os={name:"sterea",aliases:["Stereographic_North_Pole","Oblique_Stereographic","Oblique Stereographic Alternative","Double_Stereographic"],parameters:[...ue,...lt],create(t){let e=ce(t);if(Math.abs(e.lat0)===Math.PI/2)throw new Error("sterea requires a non-polar origin; use stere at the poles");return mt(e,ie("sterea",Wh(e),Vh,jh))}};function je(t,e,r,n,i){return t*i-e*Math.sin(2*i)+r*Math.sin(4*i)-n*Math.sin(6*i)}function Cr(t){return 1-.25*t*(1+t/16*(3+1.25*t))}function Ar(t){return .375*t*(1+.25*t*(1+.46875*t))}function Ir(t){return .05859375*t*t*(1+.75*t)}function Or(t){return t*t*t*(35/3072)}function ss(t,e,r,n,i){var o,s;o=t/e;for(var a=0;a<15;a++)if(s=(t-(e*o-r*Math.sin(2*o)+n*Math.sin(4*o)-i*Math.sin(6*o)))/(e-2*r*Math.cos(2*o)+4*n*Math.cos(4*o)-6*i*Math.cos(6*o)),o+=s,Math.abs(s)<=1e-10)return o;return NaN}function Hh(t,e,r,n,i,o){let s=n-e,a=Math.atan((1-o)*Math.tan(t)),c=Math.atan((1-o)*Math.tan(r)),l=Math.sin(a),h=Math.cos(a),u=Math.sin(c),f=Math.cos(c),d=s,m,_=100,p,M,y,S,x,E,T,R,C,O,v,A,I,k;do{if(p=Math.sin(d),M=Math.cos(d),y=Math.sqrt(f*p*(f*p)+(h*u-l*f*M)*(h*u-l*f*M)),y===0)return{azi1:0,s12:0};S=l*u+h*f*M,x=Math.atan2(y,S),E=h*f*p/y,T=1-E*E,R=T!==0?S-2*l*u/T:0,C=o/16*T*(4+o*(4-3*T)),m=d,d=s+(1-C)*o*E*(x+C*y*(R+C*S*(-1+2*R*R)))}while(Math.abs(d-m)>1e-12&&--_>0);return _===0?{azi1:NaN,s12:NaN}:(O=T*(i*i-i*(1-o)*(i*(1-o)))/(i*(1-o)*(i*(1-o))),v=1+O/16384*(4096+O*(-768+O*(320-175*O))),A=O/1024*(256+O*(-128+O*(74-47*O))),I=A*y*(R+A/4*(S*(-1+2*R*R)-A/6*R*(-3+4*y*y)*(-3+4*R*R))),k=i*(1-o)*v*(x-I),{azi1:Math.atan2(f*p,h*u-l*f*M),s12:k})}function $h(t,e,r,n,i,o){let s=Math.atan((1-o)*Math.tan(t)),a=Math.sin(s),c=Math.cos(s),l=Math.sin(r),h=Math.cos(r),u=Math.atan2(a,c*h),f=c*l,d=1-f*f,m=d*(i*i-i*(1-o)*(i*(1-o)))/(i*(1-o)*(i*(1-o))),_=1+m/16384*(4096+m*(-768+m*(320-175*m))),p=m/1024*(256+m*(-128+m*(74-47*m))),M=n/(i*(1-o)*_),y,S=100,x,E,T,R;do x=Math.cos(2*u+M),E=Math.sin(M),T=Math.cos(M),R=p*E*(x+p/4*(T*(-1+2*x*x)-p/6*x*(-3+4*E*E)*(-3+4*x*x))),y=M,M=n/(i*(1-o)*_)+R;while(Math.abs(M-y)>1e-12&&--S>0);if(S===0)return{lat2:NaN,lon2:NaN};let C=a*E-c*T*h,O=Math.atan2(a*T+c*E*h,(1-o)*Math.sqrt(f*f+C*C)),v=Math.atan2(E*l,c*T-a*E*h),A=o/16*d*(4+o*(4-3*d)),I=v-(1-A)*o*f*(M+A*E*(x+A*T*(-1+2*x*x))),k=e+I;return{lat2:O,lon2:k}}function q1(t){t.sin_p12=Math.sin(t.lat0),t.cos_p12=Math.cos(t.lat0),t.x0=t.x0||0,t.y0=t.y0||0,t.long0=t.long0||0,t.f=t.es/(1+Math.sqrt(1-t.es))}function Yh(t,e){var r=e.x,n=e.y,i=Math.sin(e.y),o=Math.cos(e.y),s=b(r-t.long0,t.over),a,c,l,h,u,f,d,m,_,p,M;return t.sphere?Math.abs(t.sin_p12-1)<=1e-10?(e.x=t.x0+t.a*(w-n)*Math.sin(s),e.y=t.y0-t.a*(w-n)*Math.cos(s),e):Math.abs(t.sin_p12+1)<=1e-10?(e.x=t.x0+t.a*(w+n)*Math.sin(s),e.y=t.y0+t.a*(w+n)*Math.cos(s),e):(_=t.sin_p12*i+t.cos_p12*o*Math.cos(s),d=Math.acos(_),m=d?d/Math.sin(d):1,e.x=t.x0+t.a*m*o*Math.sin(s),e.y=t.y0+t.a*m*(t.cos_p12*i-t.sin_p12*o*Math.cos(s)),e):(a=Cr(t.es),c=Ar(t.es),l=Ir(t.es),h=Or(t.es),Math.abs(t.sin_p12-1)<=1e-10?(u=t.a*je(a,c,l,h,w),f=t.a*je(a,c,l,h,n),e.x=t.x0+(u-f)*Math.sin(s),e.y=t.y0-(u-f)*Math.cos(s),e):Math.abs(t.sin_p12+1)<=1e-10?(u=t.a*je(a,c,l,h,w),f=t.a*je(a,c,l,h,n),e.x=t.x0+(u+f)*Math.sin(s),e.y=t.y0+(u+f)*Math.cos(s),e):Math.abs(s)<1e-10&&Math.abs(n-t.lat0)<1e-10?(e.x=t.x0,e.y=t.y0,e):(p=Hh(t.lat0,t.long0,n,r,t.a,t.f),M=p.azi1,e.x=t.x0+p.s12*Math.sin(M),e.y=t.y0+p.s12*Math.cos(M),e))}function Kh(t,e){e.x-=t.x0,e.y-=t.y0;var r,n,i,o,s,a,c,l,h,u,f,d,m,_,p,M;return t.sphere?(r=Math.sqrt(e.x*e.x+e.y*e.y),r>2*w*t.a?null:(n=r/t.a,i=Math.sin(n),o=Math.cos(n),s=t.long0,Math.abs(r)<=1e-10?a=t.lat0:(a=we(o*t.sin_p12+e.y*i*t.cos_p12/r),c=Math.abs(t.lat0)-w,Math.abs(c)<=1e-10?t.lat0>=0?s=b(t.long0+Math.atan2(e.x,-e.y),t.over):s=b(t.long0-Math.atan2(-e.x,e.y),t.over):s=b(t.long0+Math.atan2(e.x*i,r*t.cos_p12*o-e.y*t.sin_p12*i),t.over)),e.x=s,e.y=a,e)):(l=Cr(t.es),h=Ar(t.es),u=Ir(t.es),f=Or(t.es),Math.abs(t.sin_p12-1)<=1e-10?(d=t.a*je(l,h,u,f,w),r=Math.sqrt(e.x*e.x+e.y*e.y),m=d-r,a=ss(m/t.a,l,h,u,f),s=b(t.long0+Math.atan2(e.x,-1*e.y),t.over),e.x=s,e.y=a,e):Math.abs(t.sin_p12+1)<=1e-10?(d=t.a*je(l,h,u,f,w),r=Math.sqrt(e.x*e.x+e.y*e.y),m=r-d,a=ss(m/t.a,l,h,u,f),s=b(t.long0+Math.atan2(e.x,e.y),t.over),e.x=s,e.y=a,e):(_=Math.atan2(e.x,e.y),p=Math.sqrt(e.x*e.x+e.y*e.y),M=$h(t.lat0,t.long0,_,p,t.a,t.f),e.x=M.lon2,e.y=M.lat2,e))}function Xh(t){let e={...t,sin_p12:0,cos_p12:0,f:0};return q1(e),e}var as={name:"aeqd",aliases:["Azimuthal_Equidistant"],parameters:ue,create(t){let e=ce(t);return mt(e,ie("aeqd",Xh(e),Yh,Kh))}};function Tt(t){var e=Math.exp(t);return e=(e-1/e)/2,e}function Zh(t){var e=1+t,r=e-1;return r===0?t:t*Math.log(e)/r}function Qh(t){var e=Math.abs(t);return e=Zh(e*(1+e/(ne(1,e)+1))),t<0?-e:e}function mi(t,e){for(var r=2*Math.cos(2*e),n=t.length-1,i=t[n],o=0,s;--n>=0;)s=-o+r*i+t[n],o=i,i=s;return e+s*Math.sin(2*e)}function Jh(t,e){for(var r=2*Math.cos(e),n=t.length-1,i=t[n],o=0,s;--n>=0;)s=-o+r*i+t[n],o=i,i=s;return Math.sin(e)*s}function Nr(t){var e=Math.exp(t);return e=(e+1/e)/2,e}function cs(t,e,r,n){for(var i=Math.sin(e),o=Math.cos(e),s=Tt(r),a=Nr(r),c=2*o*a,l=-2*i*s,h=t.length-1,u=t[h],f=0,d=0,m=0,_,p;--h>=0;)_=d,p=f,d=u,f=m,u=-_+c*d-l*f+t[h],m=-p+l*d+c*f;c=i*a,l=o*s,n.x=c*u-l*m,n.y=c*m+l*u}function z1(t){t.x0=t.x0!==void 0?t.x0:0,t.y0=t.y0!==void 0?t.y0:0,t.long0=t.long0!==void 0?t.long0:0,t.lat0=t.lat0!==void 0?t.lat0:0,t.k0=t.k0!==void 0?t.k0:1,t.cgb=[],t.cbg=[],t.utg=[],t.gtu=[];var e=t.es/(1+Math.sqrt(1-t.es)),r=e/(2-e),n=r;t.cgb[0]=r*(2+r*(-2/3+r*(-2+r*(116/45+r*(26/45+r*(-2854/675)))))),t.cbg[0]=r*(-2+r*(2/3+r*(4/3+r*(-82/45+r*(32/45+r*(4642/4725)))))),n=n*r,t.cgb[1]=n*(7/3+r*(-8/5+r*(-227/45+r*(2704/315+r*(2323/945))))),t.cbg[1]=n*(5/3+r*(-16/15+r*(-13/9+r*(904/315+r*(-1522/945))))),n=n*r,t.cgb[2]=n*(56/15+r*(-136/35+r*(-1262/105+r*(73814/2835)))),t.cbg[2]=n*(-26/15+r*(34/21+r*(8/5+r*(-12686/2835)))),n=n*r,t.cgb[3]=n*(4279/630+r*(-332/35+r*(-399572/14175))),t.cbg[3]=n*(1237/630+r*(-12/5+r*(-24832/14175))),n=n*r,t.cgb[4]=n*(4174/315+r*(-144838/6237)),t.cbg[4]=n*(-734/315+r*(109598/31185)),n=n*r,t.cgb[5]=n*(601676/22275),t.cbg[5]=n*(444337/155925),n=Math.pow(r,2),t.Qn=t.k0/(1+r)*(1+n*(1/4+n*(1/64+n/256))),t.utg[0]=r*(-.5+r*(2/3+r*(-37/96+r*(1/360+r*(81/512+r*(-96199/604800)))))),t.gtu[0]=r*(.5+r*(-2/3+r*(5/16+r*(41/180+r*(-127/288+r*(7891/37800)))))),t.utg[1]=n*(-1/48+r*(-1/15+r*(437/1440+r*(-46/105+r*(1118711/3870720))))),t.gtu[1]=n*(13/48+r*(-3/5+r*(557/1440+r*(281/630+r*(-1983433/1935360))))),n=n*r,t.utg[2]=n*(-17/480+r*(37/840+r*(209/4480+r*(-5569/90720)))),t.gtu[2]=n*(61/240+r*(-103/140+r*(15061/26880+r*(167603/181440)))),n=n*r,t.utg[3]=n*(-4397/161280+r*(11/504+r*(830251/7257600))),t.gtu[3]=n*(49561/161280+r*(-179/168+r*(6601661/7257600))),n=n*r,t.utg[4]=n*(-4583/161280+r*(108847/3991680)),t.gtu[4]=n*(34729/80640+r*(-3418889/1995840)),n=n*r,t.utg[5]=n*(-20648693/638668800),t.gtu[5]=n*(212378941/319334400);var i=mi(t.cbg,t.lat0);t.Zb=-t.Qn*(i+Jh(t.gtu,2*i))}function eu(t,e){var r=b(e.x-t.long0,t.over),n=e.y;n=mi(t.cbg,n);var i=Math.sin(n),o=Math.cos(n),s=Math.sin(r),a=Math.cos(r);n=Math.atan2(i,a*o),r=Math.atan2(s*o,ne(i,o*a)),r=Qh(Math.tan(r)),cs(t.gtu,2*n,2*r,e),n=n+e.x,r=r+e.y;var c,l;return Math.abs(r)<=2.623395162778?(c=t.a*(t.Qn*r)+t.x0,l=t.a*(t.Qn*n+t.Zb)+t.y0):(c=1/0,l=1/0),e.x=c,e.y=l,e}function tu(t,e){var r=(e.x-t.x0)*(1/t.a),n=(e.y-t.y0)*(1/t.a);n=(n-t.Zb)/t.Qn,r=r/t.Qn;var i,o;if(Math.abs(r)<=2.623395162778){cs(t.utg,2*n,2*r,e),n=n+e.x,r=r+e.y,r=Math.atan(Tt(r));var s=Math.sin(n),a=Math.cos(n),c=Math.sin(r),l=Math.cos(r);n=Math.atan2(s*l,ne(c,l*a)),r=Math.atan2(c,l*a),i=b(r+t.long0,t.over),o=mi(t.cgb,n)}else i=1/0,o=1/0;return e.x=i,e.y=o,e}function ru(t){let e={...t,cgb:[],cbg:[],utg:[],gtu:[],Qn:0,Zb:0};return z1(e),e}function B1(t){t.x0=t.x0!==void 0?t.x0:0,t.y0=t.y0!==void 0?t.y0:0,t.long0=t.long0!==void 0?t.long0:0,t.lat0=t.lat0!==void 0?t.lat0:0,t.es&&(t.en=Je(t.es),t.ml0=le(t.lat0,Math.sin(t.lat0),Math.cos(t.lat0),t.en))}function nu(t,e){var r=e.x,n=e.y,i=b(r-t.long0,t.over),o,s,a,c=Math.sin(n),l=Math.cos(n);if(t.es){var u=l*i,f=Math.pow(u,2),d=t.ep2*Math.pow(l,2),m=Math.pow(d,2),_=Math.abs(l)>1e-10?Math.tan(n):0,p=Math.pow(_,2),M=Math.pow(p,2);o=1-t.es*Math.pow(c,2),u=u/Math.sqrt(o);var y=le(n,c,l,t.en);s=t.a*(t.k0*u*(1+f/6*(1-p+d+f/20*(5-18*p+M+14*d-58*p*d+f/42*(61+179*M-M*p-479*p)))))+t.x0,a=t.a*(t.k0*(y-t.ml0+c*i*u/2*(1+f/12*(5-p+9*d+4*m+f/30*(61+M-58*p+270*d-330*p*d+f/56*(1385+543*M-M*p-3111*p))))))+t.y0}else{var h=l*Math.sin(i);if(Math.abs(Math.abs(h)-1)<1e-10)return 93;if(s=.5*t.a*t.k0*Math.log((1+h)/(1-h))+t.x0,a=l*Math.cos(i)/Math.sqrt(1-Math.pow(h,2)),h=Math.abs(a),h>=1){if(h-1>1e-10)return 93;a=0}else a=Math.acos(a);n<0&&(a=-a),a=t.a*t.k0*(a-t.lat0)+t.y0}return e.x=s,e.y=a,e}function iu(t,e){var r,n,i,o,s=(e.x-t.x0)*(1/t.a),a=(e.y-t.y0)*(1/t.a);if(t.es)if(r=t.ml0+a/t.k0,n=et(r,t.es,t.en),Math.abs(n)<w){var f=Math.sin(n),d=Math.cos(n),m=Math.abs(d)>1e-10?Math.tan(n):0,_=t.ep2*Math.pow(d,2),p=Math.pow(_,2),M=Math.pow(m,2),y=Math.pow(M,2);r=1-t.es*Math.pow(f,2);var S=s*Math.sqrt(r)/t.k0,x=Math.pow(S,2);r=r*m,i=n-r*x/(1-t.es)*.5*(1-x/12*(5+3*M-9*_*M+_-4*p-x/30*(61+90*M-252*_*M+45*y+46*_-x/56*(1385+3633*M+4095*y+1574*y*M)))),o=b(t.long0+S*(1-x/6*(1+2*M+_-x/20*(5+28*M+24*y+8*_*M+6*_-x/42*(61+662*M+1320*y+720*y*M))))/d,t.over)}else i=w*Qe(a),o=0;else{var c=Math.exp(s/t.k0),l=.5*(c-1/c),h=t.lat0+a/t.k0,u=Math.cos(h);r=Math.sqrt((1-Math.pow(u,2))/(1+Math.pow(l,2))),i=Math.asin(r),Math.sin(h)<0&&(i=-i),l===0&&u===0?o=0:o=b(Math.atan2(l,u)+t.long0,t.over)}return e.x=o,e.y=i,e}function ou(t){let e={...t,en:[],ml0:0};return B1(e),e}function pi(t){let e=ce(t);if(Ue(t.parameters,"approx"))return ie("tmerc +approx",ou(e),nu,iu,Fe);if(e.sphere)throw new Error("Spherical transverse Mercator requires +approx");return ie("etmerc",ru(e),eu,tu,Fe)}var ls={name:"tmerc",aliases:["Fast_Transverse_Mercator","Fast Transverse Mercator","Transverse_Mercator","Transverse Mercator","Gauss Kruger","Gauss_Kruger"],parameters:[...ue,...lt,"approx"],flags:["approx"],create:pi},hs={name:"etmerc",aliases:["Extended_Transverse_Mercator","Extended Transverse Mercator"],parameters:[...ue,...lt,"approx"],flags:["approx"],create:pi};var us={name:"utm",aliases:["Universal Transverse Mercator System"],parameters:["zone","south","approx"],flags:["south","approx"],create(t){let e=L(t.parameters,"zone",NaN);if(!Number.isInteger(e)||e<1||e>60)throw new Error("UTM requires an integer +zone from 1 to 60");let r=Ue(t.parameters,"south");return pi({...t,parameters:{...t.parameters,lat_0:"0",lon_0:String(6*e-183),x_0:"500000",y_0:r?"10000000":"0",k_0:"0.9996"}})}};var fs={name:"geocent",aliases:["Geocentric","geocentric","Geocent"],parameters:[],create({semiMajorAxis:t,eccentricitySquared:e}){let r={semiMajorAxis:t,eccentricitySquared:e,semiMinorAxis:t*Math.sqrt(1-e)};return{forward(){throw new Error("Geocentric projection requires the 3D pipeline")},inverse(){throw new Error("Geocentric projection requires the 3D pipeline")},forwardInPlace:n=>ai(n,r),inverseInPlace:n=>ci(n,r),forward3D:n=>fh(n,r),inverse3D:n=>dh(n,r)}}};function q(t){let e=ce(t);return{...e,x0:0,y0:0,lat_ts:Number.isNaN(e.lat_ts)?0:e.lat_ts}}function z(t,e,r,n,i,o){let s=ie(t,r,n,i),a=L(e.parameters,"x_0",0),c=L(e.parameters,"y_0",0);return Ge(l=>{o?.(l.x,l.y),s.forwardInPlace(l),l.x+=a,l.y+=c},l=>{l.x-=a,l.y-=c,s.inverseInPlace(l)})}function gt(t,e=0,r=!1){return(n,i)=>{let o=Math.sin(t.lat0)*Math.sin(i)+Math.cos(t.lat0)*Math.cos(i)*Math.cos(n-t.long0);if(r?o<e-1e-14:o<=e+1e-14)throw new Error("Coordinate is outside the visible projection horizon")}}var Lr=1e-10;function D1(t){var e;if(t.phi1=t.lat1,Math.abs(t.phi1)<Lr)throw new Error;t.es?(t.en=Je(t.es),t.am1=Math.sin(t.phi1),e=Math.cos(t.phi1),t.m1=le(t.phi1,t.am1,e,t.en),t.am1=e/(Math.sqrt(1-t.es*t.am1*t.am1)*t.am1)):Math.abs(t.phi1)+Lr>=w?t.cphi1=0:t.cphi1=1/Math.tan(t.phi1)}function k1(t,e){var r=b(e.x-(t.long0||0),t.over),n=e.y,i,o,s;return o=Math.sin(n),s=Math.cos(n),i=t.am1+t.m1-le(n,o,s,t.en),o=s*r/(i*Math.sqrt(1-t.es*o*o)),e.x=i*Math.sin(o),e.y=t.am1-i*Math.cos(o),e.x=t.a*e.x+(t.x0||0),e.y=t.a*e.y+(t.y0||0),e}function F1(t,e){e.x=(e.x-(t.x0||0))/t.a,e.y=(e.y-(t.y0||0))/t.a;var r,n,i,o;if(e.y=t.am1-e.y,n=ne(e.x,e.y),t.phi1<0&&(n=-n),o=et(t.am1+t.m1-n,t.es,t.en),r=Math.abs(o),r<w)r=Math.sin(o),i=n*Math.atan2(Math.sign(t.phi1)*e.x,Math.sign(t.phi1)*e.y)*Math.sqrt(1-t.es*r*r)/Math.cos(o);else if(Math.abs(r-w)<=Lr)i=0;else throw new Error;return e.x=b(i+(t.long0||0),t.over),e.y=Ve(o),e}function U1(t,e){var r=b(e.x-(t.long0||0),t.over),n=e.y,i,o;return o=t.cphi1+t.phi1-n,Math.abs(o)>Lr?(i=r*Math.cos(n)/o,e.x=o*Math.sin(i),e.y=t.cphi1-o*Math.cos(i)):e.x=e.y=0,e.x=t.a*e.x+(t.x0||0),e.y=t.a*e.y+(t.y0||0),e}function V1(t,e){e.x=(e.x-(t.x0||0))/t.a,e.y=(e.y-(t.y0||0))/t.a;var r,n;e.y=t.cphi1-e.y;var i=ne(e.x,e.y);if(t.phi1<0&&(i=-i),n=t.cphi1+t.phi1-i,Math.abs(n)>w)throw new Error;return Math.abs(Math.abs(n)-w)<=Lr?r=0:r=i*Math.atan2(Math.sign(t.phi1)*e.x,Math.sign(t.phi1)*e.y)/Math.cos(n),e.x=b(r+(t.long0||0),t.over),e.y=Ve(n),e}function su(t,e){return t.es?k1(t,e):U1(t,e)}function au(t,e){return t.es?F1(t,e):V1(t,e)}function cu(t,e={}){let r={...t,phi1:0,en:[],m1:0,am1:0,cphi1:0,...e};return D1(r),r}var ds={name:"bonne",aliases:["Bonne (Werner lat_1=90)"],parameters:["lon_0","x_0","y_0","lat_1"],create(t){let e=q(t);if(!Object.prototype.hasOwnProperty.call(t.parameters,"lat_1")||Math.abs(e.lat1)<1e-10)throw new Error("Bonne requires a nonzero lat_1");let r=cu(e);return z("bonne",t,r,su,au)}};function Gr(t,e,r){var n=e*r;return t/Math.sqrt(1-n*n)}function j1(t){t.sphere||(t.en=Je(t.es),t.ml0=t.a*le(t.lat0,Math.sin(t.lat0),Math.cos(t.lat0),t.en))}function ps(t,e){var r,n,i=e.x,o=e.y;if(i=b(i-t.long0,t.over),t.sphere)r=t.a*Math.asin(Math.cos(o)*Math.sin(i)),n=t.a*(Math.atan2(Math.tan(o),Math.cos(i))-t.lat0);else{var s=Math.sin(o),a=Math.cos(o),c=Gr(t.a,t.e,s),l=Math.tan(o)*Math.tan(o),h=i*Math.cos(o),u=h*h,f=t.es*a*a/(1-t.es),d=t.a*le(o,s,a,t.en);r=c*h*(1-u*l*(1/6+(8-l+8*f)*u/120)),n=d-t.ml0+c*s/a*u*(.5+(5-l+6*f)*u/24)}return e.x=r+t.x0,e.y=n+t.y0,e}function lu(t,e){e.x-=t.x0,e.y-=t.y0;var r=e.x/t.a,n=e.y/t.a,i,o;if(t.sphere){var s=n+t.lat0;i=Math.asin(Math.sin(s)*Math.cos(r)),o=Math.atan2(Math.tan(r),Math.cos(s))}else{var a=t.ml0/t.a+n,c=et(a,t.es,t.en);if(Math.abs(Math.abs(c)-w)<=1e-10)return e.x=t.long0,e.y=Math.sign(c)*w,e;var l=Gr(t.a,t.e,Math.sin(c)),h=l*l*l/t.a/t.a*(1-t.es),u=Math.pow(Math.tan(c),2),f=r*t.a/l,d=f*f;i=c-l*Math.tan(c)/h*f*f*(.5-(1+3*u)*f*f/24),o=f*(1-d*(u/3-(1+3*u)*u*d/15))/Math.cos(c)}if(!t.sphere){let m=e.x+t.x0,_=e.y+t.y0,p=t.scratch,M=!1;for(let y=0;y<12;y++){ms(t,o,i);let S=p.x-m,x=p.y-_;if(Math.max(Math.abs(S),Math.abs(x))<1e-7){M=!0;break}let E=1e-7,T=i>w-E?-E:E,R=p.x,C=p.y;ms(t,o+E,i);let O=(p.x-R)/E,v=(p.y-C)/E;ms(t,o,i+T);let A=(p.x-R)/T,I=(p.y-C)/T,k=O*I-A*v;if(!Number.isFinite(k)||Math.abs(k)<1e-12||(o-=(I*S-A*x)/k,i-=(O*x-v*S)/k,!Number.isFinite(o)||Math.abs(i)>w))break}if(!M)throw new Error("Cassini inverse did not converge")}return e.x=b(o+t.long0,t.over),e.y=Ve(i),e}function ms(t,e,r){t.scratch.x=e+t.long0,t.scratch.y=r,ps(t,t.scratch)}function hu(t,e={}){let r={...t,en:[],scratch:{x:0,y:0},ml0:0,...e};return j1(r),r}var gs={name:"cass",aliases:["Cassini","Cassini_Soldner"],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=q(t),r=hu(e);return z("cass",t,r,ps,lu)}};function uu(t,e){var r=1-(1-t*t)/(2*t)*Math.log((1-t)/(1+t));let n=4*Number.EPSILON*r;if(Math.abs(e)>r+n)return NaN;if(Math.abs(Math.abs(e)-r)<=n)return e<0?-1*w:w;for(var i=Math.asin(.5*e),o,s,a,c,l=0;l<30;l++)if(s=Math.sin(i),a=Math.cos(i),c=t*s,o=Math.pow(1-c*c,2)/(2*a)*(e/(1-t*t)-s/(1-c*c)+.5/t*Math.log((1-c)/(1+c))),i+=o,Math.abs(o)<=1e-10)return i;return NaN}function W1(t){t.sphere||(t.k0=xe(t.e,Math.sin(t.lat_ts),Math.cos(t.lat_ts)))}function fu(t,e){var r=e.x,n=e.y,i,o,s=b(r-t.long0,t.over);if(t.sphere)i=t.x0+t.a*s*Math.cos(t.lat_ts),o=t.y0+t.a*Math.sin(n)/Math.cos(t.lat_ts);else{var a=Se(t.e,Math.sin(n));i=t.x0+t.a*t.k0*s,o=t.y0+t.a*a*.5/t.k0}return e.x=i,e.y=o,e}function du(t,e){e.x-=t.x0,e.y-=t.y0;var r,n;return t.sphere?(r=b(t.long0+e.x/t.a/Math.cos(t.lat_ts),t.over),n=Math.asin(e.y/t.a*Math.cos(t.lat_ts))):(n=uu(t.e,2*e.y*t.k0/t.a),r=b(t.long0+e.x/(t.a*t.k0),t.over)),e.x=r,e.y=n,e}function mu(t,e={}){let r={...t,...e};return W1(r),r}var _s={name:"cea",aliases:[],parameters:["lon_0","x_0","y_0","lat_ts"],create(t){let e=q(t);if(Math.abs(e.lat_ts)>=Math.PI/2)throw new Error("CEA standard parallel must be away from the poles");let r=mu(e);return z("cea",t,r,fu,du)}};var H1=20;function $1(t){t.long0=t.long0||0,t.sphere?(t.n=1,t.m=0,t.es=0,t.C_y=Math.sqrt((t.m+1)/t.n),t.C_x=t.C_y/(t.m+1)):t.en=Je(t.es)}function gi(t,e){var r,n,i=e.x,o=e.y;if(i=b(i-t.long0,t.over),t.sphere){if(!t.m)o=t.n!==1?Math.asin(t.n*Math.sin(o)):o;else for(var s=t.n*Math.sin(o),a=H1;a;--a){var c=(t.m*o+Math.sin(o)-s)/(t.m+Math.cos(o));if(o-=c,Math.abs(c)<1e-10)break}r=t.a*t.C_x*i*(t.m+Math.cos(o)),n=t.a*t.C_y*o}else{var l=Math.sin(o),h=Math.cos(o);n=t.a*le(o,l,h,t.en),r=t.a*i*h/Math.sqrt(1-t.es*l*l)}return e.x=r,e.y=n,e}function _i(t,e){var r,n,i,o;return e.x-=t.x0,i=e.x/t.a,e.y-=t.y0,r=e.y/t.a,t.sphere?(r/=t.C_y,i=i/(t.C_x*(t.m+Math.cos(r))),t.m?r=we((t.m*r+Math.sin(r))/t.n):t.n!==1&&(r=we(Math.sin(r)/t.n)),i=b(i+t.long0,t.over),r=Ve(r)):(r=et(e.y/t.a,t.es,t.en),o=Math.abs(r),o<w?(o=Math.sin(r),n=t.long0+e.x*Math.sqrt(1-t.es*o*o)/(t.a*Math.cos(r)),i=b(n,t.over)):o-1e-10<w&&(i=t.long0)),e.x=i,e.y=r,e}function pu(t,e={}){let r={...t,en:[],n:0,m:0,C_y:0,C_x:0,...e};return $1(r),r}function Y1(t){t.sphere=!0,t.b=t.a,t.m=1,t.n=2.5707963267948966,t.es=0,t.C_y=Math.sqrt((t.m+1)/t.n),t.C_x=t.C_y/(t.m+1)}var gu=gi,_u=_i;function Mu(t,e={}){let r={...t,m:0,n:0,C_y:0,C_x:0,en:[],...e};return Y1(r),r}var Ms={name:"eck6",aliases:["Eckert_VI"],parameters:["lon_0","x_0","y_0"],create(t){let e=q(t),r=Mu(e);return z("eck6",t,r,gu,_u)}};var qr=1.340264,zr=-.081106,Br=893e-6,Dr=.003796,Mi=Math.sqrt(3)/2;function K1(t){t.long0=t.long0!==void 0?t.long0:0,t.x0=t.x0!==void 0?t.x0:0,t.y0=t.y0!==void 0?t.y0:0,t.es!==0&&(t.apa=Pr(t.es),t.qp=Se(t.e,1),t.rqda=Math.sqrt(.5*t.qp))}function yu(t,e){var r=b(e.x-t.long0,t.over),n=e.y,i=Math.sin(n);t.es!==0&&(i=Se(t.e,i)/t.qp);var o=Math.asin(Mi*i),s=o*o,a=s*s*s;return e.x=r*Math.cos(o)/(Mi*(qr+3*zr*s+a*(7*Br+9*Dr*s))),e.y=o*(qr+zr*s+a*(Br+Dr*s)),t.es!==0&&(e.x*=t.rqda,e.y*=t.rqda),e.x=t.a*e.x+t.x0,e.y=t.a*e.y+t.y0,e}function xu(t,e){e.x=(e.x-t.x0)/t.a,e.y=(e.y-t.y0)/t.a,t.es!==0&&(e.x/=t.rqda,e.y/=t.rqda);var r=1e-9,n=12,i=e.y,o,s,a,c,l,h;for(h=0;h<n&&(o=i*i,s=o*o*o,a=i*(qr+zr*o+s*(Br+Dr*o))-e.y,c=qr+3*zr*o+s*(7*Br+9*Dr*o),i-=l=a/c,!(Math.abs(l)<r));++h);return o=i*i,s=o*o*o,e.x=Mi*e.x*(qr+3*zr*o+s*(7*Br+9*Dr*o))/Math.cos(i),e.y=Math.asin(Math.sin(i)/Mi),t.es!==0&&(e.y=Rr(e.y,t.apa)),e.x=b(e.x+t.long0,t.over),e}function Su(t,e={}){let r={...t,apa:[],qp:0,rqda:0,...e};return K1(r),r}var ys={name:"eqearth",aliases:["Equal Earth","Equal_Earth"],parameters:["lon_0","x_0","y_0"],create(t){let e=q(t),r=Su(e);return z("eqearth",t,r,yu,xu)}};function X1(t){t.x0=t.x0||0,t.y0=t.y0||0,t.lat0=t.lat0||0,t.long0=t.long0||0}function wu(t,e){var r=e.x,n=e.y,i=b(r-t.long0,t.over),o=t.x0+t.a*i*Math.cos(t.lat0),s=t.y0+t.a*n;return t.t1=o,t.t2=Math.cos(t.lat0),e.x=o,e.y=s,e}function Eu(t,e){e.x-=t.x0,e.y-=t.y0;var r=e.y/t.a,n=b(t.long0+e.x/(t.a*Math.cos(t.lat0)),t.over);return e.x=n,e.y=r,e}function Tu(t,e={}){let r={...t,t2:0,t1:0,...e};return X1(r),r}var xs={name:"equi",aliases:[],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=q(t);if(Math.abs(e.lat0)>=Math.PI/2)throw new Error("Equirectangular standard parallel must be away from the poles");let r=Tu(e);return z("equi",t,r,wu,Eu)}};function Z1(t){if(t.flip_axis=t.sweep==="x"?1:0,t.h=Number(t.h),t.radius_g_1=t.h/t.a,t.radius_g_1<=0||t.radius_g_1>1e10)throw new Error;if(t.radius_g=1+t.radius_g_1,t.C=t.radius_g*t.radius_g-1,t.es!==0){var e=1-t.es,r=1/e;t.radius_p=Math.sqrt(e),t.radius_p2=e,t.radius_p_inv2=r,t.shape="ellipse"}else t.radius_p=1,t.radius_p2=1,t.radius_p_inv2=1,t.shape="sphere"}function bu(t,e){var r=e.x,n=e.y,i,o,s,a;if(r=r-t.long0,t.shape==="ellipse"){n=Math.atan(t.radius_p2*Math.tan(n));var c=t.radius_p/ne(t.radius_p*Math.cos(n),Math.sin(n));if(o=c*Math.cos(r)*Math.cos(n),s=c*Math.sin(r)*Math.cos(n),a=c*Math.sin(n),(t.radius_g-o)*o-s*s-a*a*t.radius_p_inv2<0)return e.x=Number.NaN,e.y=Number.NaN,e;i=t.radius_g-o,t.flip_axis?(e.x=t.radius_g_1*Math.atan(s/ne(a,i)),e.y=t.radius_g_1*Math.atan(a/i)):(e.x=t.radius_g_1*Math.atan(s/i),e.y=t.radius_g_1*Math.atan(a/ne(s,i)))}else t.shape==="sphere"&&(i=Math.cos(n),o=Math.cos(r)*i,s=Math.sin(r)*i,a=Math.sin(n),i=t.radius_g-o,t.flip_axis?(e.x=t.radius_g_1*Math.atan(s/ne(a,i)),e.y=t.radius_g_1*Math.atan(a/i)):(e.x=t.radius_g_1*Math.atan(s/i),e.y=t.radius_g_1*Math.atan(a/ne(s,i))));return e.x=e.x*t.a,e.y=e.y*t.a,e}function vu(t,e){var r=-1,n=0,i=0,o,s,a,c;if(e.x=e.x/t.a,e.y=e.y/t.a,t.shape==="ellipse"){t.flip_axis?(i=Math.tan(e.y/t.radius_g_1),n=Math.tan(e.x/t.radius_g_1)*ne(1,i)):(n=Math.tan(e.x/t.radius_g_1),i=Math.tan(e.y/t.radius_g_1)*ne(1,n));var l=i/t.radius_p;if(o=n*n+l*l+r*r,s=2*t.radius_g*r,a=s*s-4*o*t.C,a<0)return e.x=Number.NaN,e.y=Number.NaN,e;c=(-s-Math.sqrt(a))/(2*o),r=t.radius_g+c*r,n*=c,i*=c,e.x=Math.atan2(n,r),e.y=Math.atan(i*Math.cos(e.x)/r),e.y=Math.atan(t.radius_p_inv2*Math.tan(e.y))}else if(t.shape==="sphere"){if(t.flip_axis?(i=Math.tan(e.y/t.radius_g_1),n=Math.tan(e.x/t.radius_g_1)*Math.sqrt(1+i*i)):(n=Math.tan(e.x/t.radius_g_1),i=Math.tan(e.y/t.radius_g_1)*Math.sqrt(1+n*n)),o=n*n+i*i+r*r,s=2*t.radius_g*r,a=s*s-4*o*t.C,a<0)return e.x=Number.NaN,e.y=Number.NaN,e;c=(-s-Math.sqrt(a))/(2*o),r=t.radius_g+c*r,n*=c,i*=c,e.x=Math.atan2(n,r),e.y=Math.atan(i*Math.cos(e.x)/r)}return e.x=e.x+t.long0,e}function Pu(t,e={}){let r={...t,flip_axis:0,sweep:"",h:0,radius_g_1:0,radius_g:0,C:0,radius_p:0,radius_p2:0,radius_p_inv2:0,shape:"",...e};return Z1(r),r}var Ss={name:"geos",aliases:["Geostationary Satellite View","Geostationary_Satellite"],parameters:["lon_0","x_0","y_0","h","sweep"],create(t){let e=q(t),r=L(t.parameters,"h",NaN);if(!Number.isFinite(r)||r<=0)throw new Error("Geostationary projection requires positive h");let n=t.parameters.sweep||"y";if(!["x","y"].includes(n))throw new Error("Geostationary sweep must be x or y");let i=Pu(e,{h:r,sweep:n});return z("geos",t,i,bu,vu,e.sphere?gt({...e,lat0:0},1/(1+r/e.a),!0):void 0)}};function Q1(t){t.sin_p14=Math.sin(t.lat0),t.cos_p14=Math.cos(t.lat0),t.infinity_dist=1e3*t.a,t.rc=1}function Ru(t,e){var r,n,i,o,s,a,c,l,h=e.x,u=e.y;return i=b(h-t.long0,t.over),r=Math.sin(u),n=Math.cos(u),o=Math.cos(i),a=t.sin_p14*r+t.cos_p14*n*o,s=1,a>0||Math.abs(a)<=1e-10?(c=t.x0+t.a*s*n*Math.sin(i)/a,l=t.y0+t.a*s*(t.cos_p14*r-t.sin_p14*n*o)/a):(c=t.x0+t.infinity_dist*n*Math.sin(i),l=t.y0+t.infinity_dist*(t.cos_p14*r-t.sin_p14*n*o)),e.x=c,e.y=l,e}function Cu(t,e){var r,n,i,o,s,a;return e.x=(e.x-t.x0)/t.a,e.y=(e.y-t.y0)/t.a,e.x/=t.k0,e.y/=t.k0,r=Math.sqrt(e.x*e.x+e.y*e.y),r?(o=Math.atan2(r,t.rc),n=Math.sin(o),i=Math.cos(o),a=we(i*t.sin_p14+e.y*n*t.cos_p14/r),s=Math.atan2(e.x*n,r*t.cos_p14*i-e.y*t.sin_p14*n),s=b(t.long0+s,t.over)):(a=t.lat0,s=t.long0),e.x=s,e.y=a,e}function Au(t,e={}){let r={...t,sin_p14:0,cos_p14:0,infinity_dist:0,rc:0,phic0:0,...e};return Q1(r),r}var ws={name:"gnom",aliases:[],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=q(t),r=Au(e);return z("gnom",t,r,Ru,Cu,gt(e))}};function Wt(t,e,r){if(Math.abs(e)>w)return Number.NaN;if(e===w)return Number.POSITIVE_INFINITY;if(e===-1*w)return Number.NEGATIVE_INFINITY;var n=t*r;return Math.log(Math.tan((w+e)/2))+t*Math.log((1-n)/(1+n))/2}function Es(t,e){return 2*Math.atan(t*Math.exp(e))-w}function Iu(t,e){var r=Es(1,e),n=0,i=0;let o=0;do{if(++o>50)throw new Error("Isometric latitude inverse did not converge");n=r,i=t*Math.sin(n),r=Es(Math.exp(t*Math.log((1+i)/(1-i))/2),e)}while(Math.abs(r-n)>1e-12);return r}function J1(t){t.k0||(t.k0=1);var e=t.b/t.a;t.e=Math.sqrt(1-e*e),t.lc=t.long0,t.rs=Math.sqrt(1+t.e*t.e*Math.pow(Math.cos(t.lat0),4)/(1-t.e*t.e));var r=Math.sin(t.lat0),n=Math.asin(r/t.rs),i=Math.sin(n);t.cp=Wt(0,n,i)-t.rs*Wt(t.e,t.lat0,r),t.n2=t.k0*t.a*Math.sqrt(1-t.e*t.e)/(1-t.e*t.e*r*r),t.xs=t.x0,t.ys=t.y0-t.n2*n}function Ou(t,e){var r=e.x,n=e.y,i=t.rs*(r-t.lc),o=t.cp+t.rs*Wt(t.e,n,Math.sin(n)),s=Math.asin(Math.sin(i)/Nr(o)),a=Wt(0,s,Math.sin(s));return e.x=t.xs+t.n2*a,e.y=t.ys+t.n2*Math.atan(Tt(o)/Math.cos(i)),e}function Nu(t,e){var r=e.x,n=e.y,i=Math.atan(Tt((r-t.xs)/t.n2)/Math.cos((n-t.ys)/t.n2)),o=Math.asin(Math.sin((n-t.ys)/t.n2)/Nr((r-t.xs)/t.n2)),s=Wt(0,o,Math.sin(o));return e.x=t.lc+i/t.rs,e.y=Iu(t.e,(s-t.cp)/t.rs),e}function Lu(t,e={}){let r={...t,lc:0,rs:0,cp:0,n2:0,xs:0,ys:0,...e};return J1(r),r}var Ts={name:"gstmerc",aliases:["gstmerg"],parameters:["lon_0","x_0","y_0","lat_0","k","k_0"],create(t){let e=q(t),r=Lu(e);return z("gstmerc",t,r,Ou,Nu)}};function eg(t){t.a=6377397155e-3,t.es=.006674372230614,t.e=Math.sqrt(t.es),t.s45=.785398163397448,t.s90=2*t.s45,t.fi0=t.lat0,t.e2=t.es,t.e=Math.sqrt(t.e2),t.alfa=Math.sqrt(1+t.e2*Math.pow(Math.cos(t.fi0),4)/(1-t.e2)),t.uq=1.04216856380474,t.u0=Math.asin(Math.sin(t.fi0)/t.alfa),t.g=Math.pow((1+t.e*Math.sin(t.fi0))/(1-t.e*Math.sin(t.fi0)),t.alfa*t.e/2),t.k=Math.tan(t.u0/2+t.s45)/Math.pow(Math.tan(t.fi0/2+t.s45),t.alfa)*t.g,t.k1=t.k0,t.n0=t.a*Math.sqrt(1-t.e2)/(1-t.e2*Math.pow(Math.sin(t.fi0),2)),t.s0=1.37008346281555,t.n=Math.sin(t.s0),t.ro0=t.k1*t.n0/Math.tan(t.s0),t.ad=t.s90-t.uq}function Gu(t,e){var r,n,i,o,s,a,c,l=e.x,h=e.y,u=b(l-t.long0,t.over);return r=Math.pow((1+t.e*Math.sin(h))/(1-t.e*Math.sin(h)),t.alfa*t.e/2),n=2*(Math.atan(t.k*Math.pow(Math.tan(h/2+t.s45),t.alfa)/r)-t.s45),i=-u*t.alfa,o=Math.asin(Math.cos(t.ad)*Math.sin(n)+Math.sin(t.ad)*Math.cos(n)*Math.cos(i)),s=Math.asin(Math.cos(n)*Math.sin(i)/Math.cos(o)),a=t.n*s,c=t.ro0*Math.pow(Math.tan(t.s0/2+t.s45),t.n)/Math.pow(Math.tan(o/2+t.s45),t.n),e.y=c*Math.cos(a)/1,e.x=c*Math.sin(a)/1,t.czech||(e.y*=-1,e.x*=-1),e}function qu(t,e){var r,n,i,o,s,a,c,l,h=e.x;e.x=e.y,e.y=h,t.czech||(e.y*=-1,e.x*=-1),a=Math.sqrt(e.x*e.x+e.y*e.y),s=Math.atan2(e.y,e.x),o=s/Math.sin(t.s0),i=2*(Math.atan(Math.pow(t.ro0/a,1/t.n)*Math.tan(t.s0/2+t.s45))-t.s45),r=Math.asin(Math.cos(t.ad)*Math.sin(i)-Math.sin(t.ad)*Math.cos(i)*Math.cos(o)),n=Math.asin(Math.cos(i)*Math.sin(o)/Math.cos(r)),e.x=t.long0-n/t.alfa,c=r,l=0;var u=0;do e.y=2*(Math.atan(Math.pow(t.k,-1/t.alfa)*Math.pow(Math.tan(r/2+t.s45),1/t.alfa)*Math.pow((1+t.e*Math.sin(c))/(1-t.e*Math.sin(c)),t.e/2))-t.s45),Math.abs(c-e.y)<1e-10&&(l=1),c=e.y,u+=1;while(l===0&&u<15);return u>=15?null:e}function zu(t,e={}){let r={...t,s45:0,s90:0,fi0:0,e2:0,alfa:0,uq:0,u0:0,g:0,k:0,k1:0,n0:0,s0:0,n:0,ro0:0,ad:0,czech:!1,...e};return eg(r),r}var bs={name:"krovak",aliases:["Krovak","Krovak Modified","Krovak (North Orientated)","Krovak Modified (North Orientated)"],parameters:["lon_0","x_0","y_0","lat_0","k","k_0","czech","alpha","lat_ts"],flags:["czech"],create(t){let e=L(t.parameters,"alpha",30.28813972222222),r=L(t.parameters,"lat_ts",78.5);if(![30.28813972222222,30.28813975277778].some(o=>Math.abs(e-o)<=1e-10))throw new Error("Krovak requires its fixed cone-axis co-latitude");if(Math.abs(r-78.5)>1e-10)throw new Error("Krovak requires its fixed 78.5 degree pseudo standard parallel");let n=q(t);n.lat0=dt(t.parameters,"lat_0",49.5),n.long0=dt(t.parameters,"lon_0",24.83333333333333),n.k0=L(t.parameters,"k_0",L(t.parameters,"k",.9999));let i=zu(n,{czech:Ue(t.parameters,"czech")});return z("krovak",t,i,Gu,qu)}};function Bu(t,e){var r=e.x,n=e.y,i=b(r-t.long0,t.over),o=t.x0+t.a*i,s=t.y0+t.a*Math.log(Math.tan(Math.PI/4+n/2.5))*1.25;return e.x=o,e.y=s,e}function Du(t,e){e.x-=t.x0,e.y-=t.y0;var r=b(t.long0+e.x/t.a,t.over),n=2.5*(Math.atan(Math.exp(.8*e.y/t.a))-Math.PI/4);return e.x=r,e.y=n,e}function ku(t,e={}){let r={...t,...e};return r}var vs={name:"mill",aliases:["Miller_Cylindrical"],parameters:["lon_0","x_0","y_0"],create(t){let e=q(t),r=ku(e);return z("mill",t,r,Bu,Du)}};function tg(t){t.x0=t.x0!==void 0?t.x0:0,t.y0=t.y0!==void 0?t.y0:0,t.long0=t.long0!==void 0?t.long0:0}function Fu(t,e){var r=e.x,n=e.y,i=b(r-t.long0,t.over),o=n,s=Math.PI*Math.sin(n);for(let h=0;h<50;h++){if(Math.abs(Math.abs(n)-Math.PI/2)<1e-10){o=Math.sign(n)*Math.PI;break}var a=-(o+Math.sin(o)-s)/(1+Math.cos(o));if(o+=a,h===49)throw new Error("Mollweide forward did not converge");if(Math.abs(a)<1e-10)break}o/=2,Math.PI/2-Math.abs(n)<1e-10&&(i=0);var c=.900316316158*t.a*i*Math.cos(o)+t.x0,l=1.4142135623731*t.a*Math.sin(o)+t.y0;return e.x=c,e.y=l,e}function Uu(t,e){var r,n;e.x-=t.x0,e.y-=t.y0,n=e.y/(1.4142135623731*t.a),Math.abs(n)>.999999999999&&(n=Math.sign(n)*.999999999999),r=Math.asin(n);var i=b(t.long0+e.x/(.900316316158*t.a*Math.cos(r)),t.over);!t.over&&i<-Math.PI&&(i=-Math.PI),!t.over&&i>Math.PI&&(i=Math.PI),n=(2*r+Math.sin(2*r))/Math.PI,Math.abs(n)>1&&(n=Math.sign(n));var o=Math.asin(n);return e.x=i,e.y=o,e}function Vu(t,e={}){let r={...t,...e};return tg(r),r}var Ps={name:"moll",aliases:["Mollweide"],parameters:["lon_0","x_0","y_0"],create(t){let e=q(t),r=Vu(e);return z("moll",t,r,Fu,Uu)}};function rg(t){t.A=[],t.A[1]=.6399175073,t.A[2]=-.1358797613,t.A[3]=.063294409,t.A[4]=-.02526853,t.A[5]=.0117879,t.A[6]=-.0055161,t.A[7]=.0026906,t.A[8]=-.001333,t.A[9]=67e-5,t.A[10]=-34e-5,t.B_re=[],t.B_im=[],t.B_re[1]=.7557853228,t.B_im[1]=0,t.B_re[2]=.249204646,t.B_im[2]=.003371507,t.B_re[3]=-.001541739,t.B_im[3]=.04105856,t.B_re[4]=-.10162907,t.B_im[4]=.01727609,t.B_re[5]=-.26623489,t.B_im[5]=-.36249218,t.B_re[6]=-.6870983,t.B_im[6]=-1.1651967,t.C_re=[],t.C_im=[],t.C_re[1]=1.3231270439,t.C_im[1]=0,t.C_re[2]=-.577245789,t.C_im[2]=-.007809598,t.C_re[3]=.508307513,t.C_im[3]=-.112208952,t.C_re[4]=-.15094762,t.C_im[4]=.18200602,t.C_re[5]=1.01418179,t.C_im[5]=1.64497696,t.C_re[6]=1.9660549,t.C_im[6]=2.5127645,t.D=[],t.D[1]=1.5627014243,t.D[2]=.5185406398,t.D[3]=-.03333098,t.D[4]=-.1052906,t.D[5]=-.0368594,t.D[6]=.007317,t.D[7]=.0122,t.D[8]=.00394,t.D[9]=-.0013}function ju(t,e){var r,n=e.x,i=e.y,o=i-t.lat0,s=n-t.long0,a=o/Jo*1e-5,c=s,l=1,h=0;for(r=1;r<=10;r++)l=l*a,h=h+t.A[r]*l;var u=h,f=c,d=1,m=0,_,p,M=0,y=0;for(r=1;r<=6;r++)_=d*u-m*f,p=m*u+d*f,d=_,m=p,M=M+t.B_re[r]*d-t.B_im[r]*m,y=y+t.B_im[r]*d+t.B_re[r]*m;return e.x=y*t.a+t.x0,e.y=M*t.a+t.y0,e}function Wu(t,e){var r,n=e.x,i=e.y,o=n-t.x0,s=i-t.y0,a=s/t.a,c=o/t.a,l=1,h=0,u,f,d=0,m=0;for(r=1;r<=6;r++)u=l*a-h*c,f=h*a+l*c,l=u,h=f,d=d+t.C_re[r]*l-t.C_im[r]*h,m=m+t.C_im[r]*l+t.C_re[r]*h;for(var _=0;_<t.iterations;_++){var p=d,M=m,y,S,x=a,E=c;for(r=2;r<=6;r++)y=p*d-M*m,S=M*d+p*m,p=y,M=S,x=x+(r-1)*(t.B_re[r]*p-t.B_im[r]*M),E=E+(r-1)*(t.B_im[r]*p+t.B_re[r]*M);p=1,M=0;var T=t.B_re[1],R=t.B_im[1];for(r=2;r<=6;r++)y=p*d-M*m,S=M*d+p*m,p=y,M=S,T=T+r*(t.B_re[r]*p-t.B_im[r]*M),R=R+r*(t.B_im[r]*p+t.B_re[r]*M);var C=T*T+R*R;d=(x*T+E*R)/C,m=(E*T-x*R)/C}var O=d,v=m,A=1,I=0;for(r=1;r<=9;r++)A=A*O,I=I+t.D[r]*A;var k=t.lat0+I*Jo*1e5,B=t.long0+v;return e.x=B,e.y=k,e}function Hu(t,e={}){let r={...t,A:[],B_re:[],B_im:[],C_re:[],C_im:[],D:[],iterations:1,...e};return rg(r),r}var Rs={name:"nzmg",aliases:["New_Zealand_Map_Grid"],parameters:["lon_0","x_0","y_0","lat_0","iterations"],create(t){let e=q(t),r=L(t.parameters,"iterations",1);if(!Number.isInteger(r)||r<0||r>10)throw new Error("NZMG iterations must be an integer from 0 to 10");if(!Object.prototype.hasOwnProperty.call(t.parameters,"lat_0")||!Object.prototype.hasOwnProperty.call(t.parameters,"lon_0"))throw new Error("NZMG requires lat_0 and lon_0");let n=Hu(e,{iterations:r});return z("nzmg",t,n,ju,Wu)}};var Ht=1e-7;function ng(t){return t.no_uoff||t.no_off||["hotineobliquemercator","hotineobliquemercatorvarianta","hotineobliquemercatorazimuthnaturalorigin"].includes(t.projName.toLowerCase().replace(/[ _-]/g,""))}function ig(t){var e,r,n,i,o,s,a,c,l,h,u=0,f,d=0,m=0,_=0,p=0,M=0,y=0;t.k0||(t.k0=1),t.no_off=ng(t),t.no_rot=t.no_rot;var S=!1;Number.isFinite(t.alpha)&&(S=!0);var x=!1;if(Number.isFinite(t.rectified_grid_angle)&&(x=!0),S&&(y=t.alpha),x&&(u=t.rectified_grid_angle,S||(y=0,S=!0)),S||x)d=t.longc;else if(m=t.long1,p=t.lat1,_=t.long2,M=t.lat2,Math.abs(p-M)<=Ht||Math.abs(p)<=Ht||Math.abs(Math.abs(p)-w)<=Ht||Math.abs(Math.abs(t.lat0)-w)<=Ht||Math.abs(Math.abs(M)-w)<=Ht)throw new Error;var E=1-t.es;if(r=Math.sqrt(E),Math.abs(t.lat0)>1e-10?(c=Math.sin(t.lat0),n=Math.cos(t.lat0),e=1-t.es*c*c,t.B=n*n,t.B=Math.sqrt(1+t.es*t.B*t.B/E),t.A=t.B*t.k0*r/e,i=t.B*r/(n*Math.sqrt(e)),o=i*i-1,o<=0?o=0:(o=Math.sqrt(o),t.lat0<0&&(o=-o)),t.E=o+=i,t.E*=Math.pow(Ce(t.e,t.lat0,c),t.B)):(t.B=1/r,t.A=t.k0,t.E=i=o=1),S||x){S?(f=Math.asin(Math.sin(y)/i),x||(u=y)):(f=u,y=Math.asin(i*Math.sin(f)));let T=.5*(o-1/o)*Math.tan(f);i>1&&Math.abs(Math.cos(y))<=8*Number.EPSILON?T=Math.sign(t.lat0)*Math.sign(Math.sin(y)):Math.abs(T)>1&&Math.abs(T)<=1+8*Number.EPSILON&&(T=Math.sign(T)),t.lam0=d-Math.asin(T)/t.B}else s=Math.pow(Ce(t.e,p,Math.sin(p)),t.B),a=Math.pow(Ce(t.e,M,Math.sin(M)),t.B),o=t.E/s,l=(a-s)/(a+s),h=t.E*t.E,h=(h-a*s)/(h+a*s),e=m-_,e<-Math.PI?_-=pt:e>Math.PI&&(_+=pt),t.lam0=b(.5*(m+_)-Math.atan(h*Math.tan(.5*t.B*(m-_))/l)/t.B,t.over),f=Math.atan(2*Math.sin(t.B*b(m-t.lam0,t.over))/(o-1/o)),u=y=Math.asin(i*Math.sin(f));t.singam=Math.sin(f),t.cosgam=Math.cos(f),t.sinrot=Math.sin(u),t.cosrot=Math.cos(u),t.rB=1/t.B,t.ArB=t.A*t.rB,t.BrA=1/t.ArB,t.no_off?t.u_0=0:(t.u_0=Math.abs(t.ArB*Math.atan(Math.sqrt(i*i-1)/Math.cos(y))),t.lat0<0&&(t.u_0=-t.u_0)),o=.5*f,t.v_pole_n=t.ArB*Math.log(Math.tan(F-o)),t.v_pole_s=t.ArB*Math.log(Math.tan(F+o))}function $u(t,e){var r={x:0,y:0},n,i,o,s,a,c,l,h;if(e.x=e.x-t.lam0,Math.abs(Math.abs(e.y)-w)>1e-10){if(a=t.E/Math.pow(Ce(t.e,e.y,Math.sin(e.y)),t.B),c=1/a,n=.5*(a-c),i=.5*(a+c),s=Math.sin(t.B*e.x),o=(n*t.singam-s*t.cosgam)/i,Math.abs(Math.abs(o)-1)<1e-10)throw new Error;h=.5*t.ArB*Math.log((1-o)/(1+o)),c=Math.cos(t.B*e.x),Math.abs(c)<Ht?l=t.A*e.x:l=t.ArB*Math.atan2(n*t.cosgam+s*t.singam,c)}else h=e.y>0?t.v_pole_n:t.v_pole_s,l=t.ArB*e.y;return t.no_rot?(r.x=l,r.y=h):(l-=t.u_0,r.x=h*t.cosrot+l*t.sinrot,r.y=l*t.cosrot-h*t.sinrot),r.x=t.a*r.x+t.x0,r.y=t.a*r.y+t.y0,r}function Yu(t,e){var r,n,i,o,s,a,c,l={x:0,y:0};if(e.x=(e.x-t.x0)*(1/t.a),e.y=(e.y-t.y0)*(1/t.a),t.no_rot?(n=e.y,r=e.x):(n=e.x*t.cosrot-e.y*t.sinrot,r=e.y*t.cosrot+e.x*t.sinrot+t.u_0),i=Math.exp(-t.BrA*n),o=.5*(i-1/i),s=.5*(i+1/i),a=Math.sin(t.BrA*r),c=(a*t.cosgam+o*t.singam)/s,Math.abs(Math.abs(c)-1)<1e-10)l.x=0,l.y=c<0?-w:w;else{if(l.y=t.E/Math.sqrt((1+c)/(1-c)),l.y=Et(t.e,Math.pow(l.y,1/t.B)),l.y===1/0)throw new Error;l.x=-t.rB*Math.atan2(o*t.cosgam-a*t.singam,Math.cos(t.BrA*r))}return l.x+=t.lam0,l}function Ku(t,e={}){let r={...t,no_off:!1,no_rot:!1,alpha:NaN,rectified_grid_angle:NaN,longc:0,long1:0,long2:0,B:0,A:0,E:0,lam0:0,singam:0,cosgam:0,sinrot:0,cosrot:0,rB:0,ArB:0,BrA:0,u_0:0,v_pole_n:0,v_pole_s:0,no_uoff:!1,projName:"",...e};return ig(r),r}var Cs={name:"omerc",aliases:["Hotine_Oblique_Mercator","Hotine Oblique Mercator","Hotine_Oblique_Mercator_variant_A","Hotine_Oblique_Mercator_Variant_B","Hotine_Oblique_Mercator_Azimuth_Natural_Origin","Hotine_Oblique_Mercator_Two_Point_Natural_Origin","Hotine_Oblique_Mercator_Azimuth_Center","Oblique_Mercator"],parameters:["lon_0","x_0","y_0","lat_0","k","k_0","alpha","gamma","lonc","lon_1","lon_2","lat_1","lat_2","no_off","no_uoff","no_rot"],flags:["no_off","no_uoff","no_rot"],create(t){let e=q(t);if(Math.abs(e.lat0)>=Math.PI/2)throw new Error("Oblique Mercator origin must be away from the poles");let n=Object.prototype.hasOwnProperty.call(t.parameters,"alpha")||Object.prototype.hasOwnProperty.call(t.parameters,"gamma")?["lonc"]:["lon_1","lat_1","lon_2","lat_2"];for(let o of n)if(!Object.prototype.hasOwnProperty.call(t.parameters,o))throw new Error("Oblique Mercator requires "+o);let i=Ku(e,{projName:t.parameters.proj||"omerc",alpha:L(t.parameters,"alpha",NaN)*Math.PI/180,rectified_grid_angle:L(t.parameters,"gamma",NaN)*Math.PI/180,longc:L(t.parameters,"lonc",0)*Math.PI/180,long1:L(t.parameters,"lon_1",0)*Math.PI/180,long2:L(t.parameters,"lon_2",0)*Math.PI/180,no_off:Ue(t.parameters,"no_off"),no_uoff:Ue(t.parameters,"no_uoff"),no_rot:Ue(t.parameters,"no_rot")});return z("omerc",t,i,$u,Yu)}};function og(t){t.sin_p14=Math.sin(t.lat0||0),t.cos_p14=Math.cos(t.lat0||0)}function Xu(t,e){var r,n,i,o,s,a,c,l,h=e.x,u=e.y;return i=b(h-(t.long0||0),t.over),r=Math.sin(u),n=Math.cos(u),o=Math.cos(i),a=t.sin_p14*r+t.cos_p14*n*o,s=1,(a>0||Math.abs(a)<=1e-10)&&(c=(t.x0||0)+t.a*s*n*Math.sin(i),l=(t.y0||0)+t.a*s*(t.cos_p14*r-t.sin_p14*n*o)),e.x=c,e.y=l,e}function Zu(t,e){var r,n,i,o,s,a,c,l,h;if(e.x-=t.x0||0,e.y-=t.y0||0,r=Math.sqrt(e.x*e.x+e.y*e.y),r>t.a*(1+1e-14))throw new Error("Coordinate is outside the orthographic disk");return n=we(r/t.a),i=Math.sin(n),o=Math.cos(n),l=t.long0||0,h=t.lat0||0,a=l,Math.abs(r)<=1e-10?(c=h,e.x=a,e.y=c,e):(c=we(o*t.sin_p14+e.y*i*t.cos_p14/r),s=Math.abs(h)-w,Math.abs(s)<=1e-10?(h>=0?a=b(l+Math.atan2(e.x,-e.y),t.over):a=b(l-Math.atan2(-e.x,e.y),t.over),e.x=a,e.y=c,e):(a=b(l+Math.atan2(e.x*i,r*t.cos_p14*o-e.y*t.sin_p14*i),t.over),e.x=a,e.y=c,e))}function Qu(t,e={}){let r={...t,sin_p14:0,cos_p14:0,...e};return og(r),r}var As={name:"ortho",aliases:[],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=q(t),r=Qu(e);return z("ortho",t,r,Xu,Zu,gt(e,0,!0))}};var Ju=20;function sg(t){t.temp=t.b/t.a,t.es=1-Math.pow(t.temp,2),t.e=Math.sqrt(t.es),t.e0=Cr(t.es),t.e1=Ar(t.es),t.e2=Ir(t.es),t.e3=Or(t.es),t.ml0=t.a*je(t.e0,t.e1,t.e2,t.e3,t.lat0)}function e0(t,e){var r=e.x,n=e.y,i,o,s,a=b(r-t.long0,t.over);if(s=a*Math.sin(n),t.sphere)Math.abs(n)<=1e-10?(i=t.a*a,o=-1*t.a*t.lat0):(i=t.a*Math.sin(s)/Math.tan(n),o=t.a*(Ve(n-t.lat0)+(1-Math.cos(s))/Math.tan(n)));else if(Math.abs(n)<=1e-10)i=t.a*a,o=-1*t.ml0;else{var c=Gr(t.a,t.e,Math.sin(n))/Math.tan(n);i=c*Math.sin(s),o=t.a*je(t.e0,t.e1,t.e2,t.e3,n)-t.ml0+c*(1-Math.cos(s))}return e.x=i+t.x0,e.y=o+t.y0,e}function t0(t,e){var r,n,i,o,s,a,c,l,h;if(i=e.x-t.x0,o=e.y-t.y0,t.sphere)if(Math.abs(o+t.a*t.lat0)<=1e-10)r=b(i/t.a+t.long0,t.over),n=0;else{a=t.lat0+o/t.a,c=i*i/t.a/t.a+a*a,l=a;var u;for(s=Ju;s;--s)if(u=Math.tan(l),h=-1*(a*(l*u+1)-l-.5*(l*l+c)*u)/((l-a)/u-1),l+=h,Math.abs(h)<=1e-10){n=l;break}r=b(t.long0+Math.asin(i*Math.tan(l)/t.a)/Math.sin(n),t.over)}else if(Math.abs(o+t.ml0)<=1e-10)n=0,r=b(t.long0+i/t.a,t.over);else{a=(t.ml0+o)/t.a,c=i*i/t.a/t.a+a*a,l=a;var f,d,m,_,p;for(s=Ju;s;--s)if(p=t.e*Math.sin(l),f=Math.sqrt(1-p*p)*Math.tan(l),d=t.a*je(t.e0,t.e1,t.e2,t.e3,l),m=t.e0-2*t.e1*Math.cos(2*l)+4*t.e2*Math.cos(4*l)-6*t.e3*Math.cos(6*l),_=d/t.a,h=(a*(f*_+1)-_-.5*f*(_*_+c))/(t.es*Math.sin(2*l)*(_*_+c-2*a*_)/(4*f)+(a-_)*(f*m-2/Math.sin(2*l))-m),l-=h,Math.abs(h)<=1e-10){n=l;break}f=Math.sqrt(1-t.es*Math.pow(Math.sin(n),2))*Math.tan(n),r=b(t.long0+Math.asin(i*f/t.a)/Math.sin(n),t.over)}return e.x=r,e.y=n,e}function r0(t,e={}){let r={...t,temp:0,e0:0,e1:0,e2:0,e3:0,ml0:0,...e};return sg(r),r}var Is={name:"poly",aliases:["Polyconic","American_Polyconic"],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=q(t),r=r0(e);return z("poly",t,r,e0,t0)}};var Z={FRONT:1,RIGHT:2,BACK:3,LEFT:4,TOP:5,BOTTOM:6},U={AREA_0:1,AREA_1:2,AREA_2:3,AREA_3:4};function ag(t){t.x0=t.x0||0,t.y0=t.y0||0,t.lat0=t.lat0||0,t.long0=t.long0||0,t.lat_ts=t.lat_ts||0,t.lat0>=w-F/2?t.face=Z.TOP:t.lat0<=-(w-F/2)?t.face=Z.BOTTOM:Math.abs(t.long0)<=F?t.face=Z.FRONT:Math.abs(t.long0)<=w+F?t.face=t.long0>0?Z.RIGHT:Z.LEFT:t.face=Z.BACK,t.es!==0&&(t.one_minus_f=1-(t.a-t.b)/t.a,t.one_minus_f_squared=t.one_minus_f*t.one_minus_f)}function n0(t,e){var r={x:0,y:0},n,i,o,s,a,c,l={value:0};if(e.x-=t.long0,t.es!==0?n=Math.atan(t.one_minus_f_squared*Math.tan(e.y)):n=e.y,i=e.x,t.face===Z.TOP)s=w-n,i>=F&&i<=w+F?(l.value=U.AREA_0,o=i-w):i>w+F||i<=-(w+F)?(l.value=U.AREA_1,o=i>0?i-X:i+X):i>-(w+F)&&i<=-F?(l.value=U.AREA_2,o=i+w):(l.value=U.AREA_3,o=i);else if(t.face===Z.BOTTOM)s=w+n,i>=F&&i<=w+F?(l.value=U.AREA_0,o=-i+w):i<F&&i>=-F?(l.value=U.AREA_1,o=-i):i<-F&&i>=-(w+F)?(l.value=U.AREA_2,o=-i-w):(l.value=U.AREA_3,o=i>0?-i+X:-i-X);else{var h,u,f,d,m,_,p;t.face===Z.RIGHT?i=$t(i,+w):t.face===Z.BACK?i=$t(i,+X):t.face===Z.LEFT&&(i=$t(i,-w)),d=Math.sin(n),m=Math.cos(n),_=Math.sin(i),p=Math.cos(i),h=m*p,u=m*_,f=d,t.face===Z.FRONT?(s=Math.acos(h),o=yi(s,f,u,l)):t.face===Z.RIGHT?(s=Math.acos(u),o=yi(s,f,-h,l)):t.face===Z.BACK?(s=Math.acos(-h),o=yi(s,f,-u,l)):t.face===Z.LEFT?(s=Math.acos(-u),o=yi(s,f,h,l)):(s=o=0,l.value=U.AREA_0)}return c=Math.atan(12/X*(o+Math.acos(Math.sin(o)*Math.cos(F))-w)),a=Math.sqrt((1-Math.cos(s))/(Math.cos(c)*Math.cos(c))/(1-Math.cos(Math.atan(1/Math.cos(o))))),l.value===U.AREA_1?c+=w:l.value===U.AREA_2?c+=X:l.value===U.AREA_3&&(c+=1.5*X),r.x=a*Math.cos(c),r.y=a*Math.sin(c),r.x=r.x*t.a+t.x0,r.y=r.y*t.a+t.y0,e.x=r.x,e.y=r.y,e}function i0(t,e){var r={lam:0,phi:0},n,i,o,s,a,c,l,h,u,f={value:0};if(e.x=(e.x-t.x0)/t.a,e.y=(e.y-t.y0)/t.a,i=Math.atan(Math.sqrt(e.x*e.x+e.y*e.y)),n=Math.atan2(e.y,e.x),e.x>=0&&e.x>=Math.abs(e.y)?f.value=U.AREA_0:e.y>=0&&e.y>=Math.abs(e.x)?(f.value=U.AREA_1,n-=w):e.x<0&&-e.x>=Math.abs(e.y)?(f.value=U.AREA_2,n=n<0?n+X:n-X):(f.value=U.AREA_3,n+=w),u=X/12*Math.tan(n),a=Math.sin(u)/(Math.cos(u)-1/Math.sqrt(2)),c=Math.atan(a),o=Math.cos(n),s=Math.tan(i),l=1-o*o*s*s*(1-Math.cos(Math.atan(1/Math.cos(c)))),l<-1?l=-1:l>1&&(l=1),t.face===Z.TOP)h=Math.acos(l),r.phi=w-h,f.value===U.AREA_0?r.lam=c+w:f.value===U.AREA_1?r.lam=c<0?c+X:c-X:f.value===U.AREA_2?r.lam=c-w:r.lam=c;else if(t.face===Z.BOTTOM)h=Math.acos(l),r.phi=h-w,f.value===U.AREA_0?r.lam=-c+w:f.value===U.AREA_1?r.lam=-c:f.value===U.AREA_2?r.lam=-c-w:r.lam=c<0?-c-X:-c+X;else{var d,m,_;d=l,u=d*d,u>=1?_=0:_=Math.sqrt(1-u)*Math.sin(c),u+=_*_,u>=1?m=0:m=Math.sqrt(1-u),f.value===U.AREA_1?(u=m,m=-_,_=u):f.value===U.AREA_2?(m=-m,_=-_):f.value===U.AREA_3&&(u=m,m=_,_=-u),t.face===Z.RIGHT?(u=d,d=-m,m=u):t.face===Z.BACK?(d=-d,m=-m):t.face===Z.LEFT&&(u=d,d=m,m=-u),r.phi=Math.acos(-_)-w,r.lam=Math.atan2(m,d),t.face===Z.RIGHT?r.lam=$t(r.lam,-w):t.face===Z.BACK?r.lam=$t(r.lam,-X):t.face===Z.LEFT&&(r.lam=$t(r.lam,+w))}if(t.es!==0){var p,M,y;p=r.phi<0?1:0,M=Math.tan(r.phi),y=t.b/Math.sqrt(M*M+t.one_minus_f_squared),r.phi=Math.atan(Math.sqrt(t.a*t.a-y*y)/(t.one_minus_f*y)),p&&(r.phi=-r.phi)}return r.lam+=t.long0,e.x=r.lam,e.y=r.phi,e}function yi(t,e,r,n){var i;return t<1e-10?(n.value=U.AREA_0,i=0):(i=Math.atan2(e,r),Math.abs(i)<=F?n.value=U.AREA_0:i>F&&i<=w+F?(n.value=U.AREA_1,i-=w):i>w+F||i<=-(w+F)?(n.value=U.AREA_2,i=i>=0?i-X:i+X):(n.value=U.AREA_3,i+=w)),i}function $t(t,e){var r=t+e;return r<-X?r+=pt:r>+X&&(r-=pt),r}function o0(t,e={}){let r={...t,face:0,one_minus_f:0,one_minus_f_squared:0,...e};return ag(r),r}var Os={name:"qsc",aliases:["Quadrilateralized Spherical Cube","Quadrilateralized_Spherical_Cube"],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=q(t),r=o0(e);return z("qsc",t,r,n0,i0)}};var Yt=[[1,22199e-21,-715515e-10,31103e-10],[.9986,-482243e-9,-24897e-9,-13309e-10],[.9954,-83103e-8,-448605e-10,-986701e-12],[.99,-.00135364,-59661e-9,36777e-10],[.9822,-.00167442,-449547e-11,-572411e-11],[.973,-.00214868,-903571e-10,18736e-12],[.96,-.00305085,-900761e-10,164917e-11],[.9427,-.00382792,-653386e-10,-26154e-10],[.9216,-.00467746,-10457e-8,481243e-11],[.8962,-.00536223,-323831e-10,-543432e-11],[.8679,-.00609363,-113898e-9,332484e-11],[.835,-.00698325,-640253e-10,934959e-12],[.7986,-.00755338,-500009e-10,935324e-12],[.7597,-.00798324,-35971e-9,-227626e-11],[.7186,-.00851367,-701149e-10,-86303e-10],[.6732,-.00986209,-199569e-9,191974e-10],[.6213,-.010418,883923e-10,624051e-11],[.5722,-.00906601,182e-6,624051e-11],[.5322,-.00677797,275608e-9,624051e-11]],_t=[[-520417e-23,.0124,121431e-23,-845284e-16],[.062,.0124,-126793e-14,422642e-15],[.124,.0124,507171e-14,-160604e-14],[.186,.0123999,-190189e-13,600152e-14],[.248,.0124002,710039e-13,-224e-10],[.31,.0123992,-264997e-12,835986e-13],[.372,.0124029,988983e-12,-311994e-12],[.434,.0123893,-369093e-11,-435621e-12],[.4958,.0123198,-102252e-10,-345523e-12],[.5571,.0121916,-154081e-10,-582288e-12],[.6176,.0119938,-241424e-10,-525327e-12],[.6769,.011713,-320223e-10,-516405e-12],[.7346,.0113541,-397684e-10,-609052e-12],[.7903,.0109107,-489042e-10,-104739e-11],[.8435,.0103431,-64615e-9,-140374e-14],[.8936,.00969686,-64636e-9,-8547e-9],[.9394,.00840947,-192841e-9,-42106e-10],[.9761,.00616527,-256e-6,-42106e-10],[1,.00328947,-319159e-9,-42106e-10]];Yt=Yt.map(t=>t.map(Math.fround));_t=_t.map(t=>t.map(Math.fround));var s0=.8487,a0=1.3523,c0=Qo/5,cg=1/c0,bt=18,xi=function(t,e){return t[0]+e*(t[1]+e*(t[2]+e*t[3]))},lg=function(t,e){return t[1]+e*(2*t[2]+e*3*t[3])};function hg(t,e,r,n){for(var i=e;n;--n){var o=t(i);if(i-=o,Math.abs(o)<r)break}return i}function ug(t){t.x0=t.x0||0,t.y0=t.y0||0,t.long0=t.long0||0,t.es=0}function l0(t,e){var r=b(e.x-t.long0,t.over),n=Math.abs(e.y),i=Math.floor(n*c0+1e-15);i<0?i=0:i>=bt&&(i=bt),n=Qo*(n-cg*i);var o={x:xi(Yt[i],n)*r,y:xi(_t[i],n)};return e.y<0&&(o.y=-o.y),o.x=o.x*t.a*s0+t.x0,o.y=o.y*t.a*a0+t.y0,o}function h0(t,e){var r={x:(e.x-t.x0)/(t.a*s0),y:Math.abs(e.y-t.y0)/(t.a*a0)};for(let s=0;s<=bt;s++)if(Math.abs(r.y-_t[s][0])<=8*Number.EPSILON)return r.x=b(r.x/Yt[s][0]+t.long0,t.over),r.y=(e.y<t.y0?-1:1)*s*5*Zo,r;if(r.y>=1)r.x/=Yt[bt][0],r.y=e.y<0?-w:w;else{var n=Math.floor(r.y*bt);for(n<0?n=0:n>=bt&&(n=bt-1);;)if(_t[n][0]>r.y)--n;else if(_t[n+1][0]<=r.y)++n;else break;var i=_t[n],o=5*(r.y-i[0])/(_t[n+1][0]-i[0]);o=hg(function(s){return(xi(i,s)-r.y)/lg(i,s)},o,1e-10,100),r.x/=xi(Yt[n],o),r.y=(5*n+o)*Zo,e.y<0&&(r.y=-r.y)}return r.x=b(r.x+t.long0,t.over),r}function u0(t,e={}){let r={...t,...e};return ug(r),r}var Ns={name:"robin",aliases:["Robinson"],parameters:["lon_0","x_0","y_0"],create(t){let e=q(t),r=u0(e);return z("robin",t,r,l0,h0)}};var Ls={name:"sinu",aliases:["Sinusoidal"],parameters:["lon_0","x_0","y_0"],create(t){let e=q(t),r=pu(e);return z("sinu",t,r,gi,_i)}};function fg(t){t.k0||(t.k0=1);var e=t.lat0;t.lambda0=t.long0;var r=Math.sin(e),n=t.a,i=t.rf,o=1/i,s=2*o-Math.pow(o,2);t.e=Math.sqrt(s);var a=t.e;t.R=t.k0*n*Math.sqrt(1-s)/(1-s*Math.pow(r,2)),t.alpha=Math.sqrt(1+s/(1-s)*Math.pow(Math.cos(e),4)),t.b0=Math.asin(r/t.alpha);var c=Math.log(Math.tan(Math.PI/4+t.b0/2)),l=Math.log(Math.tan(Math.PI/4+e/2)),h=Math.log((1+a*r)/(1-a*r));t.K=c-t.alpha*l+t.alpha*a/2*h}function f0(t,e){var r=Math.log(Math.tan(Math.PI/4-e.y/2)),n=t.e/2*Math.log((1+t.e*Math.sin(e.y))/(1-t.e*Math.sin(e.y))),i=-t.alpha*(r+n)+t.K,o=2*(Math.atan(Math.exp(i))-Math.PI/4),s=t.alpha*(e.x-t.lambda0),a=Math.atan(Math.sin(s)/(Math.sin(t.b0)*Math.tan(o)+Math.cos(t.b0)*Math.cos(s))),c=Math.asin(Math.cos(t.b0)*Math.sin(o)-Math.sin(t.b0)*Math.cos(o)*Math.cos(s));return e.y=t.R/2*Math.log((1+Math.sin(c))/(1-Math.sin(c)))+t.y0,e.x=t.R*a+t.x0,e}function d0(t,e){for(var r=e.x-t.x0,n=e.y-t.y0,i=r/t.R,o=2*(Math.atan(Math.exp(n/t.R))-Math.PI/4),s=Math.asin(Math.cos(t.b0)*Math.sin(o)+Math.sin(t.b0)*Math.cos(o)*Math.cos(i)),a=Math.atan(Math.sin(i)/(Math.cos(t.b0)*Math.cos(i)-Math.sin(t.b0)*Math.tan(o))),c=t.lambda0+a/t.alpha,l=0,h=s,u=-1e3,f=0;Math.abs(h-u)>1e-7;){if(++f>20)return;l=1/t.alpha*(Math.log(Math.tan(Math.PI/4+s/2))-t.K)+t.e*Math.log(Math.tan(Math.PI/4+Math.asin(t.e*Math.sin(h))/2)),u=h,h=2*Math.atan(Math.exp(l))-Math.PI/2}return e.x=c,e.y=h,e}function m0(t,e={}){let r={...t,lambda0:0,rf:0,R:0,alpha:0,b0:0,K:0,...e};return fg(r),r}var Gs={name:"somerc",aliases:[],parameters:["lon_0","x_0","y_0","lat_0","k","k_0"],create(t){let e=q(t),r=m0(e,{rf:e.a===e.b?1/0:1/(1-e.b/e.a)});return z("somerc",t,r,f0,d0)}};var me={N_POLE:0,S_POLE:1,EQUIT:2,OBLIQ:3};function dg(t){if(Math.abs(Math.abs(t.lat0)-w)<1e-10?t.mode=t.lat0<0?me.S_POLE:me.N_POLE:Math.abs(t.lat0)<1e-10?t.mode=me.EQUIT:(t.mode=me.OBLIQ,t.sinph0=Math.sin(t.lat0),t.cosph0=Math.cos(t.lat0)),t.pn1=t.h/t.a,t.pn1<=0||t.pn1>1e10)throw new Error("Invalid height");t.p=1+t.pn1,t.rp=1/t.p,t.h1=1/t.pn1,t.pfact=(t.p+1)*t.h1,t.es=0;var e=t.tilt,r=t.azi;t.cg=Math.cos(r),t.sg=Math.sin(r),t.cw=Math.cos(e),t.sw=Math.sin(e)}function p0(t,e){e.x-=t.long0;var r=Math.sin(e.y),n=Math.cos(e.y),i=Math.cos(e.x),o,s;switch(t.mode){case me.OBLIQ:s=t.sinph0*r+t.cosph0*n*i;break;case me.EQUIT:s=n*i;break;case me.S_POLE:s=-r;break;case me.N_POLE:s=r;break}switch(s=t.pn1/(t.p-s),o=s*n*Math.sin(e.x),t.mode){case me.OBLIQ:s*=t.cosph0*r-t.sinph0*n*i;break;case me.EQUIT:s*=r;break;case me.N_POLE:s*=-(n*i);break;case me.S_POLE:s*=n*i;break}var a,c;return a=s*t.cg+o*t.sg,c=1/(a*t.sw*t.h1+t.cw),o=(o*t.cg-s*t.sg)*t.cw*c,s=a*c,e.x=o*t.a,e.y=s*t.a,e}function g0(t,e){e.x/=t.a,e.y/=t.a;var r={x:e.x,y:e.y},n,i,o;o=1/(t.pn1-e.y*t.sw),n=t.pn1*e.x*o,i=t.pn1*e.y*t.cw*o,e.x=n*t.cg+i*t.sg,e.y=i*t.cg-n*t.sg;var s=ne(e.x,e.y);if(Math.abs(s)<1e-10)r.x=0,r.y=t.lat0;else{var a,c;switch(c=1-s*s*t.pfact,c=(t.p-Math.sqrt(c))/(t.pn1/s+s/t.pn1),a=Math.sqrt(1-c*c),t.mode){case me.OBLIQ:r.y=Math.asin(a*t.sinph0+e.y*c*t.cosph0/s),e.y=(a-t.sinph0*Math.sin(r.y))*s,e.x*=c*t.cosph0;break;case me.EQUIT:r.y=Math.asin(e.y*c/s),e.y=a*s,e.x*=c;break;case me.N_POLE:r.y=Math.asin(a),e.y=-e.y;break;case me.S_POLE:r.y=-Math.asin(a);break}r.x=Math.atan2(e.x,e.y)}return e.x=r.x+t.long0,e.y=r.y,e}function _0(t,e={}){let r={...t,mode:0,sinph0:0,cosph0:0,pn1:0,h:0,p:0,rp:0,h1:0,pfact:0,tilt:0,azi:0,cg:0,sg:0,cw:0,sw:0,...e};return dg(r),r}var qs={name:"tpers",aliases:["Tilted_Perspective"],parameters:["lon_0","x_0","y_0","lat_0","h","tilt","azi"],create(t){let e=q(t),r=L(t.parameters,"h",1e5),n=L(t.parameters,"tilt",0)*Math.PI/180,i=L(t.parameters,"azi",0)*Math.PI/180;if(Math.abs(n)>=Math.PI/2)throw new Error("Perspective tilt must be between -90 and 90 degrees");let o=_0(e,{h:r,tilt:n,azi:i});return z("tpers",t,o,p0,g0,gt(e,1/(1+r/e.a)))}};function mg(t){t.R=t.a}function M0(t,e){var r=e.x,n=e.y,i=b(r-t.long0,t.over),o,s;if(Math.abs(n)<=1e-10)return o=t.x0+t.R*i,s=t.y0,e.x=o,e.y=s,e;var a=we(2*Math.abs(n/Math.PI));if(Math.abs(i)<=1e-10||Math.abs(Math.abs(n)-w)<=1e-10)return o=t.x0,n>=0?s=t.y0+Math.PI*t.R*Math.tan(.5*a):s=t.y0+Math.PI*t.R*-Math.tan(.5*a),e.x=o,e.y=s,e;var c=.5*Math.abs(Math.PI/i-i/Math.PI),l=c*c,h=Math.sin(a),u=Math.cos(a),f=u/(h+u-1),d=f*f,m=f*(2/h-1),_=m*m,p=Math.PI*t.R*(c*(f-_)+Math.sqrt(l*(f-_)*(f-_)-(_+l)*(d-_)))/(_+l);i<0&&(p=-p),o=t.x0+p;var M=l+f;return p=Math.PI*t.R*(m*M-c*Math.sqrt((_+l)*(l+1)-M*M))/(_+l),n>=0?s=t.y0+p:s=t.y0-p,e.x=o,e.y=s,e}function y0(t,e){var r,n,i,o,s,a,c,l,h,u,f,d,m;return e.x-=t.x0,e.y-=t.y0,Math.abs(e.y)<1e-10?(e.x=b(t.long0+e.x/t.R,t.over),e.y=0,e):(f=Math.PI*t.R,i=e.x/f,o=e.y/f,s=i*i+o*o,a=-Math.abs(o)*(1+s),c=a-2*o*o+i*i,l=-2*a+1+2*o*o+s*s,m=o*o/l+(2*c*c*c/l/l/l-9*a*c/l/l)/27,h=(a-c*c/3/l)/l,u=2*Math.sqrt(-h/3),f=3*m/h/u,Math.abs(f)>1&&(f>=0?f=1:f=-1),d=Math.acos(f)/3,e.y>=0?n=(-u*Math.cos(d+Math.PI/3)-c/3/l)*Math.PI:n=-(-u*Math.cos(d+Math.PI/3)-c/3/l)*Math.PI,Math.abs(i)<1e-10?r=t.long0:r=b(t.long0+Math.PI*(s-1+Math.sqrt(1+2*(i*i-o*o)+s*s))/2/i,t.over),e.x=r,e.y=n,e)}function x0(t,e={}){let r={...t,R:0,...e};return mg(r),r}var zs={name:"vandg",aliases:["Van_der_Grinten_I","VanDerGrinten","Van_der_Grinten"],parameters:["lon_0","x_0","y_0"],create(t){let e=q(t),r=x0(e);return z("vandg",t,r,M0,y0)}};var S0=["o_proj","o_alpha","o_lon_c","o_lat_c","o_lon_p","o_lat_p","o_lon_1","o_lat_1","o_lon_2","o_lat_2"],Bs=t=>t.toLowerCase().replace(/[ _-]/g,""),Ds=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),We=(t,e)=>L(t,e,0)*Math.PI/180;function pg(t){let e=[["o_alpha","o_lon_c","o_lat_c"],["o_lat_p","o_lon_p"],["o_lon_1","o_lat_1","o_lon_2","o_lat_2"]],r=e.find(c=>c.some(l=>Ds(t,l)));if(!r)throw new Error("Oblique transformation requires a rotation parameter set");for(let c of r){if(!Ds(t,c))throw new Error("Oblique transformation requires "+c);if(c.includes("lat")&&Math.abs(We(t,c))>Math.PI/2)throw new Error("Invalid rotation latitude: "+c)}if(r===e[0]){let c=We(t,"o_alpha"),l=We(t,"o_lon_c"),h=We(t,"o_lat_c");if(Math.abs(h)>=Math.PI/2-1e-10)throw new Error("Rotation center must be away from the poles");return{lamp:l+Math.atan2(-Math.cos(c),-Math.sin(c)*Math.sin(h)),phip:Math.asin(Math.cos(h)*Math.sin(c))}}if(r===e[1])return{lamp:We(t,"o_lon_p"),phip:We(t,"o_lat_p")};let n=We(t,"o_lon_1"),i=We(t,"o_lat_1"),o=We(t,"o_lon_2"),s=We(t,"o_lat_2");if(Math.abs(i)>=Math.PI/2-1e-10||Math.abs(s)>=Math.PI/2-1e-10||Math.abs(i)<1e-10||Math.abs(i-s)<1e-10)throw new Error("Invalid new-equator reference points");let a=Math.atan2(Math.cos(i)*Math.sin(s)*Math.cos(n)-Math.sin(i)*Math.cos(s)*Math.cos(o),Math.sin(i)*Math.cos(s)*Math.sin(o)-Math.cos(i)*Math.sin(s)*Math.sin(n));return{lamp:a,phip:Math.atan(-Math.cos(a-n)/Math.tan(i))}}function Si(t){let e=t==="longlat";if(!e&&["obtran","geocent"].includes(Bs(t.name)))throw new Error("Cannot wrap a composite or geocentric projection");return{name:"ob_tran",aliases:["General Oblique Transformation","General_Oblique_Transformation"],parameters:[...S0,"lon_0",...e?[]:t.parameters],flags:e?[]:t.flags,create(r){let{parameters:n}=r,i=n.o_proj,o=e?["longlat","latlong","lonlat","latlon","identity"]:[t.name,...t.aliases||[]];if(i&&!o.map(Bs).includes(Bs(i)))throw new Re("missing-plugin","Oblique transformation dependency does not match +o_proj="+i);let{lamp:s,phip:a}=pg(n),c=Math.cos(a),l=Math.sin(a),h=Math.abs(a)>1e-10,u=We(n,"lon_0"),f=Ds(n,"over"),d={...n,proj:e?"longlat":i||t.name,lon_0:"0"};for(let y of S0)delete d[y];let m=e?Ge(y=>{y.x*=180/Math.PI,y.y*=180/Math.PI},y=>{y.x*=Math.PI/180,y.y*=Math.PI/180}):t.create({...r,parameters:Object.freeze(d)}),_=ct(m,!1),p=ct(m,!0),M=y=>Math.asin(Math.max(-1,Math.min(1,y)));return Ge(y=>{let S=y.x,x=y.y,E=f?S-u:qe(S-u),T=Math.cos(E),R=Math.sin(x),C=Math.cos(x),O=qe(Math.atan2(C*Math.sin(E),h?l*C*T+c*R:R)+s),v=M(h?l*R-c*C*T:-C*T);y.x=O,y.y=v,_(y)},y=>{p(y);let S=y.x,x=y.y,E=S-s,T=Math.cos(E),R=Math.sin(x),C=Math.cos(x),O=Math.atan2(C*Math.sin(E),h?l*C*T-c*R:-R),v=M(h?l*R+c*C*T:C*T);y.x=qe(O+u),y.y=v})}}}function Q(t){if(!t||typeof t!="object"||Array.isArray(t))throw new Error("Expected a CRS object");return t}function kr(t){return Array.isArray(t)?t:[]}function pe(t){return String(t||"").toLowerCase().replace(/[^a-z0-9]/g,"")}function Ie(t){if(typeof t!="number"||!Number.isFinite(t))throw new Error("Expected a finite CRS parameter");return t}function Ee(t,e){if(t===void 0)return e;if(typeof t=="object"){let i=Ie(Q(t).conversion_factor);if(i<=0)throw new Error("Unit conversion factor must be positive");return i}let n={metre:1,meter:1,degree:ee,radian:1,grad:Math.PI/200,gon:Math.PI/200,foot:.3048,ussurveyfoot:1200/3937,kilometre:1e3,arcsecond:ee/3600,partspermillion:1e-6,unity:1}[pe(t)];return n||D("Unsupported CRS unit: "+String(t)),n}var gg={hotineobliquemercator:"omerc",hotineobliquemercatorvarianta:"omerc",hotineobliquemercatorvariantb:"omerc",hotineobliquemercatorazimuthnaturalorigin:"omerc",hotineobliquemercatorazimuthcenter:"omerc",obliquemercator:"omerc",krovak:"krovak",krovaknorthorientated:"krovak",quadrilateralizedsphericalcube:"qsc",transversemercator:"tmerc",transversemercatorsouthorientated:"unsupported-south-tmerc",mercator:"merc",mercator1sp:"merc",mercator2sp:"merc",mercatorvarianta:"merc",mercatorvariantb:"merc",mercatorauxiliarysphere:"webmerc",popularvisualisationpseudomercator:"webmerc",lambertconformalconic:"lcc",lambertconformalconic1sp:"lcc",lambertconformalconic2sp:"lcc",lambertconicconformal1sp:"lcc",lambertconicconformal2sp:"lcc",albers:"aea",albersconicequalarea:"aea",albersequalarea:"aea",equidistantconic:"eqdc",lambertazimuthalequalarea:"laea",stereographic:"stere",stereographicnorthpole:"sterea",stereographicsouthpole:"stere",polarstereographic:"stere",polarstereographicvarianta:"stere",polarstereographicvariantb:"stere",obliquestereographic:"sterea",doublestereographic:"sterea",azimuthalequidistant:"aeqd",modifiedazimuthalequidistant:"aeqd",equidistantcylindrical:"eqc",equidistantcylindricalspherical:"eqc",equirectangular:"eqc",platecarree:"eqc",bonne:"bonne",cassinisoldner:"cass",cassini:"cass",cylindricalequalarea:"cea",lambertcylindricalequalarea:"cea",eckertvi:"eck6",equalearth:"eqearth",millercylindrical:"mill",mollweide:"moll",robinson:"robin",sinusoidal:"sinu",vandergrinten:"vandg",vandergrinteni:"vandg",gnomonic:"gnom",orthographic:"ortho",polyconic:"poly",americanpolyconic:"poly",newzealandmapgrid:"nzmg",gaussschreibertransversemercator:"gstmerc"},_g={centralmeridian:"lon_0",longitudeoforigin:"lon_0",longitudeofcenter:"lon_0",longitudeofnaturalorigin:"lon_0",longitudeoffalseorigin:"lon_0",longitudeofprojectioncentre:"lon_0",straightverticalpolelongitude:"lon_0",longitudeoforiginmeridian:"lon_0",latitudeoforigin:"lat_0",latitudeofcenter:"lat_0",latitudeofnaturalorigin:"lat_0",latitudeoffalseorigin:"lat_0",latitudeofprojectioncentre:"lat_0",standardparallel1:"lat_1",latitudeof1ststandardparallel:"lat_1",standardparallel2:"lat_2",latitudeof2ndstandardparallel:"lat_2",latitudeofstandardparallel:"lat_ts",scalefactor:"k_0",scalefactoratnaturalorigin:"k_0",scalefactoratprojectionorigin:"k_0",falseeasting:"x_0",falsenorthing:"y_0",eastingatfalseorigin:"x_0",northingatfalseorigin:"y_0"},Mg={omerc:{longitudeofcenter:"lonc",longitudeofprojectioncentre:"lonc",azimuth:"alpha",azimuthatprojectioncentre:"alpha",rectifiedgridangle:"gamma",anglefromrectifiedtoskewgrid:"gamma",scalefactoratprojectioncentre:"k_0",eastingatprojectioncentre:"x_0",northingatprojectioncentre:"y_0"},krovak:{azimuth:"alpha",colatitudeofconeaxis:"alpha",pseudostandardparallel1:"lat_ts",latitudeofpseudostandardparallel:"lat_ts",scalefactoronpseudostandardparallel:"k_0"}},yg={east:"e",west:"w",north:"n",south:"s",up:"u",down:"d",geocentricx:"e",geocentricy:"n",geocentricz:"u"};function vt(t,e){let r=String(t.type);if(r==="CompoundCRS"){e.mode!=="horizontal"&&D("CompoundCRS requires explicit horizontal extraction");let S=kr(t.components).map(Q).filter(x=>["ProjectedCRS","GeographicCRS","GeodeticCRS","BoundCRS"].includes(String(x.type)));if(S.length!==1)throw new Error("CompoundCRS requires exactly one horizontal component");return{...vt(S[0],e),lossy:!0}}if(r==="BoundCRS"){let S=vt(Q(t.source_crs),e),x=vt(Q(t.target_crs),e);(x.parameters.datum!=="WGS84"||!["longlat","geocent"].includes(x.parameters.proj)||Number(x.parameters.pm||0)!==0||x.parameters.towgs84||Number(x.parameters.a)!==6378137||!(Math.abs(Number(x.parameters.rf)-298.257223563)<=1e-9||Math.abs(Number(x.parameters.b)-6356752314245179e-9)<=1e-6))&&D("BoundCRS requires a WGS84 target");let E=Q(t.transformation),T=pe(Q(E.method).name),R=T==="geocentrictranslations"||/^geocentrictranslationsgeog[23]ddomain$/.test(T),C=/^positionvector(?:transformation)?(?:geog[23]ddomain|geocentricdomain)?$/.test(T),O=/^coordinateframe(?:rotation)?(?:geog[23]ddomain|geocentricdomain)?$/.test(T);!R&&!C&&!O&&D("Unsupported BoundCRS transformation: "+T);let v=["xaxistranslation","yaxistranslation","zaxistranslation","xaxisrotation","yaxisrotation","zaxisrotation","scaledifference"],A=new Array(R?3:7).fill(void 0);for(let k of kr(E.parameters)){let B=Q(k),$=v.indexOf(pe(B.name));($<0||$>=A.length||A[$]!==void 0)&&D("Unsupported or duplicate Helmert parameter: "+String(B.name));let nt=$<3?1:$<6?ee/3600:1e-6;A[$]=Ie(B.value)*Ee(B.unit,nt)/nt*(O&&$>=3&&$<6?-1:1)}if(A.some(k=>k===void 0))throw new Error("Incomplete BoundCRS Helmert transformation");let I={...S.parameters,towgs84:A.join(",")};return delete I.datum,{...S,parameters:I}}["ProjectedCRS","GeographicCRS","GeodeticCRS"].includes(r)||D("Unsupported CRS type: "+r);let n=r==="ProjectedCRS"?Q(t.base_crs):t,i=Q(n.datum||n.datum_ensemble);(i.type==="DynamicGeodeticReferenceFrame"||i.frame_reference_epoch!==void 0||t.coordinate_epoch!==void 0)&&D("Time-dependent datum transformations are not implemented");let o=Q(i.ellipsoid),s=Ie(o.semi_major_axis??o.radius),a={proj:"longlat",a:String(s*Ee(o.unit,1))};if(o.inverse_flattening!==void 0)a.rf=String(Ie(o.inverse_flattening));else if(o.semi_minor_axis!==void 0)a.b=String(Ie(o.semi_minor_axis)*Ee(o.unit,1));else if(o.radius!==void 0)a.b=a.a;else throw new Error("Ellipsoid requires inverse flattening or semi-minor axis");let c=pe(i.name),l=Object.keys(br).find(S=>pe(S)===c||pe(S)===c.replace(/^d/,""));l&&(a.datum=l),["wgs84","worldgeodeticsystem1984","worldgeodeticsystem1984ensemble","dwgs1984","wgs1984"].includes(c)&&(a.datum="WGS84"),["nad83","northamericandatum1983","dnorthamerican1983"].includes(c)&&(a.datum="NAD83"),["nad27","northamericandatum1927","dnorthamerican1927"].includes(c)&&(a.datum="NAD27");let u={newzealand1949:"nzgd49",belge1972:"rnb72"}[c.replace(/^d/,"")];if(u&&(a.datum=u),r==="ProjectedCRS"&&n.id){let S=Q(n.id),x=String(S.authority)+"_"+String(S.code);Object.prototype.hasOwnProperty.call(br,x)&&(a.datum=x)}i.towgs84!==void 0&&(a.towgs84=kr(i.towgs84).map(Ie).join(","),delete a.datum);let f=t.coordinate_system?Q(t.coordinate_system):{},d=kr(f.axis).map(Q),m=pe(f.subtype)==="cartesian"&&r==="GeodeticCRS";r!=="ProjectedCRS"&&!m&&f.subtype&&pe(f.subtype)!=="ellipsoidal"&&D("Unsupported coordinate system subtype"),m&&(a.proj="geocent");let _=Ee(n.angular_unit,ee),p=Ee(d[0]?.unit,r==="ProjectedCRS"||m?1:_);d[1]&&Ee(d[1].unit,p)!==p&&D("Mixed horizontal axis units are not supported"),m&&d[2]&&Ee(d[2].unit,p)!==p&&D("Mixed geocentric axis units are not supported");let M=n.prime_meridian||i.prime_meridian;if(M){let S=Q(M);a.pm=String(Ie(S.longitude)*Ee(S.unit,_)/ee)}if(r==="ProjectedCRS"){let S=Q(t.conversion),x=pe(Q(S.method).name),E=kr(S.parameters).map(Q),T=x==="stereographicnorthpole"&&!E.some(v=>pe(v.name).startsWith("scalefactor")),R=T?"stere":gg[x],C=E.filter(v=>["xscale","yscale","xyplanerotation"].includes(pe(v.name)));if(C.length){let v={xscale:-1,yscale:1,xyplanerotation:90};(R!=="krovak"||C.length!==3||new Set(C.map(A=>pe(A.name))).size!==3||C.some(A=>{let I=pe(A.name),k=I==="xyplanerotation"?Ee(A.unit,_)/ee:Ee(A.unit,1);return Math.abs(Ie(A.value)*k-v[I])>1e-10}))&&D("Unsupported ESRI Krovak axis adjustment")}(!R||R.startsWith("unsupported"))&&D("Unsupported projection method: "+String(Q(S.method).name)),a.proj=R==="webmerc"?"merc":R;let O=!1;for(let v of E){let A=pe(v.name);if(C.includes(v)||A==="auxiliaryspheretype"&&R==="webmerc"&&v.value===0)continue;if(A==="semiminor"&&R==="webmerc"){if(O)throw new Error("Duplicate conversion parameter: semi_minor");O=!0;let nt=Ie(v.value)*Ee(v.unit,1);Math.abs(nt-Number(a.a))>4*Number.EPSILON*Number(a.a)&&D("Pseudo-Mercator semi_minor must equal the semi-major axis");continue}let I=Mg[R]?.[A]||_g[A];if(I||D("Unsupported conversion parameter: "+String(v.name)),I==="lat_1"&&x==="stereographicnorthpole"&&!T?I="lat_0":I==="lat_1"&&["merc","webmerc","eqc","stere","cea"].includes(R)&&(I="lat_ts"),a[I]!==void 0)throw new Error("Duplicate conversion parameter: "+I);if(["merc","webmerc"].includes(R)&&I==="lat_0"&&v.value===0)continue;let k=I.startsWith("lat")||I.startsWith("lon")||I==="alpha"||I==="gamma",B=I==="x_0"||I==="y_0",$=Ie(v.value)*Ee(v.unit,k?_:B?p:1)/(k?ee:1);I.startsWith("lat")&&Math.abs(Math.abs($)-90)<=4*Number.EPSILON*90&&($=Math.sign($)*90),a[I]=String($)}if(R==="omerc"&&["hotineobliquemercator","hotineobliquemercatorvarianta","hotineobliquemercatorazimuthnaturalorigin"].includes(x)&&(a.no_uoff=void 0),R==="omerc"&&a.lon_0!==void 0&&a.lonc!==void 0&&(Math.abs(Number(a.lon_0)-Number(a.lonc))>1e-10&&D("Oblique Mercator central meridian conflicts with projection centre"),delete a.lon_0),x==="stereographicnorthpole"&&Math.abs(Number(a.lat_0))===90&&(a.proj="stere"),R==="lcc"&&a.lat_1===void 0&&(a.lat_1=a.lat_0),x==="polarstereographic"&&a.lat_0!==void 0){if(a.lat_ts!==void 0)throw new Error("Duplicate polar stereographic latitude of true scale");a.lat_ts=a.lat_0,delete a.lat_0}R==="stere"&&(x.includes("polar")||x==="stereographicsouthpole"||T)&&a.lat_0===void 0&&(a.lat_0=Number(a.lat_ts||90)<0?"-90":"90"),R==="webmerc"&&(a.b=a.a,delete a.rf,a.nadgrids="@null")}let y=d.map(S=>xg(S,a,r==="ProjectedCRS")).join("");return y.length===2&&(y+="u"),!m&&/[ud]/.test(y.slice(0,2))&&D("Structured CRS vertical-first axes require an explicit PROJ axis definition"),y&&(a.axis=y),(r==="ProjectedCRS"||m)&&(a.to_meter=String(p)),{parameters:a,angularUnit:r==="ProjectedCRS"||m?_:p,verticalUnit:m?1:Ee(d[2]?.unit,1)}}function xg(t,e,r){let n=String(t.direction),i=t.meridian,o=/^(north|south) along ([+-]?(?:\d+(?:\.\d*)?|\.\d+)) deg(?: (east|west))?$/i.exec(n);if(o){if(i!==void 0)throw new Error("Duplicate axis meridian");n=o[1],i={longitude:Number(o[2])*(o[3]?.toLowerCase()==="west"?-1:1)}}if(i!==void 0){let a=Number(e.lat_0),c=a===90;(!r||e.proj!=="stere"||Math.abs(a)!==90||pe(n)!==(c?"south":"north"))&&D("Axis meridians require an outward-facing polar stereographic axis");let l=Q(i).longitude,h=typeof l=="number"?Ie(l):Ie(Q(l).value)*Ee(Q(l).unit,ee)/ee,u=Ie((h-Number(e.lon_0||0))/90);Math.abs(u-Math.round(u))>1e-12&&D("Non-cardinal axis meridians require an orientation operation");let f=(Math.round(u)%4+4)%4;return(c?"senw":"nesw")[f]}let s=yg[pe(n)];return s||D("Unsupported axis direction: "+n),s}function wi(t,...e){return t.values.filter(r=>r.type==="node"&&e.includes(r.keyword.toUpperCase()))}function K(t,...e){return wi(t,...e)[0]}function J(t,e=0){let r=t.values[e];return r&&r.type!=="node"?r.value:void 0}function Pt(t){return t?{name:J(t),conversion_factor:J(t,1)}:void 0}function Sg(t,e){let r=J(t,1);if(e&&String(r).toLowerCase()==="unknown"){let n=String(J(t)).toLowerCase(),i=/^(easting|northing|westing|southing)(?:\s*\([a-z]\))?$/.exec(n);if(i)return{easting:"east",northing:"north",westing:"west",southing:"south"}[i[1]]}return r}function wg(t){let e=K(t,"MERIDIAN");if(e)return{longitude:{value:J(e),unit:Pt(K(e,"ANGLEUNIT"))}}}function w0(t){let e=K(t,"METHOD","PROJECTION");if(!e)throw new Error("WKT conversion requires a METHOD or PROJECTION");return K(t,"PARAMETERFILE")&&D("Grid-based WKT operation is not implemented"),{method:{name:J(e)},parameters:wi(t,"PARAMETER").map(r=>({name:J(r),value:J(r,1),unit:Pt(K(r,"ANGLEUNIT","LENGTHUNIT","SCALEUNIT"))}))}}function Fr(t){let e=t.keyword.toUpperCase();if(e==="COMPD_CS"||e==="COMPOUNDCRS")return{type:"CompoundCRS",components:wi(t,"PROJCS","PROJCRS","GEOGCS","GEOGCRS","GEODCRS","BOUNDCRS","VERT_CS","VERTCRS").map(Fr)};if(e==="BOUNDCRS"){let h=K(t,"SOURCECRS"),u=K(t,"TARGETCRS"),f=K(t,"ABRIDGEDTRANSFORMATION");if(!h||!u||!f)throw new Error("Incomplete WKT BoundCRS");let d=p=>{let M=p.values.find(y=>y.type==="node");if(!M)throw new Error("Missing bound CRS component");return M},m=w0(f),_=m.parameters;for(let p of _)String(p.name).toLowerCase()==="scale difference"&&p.unit===void 0&&(p.value=(Number(p.value)-1)*1e6);return{type:"BoundCRS",source_crs:Fr(d(h)),target_crs:Fr(d(u)),transformation:m}}if(["VERT_CS","VERTCRS"].includes(e))return{type:"VerticalCRS"};let r=["PROJCS","PROJCRS","PROJECTEDCRS"].includes(e),n=["GEOGCS","GEOGCRS","GEODCRS","GEODETICCRS","GEOGRAPHICCRS","BASEGEOGCRS","BASEGEODCRS","GEOCCS"].includes(e);!r&&!n&&D("Unsupported WKT CRS: "+e),K(t,"DYNAMIC","DERIVINGCONVERSION","VELOCITYGRID","EXTENSION")&&D("Unsupported WKT dynamic/extension operation");let i=K(t,"CS"),o=e==="GEOCCS"||String(J(i||t)).toLowerCase()==="cartesian"&&!r,s=K(t,r||o?"LENGTHUNIT":"ANGLEUNIT","UNIT"),a=wi(t,"AXIS").sort((h,u)=>Number(J(K(h,"ORDER")||h))-Number(J(K(u,"ORDER")||u))).map((h,u)=>({name:J(h),direction:e==="GEOCCS"?["geocentricX","geocentricY","geocentricZ"][u]:Sg(h,r),unit:Pt(K(h,"ANGLEUNIT","LENGTHUNIT")||(!o&&!r&&/^(up|down)$/i.test(String(J(h,1)))?void 0:s)),meridian:wg(h)}));if(!a.length)for(let h of o?["geocentricX","geocentricY","geocentricZ"]:["east","north"])a.push({name:h,direction:h,unit:Pt(s),meridian:void 0});let c=e==="GEOGCS"?void 0:K(t,"ID"),l={type:r?"ProjectedCRS":o?"GeodeticCRS":"GeographicCRS",name:J(t),id:c?{authority:J(c),code:J(c,1)}:void 0,coordinate_system:{subtype:r||o?"Cartesian":"ellipsoidal",axis:a}};if(r){let h=K(t,"GEOGCS","BASEGEOGCRS","BASEGEODCRS","GEODCRS","GEOGCRS");if(!h)throw new Error("Projected WKT requires a base geographic CRS");l.base_crs=Fr(h),l.conversion=w0(K(t,"CONVERSION")||t)}else{let h=K(t,"DATUM","GEODETICDATUM","ENSEMBLE");if(!h)throw new Error("WKT requires a geodetic datum");K(h,"EXTENSION","DYNAMIC")&&D("Unsupported datum extension");let u=K(h,"SPHEROID","ELLIPSOID");if(!u)throw new Error("WKT datum requires an ellipsoid");let f=K(h,"TOWGS84");l.datum={name:J(h),ellipsoid:{name:J(u),semi_major_axis:J(u,1),inverse_flattening:J(u,2),unit:Pt(K(u,"LENGTHUNIT"))},towgs84:f?.values.map((m,_)=>J(f,_))};let d=K(t,"PRIMEM");d&&(l.prime_meridian={name:J(d),longitude:J(d,1),unit:Pt(K(d,"ANGLEUNIT")||(o?void 0:s))}),l.angular_unit=o?void 0:Pt(s)}return l}var ks={name:"wkt",canParse:t=>Me(t)==="wkt",parse(t,e){if(typeof t!="string")throw new Error("Expected serialized WKT");return vt(Fr(_r(t).root),e)}};var Fs={name:"projjson",canParse:t=>Me(t)==="projjson",parse:(t,e)=>vt(Q(t),e)};var Us=1e-12;function Ei(t,e,r,n,i=!1){let o=(e-t.origin[0])/t.step[0],s=(r-t.origin[1])/t.step[1],a=t.size[0],c=t.size[1];if(!i&&(o<-1e-10||s<-1e-10||o>a-1+1e-10||s>c-1+1e-10))return!1;o=Math.max(0,Math.min(a-1,o)),s=Math.max(0,Math.min(c-1,s));let l=Math.min(a-2,Math.floor(o)),h=Math.min(c-2,Math.floor(s)),u=o-l,f=s-h,d=0,m=0;for(let _=0;_<4;_++){let p=_%2,M=_>1,y=(p?u:1-u)*(M?f:1-f);if(y===0)continue;let S=t.shifts[(h+(M?1:0))*a+l+p];if(!Number.isFinite(S[0])||!Number.isFinite(S[1]))return!1;d+=y*S[0],m+=y*S[1]}return n.x=d,n.y=m,!0}function Eg(t,e,r,n,i){if(!n)return Ei(t,e,r,i)?(i.x+=e,i.y+=r,!0):!1;for(let a=0;a<2;a++){let c=a===0?e:r;if(c<t.origin[a]-t.maxShift[a]-Us||c>t.origin[a]+(t.size[a]-1)*t.step[a]+t.maxShift[a]+Us)return!1}if(!Ei(t,e,r,i,!0))return!1;let o=e-i.x,s=r-i.y;for(let a=0;a<20;a++){if(!Ei(t,o,s,i,!0))return!1;let c=e-o-i.x,l=r-s-i.y;if(o+=c,s+=l,Math.max(Math.abs(c),Math.abs(l))<=Us)return Ei(t,o,s,i)?(i.x=qe(o),i.y=s,!0):!1}throw new Error("Inverse datum grid shift did not converge")}function E0(t){if(!t.length)throw new Error("Datum grid requires at least one subgrid");let e=t.map(n=>{let[i,o]=n.size;if(![i,o].every(a=>Number.isSafeInteger(a)&&a>=2)||i*o!==n.shifts.length||!n.origin.every(Number.isFinite)||!n.step.every(a=>Number.isFinite(a)&&a>0))throw new Error("Invalid datum subgrid geometry or node count");let s=[0,0];for(let a of n.shifts)for(let c=0;c<2;c++)Number.isFinite(a[c])&&(s[c]=Math.max(s[c],Math.abs(a[c])));return{...n,maxShift:s}}),r=(n,i)=>{let o=n.x,s=n.y;if(!Number.isFinite(o)||!Number.isFinite(s))throw new Error("Grid coordinates must be finite");for(let a of e)if(Eg(a,-o,s,i,n))return n.x=-n.x,!0;return n.x=o,n.y=s,!1};return Object.freeze({subgridCount:e.length,shiftInPlace:r,shift(n,i,o){let s={x:n,y:i};return r(s,o)?[s.x,s.y]:void 0}})}var Kt=Math.PI/648e3;function Vs(t,e={}){let r=new DataView(t);if(r.byteLength<176)throw new Error("Truncated NTv2 overview header");let n=r.getInt32(8,!0)===11;if(!n&&r.getInt32(8,!1)!==11)throw new Error("Invalid NTv2 header or byte order");let i=u=>r.getInt32(u,n),o=u=>r.getFloat64(u,n),s=u=>String.fromCharCode(...new Uint8Array(t,u,8)).replace(/\0/g,"").trim();if(s(0)!=="NUM_OREC"||i(24)!==11||s(56)!=="SECONDS")throw new Error("Unsupported NTv2 header or shift units");let a=i(40),c=e.includeErrorFields===!1?8:16;if(a<1||a>Math.floor((r.byteLength-176)/(176+4*c)))throw new Error("Invalid NTv2 subgrid count");let l=176,h=[];for(let u=0;u<a;u++){if(l+176>r.byteLength)throw new Error("Truncated NTv2 subgrid header");let f=o(l+72),d=o(l+88),m=o(l+104),_=o(l+120),p=o(l+136),M=o(l+152),y=i(l+168),S=1+(_-m)/M,x=1+(d-f)/p;if(![S,x].every(C=>Number.isFinite(C)&&C>=2&&Math.abs(C-Math.round(C))<1e-7)||!(M>0&&p>0)||y!==Math.round(S)*Math.round(x))throw new Error("Invalid NTv2 subgrid dimensions");let E=l+176,T=E+y*c;if(T>r.byteLength)throw new Error("Truncated NTv2 node records");let R=[];for(let C=0;C<y;C++)R.push([r.getFloat32(E+C*c+4,n)*Kt,r.getFloat32(E+C*c,n)*Kt]);h.push({origin:[m*Kt,f*Kt],step:[M*Kt,p*Kt],size:[Math.round(S),Math.round(x)],shifts:R}),l=T}return E0(h)}var T0=Object.create(null),b0=Object.create(null),Ti;function Tg(){if(Ti)return Ti;let t=[Ko,Xo,es,ts,rs,ns,is,os,as,ls,hs,us,fs,ds,gs,_s,Ms,ys,xs,Ss,ws,Ts,bs,vs,Ps,Rs,Cs,As,Is,Os,Ns,Ls,Gs,qs,zs],e=i=>i.toLowerCase().replace(/[\s_-]/g,""),r=Si("longlat"),n={name:r.name,aliases:r.aliases,parameters:[...new Set([...r.parameters,...t.flatMap(i=>i.parameters)])],flags:[...new Set(t.flatMap(i=>i.flags||[]))],create(i){let o=i.parameters.o_proj;if(!o)throw new Error("Oblique transformation requires +o_proj");let s=["longlat","latlong","latlon","lonlat","identity"].includes(e(o))?"longlat":t.find(l=>[l.name,...l.aliases||[]].some(h=>e(h)===e(o)));if(!s)throw new Error("Unknown oblique transformation projection: "+o);let a=Si(s),c=new Set([...ii,...a.parameters]);for(let l of Object.keys(i.parameters))if(!c.has(l))throw new Error("Unsupported PROJ parameter: +"+l);return a.create(i)}};return Ti=[...t,n],Ti}var rt=class extends ui{static defineProjectionAliases(e){for(let r of Object.keys(e)){let n=e[r];T0[r]=typeof n=="string"?n:JSON.parse(JSON.stringify(n))}}static registerDatumGrid(e,r,n){b0[e]=Vs(r,n)}constructor({from:e="WGS84",to:r="WGS84",enforceAxis:n=!1,verticalGrids:i}){super({from:e,to:r,enforceAxis:n,verticalGrids:i,projections:Tg(),parsers:[ks,Fs],aliases:T0,datumGrids:b0})}};var bg=[9,-18,-88,0,96,90,0,0,-60,-20,-9,18,8,0,-96,30,0,0,60,-20,9,-88,-18,90,96,0,-20,-60,0,0,186,-42,-42,-150,-96,-150,60,60,60,60,54,162,-78,30,-24,-90,-60,60,-60,60,-9,-32,18,30,24,0,20,-60,0,0,-9,8,18,30,-96,0,-20,60,0,0,54,-78,162,-90,-24,30,60,-60,60,-60,-54,78,78,90,144,90,-60,-60,-60,-60,9,-8,-18,-30,-24,0,20,60,0,0,-9,18,-32,0,24,30,0,0,-60,20,9,-18,-8,0,-24,-30,0,0,60,20],vg=372,Pg=[0,0,-131,0,138,144,0,0,-102,-31,0,0,7,0,-138,42,0,0,102,-31,62,0,-31,0,0,-62,0,0,0,31,124,0,-62,0,0,-124,0,0,0,62,124,0,-62,0,0,-124,0,0,0,62,62,0,-31,0,0,-62,0,0,0,31,0,0,45,0,-183,-9,0,93,18,0,0,0,216,0,33,87,0,-93,12,-93,0,0,156,0,153,99,0,-93,-12,-93,0,0,-45,0,-3,9,0,93,-18,0,0,0,-55,0,48,42,0,0,-84,31,0,0,-7,0,-48,-42,0,0,84,31],Rg=372,Cg=[18,-36,-122,0,120,135,0,0,-84,-31,-18,36,-2,0,-120,51,0,0,84,-31,36,-165,-27,93,147,-9,0,-93,18,0,210,45,-111,-93,-57,-192,0,93,12,93,162,141,-75,-93,-129,-180,0,93,-12,93,-36,-21,27,93,39,9,0,-93,-18,0,0,0,62,0,0,31,0,0,0,-31,0,0,124,0,0,62,0,0,0,-62,0,0,124,0,0,62,0,0,0,-62,0,0,62,0,0,31,0,0,0,-31,-18,36,-64,0,66,51,0,0,-102,31,18,-36,2,0,-66,-51,0,0,102,31],Ag=12,js=20/2,Ig=2,Ur=class{constructor(e){this._v00=0,this._v01=0,this._v10=0,this._v11=0,this._t=[],this.options=e,this._ix=this.options._width,this._iy=this.options._height}getHeight(e,r){if(e=Math.abs(e)>90?NaN:e,Number.isNaN(e)||Number.isNaN(r))return NaN;let n=Og(r,360);r=n!==-180?n:180;let i=r*this.options._rlonres,o=-e*this.options._rlatres,s=Math.floor(i),a=Math.min(Math.round((this.options._height-1)/2-1),Math.floor(o));i-=s,o-=a,a+=(this.options._height-1)/2,s+=s<0?this.options._width:s>=this.options._width?-this.options._width:0;let c=0,l=0,h=0,u=0,f=new Array(js);if(s===this._ix&&a===this._iy)this.options.cubic?f=this._t:(c=this._v00,l=this._v01,h=this._v10,u=this._v11);else if(!this.options.cubic)c=this._rawval(s,a),l=this._rawval(s+1,a),h=this._rawval(s,a+1),u=this._rawval(s+1,a+1);else{let m=[this._rawval(s,a-1),this._rawval(s+1,a-1),this._rawval(s-1,a),this._rawval(s,a),this._rawval(s+1,a),this._rawval(s+2,a),this._rawval(s-1,a+1),this._rawval(s,a+1),this._rawval(s+1,a+1),this._rawval(s+2,a+1),this._rawval(s,a+2),this._rawval(s+1,a+2)],_=Pg;a!==0&&(_=a===this.options._height-2?Cg:bg);let p=vg;a!==0&&(p=a===this.options._height-2?Rg:240);for(let M=0;M<js;++M){f[M]=0;for(let y=0;y<Ag;++y)f[M]+=m[y]*_[js*y+M];f[M]/=p}}if(!this.options.cubic){let m=(1-i)*c+i*l,_=(1-i)*h+i*u,p=(1-o)*m+o*_,M=this.options._offset+this.options._scale*p;return this._ix=s,this._iy=a,this._v00=c,this._v01=l,this._v10=h,this._v11=u,M}let d=f[0]+i*(f[1]+i*(f[3]+i*f[6]))+o*(f[2]+i*(f[4]+i*f[7])+o*(f[5]+i*f[8]+o*f[9]));return d=this.options._offset+this.options._scale*d,this._ix=s,this._iy=a,this._t=f,d}_rawval(e,r){e<0?e+=this.options._width:e>=this.options._width&&(e-=this.options._width),(r<0||r>=this.options._height)&&(r=r<0?-r:2*(this.options._height-1)-r,e+=(e<this.options._width/2?1:-1)*this.options._width/2);let n=this.options._datastart+Ig*(r*this.options._swidth+e),i=this.options.data[n],o=this.options.data[n+1];return i<<8|o}};function Og(t,e){e=Math.abs(e);let r=v0(t,e);return 2*Math.abs(r)===e?r-=v0(t,2*e)-r:2*Math.abs(r)>e&&(r+=r<0?e:-e),r}function v0(t,e){return t-Math.floor(t/e)*e}var Ng=10,Lg=65535;function Ws(t,e){let r=Gg(t),n=r.next();if(n.done||n.value.line!=="P5")throw new Error("Geoid model file: File not in PGM format");let i=Number.MAX_VALUE,o=0,s=-1,a=-1,c="NONE",l="UNKNOWN",h=0,u=0,f=null,d=null;do{n=r.next();let M=n.value.line;if(M.length)if(M[0]==="#"){let y=M.split(" "),S=y[0],x=y[1];if(S!=="#"||!x)continue;let E=y.length>2?y.slice(2):[];if(x==="Description")c=E.join(" ");else if(x==="DateTime")l=E.join(" ");else if(x==="Offset"){if(!y[2])throw new Error("Geoid model file: Error reading offset");i=parseInt(y[2],10)}else if(x==="Scale"){if(!y[2])throw new Error("Geoid model file: Error reading scale");o=parseFloat(y[2])}else x===(e.cubic?"MaxCubicError":"MaxBilinearError")?isFinite(parseFloat(y[2]))&&(s=parseFloat(y[2])):x===(e.cubic?"RMSCubicError":"RMSBilinearError")&&isFinite(parseFloat(y[2]))&&(a=parseFloat(y[2]))}else{let y=M.split(" ");if(y=y.filter(S=>S!==""),h=parseInt(y[0],10),u=parseInt(y[1],10),!(h&&u))throw new Error("Geoid model file: Error reading raster size");break}}while(!n.done);n=r.next();let m=parseInt(n.value.line,10);if(n.done)throw new Error("Geoid model file: Error reading maxval");if(m!==Lg)throw new Error("Geoid model file: Incorrect value of maxval");if(f=n.value.offset,d=h,i===Number.MAX_VALUE)throw new Error("Geoid model file: Offset not set");if(o===0)throw new Error("Geoid model file: Scale not set");if(o<0)throw new Error("Geoid model file: Scale must be positive");if(u<2||h<2)throw new Error("Geoid model file: Raster size too small");if(h&1)throw new Error("Geoid model file: Raster width is odd");if(!(u&1))throw new Error("Geoid model file: Raster height is even");let _=h/360,p=(u-1)/180;return new Ur({cubic:e.cubic,_width:h,_height:u,_rlonres:_,_rlatres:p,_offset:i,_scale:o,_swidth:d,_datastart:f,_maxerror:s,_rmserror:a,_description:c,_datetime:l,data:t})}function*Gg(t){let e=0;do{let r=t.indexOf(Ng,e);if(r!==-1){let n=t.subarray(e,r);e=r+1,yield{offset:e,line:P0(n)}}else{let n=t.subarray(e,t.length);e=t.length,yield{offset:e,line:P0(n)}}}while(e<t.length);return{offset:e,line:""}}function P0(t){let e="";for(let r of t)e+=String.fromCharCode(r);return e}var R0=new Map;function C0(t,e){$s(t,"CRS"),rt.defineProjectionAliases({[t]:e})}function A0(t,e){$s(t,"datum grid"),rt.registerDatumGrid(t,e)}function Hs(t,e){$s(t,"geoid model"),R0.set(t,e)}function I0(t,e,r={}){let n=Ws(e,r);return Hs(t,n),n}function bi(t){return R0.get(t)}function $s(t,e){if(!t.trim())throw new Error(`${e} name must not be empty`)}var Be=class{spatialReference;horizontalProjection;geographicProjection;heightOutputProjection;sourceIsGeocentric;outputIsGeocentric;sourceIsGeographic;outputIsGeographic;geoid;constructor(e,r={}){this.spatialReference=e,Bg(e);let n=e.targetCrs||e.sourceCrs;if(this.sourceIsGeocentric=Ys(e.sourceCrs),this.outputIsGeocentric=Ys(n),this.sourceIsGeographic=O0(e.sourceCrs),this.outputIsGeographic=O0(n),e.sourceCrs&&e.targetCrs&&!this.sourceIsGeocentric&&!this.outputIsGeocentric&&(this.horizontalProjection=new rt({from:Vr(e.sourceCrs),to:Vr(e.targetCrs),enforceAxis:!1})),(jr(e)||this.sourceIsGeocentric||this.outputIsGeocentric)&&(!this.sourceIsGeographic&&!this.sourceIsGeocentric&&(this.geographicProjection=new rt({from:Vr(e.sourceCrs),to:kt,enforceAxis:!1})),!this.outputIsGeographic&&!this.outputIsGeocentric&&(this.heightOutputProjection=new rt({from:kt,to:Vr(n),enforceAxis:!1}))),jr(e)&&(this.geoid=Dg(r.geoidModel),!this.geoid)){let i=typeof r.geoidModel=="string"?` "${r.geoidModel}"`:"";throw new Error(`Height conversion requires a registered geoid model${i}; call registerGeoidModel() or pass a parsed Geoid instance`)}}transformPosition(e){if(e.length<2)throw new Error("A spatial coordinate must contain at least x and y components");let r=[...e];if(jr(this.spatialReference)||this.sourceIsGeocentric||this.outputIsGeocentric){if(r.length<3||!Number.isFinite(r[2]))throw new Error("Three-dimensional CRS conversion requires a finite z coordinate");let n=this.toGeographic(r);if(jr(this.spatialReference)){let o=this.geoid.getHeight(n[1],n[0]);n[2]=kg(n[2],o,this.spatialReference.heightReference,this.spatialReference.targetHeightReference)}let i=this.fromGeographic(n);return r.splice(0,i.length,...i),r}if(this.horizontalProjection){let n=this.horizontalProjection.project(r.slice(0,3));r.splice(0,n.length,...n)}return r}transformPositions(e){if(e.length%3!==0)throw new Error("Packed spatial positions must contain a multiple of three components");let r=new Float64Array(e.length);for(let n=0;n<e.length;n+=3){let i=this.transformPosition([Number(e[n]),Number(e[n+1]),Number(e[n+2])]);r[n]=i[0],r[n+1]=i[1],r[n+2]=i[2]}return r}transformNormals(e,r){if(e.length!==r.length||e.length%3!==0)throw new Error("Spatial normals and positions must have matching xyz component counts");let n=new Float32Array(e.length),i=1e-5;for(let o=0;o<e.length;o+=3){let s=[Number(r[o]),Number(r[o+1]),Number(r[o+2])],a=[Number(e[o]),Number(e[o+1]),Number(e[o+2])],c=qg(this,s,i),l=zg(c,a),h=Math.hypot(...l);h>0&&Number.isFinite(h)?(n[o]=l[0]/h,n[o+1]=l[1]/h,n[o+2]=l[2]/h):(n[o]=a[0],n[o+1]=a[1],n[o+2]=a[2])}return n}toGeographic(e){return this.sourceIsGeocentric?Array.from(N.WGS84.cartesianToCartographic(new g(e))):this.sourceIsGeographic?e.slice(0,3):this.geographicProjection.project(e.slice(0,3))}fromGeographic(e){return this.outputIsGeocentric?Array.from(N.WGS84.cartographicToCartesian(new g(e))):this.outputIsGeographic?e.slice(0,3):this.heightOutputProjection.project(e.slice(0,3))}};function qg(t,e,r){let n=[];for(let i=0;i<3;i++){let o=e.slice(),s=e.slice();o[i]+=r,s[i]-=r;let a=t.transformPosition(o),c=t.transformPosition(s);n.push([(a[0]-c[0])/(2*r),(a[1]-c[1])/(2*r),(a[2]-c[2])/(2*r)])}return n}function zg(t,e){let[r,n,i]=t,o=r[0]*(n[1]*i[2]-n[2]*i[1])-n[0]*(r[1]*i[2]-r[2]*i[1])+i[0]*(r[1]*n[2]-r[2]*n[1]);return!Number.isFinite(o)||Math.abs(o)<1e-15?e:[[n[1]*i[2]-n[2]*i[1],r[2]*i[1]-r[1]*i[2],r[1]*n[2]-r[2]*n[1]],[n[2]*i[0]-n[0]*i[2],r[0]*i[2]-r[2]*i[0],r[2]*n[0]-r[0]*n[2]],[n[0]*i[1]-n[1]*i[0],r[1]*i[0]-r[0]*i[1],r[0]*n[1]-r[1]*n[0]]].map(a=>(a[0]*e[0]+a[1]*e[1]+a[2]*e[2])/o)}function Vr(t){if(!t)throw new Error("Cannot construct a projection because the CRS is unknown");if(typeof t!="string"&&t.type==="CompoundCRS"){let e=t.components.filter(r=>r.type!=="VerticalCRS");if(e.length!==1)throw new Error("CompoundCRS requires exactly one horizontal component");return Vr(e[0])}return t}function Bg(t){if(t.outputCoordinates==="local-enu")throw new Error("local-enu output requires a dataset-derived local origin and must be created by a tileset source");if(t.outputCoordinates==="target-crs"&&!t.targetCrs)throw new Error("target-crs output requires targetCrs");if(!t.sourceCrs&&t.status==="unresolved")throw new Error("Cannot transform coordinates because the source CRS is unknown");if(jr(t)&&t.heightReference==="unknown")throw new Error("Cannot convert heights because the source height reference is unknown");if(t.coordinateFrame==="geocentric"&&!Ys(t.sourceCrs))throw new Error("Only EPSG:4978 geocentric coordinates are supported by the current spatial transformer");if(t.status==="unresolved")throw new Error("The requested spatial output cannot be resolved from the available metadata")}function Ys(t){return typeof t=="string"&&Sr(t)===jn}function O0(t){if(typeof t!="string")return!1;let e=Sr(t);return e===kt||e==="EPSG:4979"||e==="OGC:CRS84"}function jr(t){let e=t.targetHeightReference;return e!=="native"&&e!==t.heightReference}function Dg(t){return typeof t=="string"?bi(t):t}function kg(t,e,r,n){if(r===n||n==="native")return t;if(r==="orthometric"&&n==="ellipsoidal")return t+e;if(r==="ellipsoidal"&&n==="orthometric")return t-e;throw new Error(`Unsupported height conversion from ${r} to ${n}`)}var Mt=class{spatialReference;coordinateTransformer;geographicCoordinateTransformer;constructor(e,r={}){this.coordinateTransformer=new Be(e,r);let n={...e,sourceCrs:"EPSG:4326",targetCrs:e.targetCrs||e.sourceCrs,coordinateFrame:"geographic",axisOrder:"xy"};this.geographicCoordinateTransformer=new Be(n,r),this.spatialReference=e}transformPositions(e){return this.coordinateTransformer.transformPositions(e)}transformNormals(e,r){return this.coordinateTransformer.transformNormals(e,r)}transformBoundingVolume(e,r){let n=r?new G(Array.from(r)):void 0,i=e.region?Fg(e.region):Ug(e).map(s=>n?Array.from(n.transformAsPoint(s)):s);if(!i.length)return e;let o=e.region?i.map(s=>this.transformRegionSample(s)):i.map(s=>this.coordinateTransformer.transformPosition(s));return{box:Vg(o)}}transformRegionSample(e){let[r,n,i]=e,o=this.spatialReference.targetCrs||this.spatialReference.sourceCrs;if(o&&_e(o)==="geocentric"){let s=N.WGS84.cartographicToCartesian([r,n,i]);return Array.from(s)}return this.geographicCoordinateTransformer.transformPosition(e)}};function Fg(t){if(t.length<6||t.some(u=>!Number.isFinite(u)))return[];let[e,r,n,i,o,s]=t,a=n<e?n+Math.PI*2:n,c=N0(e,a),l=N0(r,i),h=[];for(let u of c)for(let f of l)for(let d of[o,s])h.push([u*180/Math.PI,f*180/Math.PI,d]);return h}function N0(t,e){let r=[t,(t+e)/2,e],n=Math.PI/2,i=Math.ceil(t/n),o=Math.floor(e/n);for(let s=i;s<=o;s++)r.push(s*n);return r}function Ug(t){if(t.box&&t.box.length>=12){let e=t.box.slice(0,3),r=[t.box.slice(3,6),t.box.slice(6,9),t.box.slice(9,12)],n=[];for(let i=0;i<=4;i++)for(let o=0;o<=4;o++)for(let s=0;s<=4;s++){let a=i/2-1,c=o/2-1,l=s/2-1;n.push([e[0]+a*r[0][0]+c*r[1][0]+l*r[2][0],e[1]+a*r[0][1]+c*r[1][1]+l*r[2][1],e[2]+a*r[0][2]+c*r[1][2]+l*r[2][2]])}return n}if(t.sphere&&t.sphere.length>=4){let[e,r,n,i]=t.sphere,o=[[e-i,r,n],[e+i,r,n],[e,r-i,n],[e,r+i,n],[e,r,n-i],[e,r,n+i]];for(let s=0;s<16;s++){let a=s*Math.PI*2/16;o.push([e+i*Math.cos(a),r+i*Math.sin(a),n])}return o}return[]}function Vg(t){let e=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0];for(let o of t)for(let s=0;s<3;s++)e[s]=Math.min(e[s],o[s]),r[s]=Math.max(r[s],o[s]);let n=[Math.max((r[0]-e[0])*.01,1e-9),Math.max((r[1]-e[1])*.01,1e-9),Math.max((r[2]-e[2])*.01,1e-9)];return[...[(e[0]+r[0])/2,(e[1]+r[1])/2,(e[2]+r[2])/2],(r[0]-e[0])/2+n[0],0,0,0,(r[1]-e[1])/2+n[1],0,0,0,(r[2]-e[2])/2+n[2]]}function L0(t,e){let r=t.map(([c,l])=>[c,l]);if(r.length===0)return r;let n=1/0,i=-1/0;for(let[c]of t)n=Math.min(n,c),i=Math.max(i,c);if(i-n>=360)return r;let o=e??r[0][0];for(let c of r){let l=c[0]-o;l>180?c[0]-=360*Math.ceil((l-180)/360):l<-180&&(c[0]+=360*Math.ceil((-l-180)/360)),o=c[0]}let s=t[0],a=t[t.length-1];if(s[0]===a[0]&&s[1]===a[1]){if(Math.abs(r[r.length-1][0]-r[0][0])>180)return t.map(([c,l])=>[c,l]);r[r.length-1]=[...r[0]]}return r}function jg(t){let e=1/0,r=1/0,n=-1/0,i=-1/0;for(let[o,s]of t)e=Math.min(e,o),r=Math.min(r,s),n=Math.max(n,o),i=Math.max(i,s);return[[e,r],[n,i]]}function G0(t){let e=(r,n)=>{let i=t.cellToBoundary(r);return n?.unwrap?L0(i,n.referenceLongitude):i};return{...t,cellToBoundary:e,cellToBoundaryFlat:(r,n)=>n?.unwrap?e(r,n).flat():t.cellToBoundaryFlat(r),cellToBounds:(r,n)=>{let i=t.cellToBounds(r);if(!n?.unwrap||i[1][0]-i[0][0]>=360)return i;let o=jg(e(r,n));return o[0][1]=i[0][1],o[1][1]=i[1][1],o}}}var Wg=(1n<<64n)-1n,Hg=0x1555555555555555n;function Xt(t){if(t==="X")return 0n;if(!q0(t))throw new Error(`Invalid S2 token: ${t}`);let e=t.padEnd(16,"0");return BigInt(`0x${e}`)}function Wr(t){if(t===0n)return"X";if(!Zt(t))throw new Error(`Invalid S2 index: ${t}`);let e=$g(t),r=e%4;e=(e-r)/4;let n=e;e*=4;let o=(t>>BigInt(e)).toString(16).replace(/0+$/,"");return Array(17-n-o.length).join("0")+o}function Zt(t){if(typeof t!="bigint"||t<=0n||t>Wg)return!1;let e=t>>61n,r=t&-t;return e<6n&&(r&Hg)!==0n}function q0(t){if(typeof t!="string"||!/^[0-9a-fA-F]{1,16}$/.test(t)||t.endsWith("0"))return!1;let e=t.padEnd(16,"0");return Zt(BigInt(`0x${e}`))}function $g(t){let e=0;for(;t%2n===0n;)t/=2n,e++;return e}function Qt(t){if(!Zt(t))throw new Error(`Invalid S2 index: ${t}`);let e=Qg(t);return Zg(e)}var Yg=3,Ks=30,Kg=2*Ks+1,z0=180/Math.PI,Xg={a:[[0,"d"],[1,"a"],[3,"b"],[2,"a"]],b:[[2,"b"],[1,"b"],[3,"a"],[0,"c"]],c:[[2,"c"],[3,"d"],[1,"c"],[0,"b"]],d:[[0,"a"],[3,"c"],[1,"d"],[2,"d"]]};function Zg(t){if(!/^[0-5]\/[0-3]{0,30}$/.test(t))throw new Error(`Invalid S2 Hilbert quadkey: ${t}`);let e=t.split("/"),r=parseInt(e[0],10),n=e[1]||"",i=n.length,o=0,s=[0,0];for(let a=i-1;a>=0;a--){o=i-a;let c=n[a],l=0,h=0;c==="1"?h=1:c==="2"?(l=1,h=1):c==="3"&&(l=1);let u=Math.pow(2,o-1);Jg(u,s,l,h),s[0]+=u*l,s[1]+=u*h}if(r%2===1){let a=s[0];s[0]=s[1],s[1]=a}return{face:r,ij:s,level:o}}function Qg(t){if(!Zt(t))throw new Error(`Invalid S2 index: ${t}`);let e=t.toString(2);for(;e.length<Yg+Kg;)e="0"+e;let r=e.lastIndexOf("1"),n=e.substring(0,3),i=e.substring(3,r),o=i.length/2,s=BigInt(`0b${n}`).toString(10),a="";if(o!==0)for(a=BigInt(`0b${i}`).toString(4);a.length<o;)a="0"+a;return`${s}/${a}`}function D0(t){let{face:e,ij:r,level:n}=t;if(!Number.isInteger(e)||e<0||e>5)throw new Error(`Invalid S2 face: ${e}`);if(!Number.isInteger(n)||n<0||n>Ks)throw new Error(`Invalid S2 level: ${n}`);let i=2**n;if(!Number.isInteger(r[0])||!Number.isInteger(r[1])||r[0]<0||r[1]<0||r[0]>=i||r[1]>=i)throw new Error(`Invalid S2 IJ coordinates: ${r[0]}, ${r[1]}`);let o=e2(r[0],r[1],n,e),s=BigInt(e)<<61n;for(let a=0;a<o.length;a++){let c=59-a*2;s|=BigInt(o[a])<<BigInt(c)}return s|=1n<<BigInt(60-n*2),s}function Xs(t,e,r,n){let i=Qt(t);if(!Number.isInteger(e)||e<0||i.level+e>Ks)throw new Error(`Invalid S2 relative level: ${e}`);let o=2**e;if(!Number.isInteger(r)||!Number.isInteger(n)||r<0||n<0||r>=o||n>=o)throw new Error(`Invalid S2 descendant coordinates: ${r}, ${n}`);return D0({face:i.face,ij:[i.ij[0]*o+r,i.ij[1]*o+n],level:i.level+e})}function Hr(t,e,r){let n=1<<e;return[(t[0]+r[0])/n,(t[1]+r[1])/n]}function B0(t){return t>=.5?1/3*(4*t*t-1):1/3*(1-4*(1-t)*(1-t))}function $r(t){return[B0(t[0]),B0(t[1])]}function Yr(t,[e,r]){switch(t){case 0:return[1,e,r];case 1:return[-e,1,r];case 2:return[-e,-r,1];case 3:return[-1,-r,-e];case 4:return[r,-1,-e];case 5:return[r,e,-1];default:throw new Error("Invalid face")}}function Kr([t,e,r]){let n=Math.atan2(r,Math.sqrt(t*t+e*e));return[Math.atan2(e,t)*z0,n*z0]}function Jg(t,e,r,n){if(n===0){r===1&&(e[0]=t-1-e[0],e[1]=t-1-e[1]);let i=e[0];e[0]=e[1],e[1]=i}}function e2(t,e,r,n){let i=n%2===1?"d":"a",o=[];for(let s=r-1;s>=0;s--){let a=1<<s,c=(t&a)!==0?1:0,l=(e&a)!==0?1:0,[h,u]=Xg[i][c*2+l];o.push(h),i=u}return o}var t2=100;function k0(t){let e=Qt(t);return r2(e)}function r2({face:t,ij:e,level:r}){let n=[[0,0],[0,1],[1,1],[1,0],[0,0]],i=Math.max(1,Math.ceil(t2*Math.pow(2,-r))),o=new Float64Array(4*i*2+2),s=0,a=0;for(let c=0;c<4;c++){let l=n[c].slice(0),h=n[c+1],u=(h[0]-l[0])/i,f=(h[1]-l[1])/i;for(let d=0;d<i;d++){l[0]+=u,l[1]+=f;let m=Hr(e,r,l),_=$r(m),p=Yr(t,_),M=Kr(p);Math.abs(M[1])>89.999&&(M[0]=a);let y=M[0]-a;M[0]+=y>180?-360:y<-180?360:0,o[s++]=M[0],o[s++]=M[1],a=M[0]}}return o[s++]=o[0],o[s++]=o[1],o}var n2=G0({name:"s2",hasNumericRepresentation:!0,cellColumnNames:["s2","s2Token","s2_token","s2Cell","s2_cell","s2CellId","s2_cell_id"],tokenToCell:t=>Xt(t),cellToToken:t=>Wr(Pi(t)),cellToLngLat:t=>F0(t),cellToBoundary:t=>i2(t),cellToBoundaryFlat:t=>Zs(t),cellToBounds:t=>vi(t)});function F0(t){let e=Pi(t),r=Qt(e),n=Hr(r.ij,r.level,[.5,.5]),i=$r(n),o=Yr(r.face,i);return Kr(o)}function Zs(t){let e=Pi(t),r=k0(e);return Array.from(r)}function i2(t){let e=Zs(t),r=[];for(let n=0;n<e.length;n+=2)r.push([e[n],e[n+1]]);return r}function vi(t){let e=Qt(Pi(t));if(e.level===0)return o2(e.face);let r=[[0,0],[0,1],[1,1],[1,0]],n=1/0,i=1/0,o=-1/0,s=-1/0,a;for(let l of r){let h=Hr(e.ij,e.level,l),u=$r(h),[f,d,m]=Yr(e.face,u),[_,p]=Kr([f,d,m]);if(f===0&&d===0&&a!==void 0&&(_=a),a!==void 0){let M=_-a;_+=M>180?-360:M<-180?360:0}a=_,n=Math.min(n,_),i=Math.min(i,p),o=Math.max(o,_),s=Math.max(s,p)}let c=2*Number.EPSILON*180/Math.PI;return[[n-c,Math.max(-90,i-c)],[o+c,Math.min(90,s+c)]]}function Pi(t){return typeof t=="bigint"?t:Xt(t)}function o2(t){let e=Math.asin(Math.sqrt(.3333333333333333))*180/Math.PI;switch(t){case 0:return[[-45,-45],[45,45]];case 1:return[[45,-45],[135,45]];case 2:return[[-180,e],[180,90]];case 3:return[[135,-45],[225,45]];case 4:return[[-135,-45],[-45,45]];case 5:return[[-180,-90],[180,-e]];default:throw new Error(`Invalid S2 face: ${t}`)}}function Ri(t){let[[e,r],[n,i]]=vi(t.token),o=hr([e,r,n,i,t.minimumHeight,t.maximumHeight],N.WGS84,{units:"degrees"});return[...o.center,...o.halfAxes]}var s2=4,a2=8,U0=new WeakMap;function Js(t,e){return{coordinates:e,subtreeUrl:Zr(t.subtreesUrlTemplate,e),descriptor:t,resource:X0(t.resourceFiles,Zr(t.subtreesUrlTemplate,e))}}function Ci(t,e){let{descriptor:r}=e;p2(r),c2(t,r);let n={tileCount:0,childSubtreeCount:0},i=K0(t,e,{localLevel:0,mortonIndex:0},e.coordinates,n);if(!i)throw new Error(`Invalid 3D Tiles subtree: root tile is unavailable at ${e.subtreeUrl}`);return{root:i,...n}}function c2(t,e){let r=ef(e.subdivisionScheme),n=(r**e.subtreeLevels-1)/(r-1),i=r**e.subtreeLevels;Qs(t.tileAvailability,n,"tile");let o=Array.isArray(t.contentAvailability)?t.contentAvailability:t.contentAvailability?[t.contentAvailability]:[];for(let c of o)Qs(c,n,"content");Qs(t.childSubtreeAvailability,i,"child subtree");let s=V0(t.tileAvailability,n),a=o[0]?V0(o[0],n):0;if(j0(t.tileAttributes,s,"tile"),j0(t.contentAttributes,a,"content"),t.tilePropertyRows&&t.tilePropertyRows.length!==s)throw new Error("3DTILES_subtree: tile property-table count does not match availability");if(t.contentPropertyRows&&t.contentPropertyRows.length!==a)throw new Error("3DTILES_subtree: content property-table count does not match availability")}function Qs(t,e,r){if(!(t.constant===0||t.constant===1)&&(!t.explicitBitstream||t.explicitBitstream.byteLength*8<e))throw new Error(`3DTILES_subtree: ${r} availability bitstream is too short`)}function V0(t,e){if(t.constant===1)return e;if(t.constant===0)return 0;let r=0;for(let n=0;n<e;n++)Jt(t,n)&&r++;return r}function j0(t,e,r){let n={TILE_BOUNDING_BOX:16,TILE_BOUNDING_SPHERE:4,TILE_GEOMETRIC_ERROR:1,TILE_REFINE:1,TILE_TRANSFORM:16,CONTENT_BOUNDING_BOX:16,CONTENT_BOUNDING_SPHERE:4};for(let[i,o]of Object.entries(t||{})){let s=n[i];if(s&&o.length!==e*s)throw new Error(`3DTILES_subtree: ${r} attribute ${i} count does not match availability`)}}function Zr(t,e,r={}){let n={level:e.level,x:e.x,y:e.y,z:e.z,...r};return t.replace(/{([^{}]+)}/g,(i,o)=>{let s=Object.hasOwn(n,o)?n[o]:n[o.toLowerCase()];return s===void 0?i:String(s)})}function K0(t,e,r,n,i){let{descriptor:o}=e,s=ef(o.subdivisionScheme),a=f2(s,r.localLevel)+r.mortonIndex;if(!Jt(t.tileAvailability,a))return null;i.tileCount++;let c=u2(t.contentAvailability,a),l=[];if(n.level<o.maximumLevel)if(r.localLevel+1<o.subtreeLevels)for(let h=0;h<s;h++){let u=$0(n,h,o.subdivisionScheme),f=K0(t,e,{localLevel:r.localLevel+1,mortonIndex:r.mortonIndex*s+h},u,i);f&&l.push(f)}else for(let h=0;h<s;h++){let u=r.mortonIndex*s+h;if(Jt(t.childSubtreeAvailability,u)){let f=$0(n,h,o.subdivisionScheme);l.push(l2(t,o,f)),i.childSubtreeCount++}}return h2(t,o,e,n,a,c,l)}function l2(t,e,r){let n=Z0(e.resourceFiles,t.resourceFiles),i=n?{...e,resourceFiles:n}:e,o=Js(i,r);return{id:J0(o,r),children:[],implicitSubtree:o,boundingVolume:tf(e.rootBoundingVolume,r,e.subdivisionScheme),geometricError:e.rootLodMetricValue/2**r.level,lodMetricType:e.lodMetricType,lodMetricValue:e.rootLodMetricValue/2**r.level,refine:e.refine,type:Ke.EMPTY,implicitMetadata:Q0(t),_scaleGeometricError:e.scaleGeometricError!==!1}}function W0(t,e,r){if(!t||e<0)return{};let n=Xr(t[r==="tile"?"TILE_BOUNDING_BOX":"CONTENT_BOUNDING_BOX"],e,16),i=Xr(t[r==="tile"?"TILE_BOUNDING_SPHERE":"CONTENT_BOUNDING_SPHERE"],e,4),o=n?{box:[n[12],n[13],n[14],n[0]/2,n[1]/2,n[2]/2,n[4]/2,n[5]/2,n[6]/2,n[8]/2,n[9]/2,n[10]/2]}:i?{sphere:i}:void 0;if(r==="content")return{boundingVolume:o};let s=Xr(t.TILE_GEOMETRIC_ERROR,e,1)?.[0];if(s!==void 0&&(!Number.isFinite(s)||s<0))throw new Error("3DTILES_subtree: TILE_GEOMETRIC_ERROR must be nonnegative");let a=Xr(t.TILE_REFINE,e,1)?.[0];if(a!==void 0&&a!==0&&a!==1)throw new Error("3DTILES_subtree: TILE_REFINE must be 0 or 1");return{boundingVolume:o,geometricError:s,refine:a===void 0?void 0:a===0?te.ADD:te.REPLACE,transform:Xr(t.TILE_TRANSFORM,e,16)}}function Xr(t,e,r){if(!t)return;let n=e*r;if(n+r>t.length)throw new Error("3DTILES_subtree: attribute accessor is shorter than availability");return Array.from({length:r},(i,o)=>Number(t[n+o]))}function H0(t,e){if(t.constant===1)return e;if(t.constant===0)return 0;let r=U0.get(t);if(!r){let n=(t.explicitBitstream?.byteLength||0)*8;r=new Uint32Array(n+1);for(let i=0;i<n;i++)r[i+1]=r[i]+Number(Jt(t,i));U0.set(t,r)}return r[e]}function X0(t,e){if(!t?.length)return;let r=e.split("?")[0],n=/^gltf-package:\/\/[^/]+\/(.*)$/.exec(r)?.[1],i=t.findIndex(s=>{let a=s.originalUri||s.name;return s.uri===r||!!(a&&(r===a||n===a))});if(i>=0)return{fileIndex:i,files:t};let o=t.findIndex(s=>{let a=s.originalUri||s.name;return!!(a&&(r.endsWith(`/${a}`)||r.endsWith(`:${a}`)))});return o<0?void 0:{fileIndex:o,files:t}}function Z0(t,e){if(!e?.length)return t;if(!t?.length)return e;let r=new Set(e.flatMap(n=>[n.uri,n.originalUri,n.name].filter(Boolean)));return[...e,...t.filter(n=>![n.uri,n.originalUri,n.name].some(i=>i&&r.has(i)))]}function h2(t,e,r,n,i,o,s){let a=H0(t.tileAvailability,i),c=t.tilePropertyRows?.[a],l=Array.isArray(t.contentAvailability)?t.contentAvailability[0]:t.contentAvailability,h=l&&Jt(l,i)?H0(l,i):-1,u=t.contentPropertyRows?.[h],f=t.tileTemplatePropertyRows?.[a]||c,d=t.contentTemplatePropertyRows?.[h]||u,m={...f,...d},_=W0(t.tileAttributes,a,"tile"),p=W0(t.contentAttributes,h,"content"),y=(e.contentUrlTemplates?.length?e.contentUrlTemplates:[e.contentUrlTemplate]).map((v,A)=>{if(!o[A]||!v)return null;let I=Zr(v,n,m);if(/{[^{}]+}/.test(I))throw new Error(`Implicit content URI has unresolved template values: ${I}`);return{contentIndex:A,contentUrl:I}}).filter(v=>!!v),S=y.map(v=>v.contentUrl),x=Z0(e.resourceFiles,t.resourceFiles),E=y.map(({contentIndex:v,contentUrl:A})=>{let I=X0(x,A);return{...e.contentHeaders?.[v]||(v===0?e.contentHeader:{})||{},...p,uri:A,...u?{metadata:{properties:u}}:{},...I?{_resource:I}:{}}}),T=S[0],R=e.rootLodMetricValue/2**n.level,C=_.geometricError??R,O=tf(e.rootBoundingVolume,n,e.subdivisionScheme);return{id:J0(r,n),children:s,contentUrl:T,content:E.length>1?E:E[0],contents:e.useCanonicalContents&&E.length?E:void 0,contentUrls:S,refine:_.refine||e.refine,type:m2(T),lodMetricType:e.lodMetricType,lodMetricValue:C,geometricError:C,boundingVolume:_.boundingVolume||O,transform:_.transform,transformMatrix:_.transform,metadata:c?{properties:c}:void 0,implicitMetadata:Q0(t,c,u),_scaleGeometricError:e.scaleGeometricError!==!1}}function Q0(t,e,r){if(!(!t.propertyTables&&t.tileMetadata===void 0&&!t.contentMetadata&&t.subtreeMetadata===void 0&&!e&&!r))return{propertyTables:t.propertyTables,tileMetadata:t.tileMetadata,contentMetadata:t.contentMetadata,subtreeMetadata:t.subtreeMetadata,tileProperties:e,contentProperties:r}}function J0(t,e){return`${t.subtreeUrl}#implicit=${e.level}/${e.x}/${e.y}/${e.z}`}function Jt(t,e){if(typeof t?.constant=="number")return!!t.constant;let r=t?.explicitBitstream;if(!r)return!1;let n=Math.floor(e/8),i=e%8;return!!(r[n]>>i&1)}function u2(t,e){return(Array.isArray(t)?t:[t]).map(n=>Jt(n||{constant:0},e))}function f2(t,e){return(t**e-1)/(t-1)}function $0(t,e,r){return{level:t.level+1,x:t.x*2+(e&1),y:t.y*2+(e>>1&1),z:r==="OCTREE"?t.z*2+(e>>2&1):0}}function ef(t){return t==="OCTREE"?a2:s2}function tf(t,e,r){if(t.region){let[n,i,o,s,a,c]=t.region,l=2**e.level,u=(o>=n?o-n:o+2*Math.PI-n)/l,f=(s-i)/l,d=Y0(n+u*e.x),m=Y0(n+u*(e.x+1)),_=i+f*e.y,p=a,M=c;if(r==="OCTREE"){let y=(c-a)/l;p=a+y*e.z,M=p+y}return{region:[d,_,m,_+f,p,M]}}if(t.box){if(t.s2VolumeInfo)return d2(t,e,r);if(t.extensions?.["3DTILES_shape_cylinder_region"])return{...t,box:[...t.box]};let n=t.box,i=2**e.level,o=-1+(2*e.x+1)/i,s=-1+(2*e.y+1)/i,a=-1+(2*e.z+1)/i,c=r==="OCTREE";return{box:[...[n[0]+n[3]*o+n[6]*s+(c?n[9]*a:0),n[1]+n[4]*o+n[7]*s+(c?n[10]*a:0),n[2]+n[5]*o+n[8]*s+(c?n[11]*a:0)],n[3]/i,n[4]/i,n[5]/i,n[6]/i,n[7]/i,n[8]/i,c?n[9]/i:n[9],c?n[10]/i:n[10],c?n[11]/i:n[11]]}}throw new Error(`Unsupported implicit 3D Tiles bounding volume: ${JSON.stringify(t)}`)}function d2(t,e,r){let n=t.s2VolumeInfo,i=Xt(n.token),o=Xs(i,e.level,e.x,e.y),s=2**e.level,a=(n.maximumHeight-n.minimumHeight)/s,c={token:Wr(o),minimumHeight:n.minimumHeight+(r==="OCTREE"?a*e.z:0),maximumHeight:n.minimumHeight+(r==="OCTREE"?a*(e.z+1):a*s)},l=t.extensions?{...t.extensions}:void 0;return l?.["3DTILES_bounding_volume_S2"]&&(l["3DTILES_bounding_volume_S2"]=c),l?.["3DTILES_shape_s2"]&&(l["3DTILES_shape_s2"]=c),{...t,...l?{extensions:l}:{},s2VolumeInfo:c,box:Ri(c)}}function Y0(t){let e=t;for(;e>Math.PI;)e-=2*Math.PI;for(;e<-Math.PI;)e+=2*Math.PI;return e}function m2(t){if(!t)return Ke.EMPTY;let e=t.split("?")[0].split(".").pop()?.toLowerCase();switch(e){case"pnts":return Ke.POINTCLOUD;case"i3dm":case"b3dm":case"glb":case"gltf":return Ke.SCENEGRAPH;default:return e||Ke.EMPTY}}function p2(t){if(t.subdivisionScheme!=="QUADTREE"&&t.subdivisionScheme!=="OCTREE")throw new Error(`Unsupported implicit subdivision scheme: ${t.subdivisionScheme}`);if(!Number.isInteger(t.subtreeLevels)||t.subtreeLevels<1)throw new Error("Implicit subtreeLevels must be a positive integer");if(!Number.isInteger(t.maximumLevel)||t.maximumLevel<0)throw new Error("Implicit availableLevels must describe at least the root level")}var g2={draco:!1,meshopt:!1,dds:!1,ktx2:!1},_2=32,Ai=class{type=he.TILES3D;loader;url;basePath;tileset=null;loadOptions;coreApi;contentFormats={...g2};asset;properties;extras;credits;metadata;queryParams={};tileUrlCache=new Map;tileContentHeaders=new WeakMap;packageNamespaces=new WeakMap;nextPackageNamespace=0;implicitSubtreeCache;implicitTilingStats={requestedSubtrees:0,loadedSubtrees:0,cacheHits:0,materializedTiles:0};destroyed=!1;extensionsUsed=[];resolver;rootTileset;spatialTransformer;preparedRootHeader;constructor(e,r={}){let n=M2(e);this.rootTileset=nf(e)?null:e,this.tileset=this.rootTileset,this.loader=n.loader,this.url=n.url,this.basePath=n.basePath||be.dirname(n.url),this.resolver=n.resolver,this.coreApi=n.coreApi,this.loadOptions=r;let i=Number(r["3d-tiles"]?.maximumCachedSubtrees),o=Number.isFinite(i)?Math.max(0,Math.floor(i)):_2;this.implicitSubtreeCache=new fr({maxEntries:o})}destroy(){this.destroyed=!0,this.tileUrlCache.clear(),this.implicitSubtreeCache.clear()}async initialize(){if(!this.rootTileset){let e=this.loadOptions[this.loader.id]||{};this.rootTileset=await this.loadRootData(this.url,{...this.loadOptions,[this.loader.id]:{...e,isTileset:!0}})}if(this.tileset=this.rootTileset,this.rootTileset.queryString){let e=new URLSearchParams(this.rootTileset.queryString);for(let[r,n]of e.entries())this.setQueryParameter(r,n)}if(this.asset=this.rootTileset.asset,!this.asset)throw new Error("Tileset must have an asset property.");if(this.rootTileset.formatVersion!=="2.0-draft"&&this.asset.version!=="0.0"&&this.asset.version!=="1.0"&&this.asset.version!=="1.1")throw new Error("The tileset must be 3D Tiles version 0.0, 1.0, 1.1, or 2.0-draft.");"tilesetVersion"in this.asset&&this.setQueryParameter("v",this.asset.tilesetVersion),this.properties=this.rootTileset.properties,this.extras=this.rootTileset.extras,this.credits={attributions:[]},this.extensionsUsed.splice(0,this.extensionsUsed.length,...this.rootTileset.extensionsUsed||[]),this.metadata={type:this.type,loader:this.loader,url:this.url,basePath:this.basePath,tileset:this.rootTileset,lodMetricType:this.rootTileset.lodMetricType,lodMetricValue:this.rootTileset.lodMetricValue,refine:this.rootTileset.root?.refine,spatialReference:ri(this.rootTileset)}}getMetadata(){if(!this.metadata)throw new Error("Tiles3DSource has not been initialized");return this.metadata}async getRootTileset(){return this.getMetadata().tileset}async prepareTileset(e){let r=e.spatialReference;if(r.status==="unresolved")throw new Error(r.warnings[0]||"3D Tiles spatial operations cannot be resolved from the supplied metadata and options");r.status!=="transformable"&&r.status!=="transformed"||(this.spatialTransformer||=new Mt(r,e.options.spatial),e.spatialReference=Ft(r),this.preparedRootHeader=this.transformTileHeader(this.getMetadata().tileset.root,new G))}initializeTileHeaders(e,r,n){let i=n?r.root:this.preparedRootHeader||r.root,o=new Pe(e,i,n||void 0);n&&(n.children.push(o),o.depth=n.depth+1);let s=[o];for(;s.length>0;){let a=s.pop();e.stats.get("Tiles In Tileset(s)").incrementCount();let c=a.header.children||[];for(let l of c){let h=new Pe(e,l,a);if(h.contentUrl?.includes("?session=")){let f=new URL(h.contentUrl).searchParams.get("session");f&&this.setQueryParameter("session",f)}a.children.push(h),h.depth=a.depth+1,s.push(h)}}return o}createTraverser(e){return new ei(e)}async loadTileContent(e){let r=(e.contentUrls||[e.contentUrl]).filter(Boolean),n=this.tileContentHeaders.get(e),i=n||(Array.isArray(e.header?.content)?e.header.content:e.header?.content?[e.header.content]:[]);n||this.tileContentHeaders.set(e,i);let o=this.loadOptions[this.loader.id]||{},s={...this.loadOptions,[this.loader.id]:{...o,isTileset:"auto",assetGltfUpAxis:this.asset&&this.asset.gltfUpAxis||"Y",_tilesetOptions:{spatialReference:e.header?._spatialReference||e.tileset?.spatialReference,spatialOptions:e.tileset?.options.spatial,spatialTransform:e.header?._spatialTransform}}},a=await Promise.all(r.map((l,h)=>{let u=i[h]||{},f=u.extensions?.["3DTILES_content_gltf_vector"],d=u._vectorContent||(f?.vector===!0?{clip:f.clip===!0}:void 0),m=d?{...s,[this.loader.id]:{...s[this.loader.id],vectorContent:d}}:s;return this.loadContentResource(this.getTileUrl(l),u._resource,m)}));e.contents=a,e.content=a[0]||null;let c=a.filter(l=>l?.shape==="tileset3d");return{loaded:!0,contents:a,nestedTileset:c[0],nestedTilesets:c}}transformTileHeader(e,r=new G){return this.spatialTransformer?this.transformTileHeaderWithTransformer(e,this.spatialTransformer,r):e}transformTileHeaderWithTransformer(e,r,n,i){let o=e.transform?new G(e.transform):new G,s=new G(n).multiplyRight(o),a=Array.isArray(e.content)?e.content.map(c=>this.transformContentHeader(c,s,r)):e.content?this.transformContentHeader(e.content,s,r):e.content;return{...e,transform:void 0,boundingVolume:e.boundingVolume?r.transformBoundingVolume(e.boundingVolume,s):e.boundingVolume,_spatialReference:i,_spatialTransform:s.toArray(),content:a,children:Array.isArray(e.children)?e.children.map(c=>this.transformTileHeaderWithTransformer(c,r,s,i)):e.children}}transformContentHeader(e,r,n){return{...e,boundingVolume:e.boundingVolume?n.transformBoundingVolume(e.boundingVolume,r):e.boundingVolume}}async loadTileChildren(e,r){let n=e.header.implicitSubtree;if(!n)return{loaded:!1,tileCount:0,childSubtreeCount:0};let i=this.getTileUrl(n.subtreeUrl),o=await this.loadImplicitSubtreeResource(i,n.resource);if(this.destroyed||e.isDestroyed())return{loaded:!1,tileCount:0,childSubtreeCount:0};let s=Ci(o,{...n,subtreeUrl:i}),a=e.header._spatialReference,c=a?new Mt(a,e.tileset.options.spatial):this.spatialTransformer,l=c?this.transformTileHeaderWithTransformer(s.root,c,new G,a):s.root;e.applyImplicitSubtreeHeader(l);let h=this.initializeMaterializedChildren(e.tileset,e,l.children);return this.implicitTilingStats.loadedSubtrees++,this.implicitTilingStats.materializedTiles+=h,{loaded:!0,tileCount:s.tileCount,childSubtreeCount:s.childSubtreeCount}}async loadTileChildrenForTraversal(e,r){rf(r);let n=await this.loadTileChildren(e,{});return rf(r),n}getImplicitTilingStats(){return{...this.implicitTilingStats,cachedSubtrees:this.implicitSubtreeCache.size-this.implicitSubtreeCache.pendingSize,pendingSubtrees:this.implicitSubtreeCache.pendingSize}}getTileUrl(e){if(e.startsWith("data:"))return e;let r=this.tileUrlCache.get(e);if(r)return r;if(!Object.keys(this.queryParams).length)return this.tileUrlCache.set(e,e),e;let[n,i=""]=e.split("?"),o=new URLSearchParams(i);for(let[c,l]of Object.entries(this.queryParams))o.has(c)||o.set(c,l);let s=o.toString(),a=s?`${n}?${s}`:n;return this.tileUrlCache.set(e,a),a}setQueryParameter(e,r){this.queryParams[e]!==r&&(this.queryParams[e]=r,this.tileUrlCache.clear())}getViewState(e){if(!e)return{asset:this.asset,properties:this.properties,extras:this.extras,credits:this.credits};let{center:r}=e.boundingVolume,n;return r&&(r[0]!==0||r[1]!==0||r[2]!==0)?(n=new g,N.WGS84.cartesianToCartographic(r,n)):n=new g(0,0,-N.WGS84.radii[0]),{asset:this.asset,properties:this.properties,extras:this.extras,credits:this.credits,boundingVolume:e.boundingVolume,cartographicCenter:n,cartesianCenter:r,zoom:Vl(e.boundingVolume,n)}}hasExtension(e){return this.extensionsUsed.includes(e)}onTileLoaded(e,r,n){let o=(r.contents.length?r.contents:[r.content]).flatMap(a=>a?.gltf?.extensionsRemoved||[]);o.includes("KHR_draco_mesh_compression")&&(this.contentFormats.draco=!0),o.includes("EXT_meshopt_compression")&&(this.contentFormats.meshopt=!0),o.includes("KHR_texture_basisu")&&(this.contentFormats.ktx2=!0);let s=n.nestedTilesets||(n.nestedTileset?[n.nestedTileset]:[]);for(let a of s)e._initializeTileHeaders(this.prepareNestedTileset(e,a),r)}prepareNestedTileset(e,r){let n=r.spatialMetadata,i=e.spatialReference;if(n?.status==="unresolved"||n?.crs.state==="unknown")throw new Error(n.warnings[0]||"Nested 3D Tiles CRS is explicitly unresolved and cannot be placed in the parent frame");if(!n||!n.sourceCrs)return this.spatialTransformer&&(i.status==="transformable"||i.status==="transformed")?{...r,spatialMetadata:i,root:this.transformTileHeaderWithTransformer(r.root,this.spatialTransformer,new G,i)}:ea(r,i);let o=i.coordinateEpoch,s=n.coordinateEpoch;if(o!==void 0&&s!==void 0&&o!==s)throw new Error(`Nested 3D Tiles coordinate epoch ${s} differs from parent epoch ${o}; epoch-aware transformation is unavailable`);let a=i.targetCrs||i.sourceCrs;if(!a)return ea(r,n);let c=wt(n,{...e.options.spatial,outputCoordinates:"target-crs",targetCrs:a});if(c.status==="unresolved")throw new Error(c.warnings[0]||"Nested 3D Tiles CRS cannot be resolved in the parent output frame");if(c.status==="native")return ea(r,c);let l=new Mt(c,e.options.spatial);return{...r,spatialMetadata:c,root:this.transformTileHeaderWithTransformer(r.root,l,new G,c)}}async loadWithCoreApi(e,r,n=this.loader){if(!this.coreApi)throw new Error("Tiles3DSource requires an injected coreApi to load tileset data");return await this.coreApi.load(e,n,r)}async loadRootData(e,r){return this.resolver?await this.resolver.loadRoot(e,this.loader,r):await this.loadWithCoreApi(e,r)}async loadResourceData(e,r,n=this.loader){return this.resolver?await this.resolver.loadResource(e,n,r):await this.loadWithCoreApi(e,r,n)}async loadContentResource(e,r,n){if(!r)return await this.loadResourceData(e,n);let i=r.files[r.fileIndex];if(!i)throw new Error(`3D Tiles package references missing file ${r.fileIndex}`);if(i.uri)return await this.loadResourceData(this.getTileUrl(i.uri),n);if(!this.coreApi)throw new Error("Tiles3DSource requires an injected coreApi to parse embedded package data");let o=await this.getPackageFileData(i),a=`gltf-package://${this.getPackageNamespace(r.files)}/${r.fileIndex}`,c=i.name||"content",l=c.lastIndexOf("/"),h=l>=0?`${a}/${c.slice(0,l)}`:a;return await this.coreApi.parse(o,this.loader,n,{url:`${a}/${c}`,filename:c,baseUrl:h,loaders:[this.loader],coreApi:this.coreApi,_parse:this.coreApi.parse,_tiles3dPackageFiles:r.files,fetch:async(u,f)=>{let d=u.startsWith(`${a}/`)?u.slice(a.length+1):u,m=r.files.find(p=>p.name===d||p.originalUri===d);if(!m)throw new Error(`3D Tiles glTF package does not contain file ${d}`);if(m.uri)return await this.coreApi.fetchFile(this.getTileUrl(m.uri),f);let _=await this.getPackageFileData(m);return new Response(_,{headers:{"content-type":m.mimeType}})}})}getPackageNamespace(e){let r=this.packageNamespaces.get(e);if(r!==void 0)return r;let n=this.nextPackageNamespace++;return this.packageNamespaces.set(e,n),n}async getPackageFileData(e){if(e.data)return Pn(e.data,e.byteOffset,e.byteLength);if(e.bufferUri&&this.coreApi){let r=await this.coreApi.fetchFile(this.getTileUrl(e.bufferUri));if(!r.ok)throw new Error(`Failed to fetch 3D Tiles package buffer: HTTP ${r.status}`);let n=await r.arrayBuffer();return Pn(n,e.byteOffset,e.byteLength)}throw new Error("3D Tiles package file has no available byte source")}async loadImplicitSubtreeResource(e,r){let n=this.implicitSubtreeCache.get(e);if(n)return this.implicitTilingStats.cacheHits++,await n;this.implicitTilingStats.requestedSubtrees++;let i=this.loadOptions[this.loader.id]||{};return await this.implicitSubtreeCache.getOrLoad(e,async()=>{let o={...this.loadOptions,[this.loader.id]:{...i,isTileset:!1,isSubtree:!0}};return await(r?this.loadContentResource(e,r,o):this.loadResourceData(e,o))})}initializeMaterializedChildren(e,r,n){let i=0,o=[{parentTile:r,childHeaders:n}];for(;o.length>0;){let s=o.pop();for(let a of s.childHeaders){let c=new Pe(e,a,s.parentTile);s.parentTile.children.push(c),c.depth=s.parentTile.depth+1,e.stats.get("Tiles In Tileset(s)").incrementCount(),i++,a.children?.length&&o.push({parentTile:c,childHeaders:a.children})}}return i}};function rf(t){if(t?.aborted)throw t.reason??new DOMException("The operation was aborted","AbortError")}function nf(t){return!!(t&&typeof t=="object"&&"url"in t&&"loader"in t&&!("type"in t))}function M2(t){return nf(t)?{...t,basePath:t.basePath||be.dirname(t.url)}:{url:t.url,loader:t.loader,basePath:t.basePath||be.dirname(t.url),resolver:t.resolver,coreApi:t.coreApi}}function ea(t,e){let r=n=>({...n,_spatialReference:e,children:Array.isArray(n.children)?n.children.map(r):n.children});return{...t,spatialMetadata:e,root:r(t.root)}}var Ii=class{frameNumberMap=new Map;register(e,r){let n=this.frameNumberMap.get(e)||new Map,i=n.get(r)||0;n.set(r,i+1),this.frameNumberMap.set(e,n)}deregister(e,r){let n=this.frameNumberMap.get(e);if(!n)return;let i=n.get(r)||1;n.set(r,i-1)}isZero(e,r){return(this.frameNumberMap.get(e)?.get(r)||0)===0}};var ta={REQUESTED:"REQUESTED",COMPLETED:"COMPLETED",ERROR:"ERROR"},Oi=class{_statusMap;pendingTilesRegister=new Ii;constructor(){this._statusMap={}}add(e,r,n,i){if(!this._statusMap[r]){let{frameNumber:o,viewport:{id:s}}=i;this._statusMap[r]={request:e,callback:n,key:r,frameState:i,status:ta.REQUESTED},this.pendingTilesRegister.register(s,o),e().then(a=>{this._statusMap[r].status=ta.COMPLETED;let{frameNumber:c,viewport:{id:l}}=this._statusMap[r].frameState;this.pendingTilesRegister.deregister(l,c),this._statusMap[r].callback(a,i)}).catch(a=>{this._statusMap[r].status=ta.ERROR;let{frameNumber:c,viewport:{id:l}}=this._statusMap[r].frameState;this.pendingTilesRegister.deregister(l,c),n(a)})}}update(e,r){if(this._statusMap[e]){let{frameNumber:n,viewport:{id:i}}=this._statusMap[e].frameState;this.pendingTilesRegister.deregister(i,n);let{frameNumber:o,viewport:{id:s}}=r;this.pendingTilesRegister.register(s,o),this._statusMap[e].frameState=r}}find(e){return this._statusMap[e]}hasPendingTiles(e,r){return!this.pendingTilesRegister.isZero(e,r)}};var Ni=class extends Xe{_tileManager;constructor(e){super(e),this._tileManager=new Oi}traversalFinished(e){return!this._tileManager.hasPendingTiles(e.viewport.id,this._frameNumber||0)}shouldRefine(e,r){return e._lodJudge=Jn(e,r),e._lodJudge==="DIG"}updateChildTiles(e,r){let n=e.header.children||[],i=e.children;for(let o of n){let s=`${o.id}-${r.viewport.id}`,a=i&&i.find(c=>c.id===s||c.header?.id===o.id);if(a)a&&this.updateTile(a,r);else{let c=()=>this._loadTile(e,o.id,r);this._tileManager.find(s)?this._tileManager.update(s,r):this._tileManager.add(c,s,h=>this._onTileLoad(h,e,s),r)}}return!1}async _loadTile(e,r,n){if(!e.tileset.source.loadChildTileHeader)throw new Error("I3S source does not support child tile header loading");return await e.tileset.source.loadChildTileHeader(e,r,n)}_onTileLoad(e,r,n){if(e instanceof Error){r.tileset._onSourceError(e,r);return}let i=new Pe(r.tileset,e,r,n);r.children.push(i);let o=this._tileManager.find(i.id).frameState;this.updateTile(i,o),this._frameNumber===o.frameNumber&&(this.traversalFinished(o)||new Date().getTime()-this.lastUpdate>this.updateDebounceTime)&&this.executeTraversal(i,o)}};var tr=class{spatialReference;targetCoordinateFrame;positionTransformer;sourceToGeographicTransformer;geographicToTargetTransformer;sourceCoordinateFrame;sourceVerticalUnitScale;elevationMode;elevationOffset;elevationProvider;providerUnitScale;providerHeightTransformer;constructor(e,r={}){if(e.status!=="transformable"&&e.status!=="transformed")throw new Error("I3SSpatialTransformer requires a requested, transformable spatial output");let n=e.targetCrs||e.sourceCrs;if(!n)throw new Error("I3S spatial transformation requires a target CRS");if(this.positionTransformer=new Be(e,r),this.sourceCoordinateFrame=e.coordinateFrame,this.sourceVerticalUnitScale=e.verticalUnitScale,this.elevationMode=e.elevationMode,this.elevationOffset=(e.elevationOffset||0)*e.elevationUnitScale,this.elevationProvider=y2(this.elevationMode,r),this.elevationProvider&&(typeof this.elevationProvider.sampleElevations!="function"||typeof this.elevationProvider.getElevationRange!="function"))throw new Error("An I3S elevation provider must implement sampleElevations() and getElevationRange()");let i=Er(this.elevationProvider?.unit||"meter");if(this.elevationProvider&&i===void 0)throw new Error(`Unsupported elevation-provider unit ${this.elevationProvider.unit}`);this.providerUnitScale=i||1,this.targetCoordinateFrame=_e(n),this.spatialReference=Ft(e);let o=ve({sourceCrs:e.sourceCrs,heightReference:e.heightReference,coordinateFrame:e.coordinateFrame,axisOrder:e.axisOrder,provenance:e.provenance},{targetCrs:"EPSG:4326"});if(this.sourceToGeographicTransformer=new Be(o),er(this.elevationMode)){if(!this.elevationProvider){let c=this.elevationMode==="relativeToScene"?"scene":"terrain";throw new Error(`I3S elevation mode ${this.elevationMode} requires a ${c} elevation provider`)}if(e.heightReference==="unknown")throw new Error(`I3S elevation mode ${this.elevationMode} requires a known source height reference`);let a=this.elevationProvider.heightReference||e.heightReference;if(a!==e.heightReference){if(e.heightReference!=="ellipsoidal"&&e.heightReference!=="orthometric")throw new Error("Converting elevation-provider heights requires an ellipsoidal or orthometric source height reference");let c=ve({sourceCrs:"EPSG:4326",heightReference:a,coordinateFrame:"geographic",axisOrder:"xyz",provenance:"caller-override"},{targetCrs:"EPSG:4326",targetHeightReference:e.heightReference,geoidModel:r.geoidModel});this.providerHeightTransformer=new Be(c,r)}}let s=ve({sourceCrs:"EPSG:4326",heightReference:e.heightReference,coordinateFrame:"geographic",axisOrder:"xyz",provenance:"format-default"},{targetCrs:n,targetHeightReference:e.targetHeightReference,geoidModel:r.geoidModel});this.geographicToTargetTransformer=new Be(s,r)}transformPosition(e){let r=this.placeSourcePositionsSync(e),n=this.positionTransformer.transformPosition([r[0],r[1],r[2]]);return[n[0],n[1],n[2]]}async transformPositionAsync(e){let r=await this.placeSourcePositions(e),n=this.positionTransformer.transformPosition([r[0],r[1],r[2]]);return[n[0],n[1],n[2]]}transformPlacedPosition(e){let r=this.positionTransformer.transformPosition([e[0],e[1],e[2]]);return[r[0],r[1],r[2]]}transformSourcePositionToGeographic(e){let r=this.placeSourcePositionsSync(e),n=this.sourceToGeographicTransformer.transformPosition([r[0],r[1],r[2]]);return[n[0],n[1],n[2]]}async transformSourcePositionToGeographicAsync(e){let r=await this.placeSourcePositions(e),n=this.sourceToGeographicTransformer.transformPosition([r[0],r[1],r[2]]);return[n[0],n[1],n[2]]}transformPositions(e,r){let n=this.placeSourcePositionsSync(e),i=this.placeSourcePositionsSync(r);return this.transformPlacedPositions(n,i)}async transformPositionsAsync(e,r){let n=new Float64Array(e.length+3);n.set(Array.from(e),0),n.set(Array.from(r).slice(0,3),e.length);let i=await this.placeSourcePositions(n);return this.transformPlacedPositions(i.subarray(0,e.length),i.subarray(e.length))}transformPlacedPositions(e,r){let n=this.transformPlacedPosition(r),i=new Float32Array(e.length),o=Float64Array.from(e);for(let c=0;c<e.length;c+=3){let l=this.transformPlacedPosition([e[c],e[c+1],e[c+2]]);i[c]=l[0]-n[0],i[c+1]=l[1]-n[1],i[c+2]=l[2]-n[2]}let s=this.targetCoordinateFrame==="geographic",a=s?new G:new G().translate(n);return{positions:i,sourcePositions:o,origin:n,cartographicOrigin:s?n:[0,0,0],coordinateSystem:s?"lnglat-offsets":"cartesian",modelMatrix:a}}transformNormals(e,r,n="earth-centered"){let i=new Float32Array(e.length);for(let o=0;o<e.length;o+=3){let s=this.sourceToGeographicTransformer.transformPosition([r[o],r[o+1],r[o+2]]),a=new g([e[o],e[o+1],e[o+2]]).normalize(),c=n==="earth-centered"?a:lf(a,s),l=this.transformEcefNormal(c,s);i.set(l,o)}return i}transformBoundingVolume(e){let n=this.getGeographicBoundSamples(e).map(i=>this.geographicToTargetTransformer.transformPosition(i));return this.targetCoordinateFrame==="geographic"?{region:yt(n)}:{box:Rt(n)}}async transformBoundingVolumeAsync(e){let n=(await this.getGeographicBoundSamplesAsync(e)).map(i=>this.geographicToTargetTransformer.transformPosition(i));return this.targetCoordinateFrame==="geographic"?{region:yt(n)}:{box:Rt(n)}}transformBoundingVolumeToGeographic(e){return{region:yt(this.getGeographicBoundSamples(e))}}async transformBoundingVolumeToGeographicAsync(e){return{region:yt(await this.getGeographicBoundSamplesAsync(e))}}transformBoundingVolumeToGeocentric(e){let r=this.getGeographicBoundSamples(e).map(n=>Array.from(N.WGS84.cartographicToCartesian(new g(n))));return{box:Rt(r)}}async transformBoundingVolumeToGeocentricAsync(e){let r=(await this.getGeographicBoundSamplesAsync(e)).map(n=>Array.from(N.WGS84.cartographicToCartesian(new g(n))));return{box:Rt(r)}}transformBoundingSphereToGeographic(e){let r=e.mbs?.length?Array.from(e.mbs).slice(0,3):e.obb?Array.from(e.obb.center).slice(0,3):null;if(!r)throw new Error("I3S spatial transformation requires an MBS or OBB bound");let n=this.placeSourcePositionsSync(r),i=this.sourceToGeographicTransformer.transformPosition(Array.from(n)),o=e.mbs?.length?e.mbs[3]:Math.hypot(...Array.from(e.obb.halfSize).slice(0,3));return[i[0],i[1],i[2],o]}async transformBoundingSphereToGeographicAsync(e){return of(await this.getGeographicBoundSamplesAsync(e))}async transformBoundsAsync(e){let r=await this.getGeographicBoundSamplesAsync(e),n=r.map(o=>Array.from(N.WGS84.cartographicToCartesian(new g(o)))),i=r.map(o=>this.geographicToTargetTransformer.transformPosition(o));return{boundingVolume:{box:Rt(n)},spatialBoundingVolume:this.targetCoordinateFrame==="geographic"?{region:yt(i)}:{box:Rt(i)},i3sLodMbs:er(this.elevationMode)?of(r):this.transformBoundingSphereToGeographic(e)}}async transformPointCloudBoundsAsync(e){let r=await this.getGeographicBoundSamplesAsync(e),n=r.map(i=>this.geographicToTargetTransformer.transformPosition(i));return{boundingVolume:{region:yt(r)},spatialBoundingVolume:this.targetCoordinateFrame==="geographic"?{region:yt(n)}:{box:Rt(n)}}}getGeographicBoundSamples(e){let r=sf(e,this.sourceCoordinateFrame,this.sourceToGeographicTransformer,this.sourceVerticalUnitScale);if(!r.length)throw new Error("I3S spatial transformation requires an MBS or OBB bound");let n=this.placeSourcePositionsSync(r.flat(),!0),i=ra(n);return this.sourceCoordinateFrame==="geographic"?i:i.map(o=>this.sourceToGeographicTransformer.transformPosition(o))}async getGeographicBoundSamplesAsync(e){let r=sf(e,this.sourceCoordinateFrame,this.sourceToGeographicTransformer,this.sourceVerticalUnitScale);if(!r.length)throw new Error("I3S spatial transformation requires an MBS or OBB bound");if(er(this.elevationMode)){let i=this.sourceCoordinateFrame==="geographic"?r:r.map(o=>this.sourceToGeographicTransformer.transformPosition(o));return await this.placeGeographicBoundSamples(i)}let n=ra(await this.placeSourcePositions(r.flat(),!0));return this.sourceCoordinateFrame==="geographic"?n:n.map(i=>this.sourceToGeographicTransformer.transformPosition(i))}async placeGeographicBoundSamples(e){let n=await this.elevationProvider.getElevationRange(x2(e)),i=n.minimum*this.providerUnitScale,o=n.maximum*this.providerUnitScale;if(!Number.isFinite(i)||!Number.isFinite(o)||i>o)throw new Error("Elevation provider returned an invalid range; minimum and maximum must be finite and ordered");let s=e.map(h=>h[2]),a=Math.min(...s),c=Math.max(...s),l=[];for(let[h,u]of e){let f=this.providerHeightTransformer?this.providerHeightTransformer.transformPosition([h,u,i])[2]:i,d=this.providerHeightTransformer?this.providerHeightTransformer.transformPosition([h,u,o])[2]:o,m=Math.min(f,d),_=Math.max(f,d),p=this.elevationMode==="onTheGround"?m:m+a+this.elevationOffset,M=this.elevationMode==="onTheGround"?_:_+c+this.elevationOffset;l.push([h,u,p],[h,u,M])}return l}placeSourcePositionsSync(e,r=!1){if(er(this.elevationMode))throw new Error(`I3S elevation mode ${this.elevationMode} requires asynchronous surface placement`);let n=Float64Array.from(e),i=this.elevationMode==="absoluteHeight"?this.elevationOffset:0;for(let o=2;o<n.length;o+=3)n[o]=n[o]*(r?1:this.sourceVerticalUnitScale)+i;return n}async placeSourcePositions(e,r=!1){if(!er(this.elevationMode))return this.placeSourcePositionsSync(e,r);let n=Float64Array.from(e),i=ra(n).map(s=>{let a=this.sourceToGeographicTransformer.transformPosition(s);return[a[0],a[1]]}),o=await this.elevationProvider.sampleElevations(i);if(o.length!==i.length)throw new Error(`Elevation provider returned ${o.length} heights for ${i.length} positions`);for(let s=0;s<i.length;s++){let a=o[s]*this.providerUnitScale;if(!Number.isFinite(a))throw new Error(`Elevation provider returned a non-finite height at index ${s}`);let[c,l]=i[s],h=this.providerHeightTransformer?this.providerHeightTransformer.transformPosition([c,l,a])[2]:a,u=n[s*3+2]*(r?1:this.sourceVerticalUnitScale);n[s*3+2]=this.elevationMode==="onTheGround"?h:h+u+this.elevationOffset}return n}transformEcefNormal(e,r){if(this.targetCoordinateFrame==="geocentric")return e.normalize();if(this.targetCoordinateFrame==="geographic")return w2(e,r).normalize();let n=N.WGS84.cartographicToCartesian(new g(r)),i=[];for(let s of S2()){let a=N.WGS84.cartesianToCartographic(new g(n).add(s)),c=N.WGS84.cartesianToCartographic(new g(n).subtract(s)),l=this.geographicToTargetTransformer.transformPosition(a),h=this.geographicToTargetTransformer.transformPosition(c);i.push((l[0]-h[0])/2,(l[1]-h[1])/2,(l[2]-h[2])/2)}let o=new W(i);if(Math.abs(o.determinant())<1e-12)throw new Error("Cannot transform an I3S normal through a singular local projection");return o.invert().transpose(),new g(e).transformByMatrix3(o).normalize()}};function y2(t,e){return t==="relativeToScene"?e.sceneElevationProvider:er(t)?e.terrainElevationProvider:void 0}function er(t){return t==="onTheGround"||t==="relativeToGround"||t==="relativeToScene"}function ra(t){if(t.length%3!==0)throw new Error("I3S position arrays must contain complete XYZ tuples");let e=[];for(let r=0;r<t.length;r+=3)e.push([t[r],t[r+1],t[r+2]]);return e}function x2(t){let e=yt(t);return{west:e[0]*180/Math.PI,south:e[1]*180/Math.PI,east:e[2]*180/Math.PI,north:e[3]*180/Math.PI}}function of(t){if(!t.length)throw new Error("I3S spatial transformation requires at least one bound sample");let e=t.map(o=>N.WGS84.cartographicToCartesian(new g(o))),r=new g;for(let o of e)r.add(o);r.scale(1/e.length);let n=0;for(let o of e)n=Math.max(n,new g(o).subtract(r).magnitude());let i=N.WGS84.cartesianToCartographic(r);return[i[0],i[1],i[2],n]}function sf(t,e,r,n){let i=t.obb;if(i){let c=Array.from(i.center).slice(0,3);c[2]*=n;let l=Array.from(i.halfSize).slice(0,3),h=new Ne().fromArray(Array.from(i.quaternion)),u=[new g([l[0],0,0]).transformByQuaternion(h),new g([0,l[1],0]).transformByQuaternion(h),new g([0,0,l[2]]).transformByQuaternion(h)];if(e==="geographic"){let f=r.transformPosition(c),d=N.WGS84.cartographicToCartesian(new g(f)),m=t.normalReferenceFrame==="vertex-reference-frame"?u.map(_=>lf(_,f)):u;return af().map(_=>{let p=new g(d);for(let M=0;M<3;M++)p.add(new g(m[M]).scale(_[M]));return Array.from(N.WGS84.cartesianToCartographic(p))})}return af().map(f=>{let d=new g(c);for(let m=0;m<3;m++)d.add(new g(u[m]).scale(f[m]));return Array.from(d)})}let o=t.mbs?Array.from(t.mbs):[];if(o.length<4)return[];let s=o.slice(0,3);s[2]*=n;let a=o[3];if(e==="geographic"){let c=r.transformPosition(s),l=N.WGS84.cartographicToCartesian(new g(c));return cf().map(h=>Array.from(N.WGS84.cartesianToCartographic(new g(l).add(new g(h).scale(a)))))}return cf().map(c=>Array.from(new g(s).add(new g(c).scale(a))))}function af(){return[-1,1].flatMap(t=>[-1,1].flatMap(e=>[-1,1].map(r=>[t,e,r])))}function cf(){return[[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]]}function S2(){return[new g([1,0,0]),new g([0,1,0]),new g([0,0,1])]}function lf(t,e){let r=e[0]*Math.PI/180,n=e[1]*Math.PI/180,i=new g([-Math.sin(r),Math.cos(r),0]),o=new g([-Math.sin(n)*Math.cos(r),-Math.sin(n)*Math.sin(r),Math.cos(n)]),s=new g([Math.cos(n)*Math.cos(r),Math.cos(n)*Math.sin(r),Math.sin(n)]);return i.scale(t[0]).add(o.scale(t[1])).add(s.scale(t[2]))}function w2(t,e){let r=e[0]*Math.PI/180,n=e[1]*Math.PI/180,i=new g([-Math.sin(r),Math.cos(r),0]),o=new g([-Math.sin(n)*Math.cos(r),-Math.sin(n)*Math.sin(r),Math.cos(n)]),s=new g([Math.cos(n)*Math.cos(r),Math.cos(n)*Math.sin(r),Math.sin(n)]);return new g([i.dot(t),o.dot(t),s.dot(t)])}function Rt(t){let e=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0];for(let o of t)for(let s=0;s<3;s++)e[s]=Math.min(e[s],o[s]),r[s]=Math.max(r[s],o[s]);let n=e.map((o,s)=>(o+r[s])/2),i=e.map((o,s)=>(r[s]-o)/2);return[n[0],n[1],n[2],i[0],0,0,0,i[1],0,0,0,i[2]]}function yt(t){let e=t[0][0],r=1/0,n=-1/0,i=1/0,o=-1/0,s=1/0,a=-1/0;for(let c of t){let l=e+na(c[0]-e);r=Math.min(r,l),n=Math.max(n,l),i=Math.min(i,c[1]),o=Math.max(o,c[1]),s=Math.min(s,c[2]),a=Math.max(a,c[2])}return[na(r)*Math.PI/180,i*Math.PI/180,na(n)*Math.PI/180,o*Math.PI/180,s,a]}function na(t){return((t+180)%360+360)%360-180}var E2={draco:!1,meshopt:!1,dds:!1,ktx2:!1},Li=class{type=he.I3S;loader;contentLoader;url;basePath;tileset=null;loadOptions;coreApi;contentFormats={...E2};asset;properties;extras;credits;metadata;queryParams={};resolver;rootTileset;spatialTransformer;preparedRootHeader;constructor(e,r={}){let n=b2(e);this.rootTileset=uf(e)?null:e,this.tileset=this.rootTileset,this.loader=n.loader,this.contentLoader=T2(n.loader),this.url=n.url,this.basePath=n.basePath||be.dirname(n.url),this.resolver=n.resolver,this.coreApi=n.coreApi,this.loadOptions=r,this.initializeQueryParams(r)}async initialize(){this.rootTileset||(this.rootTileset=await this.loadRootData(this.getTileUrl(this.url),this.loadOptions)),this.tileset=this.rootTileset,this.rootTileset.root&&typeof this.rootTileset.root.then=="function"&&(this.rootTileset.root=await this.rootTileset.root),this.metadata={type:this.type,loader:this.loader,url:this.url,basePath:this.basePath,tileset:this.rootTileset,lodMetricType:this.rootTileset.lodMetricType,lodMetricValue:this.rootTileset.lodMetricValue,refine:this.rootTileset.root?.refine,spatialReference:ti(this.rootTileset)}}getMetadata(){if(!this.metadata)throw new Error("I3SSource has not been initialized");return this.metadata}async getRootTileset(){return this.getMetadata().tileset}async prepareTileset(e){let r=e.spatialReference;if(r.status==="unresolved")throw new Error(r.warnings[0]||"I3S spatial operations cannot be resolved from the supplied metadata and options");r.status!=="transformable"&&r.status!=="transformed"||(this.spatialTransformer||=new tr(r,e.options.spatial),e.spatialReference=this.spatialTransformer.spatialReference,this.preparedRootHeader=await this.transformTileHeader(this.getMetadata().tileset.root))}initializeTileHeaders(e,r,n){let i=n?r.root:this.preparedRootHeader||r.root;if(this.spatialTransformer&&!this.preparedRootHeader)throw new Error("I3S spatial root header was not prepared before tile initialization");let o=new Pe(e,i,n||void 0);return n&&(n.children.push(o),o.depth=n.depth+1),o}createTraverser(e){return new Ni(e)}async loadTileContent(e){let r=this.getTileUrl(e.contentUrl),n=this.loader.id,i=this.loadOptions[n]||{},o=this.getMetadata(),s={...this.loadOptions,[n]:{...i,...e.tileset.options.i3s,_tileOptions:{attributeUrls:e.header.attributeUrls,textureUrl:e.header.textureUrl,textureUrls:e.header.textureUrls,textureFormat:e.header.textureFormat,textureLoaderOptions:e.header.textureLoaderOptions,materialDefinition:e.header.materialDefinition,layerType:e.header.layerType,pointRenderer:e.header.pointRenderer,pointSymbol:e.header.pointSymbol,isDracoGeometry:e.header.isDracoGeometry,mbs:e.header.mbs},_tilesetOptions:{store:o.tileset.store,attributeStorageInfo:o.tileset.attributeStorageInfo,fields:o.tileset.fields,spatialReference:e.tileset.spatialReference,spatialOptions:e.tileset.options.spatial},isTileHeader:!1}};e.content=await this.loadResourceData(r,s,this.contentLoader);let a={index:0,uri:e.contentUrl,type:e.header.layerType,payload:e.content,metadata:e.header.metadata||null,boundingVolume:e.boundingVolume,featureIds:e.featureIdSets,renderable:!!e.content};return{loaded:!0,contents:[e.content],contentEntries:[a]}}async loadChildTileHeader(e,r,n){let i=this.getMetadata();if(i.tileset.nodePages||i.tileset.pointNodePages){let l=await i.tileset.nodePagesTile.formTileFromNodePages(r);return await this.transformTileHeader(l)}let o=this.getTileUrl(`${this.url}/nodes/${r}`),s=this.loadOptions.i3s&&typeof this.loadOptions.i3s=="object"?this.loadOptions.i3s:{},a={...this.loadOptions,i3s:{...s,isTileHeader:!0}},c=await this.loadResourceData(o,a);return await this.transformTileHeader(c)}async loadTileChildrenForTraversal(e,r){let n=e.header.children||[],i=0,o=[];for(let a of n){hf(r);let c=a.id;if(typeof c!="string"&&typeof c!="number")throw new Error("I3S child header is missing its node ID");let l=e.children.find(f=>f.id===String(c)||f.header?.id===c);if(l){o.push(l);continue}let h=await this.loadChildTileHeader(e,String(c),null);hf(r);let u=new Pe(e.tileset,h,e,String(c));o.push(u),i++}let s=new Set(o);return e.children=[...o,...e.children.filter(a=>!s.has(a))],{loaded:!0,tileCount:i,childSubtreeCount:0}}getTileUrl(e){if(e.startsWith("data:")||!Object.keys(this.queryParams).length)return e;let r=e.indexOf("#"),n=r>=0?e.slice(r):"",i=r>=0?e.slice(0,r):e,o=i.indexOf("?"),s=o===-1?i:i.slice(0,o),a=o===-1?"":i.slice(o+1),c=new URLSearchParams(a),l=new URLSearchParams;for(let[u,f]of Object.entries(this.queryParams))c.has(u)||l.set(u,f);let h=l.toString();return`${s}${a?`?${a}`:""}${h?`${a?"&":"?"}${h}`:""}${n}`}getViewState(e){if(this.spatialTransformer&&e){let o=new g(e.boundingVolume.center),s=new g(e.header.i3sLodMbs.slice(0,3));return this.spatialTransformer.targetCoordinateFrame==="geographic"?{boundingVolume:e.boundingVolume,cartographicCenter:s,cartesianCenter:o,zoom:1}:{boundingVolume:e.boundingVolume,cartographicCenter:s,cartesianCenter:o,zoom:1}}let r=this.getMetadata(),n=r.tileset.fullExtent;if(n){let{xmin:o,xmax:s,ymin:a,ymax:c,zmin:l,zmax:h}=n,u=new g(o+(s-o)/2,a+(c-a)/2,l+(h-l)/2),f=new g;return N.WGS84.cartographicToCartesian(u,f),{cartographicCenter:u,cartesianCenter:f,zoom:Fo(n,u,f)}}let i=r.tileset.store?.extent;if(i){let[o,s,a,c]=i,l=new g(o+(a-o)/2,s+(c-s)/2,0),h=new g;return N.WGS84.cartographicToCartesian(l,h),{cartographicCenter:l,cartesianCenter:h,zoom:jl(i,l,h)}}return console.warn("Extent is not defined in the tileset header"),{cartographicCenter:new g,zoom:1}}onTileLoaded(e,r){switch(r.header.isDracoGeometry&&(this.contentFormats.draco=!0),r.header.textureFormat){case"dds":this.contentFormats.dds=!0;break;case"ktx2":this.contentFormats.ktx2=!0;break;default:}}getTilesTotalCount(){return this.getMetadata().tileset?.nodePagesTile?.nodesInNodePages||null}async loadWithCoreApi(e,r,n=this.loader){if(!this.coreApi)throw new Error("I3SSource requires an injected coreApi to load tileset data");return await this.coreApi.load(e,n,r)}async loadRootData(e,r){return this.resolver?await this.resolver.loadRoot(e,this.loader,r):await this.loadWithCoreApi(e,r)}initializeQueryParams(e){for(let[n,i]of Object.entries(e.searchParams||{}))this.queryParams[n]=String(i);let r=e.i3s;if(r&&typeof r=="object"&&"token"in r){let n=r.token;typeof n=="string"&&(this.queryParams.token=n)}}async loadResourceData(e,r,n=this.loader){return this.resolver?await this.resolver.loadResource(e,n,r):await this.loadWithCoreApi(e,r,n)}async transformTileHeader(e){if(!this.spatialTransformer)return e;let r={mbs:e.mbs,obb:e.obb,normalReferenceFrame:this.getMetadata().tileset.store?.normalReferenceFrame},n=await this.spatialTransformer.transformBoundsAsync(r);return{...e,boundingVolume:n.boundingVolume,spatialBoundingVolume:n.spatialBoundingVolume,i3sLodMbs:n.i3sLodMbs}}};function hf(t){if(t?.aborted)throw t.reason??new DOMException("The operation was aborted","AbortError")}function T2(t){return t.contentLoader||t}function uf(t){return!!(t&&typeof t=="object"&&"url"in t&&"loader"in t&&!("type"in t))}function b2(t){return uf(t)?{...t,basePath:t.basePath||be.dirname(t.url)}:{url:t.url,loader:t.loader,basePath:t.basePath||be.dirname(t.url),resolver:t.resolver,coreApi:t.coreApi}}var Ct=class{index;parent;children;content;error;id;zoom;userData;boundingBox;_abortController;_loader;_loaderId;_isLoaded;_isCancelled;_needsReload;_bbox;constructor(e){this.index=e,this.parent=null,this.children=[],this.content=null,this.error=null,this._loader=void 0,this._abortController=null,this._loaderId=0,this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1}get bbox(){return this._bbox}set bbox(e){this._bbox||(this._bbox=e,"west"in e?this.boundingBox=[[e.west,e.south],[e.east,e.north]]:this.boundingBox=[[e.left,e.top],[e.right,e.bottom]])}get data(){let e=this._loader;return!this._isCancelled&&e!==void 0?e.then(()=>this.data):this.content}get isLoaded(){return this._isLoaded&&!this._needsReload}get isLoading(){return!!this._loader&&!this._isCancelled}get hasError(){return!!this.error}get needsReload(){return this._needsReload||this._isCancelled}get byteLength(){let e=this.content?this.content.byteLength:0;return Number.isFinite(e)?e:0}async _loadData({getData:e,requestScheduler:r,onLoad:n,onError:i}){let o=(p,M,y)=>{if(y===this._loaderId){if(this._loader=void 0,this.content=p,this.error=M?v2(M):null,this._isCancelled&&!p){this._isLoaded=!1;return}if(this._isLoaded=!0,this._isCancelled=!1,M){i(M,this);return}n(this)}},{index:s,id:a,bbox:c,userData:l,zoom:h}=this,u=this._loaderId;this._abortController=new AbortController;let{signal:f}=this._abortController,d=await r.scheduleRequest(this,()=>1);if(!d){this._isCancelled=!0;return}if(this._isCancelled){d.done();return}let m=null,_;try{m=await e({index:s,id:a,bbox:c,userData:l,zoom:h,signal:f})}catch(p){_=p||!0}finally{d.done()}o(m,_,u)}loadData(e){return this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1,this.error=null,this._loaderId++,this._loader=this._loadData(e),this._loader}setNeedsReload(){this.isLoading&&(this.abort(),this._loader=void 0),this._needsReload=!0}abort(){this.isLoaded||(this._isCancelled=!0,this._abortController?.abort())}};function v2(t){return t instanceof Error?t:typeof t=="string"?new Error(t):new Error("Tile request failed")}var ia="never",oa="no-overlap",Jr="best-available",ff={adapter:null,extent:null,tileSize:512,maxZoom:null,minZoom:null,maxCacheSize:100,maxCacheByteSize:null,refinementStrategy:Jr,zRange:null,maxRequests:6,debounceTime:0,zoomOffset:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{},tileSource:null},Qr=class t{stats;sourceMetadata=null;opts;_requestScheduler;_cache;_dirty;_tiles;_cacheByteSize;_unloadedTileCount;_listeners=new Set;_consumers=new Map;_explicitOptionKeys=new Set;_baseOpts={};_sourceMetadataOverrides={};_maxZoom;_minZoom;_lastTileContext=null;constructor(e){if(this.stats=new Le({id:"Tileset2D",stats:[{name:"Tiles In Cache"},{name:"Cache Size"},{name:"Visible Tiles"},{name:"Selected Tiles"},{name:"Loading Tiles"},{name:"Unloaded Tiles"},{name:"Consumers"}]}),this.opts={...ff,...e,getTileData:e.getTileData||(()=>null),tileSource:e.tileSource},this._requestScheduler=new st({throttleRequests:this.opts.maxRequests>0||this.opts.debounceTime>0,maxRequests:this.opts.maxRequests,debounceTime:this.opts.debounceTime}),this._cache=new Map,this._tiles=[],this._dirty=!1,this._cacheByteSize=0,this._unloadedTileCount=0,!this.opts.tileSource&&!e.getTileData)throw new Error("Tileset2D requires either `getTileData` or `tileSource`.");this.setOptions(e),this._updateStats(),this.opts.tileSource&&this._initializeTileSource(this.opts.tileSource).catch(()=>{})}static fromTileSource(e,r={}){return new t({...r,tileSource:e})}get tiles(){return this._tiles}get cacheByteSize(){return this._cacheByteSize}get selectedTiles(){return Array.from(this._getSelectedTilesUnion())}get visibleTiles(){let e=this._getVisibleTilesUnion();for(let r of this._getSelectedTilesUnion())e.add(r);return Array.from(e)}get loadingTiles(){return Array.from(this._cache.values()).filter(e=>e.isLoading)}get unloadedTiles(){return Array.from(this._cache.values()).filter(e=>!e.isLoaded)}get maxZoom(){return this._maxZoom}get minZoom(){return this._minZoom}get refinementStrategy(){return this.opts.refinementStrategy||Jr}get adapter(){return this.opts.adapter}subscribe(e){return this._listeners.add(e),()=>this._listeners.delete(e)}attachConsumer(e){this._consumers.set(e,{selectedTiles:new Set,visibleTiles:new Set}),this._updateStats()}detachConsumer(e){this._consumers.delete(e),this._pruneRequests(),this._resizeCache(),this._updateStats()}setOptions(e){this._rememberExplicitOptions(e),this._baseOpts={...this._baseOpts,...e};let r=this.opts.maxRequests,n=this.opts.debounceTime;this._applyResolvedOptions(),(r!==this.opts.maxRequests||n!==this.opts.debounceTime)&&(this._requestScheduler=new st({throttleRequests:this.opts.maxRequests>0||this.opts.debounceTime>0,maxRequests:this.opts.maxRequests,debounceTime:this.opts.debounceTime}))}finalize(){for(let e of this._cache.values())e.isLoading&&e.abort();this._cache.clear(),this._tiles=[],this._consumers.clear(),this._cacheByteSize=0,this._unloadedTileCount=0,this._updateStats()}reloadAll(){let e=this._getSelectedTilesUnion();for(let r of this._cache.keys()){let n=this._cache.get(r);n&&!e.has(n)?(this._cache.delete(r),this._handleTileUnload(n),this._dirty=!0):n&&n.setNeedsReload()}this._cacheByteSize=this._getCacheByteSize(),this.prepareTiles(),this._updateStats()}updateConsumer(e,r,n){this._consumers.set(e,{selectedTiles:new Set(r),visibleTiles:new Set(n)}),this._pruneRequests(),this._resizeCache(),this._updateStats()}prepareTiles(){this._dirty&&(this._rebuildTree(),this._syncTiles(),this._dirty=!1)}getTileIndices({viewState:e,maxZoom:r,minZoom:n,zRange:i,modelMatrix:o,modelMatrixInverse:s}){let{adapter:a,tileSize:c,extent:l,zoomOffset:h}=this.opts;if(!a)throw new Error("Tileset2D requires an adapter before tile traversal can be used.");return this._lastTileContext={viewState:e,tileSize:c},a.getTileIndices({viewState:e,maxZoom:r,minZoom:n,zRange:i,tileSize:c,extent:P2(l),modelMatrix:o,modelMatrixInverse:s,zoomOffset:h})}getTileId(e){return`${e.x}-${e.y}-${e.z}`}getTileZoom(e){return e.z}getTileMetadata(e){if(!this._lastTileContext)throw new Error("Tileset2D metadata requested before traversal context was set.");if(!this.opts.adapter)throw new Error("Tileset2D requires an adapter before tile metadata can be derived.");return{bbox:this.opts.adapter.getTileBoundingBox(this._lastTileContext,e)}}getParentIndex(e){return{x:Math.floor(e.x/2),y:Math.floor(e.y/2),z:e.z-1}}getTile(e,r){let n=this.getTileId(e),i=this._cache.get(n),o=!1;return!i&&r?(i=new Ct(e),Object.assign(i,this.getTileMetadata(i.index)),Object.assign(i,{id:n,zoom:this.getTileZoom(i.index)}),o=!0,this._cache.set(n,i),this._dirty=!0,this._updateStats()):i&&i.needsReload&&(o=!0),i&&this._touchTile(n,i),i&&o&&r&&(i.loadData({getData:this.opts.getTileData,requestScheduler:this._requestScheduler,onLoad:this._handleTileLoad.bind(this),onError:this._handleTileError.bind(this)}).catch(()=>{}),this._updateStats()),i}async _initializeTileSource(e){try{this.sourceMetadata=await e.getMetadata(),this._sourceMetadataOverrides=this._getMetadataOverrides(this.sourceMetadata),this._applyResolvedOptions(),this._notifyUpdate()}catch(r){let n=r instanceof Error?r:new Error(`TileSource metadata error: ${String(r)}`);this._notifyError(n)}}_rememberExplicitOptions(e){for(let r of Object.keys(e))this._explicitOptionKeys.add(r)}_applyResolvedOptions(){let e={...ff,...this._sourceMetadataOverrides,...this._baseOpts};if(e.tileSource){let r=e.tileSource;e.getTileData=n=>r.getTileData(n)}this.opts=e,this._maxZoom=typeof this.opts.maxZoom=="number"&&Number.isFinite(this.opts.maxZoom)?Math.floor(this.opts.maxZoom):void 0,this._minZoom=typeof this.opts.minZoom=="number"&&Number.isFinite(this.opts.minZoom)?Math.ceil(this.opts.minZoom):void 0}_getMetadataOverrides(e){if(!e)return{};let r={};return!this._explicitOptionKeys.has("minZoom")&&Number.isFinite(e.minZoom)&&(r.minZoom=e.minZoom),!this._explicitOptionKeys.has("maxZoom")&&Number.isFinite(e.maxZoom)&&(r.maxZoom=e.maxZoom),!this._explicitOptionKeys.has("extent")&&e.boundingBox&&(r.extent=[e.boundingBox[0][0],e.boundingBox[0][1],e.boundingBox[1][0],e.boundingBox[1][1]]),r}_handleTileLoad(e){this.opts.onTileLoad?.(e),this._cacheByteSize=this._getCacheByteSize(),this._resizeCache();for(let r of this._listeners)r.onTileLoad?.(e);this._updateStats()}_handleTileError(e,r){this.opts.onTileError?.(e,r);for(let n of this._listeners)n.onTileError?.(e,r);this._updateStats()}_handleTileUnload(e){this._unloadedTileCount++,this.opts.onTileUnload?.(e);for(let r of this._listeners)r.onTileUnload?.(e);this._updateStats()}_notifyUpdate(){for(let e of this._listeners)e.onUpdate?.()}_notifyError(e){for(let r of this._listeners)r.onError?.(e)}_updateStats(){this._setStatCount("Tiles In Cache",this._cache.size),this._setStatCount("Cache Size",this.cacheByteSize),this._setStatCount("Visible Tiles",this.visibleTiles.length),this._setStatCount("Selected Tiles",this.selectedTiles.length),this._setStatCount("Loading Tiles",this.loadingTiles.length),this._setStatCount("Unloaded Tiles",this._unloadedTileCount),this._setStatCount("Consumers",this._consumers.size);for(let e of this._listeners)e.onStatsChange?.(this.stats)}_setStatCount(e,r){this.stats.get(e).reset().addCount(r)}_getSelectedTilesUnion(){let e=new Set;for(let r of this._consumers.values())for(let n of r.selectedTiles)e.add(n);return e}_getVisibleTilesUnion(){let e=new Set;for(let r of this._consumers.values())for(let n of r.visibleTiles)e.add(n);return e}_touchTile(e,r){this._cache.delete(e),this._cache.set(e,r)}_getCacheByteSize(){let e=0;for(let r of this._cache.values())e+=r.byteLength;return e}_pruneRequests(){let{maxRequests:e=0}=this.opts,r=this._getSelectedTilesUnion(),n=this._getVisibleTilesUnion(),i=[],o=0;for(let s of this._cache.values())s.isLoading&&(o++,!r.has(s)&&!n.has(s)&&i.push(s));for(;e>0&&o>e&&i.length>0;){let s=i.shift();s&&s.abort(),o--}}_rebuildTree(){for(let e of this._cache.values())e.parent=null,e.children&&(e.children.length=0);for(let e of this._cache.values()){let r=this._getNearestAncestor(e);e.parent=r,r?.children&&r.children.push(e)}}_syncTiles(){this._tiles=Array.from(this._cache.values()).sort((e,r)=>e.zoom-r.zoom)}_resizeCache(){let e=this.opts.maxCacheSize??100,r=this.opts.maxCacheByteSize??1/0,n=this._getVisibleTilesUnion(),i=this._getSelectedTilesUnion();if(this._cache.size>e||this._cacheByteSize>r){for(let[s,a]of this._cache)if(!n.has(a)&&!i.has(a)&&(this._cache.delete(s),this._cacheByteSize=this._getCacheByteSize(),this._handleTileUnload(a)),this._cache.size<=e&&this._cacheByteSize<=r)break;this._dirty=!0}this._dirty&&(this._rebuildTree(),this._syncTiles(),this._dirty=!1)}_getNearestAncestor(e){let{_minZoom:r=0}=this,n=e.index;for(;this.getTileZoom(n)>r;){n=this.getParentIndex(n);let i=this.getTile(n);if(i)return i}return null}};function P2(t){return t&&t.length===4?t:void 0}var Gi={getMetadata:async()=>({name:"",keywords:[],layers:[]}),getImage:async()=>null,debounceTime:0},qi=class t{metadata=null;_opts;_listeners=new Set;_currentRequest=null;_lastAcceptedRequestId=-1;_nextRequestId=0;_loadCounter=0;_timeoutId=null;_abortController=null;_finalized=!1;constructor(e){if(this._opts=this._normalizeOptions(e),!this._opts.imageSource&&(!e.getImage||!e.getMetadata))throw new Error("ImageSet requires either `imageSource` or both `getImage` and `getMetadata`.")}static fromImageSource(e,r={}){return new t({...r,imageSource:e})}get isLoaded(){return this._loadCounter===0&&!!this._currentRequest}get image(){return this._currentRequest?.image||null}get currentRequest(){return this._currentRequest}get imageSource(){return this._opts.imageSource}subscribe(e){return this._listeners.add(e),()=>this._listeners.delete(e)}setOptions(e){let r=this._opts.imageSource,n=this._normalizeOptions({...this._opts,...e}),i=r!==n.imageSource||this._opts.getImage!==n.getImage||this._opts.getMetadata!==n.getMetadata;this._opts=n,i&&(this._cancelScheduledImage(),this.metadata=null,this._currentRequest=null,this._lastAcceptedRequestId=-1,this._nextRequestId=0,this._emitUpdate())}async loadMetadata(){this._startLoading();try{let e=await this._opts.getMetadata();if(this._finalized)return e;this.metadata=e;for(let r of this._listeners)r.onMetadataLoad?.(e);return this._emitUpdate(),e}catch(e){let r=df(e,"Image metadata request failed");if(!this._finalized)for(let n of this._listeners)n.onMetadataLoadError?.(r);throw r}finally{this._finishLoading()}}requestImage(e,r=this._opts.debounceTime){let n=this._nextRequestId++;return this._cancelScheduledImage(),this._abortActiveRequest(),r>0?this._timeoutId=setTimeout(()=>{this._timeoutId=null,this._loadImage(n,e)},r):this._loadImage(n,e),n}finalize(){this._finalized=!0,this._cancelScheduledImage(),this._abortActiveRequest(),this._listeners.clear()}async _loadImage(e,r){if(!this._finalized){this._startLoading();for(let n of this._listeners)n.onImageLoadStart?.(e,r);try{let n=new AbortController;this._abortController=n;let i=await this._opts.getImage({...r,signal:n.signal});if(this._finalized||e<=this._lastAcceptedRequestId)return;this._lastAcceptedRequestId=e,this._currentRequest={requestId:e,parameters:r,image:i};for(let o of this._listeners)o.onImageLoad?.(this._currentRequest);this._emitUpdate()}catch(n){if(R2(n))return;let i=df(n,"Image request failed");if(!this._finalized)for(let o of this._listeners)o.onImageLoadError?.(e,i,r)}finally{this._abortController?.signal===r.signal&&(this._abortController=null),this._finishLoading()}}}_normalizeOptions(e){let r=e.imageSource||null;return{...Gi,...e,imageSource:r,getMetadata:e.getMetadata||(()=>r?r.getMetadata():Gi.getMetadata()),getImage:e.getImage||(n=>r?r.getImage(n):Gi.getImage(n)),debounceTime:e.debounceTime??Gi.debounceTime}}_emitUpdate(){for(let e of this._listeners)e.onUpdate?.()}_startLoading(){let e=this._loadCounter>0;this._loadCounter++,e||(this._emitLoadingStateChange(!0),this._emitUpdate())}_finishLoading(){let e=this._loadCounter>0;this._loadCounter=Math.max(0,this._loadCounter-1),e&&this._loadCounter===0&&(this._emitLoadingStateChange(!1),this._emitUpdate())}_emitLoadingStateChange(e){for(let r of this._listeners)r.onLoadingStateChange?.(e)}_cancelScheduledImage(){this._timeoutId!==null&&(clearTimeout(this._timeoutId),this._timeoutId=null)}_abortActiveRequest(){this._abortController?.abort(),this._abortController=null}};function R2(t){return t instanceof Error&&t.name==="AbortError"}function df(t,e){return t instanceof Error?t:typeof t=="string"?new Error(t):new Error(e)}var en={getMetadata:async()=>({width:0,height:0,bandCount:0,dtype:"uint8"}),getRaster:async()=>({data:new Uint8Array(0),width:0,height:0,bandCount:0,dtype:"uint8"}),debounceTime:0,shouldRefetch:()=>!0},zi=class t{metadata=null;_opts;_listeners=new Set;_currentRequest=null;_lastAcceptedRequestId=-1;_nextRequestId=0;_loadCounter=0;_timeoutId=null;_abortController=null;_finalized=!1;constructor(e){if(this._opts=this._normalizeOptions(e),!this._opts.rasterSource&&(!e.getRaster||!e.getMetadata))throw new Error("RasterSet requires either `rasterSource` or both `getRaster` and `getMetadata`.")}static fromRasterSource(e,r={}){return new t({...r,rasterSource:e})}static fromCallbacks(e){return new t(e)}get isLoaded(){return this._loadCounter===0&&!!this._currentRequest}get raster(){return this._currentRequest?.raster||null}get currentRequest(){return this._currentRequest}get rasterSource(){return this._opts.rasterSource}subscribe(e){return this._listeners.add(e),()=>this._listeners.delete(e)}setOptions(e){let r=this._opts.rasterSource,n=this._normalizeOptions({...this._opts,...e}),i=r!==n.rasterSource||this._opts.getRaster!==n.getRaster||this._opts.getMetadata!==n.getMetadata;this._opts=n,i&&(this._cancelScheduledRaster(),this.metadata=null,this._currentRequest=null,this._lastAcceptedRequestId=-1,this._nextRequestId=0,this._emitUpdate())}async loadMetadata(){this._startLoading();try{let e=await this._opts.getMetadata();if(this._finalized)return e;this.metadata=e;for(let r of this._listeners)r.onMetadataLoad?.(e);return this._emitUpdate(),e}catch(e){let r=mf(e,"Raster metadata request failed");if(!this._finalized)for(let n of this._listeners)n.onMetadataLoadError?.(r);throw r}finally{this._finishLoading()}}requestRaster(e,r=this._opts.debounceTime){if(!this.shouldRefetchRaster(e))return this._currentRequest?.requestId??-1;let n=this._nextRequestId++;return this._cancelScheduledRaster(),r>0?this._timeoutId=setTimeout(()=>{this._timeoutId=null,this._loadRaster(n,e)},r):this._loadRaster(n,e),n}shouldRefetchRaster(e){return this._opts.shouldRefetch({currentRequest:this._currentRequest,metadata:this.metadata,nextParameters:e})}finalize(){this._finalized=!0,this._cancelScheduledRaster(),this._abortActiveRequest(),this._listeners.clear()}async _loadRaster(e,r){if(!this._finalized){this._startLoading();for(let n of this._listeners)n.onRasterLoadStart?.(e,r);try{let n=new AbortController;this._abortController=n;let i=await this._opts.getRaster(C2(r,n.signal));if(this._finalized||n.signal.aborted||e<=this._lastAcceptedRequestId)return;this._lastAcceptedRequestId=e,this._currentRequest={requestId:e,parameters:r,raster:i};for(let o of this._listeners)o.onRasterLoad?.(this._currentRequest);this._emitUpdate()}catch(n){if(A2(n))return;let i=mf(n,"Raster request failed");if(!this._finalized)for(let o of this._listeners)o.onRasterLoadError?.(e,i,r)}finally{this._abortController=null,this._finishLoading()}}}_normalizeOptions(e){let r=e.rasterSource||null;return{...en,...e,rasterSource:r,getMetadata:e.getMetadata||(()=>r?r.getMetadata():en.getMetadata()),getRaster:e.getRaster||(n=>r?r.getRaster(n):en.getRaster(n)),debounceTime:e.debounceTime??en.debounceTime,shouldRefetch:e.shouldRefetch||(n=>en.shouldRefetch(n))}}_emitUpdate(){for(let e of this._listeners)e.onUpdate?.()}_emitLoadingStateChange(e){for(let r of this._listeners)r.onLoadingStateChange?.(e)}_startLoading(){let e=this._loadCounter>0;this._loadCounter++,e||(this._emitLoadingStateChange(!0),this._emitUpdate())}_finishLoading(){let e=this._loadCounter>0;this._loadCounter=Math.max(0,this._loadCounter-1),e&&this._loadCounter===0&&(this._emitLoadingStateChange(!1),this._emitUpdate())}_cancelScheduledRaster(){this._timeoutId!==null&&(clearTimeout(this._timeoutId),this._timeoutId=null)}_abortActiveRequest(){this._abortController?.abort(),this._abortController=null}};function C2(t,e){let r=Array.isArray(t)?t.slice():Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t));return Object.defineProperty(r,"signal",{configurable:!0,enumerable:!0,value:e,writable:!0}),r}function mf(t,e){return t instanceof Error?t:typeof t=="string"?new Error(t):new Error(e)}function A2(t){return t instanceof Error&&t.name==="AbortError"}var rr=class{header;parent;children=[];childrenLoaded=!1;childrenPromise=null;selected=!1;viewportIds=[];content=null;contentAvailable=!1;contentFailed=!1;isContentLoading=!1;constructor(e,r=null){this.header=e,this.parent=r}get id(){return this.header.id}get level(){return this.header.level}get pointCount(){return this.header.pointCount}get geometricError(){return this.header.geometricError}get boundingVolume(){return this.header.boundingVolume}setSelected(e){this.selected=!0,this.viewportIds.includes(e)||this.viewportIds.push(e)}clearSelection(){this.selected=!1,this.viewportIds=[]}};var I2={debounceTime:0,minimumNodePixelSize:150,maximumScreenSpaceError:1,lodSelectionMetricType:"maxScreenThresholdSQ",densityThreshold:1,pointBudget:2e6,maxDepth:Number.POSITIVE_INFINITY,onTileLoad:()=>{},onTileError:()=>{},onTraversalComplete:t=>t,onUpdate:()=>{}},Bi=64,Di=class{dataSource;options;root=null;cartographicCenter=null;zoom=1;boundingVolume=null;visibleTilesCount=0;frameNumberValue=0;pendingCount=0;lastUpdatedViewports=null;updatePromise=null;tilesMap=new Map;constructor(e,r={}){this.dataSource=e,this.options={...I2,...r},this.tilesetInitializationPromise=this.initialize()}tilesetInitializationPromise;get isReady(){return this.dataSource.isReady}get frameNumber(){return this.frameNumberValue}get tiles(){return Array.from(this.tilesMap.values())}isLoaded(){return this.frameNumberValue>0&&this.pendingCount===0&&this.selectedTiles.every(e=>e.contentAvailable||e.contentFailed)}selectedTiles=[];update(e=null){this.selectTiles(e).catch(()=>{})}destroy(){this.selectedTiles=[],this.tilesMap.clear(),this.root=null,this.cartographicCenter=null,this.boundingVolume=null,this.visibleTilesCount=0,this.pendingCount=0,this.lastUpdatedViewports=null,this.updatePromise=null}async initialize(){await this.dataSource.initialize();let e=await this.dataSource.getRootTile();this.root=this.getOrCreateTile(e,null);let r=await this.dataSource.getViewState?.();this.boundingVolume=r?.boundingVolume||this.root.boundingVolume;let n=r?.cartographicCenter||this.root.boundingVolume.center;this.cartographicCenter=new g(n),this.zoom=r?.zoom||this.estimateZoom(this.boundingVolume)}async selectTiles(e=null){return await this.tilesetInitializationPromise,e&&(this.lastUpdatedViewports=e),this.updatePromise||(this.updatePromise=new Promise((r,n)=>{setTimeout(()=>{this.doSelectTiles().then(()=>r(this.frameNumberValue)).catch(n).finally(()=>{this.updatePromise=null})},this.options.debounceTime)})),this.updatePromise}async doSelectTiles(){if(!this.root||!this.lastUpdatedViewports)return;let e=new Set(this.selectedTiles.map(a=>a.id));for(let a of this.tilesMap.values())a.clearSelection();this.frameNumberValue++;let r=Array.isArray(this.lastUpdatedViewports)?this.lastUpdatedViewports:[this.lastUpdatedViewports],n=new Map,i=new Set,o=0;for(let a of r){let c=this.getTraversalContext(a);o=await this.traverseTiles(c,n,o,i)}this.visibleTilesCount=i.size,this.selectedTiles=this.options.onTraversalComplete(Array.from(n.values()));for(let a of this.selectedTiles)this.loadTile(a).catch(()=>{});let s=new Set(this.selectedTiles.map(a=>a.id));this.haveSameIds(e,s)||this.options.onUpdate()}async traverseTiles(e,r,n,i){if(!this.root)return n;let o=n,s=[{tile:this.root,weight:this.estimateScreenRadius(this.root,e.viewport)}];for(;s.length>0;){s.sort((u,f)=>f.weight-u.weight);let a=s.shift();if(!a)break;let{tile:c,weight:l}=a;if(!this.isVisible(c,e))continue;if(i.add(c.id),!r.has(c.id)&&c.pointCount>0){if(o>0&&o+c.pointCount>this.options.pointBudget)break;r.set(c.id,c),o+=c.pointCount}if(r.has(c.id)&&c.setSelected(e.viewport.id),!this.shouldRefine(c,l))continue;let h=await this.getVisibleChildren(c,e);h.length>0&&s.push(...h)}return o}shouldRefine(e,r){if(e.level<this.options.maxDepth&&Number.isFinite(r)&&(e.header.lodSelectionMetricType||this.options.lodSelectionMetricType)==="density-threshold"){let n=Math.max(1,Math.PI*r*r),i=e.pointCount/n,o=e.header.lodThreshold||this.options.densityThreshold;return i<o}return e.level<this.options.maxDepth&&Number.isFinite(r)&&r>=this.options.minimumNodePixelSize}getTraversalContext(e){let r=this.getCullingVolume(e);return{viewport:e,cullingVolume:this.shouldUseCullingVolume(e,r)?r:null}}isVisible(e,r){if(r.cullingVolume){let i=this.getCommonSpaceBoundingSphere(e.boundingVolume,r.viewport);if(i)return this.isBoundingSphereInsideCullingVolume(i,r.cullingVolume)}let n=this.getProjectedFootprint(e.boundingVolume,r.viewport);return n?this.isProjectedFootprintVisible(n,r.viewport):!1}shouldUseCullingVolume(e,r){if(!this.root||!r)return!1;let n=this.getCommonSpaceBoundingSphere(this.root.boundingVolume,e);if(!n)return!1;if(this.isBoundingSphereInsideCullingVolume(n,r))return!0;let i=this.getProjectedFootprint(this.root.boundingVolume,e);return!i||!this.isProjectedFootprintVisible(i,e)}isBoundingSphereInsideCullingVolume(e,r){return r.computeVisibilityWithPlaneMask(e,se.MASK_INDETERMINATE)!==se.MASK_OUTSIDE}isProjectedFootprintVisible(e,r){return!(e.x+e.radius<-Bi||e.x-e.radius>r.width+Bi||e.y+e.radius<-Bi||e.y-e.radius>r.height+Bi)}estimateScreenRadius(e,r){let n=this.getProjectedFootprint(e.boundingVolume,r);return n?n.radius:0}projectBounds(e,r){let n=this.getBoundingVolumeCorners(e),i=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY,s=Number.NEGATIVE_INFINITY,a=Number.NEGATIVE_INFINITY;try{for(let c of n){let[l,h]=r.project(c);!Number.isFinite(l)||!Number.isFinite(h)||(i=Math.min(i,l),o=Math.min(o,h),s=Math.max(s,l),a=Math.max(a,h))}}catch{return null}return!Number.isFinite(i)||!Number.isFinite(o)||!Number.isFinite(s)||!Number.isFinite(a)?null:{minX:i,minY:o,maxX:s,maxY:a}}getProjectedFootprint(e,r){let n=Number.NaN,i=Number.NaN;try{[n,i]=r.project(e.center)}catch{return null}if(!Number.isFinite(n)||!Number.isFinite(i))return null;let o=this.getBoundingVolumeCorners(e),s=0;try{for(let a of o){let[c,l]=r.project(a);!Number.isFinite(c)||!Number.isFinite(l)||(s=Math.max(s,Math.hypot(c-n,l-i)))}}catch{return null}if(s===0){let a=this.projectBounds(e,r);a&&(s=Math.max(a.maxX-a.minX,a.maxY-a.minY)/2)}return{x:n,y:i,radius:s}}async getVisibleChildren(e,r){return e.level>=this.options.maxDepth?[]:(await this.getChildren(e)).map(i=>({tile:i,weight:this.estimateScreenRadius(i,r.viewport)})).filter(i=>this.isVisible(i.tile,r))}async getChildren(e){if(e.childrenLoaded)return e.children;if(!e.childrenPromise){let r=this.dataSource.getChildren(e.header).then(n=>n.map(i=>this.getOrCreateTile(i,e))).then(n=>(e.children=n,e.childrenLoaded=!0,n));e.childrenPromise=r.finally(()=>{e.childrenPromise===r&&(e.childrenPromise=null)})}return e.childrenPromise}getOrCreateTile(e,r){let n=this.tilesMap.get(e.id);if(n)return n.header=e,r&&n.parent!==r&&(n.parent=r),n;let i=new rr(e,r);return this.tilesMap.set(e.id,i),r&&!r.children.find(o=>o.id===i.id)&&r.children.push(i),i}async loadTile(e){if(!(e.contentAvailable||e.isContentLoading||e.contentFailed)){e.isContentLoading=!0,this.pendingCount++;try{let r=await this.dataSource.loadTileContent(e.header);e.content=r,e.contentAvailable=!0,r&&this.options.onTileLoad(e)}catch(r){e.contentFailed=!0,this.options.onTileError(e,r)}finally{e.isContentLoading=!1,this.pendingCount--}}}estimateZoom(e){if(!e||e.coordinateFrame==="cartesian")return 1;let[r,n]=e.cartographicBounds,i=e.coversFullLongitude?360:e.wrapsDateline?360-Math.abs(n[0]-r[0]):Math.abs(n[0]-r[0]),o=Math.max(i,1e-6);return Math.max(1,Math.round(Math.log2(360/o)))}haveSameIds(e,r){if(e.size!==r.size)return!1;for(let n of e)if(!r.has(n))return!1;return!0}getBoundingVolumeCorners(e){let[r,n]=e.cartographicBounds,i=e.coversFullLongitude?[[-180,180]]:e.wrapsDateline?[[r[0],180],[-180,n[0]]]:[[r[0],n[0]]],o=[],s=360-Math.abs(n[0]-r[0]),a=r[0]+s/2;for(let[c,l]of i){let h=d=>{if(!e.wrapsDateline)return d;let m=d;for(;m-a>180;)m-=360;for(;m-a<-180;)m+=360;return m},u=h(c),f=h(l);o.push([u,r[1],r[2]||0],[u,r[1],n[2]||0],[u,n[1],r[2]||0],[u,n[1],n[2]||0],[f,r[1],r[2]||0],[f,r[1],n[2]||0],[f,n[1],r[2]||0],[f,n[1],n[2]||0])}return o}getCullingVolume(e){let r=e.getFrustumPlanes?.bind(e);if(!r)return null;let n=r(),i=["left","right","bottom","top","near","far"],o=[];for(let s of i){let a=n[s];if(!a)return null;o.push(new re(a.normal,-a.distance))}return new se(o)}getCommonSpaceBoundingSphere(e,r){let n=r.projectPosition?.bind(r);if(!n)return null;let i=this.getBoundingVolumeCorners(e),o=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,l=Number.NEGATIVE_INFINITY,h=Number.NEGATIVE_INFINITY;try{for(let u of i){let[f,d,m=0]=n(u);!Number.isFinite(f)||!Number.isFinite(d)||!Number.isFinite(m)||(o=Math.min(o,f),s=Math.min(s,d),a=Math.min(a,m),c=Math.max(c,f),l=Math.max(l,d),h=Math.max(h,m))}}catch{return null}return!Number.isFinite(o)||!Number.isFinite(s)||!Number.isFinite(a)||!Number.isFinite(c)||!Number.isFinite(l)||!Number.isFinite(h)?null:new fe().fromCornerPoints([o,s,a],[c,l,h])}};return qf(tn);})();
7
+ "use strict";var __exports__=(()=>{var k0=Object.create;var ln=Object.defineProperty;var F0=Object.getOwnPropertyDescriptor;var U0=Object.getOwnPropertyNames;var V0=Object.getPrototypeOf,j0=Object.prototype.hasOwnProperty;var W0=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(r){throw e=0,r}},eo=(t,e)=>{for(var r in e)ln(t,r,{get:e[r],enumerable:!0})},cn=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of U0(e))!j0.call(t,i)&&i!==r&&ln(t,i,{get:()=>e[i],enumerable:!(n=F0(e,i))||n.enumerable});return t},hn=(t,e,r)=>(cn(t,e,"default"),r&&cn(r,e,"default")),H0=(t,e,r)=>(r=t!=null?k0(V0(t)):{},cn(e||!t||!t.__esModule?ln(r,"default",{value:t,enumerable:!0}):r,t)),$0=t=>cn(ln({},"__esModule",{value:!0}),t);var Sa=W0((V2,xa)=>{xa.exports=globalThis.loaders});var an={};eo(an,{I3SSource:()=>Fi,I3SSpatialTransformer:()=>nr,ImageSet:()=>Vi,IndexedArchiveTilesetSource:()=>ri,LOD_METRIC_TYPE:()=>Dt,PointCloudTile:()=>ir,PointCloudTileset:()=>Hi,RasterSet:()=>ji,STRATEGY_DEFAULT:()=>on,STRATEGY_NEVER:()=>ma,STRATEGY_REPLACE:()=>pa,SharedTile2DHeader:()=>At,SpatialCoordinateTransformer:()=>ke,TILESET_TYPE:()=>he,TILE_CONTENT_STATE:()=>ae,TILE_REFINEMENT:()=>te,TILE_TYPE:()=>Ze,Tile3D:()=>Re,Tiles3DSource:()=>zi,Tiles3DSpatialTransformer:()=>yt,Tileset2D:()=>nn,Tileset3D:()=>Jn,TilesetCache:()=>Bt,TilesetTraverser:()=>Qe,applyTilesetSpatialOptions:()=>Et,calculateTransformProps:()=>Hn,convertS2BoundingVolumeToOBB:()=>Gi,createBoundingVolume:()=>Ut,createImplicitSubtreeReference:()=>la,createTilesetSpatialReference:()=>Pe,get3DTilesSpatialReference:()=>ci,getFrameState:()=>$n,getGeoidModel:()=>Oi,getI3SSpatialReference:()=>ai,getLodStatus:()=>oi,getSpatialCoordinateFrame:()=>Me,getTileset3DTraversalSnapshot:()=>jl,isTileset3DSource:()=>Zn,markTilesetSpatialReferenceTransformed:()=>Ft,materializeImplicitSubtree:()=>qi,registerGeoidModel:()=>ra,registerGeoidModelFromPgm:()=>Hf,registerSpatialCrs:()=>jf,registerSpatialDatumGrid:()=>Wf,replaceImplicitUrlTemplate:()=>rn,traverseTilesetContents:()=>Wl});hn(an,H0(Sa(),1));var U={};eo(U,{EPSILON1:()=>Y0,EPSILON10:()=>nd,EPSILON11:()=>id,EPSILON12:()=>od,EPSILON13:()=>sd,EPSILON14:()=>un,EPSILON15:()=>ad,EPSILON16:()=>cd,EPSILON17:()=>ld,EPSILON18:()=>hd,EPSILON19:()=>ud,EPSILON2:()=>K0,EPSILON20:()=>fd,EPSILON3:()=>X0,EPSILON4:()=>Z0,EPSILON5:()=>Q0,EPSILON6:()=>J0,EPSILON7:()=>ed,EPSILON8:()=>td,EPSILON9:()=>rd,PI:()=>It,PI_OVER_FOUR:()=>md,PI_OVER_SIX:()=>pd,PI_OVER_TWO:()=>dd,TWO_PI:()=>sr});var Y0=.1,K0=.01,X0=.001,Z0=1e-4,Q0=1e-5,J0=1e-6,ed=1e-7,td=1e-8,rd=1e-9,nd=1e-10,id=1e-11,od=1e-12,sd=1e-13,un=1e-14,ad=1e-15,cd=1e-16,ld=1e-17,hd=1e-18,ud=1e-19,fd=1e-20,dd=Math.PI/2,md=Math.PI/4,pd=Math.PI/6,It=Math.PI,sr=Math.PI*2;var gd=1/Math.PI*180,Md=1/180*Math.PI,_d={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{..._d}};var Y=globalThis.mathgl.config;function to(t,{precision:e=Y.precision}={}){return t=xd(t),`${parseFloat(t.toPrecision(e))}`}function Ne(t){return Array.isArray(t)||ArrayBuffer.isView(t)&&!(t instanceof DataView)}function ro(t){return fn(t)}function no(t){return ge(t)}function fn(t,e){return oo(t,r=>r*Md,e)}function ge(t,e){return oo(t,r=>r*gd,e)}function wa(t,e){return Math.sign(t)===Math.sign(e)&&Math.abs(t)<Math.abs(e)?t:(t%e+e)%e}function io(t,e){switch(e){case"negative-pi-to-pi":return yd(t);case"zero-to-two-pi":return Ea(t);default:return t}}function Ea(t){if(t>=0&&t<=sr)return t;let e=wa(t,sr);return Math.abs(e)<1e-14&&Math.abs(t)>1e-14?sr:e}function yd(t){return t>=-It&&t<=It?t:Ea(t+It)-It}function ar(t,e,r){return oo(t,n=>Math.max(e,Math.min(r,n)))}function be(t,e,r){let n=Y.EPSILON;r&&(Y.EPSILON=r);try{if(t===e)return!0;if(Ne(t)&&Ne(e)){if(t.length!==e.length)return!1;for(let i=0;i<t.length;++i)if(!be(t[i],e[i]))return!1;return!0}return t&&t.equals?t.equals(e):e&&e.equals?e.equals(t):typeof t=="number"&&typeof e=="number"?Math.abs(t-e)<=Y.EPSILON*Math.max(1,Math.abs(t),Math.abs(e)):!1}finally{Y.EPSILON=n}}function xd(t){return Math.round(t/Y.EPSILON)*Y.EPSILON}function Sd(t){return t.clone?t.clone():new Array(t.length)}function oo(t,e,r){if(Ne(t)){let n=t;r=r||Sd(n);for(let i=0;i<r.length&&i<n.length;++i){let o=typeof t=="number"?t:t[i];r[i]=e(o,i,r)}return r}return e(t)}var ft=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(e,r=0){for(let n=0;n<this.ELEMENTS;++n)this[n]=e[n+r];return this.check()}toArray(e=[],r=0){for(let n=0;n<this.ELEMENTS;++n)e[r+n]=this[n];return e}toObject(e){return e}from(e){return Array.isArray(e)?this.copy(e):this.fromObject(e)}to(e){return e===this?this:Ne(e)?this.toArray(e):this.toObject(e)}toTarget(e){return e?this.to(e):this}toString(){return this.formatString(Y)}formatString(e){let r="";for(let n=0;n<this.ELEMENTS;++n)r+=(n>0?", ":"")+to(this[n],e);return`${e.printTypes?this.constructor.name:""}[${r}]`}equals(e){if(!e||this.length!==e.length)return!1;for(let r=0;r<this.ELEMENTS;++r)if(!be(this[r],e[r]))return!1;return!0}exactEquals(e){if(!e||this.length!==e.length)return!1;for(let r=0;r<this.ELEMENTS;++r)if(this[r]!==e[r])return!1;return!0}negate(){for(let e=0;e<this.ELEMENTS;++e)this[e]=-this[e];return this.check()}lerp(e,r,n){if(n===void 0)return this.lerp(this,e,r);for(let i=0;i<this.ELEMENTS;++i){let o=e[i],s=typeof r=="number"?r:r[i];this[i]=o+n*(s-o)}return this.check()}min(e){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.min(e[r],this[r]);return this.check()}max(e){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.max(e[r],this[r]);return this.check()}clamp(e,r){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e[n]),r[n]);return this.check()}add(...e){for(let r of e)for(let n=0;n<this.ELEMENTS;++n)this[n]+=r[n];return this.check()}subtract(...e){for(let r of e)for(let n=0;n<this.ELEMENTS;++n)this[n]-=r[n];return this.check()}scale(e){if(typeof e=="number")for(let r=0;r<this.ELEMENTS;++r)this[r]*=e;else for(let r=0;r<this.ELEMENTS&&r<e.length;++r)this[r]*=e[r];return this.check()}multiplyByScalar(e){for(let r=0;r<this.ELEMENTS;++r)this[r]*=e;return this.check()}check(){if(Y.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let e=this.length===this.ELEMENTS;for(let r=0;r<this.ELEMENTS;++r)e=e&&Number.isFinite(this[r]);return e}};function wd(t,e){if(t.length!==e)return!1;for(let r=0;r<t.length;++r)if(!Number.isFinite(t[r]))return!1;return!0}function W(t){if(!Number.isFinite(t))throw new Error(`Invalid number ${JSON.stringify(t)}`);return t}function Ot(t,e,r=""){if(Y.debug&&!wd(t,e))throw new Error(`math.gl: ${r} some fields set to invalid numbers'`);return t}var Nt=class extends ft{toString(){let e="[";if(Y.printRowMajor){e+="row-major:";for(let r=0;r<this.RANK;++r)for(let n=0;n<this.RANK;++n)e+=` ${this[n*this.RANK+r]}`}else{e+="column-major:";for(let r=0;r<this.ELEMENTS;++r)e+=` ${this[r]}`}return e+="]",e}getElementIndex(e,r){return r*this.RANK+e}getElement(e,r){return this[r*this.RANK+e]}setElement(e,r,n){return this[r*this.RANK+e]=W(n),this}getColumn(e,r=new Array(this.RANK).fill(-0)){let n=e*this.RANK;for(let i=0;i<this.RANK;++i)r[i]=this[n+i];return r}setColumn(e,r){let n=e*this.RANK;for(let i=0;i<this.RANK;++i)this[n+i]=r[i];return this}};function oe(t,e){if(!t)throw new Error(`math.gl assertion ${e}`)}var Lt=class extends ft{get x(){return this[0]}set x(e){this[0]=W(e)}get y(){return this[1]}set y(e){this[1]=W(e)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let e=0;for(let r=0;r<this.ELEMENTS;++r)e+=this[r]*this[r];return e}magnitudeSquared(){return this.lengthSquared()}distance(e){return Math.sqrt(this.distanceSquared(e))}distanceSquared(e){let r=0;for(let n=0;n<this.ELEMENTS;++n){let i=this[n]-e[n];r+=i*i}return W(r)}dot(e){let r=0;for(let n=0;n<this.ELEMENTS;++n)r+=this[n]*e[n];return W(r)}normalize(){let e=this.magnitude();if(e!==0)for(let r=0;r<this.ELEMENTS;++r)this[r]/=e;return this.check()}multiply(...e){for(let r of e)for(let n=0;n<this.ELEMENTS;++n)this[n]*=r[n];return this.check()}divide(...e){for(let r of e)for(let n=0;n<this.ELEMENTS;++n)this[n]/=r[n];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(e){return this.distance(e)}distanceToSquared(e){return this.distanceSquared(e)}getComponent(e){return oe(e>=0&&e<this.ELEMENTS,"index is out of range"),W(this[e])}setComponent(e,r){return oe(e>=0&&e<this.ELEMENTS,"index is out of range"),this[e]=r,this.check()}addVectors(e,r){return this.copy(e).add(r)}subVectors(e,r){return this.copy(e).subtract(r)}multiplyVectors(e,r){return this.copy(e).multiply(r)}addScaledVector(e,r){for(let n=0;n<this.ELEMENTS;++n)this[n]+=e[n]*r;return this.check()}};var dn=typeof Float32Array<"u"?Float32Array:Array;var oM=Math.PI/180;function Ta(t,e,r){let n=e[0],i=e[1];return t[0]=r[0]*n+r[2]*i,t[1]=r[1]*n+r[3]*i,t}function ba(t,e,r){let n=e[0],i=e[1];return t[0]=r[0]*n+r[2]*i+r[4],t[1]=r[1]*n+r[3]*i+r[5],t}function mn(t,e,r){let n=e[0],i=e[1];return t[0]=r[0]*n+r[3]*i+r[6],t[1]=r[1]*n+r[4]*i+r[7],t}function pn(t,e,r){let n=e[0],i=e[1];return t[0]=r[0]*n+r[4]*i+r[12],t[1]=r[1]*n+r[5]*i+r[13],t}function gn(t,e,r){let n=e[0],i=e[1],o=r[3]*n+r[7]*i||1;return t[0]=(r[0]*n+r[4]*i)/o,t[1]=(r[1]*n+r[5]*i)/o,t}function Mn(t,e,r){let n=e[0],i=e[1],o=e[2],s=r[3]*n+r[7]*i+r[11]*o||1;return t[0]=(r[0]*n+r[4]*i+r[8]*o)/s,t[1]=(r[1]*n+r[5]*i+r[9]*o)/s,t[2]=(r[2]*n+r[6]*i+r[10]*o)/s,t}function va(t,e,r){let n=e[0],i=e[1];return t[0]=r[0]*n+r[2]*i,t[1]=r[1]*n+r[3]*i,t[2]=e[2],t}function Pa(t,e,r){let n=e[0],i=e[1],o=e[2];return t[0]=r[0]*n+r[3]*i+r[6]*o,t[1]=r[1]*n+r[4]*i+r[7]*o,t[2]=r[2]*n+r[5]*i+r[8]*o,t[3]=e[3],t}var Le=class extends Lt{constructor(e=0,r=0){super(2),Ne(e)&&arguments.length===1?this.copy(e):(Y.debug&&(W(e),W(r)),this[0]=e,this[1]=r)}set(e,r){return this[0]=e,this[1]=r,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this.check()}fromObject(e){return Y.debug&&(W(e.x),W(e.y)),this[0]=e.x,this[1]=e.y,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e}get ELEMENTS(){return 2}horizontalAngle(){return Math.atan2(this.y,this.x)}verticalAngle(){return Math.atan2(this.x,this.y)}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return pn(this,this,e),this.check()}transformAsVector(e){return gn(this,this,e),this.check()}transformByMatrix3(e){return mn(this,this,e),this.check()}transformByMatrix2x3(e){return ba(this,this,e),this.check()}transformByMatrix2(e){return Ta(this,this,e),this.check()}};function Ra(){let t=new dn(3);return dn!==Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function so(t){let e=t[0],r=t[1],n=t[2];return Math.sqrt(e*e+r*r+n*n)}function ao(t,e,r){let n=new dn(3);return n[0]=t,n[1]=e,n[2]=r,n}function Ca(t,e){let r=e[0],n=e[1],i=e[2],o=r*r+n*n+i*i;return o>0&&(o=1/Math.sqrt(o)),t[0]=e[0]*o,t[1]=e[1]*o,t[2]=e[2]*o,t}function lr(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Gt(t,e,r){let n=e[0],i=e[1],o=e[2],s=r[0],a=r[1],c=r[2];return t[0]=i*c-o*a,t[1]=o*s-n*c,t[2]=n*a-i*s,t}function _n(t,e,r){let n=e[0],i=e[1],o=e[2],s=r[3]*n+r[7]*i+r[11]*o+r[15];return s=s||1,t[0]=(r[0]*n+r[4]*i+r[8]*o+r[12])/s,t[1]=(r[1]*n+r[5]*i+r[9]*o+r[13])/s,t[2]=(r[2]*n+r[6]*i+r[10]*o+r[14])/s,t}function yn(t,e,r){let n=e[0],i=e[1],o=e[2];return t[0]=n*r[0]+i*r[3]+o*r[6],t[1]=n*r[1]+i*r[4]+o*r[7],t[2]=n*r[2]+i*r[5]+o*r[8],t}function Aa(t,e,r){let n=r[0],i=r[1],o=r[2],s=r[3],a=e[0],c=e[1],l=e[2],h=i*l-o*c,u=o*a-n*l,f=n*c-i*a,d=i*f-o*u,m=o*h-n*f,p=n*u-i*h,g=s*2;return h*=g,u*=g,f*=g,d*=2,m*=2,p*=2,t[0]=a+h+d,t[1]=c+u+m,t[2]=l+f+p,t}function Ia(t,e,r,n){let i=[],o=[];return i[0]=e[0]-r[0],i[1]=e[1]-r[1],i[2]=e[2]-r[2],o[0]=i[0],o[1]=i[1]*Math.cos(n)-i[2]*Math.sin(n),o[2]=i[1]*Math.sin(n)+i[2]*Math.cos(n),t[0]=o[0]+r[0],t[1]=o[1]+r[1],t[2]=o[2]+r[2],t}function Oa(t,e,r,n){let i=[],o=[];return i[0]=e[0]-r[0],i[1]=e[1]-r[1],i[2]=e[2]-r[2],o[0]=i[2]*Math.sin(n)+i[0]*Math.cos(n),o[1]=i[1],o[2]=i[2]*Math.cos(n)-i[0]*Math.sin(n),t[0]=o[0]+r[0],t[1]=o[1]+r[1],t[2]=o[2]+r[2],t}function Na(t,e,r,n){let i=[],o=[];return i[0]=e[0]-r[0],i[1]=e[1]-r[1],i[2]=e[2]-r[2],o[0]=i[0]*Math.cos(n)-i[1]*Math.sin(n),o[1]=i[0]*Math.sin(n)+i[1]*Math.cos(n),o[2]=i[2],t[0]=o[0]+r[0],t[1]=o[1]+r[1],t[2]=o[2]+r[2],t}function La(t,e){let r=t[0],n=t[1],i=t[2],o=e[0],s=e[1],a=e[2],c=Math.sqrt((r*r+n*n+i*i)*(o*o+s*s+a*a)),l=c&&lr(t,e)/c;return Math.acos(Math.min(Math.max(l,-1),1))}var Ga=so;var co=[0,0,0],xn,M=class t extends Lt{static get ZERO(){return xn||(xn=new t(0,0,0),Object.freeze(xn)),xn}constructor(e=0,r=0,n=0){super(-0,-0,-0),arguments.length===1&&Ne(e)?this.copy(e):(Y.debug&&(W(e),W(r),W(n)),this[0]=e,this[1]=r,this[2]=n)}set(e,r,n){return this[0]=e,this[1]=r,this[2]=n,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this.check()}fromObject(e){return Y.debug&&(W(e.x),W(e.y),W(e.z)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e.z=this[2],e}get ELEMENTS(){return 3}get z(){return this[2]}set z(e){this[2]=W(e)}angle(e){return La(this,e)}cross(e){return Gt(this,this,e),this.check()}rotateX({radians:e,origin:r=co}){return Ia(this,this,r,e),this.check()}rotateY({radians:e,origin:r=co}){return Oa(this,this,r,e),this.check()}rotateZ({radians:e,origin:r=co}){return Na(this,this,r,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return _n(this,this,e),this.check()}transformAsVector(e){return Mn(this,this,e),this.check()}transformByMatrix3(e){return yn(this,this,e),this.check()}transformByMatrix2(e){return va(this,this,e),this.check()}transformByQuaternion(e){return Aa(this,this,e),this.check()}};function qa(t,e){if(t===e){let r=e[1],n=e[2],i=e[5];t[1]=e[3],t[2]=e[6],t[3]=r,t[5]=e[7],t[6]=n,t[7]=i}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t}function za(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=e[4],a=e[5],c=e[6],l=e[7],h=e[8],u=h*s-a*l,f=-h*o+a*c,d=l*o-s*c,m=r*u+n*f+i*d;return m?(m=1/m,t[0]=u*m,t[1]=(-h*n+i*l)*m,t[2]=(a*n-i*s)*m,t[3]=f*m,t[4]=(h*r-i*c)*m,t[5]=(-a*r+i*o)*m,t[6]=d*m,t[7]=(-l*r+n*c)*m,t[8]=(s*r-n*o)*m,t):null}function Ba(t){let e=t[0],r=t[1],n=t[2],i=t[3],o=t[4],s=t[5],a=t[6],c=t[7],l=t[8];return e*(l*o-s*c)+r*(-l*i+s*a)+n*(c*i-o*a)}function lo(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3],a=e[4],c=e[5],l=e[6],h=e[7],u=e[8],f=r[0],d=r[1],m=r[2],p=r[3],g=r[4],_=r[5],y=r[6],S=r[7],x=r[8];return t[0]=f*n+d*s+m*l,t[1]=f*i+d*a+m*h,t[2]=f*o+d*c+m*u,t[3]=p*n+g*s+_*l,t[4]=p*i+g*a+_*h,t[5]=p*o+g*c+_*u,t[6]=y*n+S*s+x*l,t[7]=y*i+S*a+x*h,t[8]=y*o+S*c+x*u,t}function Da(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3],a=e[4],c=e[5],l=e[6],h=e[7],u=e[8],f=r[0],d=r[1];return t[0]=n,t[1]=i,t[2]=o,t[3]=s,t[4]=a,t[5]=c,t[6]=f*n+d*s+l,t[7]=f*i+d*a+h,t[8]=f*o+d*c+u,t}function ka(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3],a=e[4],c=e[5],l=e[6],h=e[7],u=e[8],f=Math.sin(r),d=Math.cos(r);return t[0]=d*n+f*s,t[1]=d*i+f*a,t[2]=d*o+f*c,t[3]=d*s-f*n,t[4]=d*a-f*i,t[5]=d*c-f*o,t[6]=l,t[7]=h,t[8]=u,t}function ho(t,e,r){let n=r[0],i=r[1];return t[0]=n*e[0],t[1]=n*e[1],t[2]=n*e[2],t[3]=i*e[3],t[4]=i*e[4],t[5]=i*e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function Fa(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=r+r,a=n+n,c=i+i,l=r*s,h=n*s,u=n*a,f=i*s,d=i*a,m=i*c,p=o*s,g=o*a,_=o*c;return t[0]=1-u-m,t[3]=h-_,t[6]=f+g,t[1]=h+_,t[4]=1-l-m,t[7]=d-p,t[2]=f-g,t[5]=d+p,t[8]=1-l-u,t}var uo;(function(t){t[t.COL0ROW0=0]="COL0ROW0",t[t.COL0ROW1=1]="COL0ROW1",t[t.COL0ROW2=2]="COL0ROW2",t[t.COL1ROW0=3]="COL1ROW0",t[t.COL1ROW1=4]="COL1ROW1",t[t.COL1ROW2=5]="COL1ROW2",t[t.COL2ROW0=6]="COL2ROW0",t[t.COL2ROW1=7]="COL2ROW1",t[t.COL2ROW2=8]="COL2ROW2"})(uo||(uo={}));var bd=Object.freeze([1,0,0,0,1,0,0,0,1]),H=class extends Nt{static get IDENTITY(){return Pd()}static get ZERO(){return vd()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return uo}constructor(e){super(-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(e)?this.copy(e):this.identity()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this.check()}identity(){return this.copy(bd)}fromObject(e){return this.check()}fromQuaternion(e){return Fa(this,e),this.check()}fromMatrix4(e){return this.set(e[0],e[1],e[2],e[4],e[5],e[6],e[8],e[9],e[10])}set(e,r,n,i,o,s,a,c,l){return this[0]=e,this[1]=r,this[2]=n,this[3]=i,this[4]=o,this[5]=s,this[6]=a,this[7]=c,this[8]=l,this.check()}setRowMajor(e,r,n,i,o,s,a,c,l){return this[0]=e,this[1]=i,this[2]=a,this[3]=r,this[4]=o,this[5]=c,this[6]=n,this[7]=s,this[8]=l,this.check()}determinant(){return Ba(this)}transpose(){return qa(this,this),this.check()}invert(){return za(this,this),this.check()}multiplyLeft(e){return lo(this,e,this),this.check()}multiplyRight(e){return lo(this,this,e),this.check()}rotate(e){return ka(this,this,e),this.check()}scale(e){return Array.isArray(e)?ho(this,this,e):ho(this,this,[e,e]),this.check()}translate(e){return Da(this,this,e),this.check()}transform(e,r){let n;switch(e.length){case 2:n=mn(r||[-0,-0],e,this);break;case 3:n=yn(r||[-0,-0,-0],e,this);break;case 4:n=Pa(r||[-0,-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return Ot(n,e.length),n}},Sn,wn=null;function vd(){return Sn||(Sn=new H([0,0,0,0,0,0,0,0,0]),Object.freeze(Sn)),Sn}function Pd(){return wn||(wn=new H,Object.freeze(wn)),wn}function Rd(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Ua(t,e){if(t===e){let r=e[1],n=e[2],i=e[3],o=e[6],s=e[7],a=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[6]=e[9],t[7]=e[13],t[8]=n,t[9]=o,t[11]=e[14],t[12]=i,t[13]=s,t[14]=a}else t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15];return t}function Va(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=e[4],a=e[5],c=e[6],l=e[7],h=e[8],u=e[9],f=e[10],d=e[11],m=e[12],p=e[13],g=e[14],_=e[15],y=r*a-n*s,S=r*c-i*s,x=r*l-o*s,w=n*c-i*a,T=n*l-o*a,v=i*l-o*c,C=h*p-u*m,O=h*g-f*m,b=h*_-d*m,I=u*g-f*p,A=u*_-d*p,k=f*_-d*g,q=y*k-S*A+x*I+w*b-T*O+v*C;return q?(q=1/q,t[0]=(a*k-c*A+l*I)*q,t[1]=(i*A-n*k-o*I)*q,t[2]=(p*v-g*T+_*w)*q,t[3]=(f*T-u*v-d*w)*q,t[4]=(c*b-s*k-l*O)*q,t[5]=(r*k-i*b+o*O)*q,t[6]=(g*x-m*v-_*S)*q,t[7]=(h*v-f*x+d*S)*q,t[8]=(s*A-a*b+l*C)*q,t[9]=(n*b-r*A-o*C)*q,t[10]=(m*T-p*x+_*y)*q,t[11]=(u*x-h*T-d*y)*q,t[12]=(a*O-s*I-c*C)*q,t[13]=(r*I-n*O+i*C)*q,t[14]=(p*S-m*w-g*y)*q,t[15]=(h*w-u*S+f*y)*q,t):null}function ja(t){let e=t[0],r=t[1],n=t[2],i=t[3],o=t[4],s=t[5],a=t[6],c=t[7],l=t[8],h=t[9],u=t[10],f=t[11],d=t[12],m=t[13],p=t[14],g=t[15],_=e*s-r*o,y=e*a-n*o,S=r*a-n*s,x=l*m-h*d,w=l*p-u*d,T=h*p-u*m,v=e*T-r*w+n*x,C=o*T-s*w+a*x,O=l*S-h*y+u*_,b=d*S-m*y+p*_;return c*v-i*C+g*O-f*b}function fo(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3],a=e[4],c=e[5],l=e[6],h=e[7],u=e[8],f=e[9],d=e[10],m=e[11],p=e[12],g=e[13],_=e[14],y=e[15],S=r[0],x=r[1],w=r[2],T=r[3];return t[0]=S*n+x*a+w*u+T*p,t[1]=S*i+x*c+w*f+T*g,t[2]=S*o+x*l+w*d+T*_,t[3]=S*s+x*h+w*m+T*y,S=r[4],x=r[5],w=r[6],T=r[7],t[4]=S*n+x*a+w*u+T*p,t[5]=S*i+x*c+w*f+T*g,t[6]=S*o+x*l+w*d+T*_,t[7]=S*s+x*h+w*m+T*y,S=r[8],x=r[9],w=r[10],T=r[11],t[8]=S*n+x*a+w*u+T*p,t[9]=S*i+x*c+w*f+T*g,t[10]=S*o+x*l+w*d+T*_,t[11]=S*s+x*h+w*m+T*y,S=r[12],x=r[13],w=r[14],T=r[15],t[12]=S*n+x*a+w*u+T*p,t[13]=S*i+x*c+w*f+T*g,t[14]=S*o+x*l+w*d+T*_,t[15]=S*s+x*h+w*m+T*y,t}function Wa(t,e,r){let n=r[0],i=r[1],o=r[2],s,a,c,l,h,u,f,d,m,p,g,_;return e===t?(t[12]=e[0]*n+e[4]*i+e[8]*o+e[12],t[13]=e[1]*n+e[5]*i+e[9]*o+e[13],t[14]=e[2]*n+e[6]*i+e[10]*o+e[14],t[15]=e[3]*n+e[7]*i+e[11]*o+e[15]):(s=e[0],a=e[1],c=e[2],l=e[3],h=e[4],u=e[5],f=e[6],d=e[7],m=e[8],p=e[9],g=e[10],_=e[11],t[0]=s,t[1]=a,t[2]=c,t[3]=l,t[4]=h,t[5]=u,t[6]=f,t[7]=d,t[8]=m,t[9]=p,t[10]=g,t[11]=_,t[12]=s*n+h*i+m*o+e[12],t[13]=a*n+u*i+p*o+e[13],t[14]=c*n+f*i+g*o+e[14],t[15]=l*n+d*i+_*o+e[15]),t}function Ha(t,e,r){let n=r[0],i=r[1],o=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*o,t[9]=e[9]*o,t[10]=e[10]*o,t[11]=e[11]*o,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function $a(t,e,r,n){let i=n[0],o=n[1],s=n[2],a=Math.sqrt(i*i+o*o+s*s),c,l,h,u,f,d,m,p,g,_,y,S,x,w,T,v,C,O,b,I,A,k,q,j;return a<1e-6?null:(a=1/a,i*=a,o*=a,s*=a,l=Math.sin(r),c=Math.cos(r),h=1-c,u=e[0],f=e[1],d=e[2],m=e[3],p=e[4],g=e[5],_=e[6],y=e[7],S=e[8],x=e[9],w=e[10],T=e[11],v=i*i*h+c,C=o*i*h+s*l,O=s*i*h-o*l,b=i*o*h-s*l,I=o*o*h+c,A=s*o*h+i*l,k=i*s*h+o*l,q=o*s*h-i*l,j=s*s*h+c,t[0]=u*v+p*C+S*O,t[1]=f*v+g*C+x*O,t[2]=d*v+_*C+w*O,t[3]=m*v+y*C+T*O,t[4]=u*b+p*I+S*A,t[5]=f*b+g*I+x*A,t[6]=d*b+_*I+w*A,t[7]=m*b+y*I+T*A,t[8]=u*k+p*q+S*j,t[9]=f*k+g*q+x*j,t[10]=d*k+_*q+w*j,t[11]=m*k+y*q+T*j,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)}function Ya(t,e,r){let n=Math.sin(r),i=Math.cos(r),o=e[4],s=e[5],a=e[6],c=e[7],l=e[8],h=e[9],u=e[10],f=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=o*i+l*n,t[5]=s*i+h*n,t[6]=a*i+u*n,t[7]=c*i+f*n,t[8]=l*i-o*n,t[9]=h*i-s*n,t[10]=u*i-a*n,t[11]=f*i-c*n,t}function Ka(t,e,r){let n=Math.sin(r),i=Math.cos(r),o=e[0],s=e[1],a=e[2],c=e[3],l=e[8],h=e[9],u=e[10],f=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=o*i-l*n,t[1]=s*i-h*n,t[2]=a*i-u*n,t[3]=c*i-f*n,t[8]=o*n+l*i,t[9]=s*n+h*i,t[10]=a*n+u*i,t[11]=c*n+f*i,t}function Xa(t,e,r){let n=Math.sin(r),i=Math.cos(r),o=e[0],s=e[1],a=e[2],c=e[3],l=e[4],h=e[5],u=e[6],f=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=o*i+l*n,t[1]=s*i+h*n,t[2]=a*i+u*n,t[3]=c*i+f*n,t[4]=l*i-o*n,t[5]=h*i-s*n,t[6]=u*i-a*n,t[7]=f*i-c*n,t}function Za(t,e){let r=e[0],n=e[1],i=e[2],o=e[4],s=e[5],a=e[6],c=e[8],l=e[9],h=e[10];return t[0]=Math.sqrt(r*r+n*n+i*i),t[1]=Math.sqrt(o*o+s*s+a*a),t[2]=Math.sqrt(c*c+l*l+h*h),t}function Qa(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=r+r,a=n+n,c=i+i,l=r*s,h=n*s,u=n*a,f=i*s,d=i*a,m=i*c,p=o*s,g=o*a,_=o*c;return t[0]=1-u-m,t[1]=h+_,t[2]=f-g,t[3]=0,t[4]=h-_,t[5]=1-l-m,t[6]=d+p,t[7]=0,t[8]=f+g,t[9]=d-p,t[10]=1-l-u,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Ja(t,e,r,n,i,o,s){let a=1/(r-e),c=1/(i-n),l=1/(o-s);return t[0]=o*2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o*2*c,t[6]=0,t[7]=0,t[8]=(r+e)*a,t[9]=(i+n)*c,t[10]=(s+o)*l,t[11]=-1,t[12]=0,t[13]=0,t[14]=s*o*2*l,t[15]=0,t}function Cd(t,e,r,n,i){let o=1/Math.tan(e/2);if(t[0]=o/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,i!=null&&i!==1/0){let s=1/(n-i);t[10]=(i+n)*s,t[14]=2*i*n*s}else t[10]=-1,t[14]=-2*n;return t}var ec=Cd;function Ad(t,e,r,n,i,o,s){let a=1/(e-r),c=1/(n-i),l=1/(o-s);return t[0]=-2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*l,t[11]=0,t[12]=(e+r)*a,t[13]=(i+n)*c,t[14]=(s+o)*l,t[15]=1,t}var tc=Ad;function rc(t,e,r,n){let i,o,s,a,c,l,h,u,f,d,m=e[0],p=e[1],g=e[2],_=n[0],y=n[1],S=n[2],x=r[0],w=r[1],T=r[2];return Math.abs(m-x)<1e-6&&Math.abs(p-w)<1e-6&&Math.abs(g-T)<1e-6?Rd(t):(u=m-x,f=p-w,d=g-T,i=1/Math.sqrt(u*u+f*f+d*d),u*=i,f*=i,d*=i,o=y*d-S*f,s=S*u-_*d,a=_*f-y*u,i=Math.sqrt(o*o+s*s+a*a),i?(i=1/i,o*=i,s*=i,a*=i):(o=0,s=0,a=0),c=f*a-d*s,l=d*o-u*a,h=u*s-f*o,i=Math.sqrt(c*c+l*l+h*h),i?(i=1/i,c*=i,l*=i,h*=i):(c=0,l=0,h=0),t[0]=o,t[1]=c,t[2]=u,t[3]=0,t[4]=s,t[5]=l,t[6]=f,t[7]=0,t[8]=a,t[9]=h,t[10]=d,t[11]=0,t[12]=-(o*m+s*p+a*g),t[13]=-(c*m+l*p+h*g),t[14]=-(u*m+f*p+d*g),t[15]=1,t)}function nc(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t}function ic(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t}function oc(t){let e=t[0],r=t[1],n=t[2],i=t[3];return Math.sqrt(e*e+r*r+n*n+i*i)}function sc(t){let e=t[0],r=t[1],n=t[2],i=t[3];return e*e+r*r+n*n+i*i}function ac(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=r*r+n*n+i*i+o*o;return s>0&&(s=1/Math.sqrt(s)),t[0]=r*s,t[1]=n*s,t[2]=i*s,t[3]=o*s,t}function cc(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function lc(t,e,r,n){let i=e[0],o=e[1],s=e[2],a=e[3];return t[0]=i+n*(r[0]-i),t[1]=o+n*(r[1]-o),t[2]=s+n*(r[2]-s),t[3]=a+n*(r[3]-a),t}function hc(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*o+r[12]*s,t[1]=r[1]*n+r[5]*i+r[9]*o+r[13]*s,t[2]=r[2]*n+r[6]*i+r[10]*o+r[14]*s,t[3]=r[3]*n+r[7]*i+r[11]*o+r[15]*s,t}var go;(function(t){t[t.COL0ROW0=0]="COL0ROW0",t[t.COL0ROW1=1]="COL0ROW1",t[t.COL0ROW2=2]="COL0ROW2",t[t.COL0ROW3=3]="COL0ROW3",t[t.COL1ROW0=4]="COL1ROW0",t[t.COL1ROW1=5]="COL1ROW1",t[t.COL1ROW2=6]="COL1ROW2",t[t.COL1ROW3=7]="COL1ROW3",t[t.COL2ROW0=8]="COL2ROW0",t[t.COL2ROW1=9]="COL2ROW1",t[t.COL2ROW2=10]="COL2ROW2",t[t.COL2ROW3=11]="COL2ROW3",t[t.COL3ROW0=12]="COL3ROW0",t[t.COL3ROW1=13]="COL3ROW1",t[t.COL3ROW2=14]="COL3ROW2",t[t.COL3ROW3=15]="COL3ROW3"})(go||(go={}));var Od=45*Math.PI/180,Nd=1,mo=.1,po=500,Ld=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),G=class extends Nt{static get IDENTITY(){return qd()}static get ZERO(){return Gd()}get ELEMENTS(){return 16}get RANK(){return 4}get INDICES(){return go}constructor(e){super(-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(e)?this.copy(e):this.identity()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this[9]=e[9],this[10]=e[10],this[11]=e[11],this[12]=e[12],this[13]=e[13],this[14]=e[14],this[15]=e[15],this.check()}set(e,r,n,i,o,s,a,c,l,h,u,f,d,m,p,g){return this[0]=e,this[1]=r,this[2]=n,this[3]=i,this[4]=o,this[5]=s,this[6]=a,this[7]=c,this[8]=l,this[9]=h,this[10]=u,this[11]=f,this[12]=d,this[13]=m,this[14]=p,this[15]=g,this.check()}setRowMajor(e,r,n,i,o,s,a,c,l,h,u,f,d,m,p,g){return this[0]=e,this[1]=o,this[2]=l,this[3]=d,this[4]=r,this[5]=s,this[6]=h,this[7]=m,this[8]=n,this[9]=a,this[10]=u,this[11]=p,this[12]=i,this[13]=c,this[14]=f,this[15]=g,this.check()}toRowMajor(e){return e[0]=this[0],e[1]=this[4],e[2]=this[8],e[3]=this[12],e[4]=this[1],e[5]=this[5],e[6]=this[9],e[7]=this[13],e[8]=this[2],e[9]=this[6],e[10]=this[10],e[11]=this[14],e[12]=this[3],e[13]=this[7],e[14]=this[11],e[15]=this[15],e}identity(){return this.copy(Ld)}fromObject(e){return this.check()}fromQuaternion(e){return Qa(this,e),this.check()}fromMatrix3(e){return this.set(e[0],e[1],e[2],0,e[3],e[4],e[5],0,e[6],e[7],e[8],0,0,0,0,1)}frustum(e){let{left:r,right:n,bottom:i,top:o,near:s=mo,far:a=po}=e;return a===1/0?zd(this,r,n,i,o,s):Ja(this,r,n,i,o,s,a),this.check()}lookAt(e){let{eye:r,center:n=[0,0,0],up:i=[0,1,0]}=e;return rc(this,r,n,i),this.check()}ortho(e){let{left:r,right:n,bottom:i,top:o,near:s=mo,far:a=po}=e;return tc(this,r,n,i,o,s,a),this.check()}orthographic(e){let{fovy:r=Od,aspect:n=Nd,focalDistance:i=1,near:o=mo,far:s=po}=e;uc(r);let a=r/2,c=i*Math.tan(a),l=c*n;return this.ortho({left:-l,right:l,bottom:-c,top:c,near:o,far:s})}perspective(e){let{fovy:r=45*Math.PI/180,aspect:n=1,near:i=.1,far:o=500}=e;return uc(r),ec(this,r,n,i,o),this.check()}determinant(){return ja(this)}getScale(e=[-0,-0,-0]){return e[0]=Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2]),e[1]=Math.sqrt(this[4]*this[4]+this[5]*this[5]+this[6]*this[6]),e[2]=Math.sqrt(this[8]*this[8]+this[9]*this[9]+this[10]*this[10]),e}getTranslation(e=[-0,-0,-0]){return e[0]=this[12],e[1]=this[13],e[2]=this[14],e}getRotation(e,r){e=e||[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],r=r||[-0,-0,-0];let n=this.getScale(r),i=1/n[0],o=1/n[1],s=1/n[2];return e[0]=this[0]*i,e[1]=this[1]*o,e[2]=this[2]*s,e[3]=0,e[4]=this[4]*i,e[5]=this[5]*o,e[6]=this[6]*s,e[7]=0,e[8]=this[8]*i,e[9]=this[9]*o,e[10]=this[10]*s,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}getRotationMatrix3(e,r){e=e||[-0,-0,-0,-0,-0,-0,-0,-0,-0],r=r||[-0,-0,-0];let n=this.getScale(r),i=1/n[0],o=1/n[1],s=1/n[2];return e[0]=this[0]*i,e[1]=this[1]*o,e[2]=this[2]*s,e[3]=this[4]*i,e[4]=this[5]*o,e[5]=this[6]*s,e[6]=this[8]*i,e[7]=this[9]*o,e[8]=this[10]*s,e}transpose(){return Ua(this,this),this.check()}invert(){return Va(this,this),this.check()}multiplyLeft(e){return fo(this,e,this),this.check()}multiplyRight(e){return fo(this,this,e),this.check()}rotateX(e){return Ya(this,this,e),this.check()}rotateY(e){return Ka(this,this,e),this.check()}rotateZ(e){return Xa(this,this,e),this.check()}rotateXYZ(e){return this.rotateX(e[0]).rotateY(e[1]).rotateZ(e[2])}rotateAxis(e,r){return $a(this,this,e,r),this.check()}scale(e){return Ha(this,this,Array.isArray(e)?e:[e,e,e]),this.check()}translate(e){return Wa(this,this,e),this.check()}transform(e,r){return e.length===4?(r=hc(r||[-0,-0,-0,-0],e,this),Ot(r,4),r):this.transformAsPoint(e,r)}transformAsPoint(e,r){let{length:n}=e,i;switch(n){case 2:i=pn(r||[-0,-0],e,this);break;case 3:i=_n(r||[-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return Ot(i,e.length),i}transformAsVector(e,r){let n;switch(e.length){case 2:n=gn(r||[-0,-0],e,this);break;case 3:n=Mn(r||[-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return Ot(n,e.length),n}makeRotationX(e){return this.identity().rotateX(e)}makeTranslation(e,r,n){return this.identity().translate([e,r,n])}},En,Tn;function Gd(){return En||(En=new G([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),Object.freeze(En)),En}function qd(){return Tn||(Tn=new G,Object.freeze(Tn)),Tn}function uc(t){if(t>Math.PI*2)throw Error("expected radians")}function zd(t,e,r,n,i,o){let s=2*o/(r-e),a=2*o/(i-n),c=(r+e)/(r-e),l=(i+n)/(i-n),h=-1,u=-1,f=-2*o;return t[0]=s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=c,t[9]=l,t[10]=h,t[11]=u,t[12]=0,t[13]=0,t[14]=f,t[15]=0,t}function fc(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}function Mo(t,e,r){r=r*.5;let n=Math.sin(r);return t[0]=n*e[0],t[1]=n*e[1],t[2]=n*e[2],t[3]=Math.cos(r),t}function _o(t,e,r){let n=e[0],i=e[1],o=e[2],s=e[3],a=r[0],c=r[1],l=r[2],h=r[3];return t[0]=n*h+s*a+i*l-o*c,t[1]=i*h+s*c+o*a-n*l,t[2]=o*h+s*l+n*c-i*a,t[3]=s*h-n*a-i*c-o*l,t}function dc(t,e,r){r*=.5;let n=e[0],i=e[1],o=e[2],s=e[3],a=Math.sin(r),c=Math.cos(r);return t[0]=n*c+s*a,t[1]=i*c+o*a,t[2]=o*c-i*a,t[3]=s*c-n*a,t}function mc(t,e,r){r*=.5;let n=e[0],i=e[1],o=e[2],s=e[3],a=Math.sin(r),c=Math.cos(r);return t[0]=n*c-o*a,t[1]=i*c+s*a,t[2]=o*c+n*a,t[3]=s*c-i*a,t}function pc(t,e,r){r*=.5;let n=e[0],i=e[1],o=e[2],s=e[3],a=Math.sin(r),c=Math.cos(r);return t[0]=n*c+i*a,t[1]=i*c-n*a,t[2]=o*c+s*a,t[3]=s*c-o*a,t}function gc(t,e){let r=e[0],n=e[1],i=e[2];return t[0]=r,t[1]=n,t[2]=i,t[3]=Math.sqrt(Math.abs(1-r*r-n*n-i*i)),t}function Mc(t,e,r,n){let i=e[0],o=e[1],s=e[2],a=e[3],c=r[0],l=r[1],h=r[2],u=r[3],f,d,m,p,g;return f=i*c+o*l+s*h+a*u,f<0&&(f=-f,c=-c,l=-l,h=-h,u=-u),1-f>1e-6?(d=Math.acos(f),g=Math.sin(d),m=Math.sin((1-n)*d)/g,p=Math.sin(n*d)/g):(m=1-n,p=n),t[0]=m*i+p*c,t[1]=m*o+p*l,t[2]=m*s+p*h,t[3]=m*a+p*u,t}function _c(t,e){let r=e[0],n=e[1],i=e[2],o=e[3],s=r*r+n*n+i*i+o*o,a=s?1/s:0;return t[0]=-r*a,t[1]=-n*a,t[2]=-i*a,t[3]=o*a,t}function yc(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t}function xc(t,e){let r=e[0]+e[4]+e[8],n;if(r>0)n=Math.sqrt(r+1),t[3]=.5*n,n=.5/n,t[0]=(e[5]-e[7])*n,t[1]=(e[6]-e[2])*n,t[2]=(e[1]-e[3])*n;else{let i=0;e[4]>e[0]&&(i=1),e[8]>e[i*3+i]&&(i=2);let o=(i+1)%3,s=(i+2)%3;n=Math.sqrt(e[i*3+i]-e[o*3+o]-e[s*3+s]+1),t[i]=.5*n,n=.5/n,t[3]=(e[o*3+s]-e[s*3+o])*n,t[o]=(e[o*3+i]+e[i*3+o])*n,t[s]=(e[s*3+i]+e[i*3+s])*n}return t}var Sc=nc;var wc=ic,Ec=cc,Tc=lc,bc=oc;var vc=sc;var Bd=ac;var Pc=(function(){let t=Ra(),e=ao(1,0,0),r=ao(0,1,0);return function(n,i,o){let s=lr(i,o);return s<-.999999?(Gt(t,e,i),Ga(t)<1e-6&&Gt(t,r,i),Ca(t,t),Mo(n,t,Math.PI),n):s>.999999?(n[0]=0,n[1]=0,n[2]=0,n[3]=1,n):(Gt(t,i,o),n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=1+s,Bd(n,n))}})();var Ge=class extends ft{constructor(e=0,r=0,n=0,i=1){super(-0,-0,-0,-0),Array.isArray(e)&&arguments.length===1?this.copy(e):this.set(e,r,n,i)}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this.check()}set(e,r,n,i){return this[0]=e,this[1]=r,this[2]=n,this[3]=i,this.check()}fromObject(e){return this[0]=e.x,this[1]=e.y,this[2]=e.z,this[3]=e.w,this.check()}fromMatrix3(e){return xc(this,e),this.check()}fromEuler(e){switch(this.identity(),e.order){case"xyz":return this.rotateX(e.x).rotateY(e.y).rotateZ(e.z);case"yxz":return this.rotateY(e.y).rotateX(e.x).rotateZ(e.z);case"zxy":return this.rotateZ(e.z).rotateX(e.x).rotateY(e.y);case"zyx":return this.rotateZ(e.z).rotateY(e.y).rotateX(e.x);case"yzx":return this.rotateY(e.y).rotateZ(e.z).rotateX(e.x);case"xzy":return this.rotateX(e.x).rotateZ(e.z).rotateY(e.y);default:throw new Error("Unknown Euler angle order")}}fromAxisRotation(e,r){return Mo(this,e,r),this.check()}identity(){return fc(this),this.check()}setAxisAngle(e,r){return this.fromAxisRotation(e,r)}get ELEMENTS(){return 4}get x(){return this[0]}set x(e){this[0]=W(e)}get y(){return this[1]}set y(e){this[1]=W(e)}get z(){return this[2]}set z(e){this[2]=W(e)}get w(){return this[3]}set w(e){this[3]=W(e)}len(){return bc(this)}lengthSquared(){return vc(this)}dot(e){return Ec(this,e)}rotationTo(e,r){return Pc(this,e,r),this.check()}add(e){return Sc(this,this,e),this.check()}calculateW(){return gc(this,this),this.check()}conjugate(){return yc(this,this),this.check()}invert(){return _c(this,this),this.check()}lerp(e,r,n){return n===void 0?this.lerp(this,e,r):(Tc(this,e,r,n),this.check())}multiplyRight(e){return _o(this,this,e),this.check()}multiplyLeft(e){return _o(this,e,this),this.check()}normalize(){let e=this.len(),r=e>0?1/e:0;return this[0]=this[0]*r,this[1]=this[1]*r,this[2]=this[2]*r,this[3]=this[3]*r,e===0&&(this[3]=1),this.check()}rotateX(e){return dc(this,this,e),this.check()}rotateY(e){return mc(this,this,e),this.check()}rotateZ(e){return pc(this,this,e),this.check()}scale(e){return wc(this,this,e),this.check()}slerp(e,r,n){let i,o,s;return arguments.length===2?(i=this,o=e,s=r):(i=e,o=r,s=n),Mc(this,i,o,s),this.check()}lengthSq(){return this.lengthSquared()}setFromAxisAngle(e,r){return this.setAxisAngle(e,r)}premultiply(e){return this.multiplyLeft(e)}multiply(e){return this.multiplyRight(e)}};function bn(t,e,r=t){let n=t.x,i=t.y,o=t.z,{semiMajorAxis:s,semiMinorAxis:a,eccentricitySquared:c}=e,l=Math.sin(i),h=Math.cos(i),u=a/s,f=c<.9?s/Math.sqrt(1-c*l*l):s/Math.hypot(h,u*l),d=(f+o)*h*Math.cos(n),m=(f+o)*h*Math.sin(n),p=(f*(c<.9?1-c:u*u)+o)*l;return hr(r,d,m,p)}function vn(t,e,r=t){let n=t.x,i=t.y,o=t.z,{semiMajorAxis:s,semiMinorAxis:a,eccentricitySquared:c}=e,l=Math.hypot(n,i),h=Math.hypot(n,i,o);if(!(h>0)||!Number.isFinite(h))return!1;if(c===0)return hr(r,l===0?0:Math.atan2(i,n),Math.atan2(o,l),h-s);if(l===0)return hr(r,0,Math.sign(o)*Math.PI/2,Math.abs(o)-a);if(c>=.9)return Rc(n,i,o,l,s,a,r);let u=o/h,f=l/h,d=1/Math.sqrt(1-c*(2-c)*f*f),m=f*(1-c)*d,p=u*d;for(let g=0;g<30;g++){let _=s/Math.sqrt(1-c*p*p),y=l*m+o*p-_*(1-c*p*p),S=c*_/(_+y);d=1/Math.sqrt(1-S*(2-S)*f*f);let x=f*(1-S)*d,w=u*d;if(Math.abs(w*m-x*p)<=1e-12){if(!Number.isFinite(y)||!Number.isFinite(w)||!Number.isFinite(x))break;return hr(r,Math.atan2(i,n),Math.atan2(w,Math.abs(x)),y)}m=x,p=w}return Rc(n,i,o,l,s,a,r)}function Rc(t,e,r,n,i,o,s){let a=o/i,c=a*a,l=n/i,h=r/i,u=Math.hypot(l,r/o);if(!Number.isFinite(u)||u<1-8*Number.EPSILON||!(c>0))return!1;let f=0,d=Math.hypot(l,h*a);if(!Number.isFinite(d))return!1;let m=u<=1+8*Number.EPSILON?0:d/2;for(let p=0;p<96;p++){let g=1+m,_=c+m,y=l/g,S=h*a/_,x=Math.hypot(y,S),w=x-1;if(Math.abs(w)<=4*Number.EPSILON){let C=Math.atan2(h/_,l/g),O=Math.sin(C),b=Math.cos(C),I=n*b+r*O-i*Math.hypot(b,a*O);return hr(s,Math.atan2(e,t),C,I)}w>0?f=m:d=m;let T=-(y*y/g+S*S/_)/x,v=m-w/T;m=Number.isFinite(v)&&v>f&&v<d?v:(f+d)/2}return!1}function hr(t,e,r,n){return!Number.isFinite(e)||!Number.isFinite(r)||!Number.isFinite(n)?!1:(t.x=e,t.y=r,t.z=n,!0)}var ot=6356752314245179e-9,Dd={radii:[6378137,6378137,ot],radiiSquared:[6378137*6378137,6378137*6378137,ot*ot],oneOverRadii:[1/6378137,1/6378137,1/ot],oneOverRadiiSquared:[1/(6378137*6378137),1/(6378137*6378137),1/(ot*ot)],maximumRadius:Math.max(6378137,6378137,ot),centerToleranceSquared:.1};function yo(t){return t}var f_=new M;function kd(t,e=[],r=yo){return"longitude"in t?(e[0]=r(t.longitude),e[1]=r(t.latitude),e[2]=t.height):"x"in t?(e[0]=r(t.x),e[1]=r(t.y),e[2]=t.z):(e[0]=r(t[0]),e[1]=r(t[1]),e[2]=t[2]),e}function xo(t,e=[]){return kd(t,e,Y._cartographicRadians?yo:ro)}function So(t,e,r,n){let i=Y._cartographicRadians?yo:no,o=i(t),s=i(e);return"longitude"in n?(n.longitude=o,n.latitude=s,n.height=r):"x"in n?(n.x=o,n.y=s,n.z=r):(n[0]=o,n[1]=s,n[2]=r),n}var Cc=1e-14,Fd=new M,Ac={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},wo={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},ur={east:new M,north:new M,up:new M,west:new M,south:new M,down:new M},Ud=new M,Vd=new M,jd=new M;function Eo(t,e,r,n,i,o){let s=Ac[e]&&Ac[e][r];oe(s&&(!n||n===s));let a,c,l,h=Fd.copy(i);if(be(h.x,0,Cc)&&be(h.y,0,Cc)){let f=Math.sign(h.z);a=Ud.fromArray(wo[e]),e!=="east"&&e!=="west"&&a.scale(f),c=Vd.fromArray(wo[r]),r!=="east"&&r!=="west"&&c.scale(f),l=jd.fromArray(wo[n]),n!=="east"&&n!=="west"&&l.scale(f)}else{let{up:f,east:d,north:m}=ur;d.set(-h.y,h.x,0).normalize(),t.geodeticSurfaceNormal(h,f),m.copy(f).cross(d);let{down:p,west:g,south:_}=ur;p.copy(f).scale(-1),g.copy(d).scale(-1),_.copy(m).scale(-1),a=ur[e],c=ur[r],l=ur[n]}return o[0]=a.x,o[1]=a.y,o[2]=a.z,o[3]=0,o[4]=c.x,o[5]=c.y,o[6]=c.z,o[7]=0,o[8]=l.x,o[9]=l.y,o[10]=l.z,o[11]=0,o[12]=h.x,o[13]=h.y,o[14]=h.z,o[15]=1,o}var Ic=new M,Wd=new M,Hd=new M;function Oc(t,e,r=[]){let{oneOverRadii:n,oneOverRadiiSquared:i,centerToleranceSquared:o}=e,s=t,a="x"in t?s.x:t[0],c="x"in t?s.y:t[1],l="x"in t?s.z:t[2];if(!Number.isFinite(a)||!Number.isFinite(c)||!Number.isFinite(l))return;Ic.set(a,c,l);let h=n.x,u=n.y,f=n.z,d=a*a*h*h,m=c*c*u*u,p=l*l*f*f,g=d+m+p,_=Math.sqrt(1/g);if(!Number.isFinite(_)||!Number.isFinite(g))return;let y=Wd;if(y.set(a,c,l).scale(_),g<o)return Pn(r,y.x,y.y,y.z);let S=i.x,x=i.y,w=i.z,T=Hd;T.set(y.x*S*2,y.y*x*2,y.z*w*2);let v=(1-_)*Ic.len()/(.5*T.len()),C=0,O,b,I,A;for(let k=0;k<64;k++){v-=C,O=1/(1+v*S),b=1/(1+v*x),I=1/(1+v*w);let q=O*O,j=b*b,Ye=I*I,$i=q*O,ga=j*b,Yi=Ye*I;if(A=d*q+m*j+p*Ye-1,!Number.isFinite(A))return;if(Math.abs(A)<=U.EPSILON12)return Pn(r,a*O,c*b,l*I);let or=-2*(d*$i*S+m*ga*x+p*Yi*w);if(!Number.isFinite(or)||or===0||(C=A/or,!Number.isFinite(C)))return}}function Pn(t,e,r,n){if(Ne(t))t[0]=e,t[1]=r,t[2]=n;else{let i=t;i.x=e,i.y=r,i.z=n}return t}var _e={x:0,y:0,z:0},Rn=new M,Nc=new M,Kd=new M,Fe=new M,Xd=new M,fr=new M,N=class t{static fromSpheroid(e){let{semiMajorAxis:r,semiMinorAxis:n}=e;return Lc(r,n),new t(r,r,n)}constructor(e=0,r=0,n=0){this.centerToleranceSquared=U.EPSILON1,oe(e>=0),oe(r>=0),oe(n>=0),this.radii=new M(e,r,n),this.radiiSquared=new M(e*e,r*r,n*n),this.radiiToTheFourth=new M(e*e*e*e,r*r*r*r,n*n*n*n),this.oneOverRadii=new M(e===0?0:1/e,r===0?0:1/r,n===0?0:1/n),this.oneOverRadiiSquared=new M(e===0?0:1/(e*e),r===0?0:1/(r*r),n===0?0:1/(n*n)),this.minimumRadius=Math.min(e,r,n),this.maximumRadius=Math.max(e,r,n),this.radiiSquared.z!==0&&(this.squaredXOverSquaredZ=this.radiiSquared.x/this.radiiSquared.z),e===r&&n>0&&n<=e&&Number.isFinite(this.radiiSquared.x)&&this.radiiSquared.z>0&&(this.spheroidGeometry=Object.freeze({semiMajorAxis:e,semiMinorAxis:n,eccentricitySquared:1-this.radiiSquared.z/this.radiiSquared.x})),Object.freeze(this)}toSpheroid(){let{x:e,y:r,z:n}=this.radii;if(e!==r)throw new Error("Spheroid requires equal X/Y radii");return Lc(e,n),Object.freeze({semiMajorAxis:e,semiMinorAxis:n})}equals(e){return this===e||!!(e&&this.radii.equals(e.radii))}toString(){return this.radii.toString()}cartographicToCartesian(e,r=[0,0,0]){if(this.spheroidGeometry){let a=xo(e,fr);return _e.x=a[0],_e.y=a[1],_e.z=a[2],bn(_e,this.spheroidGeometry)?Pn(r,_e.x,_e.y,_e.z):void 0}let n=Nc,i=Kd,[,,o]=e;this.geodeticSurfaceNormalCartographic(e,n),i.copy(this.radiiSquared).scale(n);let s=Math.sqrt(n.dot(i));return i.scale(1/s),n.scale(o),i.add(n),i.to(r)}cartesianToCartographic(e,r=[0,0,0]){let n=e,i="x"in e?n.x:e[0],o="x"in e?n.y:e[1],s="x"in e?n.z:e[2];if(!Number.isFinite(i)||!Number.isFinite(o)||!Number.isFinite(s))return;let a=this.radii.x,c=this.radii.z,l=(i/a)**2+(o/a)**2+(s/c)**2;if(this.spheroidGeometry&&Number.isFinite(l)&&l>=1-16*Number.EPSILON&&Number.isFinite(i*i+o*o+s*s)){if(_e.x=i,_e.y=o,_e.z=s,!vn(_e,this.spheroidGeometry))return;let g=i===0&&o===0?Math.atan2(o,i):_e.x;return So(g,_e.y,_e.z,r)}fr.set(i,o,s);let h=this.scaleToGeodeticSurface(fr,Fe);if(!h)return;let u=this.geodeticSurfaceNormal(h,Nc),f=Xd;f.copy(fr).subtract(h);let d=Math.atan2(u.y,u.x),m=Math.atan2(u.z,Math.hypot(u.x,u.y)),p=Math.sign(lr(f,fr))*so(f);return So(d,m,p,r)}eastNorthUpToFixedFrame(e,r=new G){return Eo(this,"east","north","up",e,r)}localFrameToFixedFrame(e,r,n,i,o=new G){return Eo(this,e,r,n,i,o)}geocentricSurfaceNormal(e,r=[0,0,0]){return Rn.from(e).normalize().to(r)}geodeticSurfaceNormalCartographic(e,r=[0,0,0]){let n=xo(e),i=n[0],o=n[1],s=Math.cos(o);return Rn.set(s*Math.cos(i),s*Math.sin(i),Math.sin(o)).normalize(),Rn.to(r)}geodeticSurfaceNormal(e,r=[0,0,0]){return Rn.from(e).scale(this.oneOverRadiiSquared).normalize().to(r)}scaleToGeodeticSurface(e,r){return Oc(e,this,r)}scaleToGeocentricSurface(e,r=[0,0,0]){Fe.from(e);let n=Fe.x,i=Fe.y,o=Fe.z,s=this.oneOverRadiiSquared,a=1/Math.sqrt(n*n*s.x+i*i*s.y+o*o*s.z);return Fe.multiplyByScalar(a).to(r)}transformPositionToScaledSpace(e,r=[0,0,0]){return Fe.from(e).scale(this.oneOverRadii).to(r)}transformPositionFromScaledSpace(e,r=[0,0,0]){return Fe.from(e).scale(this.radii).to(r)}getSurfaceNormalIntersectionWithZAxis(e,r=0,n=[0,0,0]){oe(be(this.radii.x,this.radii.y,U.EPSILON15)),oe(this.radii.z>0),Fe.from(e);let i=Fe.z*(1-this.squaredXOverSquaredZ);if(!(Math.abs(i)>=this.radii.z-r))return Fe.set(0,0,i).to(n)}};N.WGS84=new N(6378137,6378137,ot);function Lc(t,e){if(!Number.isFinite(t)||!Number.isFinite(e)||t<=0||e<=0||e>t)throw new Error("Spheroid requires finite positive axes with semiMinorAxis <= semiMajorAxis")}var To;(function(t){t.OUTSIDE="outside",t.INTERSECTING="intersecting",t.INSIDE="inside"})(To||(To={}));var R_=new M,C_=new M;var dr=new M,Gc=new M,fe=class t{constructor(e=[0,0,0],r=0){this.radius=-0,this.center=new M,this.fromCenterRadius(e,r)}fromCenterRadius(e,r){return this.center.from(e),this.radius=r,this}fromCornerPoints(e,r){return r=dr.from(r),this.center=new M().from(e).add(r).scale(.5),this.radius=this.center.distance(r),this}equals(e){return this===e||!!e&&this.center.equals(e.center)&&this.radius===e.radius}clone(){return new t(this.center,this.radius)}union(e){let r=this.center,n=this.radius,i=e.center,o=e.radius,s=dr.copy(i).subtract(r),a=s.magnitude();if(n>=a+o)return this.clone();if(o>=a+n)return e.clone();let c=(n+a+o)*.5;return Gc.copy(s).scale((-n+c)/a).add(r),this.center.copy(Gc),this.radius=c,this}expand(e){let n=dr.from(e).subtract(this.center).magnitude();return n>this.radius&&(this.radius=n),this}transform(e){this.center.transform(e);let r=Za(dr,e);return this.radius=Math.max(r[0],Math.max(r[1],r[2]))*this.radius,this}distanceSquaredTo(e){let r=this.distanceTo(e);return r*r}distanceTo(e){let n=dr.from(e).subtract(this.center);return Math.max(0,n.len()-this.radius)}intersectPlane(e){let r=this.center,n=this.radius,o=e.normal.dot(r)+e.distance;return o<-n?"outside":o<n?"intersecting":"inside"}};var Zd=new M,Qd=new M,Cn=new M,An=new M,In=new M,Jd=new M,em=new M,st={COLUMN0ROW0:0,COLUMN0ROW1:1,COLUMN0ROW2:2,COLUMN1ROW0:3,COLUMN1ROW1:4,COLUMN1ROW2:5,COLUMN2ROW0:6,COLUMN2ROW1:7,COLUMN2ROW2:8},Xe=class t{constructor(e=[0,0,0],r=[0,0,0,0,0,0,0,0,0]){this.center=new M().from(e),this.halfAxes=new H(r)}get halfSize(){let e=this.halfAxes.getColumn(0),r=this.halfAxes.getColumn(1),n=this.halfAxes.getColumn(2);return[new M(e).len(),new M(r).len(),new M(n).len()]}get quaternion(){let e=this.halfAxes.getColumn(0),r=this.halfAxes.getColumn(1),n=this.halfAxes.getColumn(2),i=new M(e).normalize(),o=new M(r).normalize(),s=new M(n).normalize();return new Ge().fromMatrix3(new H([...i,...o,...s]))}fromCenterHalfSizeQuaternion(e,r,n){let i=new Ge(n),o=new H().fromQuaternion(i);return o[0]=o[0]*r[0],o[1]=o[1]*r[0],o[2]=o[2]*r[0],o[3]=o[3]*r[1],o[4]=o[4]*r[1],o[5]=o[5]*r[1],o[6]=o[6]*r[2],o[7]=o[7]*r[2],o[8]=o[8]*r[2],this.center=new M().from(e),this.halfAxes=o,this}clone(){return new t(this.center,this.halfAxes)}equals(e){return this===e||!!e&&this.center.equals(e.center)&&this.halfAxes.equals(e.halfAxes)}getBoundingSphere(e=new fe){let r=this.halfAxes,n=r.getColumn(0,Cn),i=r.getColumn(1,An),o=r.getColumn(2,In),s=Zd.copy(n).add(i).add(o);return e.center.copy(this.center),e.radius=s.magnitude(),e}intersectPlane(e){let r=this.center,n=e.normal,i=this.halfAxes,o=n.x,s=n.y,a=n.z,c=Math.abs(o*i[st.COLUMN0ROW0]+s*i[st.COLUMN0ROW1]+a*i[st.COLUMN0ROW2])+Math.abs(o*i[st.COLUMN1ROW0]+s*i[st.COLUMN1ROW1]+a*i[st.COLUMN1ROW2])+Math.abs(o*i[st.COLUMN2ROW0]+s*i[st.COLUMN2ROW1]+a*i[st.COLUMN2ROW2]),l=n.dot(r)+e.distance;return l<=-c?"outside":l>=c?"inside":"intersecting"}distanceTo(e){return Math.sqrt(this.distanceSquaredTo(e))}distanceSquaredTo(e){let r=Qd.from(e).subtract(this.center),n=this.halfAxes,i=n.getColumn(0,Cn),o=n.getColumn(1,An),s=n.getColumn(2,In),a=i.magnitude(),c=o.magnitude(),l=s.magnitude();i.normalize(),o.normalize(),s.normalize();let h=0,u;return u=Math.abs(r.dot(i))-a,u>0&&(h+=u*u),u=Math.abs(r.dot(o))-c,u>0&&(h+=u*u),u=Math.abs(r.dot(s))-l,u>0&&(h+=u*u),h}computePlaneDistances(e,r,n=[-0,-0]){let i=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY,s=this.center,a=this.halfAxes,c=a.getColumn(0,Cn),l=a.getColumn(1,An),h=a.getColumn(2,In),u=Jd.copy(c).add(l).add(h).add(s),f=em.copy(u).subtract(e),d=r.dot(f);return i=Math.min(d,i),o=Math.max(d,o),u.copy(s).add(c).add(l).subtract(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),u.copy(s).add(c).subtract(l).add(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),u.copy(s).add(c).subtract(l).subtract(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),s.copy(u).subtract(c).add(l).add(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),s.copy(u).subtract(c).add(l).subtract(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),s.copy(u).subtract(c).subtract(l).add(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),s.copy(u).subtract(c).subtract(l).subtract(h),f.copy(u).subtract(e),d=r.dot(f),i=Math.min(d,i),o=Math.max(d,o),n[0]=i,n[1]=o,n}transform(e){this.center.transformAsPoint(e);let r=this.halfAxes.getColumn(0,Cn);r.transformAsPoint(e);let n=this.halfAxes.getColumn(1,An);n.transformAsPoint(e);let i=this.halfAxes.getColumn(2,In);return i.transformAsPoint(e),this.halfAxes=new H([...r,...n,...i]),this}getTransform(){throw new Error("not implemented")}};var qc=new M,zc=new M,re=class t{constructor(e=[0,0,1],r=0){this.normal=new M,this.distance=-0,this.fromNormalDistance(e,r)}fromNormalDistance(e,r){return oe(Number.isFinite(r)),this.normal.from(e).normalize(),this.distance=r,this}fromPointNormal(e,r){e=qc.from(e),this.normal.from(r).normalize();let n=-this.normal.dot(e);return this.distance=n,this}fromCoefficients(e,r,n,i){return this.normal.set(e,r,n),oe(be(this.normal.len(),1)),this.distance=i,this}clone(){return new t(this.normal,this.distance)}equals(e){return be(this.distance,e.distance)&&be(this.normal,e.normal)}getPointDistance(e){return this.normal.dot(e)+this.distance}transform(e){let r=zc.copy(this.normal).transformAsVector(e).normalize(),n=this.normal.scale(-this.distance).transform(e);return this.fromPointNormal(n,r)}projectPointOntoPlane(e,r=[0,0,0]){let n=qc.from(e),i=this.getPointDistance(n),o=zc.copy(this.normal).scale(i);return n.subtract(o).to(r)}intersectWithRay(e,r=new M){let n=e.origin,i=e.direction,o=this.normal,s=o.dot(i);if(Math.abs(s)<U.EPSILON15)return;let a=(-this.distance-o.dot(n))/s;if(!(a<0))return r.copy(i).multiplyByScalar(a).add(n)}};var Bc=[new M([1,0,0]),new M([0,1,0]),new M([0,0,1])],Dc=new M,tm=new M,se=class t{constructor(e=[]){this.planes=e}fromBoundingSphere(e){this.planes.length=2*Bc.length;let r=e.center,n=e.radius,i=0;for(let o of Bc){let s=this.planes[i],a=this.planes[i+1];s||(s=this.planes[i]=new re),a||(a=this.planes[i+1]=new re);let c=Dc.copy(o).scale(-n).add(r);s.fromPointNormal(c,o);let l=Dc.copy(o).scale(n).add(r),h=tm.copy(o).negate();a.fromPointNormal(l,h),i+=2}return this}computeVisibility(e){let r="inside";for(let n of this.planes)switch(e.intersectPlane(n)){case"outside":return"outside";case"intersecting":r="intersecting";break;default:}return r}computeVisibilityWithPlaneMask(e,r){if(oe(Number.isFinite(r),"parentPlaneMask is required."),r===t.MASK_OUTSIDE||r===t.MASK_INSIDE)return r;let n=t.MASK_INSIDE,i=this.planes;for(let o=0;o<this.planes.length;++o){let s=o<31?1<<o:0;if(o<31&&(r&s)===0)continue;let a=i[o],c=e.intersectPlane(a);if(c==="outside")return t.MASK_OUTSIDE;c==="intersecting"&&(n|=s)}return n}};se.MASK_OUTSIDE=4294967295;se.MASK_INSIDE=0;se.MASK_INDETERMINATE=2147483647;var sy=new M,ay=new M,cy=new M,ly=new M,hy=new M;var gy=new M,My=new M,_y=new M,yy=new M,xy=new M,Sy=new M,wy=new M,Ey=new M,Ty=new M,by=new M,vy=new M,Py=new M;var Ay=new H,Iy=new H,Oy=new H,Ny=new H,Ly=new H;var ky=new M,Fy=new M,Uy=new M,Vy=new M,jy=new M,Wy=new H,Hy={diagonal:new H,unitary:new H};var om=new M,bo=new M,sm=new G,am=new M,mr=class{constructor(e,r=N.WGS84){let n=r.scaleToGeodeticSurface(e,om),i=r.eastNorthUpToFixedFrame(n,sm);this._origin=new M(n),this._xAxis=new M(bo.from(i.getColumn(0))),this._yAxis=new M(bo.from(i.getColumn(1)));let o=new M(bo.from(i.getColumn(2)));this._plane=new re().fromPointNormal(this._origin,o)}projectPointToNearestOnPlane(e,r){r||(r=new Le);let i=this._plane.projectPointOntoPlane(e,am).subtract(this._origin),o=this._xAxis.dot(i),s=this._yAxis.dot(i);return r.x=o,r.y=s,r}get plane(){return this._plane}get origin(){return this._origin}get xAxis(){return this._xAxis}get yAxis(){return this._yAxis}get zAxis(){return this._plane.normal}};var qt=class{constructor(e,r,n,i){this.west=e,this.south=r,this.east=n,this.north=i}static center(e,r){r||(r=new M);let n=e.east,i=e.west;n<i&&(n+=U.TWO_PI);let o=io((i+n)*.5,"negative-pi-to-pi"),s=(e.south+e.north)*.5;return r.x=o,r.y=s,r.z=0,r}get width(){let e=this.east,r=this.west;return e<r&&(e+=U.TWO_PI),e-r}};var cm=new M,lm=new M,hm=new M,um=new M,fm=new M,dm=new M,mm=new M,pm=new M,Uc=new M,gm=new M,Vc=new M,Mm=new M,_m=new Le,ym=new Le,xm=new Le,Sm=new Le,wm=new Le,Em=new re,Tm=new M,bm=new M,vm=new M,Pm=new M,Rm=new Le,Cm=new M,Am=new M,Im=new M(1,0,0),Om=new M(0,0,1);function pr(t,e=N.WGS84,r={}){if(!t||t.length!==6||t.some(y=>!Number.isFinite(y)))throw new Error("makeOBBFromRegion: region must contain exactly six finite numbers");let n=r.units==="degrees"?fn(1):1,[i,o,s,a,c,l]=t;if(c>l)throw new Error("makeOBBFromRegion: minimumHeight must not exceed maximumHeight");let h=o*n,u=a*n,f=jc(i*n),d=jc(s*n);s*n-i*n>=U.TWO_PI-1e-12&&(d=f+U.TWO_PI);let p=1e-12;if(h>u||h<-U.PI_OVER_TWO-p||u>U.PI_OVER_TWO+p)throw new Error("makeOBBFromRegion: latitude must be within [-\u03C0/2, \u03C0/2] and south \u2264 north");let g=Math.max(-U.PI_OVER_TWO,Math.min(U.PI_OVER_TWO,h)),_=Math.max(-U.PI_OVER_TWO,Math.min(U.PI_OVER_TWO,u));return Nm([f,g,d,_,c,l],e,r.transform)}function jc(t){let e=((t+Math.PI)%U.TWO_PI+U.TWO_PI)%U.TWO_PI-Math.PI;return e===-Math.PI&&t>0?Math.PI:e}function Nm(t,e,r){let n=new Xe,[i,o,s,a,c,l]=t,h=ge(a),u=ge(o),f,d,m,p,g,_,y,S=new qt(i,o,s,a),x=qt.center(S,lm),w=new M([ge(x.x),ge(x.y),0]),T=x.x,v=w.x;if(S.width<=U.PI){let Ki=ge(i),C0=e.cartographicToCartesian(w),Ke=new mr(C0,e),A0=u<0&&h>0?0:w.y,I0=hm.copy([v,h,l]),Xi=um.copy([Ki,h,l]),O0=fm.copy([Ki,A0,l]),Zi=dm.copy([Ki,u,l]),N0=mm.copy([v,u,l]),L0=e.cartographicToCartesian(I0,pm),Qi=e.cartographicToCartesian(Xi,Uc),G0=e.cartographicToCartesian(O0,gm),Ji=e.cartographicToCartesian(Zi,Vc),q0=e.cartographicToCartesian(N0,Mm),z0=Ke.projectPointToNearestOnPlane(L0,_m),_a=Ke.projectPointToNearestOnPlane(Qi,ym),B0=Ke.projectPointToNearestOnPlane(G0,xm),ya=Ke.projectPointToNearestOnPlane(Ji,Sm),D0=Ke.projectPointToNearestOnPlane(q0,wm);return p=Math.min(_a.x,B0.x,ya.x),f=-p,d=Math.max(_a.y,z0.y),g=Math.min(ya.y,D0.y),Xi.z=Zi.z=c,Qi=e.cartographicToCartesian(Xi,Uc),Ji=e.cartographicToCartesian(Zi,Vc),y=Ke.plane,_=Math.min(y.getPointDistance(Qi),y.getPointDistance(Ji)),m=l,Wc($c(Ke.origin,Ke.xAxis,Ke.yAxis,Ke.zAxis,p,f,g,d,_,m,n),r)}let C=ge(s),O=o>0,b=a<0,I=O?u:b?h:0,A=e.cartographicToCartesian([v,I,l],Tm);A.z=0;let q=Math.abs(A.x)<U.EPSILON10&&Math.abs(A.y)<U.EPSILON10?Im:bm.copy(A).normalize(),j=Om,Ye=vm.copy(q).cross(j);y=Em.fromPointNormal(A,q);let $i=e.cartographicToCartesian([ge(T+U.PI_OVER_TWO),I,l],Pm);f=y.projectPointOntoPlane($i,Rm).dot(Ye),p=-f;let Yi=b?c:l,Ma=O?c:l;d=Hc(e,h,Yi,!0),g=Hc(e,u,Ma,!1);let or=e.cartographicToCartesian([C,I,l],Am);return _=y.getPointDistance(or),m=0,Wc($c(A,Ye,j,q,p,f,g,d,_,m,n),r)}function Wc(t,e){if(!e)return t;let r=[0,1,2].map(a=>t.halfAxes.getColumn(a,new M)),n=e.transformAsPoint(t.center),i=[1/0,1/0,1/0],o=[-1/0,-1/0,-1/0];for(let a=0;a<8;a++){let c=new M(n);for(let l=0;l<3;l++){let h=e.transformAsVector(r[l]);c.add(new M(h).scale((a&1<<l)===0?-1:1))}for(let l=0;l<3;l++)i[l]=Math.min(i[l],c[l]),o[l]=Math.max(o[l],c[l])}t.center.copy(i).add(o).scale(.5);let s=new M(o).subtract(i).scale(.5);return t.halfAxes=new H().set(s.x,0,0,0,s.y,0,0,0,s.z),t}function Hc(t,e,r,n){let i=n?-1/0:1/0;for(let o of[0,90,180,270]){let s=t.cartographicToCartesian([o,e,r],Cm).z;i=n?Math.max(i,s):Math.min(i,s)}return i}function $c(t,e,r,n,i,o,s,a,c,l,h){let u=h.center,f=h.halfAxes;f.setColumn(0,e),f.setColumn(1,r),f.setColumn(2,n);let d=cm.set((i+o)/2,(s+a)/2,(c+l)/2).transformByMatrix3(f),m=(o-i)/2,p=(a-s)/2,g=(l-c)/2;return f[0]*=m,f[1]*=m,f[2]*=m,f[3]*=p,f[4]*=p,f[5]*=p,f[6]*=g,f[7]*=g,f[8]*=g,u.copy(t).add(d),h}function gr(){let t;if(typeof window<"u"&&window.performance)t=window.performance.now();else if(typeof process<"u"&&process.hrtime){let e=process.hrtime();t=e[0]*1e3+e[1]/1e6}else t=Date.now();return t}var St=class{constructor(e,r){this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=e,this.type=r,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(e){return this.sampleSize=e,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(e){return this._count+=e,this._samples++,this._checkSampling(),this}subtractCount(e){return this._count-=e,this._samples++,this._checkSampling(),this}addTime(e){return this._time+=e,this.lastTiming=e,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=gr(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(gr()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var qe=class{constructor(e){this.stats={},this.id=e.id,this.stats={},this._initializeStats(e.stats),Object.seal(this)}get(e,r="count"){return this._getOrCreate({name:e,type:r})}get size(){return Object.keys(this.stats).length}reset(){for(let e of Object.values(this.stats))e.reset();return this}forEach(e){for(let r of Object.values(this.stats))e(r)}getTable(){let e={};return this.forEach(r=>{e[r.name]={time:r.time||0,count:r.count||0,average:r.getAverageTime()||0,hz:r.getHz()||0}}),e}_initializeStats(e=[]){e.forEach(r=>this._getOrCreate(r))}_getOrCreate(e){let{name:r,type:n}=e,i=this.stats[r];return i||(e instanceof St?i=e:i=new St(r,n),this.stats[r]=i),i}};function Ue(t,e){if(!t)throw new Error(e||"loader assertion failed.")}function Nn(t,e,r){let n=r!==void 0?new Uint8Array(t).subarray(e,e+r):new Uint8Array(t).subarray(e);return new Uint8Array(n).buffer}var Lm="Queued Requests",Gm="Active Requests",qm="Cancelled Requests",zm="Queued Requests Ever",Bm="Active Requests Ever",Dm={id:"request-scheduler",throttleRequests:!0,maxRequests:6,debounceTime:0},at=class{props;stats;activeRequestCount=0;requestQueue=[];requestMap=new Map;updateTimer=null;constructor(e={}){this.props={...Dm,...e},this.stats=new qe({id:this.props.id}),this.stats.get(Lm),this.stats.get(Gm),this.stats.get(qm),this.stats.get(zm),this.stats.get(Bm)}setProps(e){e.throttleRequests!==void 0&&(this.props.throttleRequests=e.throttleRequests),e.maxRequests!==void 0&&(this.props.maxRequests=e.maxRequests),e.debounceTime!==void 0&&(this.props.debounceTime=e.debounceTime)}scheduleRequest(e,r=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(e))return this.requestMap.get(e);let n={handle:e,priority:0,getPriority:r},i=new Promise(o=>(n.resolve=o,n));return this.requestQueue.push(n),this.requestMap.set(e,i),this._issueNewRequests(),i}_issueRequest(e){let{handle:r,resolve:n}=e,i=!1,o=()=>{i||(i=!0,this.requestMap.delete(r),this.activeRequestCount--,this.scheduleRefill())};return this.activeRequestCount++,n?n({done:o}):Promise.resolve({done:o})}scheduleRefill(){this.updateTimer===null&&(this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),0))}_issueNewRequests(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),this.props.debounceTime)}_issueNewRequestsAsync(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=null;let e=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(e!==0){this._updateAllRequests();for(let r=0;r<e;++r){let n=this.requestQueue.shift();n&&this._issueRequest(n)}}}_updateAllRequests(){let e=this.requestQueue;for(let r=0;r<e.length;++r){let n=e[r];this._updateRequest(n)||(e.splice(r,1),this.requestMap.delete(n.handle),r--)}e.sort((r,n)=>r.priority-n.priority)}_updateRequest(e){return e.priority=e.getPriority(e.handle),e.priority<0?(e.resolve(null),!1):!0}};var km=Number.POSITIVE_INFINITY,Fm=Number.POSITIVE_INFINITY,Mr=class{maxEntries;maxBytes;getByteLength;onRemove;entries=new Map;retainedByteLength=0;constructor(e={}){this.maxEntries=Yc(e.maxEntries,km,"maxEntries"),this.maxBytes=Yc(e.maxBytes,Fm,"maxBytes"),this.getByteLength=e.getByteLength||(()=>0),this.onRemove=e.onRemove}get size(){return this.entries.size}get pendingSize(){let e=0;for(let r of this.entries.values())e+=r.pending?1:0;return e}get byteLength(){return this.retainedByteLength}get(e,r){let n=this.entries.get(e);if(n)return this.touch(e,n),this.waitForEntry(e,n,r)}has(e){return this.entries.has(e)}set(e,r){this.removeEntry(e,"replace");let n=Kc(this.getByteLength(r)),i={promise:Promise.resolve(r),pending:!1,waiterCount:0,byteLength:n};return this.entries.set(e,i),this.retainedByteLength+=n,this.trim(),r}getOrLoad(e,r,n){let i=this.get(e,n);if(i)return i;if(n?.aborted)return Promise.reject(vo());let o=new AbortController,s,a,l={promise:new Promise((h,u)=>{s=h,a=u}),controller:o,pending:!0,waiterCount:0,byteLength:0};this.entries.set(e,l),l.promise.then(h=>this.handleLoadedValue(e,l,h),()=>this.handleLoadError(e,l));try{Promise.resolve(r(o.signal)).then(s,a)}catch(h){a(h)}return this.waitForEntry(e,l,n)}delete(e){return this.removeEntry(e,"delete")}clear(){for(let e of Array.from(this.entries.keys()))this.removeEntry(e,"clear")}handleLoadedValue(e,r,n){if(this.entries.get(e)===r){r.pending=!1,r.controller=void 0;try{r.byteLength=Kc(this.getByteLength(n))}catch{this.removeEntry(e,"error");return}this.retainedByteLength+=r.byteLength,this.trim()}}handleLoadError(e,r){this.entries.get(e)===r&&this.removeEntry(e,r.controller?.signal.aborted?"abort":"error")}waitForEntry(e,r,n){return n?.aborted?Promise.reject(vo()):r.pending?(r.waiterCount++,new Promise((i,o)=>{let s=!0,a=()=>{s&&(s=!1,n?.removeEventListener("abort",c),r.waiterCount--)},c=()=>{s&&(a(),o(vo()),r.pending&&r.waiterCount===0&&this.entries.get(e)===r&&this.removeEntry(e,"abort"))};n?.addEventListener("abort",c,{once:!0}),r.promise.then(l=>{s&&(a(),i(l))},l=>{s&&(a(),o(l))})})):r.promise}touch(e,r){this.entries.delete(e),this.entries.set(e,r)}trim(){let e=this.entries.size-this.pendingSize;if(!(e<=this.maxEntries&&this.retainedByteLength<=this.maxBytes)){for(let[r,n]of this.entries)if(n.pending||(this.removeEntry(r,"evict"),e--),e<=this.maxEntries&&this.retainedByteLength<=this.maxBytes)break}}removeEntry(e,r){let n=this.entries.get(e);return n?(this.entries.delete(e),this.retainedByteLength-=n.byteLength,n.pending&&n.controller?.abort(),this.onRemove?.(e,r),!0):!1}};function vo(){let t=new Error("Request aborted");return t.name="AbortError",t}function Yc(t,e,r){let n=t??e;if(n<0||Number.isNaN(n))throw new Error(`${r} must be a non-negative number`);return n}function Kc(t){if(!Number.isFinite(t)||t<0)throw new Error("Request cache entry byte length must be a non-negative finite number");return t}var $={logicalRanges:"Logical Range Requests",rangeBatches:"Range Request Batches",transportRanges:"Transport Ranges Created",completedTransportRanges:"Range Transport Requests Completed",coalescedRanges:"Coalesced Logical Ranges",requestedBytes:"Logical Range Request Bytes",transportBytes:"Range Transport Bytes Requested",responseBytes:"Range Response Bytes",networkTimeMs:"Range Network Time",overfetchBytes:"Range Overfetch Bytes",failedTransportRanges:"Range Transport Requests Failed",abortedLogicalRanges:"Aborted Logical Range Requests",fullResponseFallbacks:"Full Response Fallbacks"},Po={batchDelayMs:50,maxGapBytes:65536,rangeExpansionBytes:65536,maxMergedBytes:8388608,stats:Qc("range-request-scheduler-default"),onEvent:()=>{}},Ln=class{props;stats;onEvent;pendingRequests=[];flushTimer=null;constructor(e={}){let r=e.rangeExpansionBytes??e.maxGapBytes??Po.rangeExpansionBytes;this.props={batchDelayMs:e.batchDelayMs??Po.batchDelayMs,maxGapBytes:e.maxGapBytes??r,rangeExpansionBytes:r,maxMergedBytes:e.maxMergedBytes??Po.maxMergedBytes},this.stats=e.stats||Qc("range-request-scheduler"),this.onEvent=e.onEvent,Jc(this.stats)}scheduleRequest(e){if(e.length<0)return Promise.reject(new Error("Byte range length cannot be negative"));if(e.signal?.aborted)return Promise.reject(Zc());if(e.length===0)return Promise.resolve(new ArrayBuffer(0));let r=new Promise((n,i)=>{let o={...e,resolve:n,reject:i,settled:!1};e.signal&&(o.abortListener=()=>{this.abortRequest(o),o.onAbort?.()},e.signal.addEventListener("abort",o.abortListener,{once:!0})),this.pendingRequests.push(o)});return this.trackEvent({type:"queued",sourceId:e.sourceId,offset:e.offset,length:e.length,logicalRequestCount:1,logicalBytes:e.length}),this.scheduleFlush(),r}fetch(e){let r=e.fetch||globalThis.fetch;return this.scheduleRequest({sourceId:e.sourceId||e.url,offset:e.offset,length:e.length,signal:e.signal,isolationKey:e.isolationKey??{},fetchRange:(n,i,o)=>Vm({url:e.url,offset:n,length:i,signal:o,fetch:r,fetchOptions:e.fetchOptions})})}flush(){this.flushTimer!==null&&(clearTimeout(this.flushTimer),this.flushTimer=null);let e=this.pendingRequests;this.pendingRequests=[];let r=e.filter(i=>i.settled||i.signal?.aborted?(this.abortRequest(i),!1):!0),n=this.mergeRequests(r);r.length>0&&this.trackBatch(r,n);for(let i of n)this.fetchMergedRequest(i)}scheduleFlush(){this.flushTimer===null&&(this.flushTimer=setTimeout(()=>this.flush(),this.props.batchDelayMs))}mergeRequests(e){e.sort((n,i)=>n.sourceId!==i.sourceId?n.sourceId<i.sourceId?-1:1:n.offset-i.offset);let r=[];for(let n of e){let i=n.offset+n.length,o=r[r.length-1];o&&jm(o,n,this.props)?(o.endOffset=Math.max(o.endOffset,i),o.requests.push(n)):r.push({sourceId:n.sourceId,isolationKey:n.isolationKey??n.sourceId,offset:n.offset,endOffset:i,fetchRange:n.fetchRange,requests:[n]})}return r}async fetchMergedRequest(e){let{offset:r,endOffset:n,fetchRange:i,requests:o}=e,s=new AbortController,a=_r(),c=()=>{o.every(l=>l.signal?.aborted)&&s.abort()};try{for(let g of o)g.onAbort=c;if(c(),o.every(g=>g.settled))return;let l=Ro(o),h=n-r;this.trackEvent({type:"request",sourceId:e.sourceId,offset:r,length:h,logicalRequestCount:o.length,logicalBytes:l,transportBytes:h,overfetchBytes:Math.max(h-l,0)});let u=Wm(await i(r,h,s.signal)),{arrayBuffer:f}=u,d=u.fullResponse&&r===0&&f.byteLength<h,m=f.byteLength<h&&Number.isSafeInteger(u.sourceByteLength)&&r+f.byteLength===u.sourceByteLength;if(f.byteLength!==h&&!d&&!m)throw new Error(`Byte-range transport returned ${f.byteLength} bytes; expected ${h}`);let p=u.networkTimeMs??_r()-a;this.trackEvent({type:"response",sourceId:e.sourceId,offset:r,length:h,logicalRequestCount:o.length,logicalBytes:l,transportBytes:h,responseBytes:u.transportBytes??f.byteLength,networkTimeMs:p,overfetchBytes:Math.max(h-l,0),status:u.status,fullResponse:u.fullResponse});for(let g of o){if(g.settled)continue;let _=g.offset-r;g.settled=!0,g.resolve(f.slice(_,_+g.length))}}catch(l){this.trackEvent({type:"error",sourceId:e.sourceId,offset:r,length:n-r,logicalRequestCount:o.length,logicalBytes:Ro(o),networkTimeMs:_r()-a,error:l});for(let h of o)h.settled||(h.signal?.aborted?this.abortRequest(h):(h.settled=!0,h.reject(l)))}finally{for(let l of o)l.abortListener&&l.signal?.removeEventListener("abort",l.abortListener),l.onAbort=void 0}}abortRequest(e){e.settled||(e.settled=!0,e.reject(Zc()),this.trackEvent({type:"abort",sourceId:e.sourceId,offset:e.offset,length:e.length,logicalRequestCount:1,logicalBytes:e.length}))}trackEvent(e){Um(this.stats,e);try{this.onEvent?.(e)}catch{}}trackBatch(e,r){let n=Ro(e),i=r.reduce((o,s)=>o+s.endOffset-s.offset,0);this.trackEvent({type:"batch",logicalRequestCount:e.length,transportRequestCount:r.length,logicalBytes:n,transportBytes:i,overfetchBytes:Math.max(i-n,0)})}};function Um(t,e){switch((e.type==="response"||e.type==="error")&&e.networkTimeMs!==void 0&&t.get($.networkTimeMs,"time").addTime(e.networkTimeMs),e.type){case"queued":t.get($.logicalRanges,"count").incrementCount(),t.get($.requestedBytes,"count").addCount(e.logicalBytes||0);break;case"batch":t.get($.rangeBatches,"count").incrementCount(),t.get("Logical Ranges Batched","count").addCount(e.logicalRequestCount||0),t.get($.transportRanges,"count").addCount(e.transportRequestCount||0),t.get($.coalescedRanges,"count").addCount(Math.max((e.logicalRequestCount||0)-(e.transportRequestCount||0),0)),t.get($.transportBytes,"count").addCount(e.transportBytes||0),t.get($.overfetchBytes,"count").addCount(e.overfetchBytes||0);break;case"response":t.get($.completedTransportRanges,"count").incrementCount(),t.get($.responseBytes,"count").addCount(e.responseBytes||0),e.fullResponse&&t.get($.fullResponseFallbacks,"count").incrementCount();break;case"error":t.get($.failedTransportRanges,"count").incrementCount();break;case"abort":t.get($.abortedLogicalRanges,"count").incrementCount();break;default:}}function Qc(t="range-request-scheduler"){let e=new qe({id:t});return Jc(e),e}async function Vm(t){let e=Km(t.signal),r=_r();try{let n=!1,i=await t.fetch(t.url,Xc(t.fetchOptions,t.offset,t.length,e.signal));if(i.status===416&&t.offset===0){let c=$m(i.headers.get("Content-Range"));if(!c)throw new Error("Missing content-length on 416 response");i=await t.fetch(t.url,Xc(t.fetchOptions,0,c,e.signal)),n=!0}if(i.status===200)throw e.abort(),await Xm(i),new Error("Byte-range request failed: server returned 200 instead of 206");if(i.status!==206&&!i.ok)throw new Error(`Bad response code: ${i.status}`);let o=await i.arrayBuffer(),s=i.headers.get("Content-Range"),a=Ym(s);if(s&&!a)throw new Error(`Invalid Content-Range header: ${s}`);if(a){let c=a.endOffset-a.offset+1,l=t.offset+t.length-1;if(a.offset!==t.offset||a.endOffset>l||c!==o.byteLength||a.sourceByteLength!==void 0&&a.endOffset>=a.sourceByteLength)throw new Error(`Content-Range does not match requested range: ${s}`)}return{arrayBuffer:o,status:i.status,sourceByteLength:a?.sourceByteLength,transportBytes:o.byteLength,networkTimeMs:_r()-r,fullResponse:n}}finally{e.removeAbortListener()}}function jm(t,e,r){if(t.sourceId!==e.sourceId||t.isolationKey!==(e.isolationKey??e.sourceId))return!1;let n=e.offset+e.length,i=e.offset-t.endOffset,o=Math.max(t.endOffset,n)-t.offset;return i<=r.rangeExpansionBytes&&o<=r.maxMergedBytes}function Jc(t){t.get($.logicalRanges,"count"),t.get($.requestedBytes,"count"),t.get($.rangeBatches,"count"),t.get("Logical Ranges Batched","count"),t.get($.transportRanges,"count"),t.get($.coalescedRanges,"count"),t.get($.transportBytes,"count"),t.get($.completedTransportRanges,"count"),t.get($.responseBytes,"count"),t.get($.networkTimeMs,"time"),t.get($.overfetchBytes,"count"),t.get($.fullResponseFallbacks,"count"),t.get($.failedTransportRanges,"count"),t.get($.abortedLogicalRanges,"count")}function Ro(t){return t.reduce((e,r)=>e+r.length,0)}function Wm(t){return t instanceof ArrayBuffer?{arrayBuffer:t}:t}function Xc(t,e,r,n){return{...t,signal:n,headers:{...Hm(t?.headers),Range:`bytes=${e}-${e+r-1}`}}}function Hm(t){return t?t instanceof Headers?Object.fromEntries(t.entries()):Array.isArray(t)?Object.fromEntries(t):t:{}}function $m(t){let e=t?.match(/^bytes \*\/(\d+)$/);return e?Number(e[1]):null}function Ym(t){let e=t?.match(/^bytes (\d+)-(\d+)\/(\d+|\*)$/);if(!e)return null;let r=Number(e[1]),n=Number(e[2]),i=e[3]==="*"?void 0:Number(e[3]);return!Number.isSafeInteger(r)||!Number.isSafeInteger(n)||r>n||i!==void 0&&!Number.isSafeInteger(i)?null:{offset:r,endOffset:n,sourceByteLength:i}}function Km(t){let e=new AbortController,r=()=>e.abort();return t?.aborted?e.abort():t?.addEventListener("abort",r,{once:!0}),{signal:e.signal,abort:()=>e.abort(),removeAbortListener:()=>t?.removeEventListener("abort",r)}}async function Xm(t){await t.body?.cancel().catch(()=>{})}function _r(){return globalThis.performance?.now()??Date.now()}function Zc(){if(typeof DOMException<"u")return new DOMException("Request aborted","AbortError");let t=new Error("Request aborted");return t.name="AbortError",t}var ve={};eo(ve,{dirname:()=>Qm,filename:()=>Zm,join:()=>Jm,resolve:()=>ep});function el(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let t=window.location?.pathname;return t?.slice(0,t.lastIndexOf("/")+1)||""}function Zm(t){let e=t?t.lastIndexOf("/"):-1;return e>=0?t.substr(e+1):t}function Qm(t){let e=t?t.lastIndexOf("/"):-1;return e>=0?t.substr(0,e):""}function Jm(...t){return t=t.map((r,n)=>(n&&(r=r.replace(new RegExp("^/"),"")),n!==t.length-1&&(r=r.replace(new RegExp("/$"),"")),r)),t.join("/")}function ep(...t){let e=[];for(let o=0;o<t.length;o++)e[o]=t[o];let r="",n=!1,i;for(let o=e.length-1;o>=-1&&!n;o--){let s;o>=0?s=e[o]:(i===void 0&&(i=el()),s=i),s.length!==0&&(r=`${s}/${r}`,n=s.charCodeAt(0)===yr)}return r=tp(r,!n),n?`/${r}`:r.length>0?r:"."}var yr=47,Co=46;function tp(t,e){let r="",n=-1,i=0,o,s=!1;for(let a=0;a<=t.length;++a){if(a<t.length)o=t.charCodeAt(a);else{if(o===yr)break;o=yr}if(o===yr){if(!(n===a-1||i===1))if(n!==a-1&&i===2){if(r.length<2||!s||r.charCodeAt(r.length-1)!==Co||r.charCodeAt(r.length-2)!==Co){if(r.length>2){let c=r.length-1,l=c;for(;l>=0&&r.charCodeAt(l)!==yr;--l);if(l!==c){r=l===-1?"":r.slice(0,l),n=a,i=0,s=!1;continue}}else if(r.length===2||r.length===1){r="",n=a,i=0,s=!1;continue}}e&&(r.length>0?r+="/..":r="..",s=!0)}else{let c=t.slice(n+1,a);r.length>0?r+=`/${c}`:r=c,s=!1}n=a,i=0}else o===Co&&i!==-1?++i:i=-1}return r}var zt=class{handle;size;bigsize;url;constructor(e){this.handle=e instanceof ArrayBuffer?new Blob([e]):e,this.size=e instanceof ArrayBuffer?e.byteLength:e.size,this.bigsize=BigInt(this.size),this.url=e instanceof File?e.name:""}async close(){}async stat(){return{size:this.handle.size,bigsize:BigInt(this.handle.size),isDirectory:!1}}async read(e,r,n){if(n?.aborted)throw new Error("Request aborted");let i=await this.handle.slice(Number(e),Number(e)+Number(r)).arrayBuffer();if(n?.aborted)throw new Error("Request aborted");return i}};var zn=class{url;fetchFunction;fetchOptions;consistency;identityHints;countedFailures=new WeakSet;telemetry={requestedBytes:0,downloadedBytes:0,requestCount:0,networkTimeMs:0,abortCount:0,errorCount:0};constructor(e,r){ap(r.byteLength),this.url=e,this.fetchFunction=r.fetch||((n,i)=>globalThis.fetch(n,i)),this.fetchOptions=r.fetchOptions?{...r.fetchOptions,headers:new Headers(r.fetchOptions.headers)}:void 0,this.consistency=r.consistency||"best-effort",this.identityHints={byteLength:r.byteLength,etag:Dn(r.etag),lastModified:Dn(r.lastModified)}}getInitialIdentity(){let{byteLength:e,etag:r,lastModified:n}=this.identityHints;return e!==void 0&&(r!==void 0||n!==void 0)?Bn(e,r,n):e===0&&this.consistency==="best-effort"?Bn(0):null}getTelemetry(){return Object.freeze({...this.telemetry})}trackFailure(e){if(typeof e=="object"&&e!==null){if(this.countedFailures.has(e))return;this.countedFailures.add(e)}il(e)?this.telemetry.abortCount++:this.telemetry.errorCount++}async requestRange(e,r,n,i){let o=Gn(),s=cp(n,this.fetchOptions?.signal);this.telemetry.requestCount++,this.telemetry.requestedBytes+=r;try{let a=await this.fetchFunction(this.url,rp(this.fetchOptions,e,r,s.signal));if(np(a,e,r,i))return await this.readEmptyIdentityProbe(a,o);if(a.status!==206)throw await qn(a),new Error(`HTTP byte-range request expected 206, received ${a.status}`);let c=await ip(a),l=tl(a,c.byteLength),h=nl(i,l,this.identityHints,this.consistency)||sp(c,e,r);if(h)throw await qn(a),new Error(h);let u=await a.arrayBuffer();if(this.telemetry.downloadedBytes+=u.byteLength,u.byteLength!==r)throw new Error(`HTTP byte-range response contained ${u.byteLength} bytes; expected ${r}`);return{arrayBuffer:u,identity:rl(i,l,this.identityHints),status:a.status,transportBytes:u.byteLength,networkTimeMs:Gn()-o}}catch(a){throw(i===null||!il(a))&&this.trackFailure(a),a}finally{s.removeAbortListeners(),this.telemetry.networkTimeMs+=Gn()-o}}async readEmptyIdentityProbe(e,r){let n=tl(e,0),i=nl(null,n,this.identityHints,this.consistency);if(await qn(e),i)throw new Error(i);return{arrayBuffer:new ArrayBuffer(0),identity:rl(null,n,this.identityHints),status:e.status,transportBytes:0,networkTimeMs:Gn()-r}}};function rp(t,e,r,n){let i=new Headers(t?.headers);return i.set("Range",`bytes=${e}-${e+r-1}`),{...t,method:"GET",body:void 0,headers:i,signal:n}}function np(t,e,r,n){return t.status===416&&n===null&&e===0&&r===1&&/^bytes \*\/0$/i.test(t.headers.get("Content-Range")||"")}async function ip(t){try{return op(t.headers.get("Content-Range"))}catch(e){throw await qn(t),e}}function op(t){let e=t?.match(/^bytes (\d+)-(\d+)\/(\d+)$/);if(!e)throw new Error("HTTP byte-range response has an invalid Content-Range header");return{offset:Number(e[1]),endOffset:Number(e[2]),byteLength:Number(e[3])}}function tl(t,e){return Bn(e,Dn(t.headers.get("ETag")),Dn(t.headers.get("Last-Modified")))}function rl(t,e,r){return t||Bn(e.byteLength,e.etag??r.etag,e.lastModified??r.lastModified)}function sp(t,e,r){return!Number.isSafeInteger(t.offset)||!Number.isSafeInteger(t.endOffset)||!Number.isSafeInteger(t.byteLength)||t.offset<0||t.endOffset<t.offset||t.endOffset>=t.byteLength?"HTTP byte-range response has invalid range bounds":t.offset!==e||t.endOffset!==e+r-1?"HTTP byte-range response does not match the requested range":null}function nl(t,e,r,n){let i=t?.byteLength??r.byteLength;if(i!==void 0&&e.byteLength!==i)return"HTTP file length changed while the file was open";let o=t?.etag??r.etag,s=t?.lastModified??r.lastModified;return o?e.etag?o===e.etag?null:"HTTP file ETag changed while the file was open":n==="strict"?"HTTP byte-range response is missing the pinned ETag":s&&e.lastModified&&s!==e.lastModified?"HTTP file Last-Modified value changed while the file was open":null:s?e.lastModified&&s!==e.lastModified?"HTTP file Last-Modified value changed while the file was open":n==="strict"&&!e.lastModified?"HTTP byte-range response is missing the pinned Last-Modified value":null:n==="strict"&&!e.etag&&!e.lastModified?"HTTP byte-range response does not provide an ETag or Last-Modified validator":null}function Bn(t,e,r){return Object.freeze({byteLength:t,etag:e,lastModified:r})}function ap(t){if(t!==void 0&&(!Number.isSafeInteger(t)||t<0))throw new Error("HttpFile byteLength must be a non-negative safe integer")}async function qn(t){await t.body?.cancel().catch(()=>{})}function Dn(t){return t||void 0}function Gn(){return globalThis.performance?.now()??Date.now()}function il(t){return t instanceof Error&&t.name==="AbortError"||t instanceof Error&&/aborted/i.test(t.message)}function cp(...t){let e=new AbortController,r=[...new Set(t.filter(i=>!!i))],n=()=>e.abort();for(let i of r)i.aborted?e.abort():i.addEventListener("abort",n,{once:!0});return{signal:e.signal,removeAbortListeners:()=>{for(let i of r)i.removeEventListener("abort",n)}}}var xr=class t{handle;url;transport;rangeScheduler;schedulerIsolationKey={};suppliedByteLength;identity;openPromise=null;closed=!1;constructor(e,r={}){this.handle=e,this.url=e,this.transport=new zn(e,r),this.rangeScheduler=r.rangeScheduler||new Ln({batchDelayMs:0,...r.rangeSchedulerProps}),this.suppliedByteLength=r.byteLength,this.identity=this.transport.getInitialIdentity()}static async open(e,r={},n){let i=new t(e,r);return await i.open(n),i}async open(e){if(this.assertOpen(),e?.aborted){let r=kn();throw this.transport.trackFailure(r),r}return await this.getIdentity(e),this}get size(){return this.identity?.byteLength??this.suppliedByteLength??0}get bigsize(){return BigInt(this.size)}getIdentitySnapshot(){return this.identity}getTelemetry(){return this.transport.getTelemetry()}async close(){this.closed=!0}async stat(){this.assertOpen();let e=await this.getIdentity();return{size:e.byteLength,bigsize:BigInt(e.byteLength),isDirectory:!1}}async read(e=0,r=0,n){if(this.assertOpen(),n?.aborted){let s=kn();throw this.transport.trackFailure(s),s}let i=await this.getIdentity(n),o=ol(e);if(hp(o,r,i.byteLength),r===0)return new ArrayBuffer(0);try{return await this.rangeScheduler.scheduleRequest({sourceId:this.url,isolationKey:this.schedulerIsolationKey,offset:o,length:r,signal:n,fetchRange:this.fetchScheduledRange})}catch(s){throw this.transport.trackFailure(s),s}}async fetchRange(e,r,n){let i=ol(e),o=await this.read(i,r,n),s=lp(this.identity,i,r);return new Response(o,{status:206,headers:s})}fetchScheduledRange=async(e,r,n)=>{let i=await this.getIdentity(n),o=await this.transport.requestRange(e,r,n,i);return{arrayBuffer:o.arrayBuffer,status:o.status,transportBytes:o.transportBytes,networkTimeMs:o.networkTimeMs}};getIdentity(e){if(this.identity)return Promise.resolve(this.identity);if(!this.openPromise){let n=this.probeIdentity().catch(i=>{throw this.openPromise===n&&(this.openPromise=null),i});this.openPromise=n}return up(this.openPromise,e).catch(r=>{throw this.transport.trackFailure(r),r})}async probeIdentity(){try{let e=await this.transport.requestRange(0,1,void 0,null);return this.identity=e.identity,e.identity}catch(e){throw this.transport.trackFailure(e),e}}assertOpen(){if(this.closed)throw new Error("HttpFile is closed")}};function lp(t,e,r){let n=new Headers;return r>0&&t&&n.set("Content-Range",`bytes ${e}-${e+r-1}/${t.byteLength}`),t?.etag&&n.set("ETag",t.etag),t?.lastModified&&n.set("Last-Modified",t.lastModified),n}function ol(t){let e=Number(t);if(!Number.isSafeInteger(e)||e<0)throw new Error("HTTP byte-range offset must be a non-negative safe integer");return e}function hp(t,e,r){if(!Number.isSafeInteger(e)||e<0)throw new Error("HTTP byte-range length must be a non-negative safe integer");if(t+e>r)throw new Error("HTTP byte range extends beyond the end of the file")}function kn(){if(typeof DOMException<"u")return new DOMException("Request aborted","AbortError");let t=new Error("Request aborted");return t.name="AbortError",t}function up(t,e){return e?e.aborted?Promise.reject(kn()):new Promise((r,n)=>{let i=()=>{e.removeEventListener("abort",i),n(kn())};e.addEventListener("abort",i,{once:!0}),t.then(o=>{e.removeEventListener("abort",i),r(o)},o=>{e.removeEventListener("abort",i),n(o)})}):t}function Fn(t={}){if(t.coordinateEpoch!==void 0&&!Number.isFinite(t.coordinateEpoch))throw new Error("Spatial reference coordinate epoch must be a finite decimal year");return Object.freeze({crs:sl(t.crs||{state:"absent",provenance:"unknown"}),vertical:t.vertical?sl(t.vertical):void 0,coordinateEpoch:t.coordinateEpoch,coordinateFrame:t.coordinateFrame||"unknown",coordinateOrder:Object.freeze([...t.coordinateOrder||[]]),units:t.units?Object.freeze([...t.units]):void 0})}function ye(t){if(typeof t=="object")return"projjson";let e=t.trim();return/^[A-Z][A-Z0-9_]*\s*[\[(]/i.test(e)?"wkt":/(?:^|\s)\+?proj=/i.test(e)?"proj-string":/^[A-Z][A-Z0-9._-]*(?::[A-Z0-9._-]+)+$/i.test(e)||/^urn:ogc:def:crs:/i.test(e)||/^https?:\/\//i.test(e)||/^[A-Z][A-Z0-9._-]*$/i.test(e)?"identifier":"opaque"}function sl(t){return t.state==="explicit"||t.state==="default"?Object.freeze({...t,definition:al(t.definition),alternatives:t.alternatives?Object.freeze(t.alternatives.map(e=>Object.freeze({...e,definition:al(e.definition)}))):void 0}):Object.freeze({...t})}function al(t){return typeof t=="string"?t:Ao(t)}function Ao(t){return Array.isArray(t)?Object.freeze(t.map(e=>Ao(e))):t&&typeof t=="object"?Object.freeze(Object.fromEntries(Object.entries(t).map(([e,r])=>[e,Ao(r)]))):t}var Un=class extends SyntaxError{constructor(e,r,n){let i=Tp(r,n);super(`${e} at ${i.line}:${i.column}`),this.name="WKTCRSSyntaxError",this.offset=n,this.line=i.line,this.column=i.column}},Vn=class extends Error{constructor(e){super(e[0]?.message||"WKT validation failed"),this.name="WKTCRSValidationError",this.issues=e}},fp=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[Ee][+-]?\d+)?$/,dp=/^[A-Za-z][A-Za-z0-9_]*/,Sr=new Set(["COMPD_CS","CONCAT_MT","FITTED_CS","GEOCCS","GEOGCS","INVERSE_MT","LOCAL_CS","PARAM_MT","PASSTHROUGH_MT","PROJCS","VERT_CS"]),Oo=new Set([...Sr,"AUTHORITY","AXIS","CONCAT_MT","DATUM","INVERSE_MT","LOCAL_DATUM","PARAMETER","PARAM_MT","PASSTHROUGH_MT","PRIMEM","PROJECTION","SPHEROID","TOWGS84","UNIT","VERT_DATUM"]),mp=new Set(Sr),pp=new Set([...Oo,"EXTENSION"]),gp=new Set([...Sr,"COMPDCS","LOCALCS","VERTCS"]),Mp=new Set([...Oo,"COMPDCS","LOCALCS","VDATUM","VERTCS"]),cl=new Set(["BOUNDCRS","COMPOUNDCRS","COORDINATEOPERATION","ENGCRS","ENGINEERINGCRS","GEODCRS","GEODETICCRS","PARAMETRICCRS","PROJCRS","PROJECTEDCRS","TIMECRS","VERTCRS","VERTICALCRS"]),ll=new Set([...cl,"CONCATENATEDOPERATION","COORDINATEMETADATA","DERIVEDPROJCRS","GEOGCRS","GEOGRAPHICCRS","POINTMOTIONOPERATION"]),hl=new Set([...ll,"ABRIDGEDTRANSFORMATION","ANCHOR","ANGLEUNIT","AREA","AXIS","BASEENGCRS","BASEGEODCRS","BASEGEOGCRS","BASEPARAMCRS","BASEPROJCRS","BASETIMECRS","BASEVERTCRS","BBOX","BEARING","CALENDAR","CITATION","CONVERSION","COORDEPOCH","CS","DATUM","DERIVINGCONVERSION","DYNAMIC","EDATUM","ELLIPSOID","ENGINEERINGDATUM","ENSEMBLE","ENSEMBLEACCURACY","EPOCH","FRAMEEPOCH","GEODETICDATUM","GEOIDMODEL","ID","INTERPOLATIONCRS","LENGTHUNIT","MEMBER","MERIDIAN","METHOD","MODEL","OPERATIONACCURACY","ORDER","PARAMETER","PARAMETERFILE","PARAMETRICDATUM","PARAMETRICUNIT","PDATUM","PRIMEM","PRIMEMERIDIAN","REMARK","SCALEUNIT","SCOPE","SOURCECRS","STEP","TARGETCRS","TDATUM","TEMPORALQUANTITY","TIMEEXTENT","TIMEORIGIN","TIMEUNIT","TIMEDATUM","TRIAXIAL","TRF","URI","USAGE","VDATUM","VERSION","VERTICALDATUM","VERTICALEXTENT","VELOCITYGRID","VRF"]),_p=new Set(["BASEGEOGCRS","CALENDAR","CONCATENATEDOPERATION","COORDEPOCH","COORDINATEMETADATA","DERIVEDPROJCRS","DYNAMIC","ENSEMBLE","ENSEMBLEACCURACY","EPOCH","FRAMEEPOCH","GEOGCRS","GEOGRAPHICCRS","GEOIDMODEL","MEMBER","MODEL","POINTMOTIONOPERATION","STEP","TEMPORALQUANTITY","TRF","TRIAXIAL","VELOCITYGRID","VRF"]),yp=new Set([...hl].filter(t=>!_p.has(t))),xp={wkt1:Sr,gdal:mp,esri:gp,"wkt2:2015":cl,"wkt2:2019":ll},Sp={wkt1:Oo,gdal:pp,esri:Mp,"wkt2:2015":yp,"wkt2:2019":hl};function wr(t,e){let n={type:"wkt-crs",root:new Io(t).parse()};if(e?.strict){let i=ul(n,{profile:e.profile,allowExtensions:!1});if(i.length>0)throw new Vn(i)}return n}function ul(t,e){if(!t||t.type!=="wkt-crs"||t.root?.type!=="node")throw new TypeError("validateWKTCRS expects a WKTCRSAst");let r=wp(t.root.keyword,e?.profile||"auto"),n=xp[r],i=Sp[r],o=[],s=t.root.keyword.toUpperCase();return n.has(s)||o.push({code:"invalid-root",message:`${t.root.keyword} is not a ${r} root keyword`,path:[],keyword:t.root.keyword}),fl(t.root,[],a=>{let c=a.node.keyword.toUpperCase();!e?.allowExtensions&&!i.has(c)&&o.push({code:"unknown-keyword",message:`${a.node.keyword} is not defined by the ${r} profile`,path:a.path,keyword:a.node.keyword}),a.node.values.length===0&&o.push({code:"empty-node",message:`${a.node.keyword} must contain at least one value`,path:a.path,keyword:a.node.keyword});let l=Ep(a.node);l&&o.push({code:"invalid-value",message:l,path:a.path,keyword:a.node.keyword})}),o}var Io=class{constructor(e){this.offset=0,this.source=e}parse(){this.skipWhitespace();let e=this.parseNode();return this.skipWhitespace(),this.offset!==this.source.length&&this.fail("Unexpected content after WKT root"),e}parseNode(){let e=this.parseKeyword();return this.parseNodeAfterKeyword(e)}parseNodeAfterKeyword(e){this.skipWhitespace();let r=this.source[this.offset];r!=="["&&r!=="("&&this.fail(`Expected '[' or '(' after ${e}`),this.offset++;let n=r==="["?"bracket":"parenthesis",i=r==="["?"]":")",o=[];if(this.skipWhitespace(),this.source[this.offset]===i)return this.offset++,{type:"node",keyword:e,delimiter:n,values:o};for(;this.offset<this.source.length;){o.push(this.parseValue()),this.skipWhitespace();let s=this.source[this.offset];if(s===","){this.offset++,this.skipWhitespace(),this.source[this.offset]===i&&this.fail("Expected a WKT value after comma");continue}if(s===i)return this.offset++,{type:"node",keyword:e,delimiter:n,values:o};(s==="]"||s===")")&&this.fail(`Expected '${i}' to close ${e}`),this.fail(`Expected ',' or '${i}' in ${e}`)}this.fail(`Unterminated ${e} node`)}parseValue(){if(this.skipWhitespace(),this.source[this.offset]==='"')return this.parseString();let r=this.offset;for(;this.offset<this.source.length&&!/[\s,\[\]()"]/.test(this.source[this.offset]);)this.offset++;r===this.offset&&this.fail("Expected a WKT value");let n=this.source.slice(r,this.offset);return this.source[this.offset]==='"'&&this.fail("Unexpected quote in unquoted WKT value"),this.skipWhitespace(),this.source[this.offset]==="["||this.source[this.offset]==="("?(/^[A-Za-z][A-Za-z0-9_]*$/.test(n)||this.fail(`Invalid WKT keyword '${n}'`),this.parseNodeAfterKeyword(n)):fp.test(n)?{type:"number",value:Number(n),raw:n}:{type:"enumeration",value:n}}parseKeyword(){let e=this.source.slice(this.offset).match(dp);return e||this.fail("Expected a WKT keyword"),this.offset+=e[0].length,e[0]}parseString(){this.offset++;let e="";for(;this.offset<this.source.length;){let r=this.source[this.offset++];if(r==='"'){if(this.source[this.offset]==='"'){e+='"',this.offset++;continue}return{type:"string",value:e}}e+=r}this.fail("Unterminated WKT string")}skipWhitespace(){for(;this.offset<this.source.length&&/\s/.test(this.source[this.offset]);)this.offset++}fail(e){throw new Un(e,this.source,this.offset)}};function wp(t,e){return e!=="auto"?e:Sr.has(t.toUpperCase())?"wkt1":"wkt2:2019"}function Ep(t){let e=t.keyword.toUpperCase(),r=t.values,n=(o,...s)=>!!(r[o]&&s.includes(r[o].type)),i=(o,...s)=>r.length===o&&s.every((a,c)=>n(c,a));if(["ANGLEUNIT","LENGTHUNIT","PARAMETRICUNIT","SCALEUNIT","TIMEUNIT","TEMPORALQUANTITY","UNIT"].includes(e)&&!(r.length>=2&&n(0,"string")&&n(1,"number")))return`${t.keyword} must start with a quoted name and numeric conversion factor`;if(e==="CS"&&!i(2,"enumeration","number"))return`${t.keyword} must contain a coordinate-system type and dimension`;if(e==="BBOX"&&!i(4,"number","number","number","number"))return`${t.keyword} must contain four numeric bounds`;if(["ENSEMBLEACCURACY","EPOCH","COORDEPOCH","FRAMEEPOCH","OPERATIONACCURACY","ORDER"].includes(e)&&!i(1,"number"))return`${t.keyword} must contain one number`;if(["ANCHOR","AREA","CALENDAR","CITATION","REMARK","SCOPE","URI","VERSION"].includes(e)&&!i(1,"string"))return`${t.keyword} must contain one quoted string`;if(["ELLIPSOID","SPHEROID","TRIAXIAL"].includes(e)&&!(r.length>=3&&n(0,"string")&&n(1,"number")&&n(2,"number")))return`${t.keyword} must start with a quoted name and numeric ellipsoid axes`;if(["PARAMETER"].includes(e)&&!(r.length>=2&&n(0,"string")&&n(1,"number")))return`${t.keyword} must start with a quoted name and numeric value`;if(e==="PARAMETERFILE"&&!i(2,"string","string"))return`${t.keyword} must contain a quoted name and file name`;if(["AUTHORITY","ID"].includes(e)&&!(r.length>=2&&n(0,"string")&&n(1,"string","number")))return`${t.keyword} must start with a quoted authority and identifier`;if(["AXIS"].includes(e)&&!(r.length>=2&&n(0,"string")&&n(1,"enumeration")))return`${t.keyword} must start with a quoted name and axis direction`;if(["METHOD","PROJECTION"].includes(e)&&!(r.length>=1&&n(0,"string")))return`${t.keyword} must start with a quoted name`;if(e==="TIMEEXTENT"){let o=s=>n(s,"enumeration","string");if(r.length!==2||!o(0)||!o(1))return`${t.keyword} must contain two date-time or quoted values`}if(e==="VERTICALEXTENT"&&(r.length<2||r.length>3||!n(0,"number")||!n(1,"number")||r.length===3&&!n(2,"node")))return`${t.keyword} must contain two numeric bounds and an optional unit`;if(e==="COORDINATEMETADATA"&&(r.length<1||r.length>2||!n(0,"node")||r.length===2&&(!n(1,"node")||!["EPOCH","COORDEPOCH"].includes(r[1].keyword.toUpperCase()))))return`${t.keyword} must contain a CRS and an optional coordinate epoch`;if(e==="BOUNDCRS"){let o=r.slice(0,3).map(s=>s.type==="node"?s.keyword.toUpperCase():"");if(o[0]!=="SOURCECRS"||o[1]!=="TARGETCRS"||o[2]!=="ABRIDGEDTRANSFORMATION")return`${t.keyword} must start with SOURCECRS, TARGETCRS, and ABRIDGEDTRANSFORMATION`}return["COMPOUNDCRS","CONCATENATEDOPERATION","COORDINATEOPERATION","DERIVEDPROJCRS","ENGCRS","ENGINEERINGCRS","GEODCRS","GEODETICCRS","GEOGCRS","GEOGRAPHICCRS","PARAMETRICCRS","POINTMOTIONOPERATION","PROJCRS","PROJECTEDCRS","TIMECRS","VERTCRS","VERTICALCRS"].includes(e)&&!n(0,"string")?`${t.keyword} must start with a quoted name`:null}function fl(t,e,r){r({node:t,path:e});for(let n=0;n<t.values.length;n++){let i=t.values[n];i.type==="node"&&fl(i,[...e,n],r)}}function Tp(t,e){let r=1,n=1;for(let i=0;i<e&&i<t.length;i++)t[i]===`
8
+ `?(r++,n=1):n++;return{line:r,column:n}}var ct=class extends SyntaxError{constructor(e,r,n){let i=Cp(r,n);super(`${e} at ${i.line}:${i.column}`),this.name="PROJStringSyntaxError",this.offset=n,this.line=i.line,this.column=i.column}};function Er(t){let e=Pp(t);if(e.length===0)throw new ct("PROJ string is empty",t,0);return{type:"proj-string",parameters:e.map(n=>vp(n.raw,n.offset,t))}}var bp=/^[+-]?\d+(?:\.\d*)?d(?:\d+(?:\.\d*)?'(?:\d+(?:\.\d*)?")?)?[NSEW]?$/i;function vp(t,e,r){let n=t.startsWith("+")?t.slice(1):t;if(!n)throw new ct("Expected a parameter after '+'",r,e);let i=n.indexOf("="),o=i<0?n:n.slice(0,i);if(!o||/[\s+=]/.test(o))throw new ct(`Invalid PROJ parameter name '${o}'`,r,e);if(i<0)return{type:"parameter",name:o};let s=n.slice(i+1),a=Rp(s,r,e+i+1);return{type:"parameter",name:o,value:a,rawValue:s}}function Pp(t){let e=[],r=0;for(;r<t.length;){for(;r<t.length&&/\s/.test(t[r]);)r++;if(r>=t.length)break;let n=r,i=null,o=!1;for(;r<t.length;){let s=t[r];if(o){o=!1,r++;continue}if(s==="\\"&&i){o=!0,r++;continue}if(i){s===i&&(i=null),r++;continue}if((s==='"'||s==="'")&&t[r-1]==="="){i=s,r++;continue}if(/\s/.test(s))break;r++}if(i)throw new ct("Unterminated quoted PROJ value",t,n);e.push({raw:t.slice(n,r),offset:n})}return e}function Rp(t,e,r){if(!t)return"";let n=t[0];if(n!=='"'&&n!=="'"){if((t.includes('"')||t.includes("'"))&&!bp.test(t))throw new ct("Quote must begin a PROJ parameter value",e,r);return t}if(t[t.length-1]!==n)throw new ct("Unterminated quoted PROJ value",e,r);let i="";for(let o=1;o<t.length-1;o++){let s=t[o];s==="\\"&&o+1<t.length-1?i+=t[++o]:i+=s}return i}function Cp(t,e){let r=1,n=1;for(let i=0;i<e&&i<t.length;i++)t[i]===`
9
+ `?(r++,n=1):n++;return{line:r,column:n}}var jn=class{item;previous;next;constructor(e,r,n){this.item=e,this.previous=r,this.next=n}};var Wn=class{head=null;tail=null;_length=0;get length(){return this._length}add(e){let r=new jn(e,this.tail,null);return this.tail?(this.tail.next=r,this.tail=r):(this.head=r,this.tail=r),++this._length,r}remove(e){e&&(e.previous&&e.next?(e.previous.next=e.next,e.next.previous=e.previous):e.previous?(e.previous.next=null,this.tail=e.previous):e.next?(e.next.previous=null,this.head=e.next):(this.head=null,this.tail=null),e.next=null,e.previous=null,--this._length)}splice(e,r){e!==r&&(this.remove(r),this._insert(e,r))}_insert(e,r){let n=e.next;e.next=r,this.tail===e?this.tail=r:n.previous=r,r.next=n,r.previous=e,++this._length}};var Bt=class{_list;_sentinel;_trimTiles;constructor(){this._list=new Wn,this._sentinel=this._list.add("sentinel"),this._trimTiles=!1}reset(){this._list.splice(this._list.tail,this._sentinel)}touch(e){let r=e._cacheNode;r&&this._list.splice(this._sentinel,r)}add(e,r,n){r._cacheNode||(r._cacheNode=this._list.add(r),n&&n(e,r))}unloadTile(e,r,n){let i=r._cacheNode;i&&(this._list.remove(i),r._cacheNode=null,n&&n(e,r))}unloadTiles(e,r){let n=this._trimTiles;this._trimTiles=!1;let i=this._list,o=this._sentinel,s=i.head;for(;s!==o&&(e.gpuMemoryUsageInBytes>e.cacheBytes||n);){let a=s.item;s=s.next,this.unloadTile(e,a,r)}}trim(){this._trimTiles=!0}};function Hn(t,e){Ue(t),Ue(e);let{rtcCenter:r,gltfUpAxis:n}=e,{computedTransform:i,boundingVolume:{center:o}}=t,s=new G(i);switch(r&&s.translate(r),n){case"Z":break;case"Y":let f=new G().rotateX(Math.PI/2);s=s.multiplyRight(f);break;case"X":let d=new G().rotateY(-Math.PI/2);s=s.multiplyRight(d);break;default:break}e.isQuantized&&s.translate(e.quantizedVolumeOffset).scale(e.quantizedVolumeScale);let a=new M(o);e.cartesianModelMatrix=s,e.cartesianOrigin=a;let c=N.WGS84.cartesianToCartographic(a,new M),h=N.WGS84.eastNorthUpToFixedFrame(a).invert();e.cartographicModelMatrix=h.multiplyRight(s),e.cartographicOrigin=c;let u=Ip(e);u&&(e.cartesianModelMatrix=new G(s).multiplyRight(u.matrix),e.cartographicModelMatrix.multiplyRight(u.matrix),u.matrix=G.IDENTITY),e.coordinateSystem||(e.modelMatrix=e.cartographicModelMatrix)}var Ap=1e6**2;function Ip(t){let e=t.gltf;if(!e)return null;let r=typeof e.scene=="number"?e.scene:0,i=e.scenes?.[r]?.nodes?.[0];if(!i?.matrix)return null;let o=i.matrix;return o[12]*o[12]+o[13]*o[13]+o[14]*o[14]<=Ap?null:i}var dl=new M,No=new M,Op=1e-5,Np=1e-7,Lo=new se([new re,new re,new re,new re,new re,new re]);function $n(t,e,r={}){let{cameraUp:n,height:i}=t,o=t.cameraDirection,{metersPerUnit:s}=t.distanceScales,a=Tr(t,t.center),c=N.WGS84.eastNorthUpToFixedFrame(a),l=t.unprojectPosition(t.cameraPosition),h=N.WGS84.cartographicToCartesian(l,new M),u;if(o)u=new M(c.transformAsVector(new M(o).scale(s))).normalize();else{let T=t.getFrustumPlanes().near,v=Go(T,t.cameraPosition),C=Tr(t,v);u=new M(C).subtract(h).normalize()}let f=new M(c.transformAsVector(new M(n).scale(s))).normalize();Lp(t);let d=t.constructor,{longitude:m,latitude:p,width:g,bearing:_,zoom:y,position:S}=t,x=new d({longitude:m,latitude:p,height:i,width:g,bearing:_,zoom:y,position:S,pitch:0}),w=Number.isFinite(t.fovy)&&Number(t.fovy)>0&&Number(t.fovy)<180?Number(t.fovy)*Math.PI/180:Math.PI/3;return{camera:{position:h,direction:u,up:f,cartographicPosition:l,verticalFieldOfView:w,timeSinceMovement:r.timeSinceCameraMovement??Number.POSITIVE_INFINITY},viewport:t,topDownViewport:x,height:i,cullingVolume:Lo,clippingPlanes:t.clippingPlanes,frameNumber:e,sseDenominator:2*Math.tan(w/2),dynamicScreenSpaceErrorDensity:0}}function ml(t,e,r,n){let i=Array.from(e),o=Array.from(r),s=t?i.length!==t.position.length||i.some((l,h)=>Math.abs(l-t.position[h])>Op):!1,a=t?o.length!==t.direction.length||o.some((l,h)=>Math.abs(l-t.direction[h])>Np):!1,c=s||a?n:t?.lastMovementTime??Number.NEGATIVE_INFINITY;return{state:{position:i,direction:o,lastMovementTime:c},timeSinceMovement:Math.max((n-c)/1e3,0)}}function pl(t,e,r){if(r===0||t.length<=r)return[t,[]];let n=[],{longitude:i,latitude:o}=e.viewport;for(let[l,h]of t.entries()){let[u,f]=h.header.mbs,d=Math.abs(i-u),m=Math.abs(o-f),p=Math.sqrt(m*m+d*d);n.push([l,p])}let s=n.sort((l,h)=>l[1]-h[1]),a=[];for(let l=0;l<r;l++)a.push(t[s[l][0]]);let c=[];for(let l=r;l<s.length;l++)c.push(t[s[l][0]]);return[a,c]}function Lp(t){let e=t.getFrustumPlanes(),r=Go(e.near,t.cameraPosition),n=Tr(t,r),i=Tr(t,t.cameraPosition,No),o=0;Lo.planes[o++].fromPointNormal(n,dl.copy(n).subtract(i));for(let s in e){if(s==="near")continue;let a=e[s],c=Go(a,r,No),l=Tr(t,c,No);Lo.planes[o++].fromPointNormal(l,dl.copy(n).subtract(l))}}function Go(t,e,r=new M){let n=t.normal.dot(e);return r.copy(t.normal).scale(t.distance-n).add(e),r}function Tr(t,e,r=new M){let n=t.unprojectPosition(e);return N.WGS84.cartographicToCartesian(n,r)}var xl=new M,Gp=new M,wt=new M,gl=new M,br=new M,Ml=new M,_l=new M,yl=new M,Yn=new Ge,qp=new M(0,0,1);function Sl(t,e){t._updateTransform(e)}function wl(t,e,r){if(!Number.isFinite(r.dynamicScreenSpaceErrorDensity)||r.dynamicScreenSpaceErrorDensity<=0)return 0;let n=kp(t),i=n.region?Fp(n.region,e):Up(t,n,e);if(!i)return 0;let o=ar(r.dynamicScreenSpaceErrorHeightFalloff,0,1),s=i.minimumHeight+(i.maximumHeight-i.minimumHeight)*o,a=i.maximumHeight-s,c=a>0?ar((i.cameraHeight-s)/a,0,1):i.cameraHeight>=i.maximumHeight?1:0,h=(1-ar(Math.abs(i.cameraDirection.dot(i.upDirection)),0,1))*(1-c);return r.dynamicScreenSpaceErrorDensity*h}function zp(t,e){let r=t*e;return 1-Math.exp(-(r*r))}function Bp(t,e,r){return e<=0||r<=0||!Number.isFinite(e)||!Number.isFinite(r)?0:zp(t,e)*r}function El(t,e,r,n=1){let i=t.tileset,o=t.parent&&t.parent.lodMetricValue||t.lodMetricValue,s=r?o:t.lodMetricValue;if(s===0)return 0;let{viewDistanceScale:a}=i.options,c=a||1,l=Number.isFinite(n)?Math.max(n,0):1,h=Dp(s,e,c,l);if(h!==null)return h;let u=Math.max(t._distanceToCamera,1e-7),{height:f,sseDenominator:d}=e,m=s*f*l*c/(u*d);return i.options.dynamicScreenSpaceError&&!e.viewport.orthographic&&(m-=Bp(u,e.dynamicScreenSpaceErrorDensity,i.options.dynamicScreenSpaceErrorFactor)),m}function Dp(t,e,r,n){let i=e.viewport;if(!i?.orthographic)return null;let o=i.metersPerPixel;return!Number.isFinite(o)||!o||o<=0?null:t*r*n/o}function kp(t){return t.header.content?.boundingVolume||t.header.boundingVolume}function Fp(t,e){let r=xl.copy(e.camera.position).normalize(),n=br.copy(e.camera.direction).normalize();return{cameraHeight:e.camera.cartographicPosition[2],minimumHeight:t[4],maximumHeight:t[5],cameraDirection:n,upDirection:r}}function Up(t,e,r){let n=Vp(e,wt);if(n===null)return null;let i=new G(t.computedTransform).invert(),o=t.tileset.ellipsoid;if(Math.hypot(wt[0],wt[1],wt[2])>o.minimumRadius){let a=o.cartesianToCartographic(wt,Gp),c=xl.copy(r.camera.position).normalize(),l=br.copy(r.camera.direction).normalize();return{cameraHeight:r.camera.cartographicPosition[2],minimumHeight:0,maximumHeight:a[2]*2,cameraDirection:l,upDirection:c}}return i.transformAsPoint(r.camera.position,gl),i.transformAsVector(r.camera.direction,br),br.normalize(),{cameraHeight:gl[2],minimumHeight:wt[2]-n,maximumHeight:wt[2]+n,cameraDirection:br,upDirection:qp}}function Vp(t,e){if(t.box){let r=t.box;return e.set(r[0],r[1],r[2]),jp(r)}if(t.sphere){let r=t.sphere;return e.set(r[0],r[1],r[2]),r[3]}return null}function jp(t){return t.length===10?(Yn.fromArray(t,6),Ml.set(t[3],0,0).transformByQuaternion(Yn),_l.set(0,t[4],0).transformByQuaternion(Yn),yl.set(0,0,t[5]).transformByQuaternion(Yn),Math.abs(Ml[2])+Math.abs(_l[2])+Math.abs(yl[2])):Math.abs(t[5])+Math.abs(t[8])+Math.abs(t[11])}var ae={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5},te;(function(t){t[t.ADD=1]="ADD",t[t.REPLACE=2]="REPLACE"})(te||(te={}));var Ze;(function(t){t.EMPTY="empty",t.SCENEGRAPH="scenegraph",t.POINTCLOUD="pointcloud",t.MESH="mesh"})(Ze||(Ze={}));var he;(function(t){t.I3S="I3S",t.TILES3D="TILES3D"})(he||(he={}));var Dt;(function(t){t.GEOMETRIC_ERROR="geometricError",t.MAX_SCREEN_THRESHOLD="maxScreenThreshold"})(Dt||(Dt={}));var Tl={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0};var bl=1e4,Wp=1e4,Hp=1e8,$p=new fe,vl=new M,Pl=new M,qo=new M,Kn=new M;function zo(t,e,r){return t+(e-t)*r}function Rl(t,e){let r=t instanceof fe?t:t.getBoundingSphere($p),{center:n,radius:i}=r;vl.copy(n).subtract(e.position);let o=Math.max(vl.dot(e.direction),0);return Pl.copy(e.direction).scale(o).add(e.position),qo.copy(Pl).subtract(n),qo.magnitude()<=i||(Kn.copy(qo).normalize().scale(i).add(n).subtract(e.position),Kn.magnitude()===0)?0:(Kn.normalize(),Math.min(Math.max(1-Kn.dot(e.direction),0),1))}function Cl(t,e,r,n){return!Number.isFinite(n)||n<=0||n>.5?!1:t>r?!0:e!==void 0&&e>r}function Al(t){let e=Number.isFinite(t.foveatedConeSize)?Math.min(Math.max(t.foveatedConeSize,0),1):1,r=t.refinement===te.REPLACE;if(r&&!t.skipLevelOfDetail||!t.foveatedScreenSpaceError||e>=1||r&&t.skipLevelOfDetail&&t.priorityProgressiveResolution)return!1;let n=Number.isFinite(t.verticalFieldOfView)&&t.verticalFieldOfView>0?t.verticalFieldOfView:Math.PI/3,i=1-Math.cos(n*.5),o=e*i;if(t.foveatedFactor<=o||i<=o)return!1;let s=Math.min(Math.max((t.foveatedFactor-o)/(i-o),0),1),c=(typeof t.interpolationCallback=="function"?t.interpolationCallback:zo)(t.minimumScreenSpaceErrorRelaxation,t.maximumScreenSpaceError,s),l=Number.isFinite(c)?Math.min(Math.max(c,0),t.maximumScreenSpaceError):0,h=t.screenSpaceError===0&&t.parentScreenSpaceError!==void 0?t.parentScreenSpaceError*.5:t.screenSpaceError;return t.maximumScreenSpaceError-l<=h}function Il(t,e,r){return t&&Number.isFinite(e)&&Number.isFinite(r)&&r>0&&e<r}function Ol(t){let e=t.rootScreenSpaceError>0?Math.min(Math.max(t.reverseScreenSpaceError/t.rootScreenSpaceError,0),1):0,r=Math.floor(e*(bl-1)),n=Number.isFinite(t.foveatedFactor)?Math.min(Math.max(t.foveatedFactor,0),1):0,i=Math.floor(n*(bl-1))*Wp;return(t.priorityProgressiveResolution?0:Hp)+i+r}var kt="EPSG:4326",Xn="EPSG:4978";function vr(t){let e=t.trim().toUpperCase(),r=e.match(/(?:\/DEF\/CRS\/|URN:OGC:DEF:CRS:)([A-Z0-9_-]+)(?:\/|::)(?:[^/:]*[/:])?([A-Z0-9_.-]+)$/);return r?`${r[1]}:${r[2]}`:e}function Me(t){if(typeof t=="string"){let r=ye(t);return r==="wkt"?Yp(t):r==="proj-string"?Kp(t):Bo(t)||"projected"}let e=t;return e.type==="BoundCRS"&&e.source_crs?Me(e.source_crs):e.type==="CompoundCRS"&&e.components?.[0]?Me(e.components[0]):String(e.type).includes("Projected")?"projected":String(e.type).includes("Geographic")?"geographic":String(e.type).includes("Geodetic")?e.coordinate_system?.subtype==="Cartesian"?"geocentric":"geographic":"unknown"}function Bo(t){if(typeof t!="string")return;let e=vr(t);if(e===Xn)return"geocentric";if(e===kt||e==="OGC:CRS84")return"geographic";let r=/^EPSG:(\d+)$/.exec(e);if(!r)return;let n=Number(r[1]);if(n===7789)return"geocentric";if(n===4490||n===4979)return"geographic";if(n===3857||n>=32601&&n<=32660||n>=32701&&n<=32760)return"projected"}function Yp(t){let e;try{e=wr(t).root}catch{return"unknown"}switch(e.keyword.toUpperCase()){case"GEOCCS":return"geocentric";case"GEOGCS":case"GEOGCRS":case"GEOGRAPHICCRS":case"GEOGRAPHIC2DCRS":case"GEOGRAPHIC3DCRS":return"geographic";case"PROJCS":case"PROJCRS":case"PROJECTEDCRS":return"projected";case"GEODCRS":case"GEODETICCRS":{let n=e.values.find(i=>i.type==="node"&&i.keyword.toUpperCase()==="CS")?.values[0];return n?.type!=="enumeration"&&n?.type!=="string"?"unknown":n.value.toUpperCase()==="CARTESIAN"?"geocentric":n.value.toUpperCase()==="ELLIPSOIDAL"?"geographic":"unknown"}default:return"unknown"}}function Kp(t){try{let e=Er(t).parameters.find(r=>r.name.toLowerCase()==="proj")?.value;switch(e?.toLowerCase()){case"longlat":case"latlong":return"geographic";case"geocent":return"geocentric";default:return e?"projected":"unknown"}}catch{return"unknown"}}function Pe(t,e={}){let r=e.sourceCrs!==void 0,n=e.sourceCrs||t.sourceCrs,i=e.outputCoordinates||"auto",o=e.targetCrs||(i==="ecef"?"EPSG:4978":void 0),s=e.targetHeightReference||"native",a=t.verticalUnitScale??1,c=t.elevationUnitScale??1,l=t.elevationOffset||0,h=t.elevationMode==="onTheGround"||t.elevationMode==="relativeToGround"||t.elevationMode==="relativeToScene",u=t.elevationMode==="relativeToScene"?!!e.sceneElevationProvider:!h||!!e.terrainElevationProvider,f=a!==1||c!==1||t.elevationMode!==void 0&&(h||t.elevationMode==="absoluteHeight"&&l!==0),d=s!=="native"&&s!==t.heightReference,m=!!o||s!=="native"||i!=="auto"||f,p=i!=="target-crs"||!!o,g=!d||(t.heightReference||"unknown")!=="unknown",_=Number.isFinite(a)&&a>0&&Number.isFinite(c)&&c>0,y=!!n&&m&&p&&g&&_&&u&&i!=="local-enu",S=r?"caller-override":t.provenance||"unknown",x=r&&n?Me(n):t.coordinateFrame,w=r?"explicit":t.sourceCrsState||(n?S==="format-default"?"default":"explicit":"absent"),T=Fn({crs:n?{state:w==="default"?"default":"explicit",definition:n,representation:!r&&t.sourceCrsRepresentation||ye(n),provenance:S,alternatives:r?void 0:t.sourceCrsAlternatives}:{state:w==="unknown"?"unknown":"absent",provenance:S},vertical:t.verticalCrs?{state:"explicit",definition:t.verticalCrs,representation:ye(t.verticalCrs),provenance:t.provenance||"metadata"}:void 0,coordinateEpoch:e.coordinateEpoch??t.coordinateEpoch,coordinateFrame:x,coordinateOrder:Zp(t.axisOrder),units:r?void 0:t.units}),v=Do(T.crs),C=T.vertical?Do(T.vertical):void 0,O=o?Xp(o):void 0;return Object.freeze({...T,sourceCrs:v,verticalCrs:C,verticalUnitScale:a,coordinateEpoch:e.coordinateEpoch??t.coordinateEpoch,heightReference:t.heightReference||"unknown",elevationMode:t.elevationMode,elevationOffset:t.elevationOffset,elevationUnit:t.elevationUnit,elevationUnitScale:c,coordinateFrame:x||"unknown",axisOrder:t.axisOrder||"unknown",provenance:S,targetCrs:O,targetHeightReference:s,outputCoordinates:i,status:m?y?"transformable":"unresolved":"native",warnings:Object.freeze([...t.warnings||[]])})}function Et(t,e={}){return Pe({sourceCrs:t?.sourceCrs,sourceCrsState:t?.crs.state,sourceCrsRepresentation:t?.crs.state==="explicit"||t?.crs.state==="default"?t.crs.representation:void 0,sourceCrsAlternatives:t?.crs.state==="explicit"||t?.crs.state==="default"?t.crs.alternatives:void 0,verticalCrs:t?.verticalCrs,units:t?.units,verticalUnitScale:t?.verticalUnitScale,coordinateEpoch:t?.coordinateEpoch,heightReference:t?.heightReference,elevationMode:t?.elevationMode,elevationOffset:t?.elevationOffset,elevationUnit:t?.elevationUnit,elevationUnitScale:t?.elevationUnitScale,coordinateFrame:t?.coordinateFrame,axisOrder:t?.axisOrder,provenance:t?.provenance,warnings:t?.warnings},e)}function Do(t){return t.state==="explicit"||t.state==="default"?t.definition:void 0}function Xp(t){let e=Fn({crs:{state:"explicit",definition:t,representation:ye(t),provenance:"caller-override"}}),r=Do(e.crs);if(!r)throw new Error("Failed to normalize a known target CRS definition");return r}function Zp(t){switch(t){case"xy":return["x","y"];case"yx":return["y","x"];case"xyz":return["x","y","z"];default:return[]}}function Ft(t){if(t.status!=="transformable"&&t.status!=="transformed")throw new Error("Only a transformable spatial reference can be marked as transformed");return Object.freeze({...t,status:"transformed"})}function Zn(t){return!!(t&&typeof t=="object"&&"initialize"in t&&"getRootTileset"in t&&"initializeTileHeaders"in t&&"loadTileContent"in t)}var ei=1024*1024,Ul=512*ei,Vl=512*ei,Qp=32*ei,Jp=ei;function Qn(t,e){if(!Number.isFinite(t)||t<0)throw new Error(`${e} must be a finite number greater than or equal to 0`);return t}function Nl(t,e){let r=t.cacheBytes??e;return Qn(r,"cacheBytes")}function Ll(t,e){let r=t.maximumCacheOverflowBytes??e;return Qn(r,"maximumCacheOverflowBytes")}var ko={description:"",ellipsoid:N.WGS84,modelMatrix:new G,throttleRequests:!0,maxRequests:64,cacheBytes:Ul,maximumCacheOverflowBytes:Vl,maximumTilesSelected:0,debounceTime:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{},onSourceError:()=>{},onTilesetError:()=>{},onTraversalComplete:t=>t,onUpdate:()=>{},contentLoader:void 0,viewDistanceScale:1,progressiveResolutionHeightFraction:.3,foveatedScreenSpaceError:!0,foveatedConeSize:.1,foveatedMinimumScreenSpaceErrorRelaxation:0,foveatedInterpolationCallback:zo,foveatedTimeDelay:.2,maximumScreenSpaceError:8,skipLevelOfDetail:!1,baseScreenSpaceError:1024,skipScreenSpaceErrorFactor:16,skipLevels:1,immediatelyLoadDesiredLevelOfDetail:!1,dynamicScreenSpaceError:!0,dynamicScreenSpaceErrorDensity:2e-4,dynamicScreenSpaceErrorFactor:24,dynamicScreenSpaceErrorHeightFalloff:.25,memoryAdjustedScreenSpaceError:!0,loadTiles:!0,updateTransforms:!0,viewportTraversersMap:null,loadOptions:{fetch:{}},attributions:[],basePath:"",i3s:{},spatial:{}},Fo="Tiles In Tileset(s)",Uo="Tiles In Memory",Gl="Tiles In View",ql="Tiles To Render",zl="Tiles Loaded",Vo="Tiles Loading",Bl="Tiles Unloaded",Dl="Failed Tile Loads",kl="Points/Vertices",jo="Tile Memory Use",Fl="Maximum Screen Space Error",Jn=class{options;loadOptions;source;type;tileset;loader;url;basePath;modelMatrix;ellipsoid;lodMetricType;lodMetricValue;refine;root=null;roots={};asset={};schema=null;schemaUri=null;groups=[];metadata=null;statistics=null;spatialReference=Pe({});description="";properties;extras=null;attributions={};credits={};stats;contentFormats;cartographicCenter=null;cartesianCenter=null;zoom=1;boundingVolume=null;dynamicScreenSpaceErrorComputedDensity=0;gpuMemoryUsageInBytes=0;memoryAdjustedScreenSpaceError=0;_cacheBytes=Ul;_maximumCacheOverflowBytes=Vl;_frameNumber=0;_tiles={};_pendingCount=0;selectedTiles=[];traverseCounter=0;geometricError=0;lastUpdatedVieports=null;_requestedTiles=[];_emptyTiles=[];frameStateData={};_cameraMotionStates={};_deferredTraversalTimeout=null;_traverser;_cache=new Bt;_requestScheduler;_heldTiles=new Set;updatePromise=null;tilesetInitializationPromise;constructor(e,r){if(!Zn(e))throw new Error("Tileset3D requires a Tileset3DSource instance");let n=r||{},i=e.type===he.TILES3D,o=i?ko.cacheBytes:Qp,s=i?ko.maximumCacheOverflowBytes:Jp,a=Nl(n,o),c=Ll(n,s);this.options={...ko,...n,cacheBytes:a,maximumCacheOverflowBytes:c,memoryAdjustedScreenSpaceError:n.memoryAdjustedScreenSpaceError??i},this.loadOptions=this.options.loadOptions||{},this.source=e,this.tileset=null,this.loader=this.source.loader,this.type=this.source.type,this.url=this.source.url,this.basePath=this.source.basePath,this.modelMatrix=this.options.modelMatrix,this.ellipsoid=this.options.ellipsoid,this.lodMetricType="",this.lodMetricValue=0,this.refine="",this.contentFormats=this.source.contentFormats,this._traverser=this._initializeTraverser(),this._requestScheduler=new at({throttleRequests:this.options.throttleRequests,maxRequests:this.options.maxRequests}),this.memoryAdjustedScreenSpaceError=this.options.maximumScreenSpaceError,this._cacheBytes=a,this._maximumCacheOverflowBytes=c;let l=this._getSourceMetadata();l&&(this.spatialReference=Et(l.spatialReference,this.options.spatial)),this.stats=new qe({id:this.url}),this._initializeStats(),this.tilesetInitializationPromise=this._initializeTileSet()}destroy(){this._clearDeferredTraversal(),this.source.destroy?.(),this._destroy()}isLoaded(){return this._pendingCount===0&&this._frameNumber!==0&&this._requestedTiles.length===0}get tiles(){return Object.values(this._tiles)}get frameNumber(){return this._frameNumber}get requestedTiles(){return this._requestedTiles.slice()}get emptyTiles(){return this._emptyTiles.slice()}get cacheBytes(){return this._cacheBytes}set cacheBytes(e){this._cacheBytes=Qn(e,"cacheBytes"),this.options.cacheBytes=this._cacheBytes}get maximumCacheOverflowBytes(){return this._maximumCacheOverflowBytes}set maximumCacheOverflowBytes(e){this._maximumCacheOverflowBytes=Qn(e,"maximumCacheOverflowBytes"),this.options.maximumCacheOverflowBytes=this._maximumCacheOverflowBytes}get queryParams(){let e=this.source.getTileUrl(this.url),r=e.indexOf("?");return r>=0?e.slice(r+1):""}setProps(e){let r=Nl(e,this.cacheBytes),n=Ll(e,this.maximumCacheOverflowBytes);this.options={...this.options,...e,cacheBytes:r,maximumCacheOverflowBytes:n},this._cacheBytes=r,this._maximumCacheOverflowBytes=n}getTileUrl(e){return this.source.getTileUrl(e)}hasExtension(e){return!!this.source.hasExtension?.(e)}update(e=null){this.tilesetInitializationPromise.then(()=>{!e&&this.lastUpdatedVieports?e=this.lastUpdatedVieports:this.lastUpdatedVieports=e,e&&this.doUpdate(e)})}async selectTiles(e=null){return await this.tilesetInitializationPromise,e&&(this.lastUpdatedVieports=e),this.updatePromise||(this.updatePromise=new Promise(r=>{setTimeout(()=>{this.lastUpdatedVieports&&this.doUpdate(this.lastUpdatedVieports),r(this._frameNumber),this.updatePromise=null},this.options.debounceTime)})),this.updatePromise}adjustScreenSpaceError(){this.gpuMemoryUsageInBytes<this.cacheBytes?this.memoryAdjustedScreenSpaceError=Math.max(this.memoryAdjustedScreenSpaceError/1.02,this.options.maximumScreenSpaceError):this.gpuMemoryUsageInBytes>this.cacheBytes+this.maximumCacheOverflowBytes&&(this.memoryAdjustedScreenSpaceError*=1.02)}doUpdate(e){if("loadTiles"in this.options&&!this.options.loadTiles||this.traverseCounter>0)return;let r=e instanceof Array?e:[e],n=new Set(r.map(a=>a.id));for(let a of Object.keys(this.frameStateData))n.has(a)||delete this.frameStateData[a];this._cache.reset(),this._frameNumber++,this.traverseCounter=r.length;let i=Date.now(),o=Number.POSITIVE_INFINITY,s=[];for(let a of r){let c=a.id;this._needTraverse(c)?s.push(c):this.traverseCounter--}for(let a of r){let c=a.id;if(this.roots[c]||(this.roots[c]=this._initializeTileHeaders(this.tileset,null)),!s.includes(c))continue;let l=$n(a,this._frameNumber),h=this.roots[c],u=ml(this._cameraMotionStates[c],l.camera.position,l.camera.direction,i);this._cameraMotionStates[c]=u.state,l.camera.timeSinceMovement=u.timeSinceMovement,Sl(h,this.modelMatrix),l.dynamicScreenSpaceErrorDensity=this.type===he.TILES3D&&this.options.dynamicScreenSpaceError&&!l.viewport.orthographic?wl(h,l,this.options):0,this.dynamicScreenSpaceErrorComputedDensity=l.dynamicScreenSpaceErrorDensity,this._traverser.traverse(h,l,this.options),Object.keys(this._traverser.deferredTiles).length>0&&(o=Math.min(o,Math.max(this.options.foveatedTimeDelay-u.timeSinceMovement,0)))}Number.isFinite(o)?this._scheduleDeferredTraversal(o):this._clearDeferredTraversal()}_scheduleDeferredTraversal(e){this._clearDeferredTraversal(),this._deferredTraversalTimeout=setTimeout(()=>{this._deferredTraversalTimeout=null,this.selectTiles().catch(r=>{let n=r instanceof Error?r:new Error(String(r));this._onTilesetError(n)})},Math.max(e*1e3,0))}_clearDeferredTraversal(){this._deferredTraversalTimeout!==null&&(clearTimeout(this._deferredTraversalTimeout),this._deferredTraversalTimeout=null)}_needTraverse(e){let r=e;return this.options.viewportTraversersMap&&(r=this.options.viewportTraversersMap[e]),r===e}_onTraversalEnd(e){let r=e.viewport.id;this.frameStateData[r]||(this.frameStateData[r]={selectedTiles:[],_requestedTiles:[],_emptyTiles:[]});let n=this.frameStateData[r],i=Object.values(this._traverser.selectedTiles),[o,s]=pl(i,e,this.options.maximumTilesSelected);n.selectedTiles=o;for(let a of s)a.unselect();n._requestedTiles=Object.values(this._traverser.requestedTiles),n._emptyTiles=Object.values(this._traverser.emptyTiles),this.traverseCounter--,!(this.traverseCounter>0)&&this._updateTiles()}_updateTiles(){let e=this.selectedTiles;this.selectedTiles=[],this._requestedTiles=[],this._emptyTiles=[];for(let o in this.frameStateData){let s=this.frameStateData[o];this.selectedTiles=this.selectedTiles.concat(s.selectedTiles),this._requestedTiles=this._requestedTiles.concat(s._requestedTiles),this._emptyTiles=this._emptyTiles.concat(s._emptyTiles)}this.selectedTiles=this.options.onTraversalComplete(this.selectedTiles);let r=new Set(this.selectedTiles.map(o=>o.id)),n=this.selectedTiles.some(o=>!o.tileDrawn),i=0;if(n){for(let o of r)this._heldTiles.add(o);for(let o of this._heldTiles){if(r.has(o))continue;let s=this._tiles[o];s&&s.contentAvailable?(s._selectedFrame=this._frameNumber,this.selectedTiles.push(s),i++):this._heldTiles.delete(o)}}else this._heldTiles=r;i>0&&setTimeout(()=>{this.selectTiles()},0);for(let o of this.selectedTiles)this._tiles[o.id]=o;this._loadTiles(),this._unloadTiles(),this._updateStats(),this._tilesChanged(e,this.selectedTiles)&&this.options.onUpdate()}_tilesChanged(e,r){if(e.length!==r.length)return!0;let n=new Set(e.map(s=>s.id)),i=new Set(r.map(s=>s.id)),o=e.some(s=>!i.has(s.id));return o=o||r.some(s=>!n.has(s.id)),o}_loadTiles(){this._requestedTiles.sort((e,r)=>e._priority-r._priority);for(let e of this._requestedTiles)e.contentUnloaded&&this._loadTile(e)}_unloadTiles(){this._cache.unloadTiles(this,(e,r)=>e._unloadTile(r)),this.options.memoryAdjustedScreenSpaceError&&this.adjustScreenSpaceError()}_updateStats(){let e=0,r=0;for(let n of this.selectedTiles)if(n.contentAvailable&&n.content){e++;let i=n.contents.length?n.contents:[n.content];for(let o of i)o.pointCount?r+=o.pointCount:r+=o.vertexCount||0}this.stats.get(Gl).count=this.selectedTiles.length,this.stats.get(ql).count=e,this.stats.get(kl).count=r,this.stats.get(Fl).count=this.memoryAdjustedScreenSpaceError}async _initializeTileSet(){try{let e=this.source.initialize(),r=this._getSourceMetadata();r&&this._syncSourceState(r),r?.tileset?.root&&typeof r.tileset.root.then!="function"&&(!this.source.prepareTileset||this.spatialReference?.status==="native")&&(this.root=this._initializeTileHeaders(r.tileset,null),this._applyViewState()),await e;let n=this.source.getMetadata();this._syncSourceState(n),await this.source.prepareTileset?.(this),this.root||(this.root=this._initializeTileHeaders(n.tileset,null)),this._applyViewState()}catch(e){let r=e instanceof Error?e:new Error(String(e));throw this._onSourceError(r,this.root),this._onTilesetError(r),r}}_initializeStats(){this.stats.get(Fo),this.stats.get(Vo),this.stats.get(Uo),this.stats.get(Gl),this.stats.get(ql),this.stats.get(zl),this.stats.get(Bl),this.stats.get(Dl),this.stats.get(kl),this.stats.get(jo,"memory"),this.stats.get(Fl)}_initializeTileHeaders(e,r){return this.source.initializeTileHeaders(this,e,r)}_initializeTraverser(){return this.source.createTraverser({basePath:this.basePath,onTraversalEnd:this._onTraversalEnd.bind(this)})}_destroyTileHeaders(e){this._destroySubtree(e)}async _loadTile(e){let r=null;try{this._onStartTileLoading(),r=await e.loadContent()}catch(n){let i=n instanceof Error?n:new Error("load failed");this._onSourceError(i,e),this._onTileLoadError(e,i)}finally{this._onEndTileLoading(),this._onTileLoad(e,r)}}async _loadTileChildren(e,r){try{this._onStartTileLoading(),await e.loadChildren(r)}catch(n){let i=n instanceof Error?n:new Error("subtree load failed");this._onSourceError(i,e),this._onTileLoadError(e,i)}finally{this._onEndTileLoading()}}_onTileLoadError(e,r){this.stats.get(Dl).incrementCount();let n=r.message||r.toString(),i=e.url;console.error(`A 3D tile failed to load: ${e.url} ${n}`),this.options.onTileError(e,n,i)}_onSourceError(e,r=null){this.options.onSourceError(e,this.source,r)}_onTilesetError(e){this.options.onTilesetError(e,this)}_onTileLoad(e,r){if(!r?.loaded)return;e.content&&Hn(e,e.content),this.source.onTileLoaded?.(this,e,r),this._syncSourceState(this.source.getMetadata());let n=this.source.getTilesTotalCount?.();n&&(this.stats.get(Fo).reset(),this.stats.get(Fo).addCount(n)),this._addTileToCache(e),this.options.onTileLoad(e)}_onStartTileLoading(){this._pendingCount++,this.stats.get(Vo).incrementCount()}_onEndTileLoading(){this._pendingCount--,this.stats.get(Vo).decrementCount()}_addTileToCache(e){this._cache.add(this,e,r=>r._updateCacheStats(e))}_updateCacheStats(e){this.stats.get(zl).incrementCount(),this.stats.get(Uo).incrementCount(),this.gpuMemoryUsageInBytes+=e.gpuMemoryUsageInBytes||0,this.stats.get(jo).count=this.gpuMemoryUsageInBytes,this.options.memoryAdjustedScreenSpaceError&&this.adjustScreenSpaceError()}_unloadTile(e){this.gpuMemoryUsageInBytes-=e.gpuMemoryUsageInBytes||0,this.stats.get(Uo).decrementCount(),this.stats.get(Bl).incrementCount(),this.stats.get(jo).count=this.gpuMemoryUsageInBytes,this.options.onTileUnload(e),e.unloadContent()}_destroy(){let e=[];for(this.root&&e.push(this.root);e.length>0;){let r=e.pop();for(let n of r.children)e.push(n);this._destroyTile(r)}this.root=null}_destroySubtree(e){let r=e,n=[r];for(;n.length>0;){e=n.pop();for(let i of e.children)n.push(i);e!==r&&this._destroyTile(e)}r.children=[]}_destroyTile(e){this._cache.unloadTile(this,e),this._unloadTile(e),e.destroy()}_syncSourceState(e){this.tileset=e.tileset,this.loader=e.loader,this.type=e.type,this.url=e.url,this.basePath=e.basePath,this.lodMetricType=e.lodMetricType,this.lodMetricValue=e.lodMetricValue,this.refine=e.refine,this.contentFormats=this.source.contentFormats,this.asset=this.source.asset||this.asset;let r=e.tileset;this.schema=r.schema||null,this.schemaUri=r.schemaUri||null,this.groups=r.groups||[],this.metadata=r.metadata||null,this.statistics=r.statistics??null;let n=Et(e.spatialReference,this.options.spatial);this.spatialReference=e1(this.spatialReference,n),this.properties=this.source.properties??this.properties,this.extras=this.source.extras??this.extras,this.options.attributions?.length?this.credits={attributions:this.options.attributions}:this.credits=this.source.credits||this.credits}_applyViewState(){let e=this.source.getViewState(this.root);this.asset=e.asset||this.source.asset||{},this.properties=e.properties??this.source.properties,this.extras=e.extras??this.source.extras??null,this.credits=e.credits||this.source.credits||this.credits||{attributions:this.options.attributions||[]},this.description=e.description||this.options.description||"",this.boundingVolume=e.boundingVolume||this.root?.boundingVolume||null,this.cartographicCenter=e.cartographicCenter||new M,this.cartesianCenter=e.cartesianCenter||null,this.zoom=e.zoom||1,this.geometricError=this.tileset?.geometricError||0}_getSourceMetadata(){try{return this.source.getMetadata()}catch{return null}}};function e1(t,e){return t?.status==="transformed"&&t.sourceCrs===e.sourceCrs&&t.targetCrs===e.targetCrs&&t.targetHeightReference===e.targetHeightReference&&t.outputCoordinates===e.outputCoordinates?t:e}function jl(t){let e=t.selectedTiles.slice(),r=t.requestedTiles.slice(),n=t.emptyTiles.slice(),i=c=>c.map(l=>String(l.id)).sort(),o=c=>{let l=t.stats.get(c).count;return typeof l=="number"&&Number.isFinite(l)?l:0},a=t.source.getImplicitTilingStats?.();return{frameNumber:t.frameNumber,selectedTileIds:i(e),requestedTileIds:i(r),emptyTileIds:i(n),visibleTileCount:e.length,renderableTileCount:e.filter(c=>c.contentAvailable&&!!c.content).length,loadingTileCount:o("Tiles Loading"),loadedTileCount:o("Tiles Loaded"),failedTileCount:o("Failed Tile Loads"),cachedTileCount:o("Tiles In Memory"),cacheBytes:t.gpuMemoryUsageInBytes,maximumScreenSpaceError:t.memoryAdjustedScreenSpaceError,...a?{implicitTiling:a}:{}}}async function*Wl(t,e={}){if(await t.tilesetInitializationPromise,ti(e.signal),!t.root)throw new Error("Tileset initialization completed without a root tile");let r=[t.root],n=new Set;for(;r.length>0;){ti(e.signal);let i=r.pop();if(n.has(i))continue;if(n.add(i),i.header.implicitSubtree&&i.childrenState!=="ready"){let s=t.source.loadTileChildrenForTraversal;if(!s)throw new Error("Tileset source does not support camera-independent subtree loading");if(!(await s.call(t.source,i,e.signal)).loaded)throw new Error(`Unable to load implicit subtree for tile ${i.id}`);i.childrenState="ready"}if(t.type===he.I3S&&t.source.loadTileChildrenForTraversal&&!(await t.source.loadTileChildrenForTraversal(i,e.signal)).loaded)throw new Error(`Unable to load I3S child nodes for tile ${i.id}`);ti(e.signal);let o=i.contentUrls.length>0&&!i.content;try{if(o){let s=await i.loadContentForTraversal();if(ti(e.signal),!s.loaded)throw new Error(`Unable to load tile content for tile ${i.id}`);t.source.onTileLoaded?.(t,i,s)}yield{tile:i,contents:i.contentEntries}}finally{e.unloadContent&&o&&i.unloadContent()}for(let s=i.children.length-1;s>=0;s--)r.push(i.children[s])}}function ti(t){if(t?.aborted)throw t.reason??new DOMException("The operation was aborted","AbortError")}var ri=class{sourceUrl;options;archivePromise;constructor(e){this.options=e,this.sourceUrl=t1(e.data,e.fallbackFilename)}async loadRoot(e,r,n){return await this.parseArchiveResource(e,this.options.rootPath,r,n,this.options.rootMode)}async loadResource(e,r,n){let i=this.resolveArchivePath(e,e);return await this.parseArchiveResource(e,i,r,n)}async parseArchiveResource(e,r,n,i,o){let s=this.options.getCoreApi();if(!s)throw new Error(this.options.missingCoreApiMessage);let a=await this.loadFile(r,o),c=this.createArchiveFetch(e);return await s.parse(a,n,{...i,fetch:c},{url:e,fetch:c,_parse:s.parse,loaders:[n],coreApi:s})}createArchiveFetch(e){return async r=>{let n=typeof r=="string"?r:r instanceof URL?r.toString():r.url,i=this.resolveArchivePath(n,e),o=await this.loadFile(i);return new Response(o,{status:200})}}async loadFile(e,r){this.archivePromise||=this.openArchiveReadableFile().then(i=>this.options.parseArchive(i));let n=await this.archivePromise;return await this.options.getFile(n,e,r)}async openArchiveReadableFile(){let{data:e}=this.options;if(typeof e!="string")return new zt(e);if(/^https?:\/\//i.test(e))return new xr(e);let r=this.options.getCoreApi();if(!r)throw new Error(this.options.missingCoreApiMessage);let n=await r.fetchFile(e);return new zt(await n.arrayBuffer())}resolveArchivePath(e,r){let n=Wo(e),i=Wo(this.sourceUrl),o=Wo(r),s=o===i?i:ve.dirname(o),a=new RegExp(`\\.${this.options.archiveExtension}/(.*)$`,"i"),c=n.match(a);if(c?.[1])return c[1];let l=/^[a-z][a-z0-9+.-]*:/i.test(n)||n.startsWith("/"),h=n.startsWith(i)?n:o===i&&!l?`${i}/${n}`:ve.resolve(s,n);return h===i?"":h.startsWith(`${i}/`)?h.slice(i.length+1):h.replace(/^\/+/,"")}};function t1(t,e){return typeof t=="string"?t:`memory://${"name"in t&&typeof t.name=="string"&&t.name?t.name:e}`}function Wo(t){let e=t.indexOf("?");return e>=0?t.slice(0,e):t}function ni(t){let e=[],r=new Set,n=i=>{if(!i||typeof i!="object"||r.has(i))return;r.add(i);let o=i,s=o.extensions?.EXT_mesh_features?.featureIds;if(Array.isArray(s))for(let a of s){if(!a||typeof a!="object")continue;let c=a.texture?"texture":a.implicit?"implicit":a.attribute!==void 0?"attribute":a.propertyTable!==void 0?"property-table":"constant";e.push({source:c,attribute:a.attribute,propertyTable:a.propertyTable,constant:a.constant,texture:a.texture,implicit:a.implicit,values:a.values,details:a})}for(let a of Object.values(o))n(a)};return n(t),e}function Yl(t){return t!=null}var de=new M,ii=new M,Hl=new G;function Ut(t,e,r,n=e){if(Ue(t,"3D Tile: boundingVolume must be defined"),t.box){let i=t.s2VolumeInfo?Hl:e;return $l(t.box,i,r)}if(t.region){let i=pr(t.region),o=e.equals(n)?Hl:e.clone().multiplyRight(n.clone().invert());return $l([...i.center,...i.halfAxes],o,r)}if(t.sphere)return r1(t.sphere,e,r);throw new Error("3D Tile: boundingVolume must contain a sphere, region, or box")}function Kl(t,e,r=!1){if(t.box||t.region&&r)return n1(e);if(t.region){let[n,i,o,s,a,c]=t.region;return[[ge(n),ge(i),a],[ge(o),ge(s),c]]}if(t.sphere)return i1(e);throw new Error("Unkown boundingVolume type")}function $l(t,e,r){let n=new M(t[0],t[1],t[2]);e.transform(n,n);let i=[];if(t.length===10){let l=t.slice(3,6),h=new Ge;h.fromArray(t,6);let u=new M([1,0,0]),f=new M([0,1,0]),d=new M([0,0,1]);u.transformByQuaternion(h),u.scale(l[0]),f.transformByQuaternion(h),f.scale(l[1]),d.transformByQuaternion(h),d.scale(l[2]),i=[...u.toArray(),...f.toArray(),...d.toArray()]}else i=[...t.slice(3,6),...t.slice(6,9),...t.slice(9,12)];let o=e.transformAsVector(i.slice(0,3)),s=e.transformAsVector(i.slice(3,6)),a=e.transformAsVector(i.slice(6,9)),c=new H([o[0],o[1],o[2],s[0],s[1],s[2],a[0],a[1],a[2]]);return Yl(r)?(r.center=n,r.halfAxes=c,r):new Xe(n,c)}function r1(t,e,r){let n=new M(t[0],t[1],t[2]);e.transform(n,n);let i=e.getScale(ii),o=Math.max(Math.max(i[0],i[1]),i[2]),s=t[3]*o;return Yl(r)?(r.center=n,r.radius=s,r):new fe(n,s)}function n1(t){let e=Xl(),{halfAxes:r}=t,n=new M(r.getColumn(0)),i=new M(r.getColumn(1)),o=new M(r.getColumn(2));for(let s=0;s<2;s++){for(let a=0;a<2;a++){for(let c=0;c<2;c++)de.copy(t.center),de.add(n),de.add(i),de.add(o),Zl(e,de),o.negate();i.negate()}n.negate()}return e}function i1(t){let e=Xl(),{center:r,radius:n}=t,i=N.WGS84.scaleToGeodeticSurface(r,de),o;i?o=N.WGS84.geodeticSurfaceNormal(i):o=new M(0,0,1);let s=new M(o[2],-o[1],0);s.len()>0?s.normalize():s=new M(0,1,0);let a=s.clone().cross(o);for(let c of[s,a,o]){ii.copy(c).scale(n);for(let l=0;l<2;l++)de.copy(r),de.add(ii),Zl(e,de),ii.negate()}return e}function Xl(){return[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]]}function Zl(t,e){N.WGS84.cartesianToCartographic(e,de),t[0][0]=Math.min(t[0][0],de[0]),t[0][1]=Math.min(t[0][1],de[1]),t[0][2]=Math.min(t[0][2],de[2]),t[1][0]=Math.max(t[1][0],de[0]),t[1][1]=Math.max(t[1][1],de[1]),t[1][2]=Math.max(t[1][2],de[2])}var Ho=new M,Ql=new M,dt=new M,Jl=new M,o1=new M,$o=new G,eh=new G;function oi(t,e){if(t.lodMetricValue===0||Number.isNaN(t.lodMetricValue))return"DIG";let r=2*Yo(t,e);if(r<2)return"OUT";if(!t.header.children)return"DRAW";switch(t.lodMetricType){case"screenSpaceRelative":{let n=e.topDownViewport.height||1;return r/n<=t.lodMetricValue?"DRAW":"DIG"}case"distanceRangeFromDefaultCamera":return t.distanceToTile(e)>=t.lodMetricValue?"DRAW":"DIG";case"maxScreenThresholdSQ":{let n=Math.sqrt(t.lodMetricValue/(Math.PI*.25));return r<=n?"DRAW":"DIG"}default:return r<=t.lodMetricValue?"DRAW":"DIG"}}function Yo(t,e){let{topDownViewport:r}=e,n=t.header.i3sLodMbs||t.header.mbs,i=n[1],o=n[0],s=n[2],a=n[3],c=[...t.boundingVolume.center],l=r.unprojectPosition(r.cameraPosition);N.WGS84.cartographicToCartesian(l,Ho),Ql.copy(Ho).subtract(c).normalize(),N.WGS84.eastNorthUpToFixedFrame(c,$o),eh.copy($o).invert(),dt.copy(Ho).transform(eh);let h=Math.sqrt(dt[0]*dt[0]+dt[1]*dt[1]),u=h*h/dt[2];Jl.copy([dt[0],dt[1],u]);let d=Jl.transform($o).subtract(c).normalize(),p=Ql.cross(d).normalize().scale(a).add(c),g=N.WGS84.cartesianToCartographic(p),_=r.project([o,i,s]),y=r.project(g);return o1.copy(_).subtract(y).magnitude()}var Pr=class{_map=new Map;_array;_length;constructor(e=0){this._array=new Array(e),this._length=e}get length(){return this._length}set length(e){this._length=e,e>this._array.length&&(this._array.length=e)}get values(){return this._array}get(e){return Ue(e<this._array.length),this._array[e]}set(e,r){Ue(e>=0),e>=this.length&&(this.length=e+1),this._map.has(this._array[e])&&this._map.delete(this._array[e]),this._array[e]=r,this._map.set(r,e)}delete(e){let r=this._map.get(e);r>=0&&(this._array.splice(r,1),this._map.delete(e),this.length--)}peek(){return this._array[this._length-1]}push(e){if(!this._map.has(e)){let r=this.length++;this._array[r]=e,this._map.set(e,r)}}pop(){let e=this._array[--this.length];return this._map.delete(e),e}reserve(e){Ue(e>=0),e>this._array.length&&(this._array.length=e)}resize(e){Ue(e>=0),this.length=e}trim(e){e==null&&(e=this.length),this._array.length=e}reset(){this._array=[],this._map=new Map,this._length=0}find(e){return this._map.has(e)}};var s1={loadSiblings:!1,skipLevelOfDetail:!1,baseScreenSpaceError:1024,skipScreenSpaceErrorFactor:16,skipLevels:1,immediatelyLoadDesiredLevelOfDetail:!1,updateTransforms:!0,onTraversalEnd:()=>{},viewportTraversersMap:{},basePath:""},Qe=class{options;disableSkipLevelOfDetail=!1;root=null;selectedTiles={};requestedTiles={};deferredTiles={};emptyTiles={};lastUpdate=new Date().getTime();updateDebounceTime=1e3;_traversalStack=new Pr;_emptyTraversalStack=new Pr;_frameNumber=null;traversalFinished(e){return!0}constructor(e){this.options={...s1,...e}}isSkipLevelOfDetailEnabled(){return this.options.skipLevelOfDetail&&!this.disableSkipLevelOfDetail}traverse(e,r,n){this.root=e,this.options={...this.options,...n},this.reset(),this.updateTile(e,r),this._frameNumber=r.frameNumber,this.executeTraversal(e,r)}reset(){this.requestedTiles={},this.deferredTiles={},this.selectedTiles={},this.emptyTiles={},this._traversalStack.reset(),this._emptyTraversalStack.reset()}executeTraversal(e,r){let n=this._traversalStack;for(e._selectionDepth=1,n.push(e);n.length>0;){let i=n.pop(),o=!1;this.canTraverse(i,r)&&(this.updateChildTiles(i,r),o=this.updateAndPushChildren(i,r,n,i.hasRenderContent?i._selectionDepth+1:i._selectionDepth));let s=i.parent,a=!!(!s||s._shouldRefine),c=!o;i.hasRenderContent?i.refine===te.ADD?(this.loadTile(i,r),this.selectTile(i,r)):i.refine===te.REPLACE&&(this.loadTile(i,r),(c||this.isSkipLevelOfDetailEnabled())&&this.selectTile(i,r)):(this.emptyTiles[i.id]=i,this.loadTile(i,r),c&&this.selectTile(i,r)),this.touchTile(i,r),i._shouldRefine=o&&a}this.completeTraversal(r)}completeTraversal(e){let r=new Date().getTime();(this.traversalFinished(e)||r-this.lastUpdate>this.updateDebounceTime)&&(this.lastUpdate=r,this.options.onTraversalEnd(e))}updateChildTiles(e,r){let n=e.children;for(let i of n)this.updateTile(i,r)}updateAndPushChildren(e,r,n,i){let{loadSiblings:o}=this.options,s=this.isSkipLevelOfDetailEnabled(),a=e.children;a.sort(this.compareDistanceToCamera.bind(this));let c=e.refine===te.REPLACE&&e.hasRenderContent&&!s,l=!1,h=!0;for(let u of a)if(u._selectionDepth=i,u.isVisibleAndInRequestVolume?(n.find(u)&&n.delete(u),n.push(u),l=!0):(c||o)&&u._inRequestVolume&&(this.loadTile(u,r),this.touchTile(u,r)),c){let f;if(u._inRequestVolume?u.hasRenderContent?f=u.contentAvailable:f=this.executeEmptyTraversal(u,r):f=!1,h=h&&f,!h)return!1}return l||(h=!1),h}updateTile(e,r){this.updateTileVisibility(e,r)}selectTile(e,r){this.shouldSelectTile(e,r)&&(e._selectedFrame=r.frameNumber,this.selectedTiles[e.id]=e)}loadTile(e,r){if(this.shouldLoadTile(e)){if(this.shouldDeferTileRequest(e)){this.deferredTiles[e.id]=e;return}e._requestedFrame=r.frameNumber,e._priority=e._getPriority(),this.requestedTiles[e.id]=e}}shouldDeferTileRequest(e){return e.priorityDeferred}touchTile(e,r){e.tileset._cache.touch(e),e._touchedFrame=r.frameNumber}canTraverse(e,r){return e.hasChildren?e.hasTilesetContent?!e.contentExpired:this.shouldRefine(e,r):!1}shouldLoadTile(e){return e.hasUnloadedContent||e.contentExpired}shouldSelectTile(e,r){return e.contentAvailable&&e.contentVisibility(r)!=="outside"}shouldRefine(e,r,n=!1){let i=e._screenSpaceError;return n&&(i=e.getScreenSpaceError(r,!0)),i>e.tileset.memoryAdjustedScreenSpaceError}updateTileVisibility(e,r){let n=[];if(this.options.viewportTraversersMap)for(let i in this.options.viewportTraversersMap)this.options.viewportTraversersMap[i]===r.viewport.id&&n.push(i);else n.push(r.viewport.id);e.updateVisibility(r,n)}compareDistanceToCamera(e,r){return e._distanceToCamera-r._distanceToCamera}anyChildrenVisible(e,r){let n=!1;for(let i of e.children)i.updateVisibility(r),n=n||i.isVisibleAndInRequestVolume;return n}executeEmptyTraversal(e,r){let n=!0,i=!1,o=this._emptyTraversalStack;for(o.push(e);o.length>0;){let s=o.pop(),a=!s.hasRenderContent&&this.canTraverse(s,r),c=!s.hasRenderContent&&s.children.length===0;if(s.header.implicitSubtree&&(i=!0,n=!1),!a&&!s.contentAvailable&&!c&&(n=!1),this.updateTile(s,r),s.isVisibleAndInRequestVolume||(this.loadTile(s,r),this.touchTile(s,r)),a){let l=s.children;for(let h of l)o.push(h)}}return e.hasEmptyContent&&!i||n}};var Ko=new M;function a1(t,e,r,n,i=[]){let o=t.length?t:[e],s=!1,a=!1;for(let c of o){let l="inside";if(n!==se.MASK_INSIDE&&(l=r.computeVisibility(c),l==="outside"))continue;let h=!1;for(let u of i)if(c.intersectPlane(u)==="outside"){h=!0;break}h||(s=!0,a=a||l==="intersecting")}return s?a?"intersecting":"inside":"outside"}function th(t){if(!t||typeof t!="object")return!1;let e=t;return e.shape==="tileset3d"||e.type==="tileset3d"||!!e.tileset}function c1(t){return t!=null}var Re=class{tileset;header;id;url;parent;refine;type;contentUrl;contentUrls=[];lodMetricType="geometricError";lodMetricValue=0;_unscaledLodMetricValue=0;_scaleGeometricError=!0;boundingVolume=null;content=null;contents=[];contentEntries=[];metadataContext={};featureIdSets=[];vectorContent=null;metadata=null;contentMetadata=[];contentState=ae.UNLOADED;gpuMemoryUsageInBytes=0;children=[];childrenState="ready";depth=0;viewportIds=[];transform=new G;extensions=null;implicitTiling=null;userData={};computedTransform;hasEmptyContent=!1;hasTilesetContent=!1;traverser=new Qe({});_cacheNode=null;_frameNumber=null;_expireDate=null;_expiredContent=null;_childrenPromise=null;_boundingBox=void 0;_distanceToCamera=0;_screenSpaceError=0;_screenSpaceErrorProgressiveResolution=0;_priorityProgressiveResolution=!1;_foveatedFactor=0;priorityDeferred=!1;_visibilityPlaneMask;_visible=void 0;_contentBoundingVolume;_contentBoundingVolumes=[];_contentBoundingVolumeHeaders=[];_viewerRequestVolume;get contentBoundingVolume(){return this._contentBoundingVolume}get contentBoundingVolumes(){return this._contentBoundingVolumes}get viewerRequestVolume(){return this._viewerRequestVolume}_initialTransform=new G;_priority=0;_selectedFrame=0;_requestedFrame=0;_selectionDepth=0;_touchedFrame=0;_centerZDepth=0;_shouldRefine=!1;_stackLength=0;_visitedFrame=0;_inRequestVolume=!1;_lodJudge=null;tileDrawn=!0;constructor(e,r,n,i=""){this.header=r,this.tileset=e,this.id=i||r.id,this.url=r.url,this.parent=n,this.refine=this._getRefine(r.refine),this.type=r.type,this.contentUrl=r.contentUrl,this.contentUrls=r.contentUrls||(r.contentUrl?[r.contentUrl]:[]),this._initializeMetadata(r),this.childrenState=r.implicitSubtree?"unloaded":"ready",this._initializeLodMetric(r),this._initializeTransforms(r),this._updateLodMetricScale(),this._initializeBoundingVolumes(r),this._initializeContent(r),this._initializeContentEntries(r),this._initializeRenderingState(r),Object.seal(this)}destroy(){this.header=null}isDestroyed(){return this.header===null}get selected(){return this._selectedFrame===this.tileset._frameNumber}get isVisible(){return this._visible}get isVisibleAndInRequestVolume(){return this._visible&&this._inRequestVolume}get hasRenderContent(){return!this.hasEmptyContent&&!this.hasTilesetContent}get hasChildren(){return this.children.length>0||this.header.children&&this.header.children.length>0||!!(this.header.implicitSubtree&&this.childrenState!=="ready")}get hasUnloadedChildren(){return!!(this.header.implicitSubtree&&(this.childrenState==="unloaded"||this.childrenState==="failed"))}get childrenLoading(){return this.childrenState==="loading"}get contentReady(){return this.contentState===ae.READY||this.hasEmptyContent}get contentAvailable(){return!!(this.contentReady&&this.hasRenderContent||this._expiredContent&&!this.contentFailed)}get hasUnloadedContent(){return this.hasRenderContent&&this.contentUnloaded}get contentUnloaded(){return this.contentState===ae.UNLOADED}get contentExpired(){return this.contentState===ae.EXPIRED}get contentFailed(){return this.contentState===ae.FAILED}get distanceToCamera(){return this._distanceToCamera}get screenSpaceError(){return this._screenSpaceError}get boundingBox(){return this._boundingBox||(this._boundingBox=Kl(this.header.boundingVolume,this.boundingVolume,!this.computedTransform.equals(this._initialTransform))),this._boundingBox}getScreenSpaceError(e,r,n=1){switch(this.tileset.type){case he.I3S:return Yo(this,e);case he.TILES3D:return El(this,e,r,n);default:throw new Error("Unsupported tileset type")}}unselect(){this._selectedFrame=0}_getGpuMemoryUsageInBytes(){return(this.contents.length?this.contents:[this.content]).reduce((r,n)=>r+(n?.gpuMemoryUsageInBytes||n?.byteLength||0),0)}_getPriority(){return this._calculateRequestPriority(!1)}_getChildrenPriority(){return this._calculateRequestPriority(!0)}_calculateRequestPriority(e){let r=this.tileset._traverser,n=r.options.skipLevelOfDetail&&!r.disableSkipLevelOfDetail,i=this.refine===te.ADD||n;if(i&&!this.isVisible&&this._visible!==void 0||this.tileset._frameNumber-this._touchedFrame>=1||this.priorityDeferred||!e&&this.contentState===ae.UNLOADED)return-1;let o=this.parent,a=o&&(!i||this._screenSpaceError===0||o.hasTilesetContent)?o._screenSpaceError:this._screenSpaceError,c=r.root?r.root._screenSpaceError:0,l=Math.max(c-a,0);return Ol({priorityProgressiveResolution:this._priorityProgressiveResolution,foveatedFactor:this._foveatedFactor,reverseScreenSpaceError:l,rootScreenSpaceError:c})}async loadContent(){if(this.hasEmptyContent)return{loaded:!1};if(this.content)return{loaded:!0};this.contentExpired&&(this._expireDate=null),this.contentState=ae.LOADING;let r=await this.tileset._requestScheduler.scheduleRequest(this.id,this._getPriority.bind(this));if(!r)return this.contentState=ae.UNLOADED,{loaded:!1};try{return await this._loadContentFromSource()}catch(n){throw this.contentState=ae.FAILED,n}finally{r.done()}}async loadContentForTraversal(){if(this.hasEmptyContent)return{loaded:!1};if(this.content)return{loaded:!0,contents:this.contents};this.contentState=ae.LOADING;try{return await this._loadContentFromSource()}catch(e){throw this.contentState=ae.FAILED,e}}async _loadContentFromSource(){let e=await this.tileset.source.loadTileContent(this);return e.contents&&(this.contents=e.contents,this.content=this.contents[0]||null),this.vectorContent=this.contents.find(r=>!!r?.vectorContent)?.vectorContent||null,this.tileset.options.contentLoader&&await this.tileset.options.contentLoader(this),this.contentState=ae.READY,this._onContentLoaded(),this._updateContentEntriesAfterLoad(e),e}async loadChildren(e){if(!this.header.implicitSubtree||this.childrenState==="ready")return{loaded:!1,tileCount:0,childSubtreeCount:0};if(this._childrenPromise)return await this._childrenPromise;if(!this.tileset.source.loadTileChildren)throw new Error("Tileset source does not support lazy tile children");this.childrenState="loading",this._childrenPromise=this._loadChildrenWithScheduler(e);try{return await this._childrenPromise}finally{this._childrenPromise=null}}async _loadChildrenWithScheduler(e){let r=await this.tileset._requestScheduler.scheduleRequest(`${this.id}:implicit-subtree`,this._getChildrenPriority.bind(this));if(!r)return this.childrenState="unloaded",{loaded:!1,tileCount:0,childSubtreeCount:0};try{let n=await this.tileset.source.loadTileChildren(this,e);return this.childrenState=n.loaded?"ready":"unloaded",n}catch(n){throw this.childrenState="failed",n}finally{r.done()}}applyImplicitSubtreeHeader(e){let r=this.header.transform,n=this.header.transformMatrix,i=e.transform!==void 0;this.header={...this.header,...e,transform:i?e.transform:r,transformMatrix:i?e.transformMatrix:n,implicitSubtree:void 0},i&&this._initializeTransforms(this.header),this.refine=this._getRefine(e.refine),this.type=e.type,this.contentUrl=e.contentUrl,this.contentUrls=e.contentUrls||(e.contentUrl?[e.contentUrl]:[]),this._initializeMetadata(this.header),this._initializeLodMetric(e),this._updateLodMetricScale(),this._initializeBoundingVolumes(this.header),this._boundingBox=void 0,this._initializeContent(this.header),this._initializeContentEntries(this.header)}_initializeMetadata(e){this.metadata=e.metadata||null;let r=Array.isArray(e.content)?e.content:[e.content];this.contentMetadata=r.filter(Boolean).map(a=>a.metadata||null);let i=(r.find(Boolean)||{}).group,o=typeof i=="number"?this.tileset.groups?.[i]||null:i||null,s={tileset:this.tileset.metadata||null,group:o,tile:this.metadata,content:this.contentMetadata[0]||null,subtree:e.implicitMetadata||null};this.tileset.groups&&(s.groups=this.tileset.groups),this.metadataContext=s}_updateContentEntriesAfterLoad(e){if(e.contentEntries){this.contentEntries=e.contentEntries.map((r,n)=>({...r,index:n,boundingVolume:r.boundingVolume||this._contentBoundingVolumes[n]||this.boundingVolume,payload:r.payload??this.contents[n]??null,featureIds:r.featureIds?.length?r.featureIds:ni(r.payload??this.contents[n]),renderable:!!(r.renderable!==!1&&(r.payload??this.contents[n])&&!th(r.payload??this.contents[n]))})),this.featureIdSets=this.contentEntries.flatMap(r=>r.featureIds);return}this.contentEntries=this.contentEntries.map((r,n)=>({...r,payload:this.contents[n]??null,featureIds:ni(this.contents[n]),renderable:!!this.contents[n]&&!th(this.contents[n])})),this.featureIdSets=this.contentEntries.flatMap(r=>r.featureIds)}getContentEntry(e){return this.contentEntries[e]||null}isContentRenderable(e){return!!this.contentEntries[e]?.renderable}_initializeContentEntries(e){let r=Array.isArray(e.content)?e.content:e.content?[e.content]:[];this.contentEntries=r.map((n,i)=>{let o=n||{};return{index:i,uri:this.contentUrls[i]||o.uri||o.url,group:o.group,type:o.type,payload:null,metadata:o.metadata||null,boundingVolume:this._contentBoundingVolumes[i]||this.boundingVolume,featureIds:this._getFeatureIdSets(o),renderable:!1}})}_getFeatureIdSets(e){return ni(e)}unloadContent(){for(let e of this.contents.length?this.contents:[this.content])e&&e.destroy&&e.destroy();return this.contents=[],this.content=null,this.vectorContent=null,this.contentEntries=this.contentEntries.map(e=>({...e,payload:null,renderable:!1})),this.featureIdSets=this.contentEntries.flatMap(e=>e.featureIds),this.header.content&&this.header.content.destroy&&this.header.content.destroy(),this.header.content=null,this.contentState=ae.UNLOADED,this.tileDrawn=!0,!0}updateVisibility(e,r){if(this._frameNumber===e.frameNumber)return;let n=this.parent,i=n?n._visibilityPlaneMask:se.MASK_INDETERMINATE;if(this.tileset._traverser.options.updateTransforms){let o=n?n.computedTransform:this.tileset.modelMatrix;this._updateTransform(o)}this._distanceToCamera=this.distanceToTile(e),this._screenSpaceError=this.getScreenSpaceError(e,!1),this._updateRequestPriorityMetrics(e),this._visibilityPlaneMask=this.visibility(e,i),this._visible=this._visibilityPlaneMask!==se.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(e),this._frameNumber=e.frameNumber,this.viewportIds=r}_updateRequestPriorityMetrics(e){if(this.tileset.type!==he.TILES3D){this._screenSpaceErrorProgressiveResolution=this._screenSpaceError,this._priorityProgressiveResolution=!1,this._foveatedFactor=0,this.priorityDeferred=!1;return}let r=this.tileset.options,n=r.progressiveResolutionHeightFraction;if(this._screenSpaceErrorProgressiveResolution=this.getScreenSpaceError(e,!1,n),this._priorityProgressiveResolution=Cl(this._screenSpaceErrorProgressiveResolution,this.parent?._screenSpaceErrorProgressiveResolution,this.tileset.memoryAdjustedScreenSpaceError,n),!r.foveatedScreenSpaceError||e.viewport?.orthographic||!e.camera?.position||!e.camera?.direction){this._foveatedFactor=0,this.priorityDeferred=!1;return}this._foveatedFactor=Rl(this.boundingVolume,e.camera);let i=this.tileset._traverser,o=i.options.skipLevelOfDetail&&!i.disableSkipLevelOfDetail,s=Al({refinement:this.refine,skipLevelOfDetail:o,foveatedScreenSpaceError:r.foveatedScreenSpaceError,foveatedConeSize:r.foveatedConeSize,minimumScreenSpaceErrorRelaxation:r.foveatedMinimumScreenSpaceErrorRelaxation,interpolationCallback:r.foveatedInterpolationCallback,foveatedFactor:this._foveatedFactor,verticalFieldOfView:e.camera.verticalFieldOfView,screenSpaceError:this._screenSpaceError,parentScreenSpaceError:this.parent?._screenSpaceError,maximumScreenSpaceError:this.tileset.memoryAdjustedScreenSpaceError,priorityProgressiveResolution:this._priorityProgressiveResolution});this.priorityDeferred=Il(s,e.camera.timeSinceMovement,r.foveatedTimeDelay)}visibility(e,r){let{cullingVolume:n}=e,{boundingVolume:i}=this;return n.computeVisibilityWithPlaneMask(i,r)}contentVisibility(e,r){let n=r===void 0?this._contentBoundingVolumes:this._contentBoundingVolumes[r]?[this._contentBoundingVolumes[r]]:[];return a1(n,this.boundingVolume,e.cullingVolume,this._visibilityPlaneMask,e.clippingPlanes)}distanceToTile(e){let r=this.boundingVolume;return Math.sqrt(Math.max(r.distanceSquaredTo(e.camera.position),0))}cameraSpaceZDepth({camera:e}){let r=this.boundingVolume;return Ko.subVectors(r.center,e.position),e.direction.dot(Ko)}insideViewerRequestVolume(e){let r=this._viewerRequestVolume;return!r||r.distanceSquaredTo(e.camera.position)<=0}updateExpiration(){if(c1(this._expireDate)&&this.contentReady&&!this.hasEmptyContent){let e=Date.now();Date.lessThan(this._expireDate,e)&&(this.contentState=ae.EXPIRED,this._expiredContent=this.content)}}get extras(){return this.header.extras}_initializeLodMetric(e){this._scaleGeometricError=typeof e._scaleGeometricError=="boolean"?e._scaleGeometricError:this.parent?._scaleGeometricError??!0,"lodMetricType"in e?this.lodMetricType=e.lodMetricType:(this.lodMetricType=this.parent&&this.parent.lodMetricType||this.tileset.lodMetricType,console.warn("3D Tile: Required prop lodMetricType is undefined. Using parent lodMetricType")),"lodMetricValue"in e?this._unscaledLodMetricValue=e.lodMetricValue:(this._unscaledLodMetricValue=this.parent?this.parent._unscaledLodMetricValue:this.tileset.lodMetricValue,console.warn("3D Tile: Required prop lodMetricValue is undefined. Using parent lodMetricValue")),this.lodMetricValue=this._unscaledLodMetricValue}_initializeTransforms(e){this.transform=e.transform?new G(e.transform):new G;let r=this.parent,n=this.tileset,i=r&&r.computedTransform?r.computedTransform.clone():n.modelMatrix.clone();this.computedTransform=new G(i).multiplyRight(this.transform);let o=r&&r._initialTransform?r._initialTransform.clone():new G;this._initialTransform=new G(o).multiplyRight(this.transform)}_updateLodMetricScale(){if(this.lodMetricType!==Dt.GEOMETRIC_ERROR||!this._scaleGeometricError){this.lodMetricValue=this._unscaledLodMetricValue;return}let e=this.computedTransform.getScale(Ko),r=Math.max(e[0],e[1],e[2]);this.lodMetricValue=this._unscaledLodMetricValue*r}_initializeBoundingVolumes(e){this._contentBoundingVolume=null,this._contentBoundingVolumeHeaders=[],this._viewerRequestVolume=null,this._updateBoundingVolume(e)}_initializeContent(e){this.content={_tileset:this.tileset,_tile:this},this.contents=[],this.hasEmptyContent=!0,this.contentState=ae.UNLOADED,this.hasTilesetContent=!1,(e.contentUrl||e.contentUrls?.length)&&(this.content=null,this.hasEmptyContent=!1)}_initializeRenderingState(e){this.depth=e.level||(this.parent?this.parent.depth+1:0),this._shouldRefine=!1,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._screenSpaceErrorProgressiveResolution=0,this._priorityProgressiveResolution=!1,this._foveatedFactor=0,this.priorityDeferred=!1,this._visibilityPlaneMask=se.MASK_INDETERMINATE,this._visible=void 0,this._inRequestVolume=!1,this._stackLength=0,this._selectionDepth=0,this._frameNumber=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._requestedFrame=0,this._priority=0}_getRefine(e){return e||this.parent&&this.parent.refine||te.REPLACE}_isTileset(){return(this.contents.length?this.contents:[this.content]).some(e=>e?.shape==="tileset3d")}_onContentLoaded(){let e=this.contents.length?this.contents:[this.content];for(let r of e)switch(r&&r.type){case"vctr":case"geom":this.tileset._traverser.disableSkipLevelOfDetail=!0;break;default:}this._isTileset()?this.hasTilesetContent=!0:this.gpuMemoryUsageInBytes=this._getGpuMemoryUsageInBytes()}_updateBoundingVolume(e){this._boundingBox=void 0,this.boundingVolume=Ut(e.boundingVolume,this.computedTransform,this.boundingVolume,this._initialTransform),e.viewerRequestVolume&&(this._viewerRequestVolume=Ut(e.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume,this._initialTransform));let r=e.content;r&&(this._contentBoundingVolumeHeaders=Array.isArray(r)?r:[r]);let n=r?Array.isArray(r)?r:[r]:this._contentBoundingVolumeHeaders;this._contentBoundingVolumes=n.length?n.map(i=>i?.boundingVolume?Ut(i.boundingVolume,this.computedTransform,void 0,this._initialTransform):this.boundingVolume):[this.boundingVolume],this._contentBoundingVolume=this._contentBoundingVolumes[0]||null}_updateTransform(e=new G){let r=e.clone().multiplyRight(this.transform);r.equals(this.computedTransform)||(this.computedTransform=r,this._updateLodMetricScale(),this._updateBoundingVolume(this.header))}};var si=class extends Qe{pendingImplicitSubtrees=new Map;traversalFinished(e){let r=`${e.viewport.id}:`;for(let[n,i]of this.pendingImplicitSubtrees)if(n.startsWith(r)&&i===e.frameNumber)return!1;return!0}executeTraversal(e,r){if(!this.isSkipLevelOfDetailEnabled()){super.executeTraversal(e,r);return}this.executeSkipTraversal(e,r)}executeSkipTraversal(e,r){let n=[e];for(e._selectionDepth=e.parent?e.parent._selectionDepth:1;n.length>0;){let i=n.pop(),o=!i.parent||i.parent._shouldRefine,s=this.canTraverse(i,r)&&this.updateAndPushSkipChildren(i,r,n)&&o,a=!s&&o;i.hasRenderContent?i.refine===te.ADD?(this.loadTile(i,r),this.selectDesiredTile(i,r)):i.refine===te.REPLACE&&(this.isInBaseTraversal(i,r)?(this.loadTile(i,r),a&&this.selectDesiredTile(i,r)):a?(this.loadTile(i,r),this.selectDesiredTile(i,r)):this.hasReachedSkippingThreshold(i,r)&&this.loadTile(i,r)):(this.emptyTiles[i.id]=i,this.loadTile(i,r),a&&this.selectDesiredTile(i,r)),this.touchTile(i,r),i._shouldRefine=s}this.completeTraversal(r)}updateAndPushSkipChildren(e,r,n){this.updateChildTiles(e,r),e.children.sort(this.compareDistanceToCamera.bind(this));let i=!1;for(let o of e.children)o._selectionDepth=e.hasRenderContent?e._selectionDepth+1:e._selectionDepth,o.isVisibleAndInRequestVolume?(n.push(o),i=!0):this.options.loadSiblings&&(this.loadTile(o,r),this.touchTile(o,r));return i}isInBaseTraversal(e,r){if(this.options.immediatelyLoadDesiredLevelOfDetail)return!1;if(!this.findNearestRequestedOrLoadedAncestor(e,r))return!0;let n=Number.isFinite(this.options.baseScreenSpaceError)?Math.max(this.options.baseScreenSpaceError,0):1024,i=Math.max(n,e.tileset.memoryAdjustedScreenSpaceError);return e._screenSpaceError===0&&e.parent?e.parent._screenSpaceError>i:e._screenSpaceError>i}hasReachedSkippingThreshold(e,r){if(this.options.immediatelyLoadDesiredLevelOfDetail)return!1;if(e._priorityProgressiveResolution&&e._screenSpaceErrorProgressiveResolution<=e.tileset.memoryAdjustedScreenSpaceError&&!!(e.parent&&e.parent._screenSpaceErrorProgressiveResolution>e.tileset.memoryAdjustedScreenSpaceError))return!0;let i=this.findNearestRequestedOrLoadedAncestor(e,r);if(!i)return!1;let o=Number.isFinite(this.options.skipScreenSpaceErrorFactor)&&this.options.skipScreenSpaceErrorFactor>0?this.options.skipScreenSpaceErrorFactor:16,s=Number.isFinite(this.options.skipLevels)?Math.max(Math.floor(this.options.skipLevels),0):1;return e._screenSpaceError<i._screenSpaceError/o&&e.depth>i.depth+s}findNearestRequestedOrLoadedAncestor(e,r){let n=e.parent;for(;n;){if(n.hasRenderContent&&!n.contentFailed&&(!n.hasUnloadedContent||n._requestedFrame===r.frameNumber))return n;n=n.parent}return null}selectDesiredTile(e,r){let n=e;for(;n;){if(this.shouldSelectTile(n,r)){this.selectTile(n,r);return}n=n.parent}this.selectLoadedDescendants(e,r)}selectLoadedDescendants(e,r){let n=[{tile:e,depth:0}];for(;n.length>0;){let{tile:i,depth:o}=n.pop();for(let s of i.children)this.updateTile(s,r),s.isVisibleAndInRequestVolume&&(s.contentAvailable?(this.selectTile(s,r),this.touchTile(s,r)):o<1&&n.push({tile:s,depth:o+1}))}}compareDistanceToCamera(e,r){return r._distanceToCamera===0&&e._distanceToCamera===0?r._centerZDepth-e._centerZDepth:r._distanceToCamera-e._distanceToCamera}updateChildTiles(e,r){let n=e.header.implicitSubtree?.coordinates.level===0;if(e.hasUnloadedChildren&&e.isVisibleAndInRequestVolume&&(n||this.shouldRefine(e,r))){let i=`${r.viewport.id}:${e.id}`;this.pendingImplicitSubtrees.has(i)||(this.pendingImplicitSubtrees.set(i,r.frameNumber),e.tileset._loadTileChildren(e,r).finally(()=>{this.handleImplicitSubtreeLoad(e,r,i)}))}super.updateChildTiles(e,r)}handleImplicitSubtreeLoad(e,r,n){this.pendingImplicitSubtrees.delete(n),this._frameNumber===r.frameNumber&&(e.childrenState==="ready"?this.executeTraversal(e,r):this.traversalFinished(r)&&this.options.onTraversalEnd(r))}updateTileVisibility(e,r){if(super.updateTileVisibility(e,r),!e.isVisibleAndInRequestVolume)return;let n=e.children.length>0;if(e.hasTilesetContent&&n){let s=e.children[0];this.updateTileVisibility(s,r),e._visible=s._visible;return}if(this.meetsScreenSpaceErrorEarly(e,r)){e._visible=!1;return}let i=e.refine===te.REPLACE,o=e._optimChildrenWithinParent===Tl.USE_OPTIMIZATION;if(i&&o&&n&&!this.anyChildrenVisible(e,r)){e._visible=!1;return}}meetsScreenSpaceErrorEarly(e,r){let{parent:n}=e;return!n||n.hasTilesetContent||n.refine!==te.ADD?!1:!this.shouldRefine(e,r,!0)}};var l1=6378137,h1=6378137,Xo=6356752314245179e-9,Vt=new M;function rh(t,e){if(t instanceof Xe){let{halfAxes:r}=t,n=u1(r);return Math.log2(Xo/(n+e[2]))}else if(t instanceof fe){let{radius:r}=t;return Math.log2(Xo/(r+e[2]))}else if(t.width&&t.height){let{width:r,height:n}=t,i=Math.log2(l1/r),o=Math.log2(h1/n);return(i+o)/2}return 1}function Zo(t,e,r){N.WGS84.cartographicToCartesian([t.xmax,t.ymax,t.zmax],Vt);let n=Math.sqrt(Math.pow(Vt[0]-r[0],2)+Math.pow(Vt[1]-r[1],2)+Math.pow(Vt[2]-r[2],2));return Math.log2(Xo/(n+e[2]))}function nh(t,e,r){let[n,i,o,s]=t;return Zo({xmin:n,xmax:o,ymin:i,ymax:s,zmin:0,zmax:0},e,r)}function u1(t){t.getColumn(0,Vt);let e=t.getColumn(1),r=t.getColumn(2);return Vt.add(e).add(r).len()}var f1=Object.freeze({meter:1,millimeter:.001,centimeter:.01,decimeter:.1,kilometer:1e3,foot:.3048,yard:.9144,mile:1609.344,"us-foot":.3048006096012192,"us-inch":.0254000508001016,"us-yard":.9144018288036576,"us-mile":1609.3472186944373,"clarke-foot":.3047972654,"clarke-yard":.9143917962,"clarke-link":.201166195164,"sears-yard":.914398414616,"sears-foot":.304799471539,"sears-chain":20.1167651216,"sears-1922-truncated-chain":20.116756,"benoit-1895-b-chain":20.1167824944,"indian-yard":.914398530744,"indian-1937-yard":.91439523,"gold-coast-foot":.304799710181}),d1=Object.freeze({m:"meter",metre:"meter",meters:"meter",metres:"meter",mm:"millimeter",millimetre:"millimeter",millimeters:"millimeter",millimetres:"millimeter",cm:"centimeter",centimetre:"centimeter",centimeters:"centimeter",centimetres:"centimeter",dm:"decimeter",decimetre:"decimeter",decimeters:"decimeter",decimetres:"decimeter",km:"kilometer",kilometre:"kilometer",kilometers:"kilometer",kilometres:"kilometer",ft:"foot",feet:"foot","us-survey-foot":"us-foot","us-survey-feet":"us-foot",yd:"yard",yards:"yard",mi:"mile",miles:"mile"});function Rr(t){if(!t)return;let e=t.trim().toLowerCase().replaceAll("_","-"),r=d1[e]||e;return f1[r]}function ih(t,e){return e!==void 0?Number.isFinite(e)&&e>0?e:void 0:t?Rr(t):1}function ai(t){let e=t.spatialReference||t.fullExtent?.spatialReference,r=_1(e),n=t.heightModelInfo?.vertCRS||y1(e),i=t.heightModelInfo?.heightModel,o=t.heightModelInfo?.heightUnit,s=ih(o,t.ZFactor),a=i==="ellipsoidal"?"ellipsoidal":i==="gravity_related_height"?"orthometric":"unknown",c=ah(e),l=c===void 0?r?Me(r):"unknown":Me(`EPSG:${c}`),h=m1(l,o,t.ZFactor),u=[],f=p1(t.elevationInfo?.mode),d=t.elevationInfo?t.elevationInfo.unit||"meter":void 0,m=Rr(d);return s===void 0&&u.push(t.ZFactor!==void 0?`I3S ZFactor ${t.ZFactor} is not a positive finite conversion factor`:`Unsupported I3S vertical unit ${o}`),t.elevationInfo&&m===void 0&&u.push(`Unsupported I3S elevation unit ${d}`),t.elevationInfo?.mode&&!f&&u.push(`Unsupported I3S elevation mode ${t.elevationInfo.mode}`),f&&f!=="absoluteHeight"&&u.push(`I3S elevation mode ${f} requires a terrain or scene elevation provider`),Pe({sourceCrs:r,sourceCrsRepresentation:c!==void 0?"identifier":r?"wkt":void 0,sourceCrsAlternatives:c!==void 0&&e?.wkt?[{definition:e.wkt,representation:"wkt"}]:void 0,verticalCrs:n,units:h,verticalUnitScale:s??Number.NaN,heightReference:a,elevationMode:f,elevationOffset:t.elevationInfo?.offset,elevationUnit:d,elevationUnitScale:t.elevationInfo?.mode&&!f?Number.NaN:m??(t.elevationInfo?Number.NaN:1),coordinateFrame:l,axisOrder:r?"xyz":"unknown",provenance:r?"metadata":"unknown",warnings:u})}function m1(t,e,r){if(t==="geocentric")return["meter","meter","meter"];if(t==="geographic"&&(e||r===void 0))return["degree","degree",e||"meter"]}function p1(t){switch(t){case"absoluteHeight":case"onTheGround":case"relativeToGround":case"relativeToScene":return t;default:return}}function ci(t){let e=g1(t);if(e)return e;let r=oh(t,"TILESET_CRS_GEOCENTRIC"),n=oh(t,"TILESET_CRS_COORDINATE_EPOCH"),i=[],o,s="unknown",a;typeof r=="string"&&r.toUpperCase()!=="UNKNOWN"?(o=r,s="metadata",a="explicit"):r!==void 0?(i.push("3D Tiles geocentric CRS is explicitly unknown"),s="metadata",a="unknown"):t.root?.boundingVolume?.region?(o="EPSG:4978",s="format-default",a="default"):t.schemaUri&&!t.schema&&i.push("External 3D Tiles metadata schema must be loaded before CRS semantics can resolve");let c=sh(n);return n!==void 0&&c===void 0&&i.push("3D Tiles coordinate epoch is not a finite decimal year"),Pe({sourceCrs:o,sourceCrsState:a,sourceCrsRepresentation:o?"identifier":void 0,coordinateEpoch:c,heightReference:o?"ellipsoidal":"unknown",coordinateFrame:o?"geocentric":"unknown",axisOrder:o?"xyz":"unknown",provenance:s,warnings:i})}function g1(t){let e=t.extensions?.EXT_geospatial_crs;if(!e)return;let r=[],n,i,o,s;if(e.format==="wkid"){let h=e.extensions?.EXT_geospatial_crs_wkid;typeof h?.authority=="string"&&Number.isInteger(h.wkid)?(n=`${h.authority}:${h.wkid}`,s="identifier",Number.isInteger(h.vcsWkid)&&(i=`${h.authority}:${h.vcsWkid}`),o=sh(h.epoch),h.epoch!==void 0&&o===void 0&&r.push("EXT_geospatial_crs_wkid epoch is not a finite decimal year")):r.push("EXT_geospatial_crs_wkid requires string authority and integer wkid")}else if(e.format==="wkt2"){let h=e.extensions?.EXT_geospatial_crs_wkt2;typeof h?.wkt2=="string"&&h.wkt2.trim()?(n=h.wkt2,s="wkt"):r.push("EXT_geospatial_crs_wkt2 requires a nonempty wkt2 string")}else r.push(`Unsupported EXT_geospatial_crs format ${String(e.format)}`);let a=s==="wkt"?Me(n):Bo(n)||"unknown",c=M1(i);i&&!c&&r.push(`Unsupported vertical CRS ${String(i)}; vertical unit and height reference are unknown`);let l=i?c?.unit:"meter";return Pe({sourceCrs:n,sourceCrsState:n?"explicit":"unknown",sourceCrsRepresentation:s,verticalCrs:i,coordinateEpoch:o,units:a==="geocentric"?["meter","meter","meter"]:a==="geographic"&&l?["degree","degree",l]:void 0,verticalUnitScale:i?c?.verticalUnitScale??Number.NaN:1,heightReference:i?c?.heightReference??"unknown":n?"ellipsoidal":"unknown",coordinateFrame:a,axisOrder:n?"xyz":"unknown",provenance:"metadata",warnings:r})}function M1(t){if(typeof t!="string")return;let e=/^EPSG:(\d+)$/i.exec(t);if(e)switch(Number(e[1])){case 5702:case 6360:return{unit:"us-foot",verticalUnitScale:1200/3937,heightReference:"orthometric"};case 5703:return{unit:"meter",verticalUnitScale:1,heightReference:"orthometric"};default:return}}function sh(t){if(typeof t!="string"&&typeof t!="number"||typeof t=="string"&&!t.trim())return;let e=Number(t);return Number.isFinite(e)?e:void 0}function _1(t){let e=ah(t);return e!==void 0?`EPSG:${e}`:t?.wkt}function y1(t){let e=t?.latestVcsWkid??t?.vcsWkid;return e===void 0?void 0:`EPSG:${e}`}function ah(t){return t?.latestWkid??t?.wkid}function oh(t,e){let r=t.metadata?.class;if(!r)return;let i=t.schema?.classes?.[r]?.properties,o=t.metadata?.properties;for(let[s,a]of Object.entries(i||{}))if(a.semantic===e)return o?.[s]}var Qo=Symbol.for("@math.gl/projection/projection-implementations");function Jo(){let t=globalThis;return t[Qo]||(t[Qo]=new WeakMap),t[Qo]}function ch(t){return"create"in t?t:Jo().get(t)?.implementation}function lh(t){if("create"in t)return Promise.resolve(t);let e=Jo().get(t);if(e||(e={load:()=>t.preload()},Jo().set(t,e)),e.implementation)return Promise.resolve(e.implementation);let r=e;return r.pending||(r.pending=Promise.resolve().then(r.load).then(n=>{let i=s=>s.toLowerCase().replace(/[\s_-]/g,""),o=new Set([n.name,...n.aliases||[]].map(i));if(typeof n.create!="function"||![t.name,...t.aliases||[]].every(s=>o.has(i(s))))throw new Error("Loaded projection does not match descriptor: "+t.name);return r.implementation=n,n}).catch(n=>{throw r.pending=void 0,n})),r.pending}var jt=class{constructor(){this.point={x:0,y:0,z:0},this.busy=!1}acquire(){return this.busy?{x:0,y:0,z:0}:(this.busy=!0,this.point)}release(e){e===this.point&&(this.busy=!1)}};function ze(t,e){let r=new jt,n=(i,o,s)=>{let a=r.acquire();try{return a.x=i,a.y=o,a.z=0,s(a),[a.x,a.y]}finally{r.release(a)}};return{forward(i,o){return n(i,o,t)},inverse(i,o){return n(i,o,e)},forwardInPlace:t,inverseInPlace:e}}function lt(t,e,r=!1){let n=e?t.inverseInPlace:t.forwardInPlace;if(n)return n.bind(t);if(r){let o=e?t.inverse3D:t.forward3D;return s=>{let a=o.call(t,[s.x,s.y,s.z]);s.x=a[0],s.y=a[1],s.z=a[2]}}let i=e?t.inverse:t.forward;return o=>{let s=i.call(t,o.x,o.y);o.x=s[0],o.y=s[1]}}var li=34028234663852886e22;function hi(t,e,r){if(!(Array.isArray(t)||t instanceof Float32Array||t instanceof Float64Array))throw new Error("Scalar input requires a number array, Float32Array or Float64Array");if(!(Array.isArray(e)||e instanceof Float32Array||e instanceof Float64Array)||e.length<r)throw new Error("Scalar output requires a preallocated number array, Float32Array or Float64Array with sufficient capacity");if(t===e||Array.isArray(t)||Array.isArray(e))return;let n=t,i=e,o=typeof SharedArrayBuffer<"u"&&n.buffer instanceof SharedArrayBuffer&&i.buffer instanceof SharedArrayBuffer;if((n.buffer===i.buffer||o)&&n.byteOffset<i.byteOffset+r*i.BYTES_PER_ELEMENT&&i.byteOffset<n.byteOffset+n.byteLength)throw new Error("Scalar input/output views overlap; use the same view for in-place projection")}function hh(t,e,r,n){if(e instanceof Float32Array){if(Math.abs(r.x)>li||Math.abs(r.y)>li||n>=3&&Math.abs(r.z)>li)throw new Error("Projected coordinate exceeds Float32 range");for(let i=3;i<t.length;i++){let o=t[i];if(Number.isFinite(o)&&Math.abs(o)>li)throw new Error("Trailing ordinate exceeds Float32 range")}}for(let i=3;i<t.length;i++)e[i]=t[i];return e[0]=r.x,e[1]=r.y,n>=3&&(e[2]=r.z),e}var uh,fh=Symbol.for("@math.gl/projection/TypeScriptCRSError"),Ce=class t extends Error{static[(uh=fh,Symbol.hasInstance)](e){return this!==t?Function.prototype[Symbol.hasInstance].call(this,e):e instanceof Error&&e[fh]===!0}constructor(e,r){super(r),this.reason=e,this[uh]=!0,this.name="TypeScriptCRSError"}};function D(t){throw new Ce("missing-transform-stage",t)}function dh(t,e){if(typeof t=="string"||"type"in t)return{definition:t,lossy:!1};let r=t,n="crs"in r?r:void 0,i="crs"in r?r.crs:r;if(i.state!=="explicit"&&i.state!=="default")throw new Ce("unknown-syntax","Cannot transform an "+i.state+" CRS reference");let o=!1;return n?.coordinateEpoch!==void 0&&D("Coordinate epochs require a time-dependent transformation"),n?.vertical&&n.vertical.state!=="absent"&&(e.mode!=="horizontal"&&D("A separately declared vertical CRS requires explicit horizontal extraction"),o=!0),{definition:i.definition,spatialReference:n,lossy:o}}function mh(t,e){if(!e)return t;if(e.coordinateFrame!=="unknown"&&e.coordinateFrame!==t.kind)throw new Error("SpatialReference coordinate frame disagrees with its CRS");let r=e.coordinateOrder,n=t.kind==="geocentric"?{x:"e",y:"n",z:"u"}:{longitude:"e",lon:"e",latitude:"n",lat:"n",easting:"e",northing:"n",height:"u",altitude:"u",x:"e",y:"n",z:"u"},i;if(r.length&&(i=r.slice(0,3).map(o=>n[o.toLowerCase()]||"?").join(""),i.length===2&&(i+="u"),(i.length!==3||!i.includes("e")||!i.includes("n")||!i.includes("u"))&&D("Unsupported SpatialReference coordinate order"),(r.length>4||r.length>3&&!["m","measure"].includes(r[3]))&&D("Unsupported fourth coordinate component")),e.units?.length){let o={m:1,meter:1,metre:1,meters:1,metres:1,km:1e3,ft:.3048,"us-ft":.3048006096012192,degree:Math.PI/180,degrees:Math.PI/180,radian:1,radians:1,grad:Math.PI/200};for(let s=0;s<Math.min(e.units.length,3);s++){let a=(i||"enu")[s]==="u",c=t.kind==="geocentric"?t.toMeter:a?t.verticalUnit:t.kind==="geographic"?t.angularUnit:t.toMeter;(Math.abs((o[e.units[s]]??NaN)-c)>1e-12||o[e.units[s]]===void 0)&&D("SpatialReference units disagree with its CRS")}}return Object.freeze({...t,storedAxis:i})}var ee=Math.PI/180;function L(t,e,r){if(!Object.prototype.hasOwnProperty.call(t,e))return r;let n=t[e];if(typeof n!="string"||!/^[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/i.test(n))throw new Error(`Invalid numeric PROJ parameter: +${e}`);let i=Number(n);if(!Number.isFinite(i))throw new Error(`Invalid numeric PROJ parameter: +${e}`);return i}function Cr(t,e){let r=L(t,e,0);if(Math.abs(r)>=90)throw new Error(`+${e} must be between -90 and 90 degrees`);return r*ee}function Be(t){if(Math.abs(t)<=Math.PI)return t;let e=2*Math.PI;return((t+Math.PI)%e+e)%e-Math.PI}var ui={wgs84:{towgs84:"0,0,0",ellipse:"WGS84",datumName:"WGS84"},ch1903:{towgs84:"674.374,15.056,405.346",ellipse:"bessel",datumName:"swiss"},ggrs87:{towgs84:"-199.87,74.79,246.62",ellipse:"GRS80",datumName:"Greek_Geodetic_Reference_System_1987"},nad83:{towgs84:"0,0,0",ellipse:"GRS80",datumName:"North_American_Datum_1983"},nad27:{nadgrids:"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",ellipse:"clrk66",datumName:"North_American_Datum_1927"},potsdam:{towgs84:"598.1,73.7,418.2,0.202,0.045,-2.455,6.7",ellipse:"bessel",datumName:"Potsdam Rauenberg 1950 DHDN"},carthage:{towgs84:"-263.0,6.0,431.0",ellipse:"clrk80ign",datumName:"Carthage 1934 Tunisia"},hermannskogel:{towgs84:"577.326,90.129,463.919,5.137,1.474,5.297,2.4232",ellipse:"bessel",datumName:"Hermannskogel"},mgi:{towgs84:"577.326,90.129,463.919,5.137,1.474,5.297,2.4232",ellipse:"bessel",datumName:"Militar-Geographische Institut"},osni52:{towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"airy",datumName:"Irish National"},ire65:{towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"mod_airy",datumName:"Ireland 1965"},rassadiran:{towgs84:"-133.63,-157.5,-158.62",ellipse:"intl",datumName:"Rassadiran"},nzgd49:{towgs84:"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",ellipse:"intl",datumName:"New Zealand Geodetic Datum 1949"},osgb36:{towgs84:"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",ellipse:"airy",datumName:"Ordnance Survey of Great Britain 1936"},s_jtsk:{towgs84:"589,76,480",ellipse:"bessel",datumName:"S-JTSK (Ferro)"},beduaram:{towgs84:"-106,-87,188",ellipse:"clrk80",datumName:"Beduaram"},gunung_segara:{towgs84:"-403,684,41",ellipse:"bessel",datumName:"Gunung Segara Jakarta"},rnb72:{towgs84:"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",ellipse:"intl",datumName:"Reseau National Belge 1972"},EPSG_5451:{towgs84:"6.41,-49.05,-11.28,1.5657,0.5242,6.9718,-5.7649"},IGNF_LURESG:{towgs84:"-192.986,13.673,-39.309,-0.4099,-2.9332,2.6881,0.43"},EPSG_4614:{towgs84:"-119.4248,-303.65872,-11.00061,1.164298,0.174458,1.096259,3.657065"},EPSG_4615:{towgs84:"-494.088,-312.129,279.877,-1.423,-1.013,1.59,-0.748"},ESRI_37241:{towgs84:"-76.822,257.457,-12.817,2.136,-0.033,-2.392,-0.031"},ESRI_37249:{towgs84:"-440.296,58.548,296.265,1.128,10.202,4.559,-0.438"},ESRI_37245:{towgs84:"-511.151,-181.269,139.609,1.05,2.703,1.798,3.071"},EPSG_4178:{towgs84:"24.9,-126.4,-93.2,-0.063,-0.247,-0.041,1.01"},EPSG_4622:{towgs84:"-472.29,-5.63,-304.12,0.4362,-0.8374,0.2563,1.8984"},EPSG_4625:{towgs84:"126.93,547.94,130.41,-2.7867,5.1612,-0.8584,13.8227"},EPSG_5252:{towgs84:"0.023,0.036,-0.068,0.00176,0.00912,-0.01136,0.00439"},EPSG_4314:{towgs84:"597.1,71.4,412.1,0.894,0.068,-1.563,7.58"},EPSG_4282:{towgs84:"-178.3,-316.7,-131.5,5.278,6.077,10.979,19.166"},EPSG_4231:{towgs84:"-83.11,-97.38,-117.22,0.005693,-0.044698,0.044285,0.1218"},EPSG_4274:{towgs84:"-230.994,102.591,25.199,0.633,-0.239,0.9,1.95"},EPSG_4134:{towgs84:"-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.71006"},EPSG_4254:{towgs84:"18.38,192.45,96.82,0.056,-0.142,-0.2,-0.0013"},EPSG_4159:{towgs84:"-194.513,-63.978,-25.759,-3.4027,3.756,-3.352,-0.9175"},EPSG_4687:{towgs84:"0.072,-0.507,-0.245,0.0183,-0.0003,0.007,-0.0093"},EPSG_4227:{towgs84:"-83.58,-397.54,458.78,-17.595,-2.847,4.256,3.225"},EPSG_4746:{towgs84:"599.4,72.4,419.2,-0.062,-0.022,-2.723,6.46"},EPSG_4745:{towgs84:"612.4,77,440.2,-0.054,0.057,-2.797,2.55"},EPSG_6311:{towgs84:"8.846,-4.394,-1.122,-0.00237,-0.146528,0.130428,0.783926"},EPSG_4289:{towgs84:"565.7381,50.4018,465.2904,-0.395026,0.330772,-1.876073,4.07244"},EPSG_4230:{towgs84:"-68.863,-134.888,-111.49,-0.53,-0.14,0.57,-3.4"},EPSG_4154:{towgs84:"-123.02,-158.95,-168.47"},EPSG_4156:{towgs84:"570.8,85.7,462.8,4.998,1.587,5.261,3.56"},EPSG_4299:{towgs84:"482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"},EPSG_4179:{towgs84:"33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84"},EPSG_4313:{towgs84:"-106.8686,52.2978,-103.7239,0.3366,-0.457,1.8422,-1.2747"},EPSG_4194:{towgs84:"163.511,127.533,-159.789"},EPSG_4195:{towgs84:"105,326,-102.5"},EPSG_4196:{towgs84:"-45,417,-3.5"},EPSG_4611:{towgs84:"-162.619,-276.959,-161.764,0.067753,-2.243648,-1.158828,-1.094246"},EPSG_4633:{towgs84:"137.092,131.66,91.475,-1.9436,-11.5993,-4.3321,-7.4824"},EPSG_4641:{towgs84:"-408.809,366.856,-412.987,1.8842,-0.5308,2.1655,-121.0993"},EPSG_4643:{towgs84:"-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7002"},EPSG_4300:{towgs84:"482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"},EPSG_4188:{towgs84:"482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"},EPSG_4660:{towgs84:"982.6087,552.753,-540.873,6.681627,-31.611492,-19.848161,16.805"},EPSG_4662:{towgs84:"97.295,-263.247,310.882,-1.5999,0.8386,3.1409,13.3259"},EPSG_3906:{towgs84:"577.88891,165.22205,391.18289,4.9145,-0.94729,-13.05098,7.78664"},EPSG_4307:{towgs84:"-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547"},EPSG_6892:{towgs84:"-76.269,-16.683,68.562,-6.275,10.536,-4.286,-13.686"},EPSG_4690:{towgs84:"221.597,152.441,176.523,2.403,1.3893,0.884,11.4648"},EPSG_4691:{towgs84:"218.769,150.75,176.75,3.5231,2.0037,1.288,10.9817"},EPSG_4629:{towgs84:"72.51,345.411,79.241,-1.5862,-0.8826,-0.5495,1.3653"},EPSG_4630:{towgs84:"165.804,216.213,180.26,-0.6251,-0.4515,-0.0721,7.4111"},EPSG_4692:{towgs84:"217.109,86.452,23.711,0.0183,-0.0003,0.007,-0.0093"},EPSG_9333:{towgs84:"0,0,0,-0.008393,0.000749,-0.010276,0"},EPSG_9059:{towgs84:"0,0,0"},EPSG_4312:{towgs84:"601.705,84.263,485.227,4.7354,1.3145,5.393,-2.3887"},EPSG_4123:{towgs84:"-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496"},EPSG_4309:{towgs84:"-124.45,183.74,44.64,-0.4384,0.5446,-0.9706,-2.1365"},ESRI_104106:{towgs84:"-283.088,-70.693,117.445,-1.157,0.059,-0.652,-4.058"},EPSG_4281:{towgs84:"-219.247,-73.802,269.529"},EPSG_4322:{towgs84:"0,0,4.5"},EPSG_4324:{towgs84:"0,0,1.9"},EPSG_4284:{towgs84:"43.822,-108.842,-119.585,1.455,-0.761,0.737,0.549"},EPSG_4277:{towgs84:"446.448,-125.157,542.06,0.15,0.247,0.842,-20.489"},EPSG_4207:{towgs84:"-282.1,-72.2,120,-1.529,0.145,-0.89,-4.46"},EPSG_4688:{towgs84:"347.175,1077.618,2623.677,33.9058,-70.6776,9.4013,186.0647"},EPSG_4689:{towgs84:"410.793,54.542,80.501,-2.5596,-2.3517,-0.6594,17.3218"},EPSG_4720:{towgs84:"0,0,4.5"},EPSG_4273:{towgs84:"278.3,93,474.5,7.889,0.05,-6.61,6.21"},EPSG_4240:{towgs84:"204.64,834.74,293.8"},EPSG_4817:{towgs84:"278.3,93,474.5,7.889,0.05,-6.61,6.21"},ESRI_104131:{towgs84:"426.62,142.62,460.09,4.98,4.49,-12.42,-17.1"},EPSG_4265:{towgs84:"-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68"},EPSG_4263:{towgs84:"-111.92,-87.85,114.5,1.875,0.202,0.219,0.032"},EPSG_4298:{towgs84:"-689.5937,623.84046,-65.93566,-0.02331,1.17094,-0.80054,5.88536"},EPSG_4270:{towgs84:"-253.4392,-148.452,386.5267,0.15605,0.43,-0.1013,-0.0424"},EPSG_4229:{towgs84:"-121.8,98.1,-10.7"},EPSG_4220:{towgs84:"-55.5,-348,-229.2"},EPSG_4214:{towgs84:"12.646,-155.176,-80.863"},EPSG_4232:{towgs84:"-345,3,223"},EPSG_4238:{towgs84:"-1.977,-13.06,-9.993,0.364,0.254,0.689,-1.037"},EPSG_4168:{towgs84:"-170,33,326"},EPSG_4131:{towgs84:"199,931,318.9"},EPSG_4152:{towgs84:"-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"},EPSG_5228:{towgs84:"572.213,85.334,461.94,4.9732,1.529,5.2484,3.5378"},EPSG_8351:{towgs84:"485.021,169.465,483.839,7.786342,4.397554,4.102655,0"},EPSG_4683:{towgs84:"-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06"},EPSG_4133:{towgs84:"0,0,0"},EPSG_7373:{towgs84:"0.819,-0.5762,-1.6446,-0.00378,-0.03317,0.00318,0.0693"},EPSG_9075:{towgs84:"-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"},EPSG_9072:{towgs84:"-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"},EPSG_9294:{towgs84:"1.16835,-1.42001,-2.24431,-0.00822,-0.05508,0.01818,0.23388"},EPSG_4212:{towgs84:"-267.434,173.496,181.814,-13.4704,8.7154,7.3926,14.7492"},EPSG_4191:{towgs84:"-44.183,-0.58,-38.489,2.3867,2.7072,-3.5196,-8.2703"},EPSG_4237:{towgs84:"52.684,-71.194,-13.975,-0.312,-0.1063,-0.3729,1.0191"},EPSG_4740:{towgs84:"-1.08,-0.27,-0.9"},EPSG_4124:{towgs84:"419.3836,99.3335,591.3451,0.850389,1.817277,-7.862238,-0.99496"},EPSG_5681:{towgs84:"584.9636,107.7175,413.8067,1.1155,0.2824,-3.1384,7.9922"},EPSG_4141:{towgs84:"23.772,17.49,17.859,-0.3132,-1.85274,1.67299,-5.4262"},EPSG_4204:{towgs84:"-85.645,-273.077,-79.708,2.289,-1.421,2.532,3.194"},EPSG_4319:{towgs84:"226.702,-193.337,-35.371,-2.229,-4.391,9.238,0.9798"},EPSG_4200:{towgs84:"24.82,-131.21,-82.66"},EPSG_4130:{towgs84:"0,0,0"},EPSG_4127:{towgs84:"-82.875,-57.097,-156.768,-2.158,1.524,-0.982,-0.359"},EPSG_4149:{towgs84:"674.374,15.056,405.346"},EPSG_4617:{towgs84:"-0.991,1.9072,0.5129,0.02579,0.00965,0.01166,0"},EPSG_4663:{towgs84:"-210.502,-66.902,-48.476,2.094,-15.067,-5.817,0.485"},EPSG_4664:{towgs84:"-211.939,137.626,58.3,-0.089,0.251,0.079,0.384"},EPSG_4665:{towgs84:"-105.854,165.589,-38.312,-0.003,-0.026,0.024,-0.048"},EPSG_4666:{towgs84:"631.392,-66.551,481.442,1.09,-4.445,-4.487,-4.43"},EPSG_4756:{towgs84:"-192.873,-39.382,-111.202,-0.00205,-0.0005,0.00335,0.0188"},EPSG_4723:{towgs84:"-179.483,-69.379,-27.584,-7.862,8.163,6.042,-13.925"},EPSG_4726:{towgs84:"8.853,-52.644,180.304,-0.393,-2.323,2.96,-24.081"},EPSG_4267:{towgs84:"-8.0,160.0,176.0"},EPSG_5365:{towgs84:"-0.16959,0.35312,0.51846,0.03385,-0.16325,0.03446,0.03693"},EPSG_4218:{towgs84:"304.5,306.5,-318.1"},EPSG_4242:{towgs84:"-33.722,153.789,94.959,-8.581,-4.478,4.54,8.95"},EPSG_4216:{towgs84:"-292.295,248.758,429.447,4.9971,2.99,6.6906,1.0289"},ESRI_104105:{towgs84:"631.392,-66.551,481.442,1.09,-4.445,-4.487,-4.43"},ESRI_104129:{towgs84:"0,0,0"},EPSG_4673:{towgs84:"174.05,-25.49,112.57"},EPSG_4202:{towgs84:"-124,-60,154"},EPSG_4203:{towgs84:"-117.763,-51.51,139.061,0.292,0.443,0.277,-0.191"},EPSG_3819:{towgs84:"595.48,121.69,515.35,4.115,-2.9383,0.853,-3.408"},EPSG_8694:{towgs84:"-93.799,-132.737,-219.073,-1.844,0.648,-6.37,-0.169"},EPSG_4145:{towgs84:"275.57,676.78,229.6"},EPSG_4283:{towgs84:"0.06155,-0.01087,-0.04019,0.039492,0.032722,0.032898,-0.009994"},EPSG_4317:{towgs84:"2.3287,-147.0425,-92.0802,-0.309248,0.324822,0.497299,5.689063"},EPSG_4272:{towgs84:"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993"},EPSG_4248:{towgs84:"-307.7,265.3,-363.5"},EPSG_5561:{towgs84:"24,-121,-76"},EPSG_5233:{towgs84:"-0.293,766.95,87.713,0.195704,1.695068,3.473016,-0.039338"},ESRI_104130:{towgs84:"-86,-98,-119"},ESRI_104102:{towgs84:"682,-203,480"},ESRI_37207:{towgs84:"7,-10,-26"},EPSG_4675:{towgs84:"59.935,118.4,-10.871"},ESRI_104109:{towgs84:"-89.121,-348.182,260.871"},ESRI_104112:{towgs84:"-185.583,-230.096,281.361"},ESRI_104113:{towgs84:"25.1,-275.6,222.6"},IGNF_WGS72G:{towgs84:"0,12,6"},IGNF_NTFG:{towgs84:"-168,-60,320"},IGNF_EFATE57G:{towgs84:"-127,-769,472"},IGNF_PGP50G:{towgs84:"324.8,153.6,172.1"},IGNF_REUN47G:{towgs84:"94,-948,-1262"},IGNF_CSG67G:{towgs84:"-186,230,110"},IGNF_GUAD48G:{towgs84:"-467,-16,-300"},IGNF_TAHI51G:{towgs84:"162,117,154"},IGNF_TAHAAG:{towgs84:"65,342,77"},IGNF_NUKU72G:{towgs84:"84,274,65"},IGNF_PETRELS72G:{towgs84:"365,194,166"},IGNF_WALL78G:{towgs84:"253,-133,-127"},IGNF_MAYO50G:{towgs84:"-382,-59,-262"},IGNF_TANNAG:{towgs84:"-139,-967,436"},IGNF_IGN72G:{towgs84:"-13,-348,292"},IGNF_ATIGG:{towgs84:"1118,23,66"},IGNF_FANGA84G:{towgs84:"150.57,158.33,118.32"},IGNF_RUSAT84G:{towgs84:"202.13,174.6,-15.74"},IGNF_KAUE70G:{towgs84:"126.74,300.1,-75.49"},IGNF_MOP90G:{towgs84:"-10.8,-1.8,12.77"},IGNF_MHPF67G:{towgs84:"338.08,212.58,-296.17"},IGNF_TAHI79G:{towgs84:"160.61,116.05,153.69"},IGNF_ANAA92G:{towgs84:"1.5,3.84,4.81"},IGNF_MARQUI72G:{towgs84:"330.91,-13.92,58.56"},IGNF_APAT86G:{towgs84:"143.6,197.82,74.05"},IGNF_TUBU69G:{towgs84:"237.17,171.61,-77.84"},IGNF_STPM50G:{towgs84:"11.363,424.148,373.13"},EPSG_4150:{towgs84:"674.374,15.056,405.346"},EPSG_4754:{towgs84:"-208.4058,-109.8777,-2.5764"},ESRI_104101:{towgs84:"372.87,149.23,585.29"},EPSG_4693:{towgs84:"0,-0.15,0.68"},EPSG_6207:{towgs84:"293.17,726.18,245.36"},EPSG_4153:{towgs84:"-133.63,-157.5,-158.62"},EPSG_4132:{towgs84:"-241.54,-163.64,396.06"},EPSG_4221:{towgs84:"-154.5,150.7,100.4"},EPSG_4266:{towgs84:"-80.7,-132.5,41.1"},EPSG_4193:{towgs84:"-70.9,-151.8,-41.4"},EPSG_5340:{towgs84:"-0.41,0.46,-0.35"},EPSG_4246:{towgs84:"-294.7,-200.1,525.5"},EPSG_4318:{towgs84:"-3.2,-5.7,2.8"},EPSG_4121:{towgs84:"-199.87,74.79,246.62"},EPSG_4223:{towgs84:"-260.1,5.5,432.2"},EPSG_4158:{towgs84:"-0.465,372.095,171.736"},EPSG_4285:{towgs84:"-128.16,-282.42,21.93"},EPSG_4613:{towgs84:"-404.78,685.68,45.47"},EPSG_4607:{towgs84:"195.671,332.517,274.607"},EPSG_4475:{towgs84:"-381.788,-57.501,-256.673"},EPSG_4208:{towgs84:"-157.84,308.54,-146.6"},EPSG_4743:{towgs84:"70.995,-335.916,262.898"},EPSG_4710:{towgs84:"-323.65,551.39,-491.22"},EPSG_7881:{towgs84:"-0.077,0.079,0.086"},EPSG_4682:{towgs84:"283.729,735.942,261.143"},EPSG_4739:{towgs84:"-156,-271,-189"},EPSG_4679:{towgs84:"-80.01,253.26,291.19"},EPSG_4750:{towgs84:"-56.263,16.136,-22.856"},EPSG_4644:{towgs84:"-10.18,-350.43,291.37"},EPSG_4695:{towgs84:"-103.746,-9.614,-255.95"},EPSG_4292:{towgs84:"-355,21,72"},EPSG_4302:{towgs84:"-61.702,284.488,472.052"},EPSG_4143:{towgs84:"-124.76,53,466.79"},EPSG_4606:{towgs84:"-153,153,307"},EPSG_4699:{towgs84:"-770.1,158.4,-498.2"},EPSG_4247:{towgs84:"-273.5,110.6,-357.9"},EPSG_4160:{towgs84:"8.88,184.86,106.69"},EPSG_4161:{towgs84:"-233.43,6.65,173.64"},EPSG_9251:{towgs84:"-9.5,122.9,138.2"},EPSG_9253:{towgs84:"-78.1,101.6,133.3"},EPSG_4297:{towgs84:"-198.383,-240.517,-107.909"},EPSG_4269:{towgs84:"0,0,0"},EPSG_4301:{towgs84:"-147,506,687"},EPSG_4618:{towgs84:"-59,-11,-52"},EPSG_4612:{towgs84:"0,0,0"},EPSG_4678:{towgs84:"44.585,-131.212,-39.544"},EPSG_4250:{towgs84:"-130,29,364"},EPSG_4144:{towgs84:"214,804,268"},EPSG_4147:{towgs84:"-17.51,-108.32,-62.39"},EPSG_4259:{towgs84:"-254.1,-5.36,-100.29"},EPSG_4164:{towgs84:"-76,-138,67"},EPSG_4211:{towgs84:"-378.873,676.002,-46.255"},EPSG_4182:{towgs84:"-422.651,-172.995,84.02"},EPSG_4224:{towgs84:"-143.87,243.37,-33.52"},EPSG_4225:{towgs84:"-205.57,168.77,-4.12"},EPSG_5527:{towgs84:"-67.35,3.88,-38.22"},EPSG_4752:{towgs84:"98,390,-22"},EPSG_4310:{towgs84:"-30,190,89"},EPSG_9248:{towgs84:"-192.26,65.72,132.08"},EPSG_4680:{towgs84:"124.5,-63.5,-281"},EPSG_4701:{towgs84:"-79.9,-158,-168.9"},EPSG_4706:{towgs84:"-146.21,112.63,4.05"},EPSG_4805:{towgs84:"682,-203,480"},EPSG_4201:{towgs84:"-165,-11,206"},EPSG_4210:{towgs84:"-157,-2,-299"},EPSG_4183:{towgs84:"-104,167,-38"},EPSG_4139:{towgs84:"11,72,-101"},EPSG_4668:{towgs84:"-86,-98,-119"},EPSG_4717:{towgs84:"-2,151,181"},EPSG_4732:{towgs84:"102,52,-38"},EPSG_4280:{towgs84:"-377,681,-50"},EPSG_4209:{towgs84:"-138,-105,-289"},EPSG_4261:{towgs84:"31,146,47"},EPSG_4658:{towgs84:"-73,46,-86"},EPSG_4721:{towgs84:"265.025,384.929,-194.046"},EPSG_4222:{towgs84:"-136,-108,-292"},EPSG_4601:{towgs84:"-255,-15,71"},EPSG_4602:{towgs84:"725,685,536"},EPSG_4603:{towgs84:"72,213.7,93"},EPSG_4605:{towgs84:"9,183,236"},EPSG_4621:{towgs84:"137,248,-430"},EPSG_4657:{towgs84:"-28,199,5"},EPSG_4316:{towgs84:"103.25,-100.4,-307.19"},EPSG_4642:{towgs84:"-13,-348,292"},EPSG_4698:{towgs84:"145,-187,103"},EPSG_4192:{towgs84:"-206.1,-174.7,-87.7"},EPSG_4311:{towgs84:"-265,120,-358"},EPSG_4135:{towgs84:"58,-283,-182"},ESRI_104138:{towgs84:"198,-226,-347"},EPSG_4245:{towgs84:"-11,851,5"},EPSG_4142:{towgs84:"-125,53,467"},EPSG_4213:{towgs84:"-106,-87,188"},EPSG_4253:{towgs84:"-133,-77,-51"},EPSG_4129:{towgs84:"-132,-110,-335"},EPSG_4713:{towgs84:"-77,-128,142"},EPSG_4239:{towgs84:"217,823,299"},EPSG_4146:{towgs84:"295,736,257"},EPSG_4155:{towgs84:"-83,37,124"},EPSG_4165:{towgs84:"-173,253,27"},EPSG_4672:{towgs84:"175,-38,113"},EPSG_4236:{towgs84:"-637,-549,-203"},EPSG_4251:{towgs84:"-90,40,88"},EPSG_4271:{towgs84:"-2,374,172"},EPSG_4175:{towgs84:"-88,4,101"},EPSG_4716:{towgs84:"298,-304,-375"},EPSG_4315:{towgs84:"-23,259,-9"},EPSG_4744:{towgs84:"-242.2,-144.9,370.3"},EPSG_4244:{towgs84:"-97,787,86"},EPSG_4293:{towgs84:"616,97,-251"},EPSG_4714:{towgs84:"-127,-769,472"},EPSG_4736:{towgs84:"260,12,-147"},EPSG_6883:{towgs84:"-235,-110,393"},EPSG_6894:{towgs84:"-63,176,185"},EPSG_4205:{towgs84:"-43,-163,45"},EPSG_4256:{towgs84:"41,-220,-134"},EPSG_4262:{towgs84:"639,405,60"},EPSG_4604:{towgs84:"174,359,365"},EPSG_4169:{towgs84:"-115,118,426"},EPSG_4620:{towgs84:"-106,-129,165"},EPSG_4184:{towgs84:"-203,141,53"},EPSG_4616:{towgs84:"-289,-124,60"},EPSG_9403:{towgs84:"-307,-92,127"},EPSG_4684:{towgs84:"-133,-321,50"},EPSG_4708:{towgs84:"-491,-22,435"},EPSG_4707:{towgs84:"114,-116,-333"},EPSG_4709:{towgs84:"145,75,-272"},EPSG_4712:{towgs84:"-205,107,53"},EPSG_4711:{towgs84:"124,-234,-25"},EPSG_4718:{towgs84:"230,-199,-752"},EPSG_4719:{towgs84:"211,147,111"},EPSG_4724:{towgs84:"208,-435,-229"},EPSG_4725:{towgs84:"189,-79,-202"},EPSG_4735:{towgs84:"647,1777,-1124"},EPSG_4722:{towgs84:"-794,119,-298"},EPSG_4728:{towgs84:"-307,-92,127"},EPSG_4734:{towgs84:"-632,438,-609"},EPSG_4727:{towgs84:"912,-58,1227"},EPSG_4729:{towgs84:"185,165,42"},EPSG_4730:{towgs84:"170,42,84"},EPSG_4733:{towgs84:"276,-57,149"},ESRI_37218:{towgs84:"230,-199,-752"},ESRI_37240:{towgs84:"-7,215,225"},ESRI_37221:{towgs84:"252,-209,-751"},ESRI_4305:{towgs84:"-123,-206,219"},ESRI_104139:{towgs84:"-73,-247,227"},EPSG_4748:{towgs84:"51,391,-36"},EPSG_4219:{towgs84:"-384,664,-48"},EPSG_4255:{towgs84:"-333,-222,114"},EPSG_4257:{towgs84:"-587.8,519.75,145.76"},EPSG_4646:{towgs84:"-963,510,-359"},EPSG_6881:{towgs84:"-24,-203,268"},EPSG_6882:{towgs84:"-183,-15,273"},EPSG_4715:{towgs84:"-104,-129,239"},IGNF_RGF93GDD:{towgs84:"0,0,0"},IGNF_RGM04GDD:{towgs84:"0,0,0"},IGNF_RGSPM06GDD:{towgs84:"0,0,0"},IGNF_RGTAAF07GDD:{towgs84:"0,0,0"},IGNF_RGFG95GDD:{towgs84:"0,0,0"},IGNF_RGNCG:{towgs84:"0,0,0"},IGNF_RGPFGDD:{towgs84:"0,0,0"},IGNF_ETRS89G:{towgs84:"0,0,0"},IGNF_RGR92GDD:{towgs84:"0,0,0"},EPSG_4173:{towgs84:"0,0,0"},EPSG_4180:{towgs84:"0,0,0"},EPSG_4619:{towgs84:"0,0,0"},EPSG_4667:{towgs84:"0,0,0"},EPSG_4075:{towgs84:"0,0,0"},EPSG_6706:{towgs84:"0,0,0"},EPSG_7798:{towgs84:"0,0,0"},EPSG_4661:{towgs84:"0,0,0"},EPSG_4669:{towgs84:"0,0,0"},EPSG_8685:{towgs84:"0,0,0"},EPSG_4151:{towgs84:"0,0,0"},EPSG_9702:{towgs84:"0,0,0"},EPSG_4758:{towgs84:"0,0,0"},EPSG_4761:{towgs84:"0,0,0"},EPSG_4765:{towgs84:"0,0,0"},EPSG_8997:{towgs84:"0,0,0"},EPSG_4023:{towgs84:"0,0,0"},EPSG_4670:{towgs84:"0,0,0"},EPSG_4694:{towgs84:"0,0,0"},EPSG_4148:{towgs84:"0,0,0"},EPSG_4163:{towgs84:"0,0,0"},EPSG_4167:{towgs84:"0,0,0"},EPSG_4189:{towgs84:"0,0,0"},EPSG_4190:{towgs84:"0,0,0"},EPSG_4176:{towgs84:"0,0,0"},EPSG_4659:{towgs84:"0,0,0"},EPSG_3824:{towgs84:"0,0,0"},EPSG_3889:{towgs84:"0,0,0"},EPSG_4046:{towgs84:"0,0,0"},EPSG_4081:{towgs84:"0,0,0"},EPSG_4558:{towgs84:"0,0,0"},EPSG_4483:{towgs84:"0,0,0"},EPSG_5013:{towgs84:"0,0,0"},EPSG_5264:{towgs84:"0,0,0"},EPSG_5324:{towgs84:"0,0,0"},EPSG_5354:{towgs84:"0,0,0"},EPSG_5371:{towgs84:"0,0,0"},EPSG_5373:{towgs84:"0,0,0"},EPSG_5381:{towgs84:"0,0,0"},EPSG_5393:{towgs84:"0,0,0"},EPSG_5489:{towgs84:"0,0,0"},EPSG_5593:{towgs84:"0,0,0"},EPSG_6135:{towgs84:"0,0,0"},EPSG_6365:{towgs84:"0,0,0"},EPSG_5246:{towgs84:"0,0,0"},EPSG_7886:{towgs84:"0,0,0"},EPSG_8431:{towgs84:"0,0,0"},EPSG_8427:{towgs84:"0,0,0"},EPSG_8699:{towgs84:"0,0,0"},EPSG_8818:{towgs84:"0,0,0"},EPSG_4757:{towgs84:"0,0,0"},EPSG_9140:{towgs84:"0,0,0"},EPSG_8086:{towgs84:"0,0,0"},EPSG_4686:{towgs84:"0,0,0"},EPSG_4737:{towgs84:"0,0,0"},EPSG_4702:{towgs84:"0,0,0"},EPSG_4747:{towgs84:"0,0,0"},EPSG_4749:{towgs84:"0,0,0"},EPSG_4674:{towgs84:"0,0,0"},EPSG_4755:{towgs84:"0,0,0"},EPSG_4759:{towgs84:"0,0,0"},EPSG_4762:{towgs84:"0,0,0"},EPSG_4763:{towgs84:"0,0,0"},EPSG_4764:{towgs84:"0,0,0"},EPSG_4166:{towgs84:"0,0,0"},EPSG_4170:{towgs84:"0,0,0"},EPSG_5546:{towgs84:"0,0,0"},EPSG_7844:{towgs84:"0,0,0"},EPSG_4818:{towgs84:"589,76,480"},EPSG_10328:{towgs84:"0,0,0"},EPSG_9782:{towgs84:"0,0,0"},EPSG_9777:{towgs84:"0,0,0"},EPSG_10690:{towgs84:"0,0,0"},EPSG_10639:{towgs84:"0,0,0"},EPSG_10739:{towgs84:"0,0,0"},EPSG_7686:{towgs84:"0,0,0"},EPSG_8900:{towgs84:"0,0,0"},EPSG_5886:{towgs84:"0,0,0"},EPSG_7683:{towgs84:"0,0,0"},EPSG_6668:{towgs84:"0,0,0"},EPSG_20046:{towgs84:"0,0,0"},EPSG_10299:{towgs84:"0,0,0"},EPSG_10310:{towgs84:"0,0,0"},EPSG_10475:{towgs84:"0,0,0"},EPSG_4742:{towgs84:"0,0,0"},EPSG_10671:{towgs84:"0,0,0"},EPSG_10762:{towgs84:"0,0,0"},EPSG_10725:{towgs84:"0,0,0"},EPSG_10791:{towgs84:"0,0,0"},EPSG_10800:{towgs84:"0,0,0"},EPSG_10305:{towgs84:"0,0,0"},EPSG_10941:{towgs84:"0,0,0"},EPSG_10968:{towgs84:"0,0,0"},EPSG_10875:{towgs84:"0,0,0"},EPSG_6318:{towgs84:"0,0,0"},EPSG_10910:{towgs84:"0,0,0"}};for(let t in ui){let e=ui[t];e.datumName&&(ui[e.datumName]=e)}var Ar=ui;var x1={MERIT:{a:6378137,rf:298.257,ellipseName:"MERIT 1983"},SGS85:{a:6378136,rf:298.257,ellipseName:"Soviet Geodetic System 85"},GRS80:{a:6378137,rf:298.257222101,ellipseName:"GRS 1980(IUGG, 1980)"},IAU76:{a:6378140,rf:298.257,ellipseName:"IAU 1976"},airy:{a:6377563396e-3,b:635625691e-2,ellipseName:"Airy 1830"},APL4:{a:6378137,rf:298.25,ellipseName:"Appl. Physics. 1965"},NWL9D:{a:6378145,rf:298.25,ellipseName:"Naval Weapons Lab., 1965"},mod_airy:{a:6377340189e-3,b:6356034446e-3,ellipseName:"Modified Airy"},andrae:{a:637710443e-2,rf:300,ellipseName:"Andrae 1876 (Den., Iclnd.)"},aust_SA:{a:6378160,rf:298.25,ellipseName:"Australian Natl & S. Amer. 1969"},GRS67:{a:6378160,rf:298.247167427,ellipseName:"GRS 67(IUGG 1967)"},bessel:{a:6377397155e-3,rf:299.1528128,ellipseName:"Bessel 1841"},bess_nam:{a:6377483865e-3,rf:299.1528128,ellipseName:"Bessel 1841 (Namibia)"},clrk66:{a:63782064e-1,b:63565838e-1,ellipseName:"Clarke 1866"},clrk80:{a:6378249145e-3,rf:293.4663,ellipseName:"Clarke 1880 mod."},clrk80ign:{a:63782492e-1,b:6356515,rf:293.4660213,ellipseName:"Clarke 1880 (IGN)"},clrk58:{a:6378293645208759e-9,rf:294.2606763692654,ellipseName:"Clarke 1858"},CPM:{a:63757387e-1,rf:334.29,ellipseName:"Comm. des Poids et Mesures 1799"},delmbr:{a:6376428,rf:311.5,ellipseName:"Delambre 1810 (Belgium)"},engelis:{a:637813605e-2,rf:298.2566,ellipseName:"Engelis 1985"},evrst30:{a:6377276345e-3,rf:300.8017,ellipseName:"Everest 1830"},evrst48:{a:6377304063e-3,rf:300.8017,ellipseName:"Everest 1948"},evrst56:{a:6377301243e-3,rf:300.8017,ellipseName:"Everest 1956"},evrst69:{a:6377295664e-3,rf:300.8017,ellipseName:"Everest 1969"},evrstSS:{a:6377298556e-3,rf:300.8017,ellipseName:"Everest (Sabah & Sarawak)"},fschr60:{a:6378166,rf:298.3,ellipseName:"Fischer (Mercury Datum) 1960"},fschr60m:{a:6378155,rf:298.3,ellipseName:"Fischer 1960"},fschr68:{a:6378150,rf:298.3,ellipseName:"Fischer 1968"},helmert:{a:6378200,rf:298.3,ellipseName:"Helmert 1906"},hough:{a:6378270,rf:297,ellipseName:"Hough"},intl:{a:6378388,rf:297,ellipseName:"International 1909 (Hayford)"},kaula:{a:6378163,rf:298.24,ellipseName:"Kaula 1961"},lerch:{a:6378139,rf:298.257,ellipseName:"Lerch 1979"},mprts:{a:6397300,rf:191,ellipseName:"Maupertius 1738"},new_intl:{a:63781575e-1,b:63567722e-1,ellipseName:"New International 1967"},plessis:{a:6376523,b:6355863,ellipseName:"Plessis 1817 (France)"},krass:{a:6378245,rf:298.3,ellipseName:"Krassovsky, 1942"},SEasia:{a:6378155,b:63567733205e-4,ellipseName:"Southeast Asia"},walbeck:{a:6376896,b:63558348467e-4,ellipseName:"Walbeck"},WGS60:{a:6378165,rf:298.3,ellipseName:"WGS 60"},WGS66:{a:6378145,rf:298.25,ellipseName:"WGS 66"},WGS72:{a:6378135,rf:298.26,ellipseName:"WGS 72"},WGS84:{a:6378137,rf:298.257223563,ellipseName:"WGS 84"},sphere:{a:6370997,b:6370997,ellipseName:"Normal Sphere (r=6370997)"}},ph=x1;var xe={};xe.greenwich=0;xe.lisbon=-9.131906111111;xe.paris=2.337229166667;xe.bogota=-74.080916666667;xe.madrid=-3.687938888889;xe.rome=12.452333333333;xe.bern=7.439583333333;xe.jakarta=106.807719444444;xe.ferro=-17.666666666667;xe.brussels=4.367975;xe.stockholm=18.058277777778;xe.athens=23.7163375;xe.oslo=10.722916666667;var gh=xe;var Mh={mm:{to_meter:.001},cm:{to_meter:.01},ft:{to_meter:.3048},"us-ft":{to_meter:1200/3937},fath:{to_meter:1.8288},kmi:{to_meter:1852},"us-ch":{to_meter:20.1168402336805},"us-mi":{to_meter:1609.34721869444},km:{to_meter:1e3},"ind-ft":{to_meter:.30479841},"ind-yd":{to_meter:.91439523},mi:{to_meter:1609.344},yd:{to_meter:.9144},ch:{to_meter:20.1168},link:{to_meter:.201168},dm:{to_meter:.1},in:{to_meter:.0254},"ind-ch":{to_meter:20.11669506},"us-in":{to_meter:.025400050800101},"us-yd":{to_meter:.914401828803658}};var _h={WGS84:"+proj=longlat +datum=WGS84","EPSG:4326":"+proj=longlat +datum=WGS84","EPSG:4269":"+proj=longlat +datum=NAD83","EPSG:4978":"+proj=geocent +datum=WGS84","EPSG:4979":"+proj=longlat +datum=WGS84","EPSG:3857":"+proj=merc +a=6378137 +b=6378137 +nadgrids=@null +units=m","EPSG:3785":"EPSG:3857",GOOGLE:"EPSG:3857","EPSG:900913":"EPSG:3857","EPSG:102113":"EPSG:3857"},fi=["proj","datum","ellps","a","b","rf","f","R","units","to_meter","vunits","vto_meter","no_defs","type","title","towgs84","nadgrids","geoidgrids","axis","pm","over","lon_wrap"],Eh=["no_defs","over"],Je=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),yh=t=>t.toLowerCase().replace(/[\s_-]/g,"");function es(t,e){let r=Object.keys(t).find(n=>yh(n)===yh(e));return r===void 0?void 0:t[r]}function xh(t){if(/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i.test(t)){let r=Number(t);if(Number.isFinite(r))return r}if(/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?r$/i.test(t)){let r=Number(t.slice(0,-1))/ee;if(Number.isFinite(r))return r}let e=/^([+-]?)(\d+(?:\.\d*)?)(?:d(?:(\d+(?:\.\d*)?)'(?:(\d+(?:\.\d*)?)")?)?)?([NSEW])?$/i.exec(t);if(e&&(/d/i.test(t)||e[5])){let r=Number(e[3]||0),n=Number(e[4]||0);if(r<60&&n<60){let i=e[1]==="-"?-1:1,o=/[SW]/i.test(e[5]||"")?-1:1,s=i*o*(Number(e[2])+r/60+n/3600);if(Number.isFinite(s))return s}}throw new Error("Invalid angular parameter: "+t)}function Ir(t,e={}){let r=dh(t,e),n=r.definition,i=e.aliases||{},o=new Set;for(;typeof n=="string"&&(Je(i,n)||Je(_h,n));){if(o.has(n))throw new Error("Circular CRS alias: "+n);o.add(n),n=Je(i,n)?i[n]:_h[n]}if(typeof n=="string"){let b=/^EPSG:(326|327)(\d{2})$/.exec(n);b&&Number(b[2])>=1&&Number(b[2])<=60&&(n="+proj=utm +datum=WGS84 +zone="+Number(b[2])+(b[1]==="327"?" +south":"")),(n==="EPSG:5041"||n==="EPSG:5042")&&(n="+proj=stere +datum=WGS84 +lat_0="+(n==="EPSG:5041"?90:-90)+" +k_0=0.994 +x_0=2000000 +y_0=2000000")}let s;if(ye(n)==="proj-string"&&typeof n=="string"){let b=Object.create(null);for(let I of Er(n).parameters){if(Je(b,I.name))throw new Error("Duplicate PROJ parameter: +"+I.name);b[I.name]=I.value}s={parameters:b}}else{let b=e.parsers?.find(I=>I.canParse(n));if(!b){let I=["wkt","projjson"].includes(ye(n));throw new Ce(I?"missing-parser":"unknown-syntax","Unsupported CRS definition; register a WKT or PROJJSON parser for structured definitions")}s=b.parse(n,e)}let a={...s.parameters};for(let b of["lon_0","lat_0","lat_1","lat_2","lat_ts","lon_wrap","lon_1","lon_2","lonc","alpha","gamma","tilt","azi","o_alpha","o_lon_c","o_lat_c","o_lon_p","o_lat_p","o_lon_1","o_lat_1","o_lon_2","o_lat_2"])a[b]!==void 0&&(a[b]=String(xh(a[b])));let c=a.proj,l=c?.toLowerCase(),h=l==="geocentric"?"geocent":["longlat","latlong","latlon","lonlat","identity","geocent"].includes(l)?l:c;if(!h)throw new Error("CRS requires +proj");let u=["longlat","latlong","latlon","lonlat"].includes(h)?"geographic":h==="geocent"?"geocentric":h==="identity"?"identity":"projected",f=a.datum,d=f&&f!=="none"?es(Ar,f):void 0;f&&f!=="none"&&!d&&D("Unknown datum: "+f);let m=wh(a,d?.ellipse),p=a.nadgrids??d?.nadgrids,g=p===void 0?void 0:p.split(",").map(b=>{let I=b.startsWith("@"),A=I?b.slice(1):b;if(!A||/\s/.test(A))throw new Error("Invalid datum grid name");return Object.freeze({name:A,optional:I})}),_=a.towgs84??d?.towgs84,y;if(_!==void 0&&(y=_.split(",").map(b=>L({value:b},"value",NaN)),![3,7].includes(y.length)||y.some(b=>!Number.isFinite(b))||y.length===7&&y[6]<=-1e6))throw new Error("+towgs84 requires three or seven finite values and positive scale");f==="none"&&(y=void 0),g&&f!=="none"&&(y=[0,0,0]);let S=p==="@null"||p==="null"?wh({ellps:"WGS84"}):m,x=a.axis||"enu";if(x.length!==3||!/[ew]/.test(x)||!/[ns]/.test(x)||!/[ud]/.test(x))throw new Error("Invalid axis: "+x);let w=s.angularUnit??ee;if(u==="geographic"&&(a.units&&a.units!=="degrees"||Je(a,"to_meter")))throw new Error("Geographic coordinates must use angular units");if(u!=="geographic"&&a.units==="degrees")throw new Error("Linear coordinates require linear units");let T=Sh(a,"units","to_meter"),v=s.verticalUnit??Sh(a,"vunits","vto_meter");if(!(v>0)||!Number.isFinite(v))throw new Error("Invalid vertical unit");if(!(w>0)||!Number.isFinite(w))throw new Error("Invalid angular unit");let C=a.pm,O=C===void 0?0:(es(gh,C)??xh(C))*ee;return mh(Object.freeze({kind:u,projection:h,parameters:Object.freeze(a),ellipsoid:m,datum:Object.freeze({ellipsoid:S,towgs84:y&&Object.freeze(y),grids:f==="none"||p==="@null"||p==="null"?void 0:g&&Object.freeze(g)}),angularUnit:w,toMeter:T,verticalUnit:v,primeMeridian:O,axis:x,longitudeWrap:a.lon_wrap===void 0?void 0:Number(a.lon_wrap)*ee,lossy:!!(s.lossy||r.lossy)}),r.spatialReference)}function Sh(t,e,r){let n=t[e],i=Mh;if(e==="vunits"&&n==="degrees")throw new Error("Height requires linear units");if(n&&!["m","degrees"].includes(n)&&!Je(i,n))throw new Error("Unsupported units: "+n);let o=L(t,r,n&&i[n]?i[n].to_meter:1);if(!(o>0))throw new Error("+"+r+" must be positive");return o}function wh(t,e){let r=e||t.ellps||"WGS84",n=es(ph,r);if(!n)throw new Error("Unsupported ellipsoid: "+r);let i=L(t,"a",n.a),o=L(t,"f",NaN),s=L(t,"rf",Number.isNaN(o)?n.rf||0:o===0?0:1/o),a=L(t,"b",s?i*(1-1/s):Je(t,"f")||Je(t,"rf")||Je(t,"a")?i:n.b||i),c=L(t,"R",0);if(i<=0||a<=0||a>i||s<0||s>0&&s<=1||Je(t,"R")&&c<=0||!Number.isNaN(o)&&(o<0||o>=1))throw new Error("Invalid ellipsoid dimensions");return Object.freeze({semiMajorAxis:c||i,semiMinorAxis:c||a,eccentricitySquared:c?0:1-(a/i)**2})}var ts=Math.PI/(180*3600),di={ellipsoid:{semiMajorAxis:6378137,semiMinorAxis:6356752314245179e-9,eccentricitySquared:.0066943799901413165},towgs84:[0,0,0]};function pi(t,e){if(Math.abs(t.y)>Math.PI/2)throw new Error("Latitude outside geocentric domain");if(!bn(t,e))throw new Error("Geocentric coordinate must be finite")}function gi(t,e){let r=t.x,n=t.y,i=t.z,{semiMajorAxis:o,semiMinorAxis:s,eccentricitySquared:a}=e;if(r===0&&n===0&&i===0)throw new Error("Geodetic coordinates are undefined at the Earth center");if(a!==0&&Math.abs(r)<1e-12*o&&Math.abs(n)<1e-12*o&&Math.hypot(r,n)<1e-12*o){if(!Number.isFinite(Math.hypot(r,n,i)))throw new Error("Geocentric radius must be finite");t.x=0,t.y=Math.sign(i)*Math.PI/2,t.z=Math.abs(i)-s;return}if(!vn(t,e))throw Number.isFinite(Math.hypot(r,n,i))?new Error("Geocentric inverse did not converge"):new Error("Geocentric radius must be finite")}function Th(t,e){let r=t[0],n=t[1],i=t[2],o=(t[3]||0)*ts,s=(t[4]||0)*ts,a=(t[5]||0)*ts,c=1+(t[6]||0)/1e6;return e?l=>{let h=(l.x-r)/c,u=(l.y-n)/c,f=(l.z-i)/c;l.x=h+a*u-s*f,l.y=-a*h+u+o*f,l.z=s*h-o*u+f}:l=>{let h=l.x,u=l.y,f=l.z;l.x=c*(h-a*u+s*f)+r,l.y=c*(a*h+u-o*f)+n,l.z=c*(-s*h+o*u+f)+i}}function mi(t){return!!t.towgs84?.some(e=>e!==0)}function ns(t,e){if(!(!t.towgs84||!e.towgs84)){if(t.grids||e.grids){if(t.grids&&e.grids&&t.ellipsoid.semiMajorAxis===e.ellipsoid.semiMajorAxis&&t.ellipsoid.eccentricitySquared===e.ellipsoid.eccentricitySquared&&t.grids.length===e.grids.length&&t.grids.every((n,i)=>n.name===e.grids[i].name&&n.optional===e.grids[i].optional&&n.grid===e.grids[i].grid))return;let r=ns(t.grids?di:t,e.grids?di:e);return n=>{t.grids&&bh(n,t,!1),r?.(n),e.grids&&bh(n,e,!0)}}if(mi(t)||mi(e)){let r=rs(t,di),n=rs(di,e);return i=>{r?.(i),n?.(i)}}return rs(t,e)}}function rs(t,e){if(!t.towgs84||!e.towgs84)return;let r=t.ellipsoid,n=e.ellipsoid,i=!0;for(let a=0;a<7;a++)(t.towgs84[a]||0)!==(e.towgs84[a]||0)&&(i=!1);if(r.semiMajorAxis===n.semiMajorAxis&&Math.abs(r.eccentricitySquared-n.eccentricitySquared)<=5e-11&&i)return;let o=mi(t)?Th(t.towgs84,!1):void 0,s=mi(e)?Th(e.towgs84,!0):void 0;return a=>{pi(a,r),o?.(a),s?.(a),gi(a,n)}}function bh(t,e,r){for(let n of e.grids){if(n.name==="null")return;if(!n.grid){if(n.optional)continue;throw new Error("Required datum grid is not registered: "+n.name)}let i=!1;if(n.grid.shiftInPlace)i=n.grid.shiftInPlace(t,r);else{let o=n.grid.shift(t.x,t.y,r);o&&(t.x=o[0],t.y=o[1],i=!0)}if(i){if(!Number.isFinite(t.x)||!Number.isFinite(t.y)||Math.abs(t.y)>Math.PI/2)throw new Error("Datum grid produced a coordinate outside the geographic domain");return}}throw new Error("No datum grid covers coordinate: "+e.grids.map(n=>n.name).join(","))}function vh(t,e){let r={x:t[0],y:t[1],z:t[2]};return pi(r,e),[r.x,r.y,r.z]}function Ph(t,e){let r={x:t[0],y:t[1],z:t[2]};return gi(r,e),[r.x,r.y,r.z]}function Rh(t,e={}){if(t===void 0)return;let r=[];for(let n of t.split(",")){let i=n.startsWith("@"),o=i?n.slice(1):n;if(!o||/\s/.test(o))throw new Error("Invalid vertical grid name");if(o==="null"){r.push(null);break}let s=Object.prototype.hasOwnProperty.call(e,o)?e[o]:void 0;if(s){if(typeof s.getOffset!="function")throw new Error("Invalid vertical grid: "+o);r.push(s.getOffset.bind(s))}else i||D("Required vertical grid is not registered: "+o)}return(n,i)=>{for(let o of r){if(!o)return 0;let s=o(n,i);if(s!==void 0){if(!Number.isFinite(s))throw new Error("Vertical grid returned a non-finite offset");return s}}throw new Error("No vertical grid covers this coordinate")}}var _i=class t{static async create(e={}){let r=await Promise.all(Ch(e).map(lh));return new t({...e,projections:r})}constructor(e={}){this.coordinateScratch=new jt;let r=e.projections||[],n=Nh(r);if(r.some(i=>!("create"in i))){let i=Ir(e.from??"WGS84",e),o=Ir(e.to??"WGS84",e);this.lossy=i.lossy||o.lossy,this.deferred={options:{...e,projections:[...r]}}}else{let i=e,o=n,s=Ah(i.from??"WGS84",o,i),a=Ah(i.to??"WGS84",o,i);this.lossy=s.lossy||a.lossy,this.lossy&&(s.kind==="geocentric"||a.kind==="geocentric")&&D("Horizontal extraction cannot supply ellipsoidal height for geocentric coordinates"),this.lossy&&(s.verticalGrid||a.verticalGrid)&&D("Horizontal extraction cannot be combined with vertical grids"),this.forwardTransform=Oh(s,a,!!e.enforceAxis),this.inverseTransform=Oh(a,s,!!e.enforceAxis)}this.project=this.project.bind(this),this.unproject=this.unproject.bind(this),this.projectTo=this.projectTo.bind(this),this.unprojectTo=this.unprojectTo.bind(this),this.projectToSync=this.projectToSync.bind(this),this.unprojectToSync=this.unprojectToSync.bind(this),this.projectFlat=this.projectFlat.bind(this),this.unprojectFlat=this.unprojectFlat.bind(this),this.projectSync=this.projectSync.bind(this),this.unprojectSync=this.unprojectSync.bind(this),this.projectFlatSync=this.projectFlatSync.bind(this),this.unprojectFlatSync=this.unprojectFlatSync.bind(this)}load(){let e=this.deferred;return e?e.implementation?Promise.resolve(e.implementation):(e.pending||(e.pending=t.create(e.options).then(r=>(e.implementation=r,r)).catch(r=>{throw e.pending=void 0,r})),e.pending):Promise.resolve(this)}loadSync(){let e=this.deferred;if(!e)return this;if(!e.implementation){let r=Ch(e.options).map(n=>{let i=ch(n);if(!i)throw new Error("Projection is not preloaded: "+n.name+". Call preload() first.");return i});e.implementation=new t({...e.options,projections:r})}return e.implementation}projectSync(e){return this.deferred?this.loadSync().project(e):Wt(e,this.forwardTransform,this.coordinateScratch)}unprojectSync(e){return this.deferred?this.loadSync().unproject(e):Wt(e,this.inverseTransform,this.coordinateScratch)}projectFlatSync(e,r=2){return this.deferred?this.loadSync().projectFlat(e,r):Mi(e,r,this.forwardTransform,this.coordinateScratch)}unprojectFlatSync(e,r=2){return this.deferred?this.loadSync().unprojectFlat(e,r):Mi(e,r,this.inverseTransform,this.coordinateScratch)}async preload(){await this.load()}project(e){return this.deferred?this.projectLoaded(e,!1):Wt(e,this.forwardTransform,this.coordinateScratch)}unproject(e){return this.deferred?this.projectLoaded(e,!0):Wt(e,this.inverseTransform,this.coordinateScratch)}projectTo(e,r){return this.deferred?this.projectToLoaded(e,r,!1):this.projectToSync(e,r)}unprojectTo(e,r){return this.deferred?this.projectToLoaded(e,r,!0):this.unprojectToSync(e,r)}projectToSync(e,r){return this.deferred?this.loadSync().projectTo(e,r):(hi(e,r,Math.max(e.length,this.forwardTransform.geocentricOutput?3:2)),Wt(e,this.forwardTransform,this.coordinateScratch,r))}unprojectToSync(e,r){return this.deferred?this.loadSync().unprojectTo(e,r):(hi(e,r,Math.max(e.length,this.inverseTransform.geocentricOutput?3:2)),Wt(e,this.inverseTransform,this.coordinateScratch,r))}projectToLoaded(e,r,n){hi(e,r,e.length);let i=e.slice();return this.load().then(o=>n?o.unprojectTo(i,r):o.projectTo(i,r))}projectLoaded(e,r){let n=e.slice();return this.load().then(i=>r?i.unproject(n):i.project(n))}projectFlat(e,r=2){return this.deferred?this.load().then(i=>i.projectFlat(e,r)):Mi(e,r,this.forwardTransform,this.coordinateScratch)}unprojectFlat(e,r=2){return this.deferred?this.load().then(i=>i.unprojectFlat(e,r)):Mi(e,r,this.inverseTransform,this.coordinateScratch)}};function Ch(t){let e=Nh(t.projections||[]),r=new Set;for(let n of[t.from??"WGS84",t.to??"WGS84"]){let i=Ir(n,t);if(["geographic","identity"].includes(i.kind))continue;let o=e.get(yi(i.projection));if(!o)throw new Ce("missing-plugin","Projection plugin is not registered: "+i.projection);r.add(o)}return[...r]}var yi=t=>t.toLowerCase().replace(/[\s_-]/g,"");function Nh(t){let e=new Map;for(let r of t)for(let n of new Set([r.name,...r.aliases||[]].map(yi))){if(!n||["longlat","latlong","latlon","lonlat","identity"].includes(n)||e.has(n))throw new Error("Duplicate or reserved projection plugin: "+n);e.set(n,r)}return e}function Ah(t,e,r){let n=Ir(t,r),i=e.get(yi(n.projection));if(!["geographic","identity"].includes(n.kind)&&!i)throw new Ce("missing-plugin","Projection plugin is not registered: "+n.projection);let o=new Set([...fi,...i?.parameters||[]]);for(let d of Object.keys(n.parameters)){if(!o.has(d))throw new Ce("missing-transform-stage","Unsupported PROJ parameter: +"+d);let m=Eh.includes(d)||i?.flags?.includes(d);if(m&&n.parameters[d]!==void 0)throw new Error("Expected a flag without a value: +"+d);if(!m&&!n.parameters[d])throw new Error("PROJ parameter requires a value: +"+d)}if(n.parameters.type&&n.parameters.type!=="crs")throw new Error("Only +type=crs is supported");let s=yi(n.projection)==="fasttransversemercator"?Object.freeze({...n.parameters,approx:void 0}):n.parameters,a=i?.create({...n.ellipsoid,parameters:s});if(n.kind==="geocentric"&&(!a?.forward3D||!a?.inverse3D))throw new Error("Geocentric plugin must implement 3D operations");let c=n.datum.grids,l=c?.findIndex(d=>d.name==="null")??-1,h=c?.slice(0,l<0?void 0:l+1).map(d=>{let m=Object.prototype.hasOwnProperty.call(r.datumGrids||{},d.name)?r.datumGrids[d.name]:void 0;if(m&&typeof m.shift!="function")throw new Error("Invalid prepared datum grid: "+d.name);return Object.freeze({...d,grid:m})});for(let d of h||[]){if(d.name==="null")break;!d.optional&&!d.grid&&D("Required datum grid is not registered: "+d.name)}let u=h?Object.freeze({...n.datum,grids:Object.freeze(h)}):n.datum,f=Rh(n.parameters.geoidgrids,r.verticalGrids);return f&&(n.kind==="geocentric"||n.kind==="identity"||n.lossy)&&D("Vertical grids require a non-lossy geographic or projected CRS"),{...n,datum:u,implementation:a,verticalGrid:f}}function is(t){return Number.isFinite(t.x)&&Number.isFinite(t.y)&&Number.isFinite(t.z)}function Ih(t,e){if(t==="enu")return;let r=[0,0,0],n=[0,0,0];for(let i=0;i<3;i++){let o=t[i],s="ew".includes(o)?0:"ns".includes(o)?1:2;r[e?i:s]=e?s:i,n[e?i:s]="wsd".includes(o)?-1:1}return i=>{let o=i.x,s=i.y,a=i.z;i.x=n[0]*(r[0]===0?o:r[0]===1?s:a),i.y=n[1]*(r[1]===0?o:r[1]===1?s:a),i.z=n[2]*(r[2]===0?o:r[2]===1?s:a)}}function Oh(t,e,r){let n=t.storedAxis||(r?t.axis:"enu"),i=e.storedAxis||(r?e.axis:"enu"),o=Ih(n,!1),s=Ih(i,!0),a=t.implementation&&lt(t.implementation,!0,t.kind==="geocentric"),c=e.implementation&&lt(e.implementation,!1,e.kind==="geocentric"),l=ns(t.datum,e.datum),h=t.lossy||e.lossy,u=t.kind==="geocentric",f=t.kind==="geographic"?t.angularUnit:t.toMeter,d=e.kind==="geographic"?e.angularUnit:e.toMeter,m=u?1:t.verticalUnit,p=e.kind==="geocentric"?d:e.verticalUnit,g=t.primeMeridian,_=e.primeMeridian,y=e.kind==="geographic"?e.longitudeWrap:void 0,S;if(!l&&!t.verticalGrid&&!e.verticalGrid&&!h&&!o&&!s&&!g&&!_&&t.verticalUnit===1&&e.verticalUnit===1&&y===void 0){let x=Object.freeze({inputScale:f,outputScale:d});t.kind==="geographic"&&e.kind==="projected"&&(S=e.implementation?.createForwardFlat?.(x)),t.kind==="projected"&&e.kind==="geographic"&&(S=t.implementation?.createInverseFlat?.(x))}return{flat:S,requiresInputZ:!!(t.verticalGrid||e.verticalGrid)||t.kind==="geocentric"||/[ud]/.test(n.slice(0,2))||/[ud]/.test(i.slice(0,2)),geocentricOutput:e.kind==="geocentric",run(x){if(!is(x))throw new Error("Coordinates must contain finite x, y and optional z values");o?.(x);let w=x.z;if(h&&(x.z=0),f!==1&&(x.x*=f,x.y*=f,u&&(x.z*=f)),a?.(x),m!==1&&(x.z*=m),Math.abs(x.y)>Math.PI/2||!is(x))throw new Error("Coordinate is outside the geographic domain");if(x.x+=g,t.verticalGrid&&(x.z+=t.verticalGrid(x.x,x.y)),l?.(x),e.verticalGrid&&(x.z-=e.verticalGrid(x.x,x.y)),x.x-=_,y!==void 0&&(x.x=y+Be(x.x-y)),c?.(x),d!==1&&(x.x/=d,x.y/=d),p!==1&&(x.z/=p),h&&(x.z=w),s?.(x),!is(x))throw new Error("Projection produced non-finite coordinates")}}}function Wt(t,e,r,n){if(t.length<2)throw new Error("Coordinates must contain finite x, y and optional z values");if(t.length<3&&e.requiresInputZ)throw new Error("This transform requires three ordinates");let i=Math.max(t.length,e.geocentricOutput?3:2),o=r.acquire();try{if(o.x=t[0],o.y=t[1],o.z=t.length>=3?t[2]:0,e.run(o),n)return hh(t,n,o,i);let s=t.slice();return s[0]=o.x,s[1]=o.y,(t.length>=3||e.geocentricOutput)&&(s[2]=o.z),s}finally{r.release(o)}}function Mi(t,e,r,n){if(!(t instanceof Float32Array||t instanceof Float64Array))throw new Error("In-place projection requires a Float32Array or Float64Array");if(!Number.isSafeInteger(e)||e<2||t.length%e!==0)throw new Error("Dimension must be an integer >= 2 and divide the typed array length");if(e<3&&(r.requiresInputZ||r.geocentricOutput))throw new Error("This transform requires a dimension of at least 3");if(r.flat)return r.flat(t,e),t;let i=n.acquire();try{let o=t instanceof Float32Array;for(let s=0;s<t.length;s+=e){if(i.x=t[s],i.y=t[s+1],i.z=e>=3?t[s+2]:0,r.run(i),o&&(Math.abs(i.x)>34028234663852886e22||Math.abs(i.y)>34028234663852886e22||e>=3&&Math.abs(i.z)>34028234663852886e22))throw new Error("Projected coordinate exceeds Float32 range");t[s]=i.x,t[s+1]=i.y,e>=3&&(t[s+2]=i.z)}return t}finally{n.release(i)}}function Ve(t,e){return{...ze(t,e),createForwardFlat(r){return this.forwardInPlace===t?Lh(t,!1,r):void 0},createInverseFlat(r){return this.inverseInPlace===e?Lh(e,!0,r):void 0}}}function Lh(t,e,{inputScale:r,outputScale:n}){return(i,o)=>{let s={x:0,y:0,z:0},a=i instanceof Float32Array;for(let c=0;c<i.length;c+=o){if(s.x=i[c],s.y=i[c+1],s.z=o>=3?i[c+2]:0,!Number.isFinite(s.x)||!Number.isFinite(s.y)||!Number.isFinite(s.z))throw new Error("Coordinates must contain finite x, y and optional z values");if(r!==1&&(s.x*=r,s.y*=r),e&&t(s),Math.abs(s.y)>Math.PI/2||!Number.isFinite(s.x)||!Number.isFinite(s.y))throw new Error("Coordinate is outside the geographic domain");if(s.x+=0,s.x-=0,e||t(s),n!==1&&(s.x/=n,s.y/=n),!Number.isFinite(s.x)||!Number.isFinite(s.y))throw new Error("Projection produced non-finite coordinates");if(a&&(Math.abs(s.x)>34028234663852886e22||Math.abs(s.y)>34028234663852886e22))throw new Error("Projected coordinate exceeds Float32 range");i[c]=s.x,i[c+1]=s.y}}}var os={name:"merc",aliases:["Mercator","Popular Visualisation Pseudo Mercator","Mercator_1SP","Mercator_Auxiliary_Sphere","Mercator_Variant_A"],parameters:["lon_0","lat_ts","k","k_0","x_0","y_0"],create({semiMajorAxis:t,eccentricitySquared:e,parameters:r}){let n=Math.sqrt(e),i=Object.prototype.hasOwnProperty.call(r,"over")?h=>h:Be,o=L(r,"lon_0",0)*ee,s=L(r,"x_0",0),a=L(r,"y_0",0),c=L(r,"k_0",L(r,"k",1));if(Object.prototype.hasOwnProperty.call(r,"lat_ts")){let h=Cr(r,"lat_ts");c=Math.cos(h)/Math.sqrt(1-e*Math.sin(h)**2)}if(c<=0)throw new Error("Mercator scale must be positive");let l=t*c;return Ve(h=>{let u=h.x,f=h.y;if(Math.abs(f)>=Math.PI/2)throw new Error("Mercator is undefined at the poles");let d=Math.asinh(Math.tan(f));h.x=s+l*i(u-o),h.y=a+l*(n===0?d+0:d-n*Math.atanh(n*Math.sin(f)))},h=>{let u=h.x,d=(h.y-a)/l,m=Math.atan(Math.sinh(d));if(n===0){h.x=i(o+(u-s)/l),h.y=m+0;return}for(let p=0;p<30;p++){let g=Math.atan(Math.sinh(d+n*Math.atanh(n*Math.sin(m))));if(Math.abs(g-m)<1e-13){h.x=i(o+(u-s)/l),h.y=g;return}m=g}throw new Error("Mercator inverse did not converge")})}};var ss={name:"eqc",aliases:["Equirectangular","Equidistant_Cylindrical","Equidistant_Cylindrical_Spherical"],parameters:["lon_0","lat_0","lat_ts","x_0","y_0"],create({semiMajorAxis:t,parameters:e}){let r=Object.prototype.hasOwnProperty.call(e,"over")?c=>c:Be,n=L(e,"lon_0",0)*ee,i=Cr(e,"lat_0"),o=Math.cos(Cr(e,"lat_ts")),s=L(e,"x_0",0),a=L(e,"y_0",0);return ze(c=>{c.x=s+t*o*r(c.x-n),c.y=a+t*(c.y-i)},c=>{c.x=r(n+(c.x-s)/(t*o)),c.y=i+(c.y-a)/t})}};var ue=["lon_0","lat_0","x_0","y_0"],ht=["k","k_0"];function mt(t,e,r=0){let n=L(t,e,r);if(e!=="lon_0"&&Math.abs(n)>90)throw new Error("Latitude parameter must be between -90 and 90 degrees: +"+e);return n*ee}function je(t,e){let r=Object.prototype.hasOwnProperty.call(t,e);if(r&&t[e]!==void 0)throw new Error("Expected a flag without a value: +"+e);return r}function ce({semiMajorAxis:t,eccentricitySquared:e,parameters:r}){let n=L(r,"k_0",L(r,"k",1));if(n<=0)throw new Error("Projection scale must be positive");return{a:t,b:t*Math.sqrt(1-e),es:e,e:Math.sqrt(e),ep2:e/(1-e),sphere:e===0,over:je(r,"over"),long0:mt(r,"lon_0"),lat0:mt(r,"lat_0"),lat1:mt(r,"lat_1"),lat2:mt(r,"lat_2",L(r,"lat_1",0)),lat_ts:mt(r,"lat_ts",NaN),x0:L(r,"x_0",0),y0:L(r,"y_0",0),k0:n}}function Ht(t,e){if(!Object.prototype.hasOwnProperty.call(e,"lat_1"))throw new Error("Conic projections require +lat_1");if(Math.abs(t.lat1+t.lat2)<1e-10||Math.abs(t.lat1)>=Math.PI/2||Math.abs(t.lat2)>=Math.PI/2)throw new Error("Conic standard parallels must not be opposite or at a pole")}function ie(t,e,r,n,i=ze){let o=(s,a)=>{let c=s(e,a);if(!c||typeof c!="object"||!Number.isFinite(c.x)||!Number.isFinite(c.y))throw new Error(t+": coordinate outside projection domain or inverse did not converge");a.x=c.x,a.y=c.y};return i(s=>o(r,s),s=>o(n,s))}function pt(t,e){let r=lt(e,!1);return ze(n=>{let i=n.x,o=n.y,s=Math.atan2(Math.sin(i-t.long0),Math.cos(i-t.long0)),a=Math.abs(Math.abs(t.lat0)-Math.PI/2)<1e-10;if(Math.abs(o+t.lat0)<1e-10&&(a||Math.abs(Math.abs(s)-Math.PI)<1e-10))throw new Error("Azimuthal projection is undefined at the antipode");r(n)},lt(e,!0))}function Se(t,e,r){var n=t*e;return r/Math.sqrt(1-n*n)}var E=Math.PI/2,F=Math.PI/4,gt=Math.PI*2,X=3.14159265359,as=Math.PI/180,cs=180/Math.PI,ls=Math.PI/(180*3600);function Ae(t,e,r){var n=t*r,i=.5*t;return n=Math.pow((1-n)/(1+n),i),Math.tan(.5*(E-e))/n}function et(t){return t<0?-1:1}function P(t,e){return e||Math.abs(t)<=X?t:t-et(t)*gt}function Tt(t,e){for(var r=.5*t,n,i,o=E-2*Math.atan(e),s=0;s<=15;s++)if(n=t*Math.sin(o),i=E-2*Math.atan(e*Math.pow((1-n)/(1+n),r))-o,o+=i,Math.abs(i)<=1e-10)return o;return-9999}function S1(t){if(t.k0||(t.k0=1),t.x0=t.x0||0,t.y0=t.y0||0,t.long0=t.long0||0,!(Math.abs(t.lat1+t.lat2)<1e-10)){var e=t.b/t.a;t.e=Math.sqrt(1-e*e);var r=Math.sin(t.lat1),n=Math.cos(t.lat1),i=Se(t.e,r,n),o=Ae(t.e,t.lat1,r),s=Math.sin(t.lat2),a=Math.cos(t.lat2),c=Se(t.e,s,a),l=Ae(t.e,t.lat2,s),h=Ae(t.e,t.lat0,Math.sin(t.lat0));Math.abs(t.lat1-t.lat2)>1e-10?t.ns=Math.log(i/c)/Math.log(o/l):t.ns=r,Number.isNaN(t.ns)&&(t.ns=r),t.f0=i/(t.ns*Math.pow(o,t.ns)),t.rh=Math.abs(Math.abs(t.lat0)-E)<1e-10?0:t.a*t.f0*Math.pow(h,t.ns)}}function Gh(t,e){var r=e.x,n=e.y;Math.abs(2*Math.abs(n)-Math.PI)<=1e-10&&(n=et(n)*(E-2*1e-10));var i=Math.abs(Math.abs(n)-E),o,s;if(i>1e-10)o=Ae(t.e,n,Math.sin(n)),s=t.a*t.f0*Math.pow(o,t.ns);else{if(i=n*t.ns,i<=0)return null;s=0}var a=t.ns*P(r-t.long0,t.over);return e.x=t.k0*(s*Math.sin(a))+t.x0,e.y=t.k0*(t.rh-s*Math.cos(a))+t.y0,e}function qh(t,e){var r,n,i,o,s,a=(e.x-t.x0)/t.k0,c=t.rh-(e.y-t.y0)/t.k0;t.ns>0?(r=Math.sqrt(a*a+c*c),n=1):(r=-Math.sqrt(a*a+c*c),n=-1);var l=0;if(r!==0&&(l=Math.atan2(n*a,n*c)),r!==0||t.ns>0){if(n=1/t.ns,i=Math.pow(r/(t.a*t.f0),n),o=Tt(t.e,i),o===-9999)return null}else o=-E;return s=P(l/t.ns+t.long0,t.over),e.x=s,e.y=o,e}function zh(t){let e={...t,ns:0,f0:0,rh:0};return S1(e),e}var hs={name:"lcc",aliases:["Lambert Tangential Conformal Conic Projection","Lambert_Conformal_Conic","Lambert_Conformal_Conic_1SP","Lambert_Conformal_Conic_2SP","Lambert Conic Conformal (1SP)","Lambert Conic Conformal (2SP)"],parameters:[...ue,...ht,"lat_1","lat_2"],create(t){let e=ce(t);Ht(e,t.parameters);let r=zh(e),n=ie("lcc",r,Gh,qh);return Ve(i=>{let o=i.y;if(Math.abs(o)===Math.PI/2&&o*r.ns<0)throw new Error("Lambert conformal conic is undefined at the opposite pole");n.forwardInPlace(i)},n.inverseInPlace)}};function we(t,e){var r;return t>1e-7?(r=t*e,(1-t*t)*(e/(1-r*r)-.5/t*Math.log((1-r)/(1+r)))):2*e}function Ee(t){return Math.abs(t)>1&&(t=t>1?1:-1),Math.asin(t)}function w1(t){Math.abs(t.lat1+t.lat2)<1e-10||(t.temp=t.b/t.a,t.es=1-Math.pow(t.temp,2),t.e3=Math.sqrt(t.es),t.sin_po=Math.sin(t.lat1),t.cos_po=Math.cos(t.lat1),t.t1=t.sin_po,t.con=t.sin_po,t.ms1=Se(t.e3,t.sin_po,t.cos_po),t.qs1=we(t.e3,t.sin_po),t.sin_po=Math.sin(t.lat2),t.cos_po=Math.cos(t.lat2),t.t2=t.sin_po,t.ms2=Se(t.e3,t.sin_po,t.cos_po),t.qs2=we(t.e3,t.sin_po),t.sin_po=Math.sin(t.lat0),t.cos_po=Math.cos(t.lat0),t.t3=t.sin_po,t.qs0=we(t.e3,t.sin_po),Math.abs(t.lat1-t.lat2)>1e-10?t.ns0=(t.ms1*t.ms1-t.ms2*t.ms2)/(t.qs2-t.qs1):t.ns0=t.con,t.c=t.ms1*t.ms1+t.ns0*t.qs1,t.rh=t.a*Math.sqrt(t.c-t.ns0*t.qs0)/t.ns0)}function Bh(t,e){var r=e.x,n=e.y;t.sin_phi=Math.sin(n),t.cos_phi=Math.cos(n);var i=we(t.e3,t.sin_phi),o=t.a*Math.sqrt(t.c-t.ns0*i)/t.ns0,s=t.ns0*P(r-t.long0,t.over),a=o*Math.sin(s)+t.x0,c=t.rh-o*Math.cos(s)+t.y0;return e.x=a,e.y=c,e}function Dh(t,e){var r,n,i,o,s,a;return e.x-=t.x0,e.y=t.rh-e.y+t.y0,t.ns0>=0?(r=Math.sqrt(e.x*e.x+e.y*e.y),i=1):(r=-Math.sqrt(e.x*e.x+e.y*e.y),i=-1),o=0,r!==0&&(o=Math.atan2(i*e.x,i*e.y)),i=r*t.ns0/t.a,t.sphere?a=Math.asin((t.c-i*i)/(2*t.ns0)):(n=(t.c-i*i)/t.ns0,a=E1(t.e3,n)),s=P(o/t.ns0+t.long0,t.over),e.x=s,e.y=a,e}function E1(t,e){var r,n,i,o,s,a=Ee(.5*e);if(t<1e-10)return a;for(var c=t*t,l=1;l<=25;l++)if(r=Math.sin(a),n=Math.cos(a),i=t*r,o=1-i*i,s=.5*o*o/n*(e/(1-c)-r/o+.5/t*Math.log((1-i)/(1+i))),a=a+s,Math.abs(s)<=1e-7)return a;return null}function kh(t){let e={...t,temp:0,e3:0,sin_po:0,cos_po:0,t1:0,con:0,ms1:0,qs1:0,t2:0,ms2:0,qs2:0,t3:0,qs0:0,ns0:0,c:0,rh:0,sin_phi:0,cos_phi:0};return w1(e),e}var us={name:"aea",aliases:["Albers_Conic_Equal_Area","Albers_Equal_Area","Albers"],parameters:[...ue,"lat_1","lat_2"],create(t){let e=ce(t);return Ht(e,t.parameters),ie("aea",kh(e),Bh,Dh,Ve)}};var T1=1,b1=.25,Fh=.046875,Uh=.01953125,Vh=.01068115234375,v1=.75,P1=.46875,R1=.013020833333333334,C1=.007120768229166667,A1=.3645833333333333,I1=.005696614583333333,O1=.3076171875;function tt(t){var e=[];e[0]=T1-t*(b1+t*(Fh+t*(Uh+t*Vh))),e[1]=t*(v1-t*(Fh+t*(Uh+t*Vh)));var r=t*t;return e[2]=r*(P1-t*(R1+t*C1)),r*=t,e[3]=r*(A1-t*I1),e[4]=r*t*O1,e}function le(t,e,r,n){return r*=e,e*=e,n[0]*t-r*(n[1]+e*(n[2]+e*(n[3]+e*n[4])))}var N1=20;function rt(t,e,r){for(var n=1/(1-e),i=t,o=N1;o;--o){var s=Math.sin(i),a=1-e*s*s;if(a=(le(i,s,Math.cos(i),r)-t)*(a*Math.sqrt(a))*n,i-=a,Math.abs(a)<1e-10)return i}return i}function We(t){return Math.abs(t)<E?t:t-et(t)*Math.PI}function L1(t){Math.abs(t.lat1+t.lat2)<1e-10||(t.temp=t.b/t.a,t.es=1-Math.pow(t.temp,2),t.e=Math.sqrt(t.es),t.en=tt(t.es),t.sin_phi=Math.sin(t.lat1),t.cos_phi=Math.cos(t.lat1),t.ms1=Se(t.e,t.sin_phi,t.cos_phi),t.ml1=le(t.lat1,Math.sin(t.lat1),Math.cos(t.lat1),t.en),Math.abs(t.lat1-t.lat2)<1e-10?t.ns=t.sin_phi:(t.sin_phi=Math.sin(t.lat2),t.cos_phi=Math.cos(t.lat2),t.ms2=Se(t.e,t.sin_phi,t.cos_phi),t.ml2=le(t.lat2,Math.sin(t.lat2),Math.cos(t.lat2),t.en),t.ns=(t.ms1-t.ms2)/(t.ml2-t.ml1)),t.g=t.ml1+t.ms1/t.ns,t.ml0=le(t.lat0,Math.sin(t.lat0),Math.cos(t.lat0),t.en),t.rh=t.a*(t.g-t.ml0))}function jh(t,e){var r=e.x,n=e.y,i;if(t.sphere)i=t.a*(t.g-n);else{var o=le(n,Math.sin(n),Math.cos(n),t.en);i=t.a*(t.g-o)}var s=t.ns*P(r-t.long0,t.over),a=t.x0+i*Math.sin(s),c=t.y0+t.rh-i*Math.cos(s);return e.x=a,e.y=c,e}function Wh(t,e){e.x-=t.x0,e.y=t.rh-e.y+t.y0;var r,n,i,o;t.ns>=0?(n=Math.sqrt(e.x*e.x+e.y*e.y),r=1):(n=-Math.sqrt(e.x*e.x+e.y*e.y),r=-1);var s=0;if(n!==0&&(s=Math.atan2(r*e.x,r*e.y)),t.sphere)return o=P(t.long0+s/t.ns,t.over),i=We(t.g-n/t.a),e.x=o,e.y=i,e;var a=t.g-n/t.a;return i=rt(a,t.es,t.en),o=P(t.long0+s/t.ns,t.over),e.x=o,e.y=i,e}function Hh(t){let e={...t,temp:0,en:[],sin_phi:0,cos_phi:0,ms1:0,ml1:0,ns:0,ms2:0,ml2:0,g:0,ml0:0,rh:0};return L1(e),e}var fs={name:"eqdc",aliases:["Equidistant_Conic"],parameters:[...ue,"lat_1","lat_2"],create(t){let e=ce(t);return Ht(e,t.parameters),ie("eqdc",Hh(e),jh,Wh,Ve)}};var G1=.3333333333333333,q1=.17222222222222222,z1=.10257936507936508,B1=.06388888888888888,D1=.0664021164021164,k1=.016415012942191543;function Or(t){var e,r=[];return r[0]=t*G1,e=t*t,r[0]+=e*q1,r[1]=e*B1,e*=t,r[0]+=e*z1,r[1]+=e*D1,r[2]=e*k1,r}function Nr(t,e){var r=t+t;return t+e[0]*Math.sin(r)+e[1]*Math.sin(r+r)+e[2]*Math.sin(r+r+r)}var nt=1,ut=2,De=3,Ie=4;function F1(t){var e=Math.abs(t.lat0);if(Math.abs(e-E)<1e-10?t.mode=t.lat0<0?nt:ut:Math.abs(e)<1e-10?t.mode=De:t.mode=Ie,t.es>0){var r;switch(t.qp=we(t.e,1),t.mmf=.5/(1-t.es),t.apa=Or(t.es),t.mode){case ut:t.dd=1;break;case nt:t.dd=1;break;case De:t.rq=Math.sqrt(.5*t.qp),t.dd=1/t.rq,t.xmf=1,t.ymf=.5*t.qp;break;case Ie:t.rq=Math.sqrt(.5*t.qp),r=Math.sin(t.lat0),t.sinb1=we(t.e,r)/t.qp,t.cosb1=Math.sqrt(1-t.sinb1*t.sinb1),t.dd=Math.cos(t.lat0)/(Math.sqrt(1-t.es*r*r)*t.rq*t.cosb1),t.xmf=t.rq,t.ymf=t.xmf/t.dd,t.xmf*=t.dd;break}}else t.mode===Ie&&(t.sinph0=Math.sin(t.lat0),t.cosph0=Math.cos(t.lat0))}function $h(t,e){var r,n,i,o,s,a,c,l,h,u,f=e.x,d=e.y;if(f=P(f-t.long0,t.over),t.sphere){if(s=Math.sin(d),u=Math.cos(d),i=Math.cos(f),t.mode===Ie||t.mode===De){if(n=t.mode===De?1+u*i:1+t.sinph0*s+t.cosph0*u*i,n<=1e-10)return null;n=Math.sqrt(2/n),r=n*u*Math.sin(f),n*=t.mode===De?s:t.cosph0*s-t.sinph0*u*i}else if(t.mode===ut||t.mode===nt){if(t.mode===ut&&(i=-i),Math.abs(d+t.lat0)<1e-10)return null;n=F-d*.5,n=2*(t.mode===nt?Math.cos(n):Math.sin(n)),r=n*Math.sin(f),n*=i}}else{switch(c=0,l=0,h=0,i=Math.cos(f),o=Math.sin(f),s=Math.sin(d),a=we(t.e,s),(t.mode===Ie||t.mode===De)&&(c=a/t.qp,l=Math.sqrt(1-c*c)),t.mode){case Ie:h=1+t.sinb1*c+t.cosb1*l*i;break;case De:h=1+l*i;break;case ut:h=E+d,a=t.qp-a;break;case nt:h=d-E,a=t.qp+a;break}if(Math.abs(h)<1e-10)return null;switch(t.mode){case Ie:case De:h=Math.sqrt(2/h),t.mode===Ie?n=t.ymf*h*(t.cosb1*c-t.sinb1*l*i):(h=Math.sqrt(2/(1+l*i)),n=h*c*t.ymf),r=t.xmf*h*l*o;break;case ut:case nt:a>=0?(h=Math.sqrt(a),r=h*o,n=i*(t.mode===nt?h:-h)):r=n=0;break}}return e.x=t.a*r+t.x0,e.y=t.a*n+t.y0,e}function Yh(t,e){e.x-=t.x0,e.y-=t.y0;var r=e.x/t.a,n=e.y/t.a,i,o,s,a,c,l,h;if(t.sphere){var u=0,f,d=0;if(f=Math.sqrt(r*r+n*n),o=f*.5,o>1)return null;switch(o=2*Math.asin(o),(t.mode===Ie||t.mode===De)&&(d=Math.sin(o),u=Math.cos(o)),t.mode){case De:o=Math.abs(f)<=1e-10?0:Math.asin(n*d/f),r*=d,n=u*f;break;case Ie:o=Math.abs(f)<=1e-10?t.lat0:Math.asin(u*t.sinph0+n*d*t.cosph0/f),r*=d*t.cosph0,n=(u-Math.sin(o)*t.sinph0)*f;break;case ut:n=-n,o=E-o;break;case nt:o-=E;break}i=n===0&&(t.mode===De||t.mode===Ie)?0:Math.atan2(r,n)}else{if(h=0,t.mode===Ie||t.mode===De){if(r/=t.dd,n*=t.dd,l=Math.sqrt(r*r+n*n),l<1e-10)return e.x=t.long0,e.y=t.lat0,e;a=2*Math.asin(.5*l/t.rq),s=Math.cos(a),r*=a=Math.sin(a),t.mode===Ie?(h=s*t.sinb1+n*a*t.cosb1/l,c=t.qp*h,n=l*t.cosb1*s-n*t.sinb1*a):(h=n*a/l,c=t.qp*h,n=l*s)}else if(t.mode===ut||t.mode===nt){if(t.mode===ut&&(n=-n),c=r*r+n*n,!c)return e.x=t.long0,e.y=t.lat0,e;h=1-c/t.qp,t.mode===nt&&(h=-h)}i=Math.atan2(r,n),o=Nr(Math.asin(h),t.apa)}return e.x=P(t.long0+i,t.over),e.y=o,e}function Kh(t){let e={...t,mode:0,qp:0,mmf:0,apa:[],dd:0,rq:0,xmf:0,ymf:0,sinb1:0,cosb1:0,sinph0:0,cosph0:0};return F1(e),e}var ds={name:"laea",aliases:["Lambert Azimuthal Equal Area","Lambert_Azimuthal_Equal_Area"],parameters:ue,create(t){let e=ce(t);return pt(e,ie("laea",Kh(e),$h,Yh))}};function Xh(t,e,r){return e*=r,Math.tan(.5*(E+t))*Math.pow((1-e)/(1+e),.5*r)}function U1(t){t.x0=t.x0||0,t.y0=t.y0||0,t.lat0=t.lat0||0,t.long0=t.long0||0,t.coslat0=Math.cos(t.lat0),t.sinlat0=Math.sin(t.lat0),t.sphere?!Number.isNaN(t.lat_ts)&&Math.abs(t.coslat0)<=1e-10&&(t.k0=.5*(1+et(t.lat0)*Math.sin(t.lat_ts))):(Math.abs(t.coslat0)<=1e-10&&(t.lat0>0?t.con=1:t.con=-1),t.cons=Math.sqrt(Math.pow(1+t.e,1+t.e)*Math.pow(1-t.e,1-t.e)),!Number.isNaN(t.lat_ts)&&Math.abs(t.coslat0)<=1e-10&&Math.abs(Math.cos(t.lat_ts))>1e-10&&(t.k0=.5*t.cons*Se(t.e,Math.sin(t.lat_ts),Math.cos(t.lat_ts))/Ae(t.e,t.con*t.lat_ts,t.con*Math.sin(t.lat_ts))),t.ms1=Se(t.e,t.sinlat0,t.coslat0),t.X0=2*Math.atan(Xh(t.lat0,t.sinlat0,t.e))-E,t.cosX0=Math.cos(t.X0),t.sinX0=Math.sin(t.X0))}function Zh(t,e){var r=e.x,n=e.y,i=Math.sin(n),o=Math.cos(n),s,a,c,l,h,u,f=P(r-t.long0,t.over);return Math.abs(Math.abs(r-t.long0)-Math.PI)<=1e-10&&Math.abs(n+t.lat0)<=1e-10?(e.x=NaN,e.y=NaN,e):t.sphere?(s=2*t.k0/(1+t.sinlat0*i+t.coslat0*o*Math.cos(f)),e.x=t.a*s*o*Math.sin(f)+t.x0,e.y=t.a*s*(t.coslat0*i-t.sinlat0*o*Math.cos(f))+t.y0,e):(a=2*Math.atan(Xh(n,i,t.e))-E,l=Math.cos(a),c=Math.sin(a),Math.abs(t.coslat0)<=1e-10?(h=Ae(t.e,n*t.con,t.con*i),u=2*t.a*t.k0*h/t.cons,e.x=t.x0+u*Math.sin(r-t.long0),e.y=t.y0-t.con*u*Math.cos(r-t.long0),e):(Math.abs(t.sinlat0)<1e-10?(s=2*t.a*t.k0/(1+l*Math.cos(f)),e.y=s*c+t.y0):(s=2*t.a*t.k0*t.ms1/(t.cosX0*(1+t.sinX0*c+t.cosX0*l*Math.cos(f))),e.y=s*(t.cosX0*c-t.sinX0*l*Math.cos(f))+t.y0),e.x=s*l*Math.sin(f)+t.x0,e))}function Qh(t,e){e.x-=t.x0,e.y-=t.y0;var r,n,i,o,s,a=Math.sqrt(e.x*e.x+e.y*e.y);if(t.sphere){var c=2*Math.atan(a/(2*t.a*t.k0));return r=t.long0,n=t.lat0,a<=1e-10?(e.x=r,e.y=n,e):(n=Math.asin(Math.cos(c)*t.sinlat0+e.y*Math.sin(c)*t.coslat0/a),Math.abs(t.coslat0)<1e-10?t.lat0>0?r=P(t.long0+Math.atan2(e.x,-1*e.y),t.over):r=P(t.long0+Math.atan2(e.x,e.y),t.over):r=P(t.long0+Math.atan2(e.x*Math.sin(c),a*t.coslat0*Math.cos(c)-e.y*t.sinlat0*Math.sin(c)),t.over),e.x=r,e.y=n,e)}else if(Math.abs(t.coslat0)<=1e-10){if(a<=1e-10)return n=t.lat0,r=t.long0,e.x=r,e.y=n,e;e.x*=t.con,e.y*=t.con,i=a*t.cons/(2*t.a*t.k0),n=t.con*Tt(t.e,i),r=t.con*P(t.con*t.long0+Math.atan2(e.x,-1*e.y),t.over)}else o=2*Math.atan(a*t.cosX0/(2*t.a*t.k0*t.ms1)),r=t.long0,a<=1e-10?s=t.X0:(s=Math.asin(Math.cos(o)*t.sinX0+e.y*Math.sin(o)*t.cosX0/a),r=P(t.long0+Math.atan2(e.x*Math.sin(o),a*t.cosX0*Math.cos(o)-e.y*t.sinX0*Math.sin(o)),t.over)),n=-1*Tt(t.e,Math.tan(.5*(E+s)));return e.x=r,e.y=n,e}function Jh(t){let e={...t,coslat0:0,sinlat0:0,con:0,cons:0,ms1:0,X0:0,cosX0:0,sinX0:0};return U1(e),e}var ms={name:"stere",aliases:["Stereographic_South_Pole","Polar_Stereographic_variant_A","Polar_Stereographic_variant_B","Polar_Stereographic"],parameters:[...ue,...ht,"lat_ts"],create(t){let e=ce(t);return pt(e,ie("stere",Jh(e),Zh,Qh))}};function xi(t,e){return Math.pow((1-t)/(1+t),e)}var V1=20;function j1(t){var e=Math.sin(t.lat0),r=Math.cos(t.lat0);r*=r,t.rc=Math.sqrt(1-t.es)/(1-t.es*e*e),t.C=Math.sqrt(1+t.es*r*r/(1-t.es)),t.phic0=Math.asin(e/t.C),t.ratexp=.5*t.C*t.e,t.K=Math.tan(.5*t.phic0+F)/(Math.pow(Math.tan(.5*t.lat0+F),t.C)*xi(t.e*e,t.ratexp))}function eu(t,e){var r=e.x,n=e.y;return e.y=2*Math.atan(t.K*Math.pow(Math.tan(.5*n+F),t.C)*xi(t.e*Math.sin(n),t.ratexp))-E,e.x=t.C*r,e}function tu(t,e){for(var r=1e-14,n=e.x/t.C,i=e.y,o=Math.pow(Math.tan(.5*i+F)/t.K,1/t.C),s=V1;s>0&&(i=2*Math.atan(o*xi(t.e*Math.sin(e.y),-.5*t.e))-E,!(Math.abs(i-e.y)<r));--s)e.y=i;return s?(e.x=n,e.y=i,e):null}function ru(t){let e={...t,rc:0,C:0,phic0:0,ratexp:0,K:0};return j1(e),e}function ne(t,e){t=Math.abs(t),e=Math.abs(e);var r=Math.max(t,e),n=Math.min(t,e)/(r||1);return r*Math.sqrt(1+Math.pow(n,2))}function W1(t){t.rc&&(t.sinc0=Math.sin(t.phic0),t.cosc0=Math.cos(t.phic0),t.R2=2*t.rc)}function nu(t,e){var r,n,i,o;return e.x=P(e.x-t.long0,t.over),eu(t,e),r=Math.sin(e.y),n=Math.cos(e.y),i=Math.cos(e.x),o=t.k0*t.R2/(1+t.sinc0*r+t.cosc0*n*i),e.x=o*n*Math.sin(e.x),e.y=o*(t.cosc0*r-t.sinc0*n*i),e.x=t.a*e.x+t.x0,e.y=t.a*e.y+t.y0,e}function iu(t,e){var r,n,i,o,s;if(e.x=(e.x-t.x0)/t.a,e.y=(e.y-t.y0)/t.a,e.x/=t.k0,e.y/=t.k0,s=ne(e.x,e.y),s){var a=2*Math.atan2(s,t.R2);r=Math.sin(a),n=Math.cos(a),o=Math.asin(n*t.sinc0+e.y*r*t.cosc0/s),i=Math.atan2(e.x*r,s*t.cosc0*n-e.y*t.sinc0*r)}else o=t.phic0,i=0;if(e.x=i,e.y=o,!tu(t,e))throw new Error("Oblique stereographic inverse did not converge");return e.x=P(e.x+t.long0,t.over),e}function ou(t){let e={...ru(t),sinc0:0,cosc0:0,R2:0};return W1(e),e}var ps={name:"sterea",aliases:["Stereographic_North_Pole","Oblique_Stereographic","Oblique Stereographic Alternative","Double_Stereographic"],parameters:[...ue,...ht],create(t){let e=ce(t);if(Math.abs(e.lat0)===Math.PI/2)throw new Error("sterea requires a non-polar origin; use stere at the poles");return pt(e,ie("sterea",ou(e),nu,iu))}};function He(t,e,r,n,i){return t*i-e*Math.sin(2*i)+r*Math.sin(4*i)-n*Math.sin(6*i)}function Lr(t){return 1-.25*t*(1+t/16*(3+1.25*t))}function Gr(t){return .375*t*(1+.25*t*(1+.46875*t))}function qr(t){return .05859375*t*t*(1+.75*t)}function zr(t){return t*t*t*(35/3072)}function gs(t,e,r,n,i){var o,s;o=t/e;for(var a=0;a<15;a++)if(s=(t-(e*o-r*Math.sin(2*o)+n*Math.sin(4*o)-i*Math.sin(6*o)))/(e-2*r*Math.cos(2*o)+4*n*Math.cos(4*o)-6*i*Math.cos(6*o)),o+=s,Math.abs(s)<=1e-10)return o;return NaN}function su(t,e,r,n,i,o,s){let a=n-e,c=Math.atan((1-o)*Math.tan(t)),l=Math.atan((1-o)*Math.tan(r)),h=Math.sin(c),u=Math.cos(c),f=Math.sin(l),d=Math.cos(l),m=a,p,g=100,_,y,S,x,w,T,v,C,O,b,I,A,k,q;do{if(_=Math.sin(m),y=Math.cos(m),S=Math.sqrt(d*_*(d*_)+(u*f-h*d*y)*(u*f-h*d*y)),S===0){s.x=0,s.y=0;return}x=h*f+u*d*y,w=Math.atan2(S,x),T=u*d*_/S,v=1-T*T,C=v!==0?x-2*h*f/v:0,O=o/16*v*(4+o*(4-3*v)),p=m,m=a+(1-O)*o*T*(w+O*S*(C+O*x*(-1+2*C*C)))}while(Math.abs(m-p)>1e-12&&--g>0);if(g===0){s.x=NaN,s.y=NaN;return}b=v*(i*i-i*(1-o)*(i*(1-o)))/(i*(1-o)*(i*(1-o))),I=1+b/16384*(4096+b*(-768+b*(320-175*b))),A=b/1024*(256+b*(-128+b*(74-47*b))),k=A*S*(C+A/4*(x*(-1+2*C*C)-A/6*C*(-3+4*S*S)*(-3+4*C*C))),q=i*(1-o)*I*(w-k);let j=Math.atan2(d*_,u*f-h*d*y);s.x=j,s.y=q}function au(t,e,r,n,i,o,s){let a=Math.atan((1-o)*Math.tan(t)),c=Math.sin(a),l=Math.cos(a),h=Math.sin(r),u=Math.cos(r),f=Math.atan2(c,l*u),d=l*h,m=1-d*d,p=m*(i*i-i*(1-o)*(i*(1-o)))/(i*(1-o)*(i*(1-o))),g=1+p/16384*(4096+p*(-768+p*(320-175*p))),_=p/1024*(256+p*(-128+p*(74-47*p))),y=n/(i*(1-o)*g),S,x=100,w,T,v,C;do w=Math.cos(2*f+y),T=Math.sin(y),v=Math.cos(y),C=_*T*(w+_/4*(v*(-1+2*w*w)-_/6*w*(-3+4*T*T)*(-3+4*w*w))),S=y,y=n/(i*(1-o)*g)+C;while(Math.abs(y-S)>1e-12&&--x>0);if(x===0){s.x=NaN,s.y=NaN;return}let O=c*T-l*v*u,b=Math.atan2(c*v+l*T*u,(1-o)*Math.sqrt(d*d+O*O)),I=Math.atan2(T*h,l*v-c*T*u),A=o/16*m*(4+o*(4-3*m)),k=I-(1-A)*o*d*(y+A*T*(w+A*v*(-1+2*w*w))),q=e+k;s.x=q,s.y=b}function H1(t){t.sin_p12=Math.sin(t.lat0),t.cos_p12=Math.cos(t.lat0),t.x0=t.x0||0,t.y0=t.y0||0,t.long0=t.long0||0,t.f=t.es/(1+Math.sqrt(1-t.es))}function cu(t,e){var r=e.x,n=e.y,i=Math.sin(e.y),o=Math.cos(e.y),s=P(r-t.long0,t.over),a,c,l,h,u,f,d,m,p,g;if(t.sphere)return Math.abs(t.sin_p12-1)<=1e-10?(e.x=t.x0+t.a*(E-n)*Math.sin(s),e.y=t.y0-t.a*(E-n)*Math.cos(s),e):Math.abs(t.sin_p12+1)<=1e-10?(e.x=t.x0+t.a*(E+n)*Math.sin(s),e.y=t.y0+t.a*(E+n)*Math.cos(s),e):(p=t.sin_p12*i+t.cos_p12*o*Math.cos(s),d=Math.acos(p),m=d?d/Math.sin(d):1,e.x=t.x0+t.a*m*o*Math.sin(s),e.y=t.y0+t.a*m*(t.cos_p12*i-t.sin_p12*o*Math.cos(s)),e);if(a=Lr(t.es),c=Gr(t.es),l=qr(t.es),h=zr(t.es),Math.abs(t.sin_p12-1)<=1e-10)return u=t.a*He(a,c,l,h,E),f=t.a*He(a,c,l,h,n),e.x=t.x0+(u-f)*Math.sin(s),e.y=t.y0-(u-f)*Math.cos(s),e;if(Math.abs(t.sin_p12+1)<=1e-10)return u=t.a*He(a,c,l,h,E),f=t.a*He(a,c,l,h,n),e.x=t.x0+(u+f)*Math.sin(s),e.y=t.y0+(u+f)*Math.cos(s),e;{if(Math.abs(s)<1e-10&&Math.abs(n-t.lat0)<1e-10)return e.x=t.x0,e.y=t.y0,e;su(t.lat0,t.long0,n,r,t.a,t.f,e),g=e.x;let _=e.y;return e.x=t.x0+_*Math.sin(g),e.y=t.y0+_*Math.cos(g),e}}function lu(t,e){e.x-=t.x0,e.y-=t.y0;var r,n,i,o,s,a,c,l,h,u,f,d,m,p,g;return t.sphere?(r=Math.sqrt(e.x*e.x+e.y*e.y),r>2*E*t.a?null:(n=r/t.a,i=Math.sin(n),o=Math.cos(n),s=t.long0,Math.abs(r)<=1e-10?a=t.lat0:(a=Ee(o*t.sin_p12+e.y*i*t.cos_p12/r),c=Math.abs(t.lat0)-E,Math.abs(c)<=1e-10?t.lat0>=0?s=P(t.long0+Math.atan2(e.x,-e.y),t.over):s=P(t.long0-Math.atan2(-e.x,e.y),t.over):s=P(t.long0+Math.atan2(e.x*i,r*t.cos_p12*o-e.y*t.sin_p12*i),t.over)),e.x=s,e.y=a,e)):(l=Lr(t.es),h=Gr(t.es),u=qr(t.es),f=zr(t.es),Math.abs(t.sin_p12-1)<=1e-10?(d=t.a*He(l,h,u,f,E),r=Math.sqrt(e.x*e.x+e.y*e.y),m=d-r,a=gs(m/t.a,l,h,u,f),s=P(t.long0+Math.atan2(e.x,-1*e.y),t.over),e.x=s,e.y=a,e):Math.abs(t.sin_p12+1)<=1e-10?(d=t.a*He(l,h,u,f,E),r=Math.sqrt(e.x*e.x+e.y*e.y),m=r-d,a=gs(m/t.a,l,h,u,f),s=P(t.long0+Math.atan2(e.x,e.y),t.over),e.x=s,e.y=a,e):(p=Math.atan2(e.x,e.y),g=Math.sqrt(e.x*e.x+e.y*e.y),au(t.lat0,t.long0,p,g,t.a,t.f,e),e))}function hu(t){let e={...t,sin_p12:0,cos_p12:0,f:0};return H1(e),e}var Ms={name:"aeqd",aliases:["Azimuthal_Equidistant"],parameters:ue,create(t){let e=ce(t);return pt(e,ie("aeqd",hu(e),cu,lu))}};function bt(t){var e=Math.exp(t);return e=(e-1/e)/2,e}function uu(t){var e=1+t,r=e-1;return r===0?t:t*Math.log(e)/r}function fu(t){var e=Math.abs(t);return e=uu(e*(1+e/(ne(1,e)+1))),t<0?-e:e}function Si(t,e){for(var r=2*Math.cos(2*e),n=t.length-1,i=t[n],o=0,s;--n>=0;)s=-o+r*i+t[n],o=i,i=s;return e+s*Math.sin(2*e)}function du(t,e){for(var r=2*Math.cos(e),n=t.length-1,i=t[n],o=0,s;--n>=0;)s=-o+r*i+t[n],o=i,i=s;return Math.sin(e)*s}function Br(t){var e=Math.exp(t);return e=(e+1/e)/2,e}function _s(t,e,r,n){for(var i=Math.sin(e),o=Math.cos(e),s=bt(r),a=Br(r),c=2*o*a,l=-2*i*s,h=t.length-1,u=t[h],f=0,d=0,m=0,p,g;--h>=0;)p=d,g=f,d=u,f=m,u=-p+c*d-l*f+t[h],m=-g+l*d+c*f;c=i*a,l=o*s,n.x=c*u-l*m,n.y=c*m+l*u}function $1(t){t.x0=t.x0!==void 0?t.x0:0,t.y0=t.y0!==void 0?t.y0:0,t.long0=t.long0!==void 0?t.long0:0,t.lat0=t.lat0!==void 0?t.lat0:0,t.k0=t.k0!==void 0?t.k0:1,t.cgb=[],t.cbg=[],t.utg=[],t.gtu=[];var e=t.es/(1+Math.sqrt(1-t.es)),r=e/(2-e),n=r;t.cgb[0]=r*(2+r*(-2/3+r*(-2+r*(116/45+r*(26/45+r*(-2854/675)))))),t.cbg[0]=r*(-2+r*(2/3+r*(4/3+r*(-82/45+r*(32/45+r*(4642/4725)))))),n=n*r,t.cgb[1]=n*(7/3+r*(-8/5+r*(-227/45+r*(2704/315+r*(2323/945))))),t.cbg[1]=n*(5/3+r*(-16/15+r*(-13/9+r*(904/315+r*(-1522/945))))),n=n*r,t.cgb[2]=n*(56/15+r*(-136/35+r*(-1262/105+r*(73814/2835)))),t.cbg[2]=n*(-26/15+r*(34/21+r*(8/5+r*(-12686/2835)))),n=n*r,t.cgb[3]=n*(4279/630+r*(-332/35+r*(-399572/14175))),t.cbg[3]=n*(1237/630+r*(-12/5+r*(-24832/14175))),n=n*r,t.cgb[4]=n*(4174/315+r*(-144838/6237)),t.cbg[4]=n*(-734/315+r*(109598/31185)),n=n*r,t.cgb[5]=n*(601676/22275),t.cbg[5]=n*(444337/155925),n=Math.pow(r,2),t.Qn=t.k0/(1+r)*(1+n*(1/4+n*(1/64+n/256))),t.utg[0]=r*(-.5+r*(2/3+r*(-37/96+r*(1/360+r*(81/512+r*(-96199/604800)))))),t.gtu[0]=r*(.5+r*(-2/3+r*(5/16+r*(41/180+r*(-127/288+r*(7891/37800)))))),t.utg[1]=n*(-1/48+r*(-1/15+r*(437/1440+r*(-46/105+r*(1118711/3870720))))),t.gtu[1]=n*(13/48+r*(-3/5+r*(557/1440+r*(281/630+r*(-1983433/1935360))))),n=n*r,t.utg[2]=n*(-17/480+r*(37/840+r*(209/4480+r*(-5569/90720)))),t.gtu[2]=n*(61/240+r*(-103/140+r*(15061/26880+r*(167603/181440)))),n=n*r,t.utg[3]=n*(-4397/161280+r*(11/504+r*(830251/7257600))),t.gtu[3]=n*(49561/161280+r*(-179/168+r*(6601661/7257600))),n=n*r,t.utg[4]=n*(-4583/161280+r*(108847/3991680)),t.gtu[4]=n*(34729/80640+r*(-3418889/1995840)),n=n*r,t.utg[5]=n*(-20648693/638668800),t.gtu[5]=n*(212378941/319334400);var i=Si(t.cbg,t.lat0);t.Zb=-t.Qn*(i+du(t.gtu,2*i))}function mu(t,e){var r=P(e.x-t.long0,t.over),n=e.y;n=Si(t.cbg,n);var i=Math.sin(n),o=Math.cos(n),s=Math.sin(r),a=Math.cos(r);n=Math.atan2(i,a*o),r=Math.atan2(s*o,ne(i,o*a)),r=fu(Math.tan(r)),_s(t.gtu,2*n,2*r,e),n=n+e.x,r=r+e.y;var c,l;return Math.abs(r)<=2.623395162778?(c=t.a*(t.Qn*r)+t.x0,l=t.a*(t.Qn*n+t.Zb)+t.y0):(c=1/0,l=1/0),e.x=c,e.y=l,e}function pu(t,e){var r=(e.x-t.x0)*(1/t.a),n=(e.y-t.y0)*(1/t.a);n=(n-t.Zb)/t.Qn,r=r/t.Qn;var i,o;if(Math.abs(r)<=2.623395162778){_s(t.utg,2*n,2*r,e),n=n+e.x,r=r+e.y,r=Math.atan(bt(r));var s=Math.sin(n),a=Math.cos(n),c=Math.sin(r),l=Math.cos(r);n=Math.atan2(s*l,ne(c,l*a)),r=Math.atan2(c,l*a),i=P(r+t.long0,t.over),o=Si(t.cgb,n)}else i=1/0,o=1/0;return e.x=i,e.y=o,e}function gu(t){let e={...t,cgb:[],cbg:[],utg:[],gtu:[],Qn:0,Zb:0};return $1(e),e}function Y1(t){t.x0=t.x0!==void 0?t.x0:0,t.y0=t.y0!==void 0?t.y0:0,t.long0=t.long0!==void 0?t.long0:0,t.lat0=t.lat0!==void 0?t.lat0:0,t.es&&(t.en=tt(t.es),t.ml0=le(t.lat0,Math.sin(t.lat0),Math.cos(t.lat0),t.en))}function Mu(t,e){var r=e.x,n=e.y,i=P(r-t.long0,t.over),o,s,a,c=Math.sin(n),l=Math.cos(n);if(t.es){var u=l*i,f=Math.pow(u,2),d=t.ep2*Math.pow(l,2),m=Math.pow(d,2),p=Math.abs(l)>1e-10?Math.tan(n):0,g=Math.pow(p,2),_=Math.pow(g,2);o=1-t.es*Math.pow(c,2),u=u/Math.sqrt(o);var y=le(n,c,l,t.en);s=t.a*(t.k0*u*(1+f/6*(1-g+d+f/20*(5-18*g+_+14*d-58*g*d+f/42*(61+179*_-_*g-479*g)))))+t.x0,a=t.a*(t.k0*(y-t.ml0+c*i*u/2*(1+f/12*(5-g+9*d+4*m+f/30*(61+_-58*g+270*d-330*g*d+f/56*(1385+543*_-_*g-3111*g))))))+t.y0}else{var h=l*Math.sin(i);if(Math.abs(Math.abs(h)-1)<1e-10)return 93;if(s=.5*t.a*t.k0*Math.log((1+h)/(1-h))+t.x0,a=l*Math.cos(i)/Math.sqrt(1-Math.pow(h,2)),h=Math.abs(a),h>=1){if(h-1>1e-10)return 93;a=0}else a=Math.acos(a);n<0&&(a=-a),a=t.a*t.k0*(a-t.lat0)+t.y0}return e.x=s,e.y=a,e}function _u(t,e){var r,n,i,o,s=(e.x-t.x0)*(1/t.a),a=(e.y-t.y0)*(1/t.a);if(t.es)if(r=t.ml0+a/t.k0,n=rt(r,t.es,t.en),Math.abs(n)<E){var f=Math.sin(n),d=Math.cos(n),m=Math.abs(d)>1e-10?Math.tan(n):0,p=t.ep2*Math.pow(d,2),g=Math.pow(p,2),_=Math.pow(m,2),y=Math.pow(_,2);r=1-t.es*Math.pow(f,2);var S=s*Math.sqrt(r)/t.k0,x=Math.pow(S,2);r=r*m,i=n-r*x/(1-t.es)*.5*(1-x/12*(5+3*_-9*p*_+p-4*g-x/30*(61+90*_-252*p*_+45*y+46*p-x/56*(1385+3633*_+4095*y+1574*y*_)))),o=P(t.long0+S*(1-x/6*(1+2*_+p-x/20*(5+28*_+24*y+8*p*_+6*p-x/42*(61+662*_+1320*y+720*y*_))))/d,t.over)}else i=E*et(a),o=0;else{var c=Math.exp(s/t.k0),l=.5*(c-1/c),h=t.lat0+a/t.k0,u=Math.cos(h);r=Math.sqrt((1-Math.pow(u,2))/(1+Math.pow(l,2))),i=Math.asin(r),Math.sin(h)<0&&(i=-i),l===0&&u===0?o=0:o=P(Math.atan2(l,u)+t.long0,t.over)}return e.x=o,e.y=i,e}function yu(t){let e={...t,en:[],ml0:0};return Y1(e),e}function wi(t){let e=ce(t);if(je(t.parameters,"approx"))return ie("tmerc +approx",yu(e),Mu,_u,Ve);if(e.sphere)throw new Error("Spherical transverse Mercator requires +approx");return ie("etmerc",gu(e),mu,pu,Ve)}var ys={name:"tmerc",aliases:["Fast_Transverse_Mercator","Fast Transverse Mercator","Transverse_Mercator","Transverse Mercator","Gauss Kruger","Gauss_Kruger"],parameters:[...ue,...ht,"approx"],flags:["approx"],create:wi},xs={name:"etmerc",aliases:["Extended_Transverse_Mercator","Extended Transverse Mercator"],parameters:[...ue,...ht,"approx"],flags:["approx"],create:wi};var Ss={name:"utm",aliases:["Universal Transverse Mercator System"],parameters:["zone","south","approx"],flags:["south","approx"],create(t){let e=L(t.parameters,"zone",NaN);if(!Number.isInteger(e)||e<1||e>60)throw new Error("UTM requires an integer +zone from 1 to 60");let r=je(t.parameters,"south");return wi({...t,parameters:{...t.parameters,lat_0:"0",lon_0:String(6*e-183),x_0:"500000",y_0:r?"10000000":"0",k_0:"0.9996"}})}};var ws={name:"geocent",aliases:["Geocentric","geocentric","Geocent"],parameters:[],create({semiMajorAxis:t,semiMinorAxis:e,eccentricitySquared:r}){let n={semiMajorAxis:t,eccentricitySquared:r,semiMinorAxis:e??t*Math.sqrt(1-r)};return{forward(){throw new Error("Geocentric projection requires the 3D pipeline")},inverse(){throw new Error("Geocentric projection requires the 3D pipeline")},forwardInPlace:i=>pi(i,n),inverseInPlace:i=>gi(i,n),forward3D:i=>vh(i,n),inverse3D:i=>Ph(i,n)}}};function z(t){let e=ce(t);return{...e,x0:0,y0:0,lat_ts:Number.isNaN(e.lat_ts)?0:e.lat_ts}}function B(t,e,r,n,i,o){let s=ie(t,r,n,i),a=L(e.parameters,"x_0",0),c=L(e.parameters,"y_0",0);return ze(l=>{o?.(l.x,l.y),s.forwardInPlace(l),l.x+=a,l.y+=c},l=>{l.x-=a,l.y-=c,s.inverseInPlace(l)})}function Mt(t,e=0,r=!1){return(n,i)=>{let o=Math.sin(t.lat0)*Math.sin(i)+Math.cos(t.lat0)*Math.cos(i)*Math.cos(n-t.long0);if(r?o<e-1e-14:o<=e+1e-14)throw new Error("Coordinate is outside the visible projection horizon")}}var Dr=1e-10;function K1(t){var e;if(t.phi1=t.lat1,Math.abs(t.phi1)<Dr)throw new Error;t.es?(t.en=tt(t.es),t.am1=Math.sin(t.phi1),e=Math.cos(t.phi1),t.m1=le(t.phi1,t.am1,e,t.en),t.am1=e/(Math.sqrt(1-t.es*t.am1*t.am1)*t.am1)):Math.abs(t.phi1)+Dr>=E?t.cphi1=0:t.cphi1=1/Math.tan(t.phi1)}function X1(t,e){var r=P(e.x-(t.long0||0),t.over),n=e.y,i,o,s;return o=Math.sin(n),s=Math.cos(n),i=t.am1+t.m1-le(n,o,s,t.en),o=s*r/(i*Math.sqrt(1-t.es*o*o)),e.x=i*Math.sin(o),e.y=t.am1-i*Math.cos(o),e.x=t.a*e.x+(t.x0||0),e.y=t.a*e.y+(t.y0||0),e}function Z1(t,e){e.x=(e.x-(t.x0||0))/t.a,e.y=(e.y-(t.y0||0))/t.a;var r,n,i,o;if(e.y=t.am1-e.y,n=ne(e.x,e.y),t.phi1<0&&(n=-n),o=rt(t.am1+t.m1-n,t.es,t.en),r=Math.abs(o),r<E)r=Math.sin(o),i=n*Math.atan2(Math.sign(t.phi1)*e.x,Math.sign(t.phi1)*e.y)*Math.sqrt(1-t.es*r*r)/Math.cos(o);else if(Math.abs(r-E)<=Dr)i=0;else throw new Error;return e.x=P(i+(t.long0||0),t.over),e.y=We(o),e}function Q1(t,e){var r=P(e.x-(t.long0||0),t.over),n=e.y,i,o;return o=t.cphi1+t.phi1-n,Math.abs(o)>Dr?(i=r*Math.cos(n)/o,e.x=o*Math.sin(i),e.y=t.cphi1-o*Math.cos(i)):e.x=e.y=0,e.x=t.a*e.x+(t.x0||0),e.y=t.a*e.y+(t.y0||0),e}function J1(t,e){e.x=(e.x-(t.x0||0))/t.a,e.y=(e.y-(t.y0||0))/t.a;var r,n;e.y=t.cphi1-e.y;var i=ne(e.x,e.y);if(t.phi1<0&&(i=-i),n=t.cphi1+t.phi1-i,Math.abs(n)>E)throw new Error;return Math.abs(Math.abs(n)-E)<=Dr?r=0:r=i*Math.atan2(Math.sign(t.phi1)*e.x,Math.sign(t.phi1)*e.y)/Math.cos(n),e.x=P(r+(t.long0||0),t.over),e.y=We(n),e}function xu(t,e){return t.es?X1(t,e):Q1(t,e)}function Su(t,e){return t.es?Z1(t,e):J1(t,e)}function wu(t,e={}){let r={...t,phi1:0,en:[],m1:0,am1:0,cphi1:0,...e};return K1(r),r}var Es={name:"bonne",aliases:["Bonne (Werner lat_1=90)"],parameters:["lon_0","x_0","y_0","lat_1"],create(t){let e=z(t);if(!Object.prototype.hasOwnProperty.call(t.parameters,"lat_1")||Math.abs(e.lat1)<1e-10)throw new Error("Bonne requires a nonzero lat_1");let r=wu(e);return B("bonne",t,r,xu,Su)}};function kr(t,e,r){var n=e*r;return t/Math.sqrt(1-n*n)}function eg(t){t.sphere||(t.en=tt(t.es),t.ml0=t.a*le(t.lat0,Math.sin(t.lat0),Math.cos(t.lat0),t.en))}function bs(t,e){var r,n,i=e.x,o=e.y;if(i=P(i-t.long0,t.over),t.sphere)r=t.a*Math.asin(Math.cos(o)*Math.sin(i)),n=t.a*(Math.atan2(Math.tan(o),Math.cos(i))-t.lat0);else{var s=Math.sin(o),a=Math.cos(o),c=kr(t.a,t.e,s),l=Math.tan(o)*Math.tan(o),h=i*Math.cos(o),u=h*h,f=t.es*a*a/(1-t.es),d=t.a*le(o,s,a,t.en);r=c*h*(1-u*l*(1/6+(8-l+8*f)*u/120)),n=d-t.ml0+c*s/a*u*(.5+(5-l+6*f)*u/24)}return e.x=r+t.x0,e.y=n+t.y0,e}function Eu(t,e){e.x-=t.x0,e.y-=t.y0;var r=e.x/t.a,n=e.y/t.a,i,o;if(t.sphere){var s=n+t.lat0;i=Math.asin(Math.sin(s)*Math.cos(r)),o=Math.atan2(Math.tan(r),Math.cos(s))}else{var a=t.ml0/t.a+n,c=rt(a,t.es,t.en);if(Math.abs(Math.abs(c)-E)<=1e-10)return e.x=t.long0,e.y=Math.sign(c)*E,e;var l=kr(t.a,t.e,Math.sin(c)),h=l*l*l/t.a/t.a*(1-t.es),u=Math.pow(Math.tan(c),2),f=r*t.a/l,d=f*f;i=c-l*Math.tan(c)/h*f*f*(.5-(1+3*u)*f*f/24),o=f*(1-d*(u/3-(1+3*u)*u*d/15))/Math.cos(c)}if(!t.sphere){let m=e.x+t.x0,p=e.y+t.y0,g=t.scratch,_=!1;for(let y=0;y<12;y++){Ts(t,o,i);let S=g.x-m,x=g.y-p;if(Math.max(Math.abs(S),Math.abs(x))<1e-7){_=!0;break}let w=1e-7,T=i>E-w?-w:w,v=g.x,C=g.y;Ts(t,o+w,i);let O=(g.x-v)/w,b=(g.y-C)/w;Ts(t,o,i+T);let I=(g.x-v)/T,A=(g.y-C)/T,k=O*A-I*b;if(!Number.isFinite(k)||Math.abs(k)<1e-12||(o-=(A*S-I*x)/k,i-=(O*x-b*S)/k,!Number.isFinite(o)||Math.abs(i)>E))break}if(!_)throw new Error("Cassini inverse did not converge")}return e.x=P(o+t.long0,t.over),e.y=We(i),e}function Ts(t,e,r){t.scratch.x=e+t.long0,t.scratch.y=r,bs(t,t.scratch)}function Tu(t,e={}){let r={...t,en:[],scratch:{x:0,y:0},ml0:0,...e};return eg(r),r}var vs={name:"cass",aliases:["Cassini","Cassini_Soldner"],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=z(t),r=Tu(e);return B("cass",t,r,bs,Eu)}};function bu(t,e){var r=1-(1-t*t)/(2*t)*Math.log((1-t)/(1+t));let n=4*Number.EPSILON*r;if(Math.abs(e)>r+n)return NaN;if(Math.abs(Math.abs(e)-r)<=n)return e<0?-1*E:E;for(var i=Math.asin(.5*e),o,s,a,c,l=0;l<30;l++)if(s=Math.sin(i),a=Math.cos(i),c=t*s,o=Math.pow(1-c*c,2)/(2*a)*(e/(1-t*t)-s/(1-c*c)+.5/t*Math.log((1-c)/(1+c))),i+=o,Math.abs(o)<=1e-10)return i;return NaN}function tg(t){t.sphere||(t.k0=Se(t.e,Math.sin(t.lat_ts),Math.cos(t.lat_ts)))}function vu(t,e){var r=e.x,n=e.y,i,o,s=P(r-t.long0,t.over);if(t.sphere)i=t.x0+t.a*s*Math.cos(t.lat_ts),o=t.y0+t.a*Math.sin(n)/Math.cos(t.lat_ts);else{var a=we(t.e,Math.sin(n));i=t.x0+t.a*t.k0*s,o=t.y0+t.a*a*.5/t.k0}return e.x=i,e.y=o,e}function Pu(t,e){e.x-=t.x0,e.y-=t.y0;var r,n;return t.sphere?(r=P(t.long0+e.x/t.a/Math.cos(t.lat_ts),t.over),n=Math.asin(e.y/t.a*Math.cos(t.lat_ts))):(n=bu(t.e,2*e.y*t.k0/t.a),r=P(t.long0+e.x/(t.a*t.k0),t.over)),e.x=r,e.y=n,e}function Ru(t,e={}){let r={...t,...e};return tg(r),r}var Ps={name:"cea",aliases:[],parameters:["lon_0","x_0","y_0","lat_ts"],create(t){let e=z(t);if(Math.abs(e.lat_ts)>=Math.PI/2)throw new Error("CEA standard parallel must be away from the poles");let r=Ru(e);return B("cea",t,r,vu,Pu)}};var rg=20;function ng(t){t.long0=t.long0||0,t.sphere?(t.n=1,t.m=0,t.es=0,t.C_y=Math.sqrt((t.m+1)/t.n),t.C_x=t.C_y/(t.m+1)):t.en=tt(t.es)}function Ei(t,e){var r,n,i=e.x,o=e.y;if(i=P(i-t.long0,t.over),t.sphere){if(!t.m)o=t.n!==1?Math.asin(t.n*Math.sin(o)):o;else for(var s=t.n*Math.sin(o),a=rg;a;--a){var c=(t.m*o+Math.sin(o)-s)/(t.m+Math.cos(o));if(o-=c,Math.abs(c)<1e-10)break}r=t.a*t.C_x*i*(t.m+Math.cos(o)),n=t.a*t.C_y*o}else{var l=Math.sin(o),h=Math.cos(o);n=t.a*le(o,l,h,t.en),r=t.a*i*h/Math.sqrt(1-t.es*l*l)}return e.x=r,e.y=n,e}function Ti(t,e){var r,n,i,o;return e.x-=t.x0,i=e.x/t.a,e.y-=t.y0,r=e.y/t.a,t.sphere?(r/=t.C_y,i=i/(t.C_x*(t.m+Math.cos(r))),t.m?r=Ee((t.m*r+Math.sin(r))/t.n):t.n!==1&&(r=Ee(Math.sin(r)/t.n)),i=P(i+t.long0,t.over),r=We(r)):(r=rt(e.y/t.a,t.es,t.en),o=Math.abs(r),o<E?(o=Math.sin(r),n=t.long0+e.x*Math.sqrt(1-t.es*o*o)/(t.a*Math.cos(r)),i=P(n,t.over)):o-1e-10<E&&(i=t.long0)),e.x=i,e.y=r,e}function Cu(t,e={}){let r={...t,en:[],n:0,m:0,C_y:0,C_x:0,...e};return ng(r),r}function ig(t){t.sphere=!0,t.b=t.a,t.m=1,t.n=2.5707963267948966,t.es=0,t.C_y=Math.sqrt((t.m+1)/t.n),t.C_x=t.C_y/(t.m+1)}var Au=Ei,Iu=Ti;function Ou(t,e={}){let r={...t,m:0,n:0,C_y:0,C_x:0,en:[],...e};return ig(r),r}var Rs={name:"eck6",aliases:["Eckert_VI"],parameters:["lon_0","x_0","y_0"],create(t){let e=z(t),r=Ou(e);return B("eck6",t,r,Au,Iu)}};var Fr=1.340264,Ur=-.081106,Vr=893e-6,jr=.003796,bi=Math.sqrt(3)/2;function og(t){t.long0=t.long0!==void 0?t.long0:0,t.x0=t.x0!==void 0?t.x0:0,t.y0=t.y0!==void 0?t.y0:0,t.es!==0&&(t.apa=Or(t.es),t.qp=we(t.e,1),t.rqda=Math.sqrt(.5*t.qp))}function Nu(t,e){var r=P(e.x-t.long0,t.over),n=e.y,i=Math.sin(n);t.es!==0&&(i=we(t.e,i)/t.qp);var o=Math.asin(bi*i),s=o*o,a=s*s*s;return e.x=r*Math.cos(o)/(bi*(Fr+3*Ur*s+a*(7*Vr+9*jr*s))),e.y=o*(Fr+Ur*s+a*(Vr+jr*s)),t.es!==0&&(e.x*=t.rqda,e.y*=t.rqda),e.x=t.a*e.x+t.x0,e.y=t.a*e.y+t.y0,e}function Lu(t,e){e.x=(e.x-t.x0)/t.a,e.y=(e.y-t.y0)/t.a,t.es!==0&&(e.x/=t.rqda,e.y/=t.rqda);var r=1e-9,n=12,i=e.y,o,s,a,c,l,h;for(h=0;h<n&&(o=i*i,s=o*o*o,a=i*(Fr+Ur*o+s*(Vr+jr*o))-e.y,c=Fr+3*Ur*o+s*(7*Vr+9*jr*o),i-=l=a/c,!(Math.abs(l)<r));++h);return o=i*i,s=o*o*o,e.x=bi*e.x*(Fr+3*Ur*o+s*(7*Vr+9*jr*o))/Math.cos(i),e.y=Math.asin(Math.sin(i)/bi),t.es!==0&&(e.y=Nr(e.y,t.apa)),e.x=P(e.x+t.long0,t.over),e}function Gu(t,e={}){let r={...t,apa:[],qp:0,rqda:0,...e};return og(r),r}var Cs={name:"eqearth",aliases:["Equal Earth","Equal_Earth"],parameters:["lon_0","x_0","y_0"],create(t){let e=z(t),r=Gu(e);return B("eqearth",t,r,Nu,Lu)}};function sg(t){t.x0=t.x0||0,t.y0=t.y0||0,t.lat0=t.lat0||0,t.long0=t.long0||0}function qu(t,e){var r=e.x,n=e.y,i=P(r-t.long0,t.over),o=t.x0+t.a*i*Math.cos(t.lat0),s=t.y0+t.a*n;return t.t1=o,t.t2=Math.cos(t.lat0),e.x=o,e.y=s,e}function zu(t,e){e.x-=t.x0,e.y-=t.y0;var r=e.y/t.a,n=P(t.long0+e.x/(t.a*Math.cos(t.lat0)),t.over);return e.x=n,e.y=r,e}function Bu(t,e={}){let r={...t,t2:0,t1:0,...e};return sg(r),r}var As={name:"equi",aliases:[],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=z(t);if(Math.abs(e.lat0)>=Math.PI/2)throw new Error("Equirectangular standard parallel must be away from the poles");let r=Bu(e);return B("equi",t,r,qu,zu)}};function ag(t){if(t.flip_axis=t.sweep==="x"?1:0,t.h=Number(t.h),t.radius_g_1=t.h/t.a,t.radius_g_1<=0||t.radius_g_1>1e10)throw new Error;if(t.radius_g=1+t.radius_g_1,t.C=t.radius_g*t.radius_g-1,t.es!==0){var e=1-t.es,r=1/e;t.radius_p=Math.sqrt(e),t.radius_p2=e,t.radius_p_inv2=r,t.shape="ellipse"}else t.radius_p=1,t.radius_p2=1,t.radius_p_inv2=1,t.shape="sphere"}function Du(t,e){var r=e.x,n=e.y,i,o,s,a;if(r=r-t.long0,t.shape==="ellipse"){n=Math.atan(t.radius_p2*Math.tan(n));var c=t.radius_p/ne(t.radius_p*Math.cos(n),Math.sin(n));if(o=c*Math.cos(r)*Math.cos(n),s=c*Math.sin(r)*Math.cos(n),a=c*Math.sin(n),(t.radius_g-o)*o-s*s-a*a*t.radius_p_inv2<0)return e.x=Number.NaN,e.y=Number.NaN,e;i=t.radius_g-o,t.flip_axis?(e.x=t.radius_g_1*Math.atan(s/ne(a,i)),e.y=t.radius_g_1*Math.atan(a/i)):(e.x=t.radius_g_1*Math.atan(s/i),e.y=t.radius_g_1*Math.atan(a/ne(s,i)))}else t.shape==="sphere"&&(i=Math.cos(n),o=Math.cos(r)*i,s=Math.sin(r)*i,a=Math.sin(n),i=t.radius_g-o,t.flip_axis?(e.x=t.radius_g_1*Math.atan(s/ne(a,i)),e.y=t.radius_g_1*Math.atan(a/i)):(e.x=t.radius_g_1*Math.atan(s/i),e.y=t.radius_g_1*Math.atan(a/ne(s,i))));return e.x=e.x*t.a,e.y=e.y*t.a,e}function ku(t,e){var r=-1,n=0,i=0,o,s,a,c;if(e.x=e.x/t.a,e.y=e.y/t.a,t.shape==="ellipse"){t.flip_axis?(i=Math.tan(e.y/t.radius_g_1),n=Math.tan(e.x/t.radius_g_1)*ne(1,i)):(n=Math.tan(e.x/t.radius_g_1),i=Math.tan(e.y/t.radius_g_1)*ne(1,n));var l=i/t.radius_p;if(o=n*n+l*l+r*r,s=2*t.radius_g*r,a=s*s-4*o*t.C,a<0)return e.x=Number.NaN,e.y=Number.NaN,e;c=(-s-Math.sqrt(a))/(2*o),r=t.radius_g+c*r,n*=c,i*=c,e.x=Math.atan2(n,r),e.y=Math.atan(i*Math.cos(e.x)/r),e.y=Math.atan(t.radius_p_inv2*Math.tan(e.y))}else if(t.shape==="sphere"){if(t.flip_axis?(i=Math.tan(e.y/t.radius_g_1),n=Math.tan(e.x/t.radius_g_1)*Math.sqrt(1+i*i)):(n=Math.tan(e.x/t.radius_g_1),i=Math.tan(e.y/t.radius_g_1)*Math.sqrt(1+n*n)),o=n*n+i*i+r*r,s=2*t.radius_g*r,a=s*s-4*o*t.C,a<0)return e.x=Number.NaN,e.y=Number.NaN,e;c=(-s-Math.sqrt(a))/(2*o),r=t.radius_g+c*r,n*=c,i*=c,e.x=Math.atan2(n,r),e.y=Math.atan(i*Math.cos(e.x)/r)}return e.x=e.x+t.long0,e}function Fu(t,e={}){let r={...t,flip_axis:0,sweep:"",h:0,radius_g_1:0,radius_g:0,C:0,radius_p:0,radius_p2:0,radius_p_inv2:0,shape:"",...e};return ag(r),r}var Is={name:"geos",aliases:["Geostationary Satellite View","Geostationary_Satellite"],parameters:["lon_0","x_0","y_0","h","sweep"],create(t){let e=z(t),r=L(t.parameters,"h",NaN);if(!Number.isFinite(r)||r<=0)throw new Error("Geostationary projection requires positive h");let n=t.parameters.sweep||"y";if(!["x","y"].includes(n))throw new Error("Geostationary sweep must be x or y");let i=Fu(e,{h:r,sweep:n});return B("geos",t,i,Du,ku,e.sphere?Mt({...e,lat0:0},1/(1+r/e.a),!0):void 0)}};function cg(t){t.sin_p14=Math.sin(t.lat0),t.cos_p14=Math.cos(t.lat0),t.infinity_dist=1e3*t.a,t.rc=1}function Uu(t,e){var r,n,i,o,s,a,c,l,h=e.x,u=e.y;return i=P(h-t.long0,t.over),r=Math.sin(u),n=Math.cos(u),o=Math.cos(i),a=t.sin_p14*r+t.cos_p14*n*o,s=1,a>0||Math.abs(a)<=1e-10?(c=t.x0+t.a*s*n*Math.sin(i)/a,l=t.y0+t.a*s*(t.cos_p14*r-t.sin_p14*n*o)/a):(c=t.x0+t.infinity_dist*n*Math.sin(i),l=t.y0+t.infinity_dist*(t.cos_p14*r-t.sin_p14*n*o)),e.x=c,e.y=l,e}function Vu(t,e){var r,n,i,o,s,a;return e.x=(e.x-t.x0)/t.a,e.y=(e.y-t.y0)/t.a,e.x/=t.k0,e.y/=t.k0,r=Math.sqrt(e.x*e.x+e.y*e.y),r?(o=Math.atan2(r,t.rc),n=Math.sin(o),i=Math.cos(o),a=Ee(i*t.sin_p14+e.y*n*t.cos_p14/r),s=Math.atan2(e.x*n,r*t.cos_p14*i-e.y*t.sin_p14*n),s=P(t.long0+s,t.over)):(a=t.lat0,s=t.long0),e.x=s,e.y=a,e}function ju(t,e={}){let r={...t,sin_p14:0,cos_p14:0,infinity_dist:0,rc:0,phic0:0,...e};return cg(r),r}var Os={name:"gnom",aliases:[],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=z(t),r=ju(e);return B("gnom",t,r,Uu,Vu,Mt(e))}};function $t(t,e,r){if(Math.abs(e)>E)return Number.NaN;if(e===E)return Number.POSITIVE_INFINITY;if(e===-1*E)return Number.NEGATIVE_INFINITY;var n=t*r;return Math.log(Math.tan((E+e)/2))+t*Math.log((1-n)/(1+n))/2}function Ns(t,e){return 2*Math.atan(t*Math.exp(e))-E}function Wu(t,e){var r=Ns(1,e),n=0,i=0;let o=0;do{if(++o>50)throw new Error("Isometric latitude inverse did not converge");n=r,i=t*Math.sin(n),r=Ns(Math.exp(t*Math.log((1+i)/(1-i))/2),e)}while(Math.abs(r-n)>1e-12);return r}function lg(t){t.k0||(t.k0=1);var e=t.b/t.a;t.e=Math.sqrt(1-e*e),t.lc=t.long0,t.rs=Math.sqrt(1+t.e*t.e*Math.pow(Math.cos(t.lat0),4)/(1-t.e*t.e));var r=Math.sin(t.lat0),n=Math.asin(r/t.rs),i=Math.sin(n);t.cp=$t(0,n,i)-t.rs*$t(t.e,t.lat0,r),t.n2=t.k0*t.a*Math.sqrt(1-t.e*t.e)/(1-t.e*t.e*r*r),t.xs=t.x0,t.ys=t.y0-t.n2*n}function Hu(t,e){var r=e.x,n=e.y,i=t.rs*(r-t.lc),o=t.cp+t.rs*$t(t.e,n,Math.sin(n)),s=Math.asin(Math.sin(i)/Br(o)),a=$t(0,s,Math.sin(s));return e.x=t.xs+t.n2*a,e.y=t.ys+t.n2*Math.atan(bt(o)/Math.cos(i)),e}function $u(t,e){var r=e.x,n=e.y,i=Math.atan(bt((r-t.xs)/t.n2)/Math.cos((n-t.ys)/t.n2)),o=Math.asin(Math.sin((n-t.ys)/t.n2)/Br((r-t.xs)/t.n2)),s=$t(0,o,Math.sin(o));return e.x=t.lc+i/t.rs,e.y=Wu(t.e,(s-t.cp)/t.rs),e}function Yu(t,e={}){let r={...t,lc:0,rs:0,cp:0,n2:0,xs:0,ys:0,...e};return lg(r),r}var Ls={name:"gstmerc",aliases:["gstmerg"],parameters:["lon_0","x_0","y_0","lat_0","k","k_0"],create(t){let e=z(t),r=Yu(e);return B("gstmerc",t,r,Hu,$u)}};function hg(t){t.a=6377397155e-3,t.es=.006674372230614,t.e=Math.sqrt(t.es),t.s45=.785398163397448,t.s90=2*t.s45,t.fi0=t.lat0,t.e2=t.es,t.e=Math.sqrt(t.e2),t.alfa=Math.sqrt(1+t.e2*Math.pow(Math.cos(t.fi0),4)/(1-t.e2)),t.uq=1.04216856380474,t.u0=Math.asin(Math.sin(t.fi0)/t.alfa),t.g=Math.pow((1+t.e*Math.sin(t.fi0))/(1-t.e*Math.sin(t.fi0)),t.alfa*t.e/2),t.k=Math.tan(t.u0/2+t.s45)/Math.pow(Math.tan(t.fi0/2+t.s45),t.alfa)*t.g,t.k1=t.k0,t.n0=t.a*Math.sqrt(1-t.e2)/(1-t.e2*Math.pow(Math.sin(t.fi0),2)),t.s0=1.37008346281555,t.n=Math.sin(t.s0),t.ro0=t.k1*t.n0/Math.tan(t.s0),t.ad=t.s90-t.uq}function Ku(t,e){var r,n,i,o,s,a,c,l=e.x,h=e.y,u=P(l-t.long0,t.over);return r=Math.pow((1+t.e*Math.sin(h))/(1-t.e*Math.sin(h)),t.alfa*t.e/2),n=2*(Math.atan(t.k*Math.pow(Math.tan(h/2+t.s45),t.alfa)/r)-t.s45),i=-u*t.alfa,o=Math.asin(Math.cos(t.ad)*Math.sin(n)+Math.sin(t.ad)*Math.cos(n)*Math.cos(i)),s=Math.asin(Math.cos(n)*Math.sin(i)/Math.cos(o)),a=t.n*s,c=t.ro0*Math.pow(Math.tan(t.s0/2+t.s45),t.n)/Math.pow(Math.tan(o/2+t.s45),t.n),e.y=c*Math.cos(a)/1,e.x=c*Math.sin(a)/1,t.czech||(e.y*=-1,e.x*=-1),e}function Xu(t,e){var r,n,i,o,s,a,c,l,h=e.x;e.x=e.y,e.y=h,t.czech||(e.y*=-1,e.x*=-1),a=Math.sqrt(e.x*e.x+e.y*e.y),s=Math.atan2(e.y,e.x),o=s/Math.sin(t.s0),i=2*(Math.atan(Math.pow(t.ro0/a,1/t.n)*Math.tan(t.s0/2+t.s45))-t.s45),r=Math.asin(Math.cos(t.ad)*Math.sin(i)-Math.sin(t.ad)*Math.cos(i)*Math.cos(o)),n=Math.asin(Math.cos(i)*Math.sin(o)/Math.cos(r)),e.x=t.long0-n/t.alfa,c=r,l=0;var u=0;do e.y=2*(Math.atan(Math.pow(t.k,-1/t.alfa)*Math.pow(Math.tan(r/2+t.s45),1/t.alfa)*Math.pow((1+t.e*Math.sin(c))/(1-t.e*Math.sin(c)),t.e/2))-t.s45),Math.abs(c-e.y)<1e-10&&(l=1),c=e.y,u+=1;while(l===0&&u<15);return u>=15?null:e}function Zu(t,e={}){let r={...t,s45:0,s90:0,fi0:0,e2:0,alfa:0,uq:0,u0:0,g:0,k:0,k1:0,n0:0,s0:0,n:0,ro0:0,ad:0,czech:!1,...e};return hg(r),r}var Gs={name:"krovak",aliases:["Krovak","Krovak Modified","Krovak (North Orientated)","Krovak Modified (North Orientated)"],parameters:["lon_0","x_0","y_0","lat_0","k","k_0","czech","alpha","lat_ts"],flags:["czech"],create(t){let e=L(t.parameters,"alpha",30.28813972222222),r=L(t.parameters,"lat_ts",78.5);if(![30.28813972222222,30.28813975277778].some(o=>Math.abs(e-o)<=1e-10))throw new Error("Krovak requires its fixed cone-axis co-latitude");if(Math.abs(r-78.5)>1e-10)throw new Error("Krovak requires its fixed 78.5 degree pseudo standard parallel");let n=z(t);n.lat0=mt(t.parameters,"lat_0",49.5),n.long0=mt(t.parameters,"lon_0",24.83333333333333),n.k0=L(t.parameters,"k_0",L(t.parameters,"k",.9999));let i=Zu(n,{czech:je(t.parameters,"czech")});return B("krovak",t,i,Ku,Xu)}};function Qu(t,e){var r=e.x,n=e.y,i=P(r-t.long0,t.over),o=t.x0+t.a*i,s=t.y0+t.a*Math.log(Math.tan(Math.PI/4+n/2.5))*1.25;return e.x=o,e.y=s,e}function Ju(t,e){e.x-=t.x0,e.y-=t.y0;var r=P(t.long0+e.x/t.a,t.over),n=2.5*(Math.atan(Math.exp(.8*e.y/t.a))-Math.PI/4);return e.x=r,e.y=n,e}function ef(t,e={}){let r={...t,...e};return r}var qs={name:"mill",aliases:["Miller_Cylindrical"],parameters:["lon_0","x_0","y_0"],create(t){let e=z(t),r=ef(e);return B("mill",t,r,Qu,Ju)}};function ug(t){t.x0=t.x0!==void 0?t.x0:0,t.y0=t.y0!==void 0?t.y0:0,t.long0=t.long0!==void 0?t.long0:0}function tf(t,e){var r=e.x,n=e.y,i=P(r-t.long0,t.over),o=n,s=Math.PI*Math.sin(n);for(let h=0;h<50;h++){if(Math.abs(Math.abs(n)-Math.PI/2)<1e-10){o=Math.sign(n)*Math.PI;break}var a=-(o+Math.sin(o)-s)/(1+Math.cos(o));if(o+=a,h===49)throw new Error("Mollweide forward did not converge");if(Math.abs(a)<1e-10)break}o/=2,Math.PI/2-Math.abs(n)<1e-10&&(i=0);var c=.900316316158*t.a*i*Math.cos(o)+t.x0,l=1.4142135623731*t.a*Math.sin(o)+t.y0;return e.x=c,e.y=l,e}function rf(t,e){var r,n;e.x-=t.x0,e.y-=t.y0,n=e.y/(1.4142135623731*t.a),Math.abs(n)>.999999999999&&(n=Math.sign(n)*.999999999999),r=Math.asin(n);var i=P(t.long0+e.x/(.900316316158*t.a*Math.cos(r)),t.over);!t.over&&i<-Math.PI&&(i=-Math.PI),!t.over&&i>Math.PI&&(i=Math.PI),n=(2*r+Math.sin(2*r))/Math.PI,Math.abs(n)>1&&(n=Math.sign(n));var o=Math.asin(n);return e.x=i,e.y=o,e}function nf(t,e={}){let r={...t,...e};return ug(r),r}var zs={name:"moll",aliases:["Mollweide"],parameters:["lon_0","x_0","y_0"],create(t){let e=z(t),r=nf(e);return B("moll",t,r,tf,rf)}};function fg(t){t.A=[],t.A[1]=.6399175073,t.A[2]=-.1358797613,t.A[3]=.063294409,t.A[4]=-.02526853,t.A[5]=.0117879,t.A[6]=-.0055161,t.A[7]=.0026906,t.A[8]=-.001333,t.A[9]=67e-5,t.A[10]=-34e-5,t.B_re=[],t.B_im=[],t.B_re[1]=.7557853228,t.B_im[1]=0,t.B_re[2]=.249204646,t.B_im[2]=.003371507,t.B_re[3]=-.001541739,t.B_im[3]=.04105856,t.B_re[4]=-.10162907,t.B_im[4]=.01727609,t.B_re[5]=-.26623489,t.B_im[5]=-.36249218,t.B_re[6]=-.6870983,t.B_im[6]=-1.1651967,t.C_re=[],t.C_im=[],t.C_re[1]=1.3231270439,t.C_im[1]=0,t.C_re[2]=-.577245789,t.C_im[2]=-.007809598,t.C_re[3]=.508307513,t.C_im[3]=-.112208952,t.C_re[4]=-.15094762,t.C_im[4]=.18200602,t.C_re[5]=1.01418179,t.C_im[5]=1.64497696,t.C_re[6]=1.9660549,t.C_im[6]=2.5127645,t.D=[],t.D[1]=1.5627014243,t.D[2]=.5185406398,t.D[3]=-.03333098,t.D[4]=-.1052906,t.D[5]=-.0368594,t.D[6]=.007317,t.D[7]=.0122,t.D[8]=.00394,t.D[9]=-.0013}function of(t,e){var r,n=e.x,i=e.y,o=i-t.lat0,s=n-t.long0,a=o/ls*1e-5,c=s,l=1,h=0;for(r=1;r<=10;r++)l=l*a,h=h+t.A[r]*l;var u=h,f=c,d=1,m=0,p,g,_=0,y=0;for(r=1;r<=6;r++)p=d*u-m*f,g=m*u+d*f,d=p,m=g,_=_+t.B_re[r]*d-t.B_im[r]*m,y=y+t.B_im[r]*d+t.B_re[r]*m;return e.x=y*t.a+t.x0,e.y=_*t.a+t.y0,e}function sf(t,e){var r,n=e.x,i=e.y,o=n-t.x0,s=i-t.y0,a=s/t.a,c=o/t.a,l=1,h=0,u,f,d=0,m=0;for(r=1;r<=6;r++)u=l*a-h*c,f=h*a+l*c,l=u,h=f,d=d+t.C_re[r]*l-t.C_im[r]*h,m=m+t.C_im[r]*l+t.C_re[r]*h;for(var p=0;p<t.iterations;p++){var g=d,_=m,y,S,x=a,w=c;for(r=2;r<=6;r++)y=g*d-_*m,S=_*d+g*m,g=y,_=S,x=x+(r-1)*(t.B_re[r]*g-t.B_im[r]*_),w=w+(r-1)*(t.B_im[r]*g+t.B_re[r]*_);g=1,_=0;var T=t.B_re[1],v=t.B_im[1];for(r=2;r<=6;r++)y=g*d-_*m,S=_*d+g*m,g=y,_=S,T=T+r*(t.B_re[r]*g-t.B_im[r]*_),v=v+r*(t.B_im[r]*g+t.B_re[r]*_);var C=T*T+v*v;d=(x*T+w*v)/C,m=(w*T-x*v)/C}var O=d,b=m,I=1,A=0;for(r=1;r<=9;r++)I=I*O,A=A+t.D[r]*I;var k=t.lat0+A*ls*1e5,q=t.long0+b;return e.x=q,e.y=k,e}function af(t,e={}){let r={...t,A:[],B_re:[],B_im:[],C_re:[],C_im:[],D:[],iterations:1,...e};return fg(r),r}var Bs={name:"nzmg",aliases:["New_Zealand_Map_Grid"],parameters:["lon_0","x_0","y_0","lat_0","iterations"],create(t){let e=z(t),r=L(t.parameters,"iterations",1);if(!Number.isInteger(r)||r<0||r>10)throw new Error("NZMG iterations must be an integer from 0 to 10");if(!Object.prototype.hasOwnProperty.call(t.parameters,"lat_0")||!Object.prototype.hasOwnProperty.call(t.parameters,"lon_0"))throw new Error("NZMG requires lat_0 and lon_0");let n=af(e,{iterations:r});return B("nzmg",t,n,of,sf)}};var Yt=1e-7;function dg(t){return t.no_uoff||t.no_off||["hotineobliquemercator","hotineobliquemercatorvarianta","hotineobliquemercatorazimuthnaturalorigin"].includes(t.projName.toLowerCase().replace(/[ _-]/g,""))}function mg(t){var e,r,n,i,o,s,a,c,l,h,u=0,f,d=0,m=0,p=0,g=0,_=0,y=0;t.k0||(t.k0=1),t.no_off=dg(t),t.no_rot=t.no_rot;var S=!1;Number.isFinite(t.alpha)&&(S=!0);var x=!1;if(Number.isFinite(t.rectified_grid_angle)&&(x=!0),S&&(y=t.alpha),x&&(u=t.rectified_grid_angle,S||(y=0,S=!0)),S||x)d=t.longc;else if(m=t.long1,g=t.lat1,p=t.long2,_=t.lat2,Math.abs(g-_)<=Yt||Math.abs(g)<=Yt||Math.abs(Math.abs(g)-E)<=Yt||Math.abs(Math.abs(t.lat0)-E)<=Yt||Math.abs(Math.abs(_)-E)<=Yt)throw new Error;var w=1-t.es;if(r=Math.sqrt(w),Math.abs(t.lat0)>1e-10?(c=Math.sin(t.lat0),n=Math.cos(t.lat0),e=1-t.es*c*c,t.B=n*n,t.B=Math.sqrt(1+t.es*t.B*t.B/w),t.A=t.B*t.k0*r/e,i=t.B*r/(n*Math.sqrt(e)),o=i*i-1,o<=0?o=0:(o=Math.sqrt(o),t.lat0<0&&(o=-o)),t.E=o+=i,t.E*=Math.pow(Ae(t.e,t.lat0,c),t.B)):(t.B=1/r,t.A=t.k0,t.E=i=o=1),S||x){S?(f=Math.asin(Math.sin(y)/i),x||(u=y)):(f=u,y=Math.asin(i*Math.sin(f)));let T=.5*(o-1/o)*Math.tan(f);i>1&&Math.abs(Math.cos(y))<=8*Number.EPSILON?T=Math.sign(t.lat0)*Math.sign(Math.sin(y)):Math.abs(T)>1&&Math.abs(T)<=1+8*Number.EPSILON&&(T=Math.sign(T)),t.lam0=d-Math.asin(T)/t.B}else s=Math.pow(Ae(t.e,g,Math.sin(g)),t.B),a=Math.pow(Ae(t.e,_,Math.sin(_)),t.B),o=t.E/s,l=(a-s)/(a+s),h=t.E*t.E,h=(h-a*s)/(h+a*s),e=m-p,e<-Math.PI?p-=gt:e>Math.PI&&(p+=gt),t.lam0=P(.5*(m+p)-Math.atan(h*Math.tan(.5*t.B*(m-p))/l)/t.B,t.over),f=Math.atan(2*Math.sin(t.B*P(m-t.lam0,t.over))/(o-1/o)),u=y=Math.asin(i*Math.sin(f));t.singam=Math.sin(f),t.cosgam=Math.cos(f),t.sinrot=Math.sin(u),t.cosrot=Math.cos(u),t.rB=1/t.B,t.ArB=t.A*t.rB,t.BrA=1/t.ArB,t.no_off?t.u_0=0:(t.u_0=Math.abs(t.ArB*Math.atan(Math.sqrt(i*i-1)/Math.cos(y))),t.lat0<0&&(t.u_0=-t.u_0)),o=.5*f,t.v_pole_n=t.ArB*Math.log(Math.tan(F-o)),t.v_pole_s=t.ArB*Math.log(Math.tan(F+o))}function cf(t,e){var r=e,n,i,o,s,a,c,l,h;if(e.x=e.x-t.lam0,Math.abs(Math.abs(e.y)-E)>1e-10){if(a=t.E/Math.pow(Ae(t.e,e.y,Math.sin(e.y)),t.B),c=1/a,n=.5*(a-c),i=.5*(a+c),s=Math.sin(t.B*e.x),o=(n*t.singam-s*t.cosgam)/i,Math.abs(Math.abs(o)-1)<1e-10)throw new Error;h=.5*t.ArB*Math.log((1-o)/(1+o)),c=Math.cos(t.B*e.x),Math.abs(c)<Yt?l=t.A*e.x:l=t.ArB*Math.atan2(n*t.cosgam+s*t.singam,c)}else h=e.y>0?t.v_pole_n:t.v_pole_s,l=t.ArB*e.y;return t.no_rot?(r.x=l,r.y=h):(l-=t.u_0,r.x=h*t.cosrot+l*t.sinrot,r.y=l*t.cosrot-h*t.sinrot),r.x=t.a*r.x+t.x0,r.y=t.a*r.y+t.y0,r}function lf(t,e){var r,n,i,o,s,a,c,l=e;if(e.x=(e.x-t.x0)*(1/t.a),e.y=(e.y-t.y0)*(1/t.a),t.no_rot?(n=e.y,r=e.x):(n=e.x*t.cosrot-e.y*t.sinrot,r=e.y*t.cosrot+e.x*t.sinrot+t.u_0),i=Math.exp(-t.BrA*n),o=.5*(i-1/i),s=.5*(i+1/i),a=Math.sin(t.BrA*r),c=(a*t.cosgam+o*t.singam)/s,Math.abs(Math.abs(c)-1)<1e-10)l.x=0,l.y=c<0?-E:E;else{if(l.y=t.E/Math.sqrt((1+c)/(1-c)),l.y=Tt(t.e,Math.pow(l.y,1/t.B)),l.y===1/0)throw new Error;l.x=-t.rB*Math.atan2(o*t.cosgam-a*t.singam,Math.cos(t.BrA*r))}return l.x+=t.lam0,l}function hf(t,e={}){let r={...t,no_off:!1,no_rot:!1,alpha:NaN,rectified_grid_angle:NaN,longc:0,long1:0,long2:0,B:0,A:0,E:0,lam0:0,singam:0,cosgam:0,sinrot:0,cosrot:0,rB:0,ArB:0,BrA:0,u_0:0,v_pole_n:0,v_pole_s:0,no_uoff:!1,projName:"",...e};return mg(r),r}var Ds={name:"omerc",aliases:["Hotine_Oblique_Mercator","Hotine Oblique Mercator","Hotine_Oblique_Mercator_variant_A","Hotine_Oblique_Mercator_Variant_B","Hotine_Oblique_Mercator_Azimuth_Natural_Origin","Hotine_Oblique_Mercator_Two_Point_Natural_Origin","Hotine_Oblique_Mercator_Azimuth_Center","Oblique_Mercator"],parameters:["lon_0","x_0","y_0","lat_0","k","k_0","alpha","gamma","lonc","lon_1","lon_2","lat_1","lat_2","no_off","no_uoff","no_rot"],flags:["no_off","no_uoff","no_rot"],create(t){let e=z(t);if(Math.abs(e.lat0)>=Math.PI/2)throw new Error("Oblique Mercator origin must be away from the poles");let n=Object.prototype.hasOwnProperty.call(t.parameters,"alpha")||Object.prototype.hasOwnProperty.call(t.parameters,"gamma")?["lonc"]:["lon_1","lat_1","lon_2","lat_2"];for(let o of n)if(!Object.prototype.hasOwnProperty.call(t.parameters,o))throw new Error("Oblique Mercator requires "+o);let i=hf(e,{projName:t.parameters.proj||"omerc",alpha:L(t.parameters,"alpha",NaN)*Math.PI/180,rectified_grid_angle:L(t.parameters,"gamma",NaN)*Math.PI/180,longc:L(t.parameters,"lonc",0)*Math.PI/180,long1:L(t.parameters,"lon_1",0)*Math.PI/180,long2:L(t.parameters,"lon_2",0)*Math.PI/180,no_off:je(t.parameters,"no_off"),no_uoff:je(t.parameters,"no_uoff"),no_rot:je(t.parameters,"no_rot")});return B("omerc",t,i,cf,lf)}};function pg(t){t.sin_p14=Math.sin(t.lat0||0),t.cos_p14=Math.cos(t.lat0||0)}function uf(t,e){var r,n,i,o,s,a,c,l,h=e.x,u=e.y;return i=P(h-(t.long0||0),t.over),r=Math.sin(u),n=Math.cos(u),o=Math.cos(i),a=t.sin_p14*r+t.cos_p14*n*o,s=1,(a>0||Math.abs(a)<=1e-10)&&(c=(t.x0||0)+t.a*s*n*Math.sin(i),l=(t.y0||0)+t.a*s*(t.cos_p14*r-t.sin_p14*n*o)),e.x=c,e.y=l,e}function ff(t,e){var r,n,i,o,s,a,c,l,h;if(e.x-=t.x0||0,e.y-=t.y0||0,r=Math.sqrt(e.x*e.x+e.y*e.y),r>t.a*(1+1e-14))throw new Error("Coordinate is outside the orthographic disk");return n=Ee(r/t.a),i=Math.sin(n),o=Math.cos(n),l=t.long0||0,h=t.lat0||0,a=l,Math.abs(r)<=1e-10?(c=h,e.x=a,e.y=c,e):(c=Ee(o*t.sin_p14+e.y*i*t.cos_p14/r),s=Math.abs(h)-E,Math.abs(s)<=1e-10?(h>=0?a=P(l+Math.atan2(e.x,-e.y),t.over):a=P(l-Math.atan2(-e.x,e.y),t.over),e.x=a,e.y=c,e):(a=P(l+Math.atan2(e.x*i,r*t.cos_p14*o-e.y*t.sin_p14*i),t.over),e.x=a,e.y=c,e))}function df(t,e={}){let r={...t,sin_p14:0,cos_p14:0,...e};return pg(r),r}var ks={name:"ortho",aliases:[],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=z(t),r=df(e);return B("ortho",t,r,uf,ff,Mt(e,0,!0))}};var mf=20;function gg(t){t.temp=t.b/t.a,t.es=1-Math.pow(t.temp,2),t.e=Math.sqrt(t.es),t.e0=Lr(t.es),t.e1=Gr(t.es),t.e2=qr(t.es),t.e3=zr(t.es),t.ml0=t.a*He(t.e0,t.e1,t.e2,t.e3,t.lat0)}function pf(t,e){var r=e.x,n=e.y,i,o,s,a=P(r-t.long0,t.over);if(s=a*Math.sin(n),t.sphere)Math.abs(n)<=1e-10?(i=t.a*a,o=-1*t.a*t.lat0):(i=t.a*Math.sin(s)/Math.tan(n),o=t.a*(We(n-t.lat0)+(1-Math.cos(s))/Math.tan(n)));else if(Math.abs(n)<=1e-10)i=t.a*a,o=-1*t.ml0;else{var c=kr(t.a,t.e,Math.sin(n))/Math.tan(n);i=c*Math.sin(s),o=t.a*He(t.e0,t.e1,t.e2,t.e3,n)-t.ml0+c*(1-Math.cos(s))}return e.x=i+t.x0,e.y=o+t.y0,e}function gf(t,e){var r,n,i,o,s,a,c,l,h;if(i=e.x-t.x0,o=e.y-t.y0,t.sphere)if(Math.abs(o+t.a*t.lat0)<=1e-10)r=P(i/t.a+t.long0,t.over),n=0;else{a=t.lat0+o/t.a,c=i*i/t.a/t.a+a*a,l=a;var u;for(s=mf;s;--s)if(u=Math.tan(l),h=-1*(a*(l*u+1)-l-.5*(l*l+c)*u)/((l-a)/u-1),l+=h,Math.abs(h)<=1e-10){n=l;break}r=P(t.long0+Math.asin(i*Math.tan(l)/t.a)/Math.sin(n),t.over)}else if(Math.abs(o+t.ml0)<=1e-10)n=0,r=P(t.long0+i/t.a,t.over);else{a=(t.ml0+o)/t.a,c=i*i/t.a/t.a+a*a,l=a;var f,d,m,p,g;for(s=mf;s;--s)if(g=t.e*Math.sin(l),f=Math.sqrt(1-g*g)*Math.tan(l),d=t.a*He(t.e0,t.e1,t.e2,t.e3,l),m=t.e0-2*t.e1*Math.cos(2*l)+4*t.e2*Math.cos(4*l)-6*t.e3*Math.cos(6*l),p=d/t.a,h=(a*(f*p+1)-p-.5*f*(p*p+c))/(t.es*Math.sin(2*l)*(p*p+c-2*a*p)/(4*f)+(a-p)*(f*m-2/Math.sin(2*l))-m),l-=h,Math.abs(h)<=1e-10){n=l;break}f=Math.sqrt(1-t.es*Math.pow(Math.sin(n),2))*Math.tan(n),r=P(t.long0+Math.asin(i*f/t.a)/Math.sin(n),t.over)}return e.x=r,e.y=n,e}function Mf(t,e={}){let r={...t,temp:0,e0:0,e1:0,e2:0,e3:0,ml0:0,...e};return gg(r),r}var Fs={name:"poly",aliases:["Polyconic","American_Polyconic"],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=z(t),r=Mf(e);return B("poly",t,r,pf,gf)}};var Z={FRONT:1,RIGHT:2,BACK:3,LEFT:4,TOP:5,BOTTOM:6},V={AREA_0:1,AREA_1:2,AREA_2:3,AREA_3:4};function Mg(t){t.x0=t.x0||0,t.y0=t.y0||0,t.lat0=t.lat0||0,t.long0=t.long0||0,t.lat_ts=t.lat_ts||0,t.lat0>=E-F/2?t.face=Z.TOP:t.lat0<=-(E-F/2)?t.face=Z.BOTTOM:Math.abs(t.long0)<=F?t.face=Z.FRONT:Math.abs(t.long0)<=E+F?t.face=t.long0>0?Z.RIGHT:Z.LEFT:t.face=Z.BACK,t.es!==0&&(t.one_minus_f=1-(t.a-t.b)/t.a,t.one_minus_f_squared=t.one_minus_f*t.one_minus_f)}function _f(t,e){var r=e,n,i,o,s,a,c,l=0;if(e.x-=t.long0,t.es!==0?n=Math.atan(t.one_minus_f_squared*Math.tan(e.y)):n=e.y,i=e.x,t.face===Z.TOP)s=E-n,i>=F&&i<=E+F?(l=V.AREA_0,o=i-E):i>E+F||i<=-(E+F)?(l=V.AREA_1,o=i>0?i-X:i+X):i>-(E+F)&&i<=-F?(l=V.AREA_2,o=i+E):(l=V.AREA_3,o=i);else if(t.face===Z.BOTTOM)s=E+n,i>=F&&i<=E+F?(l=V.AREA_0,o=-i+E):i<F&&i>=-F?(l=V.AREA_1,o=-i):i<-F&&i>=-(E+F)?(l=V.AREA_2,o=-i-E):(l=V.AREA_3,o=i>0?-i+X:-i-X);else{var h,u,f,d,m,p,g;t.face===Z.RIGHT?i=Kt(i,+E):t.face===Z.BACK?i=Kt(i,+X):t.face===Z.LEFT&&(i=Kt(i,-E)),d=Math.sin(n),m=Math.cos(n),p=Math.sin(i),g=Math.cos(i),h=m*g,u=m*p,f=d,t.face===Z.FRONT?(s=Math.acos(h),o=vi(s,f,u)):t.face===Z.RIGHT?(s=Math.acos(u),o=vi(s,f,-h)):t.face===Z.BACK?(s=Math.acos(-h),o=vi(s,f,-u)):t.face===Z.LEFT?(s=Math.acos(-u),o=vi(s,f,h)):s=o=0,Math.abs(o)<=F?l=V.AREA_0:o>F&&o<=E+F?(l=V.AREA_1,o-=E):o>E+F||o<=-(E+F)?(l=V.AREA_2,o=o>=0?o-X:o+X):(l=V.AREA_3,o+=E)}return c=Math.atan(12/X*(o+Math.acos(Math.sin(o)*Math.cos(F))-E)),a=Math.sqrt((1-Math.cos(s))/(Math.cos(c)*Math.cos(c))/(1-Math.cos(Math.atan(1/Math.cos(o))))),l===V.AREA_1?c+=E:l===V.AREA_2?c+=X:l===V.AREA_3&&(c+=1.5*X),r.x=a*Math.cos(c),r.y=a*Math.sin(c),r.x=r.x*t.a+t.x0,r.y=r.y*t.a+t.y0,e}function yf(t,e){var r=0,n=0,i,o,s,a,c,l,h,u,f,d=0;if(e.x=(e.x-t.x0)/t.a,e.y=(e.y-t.y0)/t.a,o=Math.atan(Math.sqrt(e.x*e.x+e.y*e.y)),i=Math.atan2(e.y,e.x),e.x>=0&&e.x>=Math.abs(e.y)?d=V.AREA_0:e.y>=0&&e.y>=Math.abs(e.x)?(d=V.AREA_1,i-=E):e.x<0&&-e.x>=Math.abs(e.y)?(d=V.AREA_2,i=i<0?i+X:i-X):(d=V.AREA_3,i+=E),f=X/12*Math.tan(i),c=Math.sin(f)/(Math.cos(f)-1/Math.sqrt(2)),l=Math.atan(c),s=Math.cos(i),a=Math.tan(o),h=1-s*s*a*a*(1-Math.cos(Math.atan(1/Math.cos(l)))),h<-1?h=-1:h>1&&(h=1),t.face===Z.TOP)u=Math.acos(h),n=E-u,d===V.AREA_0?r=l+E:d===V.AREA_1?r=l<0?l+X:l-X:d===V.AREA_2?r=l-E:r=l;else if(t.face===Z.BOTTOM)u=Math.acos(h),n=u-E,d===V.AREA_0?r=-l+E:d===V.AREA_1?r=-l:d===V.AREA_2?r=-l-E:r=l<0?-l-X:-l+X;else{var m,p,g;m=h,f=m*m,f>=1?g=0:g=Math.sqrt(1-f)*Math.sin(l),f+=g*g,f>=1?p=0:p=Math.sqrt(1-f),d===V.AREA_1?(f=p,p=-g,g=f):d===V.AREA_2?(p=-p,g=-g):d===V.AREA_3&&(f=p,p=g,g=-f),t.face===Z.RIGHT?(f=m,m=-p,p=f):t.face===Z.BACK?(m=-m,p=-p):t.face===Z.LEFT&&(f=m,m=p,p=-f),n=Math.acos(-g)-E,r=Math.atan2(p,m),t.face===Z.RIGHT?r=Kt(r,-E):t.face===Z.BACK?r=Kt(r,-X):t.face===Z.LEFT&&(r=Kt(r,+E))}if(t.es!==0){var _,y,S;_=n<0?1:0,y=Math.tan(n),S=t.b/Math.sqrt(y*y+t.one_minus_f_squared),n=Math.atan(Math.sqrt(t.a*t.a-S*S)/(t.one_minus_f*S)),_&&(n=-n)}return r+=t.long0,e.x=r,e.y=n,e}function vi(t,e,r){return t<1e-10?0:Math.atan2(e,r)}function Kt(t,e){var r=t+e;return r<-X?r+=gt:r>+X&&(r-=gt),r}function xf(t,e={}){let r={...t,face:0,one_minus_f:0,one_minus_f_squared:0,...e};return Mg(r),r}var Us={name:"qsc",aliases:["Quadrilateralized Spherical Cube","Quadrilateralized_Spherical_Cube"],parameters:["lon_0","x_0","y_0","lat_0"],create(t){let e=z(t),r=xf(e);return B("qsc",t,r,_f,yf)}};var Xt=[[1,22199e-21,-715515e-10,31103e-10],[.9986,-482243e-9,-24897e-9,-13309e-10],[.9954,-83103e-8,-448605e-10,-986701e-12],[.99,-.00135364,-59661e-9,36777e-10],[.9822,-.00167442,-449547e-11,-572411e-11],[.973,-.00214868,-903571e-10,18736e-12],[.96,-.00305085,-900761e-10,164917e-11],[.9427,-.00382792,-653386e-10,-26154e-10],[.9216,-.00467746,-10457e-8,481243e-11],[.8962,-.00536223,-323831e-10,-543432e-11],[.8679,-.00609363,-113898e-9,332484e-11],[.835,-.00698325,-640253e-10,934959e-12],[.7986,-.00755338,-500009e-10,935324e-12],[.7597,-.00798324,-35971e-9,-227626e-11],[.7186,-.00851367,-701149e-10,-86303e-10],[.6732,-.00986209,-199569e-9,191974e-10],[.6213,-.010418,883923e-10,624051e-11],[.5722,-.00906601,182e-6,624051e-11],[.5322,-.00677797,275608e-9,624051e-11]],_t=[[-520417e-23,.0124,121431e-23,-845284e-16],[.062,.0124,-126793e-14,422642e-15],[.124,.0124,507171e-14,-160604e-14],[.186,.0123999,-190189e-13,600152e-14],[.248,.0124002,710039e-13,-224e-10],[.31,.0123992,-264997e-12,835986e-13],[.372,.0124029,988983e-12,-311994e-12],[.434,.0123893,-369093e-11,-435621e-12],[.4958,.0123198,-102252e-10,-345523e-12],[.5571,.0121916,-154081e-10,-582288e-12],[.6176,.0119938,-241424e-10,-525327e-12],[.6769,.011713,-320223e-10,-516405e-12],[.7346,.0113541,-397684e-10,-609052e-12],[.7903,.0109107,-489042e-10,-104739e-11],[.8435,.0103431,-64615e-9,-140374e-14],[.8936,.00969686,-64636e-9,-8547e-9],[.9394,.00840947,-192841e-9,-42106e-10],[.9761,.00616527,-256e-6,-42106e-10],[1,.00328947,-319159e-9,-42106e-10]];Xt=Xt.map(t=>t.map(Math.fround));_t=_t.map(t=>t.map(Math.fround));var Sf=.8487,wf=1.3523,Ef=cs/5,_g=1/Ef,vt=18,Pi=function(t,e){return t[0]+e*(t[1]+e*(t[2]+e*t[3]))},yg=function(t,e){return t[1]+e*(2*t[2]+e*3*t[3])};function xg(t,e,r,n,i){for(var o=r;i;--i){var s=(Pi(t,o)-e)/yg(t,o);if(o-=s,Math.abs(s)<n)break}return o}function Sg(t){t.x0=t.x0||0,t.y0=t.y0||0,t.long0=t.long0||0,t.es=0}function Tf(t,e){var r=P(e.x-t.long0,t.over),n=Math.abs(e.y),i=Math.floor(n*Ef+1e-15);i<0?i=0:i>=vt&&(i=vt),n=cs*(n-_g*i);var o=Pi(Xt[i],n)*r,s=Pi(_t[i],n);return e.y<0&&(s=-s),e.x=o*t.a*Sf+t.x0,e.y=s*t.a*wf+t.y0,e}function bf(t,e){var r=e.y,n=e;n.x=(n.x-t.x0)/(t.a*Sf),n.y=Math.abs(r-t.y0)/(t.a*wf);for(let a=0;a<=vt;a++)if(Math.abs(n.y-_t[a][0])<=8*Number.EPSILON)return n.x=P(n.x/Xt[a][0]+t.long0,t.over),n.y=(r<t.y0?-1:1)*a*5*as,n;if(n.y>=1)n.x/=Xt[vt][0],n.y=r<0?-E:E;else{var i=Math.floor(n.y*vt);for(i<0?i=0:i>=vt&&(i=vt-1);;)if(_t[i][0]>n.y)--i;else if(_t[i+1][0]<=n.y)++i;else break;var o=_t[i],s=5*(n.y-o[0])/(_t[i+1][0]-o[0]);s=xg(o,n.y,s,1e-10,100),n.x/=Pi(Xt[i],s),n.y=(5*i+s)*as,r<0&&(n.y=-n.y)}return n.x=P(n.x+t.long0,t.over),n}function vf(t,e={}){let r={...t,...e};return Sg(r),r}var Vs={name:"robin",aliases:["Robinson"],parameters:["lon_0","x_0","y_0"],create(t){let e=z(t),r=vf(e);return B("robin",t,r,Tf,bf)}};var js={name:"sinu",aliases:["Sinusoidal"],parameters:["lon_0","x_0","y_0"],create(t){let e=z(t),r=Cu(e);return B("sinu",t,r,Ei,Ti)}};function wg(t){t.k0||(t.k0=1);var e=t.lat0;t.lambda0=t.long0;var r=Math.sin(e),n=t.a,i=t.rf,o=1/i,s=2*o-Math.pow(o,2);t.e=Math.sqrt(s);var a=t.e;t.R=t.k0*n*Math.sqrt(1-s)/(1-s*Math.pow(r,2)),t.alpha=Math.sqrt(1+s/(1-s)*Math.pow(Math.cos(e),4)),t.b0=Math.asin(r/t.alpha);var c=Math.log(Math.tan(Math.PI/4+t.b0/2)),l=Math.log(Math.tan(Math.PI/4+e/2)),h=Math.log((1+a*r)/(1-a*r));t.K=c-t.alpha*l+t.alpha*a/2*h}function Pf(t,e){var r=Math.log(Math.tan(Math.PI/4-e.y/2)),n=t.e/2*Math.log((1+t.e*Math.sin(e.y))/(1-t.e*Math.sin(e.y))),i=-t.alpha*(r+n)+t.K,o=2*(Math.atan(Math.exp(i))-Math.PI/4),s=t.alpha*(e.x-t.lambda0),a=Math.atan(Math.sin(s)/(Math.sin(t.b0)*Math.tan(o)+Math.cos(t.b0)*Math.cos(s))),c=Math.asin(Math.cos(t.b0)*Math.sin(o)-Math.sin(t.b0)*Math.cos(o)*Math.cos(s));return e.y=t.R/2*Math.log((1+Math.sin(c))/(1-Math.sin(c)))+t.y0,e.x=t.R*a+t.x0,e}function Rf(t,e){for(var r=e.x-t.x0,n=e.y-t.y0,i=r/t.R,o=2*(Math.atan(Math.exp(n/t.R))-Math.PI/4),s=Math.asin(Math.cos(t.b0)*Math.sin(o)+Math.sin(t.b0)*Math.cos(o)*Math.cos(i)),a=Math.atan(Math.sin(i)/(Math.cos(t.b0)*Math.cos(i)-Math.sin(t.b0)*Math.tan(o))),c=t.lambda0+a/t.alpha,l=0,h=s,u=-1e3,f=0;Math.abs(h-u)>1e-7;){if(++f>20)return;l=1/t.alpha*(Math.log(Math.tan(Math.PI/4+s/2))-t.K)+t.e*Math.log(Math.tan(Math.PI/4+Math.asin(t.e*Math.sin(h))/2)),u=h,h=2*Math.atan(Math.exp(l))-Math.PI/2}return e.x=c,e.y=h,e}function Cf(t,e={}){let r={...t,lambda0:0,rf:0,R:0,alpha:0,b0:0,K:0,...e};return wg(r),r}var Ws={name:"somerc",aliases:[],parameters:["lon_0","x_0","y_0","lat_0","k","k_0"],create(t){let e=z(t),r=Cf(e,{rf:e.a===e.b?1/0:1/(1-e.b/e.a)});return B("somerc",t,r,Pf,Rf)}};var me={N_POLE:0,S_POLE:1,EQUIT:2,OBLIQ:3};function Eg(t){if(Math.abs(Math.abs(t.lat0)-E)<1e-10?t.mode=t.lat0<0?me.S_POLE:me.N_POLE:Math.abs(t.lat0)<1e-10?t.mode=me.EQUIT:(t.mode=me.OBLIQ,t.sinph0=Math.sin(t.lat0),t.cosph0=Math.cos(t.lat0)),t.pn1=t.h/t.a,t.pn1<=0||t.pn1>1e10)throw new Error("Invalid height");t.p=1+t.pn1,t.rp=1/t.p,t.h1=1/t.pn1,t.pfact=(t.p+1)*t.h1,t.es=0;var e=t.tilt,r=t.azi;t.cg=Math.cos(r),t.sg=Math.sin(r),t.cw=Math.cos(e),t.sw=Math.sin(e)}function Af(t,e){e.x-=t.long0;var r=Math.sin(e.y),n=Math.cos(e.y),i=Math.cos(e.x),o,s;switch(t.mode){case me.OBLIQ:s=t.sinph0*r+t.cosph0*n*i;break;case me.EQUIT:s=n*i;break;case me.S_POLE:s=-r;break;case me.N_POLE:s=r;break}switch(s=t.pn1/(t.p-s),o=s*n*Math.sin(e.x),t.mode){case me.OBLIQ:s*=t.cosph0*r-t.sinph0*n*i;break;case me.EQUIT:s*=r;break;case me.N_POLE:s*=-(n*i);break;case me.S_POLE:s*=n*i;break}var a,c;return a=s*t.cg+o*t.sg,c=1/(a*t.sw*t.h1+t.cw),o=(o*t.cg-s*t.sg)*t.cw*c,s=a*c,e.x=o*t.a,e.y=s*t.a,e}function If(t,e){e.x/=t.a,e.y/=t.a;var r=e.x,n=e.y,i,o,s;s=1/(t.pn1-e.y*t.sw),i=t.pn1*e.x*s,o=t.pn1*e.y*t.cw*s,e.x=i*t.cg+o*t.sg,e.y=o*t.cg-i*t.sg;var a=ne(e.x,e.y);if(Math.abs(a)<1e-10)r=0,n=t.lat0;else{var c,l;switch(l=1-a*a*t.pfact,l=(t.p-Math.sqrt(l))/(t.pn1/a+a/t.pn1),c=Math.sqrt(1-l*l),t.mode){case me.OBLIQ:n=Math.asin(c*t.sinph0+e.y*l*t.cosph0/a),e.y=(c-t.sinph0*Math.sin(n))*a,e.x*=l*t.cosph0;break;case me.EQUIT:n=Math.asin(e.y*l/a),e.y=c*a,e.x*=l;break;case me.N_POLE:n=Math.asin(c),e.y=-e.y;break;case me.S_POLE:n=-Math.asin(c);break}r=Math.atan2(e.x,e.y)}return e.x=r+t.long0,e.y=n,e}function Of(t,e={}){let r={...t,mode:0,sinph0:0,cosph0:0,pn1:0,h:0,p:0,rp:0,h1:0,pfact:0,tilt:0,azi:0,cg:0,sg:0,cw:0,sw:0,...e};return Eg(r),r}var Hs={name:"tpers",aliases:["Tilted_Perspective"],parameters:["lon_0","x_0","y_0","lat_0","h","tilt","azi"],create(t){let e=z(t),r=L(t.parameters,"h",1e5),n=L(t.parameters,"tilt",0)*Math.PI/180,i=L(t.parameters,"azi",0)*Math.PI/180;if(Math.abs(n)>=Math.PI/2)throw new Error("Perspective tilt must be between -90 and 90 degrees");let o=Of(e,{h:r,tilt:n,azi:i});return B("tpers",t,o,Af,If,Mt(e,1/(1+r/e.a)))}};function Tg(t){t.R=t.a}function Nf(t,e){var r=e.x,n=e.y,i=P(r-t.long0,t.over),o,s;if(Math.abs(n)<=1e-10)return o=t.x0+t.R*i,s=t.y0,e.x=o,e.y=s,e;var a=Ee(2*Math.abs(n/Math.PI));if(Math.abs(i)<=1e-10||Math.abs(Math.abs(n)-E)<=1e-10)return o=t.x0,n>=0?s=t.y0+Math.PI*t.R*Math.tan(.5*a):s=t.y0+Math.PI*t.R*-Math.tan(.5*a),e.x=o,e.y=s,e;var c=.5*Math.abs(Math.PI/i-i/Math.PI),l=c*c,h=Math.sin(a),u=Math.cos(a),f=u/(h+u-1),d=f*f,m=f*(2/h-1),p=m*m,g=Math.PI*t.R*(c*(f-p)+Math.sqrt(l*(f-p)*(f-p)-(p+l)*(d-p)))/(p+l);i<0&&(g=-g),o=t.x0+g;var _=l+f;return g=Math.PI*t.R*(m*_-c*Math.sqrt((p+l)*(l+1)-_*_))/(p+l),n>=0?s=t.y0+g:s=t.y0-g,e.x=o,e.y=s,e}function Lf(t,e){var r,n,i,o,s,a,c,l,h,u,f,d,m;return e.x-=t.x0,e.y-=t.y0,Math.abs(e.y)<1e-10?(e.x=P(t.long0+e.x/t.R,t.over),e.y=0,e):(f=Math.PI*t.R,i=e.x/f,o=e.y/f,s=i*i+o*o,a=-Math.abs(o)*(1+s),c=a-2*o*o+i*i,l=-2*a+1+2*o*o+s*s,m=o*o/l+(2*c*c*c/l/l/l-9*a*c/l/l)/27,h=(a-c*c/3/l)/l,u=2*Math.sqrt(-h/3),f=3*m/h/u,Math.abs(f)>1&&(f>=0?f=1:f=-1),d=Math.acos(f)/3,e.y>=0?n=(-u*Math.cos(d+Math.PI/3)-c/3/l)*Math.PI:n=-(-u*Math.cos(d+Math.PI/3)-c/3/l)*Math.PI,Math.abs(i)<1e-10?r=t.long0:r=P(t.long0+Math.PI*(s-1+Math.sqrt(1+2*(i*i-o*o)+s*s))/2/i,t.over),e.x=r,e.y=n,e)}function Gf(t,e={}){let r={...t,R:0,...e};return Tg(r),r}var $s={name:"vandg",aliases:["Van_der_Grinten_I","VanDerGrinten","Van_der_Grinten"],parameters:["lon_0","x_0","y_0"],create(t){let e=z(t),r=Gf(e);return B("vandg",t,r,Nf,Lf)}};var qf=["o_proj","o_alpha","o_lon_c","o_lat_c","o_lon_p","o_lat_p","o_lon_1","o_lat_1","o_lon_2","o_lat_2"],Ys=t=>t.toLowerCase().replace(/[ _-]/g,""),Ks=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),$e=(t,e)=>L(t,e,0)*Math.PI/180;function bg(t){let e=[["o_alpha","o_lon_c","o_lat_c"],["o_lat_p","o_lon_p"],["o_lon_1","o_lat_1","o_lon_2","o_lat_2"]],r=e.find(c=>c.some(l=>Ks(t,l)));if(!r)throw new Error("Oblique transformation requires a rotation parameter set");for(let c of r){if(!Ks(t,c))throw new Error("Oblique transformation requires "+c);if(c.includes("lat")&&Math.abs($e(t,c))>Math.PI/2)throw new Error("Invalid rotation latitude: "+c)}if(r===e[0]){let c=$e(t,"o_alpha"),l=$e(t,"o_lon_c"),h=$e(t,"o_lat_c");if(Math.abs(h)>=Math.PI/2-1e-10)throw new Error("Rotation center must be away from the poles");return{lamp:l+Math.atan2(-Math.cos(c),-Math.sin(c)*Math.sin(h)),phip:Math.asin(Math.cos(h)*Math.sin(c))}}if(r===e[1])return{lamp:$e(t,"o_lon_p"),phip:$e(t,"o_lat_p")};let n=$e(t,"o_lon_1"),i=$e(t,"o_lat_1"),o=$e(t,"o_lon_2"),s=$e(t,"o_lat_2");if(Math.abs(i)>=Math.PI/2-1e-10||Math.abs(s)>=Math.PI/2-1e-10||Math.abs(i)<1e-10||Math.abs(i-s)<1e-10)throw new Error("Invalid new-equator reference points");let a=Math.atan2(Math.cos(i)*Math.sin(s)*Math.cos(n)-Math.sin(i)*Math.cos(s)*Math.cos(o),Math.sin(i)*Math.cos(s)*Math.sin(o)-Math.cos(i)*Math.sin(s)*Math.sin(n));return{lamp:a,phip:Math.atan(-Math.cos(a-n)/Math.tan(i))}}function Ri(t){let e=t==="longlat";if(!e&&["obtran","geocent"].includes(Ys(t.name)))throw new Error("Cannot wrap a composite or geocentric projection");return{name:"ob_tran",aliases:["General Oblique Transformation","General_Oblique_Transformation"],parameters:[...qf,"lon_0",...e?[]:t.parameters],flags:e?[]:t.flags,create(r){let{parameters:n}=r,i=n.o_proj,o=e?["longlat","latlong","lonlat","latlon","identity"]:[t.name,...t.aliases||[]];if(i&&!o.map(Ys).includes(Ys(i)))throw new Ce("missing-plugin","Oblique transformation dependency does not match +o_proj="+i);let{lamp:s,phip:a}=bg(n),c=Math.cos(a),l=Math.sin(a),h=Math.abs(a)>1e-10,u=$e(n,"lon_0"),f=Ks(n,"over"),d={...n,proj:e?"longlat":i||t.name,lon_0:"0"};for(let y of qf)delete d[y];let m=e?ze(y=>{y.x*=180/Math.PI,y.y*=180/Math.PI},y=>{y.x*=Math.PI/180,y.y*=Math.PI/180}):t.create({...r,parameters:Object.freeze(d)}),p=lt(m,!1),g=lt(m,!0),_=y=>Math.asin(Math.max(-1,Math.min(1,y)));return ze(y=>{let S=y.x,x=y.y,w=f?S-u:Be(S-u),T=Math.cos(w),v=Math.sin(x),C=Math.cos(x),O=Be(Math.atan2(C*Math.sin(w),h?l*C*T+c*v:v)+s),b=_(h?l*v-c*C*T:-C*T);y.x=O,y.y=b,p(y)},y=>{g(y);let S=y.x,x=y.y,w=S-s,T=Math.cos(w),v=Math.sin(x),C=Math.cos(x),O=Math.atan2(C*Math.sin(w),h?l*C*T-c*v:-v),b=_(h?l*v+c*C*T:C*T);y.x=Be(O+u),y.y=b})}}}function Q(t){if(!t||typeof t!="object"||Array.isArray(t))throw new Error("Expected a CRS object");return t}function Wr(t){return Array.isArray(t)?t:[]}function pe(t){return String(t||"").toLowerCase().replace(/[^a-z0-9]/g,"")}function Oe(t){if(typeof t!="number"||!Number.isFinite(t))throw new Error("Expected a finite CRS parameter");return t}function Te(t,e){if(t===void 0)return e;if(typeof t=="object"){let i=Oe(Q(t).conversion_factor);if(i<=0)throw new Error("Unit conversion factor must be positive");return i}let n={metre:1,meter:1,degree:ee,radian:1,grad:Math.PI/200,gon:Math.PI/200,foot:.3048,ussurveyfoot:1200/3937,kilometre:1e3,arcsecond:ee/3600,partspermillion:1e-6,unity:1}[pe(t)];return n||D("Unsupported CRS unit: "+String(t)),n}var vg={hotineobliquemercator:"omerc",hotineobliquemercatorvarianta:"omerc",hotineobliquemercatorvariantb:"omerc",hotineobliquemercatorazimuthnaturalorigin:"omerc",hotineobliquemercatorazimuthcenter:"omerc",obliquemercator:"omerc",krovak:"krovak",krovaknorthorientated:"krovak",quadrilateralizedsphericalcube:"qsc",transversemercator:"tmerc",transversemercatorsouthorientated:"unsupported-south-tmerc",mercator:"merc",mercator1sp:"merc",mercator2sp:"merc",mercatorvarianta:"merc",mercatorvariantb:"merc",mercatorauxiliarysphere:"webmerc",popularvisualisationpseudomercator:"webmerc",lambertconformalconic:"lcc",lambertconformalconic1sp:"lcc",lambertconformalconic2sp:"lcc",lambertconicconformal1sp:"lcc",lambertconicconformal2sp:"lcc",albers:"aea",albersconicequalarea:"aea",albersequalarea:"aea",equidistantconic:"eqdc",lambertazimuthalequalarea:"laea",stereographic:"stere",stereographicnorthpole:"sterea",stereographicsouthpole:"stere",polarstereographic:"stere",polarstereographicvarianta:"stere",polarstereographicvariantb:"stere",obliquestereographic:"sterea",doublestereographic:"sterea",azimuthalequidistant:"aeqd",modifiedazimuthalequidistant:"aeqd",equidistantcylindrical:"eqc",equidistantcylindricalspherical:"eqc",equirectangular:"eqc",platecarree:"eqc",bonne:"bonne",cassinisoldner:"cass",cassini:"cass",cylindricalequalarea:"cea",lambertcylindricalequalarea:"cea",eckertvi:"eck6",equalearth:"eqearth",millercylindrical:"mill",mollweide:"moll",robinson:"robin",sinusoidal:"sinu",vandergrinten:"vandg",vandergrinteni:"vandg",gnomonic:"gnom",orthographic:"ortho",polyconic:"poly",americanpolyconic:"poly",newzealandmapgrid:"nzmg",gaussschreibertransversemercator:"gstmerc"},Pg={centralmeridian:"lon_0",longitudeoforigin:"lon_0",longitudeofcenter:"lon_0",longitudeofnaturalorigin:"lon_0",longitudeoffalseorigin:"lon_0",longitudeofprojectioncentre:"lon_0",straightverticalpolelongitude:"lon_0",longitudeoforiginmeridian:"lon_0",latitudeoforigin:"lat_0",latitudeofcenter:"lat_0",latitudeofnaturalorigin:"lat_0",latitudeoffalseorigin:"lat_0",latitudeofprojectioncentre:"lat_0",standardparallel1:"lat_1",latitudeof1ststandardparallel:"lat_1",standardparallel2:"lat_2",latitudeof2ndstandardparallel:"lat_2",latitudeofstandardparallel:"lat_ts",scalefactor:"k_0",scalefactoratnaturalorigin:"k_0",scalefactoratprojectionorigin:"k_0",falseeasting:"x_0",falsenorthing:"y_0",eastingatfalseorigin:"x_0",northingatfalseorigin:"y_0"},Rg={omerc:{longitudeofcenter:"lonc",longitudeofprojectioncentre:"lonc",azimuth:"alpha",azimuthatprojectioncentre:"alpha",rectifiedgridangle:"gamma",anglefromrectifiedtoskewgrid:"gamma",scalefactoratprojectioncentre:"k_0",eastingatprojectioncentre:"x_0",northingatprojectioncentre:"y_0"},krovak:{azimuth:"alpha",colatitudeofconeaxis:"alpha",pseudostandardparallel1:"lat_ts",latitudeofpseudostandardparallel:"lat_ts",scalefactoronpseudostandardparallel:"k_0"}},Cg={east:"e",west:"w",north:"n",south:"s",up:"u",down:"d",geocentricx:"e",geocentricy:"n",geocentricz:"u"};function Pt(t,e){let r=String(t.type);if(r==="CompoundCRS"){e.mode!=="horizontal"&&D("CompoundCRS requires explicit horizontal extraction");let S=Wr(t.components).map(Q).filter(x=>["ProjectedCRS","GeographicCRS","GeodeticCRS","BoundCRS"].includes(String(x.type)));if(S.length!==1)throw new Error("CompoundCRS requires exactly one horizontal component");return{...Pt(S[0],e),lossy:!0}}if(r==="BoundCRS"){let S=Pt(Q(t.source_crs),e),x=Pt(Q(t.target_crs),e);(x.parameters.datum!=="WGS84"||!["longlat","geocent"].includes(x.parameters.proj)||Number(x.parameters.pm||0)!==0||x.parameters.towgs84||Number(x.parameters.a)!==6378137||!(Math.abs(Number(x.parameters.rf)-298.257223563)<=1e-9||Math.abs(Number(x.parameters.b)-6356752314245179e-9)<=1e-6))&&D("BoundCRS requires a WGS84 target");let w=Q(t.transformation),T=pe(Q(w.method).name),v=T==="geocentrictranslations"||/^geocentrictranslationsgeog[23]ddomain$/.test(T),C=/^positionvector(?:transformation)?(?:geog[23]ddomain|geocentricdomain)?$/.test(T),O=/^coordinateframe(?:rotation)?(?:geog[23]ddomain|geocentricdomain)?$/.test(T);!v&&!C&&!O&&D("Unsupported BoundCRS transformation: "+T);let b=["xaxistranslation","yaxistranslation","zaxistranslation","xaxisrotation","yaxisrotation","zaxisrotation","scaledifference"],I=new Array(v?3:7).fill(void 0);for(let k of Wr(w.parameters)){let q=Q(k),j=b.indexOf(pe(q.name));(j<0||j>=I.length||I[j]!==void 0)&&D("Unsupported or duplicate Helmert parameter: "+String(q.name));let Ye=j<3?1:j<6?ee/3600:1e-6;I[j]=Oe(q.value)*Te(q.unit,Ye)/Ye*(O&&j>=3&&j<6?-1:1)}if(I.some(k=>k===void 0))throw new Error("Incomplete BoundCRS Helmert transformation");let A={...S.parameters,towgs84:I.join(",")};return delete A.datum,{...S,parameters:A}}["ProjectedCRS","GeographicCRS","GeodeticCRS"].includes(r)||D("Unsupported CRS type: "+r);let n=r==="ProjectedCRS"?Q(t.base_crs):t,i=Q(n.datum||n.datum_ensemble);(i.type==="DynamicGeodeticReferenceFrame"||i.frame_reference_epoch!==void 0||t.coordinate_epoch!==void 0)&&D("Time-dependent datum transformations are not implemented");let o=Q(i.ellipsoid),s=Oe(o.semi_major_axis??o.radius),a={proj:"longlat",a:String(s*Te(o.unit,1))};if(o.inverse_flattening!==void 0)a.rf=String(Oe(o.inverse_flattening));else if(o.semi_minor_axis!==void 0)a.b=String(Oe(o.semi_minor_axis)*Te(o.unit,1));else if(o.radius!==void 0)a.b=a.a;else throw new Error("Ellipsoid requires inverse flattening or semi-minor axis");let c=pe(i.name),l=Object.keys(Ar).find(S=>pe(S)===c||pe(S)===c.replace(/^d/,""));l&&(a.datum=l),["wgs84","worldgeodeticsystem1984","worldgeodeticsystem1984ensemble","dwgs1984","wgs1984"].includes(c)&&(a.datum="WGS84"),["nad83","northamericandatum1983","dnorthamerican1983"].includes(c)&&(a.datum="NAD83"),["nad27","northamericandatum1927","dnorthamerican1927"].includes(c)&&(a.datum="NAD27");let u={newzealand1949:"nzgd49",belge1972:"rnb72"}[c.replace(/^d/,"")];if(u&&(a.datum=u),r==="ProjectedCRS"&&n.id){let S=Q(n.id),x=String(S.authority)+"_"+String(S.code);Object.prototype.hasOwnProperty.call(Ar,x)&&(a.datum=x)}i.towgs84!==void 0&&(a.towgs84=Wr(i.towgs84).map(Oe).join(","),delete a.datum);let f=t.coordinate_system?Q(t.coordinate_system):{},d=Wr(f.axis).map(Q),m=pe(f.subtype)==="cartesian"&&r==="GeodeticCRS";r!=="ProjectedCRS"&&!m&&f.subtype&&pe(f.subtype)!=="ellipsoidal"&&D("Unsupported coordinate system subtype"),m&&(a.proj="geocent");let p=Te(n.angular_unit,ee),g=Te(d[0]?.unit,r==="ProjectedCRS"||m?1:p);d[1]&&Te(d[1].unit,g)!==g&&D("Mixed horizontal axis units are not supported"),m&&d[2]&&Te(d[2].unit,g)!==g&&D("Mixed geocentric axis units are not supported");let _=n.prime_meridian||i.prime_meridian;if(_){let S=Q(_);a.pm=String(Oe(S.longitude)*Te(S.unit,p)/ee)}if(r==="ProjectedCRS"){let S=Q(t.conversion),x=pe(Q(S.method).name),w=Wr(S.parameters).map(Q),T=x==="stereographicnorthpole"&&!w.some(b=>pe(b.name).startsWith("scalefactor")),v=T?"stere":vg[x],C=w.filter(b=>["xscale","yscale","xyplanerotation"].includes(pe(b.name)));if(C.length){let b={xscale:-1,yscale:1,xyplanerotation:90};(v!=="krovak"||C.length!==3||new Set(C.map(I=>pe(I.name))).size!==3||C.some(I=>{let A=pe(I.name),k=A==="xyplanerotation"?Te(I.unit,p)/ee:Te(I.unit,1);return Math.abs(Oe(I.value)*k-b[A])>1e-10}))&&D("Unsupported ESRI Krovak axis adjustment")}(!v||v.startsWith("unsupported"))&&D("Unsupported projection method: "+String(Q(S.method).name)),a.proj=v==="webmerc"?"merc":v;let O=!1;for(let b of w){let I=pe(b.name);if(C.includes(b)||I==="auxiliaryspheretype"&&v==="webmerc"&&b.value===0)continue;if(I==="semiminor"&&v==="webmerc"){if(O)throw new Error("Duplicate conversion parameter: semi_minor");O=!0;let Ye=Oe(b.value)*Te(b.unit,1);Math.abs(Ye-Number(a.a))>4*Number.EPSILON*Number(a.a)&&D("Pseudo-Mercator semi_minor must equal the semi-major axis");continue}let A=Rg[v]?.[I]||Pg[I];if(A||D("Unsupported conversion parameter: "+String(b.name)),A==="lat_1"&&x==="stereographicnorthpole"&&!T?A="lat_0":A==="lat_1"&&["merc","webmerc","eqc","stere","cea"].includes(v)&&(A="lat_ts"),a[A]!==void 0)throw new Error("Duplicate conversion parameter: "+A);if(["merc","webmerc"].includes(v)&&A==="lat_0"&&b.value===0)continue;let k=A.startsWith("lat")||A.startsWith("lon")||A==="alpha"||A==="gamma",q=A==="x_0"||A==="y_0",j=Oe(b.value)*Te(b.unit,k?p:q?g:1)/(k?ee:1);A.startsWith("lat")&&Math.abs(Math.abs(j)-90)<=4*Number.EPSILON*90&&(j=Math.sign(j)*90),a[A]=String(j)}if(v==="omerc"&&["hotineobliquemercator","hotineobliquemercatorvarianta","hotineobliquemercatorazimuthnaturalorigin"].includes(x)&&(a.no_uoff=void 0),v==="omerc"&&a.lon_0!==void 0&&a.lonc!==void 0&&(Math.abs(Number(a.lon_0)-Number(a.lonc))>1e-10&&D("Oblique Mercator central meridian conflicts with projection centre"),delete a.lon_0),x==="stereographicnorthpole"&&Math.abs(Number(a.lat_0))===90&&(a.proj="stere"),v==="lcc"&&a.lat_1===void 0&&(a.lat_1=a.lat_0),x==="polarstereographic"&&a.lat_0!==void 0){if(a.lat_ts!==void 0)throw new Error("Duplicate polar stereographic latitude of true scale");a.lat_ts=a.lat_0,delete a.lat_0}v==="stere"&&(x.includes("polar")||x==="stereographicsouthpole"||T)&&a.lat_0===void 0&&(a.lat_0=Number(a.lat_ts||90)<0?"-90":"90"),v==="webmerc"&&(a.b=a.a,delete a.rf,a.nadgrids="@null")}let y=d.map(S=>Ag(S,a,r==="ProjectedCRS")).join("");return y.length===2&&(y+="u"),!m&&/[ud]/.test(y.slice(0,2))&&D("Structured CRS vertical-first axes require an explicit PROJ axis definition"),y&&(a.axis=y),(r==="ProjectedCRS"||m)&&(a.to_meter=String(g)),{parameters:a,angularUnit:r==="ProjectedCRS"||m?p:g,verticalUnit:m?1:Te(d[2]?.unit,1)}}function Ag(t,e,r){let n=String(t.direction),i=t.meridian,o=/^(north|south) along ([+-]?(?:\d+(?:\.\d*)?|\.\d+)) deg(?: (east|west))?$/i.exec(n);if(o){if(i!==void 0)throw new Error("Duplicate axis meridian");n=o[1],i={longitude:Number(o[2])*(o[3]?.toLowerCase()==="west"?-1:1)}}if(i!==void 0){let a=Number(e.lat_0),c=a===90;(!r||e.proj!=="stere"||Math.abs(a)!==90||pe(n)!==(c?"south":"north"))&&D("Axis meridians require an outward-facing polar stereographic axis");let l=Q(i).longitude,h=typeof l=="number"?Oe(l):Oe(Q(l).value)*Te(Q(l).unit,ee)/ee,u=Oe((h-Number(e.lon_0||0))/90);Math.abs(u-Math.round(u))>1e-12&&D("Non-cardinal axis meridians require an orientation operation");let f=(Math.round(u)%4+4)%4;return(c?"senw":"nesw")[f]}let s=Cg[pe(n)];return s||D("Unsupported axis direction: "+n),s}function Ci(t,...e){return t.values.filter(r=>r.type==="node"&&e.includes(r.keyword.toUpperCase()))}function K(t,...e){return Ci(t,...e)[0]}function J(t,e=0){let r=t.values[e];return r&&r.type!=="node"?r.value:void 0}function Rt(t){return t?{name:J(t),conversion_factor:J(t,1)}:void 0}function Ig(t,e){let r=J(t,1);if(e&&String(r).toLowerCase()==="unknown"){let n=String(J(t)).toLowerCase(),i=/^(easting|northing|westing|southing)(?:\s*\([a-z]\))?$/.exec(n);if(i)return{easting:"east",northing:"north",westing:"west",southing:"south"}[i[1]]}return r}function Og(t){let e=K(t,"MERIDIAN");if(e)return{longitude:{value:J(e),unit:Rt(K(e,"ANGLEUNIT"))}}}function zf(t){let e=K(t,"METHOD","PROJECTION");if(!e)throw new Error("WKT conversion requires a METHOD or PROJECTION");return K(t,"PARAMETERFILE")&&D("Grid-based WKT operation is not implemented"),{method:{name:J(e)},parameters:Ci(t,"PARAMETER").map(r=>({name:J(r),value:J(r,1),unit:Rt(K(r,"ANGLEUNIT","LENGTHUNIT","SCALEUNIT"))}))}}function Hr(t){let e=t.keyword.toUpperCase();if(e==="COMPD_CS"||e==="COMPOUNDCRS")return{type:"CompoundCRS",components:Ci(t,"PROJCS","PROJCRS","GEOGCS","GEOGCRS","GEODCRS","BOUNDCRS","VERT_CS","VERTCRS").map(Hr)};if(e==="BOUNDCRS"){let h=K(t,"SOURCECRS"),u=K(t,"TARGETCRS"),f=K(t,"ABRIDGEDTRANSFORMATION");if(!h||!u||!f)throw new Error("Incomplete WKT BoundCRS");let d=g=>{let _=g.values.find(y=>y.type==="node");if(!_)throw new Error("Missing bound CRS component");return _},m=zf(f),p=m.parameters;for(let g of p)String(g.name).toLowerCase()==="scale difference"&&g.unit===void 0&&(g.value=(Number(g.value)-1)*1e6);return{type:"BoundCRS",source_crs:Hr(d(h)),target_crs:Hr(d(u)),transformation:m}}if(["VERT_CS","VERTCRS"].includes(e))return{type:"VerticalCRS"};let r=["PROJCS","PROJCRS","PROJECTEDCRS"].includes(e),n=["GEOGCS","GEOGCRS","GEODCRS","GEODETICCRS","GEOGRAPHICCRS","BASEGEOGCRS","BASEGEODCRS","GEOCCS"].includes(e);!r&&!n&&D("Unsupported WKT CRS: "+e),K(t,"DYNAMIC","DERIVINGCONVERSION","VELOCITYGRID","EXTENSION")&&D("Unsupported WKT dynamic/extension operation");let i=K(t,"CS"),o=e==="GEOCCS"||String(J(i||t)).toLowerCase()==="cartesian"&&!r,s=K(t,r||o?"LENGTHUNIT":"ANGLEUNIT","UNIT"),a=Ci(t,"AXIS").sort((h,u)=>Number(J(K(h,"ORDER")||h))-Number(J(K(u,"ORDER")||u))).map((h,u)=>({name:J(h),direction:e==="GEOCCS"?["geocentricX","geocentricY","geocentricZ"][u]:Ig(h,r),unit:Rt(K(h,"ANGLEUNIT","LENGTHUNIT")||(!o&&!r&&/^(up|down)$/i.test(String(J(h,1)))?void 0:s)),meridian:Og(h)}));if(!a.length)for(let h of o?["geocentricX","geocentricY","geocentricZ"]:["east","north"])a.push({name:h,direction:h,unit:Rt(s),meridian:void 0});let c=e==="GEOGCS"?void 0:K(t,"ID"),l={type:r?"ProjectedCRS":o?"GeodeticCRS":"GeographicCRS",name:J(t),id:c?{authority:J(c),code:J(c,1)}:void 0,coordinate_system:{subtype:r||o?"Cartesian":"ellipsoidal",axis:a}};if(r){let h=K(t,"GEOGCS","BASEGEOGCRS","BASEGEODCRS","GEODCRS","GEOGCRS");if(!h)throw new Error("Projected WKT requires a base geographic CRS");l.base_crs=Hr(h),l.conversion=zf(K(t,"CONVERSION")||t)}else{let h=K(t,"DATUM","GEODETICDATUM","ENSEMBLE");if(!h)throw new Error("WKT requires a geodetic datum");K(h,"EXTENSION","DYNAMIC")&&D("Unsupported datum extension");let u=K(h,"SPHEROID","ELLIPSOID");if(!u)throw new Error("WKT datum requires an ellipsoid");let f=K(h,"TOWGS84");l.datum={name:J(h),ellipsoid:{name:J(u),semi_major_axis:J(u,1),inverse_flattening:J(u,2),unit:Rt(K(u,"LENGTHUNIT"))},towgs84:f?.values.map((m,p)=>J(f,p))};let d=K(t,"PRIMEM");d&&(l.prime_meridian={name:J(d),longitude:J(d,1),unit:Rt(K(d,"ANGLEUNIT")||(o?void 0:s))}),l.angular_unit=o?void 0:Rt(s)}return l}var Xs={name:"wkt",canParse:t=>ye(t)==="wkt",parse(t,e){if(typeof t!="string")throw new Error("Expected serialized WKT");return Pt(Hr(wr(t).root),e)}};var Zs={name:"projjson",canParse:t=>ye(t)==="projjson",parse:(t,e)=>Pt(Q(t),e)};var Qs=1e-12;function Ai(t,e,r,n,i=!1){let o=(e-t.origin[0])/t.step[0],s=(r-t.origin[1])/t.step[1],a=t.size[0],c=t.size[1];if(!i&&(o<-1e-10||s<-1e-10||o>a-1+1e-10||s>c-1+1e-10))return!1;o=Math.max(0,Math.min(a-1,o)),s=Math.max(0,Math.min(c-1,s));let l=Math.min(a-2,Math.floor(o)),h=Math.min(c-2,Math.floor(s)),u=o-l,f=s-h,d=0,m=0;for(let p=0;p<4;p++){let g=p%2,_=p>1,y=(g?u:1-u)*(_?f:1-f);if(y===0)continue;let S=((h+(_?1:0))*a+l+g)*2,x=t.shifts[S],w=t.shifts[S+1];if(!Number.isFinite(x)||!Number.isFinite(w))return!1;d+=y*x,m+=y*w}return n.x=d,n.y=m,!0}function Ng(t,e,r,n,i){if(!n)return Ai(t,e,r,i)?(i.x+=e,i.y+=r,!0):!1;for(let a=0;a<2;a++){let c=a===0?e:r;if(c<t.origin[a]-t.maxShift[a]-Qs||c>t.origin[a]+(t.size[a]-1)*t.step[a]+t.maxShift[a]+Qs)return!1}if(!Ai(t,e,r,i,!0))return!1;let o=e-i.x,s=r-i.y;for(let a=0;a<20;a++){if(!Ai(t,o,s,i,!0))return!1;let c=e-o-i.x,l=r-s-i.y;if(o+=c,s+=l,Math.max(Math.abs(c),Math.abs(l))<=Qs)return Ai(t,o,s,i)?(i.x=Be(o),i.y=s,!0):!1}throw new Error("Inverse datum grid shift did not converge")}function Bf(t){if(!t.length)throw new Error("Datum grid requires at least one subgrid");let e=t.map(i=>{let[o,s]=i.size;if(![o,s].every(c=>Number.isSafeInteger(c)&&c>=2)||o*s*2!==i.shifts.length||!i.origin.every(Number.isFinite)||!i.step.every(c=>Number.isFinite(c)&&c>0))throw new Error("Invalid datum subgrid geometry or node count");let a=[0,0];for(let c=0;c<i.shifts.length;c++){let l=i.shifts[c];Number.isFinite(l)&&(a[c%2]=Math.max(a[c%2],Math.abs(l)))}return{...i,maxShift:a}}),r=(i,o)=>{let s=i.x,a=i.y;if(!Number.isFinite(s)||!Number.isFinite(a))throw new Error("Grid coordinates must be finite");for(let c of e)if(Ng(c,-s,a,o,i))return i.x=-i.x,!0;return i.x=s,i.y=a,!1},n={x:NaN,y:NaN};return Object.freeze({subgridCount:e.length,shiftInPlace:r,shift(i,o,s){return n.x=i,n.y=o,r(n,s)?[n.x,n.y]:void 0}})}var Zt=Math.PI/648e3;function Js(t,e={}){let r=new DataView(t);if(r.byteLength<176)throw new Error("Truncated NTv2 overview header");let n=r.getInt32(8,!0)===11;if(!n&&r.getInt32(8,!1)!==11)throw new Error("Invalid NTv2 header or byte order");let i=u=>r.getInt32(u,n),o=u=>r.getFloat64(u,n),s=u=>String.fromCharCode(...new Uint8Array(t,u,8)).replace(/\0/g,"").trim();if(s(0)!=="NUM_OREC"||i(24)!==11||s(56)!=="SECONDS")throw new Error("Unsupported NTv2 header or shift units");let a=i(40),c=e.includeErrorFields===!1?8:16;if(a<1||a>Math.floor((r.byteLength-176)/(176+4*c)))throw new Error("Invalid NTv2 subgrid count");let l=176,h=[];for(let u=0;u<a;u++){if(l+176>r.byteLength)throw new Error("Truncated NTv2 subgrid header");let f=o(l+72),d=o(l+88),m=o(l+104),p=o(l+120),g=o(l+136),_=o(l+152),y=i(l+168),S=1+(p-m)/_,x=1+(d-f)/g;if(![S,x].every(C=>Number.isFinite(C)&&C>=2&&Math.abs(C-Math.round(C))<1e-7)||!(_>0&&g>0)||y!==Math.round(S)*Math.round(x))throw new Error("Invalid NTv2 subgrid dimensions");let w=l+176,T=w+y*c;if(T>r.byteLength)throw new Error("Truncated NTv2 node records");let v=new Float64Array(y*2);for(let C=0;C<y;C++)v[C*2]=r.getFloat32(w+C*c+4,n)*Zt,v[C*2+1]=r.getFloat32(w+C*c,n)*Zt;h.push({origin:[m*Zt,f*Zt],step:[_*Zt,g*Zt],size:[Math.round(S),Math.round(x)],shifts:v}),l=T}return Bf(h)}var Df=Object.create(null),kf=Object.create(null),Ii;function Lg(){if(Ii)return Ii;let t=[os,ss,hs,us,fs,ds,ms,ps,Ms,ys,xs,Ss,ws,Es,vs,Ps,Rs,Cs,As,Is,Os,Ls,Gs,qs,zs,Bs,Ds,ks,Fs,Us,Vs,js,Ws,Hs,$s],e=i=>i.toLowerCase().replace(/[\s_-]/g,""),r=Ri("longlat"),n={name:r.name,aliases:r.aliases,parameters:[...new Set([...r.parameters,...t.flatMap(i=>i.parameters)])],flags:[...new Set(t.flatMap(i=>i.flags||[]))],create(i){let o=i.parameters.o_proj;if(!o)throw new Error("Oblique transformation requires +o_proj");let s=["longlat","latlong","latlon","lonlat","identity"].includes(e(o))?"longlat":t.find(l=>[l.name,...l.aliases||[]].some(h=>e(h)===e(o)));if(!s)throw new Error("Unknown oblique transformation projection: "+o);let a=Ri(s),c=new Set([...fi,...a.parameters]);for(let l of Object.keys(i.parameters))if(!c.has(l))throw new Error("Unsupported PROJ parameter: +"+l);return a.create(i)}};return Ii=[...t,n],Ii}var it=class extends _i{static defineProjectionAliases(e){for(let r of Object.keys(e)){let n=e[r];Df[r]=typeof n=="string"?n:JSON.parse(JSON.stringify(n))}}static registerDatumGrid(e,r,n){kf[e]=Js(r,n)}constructor({from:e="WGS84",to:r="WGS84",enforceAxis:n=!1,verticalGrids:i}){super({from:e,to:r,enforceAxis:n,verticalGrids:i,projections:Lg(),parsers:[Xs,Zs],aliases:Df,datumGrids:kf})}};var Gg=[9,-18,-88,0,96,90,0,0,-60,-20,-9,18,8,0,-96,30,0,0,60,-20,9,-88,-18,90,96,0,-20,-60,0,0,186,-42,-42,-150,-96,-150,60,60,60,60,54,162,-78,30,-24,-90,-60,60,-60,60,-9,-32,18,30,24,0,20,-60,0,0,-9,8,18,30,-96,0,-20,60,0,0,54,-78,162,-90,-24,30,60,-60,60,-60,-54,78,78,90,144,90,-60,-60,-60,-60,9,-8,-18,-30,-24,0,20,60,0,0,-9,18,-32,0,24,30,0,0,-60,20,9,-18,-8,0,-24,-30,0,0,60,20],qg=372,zg=[0,0,-131,0,138,144,0,0,-102,-31,0,0,7,0,-138,42,0,0,102,-31,62,0,-31,0,0,-62,0,0,0,31,124,0,-62,0,0,-124,0,0,0,62,124,0,-62,0,0,-124,0,0,0,62,62,0,-31,0,0,-62,0,0,0,31,0,0,45,0,-183,-9,0,93,18,0,0,0,216,0,33,87,0,-93,12,-93,0,0,156,0,153,99,0,-93,-12,-93,0,0,-45,0,-3,9,0,93,-18,0,0,0,-55,0,48,42,0,0,-84,31,0,0,-7,0,-48,-42,0,0,84,31],Bg=372,Dg=[18,-36,-122,0,120,135,0,0,-84,-31,-18,36,-2,0,-120,51,0,0,84,-31,36,-165,-27,93,147,-9,0,-93,18,0,210,45,-111,-93,-57,-192,0,93,12,93,162,141,-75,-93,-129,-180,0,93,-12,93,-36,-21,27,93,39,9,0,-93,-18,0,0,0,62,0,0,31,0,0,0,-31,0,0,124,0,0,62,0,0,0,-62,0,0,124,0,0,62,0,0,0,-62,0,0,62,0,0,31,0,0,0,-31,-18,36,-64,0,66,51,0,0,-102,31,18,-36,2,0,-66,-51,0,0,102,31],kg=12,ea=20/2,Fg=2,$r=class{constructor(e){this._v00=0,this._v01=0,this._v10=0,this._v11=0,this._t=[],this.options=e,this._ix=this.options._width,this._iy=this.options._height}getHeight(e,r){if(e=Math.abs(e)>90?NaN:e,Number.isNaN(e)||Number.isNaN(r))return NaN;let n=Ug(r,360);r=n!==-180?n:180;let i=r*this.options._rlonres,o=-e*this.options._rlatres,s=Math.floor(i),a=Math.min(Math.round((this.options._height-1)/2-1),Math.floor(o));i-=s,o-=a,a+=(this.options._height-1)/2,s+=s<0?this.options._width:s>=this.options._width?-this.options._width:0;let c=0,l=0,h=0,u=0,f=new Array(ea);if(s===this._ix&&a===this._iy)this.options.cubic?f=this._t:(c=this._v00,l=this._v01,h=this._v10,u=this._v11);else if(!this.options.cubic)c=this._rawval(s,a),l=this._rawval(s+1,a),h=this._rawval(s,a+1),u=this._rawval(s+1,a+1);else{let m=[this._rawval(s,a-1),this._rawval(s+1,a-1),this._rawval(s-1,a),this._rawval(s,a),this._rawval(s+1,a),this._rawval(s+2,a),this._rawval(s-1,a+1),this._rawval(s,a+1),this._rawval(s+1,a+1),this._rawval(s+2,a+1),this._rawval(s,a+2),this._rawval(s+1,a+2)],p=zg;a!==0&&(p=a===this.options._height-2?Dg:Gg);let g=qg;a!==0&&(g=a===this.options._height-2?Bg:240);for(let _=0;_<ea;++_){f[_]=0;for(let y=0;y<kg;++y)f[_]+=m[y]*p[ea*y+_];f[_]/=g}}if(!this.options.cubic){let m=(1-i)*c+i*l,p=(1-i)*h+i*u,g=(1-o)*m+o*p,_=this.options._offset+this.options._scale*g;return this._ix=s,this._iy=a,this._v00=c,this._v01=l,this._v10=h,this._v11=u,_}let d=f[0]+i*(f[1]+i*(f[3]+i*f[6]))+o*(f[2]+i*(f[4]+i*f[7])+o*(f[5]+i*f[8]+o*f[9]));return d=this.options._offset+this.options._scale*d,this._ix=s,this._iy=a,this._t=f,d}_rawval(e,r){e<0?e+=this.options._width:e>=this.options._width&&(e-=this.options._width),(r<0||r>=this.options._height)&&(r=r<0?-r:2*(this.options._height-1)-r,e+=(e<this.options._width/2?1:-1)*this.options._width/2);let n=this.options._datastart+Fg*(r*this.options._swidth+e),i=this.options.data[n],o=this.options.data[n+1];return i<<8|o}};function Ug(t,e){e=Math.abs(e);let r=Ff(t,e);return 2*Math.abs(r)===e?r-=Ff(t,2*e)-r:2*Math.abs(r)>e&&(r+=r<0?e:-e),r}function Ff(t,e){return t-Math.floor(t/e)*e}var Vg=10,jg=65535;function ta(t,e){let r=Wg(t),n=r.next();if(n.done||n.value.line!=="P5")throw new Error("Geoid model file: File not in PGM format");let i=Number.MAX_VALUE,o=0,s=-1,a=-1,c="NONE",l="UNKNOWN",h=0,u=0,f=null,d=null;do{n=r.next();let _=n.value.line;if(_.length)if(_[0]==="#"){let y=_.split(" "),S=y[0],x=y[1];if(S!=="#"||!x)continue;let w=y.length>2?y.slice(2):[];if(x==="Description")c=w.join(" ");else if(x==="DateTime")l=w.join(" ");else if(x==="Offset"){if(!y[2])throw new Error("Geoid model file: Error reading offset");i=parseInt(y[2],10)}else if(x==="Scale"){if(!y[2])throw new Error("Geoid model file: Error reading scale");o=parseFloat(y[2])}else x===(e.cubic?"MaxCubicError":"MaxBilinearError")?isFinite(parseFloat(y[2]))&&(s=parseFloat(y[2])):x===(e.cubic?"RMSCubicError":"RMSBilinearError")&&isFinite(parseFloat(y[2]))&&(a=parseFloat(y[2]))}else{let y=_.split(" ");if(y=y.filter(S=>S!==""),h=parseInt(y[0],10),u=parseInt(y[1],10),!(h&&u))throw new Error("Geoid model file: Error reading raster size");break}}while(!n.done);n=r.next();let m=parseInt(n.value.line,10);if(n.done)throw new Error("Geoid model file: Error reading maxval");if(m!==jg)throw new Error("Geoid model file: Incorrect value of maxval");if(f=n.value.offset,d=h,i===Number.MAX_VALUE)throw new Error("Geoid model file: Offset not set");if(o===0)throw new Error("Geoid model file: Scale not set");if(o<0)throw new Error("Geoid model file: Scale must be positive");if(u<2||h<2)throw new Error("Geoid model file: Raster size too small");if(h&1)throw new Error("Geoid model file: Raster width is odd");if(!(u&1))throw new Error("Geoid model file: Raster height is even");let p=h/360,g=(u-1)/180;return new $r({cubic:e.cubic,_width:h,_height:u,_rlonres:p,_rlatres:g,_offset:i,_scale:o,_swidth:d,_datastart:f,_maxerror:s,_rmserror:a,_description:c,_datetime:l,data:t})}function*Wg(t){let e=0;do{let r=t.indexOf(Vg,e);if(r!==-1){let n=t.subarray(e,r);e=r+1,yield{offset:e,line:Uf(n)}}else{let n=t.subarray(e,t.length);e=t.length,yield{offset:e,line:Uf(n)}}}while(e<t.length);return{offset:e,line:""}}function Uf(t){let e="";for(let r of t)e+=String.fromCharCode(r);return e}var Vf=new Map;function jf(t,e){na(t,"CRS"),it.defineProjectionAliases({[t]:e})}function Wf(t,e){na(t,"datum grid"),it.registerDatumGrid(t,e)}function ra(t,e){na(t,"geoid model"),Vf.set(t,e)}function Hf(t,e,r={}){let n=ta(e,r);return ra(t,n),n}function Oi(t){return Vf.get(t)}function na(t,e){if(!t.trim())throw new Error(`${e} name must not be empty`)}var ke=class{spatialReference;horizontalProjection;geographicProjection;heightOutputProjection;sourceIsGeocentric;outputIsGeocentric;sourceIsGeographic;outputIsGeographic;geoid;constructor(e,r={}){this.spatialReference=e,Yg(e);let n=e.targetCrs||e.sourceCrs;if(this.sourceIsGeocentric=ia(e.sourceCrs),this.outputIsGeocentric=ia(n),this.sourceIsGeographic=$f(e.sourceCrs),this.outputIsGeographic=$f(n),e.sourceCrs&&e.targetCrs&&!this.sourceIsGeocentric&&!this.outputIsGeocentric&&(this.horizontalProjection=new it({from:Yr(e.sourceCrs),to:Yr(e.targetCrs),enforceAxis:!1})),(Kr(e)||this.sourceIsGeocentric||this.outputIsGeocentric)&&(!this.sourceIsGeographic&&!this.sourceIsGeocentric&&(this.geographicProjection=new it({from:Yr(e.sourceCrs),to:kt,enforceAxis:!1})),!this.outputIsGeographic&&!this.outputIsGeocentric&&(this.heightOutputProjection=new it({from:kt,to:Yr(n),enforceAxis:!1}))),Kr(e)&&(this.geoid=Kg(r.geoidModel),!this.geoid)){let i=typeof r.geoidModel=="string"?` "${r.geoidModel}"`:"";throw new Error(`Height conversion requires a registered geoid model${i}; call registerGeoidModel() or pass a parsed Geoid instance`)}}transformPosition(e){if(e.length<2)throw new Error("A spatial coordinate must contain at least x and y components");let r=[...e];if(Kr(this.spatialReference)||this.sourceIsGeocentric||this.outputIsGeocentric){if(r.length<3||!Number.isFinite(r[2]))throw new Error("Three-dimensional CRS conversion requires a finite z coordinate");let n=this.toGeographic(r);if(Kr(this.spatialReference)){let o=this.geoid.getHeight(n[1],n[0]);n[2]=Xg(n[2],o,this.spatialReference.heightReference,this.spatialReference.targetHeightReference)}let i=this.fromGeographic(n);return r.splice(0,i.length,...i),r}if(this.horizontalProjection){let n=this.horizontalProjection.project(r.slice(0,3));r.splice(0,n.length,...n)}return r}transformPositions(e){if(e.length%3!==0)throw new Error("Packed spatial positions must contain a multiple of three components");let r=new Float64Array(e.length);for(let n=0;n<e.length;n+=3){let i=this.transformPosition([Number(e[n]),Number(e[n+1]),Number(e[n+2])]);r[n]=i[0],r[n+1]=i[1],r[n+2]=i[2]}return r}transformNormals(e,r){if(e.length!==r.length||e.length%3!==0)throw new Error("Spatial normals and positions must have matching xyz component counts");let n=new Float32Array(e.length),i=1e-5;for(let o=0;o<e.length;o+=3){let s=[Number(r[o]),Number(r[o+1]),Number(r[o+2])],a=[Number(e[o]),Number(e[o+1]),Number(e[o+2])],c=Hg(this,s,i),l=$g(c,a),h=Math.hypot(...l);h>0&&Number.isFinite(h)?(n[o]=l[0]/h,n[o+1]=l[1]/h,n[o+2]=l[2]/h):(n[o]=a[0],n[o+1]=a[1],n[o+2]=a[2])}return n}toGeographic(e){return this.sourceIsGeocentric?Array.from(N.WGS84.cartesianToCartographic(new M(e))):this.sourceIsGeographic?e.slice(0,3):this.geographicProjection.project(e.slice(0,3))}fromGeographic(e){return this.outputIsGeocentric?Array.from(N.WGS84.cartographicToCartesian(new M(e))):this.outputIsGeographic?e.slice(0,3):this.heightOutputProjection.project(e.slice(0,3))}};function Hg(t,e,r){let n=[];for(let i=0;i<3;i++){let o=e.slice(),s=e.slice();o[i]+=r,s[i]-=r;let a=t.transformPosition(o),c=t.transformPosition(s);n.push([(a[0]-c[0])/(2*r),(a[1]-c[1])/(2*r),(a[2]-c[2])/(2*r)])}return n}function $g(t,e){let[r,n,i]=t,o=r[0]*(n[1]*i[2]-n[2]*i[1])-n[0]*(r[1]*i[2]-r[2]*i[1])+i[0]*(r[1]*n[2]-r[2]*n[1]);return!Number.isFinite(o)||Math.abs(o)<1e-15?e:[[n[1]*i[2]-n[2]*i[1],r[2]*i[1]-r[1]*i[2],r[1]*n[2]-r[2]*n[1]],[n[2]*i[0]-n[0]*i[2],r[0]*i[2]-r[2]*i[0],r[2]*n[0]-r[0]*n[2]],[n[0]*i[1]-n[1]*i[0],r[1]*i[0]-r[0]*i[1],r[0]*n[1]-r[1]*n[0]]].map(a=>(a[0]*e[0]+a[1]*e[1]+a[2]*e[2])/o)}function Yr(t){if(!t)throw new Error("Cannot construct a projection because the CRS is unknown");if(typeof t!="string"&&t.type==="CompoundCRS"){let e=t.components.filter(r=>r.type!=="VerticalCRS");if(e.length!==1)throw new Error("CompoundCRS requires exactly one horizontal component");return Yr(e[0])}return t}function Yg(t){if(t.outputCoordinates==="local-enu")throw new Error("local-enu output requires a dataset-derived local origin and must be created by a tileset source");if(t.outputCoordinates==="target-crs"&&!t.targetCrs)throw new Error("target-crs output requires targetCrs");if(!t.sourceCrs&&t.status==="unresolved")throw new Error("Cannot transform coordinates because the source CRS is unknown");if(Kr(t)&&t.heightReference==="unknown")throw new Error("Cannot convert heights because the source height reference is unknown");if(t.coordinateFrame==="geocentric"&&!ia(t.sourceCrs))throw new Error("Only EPSG:4978 geocentric coordinates are supported by the current spatial transformer");if(t.status==="unresolved")throw new Error("The requested spatial output cannot be resolved from the available metadata")}function ia(t){return typeof t=="string"&&vr(t)===Xn}function $f(t){if(typeof t!="string")return!1;let e=vr(t);return e===kt||e==="EPSG:4979"||e==="OGC:CRS84"}function Kr(t){let e=t.targetHeightReference;return e!=="native"&&e!==t.heightReference}function Kg(t){return typeof t=="string"?Oi(t):t}function Xg(t,e,r,n){if(r===n||n==="native")return t;if(r==="orthometric"&&n==="ellipsoidal")return t+e;if(r==="ellipsoidal"&&n==="orthometric")return t-e;throw new Error(`Unsupported height conversion from ${r} to ${n}`)}var yt=class{spatialReference;coordinateTransformer;geographicCoordinateTransformer;constructor(e,r={}){this.coordinateTransformer=new ke(e,r);let n={...e,sourceCrs:"EPSG:4326",targetCrs:e.targetCrs||e.sourceCrs,coordinateFrame:"geographic",axisOrder:"xy"};this.geographicCoordinateTransformer=new ke(n,r),this.spatialReference=e}transformPositions(e){return this.coordinateTransformer.transformPositions(e)}transformNormals(e,r){return this.coordinateTransformer.transformNormals(e,r)}transformBoundingVolume(e,r){let n=r?new G(Array.from(r)):void 0,i=e.region?Zg(e.region):Qg(e).map(s=>n?Array.from(n.transformAsPoint(s)):s);if(!i.length)return e;let o=e.region?i.map(s=>this.transformRegionSample(s)):i.map(s=>this.coordinateTransformer.transformPosition(s));return{box:Jg(o)}}transformRegionSample(e){let[r,n,i]=e,o=this.spatialReference.targetCrs||this.spatialReference.sourceCrs;if(o&&Me(o)==="geocentric"){let s=N.WGS84.cartographicToCartesian([r,n,i]);return Array.from(s)}return this.geographicCoordinateTransformer.transformPosition(e)}};function Zg(t){if(t.length<6||t.some(u=>!Number.isFinite(u)))return[];let[e,r,n,i,o,s]=t,a=n<e?n+Math.PI*2:n,c=Yf(e,a),l=Yf(r,i),h=[];for(let u of c)for(let f of l)for(let d of[o,s])h.push([u*180/Math.PI,f*180/Math.PI,d]);return h}function Yf(t,e){let r=[t,(t+e)/2,e],n=Math.PI/2,i=Math.ceil(t/n),o=Math.floor(e/n);for(let s=i;s<=o;s++)r.push(s*n);return r}function Qg(t){if(t.box&&t.box.length>=12){let e=t.box.slice(0,3),r=[t.box.slice(3,6),t.box.slice(6,9),t.box.slice(9,12)],n=[];for(let i=0;i<=4;i++)for(let o=0;o<=4;o++)for(let s=0;s<=4;s++){let a=i/2-1,c=o/2-1,l=s/2-1;n.push([e[0]+a*r[0][0]+c*r[1][0]+l*r[2][0],e[1]+a*r[0][1]+c*r[1][1]+l*r[2][1],e[2]+a*r[0][2]+c*r[1][2]+l*r[2][2]])}return n}if(t.sphere&&t.sphere.length>=4){let[e,r,n,i]=t.sphere,o=[[e-i,r,n],[e+i,r,n],[e,r-i,n],[e,r+i,n],[e,r,n-i],[e,r,n+i]];for(let s=0;s<16;s++){let a=s*Math.PI*2/16;o.push([e+i*Math.cos(a),r+i*Math.sin(a),n])}return o}return[]}function Jg(t){let e=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0];for(let o of t)for(let s=0;s<3;s++)e[s]=Math.min(e[s],o[s]),r[s]=Math.max(r[s],o[s]);let n=[Math.max((r[0]-e[0])*.01,1e-9),Math.max((r[1]-e[1])*.01,1e-9),Math.max((r[2]-e[2])*.01,1e-9)];return[...[(e[0]+r[0])/2,(e[1]+r[1])/2,(e[2]+r[2])/2],(r[0]-e[0])/2+n[0],0,0,0,(r[1]-e[1])/2+n[1],0,0,0,(r[2]-e[2])/2+n[2]]}function Kf(t,e){let r=t.map(([c,l])=>[c,l]);if(r.length===0)return r;let n=1/0,i=-1/0;for(let[c]of t)n=Math.min(n,c),i=Math.max(i,c);if(i-n>=360)return r;let o=e??r[0][0];for(let c of r){let l=c[0]-o;l>180?c[0]-=360*Math.ceil((l-180)/360):l<-180&&(c[0]+=360*Math.ceil((-l-180)/360)),o=c[0]}let s=t[0],a=t[t.length-1];if(s[0]===a[0]&&s[1]===a[1]){if(Math.abs(r[r.length-1][0]-r[0][0])>180)return t.map(([c,l])=>[c,l]);r[r.length-1]=[...r[0]]}return r}function e2(t){let e=1/0,r=1/0,n=-1/0,i=-1/0;for(let[o,s]of t)e=Math.min(e,o),r=Math.min(r,s),n=Math.max(n,o),i=Math.max(i,s);return[[e,r],[n,i]]}function Xf(t){let e=(r,n)=>{let i=t.cellToBoundary(r);return n?.unwrap?Kf(i,n.referenceLongitude):i};return{...t,cellToBoundary:e,cellToBoundaryFlat:(r,n)=>n?.unwrap?e(r,n).flat():t.cellToBoundaryFlat(r),cellToBounds:(r,n)=>{let i=t.cellToBounds(r);if(!n?.unwrap||i[1][0]-i[0][0]>=360)return i;let o=e2(e(r,n));return o[0][1]=i[0][1],o[1][1]=i[1][1],o}}}var t2=(1n<<64n)-1n,r2=0x1555555555555555n;function Qt(t){if(t==="X")return 0n;if(!Zf(t))throw new Error(`Invalid S2 token: ${t}`);let e=t.padEnd(16,"0");return BigInt(`0x${e}`)}function Xr(t){if(t===0n)return"X";if(!Jt(t))throw new Error(`Invalid S2 index: ${t}`);let e=n2(t),r=e%4;e=(e-r)/4;let n=e;e*=4;let o=(t>>BigInt(e)).toString(16).replace(/0+$/,"");return Array(17-n-o.length).join("0")+o}function Jt(t){if(typeof t!="bigint"||t<=0n||t>t2)return!1;let e=t>>61n,r=t&-t;return e<6n&&(r&r2)!==0n}function Zf(t){if(typeof t!="string"||!/^[0-9a-fA-F]{1,16}$/.test(t)||t.endsWith("0"))return!1;let e=t.padEnd(16,"0");return Jt(BigInt(`0x${e}`))}function n2(t){let e=0;for(;t%2n===0n;)t/=2n,e++;return e}function er(t){if(!Jt(t))throw new Error(`Invalid S2 index: ${t}`);let e=c2(t);return a2(e)}var i2=3,oa=30,o2=2*oa+1,Qf=180/Math.PI,s2={a:[[0,"d"],[1,"a"],[3,"b"],[2,"a"]],b:[[2,"b"],[1,"b"],[3,"a"],[0,"c"]],c:[[2,"c"],[3,"d"],[1,"c"],[0,"b"]],d:[[0,"a"],[3,"c"],[1,"d"],[2,"d"]]};function a2(t){if(!/^[0-5]\/[0-3]{0,30}$/.test(t))throw new Error(`Invalid S2 Hilbert quadkey: ${t}`);let e=t.split("/"),r=parseInt(e[0],10),n=e[1]||"",i=n.length,o=0,s=[0,0];for(let a=i-1;a>=0;a--){o=i-a;let c=n[a],l=0,h=0;c==="1"?h=1:c==="2"?(l=1,h=1):c==="3"&&(l=1);let u=Math.pow(2,o-1);l2(u,s,l,h),s[0]+=u*l,s[1]+=u*h}if(r%2===1){let a=s[0];s[0]=s[1],s[1]=a}return{face:r,ij:s,level:o}}function c2(t){if(!Jt(t))throw new Error(`Invalid S2 index: ${t}`);let e=t.toString(2);for(;e.length<i2+o2;)e="0"+e;let r=e.lastIndexOf("1"),n=e.substring(0,3),i=e.substring(3,r),o=i.length/2,s=BigInt(`0b${n}`).toString(10),a="";if(o!==0)for(a=BigInt(`0b${i}`).toString(4);a.length<o;)a="0"+a;return`${s}/${a}`}function e0(t){let{face:e,ij:r,level:n}=t;if(!Number.isInteger(e)||e<0||e>5)throw new Error(`Invalid S2 face: ${e}`);if(!Number.isInteger(n)||n<0||n>oa)throw new Error(`Invalid S2 level: ${n}`);let i=2**n;if(!Number.isInteger(r[0])||!Number.isInteger(r[1])||r[0]<0||r[1]<0||r[0]>=i||r[1]>=i)throw new Error(`Invalid S2 IJ coordinates: ${r[0]}, ${r[1]}`);let o=h2(r[0],r[1],n,e),s=BigInt(e)<<61n;for(let a=0;a<o.length;a++){let c=59-a*2;s|=BigInt(o[a])<<BigInt(c)}return s|=1n<<BigInt(60-n*2),s}function sa(t,e,r,n){let i=er(t);if(!Number.isInteger(e)||e<0||i.level+e>oa)throw new Error(`Invalid S2 relative level: ${e}`);let o=2**e;if(!Number.isInteger(r)||!Number.isInteger(n)||r<0||n<0||r>=o||n>=o)throw new Error(`Invalid S2 descendant coordinates: ${r}, ${n}`);return e0({face:i.face,ij:[i.ij[0]*o+r,i.ij[1]*o+n],level:i.level+e})}function Zr(t,e,r){let n=1<<e;return[(t[0]+r[0])/n,(t[1]+r[1])/n]}function Jf(t){return t>=.5?1/3*(4*t*t-1):1/3*(1-4*(1-t)*(1-t))}function Qr(t){return[Jf(t[0]),Jf(t[1])]}function Jr(t,[e,r]){switch(t){case 0:return[1,e,r];case 1:return[-e,1,r];case 2:return[-e,-r,1];case 3:return[-1,-r,-e];case 4:return[r,-1,-e];case 5:return[r,e,-1];default:throw new Error("Invalid face")}}function en([t,e,r]){let n=Math.atan2(r,Math.sqrt(t*t+e*e));return[Math.atan2(e,t)*Qf,n*Qf]}function l2(t,e,r,n){if(n===0){r===1&&(e[0]=t-1-e[0],e[1]=t-1-e[1]);let i=e[0];e[0]=e[1],e[1]=i}}function h2(t,e,r,n){let i=n%2===1?"d":"a",o=[];for(let s=r-1;s>=0;s--){let a=1<<s,c=(t&a)!==0?1:0,l=(e&a)!==0?1:0,[h,u]=s2[i][c*2+l];o.push(h),i=u}return o}var u2=100;function t0(t){let e=er(t);return f2(e)}function f2({face:t,ij:e,level:r}){let n=[[0,0],[0,1],[1,1],[1,0],[0,0]],i=Math.max(1,Math.ceil(u2*Math.pow(2,-r))),o=new Float64Array(4*i*2+2),s=0,a=0;for(let c=0;c<4;c++){let l=n[c].slice(0),h=n[c+1],u=(h[0]-l[0])/i,f=(h[1]-l[1])/i;for(let d=0;d<i;d++){l[0]+=u,l[1]+=f;let m=Zr(e,r,l),p=Qr(m),g=Jr(t,p),_=en(g);Math.abs(_[1])>89.999&&(_[0]=a);let y=_[0]-a;_[0]+=y>180?-360:y<-180?360:0,o[s++]=_[0],o[s++]=_[1],a=_[0]}}return o[s++]=o[0],o[s++]=o[1],o}var d2=Xf({name:"s2",hasNumericRepresentation:!0,cellColumnNames:["s2","s2Token","s2_token","s2Cell","s2_cell","s2CellId","s2_cell_id"],tokenToCell:t=>Qt(t),cellToToken:t=>Xr(Li(t)),cellToLngLat:t=>r0(t),cellToBoundary:t=>m2(t),cellToBoundaryFlat:t=>aa(t),cellToBounds:t=>Ni(t)});function r0(t){let e=Li(t),r=er(e),n=Zr(r.ij,r.level,[.5,.5]),i=Qr(n),o=Jr(r.face,i);return en(o)}function aa(t){let e=Li(t),r=t0(e);return Array.from(r)}function m2(t){let e=aa(t),r=[];for(let n=0;n<e.length;n+=2)r.push([e[n],e[n+1]]);return r}function Ni(t){let e=er(Li(t));if(e.level===0)return p2(e.face);let r=[[0,0],[0,1],[1,1],[1,0]],n=1/0,i=1/0,o=-1/0,s=-1/0,a;for(let l of r){let h=Zr(e.ij,e.level,l),u=Qr(h),[f,d,m]=Jr(e.face,u),[p,g]=en([f,d,m]);if(f===0&&d===0&&a!==void 0&&(p=a),a!==void 0){let _=p-a;p+=_>180?-360:_<-180?360:0}a=p,n=Math.min(n,p),i=Math.min(i,g),o=Math.max(o,p),s=Math.max(s,g)}let c=2*Number.EPSILON*180/Math.PI;return[[n-c,Math.max(-90,i-c)],[o+c,Math.min(90,s+c)]]}function Li(t){return typeof t=="bigint"?t:Qt(t)}function p2(t){let e=Math.asin(Math.sqrt(.3333333333333333))*180/Math.PI;switch(t){case 0:return[[-45,-45],[45,45]];case 1:return[[45,-45],[135,45]];case 2:return[[-180,e],[180,90]];case 3:return[[135,-45],[225,45]];case 4:return[[-135,-45],[-45,45]];case 5:return[[-180,-90],[180,-e]];default:throw new Error(`Invalid S2 face: ${t}`)}}function Gi(t){let[[e,r],[n,i]]=Ni(t.token),o=pr([e,r,n,i,t.minimumHeight,t.maximumHeight],N.WGS84,{units:"degrees"});return[...o.center,...o.halfAxes]}var g2=4,M2=8,n0=new WeakMap;function la(t,e){return{coordinates:e,subtreeUrl:rn(t.subtreesUrlTemplate,e),descriptor:t,resource:u0(t.resourceFiles,rn(t.subtreesUrlTemplate,e))}}function qi(t,e){let{descriptor:r}=e;b2(r),_2(t,r);let n={tileCount:0,childSubtreeCount:0},i=h0(t,e,{localLevel:0,mortonIndex:0},e.coordinates,n);if(!i)throw new Error(`Invalid 3D Tiles subtree: root tile is unavailable at ${e.subtreeUrl}`);return{root:i,...n}}function _2(t,e){let r=p0(e.subdivisionScheme),n=(r**e.subtreeLevels-1)/(r-1),i=r**e.subtreeLevels;ca(t.tileAvailability,n,"tile");let o=Array.isArray(t.contentAvailability)?t.contentAvailability:t.contentAvailability?[t.contentAvailability]:[];for(let c of o)ca(c,n,"content");ca(t.childSubtreeAvailability,i,"child subtree");let s=i0(t.tileAvailability,n),a=o[0]?i0(o[0],n):0;if(o0(t.tileAttributes,s,"tile"),o0(t.contentAttributes,a,"content"),t.tilePropertyRows&&t.tilePropertyRows.length!==s)throw new Error("3DTILES_subtree: tile property-table count does not match availability");if(t.contentPropertyRows&&t.contentPropertyRows.length!==a)throw new Error("3DTILES_subtree: content property-table count does not match availability")}function ca(t,e,r){if(!(t.constant===0||t.constant===1)&&(!t.explicitBitstream||t.explicitBitstream.byteLength*8<e))throw new Error(`3DTILES_subtree: ${r} availability bitstream is too short`)}function i0(t,e){if(t.constant===1)return e;if(t.constant===0)return 0;let r=0;for(let n=0;n<e;n++)tr(t,n)&&r++;return r}function o0(t,e,r){let n={TILE_BOUNDING_BOX:16,TILE_BOUNDING_SPHERE:4,TILE_GEOMETRIC_ERROR:1,TILE_REFINE:1,TILE_TRANSFORM:16,CONTENT_BOUNDING_BOX:16,CONTENT_BOUNDING_SPHERE:4};for(let[i,o]of Object.entries(t||{})){let s=n[i];if(s&&o.length!==e*s)throw new Error(`3DTILES_subtree: ${r} attribute ${i} count does not match availability`)}}function rn(t,e,r={}){let n={level:e.level,x:e.x,y:e.y,z:e.z,...r};return t.replace(/{([^{}]+)}/g,(i,o)=>{let s=Object.hasOwn(n,o)?n[o]:n[o.toLowerCase()];return s===void 0?i:String(s)})}function h0(t,e,r,n,i){let{descriptor:o}=e,s=p0(o.subdivisionScheme),a=w2(s,r.localLevel)+r.mortonIndex;if(!tr(t.tileAvailability,a))return null;i.tileCount++;let c=S2(t.contentAvailability,a),l=[];if(n.level<o.maximumLevel)if(r.localLevel+1<o.subtreeLevels)for(let h=0;h<s;h++){let u=c0(n,h,o.subdivisionScheme),f=h0(t,e,{localLevel:r.localLevel+1,mortonIndex:r.mortonIndex*s+h},u,i);f&&l.push(f)}else for(let h=0;h<s;h++){let u=r.mortonIndex*s+h;if(tr(t.childSubtreeAvailability,u)){let f=c0(n,h,o.subdivisionScheme);l.push(y2(t,o,f)),i.childSubtreeCount++}}return x2(t,o,e,n,a,c,l)}function y2(t,e,r){let n=f0(e.resourceFiles,t.resourceFiles),i=n?{...e,resourceFiles:n}:e,o=la(i,r);return{id:m0(o,r),children:[],implicitSubtree:o,boundingVolume:g0(e.rootBoundingVolume,r,e.subdivisionScheme),geometricError:e.rootLodMetricValue/2**r.level,lodMetricType:e.lodMetricType,lodMetricValue:e.rootLodMetricValue/2**r.level,refine:e.refine,type:Ze.EMPTY,implicitMetadata:d0(t),_scaleGeometricError:e.scaleGeometricError!==!1}}function s0(t,e,r){if(!t||e<0)return{};let n=tn(t[r==="tile"?"TILE_BOUNDING_BOX":"CONTENT_BOUNDING_BOX"],e,16),i=tn(t[r==="tile"?"TILE_BOUNDING_SPHERE":"CONTENT_BOUNDING_SPHERE"],e,4),o=n?{box:[n[12],n[13],n[14],n[0]/2,n[1]/2,n[2]/2,n[4]/2,n[5]/2,n[6]/2,n[8]/2,n[9]/2,n[10]/2]}:i?{sphere:i}:void 0;if(r==="content")return{boundingVolume:o};let s=tn(t.TILE_GEOMETRIC_ERROR,e,1)?.[0];if(s!==void 0&&(!Number.isFinite(s)||s<0))throw new Error("3DTILES_subtree: TILE_GEOMETRIC_ERROR must be nonnegative");let a=tn(t.TILE_REFINE,e,1)?.[0];if(a!==void 0&&a!==0&&a!==1)throw new Error("3DTILES_subtree: TILE_REFINE must be 0 or 1");return{boundingVolume:o,geometricError:s,refine:a===void 0?void 0:a===0?te.ADD:te.REPLACE,transform:tn(t.TILE_TRANSFORM,e,16)}}function tn(t,e,r){if(!t)return;let n=e*r;if(n+r>t.length)throw new Error("3DTILES_subtree: attribute accessor is shorter than availability");return Array.from({length:r},(i,o)=>Number(t[n+o]))}function a0(t,e){if(t.constant===1)return e;if(t.constant===0)return 0;let r=n0.get(t);if(!r){let n=(t.explicitBitstream?.byteLength||0)*8;r=new Uint32Array(n+1);for(let i=0;i<n;i++)r[i+1]=r[i]+Number(tr(t,i));n0.set(t,r)}return r[e]}function u0(t,e){if(!t?.length)return;let r=e.split("?")[0],n=/^gltf-package:\/\/[^/]+\/(.*)$/.exec(r)?.[1],i=t.findIndex(s=>{let a=s.originalUri||s.name;return s.uri===r||!!(a&&(r===a||n===a))});if(i>=0)return{fileIndex:i,files:t};let o=t.findIndex(s=>{let a=s.originalUri||s.name;return!!(a&&(r.endsWith(`/${a}`)||r.endsWith(`:${a}`)))});return o<0?void 0:{fileIndex:o,files:t}}function f0(t,e){if(!e?.length)return t;if(!t?.length)return e;let r=new Set(e.flatMap(n=>[n.uri,n.originalUri,n.name].filter(Boolean)));return[...e,...t.filter(n=>![n.uri,n.originalUri,n.name].some(i=>i&&r.has(i)))]}function x2(t,e,r,n,i,o,s){let a=a0(t.tileAvailability,i),c=t.tilePropertyRows?.[a],l=Array.isArray(t.contentAvailability)?t.contentAvailability[0]:t.contentAvailability,h=l&&tr(l,i)?a0(l,i):-1,u=t.contentPropertyRows?.[h],f=t.tileTemplatePropertyRows?.[a]||c,d=t.contentTemplatePropertyRows?.[h]||u,m={...f,...d},p=s0(t.tileAttributes,a,"tile"),g=s0(t.contentAttributes,h,"content"),y=(e.contentUrlTemplates?.length?e.contentUrlTemplates:[e.contentUrlTemplate]).map((b,I)=>{if(!o[I]||!b)return null;let A=rn(b,n,m);if(/{[^{}]+}/.test(A))throw new Error(`Implicit content URI has unresolved template values: ${A}`);return{contentIndex:I,contentUrl:A}}).filter(b=>!!b),S=y.map(b=>b.contentUrl),x=f0(e.resourceFiles,t.resourceFiles),w=y.map(({contentIndex:b,contentUrl:I})=>{let A=u0(x,I);return{...e.contentHeaders?.[b]||(b===0?e.contentHeader:{})||{},...g,uri:I,...u?{metadata:{properties:u}}:{},...A?{_resource:A}:{}}}),T=S[0],v=e.rootLodMetricValue/2**n.level,C=p.geometricError??v,O=g0(e.rootBoundingVolume,n,e.subdivisionScheme);return{id:m0(r,n),children:s,contentUrl:T,content:w.length>1?w:w[0],contents:e.useCanonicalContents&&w.length?w:void 0,contentUrls:S,refine:p.refine||e.refine,type:T2(T),lodMetricType:e.lodMetricType,lodMetricValue:C,geometricError:C,boundingVolume:p.boundingVolume||O,transform:p.transform,transformMatrix:p.transform,metadata:c?{properties:c}:void 0,implicitMetadata:d0(t,c,u),_scaleGeometricError:e.scaleGeometricError!==!1}}function d0(t,e,r){if(!(!t.propertyTables&&t.tileMetadata===void 0&&!t.contentMetadata&&t.subtreeMetadata===void 0&&!e&&!r))return{propertyTables:t.propertyTables,tileMetadata:t.tileMetadata,contentMetadata:t.contentMetadata,subtreeMetadata:t.subtreeMetadata,tileProperties:e,contentProperties:r}}function m0(t,e){return`${t.subtreeUrl}#implicit=${e.level}/${e.x}/${e.y}/${e.z}`}function tr(t,e){if(typeof t?.constant=="number")return!!t.constant;let r=t?.explicitBitstream;if(!r)return!1;let n=Math.floor(e/8),i=e%8;return!!(r[n]>>i&1)}function S2(t,e){return(Array.isArray(t)?t:[t]).map(n=>tr(n||{constant:0},e))}function w2(t,e){return(t**e-1)/(t-1)}function c0(t,e,r){return{level:t.level+1,x:t.x*2+(e&1),y:t.y*2+(e>>1&1),z:r==="OCTREE"?t.z*2+(e>>2&1):0}}function p0(t){return t==="OCTREE"?M2:g2}function g0(t,e,r){if(t.region){let[n,i,o,s,a,c]=t.region,l=2**e.level,u=(o>=n?o-n:o+2*Math.PI-n)/l,f=(s-i)/l,d=l0(n+u*e.x),m=l0(n+u*(e.x+1)),p=i+f*e.y,g=a,_=c;if(r==="OCTREE"){let y=(c-a)/l;g=a+y*e.z,_=g+y}return{region:[d,p,m,p+f,g,_]}}if(t.box){if(t.s2VolumeInfo)return E2(t,e,r);if(t.extensions?.["3DTILES_shape_cylinder_region"])return{...t,box:[...t.box]};let n=t.box,i=2**e.level,o=-1+(2*e.x+1)/i,s=-1+(2*e.y+1)/i,a=-1+(2*e.z+1)/i,c=r==="OCTREE";return{box:[...[n[0]+n[3]*o+n[6]*s+(c?n[9]*a:0),n[1]+n[4]*o+n[7]*s+(c?n[10]*a:0),n[2]+n[5]*o+n[8]*s+(c?n[11]*a:0)],n[3]/i,n[4]/i,n[5]/i,n[6]/i,n[7]/i,n[8]/i,c?n[9]/i:n[9],c?n[10]/i:n[10],c?n[11]/i:n[11]]}}throw new Error(`Unsupported implicit 3D Tiles bounding volume: ${JSON.stringify(t)}`)}function E2(t,e,r){let n=t.s2VolumeInfo,i=Qt(n.token),o=sa(i,e.level,e.x,e.y),s=2**e.level,a=(n.maximumHeight-n.minimumHeight)/s,c={token:Xr(o),minimumHeight:n.minimumHeight+(r==="OCTREE"?a*e.z:0),maximumHeight:n.minimumHeight+(r==="OCTREE"?a*(e.z+1):a*s)},l=t.extensions?{...t.extensions}:void 0;return l?.["3DTILES_bounding_volume_S2"]&&(l["3DTILES_bounding_volume_S2"]=c),l?.["3DTILES_shape_s2"]&&(l["3DTILES_shape_s2"]=c),{...t,...l?{extensions:l}:{},s2VolumeInfo:c,box:Gi(c)}}function l0(t){let e=t;for(;e>Math.PI;)e-=2*Math.PI;for(;e<-Math.PI;)e+=2*Math.PI;return e}function T2(t){if(!t)return Ze.EMPTY;let e=t.split("?")[0].split(".").pop()?.toLowerCase();switch(e){case"pnts":return Ze.POINTCLOUD;case"i3dm":case"b3dm":case"glb":case"gltf":return Ze.SCENEGRAPH;default:return e||Ze.EMPTY}}function b2(t){if(t.subdivisionScheme!=="QUADTREE"&&t.subdivisionScheme!=="OCTREE")throw new Error(`Unsupported implicit subdivision scheme: ${t.subdivisionScheme}`);if(!Number.isInteger(t.subtreeLevels)||t.subtreeLevels<1)throw new Error("Implicit subtreeLevels must be a positive integer");if(!Number.isInteger(t.maximumLevel)||t.maximumLevel<0)throw new Error("Implicit availableLevels must describe at least the root level")}var v2={draco:!1,meshopt:!1,dds:!1,ktx2:!1},P2=32,zi=class{type=he.TILES3D;loader;url;basePath;tileset=null;loadOptions;coreApi;contentFormats={...v2};asset;properties;extras;credits;metadata;queryParams={};tileUrlCache=new Map;tileContentHeaders=new WeakMap;nestedTilesetRoots=new WeakMap;packageNamespaces=new WeakMap;nextPackageNamespace=0;implicitSubtreeCache;implicitTilingStats={requestedSubtrees:0,loadedSubtrees:0,cacheHits:0,materializedTiles:0};destroyed=!1;extensionsUsed=[];resolver;rootTileset;spatialTransformer;preparedRootHeader;constructor(e,r={}){let n=R2(e);this.rootTileset=_0(e)?null:e,this.tileset=this.rootTileset,this.loader=n.loader,this.url=n.url,this.basePath=n.basePath||ve.dirname(n.url),this.resolver=n.resolver,this.coreApi=n.coreApi,this.loadOptions=r;let i=Number(r["3d-tiles"]?.maximumCachedSubtrees),o=Number.isFinite(i)?Math.max(0,Math.floor(i)):P2;this.implicitSubtreeCache=new Mr({maxEntries:o})}destroy(){this.destroyed=!0,this.tileUrlCache.clear(),this.implicitSubtreeCache.clear()}async initialize(){if(!this.rootTileset){let e=this.loadOptions[this.loader.id]||{};this.rootTileset=await this.loadRootData(this.url,{...this.loadOptions,[this.loader.id]:{...e,isTileset:!0}})}if(this.tileset=this.rootTileset,this.rootTileset.queryString){let e=new URLSearchParams(this.rootTileset.queryString);for(let[r,n]of e.entries())this.setQueryParameter(r,n)}if(this.asset=this.rootTileset.asset,!this.asset)throw new Error("Tileset must have an asset property.");if(this.rootTileset.formatVersion!=="2.0-draft"&&this.asset.version!=="0.0"&&this.asset.version!=="1.0"&&this.asset.version!=="1.1")throw new Error("The tileset must be 3D Tiles version 0.0, 1.0, 1.1, or 2.0-draft.");"tilesetVersion"in this.asset&&this.setQueryParameter("v",this.asset.tilesetVersion),this.properties=this.rootTileset.properties,this.extras=this.rootTileset.extras,this.credits={attributions:[]},this.extensionsUsed.splice(0,this.extensionsUsed.length,...this.rootTileset.extensionsUsed||[]),this.metadata={type:this.type,loader:this.loader,url:this.url,basePath:this.basePath,tileset:this.rootTileset,lodMetricType:this.rootTileset.lodMetricType,lodMetricValue:this.rootTileset.lodMetricValue,refine:this.rootTileset.root?.refine,spatialReference:ci(this.rootTileset)}}getMetadata(){if(!this.metadata)throw new Error("Tiles3DSource has not been initialized");return this.metadata}async getRootTileset(){return this.getMetadata().tileset}async prepareTileset(e){let r=e.spatialReference;if(r.status==="unresolved")throw new Error(r.warnings[0]||"3D Tiles spatial operations cannot be resolved from the supplied metadata and options");r.status!=="transformable"&&r.status!=="transformed"||(this.spatialTransformer||=new yt(r,e.options.spatial),e.spatialReference=Ft(r),this.preparedRootHeader=this.transformTileHeader(this.getMetadata().tileset.root,new G))}initializeTileHeaders(e,r,n){let i=n?r.root:this.preparedRootHeader||r.root,o=new Re(e,i,n||void 0);n&&(n.children.push(o),o.depth=n.depth+1);let s=[o];for(;s.length>0;){let a=s.pop();e.stats.get("Tiles In Tileset(s)").incrementCount();let c=a.header.children||[];for(let l of c){let h=new Re(e,l,a);if(h.contentUrl?.includes("?session=")){let f=new URL(h.contentUrl).searchParams.get("session");f&&this.setQueryParameter("session",f)}a.children.push(h),h.depth=a.depth+1,s.push(h)}}return o}createTraverser(e){return new si(e)}async loadTileContent(e){let r=(e.contentUrls||[e.contentUrl]).filter(Boolean),n=this.tileContentHeaders.get(e),i=n||(Array.isArray(e.header?.content)?e.header.content:e.header?.content?[e.header.content]:[]);n||this.tileContentHeaders.set(e,i);let o=this.loadOptions[this.loader.id]||{},s={...this.loadOptions,[this.loader.id]:{...o,isTileset:"auto",assetGltfUpAxis:this.asset&&this.asset.gltfUpAxis||"Y",_tilesetOptions:{spatialReference:e.header?._spatialReference||e.tileset?.spatialReference,spatialOptions:e.tileset?.options.spatial,spatialTransform:e.header?._spatialTransform}}},a=await Promise.all(r.map((l,h)=>{let u=i[h]||{},f=u.extensions?.["3DTILES_content_gltf_vector"],d=u._vectorContent||(f?.vector===!0?{clip:f.clip===!0}:void 0),m=d?{...s,[this.loader.id]:{...s[this.loader.id],vectorContent:d}}:s;return this.loadContentResource(this.getTileUrl(l),u._resource,m)}));e.contents=a,e.content=a[0]||null;let c=a.filter(l=>l?.shape==="tileset3d");return{loaded:!0,contents:a,nestedTileset:c[0],nestedTilesets:c}}transformTileHeader(e,r=new G){return this.spatialTransformer?this.transformTileHeaderWithTransformer(e,this.spatialTransformer,r):e}transformTileHeaderWithTransformer(e,r,n,i){let o=e.transform?new G(e.transform):new G,s=new G(n).multiplyRight(o),a=Array.isArray(e.content)?e.content.map(c=>this.transformContentHeader(c,s,r)):e.content?this.transformContentHeader(e.content,s,r):e.content;return{...e,transform:void 0,boundingVolume:e.boundingVolume?r.transformBoundingVolume(e.boundingVolume,s):e.boundingVolume,_spatialReference:i,_spatialTransform:s.toArray(),content:a,children:Array.isArray(e.children)?e.children.map(c=>this.transformTileHeaderWithTransformer(c,r,s,i)):e.children}}transformContentHeader(e,r,n){return{...e,boundingVolume:e.boundingVolume?n.transformBoundingVolume(e.boundingVolume,r):e.boundingVolume}}async loadTileChildren(e,r){let n=e.header.implicitSubtree;if(!n)return{loaded:!1,tileCount:0,childSubtreeCount:0};let i=this.getTileUrl(n.subtreeUrl),o=await this.loadImplicitSubtreeResource(i,n.resource);if(this.destroyed||e.isDestroyed())return{loaded:!1,tileCount:0,childSubtreeCount:0};let s=qi(o,{...n,subtreeUrl:i}),a=e.header._spatialReference,c=a?new yt(a,e.tileset.options.spatial):this.spatialTransformer,l=c?this.transformTileHeaderWithTransformer(s.root,c,new G,a):s.root;e.applyImplicitSubtreeHeader(l);let h=this.initializeMaterializedChildren(e.tileset,e,l.children);return this.implicitTilingStats.loadedSubtrees++,this.implicitTilingStats.materializedTiles+=h,{loaded:!0,tileCount:s.tileCount,childSubtreeCount:s.childSubtreeCount}}async loadTileChildrenForTraversal(e,r){M0(r);let n=await this.loadTileChildren(e,{});return M0(r),n}getImplicitTilingStats(){return{...this.implicitTilingStats,cachedSubtrees:this.implicitSubtreeCache.size-this.implicitSubtreeCache.pendingSize,pendingSubtrees:this.implicitSubtreeCache.pendingSize}}getTileUrl(e){if(e.startsWith("data:"))return e;let r=this.tileUrlCache.get(e);if(r)return r;if(!Object.keys(this.queryParams).length)return this.tileUrlCache.set(e,e),e;let[n,i=""]=e.split("?"),o=new URLSearchParams(i);for(let[c,l]of Object.entries(this.queryParams))o.has(c)||o.set(c,l);let s=o.toString(),a=s?`${n}?${s}`:n;return this.tileUrlCache.set(e,a),a}setQueryParameter(e,r){this.queryParams[e]!==r&&(this.queryParams[e]=r,this.tileUrlCache.clear())}getViewState(e){if(!e)return{asset:this.asset,properties:this.properties,extras:this.extras,credits:this.credits};let{center:r}=e.boundingVolume,n;return r&&(r[0]!==0||r[1]!==0||r[2]!==0)?(n=new M,N.WGS84.cartesianToCartographic(r,n)):n=new M(0,0,-N.WGS84.radii[0]),{asset:this.asset,properties:this.properties,extras:this.extras,credits:this.credits,boundingVolume:e.boundingVolume,cartographicCenter:n,cartesianCenter:r,zoom:rh(e.boundingVolume,n)}}hasExtension(e){return this.extensionsUsed.includes(e)}onTileLoaded(e,r,n){let o=(r.contents.length?r.contents:[r.content]).flatMap(c=>c?.gltf?.extensionsRemoved||[]);o.includes("KHR_draco_mesh_compression")&&(this.contentFormats.draco=!0),o.includes("EXT_meshopt_compression")&&(this.contentFormats.meshopt=!0),o.includes("KHR_texture_basisu")&&(this.contentFormats.ktx2=!0);let s=n.nestedTilesets||(n.nestedTileset?[n.nestedTileset]:[]),a=this.nestedTilesetRoots.get(r)||[];for(let[c,l]of s.entries()){let h=a[c];if(h&&r.children.includes(h))continue;let u=a.slice(c+1).find(d=>r.children.includes(d)),f=e._initializeTileHeaders(this.prepareNestedTileset(e,l),r);u&&(r.children.splice(r.children.indexOf(f),1),r.children.splice(r.children.indexOf(u),0,f)),a[c]=f,this.nestedTilesetRoots.set(r,a)}}prepareNestedTileset(e,r){let n=r.spatialMetadata,i=e.spatialReference;if(n?.status==="unresolved"||n?.crs.state==="unknown")throw new Error(n.warnings[0]||"Nested 3D Tiles CRS is explicitly unresolved and cannot be placed in the parent frame");if(!n||!n.sourceCrs)return this.spatialTransformer&&(i.status==="transformable"||i.status==="transformed")?{...r,spatialMetadata:i,root:this.transformTileHeaderWithTransformer(r.root,this.spatialTransformer,new G,i)}:ha(r,i);let o=i.coordinateEpoch,s=n.coordinateEpoch;if(o!==void 0&&s!==void 0&&o!==s)throw new Error(`Nested 3D Tiles coordinate epoch ${s} differs from parent epoch ${o}; epoch-aware transformation is unavailable`);let a=i.targetCrs||i.sourceCrs;if(!a)return ha(r,n);let c=Et(n,{...e.options.spatial,outputCoordinates:"target-crs",targetCrs:a});if(c.status==="unresolved")throw new Error(c.warnings[0]||"Nested 3D Tiles CRS cannot be resolved in the parent output frame");if(c.status==="native")return ha(r,c);let l=new yt(c,e.options.spatial);return{...r,spatialMetadata:c,root:this.transformTileHeaderWithTransformer(r.root,l,new G,c)}}async loadWithCoreApi(e,r,n=this.loader){if(!this.coreApi)throw new Error("Tiles3DSource requires an injected coreApi to load tileset data");return await this.coreApi.load(e,n,r)}async loadRootData(e,r){return this.resolver?await this.resolver.loadRoot(e,this.loader,r):await this.loadWithCoreApi(e,r)}async loadResourceData(e,r,n=this.loader){return this.resolver?await this.resolver.loadResource(e,n,r):await this.loadWithCoreApi(e,r,n)}async loadContentResource(e,r,n){if(!r)return await this.loadResourceData(e,n);let i=r.files[r.fileIndex];if(!i)throw new Error(`3D Tiles package references missing file ${r.fileIndex}`);if(i.uri)return await this.loadResourceData(this.getTileUrl(i.uri),n);if(!this.coreApi)throw new Error("Tiles3DSource requires an injected coreApi to parse embedded package data");let o=await this.getPackageFileData(i),a=`gltf-package://${this.getPackageNamespace(r.files)}/${r.fileIndex}`,c=i.name||"content",l=c.lastIndexOf("/"),h=l>=0?`${a}/${c.slice(0,l)}`:a;return await this.coreApi.parse(o,this.loader,n,{url:`${a}/${c}`,filename:c,baseUrl:h,loaders:[this.loader],coreApi:this.coreApi,_parse:this.coreApi.parse,_tiles3dPackageFiles:r.files,fetch:async(u,f)=>{let d=u.startsWith(`${a}/`)?u.slice(a.length+1):u,m=r.files.find(g=>g.name===d||g.originalUri===d);if(!m)throw new Error(`3D Tiles glTF package does not contain file ${d}`);if(m.uri)return await this.coreApi.fetchFile(this.getTileUrl(m.uri),f);let p=await this.getPackageFileData(m);return new Response(p,{headers:{"content-type":m.mimeType}})}})}getPackageNamespace(e){let r=this.packageNamespaces.get(e);if(r!==void 0)return r;let n=this.nextPackageNamespace++;return this.packageNamespaces.set(e,n),n}async getPackageFileData(e){if(e.data)return Nn(e.data,e.byteOffset,e.byteLength);if(e.bufferUri&&this.coreApi){let r=await this.coreApi.fetchFile(this.getTileUrl(e.bufferUri));if(!r.ok)throw new Error(`Failed to fetch 3D Tiles package buffer: HTTP ${r.status}`);let n=await r.arrayBuffer();return Nn(n,e.byteOffset,e.byteLength)}throw new Error("3D Tiles package file has no available byte source")}async loadImplicitSubtreeResource(e,r){let n=this.implicitSubtreeCache.get(e);if(n)return this.implicitTilingStats.cacheHits++,await n;this.implicitTilingStats.requestedSubtrees++;let i=this.loadOptions[this.loader.id]||{};return await this.implicitSubtreeCache.getOrLoad(e,async()=>{let o={...this.loadOptions,[this.loader.id]:{...i,isTileset:!1,isSubtree:!0}};return await(r?this.loadContentResource(e,r,o):this.loadResourceData(e,o))})}initializeMaterializedChildren(e,r,n){let i=0,o=[{parentTile:r,childHeaders:n}];for(;o.length>0;){let s=o.pop();for(let a of s.childHeaders){let c=new Re(e,a,s.parentTile);s.parentTile.children.push(c),c.depth=s.parentTile.depth+1,e.stats.get("Tiles In Tileset(s)").incrementCount(),i++,a.children?.length&&o.push({parentTile:c,childHeaders:a.children})}}return i}};function M0(t){if(t?.aborted)throw t.reason??new DOMException("The operation was aborted","AbortError")}function _0(t){return!!(t&&typeof t=="object"&&"url"in t&&"loader"in t&&!("type"in t))}function R2(t){return _0(t)?{...t,basePath:t.basePath||ve.dirname(t.url)}:{url:t.url,loader:t.loader,basePath:t.basePath||ve.dirname(t.url),resolver:t.resolver,coreApi:t.coreApi}}function ha(t,e){let r=n=>({...n,_spatialReference:e,children:Array.isArray(n.children)?n.children.map(r):n.children});return{...t,spatialMetadata:e,root:r(t.root)}}var Bi=class{frameNumberMap=new Map;register(e,r){let n=this.frameNumberMap.get(e)||new Map,i=n.get(r)||0;n.set(r,i+1),this.frameNumberMap.set(e,n)}deregister(e,r){let n=this.frameNumberMap.get(e);if(!n)return;let i=n.get(r)||1;n.set(r,i-1)}isZero(e,r){return(this.frameNumberMap.get(e)?.get(r)||0)===0}};var ua={REQUESTED:"REQUESTED",COMPLETED:"COMPLETED",ERROR:"ERROR"},Di=class{_statusMap;pendingTilesRegister=new Bi;constructor(){this._statusMap={}}add(e,r,n,i){if(!this._statusMap[r]){let{frameNumber:o,viewport:{id:s}}=i;this._statusMap[r]={request:e,callback:n,key:r,frameState:i,status:ua.REQUESTED},this.pendingTilesRegister.register(s,o),e().then(a=>{this._statusMap[r].status=ua.COMPLETED;let{frameNumber:c,viewport:{id:l}}=this._statusMap[r].frameState;this.pendingTilesRegister.deregister(l,c),this._statusMap[r].callback(a,i)}).catch(a=>{this._statusMap[r].status=ua.ERROR;let{frameNumber:c,viewport:{id:l}}=this._statusMap[r].frameState;this.pendingTilesRegister.deregister(l,c),n(a)})}}update(e,r){if(this._statusMap[e]){let{frameNumber:n,viewport:{id:i}}=this._statusMap[e].frameState;this.pendingTilesRegister.deregister(i,n);let{frameNumber:o,viewport:{id:s}}=r;this.pendingTilesRegister.register(s,o),this._statusMap[e].frameState=r}}find(e){return this._statusMap[e]}hasPendingTiles(e,r){return!this.pendingTilesRegister.isZero(e,r)}};var ki=class extends Qe{_tileManager;constructor(e){super(e),this._tileManager=new Di}traversalFinished(e){return!this._tileManager.hasPendingTiles(e.viewport.id,this._frameNumber||0)}shouldRefine(e,r){return e._lodJudge=oi(e,r),e._lodJudge==="DIG"}updateChildTiles(e,r){let n=e.header.children||[],i=e.children;for(let o of n){let s=`${o.id}-${r.viewport.id}`,a=i&&i.find(c=>c.id===s||c.header?.id===o.id);if(a)a&&this.updateTile(a,r);else{let c=()=>this._loadTile(e,o.id,r);this._tileManager.find(s)?this._tileManager.update(s,r):this._tileManager.add(c,s,h=>this._onTileLoad(h,e,s),r)}}return!1}async _loadTile(e,r,n){if(!e.tileset.source.loadChildTileHeader)throw new Error("I3S source does not support child tile header loading");return await e.tileset.source.loadChildTileHeader(e,r,n)}_onTileLoad(e,r,n){if(e instanceof Error){r.tileset._onSourceError(e,r);return}let i=new Re(r.tileset,e,r,n);r.children.push(i);let o=this._tileManager.find(i.id).frameState;this.updateTile(i,o),this._frameNumber===o.frameNumber&&(this.traversalFinished(o)||new Date().getTime()-this.lastUpdate>this.updateDebounceTime)&&this.executeTraversal(i,o)}};var nr=class{spatialReference;targetCoordinateFrame;positionTransformer;sourceToGeographicTransformer;geographicToTargetTransformer;sourceCoordinateFrame;sourceVerticalUnitScale;elevationMode;elevationOffset;elevationProvider;providerUnitScale;providerHeightTransformer;constructor(e,r={}){if(e.status!=="transformable"&&e.status!=="transformed")throw new Error("I3SSpatialTransformer requires a requested, transformable spatial output");let n=e.targetCrs||e.sourceCrs;if(!n)throw new Error("I3S spatial transformation requires a target CRS");if(this.positionTransformer=new ke(e,r),this.sourceCoordinateFrame=e.coordinateFrame,this.sourceVerticalUnitScale=e.verticalUnitScale,this.elevationMode=e.elevationMode,this.elevationOffset=(e.elevationOffset||0)*e.elevationUnitScale,this.elevationProvider=C2(this.elevationMode,r),this.elevationProvider&&(typeof this.elevationProvider.sampleElevations!="function"||typeof this.elevationProvider.getElevationRange!="function"))throw new Error("An I3S elevation provider must implement sampleElevations() and getElevationRange()");let i=Rr(this.elevationProvider?.unit||"meter");if(this.elevationProvider&&i===void 0)throw new Error(`Unsupported elevation-provider unit ${this.elevationProvider.unit}`);this.providerUnitScale=i||1,this.targetCoordinateFrame=Me(n),this.spatialReference=Ft(e);let o=Pe({sourceCrs:e.sourceCrs,heightReference:e.heightReference,coordinateFrame:e.coordinateFrame,axisOrder:e.axisOrder,provenance:e.provenance},{targetCrs:"EPSG:4326"});if(this.sourceToGeographicTransformer=new ke(o),rr(this.elevationMode)){if(!this.elevationProvider){let c=this.elevationMode==="relativeToScene"?"scene":"terrain";throw new Error(`I3S elevation mode ${this.elevationMode} requires a ${c} elevation provider`)}if(e.heightReference==="unknown")throw new Error(`I3S elevation mode ${this.elevationMode} requires a known source height reference`);let a=this.elevationProvider.heightReference||e.heightReference;if(a!==e.heightReference){if(e.heightReference!=="ellipsoidal"&&e.heightReference!=="orthometric")throw new Error("Converting elevation-provider heights requires an ellipsoidal or orthometric source height reference");let c=Pe({sourceCrs:"EPSG:4326",heightReference:a,coordinateFrame:"geographic",axisOrder:"xyz",provenance:"caller-override"},{targetCrs:"EPSG:4326",targetHeightReference:e.heightReference,geoidModel:r.geoidModel});this.providerHeightTransformer=new ke(c,r)}}let s=Pe({sourceCrs:"EPSG:4326",heightReference:e.heightReference,coordinateFrame:"geographic",axisOrder:"xyz",provenance:"format-default"},{targetCrs:n,targetHeightReference:e.targetHeightReference,geoidModel:r.geoidModel});this.geographicToTargetTransformer=new ke(s,r)}transformPosition(e){let r=this.placeSourcePositionsSync(e),n=this.positionTransformer.transformPosition([r[0],r[1],r[2]]);return[n[0],n[1],n[2]]}async transformPositionAsync(e){let r=await this.placeSourcePositions(e),n=this.positionTransformer.transformPosition([r[0],r[1],r[2]]);return[n[0],n[1],n[2]]}transformPlacedPosition(e){let r=this.positionTransformer.transformPosition([e[0],e[1],e[2]]);return[r[0],r[1],r[2]]}transformSourcePositionToGeographic(e){let r=this.placeSourcePositionsSync(e),n=this.sourceToGeographicTransformer.transformPosition([r[0],r[1],r[2]]);return[n[0],n[1],n[2]]}async transformSourcePositionToGeographicAsync(e){let r=await this.placeSourcePositions(e),n=this.sourceToGeographicTransformer.transformPosition([r[0],r[1],r[2]]);return[n[0],n[1],n[2]]}transformPositions(e,r){let n=this.placeSourcePositionsSync(e),i=this.placeSourcePositionsSync(r);return this.transformPlacedPositions(n,i)}async transformPositionsAsync(e,r){let n=new Float64Array(e.length+3);n.set(Array.from(e),0),n.set(Array.from(r).slice(0,3),e.length);let i=await this.placeSourcePositions(n);return this.transformPlacedPositions(i.subarray(0,e.length),i.subarray(e.length))}transformPlacedPositions(e,r){let n=this.transformPlacedPosition(r),i=new Float32Array(e.length),o=Float64Array.from(e);for(let c=0;c<e.length;c+=3){let l=this.transformPlacedPosition([e[c],e[c+1],e[c+2]]);i[c]=l[0]-n[0],i[c+1]=l[1]-n[1],i[c+2]=l[2]-n[2]}let s=this.targetCoordinateFrame==="geographic",a=s?new G:new G().translate(n);return{positions:i,sourcePositions:o,origin:n,cartographicOrigin:s?n:[0,0,0],coordinateSystem:s?"lnglat-offsets":"cartesian",modelMatrix:a}}transformNormals(e,r,n="earth-centered"){let i=new Float32Array(e.length);for(let o=0;o<e.length;o+=3){let s=this.sourceToGeographicTransformer.transformPosition([r[o],r[o+1],r[o+2]]),a=new M([e[o],e[o+1],e[o+2]]).normalize(),c=n==="earth-centered"?a:E0(a,s),l=this.transformEcefNormal(c,s);i.set(l,o)}return i}transformBoundingVolume(e){let n=this.getGeographicBoundSamples(e).map(i=>this.geographicToTargetTransformer.transformPosition(i));return this.targetCoordinateFrame==="geographic"?{region:xt(n)}:{box:Ct(n)}}async transformBoundingVolumeAsync(e){let n=(await this.getGeographicBoundSamplesAsync(e)).map(i=>this.geographicToTargetTransformer.transformPosition(i));return this.targetCoordinateFrame==="geographic"?{region:xt(n)}:{box:Ct(n)}}transformBoundingVolumeToGeographic(e){return{region:xt(this.getGeographicBoundSamples(e))}}async transformBoundingVolumeToGeographicAsync(e){return{region:xt(await this.getGeographicBoundSamplesAsync(e))}}transformBoundingVolumeToGeocentric(e){let r=this.getGeographicBoundSamples(e).map(n=>Array.from(N.WGS84.cartographicToCartesian(new M(n))));return{box:Ct(r)}}async transformBoundingVolumeToGeocentricAsync(e){let r=(await this.getGeographicBoundSamplesAsync(e)).map(n=>Array.from(N.WGS84.cartographicToCartesian(new M(n))));return{box:Ct(r)}}transformBoundingSphereToGeographic(e){let r=e.mbs?.length?Array.from(e.mbs).slice(0,3):e.obb?Array.from(e.obb.center).slice(0,3):null;if(!r)throw new Error("I3S spatial transformation requires an MBS or OBB bound");let n=this.placeSourcePositionsSync(r),i=this.sourceToGeographicTransformer.transformPosition(Array.from(n)),o=e.mbs?.length?e.mbs[3]:Math.hypot(...Array.from(e.obb.halfSize).slice(0,3));return[i[0],i[1],i[2],o]}async transformBoundingSphereToGeographicAsync(e){return y0(await this.getGeographicBoundSamplesAsync(e))}async transformBoundsAsync(e){let r=await this.getGeographicBoundSamplesAsync(e),n=r.map(o=>Array.from(N.WGS84.cartographicToCartesian(new M(o)))),i=r.map(o=>this.geographicToTargetTransformer.transformPosition(o));return{boundingVolume:{box:Ct(n)},spatialBoundingVolume:this.targetCoordinateFrame==="geographic"?{region:xt(i)}:{box:Ct(i)},i3sLodMbs:rr(this.elevationMode)?y0(r):this.transformBoundingSphereToGeographic(e)}}async transformPointCloudBoundsAsync(e){let r=await this.getGeographicBoundSamplesAsync(e),n=r.map(i=>this.geographicToTargetTransformer.transformPosition(i));return{boundingVolume:{region:xt(r)},spatialBoundingVolume:this.targetCoordinateFrame==="geographic"?{region:xt(n)}:{box:Ct(n)}}}getGeographicBoundSamples(e){let r=x0(e,this.sourceCoordinateFrame,this.sourceToGeographicTransformer,this.sourceVerticalUnitScale);if(!r.length)throw new Error("I3S spatial transformation requires an MBS or OBB bound");let n=this.placeSourcePositionsSync(r.flat(),!0),i=fa(n);return this.sourceCoordinateFrame==="geographic"?i:i.map(o=>this.sourceToGeographicTransformer.transformPosition(o))}async getGeographicBoundSamplesAsync(e){let r=x0(e,this.sourceCoordinateFrame,this.sourceToGeographicTransformer,this.sourceVerticalUnitScale);if(!r.length)throw new Error("I3S spatial transformation requires an MBS or OBB bound");if(rr(this.elevationMode)){let i=this.sourceCoordinateFrame==="geographic"?r:r.map(o=>this.sourceToGeographicTransformer.transformPosition(o));return await this.placeGeographicBoundSamples(i)}let n=fa(await this.placeSourcePositions(r.flat(),!0));return this.sourceCoordinateFrame==="geographic"?n:n.map(i=>this.sourceToGeographicTransformer.transformPosition(i))}async placeGeographicBoundSamples(e){let n=await this.elevationProvider.getElevationRange(A2(e)),i=n.minimum*this.providerUnitScale,o=n.maximum*this.providerUnitScale;if(!Number.isFinite(i)||!Number.isFinite(o)||i>o)throw new Error("Elevation provider returned an invalid range; minimum and maximum must be finite and ordered");let s=e.map(h=>h[2]),a=Math.min(...s),c=Math.max(...s),l=[];for(let[h,u]of e){let f=this.providerHeightTransformer?this.providerHeightTransformer.transformPosition([h,u,i])[2]:i,d=this.providerHeightTransformer?this.providerHeightTransformer.transformPosition([h,u,o])[2]:o,m=Math.min(f,d),p=Math.max(f,d),g=this.elevationMode==="onTheGround"?m:m+a+this.elevationOffset,_=this.elevationMode==="onTheGround"?p:p+c+this.elevationOffset;l.push([h,u,g],[h,u,_])}return l}placeSourcePositionsSync(e,r=!1){if(rr(this.elevationMode))throw new Error(`I3S elevation mode ${this.elevationMode} requires asynchronous surface placement`);let n=Float64Array.from(e),i=this.elevationMode==="absoluteHeight"?this.elevationOffset:0;for(let o=2;o<n.length;o+=3)n[o]=n[o]*(r?1:this.sourceVerticalUnitScale)+i;return n}async placeSourcePositions(e,r=!1){if(!rr(this.elevationMode))return this.placeSourcePositionsSync(e,r);let n=Float64Array.from(e),i=fa(n).map(s=>{let a=this.sourceToGeographicTransformer.transformPosition(s);return[a[0],a[1]]}),o=await this.elevationProvider.sampleElevations(i);if(o.length!==i.length)throw new Error(`Elevation provider returned ${o.length} heights for ${i.length} positions`);for(let s=0;s<i.length;s++){let a=o[s]*this.providerUnitScale;if(!Number.isFinite(a))throw new Error(`Elevation provider returned a non-finite height at index ${s}`);let[c,l]=i[s],h=this.providerHeightTransformer?this.providerHeightTransformer.transformPosition([c,l,a])[2]:a,u=n[s*3+2]*(r?1:this.sourceVerticalUnitScale);n[s*3+2]=this.elevationMode==="onTheGround"?h:h+u+this.elevationOffset}return n}transformEcefNormal(e,r){if(this.targetCoordinateFrame==="geocentric")return e.normalize();if(this.targetCoordinateFrame==="geographic")return O2(e,r).normalize();let n=N.WGS84.cartographicToCartesian(new M(r)),i=[];for(let s of I2()){let a=N.WGS84.cartesianToCartographic(new M(n).add(s)),c=N.WGS84.cartesianToCartographic(new M(n).subtract(s)),l=this.geographicToTargetTransformer.transformPosition(a),h=this.geographicToTargetTransformer.transformPosition(c);i.push((l[0]-h[0])/2,(l[1]-h[1])/2,(l[2]-h[2])/2)}let o=new H(i);if(Math.abs(o.determinant())<1e-12)throw new Error("Cannot transform an I3S normal through a singular local projection");return o.invert().transpose(),new M(e).transformByMatrix3(o).normalize()}};function C2(t,e){return t==="relativeToScene"?e.sceneElevationProvider:rr(t)?e.terrainElevationProvider:void 0}function rr(t){return t==="onTheGround"||t==="relativeToGround"||t==="relativeToScene"}function fa(t){if(t.length%3!==0)throw new Error("I3S position arrays must contain complete XYZ tuples");let e=[];for(let r=0;r<t.length;r+=3)e.push([t[r],t[r+1],t[r+2]]);return e}function A2(t){let e=xt(t);return{west:e[0]*180/Math.PI,south:e[1]*180/Math.PI,east:e[2]*180/Math.PI,north:e[3]*180/Math.PI}}function y0(t){if(!t.length)throw new Error("I3S spatial transformation requires at least one bound sample");let e=t.map(o=>N.WGS84.cartographicToCartesian(new M(o))),r=new M;for(let o of e)r.add(o);r.scale(1/e.length);let n=0;for(let o of e)n=Math.max(n,new M(o).subtract(r).magnitude());let i=N.WGS84.cartesianToCartographic(r);return[i[0],i[1],i[2],n]}function x0(t,e,r,n){let i=t.obb;if(i){let c=Array.from(i.center).slice(0,3);c[2]*=n;let l=Array.from(i.halfSize).slice(0,3),h=new Ge().fromArray(Array.from(i.quaternion)),u=[new M([l[0],0,0]).transformByQuaternion(h),new M([0,l[1],0]).transformByQuaternion(h),new M([0,0,l[2]]).transformByQuaternion(h)];if(e==="geographic"){let f=r.transformPosition(c),d=N.WGS84.cartographicToCartesian(new M(f)),m=t.normalReferenceFrame==="vertex-reference-frame"?u.map(p=>E0(p,f)):u;return S0().map(p=>{let g=new M(d);for(let _=0;_<3;_++)g.add(new M(m[_]).scale(p[_]));return Array.from(N.WGS84.cartesianToCartographic(g))})}return S0().map(f=>{let d=new M(c);for(let m=0;m<3;m++)d.add(new M(u[m]).scale(f[m]));return Array.from(d)})}let o=t.mbs?Array.from(t.mbs):[];if(o.length<4)return[];let s=o.slice(0,3);s[2]*=n;let a=o[3];if(e==="geographic"){let c=r.transformPosition(s),l=N.WGS84.cartographicToCartesian(new M(c));return w0().map(h=>Array.from(N.WGS84.cartesianToCartographic(new M(l).add(new M(h).scale(a)))))}return w0().map(c=>Array.from(new M(s).add(new M(c).scale(a))))}function S0(){return[-1,1].flatMap(t=>[-1,1].flatMap(e=>[-1,1].map(r=>[t,e,r])))}function w0(){return[[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]]}function I2(){return[new M([1,0,0]),new M([0,1,0]),new M([0,0,1])]}function E0(t,e){let r=e[0]*Math.PI/180,n=e[1]*Math.PI/180,i=new M([-Math.sin(r),Math.cos(r),0]),o=new M([-Math.sin(n)*Math.cos(r),-Math.sin(n)*Math.sin(r),Math.cos(n)]),s=new M([Math.cos(n)*Math.cos(r),Math.cos(n)*Math.sin(r),Math.sin(n)]);return i.scale(t[0]).add(o.scale(t[1])).add(s.scale(t[2]))}function O2(t,e){let r=e[0]*Math.PI/180,n=e[1]*Math.PI/180,i=new M([-Math.sin(r),Math.cos(r),0]),o=new M([-Math.sin(n)*Math.cos(r),-Math.sin(n)*Math.sin(r),Math.cos(n)]),s=new M([Math.cos(n)*Math.cos(r),Math.cos(n)*Math.sin(r),Math.sin(n)]);return new M([i.dot(t),o.dot(t),s.dot(t)])}function Ct(t){let e=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0];for(let o of t)for(let s=0;s<3;s++)e[s]=Math.min(e[s],o[s]),r[s]=Math.max(r[s],o[s]);let n=e.map((o,s)=>(o+r[s])/2),i=e.map((o,s)=>(r[s]-o)/2);return[n[0],n[1],n[2],i[0],0,0,0,i[1],0,0,0,i[2]]}function xt(t){let e=t[0][0],r=1/0,n=-1/0,i=1/0,o=-1/0,s=1/0,a=-1/0;for(let c of t){let l=e+da(c[0]-e);r=Math.min(r,l),n=Math.max(n,l),i=Math.min(i,c[1]),o=Math.max(o,c[1]),s=Math.min(s,c[2]),a=Math.max(a,c[2])}return[da(r)*Math.PI/180,i*Math.PI/180,da(n)*Math.PI/180,o*Math.PI/180,s,a]}function da(t){return((t+180)%360+360)%360-180}var N2={draco:!1,meshopt:!1,dds:!1,ktx2:!1},Fi=class{type=he.I3S;loader;contentLoader;url;basePath;tileset=null;loadOptions;coreApi;contentFormats={...N2};asset;properties;extras;credits;metadata;queryParams={};resolver;rootTileset;spatialTransformer;preparedRootHeader;constructor(e,r={}){let n=G2(e);this.rootTileset=b0(e)?null:e,this.tileset=this.rootTileset,this.loader=n.loader,this.contentLoader=L2(n.loader),this.url=n.url,this.basePath=n.basePath||ve.dirname(n.url),this.resolver=n.resolver,this.coreApi=n.coreApi,this.loadOptions=r,this.initializeQueryParams(r)}async initialize(){this.rootTileset||(this.rootTileset=await this.loadRootData(this.getTileUrl(this.url),this.loadOptions)),this.tileset=this.rootTileset,this.rootTileset.root&&typeof this.rootTileset.root.then=="function"&&(this.rootTileset.root=await this.rootTileset.root),this.metadata={type:this.type,loader:this.loader,url:this.url,basePath:this.basePath,tileset:this.rootTileset,lodMetricType:this.rootTileset.lodMetricType,lodMetricValue:this.rootTileset.lodMetricValue,refine:this.rootTileset.root?.refine,spatialReference:ai(this.rootTileset)}}getMetadata(){if(!this.metadata)throw new Error("I3SSource has not been initialized");return this.metadata}async getRootTileset(){return this.getMetadata().tileset}async prepareTileset(e){let r=e.spatialReference;if(r.status==="unresolved")throw new Error(r.warnings[0]||"I3S spatial operations cannot be resolved from the supplied metadata and options");r.status!=="transformable"&&r.status!=="transformed"||(this.spatialTransformer||=new nr(r,e.options.spatial),e.spatialReference=this.spatialTransformer.spatialReference,this.preparedRootHeader=await this.transformTileHeader(this.getMetadata().tileset.root))}initializeTileHeaders(e,r,n){let i=n?r.root:this.preparedRootHeader||r.root;if(this.spatialTransformer&&!this.preparedRootHeader)throw new Error("I3S spatial root header was not prepared before tile initialization");let o=new Re(e,i,n||void 0);return n&&(n.children.push(o),o.depth=n.depth+1),o}createTraverser(e){return new ki(e)}async loadTileContent(e){let r=this.getTileUrl(e.contentUrl),n=this.loader.id,i=this.loadOptions[n]||{},o=this.getMetadata(),s={...this.loadOptions,[n]:{...i,...e.tileset.options.i3s,_tileOptions:{attributeUrls:e.header.attributeUrls,textureUrl:e.header.textureUrl,textureUrls:e.header.textureUrls,textureFormat:e.header.textureFormat,textureLoaderOptions:e.header.textureLoaderOptions,materialDefinition:e.header.materialDefinition,layerType:e.header.layerType,pointRenderer:e.header.pointRenderer,pointSymbol:e.header.pointSymbol,isDracoGeometry:e.header.isDracoGeometry,mbs:e.header.mbs},_tilesetOptions:{store:o.tileset.store,attributeStorageInfo:o.tileset.attributeStorageInfo,fields:o.tileset.fields,spatialReference:e.tileset.spatialReference,spatialOptions:e.tileset.options.spatial},isTileHeader:!1}};e.content=await this.loadResourceData(r,s,this.contentLoader);let a={index:0,uri:e.contentUrl,type:e.header.layerType,payload:e.content,metadata:e.header.metadata||null,boundingVolume:e.boundingVolume,featureIds:e.featureIdSets,renderable:!!e.content};return{loaded:!0,contents:[e.content],contentEntries:[a]}}async loadChildTileHeader(e,r,n){let i=this.getMetadata();if(i.tileset.nodePages||i.tileset.pointNodePages){let l=await i.tileset.nodePagesTile.formTileFromNodePages(r);return await this.transformTileHeader(l)}let o=this.getTileUrl(`${this.url}/nodes/${r}`),s=this.loadOptions.i3s&&typeof this.loadOptions.i3s=="object"?this.loadOptions.i3s:{},a={...this.loadOptions,i3s:{...s,isTileHeader:!0}},c=await this.loadResourceData(o,a);return await this.transformTileHeader(c)}async loadTileChildrenForTraversal(e,r){let n=e.header.children||[],i=0,o=[];for(let a of n){T0(r);let c=a.id;if(typeof c!="string"&&typeof c!="number")throw new Error("I3S child header is missing its node ID");let l=e.children.find(f=>f.id===String(c)||f.header?.id===c);if(l){o.push(l);continue}let h=await this.loadChildTileHeader(e,String(c),null);T0(r);let u=new Re(e.tileset,h,e,String(c));o.push(u),i++}let s=new Set(o);return e.children=[...o,...e.children.filter(a=>!s.has(a))],{loaded:!0,tileCount:i,childSubtreeCount:0}}getTileUrl(e){if(e.startsWith("data:")||!Object.keys(this.queryParams).length)return e;let r=e.indexOf("#"),n=r>=0?e.slice(r):"",i=r>=0?e.slice(0,r):e,o=i.indexOf("?"),s=o===-1?i:i.slice(0,o),a=o===-1?"":i.slice(o+1),c=new URLSearchParams(a),l=new URLSearchParams;for(let[u,f]of Object.entries(this.queryParams))c.has(u)||l.set(u,f);let h=l.toString();return`${s}${a?`?${a}`:""}${h?`${a?"&":"?"}${h}`:""}${n}`}getViewState(e){if(this.spatialTransformer&&e){let o=new M(e.boundingVolume.center),s=new M(e.header.i3sLodMbs.slice(0,3));return this.spatialTransformer.targetCoordinateFrame==="geographic"?{boundingVolume:e.boundingVolume,cartographicCenter:s,cartesianCenter:o,zoom:1}:{boundingVolume:e.boundingVolume,cartographicCenter:s,cartesianCenter:o,zoom:1}}let r=this.getMetadata(),n=r.tileset.fullExtent;if(n){let{xmin:o,xmax:s,ymin:a,ymax:c,zmin:l,zmax:h}=n,u=new M(o+(s-o)/2,a+(c-a)/2,l+(h-l)/2),f=new M;return N.WGS84.cartographicToCartesian(u,f),{cartographicCenter:u,cartesianCenter:f,zoom:Zo(n,u,f)}}let i=r.tileset.store?.extent;if(i){let[o,s,a,c]=i,l=new M(o+(a-o)/2,s+(c-s)/2,0),h=new M;return N.WGS84.cartographicToCartesian(l,h),{cartographicCenter:l,cartesianCenter:h,zoom:nh(i,l,h)}}return console.warn("Extent is not defined in the tileset header"),{cartographicCenter:new M,zoom:1}}onTileLoaded(e,r){switch(r.header.isDracoGeometry&&(this.contentFormats.draco=!0),r.header.textureFormat){case"dds":this.contentFormats.dds=!0;break;case"ktx2":this.contentFormats.ktx2=!0;break;default:}}getTilesTotalCount(){return this.getMetadata().tileset?.nodePagesTile?.nodesInNodePages||null}async loadWithCoreApi(e,r,n=this.loader){if(!this.coreApi)throw new Error("I3SSource requires an injected coreApi to load tileset data");return await this.coreApi.load(e,n,r)}async loadRootData(e,r){return this.resolver?await this.resolver.loadRoot(e,this.loader,r):await this.loadWithCoreApi(e,r)}initializeQueryParams(e){for(let[n,i]of Object.entries(e.searchParams||{}))this.queryParams[n]=String(i);let r=e.i3s;if(r&&typeof r=="object"&&"token"in r){let n=r.token;typeof n=="string"&&(this.queryParams.token=n)}}async loadResourceData(e,r,n=this.loader){return this.resolver?await this.resolver.loadResource(e,n,r):await this.loadWithCoreApi(e,r,n)}async transformTileHeader(e){if(!this.spatialTransformer)return e;let r={mbs:e.mbs,obb:e.obb,normalReferenceFrame:this.getMetadata().tileset.store?.normalReferenceFrame},n=await this.spatialTransformer.transformBoundsAsync(r);return{...e,boundingVolume:n.boundingVolume,spatialBoundingVolume:n.spatialBoundingVolume,i3sLodMbs:n.i3sLodMbs}}};function T0(t){if(t?.aborted)throw t.reason??new DOMException("The operation was aborted","AbortError")}function L2(t){return t.contentLoader||t}function b0(t){return!!(t&&typeof t=="object"&&"url"in t&&"loader"in t&&!("type"in t))}function G2(t){return b0(t)?{...t,basePath:t.basePath||ve.dirname(t.url)}:{url:t.url,loader:t.loader,basePath:t.basePath||ve.dirname(t.url),resolver:t.resolver,coreApi:t.coreApi}}var At=class{index;parent;children;content;error;id;zoom;userData;boundingBox;_abortController;_loader;_loaderId;_isLoaded;_isCancelled;_needsReload;_bbox;constructor(e){this.index=e,this.parent=null,this.children=[],this.content=null,this.error=null,this._loader=void 0,this._abortController=null,this._loaderId=0,this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1}get bbox(){return this._bbox}set bbox(e){this._bbox||(this._bbox=e,"west"in e?this.boundingBox=[[e.west,e.south],[e.east,e.north]]:this.boundingBox=[[e.left,e.top],[e.right,e.bottom]])}get data(){let e=this._loader;return!this._isCancelled&&e!==void 0?e.then(()=>this.data):this.content}get isLoaded(){return this._isLoaded&&!this._needsReload}get isLoading(){return!!this._loader&&!this._isCancelled}get hasError(){return!!this.error}get needsReload(){return this._needsReload||this._isCancelled}get byteLength(){let e=this.content?this.content.byteLength:0;return Number.isFinite(e)?e:0}async _loadData({getData:e,requestScheduler:r,onLoad:n,onError:i}){let o=(g,_,y)=>{if(y===this._loaderId){if(this._loader=void 0,this.content=g,this.error=_?q2(_):null,this._isCancelled&&!g){this._isLoaded=!1;return}if(this._isLoaded=!0,this._isCancelled=!1,_){i(_,this);return}n(this)}},{index:s,id:a,bbox:c,userData:l,zoom:h}=this,u=this._loaderId;this._abortController=new AbortController;let{signal:f}=this._abortController,d=await r.scheduleRequest(this,()=>1);if(!d){this._isCancelled=!0;return}if(this._isCancelled){d.done();return}let m=null,p;try{m=await e({index:s,id:a,bbox:c,userData:l,zoom:h,signal:f})}catch(g){p=g||!0}finally{d.done()}o(m,p,u)}loadData(e){return this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1,this.error=null,this._loaderId++,this._loader=this._loadData(e),this._loader}setNeedsReload(){this.isLoading&&(this.abort(),this._loader=void 0),this._needsReload=!0}abort(){this.isLoaded||(this._isCancelled=!0,this._abortController?.abort())}};function q2(t){return t instanceof Error?t:typeof t=="string"?new Error(t):new Error("Tile request failed")}var ma="never",pa="no-overlap",on="best-available",v0={adapter:null,extent:null,tileSize:512,maxZoom:null,minZoom:null,maxCacheSize:100,maxCacheByteSize:null,refinementStrategy:on,zRange:null,maxRequests:6,debounceTime:0,zoomOffset:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{},tileSource:null},nn=class t{stats;sourceMetadata=null;opts;_requestScheduler;_cache;_dirty;_tiles;_cacheByteSize;_unloadedTileCount;_listeners=new Set;_consumers=new Map;_explicitOptionKeys=new Set;_baseOpts={};_sourceMetadataOverrides={};_maxZoom;_minZoom;_lastTileContext=null;constructor(e){if(this.stats=new qe({id:"Tileset2D",stats:[{name:"Tiles In Cache"},{name:"Cache Size"},{name:"Visible Tiles"},{name:"Selected Tiles"},{name:"Loading Tiles"},{name:"Unloaded Tiles"},{name:"Consumers"}]}),this.opts={...v0,...e,getTileData:e.getTileData||(()=>null),tileSource:e.tileSource},this._requestScheduler=new at({throttleRequests:this.opts.maxRequests>0||this.opts.debounceTime>0,maxRequests:this.opts.maxRequests,debounceTime:this.opts.debounceTime}),this._cache=new Map,this._tiles=[],this._dirty=!1,this._cacheByteSize=0,this._unloadedTileCount=0,!this.opts.tileSource&&!e.getTileData)throw new Error("Tileset2D requires either `getTileData` or `tileSource`.");this.setOptions(e),this._updateStats(),this.opts.tileSource&&this._initializeTileSource(this.opts.tileSource).catch(()=>{})}static fromTileSource(e,r={}){return new t({...r,tileSource:e})}get tiles(){return this._tiles}get cacheByteSize(){return this._cacheByteSize}get selectedTiles(){return Array.from(this._getSelectedTilesUnion())}get visibleTiles(){let e=this._getVisibleTilesUnion();for(let r of this._getSelectedTilesUnion())e.add(r);return Array.from(e)}get loadingTiles(){return Array.from(this._cache.values()).filter(e=>e.isLoading)}get unloadedTiles(){return Array.from(this._cache.values()).filter(e=>!e.isLoaded)}get maxZoom(){return this._maxZoom}get minZoom(){return this._minZoom}get refinementStrategy(){return this.opts.refinementStrategy||on}get adapter(){return this.opts.adapter}subscribe(e){return this._listeners.add(e),()=>this._listeners.delete(e)}attachConsumer(e){this._consumers.set(e,{selectedTiles:new Set,visibleTiles:new Set}),this._updateStats()}detachConsumer(e){this._consumers.delete(e),this._pruneRequests(),this._resizeCache(),this._updateStats()}setOptions(e){this._rememberExplicitOptions(e),this._baseOpts={...this._baseOpts,...e};let r=this.opts.maxRequests,n=this.opts.debounceTime;this._applyResolvedOptions(),(r!==this.opts.maxRequests||n!==this.opts.debounceTime)&&(this._requestScheduler=new at({throttleRequests:this.opts.maxRequests>0||this.opts.debounceTime>0,maxRequests:this.opts.maxRequests,debounceTime:this.opts.debounceTime}))}finalize(){for(let e of this._cache.values())e.isLoading&&e.abort();this._cache.clear(),this._tiles=[],this._consumers.clear(),this._cacheByteSize=0,this._unloadedTileCount=0,this._updateStats()}reloadAll(){let e=this._getSelectedTilesUnion();for(let r of this._cache.keys()){let n=this._cache.get(r);n&&!e.has(n)?(this._cache.delete(r),this._handleTileUnload(n),this._dirty=!0):n&&n.setNeedsReload()}this._cacheByteSize=this._getCacheByteSize(),this.prepareTiles(),this._updateStats()}updateConsumer(e,r,n){this._consumers.set(e,{selectedTiles:new Set(r),visibleTiles:new Set(n)}),this._pruneRequests(),this._resizeCache(),this._updateStats()}prepareTiles(){this._dirty&&(this._rebuildTree(),this._syncTiles(),this._dirty=!1)}getTileIndices({viewState:e,maxZoom:r,minZoom:n,zRange:i,modelMatrix:o,modelMatrixInverse:s}){let{adapter:a,tileSize:c,extent:l,zoomOffset:h}=this.opts;if(!a)throw new Error("Tileset2D requires an adapter before tile traversal can be used.");return this._lastTileContext={viewState:e,tileSize:c},a.getTileIndices({viewState:e,maxZoom:r,minZoom:n,zRange:i,tileSize:c,extent:z2(l),modelMatrix:o,modelMatrixInverse:s,zoomOffset:h})}getTileId(e){return`${e.x}-${e.y}-${e.z}`}getTileZoom(e){return e.z}getTileMetadata(e){if(!this._lastTileContext)throw new Error("Tileset2D metadata requested before traversal context was set.");if(!this.opts.adapter)throw new Error("Tileset2D requires an adapter before tile metadata can be derived.");return{bbox:this.opts.adapter.getTileBoundingBox(this._lastTileContext,e)}}getParentIndex(e){return{x:Math.floor(e.x/2),y:Math.floor(e.y/2),z:e.z-1}}getTile(e,r){let n=this.getTileId(e),i=this._cache.get(n),o=!1;return!i&&r?(i=new At(e),Object.assign(i,this.getTileMetadata(i.index)),Object.assign(i,{id:n,zoom:this.getTileZoom(i.index)}),o=!0,this._cache.set(n,i),this._dirty=!0,this._updateStats()):i&&i.needsReload&&(o=!0),i&&this._touchTile(n,i),i&&o&&r&&(i.loadData({getData:this.opts.getTileData,requestScheduler:this._requestScheduler,onLoad:this._handleTileLoad.bind(this),onError:this._handleTileError.bind(this)}).catch(()=>{}),this._updateStats()),i}async _initializeTileSource(e){try{this.sourceMetadata=await e.getMetadata(),this._sourceMetadataOverrides=this._getMetadataOverrides(this.sourceMetadata),this._applyResolvedOptions(),this._notifyUpdate()}catch(r){let n=r instanceof Error?r:new Error(`TileSource metadata error: ${String(r)}`);this._notifyError(n)}}_rememberExplicitOptions(e){for(let r of Object.keys(e))this._explicitOptionKeys.add(r)}_applyResolvedOptions(){let e={...v0,...this._sourceMetadataOverrides,...this._baseOpts};if(e.tileSource){let r=e.tileSource;e.getTileData=n=>r.getTileData(n)}this.opts=e,this._maxZoom=typeof this.opts.maxZoom=="number"&&Number.isFinite(this.opts.maxZoom)?Math.floor(this.opts.maxZoom):void 0,this._minZoom=typeof this.opts.minZoom=="number"&&Number.isFinite(this.opts.minZoom)?Math.ceil(this.opts.minZoom):void 0}_getMetadataOverrides(e){if(!e)return{};let r={};return!this._explicitOptionKeys.has("minZoom")&&Number.isFinite(e.minZoom)&&(r.minZoom=e.minZoom),!this._explicitOptionKeys.has("maxZoom")&&Number.isFinite(e.maxZoom)&&(r.maxZoom=e.maxZoom),!this._explicitOptionKeys.has("extent")&&e.boundingBox&&(r.extent=[e.boundingBox[0][0],e.boundingBox[0][1],e.boundingBox[1][0],e.boundingBox[1][1]]),r}_handleTileLoad(e){this.opts.onTileLoad?.(e),this._cacheByteSize=this._getCacheByteSize(),this._resizeCache();for(let r of this._listeners)r.onTileLoad?.(e);this._updateStats()}_handleTileError(e,r){this.opts.onTileError?.(e,r);for(let n of this._listeners)n.onTileError?.(e,r);this._updateStats()}_handleTileUnload(e){this._unloadedTileCount++,this.opts.onTileUnload?.(e);for(let r of this._listeners)r.onTileUnload?.(e);this._updateStats()}_notifyUpdate(){for(let e of this._listeners)e.onUpdate?.()}_notifyError(e){for(let r of this._listeners)r.onError?.(e)}_updateStats(){this._setStatCount("Tiles In Cache",this._cache.size),this._setStatCount("Cache Size",this.cacheByteSize),this._setStatCount("Visible Tiles",this.visibleTiles.length),this._setStatCount("Selected Tiles",this.selectedTiles.length),this._setStatCount("Loading Tiles",this.loadingTiles.length),this._setStatCount("Unloaded Tiles",this._unloadedTileCount),this._setStatCount("Consumers",this._consumers.size);for(let e of this._listeners)e.onStatsChange?.(this.stats)}_setStatCount(e,r){this.stats.get(e).reset().addCount(r)}_getSelectedTilesUnion(){let e=new Set;for(let r of this._consumers.values())for(let n of r.selectedTiles)e.add(n);return e}_getVisibleTilesUnion(){let e=new Set;for(let r of this._consumers.values())for(let n of r.visibleTiles)e.add(n);return e}_touchTile(e,r){this._cache.delete(e),this._cache.set(e,r)}_getCacheByteSize(){let e=0;for(let r of this._cache.values())e+=r.byteLength;return e}_pruneRequests(){let{maxRequests:e=0}=this.opts,r=this._getSelectedTilesUnion(),n=this._getVisibleTilesUnion(),i=[],o=0;for(let s of this._cache.values())s.isLoading&&(o++,!r.has(s)&&!n.has(s)&&i.push(s));for(;e>0&&o>e&&i.length>0;){let s=i.shift();s&&s.abort(),o--}}_rebuildTree(){for(let e of this._cache.values())e.parent=null,e.children&&(e.children.length=0);for(let e of this._cache.values()){let r=this._getNearestAncestor(e);e.parent=r,r?.children&&r.children.push(e)}}_syncTiles(){this._tiles=Array.from(this._cache.values()).sort((e,r)=>e.zoom-r.zoom)}_resizeCache(){let e=this.opts.maxCacheSize??100,r=this.opts.maxCacheByteSize??1/0,n=this._getVisibleTilesUnion(),i=this._getSelectedTilesUnion();if(this._cache.size>e||this._cacheByteSize>r){for(let[s,a]of this._cache)if(!n.has(a)&&!i.has(a)&&(this._cache.delete(s),this._cacheByteSize=this._getCacheByteSize(),this._handleTileUnload(a)),this._cache.size<=e&&this._cacheByteSize<=r)break;this._dirty=!0}this._dirty&&(this._rebuildTree(),this._syncTiles(),this._dirty=!1)}_getNearestAncestor(e){let{_minZoom:r=0}=this,n=e.index;for(;this.getTileZoom(n)>r;){n=this.getParentIndex(n);let i=this.getTile(n);if(i)return i}return null}};function z2(t){return t&&t.length===4?t:void 0}var Ui={getMetadata:async()=>({name:"",keywords:[],layers:[]}),getImage:async()=>null,debounceTime:0},Vi=class t{metadata=null;_opts;_listeners=new Set;_currentRequest=null;_lastAcceptedRequestId=-1;_nextRequestId=0;_loadCounter=0;_timeoutId=null;_abortController=null;_finalized=!1;constructor(e){if(this._opts=this._normalizeOptions(e),!this._opts.imageSource&&(!e.getImage||!e.getMetadata))throw new Error("ImageSet requires either `imageSource` or both `getImage` and `getMetadata`.")}static fromImageSource(e,r={}){return new t({...r,imageSource:e})}get isLoaded(){return this._loadCounter===0&&!!this._currentRequest}get image(){return this._currentRequest?.image||null}get currentRequest(){return this._currentRequest}get imageSource(){return this._opts.imageSource}subscribe(e){return this._listeners.add(e),()=>this._listeners.delete(e)}setOptions(e){let r=this._opts.imageSource,n=this._normalizeOptions({...this._opts,...e}),i=r!==n.imageSource||this._opts.getImage!==n.getImage||this._opts.getMetadata!==n.getMetadata;this._opts=n,i&&(this._cancelScheduledImage(),this.metadata=null,this._currentRequest=null,this._lastAcceptedRequestId=-1,this._nextRequestId=0,this._emitUpdate())}async loadMetadata(){this._startLoading();try{let e=await this._opts.getMetadata();if(this._finalized)return e;this.metadata=e;for(let r of this._listeners)r.onMetadataLoad?.(e);return this._emitUpdate(),e}catch(e){let r=P0(e,"Image metadata request failed");if(!this._finalized)for(let n of this._listeners)n.onMetadataLoadError?.(r);throw r}finally{this._finishLoading()}}requestImage(e,r=this._opts.debounceTime){let n=this._nextRequestId++;return this._cancelScheduledImage(),this._abortActiveRequest(),r>0?this._timeoutId=setTimeout(()=>{this._timeoutId=null,this._loadImage(n,e)},r):this._loadImage(n,e),n}finalize(){this._finalized=!0,this._cancelScheduledImage(),this._abortActiveRequest(),this._listeners.clear()}async _loadImage(e,r){if(!this._finalized){this._startLoading();for(let n of this._listeners)n.onImageLoadStart?.(e,r);try{let n=new AbortController;this._abortController=n;let i=await this._opts.getImage({...r,signal:n.signal});if(this._finalized||e<=this._lastAcceptedRequestId)return;this._lastAcceptedRequestId=e,this._currentRequest={requestId:e,parameters:r,image:i};for(let o of this._listeners)o.onImageLoad?.(this._currentRequest);this._emitUpdate()}catch(n){if(B2(n))return;let i=P0(n,"Image request failed");if(!this._finalized)for(let o of this._listeners)o.onImageLoadError?.(e,i,r)}finally{this._abortController?.signal===r.signal&&(this._abortController=null),this._finishLoading()}}}_normalizeOptions(e){let r=e.imageSource||null;return{...Ui,...e,imageSource:r,getMetadata:e.getMetadata||(()=>r?r.getMetadata():Ui.getMetadata()),getImage:e.getImage||(n=>r?r.getImage(n):Ui.getImage(n)),debounceTime:e.debounceTime??Ui.debounceTime}}_emitUpdate(){for(let e of this._listeners)e.onUpdate?.()}_startLoading(){let e=this._loadCounter>0;this._loadCounter++,e||(this._emitLoadingStateChange(!0),this._emitUpdate())}_finishLoading(){let e=this._loadCounter>0;this._loadCounter=Math.max(0,this._loadCounter-1),e&&this._loadCounter===0&&(this._emitLoadingStateChange(!1),this._emitUpdate())}_emitLoadingStateChange(e){for(let r of this._listeners)r.onLoadingStateChange?.(e)}_cancelScheduledImage(){this._timeoutId!==null&&(clearTimeout(this._timeoutId),this._timeoutId=null)}_abortActiveRequest(){this._abortController?.abort(),this._abortController=null}};function B2(t){return t instanceof Error&&t.name==="AbortError"}function P0(t,e){return t instanceof Error?t:typeof t=="string"?new Error(t):new Error(e)}var sn={getMetadata:async()=>({width:0,height:0,bandCount:0,dtype:"uint8"}),getRaster:async()=>({data:new Uint8Array(0),width:0,height:0,bandCount:0,dtype:"uint8"}),debounceTime:0,shouldRefetch:()=>!0},ji=class t{metadata=null;_opts;_listeners=new Set;_currentRequest=null;_lastAcceptedRequestId=-1;_nextRequestId=0;_loadCounter=0;_timeoutId=null;_abortController=null;_finalized=!1;constructor(e){if(this._opts=this._normalizeOptions(e),!this._opts.rasterSource&&(!e.getRaster||!e.getMetadata))throw new Error("RasterSet requires either `rasterSource` or both `getRaster` and `getMetadata`.")}static fromRasterSource(e,r={}){return new t({...r,rasterSource:e})}static fromCallbacks(e){return new t(e)}get isLoaded(){return this._loadCounter===0&&!!this._currentRequest}get raster(){return this._currentRequest?.raster||null}get currentRequest(){return this._currentRequest}get rasterSource(){return this._opts.rasterSource}subscribe(e){return this._listeners.add(e),()=>this._listeners.delete(e)}setOptions(e){let r=this._opts.rasterSource,n=this._normalizeOptions({...this._opts,...e}),i=r!==n.rasterSource||this._opts.getRaster!==n.getRaster||this._opts.getMetadata!==n.getMetadata;this._opts=n,i&&(this._cancelScheduledRaster(),this.metadata=null,this._currentRequest=null,this._lastAcceptedRequestId=-1,this._nextRequestId=0,this._emitUpdate())}async loadMetadata(){this._startLoading();try{let e=await this._opts.getMetadata();if(this._finalized)return e;this.metadata=e;for(let r of this._listeners)r.onMetadataLoad?.(e);return this._emitUpdate(),e}catch(e){let r=R0(e,"Raster metadata request failed");if(!this._finalized)for(let n of this._listeners)n.onMetadataLoadError?.(r);throw r}finally{this._finishLoading()}}requestRaster(e,r=this._opts.debounceTime){if(!this.shouldRefetchRaster(e))return this._currentRequest?.requestId??-1;let n=this._nextRequestId++;return this._cancelScheduledRaster(),r>0?this._timeoutId=setTimeout(()=>{this._timeoutId=null,this._loadRaster(n,e)},r):this._loadRaster(n,e),n}shouldRefetchRaster(e){return this._opts.shouldRefetch({currentRequest:this._currentRequest,metadata:this.metadata,nextParameters:e})}finalize(){this._finalized=!0,this._cancelScheduledRaster(),this._abortActiveRequest(),this._listeners.clear()}async _loadRaster(e,r){if(!this._finalized){this._startLoading();for(let n of this._listeners)n.onRasterLoadStart?.(e,r);try{let n=new AbortController;this._abortController=n;let i=await this._opts.getRaster(D2(r,n.signal));if(this._finalized||n.signal.aborted||e<=this._lastAcceptedRequestId)return;this._lastAcceptedRequestId=e,this._currentRequest={requestId:e,parameters:r,raster:i};for(let o of this._listeners)o.onRasterLoad?.(this._currentRequest);this._emitUpdate()}catch(n){if(k2(n))return;let i=R0(n,"Raster request failed");if(!this._finalized)for(let o of this._listeners)o.onRasterLoadError?.(e,i,r)}finally{this._abortController=null,this._finishLoading()}}}_normalizeOptions(e){let r=e.rasterSource||null;return{...sn,...e,rasterSource:r,getMetadata:e.getMetadata||(()=>r?r.getMetadata():sn.getMetadata()),getRaster:e.getRaster||(n=>r?r.getRaster(n):sn.getRaster(n)),debounceTime:e.debounceTime??sn.debounceTime,shouldRefetch:e.shouldRefetch||(n=>sn.shouldRefetch(n))}}_emitUpdate(){for(let e of this._listeners)e.onUpdate?.()}_emitLoadingStateChange(e){for(let r of this._listeners)r.onLoadingStateChange?.(e)}_startLoading(){let e=this._loadCounter>0;this._loadCounter++,e||(this._emitLoadingStateChange(!0),this._emitUpdate())}_finishLoading(){let e=this._loadCounter>0;this._loadCounter=Math.max(0,this._loadCounter-1),e&&this._loadCounter===0&&(this._emitLoadingStateChange(!1),this._emitUpdate())}_cancelScheduledRaster(){this._timeoutId!==null&&(clearTimeout(this._timeoutId),this._timeoutId=null)}_abortActiveRequest(){this._abortController?.abort(),this._abortController=null}};function D2(t,e){let r=Array.isArray(t)?t.slice():Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t));return Object.defineProperty(r,"signal",{configurable:!0,enumerable:!0,value:e,writable:!0}),r}function R0(t,e){return t instanceof Error?t:typeof t=="string"?new Error(t):new Error(e)}function k2(t){return t instanceof Error&&t.name==="AbortError"}var ir=class{header;parent;children=[];childrenLoaded=!1;childrenPromise=null;selected=!1;viewportIds=[];content=null;contentAvailable=!1;contentFailed=!1;isContentLoading=!1;constructor(e,r=null){this.header=e,this.parent=r}get id(){return this.header.id}get level(){return this.header.level}get pointCount(){return this.header.pointCount}get geometricError(){return this.header.geometricError}get boundingVolume(){return this.header.boundingVolume}setSelected(e){this.selected=!0,this.viewportIds.includes(e)||this.viewportIds.push(e)}clearSelection(){this.selected=!1,this.viewportIds=[]}};var F2={debounceTime:0,minimumNodePixelSize:150,maximumScreenSpaceError:1,lodSelectionMetricType:"maxScreenThresholdSQ",densityThreshold:1,pointBudget:2e6,maxDepth:Number.POSITIVE_INFINITY,onTileLoad:()=>{},onTileError:()=>{},onTraversalComplete:t=>t,onUpdate:()=>{}},Wi=64,Hi=class{dataSource;options;root=null;cartographicCenter=null;zoom=1;boundingVolume=null;visibleTilesCount=0;frameNumberValue=0;pendingCount=0;lastUpdatedViewports=null;updatePromise=null;tilesMap=new Map;constructor(e,r={}){this.dataSource=e,this.options={...F2,...r},this.tilesetInitializationPromise=this.initialize()}tilesetInitializationPromise;get isReady(){return this.dataSource.isReady}get frameNumber(){return this.frameNumberValue}get tiles(){return Array.from(this.tilesMap.values())}isLoaded(){return this.frameNumberValue>0&&this.pendingCount===0&&this.selectedTiles.every(e=>e.contentAvailable||e.contentFailed)}selectedTiles=[];update(e=null){this.selectTiles(e).catch(()=>{})}destroy(){this.selectedTiles=[],this.tilesMap.clear(),this.root=null,this.cartographicCenter=null,this.boundingVolume=null,this.visibleTilesCount=0,this.pendingCount=0,this.lastUpdatedViewports=null,this.updatePromise=null}async initialize(){await this.dataSource.initialize();let e=await this.dataSource.getRootTile();this.root=this.getOrCreateTile(e,null);let r=await this.dataSource.getViewState?.();this.boundingVolume=r?.boundingVolume||this.root.boundingVolume;let n=r?.cartographicCenter||this.root.boundingVolume.center;this.cartographicCenter=new M(n),this.zoom=r?.zoom||this.estimateZoom(this.boundingVolume)}async selectTiles(e=null){return await this.tilesetInitializationPromise,e&&(this.lastUpdatedViewports=e),this.updatePromise||(this.updatePromise=new Promise((r,n)=>{setTimeout(()=>{this.doSelectTiles().then(()=>r(this.frameNumberValue)).catch(n).finally(()=>{this.updatePromise=null})},this.options.debounceTime)})),this.updatePromise}async doSelectTiles(){if(!this.root||!this.lastUpdatedViewports)return;let e=new Set(this.selectedTiles.map(a=>a.id));for(let a of this.tilesMap.values())a.clearSelection();this.frameNumberValue++;let r=Array.isArray(this.lastUpdatedViewports)?this.lastUpdatedViewports:[this.lastUpdatedViewports],n=new Map,i=new Set,o=0;for(let a of r){let c=this.getTraversalContext(a);o=await this.traverseTiles(c,n,o,i)}this.visibleTilesCount=i.size,this.selectedTiles=this.options.onTraversalComplete(Array.from(n.values()));for(let a of this.selectedTiles)this.loadTile(a).catch(()=>{});let s=new Set(this.selectedTiles.map(a=>a.id));this.haveSameIds(e,s)||this.options.onUpdate()}async traverseTiles(e,r,n,i){if(!this.root)return n;let o=n,s=[{tile:this.root,weight:this.estimateScreenRadius(this.root,e.viewport)}];for(;s.length>0;){s.sort((u,f)=>f.weight-u.weight);let a=s.shift();if(!a)break;let{tile:c,weight:l}=a;if(!this.isVisible(c,e))continue;if(i.add(c.id),!r.has(c.id)&&c.pointCount>0){if(o>0&&o+c.pointCount>this.options.pointBudget)break;r.set(c.id,c),o+=c.pointCount}if(r.has(c.id)&&c.setSelected(e.viewport.id),!this.shouldRefine(c,l))continue;let h=await this.getVisibleChildren(c,e);h.length>0&&s.push(...h)}return o}shouldRefine(e,r){if(e.level<this.options.maxDepth&&Number.isFinite(r)&&(e.header.lodSelectionMetricType||this.options.lodSelectionMetricType)==="density-threshold"){let n=Math.max(1,Math.PI*r*r),i=e.pointCount/n,o=e.header.lodThreshold||this.options.densityThreshold;return i<o}return e.level<this.options.maxDepth&&Number.isFinite(r)&&r>=this.options.minimumNodePixelSize}getTraversalContext(e){let r=this.getCullingVolume(e);return{viewport:e,cullingVolume:this.shouldUseCullingVolume(e,r)?r:null}}isVisible(e,r){if(r.cullingVolume){let i=this.getCommonSpaceBoundingSphere(e.boundingVolume,r.viewport);if(i)return this.isBoundingSphereInsideCullingVolume(i,r.cullingVolume)}let n=this.getProjectedFootprint(e.boundingVolume,r.viewport);return n?this.isProjectedFootprintVisible(n,r.viewport):!1}shouldUseCullingVolume(e,r){if(!this.root||!r)return!1;let n=this.getCommonSpaceBoundingSphere(this.root.boundingVolume,e);if(!n)return!1;if(this.isBoundingSphereInsideCullingVolume(n,r))return!0;let i=this.getProjectedFootprint(this.root.boundingVolume,e);return!i||!this.isProjectedFootprintVisible(i,e)}isBoundingSphereInsideCullingVolume(e,r){return r.computeVisibilityWithPlaneMask(e,se.MASK_INDETERMINATE)!==se.MASK_OUTSIDE}isProjectedFootprintVisible(e,r){return!(e.x+e.radius<-Wi||e.x-e.radius>r.width+Wi||e.y+e.radius<-Wi||e.y-e.radius>r.height+Wi)}estimateScreenRadius(e,r){let n=this.getProjectedFootprint(e.boundingVolume,r);return n?n.radius:0}projectBounds(e,r){let n=this.getBoundingVolumeCorners(e),i=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY,s=Number.NEGATIVE_INFINITY,a=Number.NEGATIVE_INFINITY;try{for(let c of n){let[l,h]=r.project(c);!Number.isFinite(l)||!Number.isFinite(h)||(i=Math.min(i,l),o=Math.min(o,h),s=Math.max(s,l),a=Math.max(a,h))}}catch{return null}return!Number.isFinite(i)||!Number.isFinite(o)||!Number.isFinite(s)||!Number.isFinite(a)?null:{minX:i,minY:o,maxX:s,maxY:a}}getProjectedFootprint(e,r){let n=Number.NaN,i=Number.NaN;try{[n,i]=r.project(e.center)}catch{return null}if(!Number.isFinite(n)||!Number.isFinite(i))return null;let o=this.getBoundingVolumeCorners(e),s=0;try{for(let a of o){let[c,l]=r.project(a);!Number.isFinite(c)||!Number.isFinite(l)||(s=Math.max(s,Math.hypot(c-n,l-i)))}}catch{return null}if(s===0){let a=this.projectBounds(e,r);a&&(s=Math.max(a.maxX-a.minX,a.maxY-a.minY)/2)}return{x:n,y:i,radius:s}}async getVisibleChildren(e,r){return e.level>=this.options.maxDepth?[]:(await this.getChildren(e)).map(i=>({tile:i,weight:this.estimateScreenRadius(i,r.viewport)})).filter(i=>this.isVisible(i.tile,r))}async getChildren(e){if(e.childrenLoaded)return e.children;if(!e.childrenPromise){let r=this.dataSource.getChildren(e.header).then(n=>n.map(i=>this.getOrCreateTile(i,e))).then(n=>(e.children=n,e.childrenLoaded=!0,n));e.childrenPromise=r.finally(()=>{e.childrenPromise===r&&(e.childrenPromise=null)})}return e.childrenPromise}getOrCreateTile(e,r){let n=this.tilesMap.get(e.id);if(n)return n.header=e,r&&n.parent!==r&&(n.parent=r),n;let i=new ir(e,r);return this.tilesMap.set(e.id,i),r&&!r.children.find(o=>o.id===i.id)&&r.children.push(i),i}async loadTile(e){if(!(e.contentAvailable||e.isContentLoading||e.contentFailed)){e.isContentLoading=!0,this.pendingCount++;try{let r=await this.dataSource.loadTileContent(e.header);e.content=r,e.contentAvailable=!0,r&&this.options.onTileLoad(e)}catch(r){e.contentFailed=!0,this.options.onTileError(e,r)}finally{e.isContentLoading=!1,this.pendingCount--}}}estimateZoom(e){if(!e||e.coordinateFrame==="cartesian")return 1;let[r,n]=e.cartographicBounds,i=e.coversFullLongitude?360:e.wrapsDateline?360-Math.abs(n[0]-r[0]):Math.abs(n[0]-r[0]),o=Math.max(i,1e-6);return Math.max(1,Math.round(Math.log2(360/o)))}haveSameIds(e,r){if(e.size!==r.size)return!1;for(let n of e)if(!r.has(n))return!1;return!0}getBoundingVolumeCorners(e){let[r,n]=e.cartographicBounds,i=e.coversFullLongitude?[[-180,180]]:e.wrapsDateline?[[r[0],180],[-180,n[0]]]:[[r[0],n[0]]],o=[],s=360-Math.abs(n[0]-r[0]),a=r[0]+s/2;for(let[c,l]of i){let h=d=>{if(!e.wrapsDateline)return d;let m=d;for(;m-a>180;)m-=360;for(;m-a<-180;)m+=360;return m},u=h(c),f=h(l);o.push([u,r[1],r[2]||0],[u,r[1],n[2]||0],[u,n[1],r[2]||0],[u,n[1],n[2]||0],[f,r[1],r[2]||0],[f,r[1],n[2]||0],[f,n[1],r[2]||0],[f,n[1],n[2]||0])}return o}getCullingVolume(e){let r=e.getFrustumPlanes?.bind(e);if(!r)return null;let n=r(),i=["left","right","bottom","top","near","far"],o=[];for(let s of i){let a=n[s];if(!a)return null;o.push(new re(a.normal,-a.distance))}return new se(o)}getCommonSpaceBoundingSphere(e,r){let n=r.projectPosition?.bind(r);if(!n)return null;let i=this.getBoundingVolumeCorners(e),o=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,l=Number.NEGATIVE_INFINITY,h=Number.NEGATIVE_INFINITY;try{for(let u of i){let[f,d,m=0]=n(u);!Number.isFinite(f)||!Number.isFinite(d)||!Number.isFinite(m)||(o=Math.min(o,f),s=Math.min(s,d),a=Math.min(a,m),c=Math.max(c,f),l=Math.max(l,d),h=Math.max(h,m))}}catch{return null}return!Number.isFinite(o)||!Number.isFinite(s)||!Number.isFinite(a)||!Number.isFinite(c)||!Number.isFinite(l)||!Number.isFinite(h)?null:new fe().fromCornerPoints([o,s,a],[c,l,h])}};return $0(an);})();
10
10
  return __exports__;
11
11
  });