diff --git a/README.rst b/README.rst index 79a5bfc..4da5248 100644 --- a/README.rst +++ b/README.rst @@ -29,6 +29,7 @@ Install with:: $ pip install -e . Configuration +------------- :: @@ -67,6 +68,28 @@ In the webclient UI you can use the context menu to `Open With > Vizarr`, or use [omero-server]/zarr/vizarr/?source=[omero-server]/zarr/v0.4/image/[ID].zarr +Viewing s3 data +--------------- + +If you have imported OME-Zarr images into OMERO and the data is publicly accessible, e.g. hosted +on s3, then you can use this app to view that s3 data directly (instead of using the OMERO server). +This relies on the public data source being set as the `clientPath` location (shown in the webclient +as "Imported From"). At least 1 `clientPath` for an Image or Plate should be in the form: +`http....zarr/.zattrs`. +For data that matches this criteria, we can replace the image-viewer with `vizarr`` (images that do not +have such a clientPath will default to using iviewer): + +:: + + $ omero config set omero.web.viewer.view omero_web_zarr.views.vizarr_or_iviewer + +If you want to remove the Preview panel + +:: + + $ omero config set omero.web.ui.right_plugins '[["Acquisition", "webclient/data/includes/right_plugin.acquisition.js.html", "metadata_tab"]]' + + Testing ------- @@ -84,5 +107,5 @@ The application is released under the AGPL. Copyright --------- -2022-2023, The Open Microscopy Environment +2022-2024, The Open Microscopy Environment diff --git a/omero_web_zarr/static/omero_web_zarr/vizarr/blosc-5eba38ca.js b/omero_web_zarr/static/omero_web_zarr/vizarr/blosc-5eba38ca.js new file mode 100644 index 0000000..11769c0 --- /dev/null +++ b/omero_web_zarr/static/omero_web_zarr/vizarr/blosc-5eba38ca.js @@ -0,0 +1,21 @@ +var FI=function(){return typeof document<"u"&&document.currentScript&&document.currentScript.src,function(a){a=a||{};var B;B||(B=typeof a<"u"?a:{});var S,N;B.ready=new Promise(function(A,I){S=A,N=I});var U={},R;for(R in B)B.hasOwnProperty(R)&&(U[R]=B[R]);var x="./this.program",$=B.print||console.log.bind(console),K=B.printErr||console.warn.bind(console);for(R in U)U.hasOwnProperty(R)&&(B[R]=U[R]);U=null,B.thisProgram&&(x=B.thisProgram);var r;B.wasmBinary&&(r=B.wasmBinary),B.noExitRuntime&&B.noExitRuntime,typeof WebAssembly!="object"&&e("no native wasm support detected");var M,DA=!1,oA=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function FA(A,I,g){var Q=I+g;for(g=I;A[g]&&!(g>=Q);)++g;if(16C?Q+=String.fromCharCode(C):(C-=65536,Q+=String.fromCharCode(55296|C>>10,56320|C&1023))}}else Q+=String.fromCharCode(C)}return Q}function pA(A,I,g){var Q=s;if(0=E){var D=A.charCodeAt(++C);E=65536+((E&1023)<<10)|D&1023}if(127>=E){if(I>=g)break;Q[I++]=E}else{if(2047>=E){if(I+1>=g)break;Q[I++]=192|E>>6}else{if(65535>=E){if(I+2>=g)break;Q[I++]=224|E>>12}else{if(I+3>=g)break;Q[I++]=240|E>>18,Q[I++]=128|E>>12&63}Q[I++]=128|E>>6&63}Q[I++]=128|E&63}}Q[I]=0}}var GA=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function VA(A,I){for(var g=A>>1,Q=g+I/2;!(g>=Q)&&O[g];)++g;if(g<<=1,32>1];if(C==0||g==I/2)return Q;++g,Q+=String.fromCharCode(C)}}function lA(A,I,g){if(g===void 0&&(g=2147483647),2>g)return 0;g-=2;var Q=I;g=g<2*A.length?g/2:A.length;for(var C=0;C>1]=A.charCodeAt(C),I+=2;return Z[I>>1]=0,I-Q}function mA(A){return 2*A.length}function bA(A,I){for(var g=0,Q="";!(g>=I/4);){var C=w[A+4*g>>2];if(C==0)break;++g,65536<=C?(C-=65536,Q+=String.fromCharCode(55296|C>>10,56320|C&1023)):Q+=String.fromCharCode(C)}return Q}function eA(A,I,g){if(g===void 0&&(g=2147483647),4>g)return 0;var Q=I;g=Q+g-4;for(var C=0;C=E){var D=A.charCodeAt(++C);E=65536+((E&1023)<<10)|D&1023}if(w[I>>2]=E,I+=4,I+4>g)break}return w[I>>2]=0,I-Q}function OA(A){for(var I=0,g=0;g=Q&&++g,I+=4}return I}var X,f,s,Z,O,w,H,aA,yA;function hA(A){X=A,B.HEAP8=f=new Int8Array(A),B.HEAP16=Z=new Int16Array(A),B.HEAP32=w=new Int32Array(A),B.HEAPU8=s=new Uint8Array(A),B.HEAPU16=O=new Uint16Array(A),B.HEAPU32=H=new Uint32Array(A),B.HEAPF32=aA=new Float32Array(A),B.HEAPF64=yA=new Float64Array(A)}var SA=B.INITIAL_MEMORY||16777216;B.wasmMemory?M=B.wasmMemory:M=new WebAssembly.Memory({initial:SA/65536,maximum:32768}),M&&(X=M.buffer),SA=X.byteLength,hA(X);var m,NA=[],wA=[],PA=[],RA=[];function jA(){var A=B.preRun.shift();NA.unshift(A)}var n=0,b=null;B.preloadedImages={},B.preloadedAudios={};function e(A){throw B.onAbort&&B.onAbort(A),K(A),DA=!0,A=new WebAssembly.RuntimeError("abort("+A+"). Build with -s ASSERTIONS=1 for more info."),N(A),A}function sA(A){var I=P;return String.prototype.startsWith?I.startsWith(A):I.indexOf(A)===0}function UA(){return sA("data:application/octet-stream;base64,")}var P="blosc_codec.wasm";if(!UA()){var JA=P;P=B.locateFile?B.locateFile(JA,""):""+JA}function uA(){try{if(r)return new Uint8Array(r);throw"both async and sync fetching of the wasm failed"}catch(A){e(A)}}function j(A){for(;0>2]=I},this.X=function(I){w[this.N+0>>2]=I},this.Y=function(){w[this.N+4>>2]=0},this.W=function(){f[this.N+12>>0]=0},this.Z=function(){f[this.N+13>>0]=0},this.V=function(I,g){this.$(I),this.X(g),this.Y(),this.W(),this.Z()}}function AA(A){switch(A){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+A)}}var kA=void 0;function k(A){for(var I="";s[A];)I+=kA[s[A++]];return I}var p={},W={},u={};function qA(A){if(A===void 0)return"_unknown";A=A.replace(/[^a-zA-Z0-9_]/g,"$");var I=A.charCodeAt(0);return 48<=I&&57>=I?"_"+A:A}function LA(A,I){return A=qA(A),new Function("body","return function "+A+`() { + "use strict"; return body.apply(this, arguments); +}; +`)(I)}function IA(A){var I=Error,g=LA(A,function(Q){this.name=A,this.message=Q,Q=Error(Q).stack,Q!==void 0&&(this.stack=this.toString()+` +`+Q.replace(/^Error(:[^\n]*)?\n/,""))});return g.prototype=Object.create(I.prototype),g.prototype.constructor=g,g.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},g}var KA=void 0;function J(A){throw new KA(A)}var gA=void 0;function vA(A,I){function g(i){if(i=I(i),i.length!==Q.length)throw new gA("Mismatched type converter count");for(var o=0;o>2])}function CA(A){if(A===null)return"null";var I=typeof A;return I==="object"||I==="array"||I==="function"?A.toString():""+A}function _A(A,I){switch(I){case 2:return function(g){return this.fromWireType(aA[g>>2])};case 3:return function(g){return this.fromWireType(yA[g>>3])};default:throw new TypeError("Unknown float type: "+A)}}function $A(A){var I=Function;if(!(I instanceof Function))throw new TypeError("new_ called with constructor type "+typeof I+" which is not a function");var g=LA(I.name||"unknownFunctionName",function(){});return g.prototype=I.prototype,g=new g,A=I.apply(g,A),A instanceof Object?A:g}function AI(A){for(;A.length;){var I=A.pop();A.pop()(I)}}function II(A,I){var g=B;if(g[A].L===void 0){var Q=g[A];g[A]=function(){return g[A].L.hasOwnProperty(arguments.length)||J("Function '"+I+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+g[A].L+")!"),g[A].L[arguments.length].apply(this,arguments)},g[A].L=[],g[A].L[Q.S]=Q}}function gI(A,I,g){B.hasOwnProperty(A)?((g===void 0||B[A].L!==void 0&&B[A].L[g]!==void 0)&&J("Cannot register public name '"+A+"' twice"),II(A,A),B.hasOwnProperty(g)&&J("Cannot register multiple overloads of a function with the same number of arguments ("+g+")!"),B[A].L[g]=I):(B[A]=I,g!==void 0&&(B[A].ba=g))}function BI(A,I){for(var g=[],Q=0;Q>2)+Q]);return g}function QI(A,I){0<=A.indexOf("j")||e("Assertion failed: getDynCaller should only be called with i64 sigs");var g=[];return function(){g.length=arguments.length;for(var Q=0;Q>1]}:function(Q){return O[Q>>1]};case 2:return g?function(Q){return w[Q>>2]}:function(Q){return H[Q>>2]};default:throw new TypeError("Unknown integer type: "+A)}}var tA={};function dA(){if(!EA){var A={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:x||"./this.program"},I;for(I in tA)A[I]=tA[I];var g=[];for(I in A)g.push(I+"="+A[I]);EA=g}return EA}for(var EA,DI=[null,[],[]],rA=Array(256),z=0;256>z;++z)rA[z]=String.fromCharCode(z);kA=rA,KA=B.BindingError=IA("BindingError"),gA=B.InternalError=IA("InternalError"),B.count_emval_handles=function(){for(var A=0,I=5;I>E])},M:null})},y:function(A,I){I=k(I),Y(A,{name:I,fromWireType:function(g){var Q=q[g].value;return MA(g),Q},toWireType:function(g,Q){return HA(Q)},argPackAdvance:8,readValueFromPointer:QA,M:null})},h:function(A,I,g){g=AA(g),I=k(I),Y(A,{name:I,fromWireType:function(Q){return Q},toWireType:function(Q,C){if(typeof C!="number"&&typeof C!="boolean")throw new TypeError('Cannot convert "'+CA(C)+'" to '+this.name);return C},argPackAdvance:8,readValueFromPointer:_A(I,g),M:null})},e:function(A,I,g,Q,C,E){var D=BI(I,g);A=k(A),C=CI(Q,C),gI(A,function(){EI("Cannot call "+A+" due to unbound types",D)},I-1),vA(D,function(i){var o=A,G=A;i=[i[0],null].concat(i.slice(1));var y=C,h=i.length;2>h&&J("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var L=i[1]!==null&&!1,t=!1,F=1;F>>i}}var o=I.indexOf("unsigned")!=-1;Y(A,{name:I,fromWireType:E,toWireType:function(G,y){if(typeof y!="number"&&typeof y!="boolean")throw new TypeError('Cannot convert "'+CA(y)+'" to '+this.name);if(yC)throw new TypeError('Passing a number "'+CA(y)+'" from JS side to C/C++ side to an argument of type "'+I+'", which is outside the valid range ['+Q+", "+C+"]!");return o?y>>>0:y|0},argPackAdvance:8,readValueFromPointer:iI(I,D,Q!==0),M:null})},b:function(A,I,g){function Q(E){E>>=2;var D=H;return new C(X,D[E+1],D[E])}var C=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][I];g=k(g),Y(A,{name:g,fromWireType:Q,argPackAdvance:8,readValueFromPointer:Q},{U:!0})},i:function(A,I){I=k(I);var g=I==="std::string";Y(A,{name:I,fromWireType:function(Q){var C=H[Q>>2];if(g)for(var E=Q+4,D=0;D<=C;++D){var i=Q+4+D;if(D==C||s[i]==0){if(E=E?FA(s,E,i-E):"",o===void 0)var o=E;else o+=String.fromCharCode(0),o+=E;E=i+1}}else{for(o=Array(C),D=0;D=h&&(h=65536+((h&1023)<<10)|C.charCodeAt(++y)&1023),127>=h?++G:G=2047>=h?G+2:65535>=h?G+3:G+4}return G}:function(){return C.length})(),i=v(4+D+1);if(H[i>>2]=D,g&&E)pA(C,i+4,D+1);else if(E)for(E=0;E>2],y=D(),h,L=o+4,t=0;t<=G;++t){var F=o+4+t*I;(t==G||y[F>>i]==0)&&(L=Q(L,F-L),h===void 0?h=L:(h+=String.fromCharCode(0),h+=L),L=F+I)}return c(o),h},toWireType:function(o,G){typeof G!="string"&&J("Cannot pass non-string to C++ string type "+g);var y=E(G),h=v(4+y+I);return H[h>>2]=y>>i,C(G,h+4,y+I),o!==null&&o.push(c,h),h},argPackAdvance:8,readValueFromPointer:QA,M:function(o){c(o)}})},A:function(A,I){I=k(I),Y(A,{aa:!0,name:I,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},n:MA,x:function(A){4>>=0;var I=s.length;if(2147483648=g;g*=2){var Q=I*(1+.2/g);Q=Math.min(Q,A+100663296),Q=Math.max(16777216,A,Q),0>>16),hA(M.buffer);var C=1;break A}catch{}C=void 0}if(C)return!0}return!1},u:function(A,I){var g=0;return dA().forEach(function(Q,C){var E=I+g;for(C=w[A+4*C>>2]=E,E=0;E>0]=Q.charCodeAt(E);f[C>>0]=0,g+=Q.length+1}),0},v:function(A,I){var g=dA();w[A>>2]=g.length;var Q=0;return g.forEach(function(C){Q+=C.length+1}),w[I>>2]=Q,0},w:function(){return 0},q:function(){},g:function(A,I,g,Q){for(var C=0,E=0;E>2],i=w[I+(8*E+4)>>2],o=0;o>2]=C,0},a:M,l:function(){return 0},k:function(){return 0},j:function(){},B:function(){return 6},m:function(){},f:function(){}};(function(){function A(C){B.asm=C.exports,m=B.asm.D,n--,B.monitorRunDependencies&&B.monitorRunDependencies(n),n==0&&b&&(C=b,b=null,C())}function I(C){A(C.instance)}function g(C){return Promise.resolve().then(uA).then(function(E){return WebAssembly.instantiate(E,Q)}).then(C,function(E){K("failed to asynchronously prepare wasm: "+E),e(E)})}var Q={a:oI};if(n++,B.monitorRunDependencies&&B.monitorRunDependencies(n),B.instantiateWasm)try{return B.instantiateWasm(Q,A)}catch(C){return K("Module.instantiateWasm callback failed with error: "+C),!1}return function(){return r||typeof WebAssembly.instantiateStreaming!="function"||UA()||sA("file://")||typeof fetch!="function"?g(I):fetch(P,{credentials:"same-origin"}).then(function(C){return WebAssembly.instantiateStreaming(C,Q).then(I,function(E){return K("wasm streaming compile failed: "+E),K("falling back to ArrayBuffer instantiation"),g(I)})})}().catch(N),{}})();var fA=B.___wasm_call_ctors=function(){return(fA=B.___wasm_call_ctors=B.asm.E).apply(null,arguments)},v=B._malloc=function(){return(v=B._malloc=B.asm.F).apply(null,arguments)},c=B._free=function(){return(c=B._free=B.asm.G).apply(null,arguments)},nA=B.___getTypeName=function(){return(nA=B.___getTypeName=B.asm.H).apply(null,arguments)};B.___embind_register_native_and_builtin_types=function(){return(B.___embind_register_native_and_builtin_types=B.asm.I).apply(null,arguments)},B.dynCall_jiiiii=function(){return(B.dynCall_jiiiii=B.asm.J).apply(null,arguments)},B.dynCall_jiji=function(){return(B.dynCall_jiji=B.asm.K).apply(null,arguments)};var _;b=function A(){_||iA(),_||(b=A)};function iA(){function A(){if(!_&&(_=!0,B.calledRun=!0,!DA)){if(j(wA),j(PA),S(B),B.onRuntimeInitialized&&B.onRuntimeInitialized(),B.postRun)for(typeof B.postRun=="function"&&(B.postRun=[B.postRun]);B.postRun.length;){var I=B.postRun.shift();RA.unshift(I)}j(RA)}}if(!(0new Uint8Array(Buffer.from(a,"base64")):(()=>{for(var a=new Uint8Array(128),B=0;B<64;B++)a[B<26?B+65:B<52?B+71:B<62?B-4:B*4-205]=B;return S=>{for(var N=S.length,U=new Uint8Array((N-(S[N-1]=="=")-(S[N-2]=="="))*3/4|0),R=0,x=0;R>4,U[x++]=K<<4|r>>2,U[x++]=r<<6|M}return U}})(),yI=aI("AGFzbQEAAAABwAImYAF/AX9gA39/fwF/YAV/f39/fwF/YAJ/fwF/YAJ/fwBgAX8AYAN/f38AYAR/f39/AX9gBH9/f38AYAAAYAZ/f39/f38Bf2AFf39/f38AYAZ/f39/f38AYAd/f39/f39/AX9gBH9/f38BfmAFf39/f38BfmAIf39/f39/f38Bf2AJf39/f39/f39/AX9gAn5/AX9gC39/f39/f39/f39/AX9gA39+fwF+YAN/f34AYAN/f34Bf2ADfn9/AX9gAn5+AX5gCH9/f39/f39/AGAJf39/f39/f39/AGAFf35/f38AYAABf2ANf39/f39/f39/f39/fwF/YA9/f39/f39/f39/f39/f38Bf2AFf39/fn8Bf2AGf3x/f39/AX9gAX8BfmACf38BfmAHf35/f39/fwF+YAF+AX5gBH5/f34BfgK0AR0BYQFiAAYBYQFjAAsBYQFkAAYBYQFlAAwBYQFmAAUBYQFnAAcBYQFoAAYBYQFpAAQBYQFqAAMBYQFrAAABYQFsAAABYQFtAAMBYQFuAAUBYQFvAAYBYQFwAAABYQFxAAIBYQFyAAEBYQFzAAABYQF0AAkBYQF1AAMBYQF2AAMBYQF3AAABYQF4AAUBYQF5AAQBYQF6AAsBYQFBAAQBYQFCAAcBYQFDAAMBYQFhAgGAAoCAAgOtBKsEBAEBAwIACAAAAAQHAQEBAAIBAAQDAQMBBAEFAwUFAAYAAwAIAgIDAQgBAwYBCwEBAAQYBAEEBwoGAwMLBwgBBggDCwUDAwMGCAEGBAYABwIGAAABAAIEBAYEBQMDAAsABgwDAAANBgIYAwkAAQwGBggAAgAAAAUQHQAEAQMbBwcHBwMDBh4TBAgBAgECCgcGCgYEAAQAARARAwAIAAYDBgAFBQUFBQUJCwUGAQAFBQICAgcHAwQEAAcSARIXJQQGAwMDAAUEAQABBQUDAAMGCgAFBQMBHwUDAwUFAREDBwoEAAUBAwcKCiEGBQEABgYGBQUIAxMNAAADAAkBBwcHBwcHBwcAAQgGBwMRAgICAgYCCAoCAgcCCAAFBAUFAAMAAAIKBBQACQwMCwMLCAgICwwAAQEFAAUABQkDAAMSEhcGAQAUAAAJCQkJBgAJCQkJCQkJCQkJCQkJDQ0ABgcBAQcHAgEBAgEEAwoABAcFBRwKCgoFAgoCAgMaGQUE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BCAGanQgAWohASACIARHIQwgBEEBaiEEIAwNAAsLIA1BAWoiDSACayIBIAcgAWtBAWoiCEkEQCAKQQJJIQYDQEEBIQQgBkUEQANAIARBAnQiCiADIAFBNGxqaiADIApqKAIAIAF2NgIAIAIgBEchCiAEQQFqIQQgCg0ACwsgAUEBaiIBIAhJDQALCyAAQQRqIAcgCyAJIANBpAVqIAMgAiANEJYDIAVBAToABSAFIAc6AAYgACAFKAIENgIACyAQIQQLIAVBEGokACAEC+ACAQl/IwBBEGsiBCQAIARBADYCDCAEQQA2AggCQCADQUBrIgkgAyAEQQhqIARBDGogASACEPsBIggQIQ0AIARBBGogACgCABA0QQEhASAEKAIMIgUgBC0ABEEBak0EQEEAIQIgBEEAOgAFIAQgBToABiAAIAQoAgQ2AgAgBUEBakEBSwRAA0AgAyABQQJ0aiIGKAIAIQcgBiACNgIAIAcgAUF/anQgAmohAiABIAVGIQYgAUEBaiEBIAZFDQALCyAEKAIIIgdFDQEgAEEEaiEKIAVBAWohC0EAIQADQCADIAAgCWotAAAiBUECdGoiBigCACIBIAFBASAFdEEBdSIMaiICSQRAIAsgBWshBQNAIAogAUEBdGoiAiAFOgABIAIgADoAACABQQFqIgEgBigCACAMaiICSQ0ACwsgBiACNgIAIABBAWoiACAHRw0ACwwBC0FUIQgLIARBEGokACAICxQAIAAoAABBgPqerQNsQSAgAWt2CygAAkACQAJAIAAoAowBQX9qDgIAAQILIAAgARDCAw8LIAAgARDHAwsLOgEBfyABIAAoAgRrIgEgACgCGCICQYAIaksEQCAAIAEgASACa0GAeGoiAEGABCAAQYAESRtrNgIYCwsVACAAEJEBBEAgACgCBA8LIAAtAAsLRQEBfwJAIAIgA00gACABTXINAANAIABBf2oiAC0AACACQX9qIgItAABHDQEgBEEBaiEEIAIgA00NASAAIAFLDQALCyAECwwAIABBICABa62IpwsQACAAIAEgAigCCHRBA3RqCxIAIABBwAAgAWutiKdBACABGwsvAEEgIAFrIgEgAkkEQCAAp0F/IAJ0QX9zcQ8LIAAgASACa62Ip0F/IAJ0QX9zcQsgACACrSAAIAGtQgp8IAN+fULjyJW9y5vvjU9+fEIK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nn9+QuPcypX8zvL1hX98IQYgBCIDIgFBCGoiBCACTQ0ACwsCQCADQQRqIgEgAksEQCADIQEMAQsgAygAAK1Ch5Wvr5i23puef34gBoVCF4lCz9bTvtLHq9lCfkL5893xmfaZqxZ8IQYLIAEgAkkEQCAAIAVqQShqIQADQCABMQAAQsXP2bLx5brqJ34gBoVCC4lCh5Wvr5i23puef34hBiABQQFqIgEgAEcNAAsLIAZCIYggBoVCz9bTvtLHq9lCfiIGQh2IIAaFQvnz3fGZ9pmrFn4iBkIgiCAGhQv4AgICfwR+IAAgACkDACACrXw3AwACQAJAIAAoAkgiAyACakEfTQRAIAAgA2pBKGogASACEKsBIAAoAkggAmohAQwBCyABIAJqIQQCQAJ/IAMEQCAAQShqIgIgA2ogAUEgIANrEKsBIAAgACkDCCACKQAAEE43AwggACAAKQMQIAApADAQTjcDECAAIAApAxggACkAOBBONwMYIAAgACkDICAAQUBrKQAAEE43AyAgACgCSCECIABBADYCSCABIAJrQSBqIQELIAFBIGogBEsLBEAgASECDAELIARBYGohAyAAKQMgIQUgACkDGCEGIAApAxAhByAAKQMIIQgDQCAIIAEpAAAQTiEIIAcgASkACBBOIQcgBiABKQAQEE4hBiAFIAEpABgQTiEFIAFBIGoiAiEBIAIgA00NAAsgACAFNwMgIAAgBjcDGCAAIAc3AxAgACAINwMICyACIARPDQEgAEEoaiACIAQgAmsiARCrAQsgACABNgJICwtlACAAQgA3AyggAEL56tDQ58mh5OEANwMgIABCADcDGCAAQs/W077Sx6vZQjcDECAAQtbrgu7q/Yn14AA3AwggAEIANwMAIABCADcDMCAAQgA3AzggAEFAa0IANwMAIABCADcDSAsVACABBEAgAiAAIAERAwAPCyAAEEwLYQEDf0F+IQECQCAARQ0AIAAoAhwiAkUNACAAKAIkIgNFDQAgAigCNCIBBEAgACgCKCABIAMRBAAgACgCJCEDIAAoAhwhAgsgACgCKCACIAMRBABBACEBIABBADYCHAsgAQudCwEMfyACQQBOBEBBBEEDIAEvAQIiCxshB0EHQYoBIAsbIQQgAEG5LWohCEF/IQYDQCALIQkCQCAJIAEgDCINQQFqIgxBAnRqLwECIgtH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AhQgCiAAKAIIaiADOgAAIAAgACgCFCIDQQFqNgIUIAMgACgCCGogAEG5LWotAAA6AAAgACABQRAgACgCvC0iAWt2OwG4LSAAIAEgAmpBcGo2ArwtDwsgACACIARqNgK8LQuXAQECfwJAAn8gACgCvC0iAUEJTgRAIAAgACgCFCIBQQFqNgIUIAEgACgCCGogAC0AuC06AAAgACAAKAIUIgFBAWo2AhQgAEG5LWotAAAhAiABIAAoAghqDAELIAFBAUgNASAAIAAoAhQiAUEBajYCFCAALQC4LSECIAEgACgCCGoLIAI6AAALIABBADYCvC0gAEEAOwG4LQvaBAEBfwNAIAAgAUECdGpBADsBlAEgAUEBaiIBQZ4CRw0ACyAAQQA7AfwUIABBADsBiBMgAEHEFWpBADsBACAAQcAVakEAOwEAIABBvBVqQQA7AQAgAEG4FWpBADsBACAAQbQVakEAOwEAIABBsBVqQQA7AQAgAEGsFWpBADsBACAAQagVakEAOwEAIABBpBVqQQA7AQAgAEGgFWpBADsBACAAQZwVakEAOwEAIABBmBVqQQA7AQAgAEGUFWpBADsBACAAQZAVakEAOwEAIABBjBVqQQA7AQAgAEGIFWpBADsBACAAQYQVakEAOwEAIABBgBVqQQA7AQAgAEH8E2pBADsBACAAQfgTakEAOwEAIABB9BNqQQA7AQAgAEHwE2pBADsBACAAQewTakEAOwEAIABB6BNqQQA7AQAgAEHkE2pBADsBACAAQeATakEAOwEAIABB3BNqQQA7AQAgAEHYE2pBADsBACAAQdQTakEAOwEAIABB0BNqQQA7AQAgAEHME2pBADsBACAAQcgTakEAOwEAIABBxBNqQQA7AQAgAEHAE2pBADsBACAAQbwTakEAOwEAIABBuBNqQQA7AQAgAEG0E2pBADsBACAAQbATakEAOwEAIABBrBNqQQA7AQAgAEGoE2pBADsBACAAQaQTakEAOwEAIABBoBNqQQA7AQAgAEGcE2pBADsBACAAQZgTakEAOwEAIABBlBNqQQA7AQAgAEGQE2pBADsBACAAQYwTakEAOwEAIABCADcCrC0gAEGUCWpBATsBACAAQQA2AqgtIABBADYCoC0LngEBAn8gACAALwG4LSADQf//A3EiBCAAKAK8LSIDdHIiBTsBuC0gAAJ/IANB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A0AgCSAFIARBAXRqIgotAAEiC0ECdGoiDCgCACEDIAlBPGogCi0AAEEIdCAIakH//wNxEC8gCUECOgA/IAkgByALayIKIAJqOgA+IANBASABIAprdGohCiAJKAI8IQsDQCAAIANBAnRqIAs2AQAgA0EBaiIDIApJDQALIAwgCjYCACAEQQFqIgQgBkcNAAsLIAlBQGskAAvdAgEJfyMAQdAAayIJJAAgCUFAayAFKAIwNgIAIAkgBSkCKDcDOCAJIAUpAiA3AzAgCSAFKQIYNwMoIAkgBSkCEDcDICAJIAUpAgA3AxAgCSAFKQIINwMYIAMEQCAHIAZrIQ8gByABayEQA0BBASABIAcgAiALQQF0aiIGLQABIgxrIghrIgp0IQ0gBi0AACEOIAlBEGogDEECdGoiDCgCACEGAkAgCiAPTwRAIAAgBkECdGogCiAIIAUgCEE0bGogCCAQaiIIQQEgCEEBShsiCCACIAQgCEECdGooAgAiCEEBdGogAyAIayAHIA4QlQMgBiANaiEIDAELIAlBDGogDhAvIAlBAToADyAJIAg6AA4gBiAGIA1qIghPDQAgCSgCDCEKA0AgACAGQQJ0aiAKNgEAIAZBAWoiBiAIRw0ACwsgDCAINgIAIAtBAWoiCyADRw0ACwsgCUHQAGokAAs+AQN/IAAEQCAAKAIAIABBvNABaigCACIBIABBwNABaigCACICIABBxNABaigCACIDEGQgACABIAIgAxBkCwvMAQEBfyAAIAEoArTQATYCmOIBIAAgASgCBCICNgLA4AEgACACNgK84AEgACACIAEoAghqIgI2ArjgASAAIAI2AsTgASABKAK40AEEQCAAQoGAgIAQNwOI4QEgACABQaTQAGo2AgwgACABQZQgajYCCCAAIAFBnDBqNgIEIAAgAUEMajYCACAAQazQAWogAUGo0AFqKAIANgIAIABBsNABaiABQazQAWooAgA2AgAgAEG00AFqIAFBsNABaigCADYCAA8LIABCADcDiOEBC6JIAS5/IwBB4ABrIhIkACAAKAKEASEGIAAoAgQhByAAKAKIASEFIAAoAgwhCCASIAAoAhg2AlwgACgCPCEbIABBQGsoAgAhHCAAQSxqIiYgAyAEQQIQWSADIAcgCGogA0ZqIg0gAyAEaiIMQXhqIi5JBEAgBUH/HyAFQf8fSRsh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AnRBsKcBaigCABBHIAtBOGoQOSALQThqIAAvAQYgAi0AAEECdEGQpAFqKAIAEEcgC0E4ahA5AkAgCgRAIAEtAAAiASABQRggAUEYSRsiAmsiAQRAIAtBOGogACgCACABEEcgC0E4ahA5CyALQThqIAAoAgAgAXYgAhBHDAELIAtBOGogACgCACABLQAAEEcLIAtBOGoQOSAJQQJPBEAgCUF+aiEMA0AgByAMai0AACECIAMgDGotAAAhBCALQThqIAtBGGogBSAMai0AACIAEGwgC0E4aiALQShqIAQQbCALQThqEDkgC0E4aiALQQhqIAIQbCALQThqEDkgC0E4aiAIIAxBA3RqIgEvAQQgAkECdEGwpwFqKAIAIgIQRyACIARBAnRBkKQBaigCACICakEZTwRAIAtBOGoQOQsgC0E4aiABLwEGIAIQRyALQThqEDkCQCAKBEAgACAAQRggAEEYSRsiAmsiAARAIAtBOGogASgCACAAEEcgC0E4ahA5CyALQThqIAEoAgAgAHYgAhBHDAELIAtBOGogASgCACAAEEcLIAtBOGoQOSAMQX9qIgwgCUkNAAsLIAtBOGogCygCKCALKAI0EHQgC0E4aiALKAIYIAsoAiQQdCALQThqIAsoAgggCygCFBB0IAtBOGoQ/QEiAEG6fyAAGyEMCyALQdAAaiQAIAwLLwAgACACQQN0aigCBCIAQRB2QQFqIgJBCHRBfyABdCAAayACQRB0akEIdCABdmsLTwEEfwNAIANBASAAIARBAnRqKAIAIgNBCHQiBSACbiIGIAUgAkkbIAYgAxtBAnRBkJwBaigCACADbGohAyAEQQFqIgQgAU0NAAsgA0EIdgtKAQF/IwBB8ARrIgQkACAEIAMgAiABEKcBIgMgACACIAEQpgEiAhAhRQRAIARB8ABqQYAEIAQgASADEKgBIQILIARB8ARqJAAgAguKAQEIfyMAQRBrIgMkACADIAAQc0F/IQUCQCAALwACIAJJDQAgAygCDCIHQQh0QYACaiEIIAMoAgghCUEAIQADQCAJIAcgABDJAyEGIAEgAEECdGooAgAiCgRAIAYgCE8NAiAGIApsIARqIQQLIABBAWoiACACTQ0ACyAEQQh2IQULIANBEGokACAFC18BAn9BCCABayEFQQAhAQNAIARBASAAIAFBAXRqLwEAIgQg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ASACEEUiARAhDQEgBEEQaiAEQRhqIAMQggEgBEEIaiAEQRhqIAMQggFBACEBAkAgBEEYahAjBEBBACEDDAELA0AgACABaiICIARBEGogBEEYahBiOgAAIAIgBEEIaiAEQRhqEGI6AAEgBEEYahAjBEAgAUECciEDDAILIAIgBEEQaiAEQRhqEGI6AAIgAiAEQQhqIARBGGoQYjoAAyABQQRqIQMgBEEYahAjIQIgAUH3AUsNASADIQEgAkUNAAsLAn8DQEG6fyEBIANB/QFLDQMgACADaiICIARBEGogBEEYahBiOgAAIAIiBkEBaiEFIARBGGoQI0EDRgRAQQIhAyAEQQhqDAILIANB/AFLDQMgBiAEQQhqIARBGGoQYjoAASADQQJqIQMgBEEYahAjQQNHDQALIAAgA2ohBUEDIQMgBEEQagshASAFIAEgBEEYahBiOgAAIAIgA2ogAGshAQwBCyAEQRhqIAEgAhBFIgEQIQ0AIARBEGogBEEYaiADEIIBIARBCGogBEEYaiADEIIBQQAhAQJAIARBGGoQIwRAQQAhAwwBCwNAIAAgAWoiAiAEQRBqIARBGGoQYToAACACIARBCGogBEEYahBhOgABIARBGGoQIwRAIAFBAnIhAwwCCyACIARBEGogBEEYahBhOgACIAIgBEEIaiAEQRhqEGE6AAMgAUEEaiEDIARBGGoQIyECIAFB9wFLDQEgAyEBIAJFDQALCwJ/A0BBun8hASADQf0BSw0CIAAgA2oiAiAEQRBqIARBGGoQYToAACACIgZBAWohBSAEQRhqECNBA0YEQEECIQMgBEEIagwCCyADQfwBSw0CIAYgBEEIaiAEQRhqEGE6AAEgA0ECaiEDIARBGGoQI0EDRw0ACyAAIANqIQVBAyEDIARBEGoLIQEgBSABIARBGGoQYToAACACIANqIABrIQELIARBMGokACABC68DAQp/IwBBgARrIgkkAEFSIQUCQCACQf8BSw0AIABBBGohCkGAgAQgA0F/anRBEHUhC0EBIAN0IghBf2oiDCEHQQEhBQNAAkAgASAEQQF0Ig1qLwEAIgZB//8DRgRAIAogB0ECdGogBDoAAiAHQX9qIQdBASEGDAELIAVBACALIAZBEHRBEHVKGyEFCyAJIA1qIAY7AQAgAiAERyEGIARBAWohBCAGDQALIAAgBTsB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IAIgASgCCGpBADoAACABIAEoAhQiAkEBajYCFCACIAEoAghqQQA6AABBAiECIAEoAoQBIgNBCUcEQEEEIAEoAogBQQFKQQJ0IANBAkgbIQILIAEgASgCFCIDQQFqNgIUIAMgASgCCGogAjoAACABIAEoAhQiAkEBajYCFCACIAEoAghqQQM6AAAgAUHxADYCBAwNCyACKAIkIQMgAigCHCEEIAIoAhAhBSACKAIsIQYgAigCACEHIAEgASgCFCIIQQFqNgIUQQIhAiAIIAEoAghqIAZBAEdBAXQgB0EAR3IgBUEAR0ECdHIgBEEAR0EDdHIgA0EAR0EEdHI6AAAgASgCHCgCBCEDIAEgASgCFCIEQQFqNgIUIAQgASgCCGogAzoAACABKAIcKAIEIQMgASABKAIUIgRBAWo2AhQgBCABKAIIaiADQQh2OgAAIAEoAhwvAQYhAyABIAEoAhQiBEEBajYCFCAEIAEoAghqIAM6AAAgASgCHC0AByEDIAEgASgCFCIEQQFqNgIUIAQgASgCCGogAzoAACABKAKEASIDQQlHBEBBBCABKAKIAUEBSkECdCADQQJIGyECCyABIAEoAhQiA0EBajYCFCADIAEoAghqIAI6AAAgASgCHCgCDCECIAEgASgCFCIDQQFqNgIUIAMgASgCCGogAjoAAAJ/IAEoAhwiBCgCEARAIAQoAhQhAiABIAEoAhQiA0EBajYCFCADIAEoAghqIAI6AAAgASgCHCgCFCECIAEgASgCFCIDQQFqNgIUIAMgASgCCGogAkEIdjoAACABKAIcIQQLIAQoAiwLBEAgACAAKAIwIAEoAgggASgCFBA1NgIwCyABQcUANgIEIAFBADYCIAwCCyABKAIwQQx0QYCQfmohBEEAIQICQCABKAKIAUEBSg0AIAEoAoQBIgNBAkgNAEHAACECIANBBkgNAEGAAUHAASADQQZGGyECCyABQfEANgIEIAEgAiAEciICQSByIAIgASgCbBsiAkEfcCACckEfcxB1IAEoAmwEQCABIAAvATIQdSABIAAvATAQdQsgAEEAQQBBABBlNgIwIAEoAgQhAgsgAkHFAEcNASABKAIcIQQLAkAgBCgCEARAIAEoAhQhAiABKAIgIgUgBC8BFE8NASACIQMDQCABKAIMIAJGBEACQCACIANNDQAgBCgCLEUNACAAIAAoAjAgASgCCCADaiACIANrEDU2AjALIAAQNiABKAIcIQQgASgCFCICIAEoAgxGDQMgASgCICEFIAIhAwsgBCgCECAFai0AACEEIAEgAkEBajYCFCABKAIIIAJqIAQ6AAAgASABKAIgQQFqIgU2AiAgBSABKAIcIgQvARRPBEAgAyECDAMFIAEoAhQhAgwBCwALAAsgAUHJADYCBAwCCwJAIAQoAixFDQAgASgCFCIDIAJNDQAgACAAKAIwIAEoAgggAmogAyACaxA1NgIwCyABKAIgIAQoAhRGBEAgAUHJADYCBCABQQA2AiAMAgsgASgCBCECCyACQckARw0BIAEoAhwhBAsgBCgCHEUNAiABKAIUIgIhAwJAA0ACQCABKAIMIAJGBEACQCACIANNDQAgASgCHCgCLEUNACAAIAAoAjAgASgCCCADaiACIANrEDU2AjALIAAQNiABKAIUIgIgASgCDEYNASACIQMLQQEhBSABKAIcKAIcIQQgASABKAIgIgZBAWo2AiAgBCAGai0AACEEIAEgAkEBajYCFCABKAIIIAJqIAQ6AAAgBARAIAEoAhQhAgwCBSADIQIMAwsACwtBACEFCwJAIAEoAhwiBCgCLEUNACABKAIUIgMgAk0NACAAIAAoAjAgASgCCCACaiADIAJrEDU2AjALIAUNASABKAIEIQILIAJB2wBHDQMgASgCHCEEDAILIAFBADYCIAsgAUHbADYCBAsgBCgCJEUNASABKAIUIgIhAwJAA0ACQCABKAIMIAJGBEACQCACIANNDQAgASgCHCgCLEUNACAAIAAoAjAgASgCCCADaiACIANrEDU2AjALIAAQNiABKAIUIgIgASgCDEYNASACIQMLQQEhBSABKAIcKAIkIQQgASABKAIgIgZBAWo2AiAgBCAGai0AACEEIAEgAkEBajYCFCABKAIIIAJqIAQ6AAAgBARAIAEoAhQhAgwCBSADIQIMAwsACwtBACEFCwJAIAEoAhwiBCgCLEUNACABKAIUIgMgAk0NACAAIAAoAjAgASgCCCACaiADIAJrEDU2AjALIAUNASABKAIEIQILIAJB5wBHDQIgASgCHCEEDAELIAFB5wA2AgQLIAQoAiwEQCABKAIUIgVBAmoiAiABKAIMIgRLBH8gABA2IAEoAgwhBCABKAIUIgVBAmoFIAILIARLDQEgACgCMCECIAEgBUEBajYCFCABKAIIIAVqIAI6AAAgACgCMCECIAEgASgCFCIDQQFqNgIUIAMgASgCCGogAkEIdjoAACAAQQBBAEEAEDU2AjAgAUHxADYCBAwBCyABQfEANgIECwJAIAEoAhQEQCAAEDYgACgCEARAIAAoAgQhAgwCCwwECyAAKAIEIgINAEEAIQILAkACQAJAIAEoAgQiA0GaBUYEQCACRQ0BDAULIAINAQsgA0GaBUcNACABKAJ0RQ0BCwJ/AkACQAJAIAEoAogBQX5qDgIAAQILIAEQnQQMAgsgARCcBAwBCyABQQQgASgChAFBDGxBuNcAaigCABEDAAsiAkF+cUECRgRAIAFBmgU2AgQLIAJBfXFFBEBBACECIAAoAhANAgwECyACQQFHDQAgAUEAQQBBABCOAiAAEDYgACgCEA0ADAMLQQEhAiABKAIYIgNBAUgNACAAKAIwIQICQCADQQJGBEAgASABKAIUIgNBAWo2AhQgAyABKAIIaiACOgAAIAAoAjAhAiABIAEoAhQiA0EBajYCFCADIAEoAghqIAJBCHY6AAAgAC8BMiECIAEgASgCFCIDQQFqNgIUIAMgASgCCGogAjoAACAALQAzIQIgASABKAIUIgNBAWo2AhQgAyABKAIIaiACOgAAIAAoAgghAiABIAEoAhQiA0EBajYCFCADIAEoAghqIAI6AAAgACgCCCECIAEgASgCFCIDQQFqNgIUIAMgASgCCGogAkEIdjoAACAALwEKIQIgASABKAIUIgNBAWo2AhQgAyABKAIIaiACOgAAIAAtAAshAiABIAEoAhQiA0EBajYCFCADIAEoAghqIAI6AAAMAQsgASACQRB2EHUgASAALwEwEHULIAAQNiABKAIYIgBBAU4EQCABQQAgAGs2AhgLIAEoAhRFIQILIAIPCyAAQceEATYCGEF7DwsgAUF/NgIoQQAL3QEBBn8CQCAAKAKAgBAiBSAAKAKEgBAiAyAAKAKMgBAiBGpBBGpJDQAgACgClIAQIgIgBSADa0F9aiIGTw0AA0AgACACQf//A3FBAXRqQYCACGogAiAAIAIgA2oQOkECdGoiBCgCAGsiB0H//wMgB0H//wNJGzsBACAEIAI2AgAgAkEBaiICIAZJDQALIAAoAoyAECEECyAAIAQ2ApCAECAAIAM2AoiAECAAQQA2ApyAECAAIAE2AoCAECAAIAUgA2siAjYCjIAQIAAgAjYClIAQIAAgASACazYChIAQC9kDAQR/IwBBEGsiAyQAIAFBADYCACAAKAIAIgIgA0EMaiACKAIAKAIMEQMAIQICQCADKAIMRQ0AIAIsAAAhAiAAKAIAIgRBASAEKAIAKAIQEQQAIAEgASgCACACQf8AcXI2AgACQCACQX9KDQAgACgCACICIANBDGogAigCACgCDBEDACECIAMoAgxFDQEgAiwAACECIAAoAgAiBEEBIAQoAgAoAhARBAAgASABKAIAIAJB/wBxQQd0cjYCACACQX9KDQAgACgCACICIANBDGogAigCACgCDBEDACECIAMoAgxFDQEgAiwAACECIAAoAgAiBEEBIAQoAgAoAhARBAAgASABKAIAIAJB/wBxQQ50cjYCACACQX9KDQAgACgCACICIANBDGogAigCACgCDBEDACECIAMoAgxFDQEgAiwAACECIAAoAgAiBEEBIAQoAgAoAhARBAAgASABKAIAIAJB/wBxQRV0cjYCACACQX9KDQAgACgCACICIANBDGogAigCACgCDBEDACECIAMoAgxFDQEgAiwAACEFIAAoAgAiAEEBIAAoAgAoAhARBAAgASABKAIAIAVBHHRyNgIAIAVBf0oNAEEAIQUMAQtBASEFCyADQRBqJAAgBQvhSQE3fwJAIAAoAoCAECIJIAAoAoSAECILayAAKAKQgBBrIghBgIAETwRAIABBADYCnIAQDAELAkAgCA0AIAMoAgBBgSBIDQAgACAAKAKcgBBBoIAQECoiACABEKwEIAAgBTsBmIAQDAELAkAgBEEATEEAIAZBAkYbDQAgAygCACIIQYCAgPAHSw0AIAAgCCAJajYCgIAQQQkgBSAFQQFIGyIFQQwgBUEMSBsiG0EMbCIJQZQWaigCACEuAkACfyAbQQlNBEAgA0EANgIAIAIgBGoiOkF7aiA6IAZBAkYiOxshKSABIAhqITMgASEoIAIhCQJAIAhBDUgNACAzQXRqIjIgAUkNAEGANCAbdkEBcSE0IDNBe2oiGEF/aiEvIBhBfWohIkEAIRsDQCAAKAKUgBAhBCAAKAKIgBAhEyAAKAKcgBAhFCAoIQwDQCAAKAKQgBAiBSAMIAtrIh9BgYB8aiAFQYCABGogH0sbIRUgACgC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BEADQCADKAAAIAQoAABzIgkEQCAJECUgBGogAGsMBAsgA0EEaiEDIARBBGoiBCAUSQ0ACwsCQCAEIBhPDQAgAy8AACAELwAARw0AIANBAmohAyAEQQJqIQQLIAQgF0kEfyAEQQFqIAQgAy0AACAELQAARhsFIAQLIABrDAELIAMQJQsiAEHwAWpB/wFuakEIaiAPSw0EIAdBAmohAyAAIAZqQQRqIQYgBS0AACEEAn8gAEEPTwRAIAUgBEEPajoAACADQX8QNCAAQXFqIgRB/AdPBEADQCADQQRqIgNBfxA0IARBhHhqIgRB+wdLDQALCyADIARB//8DcUH/AW4iAGoiAyAAQYF+bCAEajoAACADQQFqDAELIAUgACAEajoAACADCyEFIAYgEU8NASAGQX5qIgAgACgAACALEDAgCCALIAwQSSAGKAAAIQACQAJAIBZFBEAgAEEBEDAiACAIEIUBIQQgBiAAIAhBASAMEEkgBEH//wNqIAZJDQEgBCgAACAGKAAARw0BDAILIAAgCxAwIgMgCCALEEghACAGIAxrIgQgAyAIIAsQXCAAQf//A2ogBEkNACAAIAxqIgQoAAAgBigAAEYNAQsgBkEBaiIDKAAAIAsQMCEEDAMLIAVBADoAACAFQQFqIQcMAAsACwtBACETIAUgECAGayIBaiABQfABakH/AW5qQQFqIA9LDQECQCABQQ9PBEAgBUHwAToAACAFQQFqIQAgAUFxaiIDQf8BSQRAIAAiBSADOgAADAILIABB/wEgAUHyfWoiAEH/AW5BAWoQKBogAEH/AW4iAyAFakECaiIFIANBgX5sIABqOgAADAELIAUgAUEEdDoAAAsgBUEBaiAGIAEQKiABaiACayETDAELIANBgICA8AdLDQAgASADaiIPQXVqIRAgD0F0aiEUIAgoAoCAASEAIAhBAUECIAFB//8DSxsiCzsBhoABIAggACADajYCgIABIAggCCgCkIABIANqNgKQgAEgASABKAAAIAsQMCAIIAsgASAAayIMEEkgD0F7aiITQX9qIRcgE0F9aiERIAZBBnQiCkEBciENIAFBAWoiAygAACALEDAhBCABQYCABEkhFSACIQUgASEGA0ACQCAVRQRAIAMgFEsNBCADQQFqIQ4gCiEJIA0hBwNAIAQgCBCFASEAIA4oAABBARAwIRIgAyAE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IAJBCE8EQANAIAMEQCADIAVsIQcgBUEHciIIIANsIQkgBUEGciIKIANsIQsgBUEFciIMIANsIQ0gBUEEciIOIANsIQ8gBUEDciIQIANsIREgBUECciISIANsIRMgBUEBciIUIANsIRVBACEEA0AgASAFIAIgBGwiBmpqIAAgBCAHamotAAA6AAAgASAGIBRqaiAAIAQgFWpqLQAAOgAAIAEgBiASamogACAEIBNqai0AADoAACABIAYgEGpqIAAgBCARamotAAA6AAAgASAGIA5qaiAAIAQgD2pqLQAAOgAAIAEgBiAMamogACAEIA1qai0AADoAACABIAYgCmpqIAAgBCALamotAAA6AAAgASAGIAhqaiAAIAQgCWpqLQAAOgAAIARBAWoiBCADRw0ACwsgBUEPaiEEIAVBCGohBSAEIAJJDQALCyACQXhxIgUgAk8NAANAIAMEQCADIAVsIQZBACEEA0AgASACIARsIAVqaiAAIAQgBmpqLQAAOgAAIARBAWoiBCADRw0ACwsgBUEBaiIFIAJHDQALCyACIANsrQuCAQEGfyABIAEgAG4iBiAAbGshByAAIAFNBEAgBkEBIAZBAUsbIQgDQCAABEAgACAEbCEJQQAhBQNAIAMgBSAJamogAiAFIAZsIARqai0AADoAACAFQQFqIgUgAEcNAAsLIARBAWoiBCAIRw0ACwsgAyABIAdrIgBqIAAgAmogBxAqGgsNACAAIAEgAiADEL0EC4IBAQZ/IAEgASAAbiIGIABsayEHIAAEQCAGQQEgBkEBSxshCANAIAAgAU0EQCAEIAZsIQlBACEFA0AgAyAFIAlqaiACIAAgBWwgBGpqLQAAOgAAIAVBAWoiBSAIRw0ACwsgBEEBaiIEIABHDQALCyADIAEgB2siAGogACACaiAHECoaC7gBAQN/AkAgAUEBSA0AIAAsAAAiBEH/AHEhAwJAIARBf0oNACABQQJIDQEgACwAASIEQQd0QYD/AHEgA3IhAyAEQX9KDQAgAUEDSA0BIAAsAAIiBEEOdEGAgP8AcSADciEDIARBf0oNACABQQRIDQEgACwAAyIEQRV0QYCAgP8AcSADciEDIARBf0oNACABQQVIDQEgAC0ABCIAQQ9LDQEgAEEcdCADciEDCyACIAM2AgBBASEFCyAFCw0AIAAgASACIAMQvwQLlAIB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CA0tEC0gLgAJDS4QLiAvAAoNLxAvIDAACw0wEDAgMQAEDjEQMSAyAAUOMhAyIDMABg4zEDMgNAAHDjQQNCA1AAgONRA1IDYACQ42EDYgNwAKDjcQNyA4AAsOOBA4IDkABA85EDkgOgAFDzoQOiA7AAYPOxA7IDwABw88EDwgAQgIDz0QPSABEAkPPhA+IAEYCg8/ED8gASALD0AQQCAAAAAA/wAAAP//AAD///8A/////2RlY29tcHJlc3MAY29tcHJlc3MAZnJlZV9yZXN1bHQAdmkAAHhzAABpaWlpaWlpAEGQDgvUBigHAAAwBwAAMAcAAMxzAADMcwAAzHMAABh0AAC2BwAAQHQAAEgHAAAAAAAAAQAAAIgHAAAAAAAATlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAABh0AACQBwAATlN0M19fMjIxX19iYXNpY19zdHJpbmdfY29tbW9uSUxiMUVFRQBOMTBlbXNjcmlwdGVuM3ZhbEUAAAAAGHQAANQHAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0loRUUAaWlpAAAoBwAAMAcAABgIAAAgCAAAJAgAACoIAAAxCAAANggAAGJsb3NjbHoAbHo0AGx6NGhjAHNuYXBweQB6bGliAHpzdGQARXJyb3IuICBudGhyZWFkcyBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gQkxPU0NfTUFYX1RIUkVBRFMgKCVkKQBFcnJvci4gIG50aHJlYWRzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyAEVSUk9SOyByZXR1cm4gY29kZSBmcm9tIHB0aHJlYWRfY3JlYXRlKCkgaXMgJWQKAAlFcnJvciBkZXRhaWw6ICVzCgBCbG9zYyBoYXMgbm90IGJlZW4gY29tcGlsZWQgd2l0aCAnJXMnIABjb21wcmVzc2lvbiBzdXBwb3J0LiAgUGxlYXNlIHVzZSBvbmUgaGF2aW5nIGl0LgBFcnJvciBhbGxvY2F0aW5nIG1lbW9yeSEARVJST1I7IHJldHVybiBjb2RlIGZyb20gcHRocmVhZF9qb2luKCkgaXMgJWQKAElucHV0IGJ1ZmZlciBzaXplIGNhbm5vdCBleGNlZWQgJWQgYnl0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AAAIAAAACQAAAAkAAAAKAAAACgAAAAsAAAALAAAADAAAAAwAAAANAAAADQBBgNsAC/8IDAAIAIwACABMAAgAzAAIACwACACsAAgAbAAIAOwACAAcAAgAnAAIAFwACADcAAgAPAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgAEgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkAcwAJAHMBCQDzAAkA8wEJAAsACQALAQkAiwAJAIsBCQBLAAkASwEJAMsACQDLAQkAKwAJACsBCQCrAAkAqwEJAGsACQBrAQkA6wAJAOsBCQAbAAkAGwEJAJsACQCbAQkAWwAJAFsBCQDbAAkA2wEJADsACQA7AQkAuwAJALsBCQB7AAkAewEJAPsACQD7AQkABwAJAAcBCQCHAAkAhwEJAEcACQBHAQkAxwAJAMcBCQAnAAkAJwEJAKcACQCnAQkAZwAJAGcBCQDnAAkA5wEJABcACQAXAQkAlwAJAJcBCQBXAAkAVwEJANcACQDXAQkANwAJADcBCQC3AAkAtwEJAHcACQB3AQkA9wAJAPcBCQAPAAkADwEJAI8ACQCPAQkATwAJAE8BCQDPAAkAzwEJAC8ACQAvAQkArwAJAK8BCQBvAAkAbwEJAO8ACQDvAQkAHwAJAB8BCQCfAAkAnwEJAF8ACQBfAQkA3wAJAN8BCQA/AAkAPwEJAL8ACQC/AQkAfwAJAH8BCQD/AAkA/wEJAAAABwBAAAcAIAAHAGAABwAQAAcAUAAHADAABwBwAAcACAAHAEgABwAoAAcAaAAHABgABwBYAAcAOAAHAHgABwAEAAcARAAHACQABwBkAAcAFAAHAFQABwA0AAcAdAAHAAMACACDAAgAQwAIAMMACAAjAAgAowAIAGMACADjAAgAQaDkAAtNAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQYDlAAsTEBESAAgHCQYKBQsEDAMNAg4BDwBBoeUAC+wCAQIDBAUGBwgICQkKCgsLDAwMDA0NDQ0ODg4ODw8PDxAQEBAQEBAQERERERERERESEhISEhISEhMTExMTExMTFBQUFBQUFBQUFBQUFBQUFBUVFRUVFRUVFRUVFRUVFRUWFhYWFhYWFhYWFhYWFhYWFxcXFxcXFxcXFxcXFxcXFxgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxscAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4ABBoegAC/UEAQIDBAQFBQYGBgYHBwcHCAgICAgICAgJCQkJCQkJCQoKCgoKCgoKCgoKCgoKCgoLCwsLCwsLCwsLCwsLCwsLDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PAAAQERISExMUFBQUFRUVFRYWFhYWFhYWFxcXFxcXFxcYGBgYGBgYGBgYGBgYGBgYGRkZGRkZGRkZGRkZGRkZGRoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxscHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQAAAAABAAAAAgAAAAMAAAAEAAAABgAAAAgAAAAMAAAAEAAAABgAAAAgAAAAMAAAAEAAAABgAAAAgAAAAMAAAAAAAQAAgAEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAQaDtAAvEAwEAAgADAAQABQAHAAkADQARABkAIQAxAEEAYQCBAMEAAQGBAQECAQMBBAEGAQgBDAEQARgBIAEwAUABYAAAAAADAAQABQAGAAcACAAJAAoACwANAA8AEQATABcAGwAfACMAKwAzADsAQwBTAGMAcwCDAKMAwwDjAAIBAAAAAAAAEAAQABAAEAARABEAEgASABMAEwAUABQAFQAVABYAFgAXABcAGAAYABkAGQAaABoAGwAbABwAHAAdAB0AQABAABAAEAAQABAAEAAQABAAEAARABEAEQARABIAEgASABIAEwATABMAEwAUABQAFAAUABUAFQAVABUAEABIAE4AaW5jb3JyZWN0IGhlYWRlciBjaGVjawB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABpbnZhbGlkIHdpbmRvdyBzaXplAHVua25vd24gaGVhZGVyIGZsYWdzIHNldABoZWFkZXIgY3JjIG1pc21hdGNoAGludmFsaWQgYmxvY2sgdHlwZQBpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzAHRvbyBtYW55IGxlbmd0aCBvciBkaXN0YW5jZSBzeW1ib2xzAEHw8AAL4xMQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAGludmFsaWQgY29kZSBsZW5ndGhzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AGludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jawBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBkaXN0YW5jZXMgc2V0AGludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZQBpbnZhbGlkIGRpc3RhbmNlIGNvZGUAaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2sAaW5jb3JyZWN0IGRhdGEgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawAAAAAAYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwAAQBwoAAAhgAAAIIAAACaAAAAgAAAAIgAAACEAAAAngABAHBgAACFgAAAgYAAAJkAATBzsAAAh4AAAIOAAACdAAEQcRAAAIaAAACCgAAAmwAAAICAAACIgAAAhIAAAJ8AAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnIABEHDQAACGQAAAgkAAAJqAAACAQAAAiEAAAIRAAACegAEAcIAAAIXAAACBwAAAmYABQHUwAACHwAAAg8AAAJ2AASBxcAAAhsAAAILAAACbgAAAgMAAAIjAAACEwAAAn4ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcQAEQcLAAAIYgAACCIAAAmkAAAIAgAACIIAAAhCAAAJ5AAQBwcAAAhaAAAIGgAACZQAFAdDAAAIegAACDoAAAnUABIHEwAACGoAAAgqAAAJtAAACAoAAAiKAAAISgAACfQAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzAARBw8AAAhmAAAIJgAACawAAAgGAAAIhgAACEYAAAnsABAHCQAACF4AAAgeAAAJnAAUB2MAAAh+AAAIPgAACdwAEgcbAAAIbgAACC4AAAm8AAAIDgAACI4AAAhOAAAJ/ABgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnCABAHCgAACGEAAAghAAAJogAACAEAAAiBAAAIQQAACeIAEAcGAAAIWQAACBkAAAmSABMHOwAACHkAAAg5AAAJ0gARBxEAAAhpAAAIKQAACbIAAAgJAAAIiQAACEkAAAnyABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcoAEQcNAAAIZQAACCUAAAmqAAAIBQAACIUAAAhFAAAJ6gAQBwgAAAhdAAAIHQAACZoAFAdTAAAIfQAACD0AAAnaABIHFwAACG0AAAgtAAAJugAACA0AAAiNAAAITQAACfoAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxgARBwsAAAhjAAAIIwAACaYAAAgDAAAIgwAACEMAAAnmABAHBwAACFsAAAgbAAAJlgAUB0MAAAh7AAAIOwAACdYAEgcTAAAIawAACCsAAAm2AAAICwAACIsAAAhLAAAJ9gAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnOABEHDwAACGcAAAgnAAAJrgAACAcAAAiHAAAIRwAACe4AEAcJAAAIXwAACB8AAAmeABQHYwAACH8AAAg/AAAJ3gASBxsAAAhvAAAILwAACb4AAAgPAAAIjwAACE8AAAn+AGAHAAAACFAAAAgQABQIcwASBx8AAAhwAAAIMAAACcEAEAcKAAAIYAAACCAAAAmhAAAIAAAACIAAAAhAAAAJ4QAQBwYAAAhYAAAIGAAACZEAEwc7AAAIeAAACDgAAAnRABEHEQAACGgAAAgoAAAJsQAACAgAAAiIAAAISAAACfEAEAcEAAAIVAAACBQAFQjjABMHKwAACHQAAAg0AAAJyQARBw0AAAhkAAAIJAAACakAAAgEAAAIhAAACEQAAAnpABAHCAAACFwAAAgcAAAJmQAUB1MAAAh8AAAIPAAACdkAEgcXAAAIbAAACCwAAAm5AAAIDAAACIwAAAhMAAAJ+QAQBwMAAAhSAAAIEgAVCKMAEwcjAAAIcgAACDIAAAnFABEHCwAACGIAAAgiAAAJpQAACAIAAAiCAAAIQgAACeUAEAcHAAAIWgAACBoAAAmVABQHQwAACHoAAAg6AAAJ1QASBxMAAAhqAAAIKgAACbUAAAgKAAAIigAACEoAAAn1ABAHBQAACFYAAAgWAEAIAAATBzMAAAh2AAAINgAACc0AEQcPAAAIZgAACCYAAAmtAAAIBgAACIYAAAhGAAAJ7QAQBwkAAAheAAAIHgAACZ0AFAdjAAAIfgAACD4AAAndABIHGwAACG4AAAguAAAJvQAACA4AAAiOAAAITgAACf0AYAcAAAAIUQAACBEAFQiDABIHHwAACHEAAAgxAAAJwwAQBwoAAAhhAAAIIQAACaMAAAgBAAAIgQAACEEAAAnjABAHBgAACFkAAAgZAAAJkwATBzsAAAh5AAAIOQAACdMAEQcRAAAIaQAACCkAAAmzAAAICQAACIkAAAhJAAAJ8wAQBwQAAAhVAAAIFQAQCAIBEwcrAAAIdQAACDUAAAnLABEHDQAACGUAAAglAAAJqwAACAUAAAiFAAAIRQAACesAEAcIAAAIXQAACB0AAAmbABQHUwAACH0AAAg9AAAJ2wASBxcAAAhtAAAILQAACbsAAAgNAAAIjQAACE0AAAn7ABAHAwAACFMAAAgTABUIwwATByMAAAhzAAAIMwAACccAEQcLAAAIYwAACCMAAAmnAAAIAwAACIMAAAhDAAAJ5wAQBwcAAAhbAAAIGwAACZcAFAdDAAAIewAACDsAAAnXABIHEwAACGsAAAgrAAAJtwAACAsAAAiLAAAISwAACfcAEAcFAAAIVwAACBcAQAgAABMHMwAACHcAAAg3AAAJzwARBw8AAAhnAAAIJwAACa8AAAgHAAAIhwAACEcAAAnvABAHCQAACF8AAAgfAAAJnwAUB2MAAAh/AAAIPwAACd8AEgcbAAAIbwAACC8AAAm/AAAIDwAACI8AAAhPAAAJ/wAQBQEAFwUBARMFEQAbBQEQEQUFABkFAQQVBUEAHQUBQBAFAwAYBQECFAUhABwFASASBQkAGgUBCBYFgQBABQAAEAUCABcFgQETBRkAGwUBGBEFBwAZBQEGFQVhAB0FAWAQBQQAGAUBAxQFMQAcBQEwEgUNABoFAQwWBcEAQAUAADEuMi44AHN0cmVhbSBlcnJvcgBpbnN1ZmZpY2llbnQgbWVtb3J5AGJ1ZmZlciBlcnJvcgBB5IQBC6EVazgHAA2yBwCc8gcAcGQIAGCuCgCwcQsAMKoMABMAAAAMAAAADQAAAAEAAAAGAAAAAQAAAAEAAAATAAAADQAAAA4AAAABAAAABwAAAAAAAAABAAAAFAAAAA8AAAAQAAAAAQAAAAYAAAAAAAAAAQAAABUAAAAQAAAAEQAAAAEAAAAFAAAAAAAAAAIAAAAVAAAAEgAAABIAAAABAAAABQAAAAAAAAACAAAAFQAAABIAAAATAAAAAgAAAAUAAAACAAAAAwAAABUAAAATAAAAEwAAAAMAAAAFAAAABAAAAAMAAAAVAAAAEwAAABMAAAADAAAABQAAAAgAAAAEAAAAFQAAABMAAAATAAAAAwAAAAUAAAAQAAAABQAAABUAAAATAAAAFAAAAAQAAAAFAAAAEAAAAAUAAAAWAAAAFAAAABUAAAAEAAAABQAAABAAAAAFAAAAFgAAABUAAAAWAAAABAAAAAUAAAAQAAAABQAAABYAAAAVAAAAFgAAAAUAAAAFAAAAEAAAAAUAAAAWAAAAFQAAABYAAAAFAAAABQAAACAAAAAGAAAAFgAAABYAAAAXAAAABQAAAAUAAAAgAAAABgAAABYAAAAXAAAAFwAAAAYAAAAFAAAAIAAAAAYAAAAWAAAAFgAAABYAAAAFAAAABQAAADAAAAAHAAAAFwAAABcAAAAWAAAABQAAAAQAAABAAAAABwAAABcAAAAXAAAAFgAAAAYAAAADAAAAQAAAAAgAAAAXAAAAGAAAABYAAAAHAAAAAwAAAAABAAAJAAAAGQAAABkAAAAXAAAABwAAAAMAAAAAAQAACQAAABoAAAAaAAAAGAAAAAcAAAADAAAAAAIAAAkAAAAbAAAAGwAAABkAAAAJAAAAAwAAAOcDAAAJAAAAEgAAAAwAAAANAAAAAQAAAAUAAAABAAAAAQAAABIAAAANAAAADgAAAAEAAAAGAAAAAAAAAAEAAAASAAAADgAAAA4AAAABAAAABQAAAAAAAAACAAAAEgAAABAAAAAQAAAAAQAAAAQAAAAAAAAAAgAAABIAAAAQAAAAEQAAAAIAAAAFAAAAAgAAAAMAAAASAAAAEgAAABIAAAADAAAABQAAAAIAAAADAAAAEgAAABIAAAATAAAAAwAAAAUAAAAEAAAABAAAABIAAAASAAAAEwAAAAQAAAAEAAAABAAAAAQAAAASAAAAEgAAABMAAAAEAAAABAAAAAgAAAAFAAAAEgAAABIAAAATAAAABQAAAAQAAAAIAAAABQAAABIAAAASAAAAEwAAAAYAAAAEAAAACAAAAAUAAAASAAAAEgAAABMAAAAFAAAABAAAAAwAAAAGAAAAEgAAABMAAAATAAAABwAAAAQAAAAMAAAABgAAABIAAAASAAAAEwAAAAQAAAAEAAAAEAAAAAcAAAASAAAAEgAAABMAAAAEAAAAAwAAACAAAAAHAAAAEgAAABIAAAATAAAABgAAAAMAAACAAAAABwAAABIAAAATAAAAEwAAAAYAAAADAAAAgAAAAAgAAAASAAAAEwAAABMAAAAIAAAAAwAAAAABAAAIAAAAEgAAABMAAAATAAAABgAAAAMAAACAAAAACQAAABIAAAATAAAAEwAAAAgAAAADAAAAAAEAAAkAAAASAAAAEwAAABMAAAAKAAAAAwAAAAACAAAJAAAAEgAAABMAAAATAAAADAAAAAMAAAAAAgAACQAAABIAAAATAAAAEwAAAA0AAAADAAAA5wMAAAkAAAARAAAADAAAAAwAAAABAAAABQAAAAEAAAABAAAAEQAAAAwAAAANAAAAAQAAAAYAAAAAAAAAAQAAABEAAAANAAAADwAAAAEAAAAFAAAAAAAAAAEAAAARAAAADwAAABAAAAACAAAABQAAAAAAAAACAAAAEQAAABEAAAARAAAAAgAAAAQAAAAAAAAAAgAAABEAAAAQAAAAEQAAAAMAAAAEAAAAAgAAAAMAAAARAAAAEQAAABEAAAADAAAABAAAAAQAAAAEAAAAEQAAABEAAAARAAAAAwAAAAQAAAAIAAAABQAAABEAAAARAAAAEQAAAAQAAAAEAAAACAAAAAUAAAARAAAAEQAAABEAAAAFAAAABAAAAAgAAAAFAAAAEQAAABEAAAARAAAABgAAAAQAAAAIAAAABQAAABEAAAARAAAAEQAAAAUAAAAEAAAACAAAAAYAAAARAAAAEgAAABEAAAAHAAAABAAAAAwAAAAGAAAAEQAAABIAAAARAAAAAwAAAAQAAAAMAAAABwAAABEAAAASAAAAEQAAAAQAAAADAAAAIAAAAAcAAAARAAAAEgAAABEAAAAGAAAAAwAAAAABAAAHAAAAEQAAABIAAAARAAAABgAAAAMAAACAAAAACAAAABEAAAASAAAAEQAAAAgAAAADAAAAAAEAAAgAAAARAAAAEgAAABEAAAAKAAAAAwAAAAACAAAIAAAAEQAAABIAAAARAAAABQAAAAMAAAAAAQAACQAAABEAAAASAAAAEQAAAAcAAAADAAAAAAIAAAkAAAARAAAAEgAAABEAAAAJAAAAAwAAAAACAAAJAAAAEQAAABIAAAARAAAACwAAAAMAAADnAwAACQAAAA4AAAAMAAAADQAAAAEAAAAFAAAAAQAAAAEAAAAOAAAADgAAAA8AAAABAAAABQAAAAAAAAABAAAADgAAAA4AAAAPAAAAAQAAAAQAAAAAAAAAAQAAAA4AAAAOAAAADwAAAAIAAAAEAAAAAAAAAAIAAAAOAAAADgAAAA4AAAAEAAAABAAAAAIAAAADAAAADgAAAA4AAAAOAAAAAwAAAAQAAAAEAAAABAAAAA4AAAAOAAAADgAAAAQAAAAEAAAACAAAAAUAAAAOAAAADgAAAA4AAAAGAAAABAAAAAgAAAAFAAAADgAAAA4AAAAOAAAACAAAAAQAAAAIAAAABQAAAA4AAAAPAAAADgAAAAUAAAAEAAAACAAAAAYAAAAOAAAADwAAAA4AAAAJAAAABAAAAAgAAAAGAAAADgAAAA8AAAAOAAAAAwAAAAQAAAAMAAAABwAAAA4AAAAPAAAADgAAAAQAAAADAAAAGAAAAAcAAAAOAAAADwAAAA4AAAAFAAAAAwAAACAAAAAIAAAADgAAAA8AAAAPAAAABgAAAAMAAABAAAAACAAAAA4AAAAPAAAADwAAAAcAAAADAAAAAAEAAAgAAAAOAAAADwAAAA8AAAAFAAAAAwAAADAAAAAJAAAADgAAAA8AAAAPAAAABgAAAAMAAACAAAAACQAAAA4AAAAPAAAADwAAAAcAAAADAAAAAAEAAAkAAAAOAAAADwAAAA8AAAAIAAAAAwAAAAABAAAJAAAADgAAAA8AAAAPAAAACAAAAAMAAAAAAgAACQAAAA4AAAAPAAAADwAAAAkAAAADAAAAAAIAAAkAAAAOAAAADwAAAA8AAAAKAAAAAwAAAOcDAAAJAAAAIAAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADAAAAAxAAAAMQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAAAA4AEGQmgEL+gEEAAMAAgACAAIAAgACAAIAAgACAAIAAgACAAEAAQABAAIAAgACAAIAAgACAAIAAgACAAMAAgABAAEAAQABAAEA//////////8AAAAAAAAAAAEAAQABAAEAAQABAAIAAgACAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAP////////////8AAAAAAAABAAQAAwACAAIAAgACAAIAAgABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAP//////////////////AEGVnAEL+AcIAAAABwAAagYAAAAGAACtBQAAagUAADEFAAAABQAA1AQAAK0EAACKBAAAagQAAEwEAAAxBAAAFwQAAAAEAADpAwAA1AMAAMADAACtAwAAmwMAAIoDAAB5AwAAagMAAFsDAABMAwAAPgMAADEDAAAkAwAAFwMAAAsDAAAAAwAA9AIAAOkCAADeAgAA1AIAAMoCAADAAgAAtgIAAK0CAACkAgAAmwIAAJICAACKAgAAggIAAHkCAAByAgAAagIAAGICAABbAgAAUwIAAEwCAABFAgAAPgIAADcCAAAxAgAAKgIAACQCAAAeAgAAFwIAABECAAALAgAABQIAAAACAAD6AQAA9AEAAO8BAADpAQAA5AEAAN4BAADZAQAA1AEAAM8BAADKAQAAxQEAAMABAAC7AQAAtgEAALIBAACtAQAAqAEAAKQBAACfAQAAmwEAAJcBAACSAQAAjgEAAIoBAACGAQAAggEAAH4BAAB5AQAAdQEAAHIBAABuAQAAagEAAGYBAABiAQAAXgEAAFsBAABXAQAAUwEAAFABAABMAQAASQEAAEUBAABCAQAAPgEAADsBAAA3AQAANAEAADEBAAAuAQAAKgEAACcBAAAkAQAAIQEAAB4BAAAaAQAAFwEAABQBAAARAQAADgEAAAsBAAAIAQAABQEAAAIBAAAAAQAA/QAAAPoAAAD3AAAA9AAAAPEAAADvAAAA7AAAAOkAAADmAAAA5AAAAOEAAADeAAAA3AAAANkAAADXAAAA1AAAANEAAADPAAAAzAAAAMoAAADHAAAAxQAAAMIAAADAAAAAvgAAALsAAAC5AAAAtgAAALQAAACyAAAArwAAAK0AAACrAAAAqAAAAKYAAACkAAAAogAAAJ8AAACdAAAAmwAAAJkAAACXAAAAlQAAAJIA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AAAPAAAAEAAAABIAAAAUAAAAFgAAABgAAAAcAAAAIAAAACgAAAAwAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQBBsLIBC9YEAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAwAAAAMAAAAEAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAABAAEBBgAAAAAAAAQAAAAAEAAABAAAAAAgAAAFAQAAAAAAAAUDAAAAAAAABQQAAAAAAAAFBgAAAAAAAAUHAAAAAAAABQkAAAAAAAAFCgAAAAAAAAUMAAAAAAAABg4AAAAAAAEFEAAAAAAAAQUUAAAAAAABBRYAAAAAAAIFHAAAAAAAAwUgAAAAAAAEBTAAAAAgAAYFQAAAAAAABwWAAAAAAAAIBgABAAAAAAoGAAQAAAAADAYAEAAAIAAABAAAAAAAAAAEAQAAAAAAAAUCAAAAIAAABQQAAAAAAAAFBQAAACAAAAUHAAAAAAAABQgAAAAgAAAFCgAAAAAAAAULAAAAAAAABg0AAAAgAAEFEAAAAAAAAQUSAAAAIAABBRYAAAAAAAIFGAAAACAAAwUgAAAAAAADBSgAAAAAAAYEQAAAABAABgRAAAAAIAAHBYAAAAAAAAkGAAIAAAAACwYACAAAMAAABAAAAAAQAAAEAQAAACAAAAUCAAAAIAAABQMAAAAgAAAFBQAAACAAAAUGAAAAIAAABQgAAAAgAAAFCQAAACAAAAULAAAAIAAABQwAAAAAAAAGDwAAACAAAQUSAAAAIAABBRQAAAAgAAIFGAAAACAAAgUcAAAAIAADBSgAAAAgAAQFMAAAAAAAEAYAAAEAAAAPBgCAAAAAAA4GAEAAAAAADQYAIABBlLcBC4MEAQAAAAEAAAAFAAAADQAAAB0AAAA9AAAAfQAAAP0AAAD9AQAA/QMAAP0HAAD9DwAA/R8AAP0/AAD9fwAA/f8AAP3/AQD9/wMA/f8HAP3/DwD9/x8A/f8/AP3/fwD9//8A/f//Af3//wP9//8H/f//D/3//x/9//8//f//fwAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAAT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IGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+AAAAGHQAAFBlAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lkRUUAABh0AAB4ZQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZkVFAAAYdAAAoGUAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SW1FRQAAGHQAAMhlAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUAABh0AADwZQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJakVFAAAYdAAAGGYAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWlFRQAAGHQAAEBmAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAABh0AABoZgAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJc0VFAAAYdAAAkGYAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWFFRQAAGHQAALhmAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ljRUUAAEB0AADwZgAAAAAAAAEAAACIBwAAAAAAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0lEaU5TXzExY2hhcl90cmFpdHNJRGlFRU5TXzlhbGxvY2F0b3JJRGlFRUVFAAAAQHQAAExnAAAAAAAAAQAAAIgHAAAAAAAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURzTlNfMTFjaGFyX3RyYWl0c0lEc0VFTlNfOWFsbG9jYXRvcklEc0VFRUUAAABAdAAAqGcAAAAAAAABAAAAiAcAAAAAAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAQHQAAABoAAAAAAAAAQAAAIgHAAAAAAAATlN0M19fMjEyYmFzaWNfc3RyaW5nSWhOU18xMWNoYXJfdHJhaXRzSWhFRU5TXzlhbGxvY2F0b3JJaEVFRUUAABEACgAREREAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAEQAPChEREQMKBwABAAkLCwAACQYLAAALAAYRAAAAERERAEGR0QELIQsAAAAAAAAAABEACgoREREACgAAAgAJCwAAAAkACwAACwBBy9EBCwEMAEHX0QELFQwAAAAADAAAAAAJDAAAAAAADAAADABBhdIBCwEOAEGR0gELFQ0AAAAEDQAAAAAJDgAAAAAADgAADgBBv9IBCwEQAEHL0gELHg8AAAAADwAAAAAJEAAAAAAAEAAAEAAAEgAAABISEgBBgtMBCw4SAAAAEhISAAAAAAAACQBBs9MBCwELAEG/0wELFQoAAAAACgAAAAAJCwAAAAAACwAACwBB7dMBCwEMAEH50wELJwwAAAAADAAAAAAJDAAAAAAADAAADAAALSsgICAwWDB4AChudWxsKQBBsNQBC2cwMTIzNDU2Nzg5QUJDREVGGRJEOwI/LEcUPTMwChsGRktFNw9JDo4XA0AdPGkrNh9KLRwBICUpIQgMFRYiLhA4Pgs0MRhkdHV2L0EJfzkRI0MyQomKiwUEJignDSoeNYwHGkiTE5SVAEGg1QEL9hNJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgAAYmFzaWNfc3RyaW5nAHN0ZDo6ZXhjZXB0aW9uAAAAAADccQAAPAAAAD0AAAA+AAAAGHQAAORxAABTdDlleGNlcHRpb24AAAAAAAAAAAhyAAAQAAAAPwAAAEAAAACMcgAAFHIAANxxAABTdDExbG9naWNfZXJyb3IAAAAAADhyAAAQAAAAQQAAAEAAAACMcgAARHIAAAhyAABTdDEybGVuZ3RoX2Vycm9yAFN0OXR5cGVfaW5mbwAAABh0AABVcgAAjHIAAAFzAABkcgAAjHIAAKxyAABscgAAAAAAANByAABCAAAAQwAAAEQAAABFAAAARgAAAEcAAABIAAAASQAAAE4xMF9fY3h4YWJpdjExN19fY2xhc3NfdHlwZV9pbmZvRQAAAIxyAADccgAAeHIAAE4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRQBOMTBfX2N4eGFiaXYxMTZfX3NoaW1fdHlwZV9pbmZvRQAAAAAAAABAcwAAQgAAAEoAAABEAAAARQAAAEsAAACMcgAATHMAAGxyAABOMTBfX2N4eGFiaXYxMjNfX2Z1bmRhbWVudGFsX3R5cGVfaW5mb0UAdgAAACxzAAB0cwAAYgAAACxzAACAcwAAYwAAACxzAACMcwAAaAAAACxzAACYcwAAYQAAACxzAACkcwAAcwAAACxzAACwcwAAdAAAACxzAAC8cwAAaQAAACxzAADIcwAAagAAACxzAADUcwAAbAAAACxzAADgcwAAbQAAACxzAADscwAAZgAAACxzAAD4cwAAZAAAACxzAAAEdAAAAAAAAHhyAABCAAAATAAAAEQAAABFAAAARgAAAE0AAABOAAAATwAAAAAAAABgdAAAQgAAAFAAAABEAAAARQAAAEYAAABRAAAAUgAAAFMAAACMcgAAbHQAAHhyAABOMTBfX2N4eGFiaXYxMjFfX3ZtaV9jbGFzc190eXBlX2luZm9FAAAAcHUAQZjpAQtBgC0AAAAyAAABAQAAHgEAAA8AAACALAAAAC0AAAAAAAAeAAAADwAAAAAAAAAwLAAAAAAAABMAAAAHAAAAAAAAAAUAQeTpAQsBOQBB/OkBCwo6AAAAOwAAAC12AEGU6gELAQIAQaPqAQsF//////8AQejqAQsJoH5QAAAAAAAFAEH86gELAVQAQZTrAQsOOgAAAFUAAACYegAAAAQAQazrAQsBAQBBu+sBCwUK/////w=="),d,xA;(function(a){a[a.NOSHUFFLE=0]="NOSHUFFLE",a[a.SHUFFLE=1]="SHUFFLE",a[a.BITSHUFFLE=2]="BITSHUFFLE",a[a.AUTOSHUFFLE=-1]="AUTOSHUFFLE"})(xA||(xA={}));const XA=new Set(["blosclz","lz4","lz4hc","snappy","zlib","zstd"]);let l;const ZA=()=>FI({noInitialRun:!0,wasmBinary:yI}),hI=(d=class{constructor(a=5,B="lz4",S=1,N=0){if(a<0||a>9)throw new Error(`Invalid compression level: '${a}'. It should be between 0 and 9`);if(!XA.has(B))throw new Error(`Invalid compressor '${B}'. Valid compressors include + 'blosclz', 'lz4', 'lz4hc','snappy', 'zlib', 'zstd'.`);if(S<-1||S>2)throw new Error(`Invalid shuffle ${S}. Must be one of 0 (NOSHUFFLE), + 1 (SHUFFLE), 2 (BITSHUFFLE), -1 (AUTOSHUFFLE).`);this.blocksize=N,this.clevel=a,this.cname=B,this.shuffle=S}static fromConfig({blocksize:a,clevel:B,cname:S,shuffle:N}){return new d(B,S,N,a)}async encode(a){l||(l=ZA());const B=await l,S=B.compress(a,this.cname,this.clevel,this.shuffle,this.blocksize),N=new Uint8Array(S);return B.free_result(),N}async decode(a,B){l||(l=ZA());const S=await l,N=S.decompress(a),U=new Uint8Array(N);return S.free_result(),B!==void 0?(B.set(U),B):U}},d.codecId="blosc",d.COMPRESSORS=[...XA],d.NOSHUFFLE=0,d.SHUFFLE=1,d.BITSHUFFLE=2,d.AUTOSHUFFLE=-1,d);export{hI as default}; +//# sourceMappingURL=blosc-5eba38ca.js.map diff --git a/omero_web_zarr/static/omero_web_zarr/vizarr/favicon.ico b/omero_web_zarr/static/omero_web_zarr/vizarr/favicon.ico new file mode 100644 index 0000000..02a653c Binary files /dev/null and b/omero_web_zarr/static/omero_web_zarr/vizarr/favicon.ico differ diff --git a/omero_web_zarr/static/omero_web_zarr/vizarr/index-99be1c79.js b/omero_web_zarr/static/omero_web_zarr/vizarr/index-99be1c79.js new file mode 100644 index 0000000..8f5458f --- /dev/null +++ b/omero_web_zarr/static/omero_web_zarr/vizarr/index-99be1c79.js @@ -0,0 +1,2 @@ +import{version as l,createViewer as m,__vitePreload as p}from"./vizarr-09ae863b.js";(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))o(e);new MutationObserver(e=>{for(const t of e)if(t.type==="childList")for(const a of t.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&o(a)}).observe(document,{childList:!0,subtree:!0});function i(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?t.credentials="include":e.crossOrigin==="anonymous"?t.credentials="omit":t.credentials="same-origin",t}function o(e){if(e.ep)return;e.ep=!0;const t=i(e);fetch(e.href,t)}})();var h=w;function w(n,r,i){var o=null,e=null,t=function(){o&&(clearTimeout(o),e=null,o=null)},a=function(){var s=e;t(),s&&s()},c=function(){if(!r)return n.apply(this,arguments);var s=this,f=arguments,u=i&&!o;if(t(),e=function(){n.apply(s,f)},o=setTimeout(function(){if(o=null,!u){var d=e;return e=null,d()}},r),u)return e()};return c.cancel=t,c.flush=a,c}async function v(n){const{imjoyRPC:r}=await p(()=>import("./index-a6b72246.js").then(o=>o.index),["./index-a6b72246.js","./vizarr-09ae863b.js"],import.meta.url);(await r.setupRPC({name:"vizarr",description:"A minimal, purely client-side program for viewing Zarr-based images with Viv & ImJoy.",version:l})).export({add_image:n.addImage,set_view_state:n.setViewState})}function g(n){const r=new URL(window.location.href);if(!r.searchParams.has("source"))return;if(r.searchParams.has("viewState")){const e=JSON.parse(r.searchParams.get("viewState"));n.setViewState(e)}n.on("viewStateChange",h(e=>{const t=new URL(window.location.href);t.searchParams.set("viewState",JSON.stringify(e)),window.history.pushState({},"",decodeURIComponent(t.href))},200));const i={};for(const[e,t]of r.searchParams)i[e]=t;n.addImage(i);const o=decodeURIComponent(r.href);window.location.href!==o&&window.history.pushState(null,"",o)}function y(){console.log(`vizarr v${l}: https://github.com/hms-dbmi/vizarr`);const n=m(document.querySelector("#root"));if(window.self!==window.top){v(n);return}g(n)}y(); +//# sourceMappingURL=index-99be1c79.js.map diff --git a/omero_web_zarr/static/omero_web_zarr/vizarr/index.html b/omero_web_zarr/static/omero_web_zarr/vizarr/index.html new file mode 100644 index 0000000..06993c9 --- /dev/null +++ b/omero_web_zarr/static/omero_web_zarr/vizarr/index.html @@ -0,0 +1,26 @@ + + + + + + + + + vizarr + + + + +
+ + + + + diff --git a/omero_web_zarr/static/omero_web_zarr/vizarr/vizarr-09ae863b.js b/omero_web_zarr/static/omero_web_zarr/vizarr/vizarr-09ae863b.js new file mode 100644 index 0000000..9c93508 --- /dev/null +++ b/omero_web_zarr/static/omero_web_zarr/vizarr/vizarr-09ae863b.js @@ -0,0 +1,3888 @@ +var kT=Object.defineProperty;var QT=(t,e,n)=>e in t?kT(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var Id=(t,e,n)=>(QT(t,typeof e!="symbol"?e+"":e,n),n),$v=(t,e,n)=>{if(!e.has(t))throw TypeError("Cannot "+n)};var Kv=(t,e,n)=>($v(t,e,"read from private field"),n?n.call(t):e.get(t)),qv=(t,e,n)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,n)},Xv=(t,e,n,r)=>($v(t,e,"write to private field"),r?r.call(t,n):e.set(t,n),n);function FT(t,e){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}const UT="modulepreload",GT=function(t,e){return new URL(t,e).href},Jv={},$t=function(e,n,r){if(!n||n.length===0)return e();const i=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=GT(s,r),s in Jv)return;Jv[s]=!0;const o=s.endsWith(".css"),a=o?'[rel="stylesheet"]':"";if(!!r)for(let u=i.length-1;u>=0;u--){const f=i[u];if(f.href===s&&(!o||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${a}`))return;const c=document.createElement("link");if(c.rel=o?"stylesheet":UT,o||(c.as="script",c.crossOrigin=""),c.href=s,document.head.appendChild(c),o)return new Promise((u,f)=>{c.addEventListener("load",u),c.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>e()).catch(s=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=s,window.dispatchEvent(o),!o.defaultPrevented)throw s})};function zo(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var pC={exports:{}},Jl={};/* +object-assign +(c) Sindre Sorhus +@license MIT +*/var Zv=Object.getOwnPropertySymbols,zT=Object.prototype.hasOwnProperty,VT=Object.prototype.propertyIsEnumerable;function jT(t){if(t==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function HT(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de",Object.getOwnPropertyNames(t)[0]==="5")return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(e).map(function(s){return e[s]});if(r.join("")!=="0123456789")return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(s){i[s]=s}),Object.keys(Object.assign({},i)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}var mC=HT()?Object.assign:function(t,e){for(var n,r=jT(t),i,s=1;s"u"||typeof MessageChannel!="function"){var l=null,c=null,u=function(){if(l!==null)try{var S=t.unstable_now();l(!0,S),l=null}catch(M){throw setTimeout(u,0),M}};e=function(S){l!==null?setTimeout(e,0,S):(l=S,setTimeout(u,0))},n=function(S,M){c=setTimeout(S,M)},r=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},i=t.unstable_forceFrameRate=function(){}}else{var f=window.setTimeout,h=window.clearTimeout;if(typeof console<"u"){var d=window.cancelAnimationFrame;typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),typeof d!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var A=!1,p=null,g=-1,m=5,v=0;t.unstable_shouldYield=function(){return t.unstable_now()>=v},i=function(){},t.unstable_forceFrameRate=function(S){0>S||125>>1,U=S[k];if(U!==void 0&&0P(j,D))te!==void 0&&0>P(te,j)?(S[k]=te,S[se]=D,k=se):(S[k]=j,S[F]=D,k=F);else if(te!==void 0&&0>P(te,D))S[k]=te,S[se]=D,k=se;else break e}}return M}return null}function P(S,M){var D=S.sortIndex-M.sortIndex;return D!==0?D:S.id-M.id}var B=[],N=[],V=1,G=null,z=3,K=!1,J=!1,ae=!1;function pe(S){for(var M=C(N);M!==null;){if(M.callback===null)R(N);else if(M.startTime<=S)R(N),M.sortIndex=M.expirationTime,I(B,M);else break;M=C(N)}}function re(S){if(ae=!1,pe(S),!J)if(C(B)!==null)J=!0,e(fe);else{var M=C(N);M!==null&&n(re,M.startTime-S)}}function fe(S,M){J=!1,ae&&(ae=!1,r()),K=!0;var D=z;try{for(pe(M),G=C(B);G!==null&&(!(G.expirationTime>M)||S&&!t.unstable_shouldYield());){var k=G.callback;if(typeof k=="function"){G.callback=null,z=G.priorityLevel;var U=k(G.expirationTime<=M);M=t.unstable_now(),typeof U=="function"?G.callback=U:G===C(B)&&R(B),pe(M)}else R(B);G=C(B)}if(G!==null)var F=!0;else{var j=C(N);j!==null&&n(re,j.startTime-M),F=!1}return F}finally{G=null,z=D,K=!1}}var L=i;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(S){S.callback=null},t.unstable_continueExecution=function(){J||K||(J=!0,e(fe))},t.unstable_getCurrentPriorityLevel=function(){return z},t.unstable_getFirstCallbackNode=function(){return C(B)},t.unstable_next=function(S){switch(z){case 1:case 2:case 3:var M=3;break;default:M=z}var D=z;z=M;try{return S()}finally{z=D}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=L,t.unstable_runWithPriority=function(S,M){switch(S){case 1:case 2:case 3:case 4:case 5:break;default:S=3}var D=z;z=S;try{return M()}finally{z=D}},t.unstable_scheduleCallback=function(S,M,D){var k=t.unstable_now();switch(typeof D=="object"&&D!==null?(D=D.delay,D=typeof D=="number"&&0k?(S.sortIndex=D,I(N,S),C(B)===null&&S===C(N)&&(ae?r():ae=!0,n(re,D-k))):(S.sortIndex=U,I(B,S),J||K||(J=!0,e(fe))),S},t.unstable_wrapCallback=function(S){var M=z;return function(){var D=z;z=M;try{return S.apply(this,arguments)}finally{z=D}}}})(DC);OC.exports=DC;var t3=OC.exports;/** @license React v17.0.2 + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var hh=b,Xe=mC,mt=t3;function $(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),n3=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,ry=Object.prototype.hasOwnProperty,iy={},sy={};function r3(t){return ry.call(sy,t)?!0:ry.call(iy,t)?!1:n3.test(t)?sy[t]=!0:(iy[t]=!0,!1)}function i3(t,e,n,r){if(n!==null&&n.type===0)return!1;switch(typeof e){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(t=t.toLowerCase().slice(0,5),t!=="data-"&&t!=="aria-");default:return!1}}function s3(t,e,n,r){if(e===null||typeof e>"u"||i3(t,e,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!e;case 4:return e===!1;case 5:return isNaN(e);case 6:return isNaN(e)||1>e}return!1}function Kt(t,e,n,r,i,s,o){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=t,this.type=e,this.sanitizeURL=s,this.removeEmptyString=o}var Tt={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(t){Tt[t]=new Kt(t,0,!1,t,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(t){var e=t[0];Tt[e]=new Kt(e,1,!1,t[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(t){Tt[t]=new Kt(t,2,!1,t.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(t){Tt[t]=new Kt(t,2,!1,t,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(t){Tt[t]=new Kt(t,3,!1,t.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(t){Tt[t]=new Kt(t,3,!0,t,null,!1,!1)});["capture","download"].forEach(function(t){Tt[t]=new Kt(t,4,!1,t,null,!1,!1)});["cols","rows","size","span"].forEach(function(t){Tt[t]=new Kt(t,6,!1,t,null,!1,!1)});["rowSpan","start"].forEach(function(t){Tt[t]=new Kt(t,5,!1,t.toLowerCase(),null,!1,!1)});var m0=/[\-:]([a-z])/g;function v0(t){return t[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(t){var e=t.replace(m0,v0);Tt[e]=new Kt(e,1,!1,t,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(t){var e=t.replace(m0,v0);Tt[e]=new Kt(e,1,!1,t,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(t){var e=t.replace(m0,v0);Tt[e]=new Kt(e,1,!1,t,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(t){Tt[t]=new Kt(t,1,!1,t.toLowerCase(),null,!1,!1)});Tt.xlinkHref=new Kt("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(t){Tt[t]=new Kt(t,1,!1,t.toLowerCase(),null,!0,!0)});function y0(t,e,n,r){var i=Tt.hasOwnProperty(e)?Tt[e]:null,s=i!==null?i.type===0:r?!1:!(!(2a||i[o]!==s[a])return` +`+i[o].replace(" at new "," at ");while(1<=o&&0<=a);break}}}finally{Sd=!1,Error.prepareStackTrace=n}return(t=t?t.displayName||t.name:"")?Ua(t):""}function o3(t){switch(t.tag){case 5:return Ua(t.type);case 16:return Ua("Lazy");case 13:return Ua("Suspense");case 19:return Ua("SuspenseList");case 0:case 2:case 15:return t=Vc(t.type,!1),t;case 11:return t=Vc(t.type.render,!1),t;case 22:return t=Vc(t.type._render,!1),t;case 1:return t=Vc(t.type,!0),t;default:return""}}function po(t){if(t==null)return null;if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case ai:return"Fragment";case rs:return"Portal";case Xa:return"Profiler";case E0:return"StrictMode";case Ja:return"Suspense";case mf:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case x0:return(t.displayName||"Context")+".Consumer";case _0:return(t._context.displayName||"Context")+".Provider";case dh:var e=t.render;return e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case Ah:return po(t.type);case I0:return po(t._render);case C0:e=t._payload,t=t._init;try{return po(t(e))}catch{}}return null}function Ii(t){switch(typeof t){case"boolean":case"number":case"object":case"string":case"undefined":return t;default:return""}}function FC(t){var e=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function a3(t){var e=FC(t)?"checked":"value",n=Object.getOwnPropertyDescriptor(t.constructor.prototype,e),r=""+t[e];if(!t.hasOwnProperty(e)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,s=n.set;return Object.defineProperty(t,e,{configurable:!0,get:function(){return i.call(this)},set:function(o){r=""+o,s.call(this,o)}}),Object.defineProperty(t,e,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(o){r=""+o},stopTracking:function(){t._valueTracker=null,delete t[e]}}}}function jc(t){t._valueTracker||(t._valueTracker=a3(t))}function UC(t){if(!t)return!1;var e=t._valueTracker;if(!e)return!0;var n=e.getValue(),r="";return t&&(r=FC(t)?t.checked?"true":"false":t.value),t=r,t!==n?(e.setValue(t),!0):!1}function vf(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}function lg(t,e){var n=e.checked;return Xe({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??t._wrapperState.initialChecked})}function ay(t,e){var n=e.defaultValue==null?"":e.defaultValue,r=e.checked!=null?e.checked:e.defaultChecked;n=Ii(e.value!=null?e.value:n),t._wrapperState={initialChecked:r,initialValue:n,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function GC(t,e){e=e.checked,e!=null&&y0(t,"checked",e,!1)}function cg(t,e){GC(t,e);var n=Ii(e.value),r=e.type;if(n!=null)r==="number"?(n===0&&t.value===""||t.value!=n)&&(t.value=""+n):t.value!==""+n&&(t.value=""+n);else if(r==="submit"||r==="reset"){t.removeAttribute("value");return}e.hasOwnProperty("value")?ug(t,e.type,n):e.hasOwnProperty("defaultValue")&&ug(t,e.type,Ii(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(t.defaultChecked=!!e.defaultChecked)}function ly(t,e,n){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var r=e.type;if(!(r!=="submit"&&r!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+t._wrapperState.initialValue,n||e===t.value||(t.value=e),t.defaultValue=e}n=t.name,n!==""&&(t.name=""),t.defaultChecked=!!t._wrapperState.initialChecked,n!==""&&(t.name=n)}function ug(t,e,n){(e!=="number"||vf(t.ownerDocument)!==t)&&(n==null?t.defaultValue=""+t._wrapperState.initialValue:t.defaultValue!==""+n&&(t.defaultValue=""+n))}function l3(t){var e="";return hh.Children.forEach(t,function(n){n!=null&&(e+=n)}),e}function fg(t,e){return t=Xe({children:void 0},e),(e=l3(e.children))&&(t.children=e),t}function mo(t,e,n,r){if(t=t.options,e){e={};for(var i=0;i=n.length))throw Error($(93));n=n[0]}e=n}e==null&&(e=""),n=e}t._wrapperState={initialValue:Ii(n)}}function zC(t,e){var n=Ii(e.value),r=Ii(e.defaultValue);n!=null&&(n=""+n,n!==t.value&&(t.value=n),e.defaultValue==null&&t.defaultValue!==n&&(t.defaultValue=n)),r!=null&&(t.defaultValue=""+r)}function uy(t){var e=t.textContent;e===t._wrapperState.initialValue&&e!==""&&e!==null&&(t.value=e)}var dg={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function VC(t){switch(t){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Ag(t,e){return t==null||t==="http://www.w3.org/1999/xhtml"?VC(e):t==="http://www.w3.org/2000/svg"&&e==="foreignObject"?"http://www.w3.org/1999/xhtml":t}var Hc,jC=function(t){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(e,n,r,i){MSApp.execUnsafeLocalFunction(function(){return t(e,n,r,i)})}:t}(function(t,e){if(t.namespaceURI!==dg.svg||"innerHTML"in t)t.innerHTML=e;else{for(Hc=Hc||document.createElement("div"),Hc.innerHTML=""+e.valueOf().toString()+"",e=Hc.firstChild;t.firstChild;)t.removeChild(t.firstChild);for(;e.firstChild;)t.appendChild(e.firstChild)}});function xl(t,e){if(e){var n=t.firstChild;if(n&&n===t.lastChild&&n.nodeType===3){n.nodeValue=e;return}}t.textContent=e}var Za={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},c3=["Webkit","ms","Moz","O"];Object.keys(Za).forEach(function(t){c3.forEach(function(e){e=e+t.charAt(0).toUpperCase()+t.substring(1),Za[e]=Za[t]})});function HC(t,e,n){return e==null||typeof e=="boolean"||e===""?"":n||typeof e!="number"||e===0||Za.hasOwnProperty(t)&&Za[t]?(""+e).trim():e+"px"}function WC(t,e){t=t.style;for(var n in e)if(e.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=HC(n,e[n],r);n==="float"&&(n="cssFloat"),r?t.setProperty(n,i):t[n]=i}}var u3=Xe({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function gg(t,e){if(e){if(u3[t]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error($(137,t));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error($(60));if(!(typeof e.dangerouslySetInnerHTML=="object"&&"__html"in e.dangerouslySetInnerHTML))throw Error($(61))}if(e.style!=null&&typeof e.style!="object")throw Error($(62))}}function pg(t,e){if(t.indexOf("-")===-1)return typeof e.is=="string";switch(t){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function S0(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var mg=null,vo=null,yo=null;function fy(t){if(t=tc(t)){if(typeof mg!="function")throw Error($(280));var e=t.stateNode;e&&(e=Eh(e),mg(t.stateNode,t.type,e))}}function YC(t){vo?yo?yo.push(t):yo=[t]:vo=t}function $C(){if(vo){var t=vo,e=yo;if(yo=vo=null,fy(t),e)for(t=0;tr?0:1<n;n++)e.push(t);return e}function ph(t,e,n){t.pendingLanes|=e;var r=e-1;t.suspendedLanes&=r,t.pingedLanes&=r,t=t.eventTimes,e=31-wi(e),t[e]=n}var wi=Math.clz32?Math.clz32:b3,I3=Math.log,w3=Math.LN2;function b3(t){return t===0?32:31-(I3(t)/w3|0)|0}var S3=mt.unstable_UserBlockingPriority,T3=mt.unstable_runWithPriority,Vu=!0;function B3(t,e,n,r){is||B0();var i=N0,s=is;is=!0;try{KC(i,t,e,n,r)}finally{(is=s)||R0()}}function R3(t,e,n,r){T3(S3,N0.bind(null,t,e,n,r))}function N0(t,e,n,r){if(Vu){var i;if((i=(e&4)===0)&&0=tl),_y=String.fromCharCode(32),xy=!1;function hI(t,e){switch(t){case"keyup":return Z3.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function dI(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var ro=!1;function tB(t,e){switch(t){case"compositionend":return dI(e);case"keypress":return e.which!==32?null:(xy=!0,_y);case"textInput":return t=e.data,t===_y&&xy?null:t;default:return null}}function nB(t,e){if(ro)return t==="compositionend"||!F0&&hI(t,e)?(t=uI(),ju=D0=li=null,ro=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:n,offset:e-t};t=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=by(n)}}function mI(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?mI(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function Ty(){for(var t=window,e=vf();e instanceof t.HTMLIFrameElement;){try{var n=typeof e.contentWindow.location.href=="string"}catch{n=!1}if(n)t=e.contentWindow;else break;e=vf(t.document)}return e}function xg(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}var hB=Nr&&"documentMode"in document&&11>=document.documentMode,io=null,Cg=null,rl=null,Ig=!1;function By(t,e,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Ig||io==null||io!==vf(r)||(r=io,"selectionStart"in r&&xg(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),rl&&Tl(rl,r)||(rl=r,r=xf(Cg,"onSelect"),0oo||(t.current=bg[oo],bg[oo]=null,oo--)}function it(t,e){oo++,bg[oo]=t.current,t.current=e}var bi={},Ft=ki(bi),en=ki(!1),ms=bi;function Po(t,e){var n=t.type.contextTypes;if(!n)return bi;var r=t.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===e)return r.__reactInternalMemoizedMaskedChildContext;var i={},s;for(s in n)i[s]=e[s];return r&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=e,t.__reactInternalMemoizedMaskedChildContext=i),i}function tn(t){return t=t.childContextTypes,t!=null}function wf(){We(en),We(Ft)}function Qy(t,e,n){if(Ft.current!==bi)throw Error($(168));it(Ft,e),it(en,n)}function wI(t,e,n){var r=t.stateNode;if(t=e.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error($(108,po(e)||"Unknown",i));return Xe({},n,r)}function Wu(t){return t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||bi,ms=Ft.current,it(Ft,t),it(en,en.current),!0}function Fy(t,e,n){var r=t.stateNode;if(!r)throw Error($(169));n?(t=wI(t,e,ms),r.__reactInternalMemoizedMergedChildContext=t,We(en),We(Ft),it(Ft,t)):We(en),it(en,n)}var G0=null,ds=null,gB=mt.unstable_runWithPriority,z0=mt.unstable_scheduleCallback,Sg=mt.unstable_cancelCallback,pB=mt.unstable_shouldYield,Uy=mt.unstable_requestPaint,Tg=mt.unstable_now,mB=mt.unstable_getCurrentPriorityLevel,_h=mt.unstable_ImmediatePriority,bI=mt.unstable_UserBlockingPriority,SI=mt.unstable_NormalPriority,TI=mt.unstable_LowPriority,BI=mt.unstable_IdlePriority,Ud={},vB=Uy!==void 0?Uy:function(){},Ir=null,Yu=null,Gd=!1,Gy=Tg(),kt=1e4>Gy?Tg:function(){return Tg()-Gy};function Mo(){switch(mB()){case _h:return 99;case bI:return 98;case SI:return 97;case TI:return 96;case BI:return 95;default:throw Error($(332))}}function RI(t){switch(t){case 99:return _h;case 98:return bI;case 97:return SI;case 96:return TI;case 95:return BI;default:throw Error($(332))}}function vs(t,e){return t=RI(t),gB(t,e)}function Rl(t,e,n){return t=RI(t),z0(t,e,n)}function gr(){if(Yu!==null){var t=Yu;Yu=null,Sg(t)}PI()}function PI(){if(!Gd&&Ir!==null){Gd=!0;var t=0;try{var e=Ir;vs(99,function(){for(;tR?(P=C,C=null):P=C.sibling;var B=h(g,C,v[R],E);if(B===null){C===null&&(C=P);break}t&&C&&B.alternate===null&&e(g,C),m=s(B,m,R),I===null?_=B:I.sibling=B,I=B,C=P}if(R===v.length)return n(g,C),_;if(C===null){for(;RR?(P=C,C=null):P=C.sibling;var N=h(g,C,B.value,E);if(N===null){C===null&&(C=P);break}t&&C&&N.alternate===null&&e(g,C),m=s(N,m,R),I===null?_=N:I.sibling=N,I=N,C=P}if(B.done)return n(g,C),_;if(C===null){for(;!B.done;R++,B=v.next())B=f(g,B.value,E),B!==null&&(m=s(B,m,R),I===null?_=B:I.sibling=B,I=B);return _}for(C=r(g,C);!B.done;R++,B=v.next())B=d(C,g,R,B.value,E),B!==null&&(t&&B.alternate!==null&&C.delete(B.key===null?R:B.key),m=s(B,m,R),I===null?_=B:I.sibling=B,I=B);return t&&C.forEach(function(V){return e(g,V)}),_}return function(g,m,v,E){var _=typeof v=="object"&&v!==null&&v.type===ai&&v.key===null;_&&(v=v.props.children);var I=typeof v=="object"&&v!==null;if(I)switch(v.$$typeof){case Fa:e:{for(I=v.key,_=m;_!==null;){if(_.key===I){switch(_.tag){case 7:if(v.type===ai){n(g,_.sibling),m=i(_,v.props.children),m.return=g,g=m;break e}break;default:if(_.elementType===v.type){n(g,_.sibling),m=i(_,v.props),m.ref=xa(g,_,v),m.return=g,g=m;break e}}n(g,_);break}else e(g,_);_=_.sibling}v.type===ai?(m=wo(v.props.children,g.mode,E,v.key),m.return=g,g=m):(E=Xu(v.type,v.key,v.props,null,g.mode,E),E.ref=xa(g,m,v),E.return=g,g=E)}return o(g);case rs:e:{for(_=v.key;m!==null;){if(m.key===_)if(m.tag===4&&m.stateNode.containerInfo===v.containerInfo&&m.stateNode.implementation===v.implementation){n(g,m.sibling),m=i(m,v.children||[]),m.return=g,g=m;break e}else{n(g,m);break}else e(g,m);m=m.sibling}m=Yd(v,g.mode,E),m.return=g,g=m}return o(g)}if(typeof v=="string"||typeof v=="number")return v=""+v,m!==null&&m.tag===6?(n(g,m.sibling),m=i(m,v),m.return=g,g=m):(n(g,m),m=Wd(v,g.mode,E),m.return=g,g=m),o(g);if($c(v))return A(g,m,v,E);if(pa(v))return p(g,m,v,E);if(I&&Kc(g,v),typeof v>"u"&&!_)switch(g.tag){case 1:case 22:case 0:case 11:case 15:throw Error($(152,po(g.type)||"Component"))}return n(g,m)}}var Rf=DI(!0),kI=DI(!1),nc={},lr=ki(nc),Ml=ki(nc),Ll=ki(nc);function os(t){if(t===nc)throw Error($(174));return t}function Rg(t,e){switch(it(Ll,e),it(Ml,t),it(lr,nc),t=e.nodeType,t){case 9:case 11:e=(e=e.documentElement)?e.namespaceURI:Ag(null,"");break;default:t=t===8?e.parentNode:e,e=t.namespaceURI||null,t=t.tagName,e=Ag(e,t)}We(lr),it(lr,e)}function Lo(){We(lr),We(Ml),We(Ll)}function Wy(t){os(Ll.current);var e=os(lr.current),n=Ag(e,t.type);e!==n&&(it(Ml,t),it(lr,n))}function W0(t){Ml.current===t&&(We(lr),We(Ml))}var rt=ki(0);function Pf(t){for(var e=t;e!==null;){if(e.tag===13){var n=e.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return e}else if(e.tag===19&&e.memoizedProps.revealOrder!==void 0){if(e.flags&64)return e}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break;for(;e.sibling===null;){if(e.return===null||e.return===t)return null;e=e.return}e.sibling.return=e.return,e=e.sibling}return null}var Tr=null,ui=null,cr=!1;function QI(t,e){var n=_n(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=e,n.return=t,n.flags=8,t.lastEffect!==null?(t.lastEffect.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n}function Yy(t,e){switch(t.tag){case 5:var n=t.type;return e=e.nodeType!==1||n.toLowerCase()!==e.nodeName.toLowerCase()?null:e,e!==null?(t.stateNode=e,!0):!1;case 6:return e=t.pendingProps===""||e.nodeType!==3?null:e,e!==null?(t.stateNode=e,!0):!1;case 13:return!1;default:return!1}}function Pg(t){if(cr){var e=ui;if(e){var n=e;if(!Yy(t,e)){if(e=Eo(n.nextSibling),!e||!Yy(t,e)){t.flags=t.flags&-1025|2,cr=!1,Tr=t;return}QI(Tr,n)}Tr=t,ui=Eo(e.firstChild)}else t.flags=t.flags&-1025|2,cr=!1,Tr=t}}function $y(t){for(t=t.return;t!==null&&t.tag!==5&&t.tag!==3&&t.tag!==13;)t=t.return;Tr=t}function qc(t){if(t!==Tr)return!1;if(!cr)return $y(t),cr=!0,!1;var e=t.type;if(t.tag!==5||e!=="head"&&e!=="body"&&!wg(e,t.memoizedProps))for(e=ui;e;)QI(t,e),e=Eo(e.nextSibling);if($y(t),t.tag===13){if(t=t.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error($(317));e:{for(t=t.nextSibling,e=0;t;){if(t.nodeType===8){var n=t.data;if(n==="/$"){if(e===0){ui=Eo(t.nextSibling);break e}e--}else n!=="$"&&n!=="$!"&&n!=="$?"||e++}t=t.nextSibling}ui=null}}else ui=Tr?Eo(t.stateNode.nextSibling):null;return!0}function zd(){ui=Tr=null,cr=!1}var xo=[];function Y0(){for(var t=0;ts))throw Error($(301));s+=1,Ct=Lt=null,e.updateQueue=null,il.current=CB,t=n(r,i)}while(sl)}if(il.current=Df,e=Lt!==null&&Lt.next!==null,Nl=0,Ct=Lt=at=null,Mf=!1,e)throw Error($(300));return t}function as(){var t={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Ct===null?at.memoizedState=Ct=t:Ct=Ct.next=t,Ct}function Ls(){if(Lt===null){var t=at.alternate;t=t!==null?t.memoizedState:null}else t=Lt.next;var e=Ct===null?at.memoizedState:Ct.next;if(e!==null)Ct=e,Lt=t;else{if(t===null)throw Error($(310));Lt=t,t={memoizedState:Lt.memoizedState,baseState:Lt.baseState,baseQueue:Lt.baseQueue,queue:Lt.queue,next:null},Ct===null?at.memoizedState=Ct=t:Ct=Ct.next=t}return Ct}function sr(t,e){return typeof e=="function"?e(t):e}function Ca(t){var e=Ls(),n=e.queue;if(n===null)throw Error($(311));n.lastRenderedReducer=t;var r=Lt,i=r.baseQueue,s=n.pending;if(s!==null){if(i!==null){var o=i.next;i.next=s.next,s.next=o}r.baseQueue=i=s,n.pending=null}if(i!==null){i=i.next,r=r.baseState;var a=o=s=null,l=i;do{var c=l.lane;if((Nl&c)===c)a!==null&&(a=a.next={lane:0,action:l.action,eagerReducer:l.eagerReducer,eagerState:l.eagerState,next:null}),r=l.eagerReducer===t?l.eagerState:t(r,l.action);else{var u={lane:c,action:l.action,eagerReducer:l.eagerReducer,eagerState:l.eagerState,next:null};a===null?(o=a=u,s=r):a=a.next=u,at.lanes|=c,rc|=c}l=l.next}while(l!==null&&l!==i);a===null?s=r:a.next=o,En(r,e.memoizedState)||(Un=!0),e.memoizedState=r,e.baseState=s,e.baseQueue=a,n.lastRenderedState=r}return[e.memoizedState,n.dispatch]}function Ia(t){var e=Ls(),n=e.queue;if(n===null)throw Error($(311));n.lastRenderedReducer=t;var r=n.dispatch,i=n.pending,s=e.memoizedState;if(i!==null){n.pending=null;var o=i=i.next;do s=t(s,o.action),o=o.next;while(o!==i);En(s,e.memoizedState)||(Un=!0),e.memoizedState=s,e.baseQueue===null&&(e.baseState=s),n.lastRenderedState=s}return[s,r]}function Ky(t,e,n){var r=e._getVersion;r=r(e._source);var i=e._workInProgressVersionPrimary;if(i!==null?t=i===r:(t=t.mutableReadLanes,(t=(Nl&t)===t)&&(e._workInProgressVersionPrimary=r,xo.push(e))),t)return n(e._source);throw xo.push(e),Error($(350))}function FI(t,e,n,r){var i=Wt;if(i===null)throw Error($(349));var s=e._getVersion,o=s(e._source),a=il.current,l=a.useState(function(){return Ky(i,e,n)}),c=l[1],u=l[0];l=Ct;var f=t.memoizedState,h=f.refs,d=h.getSnapshot,A=f.source;f=f.subscribe;var p=at;return t.memoizedState={refs:h,source:e,subscribe:r},a.useEffect(function(){h.getSnapshot=n,h.setSnapshot=c;var g=s(e._source);if(!En(o,g)){g=n(e._source),En(u,g)||(c(g),g=yi(p),i.mutableReadLanes|=g&i.pendingLanes),g=i.mutableReadLanes,i.entangledLanes|=g;for(var m=i.entanglements,v=g;0n?98:n,function(){t(!0)}),vs(97<\/script>",t=t.removeChild(t.firstChild)):typeof r.is=="string"?t=o.createElement(n,{is:r.is}):(t=o.createElement(n),n==="select"&&(o=t,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):t=o.createElementNS(t,n),t[ci]=e,t[If]=r,$I(t,e,!1,!1),e.stateNode=t,o=pg(n,r),n){case"dialog":He("cancel",t),He("close",t),i=r;break;case"iframe":case"object":case"embed":He("load",t),i=r;break;case"video":case"audio":for(i=0;iGg&&(e.flags|=64,s=!0,ba(r,!1),e.lanes=33554432)}else{if(!s)if(t=Pf(o),t!==null){if(e.flags|=64,s=!0,n=t.updateQueue,n!==null&&(e.updateQueue=n,e.flags|=4),ba(r,!0),r.tail===null&&r.tailMode==="hidden"&&!o.alternate&&!cr)return e=e.lastEffect=r.lastEffect,e!==null&&(e.nextEffect=null),null}else 2*kt()-r.renderingStartTime>Gg&&n!==1073741824&&(e.flags|=64,s=!0,ba(r,!1),e.lanes=33554432);r.isBackwards?(o.sibling=e.child,e.child=o):(n=r.last,n!==null?n.sibling=o:e.child=o,r.last=o)}return r.tail!==null?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=e.lastEffect,r.renderingStartTime=kt(),n.sibling=null,e=rt.current,it(rt,s?e&1|2:e&1),n):null;case 23:case 24:return rm(),t!==null&&t.memoizedState!==null!=(e.memoizedState!==null)&&r.mode!=="unstable-defer-without-hiding"&&(e.flags|=4),null}throw Error($(156,e.tag))}function bB(t){switch(t.tag){case 1:tn(t.type)&&wf();var e=t.flags;return e&4096?(t.flags=e&-4097|64,t):null;case 3:if(Lo(),We(en),We(Ft),Y0(),e=t.flags,e&64)throw Error($(285));return t.flags=e&-4097|64,t;case 5:return W0(t),null;case 13:return We(rt),e=t.flags,e&4096?(t.flags=e&-4097|64,t):null;case 19:return We(rt),null;case 4:return Lo(),null;case 10:return j0(t),null;case 23:case 24:return rm(),null;default:return null}}function Z0(t,e){try{var n="",r=e;do n+=o3(r),r=r.return;while(r);var i=n}catch(s){i=` +Error generating stack: `+s.message+` +`+s.stack}return{value:t,source:e,stack:i}}function Dg(t,e){try{console.error(e.value)}catch(n){setTimeout(function(){throw n})}}var SB=typeof WeakMap=="function"?WeakMap:Map;function XI(t,e,n){n=mi(-1,n),n.tag=3,n.payload={element:null};var r=e.value;return n.callback=function(){Qf||(Qf=!0,zg=r),Dg(t,e)},n}function JI(t,e,n){n=mi(-1,n),n.tag=3;var r=t.type.getDerivedStateFromError;if(typeof r=="function"){var i=e.value;n.payload=function(){return Dg(t,e),r(i)}}var s=t.stateNode;return s!==null&&typeof s.componentDidCatch=="function"&&(n.callback=function(){typeof r!="function"&&(or===null?or=new Set([this]):or.add(this),Dg(t,e));var o=e.stack;this.componentDidCatch(e.value,{componentStack:o!==null?o:""})}),n}var TB=typeof WeakSet=="function"?WeakSet:Set;function lE(t){var e=t.ref;if(e!==null)if(typeof e=="function")try{e(null)}catch(n){_i(t,n)}else e.current=null}function BB(t,e){switch(e.tag){case 0:case 11:case 15:case 22:return;case 1:if(e.flags&256&&t!==null){var n=t.memoizedProps,r=t.memoizedState;t=e.stateNode,e=t.getSnapshotBeforeUpdate(e.elementType===e.type?n:Qn(e.type,n),r),t.__reactInternalSnapshotBeforeUpdate=e}return;case 3:e.flags&256&&U0(e.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error($(163))}function RB(t,e,n){switch(n.tag){case 0:case 11:case 15:case 22:if(e=n.updateQueue,e=e!==null?e.lastEffect:null,e!==null){t=e=e.next;do{if((t.tag&3)===3){var r=t.create;t.destroy=r()}t=t.next}while(t!==e)}if(e=n.updateQueue,e=e!==null?e.lastEffect:null,e!==null){t=e=e.next;do{var i=t;r=i.next,i=i.tag,i&4&&i&1&&(aw(n,t),QB(n,t)),t=r}while(t!==e)}return;case 1:t=n.stateNode,n.flags&4&&(e===null?t.componentDidMount():(r=n.elementType===n.type?e.memoizedProps:Qn(n.type,e.memoizedProps),t.componentDidUpdate(r,e.memoizedState,t.__reactInternalSnapshotBeforeUpdate))),e=n.updateQueue,e!==null&&Vy(n,e,t);return;case 3:if(e=n.updateQueue,e!==null){if(t=null,n.child!==null)switch(n.child.tag){case 5:t=n.child.stateNode;break;case 1:t=n.child.stateNode}Vy(n,e,t)}return;case 5:t=n.stateNode,e===null&&n.flags&4&&CI(n.type,n.memoizedProps)&&t.focus();return;case 6:return;case 4:return;case 12:return;case 13:n.memoizedState===null&&(n=n.alternate,n!==null&&(n=n.memoizedState,n!==null&&(n=n.dehydrated,n!==null&&nI(n))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error($(163))}function cE(t,e){for(var n=t;;){if(n.tag===5){var r=n.stateNode;if(e)r=r.style,typeof r.setProperty=="function"?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var i=n.memoizedProps.style;i=i!=null&&i.hasOwnProperty("display")?i.display:null,r.style.display=HC("display",i)}}else if(n.tag===6)n.stateNode.nodeValue=e?"":n.memoizedProps;else if((n.tag!==23&&n.tag!==24||n.memoizedState===null||n===t)&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function uE(t,e){if(ds&&typeof ds.onCommitFiberUnmount=="function")try{ds.onCommitFiberUnmount(G0,e)}catch{}switch(e.tag){case 0:case 11:case 14:case 15:case 22:if(t=e.updateQueue,t!==null&&(t=t.lastEffect,t!==null)){var n=t=t.next;do{var r=n,i=r.destroy;if(r=r.tag,i!==void 0)if(r&4)aw(e,n);else{r=e;try{i()}catch(s){_i(r,s)}}n=n.next}while(n!==t)}break;case 1:if(lE(e),t=e.stateNode,typeof t.componentWillUnmount=="function")try{t.props=e.memoizedProps,t.state=e.memoizedState,t.componentWillUnmount()}catch(s){_i(e,s)}break;case 5:lE(e);break;case 4:ZI(t,e)}}function fE(t){t.alternate=null,t.child=null,t.dependencies=null,t.firstEffect=null,t.lastEffect=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.return=null,t.updateQueue=null}function hE(t){return t.tag===5||t.tag===3||t.tag===4}function dE(t){e:{for(var e=t.return;e!==null;){if(hE(e))break e;e=e.return}throw Error($(160))}var n=e;switch(e=n.stateNode,n.tag){case 5:var r=!1;break;case 3:e=e.containerInfo,r=!0;break;case 4:e=e.containerInfo,r=!0;break;default:throw Error($(161))}n.flags&16&&(xl(e,""),n.flags&=-17);e:t:for(n=t;;){for(;n.sibling===null;){if(n.return===null||hE(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;n.tag!==5&&n.tag!==6&&n.tag!==18;){if(n.flags&2||n.child===null||n.tag===4)continue t;n.child.return=n,n=n.child}if(!(n.flags&2)){n=n.stateNode;break e}}r?kg(t,n,e):Qg(t,n,e)}function kg(t,e,n){var r=t.tag,i=r===5||r===6;if(i)t=i?t.stateNode:t.stateNode.instance,e?n.nodeType===8?n.parentNode.insertBefore(t,e):n.insertBefore(t,e):(n.nodeType===8?(e=n.parentNode,e.insertBefore(t,n)):(e=n,e.appendChild(t)),n=n._reactRootContainer,n!=null||e.onclick!==null||(e.onclick=Cf));else if(r!==4&&(t=t.child,t!==null))for(kg(t,e,n),t=t.sibling;t!==null;)kg(t,e,n),t=t.sibling}function Qg(t,e,n){var r=t.tag,i=r===5||r===6;if(i)t=i?t.stateNode:t.stateNode.instance,e?n.insertBefore(t,e):n.appendChild(t);else if(r!==4&&(t=t.child,t!==null))for(Qg(t,e,n),t=t.sibling;t!==null;)Qg(t,e,n),t=t.sibling}function ZI(t,e){for(var n=e,r=!1,i,s;;){if(!r){r=n.return;e:for(;;){if(r===null)throw Error($(160));switch(i=r.stateNode,r.tag){case 5:s=!1;break e;case 3:i=i.containerInfo,s=!0;break e;case 4:i=i.containerInfo,s=!0;break e}r=r.return}r=!0}if(n.tag===5||n.tag===6){e:for(var o=t,a=n,l=a;;)if(uE(o,l),l.child!==null&&l.tag!==4)l.child.return=l,l=l.child;else{if(l===a)break e;for(;l.sibling===null;){if(l.return===null||l.return===a)break e;l=l.return}l.sibling.return=l.return,l=l.sibling}s?(o=i,a=n.stateNode,o.nodeType===8?o.parentNode.removeChild(a):o.removeChild(a)):i.removeChild(n.stateNode)}else if(n.tag===4){if(n.child!==null){i=n.stateNode.containerInfo,s=!0,n.child.return=n,n=n.child;continue}}else if(uE(t,n),n.child!==null){n.child.return=n,n=n.child;continue}if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return;n=n.return,n.tag===4&&(r=!1)}n.sibling.return=n.return,n=n.sibling}}function Hd(t,e){switch(e.tag){case 0:case 11:case 14:case 15:case 22:var n=e.updateQueue;if(n=n!==null?n.lastEffect:null,n!==null){var r=n=n.next;do(r.tag&3)===3&&(t=r.destroy,r.destroy=void 0,t!==void 0&&t()),r=r.next;while(r!==n)}return;case 1:return;case 5:if(n=e.stateNode,n!=null){r=e.memoizedProps;var i=t!==null?t.memoizedProps:r;t=e.type;var s=e.updateQueue;if(e.updateQueue=null,s!==null){for(n[If]=r,t==="input"&&r.type==="radio"&&r.name!=null&&GC(n,r),pg(t,i),e=pg(t,r),i=0;ii&&(i=o),n&=~s}if(n=i,n=kt()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*MB(n/1960))-n,10 component higher in the tree to provide a loading indicator or placeholder to display.`)}It!==5&&(It=2),l=Z0(l,a),h=o;do{switch(h.tag){case 3:s=l,h.flags|=4096,e&=-e,h.lanes|=e;var I=XI(h,s,e);zy(h,I);break e;case 1:s=l;var C=h.type,R=h.stateNode;if(!(h.flags&64)&&(typeof C.getDerivedStateFromError=="function"||R!==null&&typeof R.componentDidCatch=="function"&&(or===null||!or.has(R)))){h.flags|=4096,e&=-e,h.lanes|=e;var P=JI(h,s,e);zy(h,P);break e}}h=h.return}while(h!==null)}ow(n)}catch(B){e=B,ht===n&&n!==null&&(ht=n=n.return);continue}break}while(1)}function iw(){var t=kf.current;return kf.current=Df,t===null?Df:t}function Va(t,e){var n=Ae;Ae|=16;var r=iw();Wt===t&&Qt===e||Io(t,e);do try{NB();break}catch(i){rw(t,i)}while(1);if(V0(),Ae=n,kf.current=r,ht!==null)throw Error($(261));return Wt=null,Qt=0,It}function NB(){for(;ht!==null;)sw(ht)}function OB(){for(;ht!==null&&!pB();)sw(ht)}function sw(t){var e=lw(t.alternate,t,ys);t.memoizedProps=t.pendingProps,e===null?ow(t):ht=e,em.current=null}function ow(t){var e=t;do{var n=e.alternate;if(t=e.return,e.flags&2048){if(n=bB(e),n!==null){n.flags&=2047,ht=n;return}t!==null&&(t.firstEffect=t.lastEffect=null,t.flags|=2048)}else{if(n=wB(n,e,ys),n!==null){ht=n;return}if(n=e,n.tag!==24&&n.tag!==23||n.memoizedState===null||ys&1073741824||!(n.mode&4)){for(var r=0,i=n.child;i!==null;)r|=i.lanes|i.childLanes,i=i.sibling;n.childLanes=r}t!==null&&!(t.flags&2048)&&(t.firstEffect===null&&(t.firstEffect=e.firstEffect),e.lastEffect!==null&&(t.lastEffect!==null&&(t.lastEffect.nextEffect=e.firstEffect),t.lastEffect=e.lastEffect),1o&&(a=o,o=I,I=a),a=Sy(v,I),s=Sy(v,o),a&&s&&(_.rangeCount!==1||_.anchorNode!==a.node||_.anchorOffset!==a.offset||_.focusNode!==s.node||_.focusOffset!==s.offset)&&(E=E.createRange(),E.setStart(a.node,a.offset),_.removeAllRanges(),I>o?(_.addRange(E),_.extend(s.node,s.offset)):(E.setEnd(s.node,s.offset),_.addRange(E)))))),E=[],_=v;_=_.parentNode;)_.nodeType===1&&E.push({element:_,left:_.scrollLeft,top:_.scrollTop});for(typeof v.focus=="function"&&v.focus(),v=0;vkt()-nm?Io(t,0):tm|=n),Sn(t,e)}function GB(t,e){var n=t.stateNode;n!==null&&n.delete(e),e=0,e===0&&(e=t.mode,e&2?e&4?(wr===0&&(wr=Yo),e=Js(62914560&~wr),e===0&&(e=4194304)):e=Mo()===99?1:2:e=1),n=un(),t=Ih(t,e),t!==null&&(ph(t,e,n),Sn(t,n))}var lw;lw=function(t,e,n){var r=e.lanes;if(t!==null)if(t.memoizedProps!==e.pendingProps||en.current)Un=!0;else if(n&r)Un=!!(t.flags&16384);else{switch(Un=!1,e.tag){case 3:tE(e),zd();break;case 5:Wy(e);break;case 1:tn(e.type)&&Wu(e);break;case 4:Rg(e,e.stateNode.containerInfo);break;case 10:r=e.memoizedProps.value;var i=e.type._context;it(bf,i._currentValue),i._currentValue=r;break;case 13:if(e.memoizedState!==null)return n&e.child.childLanes?nE(t,e,n):(it(rt,rt.current&1),e=Br(t,e,n),e!==null?e.sibling:null);it(rt,rt.current&1);break;case 19:if(r=(n&e.childLanes)!==0,t.flags&64){if(r)return aE(t,e,n);e.flags|=64}if(i=e.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),it(rt,rt.current),r)break;return null;case 23:case 24:return e.lanes=0,Vd(t,e,n)}return Br(t,e,n)}else Un=!1;switch(e.lanes=0,e.tag){case 2:if(r=e.type,t!==null&&(t.alternate=null,e.alternate=null,e.flags|=2),t=e.pendingProps,i=Po(e,Ft.current),_o(e,n),i=K0(null,e,r,t,i,n),e.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0){if(e.tag=1,e.memoizedState=null,e.updateQueue=null,tn(r)){var s=!0;Wu(e)}else s=!1;e.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,H0(e);var o=r.getDerivedStateFromProps;typeof o=="function"&&Bf(e,r,o,t),i.updater=xh,e.stateNode=i,i._reactInternals=e,Bg(e,r,t,n),e=Ng(null,e,r,!0,s,n)}else e.tag=0,Zt(null,e,i,n),e=e.child;return e;case 16:i=e.elementType;e:{switch(t!==null&&(t.alternate=null,e.alternate=null,e.flags|=2),t=e.pendingProps,s=i._init,i=s(i._payload),e.type=i,s=e.tag=VB(i),t=Qn(i,t),s){case 0:e=Lg(null,e,i,t,n);break e;case 1:e=eE(null,e,i,t,n);break e;case 11:e=Jy(null,e,i,t,n);break e;case 14:e=Zy(null,e,i,Qn(i.type,t),r,n);break e}throw Error($(306,i,""))}return e;case 0:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:Qn(r,i),Lg(t,e,r,i,n);case 1:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:Qn(r,i),eE(t,e,r,i,n);case 3:if(tE(e),r=e.updateQueue,t===null||r===null)throw Error($(282));if(r=e.pendingProps,i=e.memoizedState,i=i!==null?i.element:null,LI(t,e),Pl(e,r,null,n),r=e.memoizedState.element,r===i)zd(),e=Br(t,e,n);else{if(i=e.stateNode,(s=i.hydrate)&&(ui=Eo(e.stateNode.containerInfo.firstChild),Tr=e,s=cr=!0),s){if(t=i.mutableSourceEagerHydrationData,t!=null)for(i=0;i"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(uw)}catch(t){console.error(t)}}uw(),NC.exports=Bn;var Fi=NC.exports;const ja=zo(Fi);let qB=0;function XB(t,e){const n=`atom${++qB}`,r={toString:()=>n};return typeof t=="function"?r.read=t:(r.init=t,r.read=i=>i(r),r.write=(i,s,o)=>s(r,typeof o=="function"?o(i(r)):o)),e&&(r.write=e),r}const Bi=Symbol(),Yg=t=>!!t[Bi],eu=t=>!t[Bi].c,Ta=t=>{var e;const{b:n,c:r}=t[Bi];r&&(r(),(e=ZB.get(n))==null||e())},Ju=(t,e)=>{const n=t[Bi].o,r=e[Bi].o;return n===r||t===r||Yg(n)&&Ju(n,e)},$g=(t,e)=>{const n={b:t,o:e,c:null},r=new Promise(i=>{n.c=()=>{n.c=null,i()},e.finally(n.c)});return r[Bi]=n,r},JB=t=>$g(t[Bi].b,t[Bi].o),ZB=new WeakMap,tu=t=>"init"in t,Kg="r",qg="w",Ol="c",Xg="s",mE="h",eR="n",tR="l",nR="a",rR="m",iR=t=>{const e=new WeakMap,n=new WeakMap,r=new Map;let i,s;if(({BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}&&"production")!=="production"&&(i=new Set,s=new Set),t)for(const[L,S]of t){const M={v:S,r:0,y:!0,d:new Map};({BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}&&"production")!=="production"&&(Object.freeze(M),tu(L)||console.warn("Found initial value for derived atom which can cause unexpected behavior",L)),e.set(L,M)}const o=new WeakMap,a=(L,S,M)=>{let D=o.get(S);D||(D=new Map,o.set(S,D)),M.then(()=>{D.get(L)===M&&(D.delete(L),D.size||o.delete(S))}),D.set(L,M)},l=L=>{const S=new Set,M=o.get(L);return M&&(o.delete(L),M.forEach((D,k)=>{Ta(D),S.add(k)})),S},c=new WeakMap,u=L=>{let S=c.get(L);return S||(S=new Map,c.set(L,S)),S},f=(L,S)=>{if(L){const M=u(L);let D=M.get(S);return D||(D=f(L.p,S),D&&"p"in D&&eu(D.p)&&(D=void 0),D&&M.set(S,D)),D}return e.get(S)},h=(L,S,M)=>{if(({BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}&&"production")!=="production"&&Object.freeze(M),L)u(L).set(S,M);else{const D=e.get(S);e.set(S,M),r.has(S)||r.set(S,D)}},d=(L,S=new Map,M)=>{if(!M)return S;const D=new Map;let k=!1;return M.forEach(U=>{var F;const j=((F=f(L,U))==null?void 0:F.r)||0;D.set(U,j),S.get(U)!==j&&(k=!0)}),S.size===D.size&&!k?S:D},A=(L,S,M,D,k)=>{const U=f(L,S);if(U){if(k&&(!("p"in U)||!Ju(U.p,k)))return U;"p"in U&&Ta(U.p)}const F={v:M,r:(U==null?void 0:U.r)||0,y:!0,d:d(L,U==null?void 0:U.d,D)};let j=!(U!=null&&U.y);return!U||!("v"in U)||!Object.is(U.v,M)?(j=!0,++F.r,F.d.has(S)&&(F.d=new Map(F.d).set(S,F.r))):F.d!==U.d&&(F.d.size!==U.d.size||!Array.from(F.d.keys()).every(se=>U.d.has(se)))&&(j=!0,Promise.resolve().then(()=>{J(L)})),U&&!j?U:(h(L,S,F),F)},p=(L,S,M,D,k)=>{const U=f(L,S);if(U){if(k&&(!("p"in U)||!Ju(U.p,k)))return U;"p"in U&&Ta(U.p)}const F={e:M,r:((U==null?void 0:U.r)||0)+1,y:!0,d:d(L,U==null?void 0:U.d,D)};return h(L,S,F),F},g=(L,S,M,D)=>{const k=f(L,S);if(k&&"p"in k){if(Ju(k.p,M)&&!eu(k.p))return k.y?k:{...k,y:!0};Ta(k.p)}a(L,S,M);const U={p:M,r:((k==null?void 0:k.r)||0)+1,y:!0,d:d(L,k==null?void 0:k.d,D)};return h(L,S,U),U},m=(L,S,M,D)=>{if(M instanceof Promise){const k=$g(M,M.then(U=>{A(L,S,U,D,k)}).catch(U=>{if(U instanceof Promise)return Yg(U)?U.then(()=>{E(L,S,!0)}):U;p(L,S,U,D,k)}));return g(L,S,k,D)}return A(L,S,M,D)},v=(L,S)=>{const M=f(L,S);if(M){const D={...M,y:!1};h(L,S,D)}else({BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}&&"production")!=="production"&&console.warn("[Bug] could not invalidate non existing atom",S)},E=(L,S,M)=>{if(!M){const k=f(L,S);if(k){if(k.y&&"p"in k&&!eu(k.p))return k;if(k.d.forEach((U,F)=>{if(F!==S)if(!n.has(F))E(L,F);else{const j=f(L,F);j&&!j.y&&E(L,F)}}),Array.from(k.d).every(([U,F])=>{const j=f(L,U);return j&&!("p"in j)&&j.r===F}))return k.y?k:{...k,y:!0}}}const D=new Set;try{const k=S.read(U=>{D.add(U);const F=U===S?f(L,U):E(L,U);if(F){if("e"in F)throw F.e;if("p"in F)throw F.p;return F.v}if(tu(U))return U.init;throw new Error("no atom init")});return m(L,S,k,D)}catch(k){if(k instanceof Promise){const U=Yg(k)&&eu(k)?JB(k):$g(k,k);return g(L,S,U,D)}return p(L,S,k,D)}},_=(L,S)=>E(S,L),I=(L,S)=>{let M=n.get(S);return M||(M=G(L,S)),M},C=(L,S)=>!S.l.size&&(!S.t.size||S.t.size===1&&S.t.has(L)),R=(L,S)=>{const M=n.get(S);M&&C(S,M)&&z(L,S)},P=(L,S)=>{const M=n.get(S);M==null||M.t.forEach(D=>{D!==S&&(v(L,D),P(L,D))})},B=(L,S,M)=>{let D=!0;const k=(j,se)=>{const te=E(L,j);if("e"in te)throw te.e;if("p"in te){if(se!=null&&se.unstable_promise)return te.p.then(()=>{const de=f(L,j);return de&&"p"in de&&de.p===te.p?new Promise(le=>setTimeout(le)).then(()=>k(j,se)):k(j,se)});throw({BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}&&"production")!=="production"&&console.info("Reading pending atom state in write operation. We throw a promise for now.",j),te.p}if("v"in te)return te.v;throw({BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}&&"production")!=="production"&&console.warn("[Bug] no value found while reading atom in write operation. This is probably a bug.",j),new Error("no value found")},U=(j,se)=>{let te;if(j===S){if(!tu(j))throw new Error("atom not writable");l(j).forEach(_e=>{_e!==L&&m(_e,j,se)});const le=f(L,j),ve=m(L,j,se);le!==ve&&P(L,j)}else te=B(L,j,se);return D||J(L),te},F=S.write(k,U,M);return D=!1,F},N=(L,S,M)=>{const D=B(M,L,S);return J(M),D},V=L=>!!L.write,G=(L,S,M)=>{const D={t:new Set(M&&[M]),l:new Set};if(n.set(S,D),({BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}&&"production")!=="production"&&s.add(S),E(void 0,S).d.forEach((U,F)=>{const j=n.get(F);j?j.t.add(S):F!==S&&G(L,F,S)}),V(S)&&S.onMount){const U=j=>N(S,j,L),F=S.onMount(U);L=void 0,F&&(D.u=F)}return D},z=(L,S)=>{var M;const D=(M=n.get(S))==null?void 0:M.u;D&&D(),n.delete(S),({BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}&&"production")!=="production"&&s.delete(S);const k=f(L,S);k?("p"in k&&Ta(k.p),k.d.forEach((U,F)=>{if(F!==S){const j=n.get(F);j&&(j.t.delete(S),C(F,j)&&z(L,F))}})):({BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}&&"production")!=="production"&&console.warn("[Bug] could not find atom state to unmount",S)},K=(L,S,M,D)=>{const k=new Set(M.d.keys());D==null||D.forEach((U,F)=>{if(k.has(F)){k.delete(F);return}const j=n.get(F);j&&(j.t.delete(S),C(F,j)&&z(L,F))}),k.forEach(U=>{const F=n.get(U);F?F.t.add(S):n.has(S)&&G(L,U,S)})},J=L=>{if(L){u(L).forEach((M,D)=>{const k=e.get(D);if(M!==k){const U=n.get(D);U==null||U.l.forEach(F=>F(L))}});return}for(;r.size;){const S=Array.from(r);r.clear(),S.forEach(([M,D])=>{const k=f(void 0,M);if(k&&k.d!==(D==null?void 0:D.d)&&K(void 0,M,k,D==null?void 0:D.d),D&&!D.y&&(k!=null&&k.y))return;const U=n.get(M);U==null||U.l.forEach(F=>F())})}({BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}&&"production")!=="production"&&i.forEach(S=>S())},ae=L=>{u(L).forEach((M,D)=>{const k=e.get(D);(!k||M.r>k.r||M.y!==k.y||M.r===k.r&&M.d!==k.d)&&(e.set(D,M),M.d!==(k==null?void 0:k.d)&&K(L,D,M,k==null?void 0:k.d))})},pe=(L,S)=>{S&&ae(S),J(void 0)},re=(L,S,M)=>{const k=I(M,L).l;return k.add(S),()=>{k.delete(S),R(M,L)}},fe=(L,S)=>{for(const[M,D]of L)tu(M)&&(m(S,M,D),P(S,M));J(S)};return({BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}&&"production")!=="production"?{[Kg]:_,[qg]:N,[Ol]:pe,[Xg]:re,[mE]:fe,[eR]:L=>(i.add(L),()=>{i.delete(L)}),[tR]:()=>s.values(),[nR]:L=>e.get(L),[rR]:L=>n.get(L)}:{[Kg]:_,[qg]:N,[Ol]:pe,[Xg]:re,[mE]:fe}},fw=(t,e)=>({s:e?e(t).SECRET_INTERNAL_store:iR(t)}),Kd=new Map,lm=t=>(Kd.has(t)||Kd.set(t,b.createContext(fw())),Kd.get(t)),sR=({children:t,initialValues:e,scope:n,unstable_createStore:r,unstable_enableVersionedWrite:i})=>{const[s,o]=b.useState({});b.useEffect(()=>{const c=a.current;c.w&&(c.s[Ol](null,s),delete s.p,c.v=s)},[s]);const a=b.useRef();if(!a.current){const c=fw(e,r);if(i){let u=0;c.w=f=>{o(h=>{const d=u?h:{p:h};return f(d),d})},c.v=s,c.r=f=>{++u,f(),--u}}a.current=c}const l=lm(n);return b.createElement(l.Provider,{value:a.current},t)};function cn(t,e){return XB(t,e)}function An(t,e){const n=lm(e),r=b.useContext(n),{s:i,v:s}=r,o=h=>{const d=i[Kg](t,h);if(({BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}&&"production")!=="production"&&!d.y)throw new Error("should not be invalidated");if("e"in d)throw d.e;if("p"in d)throw d.p;if("v"in d)return d.v;throw new Error("no atom value")},[[a,l,c],u]=b.useReducer((h,d)=>{const A=o(d);return Object.is(h[1],A)&&h[2]===t?h:[d,A,t]},s,h=>{const d=o(h);return[h,d,t]});let f=l;return c!==t&&(u(a),f=o(a)),b.useEffect(()=>{const{v:h}=r;h&&i[Ol](t,h);const d=i[Xg](t,u,h);return u(h),d},[i,t,r]),b.useEffect(()=>{i[Ol](t,a)}),b.useDebugValue(f),f}function Jg(t,e){const n=lm(e),{s:r,w:i}=b.useContext(n);return b.useCallback(o=>{if(({BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0,SSR:!1}&&"production")!=="production"&&!("write"in t))throw new Error("not writable atom");const a=l=>r[qg](t,o,l);return i?i(a):a()},[r,i,t])}function Or(t,e){return"scope"in t&&(console.warn("atom.scope is deprecated. Please do useAtom(atom, scope) instead."),e=t.scope),[An(t,e),Jg(t,e)]}function Y(){return Y=Object.assign?Object.assign.bind():function(t){for(var e=1;e2&&arguments[2]!==void 0?arguments[2]:{clone:!0},r=n.clone?Y({},t):t;return qd(t)&&qd(e)&&Object.keys(e).forEach(function(i){i!=="__proto__"&&(qd(e[i])&&i in t?r[i]=Oo(t[i],e[i],n):r[i]=e[i])}),r}function oR(t,e){if(No(t)!=="object"||t===null)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e||"default");if(No(r)!=="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function hw(t){var e=oR(t,"string");return No(e)==="symbol"?e:String(e)}function y(t,e,n){return e=hw(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Dl(t){for(var e="https://mui.com/production-error/?code="+t,n=1;n0&&arguments[0]!==void 0?arguments[0]:{},e=t.disableGlobal,n=e===void 0?!1:e,r=t.productionPrefix,i=r===void 0?"jss":r,s=t.seed,o=s===void 0?"":s,a=o===""?"":"".concat(o,"-"),l=0,c=function(){return l+=1,l};return function(u,f){var h=f.options.name;if(h&&h.indexOf("Mui")===0&&!f.options.link&&!n){if(vR.indexOf(u.key)!==-1)return"Mui-".concat(u.key);var d="".concat(a).concat(h,"-").concat(u.key);return!f.options.theme[vw]||o!==""?d:"".concat(d,"-").concat(c())}return"".concat(a).concat(i).concat(c())}}function yw(t){var e=t.theme,n=t.name,r=t.props;if(!e||!e.props||!e.props[n])return r;var i=e.props[n],s;for(s in i)r[s]===void 0&&(r[s]=i[s]);return r}var vE=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ac=(typeof window>"u"?"undefined":vE(window))==="object"&&(typeof document>"u"?"undefined":vE(document))==="object"&&document.nodeType===9;function yE(t,e){for(var n=0;n=0)&&(n[i]=t[i]);return n}var ER={}.constructor;function tp(t){if(t==null||typeof t!="object")return t;if(Array.isArray(t))return t.map(tp);if(t.constructor!==ER)return t;var e={};for(var n in t)e[n]=tp(t[n]);return e}function fm(t,e,n){t===void 0&&(t="unnamed");var r=n.jss,i=tp(e),s=r.plugins.onCreateRule(t,i,n);return s||(t[0],null)}var EE=function(e,n){for(var r="",i=0;i<+~=|^:(),"'`\s])/g,_E=typeof CSS<"u"&&CSS.escape,hm=function(t){return _E?_E(t):t.replace(_R,"\\$1")},Ew=function(){function t(n,r,i){this.type="style",this.isProcessed=!1;var s=i.sheet,o=i.Renderer;this.key=n,this.options=i,this.style=r,s?this.renderer=s.renderer:o&&(this.renderer=new o)}var e=t.prototype;return e.prop=function(r,i,s){if(i===void 0)return this.style[r];var o=s?s.force:!1;if(!o&&this.style[r]===i)return this;var a=i;(!s||s.process!==!1)&&(a=this.options.jss.plugins.onChangeValue(i,r,this));var l=a==null||a===!1,c=r in this.style;if(l&&!c&&!o)return this;var u=l&&c;if(u?delete this.style[r]:this.style[r]=a,this.renderable&&this.renderer)return u?this.renderer.removeProperty(this.renderable,r):this.renderer.setProperty(this.renderable,r,a),this;var f=this.options.sheet;return f&&f.attached,this},t}(),np=function(t){Th(e,t);function e(r,i,s){var o;o=t.call(this,r,i,s)||this;var a=s.selector,l=s.scoped,c=s.sheet,u=s.generateId;return a?o.selectorText=a:l!==!1&&(o.id=u(ep(ep(o)),c),o.selectorText="."+hm(o.id)),o}var n=e.prototype;return n.applyTo=function(i){var s=this.renderer;if(s){var o=this.toJSON();for(var a in o)s.setProperty(i,a,o[a])}return this},n.toJSON=function(){var i={};for(var s in this.style){var o=this.style[s];typeof o!="object"?i[s]=o:Array.isArray(o)&&(i[s]=As(o))}return i},n.toString=function(i){var s=this.options.sheet,o=s?s.options.link:!1,a=o?Y({},i,{allowEmpty:!0}):i;return kl(this.selectorText,this.style,a)},um(e,[{key:"selector",set:function(i){if(i!==this.selectorText){this.selectorText=i;var s=this.renderer,o=this.renderable;if(!(!o||!s)){var a=s.setSelector(o,i);a||s.replaceRule(o,this)}}},get:function(){return this.selectorText}}]),e}(Ew),xR={onCreateRule:function(e,n,r){return e[0]==="@"||r.parent&&r.parent.type==="keyframes"?null:new np(e,n,r)}},Xd={indent:1,children:!0},CR=/@([\w-]+)/,IR=function(){function t(n,r,i){this.type="conditional",this.isProcessed=!1,this.key=n;var s=n.match(CR);this.at=s?s[1]:"unknown",this.query=i.name||"@"+this.at,this.options=i,this.rules=new Rh(Y({},i,{parent:this}));for(var o in r)this.rules.add(o,r[o]);this.rules.process()}var e=t.prototype;return e.getRule=function(r){return this.rules.get(r)},e.indexOf=function(r){return this.rules.indexOf(r)},e.addRule=function(r,i,s){var o=this.rules.add(r,i,s);return o?(this.options.jss.plugins.onProcessRule(o),o):null},e.replaceRule=function(r,i,s){var o=this.rules.replace(r,i,s);return o&&this.options.jss.plugins.onProcessRule(o),o},e.toString=function(r){r===void 0&&(r=Xd);var i=qo(r),s=i.linebreak;if(r.indent==null&&(r.indent=Xd.indent),r.children==null&&(r.children=Xd.children),r.children===!1)return this.query+" {}";var o=this.rules.toString(r);return o?this.query+" {"+s+o+s+"}":""},t}(),wR=/@container|@media|@supports\s+/,bR={onCreateRule:function(e,n,r){return wR.test(e)?new IR(e,n,r):null}},Jd={indent:1,children:!0},SR=/@keyframes\s+([\w-]+)/,rp=function(){function t(n,r,i){this.type="keyframes",this.at="@keyframes",this.isProcessed=!1;var s=n.match(SR);s&&s[1]?this.name=s[1]:this.name="noname",this.key=this.type+"-"+this.name,this.options=i;var o=i.scoped,a=i.sheet,l=i.generateId;this.id=o===!1?this.name:hm(l(this,a)),this.rules=new Rh(Y({},i,{parent:this}));for(var c in r)this.rules.add(c,r[c],Y({},i,{parent:this}));this.rules.process()}var e=t.prototype;return e.toString=function(r){r===void 0&&(r=Jd);var i=qo(r),s=i.linebreak;if(r.indent==null&&(r.indent=Jd.indent),r.children==null&&(r.children=Jd.children),r.children===!1)return this.at+" "+this.id+" {}";var o=this.rules.toString(r);return o&&(o=""+s+o+s),this.at+" "+this.id+" {"+o+"}"},t}(),TR=/@keyframes\s+/,BR=/\$([\w-]+)/g,ip=function(e,n){return typeof e=="string"?e.replace(BR,function(r,i){return i in n?n[i]:r}):e},xE=function(e,n,r){var i=e[n],s=ip(i,r);s!==i&&(e[n]=s)},RR={onCreateRule:function(e,n,r){return typeof e=="string"&&TR.test(e)?new rp(e,n,r):null},onProcessStyle:function(e,n,r){return n.type!=="style"||!r||("animation-name"in e&&xE(e,"animation-name",r.keyframes),"animation"in e&&xE(e,"animation",r.keyframes)),e},onChangeValue:function(e,n,r){var i=r.options.sheet;if(!i)return e;switch(n){case"animation":return ip(e,i.keyframes);case"animation-name":return ip(e,i.keyframes);default:return e}}},PR=function(t){Th(e,t);function e(){return t.apply(this,arguments)||this}var n=e.prototype;return n.toString=function(i){var s=this.options.sheet,o=s?s.options.link:!1,a=o?Y({},i,{allowEmpty:!0}):i;return kl(this.key,this.style,a)},e}(Ew),MR={onCreateRule:function(e,n,r){return r.parent&&r.parent.type==="keyframes"?new PR(e,n,r):null}},LR=function(){function t(n,r,i){this.type="font-face",this.at="@font-face",this.isProcessed=!1,this.key=n,this.style=r,this.options=i}var e=t.prototype;return e.toString=function(r){var i=qo(r),s=i.linebreak;if(Array.isArray(this.style)){for(var o="",a=0;a=this.index){i.push(r);return}for(var o=0;os){i.splice(o,0,r);return}}},e.reset=function(){this.registry=[]},e.remove=function(r){var i=this.registry.indexOf(r);this.registry.splice(i,1)},e.toString=function(r){for(var i=r===void 0?{}:r,s=i.attached,o=Bh(i,["attached"]),a=qo(o),l=a.linebreak,c="",u=0;u-1?i.substr(0,s-1):i;e.style.setProperty(n,o,s>-1?"important":"")}}catch{return!1}return!0},WR=function(e,n){try{e.attributeStyleMap?e.attributeStyleMap.delete(n):e.style.removeProperty(n)}catch{}},YR=function(e,n){return e.selectorText=n,e.selectorText===n},Cw=xw(function(){return document.querySelector("head")});function $R(t,e){for(var n=0;ne.index&&r.options.insertionPoint===e.insertionPoint)return r}return null}function KR(t,e){for(var n=t.length-1;n>=0;n--){var r=t[n];if(r.attached&&r.options.insertionPoint===e.insertionPoint)return r}return null}function qR(t){for(var e=Cw(),n=0;n0){var n=$R(e,t);if(n&&n.renderer)return{parent:n.renderer.element.parentNode,node:n.renderer.element};if(n=KR(e,t),n&&n.renderer)return{parent:n.renderer.element.parentNode,node:n.renderer.element.nextSibling}}var r=t.insertionPoint;if(r&&typeof r=="string"){var i=qR(r);if(i)return{parent:i.parentNode,node:i.nextSibling}}return!1}function JR(t,e){var n=e.insertionPoint,r=XR(e);if(r!==!1&&r.parent){r.parent.insertBefore(t,r.node);return}if(n&&typeof n.nodeType=="number"){var i=n,s=i.parentNode;s&&s.insertBefore(t,i.nextSibling);return}Cw().appendChild(t)}var ZR=xw(function(){var t=document.querySelector('meta[property="csp-nonce"]');return t?t.getAttribute("content"):null}),SE=function(e,n,r){try{"insertRule"in e?e.insertRule(n,r):"appendRule"in e&&e.appendRule(n)}catch{return!1}return e.cssRules[r]},TE=function(e,n){var r=e.cssRules.length;return n===void 0||n>r?r:n},e4=function(){var e=document.createElement("style");return e.textContent=` +`,e},t4=function(){function t(n){this.getPropertyValue=jR,this.setProperty=HR,this.removeProperty=WR,this.setSelector=YR,this.hasInsertedRules=!1,this.cssRules=[],n&&cl.add(n),this.sheet=n;var r=this.sheet?this.sheet.options:{},i=r.media,s=r.meta,o=r.element;this.element=o||e4(),this.element.setAttribute("data-jss",""),i&&this.element.setAttribute("media",i),s&&this.element.setAttribute("data-meta",s);var a=ZR();a&&this.element.setAttribute("nonce",a)}var e=t.prototype;return e.attach=function(){if(!(this.element.parentNode||!this.sheet)){JR(this.element,this.sheet.options);var r=!!(this.sheet&&this.sheet.deployed);this.hasInsertedRules&&r&&(this.hasInsertedRules=!1,this.deploy())}},e.detach=function(){if(this.sheet){var r=this.element.parentNode;r&&r.removeChild(this.element),this.sheet.options.link&&(this.cssRules=[],this.element.textContent=` +`)}},e.deploy=function(){var r=this.sheet;if(r){if(r.options.link){this.insertRules(r.rules);return}this.element.textContent=` +`+r.toString()+` +`}},e.insertRules=function(r,i){for(var s=0;st.length)&&(e=t.length);for(var n=0,r=new Array(e);n-1){var s=Lw[e];if(!Array.isArray(s))return me.js+Ri(s)in n?me.css+s:!1;if(!i)return!1;for(var o=0;or?1:-1:n.length-r.length};return{onProcessStyle:function(n,r){if(r.type!=="style")return n;for(var i={},s=Object.keys(n).sort(t),o=0;o"u"?null:Z4(),eP()]}}function Be(t,e){if(t==null)return{};var n=Bh(t,e),r,i;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function Ow(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=t.baseClasses,n=t.newClasses;if(t.Component,!n)return e;var r=Y({},e);return Object.keys(n).forEach(function(i){n[i]&&(r[i]="".concat(e[i]," ").concat(n[i]))}),r}var nP={set:function(e,n,r,i){var s=e.get(n);s||(s=new Map,e.set(n,s)),s.set(r,i)},get:function(e,n,r){var i=e.get(n);return i?i.get(r):void 0},delete:function(e,n,r){var i=e.get(n);i.delete(r)}};const lo=nP;var rP=Ue.createContext(null);const Dw=rP;function gc(){var t=Ue.useContext(Dw);return t}var iP=Iw(tP()),sP=yR(),oP=new Map,aP={disableGeneration:!1,generateClassName:sP,jss:iP,sheetsCache:null,sheetsManager:oP,sheetsRegistry:null},lP=Ue.createContext(aP),ME=-1e9;function cP(){return ME+=1,ME}var uP={};const fP=uP;function hP(t){var e=typeof t=="function";return{create:function(r,i){var s;try{s=e?t(r):t}catch(l){throw l}if(!i||!r.overrides||!r.overrides[i])return s;var o=r.overrides[i],a=Y({},s);return Object.keys(o).forEach(function(l){a[l]=Oo(a[l],o[l])}),a},options:{}}}function dP(t,e,n){var r=t.state,i=t.stylesOptions;if(i.disableGeneration)return e||{};r.cacheClasses||(r.cacheClasses={value:null,lastProp:null,lastJSS:{}});var s=!1;return r.classes!==r.cacheClasses.lastJSS&&(r.cacheClasses.lastJSS=r.classes,s=!0),e!==r.cacheClasses.lastProp&&(r.cacheClasses.lastProp=e,s=!0),s&&(r.cacheClasses.value=Ow({baseClasses:r.cacheClasses.lastJSS,newClasses:e,Component:n})),r.cacheClasses.value}function AP(t,e){var n=t.state,r=t.theme,i=t.stylesOptions,s=t.stylesCreator,o=t.name;if(!i.disableGeneration){var a=lo.get(i.sheetsManager,s,r);a||(a={refs:0,staticSheet:null,dynamicStyles:null},lo.set(i.sheetsManager,s,r,a));var l=Y({},s.options,i,{theme:r,flip:typeof i.flip=="boolean"?i.flip:r.direction==="rtl"});l.generateId=l.serverGenerateClassName||l.generateClassName;var c=i.sheetsRegistry;if(a.refs===0){var u;i.sheetsCache&&(u=lo.get(i.sheetsCache,s,r));var f=s.create(r,o);u||(u=i.jss.createStyleSheet(f,Y({link:!1},l)),u.attach(),i.sheetsCache&&lo.set(i.sheetsCache,s,r,u)),c&&c.add(u),a.staticSheet=u,a.dynamicStyles=ww(f)}if(a.dynamicStyles){var h=i.jss.createStyleSheet(a.dynamicStyles,Y({link:!0},l));h.update(e),h.attach(),n.dynamicSheet=h,n.classes=Ow({baseClasses:a.staticSheet.classes,newClasses:h.classes}),c&&c.add(h)}else n.classes=a.staticSheet.classes;a.refs+=1}}function gP(t,e){var n=t.state;n.dynamicSheet&&n.dynamicSheet.update(e)}function pP(t){var e=t.state,n=t.theme,r=t.stylesOptions,i=t.stylesCreator;if(!r.disableGeneration){var s=lo.get(r.sheetsManager,i,n);s.refs-=1;var o=r.sheetsRegistry;s.refs===0&&(lo.delete(r.sheetsManager,i,n),r.jss.removeStyleSheet(s.staticSheet),o&&o.remove(s.staticSheet)),e.dynamicSheet&&(r.jss.removeStyleSheet(e.dynamicSheet),o&&o.remove(e.dynamicSheet))}}function mP(t,e){var n=Ue.useRef([]),r,i=Ue.useMemo(function(){return{}},e);n.current!==i&&(n.current=i,r=t()),Ue.useEffect(function(){return function(){r&&r()}},[i])}function pm(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.name,r=e.classNamePrefix,i=e.Component,s=e.defaultTheme,o=s===void 0?fP:s,a=Be(e,["name","classNamePrefix","Component","defaultTheme"]),l=hP(t),c=n||r||"makeStyles";l.options={index:cP(),name:n,meta:c,classNamePrefix:c};var u=function(){var h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},d=gc()||o,A=Y({},Ue.useContext(lP),a),p=Ue.useRef(),g=Ue.useRef();mP(function(){var v={name:n,state:{},stylesCreator:l,stylesOptions:A,theme:d};return AP(v,h),g.current=!1,p.current=v,function(){pP(v)}},[d,l]),Ue.useEffect(function(){g.current&&gP(p.current,h),g.current=!0});var m=dP(p.current,h.classes,i);return m};return u}function vP(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function kw(t){var e,n,r="";if(typeof t=="string"||typeof t=="number")r+=t;else if(typeof t=="object")if(Array.isArray(t))for(e=0;e1&&arguments[1]!==void 0?arguments[1]:{};return function(r){var i=n.defaultTheme,s=n.withTheme,o=s===void 0?!1:s,a=n.name,l=Be(n,["defaultTheme","withTheme","name"]),c=a,u=pm(e,Y({defaultTheme:i,Component:r,name:a||r.displayName,classNamePrefix:c},l)),f=Ue.forwardRef(function(d,A){d.classes;var p=d.innerRef,g=Be(d,["classes","innerRef"]),m=u(Y({},r.defaultProps,d)),v,E=g;return(typeof a=="string"||o)&&(v=gc()||i,a&&(E=yw({theme:v,name:a,props:g})),o&&!E.theme&&(E.theme=v)),Ue.createElement(r,Y({ref:p||A,classes:m},E))});return LP(f,r),f}};const Ui=DP;function kP(t){return{all:t=t||new Map,on:function(e,n){var r=t.get(e);r?r.push(n):t.set(e,[n])},off:function(e,n){var r=t.get(e);r&&(n?r.splice(r.indexOf(n)>>>0,1):t.set(e,[]))},emit:function(e,n){var r=t.get(e);r&&r.slice().map(function(i){i(n)}),(r=t.get("*"))&&r.slice().map(function(i){i(e,n)})}}}var QP={black:"#000",white:"#fff"};const Gf=QP;var FP={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"};const aA=FP;var UP={50:"#fce4ec",100:"#f8bbd0",200:"#f48fb1",300:"#f06292",400:"#ec407a",500:"#e91e63",600:"#d81b60",700:"#c2185b",800:"#ad1457",900:"#880e4f",A100:"#ff80ab",A200:"#ff4081",A400:"#f50057",A700:"#c51162"};const lA=UP;var GP={50:"#e8eaf6",100:"#c5cae9",200:"#9fa8da",300:"#7986cb",400:"#5c6bc0",500:"#3f51b5",600:"#3949ab",700:"#303f9f",800:"#283593",900:"#1a237e",A100:"#8c9eff",A200:"#536dfe",A400:"#3d5afe",A700:"#304ffe"};const cA=GP;var zP={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"};const uA=zP;var VP={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"};const fA=VP;var jP={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"};const hA=jP;var HP={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#d5d5d5",A200:"#aaaaaa",A400:"#303030",A700:"#616161"};const xm=HP;function Cm(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;return Math.min(Math.max(e,t),n)}function WP(t){t=t.substr(1);var e=new RegExp(".{1,".concat(t.length>=6?2:1,"}"),"g"),n=t.match(e);return n&&n[0].length===1&&(n=n.map(function(r){return r+r})),n?"rgb".concat(n.length===4?"a":"","(").concat(n.map(function(r,i){return i<3?parseInt(r,16):Math.round(parseInt(r,16)/255*1e3)/1e3}).join(", "),")"):""}function YP(t){t=Es(t);var e=t,n=e.values,r=n[0],i=n[1]/100,s=n[2]/100,o=i*Math.min(s,1-s),a=function(f){var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:(f+r/30)%12;return s-o*Math.max(Math.min(h-3,9-h,1),-1)},l="rgb",c=[Math.round(a(0)*255),Math.round(a(8)*255),Math.round(a(4)*255)];return t.type==="hsla"&&(l+="a",c.push(n[3])),zh({type:l,values:c})}function Es(t){if(t.type)return t;if(t.charAt(0)==="#")return Es(WP(t));var e=t.indexOf("("),n=t.substring(0,e);if(["rgb","rgba","hsl","hsla"].indexOf(n)===-1)throw new Error(Dl(3,t));var r=t.substring(e+1,t.length-1).split(",");return r=r.map(function(i){return parseFloat(i)}),{type:n,values:r}}function zh(t){var e=t.type,n=t.values;return e.indexOf("rgb")!==-1?n=n.map(function(r,i){return i<3?parseInt(r,10):r}):e.indexOf("hsl")!==-1&&(n[1]="".concat(n[1],"%"),n[2]="".concat(n[2],"%")),"".concat(e,"(").concat(n.join(", "),")")}function $P(t,e){var n=DE(t),r=DE(e);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function DE(t){t=Es(t);var e=t.type==="hsl"?Es(YP(t)).values:t.values;return e=e.map(function(n){return n/=255,n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}),Number((.2126*e[0]+.7152*e[1]+.0722*e[2]).toFixed(3))}function fi(t,e){return t=Es(t),e=Cm(e),(t.type==="rgb"||t.type==="hsl")&&(t.type+="a"),t.values[3]=e,zh(t)}function zw(t,e){if(t=Es(t),e=Cm(e),t.type.indexOf("hsl")!==-1)t.values[2]*=1-e;else if(t.type.indexOf("rgb")!==-1)for(var n=0;n<3;n+=1)t.values[n]*=1-e;return zh(t)}function Vw(t,e){if(t=Es(t),e=Cm(e),t.type.indexOf("hsl")!==-1)t.values[2]+=(100-t.values[2])*e;else if(t.type.indexOf("rgb")!==-1)for(var n=0;n<3;n+=1)t.values[n]+=(255-t.values[n])*e;return zh(t)}var Jr=["xs","sm","md","lg","xl"];function KP(t){var e=t.values,n=e===void 0?{xs:0,sm:600,md:960,lg:1280,xl:1920}:e,r=t.unit,i=r===void 0?"px":r,s=t.step,o=s===void 0?5:s,a=Be(t,["values","unit","step"]);function l(d){var A=typeof n[d]=="number"?n[d]:d;return"@media (min-width:".concat(A).concat(i,")")}function c(d){var A=Jr.indexOf(d)+1,p=n[Jr[A]];if(A===Jr.length)return l("xs");var g=typeof p=="number"&&A>0?p:d;return"@media (max-width:".concat(g-o/100).concat(i,")")}function u(d,A){var p=Jr.indexOf(A);return p===Jr.length-1?l(d):"@media (min-width:".concat(typeof n[d]=="number"?n[d]:d).concat(i,") and ")+"(max-width:".concat((p!==-1&&typeof n[Jr[p+1]]=="number"?n[Jr[p+1]]:A)-o/100).concat(i,")")}function f(d){return u(d,d)}function h(d){return n[d]}return Y({keys:Jr,values:n,up:l,down:c,between:u,only:f,width:h},a)}function qP(t,e,n){var r;return Y({gutters:function(){var s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return console.warn(["Material-UI: theme.mixins.gutters() is deprecated.","You can use the source of the mixin directly:",` + paddingLeft: theme.spacing(2), + paddingRight: theme.spacing(2), + [theme.breakpoints.up('sm')]: { + paddingLeft: theme.spacing(3), + paddingRight: theme.spacing(3), + }, + `].join(` +`)),Y({paddingLeft:e(2),paddingRight:e(2)},s,y({},t.up("sm"),Y({paddingLeft:e(3),paddingRight:e(3)},s[t.up("sm")])))},toolbar:(r={minHeight:56},y(r,"".concat(t.up("xs")," and (orientation: landscape)"),{minHeight:48}),y(r,t.up("sm"),{minHeight:64}),r)},n)}var kE={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.54)",disabled:"rgba(0, 0, 0, 0.38)",hint:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:Gf.white,default:xm[50]},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}},dA={text:{primary:Gf.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",hint:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:xm[800],default:"#303030"},action:{active:Gf.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}};function QE(t,e,n,r){var i=r.light||r,s=r.dark||r*1.5;t[e]||(t.hasOwnProperty(n)?t[e]=t[n]:e==="light"?t.light=Vw(t.main,i):e==="dark"&&(t.dark=zw(t.main,s)))}function XP(t){var e=t.primary,n=e===void 0?{light:cA[300],main:cA[500],dark:cA[700]}:e,r=t.secondary,i=r===void 0?{light:lA.A200,main:lA.A400,dark:lA.A700}:r,s=t.error,o=s===void 0?{light:aA[300],main:aA[500],dark:aA[700]}:s,a=t.warning,l=a===void 0?{light:hA[300],main:hA[500],dark:hA[700]}:a,c=t.info,u=c===void 0?{light:uA[300],main:uA[500],dark:uA[700]}:c,f=t.success,h=f===void 0?{light:fA[300],main:fA[500],dark:fA[700]}:f,d=t.type,A=d===void 0?"light":d,p=t.contrastThreshold,g=p===void 0?3:p,m=t.tonalOffset,v=m===void 0?.2:m,E=Be(t,["primary","secondary","error","warning","info","success","type","contrastThreshold","tonalOffset"]);function _(P){var B=$P(P,dA.text.primary)>=g?dA.text.primary:kE.text.primary;return B}var I=function(B){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:500,V=arguments.length>2&&arguments[2]!==void 0?arguments[2]:300,G=arguments.length>3&&arguments[3]!==void 0?arguments[3]:700;if(B=Y({},B),!B.main&&B[N]&&(B.main=B[N]),!B.main)throw new Error(Dl(4,N));if(typeof B.main!="string")throw new Error(Dl(5,JSON.stringify(B.main)));return QE(B,"light",V,v),QE(B,"dark",G,v),B.contrastText||(B.contrastText=_(B.main)),B},C={dark:dA,light:kE},R=Oo(Y({common:Gf,type:A,primary:I(n),secondary:I(i,"A400","A200","A700"),error:I(o),warning:I(l),info:I(u),success:I(h),grey:xm,contrastThreshold:g,getContrastText:_,augmentColor:I,tonalOffset:v},C[A]),E);return R}function jw(t){return Math.round(t*1e5)/1e5}function JP(t){return jw(t)}var FE={textTransform:"uppercase"},UE='"Roboto", "Helvetica", "Arial", sans-serif';function ZP(t,e){var n=typeof e=="function"?e(t):e,r=n.fontFamily,i=r===void 0?UE:r,s=n.fontSize,o=s===void 0?14:s,a=n.fontWeightLight,l=a===void 0?300:a,c=n.fontWeightRegular,u=c===void 0?400:c,f=n.fontWeightMedium,h=f===void 0?500:f,d=n.fontWeightBold,A=d===void 0?700:d,p=n.htmlFontSize,g=p===void 0?16:p,m=n.allVariants,v=n.pxToRem,E=Be(n,["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"]),_=o/14,I=v||function(P){return"".concat(P/g*_,"rem")},C=function(B,N,V,G,z){return Y({fontFamily:i,fontWeight:B,fontSize:I(N),lineHeight:V},i===UE?{letterSpacing:"".concat(jw(G/N),"em")}:{},z,m)},R={h1:C(l,96,1.167,-1.5),h2:C(l,60,1.2,-.5),h3:C(u,48,1.167,0),h4:C(u,34,1.235,.25),h5:C(u,24,1.334,0),h6:C(h,20,1.6,.15),subtitle1:C(u,16,1.75,.15),subtitle2:C(h,14,1.57,.1),body1:C(u,16,1.5,.15),body2:C(u,14,1.43,.15),button:C(h,14,1.75,.4,FE),caption:C(u,12,1.66,.4),overline:C(u,12,2.66,1,FE)};return Oo(Y({htmlFontSize:g,pxToRem:I,round:JP,fontFamily:i,fontSize:o,fontWeightLight:l,fontWeightRegular:u,fontWeightMedium:h,fontWeightBold:A},R),E,{clone:!1})}var eM=.2,tM=.14,nM=.12;function Ke(){return["".concat(arguments.length<=0?void 0:arguments[0],"px ").concat(arguments.length<=1?void 0:arguments[1],"px ").concat(arguments.length<=2?void 0:arguments[2],"px ").concat(arguments.length<=3?void 0:arguments[3],"px rgba(0,0,0,").concat(eM,")"),"".concat(arguments.length<=4?void 0:arguments[4],"px ").concat(arguments.length<=5?void 0:arguments[5],"px ").concat(arguments.length<=6?void 0:arguments[6],"px ").concat(arguments.length<=7?void 0:arguments[7],"px rgba(0,0,0,").concat(tM,")"),"".concat(arguments.length<=8?void 0:arguments[8],"px ").concat(arguments.length<=9?void 0:arguments[9],"px ").concat(arguments.length<=10?void 0:arguments[10],"px ").concat(arguments.length<=11?void 0:arguments[11],"px rgba(0,0,0,").concat(nM,")")].join(",")}var rM=["none",Ke(0,2,1,-1,0,1,1,0,0,1,3,0),Ke(0,3,1,-2,0,2,2,0,0,1,5,0),Ke(0,3,3,-2,0,3,4,0,0,1,8,0),Ke(0,2,4,-1,0,4,5,0,0,1,10,0),Ke(0,3,5,-1,0,5,8,0,0,1,14,0),Ke(0,3,5,-1,0,6,10,0,0,1,18,0),Ke(0,4,5,-2,0,7,10,1,0,2,16,1),Ke(0,5,5,-3,0,8,10,1,0,3,14,2),Ke(0,5,6,-3,0,9,12,1,0,3,16,2),Ke(0,6,6,-3,0,10,14,1,0,4,18,3),Ke(0,6,7,-4,0,11,15,1,0,4,20,3),Ke(0,7,8,-4,0,12,17,2,0,5,22,4),Ke(0,7,8,-4,0,13,19,2,0,5,24,4),Ke(0,7,9,-4,0,14,21,2,0,5,26,4),Ke(0,8,9,-5,0,15,22,2,0,6,28,5),Ke(0,8,10,-5,0,16,24,2,0,6,30,5),Ke(0,8,11,-5,0,17,26,2,0,6,32,5),Ke(0,9,11,-5,0,18,28,2,0,7,34,6),Ke(0,9,12,-6,0,19,29,2,0,7,36,6),Ke(0,10,13,-6,0,20,31,3,0,8,38,7),Ke(0,10,13,-6,0,21,33,3,0,8,40,7),Ke(0,10,14,-6,0,22,35,3,0,8,42,7),Ke(0,11,14,-7,0,23,36,3,0,9,44,8),Ke(0,11,15,-7,0,24,38,3,0,9,46,8)];const iM=rM;var sM={borderRadius:4};const oM=sM;function Hw(t){if(Array.isArray(t))return t}function aM(t,e){var n=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(n!=null){var r,i,s,o,a=[],l=!0,c=!1;try{if(s=(n=n.call(t)).next,e===0){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=s.call(n)).done)&&(a.push(r.value),a.length!==e);l=!0);}catch(u){c=!0,i=u}finally{try{if(!l&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw i}}return a}}function Ww(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Vh(t,e){return Hw(t)||aM(t,e)||Am(t,e)||Ww()}function lM(t){var e=t.spacing||8;return typeof e=="number"?function(n){return e*n}:Array.isArray(e)?function(n){return e[n]}:typeof e=="function"?e:function(){}}function cM(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:8;if(t.mui)return t;var e=lM({spacing:t}),n=function(){for(var i=arguments.length,s=new Array(i),o=0;o0&&arguments[0]!==void 0?arguments[0]:["all"],n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.duration,i=r===void 0?fp.standard:r,s=n.easing,o=s===void 0?GE.easeInOut:s,a=n.delay,l=a===void 0?0:a;return Be(n,["duration","easing","delay"]),(Array.isArray(e)?e:[e]).map(function(c){return"".concat(c," ").concat(typeof i=="string"?i:zE(i)," ").concat(o," ").concat(typeof l=="string"?l:zE(l))}).join(",")},getAutoHeightDuration:function(e){if(!e)return 0;var n=e/36;return Math.round((4+15*Math.pow(n,.25)+n/5)*10)}};var fM={mobileStepper:1e3,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};const Yw=fM;function $w(){for(var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=t.breakpoints,n=e===void 0?{}:e,r=t.mixins,i=r===void 0?{}:r,s=t.palette,o=s===void 0?{}:s,a=t.spacing,l=t.typography,c=l===void 0?{}:l,u=Be(t,["breakpoints","mixins","palette","spacing","typography"]),f=XP(o),h=KP(n),d=cM(a),A=Oo({breakpoints:h,direction:"ltr",mixins:qP(h,d,i),overrides:{},palette:f,props:{},shadows:iM,typography:ZP(f,c),spacing:d,shape:oM,transitions:uM,zIndex:Yw},u),p=arguments.length,g=new Array(p>1?p-1:0),m=1;m1&&arguments[1]!==void 0?arguments[1]:166,n;function r(){for(var i=arguments.length,s=new Array(i),o=0;o"u"?b.useEffect:b.useLayoutEffect;function VM(t){var e=t.classes,n=t.pulsate,r=n===void 0?!1:n,i=t.rippleX,s=t.rippleY,o=t.rippleSize,a=t.in,l=t.onExited,c=l===void 0?function(){}:l,u=t.timeout,f=b.useState(!1),h=f[0],d=f[1],A=Te(e.ripple,e.rippleVisible,r&&e.ripplePulsate),p={width:o,height:o,top:-(o/2)+s,left:-(o/2)+i},g=Te(e.child,h&&e.childLeaving,r&&e.childPulsate),m=Mt(c);return zM(function(){if(!a){d(!0);var v=setTimeout(m,u);return function(){clearTimeout(v)}}},[m,a,u]),b.createElement("span",{className:A,style:p},b.createElement("span",{className:g}))}var gp=550,jM=80,HM=function(e){return{root:{overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"},ripple:{opacity:0,position:"absolute"},rippleVisible:{opacity:.3,transform:"scale(1)",animation:"$enter ".concat(gp,"ms ").concat(e.transitions.easing.easeInOut)},ripplePulsate:{animationDuration:"".concat(e.transitions.duration.shorter,"ms")},child:{opacity:1,display:"block",width:"100%",height:"100%",borderRadius:"50%",backgroundColor:"currentColor"},childLeaving:{opacity:0,animation:"$exit ".concat(gp,"ms ").concat(e.transitions.easing.easeInOut)},childPulsate:{position:"absolute",left:0,top:0,animation:"$pulsate 2500ms ".concat(e.transitions.easing.easeInOut," 200ms infinite")},"@keyframes enter":{"0%":{transform:"scale(0)",opacity:.1},"100%":{transform:"scale(1)",opacity:.3}},"@keyframes exit":{"0%":{opacity:1},"100%":{opacity:0}},"@keyframes pulsate":{"0%":{transform:"scale(1)"},"50%":{transform:"scale(0.92)"},"100%":{transform:"scale(1)"}}}},WM=b.forwardRef(function(e,n){var r=e.center,i=r===void 0?!1:r,s=e.classes,o=e.className,a=Be(e,["center","classes","className"]),l=b.useState([]),c=l[0],u=l[1],f=b.useRef(0),h=b.useRef(null);b.useEffect(function(){h.current&&(h.current(),h.current=null)},[c]);var d=b.useRef(!1),A=b.useRef(null),p=b.useRef(null),g=b.useRef(null);b.useEffect(function(){return function(){clearTimeout(A.current)}},[]);var m=b.useCallback(function(I){var C=I.pulsate,R=I.rippleX,P=I.rippleY,B=I.rippleSize,N=I.cb;u(function(V){return[].concat(Ph(V),[b.createElement(VM,{key:f.current,classes:s,timeout:gp,pulsate:C,rippleX:R,rippleY:P,rippleSize:B})])}),f.current+=1,h.current=N},[s]),v=b.useCallback(function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},R=arguments.length>2?arguments[2]:void 0,P=C.pulsate,B=P===void 0?!1:P,N=C.center,V=N===void 0?i||C.pulsate:N,G=C.fakeElement,z=G===void 0?!1:G;if(I.type==="mousedown"&&d.current){d.current=!1;return}I.type==="touchstart"&&(d.current=!0);var K=z?null:g.current,J=K?K.getBoundingClientRect():{width:0,height:0,left:0,top:0},ae,pe,re;if(V||I.clientX===0&&I.clientY===0||!I.clientX&&!I.touches)ae=Math.round(J.width/2),pe=Math.round(J.height/2);else{var fe=I.touches?I.touches[0]:I,L=fe.clientX,S=fe.clientY;ae=Math.round(L-J.left),pe=Math.round(S-J.top)}if(V)re=Math.sqrt((2*Math.pow(J.width,2)+Math.pow(J.height,2))/3),re%2===0&&(re+=1);else{var M=Math.max(Math.abs((K?K.clientWidth:0)-ae),ae)*2+2,D=Math.max(Math.abs((K?K.clientHeight:0)-pe),pe)*2+2;re=Math.sqrt(Math.pow(M,2)+Math.pow(D,2))}I.touches?p.current===null&&(p.current=function(){m({pulsate:B,rippleX:ae,rippleY:pe,rippleSize:re,cb:R})},A.current=setTimeout(function(){p.current&&(p.current(),p.current=null)},jM)):m({pulsate:B,rippleX:ae,rippleY:pe,rippleSize:re,cb:R})},[i,m]),E=b.useCallback(function(){v({},{pulsate:!0})},[v]),_=b.useCallback(function(I,C){if(clearTimeout(A.current),I.type==="touchend"&&p.current){I.persist(),p.current(),p.current=null,A.current=setTimeout(function(){_(I,C)});return}p.current=null,u(function(R){return R.length>0?R.slice(1):R}),h.current=C},[]);return b.useImperativeHandle(n,function(){return{pulsate:E,start:v,stop:_}},[E,v,_]),b.createElement("span",Y({className:Te(s.root,o),ref:g},a),b.createElement(BM,{component:null,exit:!0},c))});const YM=yt(HM,{flip:!1,name:"MuiTouchRipple"})(b.memo(WM));var $M={root:{display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle","-moz-appearance":"none","-webkit-appearance":"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},"&$disabled":{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}},disabled:{},focusVisible:{}},KM=b.forwardRef(function(e,n){var r=e.action,i=e.buttonRef,s=e.centerRipple,o=s===void 0?!1:s,a=e.children,l=e.classes,c=e.className,u=e.component,f=u===void 0?"button":u,h=e.disabled,d=h===void 0?!1:h,A=e.disableRipple,p=A===void 0?!1:A,g=e.disableTouchRipple,m=g===void 0?!1:g,v=e.focusRipple,E=v===void 0?!1:v,_=e.focusVisibleClassName,I=e.onBlur,C=e.onClick,R=e.onFocus,P=e.onFocusVisible,B=e.onKeyDown,N=e.onKeyUp,V=e.onMouseDown,G=e.onMouseLeave,z=e.onMouseUp,K=e.onTouchEnd,J=e.onTouchMove,ae=e.onTouchStart,pe=e.onDragLeave,re=e.tabIndex,fe=re===void 0?0:re,L=e.TouchRippleProps,S=e.type,M=S===void 0?"button":S,D=Be(e,["action","buttonRef","centerRipple","children","classes","className","component","disabled","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","onBlur","onClick","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","onDragLeave","tabIndex","TouchRippleProps","type"]),k=b.useRef(null);function U(){return Fi.findDOMNode(k.current)}var F=b.useRef(null),j=b.useState(!1),se=j[0],te=j[1];d&&se&&te(!1);var de=e2(),le=de.isFocusVisible,ve=de.onBlurVisible,_e=de.ref;b.useImperativeHandle(r,function(){return{focusVisible:function(){te(!0),k.current.focus()}}},[]),b.useEffect(function(){se&&E&&!p&&F.current.pulsate()},[p,E,se]);function ye(ge,qt){var fa=arguments.length>2&&arguments[2]!==void 0?arguments[2]:m;return Mt(function(ji){qt&&qt(ji);var mn=fa;return!mn&&F.current&&F.current[ge](ji),!0})}var lt=ye("start",V),ce=ye("stop",pe),we=ye("stop",z),Bt=ye("stop",function(ge){se&&ge.preventDefault(),G&&G(ge)}),et=ye("start",ae),tt=ye("stop",K),Re=ye("stop",J),Ie=ye("stop",function(ge){se&&(ve(ge),te(!1)),I&&I(ge)},!1),De=Mt(function(ge){k.current||(k.current=ge.currentTarget),le(ge)&&(te(!0),P&&P(ge)),R&&R(ge)}),Ye=function(){var qt=U();return f&&f!=="button"&&!(qt.tagName==="A"&&qt.href)},Gt=b.useRef(!1),Rt=Mt(function(ge){E&&!Gt.current&&se&&F.current&&ge.key===" "&&(Gt.current=!0,ge.persist(),F.current.stop(ge,function(){F.current.start(ge)})),ge.target===ge.currentTarget&&Ye()&&ge.key===" "&&ge.preventDefault(),B&&B(ge),ge.target===ge.currentTarget&&Ye()&&ge.key==="Enter"&&!d&&(ge.preventDefault(),C&&C(ge))}),$r=Mt(function(ge){E&&ge.key===" "&&F.current&&se&&!ge.defaultPrevented&&(Gt.current=!1,ge.persist(),F.current.stop(ge,function(){F.current.pulsate(ge)})),N&&N(ge),C&&ge.target===ge.currentTarget&&Ye()&&ge.key===" "&&!ge.defaultPrevented&&C(ge)}),ut=f;ut==="button"&&D.href&&(ut="a");var Se={};ut==="button"?(Se.type=M,Se.disabled=d):((ut!=="a"||!D.href)&&(Se.role="button"),Se["aria-disabled"]=d);var Pn=Yt(i,n),st=Yt(_e,k),Mn=Yt(Pn,st),Ln=b.useState(!1),la=Ln[0],ca=Ln[1];b.useEffect(function(){ca(!0)},[]);var ua=la&&!p&&!d;return b.createElement(ut,Y({className:Te(l.root,c,se&&[l.focusVisible,_],d&&l.disabled),onBlur:Ie,onClick:C,onFocus:De,onKeyDown:Rt,onKeyUp:$r,onMouseDown:lt,onMouseLeave:Bt,onMouseUp:we,onDragLeave:ce,onTouchEnd:tt,onTouchMove:Re,onTouchStart:et,ref:Mn,tabIndex:d?-1:fe},Se,D),a,ua?b.createElement(YM,Y({ref:F,center:o},L)):null)});const i2=yt($M,{name:"MuiButtonBase"})(KM);var qM=function(e){return{root:{textAlign:"center",flex:"0 0 auto",fontSize:e.typography.pxToRem(24),padding:12,borderRadius:"50%",overflow:"visible",color:e.palette.action.active,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest}),"&:hover":{backgroundColor:fi(e.palette.action.active,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"&$disabled":{backgroundColor:"transparent",color:e.palette.action.disabled}},edgeStart:{marginLeft:-12,"$sizeSmall&":{marginLeft:-3}},edgeEnd:{marginRight:-12,"$sizeSmall&":{marginRight:-3}},colorInherit:{color:"inherit"},colorPrimary:{color:e.palette.primary.main,"&:hover":{backgroundColor:fi(e.palette.primary.main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},colorSecondary:{color:e.palette.secondary.main,"&:hover":{backgroundColor:fi(e.palette.secondary.main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},disabled:{},sizeSmall:{padding:3,fontSize:e.typography.pxToRem(18)},label:{width:"100%",display:"flex",alignItems:"inherit",justifyContent:"inherit"}}},XM=b.forwardRef(function(e,n){var r=e.edge,i=r===void 0?!1:r,s=e.children,o=e.classes,a=e.className,l=e.color,c=l===void 0?"default":l,u=e.disabled,f=u===void 0?!1:u,h=e.disableFocusRipple,d=h===void 0?!1:h,A=e.size,p=A===void 0?"medium":A,g=Be(e,["edge","children","classes","className","color","disabled","disableFocusRipple","size"]);return b.createElement(i2,Y({className:Te(o.root,a,c!=="default"&&o["color".concat(Wn(c))],f&&o.disabled,p==="small"&&o["size".concat(Wn(p))],{start:o.edgeStart,end:o.edgeEnd}[i]),centerRipple:!0,focusRipple:!d,disabled:f,ref:n},g),b.createElement("span",{className:o.label},s))});const Dr=yt(qM,{name:"MuiIconButton"})(XM);var JM=function(e){var n={duration:e.transitions.duration.shortest};return{root:{display:"flex",minHeight:8*6,transition:e.transitions.create(["min-height","background-color"],n),padding:e.spacing(0,2),"&:hover:not($disabled)":{cursor:"pointer"},"&$expanded":{minHeight:64},"&$focused, &$focusVisible":{backgroundColor:e.palette.action.focus},"&$disabled":{opacity:e.palette.action.disabledOpacity}},expanded:{},focused:{},focusVisible:{},disabled:{},content:{display:"flex",flexGrow:1,transition:e.transitions.create(["margin"],n),margin:"12px 0","&$expanded":{margin:"20px 0"}},expandIcon:{transform:"rotate(0deg)",transition:e.transitions.create("transform",n),"&:hover":{backgroundColor:"transparent"},"&$expanded":{transform:"rotate(180deg)"}}}},ZM=b.forwardRef(function(e,n){var r=e.children,i=e.classes,s=e.className,o=e.expandIcon,a=e.focusVisibleClassName,l=e.IconButtonProps,c=l===void 0?{}:l,u=e.onClick,f=Be(e,["children","classes","className","expandIcon","focusVisibleClassName","IconButtonProps","onClick"]),h=b.useContext(r2),d=h.disabled,A=d===void 0?!1:d,p=h.expanded,g=h.toggle,m=function(E){g&&g(E),u&&u(E)};return b.createElement(i2,Y({focusRipple:!1,disableRipple:!0,disabled:A,component:"div","aria-expanded":p,className:Te(i.root,s,A&&i.disabled,p&&i.expanded),focusVisibleClassName:Te(i.focusVisible,i.focused,a),onClick:m,ref:n},f),b.createElement("div",{className:Te(i.content,p&&i.expanded)},r),o&&b.createElement(Dr,Y({className:Te(i.expandIcon,p&&i.expanded),edge:"end",component:"div",tabIndex:null,role:null,"aria-hidden":!0},c),o))});const eL=yt(JM,{name:"MuiAccordionSummary"})(ZM);var tL=function(e){return{root:{margin:0},body2:e.typography.body2,body1:e.typography.body1,caption:e.typography.caption,button:e.typography.button,h1:e.typography.h1,h2:e.typography.h2,h3:e.typography.h3,h4:e.typography.h4,h5:e.typography.h5,h6:e.typography.h6,subtitle1:e.typography.subtitle1,subtitle2:e.typography.subtitle2,overline:e.typography.overline,srOnly:{position:"absolute",height:1,width:1,overflow:"hidden"},alignLeft:{textAlign:"left"},alignCenter:{textAlign:"center"},alignRight:{textAlign:"right"},alignJustify:{textAlign:"justify"},noWrap:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},gutterBottom:{marginBottom:"0.35em"},paragraph:{marginBottom:16},colorInherit:{color:"inherit"},colorPrimary:{color:e.palette.primary.main},colorSecondary:{color:e.palette.secondary.main},colorTextPrimary:{color:e.palette.text.primary},colorTextSecondary:{color:e.palette.text.secondary},colorError:{color:e.palette.error.main},displayInline:{display:"inline"},displayBlock:{display:"block"}}},WE={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p"},nL=b.forwardRef(function(e,n){var r=e.align,i=r===void 0?"inherit":r,s=e.classes,o=e.className,a=e.color,l=a===void 0?"initial":a,c=e.component,u=e.display,f=u===void 0?"initial":u,h=e.gutterBottom,d=h===void 0?!1:h,A=e.noWrap,p=A===void 0?!1:A,g=e.paragraph,m=g===void 0?!1:g,v=e.variant,E=v===void 0?"body1":v,_=e.variantMapping,I=_===void 0?WE:_,C=Be(e,["align","classes","className","color","component","display","gutterBottom","noWrap","paragraph","variant","variantMapping"]),R=c||(m?"p":I[E]||WE[E])||"span";return b.createElement(R,Y({className:Te(s.root,o,E!=="inherit"&&s[E],l!=="initial"&&s["color".concat(Wn(l))],p&&s.noWrap,d&&s.gutterBottom,m&&s.paragraph,i!=="inherit"&&s["align".concat(Wn(i))],f!=="initial"&&s["display".concat(Wn(f))]),ref:n},C))});const zn=yt(tL,{name:"MuiTypography"})(nL);var s2=b.createContext();function rL(){return b.useContext(s2)}const o2=s2;function iL(){return b.useContext(o2)}function sL(t){return t=typeof t=="function"?t():t,Fi.findDOMNode(t)}var gA=typeof window<"u"?b.useLayoutEffect:b.useEffect,oL=b.forwardRef(function(e,n){var r=e.children,i=e.container,s=e.disablePortal,o=s===void 0?!1:s,a=e.onRendered,l=b.useState(null),c=l[0],u=l[1],f=Yt(b.isValidElement(r)?r.ref:null,n);return gA(function(){o||u(sL(i)||document.body)},[i,o]),gA(function(){if(c&&!o)return zf(n,c),function(){zf(n,null)}},[n,c,o]),gA(function(){a&&(c||o)&&a()},[a,c,o]),o?b.isValidElement(r)?b.cloneElement(r,{ref:f}):r:c&&Fi.createPortal(r,c)});const aL=oL;function lL(){var t=document.createElement("div");t.style.width="99px",t.style.height="99px",t.style.position="absolute",t.style.top="-9999px",t.style.overflow="scroll",document.body.appendChild(t);var e=t.offsetWidth-t.clientWidth;return document.body.removeChild(t),e}function cL(t){var e=Gn(t);return e.body===t?Jw(e).innerWidth>e.documentElement.clientWidth:t.scrollHeight>t.clientHeight}function fl(t,e){e?t.setAttribute("aria-hidden","true"):t.removeAttribute("aria-hidden")}function YE(t){return parseInt(window.getComputedStyle(t)["padding-right"],10)||0}function $E(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[],i=arguments.length>4?arguments[4]:void 0,s=[e,n].concat(Ph(r)),o=["TEMPLATE","SCRIPT","STYLE"];[].forEach.call(t.children,function(a){a.nodeType===1&&s.indexOf(a)===-1&&o.indexOf(a.tagName)===-1&&fl(a,i)})}function pA(t,e){var n=-1;return t.some(function(r,i){return e(r)?(n=i,!0):!1}),n}function uL(t,e){var n=[],r=[],i=t.container,s;if(!e.disableScrollLock){if(cL(i)){var o=lL();n.push({value:i.style.paddingRight,key:"padding-right",el:i}),i.style["padding-right"]="".concat(YE(i)+o,"px"),s=Gn(i).querySelectorAll(".mui-fixed"),[].forEach.call(s,function(u){r.push(u.style.paddingRight),u.style.paddingRight="".concat(YE(u)+o,"px")})}var a=i.parentElement,l=a.nodeName==="HTML"&&window.getComputedStyle(a)["overflow-y"]==="scroll"?a:i;n.push({value:l.style.overflow,key:"overflow",el:l}),l.style.overflow="hidden"}var c=function(){s&&[].forEach.call(s,function(f,h){r[h]?f.style.paddingRight=r[h]:f.style.removeProperty("padding-right")}),n.forEach(function(f){var h=f.value,d=f.el,A=f.key;h?d.style.setProperty(A,h):d.style.removeProperty(A)})};return c}function fL(t){var e=[];return[].forEach.call(t.children,function(n){n.getAttribute&&n.getAttribute("aria-hidden")==="true"&&e.push(n)}),e}var hL=function(){function t(){vP(this,t),this.modals=[],this.containers=[]}return um(t,[{key:"add",value:function(n,r){var i=this.modals.indexOf(n);if(i!==-1)return i;i=this.modals.length,this.modals.push(n),n.modalRef&&fl(n.modalRef,!1);var s=fL(r);$E(r,n.mountNode,n.modalRef,s,!0);var o=pA(this.containers,function(a){return a.container===r});return o!==-1?(this.containers[o].modals.push(n),i):(this.containers.push({modals:[n],container:r,restore:null,hiddenSiblingNodes:s}),i)}},{key:"mount",value:function(n,r){var i=pA(this.containers,function(o){return o.modals.indexOf(n)!==-1}),s=this.containers[i];s.restore||(s.restore=uL(s,r))}},{key:"remove",value:function(n){var r=this.modals.indexOf(n);if(r===-1)return r;var i=pA(this.containers,function(a){return a.modals.indexOf(n)!==-1}),s=this.containers[i];if(s.modals.splice(s.modals.indexOf(n),1),this.modals.splice(r,1),s.modals.length===0)s.restore&&s.restore(),n.modalRef&&fl(n.modalRef,!0),$E(s.container,n.mountNode,n.modalRef,s.hiddenSiblingNodes,!1),this.containers.splice(i,1);else{var o=s.modals[s.modals.length-1];o.modalRef&&fl(o.modalRef,!1)}return r}},{key:"isTopModal",value:function(n){return this.modals.length>0&&this.modals[this.modals.length-1]===n}}]),t}();function dL(t){var e=t.children,n=t.disableAutoFocus,r=n===void 0?!1:n,i=t.disableEnforceFocus,s=i===void 0?!1:i,o=t.disableRestoreFocus,a=o===void 0?!1:o,l=t.getDoc,c=t.isEnabled,u=t.open,f=b.useRef(),h=b.useRef(null),d=b.useRef(null),A=b.useRef(),p=b.useRef(null),g=b.useCallback(function(E){p.current=Fi.findDOMNode(E)},[]),m=Yt(e.ref,g),v=b.useRef();return b.useEffect(function(){v.current=u},[u]),!v.current&&u&&typeof window<"u"&&(A.current=l().activeElement),b.useEffect(function(){if(u){var E=Gn(p.current);!r&&p.current&&!p.current.contains(E.activeElement)&&(p.current.hasAttribute("tabIndex")||p.current.setAttribute("tabIndex",-1),p.current.focus());var _=function(){var P=p.current;if(P!==null){if(!E.hasFocus()||s||!c()||f.current){f.current=!1;return}p.current&&!p.current.contains(E.activeElement)&&p.current.focus()}},I=function(P){s||!c()||P.keyCode!==9||E.activeElement===p.current&&(f.current=!0,P.shiftKey?d.current.focus():h.current.focus())};E.addEventListener("focus",_,!0),E.addEventListener("keydown",I,!0);var C=setInterval(function(){_()},50);return function(){clearInterval(C),E.removeEventListener("focus",_,!0),E.removeEventListener("keydown",I,!0),a||(A.current&&A.current.focus&&A.current.focus(),A.current=null)}}},[r,s,a,c,u]),b.createElement(b.Fragment,null,b.createElement("div",{tabIndex:0,ref:h,"data-test":"sentinelStart"}),b.cloneElement(e,{ref:m}),b.createElement("div",{tabIndex:0,ref:d,"data-test":"sentinelEnd"}))}var KE={root:{zIndex:-1,position:"fixed",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent"},invisible:{backgroundColor:"transparent"}},AL=b.forwardRef(function(e,n){var r=e.invisible,i=r===void 0?!1:r,s=e.open,o=Be(e,["invisible","open"]);return s?b.createElement("div",Y({"aria-hidden":!0,ref:n},o,{style:Y({},KE.root,i?KE.invisible:{},o.style)})):null});const gL=AL;function pL(t){return t=typeof t=="function"?t():t,Fi.findDOMNode(t)}function mL(t){return t.children?t.children.props.hasOwnProperty("in"):!1}var vL=new hL,yL=function(e){return{root:{position:"fixed",zIndex:e.zIndex.modal,right:0,bottom:0,top:0,left:0},hidden:{visibility:"hidden"}}},EL=b.forwardRef(function(e,n){var r=gc(),i=yw({name:"MuiModal",props:Y({},e),theme:r}),s=i.BackdropComponent,o=s===void 0?gL:s,a=i.BackdropProps,l=i.children,c=i.closeAfterTransition,u=c===void 0?!1:c,f=i.container,h=i.disableAutoFocus,d=h===void 0?!1:h,A=i.disableBackdropClick,p=A===void 0?!1:A,g=i.disableEnforceFocus,m=g===void 0?!1:g,v=i.disableEscapeKeyDown,E=v===void 0?!1:v,_=i.disablePortal,I=_===void 0?!1:_,C=i.disableRestoreFocus,R=C===void 0?!1:C,P=i.disableScrollLock,B=P===void 0?!1:P,N=i.hideBackdrop,V=N===void 0?!1:N,G=i.keepMounted,z=G===void 0?!1:G,K=i.manager,J=K===void 0?vL:K,ae=i.onBackdropClick,pe=i.onClose,re=i.onEscapeKeyDown,fe=i.onRendered,L=i.open,S=Be(i,["BackdropComponent","BackdropProps","children","closeAfterTransition","container","disableAutoFocus","disableBackdropClick","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","manager","onBackdropClick","onClose","onEscapeKeyDown","onRendered","open"]),M=b.useState(!0),D=M[0],k=M[1],U=b.useRef({}),F=b.useRef(null),j=b.useRef(null),se=Yt(j,n),te=mL(i),de=function(){return Gn(F.current)},le=function(){return U.current.modalRef=j.current,U.current.mountNode=F.current,U.current},ve=function(){J.mount(le(),{disableScrollLock:B}),j.current.scrollTop=0},_e=Mt(function(){var De=pL(f)||de().body;J.add(le(),De),j.current&&ve()}),ye=b.useCallback(function(){return J.isTopModal(le())},[J]),lt=Mt(function(De){F.current=De,De&&(fe&&fe(),L&&ye()?ve():fl(j.current,!0))}),ce=b.useCallback(function(){J.remove(le())},[J]);if(b.useEffect(function(){return function(){ce()}},[ce]),b.useEffect(function(){L?_e():(!te||!u)&&ce()},[L,ce,te,u,_e]),!z&&!L&&(!te||D))return null;var we=function(){k(!1)},Bt=function(){k(!0),u&&ce()},et=function(Ye){Ye.target===Ye.currentTarget&&(ae&&ae(Ye),!p&&pe&&pe(Ye,"backdropClick"))},tt=function(Ye){Ye.key!=="Escape"||!ye()||(re&&re(Ye),E||(Ye.stopPropagation(),pe&&pe(Ye,"escapeKeyDown")))},Re=yL(r||{zIndex:Yw}),Ie={};return l.props.tabIndex===void 0&&(Ie.tabIndex=l.props.tabIndex||"-1"),te&&(Ie.onEnter=hp(we,l.props.onEnter),Ie.onExited=hp(Bt,l.props.onExited)),b.createElement(aL,{ref:lt,container:f,disablePortal:I},b.createElement("div",Y({ref:se,onKeyDown:tt,role:"presentation"},S,{style:Y({},Re.root,!L&&D?Re.hidden:{},S.style)}),V?null:b.createElement(o,Y({open:L,onClick:et},a)),b.createElement(dL,{disableEnforceFocus:m,disableAutoFocus:d,disableRestoreFocus:R,getDoc:de,isEnabled:ye,open:L},b.cloneElement(l,Ie))))});const _L=EL;var xL=function(e){return{root:{height:1,margin:0,border:"none",flexShrink:0,backgroundColor:e.palette.divider},absolute:{position:"absolute",bottom:0,left:0,width:"100%"},inset:{marginLeft:72},light:{backgroundColor:fi(e.palette.divider,.08)},middle:{marginLeft:e.spacing(2),marginRight:e.spacing(2)},vertical:{height:"100%",width:1},flexItem:{alignSelf:"stretch",height:"auto"}}},CL=b.forwardRef(function(e,n){var r=e.absolute,i=r===void 0?!1:r,s=e.classes,o=e.className,a=e.component,l=a===void 0?"hr":a,c=e.flexItem,u=c===void 0?!1:c,f=e.light,h=f===void 0?!1:f,d=e.orientation,A=d===void 0?"horizontal":d,p=e.role,g=p===void 0?l!=="hr"?"separator":void 0:p,m=e.variant,v=m===void 0?"fullWidth":m,E=Be(e,["absolute","classes","className","component","flexItem","light","orientation","role","variant"]);return b.createElement(l,Y({className:Te(s.root,o,v!=="fullWidth"&&s[v],i&&s.absolute,u&&s.flexItem,h&&s.light,A==="vertical"&&s.vertical),role:g,ref:n},E))});const an=yt(xL,{name:"MuiDivider"})(CL);function a2(t){var e=t.props,n=t.states,r=t.muiFormControl;return n.reduce(function(i,s){return i[s]=e[s],r&&typeof e[s]>"u"&&(i[s]=r[s]),i},{})}function ru(t,e){return parseInt(t[e],10)||0}var IL=typeof window<"u"?b.useLayoutEffect:b.useEffect,wL={shadow:{visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"}},bL=b.forwardRef(function(e,n){var r=e.onChange,i=e.rows,s=e.rowsMax,o=e.rowsMin,a=e.maxRows,l=e.minRows,c=l===void 0?1:l,u=e.style,f=e.value,h=Be(e,["onChange","rows","rowsMax","rowsMin","maxRows","minRows","style","value"]),d=a||s,A=i||o||c,p=b.useRef(f!=null),g=p.current,m=b.useRef(null),v=Yt(n,m),E=b.useRef(null),_=b.useRef(0),I=b.useState({}),C=I[0],R=I[1],P=b.useCallback(function(){var N=m.current,V=window.getComputedStyle(N),G=E.current;G.style.width=V.width,G.value=N.value||e.placeholder||"x",G.value.slice(-1)===` +`&&(G.value+=" ");var z=V["box-sizing"],K=ru(V,"padding-bottom")+ru(V,"padding-top"),J=ru(V,"border-bottom-width")+ru(V,"border-top-width"),ae=G.scrollHeight-K;G.value="x";var pe=G.scrollHeight-K,re=ae;A&&(re=Math.max(Number(A)*pe,re)),d&&(re=Math.min(Number(d)*pe,re)),re=Math.max(re,pe);var fe=re+(z==="border-box"?K+J:0),L=Math.abs(re-ae)<=1;R(function(S){return _.current<20&&(fe>0&&Math.abs((S.outerHeightStyle||0)-fe)>1||S.overflow!==L)?(_.current+=1,{overflow:L,outerHeightStyle:fe}):S})},[d,A,e.placeholder]);b.useEffect(function(){var N=Xw(function(){_.current=0,P()});return window.addEventListener("resize",N),function(){N.clear(),window.removeEventListener("resize",N)}},[P]),IL(function(){P()}),b.useEffect(function(){_.current=0},[f]);var B=function(V){_.current=0,g||P(),r&&r(V)};return b.createElement(b.Fragment,null,b.createElement("textarea",Y({value:f,onChange:B,ref:v,rows:A,style:Y({height:C.outerHeightStyle,overflow:C.overflow?"hidden":null},u)},h)),b.createElement("textarea",{"aria-hidden":!0,className:e.className,readOnly:!0,ref:E,tabIndex:-1,style:Y({},wL.shadow,u)}))});const SL=bL;function qE(t){return t!=null&&!(Array.isArray(t)&&t.length===0)}function TL(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return t&&(qE(t.value)&&t.value!==""||e&&qE(t.defaultValue)&&t.defaultValue!=="")}var BL=function(e){var n=e.palette.type==="light",r={color:"currentColor",opacity:n?.42:.5,transition:e.transitions.create("opacity",{duration:e.transitions.duration.shorter})},i={opacity:"0 !important"},s={opacity:n?.42:.5};return{"@global":{"@keyframes mui-auto-fill":{},"@keyframes mui-auto-fill-cancel":{}},root:Y({},e.typography.body1,{color:e.palette.text.primary,lineHeight:"1.1876em",boxSizing:"border-box",position:"relative",cursor:"text",display:"inline-flex",alignItems:"center","&$disabled":{color:e.palette.text.disabled,cursor:"default"}}),formControl:{},focused:{},disabled:{},adornedStart:{},adornedEnd:{},error:{},marginDense:{},multiline:{padding:"".concat(8-2,"px 0 ").concat(8-1,"px"),"&$marginDense":{paddingTop:4-1}},colorSecondary:{},fullWidth:{width:"100%"},input:{font:"inherit",letterSpacing:"inherit",color:"currentColor",padding:"".concat(8-2,"px 0 ").concat(8-1,"px"),border:0,boxSizing:"content-box",background:"none",height:"1.1876em",margin:0,WebkitTapHighlightColor:"transparent",display:"block",minWidth:0,width:"100%",animationName:"mui-auto-fill-cancel",animationDuration:"10ms","&::-webkit-input-placeholder":r,"&::-moz-placeholder":r,"&:-ms-input-placeholder":r,"&::-ms-input-placeholder":r,"&:focus":{outline:0},"&:invalid":{boxShadow:"none"},"&::-webkit-search-decoration":{"-webkit-appearance":"none"},"label[data-shrink=false] + $formControl &":{"&::-webkit-input-placeholder":i,"&::-moz-placeholder":i,"&:-ms-input-placeholder":i,"&::-ms-input-placeholder":i,"&:focus::-webkit-input-placeholder":s,"&:focus::-moz-placeholder":s,"&:focus:-ms-input-placeholder":s,"&:focus::-ms-input-placeholder":s},"&$disabled":{opacity:1},"&:-webkit-autofill":{animationDuration:"5000s",animationName:"mui-auto-fill"}},inputMarginDense:{paddingTop:4-1},inputMultiline:{height:"auto",resize:"none",padding:0},inputTypeSearch:{"-moz-appearance":"textfield","-webkit-appearance":"textfield"},inputAdornedStart:{},inputAdornedEnd:{},inputHiddenLabel:{}}},RL=typeof window>"u"?b.useEffect:b.useLayoutEffect,PL=b.forwardRef(function(e,n){var r=e["aria-describedby"],i=e.autoComplete,s=e.autoFocus,o=e.classes,a=e.className;e.color;var l=e.defaultValue,c=e.disabled,u=e.endAdornment;e.error;var f=e.fullWidth,h=f===void 0?!1:f,d=e.id,A=e.inputComponent,p=A===void 0?"input":A,g=e.inputProps,m=g===void 0?{}:g,v=e.inputRef;e.margin;var E=e.multiline,_=E===void 0?!1:E,I=e.name,C=e.onBlur,R=e.onChange,P=e.onClick,B=e.onFocus,N=e.onKeyDown,V=e.onKeyUp,G=e.placeholder,z=e.readOnly,K=e.renderSuffix,J=e.rows,ae=e.rowsMax,pe=e.rowsMin,re=e.maxRows,fe=e.minRows,L=e.startAdornment,S=e.type,M=S===void 0?"text":S,D=e.value,k=Be(e,["aria-describedby","autoComplete","autoFocus","classes","className","color","defaultValue","disabled","endAdornment","error","fullWidth","id","inputComponent","inputProps","inputRef","margin","multiline","name","onBlur","onChange","onClick","onFocus","onKeyDown","onKeyUp","placeholder","readOnly","renderSuffix","rows","rowsMax","rowsMin","maxRows","minRows","startAdornment","type","value"]),U=m.value!=null?m.value:D,F=b.useRef(U!=null),j=F.current,se=b.useRef(),te=b.useCallback(function(ut){},[]),de=Yt(m.ref,te),le=Yt(v,de),ve=Yt(se,le),_e=b.useState(!1),ye=_e[0],lt=_e[1],ce=rL(),we=a2({props:e,muiFormControl:ce,states:["color","disabled","error","hiddenLabel","margin","required","filled"]});we.focused=ce?ce.focused:ye,b.useEffect(function(){!ce&&c&&ye&&(lt(!1),C&&C())},[ce,c,ye,C]);var Bt=ce&&ce.onFilled,et=ce&&ce.onEmpty,tt=b.useCallback(function(ut){TL(ut)?Bt&&Bt():et&&et()},[Bt,et]);RL(function(){j&&tt({value:U})},[U,tt,j]);var Re=function(Se){if(we.disabled){Se.stopPropagation();return}B&&B(Se),m.onFocus&&m.onFocus(Se),ce&&ce.onFocus?ce.onFocus(Se):lt(!0)},Ie=function(Se){C&&C(Se),m.onBlur&&m.onBlur(Se),ce&&ce.onBlur?ce.onBlur(Se):lt(!1)},De=function(Se){if(!j){var Pn=Se.target||se.current;if(Pn==null)throw new Error(Dl(1));tt({value:Pn.value})}for(var st=arguments.length,Mn=new Array(st>1?st-1:0),Ln=1;Ln1&&arguments[1]!==void 0?arguments[1]:1,n=parseFloat(t);return"".concat(n/e).concat(String(t).replace(String(n),"")||"px")}function DL(t,e){var n={};return LL.forEach(function(r){var i=t.spacing(r);i!==0&&(n["spacing-".concat(e,"-").concat(r)]={margin:"-".concat(mA(i,2)),width:"calc(100% + ".concat(mA(i),")"),"& > $item":{padding:mA(i,2)}})}),n}var kL=function(e){return Y({root:{},container:{boxSizing:"border-box",display:"flex",flexWrap:"wrap",width:"100%"},item:{boxSizing:"border-box",margin:"0"},zeroMinWidth:{minWidth:0},"direction-xs-column":{flexDirection:"column"},"direction-xs-column-reverse":{flexDirection:"column-reverse"},"direction-xs-row-reverse":{flexDirection:"row-reverse"},"wrap-xs-nowrap":{flexWrap:"nowrap"},"wrap-xs-wrap-reverse":{flexWrap:"wrap-reverse"},"align-items-xs-center":{alignItems:"center"},"align-items-xs-flex-start":{alignItems:"flex-start"},"align-items-xs-flex-end":{alignItems:"flex-end"},"align-items-xs-baseline":{alignItems:"baseline"},"align-content-xs-center":{alignContent:"center"},"align-content-xs-flex-start":{alignContent:"flex-start"},"align-content-xs-flex-end":{alignContent:"flex-end"},"align-content-xs-space-between":{alignContent:"space-between"},"align-content-xs-space-around":{alignContent:"space-around"},"justify-content-xs-center":{justifyContent:"center"},"justify-content-xs-flex-end":{justifyContent:"flex-end"},"justify-content-xs-space-between":{justifyContent:"space-between"},"justify-content-xs-space-around":{justifyContent:"space-around"},"justify-content-xs-space-evenly":{justifyContent:"space-evenly"}},DL(e,"xs"),e.breakpoints.keys.reduce(function(n,r){return OL(n,e,r),n},{}))},QL=b.forwardRef(function(e,n){var r=e.alignContent,i=r===void 0?"stretch":r,s=e.alignItems,o=s===void 0?"stretch":s,a=e.classes,l=e.className,c=e.component,u=c===void 0?"div":c,f=e.container,h=f===void 0?!1:f,d=e.direction,A=d===void 0?"row":d,p=e.item,g=p===void 0?!1:p,m=e.justify,v=e.justifyContent,E=v===void 0?"flex-start":v,_=e.lg,I=_===void 0?!1:_,C=e.md,R=C===void 0?!1:C,P=e.sm,B=P===void 0?!1:P,N=e.spacing,V=N===void 0?0:N,G=e.wrap,z=G===void 0?"wrap":G,K=e.xl,J=K===void 0?!1:K,ae=e.xs,pe=ae===void 0?!1:ae,re=e.zeroMinWidth,fe=re===void 0?!1:re,L=Be(e,["alignContent","alignItems","classes","className","component","container","direction","item","justify","justifyContent","lg","md","sm","spacing","wrap","xl","xs","zeroMinWidth"]),S=Te(a.root,l,h&&[a.container,V!==0&&a["spacing-xs-".concat(String(V))]],g&&a.item,fe&&a.zeroMinWidth,A!=="row"&&a["direction-xs-".concat(String(A))],z!=="wrap"&&a["wrap-xs-".concat(String(z))],o!=="stretch"&&a["align-items-xs-".concat(String(o))],i!=="stretch"&&a["align-content-xs-".concat(String(i))],(m||E)!=="flex-start"&&a["justify-content-xs-".concat(String(m||E))],pe!==!1&&a["grid-xs-".concat(String(pe))],B!==!1&&a["grid-sm-".concat(String(B))],R!==!1&&a["grid-md-".concat(String(R))],I!==!1&&a["grid-lg-".concat(String(I))],J!==!1&&a["grid-xl-".concat(String(J))]);return b.createElement(u,Y({className:S,ref:n},L))}),FL=yt(kL,{name:"MuiGrid"})(QL);const qe=FL;function pp(t){return"scale(".concat(t,", ").concat(Math.pow(t,2),")")}var UL={entering:{opacity:1,transform:pp(1)},entered:{opacity:1,transform:"none"}},l2=b.forwardRef(function(e,n){var r=e.children,i=e.disableStrictModeCompat,s=i===void 0?!1:i,o=e.in,a=e.onEnter,l=e.onEntered,c=e.onEntering,u=e.onExit,f=e.onExited,h=e.onExiting,d=e.style,A=e.timeout,p=A===void 0?"auto":A,g=e.TransitionComponent,m=g===void 0?t2:g,v=Be(e,["children","disableStrictModeCompat","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"]),E=b.useRef(),_=b.useRef(),I=Im(),C=I.unstable_strictMode&&!s,R=b.useRef(null),P=Yt(r.ref,n),B=Yt(C?R:void 0,P),N=function(fe){return function(L,S){if(fe){var M=C?[R.current,L]:[L,S],D=Vh(M,2),k=D[0],U=D[1];U===void 0?fe(k):fe(k,U)}}},V=N(c),G=N(function(re,fe){RM(re);var L=jf({style:d,timeout:p},{mode:"enter"}),S=L.duration,M=L.delay,D;p==="auto"?(D=I.transitions.getAutoHeightDuration(re.clientHeight),_.current=D):D=S,re.style.transition=[I.transitions.create("opacity",{duration:D,delay:M}),I.transitions.create("transform",{duration:D*.666,delay:M})].join(","),a&&a(re,fe)}),z=N(l),K=N(h),J=N(function(re){var fe=jf({style:d,timeout:p},{mode:"exit"}),L=fe.duration,S=fe.delay,M;p==="auto"?(M=I.transitions.getAutoHeightDuration(re.clientHeight),_.current=M):M=L,re.style.transition=[I.transitions.create("opacity",{duration:M,delay:S}),I.transitions.create("transform",{duration:M*.666,delay:S||M*.333})].join(","),re.style.opacity="0",re.style.transform=pp(.75),u&&u(re)}),ae=N(f),pe=function(fe,L){var S=C?fe:L;p==="auto"&&(E.current=setTimeout(S,_.current||0))};return b.useEffect(function(){return function(){clearTimeout(E.current)}},[]),b.createElement(m,Y({appear:!0,in:o,nodeRef:C?R:void 0,onEnter:G,onEntered:z,onEntering:V,onExit:J,onExited:ae,onExiting:K,addEndListener:pe,timeout:p==="auto"?null:p},v),function(re,fe){return b.cloneElement(r,Y({style:Y({opacity:0,transform:pp(.75),visibility:re==="exited"&&!o?"hidden":void 0},UL[re],d,r.props.style),ref:B},fe))})});l2.muiSupportAuto=!0;const GL=l2;var zL=function(e){var n=e.palette.type==="light",r=n?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)";return{root:{position:"relative"},formControl:{"label + &":{marginTop:16}},focused:{},disabled:{},colorSecondary:{"&$underline:after":{borderBottomColor:e.palette.secondary.main}},underline:{"&:after":{borderBottom:"2px solid ".concat(e.palette.primary.main),left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:e.transitions.create("transform",{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut}),pointerEvents:"none"},"&$focused:after":{transform:"scaleX(1)"},"&$error:after":{borderBottomColor:e.palette.error.main,transform:"scaleX(1)"},"&:before":{borderBottom:"1px solid ".concat(r),left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:e.transitions.create("border-bottom-color",{duration:e.transitions.duration.shorter}),pointerEvents:"none"},"&:hover:not($disabled):before":{borderBottom:"2px solid ".concat(e.palette.text.primary),"@media (hover: none)":{borderBottom:"1px solid ".concat(r)}},"&$disabled:before":{borderBottomStyle:"dotted"}},error:{},marginDense:{},multiline:{},fullWidth:{},input:{},inputMarginDense:{},inputMultiline:{},inputTypeSearch:{}}},c2=b.forwardRef(function(e,n){var r=e.disableUnderline,i=e.classes,s=e.fullWidth,o=s===void 0?!1:s,a=e.inputComponent,l=a===void 0?"input":a,c=e.multiline,u=c===void 0?!1:c,f=e.type,h=f===void 0?"text":f,d=Be(e,["disableUnderline","classes","fullWidth","inputComponent","multiline","type"]);return b.createElement(ML,Y({classes:Y({},i,{root:Te(i.root,!r&&i.underline),underline:null}),fullWidth:o,inputComponent:l,multiline:u,ref:n,type:h},d))});c2.muiName="Input";const Sm=yt(zL,{name:"MuiInput"})(c2);function XE(t,e){var n=0;return typeof e=="number"?n=e:e==="center"?n=t.height/2:e==="bottom"&&(n=t.height),n}function JE(t,e){var n=0;return typeof e=="number"?n=e:e==="center"?n=t.width/2:e==="right"&&(n=t.width),n}function ZE(t){return[t.horizontal,t.vertical].map(function(e){return typeof e=="number"?"".concat(e,"px"):e}).join(" ")}function VL(t,e){for(var n=e,r=0;n&&n!==t;)n=n.parentElement,r+=n.scrollTop;return r}function vA(t){return typeof t=="function"?t():t}var jL={root:{},paper:{position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}},HL=b.forwardRef(function(e,n){var r=e.action,i=e.anchorEl,s=e.anchorOrigin,o=s===void 0?{vertical:"top",horizontal:"left"}:s,a=e.anchorPosition,l=e.anchorReference,c=l===void 0?"anchorEl":l,u=e.children,f=e.classes,h=e.className,d=e.container,A=e.elevation,p=A===void 0?8:A,g=e.getContentAnchorEl,m=e.marginThreshold,v=m===void 0?16:m,E=e.onEnter,_=e.onEntered,I=e.onEntering,C=e.onExit,R=e.onExited,P=e.onExiting,B=e.open,N=e.PaperProps,V=N===void 0?{}:N,G=e.transformOrigin,z=G===void 0?{vertical:"top",horizontal:"left"}:G,K=e.TransitionComponent,J=K===void 0?GL:K,ae=e.transitionDuration,pe=ae===void 0?"auto":ae,re=e.TransitionProps,fe=re===void 0?{}:re,L=Be(e,["action","anchorEl","anchorOrigin","anchorPosition","anchorReference","children","classes","className","container","elevation","getContentAnchorEl","marginThreshold","onEnter","onEntered","onEntering","onExit","onExited","onExiting","open","PaperProps","transformOrigin","TransitionComponent","transitionDuration","TransitionProps"]),S=b.useRef(),M=b.useCallback(function(le){if(c==="anchorPosition")return a;var ve=vA(i),_e=ve&&ve.nodeType===1?ve:Gn(S.current).body,ye=_e.getBoundingClientRect(),lt=le===0?o.vertical:"center";return{top:ye.top+XE(ye,lt),left:ye.left+JE(ye,o.horizontal)}},[i,o.horizontal,o.vertical,a,c]),D=b.useCallback(function(le){var ve=0;if(g&&c==="anchorEl"){var _e=g(le);if(_e&&le.contains(_e)){var ye=VL(le,_e);ve=_e.offsetTop+_e.clientHeight/2-ye||0}}return ve},[o.vertical,c,g]),k=b.useCallback(function(le){var ve=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return{vertical:XE(le,z.vertical)+ve,horizontal:JE(le,z.horizontal)}},[z.horizontal,z.vertical]),U=b.useCallback(function(le){var ve=D(le),_e={width:le.offsetWidth,height:le.offsetHeight},ye=k(_e,ve);if(c==="none")return{top:null,left:null,transformOrigin:ZE(ye)};var lt=M(ve),ce=lt.top-ye.vertical,we=lt.left-ye.horizontal,Bt=ce+_e.height,et=we+_e.width,tt=Jw(vA(i)),Re=tt.innerHeight-v,Ie=tt.innerWidth-v;if(ceRe){var Ye=Bt-Re;ce-=Ye,ye.vertical+=Ye}if(weIe){var Rt=et-Ie;we-=Rt,ye.horizontal+=Rt}return{top:"".concat(Math.round(ce),"px"),left:"".concat(Math.round(we),"px"),transformOrigin:ZE(ye)}},[i,c,M,D,k,v]),F=b.useCallback(function(){var le=S.current;if(le){var ve=U(le);ve.top!==null&&(le.style.top=ve.top),ve.left!==null&&(le.style.left=ve.left),le.style.transformOrigin=ve.transformOrigin}},[U]),j=function(ve,_e){I&&I(ve,_e),F()},se=b.useCallback(function(le){S.current=Fi.findDOMNode(le)},[]);b.useEffect(function(){B&&F()}),b.useImperativeHandle(r,function(){return B?{updatePosition:function(){F()}}:null},[B,F]),b.useEffect(function(){if(B){var le=Xw(function(){F()});return window.addEventListener("resize",le),function(){le.clear(),window.removeEventListener("resize",le)}}},[B,F]);var te=pe;pe==="auto"&&!J.muiSupportAuto&&(te=void 0);var de=d||(i?Gn(vA(i)).body:void 0);return b.createElement(_L,Y({container:de,open:B,ref:n,BackdropProps:{invisible:!0},className:Te(f.root,h)},L),b.createElement(J,Y({appear:!0,in:B,onEnter:E,onEntered:_,onExit:C,onExited:R,onExiting:P,timeout:te},fe,{onEntering:hp(j,fe.onEntering)}),b.createElement(pc,Y({elevation:p,ref:se},V,{className:Te(f.paper,V.className)}),u)))});const Tm=yt(jL,{name:"MuiPopover"})(HL);var WL=b.forwardRef(function(e,n){var r=e.classes,i=e.className,s=e.disabled,o=e.IconComponent,a=e.inputRef,l=e.variant,c=l===void 0?"standard":l,u=Be(e,["classes","className","disabled","IconComponent","inputRef","variant"]);return b.createElement(b.Fragment,null,b.createElement("select",Y({className:Te(r.root,r.select,r[c],i,s&&r.disabled),disabled:s,ref:a||n},u)),e.multiple?null:b.createElement(o,{className:Te(r.icon,r["icon".concat(Wn(c))],s&&r.disabled)}))});const YL=WL,$L=Vr(b.createElement("path",{d:"M7 10l5 5 5-5z"}));var KL=function(e){return{root:{},select:{"-moz-appearance":"none","-webkit-appearance":"none",userSelect:"none",borderRadius:0,minWidth:16,cursor:"pointer","&:focus":{backgroundColor:e.palette.type==="light"?"rgba(0, 0, 0, 0.05)":"rgba(255, 255, 255, 0.05)",borderRadius:0},"&::-ms-expand":{display:"none"},"&$disabled":{cursor:"default"},"&[multiple]":{height:"auto"},"&:not([multiple]) option, &:not([multiple]) optgroup":{backgroundColor:e.palette.background.paper},"&&":{paddingRight:24}},filled:{"&&":{paddingRight:32}},outlined:{borderRadius:e.shape.borderRadius,"&&":{paddingRight:32}},selectMenu:{height:"auto",minHeight:"1.1876em",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},disabled:{},icon:{position:"absolute",right:0,top:"calc(50% - 12px)",pointerEvents:"none",color:e.palette.action.active,"&$disabled":{color:e.palette.action.disabled}},iconOpen:{transform:"rotate(180deg)"},iconFilled:{right:7},iconOutlined:{right:7},nativeInput:{bottom:0,left:0,position:"absolute",opacity:0,pointerEvents:"none",width:"100%"}}},qL=b.createElement(Sm,null),u2=b.forwardRef(function(e,n){var r=e.children,i=e.classes,s=e.IconComponent,o=s===void 0?$L:s,a=e.input,l=a===void 0?qL:a,c=e.inputProps;e.variant;var u=Be(e,["children","classes","IconComponent","input","inputProps","variant"]),f=iL(),h=a2({props:e,muiFormControl:f,states:["variant"]});return b.cloneElement(l,Y({inputComponent:YL,inputProps:Y({children:r,classes:i,IconComponent:o,variant:h.variant,type:void 0},c,l?l.props.inputProps:{}),ref:n},u))});u2.muiName="Select";const Bm=yt(KL,{name:"MuiNativeSelect"})(u2);var XL=function(e){return{thumb:{"&$open":{"& $offset":{transform:"scale(1) translateY(-10px)"}}},open:{},offset:Y({zIndex:1},e.typography.body2,{fontSize:e.typography.pxToRem(12),lineHeight:1.2,transition:e.transitions.create(["transform"],{duration:e.transitions.duration.shortest}),top:-34,transformOrigin:"bottom center",transform:"scale(0)",position:"absolute"}),circle:{display:"flex",alignItems:"center",justifyContent:"center",width:32,height:32,borderRadius:"50% 50% 50% 0",backgroundColor:"currentColor",transform:"rotate(-45deg)"},label:{color:e.palette.primary.contrastText,transform:"rotate(45deg)"}}};function JL(t){var e=t.children,n=t.classes,r=t.className,i=t.open,s=t.value,o=t.valueLabelDisplay;return o==="off"?e:b.cloneElement(e,{className:Te(e.props.className,(i||o==="on")&&n.open,n.thumb)},b.createElement("span",{className:Te(n.offset,r)},b.createElement("span",{className:n.circle},b.createElement("span",{className:n.label},s))))}const ZL=yt(XL,{name:"PrivateValueLabel"})(JL);function yA(t,e){return t-e}function EA(t,e,n){return Math.min(Math.max(e,t),n)}function e1(t,e){var n=t.reduce(function(i,s,o){var a=Math.abs(e-s);return i===null||a0&&De.some(function(oe){return oe.label})&&o.marked,L===!1&&o.trackFalse,G==="vertical"&&o.vertical,L==="inverted"&&o.trackInverted),onMouseDown:gd},se),b.createElement("span",{className:o.rail}),b.createElement("span",{className:o.track,style:md}),b.createElement("input",{value:Ie.join(","),name:R,type:"hidden"}),De.map(function(oe,ue){var $e=su(oe.value,C,_),Je=au[mn].offset($e),Me;return L===!1?Me=Ie.indexOf(oe.value)!==-1:Me=L==="normal"&&(Re?oe.value>=Ie[0]&&oe.value<=Ie[Ie.length-1]:oe.value<=Ie[0])||L==="inverted"&&(Re?oe.value<=Ie[0]||oe.value>=Ie[Ie.length-1]:oe.value>=Ie[0]),b.createElement(b.Fragment,{key:oe.value},b.createElement("span",{style:Je,"data-index":ue,className:Te(o.mark,Me&&o.markActive)}),oe.label!=null?b.createElement("span",{"aria-hidden":!0,"data-index":ue,style:Je,className:Te(o.markLabel,Me&&o.markLabelActive)},oe.label):null)}),Ie.map(function(oe,ue){var $e=su(oe,C,_),Je=au[mn].offset($e);return b.createElement(D,{key:ue,valueLabelFormat:j,valueLabelDisplay:U,className:o.valueLabel,value:typeof j=="function"?j(K(oe),ue):j,index:ue,open:lt===ue||ve===ue||U==="on",disabled:A},b.createElement(re,{className:Te(o.thumb,o["thumbColor".concat(Wn(c))],ve===ue&&o.active,A&&o.disabled,Se===ue&&o.focusVisible),tabIndex:A?null:0,role:"slider",style:Je,"data-index":ue,"aria-label":p?p(ue):r,"aria-labelledby":i,"aria-orientation":G,"aria-valuemax":K(_),"aria-valuemin":K(C),"aria-valuenow":K(oe),"aria-valuetext":g?g(K(oe),ue):s,onKeyDown:fa,onFocus:la,onBlur:ca,onMouseOver:ua,onMouseLeave:ge}))}))});const Rm=yt(nN,{name:"MuiSlider"})(rN),f2=Vr(b.createElement("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"})),iN=Vr(b.createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2z"})),h2=Vr(b.createElement("path",{d:"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})),sN=Vr(b.createElement("path",{d:"M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"})),oN=Vr(b.createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"})),d2=Vr(b.createElement("path",{d:"M19 13H5v-2h14v2z"})),aN=Vr(b.createElement("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"})),lN=Vr(b.createElement("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}));function cN(t,e){let n=null;const r=new Map,i=s=>{let o;if(e===void 0)o=r.get(s);else for(const[l,c]of r)if(e(l,s)){o=c;break}if(o!==void 0)if(n!=null&&n(o[1],s))i.remove(s);else return o[0];const a=t(s);return r.set(s,[a,Date.now()]),a};return i.remove=s=>{if(e===void 0)r.delete(s);else for(const[o]of r)if(e(o,s)){r.delete(o);break}},i.setShouldRemove=s=>{if(n=s,!!n)for(const[o,a]of r)n(a[1],o)&&r.delete(o)},i}const uN=(t,e)=>{do{const[n,...r]=e,i=t.get(n);if(!i)return;if(!r.length)return i[1];t=i[0],e=r}while(e.length)},fN=(t,e,n)=>{do{const[r,...i]=e;let s=t.get(r);if(s||(s=[new WeakMap],t.set(r,s)),!i.length){s[1]=n;return}t=s[0],e=i}while(e.length)},A2=()=>{const t=new WeakMap;return(n,r)=>{const i=uN(t,r);if(i)return i;const s=n();return fN(t,r,s),s}},hN=A2(),i1=t=>!!t.write,dN=t=>typeof t=="function";function AN(t,e){return hN(()=>{const n=new WeakMap,r=(l,c)=>{let u=n.get(l);if(u)return u;const f=c&&n.get(c),h=[],d=[];return l.forEach((A,p)=>{const g=e?e(A):p;d[p]=g;const m=f&&f.atomList[f.keyList.indexOf(g)];if(m){h[p]=m;return}const v=_=>{const I=_(i),C=_(t),P=r(C,I.prev).keyList.indexOf(g);if(P<0||P>=C.length){const B=l[r(l).keyList.indexOf(g)];if(B)return B;throw new Error("splitAtom: index out of bounds for read")}return C[P]},E=(_,I,C)=>{const R=_(i),P=_(t),N=r(P,R.prev).keyList.indexOf(g);if(N<0||N>=P.length)throw new Error("splitAtom: index out of bounds for write");const V=dN(C)?C(P[N]):C;I(t,[...P.slice(0,N),V,...P.slice(N+1)])};h[p]=i1(t)?cn(v,E):cn(v)}),f&&f.keyList.length===d.length&&f.keyList.every((A,p)=>A===d[p])?u=f:u={atomList:h,keyList:d},n.set(l,u),u},i=cn(()=>({})),s=l=>{const c=l(i),u=l(t),f=r(u,c.prev);return c.prev=u,f.atomList},o=(l,c,u)=>{switch("read"in u&&(console.warn("atomToRemove is deprecated. use action with type"),u={type:"remove",atom:u}),u.type){case"remove":{const f=l(a).indexOf(u.atom);if(f>=0){const h=l(t);c(t,[...h.slice(0,f),...h.slice(f+1)])}break}case"insert":{const f=u.before?l(a).indexOf(u.before):l(a).length;if(f>=0){const h=l(t);c(t,[...h.slice(0,f),u.value,...h.slice(f)])}break}case"move":{const f=l(a).indexOf(u.atom),h=u.before?l(a).indexOf(u.before):l(a).length;if(f>=0&&h>=0){const d=l(t);f[]);function mN(t){const e=()=>{const n=vN(t);return cn(i=>{const s=[],o=n.map((a,l)=>{try{return i(a)}catch(c){if(c instanceof Promise)s[l]=c;else throw c}});if(s.length)throw Promise.all(s);return yN(t,o)})};return Array.isArray(t)?t.length?gN(e,t):pN:e()}const vN=t=>Array.isArray(t)?t:Object.getOwnPropertyNames(t).map(e=>t[e]),yN=(t,e)=>Array.isArray(t)?e:Object.getOwnPropertyNames(t).reduce((n,r,i)=>({...n,[r]:e[i]}),{});function Hf(t,e){if(!t)throw new Error(e||"loader assertion failed.")}const Pm=!!(typeof process!="object"||String(process)!=="[object process]"||process.browser),s1=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version);s1&&parseFloat(s1[1]);const EN="3.3.1";function kr(t,e){if(!t)throw new Error(e||"loaders.gl assertion failed.")}const Zu=typeof process!="object"||String(process)!=="[object process]"||process.browser,_N=typeof window<"u"&&typeof window.orientation<"u",o1=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version);o1&&parseFloat(o1[1]);class xN{constructor(e,n){y(this,"name",void 0),y(this,"workerThread",void 0),y(this,"isRunning",!0),y(this,"result",void 0),y(this,"_resolve",()=>{}),y(this,"_reject",()=>{}),this.name=e,this.workerThread=n,this.result=new Promise((r,i)=>{this._resolve=r,this._reject=i})}postMessage(e,n){this.workerThread.postMessage({source:"loaders.gl",type:e,payload:n})}done(e){kr(this.isRunning),this.isRunning=!1,this._resolve(e)}error(e){kr(this.isRunning),this.isRunning=!1,this._reject(e)}}let _A=class{terminate(){}};const xA=new Map;function CN(t){kr(t.source&&!t.url||!t.source&&t.url);let e=xA.get(t.source||t.url);return e||(t.url&&(e=IN(t.url),xA.set(t.url,e)),t.source&&(e=g2(t.source),xA.set(t.source,e))),kr(e),e}function IN(t){if(!t.startsWith("http"))return t;const e=wN(t);return g2(e)}function g2(t){const e=new Blob([t],{type:"application/javascript"});return URL.createObjectURL(e)}function wN(t){return`try { + importScripts('`.concat(t,`'); +} catch (error) { + console.error(error); + throw error; +}`)}function p2(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,n=arguments.length>2?arguments[2]:void 0;const r=n||new Set;if(t){if(a1(t))r.add(t);else if(a1(t.buffer))r.add(t.buffer);else if(!ArrayBuffer.isView(t)){if(e&&typeof t=="object")for(const i in t)p2(t[i],e,r)}}return n===void 0?Array.from(r):[]}function a1(t){return t?t instanceof ArrayBuffer||typeof MessagePort<"u"&&t instanceof MessagePort||typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas:!1}const CA=()=>{};class mp{static isSupported(){return typeof Worker<"u"&&Zu||typeof _A<"u"&&!Zu}constructor(e){y(this,"name",void 0),y(this,"source",void 0),y(this,"url",void 0),y(this,"terminated",!1),y(this,"worker",void 0),y(this,"onMessage",void 0),y(this,"onError",void 0),y(this,"_loadableURL","");const{name:n,source:r,url:i}=e;kr(r||i),this.name=n,this.source=r,this.url=i,this.onMessage=CA,this.onError=s=>console.log(s),this.worker=Zu?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=CA,this.onError=CA,this.worker.terminate(),this.terminated=!0}get isRunning(){return!!this.onMessage}postMessage(e,n){n=n||p2(e),this.worker.postMessage(e,n)}_getErrorFromErrorEvent(e){let n="Failed to load ";return n+="worker ".concat(this.name," from ").concat(this.url,". "),e.message&&(n+="".concat(e.message," in ")),e.lineno&&(n+=":".concat(e.lineno,":").concat(e.colno)),new Error(n)}_createBrowserWorker(){this._loadableURL=CN({source:this.source,url:this.url});const e=new Worker(this._loadableURL,{name:this.name});return e.onmessage=n=>{n.data?this.onMessage(n.data):this.onError(new Error("No data received"))},e.onerror=n=>{this.onError(this._getErrorFromErrorEvent(n)),this.terminated=!0},e.onmessageerror=n=>console.error(n),e}_createNodeWorker(){let e;if(this.url){const r=this.url.includes(":/")||this.url.startsWith("/")?this.url:"./".concat(this.url);e=new _A(r,{eval:!1})}else if(this.source)e=new _A(this.source,{eval:!0});else throw new Error("no worker");return e.on("message",n=>{this.onMessage(n)}),e.on("error",n=>{this.onError(n)}),e.on("exit",n=>{}),e}}class bN{static isSupported(){return mp.isSupported()}constructor(e){y(this,"name","unnamed"),y(this,"source",void 0),y(this,"url",void 0),y(this,"maxConcurrency",1),y(this,"maxMobileConcurrency",1),y(this,"onDebug",()=>{}),y(this,"reuseWorkers",!0),y(this,"props",{}),y(this,"jobQueue",[]),y(this,"idleQueue",[]),y(this,"count",0),y(this,"isDestroyed",!1),this.source=e.source,this.url=e.url,this.setProps(e)}destroy(){this.idleQueue.forEach(e=>e.destroy()),this.isDestroyed=!0}setProps(e){this.props={...this.props,...e},e.name!==void 0&&(this.name=e.name),e.maxConcurrency!==void 0&&(this.maxConcurrency=e.maxConcurrency),e.maxMobileConcurrency!==void 0&&(this.maxMobileConcurrency=e.maxMobileConcurrency),e.reuseWorkers!==void 0&&(this.reuseWorkers=e.reuseWorkers),e.onDebug!==void 0&&(this.onDebug=e.onDebug)}async startJob(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:(s,o,a)=>s.done(a),r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:(s,o)=>s.error(o);const i=new Promise(s=>(this.jobQueue.push({name:e,onMessage:n,onError:r,onStart:s}),this));return this._startQueuedJob(),await i}async _startQueuedJob(){if(!this.jobQueue.length)return;const e=this._getAvailableWorker();if(!e)return;const n=this.jobQueue.shift();if(n){this.onDebug({message:"Starting job",name:n.name,workerThread:e,backlog:this.jobQueue.length});const r=new xN(n.name,e);e.onMessage=i=>n.onMessage(r,i.type,i.payload),e.onError=i=>n.onError(r,i),n.onStart(r);try{await r.result}finally{this.returnWorkerToQueue(e)}}}returnWorkerToQueue(e){this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(e.destroy(),this.count--):this.idleQueue.push(e),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count{}};class br{static isSupported(){return mp.isSupported()}static getWorkerFarm(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return br._workerFarm=br._workerFarm||new br({}),br._workerFarm.setProps(e),br._workerFarm}constructor(e){y(this,"props",void 0),y(this,"workerPools",new Map),this.props={...SN},this.setProps(e),this.workerPools=new Map}destroy(){for(const e of this.workerPools.values())e.destroy();this.workerPools=new Map}setProps(e){this.props={...this.props,...e};for(const n of this.workerPools.values())n.setProps(this._getWorkerPoolProps())}getWorkerPool(e){const{name:n,source:r,url:i}=e;let s=this.workerPools.get(n);return s||(s=new bN({name:n,source:r,url:i}),s.setProps(this._getWorkerPoolProps()),this.workerPools.set(n,s)),s}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}}y(br,"_workerFarm",void 0);const TN="latest";function BN(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const n=e[t.id]||{},r="".concat(t.id,"-worker.js");let i=n.workerUrl;if(!i&&t.id==="compression"&&(i=e.workerUrl),e._workerType==="test"&&(i="modules/".concat(t.module,"/dist/").concat(r)),!i){let s=t.version;s==="latest"&&(s=TN);const o=s?"@".concat(s):"";i="https://unpkg.com/@loaders.gl/".concat(t.module).concat(o,"/dist/").concat(r)}return kr(i),i}function RN(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:EN;kr(t,"no worker provided");const n=t.version;return!(!e||!n)}const l1={};function PN(t,e){return!br.isSupported()||!Zu&&!(e!=null&&e._nodeWorkers)?!1:t.worker&&(e==null?void 0:e.worker)}async function MN(t,e,n,r,i){const s=t.id,o=BN(t,n),l=br.getWorkerFarm(n).getWorkerPool({name:s,url:o});n=JSON.parse(JSON.stringify(n)),r=JSON.parse(JSON.stringify(r||{}));const c=await l.startJob("process-on-worker",LN.bind(null,i));return c.postMessage("process",{input:e,options:n,context:r}),await(await c.result).result}async function LN(t,e,n,r){switch(n){case"done":e.done(r);break;case"error":e.error(new Error(r.error));break;case"process":const{id:i,input:s,options:o}=r;try{const a=await t(s,o);e.postMessage("done",{id:i,result:a})}catch(a){const l=a instanceof Error?a.message:"unknown error";e.postMessage("error",{id:i,error:l})}break;default:console.warn("parse-with-worker unknown message ".concat(n))}}function NN(t,e,n){if(n=n||t.byteLength,t.byteLengtha instanceof ArrayBuffer?new Uint8Array(a):a),i=r.reduce((a,l)=>a+l.byteLength,0),s=new Uint8Array(i);let o=0;for(const a of r)s.set(a,o),o+=a.byteLength;return s.buffer}async function DN(t){const e=[];for await(const n of t)e.push(n);return ON(...e)}function c1(){let t;if(typeof window<"u"&&window.performance)t=window.performance.now();else if(typeof process<"u"&&process.hrtime){const e=process.hrtime();t=e[0]*1e3+e[1]/1e6}else t=Date.now();return t}class u1{constructor(e,n){y(this,"name",void 0),y(this,"type",void 0),y(this,"sampleSize",1),y(this,"time",void 0),y(this,"count",void 0),y(this,"samples",void 0),y(this,"lastTiming",void 0),y(this,"lastSampleTime",void 0),y(this,"lastSampleCount",void 0),y(this,"_count",0),y(this,"_time",0),y(this,"_samples",0),y(this,"_startTime",0),y(this,"_timerPending",!1),this.name=e,this.type=n,this.reset()}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=c1(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(c1()-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}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}_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)}}class Hh{constructor(e){y(this,"id",void 0),y(this,"stats",{}),this.id=e.id,this.stats={},this._initializeStats(e.stats),Object.seal(this)}get(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"count";return this._getOrCreate({name:e,type:n})}get size(){return Object.keys(this.stats).length}reset(){for(const e in this.stats)this.stats[e].reset();return this}forEach(e){for(const n in this.stats)e(this.stats[n])}getTable(){const e={};return this.forEach(n=>{e[n.name]={time:n.time||0,count:n.count||0,average:n.getAverageTime()||0,hz:n.getHz()||0}}),e}_initializeStats(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).forEach(n=>this._getOrCreate(n))}_getOrCreate(e){if(!e||!e.name)return null;const{name:n,type:r}=e;return this.stats[n]||(e instanceof u1?this.stats[n]=e:this.stats[n]=new u1(n,r)),this.stats[n]}}const kN="Queued Requests",QN="Active Requests",FN="Cancelled Requests",UN="Queued Requests Ever",GN="Active Requests Ever",zN={id:"request-scheduler",throttleRequests:!0,maxRequests:6};class VN{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};y(this,"props",void 0),y(this,"stats",void 0),y(this,"activeRequestCount",0),y(this,"requestQueue",[]),y(this,"requestMap",new Map),y(this,"deferredUpdate",null),this.props={...zN,...e},this.stats=new Hh({id:this.props.id}),this.stats.get(kN),this.stats.get(QN),this.stats.get(FN),this.stats.get(UN),this.stats.get(GN)}scheduleRequest(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:()=>0;if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(e))return this.requestMap.get(e);const r={handle:e,priority:0,getPriority:n},i=new Promise(s=>(r.resolve=s,r));return this.requestQueue.push(r),this.requestMap.set(e,i),this._issueNewRequests(),i}_issueRequest(e){const{handle:n,resolve:r}=e;let i=!1;const s=()=>{i||(i=!0,this.requestMap.delete(n),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,r?r({done:s}):Promise.resolve({done:s})}_issueNewRequests(){this.deferredUpdate||(this.deferredUpdate=setTimeout(()=>this._issueNewRequestsAsync(),0))}_issueNewRequestsAsync(){this.deferredUpdate=null;const e=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(e!==0){this._updateAllRequests();for(let n=0;nn.priority-r.priority)}_updateRequest(e){return e.priority=e.getPriority(e.handle),e.priority<0?(e.resolve(null),!1):!0}}let jN="";const f1={};function HN(t){for(const e in f1)if(t.startsWith(e)){const n=f1[e];t=t.replace(e,n)}return!t.startsWith("http://")&&!t.startsWith("https://")&&(t="".concat(jN).concat(t)),t}function WN(t){return t&&typeof t=="object"&&t.isBuffer}function m2(t){if(WN(t))return(void 0)(t);if(t instanceof ArrayBuffer)return t;if(ArrayBuffer.isView(t))return t.byteOffset===0&&t.byteLength===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength);if(typeof t=="string"){const e=t;return new TextEncoder().encode(e).buffer}if(t&&typeof t=="object"&&t._toArrayBuffer)return t._toArrayBuffer();throw new Error("toArrayBuffer")}function YN(t){const e=t&&t.lastIndexOf("/");return e>=0?t.substr(e+1):""}const $N=t=>typeof t=="boolean",hl=t=>typeof t=="function",mc=t=>t!==null&&typeof t=="object",h1=t=>mc(t)&&t.constructor==={}.constructor,KN=t=>t&&typeof t[Symbol.iterator]=="function",qN=t=>t&&typeof t[Symbol.asyncIterator]=="function",Xo=t=>typeof Response<"u"&&t instanceof Response||t&&t.arrayBuffer&&t.text&&t.json,Jo=t=>typeof Blob<"u"&&t instanceof Blob,XN=t=>t&&typeof t=="object"&&t.isBuffer,JN=t=>typeof ReadableStream<"u"&&t instanceof ReadableStream||mc(t)&&hl(t.tee)&&hl(t.cancel)&&hl(t.getReader),ZN=t=>mc(t)&&hl(t.read)&&hl(t.pipe)&&$N(t.readable),v2=t=>JN(t)||ZN(t),e5=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,t5=/^([-\w.]+\/[-\w.+]+)/;function n5(t){const e=t5.exec(t);return e?e[1]:t}function d1(t){const e=e5.exec(t);return e?e[1]:""}const r5=/\?.*/;function Wh(t){if(Xo(t)){const e=IA(t.url||""),n=t.headers.get("content-type")||"";return{url:e,type:n5(n)||d1(e)}}return Jo(t)?{url:IA(t.name||""),type:t.type||""}:typeof t=="string"?{url:IA(t),type:d1(t)}:{url:"",type:""}}function i5(t){return Xo(t)?t.headers["content-length"]||-1:Jo(t)?t.size:typeof t=="string"?t.length:t instanceof ArrayBuffer||ArrayBuffer.isView(t)?t.byteLength:-1}function IA(t){return t.replace(r5,"")}async function y2(t){if(Xo(t))return t;const e={},n=i5(t);n>=0&&(e["content-length"]=String(n));const{url:r,type:i}=Wh(t);i&&(e["content-type"]=i);const s=await a5(t);s&&(e["x-first-bytes"]=s),typeof t=="string"&&(t=new TextEncoder().encode(t));const o=new Response(t,{headers:e});return Object.defineProperty(o,"url",{value:r}),o}async function s5(t){if(!t.ok){const e=await o5(t);throw new Error(e)}}async function o5(t){let e="Failed to fetch resource ".concat(t.url," (").concat(t.status,"): ");try{const n=t.headers.get("Content-Type");let r=t.statusText;n.includes("application/json")&&(r+=" ".concat(await t.text())),e+=r,e=e.length>60?"".concat(e.slice(0,60),"..."):e}catch{}return e}async function a5(t){if(typeof t=="string")return"data:,".concat(t.slice(0,5));if(t instanceof Blob){const n=t.slice(0,5);return await new Promise(r=>{const i=new FileReader;i.onload=s=>{var o;return r(s==null||(o=s.target)===null||o===void 0?void 0:o.result)},i.readAsDataURL(n)})}if(t instanceof ArrayBuffer){const n=t.slice(0,5),r=l5(n);return"data:base64,".concat(r)}return null}function l5(t){let e="";const n=new Uint8Array(t);for(let r=0;r=0)}function Hr(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process.browser)||E2()}const ef={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document,process:typeof process=="object"&&process},lu=ef.window||ef.self||ef.global,Ra=ef.process||{},_2=typeof __VERSION__<"u"?__VERSION__:"untranspiled source";Hr();const wA=globalThis;function x2(t){if(!t&&!Hr())return"Node";if(E2(t))return"Electron";const n=t||(typeof navigator<"u"?navigator:{}).userAgent||"";if(n.indexOf("Edge")>-1)return"Edge";const r=n.indexOf("MSIE ")!==-1,i=n.indexOf("Trident/")!==-1;return r||i?"IE":wA.chrome?"Chrome":wA.safari?"Safari":wA.mozInnerScreenX?"Firefox":"Unknown"}function c5(t){try{const e=window[t],n="__storage_test__";return e.setItem(n,n),e.removeItem(n),e}catch{return null}}class u5{constructor(e,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"sessionStorage";y(this,"storage",void 0),y(this,"id",void 0),y(this,"config",void 0),this.storage=c5(r),this.id=e,this.config=n,this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(e){if(Object.assign(this.config,e),this.storage){const n=JSON.stringify(this.config);this.storage.setItem(this.id,n)}}_loadConfiguration(){let e={};if(this.storage){const n=this.storage.getItem(this.id);e=n?JSON.parse(n):{}}return Object.assign(this.config,e),this}}function f5(t){let e;return t<10?e="".concat(t.toFixed(2),"ms"):t<100?e="".concat(t.toFixed(1),"ms"):t<1e3?e="".concat(t.toFixed(0),"ms"):e="".concat((t/1e3).toFixed(2),"s"),e}function h5(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:8;const n=Math.max(e-t.length,0);return"".concat(" ".repeat(n)).concat(t)}function bA(t,e,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:600;const i=t.src.replace(/\(/g,"%28").replace(/\)/g,"%29");t.width>r&&(n=Math.min(n,r/t.width));const s=t.width*n,o=t.height*n,a=["font-size:1px;","padding:".concat(Math.floor(o/2),"px ").concat(Math.floor(s/2),"px;"),"line-height:".concat(o,"px;"),"background:url(".concat(i,");"),"background-size:".concat(s,"px ").concat(o,"px;"),"color:transparent;"].join("");return["".concat(e," %c+"),a]}let Wf;(function(t){t[t.BLACK=30]="BLACK",t[t.RED=31]="RED",t[t.GREEN=32]="GREEN",t[t.YELLOW=33]="YELLOW",t[t.BLUE=34]="BLUE",t[t.MAGENTA=35]="MAGENTA",t[t.CYAN=36]="CYAN",t[t.WHITE=37]="WHITE",t[t.BRIGHT_BLACK=90]="BRIGHT_BLACK",t[t.BRIGHT_RED=91]="BRIGHT_RED",t[t.BRIGHT_GREEN=92]="BRIGHT_GREEN",t[t.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",t[t.BRIGHT_BLUE=94]="BRIGHT_BLUE",t[t.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",t[t.BRIGHT_CYAN=96]="BRIGHT_CYAN",t[t.BRIGHT_WHITE=97]="BRIGHT_WHITE"})(Wf||(Wf={}));function g1(t){return typeof t=="string"?Wf[t.toUpperCase()]||Wf.WHITE:t}function d5(t,e,n){return!Hr&&typeof t=="string"&&(e&&(e=g1(e),t="\x1B[".concat(e,"m").concat(t,"\x1B[39m")),n&&(e=g1(n),t="\x1B[".concat(n+10,"m").concat(t,"\x1B[49m"))),t}function A5(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:["constructor"];const n=Object.getPrototypeOf(t),r=Object.getOwnPropertyNames(n);for(const i of r)typeof t[i]=="function"&&(e.find(s=>i===s)||(t[i]=t[i].bind(t)))}function Yf(t,e){if(!t)throw new Error(e||"Assertion failed")}function Hs(){let t;if(Hr&&"performance"in lu){var e,n;t=lu==null||(e=lu.performance)===null||e===void 0||(n=e.now)===null||n===void 0?void 0:n.call(e)}else if("hrtime"in Ra){var r;const i=Ra==null||(r=Ra.hrtime)===null||r===void 0?void 0:r.call(Ra);t=i[0]*1e3+i[1]/1e6}else t=Date.now();return t}const Ws={debug:Hr&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},g5={enabled:!0,level:0};function yn(){}const p1={},m1={once:!0};class vc{constructor(){let{id:e}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{id:""};y(this,"id",void 0),y(this,"VERSION",_2),y(this,"_startTs",Hs()),y(this,"_deltaTs",Hs()),y(this,"_storage",void 0),y(this,"userData",{}),y(this,"LOG_THROTTLE_TIMEOUT",0),this.id=e,this.userData={},this._storage=new u5("__probe-".concat(this.id,"__"),g5),this.timeStamp("".concat(this.id," started")),A5(this),Object.seal(this)}set level(e){this.setLevel(e)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((Hs()-this._startTs).toPrecision(10))}getDelta(){return Number((Hs()-this._deltaTs).toPrecision(10))}set priority(e){this.level=e}get priority(){return this.level}getPriority(){return this.level}enable(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return this._storage.setConfiguration({enabled:e}),this}setLevel(e){return this._storage.setConfiguration({level:e}),this}get(e){return this._storage.config[e]}set(e,n){this._storage.setConfiguration({[e]:n})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(e,n){Yf(e,n)}warn(e){return this._getLogFunction(0,e,Ws.warn,arguments,m1)}error(e){return this._getLogFunction(0,e,Ws.error,arguments)}deprecated(e,n){return this.warn("`".concat(e,"` is deprecated and will be removed in a later version. Use `").concat(n,"` instead"))}removed(e,n){return this.error("`".concat(e,"` has been removed. Use `").concat(n,"` instead"))}probe(e,n){return this._getLogFunction(e,n,Ws.log,arguments,{time:!0,once:!0})}log(e,n){return this._getLogFunction(e,n,Ws.debug,arguments)}info(e,n){return this._getLogFunction(e,n,console.info,arguments)}once(e,n){for(var r=arguments.length,i=new Array(r>2?r-2:0),s=2;s2&&arguments[2]!==void 0?arguments[2]:{collapsed:!1};const i=v1({logLevel:e,message:n,opts:r}),{collapsed:s}=r;return i.method=(s?console.groupCollapsed:console.group)||console.info,this._getLogFunction(i)}groupCollapsed(e,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.group(e,n,Object.assign({},r,{collapsed:!0}))}groupEnd(e){return this._getLogFunction(e,"",console.groupEnd||yn)}withGroup(e,n,r){this.group(e,n)();try{r()}finally{this.groupEnd(e)()}}trace(){console.trace&&console.trace()}_shouldLog(e){return this.isEnabled()&&this.getLevel()>=C2(e)}_getLogFunction(e,n,r,i,s){if(this._shouldLog(e)){s=v1({logLevel:e,message:n,args:i,opts:s}),r=r||s.method,Yf(r),s.total=this.getTotal(),s.delta=this.getDelta(),this._deltaTs=Hs();const o=s.tag||s.message;if(s.once)if(!p1[o])p1[o]=Hs();else return yn;return n=p5(this.id,s.message,s),r.bind(console,n,...s.args)}return yn}}y(vc,"VERSION",_2);function C2(t){if(!t)return 0;let e;switch(typeof t){case"number":e=t;break;case"object":e=t.logLevel||t.priority||0;break;default:return 0}return Yf(Number.isFinite(e)&&e>=0),e}function v1(t){const{logLevel:e,message:n}=t;t.logLevel=C2(e);const r=t.args?Array.from(t.args):[];for(;r.length&&r.shift()!==n;);switch(typeof e){case"string":case"function":n!==void 0&&r.unshift(n),t.message=e;break;case"object":Object.assign(t,e);break}typeof t.message=="function"&&(t.message=t.message());const i=typeof t.message;return Yf(i==="string"||i==="object"),Object.assign(t,{args:r},t.opts)}function p5(t,e,n){if(typeof e=="string"){const r=n.time?h5(f5(n.total)):"";e=n.time?"".concat(t,": ").concat(r," ").concat(e):"".concat(t,": ").concat(e),e=d5(e,n.color,n.background)}return e}function m5(t){return console.warn("removed"),yn}function v5(t){let{image:e,message:n="",scale:r=1}=t;if(typeof e=="string"){const s=new Image;return s.onload=()=>{const o=bA(s,n,r);console.log(...o)},s.src=e,yn}const i=e.nodeName||"";if(i.toLowerCase()==="img")return console.log(...bA(e,n,r)),yn;if(i.toLowerCase()==="canvas"){const s=new Image;return s.onload=()=>console.log(...bA(s,n,r)),s.src=e.toDataURL(),yn}return yn}function y5(t){for(const e in t)for(const n in t[e])return n||"untitled";return"empty"}const y1=new vc({id:"loaders.gl"});class E5{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}}class _5{constructor(){y(this,"console",void 0),this.console=console}log(){for(var e=arguments.length,n=new Array(e),r=0;r{const t=w2();return t.globalOptions=t.globalOptions||{...I2},t.globalOptions};function C5(t,e,n,r){return n=n||[],n=Array.isArray(n)?n:[n],I5(t,n),b5(e,t,r)}function S2(t,e){const n=b2(),r=t||n;return typeof r.fetch=="function"?r.fetch:mc(r.fetch)?i=>A1(i,r):e!=null&&e.fetch?e==null?void 0:e.fetch:A1}function I5(t,e){E1(t,null,I2,x5,e);for(const n of e){const r=t&&t[n.id]||{},i=n.options&&n.options[n.id]||{},s=n.deprecatedOptions&&n.deprecatedOptions[n.id]||{};E1(r,n.id,i,s,e)}}function E1(t,e,n,r,i){const s=e||"Top level",o=e?"".concat(e,"."):"";for(const a in t){const l=!e&&mc(t[a]),c=a==="baseUri"&&!e,u=a==="workerUrl"&&e;if(!(a in n)&&!c&&!u){if(a in r)y1.warn("".concat(s," loader option '").concat(o).concat(a,"' no longer supported, use '").concat(r[a],"'"))();else if(!l){const f=w5(a,i);y1.warn("".concat(s," loader option '").concat(o).concat(a,"' not recognized. ").concat(f))()}}}}function w5(t,e){const n=t.toLowerCase();let r="";for(const i of e)for(const s in i.options){if(t===s)return"Did you mean '".concat(i.id,".").concat(s,"'?");const o=s.toLowerCase();(n.startsWith(o)||o.startsWith(n))&&(r=r||"Did you mean '".concat(i.id,".").concat(s,"'?"))}return r}function b5(t,e,n){const i={...t.options||{}};return S5(i,n),i.log===null&&(i.log=new E5),_1(i,b2()),_1(i,e),i}function _1(t,e){for(const n in e)if(n in e){const r=e[n];h1(r)&&h1(t[n])?t[n]={...t[n],...e[n]}:t[n]=e[n]}}function S5(t,e){e&&!("baseUri"in t)&&(t.baseUri=e)}function Mm(t){var e;return t?(Array.isArray(t)&&(t=t[0]),Array.isArray((e=t)===null||e===void 0?void 0:e.extensions)):!1}function Lm(t){var e,n;Hf(t,"null loader"),Hf(Mm(t),"invalid loader");let r;return Array.isArray(t)&&(r=t[1],t=t[0],t={...t,options:{...t.options,...r}}),((e=t)!==null&&e!==void 0&&e.parseTextSync||(n=t)!==null&&n!==void 0&&n.parseText)&&(t.text=!0),t.text||(t.binary=!0),t}const T2=()=>{const t=w2();return t.loaderRegistry=t.loaderRegistry||[],t.loaderRegistry};function T5(t){const e=T2();t=Array.isArray(t)?t:[t];for(const n of t){const r=Lm(n);e.find(i=>r===i)||e.unshift(r)}}function B5(){return T2()}const R5=new vc({id:"loaders.gl"}),P5=/\.([^.]+)$/;async function M5(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0;if(!B2(t))return null;let i=x1(t,e,{...n,nothrow:!0},r);if(i)return i;if(Jo(t)&&(t=await t.slice(0,10).arrayBuffer(),i=x1(t,e,n,r)),!i&&!(n!=null&&n.nothrow))throw new Error(R2(t));return i}function x1(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0;if(!B2(t))return null;if(e&&!Array.isArray(e))return Lm(e);let i=[];e&&(i=i.concat(e)),n!=null&&n.ignoreRegisteredLoaders||i.push(...B5()),N5(i);const s=L5(t,i,n,r);if(!s&&!(n!=null&&n.nothrow))throw new Error(R2(t));return s}function L5(t,e,n,r){const{url:i,type:s}=Wh(t),o=i||(r==null?void 0:r.url);let a=null,l="";if(n!=null&&n.mimeType&&(a=SA(e,n==null?void 0:n.mimeType),l="match forced by supplied MIME type ".concat(n==null?void 0:n.mimeType)),a=a||O5(e,o),l=l||(a?"matched url ".concat(o):""),a=a||SA(e,s),l=l||(a?"matched MIME type ".concat(s):""),a=a||k5(e,t),l=l||(a?"matched initial data ".concat(P2(t)):""),a=a||SA(e,n==null?void 0:n.fallbackMimeType),l=l||(a?"matched fallback MIME type ".concat(s):""),l){var c;R5.log(1,"selectLoader selected ".concat((c=a)===null||c===void 0?void 0:c.name,": ").concat(l,"."))}return a}function B2(t){return!(t instanceof Response&&t.status===204)}function R2(t){const{url:e,type:n}=Wh(t);let r="No valid loader found (";r+=e?"".concat(YN(e),", "):"no url provided, ",r+="MIME type: ".concat(n?'"'.concat(n,'"'):"not provided",", ");const i=t?P2(t):"";return r+=i?' first bytes: "'.concat(i,'"'):"first bytes: not available",r+=")",r}function N5(t){for(const e of t)Lm(e)}function O5(t,e){const n=e&&P5.exec(e),r=n&&n[1];return r?D5(t,r):null}function D5(t,e){e=e.toLowerCase();for(const n of t)for(const r of n.extensions)if(r.toLowerCase()===e)return n;return null}function SA(t,e){for(const n of t)if(n.mimeTypes&&n.mimeTypes.includes(e)||e==="application/x.".concat(n.id))return n;return null}function k5(t,e){if(!e)return null;for(const n of t)if(typeof e=="string"){if(Q5(e,n))return n}else if(ArrayBuffer.isView(e)){if(C1(e.buffer,e.byteOffset,n))return n}else if(e instanceof ArrayBuffer&&C1(e,0,n))return n;return null}function Q5(t,e){return e.testText?e.testText(t):(Array.isArray(e.tests)?e.tests:[e.tests]).some(r=>t.startsWith(r))}function C1(t,e,n){return(Array.isArray(n.tests)?n.tests:[n.tests]).some(i=>F5(t,e,n,i))}function F5(t,e,n,r){if(r instanceof ArrayBuffer)return NN(r,t,r.byteLength);switch(typeof r){case"function":return r(t,n);case"string":const i=vp(t,e,r.length);return r===i;default:return!1}}function P2(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:5;return typeof t=="string"?t.slice(0,e):ArrayBuffer.isView(t)?vp(t.buffer,t.byteOffset,e):t instanceof ArrayBuffer?vp(t,0,e):""}function vp(t,e,n){if(t.byteLength1&&arguments[1]!==void 0?arguments[1]:{};const{chunkSize:n=z5}=e;let r=0;for(;r2&&arguments[2]!==void 0?arguments[2]:null;if(n)return n;const r={fetch:S2(e,t),...t};return Array.isArray(r.loaders)||(r.loaders=null),r}function J5(t,e){if(!e&&t&&!Array.isArray(t))return t;let n;if(t&&(n=Array.isArray(t)?t:[t]),e&&e.loaders){const r=Array.isArray(e.loaders)?e.loaders:[e.loaders];n=n?[...n,...r]:r}return n&&n.length?n:null}async function Nm(t,e,n,r){kr(!r||typeof r=="object"),e&&!Array.isArray(e)&&!Mm(e)&&(r=void 0,n=e,e=void 0),t=await t,n=n||{};const{url:i}=Wh(t),o=J5(e,r),a=await M5(t,o,n);return a?(n=C5(n,a,o,i),r=X5({url:i,parse:Nm,loaders:o},n,r),await Z5(a,t,n,r)):null}async function Z5(t,e,n,r){if(RN(t),Xo(e)){const i=e,{ok:s,redirected:o,status:a,statusText:l,type:c,url:u}=i,f=Object.fromEntries(i.headers.entries());r.response={headers:f,ok:s,redirected:o,status:a,statusText:l,type:c,url:u}}if(e=await q5(e,t,n),t.parseTextSync&&typeof e=="string")return n.dataType="text",t.parseTextSync(e,n,r,t);if(PN(t,n))return await MN(t,e,n,r,Nm);if(t.parseText&&typeof e=="string")return await t.parseText(e,n,r,t);if(t.parse)return await t.parse(e,n,r,t);throw kr(!t.parseSync),new Error("".concat(t.id," loader - no parser found and worker is disabled"))}async function $f(t,e,n,r){!Array.isArray(e)&&!Mm(e)&&(n=e,e=void 0);const i=S2(n);let s=t;return typeof t=="string"&&(s=await i(t)),Jo(t)&&(s=await i(t)),await Nm(s,e,n)}const eO="3.3.1",{_parseImageNode:tO}=globalThis,yp=typeof Image<"u",Ep=typeof ImageBitmap<"u",nO=!!tO,_p=Pm?!0:nO;function rO(t){switch(t){case"auto":return Ep||yp||_p;case"imagebitmap":return Ep;case"image":return yp;case"data":return _p;default:throw new Error("@loaders.gl/images: image ".concat(t," not supported in this environment"))}}function iO(){if(Ep)return"imagebitmap";if(yp)return"image";if(_p)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function sO(t){const e=aO(t);if(!e)throw new Error("Not an image");return e}function oO(t){switch(sO(t)){case"data":return t;case"image":case"imagebitmap":const e=document.createElement("canvas"),n=e.getContext("2d");if(!n)throw new Error("getImageData");return e.width=t.width,e.height=t.height,n.drawImage(t,0,0),n.getImageData(0,0,t.width,t.height);default:throw new Error("getImageData")}}function aO(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&t instanceof Image?"image":t&&typeof t=="object"&&t.data&&t.width&&t.height?"data":null}const lO=/^data:image\/svg\+xml/,cO=/\.svg((\?|#).*)?$/;function Om(t){return t&&(lO.test(t)||cO.test(t))}function uO(t,e){if(Om(e)){let r=new TextDecoder().decode(t);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(r=unescape(encodeURIComponent(r)))}catch(s){throw new Error(s.message)}return"data:image/svg+xml;base64,".concat(btoa(r))}return L2(t,e)}function L2(t,e){if(Om(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(t)])}async function N2(t,e,n){const r=uO(t,n),i=self.URL||self.webkitURL,s=typeof r!="string"&&i.createObjectURL(r);try{return await fO(s||r,e)}finally{s&&i.revokeObjectURL(s)}}async function fO(t,e){const n=new Image;return n.src=t,e.image&&e.image.decode&&n.decode?(await n.decode(),n):await new Promise((r,i)=>{try{n.onload=()=>r(n),n.onerror=s=>i(new Error("Could not load image ".concat(t,": ").concat(s)))}catch(s){i(s)}})}const hO={};let w1=!0;async function dO(t,e,n){let r;Om(n)?r=await N2(t,e,n):r=L2(t,n);const i=e&&e.imagebitmap;return await AO(r,i)}async function AO(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if((gO(e)||!w1)&&(e=null),e)try{return await createImageBitmap(t,e)}catch(n){console.warn(n),w1=!1}return await createImageBitmap(t)}function gO(t){for(const e in t||hO)return!1;return!0}const nr=!1,dl=!0;function O2(t){const e=yc(t);return pO(e)||yO(e)||mO(e)||vO(e)}function pO(t){const e=yc(t);return e.byteLength>=24&&e.getUint32(0,nr)===2303741511?{mimeType:"image/png",width:e.getUint32(16,nr),height:e.getUint32(20,nr)}:null}function mO(t){const e=yc(t);return e.byteLength>=10&&e.getUint32(0,nr)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,dl),height:e.getUint16(8,dl)}:null}function vO(t){const e=yc(t);return e.byteLength>=14&&e.getUint16(0,nr)===16973&&e.getUint32(2,dl)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,dl),height:e.getUint32(22,dl)}:null}function yO(t){const e=yc(t);if(!(e.byteLength>=3&&e.getUint16(0,nr)===65496&&e.getUint8(2)===255))return null;const{tableMarkers:r,sofMarkers:i}=EO();let s=2;for(;s+9!!O2(new DataView(t))],options:bO},Ee=new vc({id:"deck"});let xp={};function SO(t){xp=t}function Nt(t,e,n,r){Ee.level>0&&xp[t]&&xp[t].call(null,e,n,r)}function TO(t){const e=t[0],n=t[t.length-1];return e==="{"&&n==="}"||e==="["&&n==="]"}const BO={id:"JSON",name:"JSON",module:"",version:"",options:{},extensions:["json","geojson"],mimeTypes:["application/json","application/geo+json"],testText:TO,parseTextSync:JSON.parse},Al="8.8.26",tf=globalThis.deck&&globalThis.deck.VERSION;if(tf&&tf!==Al)throw new Error("deck.gl - multiple versions detected: ".concat(tf," vs ").concat(Al));tf||(Ee.log(1,"deck.gl ".concat(Al))(),globalThis.deck={...globalThis.deck,VERSION:Al,version:Al,log:Ee,_registerLoggers:SO},T5([BO,[D2,{imagebitmap:{premultiplyAlpha:"none"}}]]));const RO=globalThis.deck,ie=new vc({id:"luma.gl"});function jt(t,e){if(!t)throw new Error(e||"luma.gl: assertion failed.")}const PO="Invalid WebGLRenderingContext",MO="Requires WebGL2";function Yh(t){return typeof WebGLRenderingContext<"u"&&t instanceof WebGLRenderingContext||typeof WebGL2RenderingContext<"u"&&t instanceof WebGL2RenderingContext?!0:!!(t&&Number.isFinite(t._version))}function xe(t){return typeof WebGL2RenderingContext<"u"&&t instanceof WebGL2RenderingContext?!0:!!(t&&t._version===2)}function LO(t){return xe(t)?t:null}function $h(t){return jt(Yh(t),PO),t}function Dt(t){return jt(xe(t),MO),t}const $a={};function NO(t){globalThis.console&&globalThis.console.error&&globalThis.console.error(t)}function OO(t){globalThis.console&&globalThis.console.log&&globalThis.console.log(t)}function DO(t,e){$a[t]=!0,e!==void 0&&NO(e)}function kO(t){const e=t.getError;t.getError=function(){let r;do r=e.apply(t),r!==0&&($a[r]=!0);while(r!==0);for(r in $a)if($a[r])return delete $a[r],parseInt(r,10);return 0}}const Ec=function t(e){const n=e.gl;this.ext=e,this.isAlive=!0,this.hasBeenBound=!1,this.elementArrayBuffer=null,this.attribs=new Array(e.maxVertexAttribs);for(let r=0;r{OO("OESVertexArrayObject emulation library context restored"),n.reset_()},!0),this.reset_()};Ns.prototype.VERTEX_ARRAY_BINDING_OES=34229;Ns.prototype.reset_=function(){if(this.vertexArrayObjects!==void 0)for(let r=0;rxe(t)?void 0:0,$O={3074:t=>xe(t)?void 0:36064,[zO]:t=>xe(t)?void 0:VO,35977:Qe,32937:Qe,[jO]:(t,e)=>{const n=xe(t)?t.getExtension(UO):t.getExtension(FO);return n&&n.GPU_DISJOINT_EXT?e(n.GPU_DISJOINT_EXT):0},[WO]:(t,e)=>{const n=t.getExtension(T1);return e(n&&n.UNMASKED_VENDOR_WEBGL||7936)},[YO]:(t,e)=>{const n=t.getExtension(T1);return e(n&&n.UNMASKED_RENDERER_WEBGL||7937)},[HO]:(t,e)=>{const n=t.luma.extensions[GO];return n?e(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT):1},32883:Qe,35071:Qe,37447:Qe,36063:(t,e)=>{if(!xe(t)){const n=t.getExtension(S1);return n?e(n.MAX_COLOR_ATTACHMENTS_WEBGL):0}},35379:Qe,35374:Qe,35377:Qe,34852:t=>{if(!xe(t)){const e=t.getExtension(S1);return e?e.MAX_DRAW_BUFFERS_WEBGL:0}},36203:t=>t.getExtension(b1)?2147483647:65535,33001:t=>t.getExtension(b1)?16777216:65535,33e3:t=>16777216,37157:Qe,35373:Qe,35657:Qe,36183:Qe,37137:Qe,34045:Qe,35978:Qe,35979:Qe,35968:Qe,35376:Qe,35375:Qe,35659:Qe,37154:Qe,35371:Qe,35658:Qe,35076:Qe,35077:Qe,35380:Qe};function KO(t,e,n){const r=$O[n],i=typeof r=="function"?r(t,e,n):r;return i!==void 0?i:e(n)}const qO="OES_vertex_array_object",k2="ANGLE_instanced_arrays",XO="WEBGL_draw_buffers",JO="EXT_disjoint_timer_query",ZO="EXT_texture_filter_anisotropic",e8="VertexArray requires WebGL2 or OES_vertex_array_object extension";function t8(t,e){return{webgl2:xe(t),ext:t.getExtension(e)}}const Q2={[qO]:{meta:{suffix:"OES"},createVertexArray:()=>{jt(!1,e8)},deleteVertexArray:()=>{},bindVertexArray:()=>{},isVertexArray:()=>!1},[k2]:{meta:{suffix:"ANGLE"},vertexAttribDivisor(t,e){jt(e===0,"WebGL instanced rendering not supported")},drawElementsInstanced:()=>{},drawArraysInstanced:()=>{}},[XO]:{meta:{suffix:"WEBGL"},drawBuffers:()=>{jt(!1)}},[JO]:{meta:{suffix:"EXT"},createQuery:()=>{jt(!1)},deleteQuery:()=>{jt(!1)},beginQuery:()=>{jt(!1)},endQuery:()=>{},getQuery(t,e){return this.getQueryObject(t,e)},getQueryParameter(t,e){return this.getQueryObject(t,e)},getQueryObject:()=>{}}},TA={readBuffer:(t,e,n)=>{xe(t)&&e(n)},getVertexAttrib:(t,e,n,r)=>{const{webgl2:i,ext:s}=t8(t,k2);let o;switch(r){case 35069:o=i?void 0:!1;break;case 35070:o=!i&&!s?0:void 0;break}return o!==void 0?o:e(n,r)},getProgramParameter:(t,e,n,r)=>{if(!xe(t))switch(r){case 35967:return 35981;case 35971:return 0;case 35382:return 0}return e(n,r)},getInternalformatParameter:(t,e,n,r,i)=>{if(!xe(t))switch(i){case 32937:return new Int32Array([0])}return t.getInternalformatParameter(n,r,i)},getTexParameter(t,e,n,r){switch(r){case 34046:const{extensions:i}=t.luma,s=i[ZO];r=s&&s.TEXTURE_MAX_ANISOTROPY_EXT||34046;break}return e(n,r)},getParameter:KO,hint(t,e,n,r){return e(n,r)}};function n8(t){t.luma=t.luma||{};const{luma:e}=t;return e.polyfilled||(QO(t),r8(t),s8(t,Q2),i8(t,{target:e,target2:t}),e.polyfilled=!0),t}globalThis.polyfillContext=n8;function r8(t){t.luma.extensions={};const e=t.getSupportedExtensions()||[];for(const n of e)t.luma[n]=t.getExtension(n)}function i8(t,e){let{target:n,target2:r}=e;Object.keys(TA).forEach(i=>{if(typeof TA[i]=="function"){const s=t[i]?t[i].bind(t):()=>{},o=TA[i].bind(null,t,s);n[i]=o,r[i]=o}})}function s8(t,e){for(const n of Object.getOwnPropertyNames(e))n!=="overrides"&&o8(t,{extension:n,target:t.luma,target2:t})}function o8(t,e){let{extension:n,target:r,target2:i}=e;const s=Q2[n];jt(s);const{meta:o={}}=s,{suffix:a=""}=o,l=t.getExtension(n);for(const c of Object.keys(s)){const u="".concat(c).concat(a);let f=null;c==="meta"||typeof t[c]=="function"||(l&&typeof l[u]=="function"?f=function(){return l[u](...arguments)}:typeof s[c]=="function"&&(f=s[c].bind(r))),f&&(r[c]=f,i[c]=f)}}const Dm={3042:!1,32773:new Float32Array([0,0,0,0]),32777:32774,34877:32774,32969:1,32968:0,32971:1,32970:0,3106:new Float32Array([0,0,0,0]),3107:[!0,!0,!0,!0],2884:!1,2885:1029,2929:!1,2931:1,2932:513,2928:new Float32Array([0,1]),2930:!0,3024:!0,36006:null,2886:2305,33170:4352,2849:1,32823:!1,32824:0,10752:0,32938:1,32939:!1,3089:!1,3088:new Int32Array([0,0,1024,1024]),2960:!1,2961:0,2968:4294967295,36005:4294967295,2962:519,2967:0,2963:4294967295,34816:519,36003:0,36004:4294967295,2964:7680,2965:7680,2966:7680,34817:7680,34818:7680,34819:7680,2978:[0,0,1024,1024],3333:4,3317:4,37440:!1,37441:!1,37443:37444,35723:4352,36010:null,35977:!1,3330:0,3332:0,3331:0,3314:0,32878:0,3316:0,3315:0,32877:0},Zr=(t,e,n)=>e?t.enable(n):t.disable(n),B1=(t,e,n)=>t.hint(n,e),nn=(t,e,n)=>t.pixelStorei(n,e),a8=(t,e)=>{const n=xe(t)?36009:36160;return t.bindFramebuffer(n,e)},l8=(t,e)=>t.bindFramebuffer(36008,e);function Pa(t){return Array.isArray(t)||ArrayBuffer.isView(t)}const c8={3042:Zr,32773:(t,e)=>t.blendColor(...e),32777:"blendEquation",34877:"blendEquation",32969:"blendFunc",32968:"blendFunc",32971:"blendFunc",32970:"blendFunc",3106:(t,e)=>t.clearColor(...e),3107:(t,e)=>t.colorMask(...e),2884:Zr,2885:(t,e)=>t.cullFace(e),2929:Zr,2931:(t,e)=>t.clearDepth(e),2932:(t,e)=>t.depthFunc(e),2928:(t,e)=>t.depthRange(...e),2930:(t,e)=>t.depthMask(e),3024:Zr,35723:B1,36006:a8,2886:(t,e)=>t.frontFace(e),33170:B1,2849:(t,e)=>t.lineWidth(e),32823:Zr,32824:"polygonOffset",10752:"polygonOffset",35977:Zr,32938:"sampleCoverage",32939:"sampleCoverage",3089:Zr,3088:(t,e)=>t.scissor(...e),2960:Zr,2961:(t,e)=>t.clearStencil(e),2968:(t,e)=>t.stencilMaskSeparate(1028,e),36005:(t,e)=>t.stencilMaskSeparate(1029,e),2962:"stencilFuncFront",2967:"stencilFuncFront",2963:"stencilFuncFront",34816:"stencilFuncBack",36003:"stencilFuncBack",36004:"stencilFuncBack",2964:"stencilOpFront",2965:"stencilOpFront",2966:"stencilOpFront",34817:"stencilOpBack",34818:"stencilOpBack",34819:"stencilOpBack",2978:(t,e)=>t.viewport(...e),3333:nn,3317:nn,37440:nn,37441:nn,37443:nn,3330:nn,3332:nn,3331:nn,36010:l8,3314:nn,32878:nn,3316:nn,3315:nn,32877:nn,framebuffer:(t,e)=>{const n=e&&"handle"in e?e.handle:e;return t.bindFramebuffer(36160,n)},blend:(t,e)=>e?t.enable(3042):t.disable(3042),blendColor:(t,e)=>t.blendColor(...e),blendEquation:(t,e)=>{e=Pa(e)?e:[e,e],t.blendEquationSeparate(...e)},blendFunc:(t,e)=>{e=Pa(e)&&e.length===2?[...e,...e]:e,t.blendFuncSeparate(...e)},clearColor:(t,e)=>t.clearColor(...e),clearDepth:(t,e)=>t.clearDepth(e),clearStencil:(t,e)=>t.clearStencil(e),colorMask:(t,e)=>t.colorMask(...e),cull:(t,e)=>e?t.enable(2884):t.disable(2884),cullFace:(t,e)=>t.cullFace(e),depthTest:(t,e)=>e?t.enable(2929):t.disable(2929),depthFunc:(t,e)=>t.depthFunc(e),depthMask:(t,e)=>t.depthMask(e),depthRange:(t,e)=>t.depthRange(...e),dither:(t,e)=>e?t.enable(3024):t.disable(3024),derivativeHint:(t,e)=>{t.hint(35723,e)},frontFace:(t,e)=>t.frontFace(e),mipmapHint:(t,e)=>t.hint(33170,e),lineWidth:(t,e)=>t.lineWidth(e),polygonOffsetFill:(t,e)=>e?t.enable(32823):t.disable(32823),polygonOffset:(t,e)=>t.polygonOffset(...e),sampleCoverage:(t,e)=>t.sampleCoverage(...e),scissorTest:(t,e)=>e?t.enable(3089):t.disable(3089),scissor:(t,e)=>t.scissor(...e),stencilTest:(t,e)=>e?t.enable(2960):t.disable(2960),stencilMask:(t,e)=>{e=Pa(e)?e:[e,e];const[n,r]=e;t.stencilMaskSeparate(1028,n),t.stencilMaskSeparate(1029,r)},stencilFunc:(t,e)=>{e=Pa(e)&&e.length===3?[...e,...e]:e;const[n,r,i,s,o,a]=e;t.stencilFuncSeparate(1028,n,r,i),t.stencilFuncSeparate(1029,s,o,a)},stencilOp:(t,e)=>{e=Pa(e)&&e.length===3?[...e,...e]:e;const[n,r,i,s,o,a]=e;t.stencilOpSeparate(1028,n,r,i),t.stencilOpSeparate(1029,s,o,a)},viewport:(t,e)=>t.viewport(...e)};function nt(t,e,n){return e[t]!==void 0?e[t]:n[t]}const u8={blendEquation:(t,e,n)=>t.blendEquationSeparate(nt(32777,e,n),nt(34877,e,n)),blendFunc:(t,e,n)=>t.blendFuncSeparate(nt(32969,e,n),nt(32968,e,n),nt(32971,e,n),nt(32970,e,n)),polygonOffset:(t,e,n)=>t.polygonOffset(nt(32824,e,n),nt(10752,e,n)),sampleCoverage:(t,e,n)=>t.sampleCoverage(nt(32938,e,n),nt(32939,e,n)),stencilFuncFront:(t,e,n)=>t.stencilFuncSeparate(1028,nt(2962,e,n),nt(2967,e,n),nt(2963,e,n)),stencilFuncBack:(t,e,n)=>t.stencilFuncSeparate(1029,nt(34816,e,n),nt(36003,e,n),nt(36004,e,n)),stencilOpFront:(t,e,n)=>t.stencilOpSeparate(1028,nt(2964,e,n),nt(2965,e,n),nt(2966,e,n)),stencilOpBack:(t,e,n)=>t.stencilOpSeparate(1029,nt(34817,e,n),nt(34818,e,n),nt(34819,e,n))},R1={enable:(t,e)=>t({[e]:!0}),disable:(t,e)=>t({[e]:!1}),pixelStorei:(t,e,n)=>t({[e]:n}),hint:(t,e,n)=>t({[e]:n}),bindFramebuffer:(t,e,n)=>{switch(e){case 36160:return t({36006:n,36010:n});case 36009:return t({36006:n});case 36008:return t({36010:n});default:return null}},blendColor:(t,e,n,r,i)=>t({32773:new Float32Array([e,n,r,i])}),blendEquation:(t,e)=>t({32777:e,34877:e}),blendEquationSeparate:(t,e,n)=>t({32777:e,34877:n}),blendFunc:(t,e,n)=>t({32969:e,32968:n,32971:e,32970:n}),blendFuncSeparate:(t,e,n,r,i)=>t({32969:e,32968:n,32971:r,32970:i}),clearColor:(t,e,n,r,i)=>t({3106:new Float32Array([e,n,r,i])}),clearDepth:(t,e)=>t({2931:e}),clearStencil:(t,e)=>t({2961:e}),colorMask:(t,e,n,r,i)=>t({3107:[e,n,r,i]}),cullFace:(t,e)=>t({2885:e}),depthFunc:(t,e)=>t({2932:e}),depthRange:(t,e,n)=>t({2928:new Float32Array([e,n])}),depthMask:(t,e)=>t({2930:e}),frontFace:(t,e)=>t({2886:e}),lineWidth:(t,e)=>t({2849:e}),polygonOffset:(t,e,n)=>t({32824:e,10752:n}),sampleCoverage:(t,e,n)=>t({32938:e,32939:n}),scissor:(t,e,n,r,i)=>t({3088:new Int32Array([e,n,r,i])}),stencilMask:(t,e)=>t({2968:e,36005:e}),stencilMaskSeparate:(t,e,n)=>t({[e===1028?2968:36005]:n}),stencilFunc:(t,e,n,r)=>t({2962:e,2967:n,2963:r,34816:e,36003:n,36004:r}),stencilFuncSeparate:(t,e,n,r,i)=>t({[e===1028?2962:34816]:n,[e===1028?2967:36003]:r,[e===1028?2963:36004]:i}),stencilOp:(t,e,n,r)=>t({2964:e,2965:n,2966:r,34817:e,34818:n,34819:r}),stencilOpSeparate:(t,e,n,r,i)=>t({[e===1028?2964:34817]:n,[e===1028?2965:34818]:r,[e===1028?2966:34819]:i}),viewport:(t,e,n,r,i)=>t({2978:[e,n,r,i]})},Jn=(t,e)=>t.isEnabled(e),P1={3042:Jn,2884:Jn,2929:Jn,3024:Jn,32823:Jn,32926:Jn,32928:Jn,3089:Jn,2960:Jn,35977:Jn};function F2(t){for(const e in t)return!1;return!0}function f8(t,e){if(t===e)return!0;const n=Array.isArray(t)||ArrayBuffer.isView(t),r=Array.isArray(e)||ArrayBuffer.isView(e);if(n&&r&&t.length===e.length){for(let i=0;i{}}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=e,this.program=null,this.stateStack=[],this.enable=!0,this.cache=n?p8(e):Object.assign({},Dm),this.log=r,this._updateCache=this._updateCache.bind(this),Object.seal(this)}push(){this.stateStack.push({})}pop(){jt(this.stateStack.length>0);const e=this.stateStack[this.stateStack.length-1];Qr(this.gl,e),this.stateStack.pop()}_updateCache(e){let n=!1,r;const i=this.stateStack.length>0&&this.stateStack[this.stateStack.length-1];for(const s in e){jt(s!==void 0);const o=e[s],a=this.cache[s];f8(o,a)||(n=!0,r=a,i&&!(s in i)&&(i[s]=a),this.cache[s]=o)}return{valueChanged:n,oldValue:r}}}function U2(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{enable:n=!0,copyState:r}=e;if(jt(r!==void 0),!t.state){const{polyfillContext:i}=globalThis;i&&i(t),t.state=new A8(t,{copyState:r}),d8(t);for(const s in R1){const o=R1[s];h8(t,s,o)}M1(t,"getParameter"),M1(t,"isEnabled")}return t.state.enable=n,t}function g8(t){t.state||U2(t,{copyState:!1}),t.state.push()}function L1(t){jt(t.state),t.state.pop()}function Qr(t,e){if(jt(Yh(t),"setParameters requires a WebGL context"),F2(e))return;const n={};for(const i in e){const s=Number(i),o=c8[i];o&&(typeof o=="string"?n[o]=!0:o(t,e[i],s))}const r=t.state&&t.state.cache;if(r)for(const i in n){const s=u8[i];s(t,e,r)}}function p8(t,e){if(e=e||Dm,typeof e=="number"){const i=e,s=P1[i];return s?s(t,i):t.getParameter(i)}const n=Array.isArray(e)?e:Object.keys(e),r={};for(const i of n){const s=P1[i];r[i]=s?s(t,Number(i)):t.getParameter(Number(i))}return r}function m8(t){Qr(t,Dm)}function Cn(t,e,n){if(F2(e))return n(t);const{nocatch:r=!0}=e;g8(t),Qr(t,e);let i;if(r)i=n(t),L1(t);else try{i=n(t)}finally{L1(t)}return i}function Do(t){const{luma:e}=t;if(t.canvas&&e){const{clientWidth:n}=e.canvasSizeInfo;return n?t.drawingBufferWidth/n:1}return 1}function BA(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const r=Do(t),i=t.drawingBufferWidth,s=t.drawingBufferHeight;return y8(e,r,i,s,n)}function v8(t){const e=typeof window>"u"?1:window.devicePixelRatio||1;return Number.isFinite(t)?t<=0?1:t:t?e:1}function y8(t,e,n,r,i){const s=N1(t[0],e,n);let o=O1(t[1],e,r,i),a=N1(t[0]+1,e,n);const l=a===n-1?a:a-1;a=O1(t[1]+1,e,r,i);let c;return i?(a=a===0?a:a+1,c=o,o=a):c=a===r-1?a:a-1,{x:s,y:o,width:Math.max(l-s+1,1),height:Math.max(c-o+1,1)}}function N1(t,e,n){return Math.min(Math.round(t*e),n-1)}function O1(t,e,n,r){return r?Math.max(0,n-1-Math.round(t*e)):Math.min(Math.round(t*e),n-1)}const km=Hr(),E8=km&&typeof document<"u",G2={webgl2:!0,webgl1:!0,throwOnError:!0,manageState:!0,canvas:null,debug:!1,width:800,height:600};function z2(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};jt(km,`createGLContext only available in the browser. +Create your own headless context or use 'createHeadlessContext' from @luma.gl/test-utils`),t=Object.assign({},G2,t);const{width:e,height:n}=t;function r(a){if(t.throwOnError)throw new Error(a);return console.error(a),null}t.onError=r;let i;const{canvas:s}=t,o=I8({canvas:s,width:e,height:n,onError:r});return i=C8(o,t),i?(i=Qm(i,t),w8(i),i):null}function Qm(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!t||t._instrumented)return t;t._version=t._version||b8(t),t.luma=t.luma||{},t.luma.canvasSizeInfo=t.luma.canvasSizeInfo||{},e=Object.assign({},G2,e);const{manageState:n,debug:r}=e;return n&&U2(t,{copyState:!1,log:function(){for(var i=arguments.length,s=new Array(i),o=0;o1&&arguments[1]!==void 0?arguments[1]:{};if(t.canvas){const r=v8(e.useDevicePixels);S8(t,r,e);return}const n=t.getExtension("STACKGL_resize_drawingbuffer");n&&"width"in e&&"height"in e&&n.resize(e.width,e.height)}function C8(t,e){const{onError:n}=e;let r=null;const i=l=>r=l.statusMessage||r;t.addEventListener("webglcontextcreationerror",i,!1);const{webgl1:s=!0,webgl2:o=!0}=e;let a=null;return o&&(a=a||t.getContext("webgl2",e),a=a||t.getContext("experimental-webgl2",e)),s&&(a=a||t.getContext("webgl",e),a=a||t.getContext("experimental-webgl",e)),t.removeEventListener("webglcontextcreationerror",i,!1),a?(e.onContextLost&&t.addEventListener("webglcontextlost",e.onContextLost,!1),e.onContextRestored&&t.addEventListener("webglcontextrestored",e.onContextRestored,!1),a):n("Failed to create ".concat(o&&!s?"WebGL2":"WebGL"," context: ").concat(r||"Unknown error"))}function I8(t){let{canvas:e,width:n=800,height:r=600,onError:i}=t,s;return typeof e=="string"?(E8&&document.readyState==="complete"||i("createGLContext called on canvas '".concat(e,"' before page was loaded")),s=document.getElementById(e)):e?s=e:(s=document.createElement("canvas"),s.id="lumagl-canvas",s.style.width=Number.isFinite(n)?"".concat(n,"px"):"100%",s.style.height=Number.isFinite(r)?"".concat(r,"px"):"100%",document.body.insertBefore(s,document.body.firstChild)),s}function w8(t){const e=xe(t)?"WebGL2":"WebGL1",n=_8(t),r=n?"(".concat(n.vendor,",").concat(n.renderer,")"):"",i=t.debug?" debug":"";ie.info(1,"".concat(e).concat(i," context ").concat(r))()}function b8(t){return typeof WebGL2RenderingContext<"u"&&t instanceof WebGL2RenderingContext?2:1}function S8(t,e,n){let r="width"in n?n.width:t.canvas.clientWidth,i="height"in n?n.height:t.canvas.clientHeight;(!r||!i)&&(ie.log(1,"Canvas clientWidth/clientHeight is 0")(),e=1,r=t.canvas.width||1,i=t.canvas.height||1),t.luma=t.luma||{},t.luma.canvasSizeInfo=t.luma.canvasSizeInfo||{};const s=t.luma.canvasSizeInfo;if(s.clientWidth!==r||s.clientHeight!==i||s.devicePixelRatio!==e){let o=e;const a=Math.floor(r*o),l=Math.floor(i*o);t.canvas.width=a,t.canvas.height=l,(t.drawingBufferWidth!==a||t.drawingBufferHeight!==l)&&(ie.warn("Device pixel ratio clamped")(),o=Math.min(t.drawingBufferWidth/r,t.drawingBufferHeight/i),t.canvas.width=Math.floor(r*o),t.canvas.height=Math.floor(i*o)),Object.assign(t.luma.canvasSizeInfo,{clientWidth:r,clientHeight:i,devicePixelRatio:e})}}const gl="8.5.18",T8="set luma.log.level=1 (or higher) to trace rendering";class B8{constructor(){this.stats=new Map}get(e){return this.stats.has(e)||this.stats.set(e,new Hh({id:e})),this.stats.get(e)}}const cs=new B8;if(globalThis.luma&&globalThis.luma.VERSION!==gl)throw new Error("luma.gl - multiple VERSIONs detected: ".concat(globalThis.luma.VERSION," vs ").concat(gl));globalThis.luma||(Hr()&&ie.log(1,"luma.gl ".concat(gl," - ").concat(T8))(),globalThis.luma=globalThis.luma||{VERSION:gl,version:gl,log:ie,stats:cs,globals:{modules:{},nodeIO:{}}});function R8(t){return typeof window<"u"&&window.requestAnimationFrame?window.requestAnimationFrame(t):setTimeout(t,1e3/60)}function P8(t){return typeof window<"u"&&window.cancelAnimationFrame?window.cancelAnimationFrame(t):clearTimeout(t)}function q(t,e){if(!t)throw new Error(e||"luma.gl: assertion failed.")}function RA(t,e){if(typeof e!="string")return e;const n=Number(e);if(!isNaN(n))return n;e=e.replace(/^.*\./,"");const r=t[e];return q(r!==void 0,"Accessing undefined constant GL.".concat(e)),r}function Ci(t,e){e=Number(e);for(const n in t)if(t[n]===e)return"GL.".concat(n);return String(e)}const PA={};function Pi(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"id";PA[t]=PA[t]||1;const e=PA[t]++;return"".concat(t,"-").concat(e)}function D1(t){return q(typeof t=="number","Input must be a number"),t&&(t&t-1)===0}function ko(t){let e=!0;for(const n in t){e=!1;break}return e}function V2(t,e,n,r){const i="See luma.gl ".concat(n," Upgrade Guide at https://luma.gl/docs/upgrade-guide"),s=Object.getPrototypeOf(t);r.forEach(o=>{s.methodName||(s[o]=()=>{throw ie.removed("Calling removed method ".concat(e,".").concat(o,": "),i)(),new Error(o)})})}const Ys="Resource subclass must define virtual methods";let Wr=class{get[Symbol.toStringTag](){return"Resource"}constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};$h(e);const{id:r,userData:i={}}=n;this.gl=e,this.gl2=e,this.id=r||Pi(this[Symbol.toStringTag]),this.userData=i,this._bound=!1,this._handle=n.handle,this._handle===void 0&&(this._handle=this._createHandle()),this.byteLength=0,this._addStats()}toString(){return"".concat(this[Symbol.toStringTag]||this.constructor.name,"(").concat(this.id,")")}get handle(){return this._handle}delete(){let{deleteChildren:e=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const n=this._handle&&this._deleteHandle(this._handle);return this._handle&&this._removeStats(),this._handle=null,n&&e&&n.filter(Boolean).forEach(r=>r.delete()),this}bind(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.handle;if(typeof e!="function")return this._bindHandle(e),this;let n;return this._bound?n=e():(this._bindHandle(this.handle),this._bound=!0,n=e(),this._bound=!1,this._bindHandle(null)),n}unbind(){this.bind(null)}getParameter(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};e=RA(this.gl,e),q(e);const i=(this.constructor.PARAMETERS||{})[e];if(i){const s=xe(this.gl);if(!((!("webgl2"in i)||s)&&(!("extension"in i)||this.gl.getExtension(i.extension)))){const a=i.webgl1,l="webgl2"in i?i.webgl2:i.webgl1;return s?l:a}}return this._getParameter(e,n)}getParameters(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{parameters:n,keys:r}=e,i=this.constructor.PARAMETERS||{},s=xe(this.gl),o={},a=n||Object.keys(i);for(const l of a){const c=i[l];if(c&&(!("webgl2"in c)||s)&&(!("extension"in c)||this.gl.getExtension(c.extension))){const f=r?Ci(this.gl,l):l;o[f]=this.getParameter(l,e),r&&c.type==="GLenum"&&(o[f]=Ci(this.gl,o[f]))}}return o}setParameter(e,n){e=RA(this.gl,e),q(e);const i=(this.constructor.PARAMETERS||{})[e];if(i){const s=xe(this.gl);if(!((!("webgl2"in i)||s)&&(!("extension"in i)||this.gl.getExtension(i.extension))))throw new Error("Parameter not available on this platform");i.type==="GLenum"&&(n=RA(n))}return this._setParameter(e,n),this}setParameters(e){for(const n in e)this.setParameter(n,e[n]);return this}stubRemovedMethods(e,n,r){return V2(this,e,n,r)}initialize(e){}_createHandle(){throw new Error(Ys)}_deleteHandle(){throw new Error(Ys)}_bindHandle(e){throw new Error(Ys)}_getOptsFromHandle(){throw new Error(Ys)}_getParameter(e,n){throw new Error(Ys)}_setParameter(e,n){throw new Error(Ys)}_context(){return this.gl.luma=this.gl.luma||{},this.gl.luma}_addStats(){const e=this[Symbol.toStringTag],n=cs.get("Resource Counts");n.get("Resources Created").incrementCount(),n.get("".concat(e,"s Created")).incrementCount(),n.get("".concat(e,"s Active")).incrementCount()}_removeStats(){const e=this[Symbol.toStringTag];cs.get("Resource Counts").get("".concat(e,"s Active")).decrementCount()}_trackAllocatedMemory(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this[Symbol.toStringTag];this._trackAllocatedMemoryForContext(e,n),this._trackAllocatedMemoryForContext(e,n,this.gl.canvas&&this.gl.canvas.id),this.byteLength=e}_trackAllocatedMemoryForContext(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this[Symbol.toStringTag],r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"";const i=cs.get("Memory Usage".concat(r));i.get("GPU Memory").addCount(e),i.get("".concat(n," Memory")).addCount(e)}_trackDeallocatedMemory(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this[Symbol.toStringTag];this._trackDeallocatedMemoryForContext(e),this._trackDeallocatedMemoryForContext(e,this.gl.canvas&&this.gl.canvas.id),this.byteLength=0}_trackDeallocatedMemoryForContext(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this[Symbol.toStringTag],n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";const r=cs.get("Memory Usage".concat(n));r.get("GPU Memory").subtractCount(this.byteLength),r.get("".concat(e," Memory")).subtractCount(this.byteLength)}};const M8="Failed to deduce GL constant from typed array";function Cp(t){switch(ArrayBuffer.isView(t)?t.constructor:t){case Float32Array:return 5126;case Uint16Array:return 5123;case Uint32Array:return 5125;case Uint8Array:return 5121;case Uint8ClampedArray:return 5121;case Int8Array:return 5120;case Int16Array:return 5122;case Int32Array:return 5124;default:throw new Error(M8)}}function Ql(t){let{clamped:e=!0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};switch(t){case 5126:return Float32Array;case 5123:case 33635:case 32819:case 32820:return Uint16Array;case 5125:return Uint32Array;case 5121:return e?Uint8ClampedArray:Uint8Array;case 5120:return Int8Array;case 5122:return Int16Array;case 5124:return Int32Array;default:throw new Error("Failed to deduce typed array type from GL constant")}}function L8(t){let{data:e,width:n,height:r,bytesPerPixel:i=4,temp:s}=t;const o=n*i;s=s||new Uint8Array(o);for(let a=0;athis._assign(i)),Object.freeze(this)}toString(){return JSON.stringify(this)}get BYTES_PER_ELEMENT(){return ln.getBytesPerElement(this)}get BYTES_PER_VERTEX(){return ln.getBytesPerVertex(this)}_assign(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e=Ip("Accessor",e,D8),e.type!==void 0&&(this.type=e.type,(e.type===5124||e.type===5125)&&(this.integer=!0)),e.size!==void 0&&(this.size=e.size),e.offset!==void 0&&(this.offset=e.offset),e.stride!==void 0&&(this.stride=e.stride),e.normalized!==void 0&&(this.normalized=e.normalized),e.integer!==void 0&&(this.integer=e.integer),e.divisor!==void 0&&(this.divisor=e.divisor),e.buffer!==void 0&&(this.buffer=e.buffer),e.index!==void 0&&(typeof e.index=="boolean"?this.index=e.index?1:0:this.index=e.index),e.instanced!==void 0&&(this.divisor=e.instanced?1:0),e.isInstanced!==void 0&&(this.divisor=e.isInstanced?1:0),this}}const k1=10,j2={offset:"accessor.offset",stride:"accessor.stride",type:"accessor.type",size:"accessor.size",divisor:"accessor.divisor",normalized:"accessor.normalized",integer:"accessor.integer",instanced:"accessor.divisor",isInstanced:"accessor.divisor"},k8={removedProps:{},replacedProps:{bytes:"byteLength"},deprecatedProps:j2},Q8={removedProps:j2};let Le=class extends Wr{get[Symbol.toStringTag](){return"Buffer"}constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(e,n),this.stubRemovedMethods("Buffer","v6.0",["layout","setLayout","getIndexedParameter"]),this.target=n.target||(this.gl.webgl2?36662:34962),this.initialize(n),Object.seal(this)}getElementCount(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.accessor;return Math.round(this.byteLength/ln.getBytesPerElement(e))}getVertexCount(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.accessor;return Math.round(this.byteLength/ln.getBytesPerVertex(e))}initialize(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return ArrayBuffer.isView(e)&&(e={data:e}),Number.isFinite(e)&&(e={byteLength:e}),e=Ip("Buffer",e,k8),this.usage=e.usage||35044,this.debugData=null,this.setAccessor(Object.assign({},e,e.accessor)),e.data?this._setData(e.data,e.offset,e.byteLength):this._setByteLength(e.byteLength||0),this}setProps(e){return e=Ip("Buffer",e,Q8),"accessor"in e&&this.setAccessor(e.accessor),this}setAccessor(e){return e=Object.assign({},e),delete e.buffer,this.accessor=new ln(e),this}reallocate(e){return e>this.byteLength?(this._setByteLength(e),!0):(this.bytesUsed=e,!1)}setData(e){return this.initialize(e)}subData(e){ArrayBuffer.isView(e)&&(e={data:e});const{data:n,offset:r=0,srcOffset:i=0}=e,s=e.byteLength||e.length;q(n);const o=this.gl.webgl2?36663:this.target;return this.gl.bindBuffer(o,this.handle),i!==0||s!==void 0?(Dt(this.gl),this.gl.bufferSubData(this.target,r,n,i,s)):this.gl.bufferSubData(o,r,n),this.gl.bindBuffer(o,null),this.debugData=null,this._inferType(n),this}copyData(e){let{sourceBuffer:n,readOffset:r=0,writeOffset:i=0,size:s}=e;const{gl:o}=this;return Dt(o),o.bindBuffer(36662,n.handle),o.bindBuffer(36663,this.handle),o.copyBufferSubData(36662,36663,r,i,s),o.bindBuffer(36662,null),o.bindBuffer(36663,null),this.debugData=null,this}getData(){let{dstData:e=null,srcByteOffset:n=0,dstOffset:r=0,length:i=0}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Dt(this.gl);const s=Ql(this.accessor.type||5126,{clamped:!1}),o=this._getAvailableElementCount(n),a=r;let l,c;e?(c=e.length,l=c-a):(l=Math.min(o,i||o),c=a+l);const u=Math.min(o,l);return i=i||u,q(i<=u),e=e||new s(c),this.gl.bindBuffer(36662,this.handle),this.gl.getBufferSubData(36662,n,e,r,i),this.gl.bindBuffer(36662,null),e}bind(){let{target:e=this.target,index:n=this.accessor&&this.accessor.index,offset:r=0,size:i}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e===35345||e===35982?i!==void 0?this.gl.bindBufferRange(e,n,this.handle,r,i):(q(r===0),this.gl.bindBufferBase(e,n,this.handle)):this.gl.bindBuffer(e,this.handle),this}unbind(){let{target:e=this.target,index:n=this.accessor&&this.accessor.index}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e===35345||e===35982?this.gl.bindBufferBase(e,n,null):this.gl.bindBuffer(e,null),this}getDebugData(){return this.debugData?{data:this.debugData,changed:!1}:(this.debugData=this.getData({length:Math.min(k1,this.byteLength)}),{data:this.debugData,changed:!0})}invalidateDebugData(){this.debugData=null}_setData(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.byteLength+n;q(ArrayBuffer.isView(e)),this._trackDeallocatedMemory();const i=this._getTarget();this.gl.bindBuffer(i,this.handle),this.gl.bufferData(i,r,this.usage),this.gl.bufferSubData(i,n,e),this.gl.bindBuffer(i,null),this.debugData=e.slice(0,k1),this.bytesUsed=r,this._trackAllocatedMemory(r);const s=Cp(e);return q(s),this.setAccessor(new ln(this.accessor,{type:s})),this}_setByteLength(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.usage;q(e>=0),this._trackDeallocatedMemory();let r=e;e===0&&(r=new Float32Array(0));const i=this._getTarget();return this.gl.bindBuffer(i,this.handle),this.gl.bufferData(i,r,n),this.gl.bindBuffer(i,null),this.usage=n,this.debugData=null,this.bytesUsed=e,this._trackAllocatedMemory(e),this}_getTarget(){return this.gl.webgl2?36663:this.target}_getAvailableElementCount(e){const n=Ql(this.accessor.type||5126,{clamped:!1}),r=e/n.BYTES_PER_ELEMENT;return this.getElementCount()-r}_inferType(e){this.accessor.type||this.setAccessor(new ln(this.accessor,{type:Cp(e)}))}_createHandle(){return this.gl.createBuffer()}_deleteHandle(){this.gl.deleteBuffer(this.handle),this._trackDeallocatedMemory()}_getParameter(e){this.gl.bindBuffer(this.target,this.handle);const n=this.gl.getBufferParameter(this.target,e);return this.gl.bindBuffer(this.target,null),n}get type(){return ie.deprecated("Buffer.type","Buffer.accessor.type")(),this.accessor.type}get bytes(){return ie.deprecated("Buffer.bytes","Buffer.byteLength")(),this.byteLength}setByteLength(e){return ie.deprecated("setByteLength","reallocate")(),this.reallocate(e)}updateAccessor(e){return ie.deprecated("updateAccessor(...)","setAccessor(new Accessor(buffer.accessor, ...)")(),this.accessor=new ln(this.accessor,e),this}};const Fm={6407:{dataFormat:6407,types:[5121,33635]},6408:{dataFormat:6408,types:[5121,32819,32820]},6406:{dataFormat:6406,types:[5121]},6409:{dataFormat:6409,types:[5121]},6410:{dataFormat:6410,types:[5121]},33326:{dataFormat:6403,types:[5126],gl2:!0},33328:{dataFormat:33319,types:[5126],gl2:!0},34837:{dataFormat:6407,types:[5126],gl2:!0},34836:{dataFormat:6408,types:[5126],gl2:!0}},H2={6403:1,36244:1,33319:2,33320:2,6407:3,36248:3,6408:4,36249:4,6402:1,34041:1,6406:1,6409:1,6410:2},W2={5126:4,5125:4,5124:4,5123:2,5122:2,5131:2,5120:1,5121:1};function F8(t,e){const n=Fm[e];if(!n)return!1;if(n.gl1===void 0&&n.gl2===void 0)return!0;const r=xe(t)&&n.gl2||n.gl1;return typeof r=="string"?t.getExtension(r):r}function U8(t,e){const n=Fm[e];switch(n&&n.types[0]){case 5126:return t.getExtension("OES_texture_float_linear");case 5131:return t.getExtension("OES_texture_half_float_linear");default:return!0}}const G8=[9729,9728],Q1=globalThis.WebGLBuffer||function(){};class _s extends Wr{get[Symbol.toStringTag](){return"Texture"}static isSupported(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{format:r,linearFiltering:i}=n;let s=!0;return r&&(s=s&&F8(e,r),s=s&&(!i||U8(e,r))),s}constructor(e,n){const{id:r=Pi("texture"),handle:i,target:s}=n;super(e,{id:r,handle:i}),this.target=s,this.textureUnit=void 0,this.loaded=!1,this.width=void 0,this.height=void 0,this.depth=void 0,this.format=void 0,this.type=void 0,this.dataFormat=void 0,this.border=void 0,this.textureUnit=void 0,this.mipmaps=void 0}toString(){return"Texture(".concat(this.id,",").concat(this.width,"x").concat(this.height,")")}initialize(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=e.data;if(n instanceof Promise)return n.then(v=>this.initialize(Object.assign({},e,{pixels:v,data:v}))),this;const r=typeof HTMLVideoElement<"u"&&n instanceof HTMLVideoElement;if(r&&n.readyStatethis.initialize(e)),this;const{pixels:i=null,format:s=6408,border:o=0,recreate:a=!1,parameters:l={},pixelStore:c={},textureUnit:u=void 0}=e;n||(n=i);let{width:f,height:h,dataFormat:d,type:A,compressed:p=!1,mipmaps:g=!0}=e;const{depth:m=0}=e;return{width:f,height:h,compressed:p,dataFormat:d,type:A}=this._deduceParameters({format:s,type:A,dataFormat:d,compressed:p,data:n,width:f,height:h}),this.width=f,this.height=h,this.depth=m,this.format=s,this.type=A,this.dataFormat=d,this.border=o,this.textureUnit=u,Number.isFinite(this.textureUnit)&&(this.gl.activeTexture(33984+this.textureUnit),this.gl.bindTexture(this.target,this.handle)),g&&this._isNPOT()&&(ie.warn("texture: ".concat(this," is Non-Power-Of-Two, disabling mipmaping"))(),g=!1,this._updateForNPOT(l)),this.mipmaps=g,this.setImageData({data:n,width:f,height:h,depth:m,format:s,type:A,dataFormat:d,border:o,mipmaps:g,parameters:c,compressed:p}),g&&this.generateMipmap(),this.setParameters(l),a&&(this.data=n),r&&(this._video={video:n,parameters:l,lastTime:n.readyState>=HTMLVideoElement.HAVE_CURRENT_DATA?n.currentTime:-1}),this}update(){if(this._video){const{video:e,parameters:n,lastTime:r}=this._video;if(r===e.currentTime||e.readyState0&&arguments[0]!==void 0?arguments[0]:{};return this._isNPOT()?(ie.warn("texture: ".concat(this," is Non-Power-Of-Two, disabling mipmaping"))(),this):(this.mipmaps=!0,this.gl.bindTexture(this.target,this.handle),Cn(this.gl,e,()=>{this.gl.generateMipmap(this.target)}),this.gl.bindTexture(this.target,null),this)}setImageData(e){this._trackDeallocatedMemory("Texture");const{target:n=this.target,pixels:r=null,level:i=0,format:s=this.format,border:o=this.border,offset:a=0,parameters:l={}}=e;let{data:c=null,type:u=this.type,width:f=this.width,height:h=this.height,dataFormat:d=this.dataFormat,compressed:A=!1}=e;c||(c=r),{type:u,dataFormat:d,compressed:A,width:f,height:h}=this._deduceParameters({format:s,type:u,dataFormat:d,compressed:A,data:c,width:f,height:h});const{gl:p}=this;p.bindTexture(this.target,this.handle);let g=null;({data:c,dataType:g}=this._getDataType({data:c,compressed:A}));let m,v=0;if(Cn(this.gl,l,()=>{switch(g){case"null":p.texImage2D(n,i,s,f,h,o,d,u,c);break;case"typed-array":p.texImage2D(n,i,s,f,h,o,d,u,c,a);break;case"buffer":m=Dt(p),m.bindBuffer(35052,c.handle||c),m.texImage2D(n,i,s,f,h,o,d,u,a),m.bindBuffer(35052,null);break;case"browser-object":xe(p)?p.texImage2D(n,i,s,f,h,o,d,u,c):p.texImage2D(n,i,s,d,u,c);break;case"compressed":for(const[E,_]of c.entries())p.compressedTexImage2D(n,E,_.format,_.width,_.height,o,_.data),v+=_.levelSize;break;default:q(!1,"Unknown image data type")}}),g==="compressed")this._trackAllocatedMemory(v,"Texture");else if(c&&c.byteLength)this._trackAllocatedMemory(c.byteLength,"Texture");else{const E=H2[this.dataFormat]||4,_=W2[this.type]||1;this._trackAllocatedMemory(this.width*this.height*E*_,"Texture")}return this.loaded=!0,this}setSubImageData(e){let{target:n=this.target,pixels:r=null,data:i=null,x:s=0,y:o=0,width:a=this.width,height:l=this.height,level:c=0,format:u=this.format,type:f=this.type,dataFormat:h=this.dataFormat,compressed:d=!1,offset:A=0,border:p=this.border,parameters:g={}}=e;if({type:f,dataFormat:h,compressed:d,width:a,height:l}=this._deduceParameters({format:u,type:f,dataFormat:h,compressed:d,data:i,width:a,height:l}),q(this.depth===0,"texSubImage not supported for 3D textures"),i||(i=r),i&&i.data){const m=i;i=m.data,a=m.shape[0],l=m.shape[1]}i instanceof Le&&(i=i.handle),this.gl.bindTexture(this.target,this.handle),Cn(this.gl,g,()=>{if(d)this.gl.compressedTexSubImage2D(n,c,s,o,a,l,u,i);else if(i===null)this.gl.texSubImage2D(n,c,s,o,a,l,h,f,null);else if(ArrayBuffer.isView(i))this.gl.texSubImage2D(n,c,s,o,a,l,h,f,i,A);else if(i instanceof Q1){const m=Dt(this.gl);m.bindBuffer(35052,i),m.texSubImage2D(n,c,s,o,a,l,h,f,A),m.bindBuffer(35052,null)}else xe(this.gl)?Dt(this.gl).texSubImage2D(n,c,s,o,a,l,h,f,i):this.gl.texSubImage2D(n,c,s,o,h,f,i)}),this.gl.bindTexture(this.target,null)}copyFramebuffer(){return ie.error("Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})")(),null}getActiveUnit(){return this.gl.getParameter(34016)-33984}bind(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.textureUnit;const{gl:n}=this;return e!==void 0&&(this.textureUnit=e,n.activeTexture(33984+e)),n.bindTexture(this.target,this.handle),e}unbind(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.textureUnit;const{gl:n}=this;return e!==void 0&&(this.textureUnit=e,n.activeTexture(33984+e)),n.bindTexture(this.target,null),e}_getDataType(e){let{data:n,compressed:r=!1}=e;return r?{data:n,dataType:"compressed"}:n===null?{data:n,dataType:"null"}:ArrayBuffer.isView(n)?{data:n,dataType:"typed-array"}:n instanceof Le?{data:n.handle,dataType:"buffer"}:n instanceof Q1?{data:n,dataType:"buffer"}:{data:n,dataType:"browser-object"}}_deduceParameters(e){const{format:n,data:r}=e;let{width:i,height:s,dataFormat:o,type:a,compressed:l}=e;const c=Fm[n];return o=o||c&&c.dataFormat,a=a||c&&c.types[0],l=l||c&&c.compressed,{width:i,height:s}=this._deduceImageSize(r,i,s),{dataFormat:o,type:a,compressed:l,width:i,height:s,format:n,data:r}}_deduceImageSize(e,n,r){let i;return typeof ImageData<"u"&&e instanceof ImageData?i={width:e.width,height:e.height}:typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement?i={width:e.naturalWidth,height:e.naturalHeight}:typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement?i={width:e.width,height:e.height}:typeof ImageBitmap<"u"&&e instanceof ImageBitmap?i={width:e.width,height:e.height}:typeof HTMLVideoElement<"u"&&e instanceof HTMLVideoElement?i={width:e.videoWidth,height:e.videoHeight}:e?i={width:n,height:r}:i={width:n>=0?n:1,height:r>=0?r:1},q(i,"Could not deduced texture size"),q(n===void 0||i.width===n,"Deduced texture width does not match supplied width"),q(r===void 0||i.height===r,"Deduced texture height does not match supplied height"),i}_createHandle(){return this.gl.createTexture()}_deleteHandle(){this.gl.deleteTexture(this.handle),this._trackDeallocatedMemory("Texture")}_getParameter(e){switch(e){case 4096:return this.width;case 4097:return this.height;default:this.gl.bindTexture(this.target,this.handle);const n=this.gl.getTexParameter(this.target,e);return this.gl.bindTexture(this.target,null),n}}_setParameter(e,n){switch(this.gl.bindTexture(this.target,this.handle),n=this._getNPOTParam(e,n),e){case 33082:case 33083:this.gl.texParameterf(this.handle,e,n);break;case 4096:case 4097:q(!1);break;default:this.gl.texParameteri(this.target,e,n);break}return this.gl.bindTexture(this.target,null),this}_isNPOT(){return xe(this.gl)||!this.width||!this.height?!1:!D1(this.width)||!D1(this.height)}_updateForNPOT(e){e[this.gl.TEXTURE_MIN_FILTER]===void 0&&(e[this.gl.TEXTURE_MIN_FILTER]=this.gl.LINEAR),e[this.gl.TEXTURE_WRAP_S]===void 0&&(e[this.gl.TEXTURE_WRAP_S]=this.gl.CLAMP_TO_EDGE),e[this.gl.TEXTURE_WRAP_T]===void 0&&(e[this.gl.TEXTURE_WRAP_T]=this.gl.CLAMP_TO_EDGE)}_getNPOTParam(e,n){if(this._isNPOT())switch(e){case 10241:G8.indexOf(n)===-1&&(n=9729);break;case 10242:case 10243:n!==33071&&(n=33071);break}return n}}let z8="";function V8(t,e){return q(typeof t=="string"),t=z8+t,new Promise((n,r)=>{try{const i=new Image;i.onload=()=>n(i),i.onerror=()=>r(new Error("Could not load image ".concat(t,"."))),i.crossOrigin=e&&e.crossOrigin||"anonymous",i.src=t}catch(i){r(i)}})}class Ut extends _s{get[Symbol.toStringTag](){return"Texture2D"}static isSupported(e,n){return _s.isSupported(e,n)}constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};$h(e),(n instanceof Promise||typeof n=="string")&&(n={data:n}),typeof n.data=="string"&&(n=Object.assign({},n,{data:V8(n.data)})),super(e,Object.assign({},n,{target:3553})),this.initialize(n),Object.seal(this)}}const wp=[34069,34070,34071,34072,34073,34074];class Y2 extends _s{get[Symbol.toStringTag](){return"TextureCube"}constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};$h(e),super(e,Object.assign({},n,{target:34067})),this.initialize(n),Object.seal(this)}initialize(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{mipmaps:n=!0,parameters:r={}}=e;return this.opts=e,this.setCubeMapImageData(e).then(()=>{this.loaded=!0,n&&this.generateMipmap(e),this.setParameters(r)}),this}subImage(e){let{face:n,data:r,x:i=0,y:s=0,mipmapLevel:o=0}=e;return this._subImage({target:n,data:r,x:i,y:s,mipmapLevel:o})}async setCubeMapImageData(e){let{width:n,height:r,pixels:i,data:s,border:o=0,format:a=6408,type:l=5121}=e;const{gl:c}=this,u=i||s,f=await Promise.all(wp.map(h=>{const d=u[h];return Promise.all(Array.isArray(d)?d:[d])}));this.bind(),wp.forEach((h,d)=>{f[d].length>1&&this.opts.mipmaps!==!1&&ie.warn("".concat(this.id," has mipmap and multiple LODs."))(),f[d].forEach((A,p)=>{n&&r?c.texImage2D(h,p,a,n,r,o,a,l,A):c.texImage2D(h,p,a,a,l,A)})}),this.unbind()}setImageDataForFace(e){const{face:n,width:r,height:i,pixels:s,data:o,border:a=0,format:l=6408,type:c=5121}=e,{gl:u}=this,f=s||o;return this.bind(),f instanceof Promise?f.then(h=>this.setImageDataForFace(Object.assign({},e,{face:n,data:h,pixels:h}))):this.width||this.height?u.texImage2D(n,0,l,r,i,a,l,c,f):u.texImage2D(n,0,l,l,c,f),this}}Y2.FACES=wp;class $2 extends _s{get[Symbol.toStringTag](){return"Texture3D"}static isSupported(e){return xe(e)}constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Dt(e),n=Object.assign({depth:1},n,{target:32879,unpackFlipY:!1}),super(e,n),this.initialize(n),Object.seal(this)}setImageData(e){let{level:n=0,dataFormat:r=6408,width:i,height:s,depth:o=1,border:a=0,format:l,type:c=5121,offset:u=0,data:f,parameters:h={}}=e;if(this._trackDeallocatedMemory("Texture"),this.gl.bindTexture(this.target,this.handle),Cn(this.gl,h,()=>{ArrayBuffer.isView(f)&&this.gl.texImage3D(this.target,n,r,i,s,o,a,l,c,f),f instanceof Le&&(this.gl.bindBuffer(35052,f.handle),this.gl.texImage3D(this.target,n,r,i,s,o,a,l,c,u))}),f&&f.byteLength)this._trackAllocatedMemory(f.byteLength,"Texture");else{const d=H2[this.dataFormat]||4,A=W2[this.type]||1;this._trackAllocatedMemory(this.width*this.height*this.depth*d*A,"Texture")}return this.loaded=!0,this}}const Yi="EXT_color_buffer_float",F1={33189:{bpp:2},33190:{gl2:!0,bpp:3},36012:{gl2:!0,bpp:4},36168:{bpp:1},34041:{bpp:4},35056:{gl2:!0,bpp:4},36013:{gl2:!0,bpp:5},32854:{bpp:2},36194:{bpp:2},32855:{bpp:2},33321:{gl2:!0,bpp:1},33330:{gl2:!0,bpp:1},33329:{gl2:!0,bpp:1},33332:{gl2:!0,bpp:2},33331:{gl2:!0,bpp:2},33334:{gl2:!0,bpp:4},33333:{gl2:!0,bpp:4},33323:{gl2:!0,bpp:2},33336:{gl2:!0,bpp:2},33335:{gl2:!0,bpp:2},33338:{gl2:!0,bpp:4},33337:{gl2:!0,bpp:4},33340:{gl2:!0,bpp:8},33339:{gl2:!0,bpp:8},32849:{gl2:!0,bpp:3},32856:{gl2:!0,bpp:4},32857:{gl2:!0,bpp:4},36220:{gl2:!0,bpp:4},36238:{gl2:!0,bpp:4},36975:{gl2:!0,bpp:4},36214:{gl2:!0,bpp:8},36232:{gl2:!0,bpp:8},36226:{gl2:!0,bpp:16},36208:{gl2:!0,bpp:16},33325:{gl2:Yi,bpp:2},33327:{gl2:Yi,bpp:4},34842:{gl2:Yi,bpp:8},33326:{gl2:Yi,bpp:4},33328:{gl2:Yi,bpp:8},34836:{gl2:Yi,bpp:16},35898:{gl2:Yi,bpp:4}};function j8(t,e,n){const r=n[e];if(!r)return!1;const i=xe(t)&&r.gl2||r.gl1;return typeof i=="string"?t.getExtension(i):i}class co extends Wr{get[Symbol.toStringTag](){return"Renderbuffer"}static isSupported(e){let{format:n}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{format:null};return!n||j8(e,n,F1)}static getSamplesForFormat(e,n){let{format:r}=n;return e.getInternalformatParameter(36161,r,32937)}constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(e,n),this.initialize(n),Object.seal(this)}initialize(e){let{format:n,width:r=1,height:i=1,samples:s=0}=e;return q(n,"Needs format"),this._trackDeallocatedMemory(),this.gl.bindRenderbuffer(36161,this.handle),s!==0&&xe(this.gl)?this.gl.renderbufferStorageMultisample(36161,s,n,r,i):this.gl.renderbufferStorage(36161,n,r,i),this.format=n,this.width=r,this.height=i,this.samples=s,this._trackAllocatedMemory(this.width*this.height*(this.samples||1)*F1[this.format].bpp),this}resize(e){let{width:n,height:r}=e;return n!==this.width||r!==this.height?this.initialize({width:n,height:r,format:this.format,samples:this.samples}):this}_createHandle(){return this.gl.createRenderbuffer()}_deleteHandle(){this.gl.deleteRenderbuffer(this.handle),this._trackDeallocatedMemory()}_bindHandle(e){this.gl.bindRenderbuffer(36161,e)}_syncHandle(e){this.format=this.getParameter(36164),this.width=this.getParameter(36162),this.height=this.getParameter(36163),this.samples=this.getParameter(36011)}_getParameter(e){return this.gl.bindRenderbuffer(36161,this.handle),this.gl.getRenderbufferParameter(36161,e)}}const H8=256,W8=1024,Y8=16384,U1=6144,G1=6145,z1=6146,V1=34041,K2="clear: bad arguments";function Um(t){let{framebuffer:e=null,color:n=null,depth:r=null,stencil:i=null}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const s={};e&&(s.framebuffer=e);let o=0;n&&(o|=Y8,n!==!0&&(s.clearColor=n)),r&&(o|=H8,r!==!0&&(s.clearDepth=r)),i&&(o|=W8,r!==!0&&(s.clearStencil=r)),q(o!==0,K2),Cn(t,s,()=>{t.clear(o)})}function $8(t){let{framebuffer:e=null,buffer:n=U1,drawBuffer:r=0,value:i=[0,0,0,0]}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Dt(t),Cn(t,{framebuffer:e},()=>{switch(n){case U1:switch(i.constructor){case Int32Array:t.clearBufferiv(n,r,i);break;case Uint32Array:t.clearBufferuiv(n,r,i);break;case Float32Array:default:t.clearBufferfv(n,r,i)}break;case G1:t.clearBufferfv(G1,0,[i]);break;case z1:t.clearBufferiv(z1,0,[i]);break;case V1:const[s,o]=i;t.clearBufferfi(V1,0,s,o);break;default:q(!1,K2)}})}function K8(t){switch(t){case 6406:case 33326:case 6403:return 1;case 33328:case 33319:return 2;case 6407:case 34837:return 3;case 6408:case 34836:return 4;default:return q(!1),0}}function Kh(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{sourceX:n=0,sourceY:r=0,sourceFormat:i=6408}=e;let{sourceAttachment:s=36064,target:o=null,sourceWidth:a,sourceHeight:l,sourceType:c}=e;const{framebuffer:u,deleteFramebuffer:f}=q2(t);q(u);const{gl:h,handle:d,attachments:A}=u;a=a||u.width,l=l||u.height,s===36064&&d===null&&(s=1028),q(A[s]),c=c||A[s].type,o=X8(o,c,i,a,l),c=c||Cp(o);const p=h.bindFramebuffer(36160,d);return h.readPixels(n,r,a,l,i,c,o),h.bindFramebuffer(36160,p||null),f&&u.delete(),o}function j1(t){let{sourceAttachment:e=36064,targetMaxHeight:n=Number.MAX_SAFE_INTEGER}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=Kh(t,{sourceAttachment:e}),{width:i,height:s}=t;for(;s>n;)({data:r,width:i,height:s}=N8({data:r,width:i,height:s}));L8({data:r,width:i,height:s});const o=document.createElement("canvas");o.width=i,o.height=s;const a=o.getContext("2d"),l=a.createImageData(i,s);return l.data.set(r),a.putImageData(l,0,0),o.toDataURL()}function q8(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{sourceX:r=0,sourceY:i=0,targetMipmaplevel:s=0,targetInternalFormat:o=6408}=n;let{targetX:a,targetY:l,targetZ:c,width:u,height:f}=n;const{framebuffer:h,deleteFramebuffer:d}=q2(t);q(h);const{gl:A,handle:p}=h,g=typeof a<"u"||typeof l<"u"||typeof c<"u";a=a||0,l=l||0,c=c||0;const m=A.bindFramebuffer(36160,p);q(e);let v=null;if(e instanceof _s&&(v=e,u=Number.isFinite(u)?u:v.width,f=Number.isFinite(f)?f:v.height,v.bind(0),e=v.target),!g)A.copyTexImage2D(e,s,o,r,i,u,f,0);else switch(e){case 3553:case 34067:A.copyTexSubImage2D(e,s,a,l,r,i,u,f);break;case 35866:case 32879:Dt(A).copyTexSubImage3D(e,s,a,l,c,r,i,u,f);break}return v&&v.unbind(),A.bindFramebuffer(36160,m||null),d&&h.delete(),v}function q2(t){return t instanceof ct?{framebuffer:t,deleteFramebuffer:!1}:{framebuffer:o6(t),deleteFramebuffer:!0}}function X8(t,e,n,r,i){if(t)return t;e=e||5121;const s=Ql(e,{clamped:!1}),o=K8(n);return new s(r*i*o)}const Ne={WEBGL2:"WEBGL2",VERTEX_ARRAY_OBJECT:"VERTEX_ARRAY_OBJECT",TIMER_QUERY:"TIMER_QUERY",INSTANCED_RENDERING:"INSTANCED_RENDERING",MULTIPLE_RENDER_TARGETS:"MULTIPLE_RENDER_TARGETS",ELEMENT_INDEX_UINT32:"ELEMENT_INDEX_UINT32",BLEND_EQUATION_MINMAX:"BLEND_EQUATION_MINMAX",FLOAT_BLEND:"FLOAT_BLEND",COLOR_ENCODING_SRGB:"COLOR_ENCODING_SRGB",TEXTURE_DEPTH:"TEXTURE_DEPTH",TEXTURE_FLOAT:"TEXTURE_FLOAT",TEXTURE_HALF_FLOAT:"TEXTURE_HALF_FLOAT",TEXTURE_FILTER_LINEAR_FLOAT:"TEXTURE_FILTER_LINEAR_FLOAT",TEXTURE_FILTER_LINEAR_HALF_FLOAT:"TEXTURE_FILTER_LINEAR_HALF_FLOAT",TEXTURE_FILTER_ANISOTROPIC:"TEXTURE_FILTER_ANISOTROPIC",COLOR_ATTACHMENT_RGBA32F:"COLOR_ATTACHMENT_RGBA32F",COLOR_ATTACHMENT_FLOAT:"COLOR_ATTACHMENT_FLOAT",COLOR_ATTACHMENT_HALF_FLOAT:"COLOR_ATTACHMENT_HALF_FLOAT",GLSL_FRAG_DATA:"GLSL_FRAG_DATA",GLSL_FRAG_DEPTH:"GLSL_FRAG_DEPTH",GLSL_DERIVATIVES:"GLSL_DERIVATIVES",GLSL_TEXTURE_LOD:"GLSL_TEXTURE_LOD"};function J8(t){const e=new Ut(t,{format:6408,type:5126,dataFormat:6408}),n=new ct(t,{id:"test-framebuffer",check:!1,attachments:{36064:e}}),r=n.getStatus();return e.delete(),n.delete(),r===36053}const X2={[Ne.WEBGL2]:[!1,!0],[Ne.VERTEX_ARRAY_OBJECT]:["OES_vertex_array_object",!0],[Ne.TIMER_QUERY]:["EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2"],[Ne.INSTANCED_RENDERING]:["ANGLE_instanced_arrays",!0],[Ne.MULTIPLE_RENDER_TARGETS]:["WEBGL_draw_buffers",!0],[Ne.ELEMENT_INDEX_UINT32]:["OES_element_index_uint",!0],[Ne.BLEND_EQUATION_MINMAX]:["EXT_blend_minmax",!0],[Ne.FLOAT_BLEND]:["EXT_float_blend"],[Ne.COLOR_ENCODING_SRGB]:["EXT_sRGB",!0],[Ne.TEXTURE_DEPTH]:["WEBGL_depth_texture",!0],[Ne.TEXTURE_FLOAT]:["OES_texture_float",!0],[Ne.TEXTURE_HALF_FLOAT]:["OES_texture_half_float",!0],[Ne.TEXTURE_FILTER_LINEAR_FLOAT]:["OES_texture_float_linear"],[Ne.TEXTURE_FILTER_LINEAR_HALF_FLOAT]:["OES_texture_half_float_linear"],[Ne.TEXTURE_FILTER_ANISOTROPIC]:["EXT_texture_filter_anisotropic"],[Ne.COLOR_ATTACHMENT_RGBA32F]:[J8,"EXT_color_buffer_float"],[Ne.COLOR_ATTACHMENT_FLOAT]:[!1,"EXT_color_buffer_float"],[Ne.COLOR_ATTACHMENT_HALF_FLOAT]:["EXT_color_buffer_half_float"],[Ne.GLSL_FRAG_DATA]:["WEBGL_draw_buffers",!0],[Ne.GLSL_FRAG_DEPTH]:["EXT_frag_depth",!0],[Ne.GLSL_DERIVATIVES]:["OES_standard_derivatives",!0],[Ne.GLSL_TEXTURE_LOD]:["EXT_shader_texture_lod",!0]},Z8=2;function bp(t,e){return Gm(t,e)}function Gm(t,e){return e=Array.isArray(e)?e:[e],e.every(n=>J2(t,n))}function e6(t){t.luma=t.luma||{},t.luma.caps=t.luma.caps||{};for(const e in X2)t.luma.caps[e]===void 0&&(t.luma.caps[e]=J2(t,e));return t.luma.caps}function J2(t,e){return t.luma=t.luma||{},t.luma.caps=t.luma.caps||{},t.luma.caps[e]===void 0&&(t.luma.caps[e]=t6(t,e)),t.luma.caps[e]||ie.log(Z8,"Feature: ".concat(e," not supported"))(),t.luma.caps[e]}function t6(t,e){const n=X2[e];q(n,e);let r;const i=xe(t)&&n[1]||n[0];if(typeof i=="function")r=i(t);else if(Array.isArray(i)){r=!0;for(const s of i)r=r&&!!t.getExtension(s)}else typeof i=="string"?r=!!t.getExtension(i):typeof i=="boolean"?r=i:q(!1);return r}const H1="Multiple render targets not supported";class ct extends Wr{get[Symbol.toStringTag](){return"Framebuffer"}static isSupported(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{colorBufferFloat:r,colorBufferHalfFloat:i}=n;let s=!0;return r&&(s=!!(e.getExtension("EXT_color_buffer_float")||e.getExtension("WEBGL_color_buffer_float")||e.getExtension("OES_texture_float"))),i&&(s=s&&!!(e.getExtension("EXT_color_buffer_float")||e.getExtension("EXT_color_buffer_half_float"))),s}static getDefaultFramebuffer(e){return e.luma=e.luma||{},e.luma.defaultFramebuffer=e.luma.defaultFramebuffer||new ct(e,{id:"default-framebuffer",handle:null,attachments:{}}),e.luma.defaultFramebuffer}get MAX_COLOR_ATTACHMENTS(){const e=Dt(this.gl);return e.getParameter(e.MAX_COLOR_ATTACHMENTS)}get MAX_DRAW_BUFFERS(){const e=Dt(this.gl);return e.getParameter(e.MAX_DRAW_BUFFERS)}constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(e,n),this.width=null,this.height=null,this.attachments={},this.readBuffer=36064,this.drawBuffers=[36064],this.ownResources=[],this.initialize(n),Object.seal(this)}get color(){return this.attachments[36064]||null}get texture(){return this.attachments[36064]||null}get depth(){return this.attachments[36096]||this.attachments[33306]||null}get stencil(){return this.attachments[36128]||this.attachments[33306]||null}initialize(e){let{width:n=1,height:r=1,attachments:i=null,color:s=!0,depth:o=!0,stencil:a=!1,check:l=!0,readBuffer:c=void 0,drawBuffers:u=void 0}=e;if(q(n>=0&&r>=0,"Width and height need to be integers"),this.width=n,this.height=r,i)for(const f in i){const h=i[f];(Array.isArray(h)?h[0]:h).resize({width:n,height:r})}else i=this._createDefaultAttachments(s,o,a,n,r);this.update({clearAttachments:!0,attachments:i,readBuffer:c,drawBuffers:u}),i&&l&&this.checkStatus()}delete(){for(const e of this.ownResources)e.delete();return super.delete(),this}update(e){let{attachments:n={},readBuffer:r,drawBuffers:i,clearAttachments:s=!1,resizeAttachments:o=!0}=e;this.attach(n,{clearAttachments:s,resizeAttachments:o});const{gl:a}=this,l=a.bindFramebuffer(36160,this.handle);return r&&this._setReadBuffer(r),i&&this._setDrawBuffers(i),a.bindFramebuffer(36160,l||null),this}resize(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{width:n,height:r}=e;if(this.handle===null)return q(n===void 0&&r===void 0),this.width=this.gl.drawingBufferWidth,this.height=this.gl.drawingBufferHeight,this;n===void 0&&(n=this.gl.drawingBufferWidth),r===void 0&&(r=this.gl.drawingBufferHeight),n!==this.width&&r!==this.height&&ie.log(2,"Resizing framebuffer ".concat(this.id," to ").concat(n,"x").concat(r))();for(const i in this.attachments)this.attachments[i].resize({width:n,height:r});return this.width=n,this.height=r,this}attach(e){let{clearAttachments:n=!1,resizeAttachments:r=!0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const i={};n&&Object.keys(this.attachments).forEach(o=>{i[o]=null}),Object.assign(i,e);const s=this.gl.bindFramebuffer(36160,this.handle);for(const o in i){q(o!==void 0,"Misspelled framebuffer binding point?");const a=Number(o),l=i[a];let c=l;if(!c)this._unattach(a);else if(c instanceof co)this._attachRenderbuffer({attachment:a,renderbuffer:c});else if(Array.isArray(l)){const[u,f=0,h=0]=l;c=u,this._attachTexture({attachment:a,texture:u,layer:f,level:h})}else this._attachTexture({attachment:a,texture:c,layer:0,level:0});r&&c&&c.resize({width:this.width,height:this.height})}this.gl.bindFramebuffer(36160,s||null),Object.assign(this.attachments,e),Object.keys(this.attachments).filter(o=>!this.attachments[o]).forEach(o=>{delete this.attachments[o]})}checkStatus(){const e=this.getStatus();if(e!==36053)throw new Error(r6(e));return this}getStatus(){const{gl:e}=this,n=e.bindFramebuffer(36160,this.handle),r=e.checkFramebufferStatus(36160);return e.bindFramebuffer(36160,n||null),r}clear(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{color:n,depth:r,stencil:i,drawBuffers:s=[]}=e,o=this.gl.bindFramebuffer(36160,this.handle);return(n||r||i)&&Um(this.gl,{color:n,depth:r,stencil:i}),s.forEach((a,l)=>{$8(this.gl,{drawBuffer:l,value:a})}),this.gl.bindFramebuffer(36160,o||null),this}readPixels(){return ie.error("Framebuffer.readPixels() is no logner supported, use readPixelsToArray(framebuffer)")(),null}readPixelsToBuffer(){return ie.error("Framebuffer.readPixelsToBuffer()is no logner supported, use readPixelsToBuffer(framebuffer)")(),null}copyToDataUrl(){return ie.error("Framebuffer.copyToDataUrl() is no logner supported, use copyToDataUrl(framebuffer)")(),null}copyToImage(){return ie.error("Framebuffer.copyToImage() is no logner supported, use copyToImage(framebuffer)")(),null}copyToTexture(){return ie.error("Framebuffer.copyToTexture({...}) is no logner supported, use copyToTexture(source, target, opts})")(),null}blit(){return ie.error("Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)")(),null}invalidate(e){let{attachments:n=[],x:r=0,y:i=0,width:s,height:o}=e;const a=Dt(this.gl),l=a.bindFramebuffer(36008,this.handle);return r===0&&i===0&&s===void 0&&o===void 0?a.invalidateFramebuffer(36008,n):a.invalidateFramebuffer(36008,n,r,i,s,o),a.bindFramebuffer(36008,l),this}getAttachmentParameter(e,n,r){let i=this._getAttachmentParameterFallback(n);return i===null&&(this.gl.bindFramebuffer(36160,this.handle),i=this.gl.getFramebufferAttachmentParameter(36160,e,n),this.gl.bindFramebuffer(36160,null)),r&&i>1e3&&(i=Ci(this.gl,i)),i}getAttachmentParameters(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:36064,n=arguments.length>1?arguments[1]:void 0,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.constructor.ATTACHMENT_PARAMETERS||[];const i={};for(const s of r){const o=n?Ci(this.gl,s):s;i[o]=this.getAttachmentParameter(e,s,n)}return i}getParameters(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;const n=Object.keys(this.attachments),r={};for(const i of n){const s=Number(i),o=e?Ci(this.gl,s):s;r[o]=this.getAttachmentParameters(s,e)}return r}show(){return typeof window<"u"&&window.open(j1(this),"luma-debug-texture"),this}log(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";if(e>ie.level||typeof window>"u")return this;n=n||"Framebuffer ".concat(this.id);const r=j1(this,{targetMaxHeight:100});return ie.image({logLevel:e,message:n,image:r},n)(),this}bind(){let{target:e=36160}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.gl.bindFramebuffer(e,this.handle),this}unbind(){let{target:e=36160}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.gl.bindFramebuffer(e,null),this}_createDefaultAttachments(e,n,r,i,s){let o=null;return e&&(o=o||{},o[36064]=new Ut(this.gl,{id:"".concat(this.id,"-color0"),pixels:null,format:6408,type:5121,width:i,height:s,mipmaps:!1,parameters:{10241:9729,10240:9729,10242:33071,10243:33071}}),this.ownResources.push(o[36064])),n&&r?(o=o||{},o[33306]=new co(this.gl,{id:"".concat(this.id,"-depth-stencil"),format:35056,width:i,height:111}),this.ownResources.push(o[33306])):n?(o=o||{},o[36096]=new co(this.gl,{id:"".concat(this.id,"-depth"),format:33189,width:i,height:s}),this.ownResources.push(o[36096])):r&&q(!1),o}_unattach(e){const n=this.attachments[e];n&&(n instanceof co?this.gl.framebufferRenderbuffer(36160,e,36161,null):this.gl.framebufferTexture2D(36160,e,3553,null,0),delete this.attachments[e])}_attachRenderbuffer(e){let{attachment:n=36064,renderbuffer:r}=e;const{gl:i}=this;i.framebufferRenderbuffer(36160,n,36161,r.handle),this.attachments[n]=r}_attachTexture(e){let{attachment:n=36064,texture:r,layer:i,level:s}=e;const{gl:o}=this;switch(o.bindTexture(r.target,r.handle),r.target){case 35866:case 32879:Dt(o).framebufferTextureLayer(36160,n,r.target,s,i);break;case 34067:const l=n6(i);o.framebufferTexture2D(36160,n,l,r.handle,s);break;case 3553:o.framebufferTexture2D(36160,n,3553,r.handle,s);break;default:q(!1,"Illegal texture type")}o.bindTexture(r.target,null),this.attachments[n]=r}_setReadBuffer(e){const n=LO(this.gl);n?n.readBuffer(e):q(e===36064||e===1029,H1),this.readBuffer=e}_setDrawBuffers(e){const{gl:n}=this,r=Dt(n);if(r)r.drawBuffers(e);else{const i=n.getExtension("WEBGL_draw_buffers");i?i.drawBuffersWEBGL(e):q(e.length===1&&(e[0]===36064||e[0]===1029),H1)}this.drawBuffers=e}_getAttachmentParameterFallback(e){const n=e6(this.gl);switch(e){case 36052:return n.WEBGL2?null:0;case 33298:case 33299:case 33300:case 33301:case 33302:case 33303:return n.WEBGL2?null:8;case 33297:return n.WEBGL2?null:5125;case 33296:return!n.WEBGL2&&!n.EXT_sRGB?9729:null;default:return null}}_createHandle(){return this.gl.createFramebuffer()}_deleteHandle(){this.gl.deleteFramebuffer(this.handle)}_bindHandle(e){return this.gl.bindFramebuffer(36160,e)}}function n6(t){return t<34069?t+34069:t}function r6(t){return(ct.STATUS||{})[t]||"Framebuffer error ".concat(t)}const i6=[36049,36048,33296,33298,33299,33300,33301,33302,33303];ct.ATTACHMENT_PARAMETERS=i6;function s6(t,e){q(t instanceof Ut||t instanceof Y2||t instanceof $2);const n=t.constructor,{gl:r,width:i,height:s,format:o,type:a,dataFormat:l,border:c,mipmaps:u}=t,f=Object.assign({width:i,height:s,format:o,type:a,dataFormat:l,border:c,mipmaps:u},e);return new n(r,f)}function o6(t,e){const{gl:n,width:r,height:i,id:s}=t;return new ct(n,Object.assign({},e,{id:"framebuffer-for-".concat(s),width:r,height:i,attachments:{36064:t}}))}function nf(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"unnamed";const n=/#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/,r=t.match(n);return r?r[1]:e}const a6=35632,l6=35633;function c6(t){switch(t){case a6:return"fragment";case l6:return"vertex";default:return"unknown type"}}function u6(t,e,n,r){const i=t.split(/\r?\n/),s={},o={},a=r||nf(e)||"(unnamed)",l="".concat(c6(n)," shader ").concat(a);for(let u=0;u1&&arguments[1]!==void 0?arguments[1]:1,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:": ";const r=t.split(/\r?\n/),i=String(r.length+e-1).length;return r.map((s,o)=>{const a=String(o+e),l=a.length;return Z2(a,i-l)+n+s})}function Z2(t,e){let n="";for(let r=0;r=2&&n[0]==="#version"){const r=parseInt(n[1],10);Number.isFinite(r)&&(e=r)}return e}const h6="Shader: GLSL source code must be a JavaScript string";class Fl extends Wr{get[Symbol.toStringTag](){return"Shader"}static getTypeName(e){switch(e){case 35633:return"vertex-shader";case 35632:return"fragment-shader";default:return q(!1),"unknown"}}constructor(e,n){$h(e),q(typeof n.source=="string",h6);const r=nf(n.source,null)||n.id||Pi("unnamed ".concat(Fl.getTypeName(n.shaderType)));super(e,{id:r}),this.shaderType=n.shaderType,this.source=n.source,this.initialize(n)}initialize(e){let{source:n}=e;const r=nf(n,null);r&&(this.id=Pi(r)),this._compile(n)}getParameter(e){return this.gl.getShaderParameter(this.handle,e)}toString(){return"".concat(Fl.getTypeName(this.shaderType),":").concat(this.id)}getName(){return nf(this.source)||"unnamed-shader"}getSource(){return this.gl.getShaderSource(this.handle)}getTranslatedSource(){const e=this.gl.getExtension("WEBGL_debug_shaders");return e?e.getTranslatedShaderSource(this.handle):"No translated source available. WEBGL_debug_shaders not implemented"}_compile(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.source;if(e.startsWith("#version ")||(e=`#version 100 +`.concat(e)),this.source=e,this.gl.shaderSource(this.handle,this.source),this.gl.compileShader(this.handle),!this.getParameter(35713)){const r=this.gl.getShaderInfoLog(this.handle),{shaderName:i,errors:s,warnings:o}=u6(r,this.source,this.shaderType,this.id);throw ie.error("GLSL compilation errors in ".concat(i,` +`).concat(s))(),ie.warn("GLSL compilation warnings in ".concat(i,` +`).concat(o))(),new Error("GLSL compilation errors in ".concat(i))}}_deleteHandle(){this.gl.deleteShader(this.handle)}_getOptsFromHandle(){return{type:this.getParameter(35663),source:this.getSource()}}}class MA extends Fl{get[Symbol.toStringTag](){return"VertexShader"}constructor(e,n){typeof n=="string"&&(n={source:n}),super(e,Object.assign({},n,{shaderType:35633}))}_createHandle(){return this.gl.createShader(35633)}}class LA extends Fl{get[Symbol.toStringTag](){return"FragmentShader"}constructor(e,n){typeof n=="string"&&(n={source:n}),super(e,Object.assign({},n,{shaderType:35632}))}_createHandle(){return this.gl.createShader(35632)}}const d6={5126:je.bind(null,"uniform1fv",rn,1,Pt),35664:je.bind(null,"uniform2fv",rn,2,Pt),35665:je.bind(null,"uniform3fv",rn,3,Pt),35666:je.bind(null,"uniform4fv",rn,4,Pt),5124:je.bind(null,"uniform1iv",ei,1,Pt),35667:je.bind(null,"uniform2iv",ei,2,Pt),35668:je.bind(null,"uniform3iv",ei,3,Pt),35669:je.bind(null,"uniform4iv",ei,4,Pt),35670:je.bind(null,"uniform1iv",ei,1,Pt),35671:je.bind(null,"uniform2iv",ei,2,Pt),35672:je.bind(null,"uniform3iv",ei,3,Pt),35673:je.bind(null,"uniform4iv",ei,4,Pt),35674:je.bind(null,"uniformMatrix2fv",rn,4,xr),35675:je.bind(null,"uniformMatrix3fv",rn,9,xr),35676:je.bind(null,"uniformMatrix4fv",rn,16,xr),35678:xt,35680:xt,5125:je.bind(null,"uniform1uiv",cu,1,Pt),36294:je.bind(null,"uniform2uiv",cu,2,Pt),36295:je.bind(null,"uniform3uiv",cu,3,Pt),36296:je.bind(null,"uniform4uiv",cu,4,Pt),35685:je.bind(null,"uniformMatrix2x3fv",rn,6,xr),35686:je.bind(null,"uniformMatrix2x4fv",rn,8,xr),35687:je.bind(null,"uniformMatrix3x2fv",rn,6,xr),35688:je.bind(null,"uniformMatrix3x4fv",rn,12,xr),35689:je.bind(null,"uniformMatrix4x2fv",rn,8,xr),35690:je.bind(null,"uniformMatrix4x3fv",rn,12,xr),35678:xt,35680:xt,35679:xt,35682:xt,36289:xt,36292:xt,36293:xt,36298:xt,36299:xt,36300:xt,36303:xt,36306:xt,36307:xt,36308:xt,36311:xt},A6={},g6={},p6={},Y1=[0];function zm(t,e,n,r){e===1&&typeof t=="boolean"&&(t=t?1:0),Number.isFinite(t)&&(Y1[0]=t,t=Y1);const i=t.length;if(i%e&&ie.warn("Uniform size should be multiples of ".concat(e),t)(),t instanceof n)return t;let s=r[i];s||(s=new n(i),r[i]=s);for(let o=0;o{const i=t!==r;return i&&(e.uniform1i(n,r),t=r),i}}function je(t,e,n,r){let i=null,s=null;return(o,a,l)=>{const c=e(l,n),u=c.length;let f=!1;if(i===null)i=new Float32Array(u),s=u,f=!0;else{q(s===u,"Uniform length cannot change.");for(let h=0;h=0&&this._addAttribute(l,s,o,a)}this.attributeInfos.sort((i,s)=>i.location-s.location)}_readVaryingsFromProgram(e){const{gl:n}=e;if(!xe(n))return;const r=n.getProgramParameter(e.handle,35971);for(let i=0;ii.location-s.location)}_addAttribute(e,n,r,i){const{type:s,components:o}=q1(r),a={type:s,size:i*o};this._inferProperties(e,n,a);const l={location:e,name:n,accessor:new ln(a)};this.attributeInfos.push(l),this.attributeInfosByLocation[e]=l,this.attributeInfosByName[l.name]=l}_inferProperties(e,n,r){/instance/i.test(n)&&(r.divisor=1)}_addVarying(e,n,r,i){const{type:s,components:o}=q1(r),a=new ln({type:s,size:i*o}),l={location:e,name:n,accessor:a};this.varyingInfos.push(l),this.varyingInfosByName[l.name]=l}}const X1=4,eD=35981,tD=["setVertexArray","setAttributes","setBuffers","unsetBuffers","use","getUniformCount","getUniformInfo","getUniformLocation","getUniformValue","getVarying","getFragDataLocation","getAttachedShaders","getAttributeCount","getAttributeLocation","getAttributeInfo"];class nb extends Wr{get[Symbol.toStringTag](){return"Program"}constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(e,n),this.stubRemovedMethods("Program","v6.0",tD),this._isCached=!1,this.initialize(n),Object.seal(this),this._setId(n.id)}initialize(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{hash:n,vs:r,fs:i,varyings:s,bufferMode:o=eD}=e;return this.hash=n||"",this.vs=typeof r=="string"?new MA(this.gl,{id:"".concat(e.id,"-vs"),source:r}):r,this.fs=typeof i=="string"?new LA(this.gl,{id:"".concat(e.id,"-fs"),source:i}):i,q(this.vs instanceof MA),q(this.fs instanceof LA),this.uniforms={},this._textureUniforms={},s&&s.length>0&&(Dt(this.gl),this.varyings=s,this.gl2.transformFeedbackVaryings(this.handle,s,o)),this._compileAndLink(),this._readUniformLocationsFromLinkedProgram(),this.configuration=new Z6(this),this.setProps(e)}delete(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this._isCached?this:super.delete(e)}setProps(e){return"uniforms"in e&&this.setUniforms(e.uniforms),this}draw(e){let{logPriority:n,drawMode:r=4,vertexCount:i,offset:s=0,start:o,end:a,isIndexed:l=!1,indexType:c=5123,instanceCount:u=0,isInstanced:f=u>0,vertexArray:h=null,transformFeedback:d,framebuffer:A,parameters:p={},uniforms:g,samplers:m}=e;if((g||m)&&(ie.deprecated("Program.draw({uniforms})","Program.setUniforms(uniforms)")(),this.setUniforms(g||{})),ie.priority>=n){const v=A?A.id:"default",E="mode=".concat(Ci(this.gl,r)," verts=").concat(i," ")+"instances=".concat(u," indexType=").concat(Ci(this.gl,c)," ")+"isInstanced=".concat(f," isIndexed=").concat(l," ")+"Framebuffer=".concat(v);ie.log(n,E)()}return q(h),this.gl.useProgram(this.handle),!this._areTexturesRenderable()||i===0||f&&u===0?!1:(h.bindForDraw(i,u,()=>{if(A!==void 0&&(p=Object.assign({},p,{framebuffer:A})),d){const v=J6(r);d.begin(v)}this._bindTextures(),Cn(this.gl,p,()=>{l&&f?this.gl2.drawElementsInstanced(r,i,c,s,u):l&&xe(this.gl)&&!isNaN(o)&&!isNaN(a)?this.gl2.drawRangeElements(r,o,a,i,c,s):l?this.gl.drawElements(r,i,c,s):f?this.gl2.drawArraysInstanced(r,s,i,u):this.gl.drawArrays(r,s,i)}),d&&d.end()}),!0)}setUniforms(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};ie.priority>=2&&v6(e,this.id,this._uniformSetters),this.gl.useProgram(this.handle);for(const n in e){const r=e[n],i=this._uniformSetters[n];if(i){let s=r,o=!1;if(s instanceof ct&&(s=s.texture),s instanceof _s)if(o=this.uniforms[n]!==r,o){i.textureIndex===void 0&&(i.textureIndex=this._textureIndexCounter++);const a=s,{textureIndex:l}=i;a.bind(l),s=l,this._textureUniforms[n]=a}else s=i.textureIndex;else this._textureUniforms[n]&&delete this._textureUniforms[n];(i(s)||o)&&E6(this.uniforms,n,r)}}return this}_areTexturesRenderable(){let e=!0;for(const n in this._textureUniforms){const r=this._textureUniforms[n];r.update(),e=e&&r.loaded}return e}_bindTextures(){for(const e in this._textureUniforms){const n=this._uniformSetters[e].textureIndex;this._textureUniforms[e].bind(n)}}_createHandle(){return this.gl.createProgram()}_deleteHandle(){this.gl.deleteProgram(this.handle)}_getOptionsFromHandle(e){const n=this.gl.getAttachedShaders(e),r={};for(const i of n)switch(this.gl.getShaderParameter(this.handle,35663)){case 35633:r.vs=new MA({handle:i});break;case 35632:r.fs=new LA({handle:i});break}return r}_getParameter(e){return this.gl.getProgramParameter(this.handle,e)}_setId(e){if(!e){const n=this._getName();this.id=Pi(n)}}_getName(){let e=this.vs.getName()||this.fs.getName();return e=e.replace(/shader/i,""),e=e?"".concat(e,"-program"):"program",e}_compileAndLink(){const{gl:e}=this;if(e.attachShader(this.handle,this.vs.handle),e.attachShader(this.handle,this.fs.handle),ie.time(X1,"linkProgram for ".concat(this._getName()))(),e.linkProgram(this.handle),ie.timeEnd(X1,"linkProgram for ".concat(this._getName()))(),e.debug||ie.level>0){if(!e.getProgramParameter(this.handle,35714))throw new Error("Error linking: ".concat(e.getProgramInfoLog(this.handle)));if(e.validateProgram(this.handle),!e.getProgramParameter(this.handle,35715))throw new Error("Error validating: ".concat(e.getProgramInfoLog(this.handle)))}}_readUniformLocationsFromLinkedProgram(){const{gl:e}=this;this._uniformSetters={},this._uniformCount=this._getParameter(35718);for(let n=0;n1)for(let o=0;o1&&arguments[1]!==void 0?arguments[1]:[];const r=xe(e),i=Gm(e,Ne.TIMER_QUERY);let s=r||i;for(const o of n)switch(o){case"queries":s=s&&r;break;case"timers":s=s&&i;break;default:q(!1)}return s}constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(e,n),this.target=null,this._queryPending=!1,this._pollingPromise=null,Object.seal(this)}beginTimeElapsedQuery(){return this.begin(iD)}beginOcclusionQuery(){let{conservative:e=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.begin(e?lD:aD)}beginTransformFeedbackQuery(){return this.begin(oD)}begin(e){return this._queryPending?this:(this.target=e,this.gl2.beginQuery(this.target,this.handle),this)}end(){return this._queryPending?this:(this.target&&(this.gl2.endQuery(this.target),this.target=null,this._queryPending=!0),this)}isResultAvailable(){if(!this._queryPending)return!1;const e=this.gl2.getQueryParameter(this.handle,rD);return e&&(this._queryPending=!1),e}isTimerDisjoint(){return this.gl2.getParameter(sD)}getResult(){return this.gl2.getQueryParameter(this.handle,nD)}getTimerMilliseconds(){return this.getResult()/1e6}createPoll(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Number.POSITIVE_INFINITY;if(this._pollingPromise)return this._pollingPromise;let n=0;return this._pollingPromise=new Promise((r,i)=>{const s=()=>{this.isResultAvailable()?(r(this.getResult()),this._pollingPromise=null):n++>e?(i("Timed out"),this._pollingPromise=null):requestAnimationFrame(s)};requestAnimationFrame(s)}),this._pollingPromise}_createHandle(){return Kf.isSupported(this.gl)?this.gl2.createQuery():null}_deleteHandle(){this.gl2.deleteQuery(this.handle)}}class rb extends Wr{get[Symbol.toStringTag](){return"TransformFeedback"}static isSupported(e){return xe(e)}constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Dt(e),super(e,n),this.initialize(n),this.stubRemovedMethods("TransformFeedback","v6.0",["pause","resume"]),Object.seal(this)}initialize(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.buffers={},this.unused={},this.configuration=null,this.bindOnUse=!0,ko(this.buffers)||this.bind(()=>this._unbindBuffers()),this.setProps(e),this}setProps(e){"program"in e&&(this.configuration=e.program&&e.program.configuration),"configuration"in e&&(this.configuration=e.configuration),"bindOnUse"in e&&(e=e.bindOnUse),"buffers"in e&&this.setBuffers(e.buffers)}setBuffers(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.bind(()=>{for(const n in e)this.setBuffer(n,e[n])}),this}setBuffer(e,n){const r=this._getVaryingIndex(e),{buffer:i,byteSize:s,byteOffset:o}=this._getBufferParams(n);return r<0?(this.unused[e]=i,ie.warn("".concat(this.id," unused varying buffer ").concat(e))(),this):(this.buffers[r]=n,this.bindOnUse||this._bindBuffer(r,i,o,s),this)}begin(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.gl.bindTransformFeedback(36386,this.handle),this._bindBuffers(),this.gl.beginTransformFeedback(e),this}end(){return this.gl.endTransformFeedback(),this._unbindBuffers(),this.gl.bindTransformFeedback(36386,null),this}_getBufferParams(e){let n,r,i;return e instanceof Le?i=e:(i=e.buffer,r=e.byteSize,n=e.byteOffset),(n!==void 0||r!==void 0)&&(n=n||0,r=r||i.byteLength-n),{buffer:i,byteOffset:n,byteSize:r}}_getVaryingInfo(e){return this.configuration&&this.configuration.getVaryingInfo(e)}_getVaryingIndex(e){if(this.configuration)return this.configuration.getVaryingInfo(e).location;const n=Number(e);return Number.isFinite(n)?n:-1}_bindBuffers(){if(this.bindOnUse)for(const e in this.buffers){const{buffer:n,byteSize:r,byteOffset:i}=this._getBufferParams(this.buffers[e]);this._bindBuffer(e,n,i,r)}}_unbindBuffers(){if(this.bindOnUse)for(const e in this.buffers)this._bindBuffer(e,null)}_bindBuffer(e,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,i=arguments.length>3?arguments[3]:void 0;const s=n&&n.handle;return!s||i===void 0?this.gl.bindBufferBase(35982,e,s):this.gl.bindBufferRange(35982,e,s,r,i),this}_createHandle(){return this.gl.createTransformFeedback()}_deleteHandle(){this.gl.deleteTransformFeedback(this.handle)}_bindHandle(e){this.gl.bindTransformFeedback(36386,this.handle)}}let hu=null;function cD(t){return(!hu||hu.byteLength1&&arguments[1]!==void 0?arguments[1]:{}).constantAttributeZero?xe(e)||x2()==="Chrome":!0}static getDefaultArray(e){return e.luma=e.luma||{},e.luma.defaultVertexArray||(e.luma.defaultVertexArray=new on(e,{handle:null,isDefaultArray:!0})),e.luma.defaultVertexArray}static getMaxAttributes(e){return on.MAX_ATTRIBUTES=on.MAX_ATTRIBUTES||e.getParameter(34921),on.MAX_ATTRIBUTES}static setConstant(e,n,r){switch(r.constructor){case Float32Array:on._setConstantFloatArray(e,n,r);break;case Int32Array:on._setConstantIntArray(e,n,r);break;case Uint32Array:on._setConstantUintArray(e,n,r);break;default:q(!1)}}constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=n.id||n.program&&n.program.id;super(e,Object.assign({},n,{id:r})),this.buffer=null,this.bufferValue=null,this.isDefaultArray=n.isDefaultArray||!1,this.gl2=e,this.initialize(n),Object.seal(this)}delete(){return super.delete(),this.buffer&&this.buffer.delete(),this}get MAX_ATTRIBUTES(){return on.getMaxAttributes(this.gl)}initialize(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.setProps(e)}setProps(e){return this}setElementBuffer(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;return q(!e||e.target===34963,hD),this.bind(()=>{this.gl.bindBuffer(34963,e?e.handle:null)}),this}setBuffer(e,n,r){if(n.target===34963)return this.setElementBuffer(n,r);const{size:i,type:s,stride:o,offset:a,normalized:l,integer:c,divisor:u}=r,{gl:f,gl2:h}=this;return e=Number(e),this.bind(()=>{f.bindBuffer(34962,n.handle),c?(q(xe(f)),h.vertexAttribIPointer(e,i,s,o,a)):f.vertexAttribPointer(e,i,s,l,o,a),f.enableVertexAttribArray(e),h.vertexAttribDivisor(e,u||0)}),this}enable(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return!n&&e===0&&!on.isSupported(this.gl,{constantAttributeZero:!0})||(e=Number(e),this.bind(()=>n?this.gl.enableVertexAttribArray(e):this.gl.disableVertexAttribArray(e))),this}getConstantBuffer(e,n){const r=this._normalizeConstantArrayValue(n),i=r.byteLength*e,s=r.length*e;let o=!this.buffer;if(this.buffer=this.buffer||new Le(this.gl,i),o=o||this.buffer.reallocate(i),o=o||!this._compareConstantArrayValues(r,this.bufferValue),o){const a=uD(n.constructor,s);fD({target:a,source:r,start:0,count:s}),this.buffer.subData(a),this.bufferValue=n}return this.buffer}_normalizeConstantArrayValue(e){return Array.isArray(e)?new Float32Array(e):e}_compareConstantArrayValues(e,n){if(!e||!n||e.length!==n.length||e.constructor!==n.constructor)return!1;for(let r=0;r{switch(e){case 34373:return this.gl.getVertexAttribOffset(r,e);default:return this.gl.getVertexAttrib(r,e)}})}}const dD="VertexArray: attributes must be Buffers or constants (i.e. typed array)",AD=/^(.+)__LOCATION_([0-9]+)$/,gD=["setBuffers","setGeneric","clearBindings","setLocations","setGenericValues","setDivisor","enable","disable"];class pD{constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=n.id||n.program&&n.program.id;this.id=r,this.gl=e,this.configuration=null,this.elements=null,this.elementsAccessor=null,this.values=null,this.accessors=null,this.unused=null,this.drawParams=null,this.buffer=null,this.attributes={},this.vertexArrayObject=new on(e),V2(this,"VertexArray","v6.0",gD),this.initialize(n),Object.seal(this)}delete(){this.buffer&&this.buffer.delete(),this.vertexArrayObject.delete()}initialize(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.reset(),this.configuration=null,this.bindOnUse=!1,this.setProps(e)}reset(){this.elements=null,this.elementsAccessor=null;const{MAX_ATTRIBUTES:e}=this.vertexArrayObject;return this.values=new Array(e).fill(null),this.accessors=new Array(e).fill(null),this.unused={},this.drawParams=null,this}setProps(e){return"program"in e&&(this.configuration=e.program&&e.program.configuration),"configuration"in e&&(this.configuration=e.configuration),"attributes"in e&&this.setAttributes(e.attributes),"elements"in e&&this.setElementBuffer(e.elements),"bindOnUse"in e&&(e=e.bindOnUse),this}clearDrawParams(){this.drawParams=null}getDrawParams(){return this.drawParams=this.drawParams||this._updateDrawParams(),this.drawParams}setAttributes(e){return Object.assign(this.attributes,e),this.vertexArrayObject.bind(()=>{for(const n in e){const r=e[n];this._setAttribute(n,r)}this.gl.bindBuffer(34962,null)}),this}setElementBuffer(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return this.elements=e,this.elementsAccessor=n,this.clearDrawParams(),this.vertexArrayObject.setElementBuffer(e,n),this}setBuffer(e,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(n.target===34963)return this.setElementBuffer(n,r);const{location:i,accessor:s}=this._resolveLocationAndAccessor(e,n,n.accessor,r);return i>=0&&(this.values[i]=n,this.accessors[i]=s,this.clearDrawParams(),this.vertexArrayObject.setBuffer(i,n,s)),this}setConstant(e,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{location:i,accessor:s}=this._resolveLocationAndAccessor(e,n,Object.assign({size:n.length},r));return i>=0&&(n=this.vertexArrayObject._normalizeConstantArrayValue(n),this.values[i]=n,this.accessors[i]=s,this.clearDrawParams(),this.vertexArrayObject.enable(i,!1)),this}unbindBuffers(){return this.vertexArrayObject.bind(()=>{this.elements&&this.vertexArrayObject.setElementBuffer(null),this.buffer=this.buffer||new Le(this.gl,{accessor:{size:4}});for(let e=0;e{this.elements&&this.setElementBuffer(this.elements);for(let e=0;e{this._setConstantAttributes(e,n),i=r()}),i}_resolveLocationAndAccessor(e,n,r,i){const s={location:-1,accessor:null},{location:o,name:a}=this._getAttributeIndex(e);if(!Number.isFinite(o)||o<0)return this.unused[e]=n,ie.once(3,()=>"unused value ".concat(e," in ").concat(this.id))(),s;const l=this._getAttributeInfo(a||o);if(!l)return s;const c=this.accessors[o]||{},u=ln.resolve(l.accessor,c,r,i),{size:f,type:h}=u;return q(Number.isFinite(f)&&Number.isFinite(h)),{location:o,accessor:u}}_getAttributeInfo(e){return this.configuration&&this.configuration.getAttributeInfo(e)}_getAttributeIndex(e){const n=Number(e);if(Number.isFinite(n))return{location:n};const r=AD.exec(e),i=r?r[1]:e,s=r?Number(r[2]):0;return this.configuration?{location:this.configuration.getAttributeLocation(i)+s,name:i}:{location:-1}}_setAttribute(e,n){if(n instanceof Le)this.setBuffer(e,n);else if(Array.isArray(n)&&n.length&&n[0]instanceof Le){const r=n[0],i=n[1];this.setBuffer(e,r,i)}else if(ArrayBuffer.isView(n)||Array.isArray(n)){const r=n;this.setConstant(e,r)}else if(n.buffer instanceof Le){const r=n;this.setBuffer(e,r.buffer,r)}else throw new Error(dD)}_setConstantAttributes(e,n){const r=Math.max(e|0,n|0);let i=this.values[0];ArrayBuffer.isView(i)&&this._setConstantAttributeZero(i,r);for(let s=1;s0;if(e.isInstanced=e.isInstanced||o,r instanceof Le){const a=r;if(o){const l=a.getVertexCount(i);e.instanceCount=Math.min(e.instanceCount,l)}else{const l=a.getVertexCount(i);e.vertexCount=Math.min(e.vertexCount,l)}}}setElements(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return ie.deprecated("setElements","setElementBuffer")(),this.setElementBuffer(e,n)}}function mD(t,e){const{maxElts:n=16,size:r=1}=e;let i="[";for(let o=0;o0&&(i+=",".concat(o%r===0?" ":"")),i+=Ul(t[o],e);const s=t.length>n?"...":"]";return"".concat(i).concat(s)}function Ul(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const n=1e-16,{isInteger:r=!1}=e;if(Array.isArray(t)||ArrayBuffer.isView(t))return mD(t,e);if(!Number.isFinite(t))return String(t);if(Math.abs(t)100&&Math.abs(t)<1e4)return t.toFixed(0);const i=t.toPrecision(2);return i.indexOf(".0")===i.length-2?i.slice(0,-1):i}function J1(t){let{header:e="Uniforms",program:n,uniforms:r,undefinedOnly:i=!1}=t;q(n);const s=".*_.*",o=".*Matrix",a=n._uniformSetters,l={},c=Object.keys(a).sort();let u=0;for(const d of c)!d.match(s)&&!d.match(o)&&NA({table:l,header:e,uniforms:r,uniformName:d,undefinedOnly:i})&&u++;for(const d of c)d.match(o)&&NA({table:l,header:e,uniforms:r,uniformName:d,undefinedOnly:i})&&u++;for(const d of c)l[d]||NA({table:l,header:e,uniforms:r,uniformName:d,undefinedOnly:i})&&u++;let f=0;const h={};if(!i)for(const d in r){const A=r[d];l[d]||(f++,h[d]={Type:"NOT USED: ".concat(A),[e]:Ul(A)})}return{table:l,count:u,unusedTable:h,unusedCount:f}}function NA(t){let{table:e,header:n,uniforms:r,uniformName:i,undefinedOnly:s}=t;const o=r[i],a=vD(o);return!s||!a?(e[i]={[n]:a?Ul(o):"N/A","Uniform Type":a?o:"NOT PROVIDED"},!0):!1}function vD(t){return t!=null}function yD(t){let{vertexArray:e,header:n="Attributes"}=t;if(!e.configuration)return{};const r={};e.elements&&(r.ELEMENT_ARRAY_BUFFER=Z1(e,e.elements,null,n));const i=e.values;for(const s in i){const o=e._getAttributeInfo(s);if(o){let a="".concat(s,": ").concat(o.name);const l=e.accessors[o.location];l&&(a="".concat(s,": ").concat(ED(o.name,l))),r[a]=Z1(e,i[s],l,n)}}return r}function Z1(t,e,n,r){const{gl:i}=t;if(!e)return{[r]:"null","Format ":"N/A"};let s="NOT PROVIDED",o=1,a=0,l=0,c,u,f;if(n&&(s=n.type,o=n.size,s=String(s).replace("Array",""),c=s.indexOf("nt")!==-1),e instanceof Le){const h=e,{data:d,changed:A}=h.getDebugData();u=A?"*":"",f=d,l=h.byteLength,a=l/d.BYTES_PER_ELEMENT/o;let p;if(n){const g=n.divisor>0;p="".concat(g?"I ":"P "," ").concat(a," (x").concat(o,"=").concat(l," bytes ").concat(Ci(i,s),")")}else c=!0,p="".concat(l," bytes");return{[r]:"".concat(u).concat(Ul(f,{size:o,isInteger:c})),"Format ":p}}return f=e,o=e.length,s=String(e.constructor.name).replace("Array",""),c=s.indexOf("nt")!==-1,{[r]:"".concat(Ul(f,{size:o,isInteger:c})," (constant)"),"Format ":"".concat(o,"x").concat(s," (constant)")}}function ED(t,e){const{type:n,size:r}=e,i=tb(n,r);return i?"".concat(t," (").concat(i.name,")"):t}function _D(t){const e={},n="Accessors for ".concat(t.id);for(const r of t.attributeInfos)if(r){const i=e_(r);e["in ".concat(i)]={[n]:JSON.stringify(r.accessor)}}for(const r of t.varyingInfos)if(r){const i=e_(r);e["out ".concat(i)]={[n]:JSON.stringify(r.accessor)}}return e}function e_(t){const{type:e,size:n}=t.accessor,r=tb(e,n);return r?"".concat(r.name," ").concat(t.name):t.name}const t_=Hr()&&typeof document<"u";let xD=0;class CD{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{onCreateContext:n=g=>z2(g),onAddHTML:r=null,onInitialize:i=()=>{},onRender:s=()=>{},onFinalize:o=()=>{},onError:a,gl:l=null,glOptions:c={},debug:u=!1,createFramebuffer:f=!1,autoResizeViewport:h=!0,autoResizeDrawingBuffer:d=!0,stats:A=cs.get("animation-loop-".concat(xD++))}=e;let{useDevicePixels:p=!0}=e;"useDevicePixelRatio"in e&&(ie.deprecated("useDevicePixelRatio","useDevicePixels")(),p=e.useDevicePixelRatio),this.props={onCreateContext:n,onAddHTML:r,onInitialize:i,onRender:s,onFinalize:o,onError:a,gl:l,glOptions:c,debug:u,createFramebuffer:f},this.gl=l,this.needsRedraw=null,this.timeline=null,this.stats=A,this.cpuTime=this.stats.get("CPU Time"),this.gpuTime=this.stats.get("GPU Time"),this.frameRate=this.stats.get("Frame Rate"),this._initialized=!1,this._running=!1,this._animationFrameId=null,this._nextFramePromise=null,this._resolveNextFrame=null,this._cpuStartTime=0,this.setProps({autoResizeViewport:h,autoResizeDrawingBuffer:d,useDevicePixels:p}),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this._pageLoadPromise=null,this._onMousemove=this._onMousemove.bind(this),this._onMouseleave=this._onMouseleave.bind(this)}delete(){this.stop(),this._setDisplay(null)}setNeedsRedraw(e){return q(typeof e=="string"),this.needsRedraw=this.needsRedraw||e,this}setProps(e){return"autoResizeViewport"in e&&(this.autoResizeViewport=e.autoResizeViewport),"autoResizeDrawingBuffer"in e&&(this.autoResizeDrawingBuffer=e.autoResizeDrawingBuffer),"useDevicePixels"in e&&(this.useDevicePixels=e.useDevicePixels),this}start(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(this._running)return this;this._running=!0;const n=this._getPageLoadPromise().then(()=>!this._running||this._initialized?null:(this._createWebGLContext(e),this._createFramebuffer(),this._startEventHandling(),this._initializeCallbackData(),this._updateCallbackData(),this._resizeCanvasDrawingBuffer(),this._resizeViewport(),this._gpuTimeQuery=Kf.isSupported(this.gl,["timers"])?new Kf(this.gl):null,this._initialized=!0,this.onInitialize(this.animationProps))).then(r=>{this._running&&(this._addCallbackData(r||{}),r!==!1&&this._startLoop())});return this.props.onError&&n.catch(this.props.onError),this}redraw(){return this.isContextLost()?this:(this._beginTimers(),this._setupFrame(),this._updateCallbackData(),this._renderFrame(this.animationProps),this._clearNeedsRedraw(),this.offScreen&&this.gl.commit&&this.gl.commit(),this._resolveNextFrame&&(this._resolveNextFrame(this),this._nextFramePromise=null,this._resolveNextFrame=null),this._endTimers(),this)}stop(){return this._running&&(this._finalizeCallbackData(),this._cancelAnimationFrame(this._animationFrameId),this._nextFramePromise=null,this._resolveNextFrame=null,this._animationFrameId=null,this._running=!1),this}attachTimeline(e){return this.timeline=e,this.timeline}detachTimeline(){this.timeline=null}waitForRender(){return this.setNeedsRedraw("waitForRender"),this._nextFramePromise||(this._nextFramePromise=new Promise(e=>{this._resolveNextFrame=e})),this._nextFramePromise}async toDataURL(){return this.setNeedsRedraw("toDataURL"),await this.waitForRender(),this.gl.canvas.toDataURL()}isContextLost(){return this.gl.isContextLost()}onCreateContext(){return this.props.onCreateContext(...arguments)}onInitialize(){return this.props.onInitialize(...arguments)}onRender(){return this.props.onRender(...arguments)}onFinalize(){return this.props.onFinalize(...arguments)}getHTMLControlValue(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const r=document.getElementById(e);return r?Number(r.value):n}setViewParameters(){return ie.removed("AnimationLoop.setViewParameters","AnimationLoop.setProps")(),this}_startLoop(){const e=()=>{this._running&&(this.redraw(),this._animationFrameId=this._requestAnimationFrame(e))};this._cancelAnimationFrame(this._animationFrameId),this._animationFrameId=this._requestAnimationFrame(e)}_getPageLoadPromise(){return this._pageLoadPromise||(this._pageLoadPromise=t_?new Promise((e,n)=>{if(t_&&document.readyState==="complete"){e(document);return}window.addEventListener("load",()=>{e(document)})}):Promise.resolve({})),this._pageLoadPromise}_setDisplay(e){this.display&&(this.display.delete(),this.display.animationLoop=null),e&&(e.animationLoop=this),this.display=e}_cancelAnimationFrame(e){return this.display&&this.display.cancelAnimationFrame?this.display.cancelAnimationFrame(e):P8(e)}_requestAnimationFrame(e){if(this._running)return this.display&&this.display.requestAnimationFrame?this.display.requestAnimationFrame(e):R8(e)}_renderFrame(){if(this.display){this.display._renderFrame(...arguments);return}this.onRender(...arguments)}_clearNeedsRedraw(){this.needsRedraw=null}_setupFrame(){this._resizeCanvasDrawingBuffer(),this._resizeViewport(),this._resizeFramebuffer()}_initializeCallbackData(){this.animationProps={gl:this.gl,stop:this.stop,canvas:this.gl.canvas,framebuffer:this.framebuffer,useDevicePixels:this.useDevicePixels,needsRedraw:null,startTime:Date.now(),engineTime:0,tick:0,tock:0,time:0,_timeline:this.timeline,_loop:this,_animationLoop:this,_mousePosition:null}}_updateCallbackData(){const{width:e,height:n,aspect:r}=this._getSizeAndAspect();(e!==this.animationProps.width||n!==this.animationProps.height)&&this.setNeedsRedraw("drawing buffer resized"),r!==this.animationProps.aspect&&this.setNeedsRedraw("drawing buffer aspect changed"),this.animationProps.width=e,this.animationProps.height=n,this.animationProps.aspect=r,this.animationProps.needsRedraw=this.needsRedraw,this.animationProps.engineTime=Date.now()-this.animationProps.startTime,this.timeline&&this.timeline.update(this.animationProps.engineTime),this.animationProps.tick=Math.floor(this.animationProps.time/1e3*60),this.animationProps.tock++,this.animationProps.time=this.timeline?this.timeline.getTime():this.animationProps.engineTime,this.animationProps._offScreen=this.offScreen}_finalizeCallbackData(){this.onFinalize(this.animationProps)}_addCallbackData(e){typeof e=="object"&&e!==null&&(this.animationProps=Object.assign({},this.animationProps,e))}_createWebGLContext(e){if(this.offScreen=e.canvas&&typeof OffscreenCanvas<"u"&&e.canvas instanceof OffscreenCanvas,e=Object.assign({},e,this.props.glOptions),this.gl=this.props.gl?Qm(this.props.gl,e):this.onCreateContext(e),!Yh(this.gl))throw new Error("AnimationLoop.onCreateContext - illegal context returned");m8(this.gl),this._createInfoDiv()}_createInfoDiv(){if(this.gl.canvas&&this.props.onAddHTML){const e=document.createElement("div");document.body.appendChild(e),e.style.position="relative";const n=document.createElement("div");n.style.position="absolute",n.style.left="10px",n.style.bottom="10px",n.style.width="300px",n.style.background="white",e.appendChild(this.gl.canvas),e.appendChild(n);const r=this.props.onAddHTML(n);r&&(n.innerHTML=r)}}_getSizeAndAspect(){const e=this.gl.drawingBufferWidth,n=this.gl.drawingBufferHeight;let r=1;const{canvas:i}=this.gl;return i&&i.clientHeight?r=i.clientWidth/i.clientHeight:e>0&&n>0&&(r=e/n),{width:e,height:n,aspect:r}}_resizeViewport(){this.autoResizeViewport&&this.gl.viewport(0,0,this.gl.drawingBufferWidth,this.gl.drawingBufferHeight)}_resizeCanvasDrawingBuffer(){this.autoResizeDrawingBuffer&&x8(this.gl,{useDevicePixels:this.useDevicePixels})}_createFramebuffer(){this.props.createFramebuffer&&(this.framebuffer=new ct(this.gl))}_resizeFramebuffer(){this.framebuffer&&this.framebuffer.resize({width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight})}_beginTimers(){this.frameRate.timeEnd(),this.frameRate.timeStart(),this._gpuTimeQuery&&this._gpuTimeQuery.isResultAvailable()&&!this._gpuTimeQuery.isTimerDisjoint()&&this.stats.get("GPU Time").addTime(this._gpuTimeQuery.getTimerMilliseconds()),this._gpuTimeQuery&&this._gpuTimeQuery.beginTimeElapsedQuery(),this.cpuTime.timeStart()}_endTimers(){this.cpuTime.timeEnd(),this._gpuTimeQuery&&this._gpuTimeQuery.end()}_startEventHandling(){const{canvas:e}=this.gl;e&&(e.addEventListener("mousemove",this._onMousemove),e.addEventListener("mouseleave",this._onMouseleave))}_onMousemove(e){this.animationProps._mousePosition=[e.offsetX,e.offsetY]}_onMouseleave(e){this.animationProps._mousePosition=null}}const _c="vs",Vm="fs";function fn(t,e){if(!t)throw new Error(e||"shadertools: assertion failed.")}const OA={number:{validate(t,e){return Number.isFinite(t)&&(!("max"in e)||t<=e.max)&&(!("min"in e)||t>=e.min)}},array:{validate(t,e){return Array.isArray(t)||ArrayBuffer.isView(t)}}};function ID(t){const e={};for(const n in t){const r=t[n],i=wD(r);e[n]=i}return e}function wD(t){let e=n_(t);return e==="object"?t?"type"in t?Object.assign({},t,OA[t.type]):"value"in t?(e=n_(t.value),Object.assign({type:e},t,OA[e])):{type:"object",value:t}:{type:"object",value:null}:Object.assign({type:e,value:t},OA[e])}function n_(t){return Array.isArray(t)||ArrayBuffer.isView(t)?"array":typeof t}const bD="vs",SD="fs";class r_{constructor(e){let{name:n,vs:r,fs:i,dependencies:s=[],uniforms:o,getUniforms:a,deprecations:l=[],defines:c={},inject:u={},vertexShader:f,fragmentShader:h}=e;fn(typeof n=="string"),this.name=n,this.vs=r||f,this.fs=i||h,this.getModuleUniforms=a,this.dependencies=s,this.deprecations=this._parseDeprecationDefinitions(l),this.defines=c,this.injections=TD(u),o&&(this.uniforms=ID(o))}getModuleSource(e){let n;switch(e){case bD:n=this.vs||"";break;case SD:n=this.fs||"";break;default:fn(!1)}return"#define MODULE_".concat(this.name.toUpperCase().replace(/[^0-9a-z]/gi,"_"),` +`).concat(n,"// END MODULE_").concat(this.name,` + +`)}getUniforms(e,n){return this.getModuleUniforms?this.getModuleUniforms(e,n):this.uniforms?this._defaultGetUniforms(e):{}}getDefines(){return this.defines}checkDeprecations(e,n){this.deprecations.forEach(r=>{r.regex.test(e)&&(r.deprecated?n.deprecated(r.old,r.new)():n.removed(r.old,r.new)())})}_parseDeprecationDefinitions(e){return e.forEach(n=>{switch(n.type){case"function":n.regex=new RegExp("\\b".concat(n.old,"\\("));break;default:n.regex=new RegExp("".concat(n.type," ").concat(n.old,";"))}}),e}_defaultGetUniforms(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const n={},r=this.uniforms;for(const i in r){const s=r[i];i in e&&!s.private?(s.validate&&fn(s.validate(e[i],s),"".concat(this.name,": invalid ").concat(i)),n[i]=e[i]):n[i]=s.value}return n}}function TD(t){const e={vs:{},fs:{}};for(const n in t){let r=t[n];const i=n.slice(0,2);typeof r=="string"&&(r={order:0,injection:r}),e[i][n]=r}return e}function BD(t){return RD(sb(t))}function RD(t){const e={},n={};return ib({modules:t,level:0,moduleMap:e,moduleDepth:n}),Object.keys(n).sort((r,i)=>n[i]-n[r]).map(r=>e[r])}function ib(t){let{modules:e,level:n,moduleMap:r,moduleDepth:i}=t;if(n>=5)throw new Error("Possible loop in shader dependency graph");for(const s of e)r[s.name]=s,(i[s.name]===void 0||i[s.name](n instanceof r_||(fn(typeof n!="string","Shader module use by name is deprecated. Import shader module '".concat(n,"' and use it directly.")),fn(n.name,"shader module has no name"),n=new r_(n),n.dependencies=sb(n.dependencies)),n))}function PD(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const e=typeof window<"u"?window.navigator||{}:{},n=t.userAgent||e.userAgent||"",r=n.indexOf("MSIE ")!==-1,i=n.indexOf("Trident/")!==-1;return r||i}const MD=7936,LD=7937,ND=7938,OD=35724,jm={GLSL_FRAG_DATA:["WEBGL_draw_buffers",!0],GLSL_FRAG_DEPTH:["EXT_frag_depth",!0],GLSL_DERIVATIVES:["OES_standard_derivatives",!0],GLSL_TEXTURE_LOD:["EXT_shader_texture_lod",!0]},es={};Object.keys(jm).forEach(t=>{es[t]=t});function DD(t){return typeof WebGL2RenderingContext<"u"&&t instanceof WebGL2RenderingContext?!0:!!(t&&t._version===2)}function kD(t){const e=t.getExtension("WEBGL_debug_renderer_info"),n=t.getParameter(e&&e.UNMASKED_VENDOR_WEBGL||MD),r=t.getParameter(e&&e.UNMASKED_RENDERER_WEBGL||LD);return{gpuVendor:QD(n,r),vendor:n,renderer:r,version:t.getParameter(ND),shadingLanguageVersion:t.getParameter(OD)}}function QD(t,e){return t.match(/NVIDIA/i)||e.match(/NVIDIA/i)?"NVIDIA":t.match(/INTEL/i)||e.match(/INTEL/i)?"INTEL":t.match(/AMD/i)||e.match(/AMD/i)||t.match(/ATI/i)||e.match(/ATI/i)?"AMD":"UNKNOWN GPU"}const DA={};function i_(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const r=jm[e];if(fn(r,e),!PD(n))return!0;if(e in DA)return DA[e];const i=r[0],s=n.behavior||"enable",o="#extension GL_".concat(i," : ").concat(s,` +void main(void) {}`),a=t.createShader(35633);t.shaderSource(a,o),t.compileShader(a);const l=t.getShaderParameter(a,35713);return t.deleteShader(a),DA[e]=l,l}function FD(t,e){const n=jm[e];fn(n,e);const r=DD(t)&&n[1]||n[0],i=typeof r=="string"?!!t.getExtension(r):r;return fn(i===!1||i===!0),i}function du(t,e){return e=Array.isArray(e)?e:[e],e.every(n=>FD(t,n))}function UD(t){switch(kD(t).gpuVendor.toLowerCase()){case"nvidia":return`#define NVIDIA_GPU +// Nvidia optimizes away the calculation necessary for emulated fp64 +#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1 +`;case"intel":return`#define INTEL_GPU +// Intel optimizes away the calculation necessary for emulated fp64 +#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1 +// Intel's built-in 'tan' function doesn't have acceptable precision +#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1 +// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow +#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1 +`;case"amd":return`#define AMD_GPU +`;default:return`#define DEFAULT_GPU +// Prevent driver from optimizing away the calculation necessary for emulated fp64 +#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1 +// Intel's built-in 'tan' function doesn't have acceptable precision +#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1 +// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow +#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1 +`}}function GD(t,e,n){let r=`#if (__VERSION__ > 120) + +# define FEATURE_GLSL_DERIVATIVES +# define FEATURE_GLSL_DRAW_BUFFERS +# define FEATURE_GLSL_FRAG_DEPTH +# define FEATURE_GLSL_TEXTURE_LOD + +// DEPRECATED FLAGS, remove in v9 +# define FRAG_DEPTH +# define DERIVATIVES +# define DRAW_BUFFERS +# define TEXTURE_LOD + +#endif // __VERSION +`;return du(t,es.GLSL_FRAG_DEPTH)&&(r+=` +// FRAG_DEPTH => gl_FragDepth is available +#ifdef GL_EXT_frag_depth +#extension GL_EXT_frag_depth : enable +# define FEATURE_GLSL_FRAG_DEPTH +# define FRAG_DEPTH +# define gl_FragDepth gl_FragDepthEXT +#endif +`),du(t,es.GLSL_DERIVATIVES)&&i_(t,es.GLSL_DERIVATIVES)&&(r+=` +// DERIVATIVES => dxdF, dxdY and fwidth are available +#ifdef GL_OES_standard_derivatives +#extension GL_OES_standard_derivatives : enable +# define FEATURE_GLSL_DERIVATIVES +# define DERIVATIVES +#endif +`),du(t,es.GLSL_FRAG_DATA)&&i_(t,es.GLSL_FRAG_DATA,{behavior:"require"})&&(r+=` +// DRAW_BUFFERS => gl_FragData[] is available +#ifdef GL_EXT_draw_buffers +#extension GL_EXT_draw_buffers : require +#define FEATURE_GLSL_DRAW_BUFFERS +#define DRAW_BUFFERS +#endif +`),du(t,es.GLSL_TEXTURE_LOD)&&(r+=`// TEXTURE_LOD => texture2DLod etc are available +#ifdef GL_EXT_shader_texture_lod +#extension GL_EXT_shader_texture_lod : enable + +# define FEATURE_GLSL_TEXTURE_LOD +# define TEXTURE_LOD + +#endif +`),r}const zD=`#ifdef MODULE_LOGDEPTH + logdepth_adjustPosition(gl_Position); +#endif +`,VD=`#ifdef MODULE_MATERIAL + gl_FragColor = material_filterColor(gl_FragColor); +#endif + +#ifdef MODULE_LIGHTING + gl_FragColor = lighting_filterColor(gl_FragColor); +#endif + +#ifdef MODULE_FOG + gl_FragColor = fog_filterColor(gl_FragColor); +#endif + +#ifdef MODULE_PICKING + gl_FragColor = picking_filterHighlightColor(gl_FragColor); + gl_FragColor = picking_filterPickingColor(gl_FragColor); +#endif + +#ifdef MODULE_LOGDEPTH + logdepth_setFragDepth(); +#endif +`,jD={[_c]:zD,[Vm]:VD},rf="__LUMA_INJECT_DECLARATIONS__",s_=/void\s+main\s*\([^)]*\)\s*\{\n?/,o_=/}\n?[^{}]*$/,kA=[];function a_(t,e,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;const i=e===_c;for(const s in n){const o=n[s];o.sort((l,c)=>l.order-c.order),kA.length=o.length;for(let l=0,c=o.length;ll+a));break;case"vs:#main-end":i&&(t=t.replace(o_,l=>a+l));break;case"fs:#decl":i||(t=t.replace(rf,a));break;case"fs:#main-start":i||(t=t.replace(s_,l=>l+a));break;case"fs:#main-end":i||(t=t.replace(o_,l=>a+l));break;default:t=t.replace(s,l=>l+a)}}return t=t.replace(rf,""),r&&(t=t.replace(/\}\s*$/,s=>s+jD[e])),t}function Tp(t){const e={};return fn(Array.isArray(t)&&t.length>1),t.forEach(n=>{for(const r in n)e[r]=e[r]?"".concat(e[r],` +`).concat(n[r]):n[r]}),e}function Qo(t){return new RegExp("\\b".concat(t,"[ \\t]+(\\w+[ \\t]+\\w+(\\[\\w+\\])?;)"),"g")}const ob=[[/^(#version[ \t]+(100|300[ \t]+es))?[ \t]*\n/,`#version 300 es +`],[/\btexture(2D|2DProj|Cube)Lod(EXT)?\(/g,"textureLod("],[/\btexture(2D|2DProj|Cube)(EXT)?\(/g,"texture("]],HD=[...ob,[Qo("attribute"),"in $1"],[Qo("varying"),"out $1"]],WD=[...ob,[Qo("varying"),"in $1"]],ab=[[/^#version[ \t]+300[ \t]+es/,"#version 100"],[/\btexture(2D|2DProj|Cube)Lod\(/g,"texture$1LodEXT("],[/\btexture\(/g,"texture2D("],[/\btextureLod\(/g,"texture2DLodEXT("]],YD=[...ab,[Qo("in"),"attribute $1"],[Qo("out"),"varying $1"]],$D=[...ab,[Qo("in"),"varying $1"]],Bp="gl_FragColor",Rp=/\bout[ \t]+vec4[ \t]+(\w+)[ \t]*;\n?/,KD=/void\s+main\s*\([^)]*\)\s*\{\n?/;function qD(t,e,n){switch(e){case 300:return n?qf(t,HD):XD(t);case 100:return n?qf(t,YD):JD(t);default:throw new Error("unknown GLSL version ".concat(e))}}function qf(t,e){for(const[n,r]of e)t=t.replace(n,r);return t}function XD(t){t=qf(t,WD);const e=t.match(Rp);if(e){const n=e[1];t=t.replace(new RegExp("\\b".concat(Bp,"\\b"),"g"),n)}else{const n="fragmentColor";t=t.replace(KD,r=>"out vec4 ".concat(n,`; +`).concat(r)).replace(new RegExp("\\b".concat(Bp,"\\b"),"g"),n)}return t}function JD(t){t=qf(t,$D);const e=t.match(Rp);if(e){const n=e[1];t=t.replace(Rp,"").replace(new RegExp("\\b".concat(n,"\\b"),"g"),Bp)}return t}const ZD=` + +`.concat(rf,` + +`),lb={[_c]:"vertex",[Vm]:"fragment"},ek=`precision highp float; + +`;function tk(t,e){const{vs:n,fs:r}=e,i=BD(e.modules||[]);return{gl:t,vs:l_(t,Object.assign({},e,{source:n,type:_c,modules:i})),fs:l_(t,Object.assign({},e,{source:r,type:Vm,modules:i})),getUniforms:nk(i)}}function l_(t,e){let{id:n,source:r,type:i,modules:s,defines:o={},hookFunctions:a=[],inject:l={},transpileToGLSL100:c=!1,prologue:u=!0,log:f}=e;fn(typeof r=="string","shader source must be a string");const h=i===_c,d=r.split(` +`);let A=100,p="",g=r;d[0].indexOf("#version ")===0?(A=300,p=d[0],g=d.slice(1).join(` +`)):p="#version ".concat(A);const m={};s.forEach(R=>{Object.assign(m,R.getDefines())}),Object.assign(m,o);let v=u?"".concat(p,` +`).concat(ik({id:n,source:r,type:i}),` +`).concat(rk({type:i}),` +`).concat(UD(t),` +`).concat(GD(t),` +`).concat(sk(m),` +`).concat(h?"":ek,` +`):"".concat(p,` +`);const E=ak(a),_={},I={},C={};for(const R in l){const P=typeof l[R]=="string"?{injection:l[R],order:0}:l[R],B=R.match(/^(v|f)s:(#)?([\w-]+)$/);if(B){const N=B[2],V=B[3];N?V==="decl"?I[R]=[P]:C[R]=[P]:_[R]=[P]}else C[R]=[P]}for(const R of s){f&&R.checkDeprecations(g,f);const P=R.getModuleSource(i,A);v+=P;const B=R.injections[i];for(const N in B){const V=N.match(/^(v|f)s:#([\w-]+)$/);if(V){const z=V[2]==="decl"?I:C;z[N]=z[N]||[],z[N].push(B[N])}else _[N]=_[N]||[],_[N].push(B[N])}}return v+=ZD,v=a_(v,i,I),v+=ok(E[i],_),v+=g,v=a_(v,i,C),v=qD(v,c?100:A,h),v}function nk(t){return function(n){const r={};for(const i of t){const s=i.getUniforms(n,r);Object.assign(r,s)}return r}}function rk(t){let{type:e}=t;return` +#define SHADER_TYPE_`.concat(lb[e].toUpperCase(),` +`)}function ik(t){let{id:e,source:n,type:r}=t;return e&&typeof e=="string"&&n.indexOf("SHADER_NAME")===-1?` +#define SHADER_NAME `.concat(e,"_").concat(lb[r],` + +`):""}function sk(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=0,n="";for(const r in t){e===0&&(n+=` +// APPLICATION DEFINES +`),e++;const i=t[r];(i||Number.isFinite(i))&&(n+="#define ".concat(r.toUpperCase()," ").concat(t[r],` +`))}return e===0&&(n+=` +`),n}function ok(t,e){let n="";for(const r in t){const i=t[r];if(n+="void ".concat(i.signature,` { +`),i.header&&(n+=" ".concat(i.header)),e[r]){const s=e[r];s.sort((o,a)=>o.order-a.order);for(const o of s)n+=" ".concat(o.injection,` +`)}i.footer&&(n+=" ".concat(i.footer)),n+=`} +`}return n}function ak(t){const e={vs:{},fs:{}};return t.forEach(n=>{let r;typeof n!="string"?(r=n,n=r.hook):r={},n=n.trim();const[i,s]=n.split(":"),o=n.replace(/\(.+/,"");e[i][o]=Object.assign(r,{signature:s})}),e}const lk="void main() {gl_FragColor = vec4(0);}",cb=`out vec4 transform_output; +void main() { + transform_output = vec4(0); +}`,ck=`#version 300 es +`.concat(cb);function ub(t,e){e=Array.isArray(e)?e:[e];const n=t.replace(/^\s+/,"").split(/\s+/),[r,i,s]=n;if(!e.includes(r)||!i||!s)return null;const o=s.split(";")[0];return{qualifier:r,type:i,name:o}}function fb(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{version:e=100,input:n,inputType:r,output:i}=t;if(!n)return e===300?ck:e>300?"#version ".concat(e,` +`).concat(cb):lk;const s=hk(n,r);return e>=300?"#version ".concat(e," ").concat(e===300?"es":"",` +in `).concat(r," ").concat(n,`; +out vec4 `).concat(i,`; +void main() { + `).concat(i," = ").concat(s,`; +}`):"varying ".concat(r," ").concat(n,`; +void main() { + gl_FragColor = `).concat(s,`; +}`)}function uk(t){switch(t){case"float":return"x";case"vec2":return"xy";case"vec3":return"xyz";case"vec4":return"xyzw";default:return fn(!1),null}}function fk(t){switch(t){case"float":return 1;case"vec2":return 2;case"vec3":return 3;case"vec4":return 4;default:return fn(!1),null}}function hk(t,e){switch(e){case"float":return"vec4(".concat(t,", 0.0, 0.0, 1.0)");case"vec2":return"vec4(".concat(t,", 0.0, 1.0)");case"vec3":return"vec4(".concat(t,", 1.0)");case"vec4":return t;default:return fn(!1),null}}const dk=`#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND +const float TWO_PI = 6.2831854820251465; +const float PI_2 = 1.5707963705062866; +const float PI_16 = 0.1963495463132858; + +const float SIN_TABLE_0 = 0.19509032368659973; +const float SIN_TABLE_1 = 0.3826834261417389; +const float SIN_TABLE_2 = 0.5555702447891235; +const float SIN_TABLE_3 = 0.7071067690849304; + +const float COS_TABLE_0 = 0.9807852506637573; +const float COS_TABLE_1 = 0.9238795042037964; +const float COS_TABLE_2 = 0.8314695954322815; +const float COS_TABLE_3 = 0.7071067690849304; + +const float INVERSE_FACTORIAL_3 = 1.666666716337204e-01; +const float INVERSE_FACTORIAL_5 = 8.333333767950535e-03; +const float INVERSE_FACTORIAL_7 = 1.9841270113829523e-04; +const float INVERSE_FACTORIAL_9 = 2.75573188446287533e-06; + +float sin_taylor_fp32(float a) { + float r, s, t, x; + + if (a == 0.0) { + return 0.0; + } + + x = -a * a; + s = a; + r = a; + + r = r * x; + t = r * INVERSE_FACTORIAL_3; + s = s + t; + + r = r * x; + t = r * INVERSE_FACTORIAL_5; + s = s + t; + + r = r * x; + t = r * INVERSE_FACTORIAL_7; + s = s + t; + + r = r * x; + t = r * INVERSE_FACTORIAL_9; + s = s + t; + + return s; +} + +void sincos_taylor_fp32(float a, out float sin_t, out float cos_t) { + if (a == 0.0) { + sin_t = 0.0; + cos_t = 1.0; + } + sin_t = sin_taylor_fp32(a); + cos_t = sqrt(1.0 - sin_t * sin_t); +} + +float tan_taylor_fp32(float a) { + float sin_a; + float cos_a; + + if (a == 0.0) { + return 0.0; + } + float z = floor(a / TWO_PI); + float r = a - TWO_PI * z; + + float t; + float q = floor(r / PI_2 + 0.5); + int j = int(q); + + if (j < -2 || j > 2) { + return 1.0 / 0.0; + } + + t = r - PI_2 * q; + + q = floor(t / PI_16 + 0.5); + int k = int(q); + int abs_k = int(abs(float(k))); + + if (abs_k > 4) { + return 1.0 / 0.0; + } else { + t = t - PI_16 * q; + } + + float u = 0.0; + float v = 0.0; + + float sin_t, cos_t; + float s, c; + sincos_taylor_fp32(t, sin_t, cos_t); + + if (k == 0) { + s = sin_t; + c = cos_t; + } else { + if (abs(float(abs_k) - 1.0) < 0.5) { + u = COS_TABLE_0; + v = SIN_TABLE_0; + } else if (abs(float(abs_k) - 2.0) < 0.5) { + u = COS_TABLE_1; + v = SIN_TABLE_1; + } else if (abs(float(abs_k) - 3.0) < 0.5) { + u = COS_TABLE_2; + v = SIN_TABLE_2; + } else if (abs(float(abs_k) - 4.0) < 0.5) { + u = COS_TABLE_3; + v = SIN_TABLE_3; + } + if (k > 0) { + s = u * sin_t + v * cos_t; + c = u * cos_t - v * sin_t; + } else { + s = u * sin_t - v * cos_t; + c = u * cos_t + v * sin_t; + } + } + + if (j == 0) { + sin_a = s; + cos_a = c; + } else if (j == 1) { + sin_a = c; + cos_a = -s; + } else if (j == -1) { + sin_a = -c; + cos_a = s; + } else { + sin_a = -s; + cos_a = -c; + } + return sin_a / cos_a; +} +#endif + +float tan_fp32(float a) { +#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND + return tan_taylor_fp32(a); +#else + return tan(a); +#endif +} +`,Ak={name:"fp32",vs:dk,fs:null};function Gl(t,e){if(!t)throw new Error("math.gl assertion ".concat(e))}const Ht={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0};function gk(t,{precision:e=Ht.precision}={}){return t=pk(t),"".concat(parseFloat(t.toPrecision(e)))}function xs(t){return Array.isArray(t)||ArrayBuffer.isView(t)&&!(t instanceof DataView)}function wt(t,e,n){return vk(t,r=>Math.max(e,Math.min(n,r)))}function gs(t,e,n){return xs(t)?t.map((r,i)=>gs(r,e[i],n)):n*e+(1-n)*t}function ur(t,e,n){const r=Ht.EPSILON;n&&(Ht.EPSILON=n);try{if(t===e)return!0;if(xs(t)&&xs(e)){if(t.length!==e.length)return!1;for(let i=0;i0?", ":"")+gk(this[r],e);return"".concat(e.printTypes?this.constructor.name:"","[").concat(n,"]")}equals(e){if(!e||this.length!==e.length)return!1;for(let n=0;n=0&&e=0&&e0&&(s=1/Math.sqrt(s)),t[0]=e[0]*s,t[1]=e[1]*s,t[2]=e[2]*s,t}function vb(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function sf(t,e,n){var r=e[0],i=e[1],s=e[2],o=n[0],a=n[1],l=n[2];return t[0]=i*l-s*a,t[1]=s*o-r*l,t[2]=r*a-i*o,t}function Mk(t,e,n,r){var i=e[0],s=e[1],o=e[2];return t[0]=i+r*(n[0]-i),t[1]=s+r*(n[1]-s),t[2]=o+r*(n[2]-o),t}function Wm(t,e,n){var r=e[0],i=e[1],s=e[2],o=n[3]*r+n[7]*i+n[11]*s+n[15];return o=o||1,t[0]=(n[0]*r+n[4]*i+n[8]*s+n[12])/o,t[1]=(n[1]*r+n[5]*i+n[9]*s+n[13])/o,t[2]=(n[2]*r+n[6]*i+n[10]*s+n[14])/o,t}function yb(t,e,n){var r=e[0],i=e[1],s=e[2];return t[0]=r*n[0]+i*n[3]+s*n[6],t[1]=r*n[1]+i*n[4]+s*n[7],t[2]=r*n[2]+i*n[5]+s*n[8],t}function Eb(t,e,n){var r=n[0],i=n[1],s=n[2],o=n[3],a=e[0],l=e[1],c=e[2],u=i*c-s*l,f=s*a-r*c,h=r*l-i*a,d=i*h-s*f,A=s*u-r*h,p=r*f-i*u,g=o*2;return u*=g,f*=g,h*=g,d*=2,A*=2,p*=2,t[0]=a+u+d,t[1]=l+f+A,t[2]=c+h+p,t}function Lk(t,e,n,r){var i=[],s=[];return i[0]=e[0]-n[0],i[1]=e[1]-n[1],i[2]=e[2]-n[2],s[0]=i[0],s[1]=i[1]*Math.cos(r)-i[2]*Math.sin(r),s[2]=i[1]*Math.sin(r)+i[2]*Math.cos(r),t[0]=s[0]+n[0],t[1]=s[1]+n[1],t[2]=s[2]+n[2],t}function Nk(t,e,n,r){var i=[],s=[];return i[0]=e[0]-n[0],i[1]=e[1]-n[1],i[2]=e[2]-n[2],s[0]=i[2]*Math.sin(r)+i[0]*Math.cos(r),s[1]=i[1],s[2]=i[2]*Math.cos(r)-i[0]*Math.sin(r),t[0]=s[0]+n[0],t[1]=s[1]+n[1],t[2]=s[2]+n[2],t}function Ok(t,e,n,r){var i=[],s=[];return i[0]=e[0]-n[0],i[1]=e[1]-n[1],i[2]=e[2]-n[2],s[0]=i[0]*Math.cos(r)-i[1]*Math.sin(r),s[1]=i[0]*Math.sin(r)+i[1]*Math.cos(r),s[2]=i[2],t[0]=s[0]+n[0],t[1]=s[1]+n[1],t[2]=s[2]+n[2],t}function Dk(t,e){var n=t[0],r=t[1],i=t[2],s=e[0],o=e[1],a=e[2],l=Math.sqrt(n*n+r*r+i*i),c=Math.sqrt(s*s+o*o+a*a),u=l*c,f=u&&vb(t,e)/u;return Math.acos(Math.min(Math.max(f,-1),1))}var _b=Tk,xb=Sk,QA=Bk;(function(){var t=mb();return function(e,n,r,i,s,o){var a,l;for(n||(n=3),r||(r=0),i?l=Math.min(i*n+r,e.length):l=e.length,a=r;a0?this.copy([e,...n]):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(jk)}fromObject(e){return this.check()}fromQuaternion(e){return Vk(this,e),this.check()}set(e,n,r,i,s,o,a,l,c){return this[0]=e,this[1]=n,this[2]=r,this[3]=i,this[4]=s,this[5]=o,this[6]=a,this[7]=l,this[8]=c,this.check()}setRowMajor(e,n,r,i,s,o,a,l,c){return this[0]=e,this[1]=i,this[2]=a,this[3]=n,this[4]=s,this[5]=l,this[6]=r,this[7]=o,this[8]=c,this.check()}determinant(){return Uk(this)}transpose(){return Qk(this,this),this.check()}invert(){return Fk(this,this),this.check()}multiplyLeft(e){return u_(this,e,this),this.check()}multiplyRight(e){return u_(this,this,e),this.check()}rotate(e){return zk(this,this,e),this.check()}scale(e){return Array.isArray(e)?f_(this,this,e):f_(this,this,[e,e]),this.check()}translate(e){return Gk(this,this,e),this.check()}transform(e,n){let r;switch(e.length){case 2:r=xk(n||[-0,-0],e,this);break;case 3:r=yb(n||[-0,-0,-0],e,this);break;case 4:r=pb(n||[-0,-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return pl(r,e.length),r}transformVector(e,n){return this.transform(e,n)}transformVector2(e,n){return this.transform(e,n)}transformVector3(e,n){return this.transform(e,n)}}let pu,mu;function Hk(){return pu||(pu=new bt([0,0,0,0,0,0,0,0,0]),Object.freeze(pu)),pu}function Wk(){return mu||(mu=new bt,Object.freeze(mu)),mu}function Yk(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 $k(t,e){if(t===e){var n=e[1],r=e[2],i=e[3],s=e[6],o=e[7],a=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=s,t[11]=e[14],t[12]=i,t[13]=o,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 Mp(t,e){var n=e[0],r=e[1],i=e[2],s=e[3],o=e[4],a=e[5],l=e[6],c=e[7],u=e[8],f=e[9],h=e[10],d=e[11],A=e[12],p=e[13],g=e[14],m=e[15],v=n*a-r*o,E=n*l-i*o,_=n*c-s*o,I=r*l-i*a,C=r*c-s*a,R=i*c-s*l,P=u*p-f*A,B=u*g-h*A,N=u*m-d*A,V=f*g-h*p,G=f*m-d*p,z=h*m-d*g,K=v*z-E*G+_*V+I*N-C*B+R*P;return K?(K=1/K,t[0]=(a*z-l*G+c*V)*K,t[1]=(i*G-r*z-s*V)*K,t[2]=(p*R-g*C+m*I)*K,t[3]=(h*C-f*R-d*I)*K,t[4]=(l*N-o*z-c*B)*K,t[5]=(n*z-i*N+s*B)*K,t[6]=(g*_-A*R-m*E)*K,t[7]=(u*R-h*_+d*E)*K,t[8]=(o*G-a*N+c*P)*K,t[9]=(r*N-n*G-s*P)*K,t[10]=(A*C-p*_+m*v)*K,t[11]=(f*_-u*C-d*v)*K,t[12]=(a*B-o*V-l*P)*K,t[13]=(n*V-r*B+i*P)*K,t[14]=(p*E-A*I-g*v)*K,t[15]=(u*I-f*E+h*v)*K,t):null}function Kk(t){var e=t[0],n=t[1],r=t[2],i=t[3],s=t[4],o=t[5],a=t[6],l=t[7],c=t[8],u=t[9],f=t[10],h=t[11],d=t[12],A=t[13],p=t[14],g=t[15],m=e*o-n*s,v=e*a-r*s,E=e*l-i*s,_=n*a-r*o,I=n*l-i*o,C=r*l-i*a,R=c*A-u*d,P=c*p-f*d,B=c*g-h*d,N=u*p-f*A,V=u*g-h*A,G=f*g-h*p;return m*G-v*V+E*N+_*B-I*P+C*R}function ps(t,e,n){var r=e[0],i=e[1],s=e[2],o=e[3],a=e[4],l=e[5],c=e[6],u=e[7],f=e[8],h=e[9],d=e[10],A=e[11],p=e[12],g=e[13],m=e[14],v=e[15],E=n[0],_=n[1],I=n[2],C=n[3];return t[0]=E*r+_*a+I*f+C*p,t[1]=E*i+_*l+I*h+C*g,t[2]=E*s+_*c+I*d+C*m,t[3]=E*o+_*u+I*A+C*v,E=n[4],_=n[5],I=n[6],C=n[7],t[4]=E*r+_*a+I*f+C*p,t[5]=E*i+_*l+I*h+C*g,t[6]=E*s+_*c+I*d+C*m,t[7]=E*o+_*u+I*A+C*v,E=n[8],_=n[9],I=n[10],C=n[11],t[8]=E*r+_*a+I*f+C*p,t[9]=E*i+_*l+I*h+C*g,t[10]=E*s+_*c+I*d+C*m,t[11]=E*o+_*u+I*A+C*v,E=n[12],_=n[13],I=n[14],C=n[15],t[12]=E*r+_*a+I*f+C*p,t[13]=E*i+_*l+I*h+C*g,t[14]=E*s+_*c+I*d+C*m,t[15]=E*o+_*u+I*A+C*v,t}function Jf(t,e,n){var r=n[0],i=n[1],s=n[2],o,a,l,c,u,f,h,d,A,p,g,m;return e===t?(t[12]=e[0]*r+e[4]*i+e[8]*s+e[12],t[13]=e[1]*r+e[5]*i+e[9]*s+e[13],t[14]=e[2]*r+e[6]*i+e[10]*s+e[14],t[15]=e[3]*r+e[7]*i+e[11]*s+e[15]):(o=e[0],a=e[1],l=e[2],c=e[3],u=e[4],f=e[5],h=e[6],d=e[7],A=e[8],p=e[9],g=e[10],m=e[11],t[0]=o,t[1]=a,t[2]=l,t[3]=c,t[4]=u,t[5]=f,t[6]=h,t[7]=d,t[8]=A,t[9]=p,t[10]=g,t[11]=m,t[12]=o*r+u*i+A*s+e[12],t[13]=a*r+f*i+p*s+e[13],t[14]=l*r+h*i+g*s+e[14],t[15]=c*r+d*i+m*s+e[15]),t}function $m(t,e,n){var r=n[0],i=n[1],s=n[2];return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*s,t[9]=e[9]*s,t[10]=e[10]*s,t[11]=e[11]*s,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function qk(t,e,n,r){var i=r[0],s=r[1],o=r[2],a=Math.hypot(i,s,o),l,c,u,f,h,d,A,p,g,m,v,E,_,I,C,R,P,B,N,V,G,z,K,J;return a0&&(o=1/Math.sqrt(o)),t[0]=n*o,t[1]=r*o,t[2]=i*o,t[3]=s*o,t}function fQ(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function hQ(t,e,n,r){var i=e[0],s=e[1],o=e[2],a=e[3];return t[0]=i+r*(n[0]-i),t[1]=s+r*(n[1]-s),t[2]=o+r*(n[2]-o),t[3]=a+r*(n[3]-a),t}function Zo(t,e,n){var r=e[0],i=e[1],s=e[2],o=e[3];return t[0]=n[0]*r+n[4]*i+n[8]*s+n[12]*o,t[1]=n[1]*r+n[5]*i+n[9]*s+n[13]*o,t[2]=n[2]*r+n[6]*i+n[10]*s+n[14]*o,t[3]=n[3]*r+n[7]*i+n[11]*s+n[15]*o,t}function dQ(t,e,n){var r=e[0],i=e[1],s=e[2],o=n[0],a=n[1],l=n[2],c=n[3],u=c*r+a*s-l*i,f=c*i+l*r-o*s,h=c*s+o*i-a*r,d=-o*r-a*i-l*s;return t[0]=u*c+d*-o+f*-l-h*-a,t[1]=f*c+d*-a+h*-o-u*-l,t[2]=h*c+d*-l+u*-a-f*-o,t[3]=e[3],t}(function(){var t=oQ();return function(e,n,r,i,s,o){var a,l;for(n||(n=4),r||(r=0),i?l=Math.min(i*n+r,e.length):l=e.length,a=r;aMath.PI*2)throw Error("expected radians")}function yQ(t,e,n,r,i,s){const o=2*s/(n-e),a=2*s/(i-r),l=(n+e)/(n-e),c=(i+r)/(i-r),u=-1,f=-1,h=-2*s;return t[0]=o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=l,t[9]=c,t[10]=u,t[11]=f,t[12]=0,t[13]=0,t[14]=h,t[15]=0,t}function d_(){var t=new $n(4);return $n!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function EQ(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}function bb(t,e,n){n=n*.5;var r=Math.sin(n);return t[0]=r*e[0],t[1]=r*e[1],t[2]=r*e[2],t[3]=Math.cos(n),t}function A_(t,e,n){var r=e[0],i=e[1],s=e[2],o=e[3],a=n[0],l=n[1],c=n[2],u=n[3];return t[0]=r*u+o*a+i*c-s*l,t[1]=i*u+o*l+s*a-r*c,t[2]=s*u+o*c+r*l-i*a,t[3]=o*u-r*a-i*l-s*c,t}function _Q(t,e,n){n*=.5;var r=e[0],i=e[1],s=e[2],o=e[3],a=Math.sin(n),l=Math.cos(n);return t[0]=r*l+o*a,t[1]=i*l+s*a,t[2]=s*l-i*a,t[3]=o*l-r*a,t}function xQ(t,e,n){n*=.5;var r=e[0],i=e[1],s=e[2],o=e[3],a=Math.sin(n),l=Math.cos(n);return t[0]=r*l-s*a,t[1]=i*l+o*a,t[2]=s*l+r*a,t[3]=o*l-i*a,t}function CQ(t,e,n){n*=.5;var r=e[0],i=e[1],s=e[2],o=e[3],a=Math.sin(n),l=Math.cos(n);return t[0]=r*l+i*a,t[1]=i*l-r*a,t[2]=s*l+o*a,t[3]=o*l-s*a,t}function IQ(t,e){var n=e[0],r=e[1],i=e[2];return t[0]=n,t[1]=r,t[2]=i,t[3]=Math.sqrt(Math.abs(1-n*n-r*r-i*i)),t}function of(t,e,n,r){var i=e[0],s=e[1],o=e[2],a=e[3],l=n[0],c=n[1],u=n[2],f=n[3],h,d,A,p,g;return d=i*l+s*c+o*u+a*f,d<0&&(d=-d,l=-l,c=-c,u=-u,f=-f),1-d>ml?(h=Math.acos(d),A=Math.sin(h),p=Math.sin((1-r)*h)/A,g=Math.sin(r*h)/A):(p=1-r,g=r),t[0]=p*i+g*l,t[1]=p*s+g*c,t[2]=p*o+g*u,t[3]=p*a+g*f,t}function wQ(t,e){var n=e[0],r=e[1],i=e[2],s=e[3],o=n*n+r*r+i*i+s*s,a=o?1/o:0;return t[0]=-n*a,t[1]=-r*a,t[2]=-i*a,t[3]=s*a,t}function bQ(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t}function Sb(t,e){var n=e[0]+e[4]+e[8],r;if(n>0)r=Math.sqrt(n+1),t[3]=.5*r,r=.5/r,t[0]=(e[5]-e[7])*r,t[1]=(e[6]-e[2])*r,t[2]=(e[1]-e[3])*r;else{var i=0;e[4]>e[0]&&(i=1),e[8]>e[i*3+i]&&(i=2);var s=(i+1)%3,o=(i+2)%3;r=Math.sqrt(e[i*3+i]-e[s*3+s]-e[o*3+o]+1),t[i]=.5*r,r=.5/r,t[3]=(e[s*3+o]-e[o*3+s])*r,t[s]=(e[s*3+i]+e[i*3+s])*r,t[o]=(e[o*3+i]+e[i*3+o])*r}return t}var SQ=aQ,TQ=Km,BQ=fQ,RQ=hQ,PQ=lQ,MQ=cQ,Tb=uQ,LQ=function(){var t=mb(),e=c_(1,0,0),n=c_(0,1,0);return function(r,i,s){var o=vb(i,s);return o<-.999999?(sf(t,e,i),xb(t)<1e-6&&sf(t,n,i),Pk(t,t),bb(r,t,Math.PI),r):o>.999999?(r[0]=0,r[1]=0,r[2]=0,r[3]=1,r):(sf(t,i,s),r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=1+o,Tb(r,r))}}();(function(){var t=d_(),e=d_();return function(n,r,i,s,o,a){return of(t,r,o,a),of(e,i,s,a),of(n,t,e,2*a*(1-a)),n}})();(function(){var t=kk();return function(e,n,r,i){return t[0]=r[0],t[3]=r[1],t[6]=r[2],t[1]=i[0],t[4]=i[1],t[7]=i[2],t[2]=-n[0],t[5]=-n[1],t[8]=-n[2],Tb(e,Sb(e,t))}})();const NQ=[0,0,0,1];class g_ extends Hm{constructor(e=0,n=0,r=0,i=1){super(-0,-0,-0,-0),Array.isArray(e)&&arguments.length===1?this.copy(e):this.set(e,n,r,i)}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this.check()}set(e,n,r,i){return this[0]=e,this[1]=n,this[2]=r,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 Sb(this,e),this.check()}fromAxisRotation(e,n){return bb(this,e,n),this.check()}identity(){return EQ(this),this.check()}setAxisAngle(e,n){return this.fromAxisRotation(e,n)}get ELEMENTS(){return 4}get x(){return this[0]}set x(e){this[0]=Oe(e)}get y(){return this[1]}set y(e){this[1]=Oe(e)}get z(){return this[2]}set z(e){this[2]=Oe(e)}get w(){return this[3]}set w(e){this[3]=Oe(e)}len(){return PQ(this)}lengthSquared(){return MQ(this)}dot(e){return BQ(this,e)}rotationTo(e,n){return LQ(this,e,n),this.check()}add(e){return SQ(this,this,e),this.check()}calculateW(){return IQ(this,this),this.check()}conjugate(){return bQ(this,this),this.check()}invert(){return wQ(this,this),this.check()}lerp(e,n,r){return r===void 0?this.lerp(this,e,n):(RQ(this,e,n,r),this.check())}multiplyRight(e){return A_(this,this,e),this.check()}multiplyLeft(e){return A_(this,e,this),this.check()}normalize(){const e=this.len(),n=e>0?1/e:0;return this[0]=this[0]*n,this[1]=this[1]*n,this[2]=this[2]*n,this[3]=this[3]*n,e===0&&(this[3]=1),this.check()}rotateX(e){return _Q(this,this,e),this.check()}rotateY(e){return xQ(this,this,e),this.check()}rotateZ(e){return CQ(this,this,e),this.check()}scale(e){return TQ(this,this,e),this.check()}slerp(e,n,r){let i,s,o;switch(arguments.length){case 1:({start:i=NQ,target:s,ratio:o}=e);break;case 2:i=this,s=e,o=n;break;default:i=e,s=n,o=r}return of(this,i,s,o),this.check()}transformVector4(e,n=new Ym){return dQ(n,e,this),pl(n,4)}lengthSq(){return this.lengthSquared()}setFromAxisAngle(e,n){return this.setAxisAngle(e,n)}premultiply(e){return this.multiplyLeft(e)}multiply(e){return this.multiplyRight(e)}}const Bb={EPSILON1:.1,EPSILON2:.01,EPSILON3:.001,EPSILON4:1e-4,EPSILON5:1e-5,EPSILON6:1e-6,EPSILON7:1e-7,EPSILON8:1e-8,EPSILON9:1e-9,EPSILON10:1e-10,EPSILON11:1e-11,EPSILON12:1e-12,EPSILON13:1e-13,EPSILON14:1e-14,EPSILON15:1e-15,EPSILON16:1e-16,EPSILON17:1e-17,EPSILON18:1e-18,EPSILON19:1e-19,EPSILON20:1e-20,PI_OVER_TWO:Math.PI/2,PI_OVER_FOUR:Math.PI/4,PI_OVER_SIX:Math.PI/6,TWO_PI:Math.PI*2},p_=`#if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX)) + +struct AmbientLight { + vec3 color; +}; + +struct PointLight { + vec3 color; + vec3 position; + vec3 attenuation; +}; + +struct DirectionalLight { + vec3 color; + vec3 direction; +}; + +uniform AmbientLight lighting_uAmbientLight; +uniform PointLight lighting_uPointLight[MAX_LIGHTS]; +uniform DirectionalLight lighting_uDirectionalLight[MAX_LIGHTS]; +uniform int lighting_uPointLightCount; +uniform int lighting_uDirectionalLightCount; + +uniform bool lighting_uEnabled; + +float getPointLightAttenuation(PointLight pointLight, float distance) { + return pointLight.attenuation.x + + pointLight.attenuation.y * distance + + pointLight.attenuation.z * distance * distance; +} + +#endif +`,OQ={lightSources:{}};function zA(){let{color:t=[0,0,0],intensity:e=1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return t.map(n=>n*e/255)}function DQ(t){let{ambientLight:e,pointLights:n=[],directionalLights:r=[]}=t;const i={};return e?i["lighting_uAmbientLight.color"]=zA(e):i["lighting_uAmbientLight.color"]=[0,0,0],n.forEach((s,o)=>{i["lighting_uPointLight[".concat(o,"].color")]=zA(s),i["lighting_uPointLight[".concat(o,"].position")]=s.position,i["lighting_uPointLight[".concat(o,"].attenuation")]=s.attenuation||[1,0,0]}),i.lighting_uPointLightCount=n.length,r.forEach((s,o)=>{i["lighting_uDirectionalLight[".concat(o,"].color")]=zA(s),i["lighting_uDirectionalLight[".concat(o,"].direction")]=s.direction}),i.lighting_uDirectionalLightCount=r.length,i}function Rb(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:OQ;if("lightSources"in t){const{ambientLight:e,pointLights:n,directionalLights:r}=t.lightSources||{};return e||n&&n.length>0||r&&r.length>0?Object.assign({},DQ({ambientLight:e,pointLights:n,directionalLights:r}),{lighting_uEnabled:!0}):{lighting_uEnabled:!1}}if("lights"in t){const e={pointLights:[],directionalLights:[]};for(const n of t.lights||[])switch(n.type){case"ambient":e.ambientLight=n;break;case"directional":e.directionalLights.push(n);break;case"point":e.pointLights.push(n);break}return Rb({lightSources:e})}return{}}const kQ={name:"lights",vs:p_,fs:p_,getUniforms:Rb,defines:{MAX_LIGHTS:3}},QQ=new Uint8Array([0,255,255,255]),FQ={pickingSelectedColor:null,pickingHighlightColor:QQ,pickingActive:!1,pickingAttribute:!1};function UQ(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:FQ;const e={};if(t.pickingSelectedColor!==void 0)if(!t.pickingSelectedColor)e.picking_uSelectedColorValid=0;else{const n=t.pickingSelectedColor.slice(0,3);e.picking_uSelectedColorValid=1,e.picking_uSelectedColor=n}if(t.pickingHighlightColor){const n=Array.from(t.pickingHighlightColor,r=>r/255);Number.isFinite(n[3])||(n[3]=1),e.picking_uHighlightColor=n}return t.pickingActive!==void 0&&(e.picking_uActive=!!t.pickingActive,e.picking_uAttribute=!!t.pickingAttribute),e}const GQ=`uniform bool picking_uActive; +uniform bool picking_uAttribute; +uniform vec3 picking_uSelectedColor; +uniform bool picking_uSelectedColorValid; + +out vec4 picking_vRGBcolor_Avalid; + +const float COLOR_SCALE = 1. / 255.; + +bool picking_isColorValid(vec3 color) { + return dot(color, vec3(1.0)) > 0.001; +} + +bool isVertexPicked(vec3 vertexColor) { + return + picking_uSelectedColorValid && + !picking_isColorValid(abs(vertexColor - picking_uSelectedColor)); +} + +void picking_setPickingColor(vec3 pickingColor) { + if (picking_uActive) { + picking_vRGBcolor_Avalid.a = float(picking_isColorValid(pickingColor)); + + if (!picking_uAttribute) { + picking_vRGBcolor_Avalid.rgb = pickingColor * COLOR_SCALE; + } + } else { + picking_vRGBcolor_Avalid.a = float(isVertexPicked(pickingColor)); + } +} + +void picking_setPickingAttribute(float value) { + if (picking_uAttribute) { + picking_vRGBcolor_Avalid.r = value; + } +} +void picking_setPickingAttribute(vec2 value) { + if (picking_uAttribute) { + picking_vRGBcolor_Avalid.rg = value; + } +} +void picking_setPickingAttribute(vec3 value) { + if (picking_uAttribute) { + picking_vRGBcolor_Avalid.rgb = value; + } +} +`,zQ=`uniform bool picking_uActive; +uniform vec3 picking_uSelectedColor; +uniform vec4 picking_uHighlightColor; + +in vec4 picking_vRGBcolor_Avalid; +vec4 picking_filterHighlightColor(vec4 color) { + if (picking_uActive) { + return color; + } + bool selected = bool(picking_vRGBcolor_Avalid.a); + + if (selected) { + float highLightAlpha = picking_uHighlightColor.a; + float blendedAlpha = highLightAlpha + color.a * (1.0 - highLightAlpha); + float highLightRatio = highLightAlpha / blendedAlpha; + + vec3 blendedRGB = mix(color.rgb, picking_uHighlightColor.rgb, highLightRatio); + return vec4(blendedRGB, blendedAlpha); + } else { + return color; + } +} +vec4 picking_filterPickingColor(vec4 color) { + if (picking_uActive) { + if (picking_vRGBcolor_Avalid.a == 0.0) { + discard; + } + return picking_vRGBcolor_Avalid; + } + return color; +} +vec4 picking_filterColor(vec4 color) { + vec4 highightColor = picking_filterHighlightColor(color); + return picking_filterPickingColor(highightColor); +} + +`,VQ={name:"picking",vs:GQ,fs:zQ,getUniforms:UQ},jQ=` +uniform float lighting_uAmbient; +uniform float lighting_uDiffuse; +uniform float lighting_uShininess; +uniform vec3 lighting_uSpecularColor; + +vec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_direction, vec3 normal_worldspace, vec3 color) { + vec3 halfway_direction = normalize(light_direction + view_direction); + float lambertian = dot(light_direction, normal_worldspace); + float specular = 0.0; + if (lambertian > 0.0) { + float specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0); + specular = pow(specular_angle, lighting_uShininess); + } + lambertian = max(lambertian, 0.0); + return (lambertian * lighting_uDiffuse * surfaceColor + specular * lighting_uSpecularColor) * color; +} + +vec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) { + vec3 lightColor = surfaceColor; + + if (lighting_uEnabled) { + vec3 view_direction = normalize(cameraPosition - position_worldspace); + lightColor = lighting_uAmbient * surfaceColor * lighting_uAmbientLight.color; + + for (int i = 0; i < MAX_LIGHTS; i++) { + if (i >= lighting_uPointLightCount) { + break; + } + PointLight pointLight = lighting_uPointLight[i]; + vec3 light_position_worldspace = pointLight.position; + vec3 light_direction = normalize(light_position_worldspace - position_worldspace); + lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color); + } + + for (int i = 0; i < MAX_LIGHTS; i++) { + if (i >= lighting_uDirectionalLightCount) { + break; + } + DirectionalLight directionalLight = lighting_uDirectionalLight[i]; + lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color); + } + } + return lightColor; +} + +vec3 lighting_getSpecularLightColor(vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) { + vec3 lightColor = vec3(0, 0, 0); + vec3 surfaceColor = vec3(0, 0, 0); + + if (lighting_uEnabled) { + vec3 view_direction = normalize(cameraPosition - position_worldspace); + + for (int i = 0; i < MAX_LIGHTS; i++) { + if (i >= lighting_uPointLightCount) { + break; + } + PointLight pointLight = lighting_uPointLight[i]; + vec3 light_position_worldspace = pointLight.position; + vec3 light_direction = normalize(light_position_worldspace - position_worldspace); + lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color); + } + + for (int i = 0; i < MAX_LIGHTS; i++) { + if (i >= lighting_uDirectionalLightCount) { + break; + } + DirectionalLight directionalLight = lighting_uDirectionalLight[i]; + lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color); + } + } + return lightColor; +} +`,HQ={};function WQ(t){const{ambient:e=.35,diffuse:n=.6,shininess:r=32,specularColor:i=[30,30,30]}=t;return{lighting_uAmbient:e,lighting_uDiffuse:n,lighting_uShininess:r,lighting_uSpecularColor:i.map(s=>s/255)}}function YQ(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:HQ;if(!("material"in t))return{};const{material:e}=t;return e?WQ(e):{lighting_uEnabled:!1}}const $Q={name:"gouraud-lighting",dependencies:[kQ],vs:jQ,defines:{LIGHTING_VERTEX:1},getUniforms:YQ},KQ=`attribute float transform_elementID; +vec2 transform_getPixelSizeHalf(vec2 size) { + return vec2(1.) / (2. * size); +} + +vec2 transform_getPixelIndices(vec2 texSize, vec2 pixelSizeHalf) { + float yIndex = floor((transform_elementID / texSize[0]) + pixelSizeHalf[1]); + float xIndex = transform_elementID - (yIndex * texSize[0]); + return vec2(xIndex, yIndex); +} +vec2 transform_getTexCoord(vec2 size) { + vec2 pixelSizeHalf = transform_getPixelSizeHalf(size); + vec2 indices = transform_getPixelIndices(size, pixelSizeHalf); + vec2 coord = indices / size + pixelSizeHalf; + return coord; +} +vec2 transform_getPos(vec2 size) { + vec2 texCoord = transform_getTexCoord(size); + vec2 pos = (texCoord * (2.0, 2.0)) - (1., 1.); + return pos; +} +vec4 transform_getInput(sampler2D texSampler, vec2 size) { + vec2 texCoord = transform_getTexCoord(size); + vec4 textureColor = texture2D(texSampler, texCoord); + return textureColor; +} +`,qQ={name:"transform",vs:KQ,fs:null};class Os{static getDefaultProgramManager(e){return e.luma=e.luma||{},e.luma.defaultProgramManager=e.luma.defaultProgramManager||new Os(e),e.luma.defaultProgramManager}constructor(e){this.gl=e,this._programCache={},this._getUniforms={},this._registeredModules={},this._hookFunctions=[],this._defaultModules=[],this._hashes={},this._hashCounter=0,this.stateHash=0,this._useCounts={}}addDefaultModule(e){this._defaultModules.find(n=>n.name===e.name)||this._defaultModules.push(e),this.stateHash++}removeDefaultModule(e){const n=typeof e=="string"?e:e.name;this._defaultModules=this._defaultModules.filter(r=>r.name!==n),this.stateHash++}addShaderHook(e,n){n&&(e=Object.assign(n,{hook:e})),this._hookFunctions.push(e),this.stateHash++}get(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{vs:n="",fs:r="",defines:i={},inject:s={},varyings:o=[],bufferMode:a=35981,transpileToGLSL100:l=!1}=e,c=this._getModuleList(e.modules),u=this._getHash(n),f=this._getHash(r),h=c.map(E=>this._getHash(E.name)).sort(),d=o.map(E=>this._getHash(E)),A=Object.keys(i).sort(),p=Object.keys(s).sort(),g=[],m=[];for(const E of A)g.push(this._getHash(E)),g.push(this._getHash(i[E]));for(const E of p)m.push(this._getHash(E)),m.push(this._getHash(s[E]));const v="".concat(u,"/").concat(f,"D").concat(g.join("/"),"M").concat(h.join("/"),"I").concat(m.join("/"),"V").concat(d.join("/"),"H").concat(this.stateHash,"B").concat(a).concat(l?"T":"");if(!this._programCache[v]){const E=tk(this.gl,{vs:n,fs:r,modules:c,inject:s,defines:i,hookFunctions:this._hookFunctions,transpileToGLSL100:l});this._programCache[v]=new nb(this.gl,{hash:v,vs:E.vs,fs:E.fs,varyings:o,bufferMode:a}),this._getUniforms[v]=E.getUniforms||(_=>{}),this._useCounts[v]=0}return this._useCounts[v]++,this._programCache[v]}getUniforms(e){return this._getUniforms[e.hash]||null}release(e){const n=e.hash;this._useCounts[n]--,this._useCounts[n]===0&&(this._programCache[n].delete(),delete this._programCache[n],delete this._getUniforms[n],delete this._useCounts[n])}_getHash(e){return this._hashes[e]===void 0&&(this._hashes[e]=this._hashCounter++),this._hashes[e]}_getModuleList(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];const n=new Array(this._defaultModules.length+e.length),r={};let i=0;for(let s=0,o=this._defaultModules.length;s{},rF={};class Tn{constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{id:r=Pi("model")}=n;q(Yh(e)),this.id=r,this.gl=e,this.id=n.id||Pi("Model"),this.lastLogTime=0,this.animated=!1,this.initialize(n)}initialize(e){this.props={},this.programManager=e.programManager||Os.getDefaultProgramManager(this.gl),this._programManagerState=-1,this._managedProgram=!1;const{program:n=null,vs:r,fs:i,modules:s,defines:o,inject:a,varyings:l,bufferMode:c,transpileToGLSL100:u}=e;this.programProps={program:n,vs:r,fs:i,modules:s,defines:o,inject:a,varyings:l,bufferMode:c,transpileToGLSL100:u},this.program=null,this.vertexArray=null,this._programDirty=!0,this.userData={},this.needsRedraw=!0,this._attributes={},this.attributes={},this.uniforms={},this.pickable=!0,this._checkProgram(),this.setUniforms(Object.assign({},this.getModuleUniforms(e.moduleSettings))),this.drawMode=e.drawMode!==void 0?e.drawMode:4,this.vertexCount=e.vertexCount||0,this.geometryBuffers={},this.isInstanced=e.isInstanced||e.instanced||e.instanceCount>0,this._setModelProps(e),this.geometry={},q(this.drawMode!==void 0&&Number.isFinite(this.vertexCount),nF)}setProps(e){this._setModelProps(e)}delete(){for(const e in this._attributes)this._attributes[e]!==this.attributes[e]&&this._attributes[e].delete();this._managedProgram&&(this.programManager.release(this.program),this._managedProgram=!1),this.vertexArray.delete(),this._deleteGeometryBuffers()}getDrawMode(){return this.drawMode}getVertexCount(){return this.vertexCount}getInstanceCount(){return this.instanceCount}getAttributes(){return this.attributes}getProgram(){return this.program}setProgram(e){const{program:n,vs:r,fs:i,modules:s,defines:o,inject:a,varyings:l,bufferMode:c,transpileToGLSL100:u}=e;this.programProps={program:n,vs:r,fs:i,modules:s,defines:o,inject:a,varyings:l,bufferMode:c,transpileToGLSL100:u},this._programDirty=!0}getUniforms(){return this.uniforms}setDrawMode(e){return this.drawMode=e,this}setVertexCount(e){return q(Number.isFinite(e)),this.vertexCount=e,this}setInstanceCount(e){return q(Number.isFinite(e)),this.instanceCount=e,this}setGeometry(e){return this.drawMode=e.drawMode,this.vertexCount=e.getVertexCount(),this._deleteGeometryBuffers(),this.geometryBuffers=JQ(this.gl,e),this.vertexArray.setAttributes(this.geometryBuffers),this}setAttributes(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(ko(e))return this;const n={};for(const r in e){const i=e[r];n[r]=i.getValue?i.getValue():i}return this.vertexArray.setAttributes(n),this}setUniforms(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Object.assign(this.uniforms,e),this}getModuleUniforms(e){this._checkProgram();const n=this.programManager.getUniforms(this.program);return n?n(e):{}}updateModuleSettings(e){const n=this.getModuleUniforms(e||{});return this.setUniforms(n)}clear(e){return Um(this.program.gl,e),this}draw(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._checkProgram();const{moduleSettings:n=null,framebuffer:r,uniforms:i={},attributes:s={},transformFeedback:o=this.transformFeedback,parameters:a={},vertexArray:l=this.vertexArray}=e;this.setAttributes(s),this.updateModuleSettings(n),this.setUniforms(i);let c;ie.priority>=$s&&(c=this._logDrawCallStart($s));const u=this.vertexArray.getDrawParams(),{isIndexed:f=u.isIndexed,indexType:h=u.indexType,indexOffset:d=u.indexOffset,vertexArrayInstanced:A=u.isInstanced}=this.props;A&&!this.isInstanced&&ie.warn("Found instanced attributes on non-instanced model",this.id)();const{isInstanced:p,instanceCount:g}=this,{onBeforeRender:m=m_,onAfterRender:v=m_}=this.props;m(),this.program.setUniforms(this.uniforms);const E=this.program.draw(Object.assign(rF,e,{logPriority:c,uniforms:null,framebuffer:r,parameters:a,drawMode:this.getDrawMode(),vertexCount:this.getVertexCount(),vertexArray:l,transformFeedback:o,isIndexed:f,indexType:h,isInstanced:p,instanceCount:g,offset:f?d:0}));return v(),ie.priority>=$s&&this._logDrawCallEnd(c,l,r),E}transform(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{discard:n=!0,feedbackBuffers:r,unbindModels:i=[]}=e;let{parameters:s}=e;r&&this._setFeedbackBuffers(r),n&&(s=Object.assign({},s,{35977:n})),i.forEach(o=>o.vertexArray.unbindBuffers());try{this.draw(Object.assign({},e,{parameters:s}))}finally{i.forEach(o=>o.vertexArray.bindBuffers())}return this}render(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return ie.warn("Model.render() is deprecated. Use Model.setUniforms() and Model.draw()")(),this.setUniforms(e).draw()}_setModelProps(e){Object.assign(this.props,e),"uniforms"in e&&this.setUniforms(e.uniforms),"pickable"in e&&(this.pickable=e.pickable),"instanceCount"in e&&(this.instanceCount=e.instanceCount),"geometry"in e&&this.setGeometry(e.geometry),"attributes"in e&&this.setAttributes(e.attributes),"_feedbackBuffers"in e&&this._setFeedbackBuffers(e._feedbackBuffers)}_checkProgram(){if(!(this._programDirty||this.programManager.stateHash!==this._programManagerState))return;let{program:n}=this.programProps;if(n)this._managedProgram=!1;else{const{vs:r,fs:i,modules:s,inject:o,defines:a,varyings:l,bufferMode:c,transpileToGLSL100:u}=this.programProps;n=this.programManager.get({vs:r,fs:i,modules:s,inject:o,defines:a,varyings:l,bufferMode:c,transpileToGLSL100:u}),this.program&&this._managedProgram&&this.programManager.release(this.program),this._programManagerState=this.programManager.stateHash,this._managedProgram=!0}q(n instanceof nb,"Model needs a program"),this._programDirty=!1,n!==this.program&&(this.program=n,this.vertexArray?this.vertexArray.setProps({program:this.program,attributes:this.vertexArray.attributes}):this.vertexArray=new pD(this.gl,{program:this.program}),this.setUniforms(Object.assign({},this.getModuleUniforms())))}_deleteGeometryBuffers(){for(const e in this.geometryBuffers){const n=this.geometryBuffers[e][0]||this.geometryBuffers[e];n instanceof Le&&n.delete()}}_setAnimationProps(e){this.animated&&q(e,"Model.draw(): animated uniforms but no animationProps")}_setFeedbackBuffers(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(ko(e))return this;const{gl:n}=this.program;return this.transformFeedback=this.transformFeedback||new rb(n,{program:this.program}),this.transformFeedback.setBuffers(e),this}_logDrawCallStart(e){const n=e>3?0:tF;if(!(Date.now()-this.lastLogTime>> DRAWING MODEL ".concat(this.id),{collapsed:ie.level<=2})(),e}_logDrawCallEnd(e,n,r,i){if(e===void 0)return;const s=yD({vertexArray:n,header:"".concat(this.id," attributes"),attributes:this._attributes}),{table:o,unusedTable:a,unusedCount:l}=J1({header:"".concat(this.id," uniforms"),program:this.program,uniforms:Object.assign({},this.program.uniforms,r)}),{table:c,count:u}=J1({header:"".concat(this.id," uniforms"),program:this.program,uniforms:Object.assign({},this.program.uniforms,r),undefinedOnly:!0});u>0&&ie.log("MISSING UNIFORMS",Object.keys(c))(),l>0&&ie.log("UNUSED UNIFORMS",Object.keys(a))();const f=_D(this.vertexArray.configuration);ie.table(e,s)(),ie.table(e,o)(),ie.table(e+1,f)(),i&&i.log({logLevel:$s,message:"Rendered to ".concat(i.id)}),ie.groupEnd($s)()}}class iF{constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=e,this.currentIndex=0,this.feedbackMap={},this.varyings=null,this.bindings=[],this.resources={},this._initialize(n),Object.seal(this)}setupResources(e){for(const n of this.bindings)this._setupTransformFeedback(n,e)}updateModelProps(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{varyings:n}=this;return n.length>0&&(e=Object.assign({},e,{varyings:n})),e}getDrawOptions(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const n=this.bindings[this.currentIndex],{sourceBuffers:r,transformFeedback:i}=n;return{attributes:Object.assign({},r,e.attributes),transformFeedback:i}}swap(){return this.feedbackMap?(this.currentIndex=this._getNextIndex(),!0):!1}update(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupBuffers(e)}getBuffer(e){const{feedbackBuffers:n}=this.bindings[this.currentIndex],r=e?n[e]:null;return r?r instanceof Le?r:r.buffer:null}getData(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{varyingName:n}=e,r=this.getBuffer(n);return r?r.getData():null}delete(){for(const e in this.resources)this.resources[e].delete()}_initialize(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupBuffers(e),this.varyings=e.varyings||Object.keys(this.bindings[this.currentIndex].feedbackBuffers),this.varyings.length>0&&q(xe(this.gl))}_getFeedbackBuffers(e){const{sourceBuffers:n={}}=e,r={};if(this.bindings[this.currentIndex]&&Object.assign(r,this.bindings[this.currentIndex].feedbackBuffers),this.feedbackMap)for(const i in this.feedbackMap){const s=this.feedbackMap[i];i in n&&(r[s]=i)}Object.assign(r,e.feedbackBuffers);for(const i in r){const s=r[i];if(typeof s=="string"){const o=n[s],{byteLength:a,usage:l,accessor:c}=o;r[i]=this._createNewBuffer(i,{byteLength:a,usage:l,accessor:c})}}return r}_setupBuffers(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{sourceBuffers:n=null}=e;Object.assign(this.feedbackMap,e.feedbackMap);const r=this._getFeedbackBuffers(e);this._updateBindings({sourceBuffers:n,feedbackBuffers:r})}_setupTransformFeedback(e,n){let{model:r}=n;const{program:i}=r;e.transformFeedback=new rb(this.gl,{program:i,buffers:e.feedbackBuffers})}_updateBindings(e){if(this.bindings[this.currentIndex]=this._updateBinding(this.bindings[this.currentIndex],e),this.feedbackMap){const{sourceBuffers:n,feedbackBuffers:r}=this._swapBuffers(this.bindings[this.currentIndex]),i=this._getNextIndex();this.bindings[i]=this._updateBinding(this.bindings[i],{sourceBuffers:n,feedbackBuffers:r})}}_updateBinding(e,n){return e?(Object.assign(e.sourceBuffers,n.sourceBuffers),Object.assign(e.feedbackBuffers,n.feedbackBuffers),e.transformFeedback&&e.transformFeedback.setBuffers(e.feedbackBuffers),e):{sourceBuffers:Object.assign({},n.sourceBuffers),feedbackBuffers:Object.assign({},n.feedbackBuffers)}}_swapBuffers(e){if(!this.feedbackMap)return null;const n=Object.assign({},e.sourceBuffers),r=Object.assign({},e.feedbackBuffers);for(const i in this.feedbackMap){const s=this.feedbackMap[i];n[i]=e.feedbackBuffers[s],r[s]=e.sourceBuffers[i],q(r[s]instanceof Le)}return{sourceBuffers:n,feedbackBuffers:r}}_createNewBuffer(e,n){const r=new Le(this.gl,n);return this.resources[e]&&this.resources[e].delete(),this.resources[e]=r,r}_getNextIndex(){return(this.currentIndex+1)%2}}const sF="transform_uSampler_",Zf="transform_uSize_",v_="transform_position";function oF(t){let{vs:e,sourceTextureMap:n,targetTextureVarying:r,targetTexture:i}=t,o=Object.keys(n).length,a=null;const l={};let c=e,u={};if(o>0||r){const f=c.split(` +`),h=f.slice();if(f.forEach((d,A,p)=>{if(o>0){const g=fF(d,n);if(g){const{updatedLine:m,inject:v}=g;h[A]=m,u=Tp([u,v]),Object.assign(l,g.samplerTextureMap),o--}}r&&!a&&(a=uF(d,r))}),r){q(i);const d="".concat(Zf).concat(r),A="uniform vec2 ".concat(d,`; +`),p=" vec2 ".concat(v_," = transform_getPos(").concat(d,`); + gl_Position = vec4(`).concat(v_,`, 0, 1.); +`);u=Tp([u,{"vs:#decl":A,"vs:#main-start":p}])}c=h.join(` +`)}return{vs:c,targetTextureType:a,inject:u,samplerTextureMap:l}}function aF(t){let{sourceTextureMap:e,targetTextureVarying:n,targetTexture:r}=t;const i={};let s,o;n&&({width:s,height:o}=r,i["".concat(Zf).concat(n)]=[s,o]);for(const a in e)({width:s,height:o}=e[a]),i["".concat(Zf).concat(a)]=[s,o];return i}function lF(t){return ub(t,["attribute","in"])}function cF(t){const e="".concat(sF).concat(t),n="".concat(Zf).concat(t),r=" uniform sampler2D ".concat(e,`; + uniform vec2 `).concat(n,";");return{samplerName:e,sizeName:n,uniformDeclerations:r}}function uF(t,e){const n=ub(t,["varying","out"]);return n&&n.name===e?n.type:null}function fF(t,e){const n={},r=lF(t);if(!r)return null;const{type:i,name:s}=r;if(s&&e[s]){const o="// ".concat(t," => Replaced by Transform with a sampler"),{samplerName:a,sizeName:l,uniformDeclerations:c}=cF(s),u=uk(i),f=" ".concat(i," ").concat(s," = transform_getInput(").concat(a,", ").concat(l,").").concat(u,`; +`);return n[a]=s,{updatedLine:o,inject:{"vs:#decl":c,"vs:#main-start":f},samplerTextureMap:n}}return null}const hF={10241:9728,10240:9728,10242:33071,10243:33071},dF="transform_output";class AF{constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=e,this.id=this.currentIndex=0,this._swapTexture=null,this.targetTextureVarying=null,this.targetTextureType=null,this.samplerTextureMap=null,this.bindings=[],this.resources={},this._initialize(n),Object.seal(this)}updateModelProps(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const n=this._processVertexShader(e);return Object.assign({},e,n)}getDrawOptions(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{sourceBuffers:n,sourceTextures:r,framebuffer:i,targetTexture:s}=this.bindings[this.currentIndex],o=Object.assign({},n,e.attributes),a=Object.assign({},e.uniforms),l=Object.assign({},e.parameters);let c=e.discard;if(this.hasSourceTextures||this.hasTargetTexture){o.transform_elementID=this.elementIDBuffer;for(const f in this.samplerTextureMap){const h=this.samplerTextureMap[f];a[f]=r[h]}this._setSourceTextureParameters();const u=aF({sourceTextureMap:r,targetTextureVarying:this.targetTextureVarying,targetTexture:s});Object.assign(a,u)}return this.hasTargetTexture&&(c=!1,l.viewport=[0,0,i.width,i.height]),{attributes:o,framebuffer:i,uniforms:a,discard:c,parameters:l}}swap(){return this._swapTexture?(this.currentIndex=this._getNextIndex(),!0):!1}update(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupTextures(e)}getTargetTexture(){const{targetTexture:e}=this.bindings[this.currentIndex];return e}getData(){let{packed:e=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{framebuffer:n}=this.bindings[this.currentIndex],r=Kh(n);if(!e)return r;const i=r.constructor,s=fk(this.targetTextureType),o=new i(r.length*s/4);let a=0;for(let l=0;l0&&arguments[0]!==void 0?arguments[0]:{};const{_targetTextureVarying:n,_swapTexture:r}=e;this._swapTexture=r,this.targetTextureVarying=n,this.hasTargetTexture=n,this._setupTextures(e)}_createTargetTexture(e){const{sourceTextures:n,textureOrReference:r}=e;if(r instanceof Ut)return r;const i=n[r];return i?(this._targetRefTexName=r,this._createNewTexture(i)):null}_setupTextures(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{sourceBuffers:n,_sourceTextures:r={},_targetTexture:i}=e,s=this._createTargetTexture({sourceTextures:r,textureOrReference:i});this.hasSourceTextures=this.hasSourceTextures||r&&Object.keys(r).length>0,this._updateBindings({sourceBuffers:n,sourceTextures:r,targetTexture:s}),"elementCount"in e&&this._updateElementIDBuffer(e.elementCount)}_updateElementIDBuffer(e){if(typeof e!="number"||this.elementCount>=e)return;const n=new Float32Array(e);n.forEach((r,i,s)=>{s[i]=i}),this.elementIDBuffer?this.elementIDBuffer.setData({data:n}):this.elementIDBuffer=new Le(this.gl,{data:n,accessor:{size:1}}),this.elementCount=e}_updateBindings(e){if(this.bindings[this.currentIndex]=this._updateBinding(this.bindings[this.currentIndex],e),this._swapTexture){const{sourceTextures:n,targetTexture:r}=this._swapTextures(this.bindings[this.currentIndex]),i=this._getNextIndex();this.bindings[i]=this._updateBinding(this.bindings[i],{sourceTextures:n,targetTexture:r})}}_updateBinding(e,n){const{sourceBuffers:r,sourceTextures:i,targetTexture:s}=n;if(e||(e={sourceBuffers:{},sourceTextures:{},targetTexture:null}),Object.assign(e.sourceTextures,i),Object.assign(e.sourceBuffers,r),s){e.targetTexture=s;const{width:o,height:a}=s,{framebuffer:l}=e;l?(l.update({attachments:{36064:s},resizeAttachments:!1}),l.resize({width:o,height:a})):e.framebuffer=new ct(this.gl,{id:"transform-framebuffer",width:o,height:a,attachments:{36064:s}})}return e}_setSourceTextureParameters(){const e=this.currentIndex,{sourceTextures:n}=this.bindings[e];for(const r in n)n[r].setParameters(hF)}_swapTextures(e){if(!this._swapTexture)return null;const n=Object.assign({},e.sourceTextures);n[this._swapTexture]=e.targetTexture;const r=e.sourceTextures[this._swapTexture];return{sourceTextures:n,targetTexture:r}}_createNewTexture(e){const n=s6(e,{parameters:{10241:9728,10240:9728,10242:33071,10243:33071},pixelStore:{37440:!1}});return this.ownTexture&&this.ownTexture.delete(),this.ownTexture=n,n}_getNextIndex(){return(this.currentIndex+1)%2}_processVertexShader(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{sourceTextures:n,targetTexture:r}=this.bindings[this.currentIndex],{vs:i,uniforms:s,targetTextureType:o,inject:a,samplerTextureMap:l}=oF({vs:e.vs,sourceTextureMap:n,targetTextureVarying:this.targetTextureVarying,targetTexture:r}),c=Tp([e.inject||{},a]);this.targetTextureType=o,this.samplerTextureMap=l;const u=e._fs||fb({version:eb(i),input:this.targetTextureVarying,inputType:o,output:dF}),f=this.hasSourceTextures||this.targetTextureVarying?[qQ].concat(e.modules||[]):e.modules;return{vs:i,fs:u,modules:f,uniforms:s,inject:c}}}class qm{static isSupported(e){return xe(e)}constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=e,this.model=null,this.elementCount=0,this.bufferTransform=null,this.textureTransform=null,this.elementIDBuffer=null,this._initialize(n),Object.seal(this)}delete(){const{model:e,bufferTransform:n,textureTransform:r}=this;e&&e.delete(),n&&n.delete(),r&&r.delete()}run(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{clearRenderTarget:n=!0}=e,r=this._updateDrawOptions(e);n&&r.framebuffer&&r.framebuffer.clear({color:!0}),this.model.transform(r)}swap(){let e=!1;const n=[this.bufferTransform,this.textureTransform].filter(Boolean);for(const r of n)e=e||r.swap();q(e,"Nothing to swap")}getBuffer(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;return this.bufferTransform&&this.bufferTransform.getBuffer(e)}getData(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const n=[this.bufferTransform,this.textureTransform].filter(Boolean);for(const r of n){const i=r.getData(e);if(i)return i}return null}getFramebuffer(){return this.textureTransform&&this.textureTransform.getFramebuffer()}update(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};"elementCount"in e&&this.model.setVertexCount(e.elementCount);const n=[this.bufferTransform,this.textureTransform].filter(Boolean);for(const r of n)r.update(e)}_initialize(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{gl:n}=this;this._buildResourceTransforms(n,e),e=this._updateModelProps(e),this.model=new Tn(n,Object.assign({},e,{fs:e.fs||fb({version:eb(e.vs)}),id:e.id||"transform-model",drawMode:e.drawMode||0,vertexCount:e.elementCount})),this.bufferTransform&&this.bufferTransform.setupResources({model:this.model})}_updateModelProps(e){let n=Object.assign({},e);const r=[this.bufferTransform,this.textureTransform].filter(Boolean);for(const i of r)n=i.updateModelProps(n);return n}_buildResourceTransforms(e,n){gF(n)&&(this.bufferTransform=new iF(e,n)),pF(n)&&(this.textureTransform=new AF(e,n)),q(this.bufferTransform||this.textureTransform,"must provide source/feedback buffers or source/target textures")}_updateDrawOptions(e){let n=Object.assign({},e);const r=[this.bufferTransform,this.textureTransform].filter(Boolean);for(const i of r)n=Object.assign(n,i.getDrawOptions(n));return n}}function gF(t){return!!(!ko(t.feedbackBuffers)||!ko(t.feedbackMap)||t.varyings&&t.varyings.length>0)}function pF(t){return!!(!ko(t._sourceTextures)||t._targetTexture||t._targetTextureVarying)}const y_={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6};class pr{static get DRAW_MODE(){return y_}constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{id:n=Pi("geometry"),drawMode:r=y_.TRIANGLES,attributes:i={},indices:s=null,vertexCount:o=null}=e;this.id=n,this.drawMode=r|0,this.attributes={},this.userData={},this._setAttributes(i,s),this.vertexCount=o||this._calculateVertexCount(this.attributes,this.indices)}get mode(){return this.drawMode}getVertexCount(){return this.vertexCount}getAttributes(){return this.indices?{indices:this.indices,...this.attributes}:this.attributes}_print(e){return"Geometry ".concat(this.id," attribute ").concat(e)}_setAttributes(e,n){n&&(this.indices=ArrayBuffer.isView(n)?{value:n,size:1}:n);for(const r in e){let i=e[r];i=ArrayBuffer.isView(i)?{value:i}:i,q(ArrayBuffer.isView(i.value),"".concat(this._print(r),": must be typed array or object with value as typed array")),(r==="POSITION"||r==="positions")&&!i.size&&(i.size=3),r==="indices"?(q(!this.indices),this.indices=i):this.attributes[r]=i}return this.indices&&this.indices.isIndexed!==void 0&&(this.indices=Object.assign({},this.indices),delete this.indices.isIndexed),this}_calculateVertexCount(e,n){if(n)return n.value.length;let r=1/0;for(const i in e){const s=e[i],{value:o,size:a,constant:l}=s;!l&&o&&a>=1&&(r=Math.min(r,o.length/a))}return q(Number.isFinite(r)),r}}let mF=1,vF=1;class Pb{constructor(){this.time=0,this.channels=new Map,this.animations=new Map,this.playing=!1,this.lastEngineTime=-1}addChannel(e){const{delay:n=0,duration:r=Number.POSITIVE_INFINITY,rate:i=1,repeat:s=1}=e,o=mF++,a={time:0,delay:n,duration:r,rate:i,repeat:s};return this._setChannelTime(a,this.time),this.channels.set(o,a),o}removeChannel(e){this.channels.delete(e);for(const[n,r]of this.animations)r.channel===e&&this.detachAnimation(n)}isFinished(e){const n=this.channels.get(e);return n===void 0?!1:this.time>=n.delay+n.duration*n.repeat}getTime(e){if(e===void 0)return this.time;const n=this.channels.get(e);return n===void 0?-1:n.time}setTime(e){this.time=Math.max(0,e);const n=this.channels.values();for(const i of n)this._setChannelTime(i,this.time);const r=this.animations.values();for(const i of r){const{animation:s,channel:o}=i;s.setTime(this.getTime(o))}}play(){this.playing=!0}pause(){this.playing=!1,this.lastEngineTime=-1}reset(){this.setTime(0)}attachAnimation(e,n){const r=vF++;return this.animations.set(r,{animation:e,channel:n}),e.setTime(this.getTime(n)),r}detachAnimation(e){this.animations.delete(e)}update(e){this.playing&&(this.lastEngineTime===-1&&(this.lastEngineTime=e),this.setTime(this.time+(e-this.lastEngineTime)),this.lastEngineTime=e)}_setChannelTime(e,n){const r=n-e.delay,i=e.duration*e.repeat;r>=i?e.time=e.duration*e.rate:(e.time=Math.max(0,r)%e.duration,e.time*=e.rate)}}const Mb="#define SMOOTH_EDGE_RADIUS 0.5",yF=` +`.concat(Mb,` + +struct VertexGeometry { + vec4 position; + vec3 worldPosition; + vec3 worldPositionAlt; + vec3 normal; + vec2 uv; + vec3 pickingColor; +} geometry = VertexGeometry( + vec4(0.0, 0.0, 1.0, 0.0), + vec3(0.0), + vec3(0.0), + vec3(0.0), + vec2(0.0), + vec3(0.0) +); +`),EF=` +`.concat(Mb,` + +struct FragmentGeometry { + vec2 uv; +} geometry; + +float smoothedge(float edge, float x) { + return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x); +} +`),_F={name:"geometry",vs:yF,fs:EF},he={DEFAULT:-1,LNGLAT:1,METER_OFFSETS:2,LNGLAT_OFFSETS:3,CARTESIAN:0};Object.defineProperty(he,"IDENTITY",{get:()=>(Ee.deprecated("COORDINATE_SYSTEM.IDENTITY","COORDINATE_SYSTEM.CARTESIAN")(),0)});const Vn={WEB_MERCATOR:1,GLOBE:2,WEB_MERCATOR_AUTO_OFFSET:4,IDENTITY:0},Mi={common:0,meters:1,pixels:2},E_={click:{handler:"onClick"},panstart:{handler:"onDragStart"},panmove:{handler:"onDrag"},panend:{handler:"onDragEnd"}},xc={DRAW:"draw",MASK:"mask"},xF=Object.keys(he).map(t=>"const int COORDINATE_SYSTEM_".concat(t," = ").concat(he[t],";")).join(""),CF=Object.keys(Vn).map(t=>"const int PROJECTION_MODE_".concat(t," = ").concat(Vn[t],";")).join(""),IF=Object.keys(Mi).map(t=>"const int UNIT_".concat(t.toUpperCase()," = ").concat(Mi[t],";")).join(""),wF="".concat(xF,` +`).concat(CF,` +`).concat(IF,` + +uniform int project_uCoordinateSystem; +uniform int project_uProjectionMode; +uniform float project_uScale; +uniform bool project_uWrapLongitude; +uniform vec3 project_uCommonUnitsPerMeter; +uniform vec3 project_uCommonUnitsPerWorldUnit; +uniform vec3 project_uCommonUnitsPerWorldUnit2; +uniform vec4 project_uCenter; +uniform mat4 project_uModelMatrix; +uniform mat4 project_uViewProjectionMatrix; +uniform vec2 project_uViewportSize; +uniform float project_uDevicePixelRatio; +uniform float project_uFocalDistance; +uniform vec3 project_uCameraPosition; +uniform vec3 project_uCoordinateOrigin; +uniform vec3 project_uCommonOrigin; +uniform bool project_uPseudoMeters; + +const float TILE_SIZE = 512.0; +const float PI = 3.1415926536; +const float WORLD_SCALE = TILE_SIZE / (PI * 2.0); +const vec3 ZERO_64_LOW = vec3(0.0); +const float EARTH_RADIUS = 6370972.0; // meters +const float GLOBE_RADIUS = 256.0; + +// returns an adjustment factor for uCommonUnitsPerMeter +float project_size_at_latitude(float lat) { + float y = clamp(lat, -89.9, 89.9); + return 1.0 / cos(radians(y)); +} + +float project_size() { + if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR && + project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT && + project_uPseudoMeters == false) { + + // uCommonUnitsPerMeter in low-zoom Web Mercator is non-linear + // Adjust by 1 / cos(latitude) + // If geometry.position (vertex in common space) is populated, use it + // Otherwise use geometry.worldPosition (anchor in world space) + + if (geometry.position.w == 0.0) { + return project_size_at_latitude(geometry.worldPosition.y); + } + + // latitude from common y: 2.0 * (atan(exp(y / TILE_SIZE * 2.0 * PI - PI)) - PI / 4.0) + // Taylor series of 1 / cos(latitude) + // Max error < 0.003 + + float y = geometry.position.y / TILE_SIZE * 2.0 - 1.0; + float y2 = y * y; + float y4 = y2 * y2; + float y6 = y4 * y2; + return 1.0 + 4.9348 * y2 + 4.0587 * y4 + 1.5642 * y6; + } + return 1.0; +} + +float project_size_at_latitude(float meters, float lat) { + return meters * project_uCommonUnitsPerMeter.z * project_size_at_latitude(lat); +} + +// +// Scaling offsets - scales meters to "world distance" +// Note the scalar version of project_size is for scaling the z component only +// +float project_size(float meters) { + return meters * project_uCommonUnitsPerMeter.z * project_size(); +} + +vec2 project_size(vec2 meters) { + return meters * project_uCommonUnitsPerMeter.xy * project_size(); +} + +vec3 project_size(vec3 meters) { + return meters * project_uCommonUnitsPerMeter * project_size(); +} + +vec4 project_size(vec4 meters) { + return vec4(meters.xyz * project_uCommonUnitsPerMeter, meters.w); +} + +// Get rotation matrix that aligns the z axis with the given up vector +// Find 3 unit vectors ux, uy, uz that are perpendicular to each other and uz == up +mat3 project_get_orientation_matrix(vec3 up) { + vec3 uz = normalize(up); + // Tangent on XY plane + vec3 ux = abs(uz.z) == 1.0 ? vec3(1.0, 0.0, 0.0) : normalize(vec3(uz.y, -uz.x, 0)); + vec3 uy = cross(uz, ux); + return mat3(ux, uy, uz); +} + +bool project_needs_rotation(vec3 commonPosition, out mat3 transform) { + if (project_uProjectionMode == PROJECTION_MODE_GLOBE) { + transform = project_get_orientation_matrix(commonPosition); + return true; + } + return false; +} + +// +// Projecting normal - transform deltas from current coordinate system to +// normals in the worldspace +// +vec3 project_normal(vec3 vector) { + // Apply model matrix + vec4 normal_modelspace = project_uModelMatrix * vec4(vector, 0.0); + vec3 n = normalize(normal_modelspace.xyz * project_uCommonUnitsPerMeter); + mat3 rotation; + if (project_needs_rotation(geometry.position.xyz, rotation)) { + n = rotation * n; + } + return n; +} + +vec4 project_offset_(vec4 offset) { + float dy = offset.y; + vec3 commonUnitsPerWorldUnit = project_uCommonUnitsPerWorldUnit + project_uCommonUnitsPerWorldUnit2 * dy; + return vec4(offset.xyz * commonUnitsPerWorldUnit, offset.w); +} + +// +// Projecting positions - non-linear projection: lnglats => unit tile [0-1, 0-1] +// +vec2 project_mercator_(vec2 lnglat) { + float x = lnglat.x; + if (project_uWrapLongitude) { + x = mod(x + 180., 360.0) - 180.; + } + float y = clamp(lnglat.y, -89.9, 89.9); + return vec2( + radians(x) + PI, + PI + log(tan_fp32(PI * 0.25 + radians(y) * 0.5)) + ) * WORLD_SCALE; +} + +vec3 project_globe_(vec3 lnglatz) { + float lambda = radians(lnglatz.x); + float phi = radians(lnglatz.y); + float cosPhi = cos(phi); + float D = (lnglatz.z / EARTH_RADIUS + 1.0) * GLOBE_RADIUS; + + return vec3( + sin(lambda) * cosPhi, + -cos(lambda) * cosPhi, + sin(phi) + ) * D; +} + +// +// Projects positions (defined by project_uCoordinateSystem) to common space (defined by project_uProjectionMode) +// +vec4 project_position(vec4 position, vec3 position64Low) { + vec4 position_world = project_uModelMatrix * position; + + // Work around for a Mac+NVIDIA bug https://github.com/visgl/deck.gl/issues/4145 + if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR) { + if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) { + return vec4( + project_mercator_(position_world.xy), + project_size_at_latitude(position_world.z, position_world.y), + position_world.w + ); + } + if (project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN) { + position_world.xyz += project_uCoordinateOrigin; + } + } + if (project_uProjectionMode == PROJECTION_MODE_GLOBE) { + if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) { + return vec4( + project_globe_(position_world.xyz), + position_world.w + ); + } + } + if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) { + if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT) { + if (abs(position_world.y - project_uCoordinateOrigin.y) > 0.25) { + // Too far from the projection center for offset mode to be accurate + // Only use high parts + return vec4( + project_mercator_(position_world.xy) - project_uCommonOrigin.xy, + project_size(position_world.z), + position_world.w + ); + } + } + } + if (project_uProjectionMode == PROJECTION_MODE_IDENTITY || + (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET && + (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT || + project_uCoordinateSystem == COORDINATE_SYSTEM_CARTESIAN))) { + // Subtract high part of 64 bit value. Convert remainder to float32, preserving precision. + position_world.xyz -= project_uCoordinateOrigin; + } + + // Translation is already added to the high parts + return project_offset_(position_world + project_uModelMatrix * vec4(position64Low, 0.0)); +} + +vec4 project_position(vec4 position) { + return project_position(position, ZERO_64_LOW); +} + +vec3 project_position(vec3 position, vec3 position64Low) { + vec4 projected_position = project_position(vec4(position, 1.0), position64Low); + return projected_position.xyz; +} + +vec3 project_position(vec3 position) { + vec4 projected_position = project_position(vec4(position, 1.0), ZERO_64_LOW); + return projected_position.xyz; +} + +vec2 project_position(vec2 position) { + vec4 projected_position = project_position(vec4(position, 0.0, 1.0), ZERO_64_LOW); + return projected_position.xy; +} + +vec4 project_common_position_to_clipspace(vec4 position, mat4 viewProjectionMatrix, vec4 center) { + return viewProjectionMatrix * position + center; +} + +// +// Projects from common space coordinates to clip space. +// Uses project_uViewProjectionMatrix +// +vec4 project_common_position_to_clipspace(vec4 position) { + return project_common_position_to_clipspace(position, project_uViewProjectionMatrix, project_uCenter); +} + +// Returns a clip space offset that corresponds to a given number of screen pixels +vec2 project_pixel_size_to_clipspace(vec2 pixels) { + vec2 offset = pixels / project_uViewportSize * project_uDevicePixelRatio * 2.0; + return offset * project_uFocalDistance; +} + +float project_size_to_pixel(float meters) { + return project_size(meters) * project_uScale; +} +float project_size_to_pixel(float size, int unit) { + if (unit == UNIT_METERS) return project_size_to_pixel(size); + if (unit == UNIT_COMMON) return size * project_uScale; + // UNIT_PIXELS + return size; +} +float project_pixel_size(float pixels) { + return pixels / project_uScale; +} +vec2 project_pixel_size(vec2 pixels) { + return pixels / project_uScale; +} +`);function bF(t,e){if(t===e)return!0;if(Array.isArray(t)){const n=t.length;if(!e||e.length!==n)return!1;for(let r=0;r{for(const i in r)if(!bF(r[i],e[i])){n=t(r),e=r;break}return n}}const __=[0,0,0,0],SF=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],Lb=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],TF=[0,0,0],Nb=[0,0,0],BF=Cc(MF);function Ob(t,e,n=Nb){n.length<3&&(n=[n[0],n[1],0]);let r=n,i,s=!0;switch(e===he.LNGLAT_OFFSETS||e===he.METER_OFFSETS?i=n:i=t.isGeospatial?[Math.fround(t.longitude),Math.fround(t.latitude),0]:null,t.projectionMode){case Vn.WEB_MERCATOR:(e===he.LNGLAT||e===he.CARTESIAN)&&(i=[0,0,0],s=!1);break;case Vn.WEB_MERCATOR_AUTO_OFFSET:e===he.LNGLAT?r=i:e===he.CARTESIAN&&(r=[Math.fround(t.center[0]),Math.fround(t.center[1]),0],i=t.unprojectPosition(r),r[0]-=n[0],r[1]-=n[1],r[2]-=n[2]);break;case Vn.IDENTITY:r=t.position.map(Math.fround),r[2]=r[2]||0;break;case Vn.GLOBE:s=!1,i=null;break;default:s=!1}return{geospatialOrigin:i,shaderCoordinateOrigin:r,offsetMode:s}}function RF(t,e,n){const{viewMatrixUncentered:r,projectionMatrix:i}=t;let{viewMatrix:s,viewProjectionMatrix:o}=t,a=__,l=__,c=t.cameraPosition;const{geospatialOrigin:u,shaderCoordinateOrigin:f,offsetMode:h}=Ob(t,e,n);return h&&(l=t.projectPosition(u||f),c=[c[0]-l[0],c[1]-l[1],c[2]-l[2]],l[3]=1,a=Zo([],l,o),s=r||s,o=ps([],i,s),o=ps([],o,SF)),{viewMatrix:s,viewProjectionMatrix:o,projectionCenter:a,originCommon:l,cameraPosCommon:c,shaderCoordinateOrigin:f,geospatialOrigin:u}}function PF({viewport:t,devicePixelRatio:e=1,modelMatrix:n=null,coordinateSystem:r=he.DEFAULT,coordinateOrigin:i=Nb,autoWrapLongitude:s=!1}){r===he.DEFAULT&&(r=t.isGeospatial?he.LNGLAT:he.CARTESIAN);const o=BF({viewport:t,devicePixelRatio:e,coordinateSystem:r,coordinateOrigin:i});return o.project_uWrapLongitude=s,o.project_uModelMatrix=n||Lb,o}function MF({viewport:t,devicePixelRatio:e,coordinateSystem:n,coordinateOrigin:r}){const{projectionCenter:i,viewProjectionMatrix:s,originCommon:o,cameraPosCommon:a,shaderCoordinateOrigin:l,geospatialOrigin:c}=RF(t,n,r),u=t.getDistanceScales(),f=[t.width*e,t.height*e],h=Zo([],[0,0,-t.focalDistance,1],t.projectionMatrix)[3]||1,d={project_uCoordinateSystem:n,project_uProjectionMode:t.projectionMode,project_uCoordinateOrigin:l,project_uCommonOrigin:o.slice(0,3),project_uCenter:i,project_uPseudoMeters:!!t._pseudoMeters,project_uViewportSize:f,project_uDevicePixelRatio:e,project_uFocalDistance:h,project_uCommonUnitsPerMeter:u.unitsPerMeter,project_uCommonUnitsPerWorldUnit:u.unitsPerMeter,project_uCommonUnitsPerWorldUnit2:TF,project_uScale:t.scale,project_uWrapLongitude:!1,project_uViewProjectionMatrix:s,project_uModelMatrix:Lb,project_uCameraPosition:a};if(c){const A=t.getDistanceScales(c);switch(n){case he.METER_OFFSETS:d.project_uCommonUnitsPerWorldUnit=A.unitsPerMeter,d.project_uCommonUnitsPerWorldUnit2=A.unitsPerMeter2;break;case he.LNGLAT:case he.LNGLAT_OFFSETS:t._pseudoMeters||(d.project_uCommonUnitsPerMeter=A.unitsPerMeter),d.project_uCommonUnitsPerWorldUnit=A.unitsPerDegree,d.project_uCommonUnitsPerWorldUnit2=A.unitsPerDegree2;break;case he.CARTESIAN:d.project_uCommonUnitsPerWorldUnit=[1,1,A.unitsPerMeter[2]],d.project_uCommonUnitsPerWorldUnit2=[0,0,A.unitsPerMeter2[2]];break}}return d}const LF={};function NF(t=LF){return"viewport"in t?PF(t):{}}const Xm={name:"project",dependencies:[Ak,_F],vs:wF,getUniforms:NF},OF=` +vec4 project_position_to_clipspace( + vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition +) { + vec3 projectedPosition = project_position(position, position64Low); + mat3 rotation; + if (project_needs_rotation(projectedPosition, rotation)) { + // offset is specified as ENU + // when in globe projection, rotate offset so that the ground alighs with the surface of the globe + offset = rotation * offset; + } + commonPosition = vec4(projectedPosition + offset, 1.0); + return project_common_position_to_clipspace(commonPosition); +} + +vec4 project_position_to_clipspace( + vec3 position, vec3 position64Low, vec3 offset +) { + vec4 commonPosition; + return project_position_to_clipspace(position, position64Low, offset, commonPosition); +} +`,Gi={name:"project32",dependencies:[Xm],vs:OF};function DF(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function bo(t,e){const n=Zo([],e,t);return Km(n,n,1/n[3]),n}function x_(t,e){const n=t%e;return n<0?e+n:n}function Np(t,e,n){return tn?n:t}function kF(t){return Math.log(t)*Math.LOG2E}const Jm=Math.log2||kF;function Fr(t,e){if(!t)throw new Error(e||"@math.gl/web-mercator: assertion failed.")}const jn=Math.PI,Db=jn/4,Yn=jn/180,Op=180/jn,zl=512,Dp=4003e4,Eu=85.051129,QF=1.5;function FF(t){return Jm(t)}function Li(t){const[e,n]=t;Fr(Number.isFinite(e)),Fr(Number.isFinite(n)&&n>=-90&&n<=90,"invalid latitude");const r=e*Yn,i=n*Yn,s=zl*(r+jn)/(2*jn),o=zl*(jn+Math.log(Math.tan(Db+i*.5)))/(2*jn);return[s,o]}function Fo(t){const[e,n]=t,r=e/zl*(2*jn)-jn,i=2*(Math.atan(Math.exp(n/zl*(2*jn)-jn))-Db);return[r*Op,i*Op]}function UF(t){const{latitude:e}=t;Fr(Number.isFinite(e));const n=Math.cos(e*Yn);return FF(Dp*n)-9}function kp(t){const{latitude:e,longitude:n,highPrecision:r=!1}=t;Fr(Number.isFinite(e)&&Number.isFinite(n));const i=zl,s=Math.cos(e*Yn),o=i/360,a=o/s,l=i/Dp/s,c={unitsPerMeter:[l,l,l],metersPerUnit:[1/l,1/l,1/l],unitsPerDegree:[o,a,l],degreesPerUnit:[1/o,1/a,1/l]};if(r){const u=Yn*Math.tan(e*Yn)/s,f=o*u/2,h=i/Dp*u,d=h/a*l;c.unitsPerDegree2=[0,f,h],c.unitsPerMeter2=[d,0,d]}return c}function kb(t,e){const[n,r,i]=t,[s,o,a]=e,{unitsPerMeter:l,unitsPerMeter2:c}=kp({longitude:n,latitude:r,highPrecision:!0}),u=Li(t);u[0]+=s*(l[0]+c[0]*o),u[1]+=o*(l[1]+c[1]*o);const f=Fo(u),h=(i||0)+(a||0);return Number.isFinite(i)||Number.isFinite(a)?[f[0],f[1],h]:f}function GF(t){const{height:e,pitch:n,bearing:r,altitude:i,scale:s,center:o}=t,a=DF();Jf(a,a,[0,0,-i]),Ib(a,a,-n*Yn),wb(a,a,r*Yn);const l=s/e;return $m(a,a,[l,l,l]),o&&Jf(a,a,Rk([],o)),a}function zF(t){const{width:e,height:n,altitude:r,pitch:i=0,offset:s,center:o,scale:a,nearZMultiplier:l=1,farZMultiplier:c=1}=t;let{fovy:u=eh(QF)}=t;r!==void 0&&(u=eh(r));const f=u*Yn,h=i*Yn,d=Qb(u);let A=d;o&&(A+=o[2]*a/Math.cos(h)/n);const p=f*(.5+(s?s[1]:0)/n),g=Math.sin(p)*A/Math.sin(Np(Math.PI/2-h-p,.01,Math.PI-.01)),m=Math.sin(h)*g+A,v=A*10,E=Math.min(m*c,v);return{fov:f,aspect:e/n,focalDistance:d,near:l,far:E}}function eh(t){return 2*Math.atan(.5/t)*Op}function Qb(t){return .5/Math.tan(.5*t*Yn)}function Fb(t,e){const[n,r,i=0]=t;return Fr(Number.isFinite(n)&&Number.isFinite(r)&&Number.isFinite(i)),bo(e,[n,r,i,1])}function qh(t,e,n=0){const[r,i,s]=t;if(Fr(Number.isFinite(r)&&Number.isFinite(i),"invalid pixel coordinate"),Number.isFinite(s))return bo(e,[r,i,s,1]);const o=bo(e,[r,i,0,1]),a=bo(e,[r,i,1,1]),l=o[2],c=a[2],u=l===c?0:((n||0)-l)/(c-l);return Ab([],o,a,u)}function Ub(t){const{width:e,height:n,bounds:r,minExtent:i=0,maxZoom:s=24,offset:o=[0,0]}=t,[[a,l],[c,u]]=r,f=VF(t.padding),h=Li([a,Np(u,-Eu,Eu)]),d=Li([c,Np(l,-Eu,Eu)]),A=[Math.max(Math.abs(d[0]-h[0]),i),Math.max(Math.abs(d[1]-h[1]),i)],p=[e-f.left-f.right-Math.abs(o[0])*2,n-f.top-f.bottom-Math.abs(o[1])*2];Fr(p[0]>0&&p[1]>0);const g=p[0]/A[0],m=p[1]/A[1],v=(f.right-f.left)/2/g,E=(f.top-f.bottom)/2/m,_=[(d[0]+h[0])/2+v,(d[1]+h[1])/2+E],I=Fo(_),C=Math.min(s,Jm(Math.abs(Math.min(g,m))));return Fr(Number.isFinite(C)),{longitude:I[0],latitude:I[1],zoom:C}}function VF(t=0){return typeof t=="number"?{top:t,bottom:t,left:t,right:t}:(Fr(Number.isFinite(t.top)&&Number.isFinite(t.bottom)&&Number.isFinite(t.left)&&Number.isFinite(t.right)),t)}const C_=Math.PI/180;function jF(t,e=0){const{width:n,height:r,unproject:i}=t,s={targetZ:e},o=i([0,r],s),a=i([n,r],s);let l,c;const u=t.fovy?.5*t.fovy*C_:Math.atan(.5/t.altitude),f=(90-t.pitch)*C_;return u>f-.01?(l=I_(t,0,e),c=I_(t,n,e)):(l=i([0,0],s),c=i([n,0],s)),[o,a,c,l]}function I_(t,e,n){const{pixelUnprojectionMatrix:r}=t,i=bo(r,[e,0,1,1]),s=bo(r,[e,t.height,1,1]),a=(n*t.distanceScales.unitsPerMeter[2]-i[2])/(s[2]-i[2]),l=Ab([],i,s,a),c=Fo(l);return c.push(n),c}const w_=512;function HF(t){const{width:e,height:n,pitch:r=0}=t;let{longitude:i,latitude:s,zoom:o,bearing:a=0}=t;(i<-180||i>180)&&(i=x_(i+180,360)-180),(a<-180||a>180)&&(a=x_(a+180,360)-180);const l=Jm(n/w_);if(o<=l)o=l,s=0;else{const c=n/2/Math.pow(2,o),u=Fo([0,c])[1];if(sf&&(s=f)}}return{width:e,height:n,longitude:i,latitude:s,zoom:o,pitch:r,bearing:a}}const WF=` +const int max_lights = 2; +uniform mat4 shadow_uViewProjectionMatrices[max_lights]; +uniform vec4 shadow_uProjectCenters[max_lights]; +uniform bool shadow_uDrawShadowMap; +uniform bool shadow_uUseShadowMap; +uniform int shadow_uLightId; +uniform float shadow_uLightCount; + +varying vec3 shadow_vPosition[max_lights]; + +vec4 shadow_setVertexPosition(vec4 position_commonspace) { + if (shadow_uDrawShadowMap) { + return project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[shadow_uLightId], shadow_uProjectCenters[shadow_uLightId]); + } + if (shadow_uUseShadowMap) { + for (int i = 0; i < max_lights; i++) { + if(i < int(shadow_uLightCount)) { + vec4 shadowMap_position = project_common_position_to_clipspace(position_commonspace, shadow_uViewProjectionMatrices[i], shadow_uProjectCenters[i]); + shadow_vPosition[i] = (shadowMap_position.xyz / shadowMap_position.w + 1.0) / 2.0; + } + } + } + return gl_Position; +} +`,YF=` +const int max_lights = 2; +uniform bool shadow_uDrawShadowMap; +uniform bool shadow_uUseShadowMap; +uniform sampler2D shadow_uShadowMap0; +uniform sampler2D shadow_uShadowMap1; +uniform vec4 shadow_uColor; +uniform float shadow_uLightCount; + +varying vec3 shadow_vPosition[max_lights]; + +const vec4 bitPackShift = vec4(1.0, 255.0, 65025.0, 16581375.0); +const vec4 bitUnpackShift = 1.0 / bitPackShift; +const vec4 bitMask = vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0); + +float shadow_getShadowWeight(vec3 position, sampler2D shadowMap) { + vec4 rgbaDepth = texture2D(shadowMap, position.xy); + + float z = dot(rgbaDepth, bitUnpackShift); + return smoothstep(0.001, 0.01, position.z - z); +} + +vec4 shadow_filterShadowColor(vec4 color) { + if (shadow_uDrawShadowMap) { + vec4 rgbaDepth = fract(gl_FragCoord.z * bitPackShift); + rgbaDepth -= rgbaDepth.gbaa * bitMask; + return rgbaDepth; + } + if (shadow_uUseShadowMap) { + float shadowAlpha = 0.0; + shadowAlpha += shadow_getShadowWeight(shadow_vPosition[0], shadow_uShadowMap0); + if(shadow_uLightCount > 1.0) { + shadowAlpha += shadow_getShadowWeight(shadow_vPosition[1], shadow_uShadowMap1); + } + shadowAlpha *= shadow_uColor.a / shadow_uLightCount; + float blendedAlpha = shadowAlpha + color.a * (1.0 - shadowAlpha); + + return vec4( + mix(color.rgb, shadow_uColor.rgb, shadowAlpha / blendedAlpha), + blendedAlpha + ); + } + return color; +} +`,$F=Cc(ZF),KF=Cc(e7),qF=[0,0,0,1],XF=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0];function JF(t,e){const[n,r,i]=t,s=qh([n,r,i],e);return Number.isFinite(i)?s:[s[0],s[1],0]}function ZF({viewport:t,center:e}){return new ze(t.viewProjectionMatrix).invert().transform(e)}function e7({viewport:t,shadowMatrices:e}){const n=[],r=t.pixelUnprojectionMatrix,i=t.isGeospatial?void 0:1,s=[[0,0,i],[t.width,0,i],[0,t.height,i],[t.width,t.height,i],[0,0,-1],[t.width,0,-1],[0,t.height,-1],[t.width,t.height,-1]].map(o=>JF(o,r));for(const o of e){const a=o.clone().translate(new ee(t.center).negate()),l=s.map(u=>a.transform(u)),c=new ze().ortho({left:Math.min(...l.map(u=>u[0])),right:Math.max(...l.map(u=>u[0])),bottom:Math.min(...l.map(u=>u[1])),top:Math.max(...l.map(u=>u[1])),near:Math.min(...l.map(u=>-u[2])),far:Math.max(...l.map(u=>-u[2]))});n.push(c.multiplyRight(o))}return n}function t7(t,e){const{shadowEnabled:n=!0}=t;if(!n||!t.shadowMatrices||!t.shadowMatrices.length)return{shadow_uDrawShadowMap:!1,shadow_uUseShadowMap:!1};const r={shadow_uDrawShadowMap:!!t.drawToShadowMap,shadow_uUseShadowMap:t.shadowMaps?t.shadowMaps.length>0:!1,shadow_uColor:t.shadowColor||qF,shadow_uLightId:t.shadowLightId||0,shadow_uLightCount:t.shadowMatrices.length},i=$F({viewport:t.viewport,center:e.project_uCenter}),s=[],o=KF({shadowMatrices:t.shadowMatrices,viewport:t.viewport}).slice();for(let a=0;a0?r["shadow_uShadowMap".concat(a)]=t.shadowMaps[a]:r["shadow_uShadowMap".concat(a)]=t.dummyShadowMap;return r}const VA={name:"shadow",dependencies:[Xm],vs:WF,fs:YF,inject:{"vs:DECKGL_FILTER_GL_POSITION":` + position = shadow_setVertexPosition(geometry.position); + `,"fs:DECKGL_FILTER_COLOR":` + color = shadow_filterShadowColor(color); + `},getUniforms:(t={},e={})=>"viewport"in t&&(t.drawToShadowMap||t.shadowMaps&&t.shadowMaps.length>0)?t7(t,e):{}},zi={inject:{"vs:DECKGL_FILTER_GL_POSITION":` + // for picking depth values + picking_setPickingAttribute(position.z / position.w); + `,"vs:DECKGL_FILTER_COLOR":` + picking_setPickingColor(geometry.pickingColor); + `,"fs:DECKGL_FILTER_COLOR":{order:99,injection:` + // use highlight color if this fragment belongs to the selected object. + color = picking_filterHighlightColor(color); + + // use picking color if rendering to picking FBO. + color = picking_filterPickingColor(color); + `}},...VQ},n7=[Xm],r7=["vs:DECKGL_FILTER_SIZE(inout vec3 size, VertexGeometry geometry)","vs:DECKGL_FILTER_GL_POSITION(inout vec4 position, VertexGeometry geometry)","vs:DECKGL_FILTER_COLOR(inout vec4 color, VertexGeometry geometry)","fs:DECKGL_FILTER_COLOR(inout vec4 color, FragmentGeometry geometry)"];function i7(t){const e=Os.getDefaultProgramManager(t);for(const n of n7)e.addDefaultModule(n);for(const n of r7)e.addShaderHook(n);return e}const s7=[255,255,255],o7=1;let a7=0;class l7{constructor(e={}){y(this,"id",void 0),y(this,"color",void 0),y(this,"intensity",void 0),y(this,"type","ambient");const{color:n=s7}=e,{intensity:r=o7}=e;this.id=e.id||"ambient-".concat(a7++),this.color=n,this.intensity=r}}const c7=[255,255,255],u7=1,f7=[0,0,-1];let h7=0;class b_{constructor(e={}){y(this,"id",void 0),y(this,"color",void 0),y(this,"intensity",void 0),y(this,"type","directional"),y(this,"direction",void 0),y(this,"shadow",void 0);const{color:n=c7}=e,{intensity:r=u7}=e,{direction:i=f7}=e,{_shadow:s=!1}=e;this.id=e.id||"directional-".concat(h7++),this.color=n,this.intensity=r,this.type="directional",this.direction=new ee(i).normalize().toArray(),this.shadow=s}getProjectedLight(e){return this}}class d7{constructor(e,n={id:"pass"}){y(this,"id",void 0),y(this,"gl",void 0),y(this,"props",void 0);const{id:r}=n;this.id=r,this.gl=e,this.props={...n}}setProps(e){Object.assign(this.props,e)}render(e){}cleanup(){}}class Xh extends d7{constructor(...e){super(...e),y(this,"_lastRenderIndex",-1)}render(e){const n=this.gl;return Qr(n,{framebuffer:e.target}),this._drawLayers(e)}_drawLayers(e){const{target:n,moduleParameters:r,viewports:i,views:s,onViewportActive:o,clearStack:a=!0,clearCanvas:l=!0}=e;e.pass=e.pass||"unknown";const c=this.gl;l&&g7(c),a&&(this._lastRenderIndex=-1);const u=[];for(const f of i){const h=s&&s[f.id];o(f);const d=this._getDrawLayerParams(f,e),A=f.subViewports||[f];for(const p of A){const g=this._drawLayersInViewport(c,{target:n,moduleParameters:r,viewport:p,view:h,pass:e.pass,layers:e.layers},d);u.push(g)}}return u}_getDrawLayerParams(e,{layers:n,pass:r,layerFilter:i,cullRect:s,effects:o,moduleParameters:a}){const l=[],c=Gb(this._lastRenderIndex+1),u={layer:n[0],viewport:e,isPicking:r.startsWith("picking"),renderPass:r,cullRect:s},f={};for(let h=0;hUm(e,f))}const u={totalCount:n.length,visibleCount:0,compositeCount:0,pickableCount:0};Qr(e,{viewport:c});for(let f=0;f{const o=i.props._offset,a=i.id,l=i.parent&&i.parent.id;let c;if(l&&!(l in e)&&r(i.parent,!1),l in n){const u=n[l]=n[l]||Gb(e[l],e);c=u(i,s),n[a]=u}else Number.isFinite(o)?(c=o+(e[l]||0),n[a]=null):c=t;return s&&c>=t&&(t=c+1),e[a]=c,c};return r}function A7(t,{moduleParameters:e,target:n,viewport:r}){const i=n&&n.id!=="default-framebuffer",s=e&&e.devicePixelRatio||Do(t),o=i?n.height:t.drawingBufferHeight,a=r;return[a.x*s,o-(a.y+a.height)*s,a.width*s,a.height*s]}function g7(t){const e=t.drawingBufferWidth,n=t.drawingBufferHeight;Qr(t,{viewport:[0,0,e,n]}),t.clear(16640)}class p7 extends Xh{constructor(e,n){super(e,n),y(this,"shadowMap",void 0),y(this,"depthBuffer",void 0),y(this,"fbo",void 0),this.shadowMap=new Ut(e,{width:1,height:1,parameters:{10241:9729,10240:9729,10242:33071,10243:33071}}),this.depthBuffer=new co(e,{format:33189,width:1,height:1}),this.fbo=new ct(e,{id:"shadowmap",width:1,height:1,attachments:{36064:this.shadowMap,36096:this.depthBuffer}})}render(e){const n=this.fbo;Cn(this.gl,{depthRange:[0,1],depthTest:!0,blend:!1,clearColor:[1,1,1,1]},()=>{const r=e.viewports[0],i=Do(this.gl),s=r.width*i,o=r.height*i;(s!==n.width||o!==n.height)&&n.resize({width:s,height:o}),super.render({...e,target:n,pass:"shadow"})})}shouldDrawLayer(e){return e.props.shadowEnabled!==!1}getModuleParameters(){return{drawToShadowMap:!0}}delete(){this.fbo&&(this.fbo.delete(),this.fbo=null),this.shadowMap&&(this.shadowMap.delete(),this.shadowMap=null),this.depthBuffer&&(this.depthBuffer.delete(),this.depthBuffer=null)}}const m7={color:[255,255,255],intensity:1},S_=[{color:[255,255,255],intensity:1,direction:[-1,3,-1]},{color:[255,255,255],intensity:.9,direction:[1,-8,-2.5]}],v7=[0,0,0,200/255];class zb{constructor(e={}){y(this,"id","lighting-effect"),y(this,"props",null),y(this,"shadowColor",v7),y(this,"shadow",void 0),y(this,"ambientLight",null),y(this,"directionalLights",[]),y(this,"pointLights",[]),y(this,"shadowPasses",[]),y(this,"shadowMaps",[]),y(this,"dummyShadowMap",null),y(this,"programManager",void 0),y(this,"shadowMatrices",void 0);for(const n in e){const r=e[n];switch(r.type){case"ambient":this.ambientLight=r;break;case"directional":this.directionalLights.push(r);break;case"point":this.pointLights.push(r);break}}this._applyDefaultLights(),this.shadow=this.directionalLights.some(n=>n.shadow)}preRender(e,{layers:n,layerFilter:r,viewports:i,onViewportActive:s,views:o}){if(this.shadow){this.shadowMatrices=this._calculateMatrices(),this.shadowPasses.length===0&&this._createShadowPasses(e),this.programManager||(this.programManager=Os.getDefaultProgramManager(e),VA&&this.programManager.addDefaultModule(VA)),this.dummyShadowMap||(this.dummyShadowMap=new Ut(e,{width:1,height:1}));for(let a=0;ar.getProjectedLight({layer:e})),pointLights:this.pointLights.map(r=>r.getProjectedLight({layer:e}))},n}cleanup(){for(const e of this.shadowPasses)e.delete();this.shadowPasses.length=0,this.shadowMaps.length=0,this.dummyShadowMap&&(this.dummyShadowMap.delete(),this.dummyShadowMap=null),this.shadow&&this.programManager&&(this.programManager.removeDefaultModule(VA),this.programManager=null)}_calculateMatrices(){const e=[];for(const n of this.directionalLights){const r=new ze().lookAt({eye:new ee(n.direction).negate()});e.push(r)}return e}_createShadowPasses(e){for(let n=0;ni&&(s=i);const o=this._pool,a=e.BYTES_PER_ELEMENT*s,l=o.findIndex(c=>c.byteLength>=a);if(l>=0){const c=new e(o.splice(l,1)[0],0,s);return r&&c.fill(0),c}return new e(s)}_release(e){if(!ArrayBuffer.isView(e))return;const n=this._pool,{buffer:r}=e,{byteLength:i}=r,s=n.findIndex(o=>o.byteLength>=i);s<0?n.push(r):(s>0||n.lengththis.opts.poolSize&&n.shift()}}const Uo=new y7;function Ka(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function E7(t,e){const n=t%e;return n<0?e+n:n}function _7(t){return[t[12],t[13],t[14]]}function x7(t){return{left:Ks(t[3]+t[0],t[7]+t[4],t[11]+t[8],t[15]+t[12]),right:Ks(t[3]-t[0],t[7]-t[4],t[11]-t[8],t[15]-t[12]),bottom:Ks(t[3]+t[1],t[7]+t[5],t[11]+t[9],t[15]+t[13]),top:Ks(t[3]-t[1],t[7]-t[5],t[11]-t[9],t[15]-t[13]),near:Ks(t[3]+t[2],t[7]+t[6],t[11]+t[10],t[15]+t[14]),far:Ks(t[3]-t[2],t[7]-t[6],t[11]-t[10],t[15]-t[14])}}const T_=new ee;function Ks(t,e,n,r){T_.set(t,e,n);const i=T_.len();return{distance:r/i,normal:new ee(-t/i,-e/i,-n/i)}}function C7(t){return t-Math.fround(t)}let Na;function jA(t,e){const{size:n=1,startIndex:r=0}=e,i=e.endIndex!==void 0?e.endIndex:t.length,s=(i-r)/n;Na=Uo.allocate(Na,s,{type:Float32Array,size:n*2});let o=r,a=0;for(;o!0){return Array.isArray(t)?jb(t,e,[]):e(t)?[t]:[]}function jb(t,e,n){let r=-1;for(;++r0}delete(){}getData(){return this.isLoaded?this._error?Promise.reject(this._error):this._content:this._loader.then(()=>this.getData())}setData(e,n){if(e===this._data&&!n)return;this._data=e;const r=++this._loadCount;let i=e;typeof e=="string"&&(i=$f(e)),i instanceof Promise?(this.isLoaded=!1,this._loader=i.then(s=>{this._loadCount===r&&(this.isLoaded=!0,this._error=void 0,this._content=s)}).catch(s=>{this._loadCount===r&&(this.isLoaded=!0,this._error=s||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=e);for(const s of this._subscribers)s.onChange(this.getData())}}class O7{constructor({gl:e,protocol:n}){y(this,"protocol",void 0),y(this,"_context",void 0),y(this,"_resources",void 0),y(this,"_consumers",void 0),y(this,"_pruneRequest",void 0),this.protocol=n||"resource://",this._context={gl:e,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(e){return e.startsWith(this.protocol)?!0:e in this._resources}add({resourceId:e,data:n,forceUpdate:r=!1,persistent:i=!0}){let s=this._resources[e];s?s.setData(n,r):(s=new N7(e,n,this._context),this._resources[e]=s),s.persistent=i}remove(e){const n=this._resources[e];n&&(n.delete(),delete this._resources[e])}unsubscribe({consumerId:e}){const n=this._consumers[e];if(n){for(const r in n){const i=n[r],s=this._resources[i.resourceId];s&&s.unsubscribe(i)}delete this._consumers[e],this.prune()}}subscribe({resourceId:e,onChange:n,consumerId:r,requestId:i="default"}){const{_resources:s,protocol:o}=this;e.startsWith(o)&&(e=e.replace(o,""),s[e]||this.add({resourceId:e,data:null,persistent:!1}));const a=s[e];if(this._track(r,i,a,n),a)return a.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(const e in this._resources)this._resources[e].delete()}_track(e,n,r,i){const s=this._consumers,o=s[e]=s[e]||{},a=o[n]||{},l=a.resourceId&&this._resources[a.resourceId];l&&(l.unsubscribe(a),this.prune()),r&&(o[n]=a,a.onChange=i,a.resourceId=r.id,r.subscribe(a))}_prune(){this._pruneRequest=null;for(const e of Object.keys(this._resources)){const n=this._resources[e];!n.persistent&&!n.inUse()&&(n.delete(),delete this._resources[e])}}}const D7="layerManager.setLayers",k7="layerManager.activateViewport";class Q7{constructor(e,{deck:n,stats:r,viewport:i,timeline:s}={}){y(this,"layers",void 0),y(this,"context",void 0),y(this,"resourceManager",void 0),y(this,"_lastRenderedLayers",[]),y(this,"_needsRedraw",!1),y(this,"_needsUpdate",!1),y(this,"_nextLayers",null),y(this,"_debug",!1),y(this,"activateViewport",o=>{Nt(k7,this,o),o&&(this.context.viewport=o)}),this.layers=[],this.resourceManager=new O7({gl:e,protocol:"deck://"}),this.context={mousePosition:null,userData:{},layerManager:this,gl:e,deck:n,programManager:e&&i7(e),stats:r||new Hh({id:"deck.gl"}),viewport:i||new Vi({id:"DEFAULT-INITIAL-VIEWPORT"}),timeline:s||new Pb,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){this.resourceManager.finalize();for(const e of this.layers)this._finalizeLayer(e)}needsRedraw(e={clearRedrawFlags:!1}){let n=this._needsRedraw;e.clearRedrawFlags&&(this._needsRedraw=!1);for(const r of this.layers){const i=r.getNeedsRedraw(e);n=n||i}return n}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?"layers changed":this._needsUpdate}setNeedsRedraw(e){this._needsRedraw=this._needsRedraw||e}setNeedsUpdate(e){this._needsUpdate=this._needsUpdate||e}getLayers({layerIds:e}={}){return e?this.layers.filter(n=>e.find(r=>n.id.indexOf(r)===0)):this.layers}setProps(e){"debug"in e&&(this._debug=e.debug),"userData"in e&&(this.context.userData=e.userData),"layers"in e&&(this._nextLayers=e.layers),"onError"in e&&(this.context.onError=e.onError)}setLayers(e,n){Nt(D7,this,n,e),this._lastRenderedLayers=e;const r=Jh(e,Boolean);for(const i of r)i.context=this.context;this._updateLayers(this.layers,r)}updateLayers(){const e=this.needsUpdate();e&&(this.setNeedsRedraw("updating layers: ".concat(e)),this.setLayers(this._nextLayers||this._lastRenderedLayers,e)),this._nextLayers=null}_handleError(e,n,r){r.raiseError(n,"".concat(e," of ").concat(r))}_updateLayers(e,n){const r={};for(const o of e)r[o.id]?Ee.warn("Multiple old layers with same id ".concat(o.id))():r[o.id]=o;const i=[];this._updateSublayersRecursively(n,r,i),this._finalizeOldLayers(r);let s=!1;for(const o of i)if(o.hasUniformTransition()){s="Uniform transition in ".concat(o);break}this._needsUpdate=s,this.layers=i}_updateSublayersRecursively(e,n,r){for(const i of e){i.context=this.context;const s=n[i.id];s===null&&Ee.warn("Multiple new layers with same id ".concat(i.id))(),n[i.id]=null;let o=null;try{this._debug&&s!==i&&i.validateProps(),s?(this._transferLayerState(s,i),this._updateLayer(i)):this._initializeLayer(i),r.push(i),o=i.isComposite?i.getSubLayers():null}catch(a){this._handleError("matching",a,i)}o&&this._updateSublayersRecursively(o,n,r)}}_finalizeOldLayers(e){for(const n in e){const r=e[n];r&&this._finalizeLayer(r)}}_initializeLayer(e){try{e._initialize(),e.lifecycle=eo.INITIALIZED}catch(n){this._handleError("initialization",n,e)}}_transferLayerState(e,n){n._transferState(e),n.lifecycle=eo.MATCHED,n!==e&&(e.lifecycle=eo.AWAITING_GC)}_updateLayer(e){try{e._update()}catch(n){this._handleError("update",n,e)}}_finalizeLayer(e){this._needsRedraw=this._needsRedraw||"finalized ".concat(e),e.lifecycle=eo.AWAITING_FINALIZATION;try{e._finalize(),e.lifecycle=eo.FINALIZED}catch(n){this._handleError("finalization",n,e)}}}function Ds(t,e){if(t===e)return!0;if(!t||!e)return!1;for(const n in t){const r=t[n],i=e[n];if(!(r===i||Array.isArray(r)&&Array.isArray(i)&&Ds(r,i)))return!1}return!0}class F7{constructor(e){y(this,"width",void 0),y(this,"height",void 0),y(this,"views",void 0),y(this,"viewState",void 0),y(this,"controllers",void 0),y(this,"timeline",void 0),y(this,"_viewports",void 0),y(this,"_viewportMap",void 0),y(this,"_isUpdating",void 0),y(this,"_needsRedraw",void 0),y(this,"_needsUpdate",void 0),y(this,"_eventManager",void 0),y(this,"_eventCallbacks",void 0),this.views=[],this.width=100,this.height=100,this.viewState={},this.controllers={},this.timeline=e.timeline,this._viewports=[],this._viewportMap={},this._isUpdating=!1,this._needsRedraw="First render",this._needsUpdate="Initialize",this._eventManager=e.eventManager,this._eventCallbacks={onViewStateChange:e.onViewStateChange,onInteractionStateChange:e.onInteractionStateChange},Object.seal(this),this.setProps(e)}finalize(){for(const e in this.controllers){const n=this.controllers[e];n&&n.finalize()}this.controllers={}}needsRedraw(e={clearRedrawFlags:!1}){const n=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),n}setNeedsUpdate(e){this._needsUpdate=this._needsUpdate||e,this._needsRedraw=this._needsRedraw||e}updateViewStates(){for(const e in this.controllers){const n=this.controllers[e];n&&n.updateTransition()}}getViewports(e){return e?this._viewports.filter(n=>n.containsPixel(e)):this._viewports}getViews(){const e={};return this.views.forEach(n=>{e[n.id]=n}),e}getView(e){return this.views.find(n=>n.id===e)}getViewState(e){const n=typeof e=="string"?this.getView(e):e,r=n&&this.viewState[n.getViewStateId()]||this.viewState;return n?n.filterViewState(r):r}getViewport(e){return this._viewportMap[e]}unproject(e,n){const r=this.getViewports(),i={x:e[0],y:e[1]};for(let s=r.length-1;s>=0;--s){const o=r[s];if(o.containsPixel(i)){const a=e.slice();return a[0]-=o.x,a[1]-=o.y,o.unproject(a,n)}}return null}setProps(e){e.views&&this._setViews(e.views),e.viewState&&this._setViewState(e.viewState),("width"in e||"height"in e)&&this._setSize(e.width,e.height),this._isUpdating||this._update()}_update(){this._isUpdating=!0,this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._isUpdating=!1}_setSize(e,n){(e!==this.width||n!==this.height)&&(this.width=e,this.height=n,this.setNeedsUpdate("Size changed"))}_setViews(e){e=Jh(e,Boolean),this._diffViews(e,this.views)&&this.setNeedsUpdate("views changed"),this.views=e}_setViewState(e){e?(!Ds(e,this.viewState)&&this.setNeedsUpdate("viewState changed"),this.viewState=e):Ee.warn("missing `viewState` or `initialViewState`")()}_onViewStateChange(e,n){this._eventCallbacks.onViewStateChange&&this._eventCallbacks.onViewStateChange({...n,viewId:e})}_createController(e,n){const r=n.type;return new r({timeline:this.timeline,eventManager:this._eventManager,onViewStateChange:this._onViewStateChange.bind(this,n.id),onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:s=>{var o;return(o=this.getView(e.id))===null||o===void 0?void 0:o.makeViewport({viewState:s,width:this.width,height:this.height})}})}_updateController(e,n,r,i){const s=e.controller;if(s){const o={...n,...s,id:e.id,x:r.x,y:r.y,width:r.width,height:r.height};return i||(i=this._createController(e,o)),i&&i.setProps(o),i}return null}_rebuildViewports(){const{views:e}=this,n=this.controllers;this._viewports=[],this.controllers={};let r=!1;for(let i=e.length;i--;){const s=e[i],o=this.getViewState(s),a=s.makeViewport({viewState:o,width:this.width,height:this.height});let l=n[s.id];const c=!!s.controller;c&&!l&&(r=!0),(r||!c)&&l&&(l.finalize(),l=null),this.controllers[s.id]=this._updateController(s,o,a,l),this._viewports.unshift(a)}for(const i in n){const s=n[i];s&&!this.controllers[i]&&s.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(e=>{e.id&&(this._viewportMap[e.id]=this._viewportMap[e.id]||e)})}_diffViews(e,n){return e.length!==n.length?!0:e.some((r,i)=>!e[i].equals(n[i]))}}const U7=/([0-9]+\.?[0-9]*)(%|px)/;function ti(t){switch(typeof t){case"number":return{position:t,relative:!1};case"string":const e=U7.exec(t);if(e&&e.length>=3){const n=e[2]==="%",r=parseFloat(e[1]);return{position:n?r/100:r,relative:n}}default:throw new Error("Could not parse position string ".concat(t))}}function ni(t,e){return t.relative?Math.round(t.position*e):t.position}function pt(t,e){if(!t)throw new Error(e||"deck.gl: assertion failed.")}class Is{constructor(e){y(this,"id",void 0),y(this,"viewportInstance",void 0),y(this,"_x",void 0),y(this,"_y",void 0),y(this,"_width",void 0),y(this,"_height",void 0),y(this,"_padding",void 0),y(this,"props",void 0);const{id:n,x:r=0,y:i=0,width:s="100%",height:o="100%",padding:a=null,viewportInstance:l}=e||{};pt(!l||l instanceof Vi),this.viewportInstance=l,this.id=n||this.constructor.displayName||"view",this.props={...e,id:this.id},this._x=ti(r),this._y=ti(i),this._width=ti(s),this._height=ti(o),this._padding=a&&{left:ti(a.left||0),right:ti(a.right||0),top:ti(a.top||0),bottom:ti(a.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(e){return this===e?!0:this.viewportInstance?e.viewportInstance?this.viewportInstance.equals(e.viewportInstance):!1:this.ViewportType===e.ViewportType&&Ds(this.props,e.props)}makeViewport({width:e,height:n,viewState:r}){if(this.viewportInstance)return this.viewportInstance;r=this.filterViewState(r);const i=this.getDimensions({width:e,height:n});return new this.ViewportType({...r,...this.props,...i})}getViewStateId(){const{viewState:e}=this.props;return typeof e=="string"?e:(e==null?void 0:e.id)||this.id}filterViewState(e){if(this.props.viewState&&typeof this.props.viewState=="object"){if(!this.props.viewState.id)return this.props.viewState;const n={...e};for(const r in this.props.viewState)r!=="id"&&(n[r]=this.props.viewState[r]);return n}return e}getDimensions({width:e,height:n}){const r={x:ni(this._x,e),y:ni(this._y,n),width:ni(this._width,e),height:ni(this._height,n)};return this._padding&&(r.padding={left:ni(this._padding.left,e),top:ni(this._padding.top,n),right:ni(this._padding.right,e),bottom:ni(this._padding.bottom,n)}),r}get controller(){const e=this.props.controller;return e?e===!0?{type:this.ControllerType}:typeof e=="function"?{type:e}:{type:this.ControllerType,...e}:null}}class Ic{constructor(e){y(this,"_inProgress",void 0),y(this,"_handle",void 0),y(this,"_timeline",void 0),y(this,"time",void 0),y(this,"settings",void 0),this._inProgress=!1,this._handle=null,this._timeline=e,this.time=0,this.settings={duration:0}}get inProgress(){return this._inProgress}start(e){var n,r;this.cancel(),this.settings=e,this._inProgress=!0,(n=(r=this.settings).onStart)===null||n===void 0||n.call(r,this)}end(){if(this._inProgress){var e,n;this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1,(e=(n=this.settings).onEnd)===null||e===void 0||e.call(n,this)}}cancel(){if(this._inProgress){var e,n;(e=(n=this.settings).onInterrupt)===null||e===void 0||e.call(n,this),this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1}}update(){var e,n;if(!this._inProgress)return!1;if(this._handle===null){const{_timeline:r,settings:i}=this;this._handle=r.addChannel({delay:r.getTime(),duration:i.duration})}return this.time=this._timeline.getTime(this._handle),this._onUpdate(),(e=(n=this.settings).onUpdate)===null||e===void 0||e.call(n,this),this._timeline.isFinished(this._handle)&&this.end(),!0}_onUpdate(){}}const P_=()=>{},Qp={BREAK:1,SNAP_TO_END:2,IGNORE:3},G7=t=>t,z7=Qp.BREAK;class V7{constructor(e){y(this,"getControllerState",void 0),y(this,"props",void 0),y(this,"propsInTransition",void 0),y(this,"transition",void 0),y(this,"onViewStateChange",void 0),y(this,"onStateChange",void 0),y(this,"_onTransitionUpdate",n=>{const{time:r,settings:{interpolator:i,startProps:s,endProps:o,duration:a,easing:l}}=n,c=l(r/a),u=i.interpolateProps(s,o,c);this.propsInTransition=this.getControllerState({...this.props,...u}).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})}),this.getControllerState=e.getControllerState,this.propsInTransition=null,this.transition=new Ic(e.timeline),this.onViewStateChange=e.onViewStateChange||P_,this.onStateChange=e.onStateChange||P_}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(e){let n=!1;const r=this.props;if(this.props=e,!r||this._shouldIgnoreViewportChange(r,e))return!1;if(this._isTransitionEnabled(e)){let i=r;if(this.transition.inProgress){const{interruption:s,endProps:o}=this.transition.settings;i={...r,...s===Qp.SNAP_TO_END?o:this.propsInTransition||r}}this._triggerTransition(i,e),n=!0}else this.transition.cancel();return n}updateTransition(){this.transition.update()}_isTransitionEnabled(e){const{transitionDuration:n,transitionInterpolator:r}=e;return(n>0||n==="auto")&&!!r}_isUpdateDueToCurrentTransition(e){return this.transition.inProgress&&this.propsInTransition?this.transition.settings.interpolator.arePropsEqual(e,this.propsInTransition):!1}_shouldIgnoreViewportChange(e,n){return this.transition.inProgress?this.transition.settings.interruption===Qp.IGNORE||this._isUpdateDueToCurrentTransition(n):this._isTransitionEnabled(n)?n.transitionInterpolator.arePropsEqual(e,n):!0}_triggerTransition(e,n){const r=this.getControllerState(e),i=this.getControllerState(n).shortestPathFrom(r),s=n.transitionInterpolator,o=s.getDuration?s.getDuration(e,n):n.transitionDuration;if(o===0)return;const a=s.initializeProps(e,i);this.propsInTransition={};const l={duration:o,easing:n.transitionEasing||G7,interpolator:s,interruption:n.transitionInterruption||z7,startProps:a.start,endProps:a.end,onStart:n.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(n.onTransitionInterrupt),onEnd:this._onTransitionEnd(n.onTransitionEnd)};this.transition.start(l),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(e){return n=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),e==null||e(n)}}}class j7{constructor(e){y(this,"_propsToCompare",void 0),y(this,"_propsToExtract",void 0),y(this,"_requiredProps",void 0);const{compare:n,extract:r,required:i}=e;this._propsToCompare=n,this._propsToExtract=r||n,this._requiredProps=i}arePropsEqual(e,n){for(const r of this._propsToCompare)if(!(r in e)||!(r in n)||!ur(e[r],n[r]))return!1;return!0}initializeProps(e,n){const r={},i={};for(const s of this._propsToExtract)(s in e||s in n)&&(r[s]=e[s],i[s]=n[s]);return this._checkRequiredProps(r),this._checkRequiredProps(i),{start:r,end:i}}getDuration(e,n){return n.transitionDuration}_checkRequiredProps(e){this._requiredProps&&this._requiredProps.forEach(n=>{const r=e[n];pt(Number.isFinite(r)||Array.isArray(r),"".concat(n," is required for transition"))})}}const H7=["longitude","latitude","zoom","bearing","pitch"],W7=["longitude","latitude","zoom"];class Zm extends j7{constructor(e={}){const n=Array.isArray(e)?e:e.transitionProps,r=Array.isArray(e)?{}:e;r.transitionProps=Array.isArray(n)?{compare:n,required:n}:n||{compare:H7,required:W7},super(r.transitionProps),y(this,"opts",void 0),this.opts=r}initializeProps(e,n){const r=super.initializeProps(e,n),{makeViewport:i,around:s}=this.opts;if(i&&s){const o=i(e),a=i(n),l=o.unproject(s);r.start.around=s,Object.assign(r.end,{around:a.project(l),aroundPosition:l,width:n.width,height:n.height})}return r}interpolateProps(e,n,r){const i={};for(const s of this._propsToExtract)i[s]=gs(e[s]||0,n[s]||0,r);if(n.aroundPosition&&this.opts.makeViewport){const s=this.opts.makeViewport({...n,...i});Object.assign(i,s.panByPosition(n.aroundPosition,gs(e.around,n.around,r)))}return i}}const ri={transitionDuration:0},Y7=300,_u=t=>1-(1-t)*(1-t),qs={WHEEL:["wheel"],PAN:["panstart","panmove","panend"],PINCH:["pinchstart","pinchmove","pinchend"],TRIPLE_PAN:["tripanstart","tripanmove","tripanend"],DOUBLE_TAP:["doubletap"],KEYBOARD:["keydown"]},$i={};class Hb{constructor(e){y(this,"props",void 0),y(this,"state",{}),y(this,"transitionManager",void 0),y(this,"eventManager",void 0),y(this,"onViewStateChange",void 0),y(this,"onStateChange",void 0),y(this,"makeViewport",void 0),y(this,"_controllerState",void 0),y(this,"_events",{}),y(this,"_interactionState",{isDragging:!1}),y(this,"_customEvents",[]),y(this,"_eventStartBlocked",null),y(this,"_panMove",!1),y(this,"invertPan",!1),y(this,"dragMode","rotate"),y(this,"inertia",0),y(this,"scrollZoom",!0),y(this,"dragPan",!0),y(this,"dragRotate",!0),y(this,"doubleClickZoom",!0),y(this,"touchZoom",!0),y(this,"touchRotate",!1),y(this,"keyboard",!0),this.transitionManager=new V7({...e,getControllerState:n=>new this.ControllerState(n),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=e.eventManager,this.onViewStateChange=e.onViewStateChange||(()=>{}),this.onStateChange=e.onStateChange||(()=>{}),this.makeViewport=e.makeViewport}set events(e){this.toggleEvents(this._customEvents,!1),this.toggleEvents(e,!0),this._customEvents=e,this.props&&this.setProps(this.props)}finalize(){for(const n in this._events)if(this._events[n]){var e;(e=this.eventManager)===null||e===void 0||e.off(n,this.handleEvent)}this.transitionManager.finalize()}handleEvent(e){this._controllerState=void 0;const n=this._eventStartBlocked;switch(e.type){case"panstart":return n?!1:this._onPanStart(e);case"panmove":return this._onPan(e);case"panend":return this._onPanEnd(e);case"pinchstart":return n?!1:this._onPinchStart(e);case"pinchmove":return this._onPinch(e);case"pinchend":return this._onPinchEnd(e);case"tripanstart":return n?!1:this._onTriplePanStart(e);case"tripanmove":return this._onTriplePan(e);case"tripanend":return this._onTriplePanEnd(e);case"doubletap":return this._onDoubleTap(e);case"wheel":return this._onWheel(e);case"keydown":return this._onKeyDown(e);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(e){const{x:n,y:r}=this.props,{offsetCenter:i}=e;return[i.x-n,i.y-r]}isPointInBounds(e,n){const{width:r,height:i}=this.props;if(n&&n.handled)return!1;const s=e[0]>=0&&e[0]<=r&&e[1]>=0&&e[1]<=i;return s&&n&&n.stopPropagation(),s}isFunctionKeyPressed(e){const{srcEvent:n}=e;return!!(n.metaKey||n.altKey||n.ctrlKey||n.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(e){const n=setTimeout(()=>{this._eventStartBlocked===n&&(this._eventStartBlocked=null)},e);this._eventStartBlocked=n}setProps(e){e.dragMode&&(this.dragMode=e.dragMode),this.props=e,"transitionInterpolator"in e||(e.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(e);const{inertia:n}=e;this.inertia=Number.isFinite(n)?n:n===!0?Y7:0;const{scrollZoom:r=!0,dragPan:i=!0,dragRotate:s=!0,doubleClickZoom:o=!0,touchZoom:a=!0,touchRotate:l=!1,keyboard:c=!0}=e,u=!!this.onViewStateChange;this.toggleEvents(qs.WHEEL,u&&r),this.toggleEvents(qs.PAN,u&&(i||s)),this.toggleEvents(qs.PINCH,u&&(a||l)),this.toggleEvents(qs.TRIPLE_PAN,u&&l),this.toggleEvents(qs.DOUBLE_TAP,u&&o),this.toggleEvents(qs.KEYBOARD,u&&c),this.scrollZoom=r,this.dragPan=i,this.dragRotate=s,this.doubleClickZoom=o,this.touchZoom=a,this.touchRotate=l,this.keyboard=c}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(e,n){this.eventManager&&e.forEach(r=>{this._events[r]!==n&&(this._events[r]=n,n?this.eventManager.on(r,this.handleEvent):this.eventManager.off(r,this.handleEvent))})}updateViewport(e,n=null,r={}){const i={...e.getViewportProps(),...n},s=this.controllerState!==e;if(this.state=e.getState(),this._setInteractionState(r),s){const o=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:i,interactionState:this._interactionState,oldViewState:o})}}_onTransition(e){this.onViewStateChange({...e,interactionState:this._interactionState})}_setInteractionState(e){Object.assign(this._interactionState,e),this.onStateChange(this._interactionState)}_onPanStart(e){const n=this.getCenter(e);if(!this.isPointInBounds(n,e))return!1;let r=this.isFunctionKeyPressed(e)||e.rightButton||!1;(this.invertPan||this.dragMode==="pan")&&(r=!r);const i=this.controllerState[r?"panStart":"rotateStart"]({pos:n});return this._panMove=r,this.updateViewport(i,ri,{isDragging:!0}),!0}_onPan(e){return this.isDragging()?this._panMove?this._onPanMove(e):this._onPanRotate(e):!1}_onPanEnd(e){return this.isDragging()?this._panMove?this._onPanMoveEnd(e):this._onPanRotateEnd(e):!1}_onPanMove(e){if(!this.dragPan)return!1;const n=this.getCenter(e),r=this.controllerState.pan({pos:n});return this.updateViewport(r,ri,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(e){const{inertia:n}=this;if(this.dragPan&&n&&e.velocity){const r=this.getCenter(e),i=[r[0]+e.velocityX*n/2,r[1]+e.velocityY*n/2],s=this.controllerState.pan({pos:i}).panEnd();this.updateViewport(s,{...this._getTransitionProps(),transitionDuration:n,transitionEasing:_u},{isDragging:!1,isPanning:!0})}else{const r=this.controllerState.panEnd();this.updateViewport(r,null,{isDragging:!1,isPanning:!1})}return!0}_onPanRotate(e){if(!this.dragRotate)return!1;const n=this.getCenter(e),r=this.controllerState.rotate({pos:n});return this.updateViewport(r,ri,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(e){const{inertia:n}=this;if(this.dragRotate&&n&&e.velocity){const r=this.getCenter(e),i=[r[0]+e.velocityX*n/2,r[1]+e.velocityY*n/2],s=this.controllerState.rotate({pos:i}).rotateEnd();this.updateViewport(s,{...this._getTransitionProps(),transitionDuration:n,transitionEasing:_u},{isDragging:!1,isRotating:!0})}else{const r=this.controllerState.rotateEnd();this.updateViewport(r,null,{isDragging:!1,isRotating:!1})}return!0}_onWheel(e){if(!this.scrollZoom)return!1;e.srcEvent.preventDefault();const n=this.getCenter(e);if(!this.isPointInBounds(n,e))return!1;const{speed:r=.01,smooth:i=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:s}=e;let o=2/(1+Math.exp(-Math.abs(s*r)));s<0&&o!==0&&(o=1/o);const a=this.controllerState.zoom({pos:n,scale:o});return this.updateViewport(a,{...this._getTransitionProps({around:n}),transitionDuration:i?250:1},{isZooming:!0,isPanning:!0}),!0}_onTriplePanStart(e){const n=this.getCenter(e);if(!this.isPointInBounds(n,e))return!1;const r=this.controllerState.rotateStart({pos:n});return this.updateViewport(r,ri,{isDragging:!0}),!0}_onTriplePan(e){if(!this.touchRotate||!this.isDragging())return!1;const n=this.getCenter(e);n[0]-=e.deltaX;const r=this.controllerState.rotate({pos:n});return this.updateViewport(r,ri,{isDragging:!0,isRotating:!0}),!0}_onTriplePanEnd(e){if(!this.isDragging())return!1;const{inertia:n}=this;if(this.touchRotate&&n&&e.velocityY){const r=this.getCenter(e),i=[r[0],r[1]+=e.velocityY*n/2],s=this.controllerState.rotate({pos:i});this.updateViewport(s,{...this._getTransitionProps(),transitionDuration:n,transitionEasing:_u},{isDragging:!1,isRotating:!0}),this.blockEvents(n)}else{const r=this.controllerState.rotateEnd();this.updateViewport(r,null,{isDragging:!1,isRotating:!1})}return!0}_onPinchStart(e){const n=this.getCenter(e);if(!this.isPointInBounds(n,e))return!1;const r=this.controllerState.zoomStart({pos:n}).rotateStart({pos:n});return $i._startPinchRotation=e.rotation,$i._lastPinchEvent=e,this.updateViewport(r,ri,{isDragging:!0}),!0}_onPinch(e){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let n=this.controllerState;if(this.touchZoom){const{scale:r}=e,i=this.getCenter(e);n=n.zoom({pos:i,scale:r})}if(this.touchRotate){const{rotation:r}=e;n=n.rotate({deltaAngleX:$i._startPinchRotation-r})}return this.updateViewport(n,ri,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),$i._lastPinchEvent=e,!0}_onPinchEnd(e){if(!this.isDragging())return!1;const{inertia:n}=this,{_lastPinchEvent:r}=$i;if(this.touchZoom&&n&&r&&e.scale!==r.scale){const i=this.getCenter(e);let s=this.controllerState.rotateEnd();const o=Math.log2(e.scale),a=(o-Math.log2(r.scale))/(e.deltaTime-r.deltaTime),l=Math.pow(2,o+a*n/2);s=s.zoom({pos:i,scale:l}).zoomEnd(),this.updateViewport(s,{...this._getTransitionProps({around:i}),transitionDuration:n,transitionEasing:_u},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(n)}else{const i=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(i,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return $i._startPinchRotation=null,$i._lastPinchEvent=null,!0}_onDoubleTap(e){if(!this.doubleClickZoom)return!1;const n=this.getCenter(e);if(!this.isPointInBounds(n,e))return!1;const r=this.isFunctionKeyPressed(e),i=this.controllerState.zoom({pos:n,scale:r?.5:2});return this.updateViewport(i,this._getTransitionProps({around:n}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onKeyDown(e){if(!this.keyboard)return!1;const n=this.isFunctionKeyPressed(e),{zoomSpeed:r,moveSpeed:i,rotateSpeedX:s,rotateSpeedY:o}=this.keyboard===!0?{}:this.keyboard,{controllerState:a}=this;let l;const c={};switch(e.srcEvent.code){case"Minus":l=n?a.zoomOut(r).zoomOut(r):a.zoomOut(r),c.isZooming=!0;break;case"Equal":l=n?a.zoomIn(r).zoomIn(r):a.zoomIn(r),c.isZooming=!0;break;case"ArrowLeft":n?(l=a.rotateLeft(s),c.isRotating=!0):(l=a.moveLeft(i),c.isPanning=!0);break;case"ArrowRight":n?(l=a.rotateRight(s),c.isRotating=!0):(l=a.moveRight(i),c.isPanning=!0);break;case"ArrowUp":n?(l=a.rotateUp(o),c.isRotating=!0):(l=a.moveUp(i),c.isPanning=!0);break;case"ArrowDown":n?(l=a.rotateDown(o),c.isRotating=!0):(l=a.moveDown(i),c.isPanning=!0);break;default:return!1}return this.updateViewport(l,this._getTransitionProps(),c),!0}_getTransitionProps(e){const{transition:n}=this;return!n||!n.transitionInterpolator?ri:e?{...n,transitionInterpolator:new Zm({...e,...n.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:n}}class Wb{constructor(e,n){y(this,"_viewportProps",void 0),y(this,"_state",void 0),this._viewportProps=this.applyConstraints(e),this._state=n}getViewportProps(){return this._viewportProps}getState(){return this._state}}const M_=5,$7=1.2;class K7 extends Wb{constructor(e){const{width:n,height:r,latitude:i,longitude:s,zoom:o,bearing:a=0,pitch:l=0,altitude:c=1.5,position:u=[0,0,0],maxZoom:f=20,minZoom:h=0,maxPitch:d=60,minPitch:A=0,startPanLngLat:p,startZoomLngLat:g,startRotatePos:m,startBearing:v,startPitch:E,startZoom:_,normalize:I=!0}=e;pt(Number.isFinite(s)),pt(Number.isFinite(i)),pt(Number.isFinite(o)),super({width:n,height:r,latitude:i,longitude:s,zoom:o,bearing:a,pitch:l,altitude:c,maxZoom:f,minZoom:h,maxPitch:d,minPitch:A,normalize:I,position:u},{startPanLngLat:p,startZoomLngLat:g,startRotatePos:m,startBearing:v,startPitch:E,startZoom:_}),y(this,"makeViewport",void 0),this.makeViewport=e.makeViewport}panStart({pos:e}){return this._getUpdatedState({startPanLngLat:this._unproject(e)})}pan({pos:e,startPos:n}){const r=this.getState().startPanLngLat||this._unproject(n);if(!r)return this;const s=this.makeViewport(this.getViewportProps()).panByPosition(r,e);return this._getUpdatedState(s)}panEnd(){return this._getUpdatedState({startPanLngLat:null})}rotateStart({pos:e}){return this._getUpdatedState({startRotatePos:e,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:e,deltaAngleX:n=0,deltaAngleY:r=0}){const{startRotatePos:i,startBearing:s,startPitch:o}=this.getState();if(!i||s===void 0||o===void 0)return this;let a;return e?a=this._getNewRotation(e,i,o,s):a={bearing:s+n,pitch:o+r},this._getUpdatedState(a)}rotateEnd(){return this._getUpdatedState({startBearing:null,startPitch:null})}zoomStart({pos:e}){return this._getUpdatedState({startZoomLngLat:this._unproject(e),startZoom:this.getViewportProps().zoom})}zoom({pos:e,startPos:n,scale:r}){let{startZoom:i,startZoomLngLat:s}=this.getState();if(s||(i=this.getViewportProps().zoom,s=this._unproject(n)||this._unproject(e)),!s)return this;const{maxZoom:o,minZoom:a}=this.getViewportProps();let l=i+Math.log2(r);l=wt(l,a,o);const c=this.makeViewport({...this.getViewportProps(),zoom:l});return this._getUpdatedState({zoom:l,...c.panByPosition(s,e)})}zoomEnd(){return this._getUpdatedState({startZoomLngLat:null,startZoom:null})}zoomIn(e=2){return this._zoomFromCenter(e)}zoomOut(e=2){return this._zoomFromCenter(1/e)}moveLeft(e=100){return this._panFromCenter([e,0])}moveRight(e=100){return this._panFromCenter([-e,0])}moveUp(e=100){return this._panFromCenter([0,e])}moveDown(e=100){return this._panFromCenter([0,-e])}rotateLeft(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-e})}rotateRight(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+e})}rotateUp(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+e})}rotateDown(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-e})}shortestPathFrom(e){const n=e.getViewportProps(),r={...this.getViewportProps()},{bearing:i,longitude:s}=r;return Math.abs(i-n.bearing)>180&&(r.bearing=i<0?i+360:i-360),Math.abs(s-n.longitude)>180&&(r.longitude=s<0?s+360:s-360),r}applyConstraints(e){const{maxZoom:n,minZoom:r,zoom:i}=e;e.zoom=wt(i,r,n);const{maxPitch:s,minPitch:o,pitch:a}=e;e.pitch=wt(a,o,s);const{normalize:l=!0}=e;return l&&Object.assign(e,HF(e)),e}_zoomFromCenter(e){const{width:n,height:r}=this.getViewportProps();return this.zoom({pos:[n/2,r/2],scale:e})}_panFromCenter(e){const{width:n,height:r}=this.getViewportProps();return this.pan({startPos:[n/2,r/2],pos:[n/2+e[0],r/2+e[1]]})}_getUpdatedState(e){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...e})}_unproject(e){const n=this.makeViewport(this.getViewportProps());return e&&n.unproject(e)}_getNewRotation(e,n,r,i){const s=e[0]-n[0],o=e[1]-n[1],a=e[1],l=n[1],{width:c,height:u}=this.getViewportProps(),f=s/c;let h=0;o>0?Math.abs(u-l)>M_&&(h=o/(l-u)*$7):o<0&&l>M_&&(h=1-a/l),h=wt(h,-1,1);const{minPitch:d,maxPitch:A}=this.getViewportProps(),p=i+180*f;let g=r;return h>0?g=r+h*(A-r):h<0&&(g=r-h*(d-r)),{pitch:g,bearing:p}}}class q7 extends Hb{constructor(...e){super(...e),y(this,"ControllerState",K7),y(this,"transition",{transitionDuration:300,transitionInterpolator:new Zm({transitionProps:{compare:["longitude","latitude","zoom","bearing","pitch","position"],required:["longitude","latitude","zoom"]}})}),y(this,"dragMode","pan")}setProps(e){e.position=e.position||[0,0,0];const n=this.props;super.setProps(e),(!n||n.height!==e.height)&&this.updateViewport(new this.ControllerState({makeViewport:this.makeViewport,...e,...this.state}))}}class Yb extends Is{get ViewportType(){return dr}get ControllerType(){return q7}}y(Yb,"displayName","MapView");class X7 extends Xh{constructor(e,n){super(e,n),y(this,"maskMap",void 0),y(this,"fbo",void 0);const{mapSize:r=2048}=n;this.maskMap=new Ut(e,{width:r,height:r,parameters:{10241:9729,10240:9729,10242:33071,10243:33071}}),this.fbo=new ct(e,{id:"maskmap",width:r,height:r,attachments:{36064:this.maskMap}})}render(e){const n=this.gl,r=[!1,!1,!1,!1];return r[e.channel]=!0,Cn(n,{clearColor:[255,255,255,255],blend:!0,blendFunc:[0,1],blendEquation:32778,colorMask:r,depthTest:!1},()=>super.render({...e,target:this.fbo,pass:"mask"}))}shouldDrawLayer(e){return e.props.operation===xc.MASK}delete(){this.fbo.delete(),this.maskMap.delete()}}const J7=new ze().lookAt({eye:[0,0,1]});function Z7({width:t,height:e,near:n,far:r,padding:i}){let s=-t/2,o=t/2,a=-e/2,l=e/2;if(i){const{left:c=0,right:u=0,top:f=0,bottom:h=0}=i,d=wt((c+t-u)/2,0,t)-t/2,A=wt((f+e-h)/2,0,e)-e/2;s-=d,o-=d,a+=A,l+=A}return new ze().ortho({left:s,right:o,bottom:a,top:l,near:n,far:r})}class eU extends Vi{constructor(e){const{width:n,height:r,near:i=.1,far:s=1e3,zoom:o=0,target:a=[0,0,0],padding:l=null,flipY:c=!0}=e,u=Array.isArray(o)?o[0]:o,f=Array.isArray(o)?o[1]:o,h=Math.min(u,f),d=Math.pow(2,h);let A;if(u!==f){const p=Math.pow(2,u),g=Math.pow(2,f);A={unitsPerMeter:[p/d,g/d,1],metersPerUnit:[d/p,d/g,1]}}super({...e,longitude:void 0,position:a,viewMatrix:J7.clone().scale([d,d*(c?-1:1),d]),projectionMatrix:Z7({width:n||1,height:r||1,padding:l,near:i,far:s}),zoom:h,distanceScales:A})}projectFlat([e,n]){const{unitsPerMeter:r}=this.distanceScales;return[e*r[0],n*r[1]]}unprojectFlat([e,n]){const{metersPerUnit:r}=this.distanceScales;return[e*r[0],n*r[1]]}panByPosition(e,n){const r=qh(n,this.pixelUnprojectionMatrix),i=this.projectFlat(e),s=Xf([],i,db([],r)),o=Xf([],this.center,s);return{target:this.unprojectFlat(o)}}}class tU extends Wb{constructor(e){const{width:n,height:r,rotationX:i=0,rotationOrbit:s=0,target:o=[0,0,0],zoom:a=0,minRotationX:l=-90,maxRotationX:c=90,minZoom:u=-1/0,maxZoom:f=1/0,startPanPosition:h,startRotatePos:d,startRotationX:A,startRotationOrbit:p,startZoomPosition:g,startZoom:m}=e;super({width:n,height:r,rotationX:i,rotationOrbit:s,target:o,zoom:a,minRotationX:l,maxRotationX:c,minZoom:u,maxZoom:f},{startPanPosition:h,startRotatePos:d,startRotationX:A,startRotationOrbit:p,startZoomPosition:g,startZoom:m}),y(this,"makeViewport",void 0),this.makeViewport=e.makeViewport}panStart({pos:e}){return this._getUpdatedState({startPanPosition:this._unproject(e)})}pan({pos:e,startPosition:n}){const r=this.getState().startPanPosition||n;if(!r)return this;const s=this.makeViewport(this.getViewportProps()).panByPosition(r,e);return this._getUpdatedState(s)}panEnd(){return this._getUpdatedState({startPanPosition:null})}rotateStart({pos:e}){return this._getUpdatedState({startRotatePos:e,startRotationX:this.getViewportProps().rotationX,startRotationOrbit:this.getViewportProps().rotationOrbit})}rotate({pos:e,deltaAngleX:n=0,deltaAngleY:r=0}){const{startRotatePos:i,startRotationX:s,startRotationOrbit:o}=this.getState(),{width:a,height:l}=this.getViewportProps();if(!i||s===void 0||o===void 0)return this;let c;if(e){let u=(e[0]-i[0])/a;const f=(e[1]-i[1])/l;(s<-90||s>90)&&(u*=-1),c={rotationX:s+f*180,rotationOrbit:o+u*180}}else c={rotationX:s+r,rotationOrbit:o+n};return this._getUpdatedState(c)}rotateEnd(){return this._getUpdatedState({startRotationX:null,startRotationOrbit:null})}shortestPathFrom(e){const n=e.getViewportProps(),r={...this.getViewportProps()},{rotationOrbit:i}=r;return Math.abs(i-n.rotationOrbit)>180&&(r.rotationOrbit=i<0?i+360:i-360),r}zoomStart({pos:e}){return this._getUpdatedState({startZoomPosition:this._unproject(e),startZoom:this.getViewportProps().zoom})}zoom({pos:e,startPos:n,scale:r}){let{startZoom:i,startZoomPosition:s}=this.getState();if(s||(i=this.getViewportProps().zoom,s=this._unproject(n)||this._unproject(e)),!s)return this;const o=this._calculateNewZoom({scale:r,startZoom:i}),a=this.makeViewport({...this.getViewportProps(),zoom:o});return this._getUpdatedState({zoom:o,...a.panByPosition(s,e)})}zoomEnd(){return this._getUpdatedState({startZoomPosition:null,startZoom:null})}zoomIn(e=2){return this._getUpdatedState({zoom:this._calculateNewZoom({scale:e})})}zoomOut(e=2){return this._getUpdatedState({zoom:this._calculateNewZoom({scale:1/e})})}moveLeft(e=50){return this._panFromCenter([-e,0])}moveRight(e=50){return this._panFromCenter([e,0])}moveUp(e=50){return this._panFromCenter([0,-e])}moveDown(e=50){return this._panFromCenter([0,e])}rotateLeft(e=15){return this._getUpdatedState({rotationOrbit:this.getViewportProps().rotationOrbit-e})}rotateRight(e=15){return this._getUpdatedState({rotationOrbit:this.getViewportProps().rotationOrbit+e})}rotateUp(e=10){return this._getUpdatedState({rotationX:this.getViewportProps().rotationX-e})}rotateDown(e=10){return this._getUpdatedState({rotationX:this.getViewportProps().rotationX+e})}_unproject(e){const n=this.makeViewport(this.getViewportProps());return e&&n.unproject(e)}_calculateNewZoom({scale:e,startZoom:n}){const{maxZoom:r,minZoom:i}=this.getViewportProps();n===void 0&&(n=this.getViewportProps().zoom);const s=n+Math.log2(e);return wt(s,i,r)}_panFromCenter(e){const{width:n,height:r,target:i}=this.getViewportProps();return this.pan({startPosition:i,pos:[n/2+e[0],r/2+e[1]]})}_getUpdatedState(e){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...e})}applyConstraints(e){const{maxZoom:n,minZoom:r,zoom:i,maxRotationX:s,minRotationX:o,rotationOrbit:a}=e;return e.zoom=Array.isArray(i)?[wt(i[0],r,n),wt(i[1],r,n)]:wt(i,r,n),e.rotationX=wt(e.rotationX,o,s),(a<-180||a>180)&&(e.rotationOrbit=E7(a+180,360)-180),e}}class nU extends tU{constructor(e){super(e),y(this,"zoomAxis",void 0),this.zoomAxis=e.zoomAxis||"all"}_calculateNewZoom({scale:e,startZoom:n}){const{maxZoom:r,minZoom:i}=this.getViewportProps();n===void 0&&(n=this.getViewportProps().zoom);let s=Math.log2(e);if(Array.isArray(n)){let[o,a]=n;switch(this.zoomAxis){case"X":o=wt(o+s,i,r);break;case"Y":a=wt(a+s,i,r);break;default:let l=Math.min(o+s,a+s);lr&&(s+=r-l),o+=s,a+=s}return[o,a]}return wt(n+s,i,r)}}class rU extends Hb{constructor(...e){super(...e),y(this,"ControllerState",nU),y(this,"transition",{transitionDuration:300,transitionInterpolator:new Zm(["target","zoom"])}),y(this,"dragMode","pan")}_onPanRotate(){return!1}}class Zh extends Is{get ViewportType(){return eU}get ControllerType(){return rU}}y(Zh,"displayName","OrthographicView");function iU({layers:t,viewport:e}){let n=null;for(const s of t){const o=s.getBounds();o&&(n?(n[0]=Math.min(n[0],o[0][0]),n[1]=Math.min(n[1],o[0][1]),n[2]=Math.max(n[2],o[1][0]),n[3]=Math.max(n[3],o[1][1])):n=[o[0][0],o[0][1],o[1][0],o[1][1]])}const r=e.getBounds();if(!n)return r;const i=oU(r);return n[2]-n[0]f.props.visible&&f.props.operation===xc.MASK);if(a.length===0){this.masks=null,this.channels.length=0;return}this.masks={},this.maskPass||(this.maskPass=new X7(e,{id:"default-mask"}),this.maskMap=this.maskPass.maskMap);const l=this._sortMaskChannels(a),c=i[0],u=!this.lastViewport||!this.lastViewport.equals(c);for(const f in l)this._renderChannel(l[f],{layerFilter:r,onViewportActive:s,views:o,viewport:c,viewportChanged:u})}_renderChannel(e,{layerFilter:n,onViewportActive:r,views:i,viewport:s,viewportChanged:o}){const a=this.channels[e.index];if(!a)return;const l=e===a||a.layers.length!==e.layers.length||e.layerBounds.some((c,u)=>c!==a.layerBounds[u]);if(e.bounds=a.bounds,e.maskBounds=a.maskBounds,this.channels[e.index]=e,(l||o)&&(this.lastViewport=s,e.bounds=iU({layers:e.layers,viewport:s}),l||!ur(e.bounds,a.bounds))){const{maskPass:c,maskMap:u}=this,f=sU({bounds:e.bounds,viewport:s,width:u.width,height:u.height});e.maskBounds=f?f.getBounds():[0,0,1,1],c.render({pass:"mask",channel:e.index,layers:e.layers,layerFilter:n,viewports:f?[f]:[],onViewportActive:r,views:i,moduleParameters:{devicePixelRatio:1}})}this.masks[e.id]={index:e.index,bounds:e.maskBounds,coordinateOrigin:e.coordinateOrigin,coordinateSystem:e.coordinateSystem}}_sortMaskChannels(e){const n={};let r=0;for(const i of e){const{id:s}=i.root;let o=n[s];if(!o){if(++r>4){Ee.warn("Too many mask layers. The max supported is 4")();continue}o={id:s,index:this.channels.findIndex(a=>(a==null?void 0:a.id)===s),layers:[],layerBounds:[],coordinateOrigin:i.root.props.coordinateOrigin,coordinateSystem:i.root.props.coordinateSystem},n[s]=o}o.layers.push(i),o.layerBounds.push(i.getBounds())}for(let i=0;i<4;i++){const s=this.channels[i];(!s||!(s.id in n))&&(this.channels[i]=null)}for(const i in n){const s=n[i];s.index<0&&(s.index=this.channels.findIndex(o=>!o),this.channels[s.index]=s)}return n}getModuleParameters(){return{maskMap:this.masks?this.maskMap:this.dummyMaskMap,maskChannels:this.masks}}cleanup(){this.dummyMaskMap&&(this.dummyMaskMap.delete(),this.dummyMaskMap=void 0),this.maskPass&&(this.maskPass.delete(),this.maskPass=void 0,this.maskMap=void 0),this.lastViewport=void 0,this.masks=null,this.channels.length=0}}const lU=new zb;class cU{constructor(){y(this,"effects",void 0),y(this,"_internalEffects",void 0),y(this,"_needsRedraw",void 0),this.effects=[],this._internalEffects=[],this._needsRedraw="Initial render",this.setEffects()}setProps(e){"effects"in e&&(e.effects.length!==this.effects.length||!Ds(e.effects,this.effects))&&(this.setEffects(e.effects),this._needsRedraw="effects changed")}needsRedraw(e={clearRedrawFlags:!1}){const n=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),n}getEffects(){return this._internalEffects}finalize(){this.cleanup()}setEffects(e=[]){this.cleanup(),this.effects=e,this._internalEffects=e.slice(),this._internalEffects.push(new aU),e.some(n=>n instanceof zb)||this._internalEffects.push(lU)}cleanup(){for(const e of this.effects)e.cleanup();for(const e of this._internalEffects)e.cleanup();this.effects.length=0,this._internalEffects.length=0}}class uU extends Xh{shouldDrawLayer(e){return e.props.operation===xc.DRAW}}const L_={blendFunc:[1,0,32771,0],blendEquation:32774};class $b extends Xh{constructor(...e){super(...e),y(this,"pickZ",void 0),y(this,"_colors",null)}render(e){return e.pickingFBO?this._drawPickingBuffer(e):super.render(e)}_drawPickingBuffer({layers:e,layerFilter:n,views:r,viewports:i,onViewportActive:s,pickingFBO:o,deviceRect:{x:a,y:l,width:c,height:u},cullRect:f,effects:h,pass:d="picking",pickZ:A}){const p=this.gl;this.pickZ=A;const g=A?null:{byLayer:new Map,byAlpha:[]};this._colors=g;const m=Cn(p,{scissorTest:!0,scissor:[a,l,c,u],clearColor:[0,0,0,0],depthMask:!0,depthTest:!0,depthRange:[0,1],colorMask:[!0,!0,!0,!0],...L_,blend:!A},()=>super.render({target:o,layers:e,layerFilter:n,views:r,viewports:i,onViewportActive:s,cullRect:f,effects:h==null?void 0:h.filter(E=>E.useInPicking),pass:d}));return this._colors=null,{decodePickingColor:g&&hU.bind(null,g),stats:m}}shouldDrawLayer(e){return e.props.pickable&&e.props.operation===xc.DRAW}getModuleParameters(){return{pickingActive:1,pickingAttribute:this.pickZ,lightSources:{}}}getLayerParameters(e,n,r){const i={...e.props.parameters};return this._colors?(Object.assign(i,L_),i.blend=!0,i.blendColor=fU(this._colors,e,r)):i.blend=!1,i}}function fU(t,e,n){const{byLayer:r,byAlpha:i}=t;let s,o=r.get(e);return o?(o.viewports.push(n),s=o.a):(s=r.size+1,s<=255?(o={a:s,layer:e,viewports:[n]},r.set(e,o),i[s]=o):(Ee.warn("Too many pickable layers, only picking the first 255")(),s=0)),[0,0,0,s/255]}function hU(t,e){const n=t.byAlpha[e[3]];return n&&{pickedLayer:n.layer,pickedViewports:n.viewports,pickedObjectIndex:n.layer.decodePickingColor(e)}}const dU="deckRenderer.renderLayers";class AU{constructor(e){this.gl=e,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new uU(e),this.pickLayersPass=new $b(e),this.renderCount=0,this._needsRedraw="Initial render",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(e){"layerFilter"in e&&this.layerFilter!==e.layerFilter&&(this.layerFilter=e.layerFilter,this._needsRedraw="layerFilter changed"),"drawPickingColors"in e&&this.drawPickingColors!==e.drawPickingColors&&(this.drawPickingColors=e.drawPickingColors,this._needsRedraw="drawPickingColors changed")}renderLayers(e){const n=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass;e.layerFilter=e.layerFilter||this.layerFilter,e.effects=e.effects||[],e.target=e.target||ct.getDefaultFramebuffer(this.gl),this._preRender(e.effects,e);const r=this.lastPostProcessEffect?this.renderBuffers[0]:e.target,i=n.render({...e,target:r});this._postRender(e.effects,e),this.renderCount++,Nt(dU,this,i,e)}needsRedraw(e={clearRedrawFlags:!1}){const n=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),n}finalize(){const{renderBuffers:e}=this;for(const n of e)n.delete();e.length=0}_preRender(e,n){let r=null;for(const i of e)i.preRender(this.gl,n),i.postRender&&(r=i);r&&this._resizeRenderBuffers(),this.lastPostProcessEffect=r}_resizeRenderBuffers(){const{renderBuffers:e}=this;e.length===0&&e.push(new ct(this.gl),new ct(this.gl));for(const n of e)n.resize()}_postRender(e,n){const{renderBuffers:r}=this,i={inputBuffer:r[0],swapBuffer:r[1],target:null};for(const s of e)if(s.postRender){if(s===this.lastPostProcessEffect){i.target=n.target,s.postRender(this.gl,i);break}const o=s.postRender(this.gl,i);i.inputBuffer=o,i.swapBuffer=o===r[0]?r[1]:r[0]}}}const gU={pickedColor:null,pickedObjectIndex:-1};function pU({pickedColors:t,decodePickingColor:e,deviceX:n,deviceY:r,deviceRadius:i,deviceRect:s}){const{x:o,y:a,width:l,height:c}=s;let u=i*i,f=-1,h=0;for(let d=0;du)h+=4*l;else for(let g=0;g=0){const v=g+o-n,E=v*v+p;E<=u&&(u=E,f=h)}h+=4}}if(f>=0){const d=t.slice(f,f+4),A=e(d);if(A){const p=Math.floor(f/4/l),g=f/4-p*l;return{...A,pickedColor:d,pickedX:o+g,pickedY:a+p}}Ee.error("Picked non-existent layer. Is picking buffer corrupt?")()}return gU}function mU({pickedColors:t,decodePickingColor:e}){const n=new Map;if(t){for(let r=0;r=0){const s=t.slice(r,r+4),o=s.join(",");if(!n.has(o)){const a=e(s);a?n.set(o,{...a,color:s}):Ee.error("Picked non-existent layer. Is picking buffer corrupt?")()}}}return Array.from(n.values())}function Kb({pickInfo:t,viewports:e,pixelRatio:n,x:r,y:i,z:s}){let o=e[0];e.length>1&&(o=yU((t==null?void 0:t.pickedViewports)||e,{x:r,y:i}));let a;if(o){const l=[r-o.x,i-o.y];s!==void 0&&(l[2]=s),a=o.unproject(l)}return{color:null,layer:null,viewport:o,index:-1,picked:!1,x:r,y:i,pixel:[r,i],coordinate:a,devicePixel:t&&"pickedX"in t?[t.pickedX,t.pickedY]:void 0,pixelRatio:n}}function vU(t){const{pickInfo:e,lastPickedInfo:n,mode:r,layers:i}=t,{pickedColor:s,pickedLayer:o,pickedObjectIndex:a}=e,l=o?[o]:[];if(r==="hover"){const f=n.index,h=n.layerId,d=o?o.props.id:null;if(d!==h||a!==f){if(d!==h){const A=i.find(p=>p.props.id===h);A&&l.unshift(A)}n.layerId=d,n.index=a,n.info=null}}const c=Kb(t),u=new Map;return u.set(null,c),l.forEach(f=>{let h={...c};f===o&&(h.color=s,h.index=a,h.picked=!0),h=qb({layer:f,info:h,mode:r});const d=h.layer;f===o&&r==="hover"&&(n.info=h),u.set(d.id,h),r==="hover"&&d.updateAutoHighlight(h)}),u}function qb({layer:t,info:e,mode:n}){for(;t&&e;){const r=e.layer||null;e.sourceLayer=r,e.layer=t,e=t.getPickingInfo({info:e,mode:n,sourceLayer:r}),t=t.parent}return e}function yU(t,e){for(let n=t.length-1;n>=0;n--){const r=t[n];if(r.containsPixel(e))return r}return t[0]}class EU{constructor(e){y(this,"gl",void 0),y(this,"pickingFBO",void 0),y(this,"depthFBO",void 0),y(this,"pickLayersPass",void 0),y(this,"layerFilter",void 0),y(this,"lastPickedInfo",void 0),y(this,"_pickable",!0),this.gl=e,this.pickLayersPass=new $b(e),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(e){"layerFilter"in e&&(this.layerFilter=e.layerFilter),"_pickable"in e&&(this._pickable=e._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.delete(),this.depthFBO&&(this.depthFBO.color.delete(),this.depthFBO.delete())}pickObject(e){return this._pickClosestObject(e)}pickObjects(e){return this._pickVisibleObjects(e)}getLastPickedObject({x:e,y:n,layers:r,viewports:i},s=this.lastPickedInfo.info){const o=s&&s.layer&&s.layer.id,a=s&&s.viewport&&s.viewport.id,l=o?r.find(h=>h.id===o):null,c=a&&i.find(h=>h.id===a)||i[0],u=c&&c.unproject([e-c.x,n-c.y]);return{...s,...{x:e,y:n,viewport:c,coordinate:u,layer:l}}}_resizeBuffer(){var e,n;const{gl:r}=this;if(!this.pickingFBO&&(this.pickingFBO=new ct(r),ct.isSupported(r,{colorBufferFloat:!0}))){const i=new ct(r);i.attach({36064:new Ut(r,{format:xe(r)?34836:6408,type:5126})}),this.depthFBO=i}(e=this.pickingFBO)===null||e===void 0||e.resize({width:r.canvas.width,height:r.canvas.height}),(n=this.depthFBO)===null||n===void 0||n.resize({width:r.canvas.width,height:r.canvas.height})}_getPickable(e){if(this._pickable===!1)return null;const n=e.filter(r=>r.isPickable()&&!r.isComposite);return n.length?n:null}_pickClosestObject({layers:e,views:n,viewports:r,x:i,y:s,radius:o=0,depth:a=1,mode:l="query",unproject3D:c,onViewportActive:u,effects:f}){const h=this._getPickable(e),d=Do(this.gl);if(!h)return{result:[],emptyInfo:Kb({viewports:r,x:i,y:s,pixelRatio:d})};this._resizeBuffer();const A=BA(this.gl,[i,s],!0),p=[A.x+Math.floor(A.width/2),A.y+Math.floor(A.height/2)],g=Math.round(o*d),{width:m,height:v}=this.pickingFBO,E=this._getPickingRect({deviceX:p[0],deviceY:p[1],deviceRadius:g,deviceWidth:m,deviceHeight:v}),_={x:i-o,y:s-o,width:o*2+1,height:o*2+1};let I;const C=[],R=new Set;for(let P=0;P=c);B++){const N=C[B];let V={color:N.pickedColor,layer:null,index:N.pickedObjectIndex,picked:!0,x:i,y:s,pixelRatio:d};V=qb({layer:N.pickedLayer,info:V,mode:l}),R.has(V.object)||R.set(V.object,V)}return Array.from(R.values())}_drawAndSample({layers:e,views:n,viewports:r,onViewportActive:i,deviceRect:s,cullRect:o,effects:a,pass:l},c=!1){const u=c?this.depthFBO:this.pickingFBO,{decodePickingColor:f}=this.pickLayersPass.render({layers:e,layerFilter:this.layerFilter,views:n,viewports:r,onViewportActive:i,pickingFBO:u,deviceRect:s,cullRect:o,effects:a,pass:l,pickZ:c}),{x:h,y:d,width:A,height:p}=s,g=new(c?Float32Array:Uint8Array)(A*p*4);return Kh(u,{sourceX:h,sourceY:d,sourceWidth:A,sourceHeight:p,target:g}),{pickedColors:g,decodePickingColor:f}}_getPickingRect({deviceX:e,deviceY:n,deviceRadius:r,deviceWidth:i,deviceHeight:s}){const o=Math.max(0,e-r),a=Math.max(0,n-r),l=Math.min(i,e+r+1)-o,c=Math.min(s,n+r+1)-a;return l<=0||c<=0?null:{x:o,y:a,width:l,height:c}}}const _U={zIndex:"1",position:"absolute",pointerEvents:"none",color:"#a0a7b4",backgroundColor:"#29323c",padding:"10px",top:"0",left:"0",display:"none"};class xU{constructor(e){y(this,"el",null),y(this,"isVisible",!1);const n=e.parentElement;n&&(this.el=document.createElement("div"),this.el.className="deck-tooltip",Object.assign(this.el.style,_U),n.appendChild(this.el))}setTooltip(e,n,r){const i=this.el;if(i){if(typeof e=="string")i.innerText=e;else if(e)e.text&&(i.innerText=e.text),e.html&&(i.innerHTML=e.html),e.className&&(i.className=e.className),Object.assign(i.style,e.style);else{this.isVisible=!1,i.style.display="none";return}this.isVisible=!0,i.style.display="block",i.style.transform="translate(".concat(n,"px, ").concat(r,"px)")}}remove(){this.el&&(this.el.remove(),this.el=null)}}var Xb={exports:{}};/*! Hammer.JS - v2.0.7 - 2016-04-22 + * http://hammerjs.github.io/ + * + * Copyright (c) 2016 Jorik Tangelder; + * Licensed under the MIT license */(function(t){(function(e,n,r,i){var s=["","webkit","Moz","MS","ms","o"],o=n.createElement("div"),a="function",l=Math.round,c=Math.abs,u=Date.now;function f(x,w,T){return setTimeout(E(x,T),w)}function h(x,w,T){return Array.isArray(x)?(d(x,T[w],T),!0):!1}function d(x,w,T){var O;if(x)if(x.forEach)x.forEach(w,T);else if(x.length!==i)for(O=0;O\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",Ce=e.console&&(e.console.warn||e.console.log);return Ce&&Ce.call(e.console,O,Z),x.apply(this,arguments)}}var p;typeof Object.assign!="function"?p=function(w){if(w===i||w===null)throw new TypeError("Cannot convert undefined or null to object");for(var T=Object(w),O=1;O-1}function N(x){return x.trim().split(/\s+/g)}function V(x,w,T){if(x.indexOf&&!T)return x.indexOf(w);for(var O=0;Ozt[w]}):O=O.sort()),O}function K(x,w){for(var T,O,W=w[0].toUpperCase()+w.slice(1),Z=0;Z1&&!T.firstMultiple?T.firstMultiple=$r(w):W===1&&(T.firstMultiple=!1);var Z=T.firstInput,Ce=T.firstMultiple,dt=Ce?Ce.center:Z.center,Et=w.center=ut(O);w.timeStamp=u(),w.deltaTime=w.timeStamp-Z.timeStamp,w.angle=Mn(dt,Et),w.distance=st(dt,Et),Gt(T,w),w.offsetDirection=Pn(w.deltaX,w.deltaY);var zt=Se(w.deltaTime,w.deltaX,w.deltaY);w.overallVelocityX=zt.x,w.overallVelocityY=zt.y,w.overallVelocity=c(zt.x)>c(zt.y)?zt.x:zt.y,w.scale=Ce?la(Ce.pointers,O):1,w.rotation=Ce?Ln(Ce.pointers,O):0,w.maxPointers=T.prevInput?w.pointers.length>T.prevInput.maxPointers?w.pointers.length:T.prevInput.maxPointers:w.pointers.length,Rt(T,w);var Xn=x.element;P(w.srcEvent.target,Xn)&&(Xn=w.srcEvent.target),w.target=Xn}function Gt(x,w){var T=w.center,O=x.offsetDelta||{},W=x.prevDelta||{},Z=x.prevInput||{};(w.eventType===j||Z.eventType===te)&&(W=x.prevDelta={x:Z.deltaX||0,y:Z.deltaY||0},O=x.offsetDelta={x:T.x,y:T.y}),w.deltaX=W.x+(T.x-O.x),w.deltaY=W.y+(T.y-O.y)}function Rt(x,w){var T=x.lastInterval||w,O=w.timeStamp-T.timeStamp,W,Z,Ce,dt;if(w.eventType!=de&&(O>F||T.velocity===i)){var Et=w.deltaX-T.deltaX,zt=w.deltaY-T.deltaY,Xn=Se(O,Et,zt);Z=Xn.x,Ce=Xn.y,W=c(Xn.x)>c(Xn.y)?Xn.x:Xn.y,dt=Pn(Et,zt),x.lastInterval=w}else W=T.velocity,Z=T.velocityX,Ce=T.velocityY,dt=T.direction;w.velocity=W,w.velocityX=Z,w.velocityY=Ce,w.direction=dt}function $r(x){for(var w=[],T=0;T=c(w)?x<0?ve:_e:w<0?ye:lt}function st(x,w,T){T||(T=et);var O=w[T[0]]-x[T[0]],W=w[T[1]]-x[T[1]];return Math.sqrt(O*O+W*W)}function Mn(x,w,T){T||(T=et);var O=w[T[0]]-x[T[0]],W=w[T[1]]-x[T[1]];return Math.atan2(W,O)*180/Math.PI}function Ln(x,w){return Mn(w[1],w[0],tt)+Mn(x[1],x[0],tt)}function la(x,w){return st(w[0],w[1],tt)/st(x[0],x[1],tt)}var ca={mousedown:j,mousemove:se,mouseup:te},ua="mousedown",ge="mousemove mouseup";function qt(){this.evEl=ua,this.evWin=ge,this.pressed=!1,Re.apply(this,arguments)}v(qt,Re,{handler:function(w){var T=ca[w.type];T&j&&w.button===0&&(this.pressed=!0),T&se&&w.which!==1&&(T=te),this.pressed&&(T&te&&(this.pressed=!1),this.callback(this.manager,T,{pointers:[w],changedPointers:[w],pointerType:k,srcEvent:w}))}});var fa={pointerdown:j,pointermove:se,pointerup:te,pointercancel:de,pointerout:de},ji={2:M,3:D,4:k,5:U},mn="pointerdown",Hi="pointermove pointerup pointercancel";e.MSPointerEvent&&!e.PointerEvent&&(mn="MSPointerDown",Hi="MSPointerMove MSPointerUp MSPointerCancel");function Nn(){this.evEl=mn,this.evWin=Hi,Re.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}v(Nn,Re,{handler:function(w){var T=this.store,O=!1,W=w.type.toLowerCase().replace("ms",""),Z=fa[W],Ce=ji[w.pointerType]||w.pointerType,dt=Ce==M,Et=V(T,w.pointerId,"pointerId");Z&j&&(w.button===0||dt)?Et<0&&(T.push(w),Et=T.length-1):Z&(te|de)&&(O=!0),!(Et<0)&&(T[Et]=w,this.callback(this.manager,Z,{pointers:T,changedPointers:[w],pointerType:Ce,srcEvent:w}),O&&T.splice(Et,1))}});var mr={touchstart:j,touchmove:se,touchend:te,touchcancel:de},ha="touchstart",gd="touchstart touchmove touchend touchcancel";function da(){this.evTarget=ha,this.evWin=gd,this.started=!1,Re.apply(this,arguments)}v(da,Re,{handler:function(w){var T=mr[w.type];if(T===j&&(this.started=!0),!!this.started){var O=pd.call(this,w,T);T&(te|de)&&O[0].length-O[1].length===0&&(this.started=!1),this.callback(this.manager,T,{pointers:O[0],changedPointers:O[1],pointerType:M,srcEvent:w})}}});function pd(x,w){var T=G(x.touches),O=G(x.changedTouches);return w&(te|de)&&(T=z(T.concat(O),"identifier",!0)),[T,O]}var md={touchstart:j,touchmove:se,touchend:te,touchcancel:de},oe="touchstart touchmove touchend touchcancel";function ue(){this.evTarget=oe,this.targetIds={},Re.apply(this,arguments)}v(ue,Re,{handler:function(w){var T=md[w.type],O=$e.call(this,w,T);O&&this.callback(this.manager,T,{pointers:O[0],changedPointers:O[1],pointerType:M,srcEvent:w})}});function $e(x,w){var T=G(x.touches),O=this.targetIds;if(w&(j|se)&&T.length===1)return O[T[0].identifier]=!0,[T,T];var W,Z,Ce=G(x.changedTouches),dt=[],Et=this.target;if(Z=T.filter(function(zt){return P(zt.target,Et)}),w===j)for(W=0;W-1&&O.splice(Z,1)};setTimeout(W,Je)}}function Kr(x){for(var w=x.srcEvent.clientX,T=x.srcEvent.clientY,O=0;O-1&&this.requireFail.splice(w,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(x){return!!this.simultaneous[x.id]},emit:function(x){var w=this,T=this.state;function O(W){w.manager.emit(W,x)}T=Xr&&O(w.options.event+jv(T))},tryEmit:function(x){if(this.canEmit())return this.emit(x);this.state=qn},canEmit:function(){for(var x=0;xw.threshold&&W&w.direction},attrTest:function(x){return Dn.prototype.attrTest.call(this,x)&&(this.state&vn||!(this.state&vn)&&this.directionTest(x))},emit:function(x){this.pX=x.deltaX,this.pY=x.deltaY;var w=Hv(x.direction);w&&(x.additionalEvent=this.options.event+w),this._super.emit.call(this,x)}});function yd(){Dn.apply(this,arguments)}v(yd,Dn,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[ot]},attrTest:function(x){return this._super.attrTest.call(this,x)&&(Math.abs(x.scale-1)>this.options.threshold||this.state&vn)},emit:function(x){if(x.scale!==1){var w=x.scale<1?"in":"out";x.additionalEvent=this.options.event+w}this._super.emit.call(this,x)}});function Ed(){Er.apply(this,arguments),this._timer=null,this._input=null}v(Ed,Er,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[kc]},process:function(x){var w=this.options,T=x.pointers.length===w.pointers,O=x.distancew.time;if(this._input=x,!O||!T||x.eventType&(te|de)&&!W)this.reset();else if(x.eventType&j)this.reset(),this._timer=f(function(){this.state=yr,this.tryEmit()},w.time,this);else if(x.eventType&te)return yr;return qn},reset:function(){clearTimeout(this._timer)},emit:function(x){this.state===yr&&(x&&x.eventType&te?this.manager.emit(this.options.event+"up",x):(this._input.timeStamp=u(),this.manager.emit(this.options.event,this._input)))}});function _d(){Dn.apply(this,arguments)}v(_d,Dn,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[ot]},attrTest:function(x){return this._super.attrTest.call(this,x)&&(Math.abs(x.rotation)>this.options.threshold||this.state&vn)}});function xd(){Dn.apply(this,arguments)}v(xd,Dn,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:ce|we,pointers:1},getTouchAction:function(){return Uc.prototype.getTouchAction.call(this)},attrTest:function(x){var w=this.options.direction,T;return w&(ce|we)?T=x.overallVelocity:w&ce?T=x.overallVelocityX:w&we&&(T=x.overallVelocityY),this._super.attrTest.call(this,x)&&w&x.offsetDirection&&x.distance>this.options.threshold&&x.maxPointers==this.options.pointers&&c(T)>this.options.velocity&&x.eventType&te},emit:function(x){var w=Hv(x.offsetDirection);w&&this.manager.emit(this.options.event+w,x),this.manager.emit(this.options.event,x)}});function Gc(){Er.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}v(Gc,Er,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[vr]},process:function(x){var w=this.options,T=x.pointers.length===w.pointers,O=x.distance0&&r.type==="pointerdown"&&(wU(i,s=>s.pointerId===r.pointerId)||i.push(r)),e.call(this,r)}}function SU(t){t.prototype.handler=function(n){let r=IU[n.type];r&Jb&&n.button>=0&&(this.pressed=!0),r&Zb&&n.which===0&&(r=Fp),this.pressed&&(r&Fp&&(this.pressed=!1),this.callback(this.manager,r,{pointers:[n],changedPointers:[n],pointerType:"mouse",srcEvent:n}))}}bU(wc.PointerEventInput);SU(wc.MouseInput);const TU=wc.Manager;class ed{constructor(e,n,r){this.element=e,this.callback=n,this.options={enable:!0,...r}}}const BU=Zn?[[Zn.Pan,{event:"tripan",pointers:3,threshold:0,enable:!1}],[Zn.Rotate,{enable:!1}],[Zn.Pinch,{enable:!1}],[Zn.Swipe,{enable:!1}],[Zn.Pan,{threshold:0,enable:!1}],[Zn.Press,{enable:!1}],[Zn.Tap,{event:"doubletap",taps:2,enable:!1}],[Zn.Tap,{event:"anytap",enable:!1}],[Zn.Tap,{enable:!1}]]:null,N_={tripan:["rotate","pinch","pan"],rotate:["pinch"],pinch:["pan"],pan:["press","doubletap","anytap","tap"],doubletap:["anytap"],anytap:["tap"]},RU={doubletap:["tap"]},PU={pointerdown:"pointerdown",pointermove:"pointermove",pointerup:"pointerup",touchstart:"pointerdown",touchmove:"pointermove",touchend:"pointerup",mousedown:"pointerdown",mousemove:"pointermove",mouseup:"pointerup"},ev={KEY_EVENTS:["keydown","keyup"],MOUSE_EVENTS:["mousedown","mousemove","mouseup","mouseover","mouseout","mouseleave"],WHEEL_EVENTS:["wheel","mousewheel"]},MU={tap:"tap",anytap:"anytap",doubletap:"doubletap",press:"press",pinch:"pinch",pinchin:"pinch",pinchout:"pinch",pinchstart:"pinch",pinchmove:"pinch",pinchend:"pinch",pinchcancel:"pinch",rotate:"rotate",rotatestart:"rotate",rotatemove:"rotate",rotateend:"rotate",rotatecancel:"rotate",tripan:"tripan",tripanstart:"tripan",tripanmove:"tripan",tripanup:"tripan",tripandown:"tripan",tripanleft:"tripan",tripanright:"tripan",tripanend:"tripan",tripancancel:"tripan",pan:"pan",panstart:"pan",panmove:"pan",panup:"pan",pandown:"pan",panleft:"pan",panright:"pan",panend:"pan",pancancel:"pan",swipe:"swipe",swipeleft:"swipe",swiperight:"swipe",swipeup:"swipe",swipedown:"swipe"},O_={click:"tap",anyclick:"anytap",dblclick:"doubletap",mousedown:"pointerdown",mousemove:"pointermove",mouseup:"pointerup",mouseover:"pointerover",mouseout:"pointerout",mouseleave:"pointerleave"},LU=typeof navigator<"u"&&navigator.userAgent?navigator.userAgent.toLowerCase():"",uo=typeof window<"u"?window:global;let Up=!1;try{const t={get passive(){return Up=!0,!0}};uo.addEventListener("test",null,t),uo.removeEventListener("test",null)}catch{Up=!1}const NU=LU.indexOf("firefox")!==-1,{WHEEL_EVENTS:OU}=ev,D_="wheel",k_=4.000244140625,DU=40,kU=.25;class QU extends ed{constructor(e,n,r){super(e,n,r),this.handleEvent=i=>{if(!this.options.enable)return;let s=i.deltaY;uo.WheelEvent&&(NU&&i.deltaMode===uo.WheelEvent.DOM_DELTA_PIXEL&&(s/=uo.devicePixelRatio),i.deltaMode===uo.WheelEvent.DOM_DELTA_LINE&&(s*=DU)),s!==0&&s%k_===0&&(s=Math.floor(s/k_)),i.shiftKey&&s&&(s=s*kU),this.callback({type:D_,center:{x:i.clientX,y:i.clientY},delta:-s,srcEvent:i,pointerType:"mouse",target:i.target})},this.events=(this.options.events||[]).concat(OU),this.events.forEach(i=>e.addEventListener(i,this.handleEvent,Up?{passive:!1}:!1))}destroy(){this.events.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,n){e===D_&&(this.options.enable=n)}}const{MOUSE_EVENTS:FU}=ev,Q_="pointermove",F_="pointerover",U_="pointerout",G_="pointerenter",z_="pointerleave";class UU extends ed{constructor(e,n,r){super(e,n,r),this.handleEvent=s=>{this.handleOverEvent(s),this.handleOutEvent(s),this.handleEnterEvent(s),this.handleLeaveEvent(s),this.handleMoveEvent(s)},this.pressed=!1;const{enable:i}=this.options;this.enableMoveEvent=i,this.enableLeaveEvent=i,this.enableEnterEvent=i,this.enableOutEvent=i,this.enableOverEvent=i,this.events=(this.options.events||[]).concat(FU),this.events.forEach(s=>e.addEventListener(s,this.handleEvent))}destroy(){this.events.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,n){e===Q_&&(this.enableMoveEvent=n),e===F_&&(this.enableOverEvent=n),e===U_&&(this.enableOutEvent=n),e===G_&&(this.enableEnterEvent=n),e===z_&&(this.enableLeaveEvent=n)}handleOverEvent(e){this.enableOverEvent&&e.type==="mouseover"&&this._emit(F_,e)}handleOutEvent(e){this.enableOutEvent&&e.type==="mouseout"&&this._emit(U_,e)}handleEnterEvent(e){this.enableEnterEvent&&e.type==="mouseenter"&&this._emit(G_,e)}handleLeaveEvent(e){this.enableLeaveEvent&&e.type==="mouseleave"&&this._emit(z_,e)}handleMoveEvent(e){if(this.enableMoveEvent)switch(e.type){case"mousedown":e.button>=0&&(this.pressed=!0);break;case"mousemove":e.which===0&&(this.pressed=!1),this.pressed||this._emit(Q_,e);break;case"mouseup":this.pressed=!1;break}}_emit(e,n){this.callback({type:e,center:{x:n.clientX,y:n.clientY},srcEvent:n,pointerType:"mouse",target:n.target})}}const{KEY_EVENTS:GU}=ev,V_="keydown",j_="keyup";class zU extends ed{constructor(e,n,r){super(e,n,r),this.handleEvent=i=>{const s=i.target||i.srcElement;s.tagName==="INPUT"&&s.type==="text"||s.tagName==="TEXTAREA"||(this.enableDownEvent&&i.type==="keydown"&&this.callback({type:V_,srcEvent:i,key:i.key,target:i.target}),this.enableUpEvent&&i.type==="keyup"&&this.callback({type:j_,srcEvent:i,key:i.key,target:i.target}))},this.enableDownEvent=this.options.enable,this.enableUpEvent=this.options.enable,this.events=(this.options.events||[]).concat(GU),e.tabIndex=this.options.tabIndex||0,e.style.outline="none",this.events.forEach(i=>e.addEventListener(i,this.handleEvent))}destroy(){this.events.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,n){e===V_&&(this.enableDownEvent=n),e===j_&&(this.enableUpEvent=n)}}const H_="contextmenu";class VU extends ed{constructor(e,n,r){super(e,n,r),this.handleEvent=i=>{this.options.enable&&this.callback({type:H_,center:{x:i.clientX,y:i.clientY},srcEvent:i,pointerType:"mouse",target:i.target})},e.addEventListener("contextmenu",this.handleEvent)}destroy(){this.element.removeEventListener("contextmenu",this.handleEvent)}enableEventType(e,n){e===H_&&(this.options.enable=n)}}const Gp=1,nh=2,zp=4,jU={pointerdown:Gp,pointermove:nh,pointerup:zp,mousedown:Gp,mousemove:nh,mouseup:zp},HU=1,WU=2,YU=3,$U=0,KU=1,qU=2,XU=1,JU=2,ZU=4;function e9(t){const e=jU[t.srcEvent.type];if(!e)return null;const{buttons:n,button:r,which:i}=t.srcEvent;let s=!1,o=!1,a=!1;return e===zp||e===nh&&!Number.isFinite(n)?(s=i===HU,o=i===WU,a=i===YU):e===nh?(s=!!(n&XU),o=!!(n&ZU),a=!!(n&JU)):e===Gp&&(s=r===$U,o=r===KU,a=r===qU),{leftButton:s,middleButton:o,rightButton:a}}function t9(t,e){const n=t.center;if(!n)return null;const r=e.getBoundingClientRect(),i=r.width/e.offsetWidth||1,s=r.height/e.offsetHeight||1,o={x:(n.x-r.left-e.clientLeft)/i,y:(n.y-r.top-e.clientTop)/s};return{center:n,offsetCenter:o}}const WA={srcElement:"root",priority:0};class n9{constructor(e){this.handleEvent=n=>{if(this.isEmpty())return;const r=this._normalizeEvent(n);let i=n.srcEvent.target;for(;i&&i!==r.rootElement;){if(this._emit(r,i),r.handled)return;i=i.parentNode}this._emit(r,"root")},this.eventManager=e,this.handlers=[],this.handlersByElement=new Map,this._active=!1}isEmpty(){return!this._active}add(e,n,r,i=!1,s=!1){const{handlers:o,handlersByElement:a}=this;let l=WA;typeof r=="string"||r&&r.addEventListener?l={...WA,srcElement:r}:r&&(l={...WA,...r});let c=a.get(l.srcElement);c||(c=[],a.set(l.srcElement,c));const u={type:e,handler:n,srcElement:l.srcElement,priority:l.priority};i&&(u.once=!0),s&&(u.passive=!0),o.push(u),this._active=this._active||!u.passive;let f=c.length-1;for(;f>=0&&!(c[f].priority>=u.priority);)f--;c.splice(f+1,0,u)}remove(e,n){const{handlers:r,handlersByElement:i}=this;for(let s=r.length-1;s>=0;s--){const o=r[s];if(o.type===e&&o.handler===n){r.splice(s,1);const a=i.get(o.srcElement);a.splice(a.indexOf(o),1),a.length===0&&i.delete(o.srcElement)}}this._active=r.some(s=>!s.passive)}_emit(e,n){const r=this.handlersByElement.get(n);if(r){let i=!1;const s=()=>{e.handled=!0},o=()=>{e.handled=!0,i=!0},a=[];for(let l=0;l{e.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:n}}}const r9={events:null,recognizers:null,recognizerOptions:{},Manager:TU,touchAction:"none",tabIndex:0};class i9{constructor(e=null,n){this._onBasicInput=i=>{const{srcEvent:s}=i,o=PU[s.type];o&&this.manager.emit(o,i)},this._onOtherEvent=i=>{this.manager.emit(i.type,i)},this.options={...r9,...n},this.events=new Map,this.setElement(e);const{events:r}=this.options;r&&this.on(r)}getElement(){return this.element}setElement(e){if(this.element&&this.destroy(),this.element=e,!e)return;const{options:n}=this,r=n.Manager;this.manager=new r(e,{touchAction:n.touchAction,recognizers:n.recognizers||BU}).on("hammer.input",this._onBasicInput),n.recognizers||Object.keys(N_).forEach(i=>{const s=this.manager.get(i);s&&N_[i].forEach(o=>{s.recognizeWith(o)})});for(const i in n.recognizerOptions){const s=this.manager.get(i);if(s){const o=n.recognizerOptions[i];delete o.enable,s.set(o)}}this.wheelInput=new QU(e,this._onOtherEvent,{enable:!1}),this.moveInput=new UU(e,this._onOtherEvent,{enable:!1}),this.keyInput=new zU(e,this._onOtherEvent,{enable:!1,tabIndex:n.tabIndex}),this.contextmenuInput=new VU(e,this._onOtherEvent,{enable:!1});for(const[i,s]of this.events)s.isEmpty()||(this._toggleRecognizer(s.recognizerName,!0),this.manager.on(i,s.handleEvent))}destroy(){this.element&&(this.wheelInput.destroy(),this.moveInput.destroy(),this.keyInput.destroy(),this.contextmenuInput.destroy(),this.manager.destroy(),this.wheelInput=null,this.moveInput=null,this.keyInput=null,this.contextmenuInput=null,this.manager=null,this.element=null)}on(e,n,r){this._addEventHandler(e,n,r,!1)}once(e,n,r){this._addEventHandler(e,n,r,!0)}watch(e,n,r){this._addEventHandler(e,n,r,!1,!0)}off(e,n){this._removeEventHandler(e,n)}_toggleRecognizer(e,n){const{manager:r}=this;if(!r)return;const i=r.get(e);if(i&&i.options.enable!==n){i.set({enable:n});const s=RU[e];s&&!this.options.recognizers&&s.forEach(o=>{const a=r.get(o);n?(a.requireFailure(e),i.dropRequireFailure(o)):a.dropRequireFailure(e)})}this.wheelInput.enableEventType(e,n),this.moveInput.enableEventType(e,n),this.keyInput.enableEventType(e,n),this.contextmenuInput.enableEventType(e,n)}_addEventHandler(e,n,r,i,s){if(typeof e!="string"){r=n;for(const u in e)this._addEventHandler(u,e[u],r,i,s);return}const{manager:o,events:a}=this,l=O_[e]||e;let c=a.get(l);c||(c=new n9(this),a.set(l,c),c.recognizerName=MU[l]||l,o&&o.on(l,c.handleEvent)),c.add(e,n,r,i,s),c.isEmpty()||this._toggleRecognizer(c.recognizerName,!0)}_removeEventHandler(e,n){if(typeof e!="string"){for(const o in e)this._removeEventHandler(o,e[o]);return}const{events:r}=this,i=O_[e]||e,s=r.get(i);if(s&&(s.remove(e,n),s.isEmpty())){const{recognizerName:o}=s;let a=!1;for(const l of r.values())if(l.recognizerName===o&&!l.isEmpty()){a=!0;break}a||this._toggleRecognizer(o,!1)}}}function Ki(){}const s9=({isDragging:t})=>t?"grabbing":"grab",eS={id:"",width:"100%",height:"100%",style:null,viewState:null,initialViewState:null,pickingRadius:0,layerFilter:null,glOptions:{},parameters:{},parent:null,gl:null,canvas:null,layers:[],effects:[],views:null,controller:null,useDevicePixels:!0,touchAction:"none",eventRecognizerOptions:{},_framebuffer:null,_animate:!1,_pickable:!0,_typedArrayManagerProps:{},_customRender:null,onWebGLInitialized:Ki,onResize:Ki,onViewStateChange:Ki,onInteractionStateChange:Ki,onBeforeRender:Ki,onAfterRender:Ki,onLoad:Ki,onError:t=>Ee.error(t.message)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:s9,getTooltip:null,debug:!1,drawPickingColors:!1};class td{constructor(e){y(this,"props",void 0),y(this,"width",0),y(this,"height",0),y(this,"userData",{}),y(this,"canvas",null),y(this,"viewManager",null),y(this,"layerManager",null),y(this,"effectManager",null),y(this,"deckRenderer",null),y(this,"deckPicker",null),y(this,"eventManager",null),y(this,"tooltip",null),y(this,"metrics",void 0),y(this,"animationLoop",void 0),y(this,"stats",void 0),y(this,"viewState",void 0),y(this,"cursorState",void 0),y(this,"_needsRedraw",void 0),y(this,"_pickRequest",void 0),y(this,"_lastPointerDownInfo",null),y(this,"_metricsCounter",void 0),y(this,"_onPointerMove",n=>{const{_pickRequest:r}=this;if(n.type==="pointerleave")r.x=-1,r.y=-1,r.radius=0;else{if(n.leftButton||n.rightButton)return;{const i=n.offsetCenter;if(!i)return;r.x=i.x,r.y=i.y,r.radius=this.props.pickingRadius}}this.layerManager&&(this.layerManager.context.mousePosition={x:r.x,y:r.y}),r.event=n}),y(this,"_onEvent",n=>{const r=E_[n.type],i=n.offsetCenter;if(!r||!i||!this.layerManager)return;const s=this.layerManager.getLayers(),o=this.deckPicker.getLastPickedObject({x:i.x,y:i.y,layers:s,viewports:this.getViewports(i)},this._lastPointerDownInfo),{layer:a}=o,l=a&&(a[r.handler]||a.props[r.handler]),c=this.props[r.handler];let u=!1;l&&(u=l.call(a,o,n)),!u&&c&&c(o,n)}),y(this,"_onPointerDown",n=>{const r=n.offsetCenter,i=this._pick("pickObject","pickObject Time",{x:r.x,y:r.y,radius:this.props.pickingRadius});this._lastPointerDownInfo=i.result[0]||i.emptyInfo}),this.props={...eS,...e},e=this.props,this._needsRedraw="Initial render",this._pickRequest={mode:"hover",x:-1,y:-1,radius:0,event:null},this.cursorState={isHovering:!1,isDragging:!1},e.viewState&&e.initialViewState&&Ee.warn("View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.")(),x2()==="IE"&&Ee.warn("IE 11 is not supported")(),this.viewState=e.initialViewState,e.gl||typeof document<"u"&&(this.canvas=this._createCanvas(e)),this.animationLoop=this._createAnimationLoop(e),this.stats=new Hh({id:"deck.gl"}),this.metrics={fps:0,setPropsTime:0,updateAttributesTime:0,framesRedrawn:0,pickTime:0,pickCount:0,gpuTime:0,gpuTimePerFrame:0,cpuTime:0,cpuTimePerFrame:0,bufferMemory:0,textureMemory:0,renderbufferMemory:0,gpuMemory:0},this._metricsCounter=0,this.setProps(e),e._typedArrayManagerProps&&Uo.setOptions(e._typedArrayManagerProps),this.animationLoop.start()}finalize(){var e,n,r,i,s,o,a;if(this.animationLoop.stop(),this.animationLoop=null,this._lastPointerDownInfo=null,(e=this.layerManager)===null||e===void 0||e.finalize(),this.layerManager=null,(n=this.viewManager)===null||n===void 0||n.finalize(),this.viewManager=null,(r=this.effectManager)===null||r===void 0||r.finalize(),this.effectManager=null,(i=this.deckRenderer)===null||i===void 0||i.finalize(),this.deckRenderer=null,(s=this.deckPicker)===null||s===void 0||s.finalize(),this.deckPicker=null,(o=this.eventManager)===null||o===void 0||o.destroy(),this.eventManager=null,(a=this.tooltip)===null||a===void 0||a.remove(),this.tooltip=null,!this.props.canvas&&!this.props.gl&&this.canvas){var l;(l=this.canvas.parentElement)===null||l===void 0||l.removeChild(this.canvas),this.canvas=null}}setProps(e){this.stats.get("setProps Time").timeStart(),"onLayerHover"in e&&Ee.removed("onLayerHover","onHover")(),"onLayerClick"in e&&Ee.removed("onLayerClick","onClick")(),e.initialViewState&&!Ds(this.props.initialViewState,e.initialViewState)&&(this.viewState=e.initialViewState),Object.assign(this.props,e),this._setCanvasSize(this.props);const n=Object.create(this.props);Object.assign(n,{views:this._getViews(),width:this.width,height:this.height,viewState:this._getViewState()}),this.animationLoop.setProps(n),this.layerManager&&(this.viewManager.setProps(n),this.layerManager.activateViewport(this.getViewports()[0]),this.layerManager.setProps(n),this.effectManager.setProps(n),this.deckRenderer.setProps(n),this.deckPicker.setProps(n)),this.stats.get("setProps Time").timeEnd()}needsRedraw(e={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return"Deck._animate";let n=this._needsRedraw;e.clearRedrawFlags&&(this._needsRedraw=!1);const r=this.viewManager.needsRedraw(e),i=this.layerManager.needsRedraw(e),s=this.effectManager.needsRedraw(e),o=this.deckRenderer.needsRedraw(e);return n=n||r||i||s||o,n}redraw(e){if(!this.layerManager)return;let n=this.needsRedraw({clearRedrawFlags:!0});n=e||n,n&&(this.stats.get("Redraw Count").incrementCount(),this.props._customRender?this.props._customRender(n):this._drawLayers(n))}get isInitialized(){return this.viewManager!==null}getViews(){return pt(this.viewManager),this.viewManager.views}getViewports(e){return pt(this.viewManager),this.viewManager.getViewports(e)}pickObject(e){const n=this._pick("pickObject","pickObject Time",e).result;return n.length?n[0]:null}pickMultipleObjects(e){return e.depth=e.depth||10,this._pick("pickObject","pickMultipleObjects Time",e).result}pickObjects(e){return this._pick("pickObjects","pickObjects Time",e)}_addResources(e,n=!1){for(const r in e)this.layerManager.resourceManager.add({resourceId:r,data:e[r],forceUpdate:n})}_removeResources(e){for(const n of e)this.layerManager.resourceManager.remove(n)}_pick(e,n,r){pt(this.deckPicker);const{stats:i}=this;i.get("Pick Count").incrementCount(),i.get(n).timeStart();const s=this.deckPicker[e]({layers:this.layerManager.getLayers(r),views:this.viewManager.getViews(),viewports:this.getViewports(r),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...r});return i.get(n).timeEnd(),s}_createCanvas(e){let n=e.canvas;return typeof n=="string"&&(n=document.getElementById(n),pt(n)),n||(n=document.createElement("canvas"),n.id=e.id||"deckgl-overlay",(e.parent||document.body).appendChild(n)),Object.assign(n.style,e.style),n}_setCanvasSize(e){if(!this.canvas)return;const{width:n,height:r}=e;if(n||n===0){const s=Number.isFinite(n)?"".concat(n,"px"):n;this.canvas.style.width=s}if(r||r===0){var i;const s=Number.isFinite(r)?"".concat(r,"px"):r;this.canvas.style.position=((i=e.style)===null||i===void 0?void 0:i.position)||"absolute",this.canvas.style.height=s}}_updateCanvasSize(){const{canvas:e}=this;if(!e)return;const n=e.clientWidth||e.width,r=e.clientHeight||e.height;if(n!==this.width||r!==this.height){var i;this.width=n,this.height=r,(i=this.viewManager)===null||i===void 0||i.setProps({width:n,height:r}),this.props.onResize({width:n,height:r})}}_createAnimationLoop(e){const{width:n,height:r,gl:i,glOptions:s,debug:o,onError:a,onBeforeRender:l,onAfterRender:c,useDevicePixels:u}=e;return new CD({width:n,height:r,useDevicePixels:u,autoResizeViewport:!1,gl:i,onCreateContext:f=>z2({...s,...f,canvas:this.canvas,debug:o,onContextLost:()=>this._onContextLost()}),onInitialize:f=>this._setGLContext(f.gl),onRender:this._onRenderFrame.bind(this),onBeforeRender:l,onAfterRender:c,onError:a})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let e=this.props.views||[new Yb({id:"default-view"})];return e=Array.isArray(e)?e:[e],e.length&&this.props.controller&&(e[0].props.controller=this.props.controller),e}_onContextLost(){const{onError:e}=this.props;this.animationLoop&&e&&e(new Error("WebGL context is lost"))}_pickAndCallback(){const{_pickRequest:e}=this;if(e.event){const{result:r,emptyInfo:i}=this._pick("pickObject","pickObject Time",e);this.cursorState.isHovering=r.length>0;let s=i,o=!1;for(const a of r){var n;s=a,o=((n=a.layer)===null||n===void 0?void 0:n.onHover(a,e.event))||o}if(!o&&this.props.onHover&&this.props.onHover(s,e.event),this.props.getTooltip&&this.tooltip){const a=this.props.getTooltip(s);this.tooltip.setTooltip(a,s.x,s.y)}e.event=null}}_updateCursor(){const e=this.props.parent||this.canvas;e&&(e.style.cursor=this.props.getCursor(this.cursorState))}_setGLContext(e){if(this.layerManager)return;this.canvas||(this.canvas=e.canvas,Qm(e,{enable:!0,copyState:!0})),this.tooltip=new xU(this.canvas),Qr(e,{blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthTest:!0,depthFunc:515}),this.props.onWebGLInitialized(e);const n=new Pb;n.play(),this.animationLoop.attachTimeline(n),this.eventManager=new i9(this.props.parent||e.canvas,{touchAction:this.props.touchAction,recognizerOptions:this.props.eventRecognizerOptions,events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(const i in E_)this.eventManager.on(i,this._onEvent);this.viewManager=new F7({timeline:n,eventManager:this.eventManager,onViewStateChange:this._onViewStateChange.bind(this),onInteractionStateChange:this._onInteractionStateChange.bind(this),views:this._getViews(),viewState:this._getViewState(),width:this.width,height:this.height});const r=this.viewManager.getViewports()[0];this.layerManager=new Q7(e,{deck:this,stats:this.stats,viewport:r,timeline:n}),this.effectManager=new cU,this.deckRenderer=new AU(e),this.deckPicker=new EU(e),this.setProps(this.props),this._updateCanvasSize(),this.props.onLoad()}_drawLayers(e,n){const{gl:r}=this.layerManager.context;Qr(r,this.props.parameters),this.props.onBeforeRender({gl:r}),this.deckRenderer.renderLayers({target:this.props._framebuffer,layers:this.layerManager.getLayers(),viewports:this.viewManager.getViewports(),onViewportActive:this.layerManager.activateViewport,views:this.viewManager.getViews(),pass:"screen",redrawReason:e,effects:this.effectManager.getEffects(),...n}),this.props.onAfterRender({gl:r})}_onRenderFrame(e){this._getFrameStats(),this._metricsCounter++%60===0&&(this._getMetrics(),this.stats.reset(),Ee.table(4,this.metrics)(),this.props._onMetrics&&this.props._onMetrics(this.metrics)),this._updateCanvasSize(),this._updateCursor(),this.tooltip.isVisible&&this.viewManager.needsRedraw()&&this.tooltip.setTooltip(null),this.layerManager.updateLayers(),this._pickAndCallback(),this.redraw(),this.viewManager&&this.viewManager.updateViewStates()}_onViewStateChange(e){const n=this.props.onViewStateChange(e)||e.viewState;this.viewState&&(this.viewState={...this.viewState,[e.viewId]:n},this.props.viewState||this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(e){this.cursorState.isDragging=e.isDragging||!1,this.props.onInteractionStateChange(e)}_getFrameStats(){const{stats:e}=this;e.get("frameRate").timeEnd(),e.get("frameRate").timeStart();const n=this.animationLoop.stats;e.get("GPU Time").addTime(n.get("GPU Time").lastTiming),e.get("CPU Time").addTime(n.get("CPU Time").lastTiming)}_getMetrics(){const{metrics:e,stats:n}=this;e.fps=n.get("frameRate").getHz(),e.setPropsTime=n.get("setProps Time").time,e.updateAttributesTime=n.get("Update Attributes").time,e.framesRedrawn=n.get("Redraw Count").count,e.pickTime=n.get("pickObject Time").time+n.get("pickMultipleObjects Time").time+n.get("pickObjects Time").time,e.pickCount=n.get("Pick Count").count,e.gpuTime=n.get("GPU Time").time,e.cpuTime=n.get("CPU Time").time,e.gpuTimePerFrame=n.get("GPU Time").getAverageTime(),e.cpuTimePerFrame=n.get("CPU Time").getAverageTime();const r=cs.get("Memory Usage");e.bufferMemory=r.get("Buffer Memory").count,e.textureMemory=r.get("Texture Memory").count,e.renderbufferMemory=r.get("Renderbuffer Memory").count,e.gpuMemory=r.get("GPU Memory").count}}y(td,"defaultProps",eS);y(td,"VERSION",RO.VERSION);class YA{constructor(e,n){y(this,"opts",void 0),y(this,"source",void 0),this.opts=n,this.source=e}get value(){return this.source.value}getValue(){const e=this.source.getBuffer(),n=this.getAccessor();if(e)return[e,n];const{value:r}=this.source,{size:i}=n;let s=r;if(r&&r.length!==i){s=new Float32Array(i);const o=n.elementOffset||0;for(let a=0;a=s){const o=new Array(i).fill(1/0),a=new Array(i).fill(-1/0);for(let l=0;la[c]&&(a[c]=u)}e=[o,a]}}return this.state.bounds=e,e}setData(e){const{state:n}=this;let r;ArrayBuffer.isView(e)?r={value:e}:e instanceof Le?r={buffer:e}:r=e;const i={...this.settings,...r};if(n.bufferAccessor=i,n.bounds=null,r.constant){let s=r.value;if(s=this._normalizeValue(s,[],0),this.settings.normalized&&(s=this.normalizeConstant(s)),!(!n.constant||!this._areValuesEqual(s,this.value)))return!1;n.externalBuffer=null,n.constant=!0,this.value=s}else if(r.buffer){const s=r.buffer;n.externalBuffer=s,n.constant=!1,this.value=r.value||null;const o=r.value instanceof Float64Array;i.type=r.type||s.accessor.type,i.bytesPerElement=s.accessor.BYTES_PER_ELEMENT*(o?2:1),i.stride=af(i)}else if(r.value){this._checkExternalBuffer(r);let s=r.value;n.externalBuffer=null,n.constant=!1,this.value=s,i.bytesPerElement=s.BYTES_PER_ELEMENT,i.stride=af(i);const{buffer:o,byteOffset:a}=this;this.doublePrecision&&s instanceof Float64Array&&(s=jA(s,i));const l=s.byteLength+a+i.stride*2;o.byteLength(n+128)/255*2-1);case 5122:return new Float32Array(e).map(n=>(n+32768)/65535*2-1);case 5121:return new Float32Array(e).map(n=>n/255);case 5123:return new Float32Array(e).map(n=>n/65535);default:return e}}_normalizeValue(e,n,r){const{defaultValue:i,size:s}=this.settings;if(Number.isFinite(e))return n[r]=e,n;if(!e)return n[r]=i[0],n;switch(s){case 4:n[r+3]=Number.isFinite(e[3])?e[3]:i[3];case 3:n[r+2]=Number.isFinite(e[2])?e[2]:i[2];case 2:n[r+1]=Number.isFinite(e[1])?e[1]:i[1];case 1:n[r+0]=Number.isFinite(e[0])?e[0]:i[0];break;default:let o=s;for(;--o>=0;)n[r+o]=Number.isFinite(e[o])?e[o]:i[o]}return n}_areValuesEqual(e,n){if(!e||!n)return!1;const{size:r}=this;for(let i=0;i0&&(Y_.length=t.length,r=Y_):r=W_,(e>0||Number.isFinite(n))&&(r=(Array.isArray(r)?r:Array.from(r)).slice(e,n),i.index=e-1),{iterable:r,objectInfo:i}}function nS(t){return t&&t[Symbol.asyncIterator]}function rS(t,e){const{size:n,stride:r,offset:i,startIndices:s,nested:o}=e,a=t.BYTES_PER_ELEMENT,l=r?r/a:n,c=i?i/a:0,u=Math.floor((t.length-c)/l);return(f,{index:h,target:d})=>{if(!s){const m=h*l+c;for(let v=0;v=e[1]))return t;const n=[],r=t.length;let i=0;for(let s=0;se[1]?n.push(o):e=[Math.min(o[0],e[0]),Math.max(o[1],e[1])]}return n.splice(i,0,e),n}function $A(t){const{source:e,target:n,start:r=0,size:i,getData:s}=t,o=t.end||n.length,a=e.length,l=o-r;if(a>l){n.set(e.subarray(0,l),r);return}if(n.set(e,r),!s)return;let c=a;for(;cr(u+a,f)),c=Math.min(i.length,s.length);for(let u=1;ut},spring:{stiffness:.05,damping:.5}};function iS(t,e){if(!t)return null;Number.isFinite(t)&&(t={type:"interpolation",duration:t});const n=t.type||"interpolation";return{...h9[n],...e,...t,type:n}}function sS(t,e){const n=e.getBuffer();return n?[n,{divisor:0,size:e.size,normalized:e.settings.normalized}]:e.value}function oS(t){switch(t){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4";default:throw new Error('No defined attribute type for size "'.concat(t,'"'))}}function aS(t){t.push(t.shift())}function tv(t,e){const{doublePrecision:n,settings:r,value:i,size:s}=t,o=n&&i instanceof Float64Array?2:1;return(r.noAlloc?i.length:e*s)*o}function lS({buffer:t,numInstances:e,attribute:n,fromLength:r,fromStartIndices:i,getData:s=o=>o}){const o=n.doublePrecision&&n.value instanceof Float64Array?2:1,a=n.size*o,l=n.byteOffset,c=n.startIndices,u=i&&c,f=tv(n,e),h=n.isConstant;if(!u&&r>=f)return;const d=h?n.value:n.getBuffer().getData({srcByteOffset:l});if(n.settings.normalized&&!h){const m=s;s=(v,E)=>n.normalizeConstant(m(v,E))}const A=h?(m,v)=>s(d,v):(m,v)=>s(d.subarray(m,m+a),v),p=t.getData({length:r}),g=new Float32Array(f);f9({source:p,target:g,sourceStartIndices:i,targetStartIndices:c,size:a,getData:A}),t.byteLengthe[s])]:e[n];return iS(i,r)}setNeedsUpdate(e=this.id,n){if(this.state.needsUpdate=this.state.needsUpdate||e,this.setNeedsRedraw(e),n){const{startRow:r=0,endRow:i=1/0}=n;this.state.updateRanges=u9(this.state.updateRanges,[r,i])}else this.state.updateRanges=lf}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=c9}setNeedsRedraw(e=this.id){this.state.needsRedraw=this.state.needsRedraw||e}allocate(e){const{state:n,settings:r}=this;return r.noAlloc?!1:r.update?(super.allocate(e,n.updateRanges!==lf),!0):!1}updateBuffer({numInstances:e,data:n,props:r,context:i}){if(!this.needsUpdate())return!1;const{state:{updateRanges:s},settings:{update:o,noAlloc:a}}=this;let l=!0;if(o){for(const[c,u]of s)o.call(i,this,{data:n,startRow:c,endRow:u,props:r,numInstances:e});if(this.value)if(this.constant||this.buffer.byteLengthu?c.set(E,p):(e._normalizeValue(E,m.target,0),L7({target:c,source:m.target,start:p,count:_}));p+=_*u}else e._normalizeValue(E,c,p),p+=u}}_validateAttributeUpdaters(){const{settings:e}=this;if(!(e.noAlloc||typeof e.update=="function"))throw new Error("Attribute ".concat(this.id," missing update or accessor"))}_checkAttributeArray(){const{value:e}=this,n=Math.min(4,this.size);if(e&&e.length>=n){let r=!0;switch(n){case 4:r=r&&Number.isFinite(e[3]);case 3:r=r&&Number.isFinite(e[2]);case 2:r=r&&Number.isFinite(e[1]);case 1:r=r&&Number.isFinite(e[0]);break;default:r=!1}if(!r)throw new Error("Illegal attribute generated for ".concat(this.id))}}}class d9{constructor({gl:e,attribute:n,timeline:r}){y(this,"gl",void 0),y(this,"type","interpolation"),y(this,"attributeInTransition",void 0),y(this,"settings",void 0),y(this,"attribute",void 0),y(this,"transition",void 0),y(this,"currentStartIndices",void 0),y(this,"currentLength",void 0),y(this,"transform",void 0),y(this,"buffers",void 0),this.gl=e,this.transition=new Ic(r),this.attribute=n,this.attributeInTransition=new nv(e,n.settings),this.currentStartIndices=n.startIndices,this.currentLength=0,this.transform=g9(e,n);const i={byteLength:0,usage:35050};this.buffers=[new Le(e,i),new Le(e,i)]}get inProgress(){return this.transition.inProgress}start(e,n){if(e.duration<=0){this.transition.cancel();return}this.settings=e;const{gl:r,buffers:i,attribute:s}=this;aS(i);const o={numInstances:n,attribute:s,fromLength:this.currentLength,fromStartIndices:this.currentStartIndices,getData:e.enter};for(const a of i)lS({buffer:a,...o});this.currentStartIndices=s.startIndices,this.currentLength=tv(s,n),this.attributeInTransition.setData({buffer:i[1],value:s.value}),this.transition.start(e),this.transform.update({elementCount:Math.floor(this.currentLength/s.size),sourceBuffers:{aFrom:i[0],aTo:sS(r,s)},feedbackBuffers:{vCurrent:i[1]}})}update(){const e=this.transition.update();if(e){const{duration:n,easing:r}=this.settings,{time:i}=this.transition;let s=i/n;r&&(s=r(s)),this.transform.run({uniforms:{time:s}})}return e}cancel(){this.transition.cancel(),this.transform.delete();for(const e of this.buffers)e.delete();this.buffers.length=0}}const A9=` +#define SHADER_NAME interpolation-transition-vertex-shader + +uniform float time; +attribute ATTRIBUTE_TYPE aFrom; +attribute ATTRIBUTE_TYPE aTo; +varying ATTRIBUTE_TYPE vCurrent; + +void main(void) { + vCurrent = mix(aFrom, aTo, time); + gl_Position = vec4(0.0); +} +`;function g9(t,e){const n=oS(e.size);return new qm(t,{vs:A9,defines:{ATTRIBUTE_TYPE:n},varyings:["vCurrent"]})}class p9{constructor({gl:e,attribute:n,timeline:r}){y(this,"gl",void 0),y(this,"type","spring"),y(this,"attributeInTransition",void 0),y(this,"settings",void 0),y(this,"attribute",void 0),y(this,"transition",void 0),y(this,"currentStartIndices",void 0),y(this,"currentLength",void 0),y(this,"texture",void 0),y(this,"framebuffer",void 0),y(this,"transform",void 0),y(this,"buffers",void 0),this.gl=e,this.type="spring",this.transition=new Ic(r),this.attribute=n,this.attributeInTransition=new nv(e,{...n.settings,normalized:!1}),this.currentStartIndices=n.startIndices,this.currentLength=0,this.texture=v9(e),this.framebuffer=y9(e,this.texture),this.transform=m9(e,n,this.framebuffer);const i={byteLength:0,usage:35050};this.buffers=[new Le(e,i),new Le(e,i),new Le(e,i)]}get inProgress(){return this.transition.inProgress}start(e,n){const{gl:r,buffers:i,attribute:s}=this,o={numInstances:n,attribute:s,fromLength:this.currentLength,fromStartIndices:this.currentStartIndices,getData:e.enter};for(const a of i)lS({buffer:a,...o});this.settings=e,this.currentStartIndices=s.startIndices,this.currentLength=tv(s,n),this.attributeInTransition.setData({buffer:i[1],value:s.value}),this.transition.start({...e,duration:1/0}),this.transform.update({elementCount:Math.floor(this.currentLength/s.size),sourceBuffers:{aTo:sS(r,s)}})}update(){const{buffers:e,transform:n,framebuffer:r,transition:i}=this;if(!i.update())return!1;const o=this.settings;return n.update({sourceBuffers:{aPrev:e[0],aCur:e[1]},feedbackBuffers:{vNext:e[2]}}),n.run({framebuffer:r,discard:!1,clearRenderTarget:!0,uniforms:{stiffness:o.stiffness,damping:o.damping},parameters:{depthTest:!1,blend:!0,viewport:[0,0,1,1],blendFunc:[1,1],blendEquation:[32776,32776]}}),aS(e),this.attributeInTransition.setData({buffer:e[1],value:this.attribute.value}),Kh(r)[0]>0||i.end(),!0}cancel(){this.transition.cancel(),this.transform.delete();for(const e of this.buffers)e.delete();this.buffers.length=0,this.texture.delete(),this.framebuffer.delete()}}function m9(t,e,n){const r=oS(e.size);return new qm(t,{framebuffer:n,vs:` +#define SHADER_NAME spring-transition-vertex-shader + +#define EPSILON 0.00001 + +uniform float stiffness; +uniform float damping; +attribute ATTRIBUTE_TYPE aPrev; +attribute ATTRIBUTE_TYPE aCur; +attribute ATTRIBUTE_TYPE aTo; +varying ATTRIBUTE_TYPE vNext; +varying float vIsTransitioningFlag; + +ATTRIBUTE_TYPE getNextValue(ATTRIBUTE_TYPE cur, ATTRIBUTE_TYPE prev, ATTRIBUTE_TYPE dest) { + ATTRIBUTE_TYPE velocity = cur - prev; + ATTRIBUTE_TYPE delta = dest - cur; + ATTRIBUTE_TYPE spring = delta * stiffness; + ATTRIBUTE_TYPE damper = velocity * -1.0 * damping; + return spring + damper + velocity + cur; +} + +void main(void) { + bool isTransitioning = length(aCur - aPrev) > EPSILON || length(aTo - aCur) > EPSILON; + vIsTransitioningFlag = isTransitioning ? 1.0 : 0.0; + + vNext = getNextValue(aCur, aPrev, aTo); + gl_Position = vec4(0, 0, 0, 1); + gl_PointSize = 100.0; +} +`,fs:` +#define SHADER_NAME spring-transition-is-transitioning-fragment-shader + +varying float vIsTransitioningFlag; + +void main(void) { + if (vIsTransitioningFlag == 0.0) { + discard; + } + gl_FragColor = vec4(1.0); +}`,defines:{ATTRIBUTE_TYPE:r},varyings:["vNext"]})}function v9(t){return new Ut(t,{data:new Uint8Array(4),format:6408,type:5121,border:0,mipmaps:!1,dataFormat:6408,width:1,height:1})}function y9(t,e){return new ct(t,{id:"spring-transition-is-transitioning-framebuffer",width:1,height:1,attachments:{36064:e}})}const E9={interpolation:d9,spring:p9};class _9{constructor(e,{id:n,timeline:r}){y(this,"id",void 0),y(this,"isSupported",void 0),y(this,"gl",void 0),y(this,"timeline",void 0),y(this,"transitions",void 0),y(this,"needsRedraw",void 0),y(this,"numInstances",void 0),this.id=n,this.gl=e,this.timeline=r,this.transitions={},this.needsRedraw=!1,this.numInstances=1,this.isSupported=qm.isSupported(e)}finalize(){for(const e in this.transitions)this._removeTransition(e)}update({attributes:e,transitions:n,numInstances:r}){this.numInstances=r||1;for(const i in e){const s=e[i],o=s.getTransitionSetting(n);o&&this._updateAttribute(i,s,o)}for(const i in this.transitions){const s=e[i];(!s||!s.getTransitionSetting(n))&&this._removeTransition(i)}}hasAttribute(e){const n=this.transitions[e];return n&&n.inProgress}getAttributes(){const e={};for(const n in this.transitions){const r=this.transitions[n];r.inProgress&&(e[n]=r.attributeInTransition)}return e}run(){if(!this.isSupported||this.numInstances===0)return!1;for(const n in this.transitions)this.transitions[n].update()&&(this.needsRedraw=!0);const e=this.needsRedraw;return this.needsRedraw=!1,e}_removeTransition(e){this.transitions[e].cancel(),delete this.transitions[e]}_updateAttribute(e,n,r){const i=this.transitions[e];let s=!i||i.type!==r.type;if(s){if(!this.isSupported){Ee.warn("WebGL2 not supported by this browser. Transition for ".concat(e," is disabled."))();return}i&&this._removeTransition(e);const o=E9[r.type];o?this.transitions[e]=new o({attribute:n,timeline:this.timeline,gl:this.gl}):(Ee.error("unsupported transition type '".concat(r.type,"'"))(),s=!1)}(s||n.needsRedraw())&&(this.needsRedraw=!0,this.transitions[e].start(r,this.numInstances))}}const $_="attributeManager.invalidate",x9="attributeManager.updateStart",C9="attributeManager.updateEnd",I9="attribute.updateStart",w9="attribute.allocate",b9="attribute.updateEnd";class S9{constructor(e,{id:n="attribute-manager",stats:r,timeline:i}={}){y(this,"id",void 0),y(this,"gl",void 0),y(this,"attributes",void 0),y(this,"updateTriggers",void 0),y(this,"needsRedraw",void 0),y(this,"userData",void 0),y(this,"stats",void 0),y(this,"attributeTransitionManager",void 0),this.id=n,this.gl=e,this.attributes={},this.updateTriggers={},this.needsRedraw=!0,this.userData={},this.stats=r,this.attributeTransitionManager=new _9(e,{id:"".concat(n,"-transitions"),timeline:i}),Object.seal(this)}finalize(){for(const e in this.attributes)this.attributes[e].delete();this.attributeTransitionManager.finalize()}getNeedsRedraw(e={clearRedrawFlags:!1}){const n=this.needsRedraw;return this.needsRedraw=this.needsRedraw&&!e.clearRedrawFlags,n&&this.id}setNeedsRedraw(){this.needsRedraw=!0}add(e){this._add(e)}addInstanced(e){this._add(e,{instanced:1})}remove(e){for(const n of e)this.attributes[n]!==void 0&&(this.attributes[n].delete(),delete this.attributes[n])}invalidate(e,n){const r=this._invalidateTrigger(e,n);Nt($_,this,e,r)}invalidateAll(e){for(const n in this.attributes)this.attributes[n].setNeedsUpdate(n,e);Nt($_,this,"all")}update({data:e,numInstances:n,startIndices:r=null,transitions:i,props:s={},buffers:o={},context:a={}}){let l=!1;Nt(x9,this),this.stats&&this.stats.get("Update Attributes").timeStart();for(const c in this.attributes){const u=this.attributes[c],f=u.settings.accessor;u.startIndices=r,u.numInstances=n,s[c]&&Ee.removed("props.".concat(c),"data.attributes.".concat(c))(),u.setExternalBuffer(o[c])||u.setBinaryValue(typeof f=="string"?o[f]:void 0,e.startIndices)||typeof f=="string"&&!o[f]&&u.setConstantValue(s[f])||u.needsUpdate()&&(l=!0,this._updateAttribute({attribute:u,numInstances:n,data:e,props:s,context:a})),this.needsRedraw=this.needsRedraw||u.needsRedraw()}l&&Nt(C9,this,n),this.stats&&this.stats.get("Update Attributes").timeEnd(),this.attributeTransitionManager.update({attributes:this.attributes,numInstances:n,transitions:i})}updateTransition(){const{attributeTransitionManager:e}=this,n=e.run();return this.needsRedraw=this.needsRedraw||n,n}getAttributes(){return this.attributes}getChangedAttributes(e={clearChangedFlags:!1}){const{attributes:n,attributeTransitionManager:r}=this,i={...r.getAttributes()};for(const s in n){const o=n[s];o.needsRedraw(e)&&!r.hasAttribute(s)&&(i[s]=o)}return i}getShaderAttributes(e,n={}){e||(e=this.getAttributes());const r={};for(const i in e)n[i]||Object.assign(r,e[i].getShaderAttributes());return r}_add(e,n={}){for(const r in e){const i=e[r];this.attributes[r]=this._createAttribute(r,i,n)}this._mapUpdateTriggersToAttributes()}_createAttribute(e,n,r){const i={...n,id:e,size:n.isIndexed&&1||n.size||1,divisor:r.instanced?1:n.divisor||0};return new nv(this.gl,i)}_mapUpdateTriggersToAttributes(){const e={};for(const n in this.attributes)this.attributes[n].getUpdateTriggers().forEach(i=>{e[i]||(e[i]=[]),e[i].push(n)});this.updateTriggers=e}_invalidateTrigger(e,n){const{attributes:r,updateTriggers:i}=this,s=i[e];return s&&s.forEach(o=>{const a=r[o];a&&a.setNeedsUpdate(a.id,n)}),s}_updateAttribute(e){const{attribute:n,numInstances:r}=e;if(Nt(I9,n),n.constant){n.setConstantValue(n.value);return}n.allocate(r)&&Nt(w9,n,r),n.updateBuffer(e)&&(this.needsRedraw=!0,Nt(b9,n,r))}}class T9 extends Ic{get value(){return this._value}_onUpdate(){const{time:e,settings:{fromValue:n,toValue:r,duration:i,easing:s}}=this,o=s(e/i);this._value=gs(n,r,o)}}const K_=1e-5;function q_(t,e,n,r,i){const s=e-t,a=(n-e)*i,l=-s*r;return a+l+s+e}function B9(t,e,n,r,i){if(Array.isArray(n)){const s=[];for(let o=0;o0}add(e,n,r,i){const{transitions:s}=this;if(s.has(e)){const l=s.get(e),{value:c=l.settings.fromValue}=l;n=c,this.remove(e)}if(i=iS(i),!i)return;const o=P9[i.type];if(!o){Ee.error("unsupported transition type '".concat(i.type,"'"))();return}const a=new o(this.timeline);a.start({...i,fromValue:n,toValue:r}),s.set(e,a)}remove(e){const{transitions:n}=this;n.has(e)&&(n.get(e).cancel(),n.delete(e))}update(){const e={};for(const[n,r]of this.transitions)r.update(),e[n]=r.value,r.inProgress||this.remove(n);return e}clear(){for(const e of this.transitions.keys())this.remove(e)}}function L9(t){const e=rv(t);for(const n in e){const r=e[n],{validate:i}=r;if(i&&!i(t[n],r))throw new Error("Invalid prop ".concat(n,": ").concat(t[n]))}}function N9(t,e){const n=cS({newProps:t,oldProps:e,propTypes:rv(t),ignoreProps:{data:null,updateTriggers:null,extensions:null,transitions:null}}),r=D9(t,e);let i=!1;return r||(i=k9(t,e)),{dataChanged:r,propsChanged:n,updateTriggersChanged:i,extensionsChanged:Q9(t,e),transitionsChanged:O9(t,e)}}function O9(t,e){if(!t.transitions)return!1;const n={},r=rv(t);let i=!1;for(const s in t.transitions){const o=r[s],a=o&&o.type;(a==="number"||a==="color"||a==="array")&&Vp(t[s],e[s],o)&&(n[s]=!0,i=!0)}return i?n:!1}function cS({newProps:t,oldProps:e,ignoreProps:n={},propTypes:r={},triggerName:i="props"}){if(e===t)return!1;if(typeof t!="object"||t===null||typeof e!="object"||e===null)return"".concat(i," changed shallowly");for(const s of Object.keys(t))if(!(s in n)){if(!(s in e))return"".concat(i,".").concat(s," added");const o=Vp(t[s],e[s],r[s]);if(o)return"".concat(i,".").concat(s," ").concat(o)}for(const s of Object.keys(e))if(!(s in n)){if(!(s in t))return"".concat(i,".").concat(s," dropped");if(!Object.hasOwnProperty.call(t,s)){const o=Vp(t[s],e[s],r[s]);if(o)return"".concat(i,".").concat(s," ").concat(o)}}return!1}function Vp(t,e,n){let r=n&&n.equal;return r&&!r(t,e,n)||!r&&(r=t&&e&&t.equals,r&&!r.call(t,e))?"changed deeply":!r&&e!==t?"changed shallowly":null}function D9(t,e){if(e===null)return"oldProps is null, initial diff";let n=!1;const{dataComparator:r,_dataDiff:i}=t;return r?r(t.data,e.data)||(n="Data comparator detected a change"):t.data!==e.data&&(n="A new data container was supplied"),n&&i&&(n=i(t.data,e.data)||n),n}function k9(t,e){if(e===null)return{all:!0};if("all"in t.updateTriggers&&J_(t,e,"all"))return{all:!0};const n={};let r=!1;for(const i in t.updateTriggers)i!=="all"&&J_(t,e,i)&&(n[i]=!0,r=!0);return r?n:!1}function Q9(t,e){if(e===null)return!0;const n=e.extensions,{extensions:r}=t;if(r===n)return!1;if(!n||!r||r.length!==n.length)return!0;for(let i=0;ir.name==="project64"))){const r=n.modules.findIndex(i=>i.name==="project32");r>=0&&n.modules.splice(r,1)}if("inject"in e)if(!t.inject)n.inject=e.inject;else{const r={...t.inject};for(const i in e.inject)r[i]=(r[i]||"")+e.inject[i];n.inject=r}return n}const H9={10241:9987,10240:9729,10242:33071,10243:33071},jp={};function W9(t,e){const n=t.context&&t.context.gl;if(!n||!e)return null;if(e instanceof Ut)return e;e.constructor&&e.constructor.name!=="Object"&&(e={data:e});let r=null;e.compressed&&(r={10241:e.data.length>1?9985:9729});const i=new Ut(n,{...e,parameters:{...H9,...r,...t.props.textureParameters}});return jp[i.id]=!0,i}function Y9(t){!t||!(t instanceof Ut)||jp[t.id]&&(t.delete(),delete jp[t.id])}const $9={boolean:{validate(t,e){return!0},equal(t,e,n){return!!t==!!e}},number:{validate(t,e){return Number.isFinite(t)&&(!("max"in e)||t<=e.max)&&(!("min"in e)||t>=e.min)}},color:{validate(t,e){return e.optional&&!t||Vl(t)&&(t.length===3||t.length===4)},equal(t,e,n){return KA(t,e)}},accessor:{validate(t,e){const n=rh(t);return n==="function"||n===rh(e.value)},equal(t,e,n){return typeof e=="function"?!0:KA(t,e)}},array:{validate(t,e){return e.optional&&!t||Vl(t)},equal(t,e,n){return n.compare?KA(t,e):t===e}},object:{equal(t,e,n){return n.compare?Ds(t,e):t===e}},function:{validate(t,e){return e.optional&&!t||typeof t=="function"},equal(t,e,n){return!n.compare||t===e}},data:{transform:(t,e,n)=>{const{dataTransform:r}=n.props;return r&&t?r(t):t}},image:{transform:(t,e,n)=>W9(n,t),release:t=>{Y9(t)}}};function KA(t,e){if(t===e)return!0;if(!Vl(t)||!Vl(e))return!1;const n=t.length;if(n!==e.length)return!1;for(let r=0;r{},this.oldProps=null,this.oldAsyncProps=null}finalize(){for(const e in this.asyncProps){const n=this.asyncProps[e];n&&n.type&&n.type.release&&n.type.release(n.resolvedValue,n.type,this.component)}}getOldProps(){return this.oldAsyncProps||this.oldProps||sG}resetOldProps(){this.oldAsyncProps=null,this.oldProps=this.component.props}hasAsyncProp(e){return e in this.asyncProps}getAsyncProp(e){const n=this.asyncProps[e];return n&&n.resolvedValue}isAsyncPropLoading(e){if(e){const n=this.asyncProps[e];return!!(n&&n.pendingLoadCount>0&&n.pendingLoadCount!==n.resolvedLoadCount)}for(const n in this.asyncProps)if(this.isAsyncPropLoading(n))return!0;return!1}reloadAsyncProp(e,n){this._watchPromise(e,Promise.resolve(n))}setAsyncProps(e){const n=e[hi]||{},r=e[Cs]||e,i=e[So]||{};for(const s in n){const o=n[s];this._createAsyncPropData(s,i[s]),this._updateAsyncProp(s,o),n[s]=this.getAsyncProp(s)}for(const s in r){const o=r[s];this._createAsyncPropData(s,i[s]),this._updateAsyncProp(s,o)}}_fetch(e,n){return null}_onResolve(e,n){}_onError(e,n){}_updateAsyncProp(e,n){if(this._didAsyncInputValueChange(e,n)){if(typeof n=="string"&&(n=this._fetch(e,n)),n instanceof Promise){this._watchPromise(e,n);return}if(nS(n)){this._resolveAsyncIterable(e,n);return}this._setPropValue(e,n)}}_freezeAsyncOldProps(){if(!this.oldAsyncProps&&this.oldProps){this.oldAsyncProps=Object.create(this.oldProps);for(const e in this.asyncProps)Object.defineProperty(this.oldAsyncProps,e,{enumerable:!0,value:this.oldProps[e]})}}_didAsyncInputValueChange(e,n){const r=this.asyncProps[e];return n===r.resolvedValue||n===r.lastValue?!1:(r.lastValue=n,!0)}_setPropValue(e,n){this._freezeAsyncOldProps();const r=this.asyncProps[e];r&&(n=this._postProcessValue(r,n),r.resolvedValue=n,r.pendingLoadCount++,r.resolvedLoadCount=r.pendingLoadCount)}_setAsyncPropValue(e,n,r){const i=this.asyncProps[e];i&&r>=i.resolvedLoadCount&&n!==void 0&&(this._freezeAsyncOldProps(),i.resolvedValue=n,i.resolvedLoadCount=r,this.onAsyncPropUpdated(e,n))}_watchPromise(e,n){const r=this.asyncProps[e];if(r){r.pendingLoadCount++;const i=r.pendingLoadCount;n.then(s=>{s=this._postProcessValue(r,s),this._setAsyncPropValue(e,s,i),this._onResolve(e,s)}).catch(s=>{this._onError(e,s)})}}async _resolveAsyncIterable(e,n){if(e!=="data"){this._setPropValue(e,n);return}const r=this.asyncProps[e];if(!r)return;r.pendingLoadCount++;const i=r.pendingLoadCount;let s=[],o=0;for await(const a of n){const{dataTransform:l}=this.component.props;l?s=l(a,s):s=s.concat(a),Object.defineProperty(s,"__diff",{enumerable:!1,value:[{startRow:o,endRow:s.length}]}),o=s.length,this._setAsyncPropValue(e,s,i)}this._onResolve(e,s)}_postProcessValue(e,n){const r=e.type;return r&&(r.release&&r.release(e.resolvedValue,r,this.component),r.transform)?r.transform(n,r,this.component):n}_createAsyncPropData(e,n){if(!this.asyncProps[e]){const i=this.component&&this.component.constructor._propTypes;this.asyncProps[e]={type:i&&i[e],lastValue:null,resolvedValue:n,pendingLoadCount:0,resolvedLoadCount:0}}}}class aG extends oG{constructor({attributeManager:e,layer:n}){super(n),y(this,"attributeManager",void 0),y(this,"needsRedraw",void 0),y(this,"needsUpdate",void 0),y(this,"subLayers",void 0),y(this,"usesPickingColorCache",void 0),y(this,"changeFlags",void 0),y(this,"viewport",void 0),y(this,"uniformTransitions",void 0),y(this,"propsInTransition",void 0),this.attributeManager=e,this.needsRedraw=!0,this.needsUpdate=!0,this.subLayers=null,this.usesPickingColorCache=!1}get layer(){return this.component}set layer(e){this.component=e}_fetch(e,n){const r=this.component.props.fetch;return r?r(n,{propName:e,layer:this.layer}):super._fetch(e,n)}_onResolve(e,n){const r=this.component.props.onDataLoad;e==="data"&&r&&r(n,{propName:e,layer:this.layer})}_onError(e,n){this.layer.raiseError(n,"loading ".concat(e," of ").concat(this.layer))}}const lG="layer.changeFlag",cG="layer.initialize",uG="layer.update",fG="layer.finalize",hG="layer.matched",Z_=2**24-1,dG=Object.freeze([]),AG=Cc(({oldViewport:t,viewport:e})=>t.equals(e));let er=new Uint8ClampedArray(0);const gG={data:{type:"data",value:dG,async:!0},dataComparator:{type:"function",value:null,compare:!1,optional:!0},_dataDiff:{type:"function",value:t=>t&&t.__diff,compare:!1,optional:!0},dataTransform:{type:"function",value:null,compare:!1,optional:!0},onDataLoad:{type:"function",value:null,compare:!1,optional:!0},onError:{type:"function",value:null,compare:!1,optional:!0},fetch:{type:"function",value:(t,{propName:e,layer:n,loaders:r,loadOptions:i,signal:s})=>{const{resourceManager:o}=n.context;if(i=i||n.getLoadOptions(),r=r||n.props.loaders,s){var a;i={...i,fetch:{...(a=i)===null||a===void 0?void 0:a.fetch,signal:s}}}let l=o.contains(t);return!l&&!i&&(o.add({resourceId:t,data:$f(t,r),persistent:!1}),l=!0),l?o.subscribe({resourceId:t,onChange:c=>{var u;return(u=n.internalState)===null||u===void 0?void 0:u.reloadAsyncProp(e,c)},consumerId:n.id,requestId:e}):$f(t,r,i)},compare:!1},updateTriggers:{},visible:!0,pickable:!1,opacity:{type:"number",min:0,max:1,value:1},operation:xc.DRAW,onHover:{type:"function",value:null,compare:!1,optional:!0},onClick:{type:"function",value:null,compare:!1,optional:!0},onDragStart:{type:"function",value:null,compare:!1,optional:!0},onDrag:{type:"function",value:null,compare:!1,optional:!0},onDragEnd:{type:"function",value:null,compare:!1,optional:!0},coordinateSystem:he.DEFAULT,coordinateOrigin:{type:"array",value:[0,0,0],compare:!0},modelMatrix:{type:"array",value:null,compare:!0,optional:!0},wrapLongitude:!1,positionFormat:"XYZ",colorFormat:"RGBA",parameters:{type:"object",value:{},optional:!0,compare:!0},transitions:null,extensions:[],loaders:{type:"array",value:[],optional:!0,compare:!0},getPolygonOffset:{type:"function",value:({layerIndex:t})=>[0,-t*100],compare:!1},highlightedObjectIndex:null,autoHighlight:!1,highlightColor:{type:"accessor",value:[0,0,128,128]}};class pn extends iv{constructor(...e){super(...e),y(this,"internalState",null),y(this,"lifecycle",eo.NO_STATE),y(this,"context",void 0),y(this,"state",void 0),y(this,"parent",null)}get root(){let e=this;for(;e.parent;)e=e.parent;return e}toString(){const e=this.constructor.layerName||this.constructor.name;return"".concat(e,"({id: '").concat(this.props.id,"'})")}project(e){pt(this.internalState);const n=this.internalState.viewport||this.context.viewport,r=Vb(e,{viewport:n,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem}),[i,s,o]=Fb(r,n.pixelProjectionMatrix);return e.length===2?[i,s]:[i,s,o]}unproject(e){return pt(this.internalState),(this.internalState.viewport||this.context.viewport).unproject(e)}projectPosition(e,n){pt(this.internalState);const r=this.internalState.viewport||this.context.viewport;return M7(e,{viewport:r,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem,...n})}get isComposite(){return!1}setState(e){this.setChangeFlags({stateChanged:!0}),Object.assign(this.state,e),this.setNeedsRedraw()}setNeedsRedraw(){this.internalState&&(this.internalState.needsRedraw=!0)}setNeedsUpdate(){this.internalState&&(this.context.layerManager.setNeedsUpdate(String(this)),this.internalState.needsUpdate=!0)}get isLoaded(){return this.internalState?!this.internalState.isAsyncPropLoading():!1}get wrapLongitude(){return this.props.wrapLongitude}isPickable(){return this.props.pickable&&this.props.visible}getModels(){return this.state&&(this.state.models||this.state.model&&[this.state.model])||[]}setModuleParameters(e){for(const n of this.getModels())n.updateModuleSettings(e)}getAttributeManager(){return this.internalState&&this.internalState.attributeManager}getCurrentLayer(){return this.internalState&&this.internalState.layer}getLoadOptions(){return this.props.loadOptions}use64bitPositions(){const{coordinateSystem:e}=this.props;return e===he.DEFAULT||e===he.LNGLAT||e===he.CARTESIAN}onHover(e,n){return this.props.onHover&&this.props.onHover(e,n)||!1}onClick(e,n){return this.props.onClick&&this.props.onClick(e,n)||!1}nullPickingColor(){return[0,0,0]}encodePickingColor(e,n=[]){return n[0]=e+1&255,n[1]=e+1>>8&255,n[2]=e+1>>8>>8&255,n}decodePickingColor(e){pt(e instanceof Uint8Array);const[n,r,i]=e;return n+r*256+i*65536-1}getNumInstances(){return Number.isFinite(this.props.numInstances)?this.props.numInstances:this.state&&this.state.numInstances!==void 0?this.state.numInstances:G9(this.props.data)}getStartIndices(){return this.props.startIndices?this.props.startIndices:this.state&&this.state.startIndices?this.state.startIndices:null}getBounds(){var e;const n=this.getAttributeManager();if(!n)return null;const{positions:r,instancePositions:i}=n.attributes;return(e=r||i)===null||e===void 0?void 0:e.getBounds()}getShaders(e){for(const n of this.props.extensions)e=j9(e,n.getShaders.call(this,n));return e}shouldUpdateState(e){return e.changeFlags.propsOrDataChanged}updateState(e){const n=this.getAttributeManager(),{dataChanged:r}=e.changeFlags;if(r&&n)if(Array.isArray(r))for(const l of r)n.invalidateAll(l);else n.invalidateAll();const{props:i,oldProps:s}=e,o=Number.isInteger(s.highlightedObjectIndex)||s.pickable,a=Number.isInteger(i.highlightedObjectIndex)||i.pickable;if(o!==a&&n){const{pickingColors:l,instancePickingColors:c}=n.attributes,u=l||c;u&&(a&&u.constant&&(u.constant=!1,n.invalidate(u.id)),!u.value&&!a&&(u.constant=!0,u.value=[0,0,0]))}}finalizeState(e){for(const r of this.getModels())r.delete();const n=this.getAttributeManager();n&&n.finalize(),this.context&&this.context.resourceManager.unsubscribe({consumerId:this.id}),this.internalState&&(this.internalState.uniformTransitions.clear(),this.internalState.finalize())}draw(e){for(const n of this.getModels())n.draw(e)}getPickingInfo({info:e,mode:n,sourceLayer:r}){const{index:i}=e;return i>=0&&Array.isArray(this.props.data)&&(e.object=this.props.data[i]),e}raiseError(e,n){var r,i;if(n&&(e.message="".concat(n,": ").concat(e.message)),!((r=(i=this.props).onError)!==null&&r!==void 0&&r.call(i,e))){var s,o;(s=this.context)===null||s===void 0||(o=s.onError)===null||o===void 0||o.call(s,e,this)}}getNeedsRedraw(e={clearRedrawFlags:!1}){return this._getNeedsRedraw(e)}needsUpdate(){return this.internalState?this.internalState.needsUpdate||this.hasUniformTransition()||this.shouldUpdateState(this._getUpdateParams()):!1}hasUniformTransition(){var e;return((e=this.internalState)===null||e===void 0?void 0:e.uniformTransitions.active)||!1}activateViewport(e){if(!this.internalState)return;const n=this.internalState.viewport;this.internalState.viewport=e,(!n||!AG({oldViewport:n,viewport:e}))&&(this.setChangeFlags({viewportChanged:!0}),this.isComposite?this.needsUpdate()&&this.setNeedsUpdate():this._update())}invalidateAttribute(e="all"){const n=this.getAttributeManager();n&&(e==="all"?n.invalidateAll():n.invalidate(e))}updateAttributes(e){for(const n of this.getModels())this._setModelAttributes(n,e)}_updateAttributes(){const e=this.getAttributeManager();if(!e)return;const n=this.props,r=this.getNumInstances(),i=this.getStartIndices();e.update({data:n.data,numInstances:r,startIndices:i,props:n,transitions:n.transitions,buffers:n.data.attributes,context:this});const s=e.getChangedAttributes({clearChangedFlags:!0});this.updateAttributes(s)}_updateAttributeTransition(){const e=this.getAttributeManager();e&&e.updateTransition()}_updateUniformTransition(){const{uniformTransitions:e}=this.internalState;if(e.active){const n=e.update(),r=Object.create(this.props);for(const i in n)Object.defineProperty(r,i,{value:n[i]});return r}return this.props}calculateInstancePickingColors(e,{numInstances:n}){if(e.constant)return;const r=Math.floor(er.length/3);if(this.internalState.usesPickingColorCache=!0,rZ_&&Ee.warn("Layer has too many data objects. Picking might not be able to distinguish all objects.")(),er=Uo.allocate(er,n,{size:3,copy:!0,maxCount:Math.max(n,Z_)});const i=Math.floor(er.length/3),s=[];for(let o=r;o(Ee.deprecated("layer.state.attributeManager","layer.getAttributeManager()")(),e)}),this.internalState.layer=this,this.internalState.uniformTransitions=new M9(this.context.timeline),this.internalState.onAsyncPropUpdated=this._onAsyncPropUpdated.bind(this),this.internalState.setAsyncProps(this.props),this.initializeState(this.context);for(const n of this.props.extensions)n.initializeState.call(this,this.context,n);this.setChangeFlags({dataChanged:"init",propsChanged:"init",viewportChanged:!0,extensionsChanged:!0}),this._update()}_transferState(e){Nt(hG,this,this===e);const{state:n,internalState:r}=e;this!==e&&(this.internalState=r,this.internalState.layer=this,this.state=n,this.internalState.setAsyncProps(this.props),this._diffProps(this.props,this.internalState.getOldProps()))}_update(){const e=this.needsUpdate();if(Nt(uG,this,e),!e)return;const n=this.props,r=this.context,i=this.internalState,s=r.viewport,o=this._updateUniformTransition();i.propsInTransition=o,r.viewport=i.viewport||s,this.props=o;try{const a=this._getUpdateParams(),l=this.getModels();if(r.gl)this.updateState(a);else try{this.updateState(a)}catch{}for(const u of this.props.extensions)u.updateState.call(this,a,u);const c=this.getModels()[0]!==l[0];this._postUpdate(a,c)}finally{r.viewport=s,this.props=n,this._clearChangeFlags(),i.needsUpdate=!1,i.resetOldProps()}}_finalize(){Nt(fG,this),this.finalizeState(this.context);for(const e of this.props.extensions)e.finalizeState.call(this,e)}_drawLayer({moduleParameters:e=null,uniforms:n={},parameters:r={}}){this._updateAttributeTransition();const i=this.props,s=this.context;this.props=this.internalState.propsInTransition||i;const o=this.props.opacity;n.opacity=Math.pow(o,1/2.2);try{e&&this.setModuleParameters(e);const{getPolygonOffset:a}=this.props,l=a&&a(n)||[0,0];Qr(s.gl,{polygonOffset:l}),Cn(s.gl,r,()=>{const c={moduleParameters:e,uniforms:n,parameters:r,context:s};for(const u of this.props.extensions)u.draw.call(this,c,u);this.draw(c)})}finally{this.props=i}}getChangeFlags(){var e;return(e=this.internalState)===null||e===void 0?void 0:e.changeFlags}setChangeFlags(e){if(!this.internalState)return;const{changeFlags:n}=this.internalState;for(const i in e)if(e[i]){let s=!1;switch(i){case"dataChanged":const o=e[i],a=n[i];o&&Array.isArray(a)&&(n.dataChanged=Array.isArray(o)?a.concat(o):o,s=!0);default:n[i]||(n[i]=e[i],s=!0)}s&&Nt(lG,this,i,e)}const r=!!(n.dataChanged||n.updateTriggersChanged||n.propsChanged||n.extensionsChanged);n.propsOrDataChanged=r,n.somethingChanged=r||n.viewportChanged||n.stateChanged}_clearChangeFlags(){this.internalState.changeFlags={dataChanged:!1,propsChanged:!1,updateTriggersChanged:!1,viewportChanged:!1,stateChanged:!1,extensionsChanged:!1,propsOrDataChanged:!1,somethingChanged:!1}}_diffProps(e,n){const r=N9(e,n);if(r.updateTriggersChanged)for(const s in r.updateTriggersChanged)r.updateTriggersChanged[s]&&this.invalidateAttribute(s);if(r.transitionsChanged)for(const s in r.transitionsChanged){var i;this.internalState.uniformTransitions.add(s,n[s],e[s],(i=e.transitions)===null||i===void 0?void 0:i[s])}return this.setChangeFlags(r)}validateProps(){L9(this.props)}updateAutoHighlight(e){this.props.autoHighlight&&!Number.isInteger(this.props.highlightedObjectIndex)&&this._updateAutoHighlight(e)}_updateAutoHighlight(e){const n={pickingSelectedColor:e.picked?e.color:null},{highlightColor:r}=this.props;e.picked&&typeof r=="function"&&(n.pickingHighlightColor=r(e)),this.setModuleParameters(n),this.setNeedsRedraw()}_getAttributeManager(){const e=this.context;return new S9(e.gl,{id:this.props.id,stats:e.stats,timeline:e.timeline})}_postUpdate(e,n){const{props:r,oldProps:i}=e;this.setNeedsRedraw(),this._updateAttributes();const{model:s}=this.state;s==null||s.setInstanceCount(this.getNumInstances());const{autoHighlight:o,highlightedObjectIndex:a,highlightColor:l}=r;if(n||i.autoHighlight!==o||i.highlightedObjectIndex!==a||i.highlightColor!==l){const c={};o||(c.pickingSelectedColor=null),Array.isArray(l)&&(c.pickingHighlightColor=l),(n||a!==i.highlightedObjectIndex)&&(c.pickingSelectedColor=Number.isFinite(a)&&a>=0?this.encodePickingColor(a):null),this.setModuleParameters(c)}}_getUpdateParams(){return{props:this.props,oldProps:this.internalState.getOldProps(),context:this.context,changeFlags:this.internalState.changeFlags}}_getNeedsRedraw(e){if(!this.internalState)return!1;let n=!1;n=n||this.internalState.needsRedraw&&this.id,this.internalState.needsRedraw=this.internalState.needsRedraw&&!e.clearRedrawFlags;const r=this.getAttributeManager(),i=r?r.getNeedsRedraw(e):!1;return n=n||i,n}_onAsyncPropUpdated(){this._diffProps(this.props,this.internalState.getOldProps()),this.setNeedsUpdate()}}y(pn,"defaultProps",gG);y(pn,"layerName","Layer");const pG="compositeLayer.renderLayers";class Rn extends pn{get isComposite(){return!0}get isLoaded(){return super.isLoaded&&this.getSubLayers().every(e=>e.isLoaded)}getSubLayers(){return this.internalState&&this.internalState.subLayers||[]}initializeState(e){}setState(e){super.setState(e),this.setNeedsUpdate()}getPickingInfo({info:e}){const{object:n}=e;return n&&n.__source&&n.__source.parent&&n.__source.parent.id===this.id&&(e.object=n.__source.object,e.index=n.__source.index),e}filterSubLayer(e){return!0}shouldRenderSubLayer(e,n){return n&&n.length}getSubLayerClass(e,n){const{_subLayerProps:r}=this.props;return r&&r[e]&&r[e].type||n}getSubLayerRow(e,n,r){return e.__source={parent:this,object:n,index:r},e}getSubLayerAccessor(e){if(typeof e=="function"){const n={index:-1,data:this.props.data,target:[]};return(r,i)=>r&&r.__source?(n.index=r.__source.index,e(r.__source.object,n)):e(r,i)}return e}getSubLayerProps(e={}){var n;const{opacity:r,pickable:i,visible:s,parameters:o,getPolygonOffset:a,highlightedObjectIndex:l,autoHighlight:c,highlightColor:u,coordinateSystem:f,coordinateOrigin:h,wrapLongitude:d,positionFormat:A,modelMatrix:p,extensions:g,fetch:m,operation:v,_subLayerProps:E}=this.props,_={id:"",updateTriggers:{},opacity:r,pickable:i,visible:s,parameters:o,getPolygonOffset:a,highlightedObjectIndex:l,autoHighlight:c,highlightColor:u,coordinateSystem:f,coordinateOrigin:h,wrapLongitude:d,positionFormat:A,modelMatrix:p,extensions:g,fetch:m,operation:v},I=E&&e.id&&E[e.id],C=I&&I.updateTriggers,R=e.id||"sublayer";if(I){const P=this.constructor._propTypes,B=e.type?e.type._propTypes:{};for(const N in I){const V=B[N]||P[N];V&&V.type==="accessor"&&(I[N]=this.getSubLayerAccessor(I[N]))}}Object.assign(_,e,I),_.id="".concat(this.props.id,"-").concat(R),_.updateTriggers={all:(n=this.props.updateTriggers)===null||n===void 0?void 0:n.all,...e.updateTriggers,...C};for(const P of g){const B=P.getSubLayerProps.call(this,P);B&&Object.assign(_,B,{updateTriggers:Object.assign(_.updateTriggers,B.updateTriggers)})}return _}_updateAutoHighlight(e){for(const n of this.getSubLayers())n.updateAutoHighlight(e)}_getAttributeManager(){return null}_postUpdate(e,n){let r=this.internalState.subLayers;const i=!r||this.needsUpdate();if(i){const s=this.renderLayers();r=Jh(s,Boolean),this.internalState.subLayers=r}Nt(pG,this,i,r);for(const s of r)s.parent=this}}y(Rn,"layerName","CompositeLayer");const xu=Math.PI/180,ex=180/Math.PI,cf=6370972,fo=256;function mG(){const t=fo/cf,e=Math.PI/180*fo;return{unitsPerMeter:[t,t,t],unitsPerMeter2:[0,0,0],metersPerUnit:[1/t,1/t,1/t],unitsPerDegree:[e,e,t],unitsPerDegree2:[0,0,0],degreesPerUnit:[1/e,1/e,1/t]}}class vG extends Vi{constructor(e={}){const{latitude:n=0,longitude:r=0,zoom:i=0,nearZMultiplier:s=.1,farZMultiplier:o=2,resolution:a=10}=e;let{height:l,altitude:c=1.5}=e;l=l||1,c=Math.max(.75,c);const u=new ze().lookAt({eye:[0,-c,0],up:[0,0,1]}),f=Math.pow(2,i);u.rotateX(n*xu),u.rotateZ(-r*xu),u.scale(f/l);const h=Math.atan(.5/c),d=fo*2*f/l;super({...e,height:l,viewMatrix:u,longitude:r,latitude:n,zoom:i,distanceScales:mG(),fovyRadians:h*2,focalDistance:c,near:s,far:Math.min(2,1/d+1)*c*o}),y(this,"longitude",void 0),y(this,"latitude",void 0),y(this,"resolution",void 0),this.latitude=n,this.longitude=r,this.resolution=a}get projectionMode(){return Vn.GLOBE}getDistanceScales(){return this.distanceScales}getBounds(e={}){const n={targetZ:e.z||0},r=this.unproject([0,this.height/2],n),i=this.unproject([this.width/2,0],n),s=this.unproject([this.width,this.height/2],n),o=this.unproject([this.width/2,this.height],n);return s[0]this.longitude&&(r[0]-=360),[Math.min(r[0],s[0],i[0],o[0]),Math.min(r[1],s[1],i[1],o[1]),Math.max(r[0],s[0],i[0],o[0]),Math.max(r[1],s[1],i[1],o[1])]}unproject(e,{topLeft:n=!0,targetZ:r}={}){const[i,s,o]=e,a=n?s:this.height-s,{pixelUnprojectionMatrix:l}=this;let c;if(Number.isFinite(o))c=qA(l,[i,a,o,1]);else{const d=qA(l,[i,a,-1,1]),A=qA(l,[i,a,1,1]),p=((r||0)/cf+1)*fo,g=QA(_b([],d,A)),m=QA(d),v=QA(A),_=4*((4*m*v-(g-m-v)**2)/16)/g,I=Math.sqrt(m-_),C=Math.sqrt(Math.max(0,p*p-_)),R=(I-C)/Math.sqrt(g);c=Mk([],d,A,R)}const[u,f,h]=this.unprojectPosition(c);return Number.isFinite(o)?[u,f,h]:Number.isFinite(r)?[u,f,r]:[u,f]}projectPosition(e){const[n,r,i=0]=e,s=n*xu,o=r*xu,a=Math.cos(o),l=(i/cf+1)*fo;return[Math.sin(s)*a*l,-Math.cos(s)*a*l,Math.sin(o)*l]}unprojectPosition(e){const[n,r,i]=e,s=xb(e),o=Math.asin(i/s),l=Math.atan2(n,-r)*ex,c=o*ex,u=(s/fo-1)*cf;return[l,c,u]}projectFlat(e){return e}unprojectFlat(e){return e}panByPosition(e,n){const r=this.unproject(n);return{longitude:e[0]-r[0]+this.longitude,latitude:e[1]-r[1]+this.latitude}}}function qA(t,e){const n=Zo([],e,t);return Km(n,n,1/n[3]),n}class ea{constructor(e){y(this,"opts",void 0),e&&(this.opts=e)}equals(e){return this===e?!0:this.constructor===e.constructor&&Ds(this.opts,e.opts)}getShaders(e){return null}getSubLayerProps(e){const{defaultProps:n}=e.constructor,r={updateTriggers:{}};for(const i in n)if(i in this.props){const s=n[i],o=this.props[i];r[i]=o,s&&s.type==="accessor"&&(r.updateTriggers[i]=this.props.updateTriggers[i],typeof o=="function"&&(r[i]=this.getSubLayerAccessor(o)))}return r}initializeState(e,n){}updateState(e,n){}draw(e,n){}finalizeState(e,n){}}y(ea,"defaultProps",{});class hS{constructor(e){y(this,"opts",void 0),y(this,"typedArrayManager",void 0),y(this,"indexStarts",[0]),y(this,"vertexStarts",[0]),y(this,"vertexCount",0),y(this,"instanceCount",0),y(this,"attributes",void 0),y(this,"_attributeDefs",void 0),y(this,"data",void 0),y(this,"getGeometry",void 0),y(this,"geometryBuffer",void 0),y(this,"buffers",void 0),y(this,"positionSize",void 0),y(this,"normalize",void 0);const{attributes:n={}}=e;this.typedArrayManager=Uo,this.attributes={},this._attributeDefs=n,this.opts=e,this.updateGeometry(e)}updateGeometry(e){Object.assign(this.opts,e);const{data:n,buffers:r={},getGeometry:i,geometryBuffer:s,positionFormat:o,dataChanged:a,normalize:l=!0}=this.opts;if(this.data=n,this.getGeometry=i,this.positionSize=s&&s.size||(o==="XY"?2:3),this.buffers=r,this.normalize=l,s&&(pt(n.startIndices),this.getGeometry=this.getGeometryFromBuffer(s),l||(r.positions=s)),this.geometryBuffer=r.positions,Array.isArray(a))for(const c of a)this._rebuildGeometry(c);else this._rebuildGeometry()}updatePartialGeometry({startRow:e,endRow:n}){this._rebuildGeometry({startRow:e,endRow:n})}getGeometryFromBuffer(e){const n=e.value||e;return ArrayBuffer.isView(n)?rS(n,{size:this.positionSize,offset:e.offset,stride:e.stride,startIndices:this.data.startIndices}):null}_allocate(e,n){const{attributes:r,buffers:i,_attributeDefs:s,typedArrayManager:o}=this;for(const a in s)if(a in i)o.release(r[a]),r[a]=null;else{const l=s[a];l.copy=n,r[a]=o.allocate(r[a],e,l)}}_forEachGeometry(e,n,r){const{data:i,getGeometry:s}=this,{iterable:o,objectInfo:a}=bc(i,n,r);for(const l of o){a.index++;const c=s?s(l,a):null;e(c,a.index)}}_rebuildGeometry(e){if(!this.data)return;let{indexStarts:n,vertexStarts:r,instanceCount:i}=this;const{data:s,geometryBuffer:o}=this,{startRow:a=0,endRow:l=1/0}=e||{},c={};if(e||(n=[0],r=[0]),this.normalize||!o)this._forEachGeometry((f,h)=>{const d=f&&this.normalizeGeometry(f);c[h]=d,r[h+1]=r[h]+(d?this.getGeometrySize(d):0)},a,l),i=r[r.length-1];else if(r=s.startIndices,i=r[s.length]||0,ArrayBuffer.isView(o))i=i||o.length/this.positionSize;else if(o instanceof Le){const f=o.accessor.stride||this.positionSize*4;i=i||o.byteLength/f}else if(o.buffer){const f=o.stride||this.positionSize*4;i=i||o.buffer.byteLength/f}else if(o.value){const f=o.value,h=o.stride/f.BYTES_PER_ELEMENT||this.positionSize;i=i||f.length/h}this._allocate(i,!!e),this.indexStarts=n,this.vertexStarts=r,this.instanceCount=i;const u={};this._forEachGeometry((f,h)=>{const d=c[h]||f;u.vertexStart=r[h],u.indexStart=n[h];const A=h0&&A>0&&(a[f++]=u-s,a[f++]=u-s-1,a[f++]=u-1,a[f++]=u-s,a[f++]=u-1,a[f++]=u),u++}}return{vertexCount:o,positions:c,indices:a,texCoords:l}}function xG(t){const e=new Float64Array(12);for(let n=0;n 0.5) { + vTexPos = geometry.worldPosition.xy; + } + + vec4 color = vec4(0.0); + DECKGL_FILTER_COLOR(color, geometry); +} +`,wG=` +vec3 packUVsIntoRGB(vec2 uv) { + // Extract the top 8 bits. We want values to be truncated down so we can add a fraction + vec2 uv8bit = floor(uv * 256.); + + // Calculate the normalized remainders of u and v parts that do not fit into 8 bits + // Scale and clamp to 0-1 range + vec2 uvFraction = fract(uv * 256.); + vec2 uvFraction4bit = floor(uvFraction * 16.); + + // Remainder can be encoded in blue channel, encode as 4 bits for pixel coordinates + float fractions = uvFraction4bit.x + uvFraction4bit.y * 16.; + + return vec3(uv8bit, fractions) / 255.; +} +`,bG=` +#define SHADER_NAME bitmap-layer-fragment-shader + +#ifdef GL_ES +precision highp float; +#endif + +uniform sampler2D bitmapTexture; + +varying vec2 vTexCoord; +varying vec2 vTexPos; + +uniform float desaturate; +uniform vec4 transparentColor; +uniform vec3 tintColor; +uniform float opacity; + +uniform float coordinateConversion; +uniform vec4 bounds; + +/* projection utils */ +const float TILE_SIZE = 512.0; +const float PI = 3.1415926536; +const float WORLD_SCALE = TILE_SIZE / PI / 2.0; + +// from degrees to Web Mercator +vec2 lnglat_to_mercator(vec2 lnglat) { + float x = lnglat.x; + float y = clamp(lnglat.y, -89.9, 89.9); + return vec2( + radians(x) + PI, + PI + log(tan(PI * 0.25 + radians(y) * 0.5)) + ) * WORLD_SCALE; +} + +// from Web Mercator to degrees +vec2 mercator_to_lnglat(vec2 xy) { + xy /= WORLD_SCALE; + return degrees(vec2( + xy.x - PI, + atan(exp(xy.y - PI)) * 2.0 - PI * 0.5 + )); +} +/* End projection utils */ + +// apply desaturation +vec3 color_desaturate(vec3 color) { + float luminance = (color.r + color.g + color.b) * 0.333333333; + return mix(color, vec3(luminance), desaturate); +} + +// apply tint +vec3 color_tint(vec3 color) { + return color * tintColor; +} + +// blend with background color +vec4 apply_opacity(vec3 color, float alpha) { + return mix(transparentColor, vec4(color, 1.0), alpha); +} + +vec2 getUV(vec2 pos) { + return vec2( + (pos.x - bounds[0]) / (bounds[2] - bounds[0]), + (pos.y - bounds[3]) / (bounds[1] - bounds[3]) + ); +} + +`.concat(wG,` + +void main(void) { + vec2 uv = vTexCoord; + if (coordinateConversion < -0.5) { + vec2 lnglat = mercator_to_lnglat(vTexPos); + uv = getUV(lnglat); + } else if (coordinateConversion > 0.5) { + vec2 commonPos = lnglat_to_mercator(vTexPos); + uv = getUV(commonPos); + } + vec4 bitmapColor = texture2D(bitmapTexture, uv); + + gl_FragColor = apply_opacity(color_tint(color_desaturate(bitmapColor.rgb)), bitmapColor.a * opacity); + + geometry.uv = uv; + DECKGL_FILTER_COLOR(gl_FragColor, geometry); + + if (picking_uActive) { + // Since instance information is not used, we can use picking color for pixel index + gl_FragColor.rgb = packUVsIntoRGB(uv); + } +} +`),SG={image:{type:"image",value:null,async:!0},bounds:{type:"array",value:[1,0,0,1],compare:!0},_imageCoordinateSystem:he.DEFAULT,desaturate:{type:"number",min:0,max:1,value:0},transparentColor:{type:"color",value:[0,0,0,0]},tintColor:{type:"color",value:[255,255,255]}};let nd=class extends pn{constructor(...e){super(...e),y(this,"state",void 0)}getShaders(){return super.getShaders({vs:IG,fs:bG,modules:[Gi,zi]})}initializeState(){const e=this.getAttributeManager();e.remove(["instancePickingColors"]);const n=!0;e.add({indices:{size:1,isIndexed:!0,update:r=>r.value=this.state.mesh.indices,noAlloc:n},positions:{size:3,type:5130,fp64:this.use64bitPositions(),update:r=>r.value=this.state.mesh.positions,noAlloc:n},texCoords:{size:2,update:r=>r.value=this.state.mesh.texCoords,noAlloc:n}})}updateState({props:e,oldProps:n,changeFlags:r}){const i=this.getAttributeManager();if(r.extensionsChanged){var s;const{gl:o}=this.context;(s=this.state.model)===null||s===void 0||s.delete(),this.state.model=this._getModel(o),i.invalidateAll()}if(e.bounds!==n.bounds){const o=this.state.mesh,a=this._createMesh();this.state.model.setVertexCount(a.vertexCount);for(const l in a)o&&o[l]!==a[l]&&i.invalidate(l);this.setState({mesh:a,...this._getCoordinateUniforms()})}else e._imageCoordinateSystem!==n._imageCoordinateSystem&&this.setState(this._getCoordinateUniforms())}getPickingInfo(e){const{image:n}=this.props,r=e.info;if(!r.color||!n)return r.bitmap=null,r;const{width:i,height:s}=n;r.index=0;const o=TG(r.color),a=[Math.floor(o[0]*i),Math.floor(o[1]*s)];return r.bitmap={size:{width:i,height:s},uv:o,pixel:a},r}disablePickingIndex(){this.setState({disablePicking:!0})}restorePickingColors(){this.setState({disablePicking:!1})}_updateAutoHighlight(e){super._updateAutoHighlight({...e,color:this.encodePickingColor(0)})}_createMesh(){const{bounds:e}=this.props;let n=e;return tx(e)&&(n=[[e[0],e[1]],[e[0],e[3]],[e[2],e[3]],[e[2],e[1]]]),_G(n,this.context.viewport.resolution)}_getModel(e){return e?new Tn(e,{...this.getShaders(),id:this.props.id,geometry:new pr({drawMode:4,vertexCount:6}),isInstanced:!1}):null}draw(e){const{uniforms:n,moduleParameters:r}=e,{model:i,coordinateConversion:s,bounds:o,disablePicking:a}=this.state,{image:l,desaturate:c,transparentColor:u,tintColor:f}=this.props;r.pickingActive&&a||l&&i&&i.setUniforms(n).setUniforms({bitmapTexture:l,desaturate:c,transparentColor:u.map(h=>h/255),tintColor:f.slice(0,3).map(h=>h/255),coordinateConversion:s,bounds:o}).draw()}_getCoordinateUniforms(){const{LNGLAT:e,CARTESIAN:n,DEFAULT:r}=he;let{_imageCoordinateSystem:i}=this.props;if(i!==r){const{bounds:s}=this.props;if(!tx(s))throw new Error("_imageCoordinateSystem only supports rectangular bounds");const o=this.context.viewport.resolution?e:n;if(i=i===e?e:n,i===e&&o===n)return{coordinateConversion:-1,bounds:s};if(i===n&&o===e){const a=Li([s[0],s[1]]),l=Li([s[2],s[3]]);return{coordinateConversion:1,bounds:[a[0],a[1],l[0],l[1]]}}}return{coordinateConversion:0,bounds:[0,0,0,0]}}};y(nd,"layerName","BitmapLayer");y(nd,"defaultProps",SG);function TG(t){const[e,n,r]=t,i=(r&240)/256,s=(r&15)/16;return[(e+s)/256,(n+i)/256]}function tx(t){return Number.isFinite(t[0])}const BG=`#define SHADER_NAME icon-layer-vertex-shader + +attribute vec2 positions; + +attribute vec3 instancePositions; +attribute vec3 instancePositions64Low; +attribute float instanceSizes; +attribute float instanceAngles; +attribute vec4 instanceColors; +attribute vec3 instancePickingColors; +attribute vec4 instanceIconFrames; +attribute float instanceColorModes; +attribute vec2 instanceOffsets; +attribute vec2 instancePixelOffset; + +uniform float sizeScale; +uniform vec2 iconsTextureDim; +uniform float sizeMinPixels; +uniform float sizeMaxPixels; +uniform bool billboard; +uniform int sizeUnits; + +varying float vColorMode; +varying vec4 vColor; +varying vec2 vTextureCoords; +varying vec2 uv; + +vec2 rotate_by_angle(vec2 vertex, float angle) { + float angle_radian = angle * PI / 180.0; + float cos_angle = cos(angle_radian); + float sin_angle = sin(angle_radian); + mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle); + return rotationMatrix * vertex; +} + +void main(void) { + geometry.worldPosition = instancePositions; + geometry.uv = positions; + geometry.pickingColor = instancePickingColors; + uv = positions; + + vec2 iconSize = instanceIconFrames.zw; + // convert size in meters to pixels, then scaled and clamp + + // project meters to pixels and clamp to limits + float sizePixels = clamp( + project_size_to_pixel(instanceSizes * sizeScale, sizeUnits), + sizeMinPixels, sizeMaxPixels + ); + + // scale icon height to match instanceSize + float instanceScale = iconSize.y == 0.0 ? 0.0 : sizePixels / iconSize.y; + + // scale and rotate vertex in "pixel" value and convert back to fraction in clipspace + vec2 pixelOffset = positions / 2.0 * iconSize + instanceOffsets; + pixelOffset = rotate_by_angle(pixelOffset, instanceAngles) * instanceScale; + pixelOffset += instancePixelOffset; + pixelOffset.y *= -1.0; + + if (billboard) { + gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position); + vec3 offset = vec3(pixelOffset, 0.0); + DECKGL_FILTER_SIZE(offset, geometry); + gl_Position.xy += project_pixel_size_to_clipspace(offset.xy); + + } else { + vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0); + DECKGL_FILTER_SIZE(offset_common, geometry); + gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position); + } + DECKGL_FILTER_GL_POSITION(gl_Position, geometry); + + vTextureCoords = mix( + instanceIconFrames.xy, + instanceIconFrames.xy + iconSize, + (positions.xy + 1.0) / 2.0 + ) / iconsTextureDim; + + vColor = instanceColors; + DECKGL_FILTER_COLOR(vColor, geometry); + + vColorMode = instanceColorModes; +} +`,RG=`#define SHADER_NAME icon-layer-fragment-shader + +precision highp float; + +uniform float opacity; +uniform sampler2D iconsTexture; +uniform float alphaCutoff; + +varying float vColorMode; +varying vec4 vColor; +varying vec2 vTextureCoords; +varying vec2 uv; + +void main(void) { + geometry.uv = uv; + + vec4 texColor = texture2D(iconsTexture, vTextureCoords); + + // if colorMode == 0, use pixel color from the texture + // if colorMode == 1 or rendering picking buffer, use texture as transparency mask + vec3 color = mix(texColor.rgb, vColor.rgb, vColorMode); + // Take the global opacity and the alpha from vColor into account for the alpha component + float a = texColor.a * opacity * vColor.a; + + if (a < alphaCutoff) { + discard; + } + + gl_FragColor = vec4(color, a); + DECKGL_FILTER_COLOR(gl_FragColor, geometry); +} +`,PG=1024,MG=4,nx=()=>{},rx={10241:9987,10240:9729,10242:33071,10243:33071};function LG(t){return Math.pow(2,Math.ceil(Math.log2(t)))}function NG(t,e,n,r){return n===e.width&&r===e.height?e:(t.canvas.height=r,t.canvas.width=n,t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(e,0,0,e.width,e.height,0,0,n,r),t.canvas)}function jl(t){return t&&(t.id||t.url)}function OG(t,e,n,r){const i=t.width,s=t.height,o=new Ut(t.gl,{width:e,height:n,parameters:r});return q8(t,o,{targetY:0,width:i,height:s}),t.delete(),o}function ix(t,e,n){for(let r=0;ro&&(ix(n,a,i),r=0,i=s+i+e,s=0,a=[]),a.push({icon:c,xOffset:r}),r=r+h+e,s=Math.max(s,f)}}return a.length>0&&ix(n,a,i),{mapping:n,rowHeight:s,xOffset:r,yOffset:i,canvasWidth:o,canvasHeight:LG(s+i+e)}}function kG(t,e,n){if(!t||!e)return null;n=n||{};const r={},{iterable:i,objectInfo:s}=bc(t);for(const o of i){s.index++;const a=e(o,s),l=jl(a);if(!a)throw new Error("Icon is missing.");if(!a.url)throw new Error("Icon url is missing.");!r[l]&&(!n[l]||a.url!==n[l].url)&&(r[l]={...a,source:o,sourceIndex:s.index})}return r}class QG{constructor(e,{onUpdate:n=nx,onError:r=nx}){y(this,"gl",void 0),y(this,"onUpdate",void 0),y(this,"onError",void 0),y(this,"_loadOptions",null),y(this,"_texture",null),y(this,"_externalTexture",null),y(this,"_mapping",{}),y(this,"_textureParameters",null),y(this,"_pendingCount",0),y(this,"_autoPacking",!1),y(this,"_xOffset",0),y(this,"_yOffset",0),y(this,"_rowHeight",0),y(this,"_buffer",MG),y(this,"_canvasWidth",PG),y(this,"_canvasHeight",0),y(this,"_canvas",null),this.gl=e,this.onUpdate=n,this.onError=r}finalize(){var e;(e=this._texture)===null||e===void 0||e.delete()}getTexture(){return this._texture||this._externalTexture}getIconMapping(e){const n=this._autoPacking?jl(e):e;return this._mapping[n]||{}}setProps({loadOptions:e,autoPacking:n,iconAtlas:r,iconMapping:i,textureParameters:s}){if(e&&(this._loadOptions=e),n!==void 0&&(this._autoPacking=n),i&&(this._mapping=i),r){var o;(o=this._texture)===null||o===void 0||o.delete(),this._texture=null,this._externalTexture=r}s&&(this._textureParameters=s)}get isLoaded(){return this._pendingCount===0}packIcons(e,n){if(!this._autoPacking||typeof document>"u")return;const r=Object.values(kG(e,n,this._mapping)||{});if(r.length>0){const{mapping:i,xOffset:s,yOffset:o,rowHeight:a,canvasHeight:l}=DG({icons:r,buffer:this._buffer,canvasWidth:this._canvasWidth,mapping:this._mapping,rowHeight:this._rowHeight,xOffset:this._xOffset,yOffset:this._yOffset});this._rowHeight=a,this._mapping=i,this._xOffset=s,this._yOffset=o,this._canvasHeight=l,this._texture||(this._texture=new Ut(this.gl,{width:this._canvasWidth,height:this._canvasHeight,parameters:this._textureParameters||rx})),this._texture.height!==this._canvasHeight&&(this._texture=OG(this._texture,this._canvasWidth,this._canvasHeight,this._textureParameters||rx)),this.onUpdate(),this._canvas=this._canvas||document.createElement("canvas"),this._loadIcons(r)}}_loadIcons(e){const n=this._canvas.getContext("2d");for(const r of e)this._pendingCount++,$f(r.url,D2,this._loadOptions).then(i=>{const s=jl(r),{x:o,y:a,width:l,height:c}=this._mapping[s],u=NG(n,i,l,c);this._texture.setSubImageData({data:u,x:o,y:a,width:l,height:c}),this._texture.generateMipmap(),this.onUpdate()}).catch(i=>{this.onError({url:r.url,source:r.source,sourceIndex:r.sourceIndex,loadOptions:this._loadOptions,error:i})}).finally(()=>{this._pendingCount--})}}const dS=[0,0,0,255],FG={iconAtlas:{type:"image",value:null,async:!0},iconMapping:{type:"object",value:{},async:!0},sizeScale:{type:"number",value:1,min:0},billboard:!0,sizeUnits:"pixels",sizeMinPixels:{type:"number",min:0,value:0},sizeMaxPixels:{type:"number",min:0,value:Number.MAX_SAFE_INTEGER},alphaCutoff:{type:"number",value:.05,min:0,max:1},getPosition:{type:"accessor",value:t=>t.position},getIcon:{type:"accessor",value:t=>t.icon},getColor:{type:"accessor",value:dS},getSize:{type:"accessor",value:1},getAngle:{type:"accessor",value:0},getPixelOffset:{type:"accessor",value:[0,0]},onIconError:{type:"function",value:null,compare:!1,optional:!0}};class rd extends pn{constructor(...e){super(...e),y(this,"state",void 0)}getShaders(){return super.getShaders({vs:BG,fs:RG,modules:[Gi,zi]})}initializeState(){this.state={iconManager:new QG(this.context.gl,{onUpdate:this._onUpdate.bind(this),onError:this._onError.bind(this)})},this.getAttributeManager().addInstanced({instancePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:"getPosition"},instanceSizes:{size:1,transition:!0,accessor:"getSize",defaultValue:1},instanceOffsets:{size:2,accessor:"getIcon",transform:this.getInstanceOffset},instanceIconFrames:{size:4,accessor:"getIcon",transform:this.getInstanceIconFrame},instanceColorModes:{size:1,type:5121,accessor:"getIcon",transform:this.getInstanceColorMode},instanceColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:"getColor",defaultValue:dS},instanceAngles:{size:1,transition:!0,accessor:"getAngle"},instancePixelOffset:{size:2,transition:!0,accessor:"getPixelOffset"}})}updateState(e){super.updateState(e);const{props:n,oldProps:r,changeFlags:i}=e,s=this.getAttributeManager(),{iconAtlas:o,iconMapping:a,data:l,getIcon:c,textureParameters:u}=n,{iconManager:f}=this.state,h=o||this.internalState.isAsyncPropLoading("iconAtlas");if(f.setProps({loadOptions:n.loadOptions,autoPacking:!h,iconAtlas:o,iconMapping:h?a:null,textureParameters:u}),h?r.iconMapping!==n.iconMapping&&s.invalidate("getIcon"):(i.dataChanged||i.updateTriggersChanged&&(i.updateTriggersChanged.all||i.updateTriggersChanged.getIcon))&&f.packIcons(l,c),i.extensionsChanged){var d;const{gl:A}=this.context;(d=this.state.model)===null||d===void 0||d.delete(),this.state.model=this._getModel(A),s.invalidateAll()}}get isLoaded(){return super.isLoaded&&this.state.iconManager.isLoaded}finalizeState(e){super.finalizeState(e),this.state.iconManager.finalize()}draw({uniforms:e}){const{sizeScale:n,sizeMinPixels:r,sizeMaxPixels:i,sizeUnits:s,billboard:o,alphaCutoff:a}=this.props,{iconManager:l}=this.state,c=l.getTexture();c&&this.state.model.setUniforms(e).setUniforms({iconsTexture:c,iconsTextureDim:[c.width,c.height],sizeUnits:Mi[s],sizeScale:n,sizeMinPixels:r,sizeMaxPixels:i,billboard:o,alphaCutoff:a}).draw()}_getModel(e){const n=[-1,-1,-1,1,1,1,1,-1];return new Tn(e,{...this.getShaders(),id:this.props.id,geometry:new pr({drawMode:6,attributes:{positions:{size:2,value:new Float32Array(n)}}}),isInstanced:!0})}_onUpdate(){this.setNeedsRedraw()}_onError(e){var n;const r=(n=this.getCurrentLayer())===null||n===void 0?void 0:n.props.onIconError;r?r(e):Ee.error(e.error.message)()}getInstanceOffset(e){const{width:n,height:r,anchorX:i=n/2,anchorY:s=r/2}=this.state.iconManager.getIconMapping(e);return[n/2-i,r/2-s]}getInstanceColorMode(e){return this.state.iconManager.getIconMapping(e).mask?1:0}getInstanceIconFrame(e){const{x:n,y:r,width:i,height:s}=this.state.iconManager.getIconMapping(e);return[n,r,i,s]}}y(rd,"defaultProps",FG);y(rd,"layerName","IconLayer");const UG=`#define SHADER_NAME line-layer-vertex-shader + +attribute vec3 positions; +attribute vec3 instanceSourcePositions; +attribute vec3 instanceTargetPositions; +attribute vec3 instanceSourcePositions64Low; +attribute vec3 instanceTargetPositions64Low; +attribute vec4 instanceColors; +attribute vec3 instancePickingColors; +attribute float instanceWidths; + +uniform float opacity; +uniform float widthScale; +uniform float widthMinPixels; +uniform float widthMaxPixels; +uniform float useShortestPath; +uniform int widthUnits; + +varying vec4 vColor; +varying vec2 uv; + +// offset vector by strokeWidth pixels +// offset_direction is -1 (left) or 1 (right) +vec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) { + // normalized direction of the line + vec2 dir_screenspace = normalize(line_clipspace * project_uViewportSize); + // rotate by 90 degrees + dir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x); + + return dir_screenspace * offset_direction * width / 2.0; +} + +vec3 splitLine(vec3 a, vec3 b, float x) { + float t = (x - a.x) / (b.x - a.x); + return vec3(x, mix(a.yz, b.yz, t)); +} + +void main(void) { + geometry.worldPosition = instanceSourcePositions; + geometry.worldPositionAlt = instanceTargetPositions; + + vec3 source_world = instanceSourcePositions; + vec3 target_world = instanceTargetPositions; + vec3 source_world_64low = instanceSourcePositions64Low; + vec3 target_world_64low = instanceTargetPositions64Low; + + if (useShortestPath > 0.5 || useShortestPath < -0.5) { + source_world.x = mod(source_world.x + 180., 360.0) - 180.; + target_world.x = mod(target_world.x + 180., 360.0) - 180.; + float deltaLng = target_world.x - source_world.x; + + if (deltaLng * useShortestPath > 180.) { + source_world.x += 360. * useShortestPath; + source_world = splitLine(source_world, target_world, 180. * useShortestPath); + source_world_64low = vec3(0.0); + } else if (deltaLng * useShortestPath < -180.) { + target_world.x += 360. * useShortestPath; + target_world = splitLine(source_world, target_world, 180. * useShortestPath); + target_world_64low = vec3(0.0); + } else if (useShortestPath < 0.) { + // Line is not split, abort + gl_Position = vec4(0.); + return; + } + } + + // Position + vec4 source_commonspace; + vec4 target_commonspace; + vec4 source = project_position_to_clipspace(source_world, source_world_64low, vec3(0.), source_commonspace); + vec4 target = project_position_to_clipspace(target_world, target_world_64low, vec3(0.), target_commonspace); + + // linear interpolation of source & target to pick right coord + float segmentIndex = positions.x; + vec4 p = mix(source, target, segmentIndex); + geometry.position = mix(source_commonspace, target_commonspace, segmentIndex); + uv = positions.xy; + geometry.uv = uv; + geometry.pickingColor = instancePickingColors; + + // Multiply out width and clamp to limits + float widthPixels = clamp( + project_size_to_pixel(instanceWidths * widthScale, widthUnits), + widthMinPixels, widthMaxPixels + ); + + // extrude + vec3 offset = vec3( + getExtrusionOffset(target.xy - source.xy, positions.y, widthPixels), + 0.0); + DECKGL_FILTER_SIZE(offset, geometry); + gl_Position = p + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0); + DECKGL_FILTER_GL_POSITION(gl_Position, geometry); + + // Color + vColor = vec4(instanceColors.rgb, instanceColors.a * opacity); + DECKGL_FILTER_COLOR(vColor, geometry); +} +`,GG=`#define SHADER_NAME line-layer-fragment-shader + +precision highp float; + +varying vec4 vColor; +varying vec2 uv; + +void main(void) { + geometry.uv = uv; + + gl_FragColor = vColor; + + DECKGL_FILTER_COLOR(gl_FragColor, geometry); +} +`,zG=[0,0,0,255],VG={getSourcePosition:{type:"accessor",value:t=>t.sourcePosition},getTargetPosition:{type:"accessor",value:t=>t.targetPosition},getColor:{type:"accessor",value:zG},getWidth:{type:"accessor",value:1},widthUnits:"pixels",widthScale:{type:"number",value:1,min:0},widthMinPixels:{type:"number",value:0,min:0},widthMaxPixels:{type:"number",value:Number.MAX_SAFE_INTEGER,min:0}};class vl extends pn{getShaders(){return super.getShaders({vs:UG,fs:GG,modules:[Gi,zi]})}get wrapLongitude(){return!1}initializeState(){this.getAttributeManager().addInstanced({instanceSourcePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:"getSourcePosition"},instanceTargetPositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:"getTargetPosition"},instanceColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:!0,accessor:"getColor",defaultValue:[0,0,0,255]},instanceWidths:{size:1,transition:!0,accessor:"getWidth",defaultValue:1}})}updateState(e){if(super.updateState(e),e.changeFlags.extensionsChanged){var n;const{gl:r}=this.context;(n=this.state.model)===null||n===void 0||n.delete(),this.state.model=this._getModel(r),this.getAttributeManager().invalidateAll()}}draw({uniforms:e}){const{widthUnits:n,widthScale:r,widthMinPixels:i,widthMaxPixels:s,wrapLongitude:o}=this.props;this.state.model.setUniforms(e).setUniforms({widthUnits:Mi[n],widthScale:r,widthMinPixels:i,widthMaxPixels:s,useShortestPath:o?1:0}).draw(),o&&this.state.model.setUniforms({useShortestPath:-1}).draw()}_getModel(e){const n=[0,-1,0,0,1,0,1,-1,0,1,1,0];return new Tn(e,{...this.getShaders(),id:this.props.id,geometry:new pr({drawMode:5,attributes:{positions:new Float32Array(n)}}),isInstanced:!0})}}y(vl,"layerName","LineLayer");y(vl,"defaultProps",VG);const jG=`#define SHADER_NAME scatterplot-layer-vertex-shader + +attribute vec3 positions; + +attribute vec3 instancePositions; +attribute vec3 instancePositions64Low; +attribute float instanceRadius; +attribute float instanceLineWidths; +attribute vec4 instanceFillColors; +attribute vec4 instanceLineColors; +attribute vec3 instancePickingColors; + +uniform float opacity; +uniform float radiusScale; +uniform float radiusMinPixels; +uniform float radiusMaxPixels; +uniform float lineWidthScale; +uniform float lineWidthMinPixels; +uniform float lineWidthMaxPixels; +uniform float stroked; +uniform bool filled; +uniform bool antialiasing; +uniform bool billboard; +uniform int radiusUnits; +uniform int lineWidthUnits; + +varying vec4 vFillColor; +varying vec4 vLineColor; +varying vec2 unitPosition; +varying float innerUnitRadius; +varying float outerRadiusPixels; + + +void main(void) { + geometry.worldPosition = instancePositions; + + // Multiply out radius and clamp to limits + outerRadiusPixels = clamp( + project_size_to_pixel(radiusScale * instanceRadius, radiusUnits), + radiusMinPixels, radiusMaxPixels + ); + + // Multiply out line width and clamp to limits + float lineWidthPixels = clamp( + project_size_to_pixel(lineWidthScale * instanceLineWidths, lineWidthUnits), + lineWidthMinPixels, lineWidthMaxPixels + ); + + // outer radius needs to offset by half stroke width + outerRadiusPixels += stroked * lineWidthPixels / 2.0; + + // Expand geometry to accomodate edge smoothing + float edgePadding = antialiasing ? (outerRadiusPixels + SMOOTH_EDGE_RADIUS) / outerRadiusPixels : 1.0; + + // position on the containing square in [-1, 1] space + unitPosition = edgePadding * positions.xy; + geometry.uv = unitPosition; + geometry.pickingColor = instancePickingColors; + + innerUnitRadius = 1.0 - stroked * lineWidthPixels / outerRadiusPixels; + + if (billboard) { + gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position); + vec3 offset = edgePadding * positions * outerRadiusPixels; + DECKGL_FILTER_SIZE(offset, geometry); + gl_Position.xy += project_pixel_size_to_clipspace(offset.xy); + } else { + vec3 offset = edgePadding * positions * project_pixel_size(outerRadiusPixels); + DECKGL_FILTER_SIZE(offset, geometry); + gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position); + } + + DECKGL_FILTER_GL_POSITION(gl_Position, geometry); + + // Apply opacity to instance color, or return instance picking color + vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity); + DECKGL_FILTER_COLOR(vFillColor, geometry); + vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity); + DECKGL_FILTER_COLOR(vLineColor, geometry); +} +`,HG=`#define SHADER_NAME scatterplot-layer-fragment-shader + +precision highp float; + +uniform bool filled; +uniform float stroked; +uniform bool antialiasing; + +varying vec4 vFillColor; +varying vec4 vLineColor; +varying vec2 unitPosition; +varying float innerUnitRadius; +varying float outerRadiusPixels; + +void main(void) { + geometry.uv = unitPosition; + + float distToCenter = length(unitPosition) * outerRadiusPixels; + float inCircle = antialiasing ? + smoothedge(distToCenter, outerRadiusPixels) : + step(distToCenter, outerRadiusPixels); + + if (inCircle == 0.0) { + discard; + } + + if (stroked > 0.5) { + float isLine = antialiasing ? + smoothedge(innerUnitRadius * outerRadiusPixels, distToCenter) : + step(innerUnitRadius * outerRadiusPixels, distToCenter); + + if (filled) { + gl_FragColor = mix(vFillColor, vLineColor, isLine); + } else { + if (isLine == 0.0) { + discard; + } + gl_FragColor = vec4(vLineColor.rgb, vLineColor.a * isLine); + } + } else if (filled) { + gl_FragColor = vFillColor; + } else { + discard; + } + + gl_FragColor.a *= inCircle; + DECKGL_FILTER_COLOR(gl_FragColor, geometry); +} +`,sx=[0,0,0,255],WG={radiusUnits:"meters",radiusScale:{type:"number",min:0,value:1},radiusMinPixels:{type:"number",min:0,value:0},radiusMaxPixels:{type:"number",min:0,value:Number.MAX_SAFE_INTEGER},lineWidthUnits:"meters",lineWidthScale:{type:"number",min:0,value:1},lineWidthMinPixels:{type:"number",min:0,value:0},lineWidthMaxPixels:{type:"number",min:0,value:Number.MAX_SAFE_INTEGER},stroked:!1,filled:!0,billboard:!1,antialiasing:!0,getPosition:{type:"accessor",value:t=>t.position},getRadius:{type:"accessor",value:1},getFillColor:{type:"accessor",value:sx},getLineColor:{type:"accessor",value:sx},getLineWidth:{type:"accessor",value:1},strokeWidth:{deprecatedFor:"getLineWidth"},outline:{deprecatedFor:"stroked"},getColor:{deprecatedFor:["getFillColor","getLineColor"]}};class sv extends pn{getShaders(){return super.getShaders({vs:jG,fs:HG,modules:[Gi,zi]})}initializeState(){this.getAttributeManager().addInstanced({instancePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:"getPosition"},instanceRadius:{size:1,transition:!0,accessor:"getRadius",defaultValue:1},instanceFillColors:{size:this.props.colorFormat.length,transition:!0,normalized:!0,type:5121,accessor:"getFillColor",defaultValue:[0,0,0,255]},instanceLineColors:{size:this.props.colorFormat.length,transition:!0,normalized:!0,type:5121,accessor:"getLineColor",defaultValue:[0,0,0,255]},instanceLineWidths:{size:1,transition:!0,accessor:"getLineWidth",defaultValue:1}})}updateState(e){if(super.updateState(e),e.changeFlags.extensionsChanged){var n;const{gl:r}=this.context;(n=this.state.model)===null||n===void 0||n.delete(),this.state.model=this._getModel(r),this.getAttributeManager().invalidateAll()}}draw({uniforms:e}){const{radiusUnits:n,radiusScale:r,radiusMinPixels:i,radiusMaxPixels:s,stroked:o,filled:a,billboard:l,antialiasing:c,lineWidthUnits:u,lineWidthScale:f,lineWidthMinPixels:h,lineWidthMaxPixels:d}=this.props;this.state.model.setUniforms(e).setUniforms({stroked:o?1:0,filled:a,billboard:l,antialiasing:c,radiusUnits:Mi[n],radiusScale:r,radiusMinPixels:i,radiusMaxPixels:s,lineWidthUnits:Mi[u],lineWidthScale:f,lineWidthMinPixels:h,lineWidthMaxPixels:d}).draw()}_getModel(e){const n=[-1,-1,0,1,-1,0,1,1,0,-1,1,0];return new Tn(e,{...this.getShaders(),id:this.props.id,geometry:new pr({drawMode:6,vertexCount:4,attributes:{positions:{size:3,value:new Float32Array(n)}}}),isInstanced:!0})}}y(sv,"defaultProps",WG);y(sv,"layerName","ScatterplotLayer");const AS={CLOCKWISE:1,COUNTER_CLOCKWISE:-1};function gS(t,e,n={}){return YG(t,n)!==e?(KG(t,n),!0):!1}function YG(t,e={}){return Math.sign($G(t,e))}function $G(t,e={}){const{start:n=0,end:r=t.length}=e,i=e.size||2;let s=0;for(let o=n,a=r-i;o0){let i=!0;for(let s=0;se[2]&&(n|=2),t[1]e[3]&&(n|=8),n}function pS(t,e){const{size:n=2,broken:r=!1,gridResolution:i=10,gridOffset:s=[0,0],startIndex:o=0,endIndex:a=t.length}=e||{},l=(a-o)/n;let c=[];const u=[c],f=Hl(t,0,n,o);let h,d;const A=vS(f,i,s,[]),p=[];Hn(c,f);for(let g=1;gn&&(c=[],u.push(c),Hn(c,f)),d=uf(h,A)}Hn(c,h),Hp(f,h)}return r?u:u[0]}const ox=0,qG=1;function Cu(t,e){for(let n=0;n=0?(Hn(c,d)&&f.push(p),_+=A):f.length&&(f[f.length-1]=ox),Hp(g,d),m=A,v=p;return[E?{pos:l,types:e&&u}:null,_?{pos:c,types:e&&f}:null]}function vS(t,e,n,r){const i=Math.floor((t[0]-n[0])/e)*e+n[0],s=Math.floor((t[1]-n[1])/e)*e+n[1];return r[0]=i,r[1]=s,r[2]=i+e,r[3]=s+e,r}function XG(t,e,n){n&8?(t[1]+=e,t[3]+=e):n&4?(t[1]-=e,t[3]-=e):n&2?(t[0]+=e,t[2]+=e):n&1&&(t[0]-=e,t[2]-=e)}function JG(t,e,n,r){let i=1/0,s=-1/0,o=1/0,a=-1/0;for(let l=0;ls?c:s,o=ua?u:a}return r[0][0]=i,r[0][1]=o,r[1][0]=s,r[1][1]=a,r}const ZG=85.051129;function ez(t,e){const{size:n=2,startIndex:r=0,endIndex:i=t.length,normalize:s=!0}=e||{},o=t.slice(r,i);yS(o,n,0,i-r);const a=pS(o,{size:n,broken:!0,gridResolution:360,gridOffset:[-180,-180]});if(s)for(const l of a)ES(l,n);return a}function tz(t,e=null,n){const{size:r=2,normalize:i=!0,edgeTypes:s=!1}=n||{};e=e||[];const o=[],a=[];let l=0,c=0;for(let f=0;f<=e.length;f++){const h=e[f]||t.length,d=c,A=nz(t,r,l,h);for(let p=A;pi&&(i=a,s=o-1)}return s}function rz(t,e,n,r,i=ZG){const s=t[n],o=t[r-e];if(Math.abs(s-o)>180){const a=Hl(t,0,e,n);a[0]+=Math.round((o-s)/360)*360,Hn(t,a),a[1]=Math.sign(a[1])*i,Hn(t,a),a[0]=s,Hn(t,a)}}function yS(t,e,n,r){let i=t[0],s;for(let o=n;o180||a<-180)&&(s-=Math.round(a/360)*360),t[o]=i=s}}function ES(t,e){let n;const r=t.length/e;for(let s=0;s=e.length&&(n+=1-e.length/i);const s=n*i;return r[0]=e[s],r[1]=e[s+1],r[2]=i===3&&e[s+2]||0,r}isClosed(e){if(!this.normalize)return!!this.opts.loop;const{positionSize:n}=this,r=e.length-n;return e[0]===e[r]&&e[1]===e[r+1]&&(n===2||e[2]===e[r+2])}}function lx(t){return Array.isArray(t[0])}const lz=`#define SHADER_NAME path-layer-vertex-shader + +attribute vec2 positions; + +attribute float instanceTypes; +attribute vec3 instanceStartPositions; +attribute vec3 instanceEndPositions; +attribute vec3 instanceLeftPositions; +attribute vec3 instanceRightPositions; +attribute vec3 instanceLeftPositions64Low; +attribute vec3 instanceStartPositions64Low; +attribute vec3 instanceEndPositions64Low; +attribute vec3 instanceRightPositions64Low; +attribute float instanceStrokeWidths; +attribute vec4 instanceColors; +attribute vec3 instancePickingColors; + +uniform float widthScale; +uniform float widthMinPixels; +uniform float widthMaxPixels; +uniform float jointType; +uniform float capType; +uniform float miterLimit; +uniform bool billboard; +uniform int widthUnits; + +uniform float opacity; + +varying vec4 vColor; +varying vec2 vCornerOffset; +varying float vMiterLength; +varying vec2 vPathPosition; +varying float vPathLength; +varying float vJointType; + +const float EPSILON = 0.001; +const vec3 ZERO_OFFSET = vec3(0.0); + +float flipIfTrue(bool flag) { + return -(float(flag) * 2. - 1.); +} + +// calculate line join positions +vec3 lineJoin( + vec3 prevPoint, vec3 currPoint, vec3 nextPoint, + vec2 width +) { + bool isEnd = positions.x > 0.0; + // side of the segment - -1: left, 0: center, 1: right + float sideOfPath = positions.y; + float isJoint = float(sideOfPath == 0.0); + + vec3 deltaA3 = (currPoint - prevPoint); + vec3 deltaB3 = (nextPoint - currPoint); + + mat3 rotationMatrix; + bool needsRotation = !billboard && project_needs_rotation(currPoint, rotationMatrix); + if (needsRotation) { + deltaA3 = deltaA3 * rotationMatrix; + deltaB3 = deltaB3 * rotationMatrix; + } + vec2 deltaA = deltaA3.xy / width; + vec2 deltaB = deltaB3.xy / width; + + float lenA = length(deltaA); + float lenB = length(deltaB); + + vec2 dirA = lenA > 0. ? normalize(deltaA) : vec2(0.0, 0.0); + vec2 dirB = lenB > 0. ? normalize(deltaB) : vec2(0.0, 0.0); + + vec2 perpA = vec2(-dirA.y, dirA.x); + vec2 perpB = vec2(-dirB.y, dirB.x); + + // tangent of the corner + vec2 tangent = dirA + dirB; + tangent = length(tangent) > 0. ? normalize(tangent) : perpA; + // direction of the corner + vec2 miterVec = vec2(-tangent.y, tangent.x); + // direction of the segment + vec2 dir = isEnd ? dirA : dirB; + // direction of the extrusion + vec2 perp = isEnd ? perpA : perpB; + // length of the segment + float L = isEnd ? lenA : lenB; + + // A = angle of the corner + float sinHalfA = abs(dot(miterVec, perp)); + float cosHalfA = abs(dot(dirA, miterVec)); + + // -1: right, 1: left + float turnDirection = flipIfTrue(dirA.x * dirB.y >= dirA.y * dirB.x); + + // relative position to the corner: + // -1: inside (smaller side of the angle) + // 0: center + // 1: outside (bigger side of the angle) + float cornerPosition = sideOfPath * turnDirection; + + float miterSize = 1.0 / max(sinHalfA, EPSILON); + // trim if inside corner extends further than the line segment + miterSize = mix( + min(miterSize, max(lenA, lenB) / max(cosHalfA, EPSILON)), + miterSize, + step(0.0, cornerPosition) + ); + + vec2 offsetVec = mix(miterVec * miterSize, perp, step(0.5, cornerPosition)) + * (sideOfPath + isJoint * turnDirection); + + // special treatment for start cap and end cap + bool isStartCap = lenA == 0.0 || (!isEnd && (instanceTypes == 1.0 || instanceTypes == 3.0)); + bool isEndCap = lenB == 0.0 || (isEnd && (instanceTypes == 2.0 || instanceTypes == 3.0)); + bool isCap = isStartCap || isEndCap; + + // extend out a triangle to envelope the round cap + if (isCap) { + offsetVec = mix(perp * sideOfPath, dir * capType * 4.0 * flipIfTrue(isStartCap), isJoint); + vJointType = capType; + } else { + vJointType = jointType; + } + + // Generate variables for fragment shader + vPathLength = L; + vCornerOffset = offsetVec; + vMiterLength = dot(vCornerOffset, miterVec * turnDirection); + vMiterLength = isCap ? isJoint : vMiterLength; + + vec2 offsetFromStartOfPath = vCornerOffset + deltaA * float(isEnd); + vPathPosition = vec2( + dot(offsetFromStartOfPath, perp), + dot(offsetFromStartOfPath, dir) + ); + geometry.uv = vPathPosition; + + float isValid = step(instanceTypes, 3.5); + vec3 offset = vec3(offsetVec * width * isValid, 0.0); + + if (needsRotation) { + offset = rotationMatrix * offset; + } + return currPoint + offset; +} + +// In clipspace extrusion, if a line extends behind the camera, clip it to avoid visual artifacts +void clipLine(inout vec4 position, vec4 refPosition) { + if (position.w < EPSILON) { + float r = (EPSILON - refPosition.w) / (position.w - refPosition.w); + position = refPosition + (position - refPosition) * r; + } +} + +void main() { + geometry.pickingColor = instancePickingColors; + + vColor = vec4(instanceColors.rgb, instanceColors.a * opacity); + + float isEnd = positions.x; + + vec3 prevPosition = mix(instanceLeftPositions, instanceStartPositions, isEnd); + vec3 prevPosition64Low = mix(instanceLeftPositions64Low, instanceStartPositions64Low, isEnd); + + vec3 currPosition = mix(instanceStartPositions, instanceEndPositions, isEnd); + vec3 currPosition64Low = mix(instanceStartPositions64Low, instanceEndPositions64Low, isEnd); + + vec3 nextPosition = mix(instanceEndPositions, instanceRightPositions, isEnd); + vec3 nextPosition64Low = mix(instanceEndPositions64Low, instanceRightPositions64Low, isEnd); + + geometry.worldPosition = currPosition; + vec2 widthPixels = vec2(clamp( + project_size_to_pixel(instanceStrokeWidths * widthScale, widthUnits), + widthMinPixels, widthMaxPixels) / 2.0); + vec3 width; + + if (billboard) { + // Extrude in clipspace + vec4 prevPositionScreen = project_position_to_clipspace(prevPosition, prevPosition64Low, ZERO_OFFSET); + vec4 currPositionScreen = project_position_to_clipspace(currPosition, currPosition64Low, ZERO_OFFSET, geometry.position); + vec4 nextPositionScreen = project_position_to_clipspace(nextPosition, nextPosition64Low, ZERO_OFFSET); + + clipLine(prevPositionScreen, currPositionScreen); + clipLine(nextPositionScreen, currPositionScreen); + clipLine(currPositionScreen, mix(nextPositionScreen, prevPositionScreen, isEnd)); + + width = vec3(widthPixels, 0.0); + DECKGL_FILTER_SIZE(width, geometry); + + vec3 pos = lineJoin( + prevPositionScreen.xyz / prevPositionScreen.w, + currPositionScreen.xyz / currPositionScreen.w, + nextPositionScreen.xyz / nextPositionScreen.w, + project_pixel_size_to_clipspace(width.xy) + ); + + gl_Position = vec4(pos * currPositionScreen.w, currPositionScreen.w); + } else { + // Extrude in commonspace + prevPosition = project_position(prevPosition, prevPosition64Low); + currPosition = project_position(currPosition, currPosition64Low); + nextPosition = project_position(nextPosition, nextPosition64Low); + + width = vec3(project_pixel_size(widthPixels), 0.0); + DECKGL_FILTER_SIZE(width, geometry); + + vec4 pos = vec4( + lineJoin(prevPosition, currPosition, nextPosition, width.xy), + 1.0); + geometry.position = pos; + gl_Position = project_common_position_to_clipspace(pos); + } + DECKGL_FILTER_GL_POSITION(gl_Position, geometry); + DECKGL_FILTER_COLOR(vColor, geometry); +} +`,cz=`#define SHADER_NAME path-layer-fragment-shader + +precision highp float; + +uniform float miterLimit; + +varying vec4 vColor; +varying vec2 vCornerOffset; +varying float vMiterLength; +/* + * vPathPosition represents the relative coordinates of the current fragment on the path segment. + * vPathPosition.x - position along the width of the path, between [-1, 1]. 0 is the center line. + * vPathPosition.y - position along the length of the path, between [0, L / width]. + */ +varying vec2 vPathPosition; +varying float vPathLength; +varying float vJointType; + +void main(void) { + geometry.uv = vPathPosition; + + if (vPathPosition.y < 0.0 || vPathPosition.y > vPathLength) { + // if joint is rounded, test distance from the corner + if (vJointType > 0.5 && length(vCornerOffset) > 1.0) { + discard; + } + // trim miter + if (vJointType < 0.5 && vMiterLength > miterLimit + 1.0) { + discard; + } + } + gl_FragColor = vColor; + + DECKGL_FILTER_COLOR(gl_FragColor, geometry); +} +`,_S=[0,0,0,255],uz={widthUnits:"meters",widthScale:{type:"number",min:0,value:1},widthMinPixels:{type:"number",min:0,value:0},widthMaxPixels:{type:"number",min:0,value:Number.MAX_SAFE_INTEGER},jointRounded:!1,capRounded:!1,miterLimit:{type:"number",min:0,value:4},billboard:!1,_pathType:null,getPath:{type:"accessor",value:t=>t.path},getColor:{type:"accessor",value:_S},getWidth:{type:"accessor",value:1},rounded:{deprecatedFor:["jointRounded","capRounded"]}},JA={enter:(t,e)=>e.length?e.subarray(e.length-t.length):t};class id extends pn{constructor(...e){super(...e),y(this,"state",void 0)}getShaders(){return super.getShaders({vs:lz,fs:cz,modules:[Gi,zi]})}get wrapLongitude(){return!1}initializeState(){this.getAttributeManager().addInstanced({positions:{size:3,vertexOffset:1,type:5130,fp64:this.use64bitPositions(),transition:JA,accessor:"getPath",update:this.calculatePositions,noAlloc:!0,shaderAttributes:{instanceLeftPositions:{vertexOffset:0},instanceStartPositions:{vertexOffset:1},instanceEndPositions:{vertexOffset:2},instanceRightPositions:{vertexOffset:3}}},instanceTypes:{size:1,type:5121,update:this.calculateSegmentTypes,noAlloc:!0},instanceStrokeWidths:{size:1,accessor:"getWidth",transition:JA,defaultValue:1},instanceColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,accessor:"getColor",transition:JA,defaultValue:_S},instancePickingColors:{size:3,type:5121,accessor:(r,{index:i,target:s})=>this.encodePickingColor(r&&r.__source?r.__source.index:i,s)}}),this.setState({pathTesselator:new az({fp64:this.use64bitPositions()})})}updateState(e){super.updateState(e);const{props:n,changeFlags:r}=e,i=this.getAttributeManager();if(r.dataChanged||r.updateTriggersChanged&&(r.updateTriggersChanged.all||r.updateTriggersChanged.getPath)){const{pathTesselator:a}=this.state,l=n.data.attributes||{};a.updateGeometry({data:n.data,geometryBuffer:l.getPath,buffers:l,normalize:!n._pathType,loop:n._pathType==="loop",getGeometry:n.getPath,positionFormat:n.positionFormat,wrapLongitude:n.wrapLongitude,resolution:this.context.viewport.resolution,dataChanged:r.dataChanged}),this.setState({numInstances:a.instanceCount,startIndices:a.vertexStarts}),r.dataChanged||i.invalidateAll()}if(r.extensionsChanged){var o;const{gl:a}=this.context;(o=this.state.model)===null||o===void 0||o.delete(),this.state.model=this._getModel(a),i.invalidateAll()}}getPickingInfo(e){const n=super.getPickingInfo(e),{index:r}=n,{data:i}=this.props;return i[0]&&i[0].__source&&(n.object=i.find(s=>s.__source.index===r)),n}disablePickingIndex(e){const{data:n}=this.props;if(n[0]&&n[0].__source)for(let r=0;r80*n){a=c=t[0],l=u=t[1];for(var A=n;Ac&&(c=f),h>u&&(u=h);d=Math.max(c-a,u-l),d=d!==0?32767/d:0}return Wl(s,o,n,a,l,d,0),o}function xS(t,e,n,r,i){var s,o;if(i===Kp(t,e,n,r)>0)for(s=e;s=e;s-=r)o=cx(s,t[s],t[s+1],o);return o&&od(o,o.next)&&($l(o),o=o.next),o}function ws(t,e){if(!t)return t;e||(e=t);var n=t,r;do if(r=!1,!n.steiner&&(od(n,n.next)||Ze(n.prev,n,n.next)===0)){if($l(n),n=e=n.prev,n===n.next)break;r=!0}else n=n.next;while(r||n!==e);return e}function Wl(t,e,n,r,i,s,o){if(t){!o&&s&&Ez(t,r,i,s);for(var a=t,l,c;t.prev!==t.next;){if(l=t.prev,c=t.next,s?hz(t,r,i,s):fz(t)){e.push(l.i/n|0),e.push(t.i/n|0),e.push(c.i/n|0),$l(t),t=c.next,a=c.next;continue}if(t=c,t===a){o?o===1?(t=dz(ws(t),e,n),Wl(t,e,n,r,i,s,2)):o===2&&Az(t,e,n,r,i,s):Wl(ws(t),e,n,r,i,s,1);break}}}}function fz(t){var e=t.prev,n=t,r=t.next;if(Ze(e,n,r)>=0)return!1;for(var i=e.x,s=n.x,o=r.x,a=e.y,l=n.y,c=r.y,u=is?i>o?i:o:s>o?s:o,d=a>l?a>c?a:c:l>c?l:c,A=r.next;A!==e;){if(A.x>=u&&A.x<=h&&A.y>=f&&A.y<=d&&ho(i,a,s,l,o,c,A.x,A.y)&&Ze(A.prev,A,A.next)>=0)return!1;A=A.next}return!0}function hz(t,e,n,r){var i=t.prev,s=t,o=t.next;if(Ze(i,s,o)>=0)return!1;for(var a=i.x,l=s.x,c=o.x,u=i.y,f=s.y,h=o.y,d=al?a>c?a:c:l>c?l:c,g=u>f?u>h?u:h:f>h?f:h,m=Yp(d,A,e,n,r),v=Yp(p,g,e,n,r),E=t.prevZ,_=t.nextZ;E&&E.z>=m&&_&&_.z<=v;){if(E.x>=d&&E.x<=p&&E.y>=A&&E.y<=g&&E!==i&&E!==o&&ho(a,u,l,f,c,h,E.x,E.y)&&Ze(E.prev,E,E.next)>=0||(E=E.prevZ,_.x>=d&&_.x<=p&&_.y>=A&&_.y<=g&&_!==i&&_!==o&&ho(a,u,l,f,c,h,_.x,_.y)&&Ze(_.prev,_,_.next)>=0))return!1;_=_.nextZ}for(;E&&E.z>=m;){if(E.x>=d&&E.x<=p&&E.y>=A&&E.y<=g&&E!==i&&E!==o&&ho(a,u,l,f,c,h,E.x,E.y)&&Ze(E.prev,E,E.next)>=0)return!1;E=E.prevZ}for(;_&&_.z<=v;){if(_.x>=d&&_.x<=p&&_.y>=A&&_.y<=g&&_!==i&&_!==o&&ho(a,u,l,f,c,h,_.x,_.y)&&Ze(_.prev,_,_.next)>=0)return!1;_=_.nextZ}return!0}function dz(t,e,n){var r=t;do{var i=r.prev,s=r.next.next;!od(i,s)&&CS(i,r,r.next,s)&&Yl(i,s)&&Yl(s,i)&&(e.push(i.i/n|0),e.push(r.i/n|0),e.push(s.i/n|0),$l(r),$l(r.next),r=t=s),r=r.next}while(r!==t);return ws(r)}function Az(t,e,n,r,i,s){var o=t;do{for(var a=o.next.next;a!==o.prev;){if(o.i!==a.i&&Cz(o,a)){var l=IS(o,a);o=ws(o,o.next),l=ws(l,l.next),Wl(o,e,n,r,i,s,0),Wl(l,e,n,r,i,s,0);return}a=a.next}o=o.next}while(o!==t)}function gz(t,e,n,r){var i=[],s,o,a,l,c;for(s=0,o=e.length;s=n.next.y&&n.next.y!==n.y){var a=n.x+(i-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(a<=r&&a>s&&(s=a,o=n.x=n.x&&n.x>=c&&r!==n.x&&ho(io.x||n.x===o.x&&yz(o,n)))&&(o=n,f=h)),n=n.next;while(n!==l);return o}function yz(t,e){return Ze(t.prev,t,e.prev)<0&&Ze(e.next,t,t.next)<0}function Ez(t,e,n,r){var i=t;do i.z===0&&(i.z=Yp(i.x,i.y,e,n,r)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,_z(i)}function _z(t){var e,n,r,i,s,o,a,l,c=1;do{for(n=t,t=null,s=null,o=0;n;){for(o++,r=n,a=0,e=0;e0||l>0&&r;)a!==0&&(l===0||!r||n.z<=r.z)?(i=n,n=n.nextZ,a--):(i=r,r=r.nextZ,l--),s?s.nextZ=i:t=i,i.prevZ=s,s=i;n=r}s.nextZ=null,c*=2}while(o>1);return t}function Yp(t,e,n,r,i){return t=(t-n)*i|0,e=(e-r)*i|0,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t|e<<1}function xz(t){var e=t,n=t;do(e.x=(t-o)*(s-a)&&(t-o)*(r-a)>=(n-o)*(e-a)&&(n-o)*(s-a)>=(i-o)*(r-a)}function Cz(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!Iz(t,e)&&(Yl(t,e)&&Yl(e,t)&&wz(t,e)&&(Ze(t.prev,t,e.prev)||Ze(t,e.prev,e))||od(t,e)&&Ze(t.prev,t,t.next)>0&&Ze(e.prev,e,e.next)>0)}function Ze(t,e,n){return(e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function od(t,e){return t.x===e.x&&t.y===e.y}function CS(t,e,n,r){var i=wu(Ze(t,e,n)),s=wu(Ze(t,e,r)),o=wu(Ze(n,r,t)),a=wu(Ze(n,r,e));return!!(i!==s&&o!==a||i===0&&Iu(t,n,e)||s===0&&Iu(t,r,e)||o===0&&Iu(n,t,r)||a===0&&Iu(n,e,r))}function Iu(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)}function wu(t){return t>0?1:t<0?-1:0}function Iz(t,e){var n=t;do{if(n.i!==t.i&&n.next.i!==t.i&&n.i!==e.i&&n.next.i!==e.i&&CS(n,n.next,t,e))return!0;n=n.next}while(n!==t);return!1}function Yl(t,e){return Ze(t.prev,t,t.next)<0?Ze(t,e,t.next)>=0&&Ze(t,t.prev,e)>=0:Ze(t,e,t.prev)<0||Ze(t,t.next,e)<0}function wz(t,e){var n=t,r=!1,i=(t.x+e.x)/2,s=(t.y+e.y)/2;do n.y>s!=n.next.y>s&&n.next.y!==n.y&&i<(n.next.x-n.x)*(s-n.y)/(n.next.y-n.y)+n.x&&(r=!r),n=n.next;while(n!==t);return r}function IS(t,e){var n=new $p(t.i,t.x,t.y),r=new $p(e.i,e.x,e.y),i=t.next,s=e.prev;return t.next=e,e.prev=t,n.next=i,i.prev=n,r.next=n,n.prev=r,s.next=r,r.prev=s,r}function cx(t,e,n,r){var i=new $p(t,e,n);return r?(i.next=r.next,i.prev=r,r.next.prev=i,r.next=i):(i.prev=i,i.next=i),i}function $l(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function $p(t,e,n){this.i=t,this.x=e,this.y=n,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}sd.deviation=function(t,e,n,r){var i=e&&e.length,s=i?e[0]*n:t.length,o=Math.abs(Kp(t,0,s,n));if(i)for(var a=0,l=e.length;a0&&(r+=t[i-1].length,n.holes.push(r))}return n};var bz=ov.exports;const Sz=zo(bz),bu=AS.CLOCKWISE,ux=AS.COUNTER_CLOCKWISE,di={isClosed:!0};function Tz(t){if(t=t&&t.positions||t,!Array.isArray(t)&&!ArrayBuffer.isView(t))throw new Error("invalid polygon")}function qa(t){return"positions"in t?t.positions:t}function ff(t){return"holeIndices"in t?t.holeIndices:null}function Bz(t){return Array.isArray(t[0])}function Rz(t){return t.length>=1&&t[0].length>=2&&Number.isFinite(t[0][0])}function Pz(t){const e=t[0],n=t[t.length-1];return e[0]===n[0]&&e[1]===n[1]&&e[2]===n[2]}function Mz(t,e,n,r){for(let i=0;is/e));let i=qa(t);if(n){const s=i.length;i=i.slice();const o=[];for(let a=0;a2?o[l*s+2]:0;i[a*3]=c,i[a*3+1]=u,i[a*3+2]=f}}_updateVertexValid(e,{vertexStart:n,geometrySize:r}){const{positionSize:i}=this,s=this.attributes.vertexValid,o=e&&ff(e);if(e&&e.edgeTypes?s.set(e.edgeTypes,n):s.fill(1,n,n+r),o)for(let a=0;a0&&!Number.isFinite(t[0])}const bS=` +attribute vec2 vertexPositions; +attribute float vertexValid; + +uniform bool extruded; +uniform bool isWireframe; +uniform float elevationScale; +uniform float opacity; + +varying vec4 vColor; + +struct PolygonProps { + vec4 fillColors; + vec4 lineColors; + vec3 positions; + vec3 nextPositions; + vec3 pickingColors; + vec3 positions64Low; + vec3 nextPositions64Low; + float elevations; +}; + +vec3 project_offset_normal(vec3 vector) { + if (project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT || + project_uCoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSETS) { + // normals generated by the polygon tesselator are in lnglat offsets instead of meters + return normalize(vector * project_uCommonUnitsPerWorldUnit); + } + return project_normal(vector); +} + +void calculatePosition(PolygonProps props) { +#ifdef IS_SIDE_VERTEX + if(vertexValid < 0.5){ + gl_Position = vec4(0.); + return; + } +#endif + + vec3 pos; + vec3 pos64Low; + vec3 normal; + vec4 colors = isWireframe ? props.lineColors : props.fillColors; + + geometry.worldPosition = props.positions; + geometry.worldPositionAlt = props.nextPositions; + geometry.pickingColor = props.pickingColors; + +#ifdef IS_SIDE_VERTEX + pos = mix(props.positions, props.nextPositions, vertexPositions.x); + pos64Low = mix(props.positions64Low, props.nextPositions64Low, vertexPositions.x); +#else + pos = props.positions; + pos64Low = props.positions64Low; +#endif + + if (extruded) { + pos.z += props.elevations * vertexPositions.y * elevationScale; + } + gl_Position = project_position_to_clipspace(pos, pos64Low, vec3(0.), geometry.position); + + DECKGL_FILTER_GL_POSITION(gl_Position, geometry); + + if (extruded) { + #ifdef IS_SIDE_VERTEX + normal = vec3( + props.positions.y - props.nextPositions.y + (props.positions64Low.y - props.nextPositions64Low.y), + props.nextPositions.x - props.positions.x + (props.nextPositions64Low.x - props.positions64Low.x), + 0.0); + normal = project_offset_normal(normal); + #else + normal = project_normal(vec3(0.0, 0.0, 1.0)); + #endif + geometry.normal = normal; + vec3 lightColor = lighting_getLightColor(colors.rgb, project_uCameraPosition, geometry.position.xyz, normal); + vColor = vec4(lightColor, colors.a * opacity); + } else { + vColor = vec4(colors.rgb, colors.a * opacity); + } + DECKGL_FILTER_COLOR(vColor, geometry); +} +`,Oz=`#define SHADER_NAME solid-polygon-layer-vertex-shader + +attribute vec3 positions; +attribute vec3 positions64Low; +attribute float elevations; +attribute vec4 fillColors; +attribute vec4 lineColors; +attribute vec3 pickingColors; + +`.concat(bS,` + +void main(void) { + PolygonProps props; + + props.positions = positions; + props.positions64Low = positions64Low; + props.elevations = elevations; + props.fillColors = fillColors; + props.lineColors = lineColors; + props.pickingColors = pickingColors; + + calculatePosition(props); +} +`),Dz=`#define SHADER_NAME solid-polygon-layer-vertex-shader-side +#define IS_SIDE_VERTEX + + +attribute vec3 instancePositions; +attribute vec3 nextPositions; +attribute vec3 instancePositions64Low; +attribute vec3 nextPositions64Low; +attribute float instanceElevations; +attribute vec4 instanceFillColors; +attribute vec4 instanceLineColors; +attribute vec3 instancePickingColors; + +`.concat(bS,` + +void main(void) { + PolygonProps props; + + #if RING_WINDING_ORDER_CW == 1 + props.positions = instancePositions; + props.positions64Low = instancePositions64Low; + props.nextPositions = nextPositions; + props.nextPositions64Low = nextPositions64Low; + #else + props.positions = nextPositions; + props.positions64Low = nextPositions64Low; + props.nextPositions = instancePositions; + props.nextPositions64Low = instancePositions64Low; + #endif + props.elevations = instanceElevations; + props.fillColors = instanceFillColors; + props.lineColors = instanceLineColors; + props.pickingColors = instancePickingColors; + + calculatePosition(props); +} +`),kz=`#define SHADER_NAME solid-polygon-layer-fragment-shader + +precision highp float; + +varying vec4 vColor; + +void main(void) { + gl_FragColor = vColor; + + DECKGL_FILTER_COLOR(gl_FragColor, geometry); +} +`,sh=[0,0,0,255],Qz={filled:!0,extruded:!1,wireframe:!1,_normalize:!0,_windingOrder:"CW",elevationScale:{type:"number",min:0,value:1},getPolygon:{type:"accessor",value:t=>t.polygon},getElevation:{type:"accessor",value:1e3},getFillColor:{type:"accessor",value:sh},getLineColor:{type:"accessor",value:sh},material:!0},Su={enter:(t,e)=>e.length?e.subarray(e.length-t.length):t};class Sc extends pn{constructor(...e){super(...e),y(this,"state",void 0)}getShaders(e){return super.getShaders({vs:e==="top"?Oz:Dz,fs:kz,defines:{RING_WINDING_ORDER_CW:!this.props._normalize&&this.props._windingOrder==="CCW"?0:1},modules:[Gi,$Q,zi]})}get wrapLongitude(){return!1}initializeState(){const{gl:e,viewport:n}=this.context;let{coordinateSystem:r}=this.props;n.isGeospatial&&r===he.DEFAULT&&(r=he.LNGLAT),this.setState({numInstances:0,polygonTesselator:new Nz({preproject:r===he.LNGLAT&&n.projectFlat.bind(n),fp64:this.use64bitPositions(),IndexType:!e||Gm(e,Ne.ELEMENT_INDEX_UINT32)?Uint32Array:Uint16Array})});const i=this.getAttributeManager(),s=!0;i.remove(["instancePickingColors"]),i.add({indices:{size:1,isIndexed:!0,update:this.calculateIndices,noAlloc:s},positions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:Su,accessor:"getPolygon",update:this.calculatePositions,noAlloc:s,shaderAttributes:{positions:{vertexOffset:0,divisor:0},instancePositions:{vertexOffset:0,divisor:1},nextPositions:{vertexOffset:1,divisor:1}}},vertexValid:{size:1,divisor:1,type:5121,update:this.calculateVertexValid,noAlloc:s},elevations:{size:1,transition:Su,accessor:"getElevation",shaderAttributes:{elevations:{divisor:0},instanceElevations:{divisor:1}}},fillColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:Su,accessor:"getFillColor",defaultValue:sh,shaderAttributes:{fillColors:{divisor:0},instanceFillColors:{divisor:1}}},lineColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:Su,accessor:"getLineColor",defaultValue:sh,shaderAttributes:{lineColors:{divisor:0},instanceLineColors:{divisor:1}}},pickingColors:{size:3,type:5121,accessor:(o,{index:a,target:l})=>this.encodePickingColor(o&&o.__source?o.__source.index:a,l),shaderAttributes:{pickingColors:{divisor:0},instancePickingColors:{divisor:1}}}})}getPickingInfo(e){const n=super.getPickingInfo(e),{index:r}=n,{data:i}=this.props;return i[0]&&i[0].__source&&(n.object=i.find(s=>s.__source.index===r)),n}disablePickingIndex(e){const{data:n}=this.props;if(n[0]&&n[0].__source)for(let r=0;rl.delete()),this.setState(this._getModels(this.context.gl)),s.invalidateAll()}}updateGeometry({props:e,oldProps:n,changeFlags:r}){if(r.dataChanged||r.updateTriggersChanged&&(r.updateTriggersChanged.all||r.updateTriggersChanged.getPolygon)){const{polygonTesselator:s}=this.state,o=e.data.attributes||{};s.updateGeometry({data:e.data,normalize:e._normalize,geometryBuffer:o.getPolygon,buffers:o,getGeometry:e.getPolygon,positionFormat:e.positionFormat,wrapLongitude:e.wrapLongitude,resolution:this.context.viewport.resolution,fp64:this.use64bitPositions(),dataChanged:r.dataChanged}),this.setState({numInstances:s.instanceCount,startIndices:s.vertexStarts}),r.dataChanged||this.getAttributeManager().invalidateAll()}}_getModels(e){const{id:n,filled:r,extruded:i}=this.props;let s,o;if(r){const a=this.getShaders("top");a.defines.NON_INSTANCED_MODEL=1,s=new Tn(e,{...a,id:"".concat(n,"-top"),drawMode:4,attributes:{vertexPositions:new Float32Array([0,1])},uniforms:{isWireframe:!1,isSideVertex:!1},vertexCount:0,isIndexed:!0})}return i&&(o=new Tn(e,{...this.getShaders("side"),id:"".concat(n,"-side"),geometry:new pr({drawMode:1,vertexCount:4,attributes:{vertexPositions:{size:2,value:new Float32Array([1,0,0,0,0,1,1,1])}}}),instanceCount:0,isInstanced:1}),o.userData.excludeAttributes={indices:!0}),{models:[o,s].filter(Boolean),topModel:s,sideModel:o}}calculateIndices(e){const{polygonTesselator:n}=this.state;e.startIndices=n.indexStarts,e.value=n.get("indices")}calculatePositions(e){const{polygonTesselator:n}=this.state;e.startIndices=n.vertexStarts,e.value=n.get("positions")}calculateVertexValid(e){e.value=this.state.polygonTesselator.get("vertexValid")}}y(Sc,"defaultProps",Qz);y(Sc,"layerName","SolidPolygonLayer");function SS({data:t,getIndex:e,dataRange:n,replace:r}){const{startRow:i=0,endRow:s=1/0}=n,o=t.length;let a=o,l=o;for(let h=0;hh&&d>=i&&(a=h),d>=s){l=h;break}}let c=a;const f=l-a!==r.length?t.slice(l):void 0;for(let h=0;ht.polygon},getFillColor:{type:"accessor",value:Fz},getLineColor:{type:"accessor",value:TS},getLineWidth:{type:"accessor",value:1},getElevation:{type:"accessor",value:1e3},material:!0};class oh extends Rn{initializeState(){this.state={paths:[]},this.props.getLineDashArray&&Ee.removed("getLineDashArray","PathStyleExtension")()}updateState({changeFlags:e}){const n=e.dataChanged||e.updateTriggersChanged&&(e.updateTriggersChanged.all||e.updateTriggersChanged.getPolygon);if(n&&Array.isArray(e.dataChanged)){const r=this.state.paths.slice(),i=e.dataChanged.map(s=>SS({data:r,getIndex:o=>o.__source.index,dataRange:s,replace:this._getPaths(s)}));this.setState({paths:r,pathsDiff:i})}else n&&this.setState({paths:this._getPaths(),pathsDiff:null})}_getPaths(e={}){const{data:n,getPolygon:r,positionFormat:i,_normalize:s}=this.props,o=[],a=i==="XY"?2:3,{startRow:l,endRow:c}=e,{iterable:u,objectInfo:f}=bc(n,l,c);for(const h of u){f.index++;let d=r(h,f);s&&(d=wS(d,a));const{holeIndices:A}=d,p=d.positions||d;if(A)for(let g=0;g<=A.length;g++){const m=p.slice(A[g-1]||0,A[g]||p.length);o.push(this.getSubLayerRow({path:m},h,f.index))}else o.push(this.getSubLayerRow({path:p},h,f.index))}return o}renderLayers(){const{data:e,_dataDiff:n,stroked:r,filled:i,extruded:s,wireframe:o,_normalize:a,_windingOrder:l,elevationScale:c,transitions:u,positionFormat:f}=this.props,{lineWidthUnits:h,lineWidthScale:d,lineWidthMinPixels:A,lineWidthMaxPixels:p,lineJointRounded:g,lineMiterLimit:m,lineDashJustified:v}=this.props,{getFillColor:E,getLineColor:_,getLineWidth:I,getLineDashArray:C,getElevation:R,getPolygon:P,updateTriggers:B,material:N}=this.props,{paths:V,pathsDiff:G}=this.state,z=this.getSubLayerClass("fill",Sc),K=this.getSubLayerClass("stroke",id),J=this.shouldRenderSubLayer("fill",V)&&new z({_dataDiff:n,extruded:s,elevationScale:c,filled:i,wireframe:o,_normalize:a,_windingOrder:l,getElevation:R,getFillColor:E,getLineColor:s&&o?_:TS,material:N,transitions:u},this.getSubLayerProps({id:"fill",updateTriggers:B&&{getPolygon:B.getPolygon,getElevation:B.getElevation,getFillColor:B.getFillColor,lineColors:s&&o,getLineColor:B.getLineColor}}),{data:e,positionFormat:f,getPolygon:P}),ae=!s&&r&&this.shouldRenderSubLayer("stroke",V)&&new K({_dataDiff:G&&(()=>G),widthUnits:h,widthScale:d,widthMinPixels:A,widthMaxPixels:p,jointRounded:g,miterLimit:m,dashJustified:v,_pathType:"loop",transitions:u&&{getWidth:u.getLineWidth,getColor:u.getLineColor,getPath:u.getPolygon},getColor:this.getSubLayerAccessor(_),getWidth:this.getSubLayerAccessor(I),getDashArray:this.getSubLayerAccessor(C)},this.getSubLayerProps({id:"stroke",updateTriggers:B&&{getWidth:B.getLineWidth,getColor:B.getLineColor,getDashArray:B.getLineDashArray}}),{data:V,positionFormat:f,getPath:pe=>pe.path});return[!s&&J,ae,s&&J]}}y(oh,"layerName","PolygonLayer");y(oh,"defaultProps",Uz);function Gz(t,e){if(!t)return null;const n="startIndices"in t?t.startIndices[e]:e,r=t.featureIds.value[n];return n!==-1?zz(t,r,n):null}function zz(t,e,n){const r={properties:{...t.properties[e]}};for(const i in t.numericProps)r.properties[i]=t.numericProps[i].value[n];return r}function Vz(t,e){const n={points:null,lines:null,polygons:null};for(const r in n){const i=t[r].globalFeatureIds.value;n[r]=new Uint8ClampedArray(i.length*3);const s=[];for(let o=0;o 0.0) { + float inFill = alpha; + float inBorder = smoothstep(outlineBuffer - gamma, outlineBuffer + gamma, distance); + color = mix(outlineColor, vColor, inFill); + alpha = inBorder; + } + } + + // Take the global opacity and the alpha from color into account for the alpha component + float a = alpha * color.a; + + if (a < alphaCutoff) { + discard; + } + + gl_FragColor = vec4(color.rgb, a * opacity); + } + + DECKGL_FILTER_COLOR(gl_FragColor, geometry); +} +`,Ax=192/256,gx=[],Hz={getIconOffsets:{type:"accessor",value:t=>t.offsets},alphaCutoff:.001,smoothing:.1,outlineWidth:0,outlineColor:{type:"color",value:[0,0,0,255]}};class av extends rd{constructor(...e){super(...e),y(this,"state",void 0)}getShaders(){return{...super.getShaders(),fs:jz}}initializeState(){super.initializeState(),this.getAttributeManager().addInstanced({instanceOffsets:{size:2,accessor:"getIconOffsets"},instancePickingColors:{type:5121,size:3,accessor:(n,{index:r,target:i})=>this.encodePickingColor(r,i)}})}updateState(e){super.updateState(e);const{props:n,oldProps:r}=e;let{outlineColor:i}=n;i!==r.outlineColor&&(i=i.map(s=>s/255),i[3]=Number.isFinite(i[3])?i[3]:1,this.setState({outlineColor:i})),!n.sdf&&n.outlineWidth&&Ee.warn("".concat(this.id,": fontSettings.sdf is required to render outline"))()}draw(e){const{sdf:n,smoothing:r,outlineWidth:i}=this.props,{outlineColor:s}=this.state;e.uniforms={...e.uniforms,buffer:Ax,outlineBuffer:i?Math.max(r,Ax*(1-i)):-1,gamma:r,sdf:!!n,outlineColor:s},super.draw(e)}getInstanceOffset(e){return e?Array.from(e).flatMap(n=>super.getInstanceOffset(n)):gx}getInstanceColorMode(e){return 1}getInstanceIconFrame(e){return e?Array.from(e).flatMap(n=>super.getInstanceIconFrame(n)):gx}}y(av,"defaultProps",Hz);y(av,"layerName","MultiIconLayer");var lv={exports:{}};lv.exports=Tc;lv.exports.default=Tc;var To=1e20;function Tc(t,e,n,r,i,s){this.fontSize=t||24,this.buffer=e===void 0?3:e,this.cutoff=r||.25,this.fontFamily=i||"sans-serif",this.fontWeight=s||"normal",this.radius=n||8;var o=this.size=this.fontSize+this.buffer*2,a=o+this.buffer*2;this.canvas=document.createElement("canvas"),this.canvas.width=this.canvas.height=o,this.ctx=this.canvas.getContext("2d"),this.ctx.font=this.fontWeight+" "+this.fontSize+"px "+this.fontFamily,this.ctx.textAlign="left",this.ctx.fillStyle="black",this.gridOuter=new Float64Array(a*a),this.gridInner=new Float64Array(a*a),this.f=new Float64Array(a),this.z=new Float64Array(a+1),this.v=new Uint16Array(a),this.useMetrics=this.ctx.measureText("A").actualBoundingBoxLeft!==void 0,this.middle=Math.round(o/2*(navigator.userAgent.indexOf("Gecko/")>=0?1.2:1))}function Wz(t,e,n,r,i,s,o){s.fill(To,0,e*n),o.fill(0,0,e*n);for(var a=(e-r)/2,l=0;l-1);l++,s[l]=a,o[l]=c,o[l+1]=To}for(a=0,l=0;ai&&(c=0,l++),s[f]={x:c+r,y:a+l*(n+r*2)+r,width:h,height:n},c+=h+r*2}const u=n+r*2;return{mapping:s,xOffset:c,yOffset:a+l*u,canvasHeight:Jz(a+(l+1)*u)}}function BS(t,e,n,r){let i=0;for(let o=e;or&&(oa){let f=BS(t,a,l,i);c+f>r&&(or&&(f=RS(t,a,l,r,i,s),o=s[s.length-1])),a=l,c+=f}return c}function tV(t,e,n,r,i=0,s){s===void 0&&(s=t.length);const o=[];return e==="break-all"?RS(t,i,s,n,r,o):eV(t,i,s,n,r,o),o}function nV(t,e,n,r,i,s){let o=0,a=0;for(let l=e;l0,f=[0,0],h=[0,0];let d=0,A=0,p=0;for(let g=0;g<=o;g++){const m=s[g];if((m===` +`||g===o)&&(p=g),p>A){const v=u?tV(s,n,r,i,A,p):Xz;for(let E=0;E<=v.length;E++){const _=E===0?A:v[E-1],I=E1||l>0){const d=t.constructor;h=new d(c);for(let A=0;A=0&&this._order.splice(n,1)}_appendOrder(e){this._order.push(e)}}function iV(){const t=[];for(let e=32;e<128;e++)t.push(String.fromCharCode(e));return t}const yl={fontFamily:"Monaco, monospace",fontWeight:"normal",characterSet:iV(),fontSize:64,buffer:4,sdf:!1,cutoff:.25,radius:12,smoothing:.1},yx=1024,sV=.9,Ex=1.2,MS=3;let ah=new PS(MS);function oV(t,e){let n;typeof e=="string"?n=new Set(Array.from(e)):n=new Set(e);const r=ah.get(t);if(!r)return n;for(const i in r.mapping)n.has(i)&&n.delete(i);return n}function aV(t,e){for(let n=0;n=MS,"Invalid cache limit"),ah=new PS(t)}class cV{constructor(){y(this,"props",{...yl}),y(this,"_key",void 0),y(this,"_atlas",void 0)}get texture(){return this._atlas}get mapping(){return this._atlas&&this._atlas.mapping}get scale(){return Ex}setProps(e={}){Object.assign(this.props,e);const n=this._key;this._key=this._getKey();const r=oV(this._key,this.props.characterSet),i=ah.get(this._key);if(i&&r.size===0){this._key!==n&&(this._atlas=i);return}const s=this._generateFontAtlas(this._key,r,i);this._atlas=s,ah.set(this._key,s)}_generateFontAtlas(e,n,r){const{fontFamily:i,fontWeight:s,fontSize:o,buffer:a,sdf:l,radius:c,cutoff:u}=this.props;let f=r&&r.data;f||(f=document.createElement("canvas"),f.width=yx);const h=f.getContext("2d");_x(h,i,o,s);const{mapping:d,canvasHeight:A,xOffset:p,yOffset:g}=Zz({getFontWidth:m=>h.measureText(m).width,fontHeight:o*Ex,buffer:a,characterSet:n,maxCanvasWidth:yx,...r&&{mapping:r.mapping,xOffset:r.xOffset,yOffset:r.yOffset}});if(f.height!==A){const m=h.getImageData(0,0,f.width,f.height);f.height=A,h.putImageData(m,0,0)}if(_x(h,i,o,s),l){const m=new Kz(o,a,c,u,i,s),v=h.getImageData(0,0,m.size,m.size);for(const E of n)aV(m.draw(E),v),h.putImageData(v,d[E].x-a,d[E].y+a)}else for(const m of n)h.fillText(m,d[m].x,d[m].y+o*sV);return{xOffset:p,yOffset:g,mapping:d,data:f,width:f.width,height:f.height}}_getKey(){const{fontFamily:e,fontWeight:n,fontSize:r,buffer:i,sdf:s,radius:o,cutoff:a}=this.props;return s?"".concat(e," ").concat(n," ").concat(r," ").concat(i," ").concat(o," ").concat(a):"".concat(e," ").concat(n," ").concat(r," ").concat(i)}}const uV=`#define SHADER_NAME text-background-layer-vertex-shader + +attribute vec2 positions; + +attribute vec3 instancePositions; +attribute vec3 instancePositions64Low; +attribute vec4 instanceRects; +attribute float instanceSizes; +attribute float instanceAngles; +attribute vec2 instancePixelOffsets; +attribute float instanceLineWidths; +attribute vec4 instanceFillColors; +attribute vec4 instanceLineColors; +attribute vec3 instancePickingColors; + +uniform bool billboard; +uniform float opacity; +uniform float sizeScale; +uniform float sizeMinPixels; +uniform float sizeMaxPixels; +uniform vec4 padding; +uniform int sizeUnits; + +varying vec4 vFillColor; +varying vec4 vLineColor; +varying float vLineWidth; +varying vec2 uv; +varying vec2 dimensions; + +vec2 rotate_by_angle(vec2 vertex, float angle) { + float angle_radian = radians(angle); + float cos_angle = cos(angle_radian); + float sin_angle = sin(angle_radian); + mat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle); + return rotationMatrix * vertex; +} + +void main(void) { + geometry.worldPosition = instancePositions; + geometry.uv = positions; + geometry.pickingColor = instancePickingColors; + uv = positions; + vLineWidth = instanceLineWidths; + + // convert size in meters to pixels, then scaled and clamp + + // project meters to pixels and clamp to limits + float sizePixels = clamp( + project_size_to_pixel(instanceSizes * sizeScale, sizeUnits), + sizeMinPixels, sizeMaxPixels + ); + + dimensions = instanceRects.zw * sizePixels + padding.xy + padding.zw; + + vec2 pixelOffset = (positions * instanceRects.zw + instanceRects.xy) * sizePixels + mix(-padding.xy, padding.zw, positions); + pixelOffset = rotate_by_angle(pixelOffset, instanceAngles); + pixelOffset += instancePixelOffsets; + pixelOffset.y *= -1.0; + + if (billboard) { + gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, vec3(0.0), geometry.position); + vec3 offset = vec3(pixelOffset, 0.0); + DECKGL_FILTER_SIZE(offset, geometry); + gl_Position.xy += project_pixel_size_to_clipspace(offset.xy); + } else { + vec3 offset_common = vec3(project_pixel_size(pixelOffset), 0.0); + DECKGL_FILTER_SIZE(offset_common, geometry); + gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset_common, geometry.position); + } + DECKGL_FILTER_GL_POSITION(gl_Position, geometry); + + // Apply opacity to instance color, or return instance picking color + vFillColor = vec4(instanceFillColors.rgb, instanceFillColors.a * opacity); + DECKGL_FILTER_COLOR(vFillColor, geometry); + vLineColor = vec4(instanceLineColors.rgb, instanceLineColors.a * opacity); + DECKGL_FILTER_COLOR(vLineColor, geometry); +} +`,fV=`#define SHADER_NAME text-background-layer-fragment-shader + +precision highp float; + +uniform bool stroked; + +varying vec4 vFillColor; +varying vec4 vLineColor; +varying float vLineWidth; +varying vec2 uv; +varying vec2 dimensions; + +void main(void) { + geometry.uv = uv; + + vec2 pixelPosition = uv * dimensions; + if (stroked) { + float distToEdge = min( + min(pixelPosition.x, dimensions.x - pixelPosition.x), + min(pixelPosition.y, dimensions.y - pixelPosition.y) + ); + float isBorder = smoothedge(distToEdge, vLineWidth); + gl_FragColor = mix(vFillColor, vLineColor, isBorder); + } else { + gl_FragColor = vFillColor; + } + + DECKGL_FILTER_COLOR(gl_FragColor, geometry); +} +`,hV={billboard:!0,sizeScale:1,sizeUnits:"pixels",sizeMinPixels:0,sizeMaxPixels:Number.MAX_SAFE_INTEGER,padding:{type:"array",value:[0,0,0,0]},getPosition:{type:"accessor",value:t=>t.position},getSize:{type:"accessor",value:1},getAngle:{type:"accessor",value:0},getPixelOffset:{type:"accessor",value:[0,0]},getBoundingRect:{type:"accessor",value:[0,0,0,0]},getFillColor:{type:"accessor",value:[0,0,0,255]},getLineColor:{type:"accessor",value:[0,0,0,255]},getLineWidth:{type:"accessor",value:1}};class cv extends pn{constructor(...e){super(...e),y(this,"state",void 0)}getShaders(){return super.getShaders({vs:uV,fs:fV,modules:[Gi,zi]})}initializeState(){this.getAttributeManager().addInstanced({instancePositions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:!0,accessor:"getPosition"},instanceSizes:{size:1,transition:!0,accessor:"getSize",defaultValue:1},instanceAngles:{size:1,transition:!0,accessor:"getAngle"},instanceRects:{size:4,accessor:"getBoundingRect"},instancePixelOffsets:{size:2,transition:!0,accessor:"getPixelOffset"},instanceFillColors:{size:4,transition:!0,normalized:!0,type:5121,accessor:"getFillColor",defaultValue:[0,0,0,255]},instanceLineColors:{size:4,transition:!0,normalized:!0,type:5121,accessor:"getLineColor",defaultValue:[0,0,0,255]},instanceLineWidths:{size:1,transition:!0,accessor:"getLineWidth",defaultValue:1}})}updateState(e){super.updateState(e);const{changeFlags:n}=e;if(n.extensionsChanged){var r;const{gl:i}=this.context;(r=this.state.model)===null||r===void 0||r.delete(),this.state.model=this._getModel(i),this.getAttributeManager().invalidateAll()}}draw({uniforms:e}){const{billboard:n,sizeScale:r,sizeUnits:i,sizeMinPixels:s,sizeMaxPixels:o,getLineWidth:a}=this.props;let{padding:l}=this.props;l.length<4&&(l=[l[0],l[1],l[0],l[1]]),this.state.model.setUniforms(e).setUniforms({billboard:n,stroked:!!a,padding:l,sizeUnits:Mi[i],sizeScale:r,sizeMinPixels:s,sizeMaxPixels:o}).draw()}_getModel(e){const n=[0,0,1,0,1,1,0,1];return new Tn(e,{...this.getShaders(),id:this.props.id,geometry:new pr({drawMode:6,vertexCount:4,attributes:{positions:{size:2,value:new Float32Array(n)}}}),isInstanced:!0})}}y(cv,"defaultProps",hV);y(cv,"layerName","TextBackgroundLayer");const xx={start:1,middle:0,end:-1},Cx={top:1,center:0,bottom:-1},ZA=[0,0,0,255],dV=1,AV={billboard:!0,sizeScale:1,sizeUnits:"pixels",sizeMinPixels:0,sizeMaxPixels:Number.MAX_SAFE_INTEGER,background:!1,getBackgroundColor:{type:"accessor",value:[255,255,255,255]},getBorderColor:{type:"accessor",value:ZA},getBorderWidth:{type:"accessor",value:0},backgroundPadding:{type:"array",value:[0,0,0,0]},characterSet:{type:"object",value:yl.characterSet},fontFamily:yl.fontFamily,fontWeight:yl.fontWeight,lineHeight:dV,outlineWidth:{type:"number",value:0,min:0},outlineColor:{type:"color",value:ZA},fontSettings:{},wordBreak:"break-word",maxWidth:{type:"number",value:-1},getText:{type:"accessor",value:t=>t.text},getPosition:{type:"accessor",value:t=>t.position},getColor:{type:"accessor",value:ZA},getSize:{type:"accessor",value:32},getAngle:{type:"accessor",value:0},getTextAnchor:{type:"accessor",value:"middle"},getAlignmentBaseline:{type:"accessor",value:"center"},getPixelOffset:{type:"accessor",value:[0,0]},backgroundColor:{deprecatedFor:["background","getBackgroundColor"]}};class ta extends Rn{constructor(...e){super(...e),y(this,"state",void 0),y(this,"getBoundingRect",(n,r)=>{const i=this.state.fontAtlasManager.mapping,s=this.state.getText,{wordBreak:o,maxWidth:a,lineHeight:l,getTextAnchor:c,getAlignmentBaseline:u}=this.props,f=s(n,r)||"",{size:[h,d]}=vx(f,l,o,a,i),A=xx[typeof c=="function"?c(n,r):c],p=Cx[typeof u=="function"?u(n,r):u];return[(A-1)*h/2,(p-1)*d/2,h,d]}),y(this,"getIconOffsets",(n,r)=>{const i=this.state.fontAtlasManager.mapping,s=this.state.getText,{wordBreak:o,maxWidth:a,lineHeight:l,getTextAnchor:c,getAlignmentBaseline:u}=this.props,f=s(n,r)||"",{x:h,y:d,rowWidth:A,size:[p,g]}=vx(f,l,o,a,i),m=xx[typeof c=="function"?c(n,r):c],v=Cx[typeof u=="function"?u(n,r):u],E=h.length,_=new Array(E*2);let I=0;for(let C=0;C=0?this.props.data[e.index]:null,e}_updateFontAtlas(){const{fontSettings:e,fontFamily:n,fontWeight:r}=this.props,{fontAtlasManager:i,characterSet:s}=this.state,o={...e,characterSet:s,fontFamily:n,fontWeight:r};if(!i.mapping)return i.setProps(o),!0;for(const a in o)if(o[a]!==i.props[a])return i.setProps(o),!0;return!1}_updateText(){var e;const{data:n,characterSet:r}=this.props,i=(e=n.attributes)===null||e===void 0?void 0:e.getText;let{getText:s}=this.props,o=n.startIndices,a;const l=r==="auto"&&new Set;if(i&&o){const{texts:c,characterCount:u}=rV({...ArrayBuffer.isView(i)?{value:i}:i,length:n.length,startIndices:o,characterSet:l});a=u,s=(f,{index:h})=>c[h]}else{const{iterable:c,objectInfo:u}=bc(n);o=[0],a=0;for(const f of c){u.index++;const h=Array.from(s(f,u)||"");l&&h.forEach(l.add,l),a+=h.length,o.push(a)}}this.setState({getText:s,startIndices:o,numInstances:a,characterSet:l||r})}renderLayers(){const{startIndices:e,numInstances:n,getText:r,fontAtlasManager:{scale:i,texture:s,mapping:o},styleVersion:a}=this.state,{data:l,_dataDiff:c,getPosition:u,getColor:f,getSize:h,getAngle:d,getPixelOffset:A,getBackgroundColor:p,getBorderColor:g,getBorderWidth:m,backgroundPadding:v,background:E,billboard:_,fontSettings:I,outlineWidth:C,outlineColor:R,sizeScale:P,sizeUnits:B,sizeMinPixels:N,sizeMaxPixels:V,transitions:G,updateTriggers:z}=this.props,K=this.getSubLayerClass("characters",av),J=this.getSubLayerClass("background",cv);return[E&&new J({getFillColor:p,getLineColor:g,getLineWidth:m,padding:v,getPosition:u,getSize:h,getAngle:d,getPixelOffset:A,billboard:_,sizeScale:P/this.state.fontAtlasManager.props.fontSize,sizeUnits:B,sizeMinPixels:N,sizeMaxPixels:V,transitions:G&&{getPosition:G.getPosition,getAngle:G.getAngle,getSize:G.getSize,getFillColor:G.getBackgroundColor,getLineColor:G.getBorderColor,getLineWidth:G.getBorderWidth,getPixelOffset:G.getPixelOffset}},this.getSubLayerProps({id:"background",updateTriggers:{getPosition:z.getPosition,getAngle:z.getAngle,getSize:z.getSize,getFillColor:z.getBackgroundColor,getLineColor:z.getBorderColor,getLineWidth:z.getBorderWidth,getPixelOffset:z.getPixelOffset,getBoundingRect:{getText:z.getText,getTextAnchor:z.getTextAnchor,getAlignmentBaseline:z.getAlignmentBaseline,styleVersion:a}}}),{data:l.attributes&&l.attributes.background?{length:l.length,attributes:l.attributes.background}:l,_dataDiff:c,autoHighlight:!1,getBoundingRect:this.getBoundingRect}),new K({sdf:I.sdf,smoothing:Number.isFinite(I.smoothing)?I.smoothing:yl.smoothing,outlineWidth:C,outlineColor:R,iconAtlas:s,iconMapping:o,getPosition:u,getColor:f,getSize:h,getAngle:d,getPixelOffset:A,billboard:_,sizeScale:P*i,sizeUnits:B,sizeMinPixels:N*i,sizeMaxPixels:V*i,transitions:G&&{getPosition:G.getPosition,getAngle:G.getAngle,getColor:G.getColor,getSize:G.getSize,getPixelOffset:G.getPixelOffset}},this.getSubLayerProps({id:"characters",updateTriggers:{getIcon:z.getText,getPosition:z.getPosition,getAngle:z.getAngle,getColor:z.getColor,getSize:z.getSize,getPixelOffset:z.getPixelOffset,getIconOffsets:{getText:z.getText,getTextAnchor:z.getTextAnchor,getAlignmentBaseline:z.getAlignmentBaseline,styleVersion:a}}}),{data:l,_dataDiff:c,startIndices:e,numInstances:n,getIconOffsets:this.getIconOffsets,getIcon:r})]}static set fontAtlasCacheLimit(e){lV(e)}}y(ta,"defaultProps",AV);y(ta,"layerName","TextLayer");const hf={circle:{type:sv,props:{filled:"filled",stroked:"stroked",lineWidthMaxPixels:"lineWidthMaxPixels",lineWidthMinPixels:"lineWidthMinPixels",lineWidthScale:"lineWidthScale",lineWidthUnits:"lineWidthUnits",pointRadiusMaxPixels:"radiusMaxPixels",pointRadiusMinPixels:"radiusMinPixels",pointRadiusScale:"radiusScale",pointRadiusUnits:"radiusUnits",pointAntialiasing:"antialiasing",pointBillboard:"billboard",getFillColor:"getFillColor",getLineColor:"getLineColor",getLineWidth:"getLineWidth",getPointRadius:"getRadius"}},icon:{type:rd,props:{iconAtlas:"iconAtlas",iconMapping:"iconMapping",iconSizeMaxPixels:"sizeMaxPixels",iconSizeMinPixels:"sizeMinPixels",iconSizeScale:"sizeScale",iconSizeUnits:"sizeUnits",iconAlphaCutoff:"alphaCutoff",iconBillboard:"billboard",getIcon:"getIcon",getIconAngle:"getAngle",getIconColor:"getColor",getIconPixelOffset:"getPixelOffset",getIconSize:"getSize"}},text:{type:ta,props:{textSizeMaxPixels:"sizeMaxPixels",textSizeMinPixels:"sizeMinPixels",textSizeScale:"sizeScale",textSizeUnits:"sizeUnits",textBackground:"background",textBackgroundPadding:"backgroundPadding",textFontFamily:"fontFamily",textFontWeight:"fontWeight",textLineHeight:"lineHeight",textMaxWidth:"maxWidth",textOutlineColor:"outlineColor",textOutlineWidth:"outlineWidth",textWordBreak:"wordBreak",textCharacterSet:"characterSet",textBillboard:"billboard",textFontSettings:"fontSettings",getText:"getText",getTextAngle:"getAngle",getTextColor:"getColor",getTextPixelOffset:"getPixelOffset",getTextSize:"getSize",getTextAnchor:"getTextAnchor",getTextAlignmentBaseline:"getAlignmentBaseline",getTextBackgroundColor:"getBackgroundColor",getTextBorderColor:"getBorderColor",getTextBorderWidth:"getBorderWidth"}}},df={type:id,props:{lineWidthUnits:"widthUnits",lineWidthScale:"widthScale",lineWidthMinPixels:"widthMinPixels",lineWidthMaxPixels:"widthMaxPixels",lineJointRounded:"jointRounded",lineCapRounded:"capRounded",lineMiterLimit:"miterLimit",lineBillboard:"billboard",getLineColor:"getColor",getLineWidth:"getWidth"}},qp={type:Sc,props:{extruded:"extruded",filled:"filled",wireframe:"wireframe",elevationScale:"elevationScale",material:"material",getElevation:"getElevation",getFillColor:"getFillColor",getLineColor:"getLineColor"}};function Da({type:t,props:e}){const n={};for(const r in e)n[r]=t.defaultProps[e[r]];return n}function eg(t,e){const{transitions:n,updateTriggers:r}=t.props,i={updateTriggers:{},transitions:n&&{getPosition:n.geometry}};for(const s in e){const o=e[s];let a=t.props[s];s.startsWith("get")&&(a=t.getSubLayerAccessor(a),i.updateTriggers[o]=r[s],n&&(i.transitions[o]=n[s])),i[o]=a}return i}function gV(t){if(Array.isArray(t))return t;switch(Ee.assert(t.type,"GeoJSON does not have type"),t.type){case"Feature":return[t];case"FeatureCollection":return Ee.assert(Array.isArray(t.features),"GeoJSON does not have features array"),t.features;default:return[{geometry:t}]}}function Ix(t,e,n={}){const r={pointFeatures:[],lineFeatures:[],polygonFeatures:[],polygonOutlineFeatures:[]},{startRow:i=0,endRow:s=t.length}=n;for(let o=i;o{a.push(n({geometry:{type:"Point",coordinates:f}},r,i))});break;case"LineString":l.push(n({geometry:t},r,i));break;case"MultiLineString":o.forEach(f=>{l.push(n({geometry:{type:"LineString",coordinates:f}},r,i))});break;case"Polygon":c.push(n({geometry:t},r,i)),o.forEach(f=>{u.push(n({geometry:{type:"LineString",coordinates:f}},r,i))});break;case"MultiPolygon":o.forEach(f=>{c.push(n({geometry:{type:"Polygon",coordinates:f}},r,i)),f.forEach(h=>{u.push(n({geometry:{type:"LineString",coordinates:h}},r,i))})});break}}const pV={Point:1,MultiPoint:2,LineString:2,MultiLineString:3,Polygon:3,MultiPolygon:4};function mV(t,e){let n=pV[t];for(Ee.assert(n,"Unknown GeoJSON type ".concat(t));e&&--n>0;)e=e[0];return e&&Number.isFinite(e[0])}function LS(){return{points:{},lines:{},polygons:{},polygonsOutline:{}}}function Tu(t){return t.geometry.coordinates}function vV(t,e){const n=LS(),{pointFeatures:r,lineFeatures:i,polygonFeatures:s,polygonOutlineFeatures:o}=t;return n.points.data=r,n.points._dataDiff=e.pointFeatures&&(()=>e.pointFeatures),n.points.getPosition=Tu,n.lines.data=i,n.lines._dataDiff=e.lineFeatures&&(()=>e.lineFeatures),n.lines.getPath=Tu,n.polygons.data=s,n.polygons._dataDiff=e.polygonFeatures&&(()=>e.polygonFeatures),n.polygons.getPolygon=Tu,n.polygonsOutline.data=o,n.polygonsOutline._dataDiff=e.polygonOutlineFeatures&&(()=>e.polygonOutlineFeatures),n.polygonsOutline.getPath=Tu,n}function yV(t,e){const n=LS(),{points:r,lines:i,polygons:s}=t,o=Vz(t,e);return n.points.data={length:r.positions.value.length/r.positions.size,attributes:{...r.attributes,getPosition:r.positions,instancePickingColors:{size:3,value:o.points}},properties:r.properties,numericProps:r.numericProps,featureIds:r.featureIds},n.lines.data={length:i.pathIndices.value.length-1,startIndices:i.pathIndices.value,attributes:{...i.attributes,getPath:i.positions,instancePickingColors:{size:3,value:o.lines}},properties:i.properties,numericProps:i.numericProps,featureIds:i.featureIds},n.lines._pathType="open",n.polygons.data={length:s.polygonIndices.value.length-1,startIndices:s.polygonIndices.value,attributes:{...s.attributes,getPolygon:s.positions,pickingColors:{size:3,value:o.polygons}},properties:s.properties,numericProps:s.numericProps,featureIds:s.featureIds},n.polygons._normalize=!1,s.triangles&&(n.polygons.data.attributes.indices=s.triangles.value),n.polygonsOutline.data={length:s.primitivePolygonIndices.value.length-1,startIndices:s.primitivePolygonIndices.value,attributes:{...s.attributes,getPath:s.positions,instancePickingColors:{size:3,value:o.polygons}},properties:s.properties,numericProps:s.numericProps,featureIds:s.featureIds},n.polygonsOutline._pathType="open",n}const EV=["points","linestrings","polygons"],_V={...Da(hf.circle),...Da(hf.icon),...Da(hf.text),...Da(df),...Da(qp),stroked:!0,filled:!0,extruded:!1,wireframe:!1,iconAtlas:{type:"object",value:null},iconMapping:{type:"object",value:{}},getIcon:{type:"accessor",value:t=>t.properties.icon},getText:{type:"accessor",value:t=>t.properties.text},pointType:"circle",getRadius:{deprecatedFor:"getPointRadius"}};class uv extends Rn{initializeState(){this.state={layerProps:{},features:{}}}updateState({props:e,changeFlags:n}){if(!n.dataChanged)return;const{data:r}=this.props,i=r&&"points"in r&&"polygons"in r&&"lines"in r;this.setState({binary:i}),i?this._updateStateBinary({props:e,changeFlags:n}):this._updateStateJSON({props:e,changeFlags:n})}_updateStateBinary({props:e,changeFlags:n}){const r=yV(e.data,this.encodePickingColor);this.setState({layerProps:r})}_updateStateJSON({props:e,changeFlags:n}){const r=gV(e.data),i=this.getSubLayerRow.bind(this);let s={};const o={};if(Array.isArray(n.dataChanged)){const l=this.state.features;for(const c in l)s[c]=l[c].slice(),o[c]=[];for(const c of n.dataChanged){const u=Ix(r,i,c);for(const f in l)o[f].push(SS({data:s[f],getIndex:h=>h.__source.index,dataRange:c,replace:u[f]}))}}else s=Ix(r,i);const a=vV(s,o);this.setState({features:s,featuresDiff:o,layerProps:a})}getPickingInfo(e){const n=super.getPickingInfo(e),{index:r,sourceLayer:i}=n;return n.featureType=EV.find(s=>i.id.startsWith("".concat(this.id,"-").concat(s,"-"))),r>=0&&i.id.startsWith("".concat(this.id,"-points-text"))&&this.state.binary&&(n.index=this.props.data.points.globalFeatureIds.value[r]),n}_updateAutoHighlight(e){const n="".concat(this.id,"-points-"),r=e.featureType==="points";for(const i of this.getSubLayers())i.id.startsWith(n)===r&&i.updateAutoHighlight(e)}_renderPolygonLayer(){const{extruded:e,wireframe:n}=this.props,{layerProps:r}=this.state,i="polygons-fill",s=this.shouldRenderSubLayer(i,r.polygons.data)&&this.getSubLayerClass(i,qp.type);if(s){const o=eg(this,qp.props),a=e&&n;return a||delete o.getLineColor,o.updateTriggers.lineColors=a,new s(o,this.getSubLayerProps({id:i,updateTriggers:o.updateTriggers}),r.polygons)}return null}_renderLineLayers(){const{extruded:e,stroked:n}=this.props,{layerProps:r}=this.state,i="polygons-stroke",s="linestrings",o=!e&&n&&this.shouldRenderSubLayer(i,r.polygonsOutline.data)&&this.getSubLayerClass(i,df.type),a=this.shouldRenderSubLayer(s,r.lines.data)&&this.getSubLayerClass(s,df.type);if(o||a){const l=eg(this,df.props);return[o&&new o(l,this.getSubLayerProps({id:i,updateTriggers:l.updateTriggers}),r.polygonsOutline),a&&new a(l,this.getSubLayerProps({id:s,updateTriggers:l.updateTriggers}),r.lines)]}return null}_renderPointLayers(){const{pointType:e}=this.props,{layerProps:n,binary:r}=this.state;let{highlightedObjectIndex:i}=this.props;!r&&Number.isFinite(i)&&(i=n.points.data.findIndex(a=>a.__source.index===i));const s=new Set(e.split("+")),o=[];for(const a of s){const l="points-".concat(a),c=hf[a],u=c&&this.shouldRenderSubLayer(l,n.points.data)&&this.getSubLayerClass(l,c.type);if(u){const f=eg(this,c.props);let h=n.points;if(a==="text"&&r){const{instancePickingColors:d,...A}=h.data.attributes;h={...h,data:{...h.data,attributes:A}}}o.push(new u(f,this.getSubLayerProps({id:l,updateTriggers:f.updateTriggers,highlightedObjectIndex:i}),h))}}return o}renderLayers(){const{extruded:e}=this.props,n=this._renderPolygonLayer(),r=this._renderLineLayers(),i=this._renderPointLayers();return[!e&&n,r,i,e&&n]}getSubLayerAccessor(e){const{binary:n}=this.state;return!n||typeof e!="function"?super.getSubLayerAccessor(e):(r,i)=>{const{data:s,index:o}=i,a=Gz(s,o);return e(a,i)}}}y(uv,"layerName","GeoJsonLayer");y(uv,"defaultProps",_V);class xV{constructor(e){y(this,"index",void 0),y(this,"isVisible",void 0),y(this,"isSelected",void 0),y(this,"parent",void 0),y(this,"children",void 0),y(this,"content",void 0),y(this,"state",void 0),y(this,"layers",void 0),y(this,"id",void 0),y(this,"bbox",void 0),y(this,"zoom",void 0),y(this,"userData",void 0),y(this,"_abortController",void 0),y(this,"_loader",void 0),y(this,"_loaderId",void 0),y(this,"_isLoaded",void 0),y(this,"_isCancelled",void 0),y(this,"_needsReload",void 0),this.index=e,this.isVisible=!1,this.isSelected=!1,this.parent=null,this.children=[],this.content=null,this._loader=void 0,this._abortController=null,this._loaderId=0,this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1}get data(){return this.isLoading&&this._loader?this._loader.then(()=>this.data):this.content}get isLoaded(){return this._isLoaded&&!this._needsReload}get isLoading(){return!!this._loader&&!this._isCancelled}get needsReload(){return this._needsReload||this._isCancelled}get byteLength(){const e=this.content?this.content.byteLength:0;return Number.isFinite(e)||Ee.error("byteLength not defined in tile data")(),e}async _loadData({getData:e,requestScheduler:n,onLoad:r,onError:i}){const{index:s,id:o,bbox:a,userData:l,zoom:c}=this,u=this._loaderId;this._abortController=new AbortController;const{signal:f}=this._abortController,h=await n.scheduleRequest(this,p=>p.isSelected?1:-1);if(!h){this._isCancelled=!0;return}if(this._isCancelled){h.done();return}let d=null,A;try{d=await e({index:s,id:o,bbox:a,userData:l,zoom:c,signal:f})}catch(p){A=p||!0}finally{h.done()}if(u===this._loaderId){if(this._loader=void 0,this.content=d,this._isCancelled&&!d){this._isLoaded=!1;return}this._isLoaded=!0,this._isCancelled=!1,A?i(A,this):r(this)}}loadData(e){return this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1,this._loaderId++,this._loader=this._loadData(e),this._loader}setNeedsReload(){this.isLoading&&(this.abort(),this._loader=void 0),this._needsReload=!0}abort(){var e;this.isLoaded||(this._isCancelled=!0,(e=this._abortController)===null||e===void 0||e.abort())}}const Ot={OUTSIDE:-1,INTERSECTING:0,INSIDE:1},bx=new ee,CV=new ee;class fv{constructor(e=[0,0,0],n=[0,0,0],r){y(this,"center",void 0),y(this,"halfDiagonal",void 0),y(this,"minimum",void 0),y(this,"maximum",void 0),r=r||bx.copy(e).add(n).scale(.5),this.center=new ee(r),this.halfDiagonal=new ee(n).subtract(this.center),this.minimum=new ee(e),this.maximum=new ee(n)}clone(){return new fv(this.minimum,this.maximum,this.center)}equals(e){return this===e||!!e&&this.minimum.equals(e.minimum)&&this.maximum.equals(e.maximum)}transform(e){return this.center.transformAsPoint(e),this.halfDiagonal.transform(e),this.minimum.transform(e),this.maximum.transform(e),this}intersectPlane(e){const{halfDiagonal:n}=this,r=CV.from(e.normal),i=n.x*Math.abs(r.x)+n.y*Math.abs(r.y)+n.z*Math.abs(r.z),s=this.center.dot(r)+e.distance;return s-i>0?Ot.INSIDE:s+i<0?Ot.OUTSIDE:Ot.INTERSECTING}distanceTo(e){return Math.sqrt(this.distanceSquaredTo(e))}distanceSquaredTo(e){const n=bx.from(e).subtract(this.center),{halfDiagonal:r}=this;let i=0,s;return s=Math.abs(n.x)-r.x,s>0&&(i+=s*s),s=Math.abs(n.y)-r.y,s>0&&(i+=s*s),s=Math.abs(n.z)-r.z,s>0&&(i+=s*s),i}}const ka=new ee,Sx=new ee;class hv{constructor(e=[0,0,0],n=0){y(this,"center",void 0),y(this,"radius",void 0),this.radius=-0,this.center=new ee,this.fromCenterRadius(e,n)}fromCenterRadius(e,n){return this.center.from(e),this.radius=n,this}fromCornerPoints(e,n){return n=ka.from(n),this.center=new ee().from(e).add(n).scale(.5),this.radius=this.center.distance(n),this}equals(e){return this===e||!!e&&this.center.equals(e.center)&&this.radius===e.radius}clone(){return new hv(this.center,this.radius)}union(e){const n=this.center,r=this.radius,i=e.center,s=e.radius,o=ka.copy(i).subtract(n),a=o.magnitude();if(r>=a+s)return this.clone();if(s>=a+r)return e.clone();const l=(r+a+s)*.5;return Sx.copy(o).scale((-r+l)/a).add(n),this.center.copy(Sx),this.radius=l,this}expand(e){const r=ka.from(e).subtract(this.center).magnitude();return r>this.radius&&(this.radius=r),this}transform(e){this.center.transform(e);const n=Jk(ka,e);return this.radius=Math.max(n[0],Math.max(n[1],n[2]))*this.radius,this}distanceSquaredTo(e){const n=this.distanceTo(e);return n*n}distanceTo(e){const r=ka.from(e).subtract(this.center);return Math.max(0,r.len()-this.radius)}intersectPlane(e){const n=this.center,r=this.radius,s=e.normal.dot(n)+e.distance;return s<-r?Ot.OUTSIDE:s=l?Ot.INSIDE:Ot.INTERSECTING}distanceTo(e){return Math.sqrt(this.distanceSquaredTo(e))}distanceSquaredTo(e){const n=wV.from(e).subtract(this.center),r=this.halfAxes,i=r.getColumn(0,Bu),s=r.getColumn(1,Ru),o=r.getColumn(2,Pu),a=i.magnitude(),l=s.magnitude(),c=o.magnitude();i.normalize(),s.normalize(),o.normalize();let u=0,f;return f=Math.abs(n.dot(i))-a,f>0&&(u+=f*f),f=Math.abs(n.dot(s))-l,f>0&&(u+=f*f),f=Math.abs(n.dot(o))-c,f>0&&(u+=f*f),u}computePlaneDistances(e,n,r=[-0,-0]){let i=Number.POSITIVE_INFINITY,s=Number.NEGATIVE_INFINITY;const o=this.center,a=this.halfAxes,l=a.getColumn(0,Bu),c=a.getColumn(1,Ru),u=a.getColumn(2,Pu),f=bV.copy(l).add(c).add(u).add(o),h=SV.copy(f).subtract(e);let d=n.dot(h);return i=Math.min(d,i),s=Math.max(d,s),f.copy(o).add(l).add(c).subtract(u),h.copy(f).subtract(e),d=n.dot(h),i=Math.min(d,i),s=Math.max(d,s),f.copy(o).add(l).subtract(c).add(u),h.copy(f).subtract(e),d=n.dot(h),i=Math.min(d,i),s=Math.max(d,s),f.copy(o).add(l).subtract(c).subtract(u),h.copy(f).subtract(e),d=n.dot(h),i=Math.min(d,i),s=Math.max(d,s),o.copy(f).subtract(l).add(c).add(u),h.copy(f).subtract(e),d=n.dot(h),i=Math.min(d,i),s=Math.max(d,s),o.copy(f).subtract(l).add(c).subtract(u),h.copy(f).subtract(e),d=n.dot(h),i=Math.min(d,i),s=Math.max(d,s),o.copy(f).subtract(l).subtract(c).add(u),h.copy(f).subtract(e),d=n.dot(h),i=Math.min(d,i),s=Math.max(d,s),o.copy(f).subtract(l).subtract(c).subtract(u),h.copy(f).subtract(e),d=n.dot(h),i=Math.min(d,i),s=Math.max(d,s),r[0]=i,r[1]=s,r}transform(e){this.center.transformAsPoint(e);const n=this.halfAxes.getColumn(0,Bu);n.transformAsPoint(e);const r=this.halfAxes.getColumn(1,Ru);r.transformAsPoint(e);const i=this.halfAxes.getColumn(2,Pu);return i.transformAsPoint(e),this.halfAxes=new bt([...n,...r,...i]),this}getTransform(){throw new Error("not implemented")}}const Tx=new ee,Bx=new ee;class bs{constructor(e=[0,0,1],n=0){y(this,"normal",void 0),y(this,"distance",void 0),this.normal=new ee,this.distance=-0,this.fromNormalDistance(e,n)}fromNormalDistance(e,n){return Gl(Number.isFinite(n)),this.normal.from(e).normalize(),this.distance=n,this}fromPointNormal(e,n){e=Tx.from(e),this.normal.from(n).normalize();const r=-this.normal.dot(e);return this.distance=r,this}fromCoefficients(e,n,r,i){return this.normal.set(e,n,r),Gl(ur(this.normal.len(),1)),this.distance=i,this}clone(){return new bs(this.normal,this.distance)}equals(e){return ur(this.distance,e.distance)&&ur(this.normal,e.normal)}getPointDistance(e){return this.normal.dot(e)+this.distance}transform(e){const n=Bx.copy(this.normal).transformAsVector(e).normalize(),r=this.normal.scale(-this.distance).transform(e);return this.fromPointNormal(r,n)}projectPointOntoPlane(e,n=[0,0,0]){e=Tx.from(e);const r=this.getPointDistance(e),i=Bx.copy(this.normal).scale(r);return e.subtract(i).to(n)}}const Rx=[new ee([1,0,0]),new ee([0,1,0]),new ee([0,0,1])],Px=new ee,TV=new ee;new bs(new ee(1,0,0),0);class Rr{constructor(e=[]){y(this,"planes",void 0),this.planes=e}fromBoundingSphere(e){this.planes.length=2*Rx.length;const n=e.center,r=e.radius;let i=0;for(const s of Rx){let o=this.planes[i],a=this.planes[i+1];o||(o=this.planes[i]=new bs),a||(a=this.planes[i+1]=new bs);const l=Px.copy(s).scale(-r).add(n);-s.dot(l),o.fromPointNormal(l,s);const c=Px.copy(s).scale(r).add(n),u=TV.copy(s).negate();-u.dot(c),a.fromPointNormal(c,u),i+=2}return this}computeVisibility(e){let n=Ot.INSIDE;for(const r of this.planes)switch(e.intersectPlane(r)){case Ot.OUTSIDE:return Ot.OUTSIDE;case Ot.INTERSECTING:n=Ot.INTERSECTING;break}return n}computeVisibilityWithPlaneMask(e,n){if(Gl(Number.isFinite(n),"parentPlaneMask is required."),n===Rr.MASK_OUTSIDE||n===Rr.MASK_INSIDE)return n;let r=Rr.MASK_INSIDE;const i=this.planes;for(let s=0;sl;)NV(a,Mu),Mx.copy(Mu).transpose(),a.multiplyRight(Mu),a.multiplyLeft(Mx),o.multiplyRight(Mu),++i>2&&(++s,i=0);return e.unitary=o.toTarget(e.unitary),e.diagonal=a.toTarget(e.diagonal),e}function MV(t){let e=0;for(let n=0;n<9;++n){const r=t[n];e+=r*r}return Math.sqrt(e)}const Xp=[1,0,0],Jp=[2,2,1];function LV(t){let e=0;for(let n=0;n<3;++n){const r=t[tr.getElementIndex(Jp[n],Xp[n])];e+=2*r*r}return Math.sqrt(e)}function NV(t,e){const n=Bb.EPSILON15;let r=0,i=1;for(let c=0;c<3;++c){const u=Math.abs(t[tr.getElementIndex(Jp[c],Xp[c])]);u>r&&(i=c,r=u)}const s=Xp[i],o=Jp[i];let a=1,l=0;if(Math.abs(t[tr.getElementIndex(o,s)])>n){const c=t[tr.getElementIndex(o,o)],u=t[tr.getElementIndex(s,s)],f=t[tr.getElementIndex(o,s)],h=(c-u)/2/f;let d;h<0?d=-1/(-h+Math.sqrt(1+h*h)):d=1/(h+Math.sqrt(1+h*h)),a=1/Math.sqrt(1+d*d),l=d*a}return bt.IDENTITY.to(e),e[tr.getElementIndex(s,s)]=e[tr.getElementIndex(o,o)]=a,e[tr.getElementIndex(o,s)]=l,e[tr.getElementIndex(s,o)]=-l,e}const ii=new ee,OV=new ee,DV=new ee,kV=new ee,QV=new ee,FV=new bt,UV={diagonal:new bt,unitary:new bt};function GV(t,e=new dv){if(!t||t.length===0)return e.halfAxes=new bt([0,0,0,0,0,0,0,0,0]),e.center=new ee,e;const n=t.length,r=new ee(0,0,0);for(const B of t)r.add(B);const i=1/n;r.multiplyByScalar(i);let s=0,o=0,a=0,l=0,c=0,u=0;for(const B of t){const N=ii.copy(B).subtract(r);s+=N.x*N.x,o+=N.x*N.y,a+=N.x*N.z,l+=N.y*N.y,c+=N.y*N.z,u+=N.z*N.z}s*=i,o*=i,a*=i,l*=i,c*=i,u*=i;const f=FV;f[0]=s,f[1]=o,f[2]=a,f[3]=o,f[4]=l,f[5]=c,f[6]=a,f[7]=c,f[8]=u;const{unitary:h}=PV(f,UV),d=e.halfAxes.copy(h);let A=d.getColumn(0,DV),p=d.getColumn(1,kV),g=d.getColumn(2,QV),m=-Number.MAX_VALUE,v=-Number.MAX_VALUE,E=-Number.MAX_VALUE,_=Number.MAX_VALUE,I=Number.MAX_VALUE,C=Number.MAX_VALUE;for(const B of t)ii.copy(B),m=Math.max(ii.dot(A),m),v=Math.max(ii.dot(p),v),E=Math.max(ii.dot(g),E),_=Math.min(ii.dot(A),_),I=Math.min(ii.dot(p),I),C=Math.min(ii.dot(g),C);A=A.multiplyByScalar(.5*(_+m)),p=p.multiplyByScalar(.5*(I+v)),g=g.multiplyByScalar(.5*(C+E)),e.center.copy(A).add(p).add(g);const R=OV.set(m-_,v-I,E-C).multiplyByScalar(.5),P=new bt([R[0],0,0,0,R[1],0,0,0,R[2]]);return e.halfAxes.multiplyRight(P),e}const Ao=512,Lx=3,NS=[[.5,.5],[0,0],[0,1],[1,0],[1,1]],OS=NS.concat([[0,.5],[.5,0],[1,.5],[.5,1]]),zV=OS.concat([[.25,.5],[.75,.5]]);class go{constructor(e,n,r){y(this,"x",void 0),y(this,"y",void 0),y(this,"z",void 0),y(this,"childVisible",void 0),y(this,"selected",void 0),y(this,"_children",void 0),this.x=e,this.y=n,this.z=r}get children(){if(!this._children){const e=this.x*2,n=this.y*2,r=this.z+1;this._children=[new go(e,n,r),new go(e,n+1,r),new go(e+1,n,r),new go(e+1,n+1,r)]}return this._children}update(e){const{viewport:n,cullingVolume:r,elevationBounds:i,minZ:s,maxZ:o,bounds:a,offset:l,project:c}=e,u=this.getBoundingVolume(i,l,c);if(a&&!this.insideBounds(a)||r.computeVisibility(u)<0)return!1;if(!this.childVisible){let{z:h}=this;if(h=s){const d=u.distanceTo(n.cameraPosition)*n.scale/n.height;h+=Math.floor(Math.log2(d))}if(h>=o)return this.selected=!0,!0}this.selected=!1,this.childVisible=!0;for(const h of this.children)h.update(e);return!0}getSelected(e=[]){if(this.selected&&e.push(this),this._children)for(const n of this._children)n.getSelected(e);return e}insideBounds([e,n,r,i]){const s=Math.pow(2,this.z),o=Ao/s;return this.x*oe&&(this.y+1)*o>n}getBoundingVolume(e,n,r){if(r){const l=this.z<1?zV:this.z<2?OS:NS,c=[];for(const u of l){const f=e0(this.x+u[0],this.y+u[1],this.z);f[2]=e[0],c.push(r(f)),e[0]!==e[1]&&(f[2]=e[1],c.push(r(f)))}return GV(c)}const i=Math.pow(2,this.z),s=Ao/i,o=this.x*s+n*Ao,a=Ao-(this.y+1)*s;return new fv([o,a,e[0]],[o+s,a+s,e[1]])}}function VV(t,e,n,r){const i=t instanceof vG&&t.resolution?t.projectPosition:null,s=Object.values(t.getFrustumPlanes()).map(({normal:d,distance:A})=>new bs(d.clone().negate(),A)),o=new Rr(s),a=t.distanceScales.unitsPerMeter[2],l=n&&n[0]*a||0,c=n&&n[1]*a||0,u=t instanceof dr&&t.pitch<=60?e:0;if(r){const[d,A,p,g]=r,m=Li([d,g]),v=Li([p,A]);r=[m[0],Ao-m[1],v[0],Ao-v[1]]}const f=new go(0,0,0),h={viewport:t,project:i,cullingVolume:o,elevationBounds:[l,c],minZ:u,maxZ:e,bounds:r,offset:0};if(f.update(h),t instanceof dr&&t.subViewports&&t.subViewports.length>1){for(h.offset=-1;f.update(h)&&!(--h.offset<-Lx););for(h.offset=1;f.update(h)&&!(++h.offset>Lx););}return f.getSelected()}const Ur=512,jV=[-1/0,-1/0,1/0,1/0],HV={type:"url",value:null,validate:(t,e)=>e.optional&&t===null||typeof t=="string"||Array.isArray(t)&&t.every(n=>typeof n=="string"),equals:(t,e)=>{if(t===e)return!0;if(!Array.isArray(t)||!Array.isArray(e))return!1;const n=t.length;if(n!==e.length)return!1;for(let r=0;ri[0])),Math.min(...n.map(i=>i[1])),Math.max(...n.map(i=>i[0])),Math.max(...n.map(i=>i[1]))]}function WV(t){return Math.abs(t.split("").reduce((e,n)=>(e<<5)-e+n.charCodeAt(0)|0,0))}function YV(t,e){if(!t||!t.length)return null;const{index:n,id:r}=e;if(Array.isArray(t)){const s=WV(r)%t.length;t=t[s]}let i=t;for(const s of Object.keys(n)){const o=new RegExp("{".concat(s,"}"),"g");i=i.replace(o,String(n[s]))}return Number.isInteger(n.y)&&Number.isInteger(n.z)&&(i=i.replace(/\{-y\}/g,String(Math.pow(2,n.z)-n.y-1))),i}function $V(t,e,n){let r;if(e&&e.length===2){const[i,s]=e,o=t.getBounds({z:i}),a=t.getBounds({z:s});r=[Math.min(o[0],a[0]),Math.min(o[1],a[1]),Math.max(o[2],a[2]),Math.max(o[3],a[3])]}else r=t.getBounds();return t.isGeospatial?[Math.max(r[0],n[0]),Math.max(r[1],n[1]),Math.min(r[2],n[2]),Math.min(r[3],n[3])]:[Math.max(Math.min(r[0],n[2]),n[0]),Math.max(Math.min(r[1],n[3]),n[1]),Math.min(Math.max(r[2],n[0]),n[2]),Math.min(Math.max(r[3],n[1]),n[3])]}function KV({viewport:t,z:e=0,cullRect:n}){return(t.subViewports||[t]).map(i=>Zp(i,e,n))}function Zp(t,e,n){if(!Array.isArray(e)){const s=n.x-t.x,o=n.y-t.y,{width:a,height:l}=n,c={targetZ:e},u=t.unproject([s,o],c),f=t.unproject([s+a,o],c),h=t.unproject([s,o+l],c),d=t.unproject([s+a,o+l],c);return[Math.min(u[0],f[0],h[0],d[0]),Math.min(u[1],f[1],h[1],d[1]),Math.max(u[0],f[0],h[0],d[0]),Math.max(u[1],f[1],h[1],d[1])]}const r=Zp(t,e[0],n),i=Zp(t,e[1],n);return[Math.min(r[0],i[0]),Math.min(r[1],i[1]),Math.max(r[2],i[2]),Math.max(r[3],i[3])]}function qV(t,e,n){return n?DS(t,n).map(i=>i*e/Ur):t.map(r=>r*e/Ur)}function Av(t,e){return Math.pow(2,t)*Ur/e}function e0(t,e,n){const r=Av(n,Ur),i=t/r*360-180,s=Math.PI-2*Math.PI*e/r,o=180/Math.PI*Math.atan(.5*(Math.exp(s)-Math.exp(-s)));return[i,o]}function Nx(t,e,n,r){const i=Av(n,r);return[t/i*Ur,e/i*Ur]}function XV(t,e,n,r,i=Ur){if(t.isGeospatial){const[c,u]=e0(e,n,r),[f,h]=e0(e+1,n+1,r);return{west:c,north:u,east:f,south:h}}const[s,o]=Nx(e,n,r,i),[a,l]=Nx(e+1,n+1,r,i);return{left:s,top:o,right:a,bottom:l}}function JV(t,e,n,r,i){const s=$V(t,null,r),o=Av(e,n),[a,l,c,u]=qV(s,o,i),f=[];for(let h=Math.floor(a);he&&(c=e);let u=i;return o&&a&&i&&!t.isGeospatial&&(u=DS(i,o)),t.isGeospatial?VV(t,c,r,i):JV(t,c,s,u||jV,a)}const Ox=1,ad=2,ej="never",tj="no-overlap",gv="best-available",nj=5,rj={[gv]:sj,[tj]:oj,[ej]:()=>{}};class ij{constructor(e){y(this,"opts",void 0),y(this,"_requestScheduler",void 0),y(this,"_cache",void 0),y(this,"_dirty",void 0),y(this,"_tiles",void 0),y(this,"_cacheByteSize",void 0),y(this,"_viewport",void 0),y(this,"_zRange",void 0),y(this,"_selectedTiles",void 0),y(this,"_frameNumber",void 0),y(this,"_modelMatrix",void 0),y(this,"_modelMatrixInverse",void 0),y(this,"_maxZoom",void 0),y(this,"_minZoom",void 0),y(this,"onTileLoad",void 0),y(this,"_getCullBounds",Cc(KV)),this.opts=e,this.onTileLoad=n=>{this.opts.onTileLoad(n),this.opts.maxCacheByteSize&&(this._cacheByteSize+=n.byteLength,this._resizeCache())},this._requestScheduler=new VN({maxRequests:e.maxRequests,throttleRequests:e.maxRequests>0}),this._cache=new Map,this._tiles=[],this._dirty=!1,this._cacheByteSize=0,this._viewport=null,this._selectedTiles=null,this._frameNumber=0,this._modelMatrix=new ze,this._modelMatrixInverse=new ze,this.setOptions(e)}get tiles(){return this._tiles}get selectedTiles(){return this._selectedTiles}get isLoaded(){return this._selectedTiles!==null&&this._selectedTiles.every(e=>e.isLoaded)}get needsReload(){return this._selectedTiles!==null&&this._selectedTiles.some(e=>e.needsReload)}setOptions(e){Object.assign(this.opts,e),Number.isFinite(e.maxZoom)&&(this._maxZoom=Math.floor(e.maxZoom)),Number.isFinite(e.minZoom)&&(this._minZoom=Math.ceil(e.minZoom))}finalize(){for(const e of this._cache.values())e.isLoading&&e.abort();this._cache.clear(),this._tiles=[],this._selectedTiles=null}reloadAll(){for(const e of this._cache.keys()){const n=this._cache.get(e);!this._selectedTiles||!this._selectedTiles.includes(n)?this._cache.delete(e):n.setNeedsReload()}}update(e,{zRange:n,modelMatrix:r}={}){const i=new ze(r),s=!i.equals(this._modelMatrix);if(!this._viewport||!e.equals(this._viewport)||!ur(this._zRange,n)||s){s&&(this._modelMatrixInverse=i.clone().invert(),this._modelMatrix=i),this._viewport=e,this._zRange=n;const a=this.getTileIndices({viewport:e,maxZoom:this._maxZoom,minZoom:this._minZoom,zRange:n,modelMatrix:this._modelMatrix,modelMatrixInverse:this._modelMatrixInverse});this._selectedTiles=a.map(l=>this._getTile(l,!0)),this._dirty&&this._rebuildTree()}else this.needsReload&&(this._selectedTiles=this._selectedTiles.map(a=>this._getTile(a.index,!0)));const o=this.updateTileStates();return this._pruneRequests(),this._dirty&&this._resizeCache(),o&&this._frameNumber++,this._frameNumber}isTileVisible(e,n){if(!e.isVisible)return!1;if(n&&this._viewport){const r=this._getCullBounds({viewport:this._viewport,z:this._zRange,cullRect:n}),{bbox:i}=e;for(const[s,o,a,l]of r){let c;if("west"in i)c=i.wests&&i.southo;else{const u=Math.min(i.top,i.bottom),f=Math.max(i.top,i.bottom);c=i.lefts&&uo}if(c)return!0}return!1}return!0}getTileIndices({viewport:e,maxZoom:n,minZoom:r,zRange:i,modelMatrix:s,modelMatrixInverse:o}){const{tileSize:a,extent:l,zoomOffset:c}=this.opts;return ZV({viewport:e,maxZoom:n,minZoom:r,zRange:i,tileSize:a,extent:l,modelMatrix:s,modelMatrixInverse:o,zoomOffset:c})}getTileId(e){return"".concat(e.x,"-").concat(e.y,"-").concat(e.z)}getTileZoom(e){return e.z}getTileMetadata(e){const{tileSize:n}=this.opts;return{bbox:XV(this._viewport,e.x,e.y,e.z,n)}}getParentIndex(e){const n=Math.floor(e.x/2),r=Math.floor(e.y/2),i=e.z-1;return{x:n,y:r,z:i}}updateTileStates(){const e=this.opts.refinementStrategy||gv,n=new Array(this._cache.size);let r=0;for(const i of this._cache.values())n[r++]=i.isVisible,i.isSelected=!1,i.isVisible=!1;for(const i of this._selectedTiles)i.isSelected=!0,i.isVisible=!0;(typeof e=="function"?e:rj[e])(Array.from(this._cache.values())),r=0;for(const i of this._cache.values())if(n[r++]!==i.isVisible)return!0;return!1}_pruneRequests(){const{maxRequests:e}=this.opts,n=[];let r=0;for(const i of this._cache.values())i.isLoading&&(r++,!i.isSelected&&!i.isVisible&&n.push(i));for(;e>0&&r>e&&n.length>0;)n.shift().abort(),r--}_rebuildTree(){const{_cache:e}=this;for(const n of e.values())n.parent=null,n.children&&(n.children.length=0);for(const n of e.values()){const r=this._getNearestAncestor(n);n.parent=r,r!=null&&r.children&&r.children.push(n)}}_resizeCache(){const{_cache:e,opts:n}=this,r=n.maxCacheSize||(n.maxCacheByteSize?1/0:nj*this.selectedTiles.length),i=n.maxCacheByteSize||1/0;if(e.size>r||this._cacheByteSize>i){for(const[o,a]of e)if(!a.isVisible&&!a.isSelected&&(this._cacheByteSize-=n.maxCacheByteSize?a.byteLength:0,e.delete(o),this.opts.onTileUnload(a)),e.size<=r&&this._cacheByteSize<=i)break;this._rebuildTree(),this._dirty=!0}this._dirty&&(this._tiles=Array.from(this._cache.values()).sort((o,a)=>o.zoom-a.zoom),this._dirty=!1)}_getTile(e,n){const r=this.getTileId(e);let i=this._cache.get(r),s=!1;return!i&&n?(i=new xV(e),Object.assign(i,this.getTileMetadata(i.index)),Object.assign(i,{id:r,zoom:this.getTileZoom(i.index)}),s=!0,this._cache.set(r,i),this._dirty=!0):i&&i.needsReload&&(s=!0),i&&s&&i.loadData({getData:this.opts.getTileData,requestScheduler:this._requestScheduler,onLoad:this.onTileLoad,onError:this.opts.onTileError}),i}_getNearestAncestor(e){const{_minZoom:n=0}=this;let r=e.index;for(;this.getTileZoom(r)>n;){r=this.getParentIndex(r);const i=this._getTile(r);if(i)return i}return null}}function sj(t){for(const e of t)e.state=0;for(const e of t)e.isSelected&&!kS(e)&&pv(e);for(const e of t)e.isVisible=!!(e.state&ad)}function oj(t){for(const n of t)n.state=0;for(const n of t)n.isSelected&&kS(n);const e=Array.from(t).sort((n,r)=>n.zoom-r.zoom);for(const n of e)if(n.isVisible=!!(n.state&ad),n.children&&(n.isVisible||n.state&Ox))for(const r of n.children)r.state=Ox;else n.isSelected&&pv(n)}function kS(t){let e=t;for(;e;){if(e.isLoaded||e.content)return e.state|=ad,!0;e=e.parent}return!1}function pv(t){for(const e of t.children)e.isLoaded||e.content?e.state|=ad:pv(e)}const aj={TilesetClass:ij,data:{type:"data",value:[]},dataComparator:HV.equals,renderSubLayers:{type:"function",value:t=>new uv(t),compare:!1},getTileData:{type:"function",optional:!0,value:null,compare:!1},onViewportLoad:{type:"function",optional:!0,value:null,compare:!1},onTileLoad:{type:"function",value:t=>{},compare:!1},onTileUnload:{type:"function",value:t=>{},compare:!1},onTileError:{type:"function",value:t=>console.error(t),compare:!1},extent:{type:"array",optional:!0,value:null,compare:!0},tileSize:512,maxZoom:null,minZoom:0,maxCacheSize:null,maxCacheByteSize:null,refinementStrategy:gv,zRange:null,maxRequests:6,zoomOffset:0};class mv extends Rn{initializeState(){this.state={tileset:null,isLoaded:!1}}finalizeState(){var e,n;(e=this.state)===null||e===void 0||(n=e.tileset)===null||n===void 0||n.finalize()}get isLoaded(){var e,n;return(e=this.state)===null||e===void 0||(n=e.tileset)===null||n===void 0?void 0:n.selectedTiles.every(r=>r.isLoaded&&r.layers&&r.layers.every(i=>i.isLoaded))}shouldUpdateState({changeFlags:e}){return e.somethingChanged}updateState({changeFlags:e}){let{tileset:n}=this.state;const r=e.propsOrDataChanged||e.updateTriggersChanged,i=e.dataChanged||e.updateTriggersChanged&&(e.updateTriggersChanged.all||e.updateTriggersChanged.getTileData);n?r&&(n.setOptions(this._getTilesetOptions()),i?n.reloadAll():this.state.tileset.tiles.forEach(s=>{s.layers=null})):(n=new this.props.TilesetClass(this._getTilesetOptions()),this.setState({tileset:n})),this._updateTileset()}_getTilesetOptions(){const{tileSize:e,maxCacheSize:n,maxCacheByteSize:r,refinementStrategy:i,extent:s,maxZoom:o,minZoom:a,maxRequests:l,zoomOffset:c}=this.props;return{maxCacheSize:n,maxCacheByteSize:r,maxZoom:o,minZoom:a,tileSize:e,refinementStrategy:i,extent:s,maxRequests:l,zoomOffset:c,getTileData:this.getTileData.bind(this),onTileLoad:this._onTileLoad.bind(this),onTileError:this._onTileError.bind(this),onTileUnload:this._onTileUnload.bind(this)}}_updateTileset(){const{tileset:e}=this.state,{zRange:n,modelMatrix:r}=this.props,i=e.update(this.context.viewport,{zRange:n,modelMatrix:r}),{isLoaded:s}=e,o=this.state.isLoaded!==s,a=this.state.frameNumber!==i;s&&(o||a)&&this._onViewportLoad(),a&&this.setState({frameNumber:i}),this.state.isLoaded=s}_onViewportLoad(){const{tileset:e}=this.state,{onViewportLoad:n}=this.props;n&&n(e.selectedTiles)}_onTileLoad(e){this.props.onTileLoad(e),e.layers=null,this.setNeedsUpdate()}_onTileError(e,n){this.props.onTileError(e),n.layers=null,this.setNeedsUpdate()}_onTileUnload(e){this.props.onTileUnload(e)}getTileData(e){const{data:n,getTileData:r,fetch:i}=this.props,{signal:s}=e;return e.url=typeof n=="string"||Array.isArray(n)?YV(n,e):null,r?r(e):i&&e.url?i(e.url,{propName:"data",layer:this,signal:s}):null}renderSubLayers(e){return this.props.renderSubLayers(e)}getSubLayerPropsByTile(e){return null}getPickingInfo({info:e,sourceLayer:n}){return e.picked&&(e.tile=n.props.tile),e}_updateAutoHighlight(e){e.sourceLayer&&e.sourceLayer.updateAutoHighlight(e)}renderLayers(){return this.state.tileset.tiles.map(e=>{const n=this.getSubLayerPropsByTile(e);if(!(!e.isLoaded&&!e.content))if(e.layers)n&&e.layers[0]&&Object.keys(n).some(r=>e.layers[0].props[r]!==n[r])&&(e.layers=e.layers.map(r=>r.clone(n)));else{const r=this.renderSubLayers({...this.props,id:"".concat(this.id,"-").concat(e.id),data:e.content,_offset:0,tile:e});e.layers=Jh(r,Boolean).map(i=>i.clone({tile:e,...n}))}return e.layers})}filterSubLayer({layer:e,cullRect:n}){const{tile:r}=e.props;return this.state.tileset.isTileVisible(r,n)}}y(mv,"defaultProps",aj);y(mv,"layerName","TileLayer");const nK={Version:0,AddCompression:1},rK={None:0,Deflate:1},lj=new Map;function Yr(t,e){Array.isArray(t)||(t=[t]),t.forEach(n=>lj.set(n,e))}Yr([void 0,1],()=>$t(()=>import("./raw-1d43a02d.js"),[],import.meta.url).then(t=>t.default));Yr(5,()=>$t(()=>import("./lzw-3db4ee34.js"),[],import.meta.url).then(t=>t.default));Yr(6,()=>{throw new Error("old style JPEG compression is not supported.")});Yr(7,()=>$t(()=>import("./jpeg-cb914599.js"),[],import.meta.url).then(t=>t.default));Yr([8,32946],()=>$t(()=>import("./deflate-6ae45faf.js"),["./deflate-6ae45faf.js","./pako.esm-83c587a0.js"],import.meta.url).then(t=>t.default));Yr(32773,()=>$t(()=>import("./packbits-b4df93ae.js"),[],import.meta.url).then(t=>t.default));Yr(34887,()=>$t(()=>import("./lerc-232dfb7b.js"),["./lerc-232dfb7b.js","./pako.esm-83c587a0.js"],import.meta.url).then(t=>t.default));Yr(50001,()=>$t(()=>import("./webimage-acdafa3b.js"),[],import.meta.url).then(t=>t.default));class cj extends Map{constructor(e={}){if(super(),!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if(typeof e.maxAge=="number"&&e.maxAge===0)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=e.maxSize,this.maxAge=e.maxAge||Number.POSITIVE_INFINITY,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(e){if(typeof this.onEviction=="function")for(const[n,r]of e)this.onEviction(n,r.value)}_deleteIfExpired(e,n){return typeof n.expiry=="number"&&n.expiry<=Date.now()?(typeof this.onEviction=="function"&&this.onEviction(e,n.value),this.delete(e)):!1}_getOrDeleteIfExpired(e,n){if(this._deleteIfExpired(e,n)===!1)return n.value}_getItemValue(e,n){return n.expiry?this._getOrDeleteIfExpired(e,n):n.value}_peek(e,n){const r=n.get(e);return this._getItemValue(e,r)}_set(e,n){this.cache.set(e,n),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(e,n){this.oldCache.delete(e),this._set(e,n)}*_entriesAscending(){for(const e of this.oldCache){const[n,r]=e;this.cache.has(n)||this._deleteIfExpired(n,r)===!1&&(yield e)}for(const e of this.cache){const[n,r]=e;this._deleteIfExpired(n,r)===!1&&(yield e)}}get(e){if(this.cache.has(e)){const n=this.cache.get(e);return this._getItemValue(e,n)}if(this.oldCache.has(e)){const n=this.oldCache.get(e);if(this._deleteIfExpired(e,n)===!1)return this._moveToRecent(e,n),n.value}}set(e,n,{maxAge:r=this.maxAge}={}){const i=typeof r=="number"&&r!==Number.POSITIVE_INFINITY?Date.now()+r:void 0;this.cache.has(e)?this.cache.set(e,{value:n,expiry:i}):this._set(e,{value:n,expiry:i})}has(e){return this.cache.has(e)?!this._deleteIfExpired(e,this.cache.get(e)):this.oldCache.has(e)?!this._deleteIfExpired(e,this.oldCache.get(e)):!1}peek(e){if(this.cache.has(e))return this._peek(e,this.cache);if(this.oldCache.has(e))return this._peek(e,this.oldCache)}delete(e){const n=this.cache.delete(e);return n&&this._size--,this.oldCache.delete(e)||n}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(e){if(!(e&&e>0))throw new TypeError("`maxSize` must be a number greater than 0");const n=[...this._entriesAscending()],r=n.length-e;r<0?(this.cache=new Map(n),this.oldCache=new Map,this._size=n.length):(r>0&&this._emitEvictions(n.slice(0,r)),this.oldCache=new Map(n.slice(r)),this.cache=new Map,this._size=0),this.maxSize=e}*keys(){for(const[e]of this)yield e}*values(){for(const[,e]of this)yield e}*[Symbol.iterator](){for(const e of this.cache){const[n,r]=e;this._deleteIfExpired(n,r)===!1&&(yield[n,r.value])}for(const e of this.oldCache){const[n,r]=e;this.cache.has(n)||this._deleteIfExpired(n,r)===!1&&(yield[n,r.value])}}*entriesDescending(){let e=[...this.cache];for(let n=e.length-1;n>=0;--n){const r=e[n],[i,s]=r;this._deleteIfExpired(i,s)===!1&&(yield[i,s.value])}e=[...this.oldCache];for(let n=e.length-1;n>=0;--n){const r=e[n],[i,s]=r;this.cache.has(i)||this._deleteIfExpired(i,s)===!1&&(yield[i,s.value])}}*entriesAscending(){for(const[e,n]of this._entriesAscending())yield[e,n.value]}get size(){if(!this._size)return this.oldCache.size;let e=0;for(const n of this.oldCache.keys())this.cache.has(n)||e++;return Math.min(this._size+e,this.maxSize)}entries(){return this.entriesAscending()}forEach(e,n=this){for(const[r,i]of this.entriesAscending())e.call(n,i,r,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}}function uj(t,e){let n=t.length-e,r=0;do{for(let i=e;i>0;i--)t[r+e]+=t[r],r++;n-=e}while(n>0)}function fj(t,e,n){let r=0,i=t.length;const s=i/n;for(;i>e;){for(let a=e;a>0;--a)t[r+e]+=t[r],++r;i-=e}const o=t.slice();for(let a=0;a=t.byteLength);++l){let c;if(e===2){switch(i[0]){case 8:c=new Uint8Array(t,l*a*n*o,a*n*o);break;case 16:c=new Uint16Array(t,l*a*n*o,a*n*o/2);break;case 32:c=new Uint32Array(t,l*a*n*o,a*n*o/4);break;default:throw new Error(`Predictor 2 not allowed with ${i[0]} bits per sample.`)}uj(c,a)}else e===3&&(c=new Uint8Array(t,l*a*n*o,a*n*o),fj(c,a,o))}return t}class dj{async decode(e,n){const r=await this.decodeBlock(n),i=e.Predictor||1;if(i!==1){const s=!e.StripOffsets,o=s?e.TileWidth:e.ImageWidth,a=s?e.TileLength:e.RowsPerStrip||e.ImageLength;return hj(r,i,o,a,e.BitsPerSample,e.PlanarConfiguration)}return r}}let Fn,Lu=null;function Dx(){return Lu!==null&&Lu.buffer===Fn.memory.buffer||(Lu=new Uint8Array(Fn.memory.buffer)),Lu}let kx=0,Nu=null;function Qx(){return Nu!==null&&Nu.buffer===Fn.memory.buffer||(Nu=new Int32Array(Fn.memory.buffer)),Nu}async function vv(t){t===void 0&&(t="".replace(/\.js$/,"_bg.wasm")),(typeof t=="string"||typeof Request=="function"&&t instanceof Request||typeof URL=="function"&&t instanceof URL)&&(t=fetch(t));const{instance:e,module:n}=await async function(r,i){if(typeof Response=="function"&&r instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(r,i)}catch(o){if(r.headers.get("Content-Type")=="application/wasm")throw o;console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",o)}const s=await r.arrayBuffer();return await WebAssembly.instantiate(s,i)}{const s=await WebAssembly.instantiate(r,i);return s instanceof WebAssembly.Instance?{instance:s,module:r}:s}}(await t,{});return Fn=e.exports,vv.__wbindgen_wasm_module=n,Fn}var Aj=Object.freeze({__proto__:null,decompress:function(t,e){try{const c=Fn.__wbindgen_add_to_stack_pointer(-16);var n=function(u,f){const h=f(1*u.length);return Dx().set(u,h/1),kx=u.length,h}(t,Fn.__wbindgen_malloc),r=kx;Fn.decompress(c,n,r,e);var i=Qx()[c/4+0],s=Qx()[c/4+1],o=(a=i,l=s,Dx().subarray(a/1,a/1+l)).slice();return Fn.__wbindgen_free(i,1*s),o}finally{Fn.__wbindgen_add_to_stack_pointer(16)}var a,l},default:vv});const gj=[62,0,0,0,63,52,53,54,55,56,57,58,59,60,61,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,0,0,0,0,0,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51];function Ou(t){return gj[t-43]}const pj=function(t){let e,n=t.endsWith("==")?2:t.endsWith("=")?1:0,r=t.length,i=new Uint8Array(r/4*3);for(let s=0,o=0;s>16,i[o+1]=e>>8&255,i[o+2]=255&e;return i.subarray(0,i.length-n)}("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NwMAIANBEGokAA8LIARBCEHYhcAAEDcACyACQQhByIXAABA3AAuqAgEDfyMAQYABayIEJAACQAJAAn8CQCABKAIAIgNBEHFFBEAgACgCACECIANBIHENASACrSABEBUMAgsgACgCACECQQAhAANAIAAgBGpB/wBqIAJBD3EiA0EwciADQdcAaiADQQpJGzoAACAAQX9qIQAgAkEEdiICDQALIABBgAFqIgJBgQFPDQIgAUGkjsAAQQIgACAEakGAAWpBACAAaxAIDAELQQAhAANAIAAgBGpB/wBqIAJBD3EiA0EwciADQTdqIANBCkkbOgAAIABBf2ohACACQQR2IgINAAsgAEGAAWoiAkGBAU8NAiABQaSOwABBAiAAIARqQYABakEAIABrEAgLIARBgAFqJAAPCyACQYABQZSOwAAQOQALIAJBgAFBlI7AABA5AAuxAgEEfyMAQUBqIgIkACABKAIEIgNFBEAgAUEEaiEDIAEoAgAhBCACQQA2AiAgAkIBNwMYIAIgAkEYajYCJCACQThqIARBEGopAgA3AwAgAkEwaiAEQQhqKQIANwMAIAIgBCkCADcDKCACQSRqQdiJwAAgAkEoahAJGiACQRBqIgQgAigCIDYCACACIAIpAxg3AwgCQCABKAIEIgVFDQAgAUEIaigCAEUNACAFEAQLIAMgAikDCDcCACADQQhqIAQoAgA2AgAgAygCACEDCyABQQE2AgQgAUEMaigCACEEIAFBCGoiASgCACEFIAFCADcCAEEMQQQQWSIBRQRAQQxBBBBjAAsgASAENgIIIAEgBTYCBCABIAM2AgAgAEGQi8AANgIEIAAgATYCACACQUBrJAAL/AEBAn8jAEEQayICJAAgACgCACACQQA2AgwCfwJAAkAgAUGAAU8EQCABQYAQSQ0BIAJBDGohACABQYCABE8NAiACIAFBP3FBgAFyOgAOIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDDAMLIAIgAToADCACQQxqIQBBAQwCCyACIAFBP3FBgAFyOgANIAIgAUEGdkHAAXI6AAwgAkEMaiEAQQIMAQsgAiABQT9xQYABcjoADyACIAFBEnZB8AFyOgAMIAIgAUEGdkE/cUGAAXI6AA4gAiABQQx2QT9xQYABcjoADUEECyEBIAAgARALIAJBEGokAAv5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QSxqQQI2AgAgAUE8akEhNgIAIAFCAjcCHCABQayMwAA2AhggAUEdNgI0IAEgAUEwajYCKCABIAFBEGo2AjggASABQQhqNgIwIAFBGGpB8IDAABBRAAtxAQN/IwBBIGsiAiQAAkAgACABEBkNACABQRxqKAIAIQMgASgCGCACQRxqQQA2AgAgAkHwi8AANgIYIAJCATcCDCACQfSLwAA2AgggAyACQQhqEAkNACAAQQRqIAEQGSACQSBqJAAPCyACQSBqJABBAQswAQF/AkACQEGAwABBAhBZIgENAQwAC0GAwABBAhBjAAsgACABNgIAIABBgCA2AgQLewECfwJAAkAgACgCBCIBBEAgACgCDCICIAFPDQEgACgCACIBIAJqIAEtAAA6AAAgAEEANgIIIAAgACgCDEEBajYCDCAAKAIERQ0CIAAoAgAtAAAPC0EAQQBBiIbAABA2AAsgAiABQZiGwAAQNgALQQBBAEGohsAAEDYAC2gBAn8gACAALQBGIgFBAWoiAjoACiAAQQEgAUEPcXRBAmoiATsBQCAAQX8gAkEPcXRBf3M7AQggAEEYaigCACABQf//A3EiAU8EQCAAIAE2AhgLIABBJGooAgAgAU8EQCAAIAE2AiQLC1ABAX8gAEEUaigCACIBRSABQQJ0RXJFBEAgACgCEBAECyAAQSBqKAIAIgFFIAFBAXRFckUEQCAAKAIcEAQLIABBLGooAgAEQCAAKAIoEAQLC2wBAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakEcNgIAIANCAjcCDCADQYCNwAA2AgggA0EcNgIkIAMgA0EgajYCGCADIAM2AiggAyADQQRqNgIgIANBCGogAhBRAAtsAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EcakECNgIAIANBLGpBHDYCACADQgI3AgwgA0HMkcAANgIIIANBHDYCJCADIANBIGo2AhggAyADQQRqNgIoIAMgAzYCICADQQhqIAIQUQALbAEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQRw2AgAgA0ICNwIMIANBgJLAADYCCCADQRw2AiQgAyADQSBqNgIYIAMgA0EEajYCKCADIAM2AiAgA0EIaiACEFEAC2wBAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakEcNgIAIANCAjcCDCADQayRwAA2AgggA0EcNgIkIAMgA0EgajYCGCADIANBBGo2AiggAyADNgIgIANBCGogAhBRAAtcAQF/IwBBEGsiAyQAAkAgACgCBCABayACTwRAIANBADYCAAwBCyADIAAgASACEBYgAygCAEEBRw0AIANBCGooAgAiAARAIAMoAgQgABBjAAsQXQALIANBEGokAAtaAQF/IwBBEGsiAiQAAkAgACgCBCABa0EBTwRAIAJBADYCAAwBCyACIAAgARAeIAIoAgBBAUcNACACQQhqKAIAIgAEQCACKAIEIAAQYwALEF0ACyACQRBqJAALWgEBfyMAQRBrIgIkAAJAIAAoAgQgAWtBAU8EQCACQQA2AgAMAQsgAiAAIAEQHSACKAIAQQFHDQAgAkEIaigCACIABEAgAigCBCAAEGMACxBdAAsgAkEQaiQAC1kBAX8jAEEgayICJAAgAiAAKAIANgIEIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpB2InAACACQQhqEAkgAkEgaiQAC0YAAkBBCCACSQRAAn9BCCACSQRAIAIgAxAQDAELIAMQAAsiAg0BQQAPCyAAIAMQCg8LIAIgACADIAEgASADSxsQSyAAEAQLWQEBfyMAQSBrIgIkACACIAAoAgA2AgQgAkEYaiABQRBqKQIANwMAIAJBEGogAUEIaikCADcDACACIAEpAgA3AwggAkEEakHwj8AAIAJBCGoQCSACQSBqJAALWQACQAJAAkAgAUF/SgRAAkAgAgRAIAENAQwECyABRQ0DIAFBARBZIgINBAwCCyABEEciAkUNAQwDCxBdAAsgAUEBEGMAC0EBIQILIAAgATYCBCAAIAI2AgALVgEBfyMAQSBrIgIkACACIAA2AgQgAkEYaiABQRBqKQIANwMAIAJBEGogAUEIaikCADcDACACIAEpAgA3AwggAkEEakHwj8AAIAJBCGoQCSACQSBqJAALWQEDfwJAIAEoAgwiAiABKAIIIgNPBEAgASgCBCIEIAJJDQEgASgCACEBIAAgAiADazYCBCAAIAEgA2o2AgAPCyADIAJB2IbAABA4AAsgAiAEQdiGwAAQNwALVQEBfyAAQRBqIAAt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");let tg;async function mj(t,e){tg||(tg=await(async()=>(await vv(pj),Aj))());const n=tg.decompress(t,e);if(n.length===0)throw Error("Failed to decode with LZW decoder.");return n}var vj={},QS={},Ar={};(function(t){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",n=e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",r="["+e+"]["+n+"]*",i=new RegExp("^"+r+"$"),s=function(a,l){const c=[];let u=l.exec(a);for(;u;){const f=[];f.startIndex=l.lastIndex-u[0].length;const h=u.length;for(let d=0;d"u")};t.isExist=function(a){return typeof a<"u"},t.isEmptyObject=function(a){return Object.keys(a).length===0},t.merge=function(a,l,c){if(l){const u=Object.keys(l),f=u.length;for(let h=0;h1){r[o]=[];for(let a in t.child[o])t.child[o].hasOwnProperty(a)&&r[o].push(t0(t.child[o][a],e,o))}else{const a=t0(t.child[o][0],e,o),l=e.arrayMode===!0&&typeof a=="object"||qi.isTagNameInArrayMode(o,e.arrayMode,n);r[o]=l?[a]:a}}return r};QS.convertToJson=t0;var Ss={},yj=function(t,e,n){this.tagname=t,this.parent=e,this.child={},this.attrsMap={},this.val=n,this.addChild=function(r){Array.isArray(this.child[r.tagname])?this.child[r.tagname].push(r):this.child[r.tagname]=[r]}};const Ej=/^[-+]?0x[a-fA-F0-9]+$/,_j=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt);!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const xj={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function Cj(t,e={}){if(e=Object.assign({},xj,e),!t||typeof t!="string")return t;let n=t.trim();if(e.skipLike!==void 0&&e.skipLike.test(n))return t;if(e.hex&&Ej.test(n))return Number.parseInt(n,16);{const r=_j.exec(n);if(r){const i=r[1],s=r[2];let o=Ij(r[3]);const a=r[4]||r[6];if(!e.leadingZeros&&s.length>0&&i&&n[2]!==".")return t;if(!e.leadingZeros&&s.length>0&&!i&&n[1]!==".")return t;{const l=Number(n),c=""+l;return c.search(/[eE]/)!==-1||a?e.eNotation?l:t:n.indexOf(".")!==-1?c==="0"&&o===""||c===o||i&&c==="-"+o?l:t:s?o===c||i+o===c?l:t:n===c||n===i+c?l:t}}else return t}}function Ij(t){return t&&t.indexOf(".")!==-1&&(t=t.replace(/0+$/,""),t==="."?t="0":t[0]==="."?t="0"+t:t[t.length-1]==="."&&(t=t.substr(0,t.length-1))),t}var wj=Cj;const us=Ar,bj=Ar.buildOptions,Du=yj,Sj=wj;"<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)".replace(/NAME/g,us.nameRegexp);!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt);!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const FS={attributeNamePrefix:"@_",attrNodeName:!1,textNodeName:"#text",ignoreAttributes:!0,ignoreNameSpace:!1,allowBooleanAttributes:!1,parseNodeValue:!0,parseAttributeValue:!1,arrayMode:!1,trimValues:!0,cdataTagName:!1,cdataPositionChar:"\\c",numParseOptions:{hex:!0,leadingZeros:!0},tagValueProcessor:function(t,e){return t},attrValueProcessor:function(t,e){return t},stopNodes:[],alwaysCreateTextNode:!1};Ss.defaultOptions=FS;const US=["attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","ignoreNameSpace","allowBooleanAttributes","parseNodeValue","parseAttributeValue","arrayMode","trimValues","cdataTagName","cdataPositionChar","tagValueProcessor","attrValueProcessor","parseTrueNumberOnly","numParseOptions","stopNodes","alwaysCreateTextNode"];Ss.props=US;function ku(t,e,n){return e&&(n.trimValues&&(e=e.trim()),e=n.tagValueProcessor(e,t),e=GS(e,n.parseNodeValue,n.numParseOptions)),e}function Tj(t,e){if(e.ignoreNameSpace){const n=t.split(":"),r=t.charAt(0)==="/"?"/":"";if(n[0]==="xmlns")return"";n.length===2&&(t=r+n[1])}return t}function GS(t,e,n){if(e&&typeof t=="string"){const r=t.trim();return r==="true"?!0:r==="false"?!1:Sj(t,n)}else return us.isExist(t)?t:""}const Bj=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])(.*?)\\3)?`,"g");function Fx(t,e){if(!e.ignoreAttributes&&typeof t=="string"){t=t.replace(/\r?\n/g," ");const n=us.getAllMatches(t,Bj),r=n.length,i={};for(let s=0;s",s,"Closing Tag is not closed.");let l=t.substring(s+2,a).trim();if(e.ignoreNameSpace){const c=l.indexOf(":");c!==-1&&(l=l.substr(c+1))}r&&(r.val?r.val=us.getValue(r.val)+""+ku(l,i,e):r.val=ku(l,i,e)),e.stopNodes.length&&e.stopNodes.includes(r.tagname)&&(r.child=[],r.attrsMap==null&&(r.attrsMap={}),r.val=t.substr(r.startIndex+1,s-r.startIndex-1)),r=r.parent,i="",s=a}else if(t[s+1]==="?")s=Qa(t,"?>",s,"Pi Tag is not closed.");else if(t.substr(s+1,3)==="!--")s=Qa(t,"-->",s,"Comment is not closed.");else if(t.substr(s+1,2)==="!D"){const a=Qa(t,">",s,"DOCTYPE is not closed.");t.substring(s,a).indexOf("[")>=0?s=t.indexOf("]>",s)+1:s=a}else if(t.substr(s+1,2)==="!["){const a=Qa(t,"]]>",s,"CDATA is not closed.")-2,l=t.substring(s+9,a);if(i&&(r.val=us.getValue(r.val)+""+ku(r.tagname,i,e),i=""),e.cdataTagName){const c=new Du(e.cdataTagName,r,l);r.addChild(c),r.val=us.getValue(r.val)+e.cdataPositionChar,l&&(c.val=l)}else r.val=(r.val||"")+(l||"");s=a+2}else{const a=Pj(t,s+1);let l=a.data;const c=a.index,u=l.indexOf(" ");let f=l,h=!0;if(u!==-1&&(f=l.substr(0,u).replace(/\s\s*$/,""),l=l.substr(u+1)),e.ignoreNameSpace){const d=f.indexOf(":");d!==-1&&(f=f.substr(d+1),h=f!==a.data.substr(d+1))}if(r&&i&&r.tagname!=="!xml"&&(r.val=us.getValue(r.val)+""+ku(r.tagname,i,e)),l.length>0&&l.lastIndexOf("/")===l.length-1){f[f.length-1]==="/"?(f=f.substr(0,f.length-1),l=f):l=l.substr(0,l.length-1);const d=new Du(f,r,"");f!==l&&(d.attrsMap=Fx(l,e)),r.addChild(d)}else{const d=new Du(f,r);e.stopNodes.length&&e.stopNodes.includes(d.tagname)&&(d.startIndex=c),f!==l&&h&&(d.attrsMap=Fx(l,e)),r.addChild(d),r=d}i="",s=c}else i+=t[s];return n};function Pj(t,e){let n,r="";for(let i=e;i")return{data:r,index:i};s===" "&&(s=" ")}r+=s}}function Qa(t,e,n,r){const i=t.indexOf(e,n);if(i===-1)throw new Error(r);return i+e.length-1}Ss.getTraversalObj=Rj;var zS={};const ld=Ar,Mj={allowBooleanAttributes:!1},Lj=["allowBooleanAttributes"];zS.validate=function(t,e){e=ld.buildOptions(e,Mj,Lj);const n=[];let r=!1,i=!1;t[0]==="\uFEFF"&&(t=t.substr(1));for(let s=0;s"&&t[s]!==" "&&t[s]!==" "&&t[s]!==` +`&&t[s]!=="\r";s++)l+=t[s];if(l=l.trim(),l[l.length-1]==="/"&&(l=l.substring(0,l.length-1),s--),!Gj(l)){let f;return l.trim().length===0?f="Invalid space after '<'.":f="Tag '"+l+"' is an invalid name.",gt("InvalidTag",f,sn(t,s))}const c=Dj(t,s);if(c===!1)return gt("InvalidAttr","Attributes for '"+l+"' have open quote.",sn(t,s));let u=c.value;if(s=c.index,u[u.length-1]==="/"){const f=s-u.length;u=u.substring(0,u.length-1);const h=zx(u,e);if(h===!0)r=!0;else return gt(h.err.code,h.err.msg,sn(t,f+h.err.line))}else if(a)if(c.tagClosed){if(u.trim().length>0)return gt("InvalidTag","Closing tag '"+l+"' can't have attributes or invalid starting.",sn(t,o));{const f=n.pop();if(l!==f.tagName){let h=sn(t,f.tagStartPos);return gt("InvalidTag","Expected closing tag '"+f.tagName+"' (opened in line "+h.line+", col "+h.col+") instead of closing tag '"+l+"'.",sn(t,o))}n.length==0&&(i=!0)}}else return gt("InvalidTag","Closing tag '"+l+"' doesn't have proper closing.",sn(t,s));else{const f=zx(u,e);if(f!==!0)return gt(f.err.code,f.err.msg,sn(t,s-u.length+f.err.line));if(i===!0)return gt("InvalidXml","Multiple possible root nodes found.",sn(t,s));n.push({tagName:l,tagStartPos:o}),r=!0}for(s++;s0)return gt("InvalidXml","Invalid '"+JSON.stringify(n.map(s=>s.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1})}else return gt("InvalidXml","Start tag expected.",1);return!0};function Ux(t,e){const n=e;for(;e5&&r==="xml")return gt("InvalidXml","XML declaration allowed only at the start of the document.",sn(t,e));if(t[e]=="?"&&t[e+1]==">"){e++;break}else continue}return e}function Gx(t,e){if(t.length>e+5&&t[e+1]==="-"&&t[e+2]==="-"){for(e+=3;e"){e+=2;break}}else if(t.length>e+8&&t[e+1]==="D"&&t[e+2]==="O"&&t[e+3]==="C"&&t[e+4]==="T"&&t[e+5]==="Y"&&t[e+6]==="P"&&t[e+7]==="E"){let n=1;for(e+=8;e"&&(n--,n===0))break}else if(t.length>e+9&&t[e+1]==="["&&t[e+2]==="C"&&t[e+3]==="D"&&t[e+4]==="A"&&t[e+5]==="T"&&t[e+6]==="A"&&t[e+7]==="["){for(e+=8;e"){e+=2;break}}return e}const Nj='"',Oj="'";function Dj(t,e){let n="",r="",i=!1;for(;e"&&r===""){i=!0;break}n+=t[e]}return r!==""?!1:{value:n,index:e,tagClosed:i}}const kj=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function zx(t,e){const n=ld.getAllMatches(t,kj),r={};for(let i=0;i1){c+='"'+h+'" : [ ';for(let d in o.child[h])c+=i(o.child[h][d],a)+" , ";c=c.substr(0,c.length-1)+" ] "}else c+='"'+h+'" : '+i(o.child[h][0],a)+" ,"}return t.merge(c,o.attrsMap),t.isEmptyObject(c)?t.isExist(o.val)?o.val:"":(t.isExist(o.val)&&(typeof o.val=="string"&&(o.val===""||o.val===a.cdataPositionChar)||(c+='"'+a.textNodeName+'" : '+s(o.val))),c[c.length-1]===","&&(c=c.substr(0,c.length-2)),c+"}")};function s(o){return o===!0||o===!1||!isNaN(o)?o:'"'+o+'"'}return rg.convertToJsonString=r,rg}var ig,Hx;function jj(){if(Hx)return ig;Hx=1;const t=Ar.buildOptions,e={attributeNamePrefix:"@_",attrNodeName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataTagName:!1,cdataPositionChar:"\\c",format:!1,indentBy:" ",supressEmptyNode:!1,tagValueProcessor:function(A){return A},attrValueProcessor:function(A){return A}},n=["attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","cdataTagName","cdataPositionChar","format","indentBy","supressEmptyNode","tagValueProcessor","attrValueProcessor","rootNodeName"];function r(A){this.options=t(A,e,n),this.options.ignoreAttributes||this.options.attrNodeName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=h),this.options.cdataTagName?this.isCDATA=d:this.isCDATA=function(){return!1},this.replaceCDATAstr=s,this.replaceCDATAarr=o,this.processTextOrObjNode=i,this.options.format?(this.indentate=f,this.tagEndChar=`> +`,this.newLine=` +`):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine=""),this.options.supressEmptyNode?(this.buildTextNode=u,this.buildObjNode=l):(this.buildTextNode=c,this.buildObjNode=a),this.buildTextValNode=c,this.buildObjectNode=a}r.prototype.parse=function(A){return Array.isArray(A)&&this.options.rootNodeName&&this.options.rootNodeName.length>1&&(A={[this.options.rootNodeName]:A}),this.j2x(A,0).val},r.prototype.j2x=function(A,p){let g="",m="";for(let v in A)if(!(typeof A[v]>"u"))if(A[v]===null)m+=this.indentate(p)+"<"+v+"/"+this.tagEndChar;else if(A[v]instanceof Date)m+=this.buildTextNode(A[v],v,"",p);else if(typeof A[v]!="object"){const E=this.isAttribute(v);E?g+=" "+E+'="'+this.options.attrValueProcessor(""+A[v])+'"':this.isCDATA(v)?A[this.options.textNodeName]?m+=this.replaceCDATAstr(A[this.options.textNodeName],A[v]):m+=this.replaceCDATAstr("",A[v]):v===this.options.textNodeName?A[this.options.cdataTagName]||(m+=this.options.tagValueProcessor(""+A[v])):m+=this.buildTextNode(A[v],v,"",p)}else if(Array.isArray(A[v]))if(this.isCDATA(v))m+=this.indentate(p),A[this.options.textNodeName]?m+=this.replaceCDATAarr(A[this.options.textNodeName],A[v]):m+=this.replaceCDATAarr("",A[v]);else{const E=A[v].length;for(let _=0;_"u"||(I===null?m+=this.indentate(p)+"<"+v+"/"+this.tagEndChar:typeof I=="object"?m+=this.processTextOrObjNode(I,v,p):m+=this.buildTextNode(I,v,"",p))}}else if(this.options.attrNodeName&&v===this.options.attrNodeName){const E=Object.keys(A[v]),_=E.length;for(let I=0;I<_;I++)g+=" "+E[I]+'="'+this.options.attrValueProcessor(""+A[v][E[I]])+'"'}else m+=this.processTextOrObjNode(A[v],v,p);return{attrStr:g,val:m}};function i(A,p,g){const m=this.j2x(A,g+1);return A[this.options.textNodeName]!==void 0&&Object.keys(A).length===1?this.buildTextNode(m.val,p,m.attrStr,g):this.buildObjNode(m.val,p,m.attrStr,g)}function s(A,p){return A=this.options.tagValueProcessor(""+A),this.options.cdataPositionChar===""||A===""?A+"");return A+this.newLine}function a(A,p,g,m){return g&&A.indexOf("<")===-1?this.indentate(m)+"<"+p+g+">"+A+""+this.options.tagValueProcessor(A)+"=r&&(t=n<0?r-1:r),e<0?(e+=r,e<0&&(e=n<0?-1:0)):e>=r&&(e=n<0?r-1:r),n<0){if(ee.length)throw new _v(t,e)}function Bs(t,e){const n=[],r=[];for(let i=0;i1)throw new RangeError("an index can only have a single ellipsis ('...')");if(r===1){const i=n,s=t.length-(i+1),o=t.length-1;if(o>=e.length)t=t.filter(a=>a!=="...");else{const a=e.length-o;let l=t.slice(0,i).concat(new Array(a).fill(null));s>0&&(l=l.concat(t.slice(t.length-s))),t=l}}if(t.length=e||t<0)throw new Ts(`index out of bounds for dimension with length ${e}`);return t}function Xj(t){return typeof t=="number"}function HS(t){if(!Array.isArray(t))return!1;for(const e of t)if(typeof e!="number")return!1;return!0}function wv(t){return t!==null&&t._slice===!0}function Jj(t){return wv(t)&&(t.step===null||t.step===1)}function Zj(t){t=jS(t);for(let e=0;er()),n=e.map(r=>r.next());for(let r=0;;){if(n[r].done){if(e[r]=t[r](),n[r]=e[r].next(),++r>=e.length)return}else yield n.map(({value:i})=>i),r=0;n[r]=e[r].next()}}class Wx{constructor(e,n){e=Ni(e,n.shape),this.dimIndexers=[];const r=n.shape;for(let i=0;i()=>r.iter()),n=eH(...e);for(const r of n){const i=[],s=[],o=[];for(const a of r)i.push(a.dimChunkIndex),s.push(a.dimChunkSelection),a.dimOutSelection!==null&&o.push(a.dimOutSelection);yield{chunkCoords:i,chunkSelection:s,outSelection:o}}}}class tH{constructor(e,n,r){e=Iv(e,n),this.dimSelection=e,this.dimLength=n,this.dimChunkLength=r,this.numItems=1}*iter(){const e=Math.floor(this.dimSelection/this.dimChunkLength),n=e*this.dimChunkLength,r=this.dimSelection-n;yield{dimChunkIndex:e,dimChunkSelection:r,dimOutSelection:null}}}class Yx{constructor(e,n,r){const[i,s,o]=VS(e,n);if(this.start=i,this.stop=s,this.step=o,this.step<1)throw new xv;this.dimLength=n,this.dimChunkLength=r,this.numItems=Math.max(0,Math.ceil((this.stop-this.start)/this.step)),this.numChunks=Math.ceil(this.dimLength/this.dimChunkLength)}*iter(){const e=Math.floor(this.start/this.dimChunkLength),n=Math.ceil(this.stop/this.dimChunkLength);for(let r=e;r0&&(a+=this.step-d),c=Math.ceil((i-this.start)/this.step)}else a=this.start-i,c=0;this.stop>s?l=o:l=this.stop-i;const u=Gr(a,l,this.step),f=Math.ceil((l-a)/this.step),h=Gr(c,c+f);yield{dimChunkIndex:r,dimChunkSelection:u,dimOutSelection:h}}}}const na=typeof process<"u"&&process.versions&&process.versions.node;function $x(){}function In(t){if(t===null)return"";for(t instanceof String&&(t=t.valueOf()),t=t.replace(/\\/g,"/");t.length>0&&t[0]==="/";)t=t.slice(1);for(;t.length>0&&t[t.length-1]==="/";)t=t.slice(0,t.length-1);t=t.replace(/\/\/+/g,"/");const e=t.split("/");for(const n of e)if(n==="."||n==="..")throw Error("path containing '.' or '..' segment not allowed");return t}function bv(t){return typeof t=="number"&&(t=[t]),t.map(e=>Math.floor(e))}function nH(t,e){if(t===null||t===!0)throw new Error("Chunk guessing is not supported yet");return t===!1?e:(typeof t=="number"&&(t=[t]),t.lengthn===-1||n===null?e[r]:Math.floor(n)))}function rH(t){return t=t.toUpperCase(),t}function Kx(t,e){if(t===null)return!0;Array.isArray(t)||(t=[t]);for(let n=0;n=0;i--)n[i]=r,r*=t[i];return n}function og(t,e){const n=typeof t=="string"?new URL(t):t;n.pathname.endsWith("/")||(n.pathname+="/");const r=new URL(e,n);return r.search=n.search,r.href}function WS(t){const e=t.BYTES_PER_ELEMENT;if(e===1)return;if(na){const o=Buffer.from(t.buffer,t.byteOffset,t.length*e);e===2&&o.swap16(),e===4&&o.swap32(),e===8&&o.swap64();return}const n=new Uint8Array(t.buffer,t.byteOffset,t.length*e),r=e/2,i=e-1;let s;for(let o=0;oa*l),s=n.map((a,l)=>l+1===r?1:n.slice(l+1).reduce((c,u)=>c*u,1)),o=Array(r).fill(0);for(let a=0;a0?t+"/":""}async function $S(t,e,n,r){if(e.length===0)return;const i=e.split("/");let s="";for(const o of i.slice(0,i.length-1))s+=o,await wn(t,s)?await r0(t,s,r):await hn(t,s)||await r0(t,s),s+="/"}async function r0(t,e=null,n=!1){if(e=In(e),n)throw Error("Group overwriting not implemented yet :(");if(await wn(t,e))throw new fr(e);if(await hn(t,e))throw new Lr(e);const r={zarr_format:2},i=Oi(e)+Tv;await t.setItem(i,JSON.stringify(r))}async function El(t,e=null,n=null,r=!1){e=In(e),await $S(t,e,n,r),await r0(t,e,r)}async function dH(t,e,n,r,i,s,o,a,l,c,u,f){if(l)throw Error("Array overwriting not implemented yet :(");if(await wn(t,i))throw new fr(i);if(await hn(t,i))throw new Lr(i);if(r=r,e=bv(e),n=nH(n,e),a=rH(a),o=o,u!==null&&u.length>0)throw Error("Filters are not supported yet");let h=o;typeof o=="number"&&(Number.isNaN(o)&&(h="NaN"),Number.POSITIVE_INFINITY===o&&(h="Infinity"),Number.NEGATIVE_INFINITY===o&&(h="-Infinity")),u=null;const d={zarr_format:2,shape:e,chunks:n,dtype:r,fill_value:h,order:a,compressor:s,filters:u};f&&(d.dimension_separator=f);const A=Oi(i)+ch;await t.setItem(A,JSON.stringify(d))}async function Af(t,e,n,r,i=null,s=null,o=null,a="C",l=!1,c=null,u=null,f){i=In(i),await $S(t,i,c,l),await dH(t,e,n,r,i,s,o,a,l,c,u,f)}function uh(t){if(typeof t!="string"){if(na&&Buffer.isBuffer(t))return JSON.parse(t.toString());if(Sv(t)){const e=new TextDecoder,n=new Uint8Array(t);return JSON.parse(e.decode(n))}else return t}return JSON.parse(t)}class KS{constructor(e,n,r,i=!0){this.store=e,this.key=n,this.readOnly=r,this.cache=i,this.cachedValue=null}async asObject(){if(this.cache&&this.cachedValue!==null)return this.cachedValue;const e=await this.getNoSync();return this.cache&&(this.cachedValue=e),e}async getNoSync(){try{const e=await this.store.getItem(this.key);return uh(e)}catch{return{}}}async setNoSync(e,n){const r=await this.getNoSync();return r[e]=n,await this.putNoSync(r),!0}async putNoSync(e){await this.store.setItem(this.key,JSON.stringify(e)),this.cache&&(this.cachedValue=e)}async delNoSync(e){const n=await this.getNoSync();return delete n[e],await this.putNoSync(n),!0}async put(e){if(this.readOnly)throw new Vt("attributes are read-only");return this.putNoSync(e)}async setItem(e,n){if(this.readOnly)throw new Vt("attributes are read-only");return this.setNoSync(e,n)}async getItem(e){return(await this.asObject())[e]}async deleteItem(e){if(this.readOnly)throw new Vt("attributes are read-only");return this.delNoSync(e)}async containsItem(e){return(await this.asObject())[e]!==void 0}proxy(){return yv(this)}}const AH={"|b":Int8Array,"|B":Uint8Array,"|u1":Uint8Array,"|i1":Int8Array,"b":Int8Array,">B":Uint8Array,">u1":Uint8Array,">i1":Int8Array,">u2":Uint16Array,">i2":Int16Array,">u4":Uint32Array,">i4":Int32Array,">f4":Float32Array,">f8":Float64Array};function ar(t){const e=AH[t];if(!e)throw Error(`Dtype not recognized or not supported in zarr.js, got ${t}.`);return e}function qS(t){if(t instanceof Uint8Array)return"|u1";if(t instanceof Int8Array)return"|i1";if(t instanceof Uint16Array)return"0&&typeof l[0]=="number"&&(l=t[0].constructor.from(l)),l}function pH(t,e,n,r){const i=Ni(r,n,!0),[s,o]=Bs(i,n);Rv(t,e,n,s)}function mH(t,e,n,r,i){const s=Ni(i,n,!1),[o,a]=Bs(s,n);if(JSON.stringify(a)!==JSON.stringify(r))throw new St(`Shape mismatch in target and source NestedArray: ${a} and ${r}`);s0(t,e,n,o)}function s0(t,e,n,r){const i=r[0];if(typeof e=="number"){Rv(t,e,n,r.map(c=>typeof c=="number"?[c,c+1,1,1]:c));return}if(typeof i=="number"){s0(t[i],e,n.slice(1),r.slice(1));return}const[s,o,a,l]=i;if(n.length===1){if(a===1)t.set(e,s);else for(let c=0;cs*o,1),i=new n(r);return XS(t,e,i,0),i}function XS(t,e,n,r){if(e.length===1){n.set(t,r);return}if(e.length===2){for(let o=0;oo*a,1);for(let o=0;ol*c,1);e===null&&(e=new ArrayBuffer(s*parseInt(r[r.length-1],10)));const o=e.byteLength/parseInt(r[r.length-1],10);if(s!==o)throw new Error(`Buffer has ${o} of dtype ${r}, shape is too large or small ${n} (flat=${s})`);const a=ar(r);this.data=JS(e,a,n)}else this.data=e}get(e){const[n,r]=gH(this.data,this.shape,e);return r.length===0?n:new Sr(n,r,this.dtype)}set(e=null,n){e===null&&(e=[Gr(null)]),typeof n=="number"?this.shape.length===0?this.data[0]=n:pH(this.data,n,this.shape,e):mH(this.data,n.data,this.shape,n.shape,e)}flatten(){return this.shape.length===1?this.data:vH(this.data,this.shape,ar(this.dtype))}static arange(e,n="i*s,1),r=new e(n);return r.set([...Array(n).keys()]),r}function JS(t,e,n,r=0){if(n.length===1)return new e(t.slice(r,r+n[0]*e.BYTES_PER_ELEMENT));const i=new Array(n[0]);if(n.length===2){for(let a=0;aa*l,1);for(let a=0;ac*u,1);e===null&&(e=new ArrayBuffer(o*parseInt(r[r.length-1],10)));const a=e.byteLength/parseInt(r[r.length-1],10);if(o!==a)throw new Error(`Buffer has ${a} of dtype ${r}, shape is too large or small ${n} (flat=${o})`);const l=ar(r);this.data=new l(e)}else this.data=e}set(e=null,n,r){e===null&&(e=[Gr(null)]),typeof n=="number"?this.shape.length===0?this.data[0]=n:EH(this.data,this.strides,this.shape,e,n):n instanceof ns&&r?xH(this.data,this.strides,this.shape,e,n.data,n.strides,n.shape,r):_H(this.data,this.strides,this.shape,e,n.data,n.strides,n.shape)}}var eT={exports:{}};(function(t){var e=Object.prototype.hasOwnProperty,n="~";function r(){}Object.create&&(r.prototype=Object.create(null),new r().__proto__||(n=!1));function i(l,c,u){this.fn=l,this.context=c,this.once=u||!1}function s(l,c,u,f,h){if(typeof u!="function")throw new TypeError("The listener must be a function");var d=new i(u,f||l,h),A=n?n+c:c;return l._events[A]?l._events[A].fn?l._events[A]=[l._events[A],d]:l._events[A].push(d):(l._events[A]=d,l._eventsCount++),l}function o(l,c){--l._eventsCount===0?l._events=new r:delete l._events[c]}function a(){this._events=new r,this._eventsCount=0}a.prototype.eventNames=function(){var c=[],u,f;if(this._eventsCount===0)return c;for(f in u=this._events)e.call(u,f)&&c.push(n?f.slice(1):f);return Object.getOwnPropertySymbols?c.concat(Object.getOwnPropertySymbols(u)):c},a.prototype.listeners=function(c){var u=n?n+c:c,f=this._events[u];if(!f)return[];if(f.fn)return[f.fn];for(var h=0,d=f.length,A=new Array(d);h{if(typeof e!="number"||e<0)throw new TypeError("Expected `milliseconds` to be a positive number");if(e===Number.POSITIVE_INFINITY){o(t);return}r={customTimers:{setTimeout,clearTimeout},...r},i=r.customTimers.setTimeout.call(void 0,()=>{if(typeof n=="function"){try{o(n())}catch(u){a(u)}return}const l=typeof n=="string"?n:`Promise timed out after ${e} milliseconds`,c=n instanceof Error?n:new tT(l);typeof t.cancel=="function"&&t.cancel(),a(c)},e),(async()=>{try{o(await t)}catch(l){a(l)}finally{r.customTimers.clearTimeout.call(void 0,i)}})()});return s.clear=()=>{clearTimeout(i),i=void 0},s}function wH(t,e,n){let r=0,i=t.length;for(;i>0;){const s=Math.trunc(i/2);let o=r+s;n(t[o],e)<=0?(r=++o,i-=s+1):i=s}return r}class bH{constructor(){Object.defineProperty(this,"_queue",{enumerable:!0,configurable:!0,writable:!0,value:[]})}enqueue(e,n){var r;n={priority:0,...n};const i={priority:n.priority,run:e};if(this.size&&((r=this._queue[this.size-1])===null||r===void 0?void 0:r.priority)>=n.priority){this._queue.push(i);return}const s=wH(this._queue,i,(o,a)=>a.priority-o.priority);this._queue.splice(s,0,i)}dequeue(){const e=this._queue.shift();return e==null?void 0:e.run}filter(e){return this._queue.filter(n=>n.priority===e.priority).map(n=>n.run)}get size(){return this._queue.length}}const Fu=()=>{},SH=new tT;class qx extends CH{constructor(e){var n,r,i,s;if(super(),Object.defineProperty(this,"_carryoverConcurrencyCount",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_isIntervalIgnored",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_intervalCount",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"_intervalCap",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_interval",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_intervalEnd",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"_intervalId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_timeoutId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_queue",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_queueClass",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_pendingCount",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"_concurrency",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_isPaused",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_resolveEmpty",{enumerable:!0,configurable:!0,writable:!0,value:Fu}),Object.defineProperty(this,"_resolveIdle",{enumerable:!0,configurable:!0,writable:!0,value:Fu}),Object.defineProperty(this,"_timeout",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_throwOnTimeout",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:bH,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${(r=(n=e.intervalCap)===null||n===void 0?void 0:n.toString())!==null&&r!==void 0?r:""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${(s=(i=e.interval)===null||i===void 0?void 0:i.toString())!==null&&s!==void 0?s:""}\` (${typeof e.interval})`);this._carryoverConcurrencyCount=e.carryoverConcurrencyCount,this._isIntervalIgnored=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this._intervalCap=e.intervalCap,this._interval=e.interval,this._queue=new e.queueClass,this._queueClass=e.queueClass,this.concurrency=e.concurrency,this._timeout=e.timeout,this._throwOnTimeout=e.throwOnTimeout===!0,this._isPaused=e.autoStart===!1}get _doesIntervalAllowAnother(){return this._isIntervalIgnored||this._intervalCount{this._onResumeInterval()},n)),!0}return!1}_tryToStartAnother(){if(this._queue.size===0)return this._intervalId&&clearInterval(this._intervalId),this._intervalId=void 0,this._resolvePromises(),!1;if(!this._isPaused){const e=!this._isIntervalPaused();if(this._doesIntervalAllowAnother&&this._doesConcurrentAllowAnother){const n=this._queue.dequeue();return n?(this.emit("active"),n(),e&&this._initializeIntervalIfNeeded(),!0):!1}}return!1}_initializeIntervalIfNeeded(){this._isIntervalIgnored||this._intervalId!==void 0||(this._intervalId=setInterval(()=>{this._onInterval()},this._interval),this._intervalEnd=Date.now()+this._interval)}_onInterval(){this._intervalCount===0&&this._pendingCount===0&&this._intervalId&&(clearInterval(this._intervalId),this._intervalId=void 0),this._intervalCount=this._carryoverConcurrencyCount?this._pendingCount:0,this._processQueue()}_processQueue(){for(;this._tryToStartAnother(););}get concurrency(){return this._concurrency}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this._concurrency=e,this._processQueue()}async add(e,n={}){return new Promise((r,i)=>{const s=async()=>{this._pendingCount++,this._intervalCount++;try{const a=await(this._timeout===void 0&&n.timeout===void 0?e():IH(Promise.resolve(e()),n.timeout===void 0?this._timeout:n.timeout,()=>{(n.throwOnTimeout===void 0?this._throwOnTimeout:n.throwOnTimeout)&&i(SH)}));r(a),this.emit("completed",a)}catch(o){i(o),this.emit("error",o)}this._next()};this._queue.enqueue(s,n),this._tryToStartAnother(),this.emit("add")})}async addAll(e,n){return Promise.all(e.map(async r=>this.add(r,n)))}start(){return this._isPaused?(this._isPaused=!1,this._processQueue(),this):this}pause(){this._isPaused=!0}clear(){this._queue=new this._queueClass}async onEmpty(){if(this._queue.size!==0)return new Promise(e=>{const n=this._resolveEmpty;this._resolveEmpty=()=>{n(),e()}})}async onSizeLessThan(e){if(!(this._queue.size{const r=()=>{this._queue.size{const n=this._resolveIdle;this._resolveIdle=()=>{n(),e()}})}get size(){return this._queue.size}sizeBy(e){return this._queue.filter(e).length}get pending(){return this._pendingCount}get isPaused(){return this._isPaused}get timeout(){return this._timeout}set timeout(e){this._timeout=e}}class ra{constructor(e,n=null,r,i=!1,s=null,o=!0,a=!0){this.store=e,this._chunkStore=s,this.path=In(n),this.keyPrefix=Oi(this.path),this.readOnly=i,this.cacheMetadata=o,this.cacheAttrs=a,this.meta=r,this.meta.compressor!==null?this.compressor=Wj(this.meta.compressor):this.compressor=null;const l=this.keyPrefix+YS;this.attrs=new KS(this.store,l,this.readOnly,a)}get chunkStore(){return this._chunkStore?this._chunkStore:this.store}get name(){return this.path.length>0?this.path[0]!=="/"?"/"+this.path:this.path:null}get basename(){const e=this.name;if(e===null)return null;const n=e.split("/");return n[n.length-1]}get shape(){return this.meta.shape}get chunks(){return this.meta.chunks}get chunkSize(){return this.chunks.reduce((e,n)=>e*n,1)}get dtype(){return this.meta.dtype}get fillValue(){const e=this.meta.fill_value;return e==="NaN"?NaN:e==="Infinity"?1/0:e==="-Infinity"?-1/0:this.meta.fill_value}get nDims(){return this.meta.shape.length}get size(){return this.meta.shape.reduce((e,n)=>e*n,1)}get length(){return this.shape[0]}get _chunkDataShape(){if(this.shape.length===0)return[1];{const e=[];for(let n=0;ne*n,1)}static async create(e,n=null,r=!1,i=null,s=!0,o=!0){const a=await this.loadMetadataForConstructor(e,n);return new ra(e,n,a,r,i,s,o)}static async loadMetadataForConstructor(e,n){try{n=In(n);const r=Oi(n),i=await e.getItem(r+ch);return uh(i)}catch(r){throw await hn(e,n)?new Lr(n??""):new Error("Failed to load metadata for ZarrArray:"+r.toString())}}async reloadMetadata(){const e=this.keyPrefix+ch,n=this.store.getItem(e);return this.meta=uh(await n),this.meta}async refreshMetadata(){this.cacheMetadata||await this.reloadMetadata()}get(e=null,n={}){return this.getBasicSelection(e,!1,n)}getRaw(e=null,n={}){return this.getBasicSelection(e,!0,n)}async getBasicSelection(e,n=!1,{concurrencyLimit:r=10,progressCallback:i}={}){if(this.cacheMetadata||await this.reloadMetadata(),this.shape.length===0)throw new Error("Shape [] indexing is not supported yet");return this.getBasicSelectionND(e,n,r,i)}getBasicSelectionND(e,n,r,i){const s=new Wx(e,this);return this.getSelection(s,n,r,i)}async getSelection(e,n,r,i){const s=this.dtype,o=e.shape,a=e.shape.reduce((u,f)=>u*f,1);if(n&&a===this.chunkSize){const u=e.iter(),f=u.next();if(f.done===!1&&u.next().done===!0){const h=f.value;return await this.decodeDirectToRawArray(h,o,a)}}const l=n?new ns(null,o,s):new Sr(null,o,s);if(a===0)return l;const c=new qx({concurrency:r});if(i){let u=0,f=0;for(const h of e.iter())f+=1;i({progress:0,queueSize:f});for(const h of e.iter())(async()=>(await c.add(()=>this.chunkGetItem(h.chunkCoords,h.chunkSelection,l,h.outSelection,e.dropAxes)),u+=1,i({progress:u,queueSize:f})))()}else for(const u of e.iter())c.add(()=>this.chunkGetItem(u.chunkCoords,u.chunkSelection,l,u.outSelection,e.dropAxes));return await c.onIdle(),l.shape.length===0?l.data[0]:l}async chunkGetItem(e,n,r,i,s){if(e.length!==this._chunkDataShape.length)throw new St(`Inconsistent shapes: chunkCoordsLength: ${e.length}, cDataShapeLength: ${this.chunkDataShape.length}`);const o=this.chunkKey(e);try{const a=await this.chunkStore.getItem(o),l=await this.decodeChunk(a);if(r instanceof Sr){if(Zj(i)&&Kx(n,this.chunks)&&!this.meta.filters){r.set(i,this.toNestedArray(l));return}const u=this.toNestedArray(l).get(n);if(s!==null)throw new Error("Drop axes is not supported yet");r.set(i,u)}else r.set(i,this.chunkBufferToRawArray(l),n)}catch(a){if(sg(a))this.fillValue!==null&&r.set(i,this.fillValue);else throw a}}async getRawChunk(e,n){if(e.length!==this.shape.length)throw new Error(`Chunk coordinates ${e.join(".")} do not correspond to shape ${this.shape}.`);try{for(let a=0;aa!==1);return new ns(s,o,this.dtype)}chunkKey(e){var n;const r=(n=this.meta.dimension_separator)!==null&&n!==void 0?n:".";return this.keyPrefix+e.join(r)}ensureByteArray(e){return typeof e=="string"?new Uint8Array(Buffer.from(e).buffer):new Uint8Array(e)}toTypedArray(e){return new(ar(this.dtype))(e)}toNestedArray(e){const n=this.ensureByteArray(e).buffer;return new Sr(n,this.chunks,this.dtype)}async decodeChunk(e){let n=this.ensureByteArray(e);if(this.compressor!==null&&(n=await(await this.compressor).decode(n)),this.dtype.includes(">")&&WS(this.toTypedArray(n.buffer)),this.meta.order==="F"&&this.nDims>1){const r=this.toTypedArray(n.buffer),i=new(ar(this.dtype))(r.length);return hH(r,i,this.chunks),i.buffer}return n.buffer}chunkBufferToRawArray(e){return new ns(e,this.chunks,this.dtype)}async decodeDirectToRawArray({chunkCoords:e},n,r){const i=this.chunkKey(e);try{const s=await this.chunkStore.getItem(i);return new ns(await this.decodeChunk(s),n,this.dtype)}catch(s){if(sg(s)){const o=new(ar(this.dtype))(r);return new ns(o.fill(this.fillValue),n)}else throw s}}async set(e=null,n,r={}){await this.setBasicSelection(e,n,r)}async setBasicSelection(e,n,{concurrencyLimit:r=10,progressCallback:i}={}){if(this.readOnly)throw new Vt("Object is read only");if(this.cacheMetadata||await this.reloadMetadata(),this.shape.length===0)throw new Error("Shape [] indexing is not supported yet");await this.setBasicSelectionND(e,n,r,i)}async setBasicSelectionND(e,n,r,i){const s=new Wx(e,this);await this.setSelection(s,n,r,i)}getChunkValue(e,n,r,i){let s;if(i.length===0)s=r;else if(typeof r=="number")s=r;else if(s=r.get(e.outSelection),n.dropAxes!==null)throw new Error("Handling drop axes not supported yet");return s}async setSelection(e,n,r,i){const s=e.shape;if(s.length!==0){if(typeof n!="number")if(n instanceof Sr){if(!iH(n.shape,s))throw new St(`Shape mismatch in source NestedArray and set selection: ${n.shape} and ${s}`)}else throw new Error("Unknown data type for setting :(")}const o=new qx({concurrency:r});if(i){let a=0;for(const c of e.iter())a+=1;let l=0;i({progress:0,queueSize:a});for(const c of e.iter()){const u=this.getChunkValue(c,e,n,s);(async()=>(await o.add(()=>this.chunkSetItem(c.chunkCoords,c.chunkSelection,u)),l+=1,i({progress:l,queueSize:a})))()}}else for(const a of e.iter()){const l=this.getChunkValue(a,e,n,s);o.add(()=>this.chunkSetItem(a.chunkCoords,a.chunkSelection,l))}await o.onIdle()}async chunkSetItem(e,n,r){if(this.meta.order==="F"&&this.nDims>1)throw new Error("Setting content for arrays in F-order is not supported.");const i=this.chunkKey(e);let s=null;const o=ar(this.dtype),a=this.chunkSize;if(Kx(n,this.chunks))typeof r=="number"?(s=new o(a),s.fill(r)):s=r.flatten();else{let c;try{const f=await this.chunkStore.getItem(i),h=await this.decodeChunk(f);c=this.toTypedArray(h)}catch(f){if(sg(f))c=new o(a),this.fillValue!==null&&c.fill(this.fillValue);else throw f}const u=new Sr(c,this.chunks,this.dtype);u.set(n,r),s=u.flatten()}const l=await this.encodeChunk(s);this.chunkStore.setItem(i,l)}async encodeChunk(e){if(this.dtype.includes(">")&&(e=oH(e)),this.compressor!==null){const n=new Uint8Array(e.buffer);return(await(await this.compressor).encode(n)).buffer}return e.buffer}}class TH{constructor(e={}){this.root=e}proxy(){return yv(this)}getParent(e){let n=this.root;const r=e.split("/");for(const i of r.slice(0,r.length-1))if(n=n[i],!n)throw Error(e);return[n,r[r.length-1]]}requireParent(e){let n=this.root;const r=e.split("/");for(const i of r.slice(0,r.length-1))n[i]===void 0&&(n[i]={}),n=n[i];return[n,r[r.length-1]]}getItem(e){const[n,r]=this.getParent(e),i=n[r];if(i===void 0)throw new Bc(e);return i}setItem(e,n){const[r,i]=this.requireParent(e);return r[i]=n,!0}deleteItem(e){const[n,r]=this.getParent(e);return delete n[r]}containsItem(e){try{return this.getItem(e)!==void 0}catch{return!1}}keys(){throw new Error("Method not implemented.")}}var rr;(function(t){t.HEAD="HEAD",t.GET="GET",t.PUT="PUT"})(rr||(rr={}));const BH=[rr.HEAD,rr.GET,rr.PUT];class nT{constructor(e,n={}){this.url=e;const{fetchOptions:r={},supportedMethods:i=BH}=n;this.fetchOptions=r,this.supportedMethods=new Set(i)}keys(){throw new Error("Method not implemented.")}async getItem(e,n){const r=og(this.url,e),i=await fetch(r,{...this.fetchOptions,...n});if(i.status===404)throw new Bc(e);if(i.status!==200)throw new Cv(String(i.status));return na?Buffer.from(await i.arrayBuffer()):i.arrayBuffer()}async setItem(e,n){if(!this.supportedMethods.has(rr.PUT))throw new Error("HTTP PUT no a supported method for store.");const r=og(this.url,e);return typeof n=="string"&&(n=new TextEncoder().encode(n).buffer),(await fetch(r,{...this.fetchOptions,method:rr.PUT,body:n})).status.toString()[0]==="2"}deleteItem(e){throw new Error("Method not implemented.")}async containsItem(e){const n=og(this.url,e),r=this.supportedMethods.has(rr.HEAD)?rr.HEAD:rr.GET;return(await fetch(n,{...this.fetchOptions,method:r})).status===200}}async function ia({shape:t,chunks:e=!0,dtype:n="0?this.path[0]!=="/"?"/"+this.path:this.path:"/"}get basename(){const e=this.name.split("/");return e[e.length-1]}get chunkStore(){return this._chunkStore?this._chunkStore:this.store}static async create(e,n=null,r=!1,i=null,s=!0){const o=await this.loadMetadataForConstructor(e,n);return new fs(e,n,o,r,i,s)}static async loadMetadataForConstructor(e,n){n=In(n);const r=Oi(n);try{const i=await e.getItem(r+Tv);return uh(i)}catch{throw await wn(e,n)?new fr(n):new cd(n)}}itemPath(e){const n=typeof e=="string"&&e.length>0&&e[0]==="/",r=In(e);return!n&&this.path.length>0?this.keyPrefix+r:r}async createGroup(e,n=!1){if(this.readOnly)throw new Vt("group is read only");const r=this.itemPath(e);return await El(this.store,r,this._chunkStore,n),fs.create(this.store,r,this.readOnly,this._chunkStore,this.attrs.cache)}async requireGroup(e,n=!1){if(this.readOnly)throw new Vt("group is read only");const r=this.itemPath(e);return await hn(this.store,r)||await El(this.store,r,this._chunkStore,n),fs.create(this.store,r,this.readOnly,this._chunkStore,this.attrs.cache)}getOptsForArrayCreation(e,n={}){const r=this.itemPath(e);return n.path=r,n.cacheAttrs===void 0&&(n.cacheAttrs=this.attrs.cache),n.store=this.store,n.chunkStore=this.chunkStore,n}array(e,n,r,i){if(this.readOnly)throw new Vt("group is read only");return r=this.getOptsForArrayCreation(e,r),r.overwrite=i===void 0?r.overwrite:i,Xx(n,r)}empty(e,n,r={}){if(this.readOnly)throw new Vt("group is read only");return r=this.getOptsForArrayCreation(e,r),RH(n,r)}zeros(e,n,r={}){if(this.readOnly)throw new Vt("group is read only");return r=this.getOptsForArrayCreation(e,r),PH(n,r)}ones(e,n,r={}){if(this.readOnly)throw new Vt("group is read only");return r=this.getOptsForArrayCreation(e,r),MH(n,r)}full(e,n,r,i={}){if(this.readOnly)throw new Vt("group is read only");return i=this.getOptsForArrayCreation(e,i),LH(n,r,i)}createDataset(e,n,r,i){if(this.readOnly)throw new Vt("group is read only");i=this.getOptsForArrayCreation(e,i);let s;if(r===void 0){if(n===void 0)throw new St("Shape must be set if no data is passed to CreateDataset");s=ia({shape:n,...i})}else s=Xx(r,i);return s}async getItem(e){const n=this.itemPath(e);if(await wn(this.store,n))return ra.create(this.store,n,this.readOnly,this.chunkStore,void 0,this.attrs.cache);if(await hn(this.store,n))return fs.create(this.store,n,this.readOnly,this._chunkStore,this.attrs.cache);throw new Bc(e)}async setItem(e,n){return await this.array(e,n,{},!0),!0}async deleteItem(e){throw this.readOnly?new Vt("group is read only"):new Error("Method not implemented.")}async containsItem(e){const n=this.itemPath(e);return await wn(this.store,n)||hn(this.store,n)}proxy(){return yv(this)}}async function Pv(t,e=null,n="a",r,i=!0){if(t=Kl(t),r!==void 0&&(r=Kl(t)),e=In(e),n==="r"||n==="r+"){if(!await hn(t,e))throw await wn(t,e)?new fr(e):new cd(e)}else if(n==="w")await El(t,e,r,!0);else if(n==="a"){if(!await hn(t,e)){if(await wn(t,e))throw new fr(e);await El(t,e,r)}}else if(n==="w-"||n==="x"){if(await wn(t,e))throw new fr(e);if(await hn(t,e))throw new Lr(e);await El(t,e,r)}else throw new St(`Invalid mode argument: ${n}`);const s=n==="r";return fs.create(t,e,s,r,i)}class OH extends dj{constructor(e){super();const n=e.TileWidth||e.ImageWidth,r=e.TileLength||e.ImageLength,i=e.BitsPerSample[0]/8;this.maxUncompressedSize=n*r*i}async decodeBlock(e){const n=new Uint8Array(e);return(await mj(n,this.maxUncompressedSize)).buffer}}function Go(t){const e=t[t.length-1];return e===3||e===4}function DH(t){const e=new Map(t.map((n,r)=>[n,r]));if(e.size!==t.length)throw Error("Labels must be unique, found duplicated label.");return n=>{const r=e.get(n);if(r===void 0)throw Error("Invalid dimension.");return r}}function Rc(t){const e=Go(t.shape),[n,r]=t.shape.slice(e?-3:-2);return{height:n,width:r}}const rT="__vivSignalAborted";Yr(5,()=>OH);function kH(t){const e=t.length,n=DH(t);return r=>{if(Array.isArray(r))return[...r];const i=Array(e).fill(0);for(const[s,o]of Object.entries(r))i[n(s)]=o;return i}}const Jx={u1:"Uint8",u2:"Uint16",u4:"Uint32",f4:"Float32",f8:"Float64",i1:"Int8",i2:"Int16",i4:"Int32"};class ud{constructor(e,n,r){this.labels=n,this.tileSize=r,this._indexer=kH(n),this._data=e;const i=e.chunks[this._xIndex],s=e.chunks[this._xIndex-1];this._readChunks=r===i&&r===s}get shape(){return this._data.shape}get dtype(){const e=this._data.dtype.slice(1);if(!(e in Jx))throw Error(`Zarr dtype not supported, got ${e}.`);return Jx[e]}get _xIndex(){const e=Go(this._data.shape);return this._data.shape.length-(e?2:1)}_chunkIndex(e,n,r){const i=this._indexer(e);return i[this._xIndex]=n,i[this._xIndex-1]=r,i}_getSlices(e,n){const{height:r,width:i}=Rc(this),[s,o]=[e*this.tileSize,Math.min((e+1)*this.tileSize,i)],[a,l]=[n*this.tileSize,Math.min((n+1)*this.tileSize,r)];if(s===o||a===l)throw new Ts("Tile slice is zero-sized.");return[Gr(s,o),Gr(a,l)]}async getRaster({selection:e}){const n=this._chunkIndex(e,null,null),{data:r,shape:i}=await this._data.getRaw(n),[s,o]=i;return{data:r,width:o,height:s}}async getTile(e){const{x:n,y:r,selection:i,signal:s}=e;let o;if(this._readChunks){const u=this._chunkIndex(i,n,r);o=await this._data.getRawChunk(u,{storeOptions:{signal:s}})}else{const[u,f]=this._getSlices(n,r),h=this._chunkIndex(i,u,f);o=await this._data.getRaw(h)}const{data:a,shape:[l,c]}=o;return{data:a,width:c,height:l}}onTileError(e){if(!(e instanceof Ts))throw e}}const QH=255,Zx=[0,0,0],iT=6,FH="-apple-system, 'Helvetica Neue', Arial, sans-serif",eC={Uint8:{format:X.R8UI,dataFormat:X.RED_INTEGER,type:X.UNSIGNED_BYTE,max:2**8-1,sampler:"usampler2D"},Uint16:{format:X.R16UI,dataFormat:X.RED_INTEGER,type:X.UNSIGNED_SHORT,max:2**16-1,sampler:"usampler2D"},Uint32:{format:X.R32UI,dataFormat:X.RED_INTEGER,type:X.UNSIGNED_INT,max:2**32-1,sampler:"usampler2D"},Float32:{format:X.R32F,dataFormat:X.RED,type:X.FLOAT,max:3.4*10**38,sampler:"sampler2D"},Int8:{format:X.R8I,dataFormat:X.RED_INTEGER,type:X.BYTE,max:2**(8-1)-1,sampler:"isampler2D"},Int16:{format:X.R16I,dataFormat:X.RED_INTEGER,type:X.SHORT,max:2**(16-1)-1,sampler:"isampler2D"},Int32:{format:X.R32I,dataFormat:X.RED_INTEGER,type:X.INT,max:2**(32-1)-1,sampler:"isampler2D"},Float64:{format:X.R32F,dataFormat:X.RED,type:X.FLOAT,max:3.4*10**38,sampler:"sampler2D",cast:t=>new Float32Array(t)}},sT=`vec4 apply_transparent_color(vec3 color, vec3 transparentColor, bool useTransparentColor, float opacity){ + return vec4(color, (color == transparentColor && useTransparentColor) ? 0. : opacity); +} +`,UH=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(1,1,1,0); + const float e1 = 1.0; + const vec4 v1 = vec4(1,1,1,1); + float a0 = smoothstep(e0,e1,x); + return mix(v0,v1,a0)*step(e0,x)*step(x,e1); +} +`,GH=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(1,0,0,1); + const float e1 = 1.0; + const vec4 v1 = vec4(1,1,0,1); + float a0 = smoothstep(e0,e1,x); + return mix(v0,v1,a0)*step(e0,x)*step(x,e1); +} +`,zH=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.1568627450980392,0.10196078431372549,0.17254901960784313,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.23137254901960785,0.19215686274509805,0.35294117647058826,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.25098039215686274,0.2980392156862745,0.5450980392156862,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.24705882352941178,0.43137254901960786,0.592156862745098,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.2823529411764706,0.5568627450980392,0.6196078431372549,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.3333333333333333,0.6823529411764706,0.6392156862745098,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.47058823529411764,0.807843137254902,0.6392156862745098,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.7333333333333333,0.9019607843137255,0.6745098039215687,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.9921568627450981,0.996078431372549,0.8,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,VH=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0,0,0,1); + const float e1 = 0.2; + const vec4 v1 = vec4(0.9019607843137255,0,0,1); + const float e2 = 0.4; + const vec4 v2 = vec4(0.9019607843137255,0.8235294117647058,0,1); + const float e3 = 0.7; + const vec4 v3 = vec4(1,1,1,1); + const float e4 = 1.0; + const vec4 v4 = vec4(0.6274509803921569,0.7843137254901961,1,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3),mix(v3,v4,a3)*step(e3,x)*step(x,e4) + ))); +} +`,jH=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0,0,1,1); + const float e1 = 1.0; + const vec4 v1 = vec4(1,0,0,1); + float a0 = smoothstep(e0,e1,x); + return mix(v0,v1,a0)*step(e0,x)*step(x,e1); +} +`,HH=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0,0,0,1); + const float e1 = 0.376; + const vec4 v1 = vec4(0.32941176470588235,0.32941176470588235,0.4549019607843137,1); + const float e2 = 0.753; + const vec4 v2 = vec4(0.6627450980392157,0.7843137254901961,0.7843137254901961,1); + const float e3 = 1.0; + const vec4 v3 = vec4(1,1,1,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2),mix(v2,v3,a2)*step(e2,x)*step(x,e3) + )); +} +`,WH=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.1843137254901961,0.058823529411764705,0.24313725490196078,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.3411764705882353,0.09019607843137255,0.33725490196078434,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.5098039215686274,0.10980392156862745,0.38823529411764707,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.6705882352941176,0.1607843137254902,0.3764705882352941,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.807843137254902,0.2627450980392157,0.33725490196078434,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.9019607843137255,0.41568627450980394,0.32941176470588235,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.9490196078431372,0.5843137254901961,0.403921568627451,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.9764705882352941,0.7568627450980392,0.5294117647058824,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.996078431372549,0.9294117647058824,0.6901960784313725,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,YH=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.07058823529411765,0.1411764705882353,0.0784313725490196,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.09803921568627451,0.24705882352941178,0.1607843137254902,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.09411764705882353,0.3568627450980392,0.23137254901960785,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.050980392156862744,0.4666666666666667,0.2823529411764706,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.07058823529411765,0.5803921568627451,0.3137254901960784,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.3137254901960784,0.6784313725490196,0.34901960784313724,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.5176470588235295,0.7686274509803922,0.47843137254901963,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.6862745098039216,0.8666666666666667,0.6352941176470588,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.8431372549019608,0.9764705882352941,0.8156862745098039,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,$H=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.49019607843137253,0,0.7019607843137254,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.4549019607843137,0,0.8549019607843137,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.3843137254901961,0.2901960784313726,0.9294117647058824,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.26666666666666666,0.5725490196078431,0.9058823529411765,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0,0.8,0.7725490196078432,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0,0.9686274509803922,0.5725490196078431,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0,1,0.34509803921568627,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.1568627450980392,1,0.03137254901960784,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.5764705882352941,1,0,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,KH=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0,0,0,1); + const float e1 = 0.804; + const vec4 v1 = vec4(1,0.6274509803921569,0.4,1); + const float e2 = 1.0; + const vec4 v2 = vec4(1,0.7803921568627451,0.4980392156862745,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1),mix(v1,v2,a1)*step(e1,x)*step(x,e2) + ); +} +`,qH=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0,0,0,1); + const float e1 = 0.07; + const vec4 v1 = vec4(0.08627450980392157,0.0196078431372549,0.23137254901960785,1); + const float e2 = 0.13; + const vec4 v2 = vec4(0.23529411764705882,0.01568627450980392,0.4117647058823529,1); + const float e3 = 0.2; + const vec4 v3 = vec4(0.42745098039215684,0.00392156862745098,0.5294117647058824,1); + const float e4 = 0.27; + const vec4 v4 = vec4(0.6313725490196078,0,0.5764705882352941,1); + const float e5 = 0.33; + const vec4 v5 = vec4(0.8235294117647058,0.00784313725490196,0.5568627450980392,1); + const float e6 = 0.4; + const vec4 v6 = vec4(0.984313725490196,0.043137254901960784,0.4823529411764706,1); + const float e7 = 0.47; + const vec4 v7 = vec4(1,0.11372549019607843,0.3803921568627451,1); + const float e8 = 0.53; + const vec4 v8 = vec4(1,0.21176470588235294,0.27058823529411763,1); + const float e9 = 0.6; + const vec4 v9 = vec4(1,0.3333333333333333,0.1803921568627451,1); + const float e10 = 0.67; + const vec4 v10 = vec4(1,0.47058823529411764,0.13333333333333333,1); + const float e11 = 0.73; + const vec4 v11 = vec4(1,0.615686274509804,0.1450980392156863,1); + const float e12 = 0.8; + const vec4 v12 = vec4(0.9450980392156862,0.7490196078431373,0.2235294117647059,1); + const float e13 = 0.87; + const vec4 v13 = vec4(0.8784313725490196,0.8627450980392157,0.36470588235294116,1); + const float e14 = 0.93; + const vec4 v14 = vec4(0.8549019607843137,0.9450980392156862,0.5568627450980392,1); + const float e15 = 1.0; + const vec4 v15 = vec4(0.8901960784313725,0.9921568627450981,0.7764705882352941,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + float a8 = smoothstep(e8,e9,x); + float a9 = smoothstep(e9,e10,x); + float a10 = smoothstep(e10,e11,x); + float a11 = smoothstep(e11,e12,x); + float a12 = smoothstep(e12,e13,x); + float a13 = smoothstep(e13,e14,x); + float a14 = smoothstep(e14,e15,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7), + max(mix(v7,v8,a7)*step(e7,x)*step(x,e8), + max(mix(v8,v9,a8)*step(e8,x)*step(x,e9), + max(mix(v9,v10,a9)*step(e9,x)*step(x,e10), + max(mix(v10,v11,a10)*step(e10,x)*step(x,e11), + max(mix(v11,v12,a11)*step(e11,x)*step(x,e12), + max(mix(v12,v13,a12)*step(e12,x)*step(x,e13), + max(mix(v13,v14,a13)*step(e13,x)*step(x,e14),mix(v14,v15,a14)*step(e14,x)*step(x,e15) + )))))))))))))); +} +`,XH=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.21176470588235294,0.054901960784313725,0.1411764705882353,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.34901960784313724,0.09019607843137255,0.3137254901960784,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.43137254901960786,0.17647058823529413,0.5176470588235295,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.47058823529411764,0.30196078431372547,0.6980392156862745,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.47058823529411764,0.44313725490196076,0.8352941176470589,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.45098039215686275,0.592156862745098,0.8941176470588236,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.5254901960784314,0.7254901960784313,0.8901960784313725,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.6941176470588235,0.8392156862745098,0.8901960784313725,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.9019607843137255,0.9450980392156862,0.9450980392156862,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,JH=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0,0,0.5098039215686274,1); + const float e1 = 0.1; + const vec4 v1 = vec4(0,0.7058823529411765,0.7058823529411765,1); + const float e2 = 0.2; + const vec4 v2 = vec4(0.1568627450980392,0.8235294117647058,0.1568627450980392,1); + const float e3 = 0.4; + const vec4 v3 = vec4(0.9019607843137255,0.9019607843137255,0.19607843137254902,1); + const float e4 = 0.6; + const vec4 v4 = vec4(0.47058823529411764,0.27450980392156865,0.0784313725490196,1); + const float e5 = 1.0; + const vec4 v5 = vec4(1,1,1,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4),mix(v4,v5,a4)*step(e4,x)*step(x,e5) + )))); +} +`,ZH=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0,0,0,1); + const float e1 = 0.15; + const vec4 v1 = vec4(0.11764705882352941,0,0.39215686274509803,1); + const float e2 = 0.4; + const vec4 v2 = vec4(0.47058823529411764,0,0.39215686274509803,1); + const float e3 = 0.6; + const vec4 v3 = vec4(0.6274509803921569,0.35294117647058826,0,1); + const float e4 = 0.8; + const vec4 v4 = vec4(0.9019607843137255,0.7843137254901961,0,1); + const float e5 = 1.0; + const vec4 v5 = vec4(1,0.9803921568627451,0.8627450980392157,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4),mix(v4,v5,a4)*step(e4,x)*step(x,e5) + )))); +} +`,eW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.11764705882352941,0.01568627450980392,0.43137254901960786,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.1843137254901961,0.054901960784313725,0.6901960784313725,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.1607843137254902,0.17647058823529413,0.9254901960784314,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.09803921568627451,0.38823529411764707,0.8313725490196079,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.26666666666666666,0.5137254901960784,0.7843137254901961,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.4470588235294118,0.611764705882353,0.7725490196078432,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.615686274509804,0.7098039215686275,0.796078431372549,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.7843137254901961,0.8156862745098039,0.8470588235294118,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.9450980392156862,0.9294117647058824,0.9254901960784314,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,tW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.23529411764705882,0.03529411764705882,0.07058823529411765,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.39215686274509803,0.06666666666666667,0.10588235294117647,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.5568627450980392,0.0784313725490196,0.11372549019607843,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.6941176470588235,0.16862745098039217,0.10588235294117647,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.7529411764705882,0.3411764705882353,0.24705882352941178,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.803921568627451,0.49019607843137253,0.4117647058823529,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.8470588235294118,0.6352941176470588,0.5803921568627451,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.8901960784313725,0.7803921568627451,0.7568627450980392,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.9450980392156862,0.9294117647058824,0.9254901960784314,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,nW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0,0.26666666666666666,0.10588235294117647,1); + const float e1 = 0.125; + const vec4 v1 = vec4(0,0.42745098039215684,0.17254901960784313,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.13725490196078433,0.5450980392156862,0.27058823529411763,1); + const float e3 = 0.375; + const vec4 v3 = vec4(0.2549019607843137,0.6705882352941176,0.36470588235294116,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.4549019607843137,0.7686274509803922,0.4627450980392157,1); + const float e5 = 0.625; + const vec4 v5 = vec4(0.6313725490196078,0.8509803921568627,0.6078431372549019,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.7803921568627451,0.9137254901960784,0.7529411764705882,1); + const float e7 = 0.875; + const vec4 v7 = vec4(0.8980392156862745,0.9607843137254902,0.8784313725490196,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.9686274509803922,0.9882352941176471,0.9607843137254902,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,rW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0,0,0,1); + const float e1 = 1.0; + const vec4 v1 = vec4(1,1,1,1); + float a0 = smoothstep(e0,e1,x); + return mix(v0,v1,a0)*step(e0,x)*step(x,e1); +} +`,iW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0,0,0,1); + const float e1 = 0.3; + const vec4 v1 = vec4(0.9019607843137255,0,0,1); + const float e2 = 0.6; + const vec4 v2 = vec4(1,0.8235294117647058,0,1); + const float e3 = 1.0; + const vec4 v3 = vec4(1,1,1,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2),mix(v2,v3,a2)*step(e2,x)*step(x,e3) + )); +} +`,sW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(1,0,0,1); + const float e1 = 0.169; + const vec4 v1 = vec4(0.9921568627450981,1,0.00784313725490196,1); + const float e2 = 0.173; + const vec4 v2 = vec4(0.9686274509803922,1,0.00784313725490196,1); + const float e3 = 0.337; + const vec4 v3 = vec4(0,0.9882352941176471,0.01568627450980392,1); + const float e4 = 0.341; + const vec4 v4 = vec4(0,0.9882352941176471,0.0392156862745098,1); + const float e5 = 0.506; + const vec4 v5 = vec4(0.00392156862745098,0.9764705882352941,1,1); + const float e6 = 0.671; + const vec4 v6 = vec4(0.00784313725490196,0,0.9921568627450981,1); + const float e7 = 0.675; + const vec4 v7 = vec4(0.03137254901960784,0,0.9921568627450981,1); + const float e8 = 0.839; + const vec4 v8 = vec4(1,0,0.984313725490196,1); + const float e9 = 0.843; + const vec4 v9 = vec4(1,0,0.9607843137254902,1); + const float e10 = 1.0; + const vec4 v10 = vec4(1,0,0.023529411764705882,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + float a8 = smoothstep(e8,e9,x); + float a9 = smoothstep(e9,e10,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7), + max(mix(v7,v8,a7)*step(e7,x)*step(x,e8), + max(mix(v8,v9,a8)*step(e8,x)*step(x,e9),mix(v9,v10,a9)*step(e9,x)*step(x,e10) + ))))))))); +} +`,oW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0,0,0.01568627450980392,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.12156862745098039,0.047058823529411764,0.2823529411764706,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.3333333333333333,0.058823529411764705,0.42745098039215684,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.5333333333333333,0.13333333333333333,0.41568627450980394,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.7294117647058823,0.21176470588235294,0.3333333333333333,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.8901960784313725,0.34901960784313724,0.2,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.9764705882352941,0.5490196078431373,0.0392156862745098,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.9764705882352941,0.788235294117647,0.19607843137254902,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.9882352941176471,1,0.6431372549019608,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,aW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0,0,0.5137254901960784,1); + const float e1 = 0.125; + const vec4 v1 = vec4(0,0.23529411764705882,0.6666666666666666,1); + const float e2 = 0.375; + const vec4 v2 = vec4(0.0196078431372549,1,1,1); + const float e3 = 0.625; + const vec4 v3 = vec4(1,1,0,1); + const float e4 = 0.875; + const vec4 v4 = vec4(0.9803921568627451,0,0,1); + const float e5 = 1.0; + const vec4 v5 = vec4(0.5019607843137255,0,0,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4),mix(v4,v5,a4)*step(e4,x)*step(x,e5) + )))); +} +`,lW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0,0,0.01568627450980392,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.10980392156862745,0.06274509803921569,0.26666666666666666,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.30980392156862746,0.07058823529411765,0.4823529411764706,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.5058823529411764,0.1450980392156863,0.5058823529411764,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.7098039215686275,0.21176470588235294,0.47843137254901963,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.8980392156862745,0.3137254901960784,0.39215686274509803,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.984313725490196,0.5294117647058824,0.3803921568627451,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.996078431372549,0.7607843137254902,0.5294117647058824,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.9882352941176471,0.9921568627450981,0.7490196078431373,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,cW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.25098039215686274,0.0196078431372549,0.0196078431372549,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.41568627450980394,0.023529411764705882,0.058823529411764705,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.5647058823529412,0.10196078431372549,0.027450980392156862,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.6588235294117647,0.25098039215686274,0.011764705882352941,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.7372549019607844,0.39215686274509803,0.01568627450980392,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.807843137254902,0.5333333333333333,0.043137254901960784,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.8627450980392157,0.6823529411764706,0.09803921568627451,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.9058823529411765,0.8431372549019608,0.17254901960784313,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.9725490196078431,0.996078431372549,0.4117647058823529,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,uW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.2,0.0784313725490196,0.09411764705882353,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.35294117647058826,0.12549019607843137,0.13725490196078433,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.5058823529411764,0.17254901960784313,0.13333333333333333,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.6235294117647059,0.26666666666666666,0.09803921568627451,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.7137254901960784,0.38823529411764707,0.07450980392156863,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.7803921568627451,0.5254901960784314,0.08627450980392157,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.8313725490196079,0.6705882352941176,0.13725490196078433,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.8666666666666667,0.8235294117647058,0.21176470588235294,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.8823529411764706,0.9921568627450981,0.29411764705882354,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,fW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.5686274509803921,0.4117647058823529,0.07058823529411765,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.7215686274509804,0.2784313725490196,0.14901960784313725,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.7294117647058823,0.22745098039215686,0.45098039215686275,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.6274509803921569,0.2784313725490196,0.7254901960784313,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.43137254901960786,0.3803921568627451,0.8549019607843137,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.19607843137254902,0.4823529411764706,0.6431372549019608,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.12156862745098039,0.5137254901960784,0.43137254901960786,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.30196078431372547,0.5058823529411764,0.13333333333333333,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.5686274509803921,0.4117647058823529,0.07058823529411765,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,hW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0,0,1,1); + const float e1 = 0.1; + const vec4 v1 = vec4(0.2,0.6,1,1); + const float e2 = 0.2; + const vec4 v2 = vec4(0.4,0.8,1,1); + const float e3 = 0.3; + const vec4 v3 = vec4(0.6,0.8,1,1); + const float e4 = 0.4; + const vec4 v4 = vec4(0.8,0.8,1,1); + const float e5 = 0.5; + const vec4 v5 = vec4(1,1,1,1); + const float e6 = 0.6; + const vec4 v6 = vec4(1,0.8,1,1); + const float e7 = 0.7; + const vec4 v7 = vec4(1,0.6,1,1); + const float e8 = 0.8; + const vec4 v8 = vec4(1,0.4,0.8,1); + const float e9 = 0.9; + const vec4 v9 = vec4(1,0.4,0.4,1); + const float e10 = 1.0; + const vec4 v10 = vec4(1,0,0,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + float a8 = smoothstep(e8,e9,x); + float a9 = smoothstep(e9,e10,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7), + max(mix(v7,v8,a7)*step(e7,x)*step(x,e8), + max(mix(v8,v9,a8)*step(e8,x)*step(x,e9),mix(v9,v10,a9)*step(e9,x)*step(x,e10) + ))))))))); +} +`,dW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.050980392156862744,0.03137254901960784,0.5294117647058824,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.29411764705882354,0.011764705882352941,0.6313725490196078,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.49019607843137253,0.011764705882352941,0.6588235294117647,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.6588235294117647,0.13333333333333333,0.5882352941176471,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.796078431372549,0.27450980392156865,0.4745098039215686,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.8980392156862745,0.4196078431372549,0.36470588235294116,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.9725490196078431,0.5803921568627451,0.2549019607843137,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.9921568627450981,0.7647058823529411,0.1568627450980392,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.9411764705882353,0.9764705882352941,0.12941176470588237,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,AW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.047058823529411764,0.2,0.5137254901960784,1); + const float e1 = 0.25; + const vec4 v1 = vec4(0.0392156862745098,0.5333333333333333,0.7294117647058823,1); + const float e2 = 0.5; + const vec4 v2 = vec4(0.9490196078431372,0.8274509803921568,0.2196078431372549,1); + const float e3 = 0.75; + const vec4 v3 = vec4(0.9490196078431372,0.5607843137254902,0.2196078431372549,1); + const float e4 = 1.0; + const vec4 v4 = vec4(0.8509803921568627,0.11764705882352941,0.11764705882352941,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3),mix(v3,v4,a3)*step(e3,x)*step(x,e4) + ))); +} +`,gW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.49019607843137253,0,0.7019607843137254,1); + const float e1 = 0.1; + const vec4 v1 = vec4(0.7803921568627451,0,0.7058823529411765,1); + const float e2 = 0.2; + const vec4 v2 = vec4(1,0,0.4745098039215686,1); + const float e3 = 0.3; + const vec4 v3 = vec4(1,0.4235294117647059,0,1); + const float e4 = 0.4; + const vec4 v4 = vec4(0.8705882352941177,0.7607843137254902,0,1); + const float e5 = 0.5; + const vec4 v5 = vec4(0.5882352941176471,1,0,1); + const float e6 = 0.6; + const vec4 v6 = vec4(0,1,0.21568627450980393,1); + const float e7 = 0.7; + const vec4 v7 = vec4(0,0.9647058823529412,0.5882352941176471,1); + const float e8 = 0.8; + const vec4 v8 = vec4(0.19607843137254902,0.6549019607843137,0.8705882352941177,1); + const float e9 = 0.9; + const vec4 v9 = vec4(0.403921568627451,0.2,0.9215686274509803,1); + const float e10 = 1.0; + const vec4 v10 = vec4(0.48627450980392156,0,0.7294117647058823,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + float a8 = smoothstep(e8,e9,x); + float a9 = smoothstep(e9,e10,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7), + max(mix(v7,v8,a7)*step(e7,x)*step(x,e8), + max(mix(v8,v9,a8)*step(e8,x)*step(x,e9),mix(v9,v10,a9)*step(e9,x)*step(x,e10) + ))))))))); +} +`,pW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.5882352941176471,0,0.35294117647058826,1); + const float e1 = 0.125; + const vec4 v1 = vec4(0,0,0.7843137254901961,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0,0.09803921568627451,1,1); + const float e3 = 0.375; + const vec4 v3 = vec4(0,0.596078431372549,1,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.17254901960784313,1,0.5882352941176471,1); + const float e5 = 0.625; + const vec4 v5 = vec4(0.592156862745098,1,0,1); + const float e6 = 0.75; + const vec4 v6 = vec4(1,0.9176470588235294,0,1); + const float e7 = 0.875; + const vec4 v7 = vec4(1,0.43529411764705883,0,1); + const float e8 = 1.0; + const vec4 v8 = vec4(1,0,0,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,mW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.0196078431372549,0.0392156862745098,0.6745098039215687,1); + const float e1 = 0.35; + const vec4 v1 = vec4(0.41568627450980394,0.5372549019607843,0.9686274509803922,1); + const float e2 = 0.5; + const vec4 v2 = vec4(0.7450980392156863,0.7450980392156863,0.7450980392156863,1); + const float e3 = 0.6; + const vec4 v3 = vec4(0.8627450980392157,0.6666666666666666,0.5176470588235295,1); + const float e4 = 0.7; + const vec4 v4 = vec4(0.9019607843137255,0.5686274509803921,0.35294117647058826,1); + const float e5 = 1.0; + const vec4 v5 = vec4(0.6980392156862745,0.0392156862745098,0.10980392156862745,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4),mix(v4,v5,a4)*step(e4,x)*step(x,e5) + )))); +} +`,vW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.16470588235294117,0.09411764705882353,0.4235294117647059,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.12941176470588237,0.19607843137254902,0.6352941176470588,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.058823529411764705,0.35294117647058826,0.5686274509803921,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.1568627450980392,0.4627450980392157,0.5372549019607843,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.23137254901960785,0.5725490196078431,0.5294117647058824,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.30980392156862746,0.6862745098039216,0.49411764705882355,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.47058823529411764,0.796078431372549,0.40784313725490196,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.7568627450980392,0.8666666666666667,0.39215686274509803,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.9921568627450981,0.9372549019607843,0.6039215686274509,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,yW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(1,0,1,1); + const float e1 = 1.0; + const vec4 v1 = vec4(1,1,0,1); + float a0 = smoothstep(e0,e1,x); + return mix(v0,v1,a0)*step(e0,x)*step(x,e1); +} +`,EW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0,0.5019607843137255,0.4,1); + const float e1 = 1.0; + const vec4 v1 = vec4(1,1,0.4,1); + float a0 = smoothstep(e0,e1,x); + return mix(v0,v1,a0)*step(e0,x)*step(x,e1); +} +`,_W=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.01568627450980392,0.13725490196078433,0.2,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.09019607843137255,0.2,0.47843137254901963,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.3333333333333333,0.23137254901960785,0.615686274509804,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.5058823529411764,0.30980392156862746,0.5607843137254902,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.6862745098039216,0.37254901960784315,0.5098039215686274,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.8705882352941177,0.4392156862745098,0.396078431372549,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.9764705882352941,0.5725490196078431,0.25882352941176473,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.9764705882352941,0.7686274509803922,0.2549019607843137,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.9098039215686274,0.9803921568627451,0.3568627450980392,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,xW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.13333333333333333,0.12156862745098039,0.10588235294117647,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.2549019607843137,0.19607843137254902,0.1607843137254902,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.3843137254901961,0.27058823529411763,0.20392156862745098,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.5137254901960784,0.34901960784313724,0.2235294117647059,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.6313725490196078,0.4392156862745098,0.23137254901960785,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.7254901960784313,0.5490196078431373,0.25882352941176473,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.792156862745098,0.6823529411764706,0.34509803921568627,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.8470588235294118,0.8196078431372549,0.49411764705882355,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.9137254901960784,0.9647058823529412,0.6705882352941176,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,CW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.06666666666666667,0.12549019607843137,0.25098039215686274,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.13725490196078433,0.20392156862745098,0.4549019607843137,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.11372549019607843,0.3176470588235294,0.611764705882353,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.12156862745098039,0.44313725490196076,0.6352941176470588,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.19607843137254902,0.5647058823529412,0.6627450980392157,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.3411764705882353,0.6784313725490196,0.6901960784313725,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.5843137254901961,0.7686274509803922,0.7411764705882353,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.796078431372549,0.8666666666666667,0.8274509803921568,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.996078431372549,0.984313725490196,0.9019607843137255,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,IW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.09019607843137255,0.13725490196078433,0.07450980392156863,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.09411764705882353,0.25098039215686274,0.14901960784313725,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.043137254901960784,0.37254901960784315,0.17647058823529413,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.15294117647058825,0.4823529411764706,0.13725490196078433,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.37254901960784315,0.5725490196078431,0.047058823529411764,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.596078431372549,0.6470588235294118,0.07058823529411765,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.788235294117647,0.7294117647058823,0.27058823529411763,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.9137254901960784,0.8470588235294118,0.5372549019607843,1); + const float e8 = 1.0; + const vec4 v8 = vec4(1,0.9921568627450981,0.803921568627451,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,wW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.26666666666666666,0.00392156862745098,0.32941176470588235,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.2784313725490196,0.17254901960784313,0.47843137254901963,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.23137254901960785,0.3176470588235294,0.5450980392156862,1); + const float e3 = 0.38; + const vec4 v3 = vec4(0.17254901960784313,0.44313725490196076,0.5568627450980392,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.12941176470588237,0.5647058823529412,0.5529411764705883,1); + const float e5 = 0.63; + const vec4 v5 = vec4(0.15294117647058825,0.6784313725490196,0.5058823529411764,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.3607843137254902,0.7843137254901961,0.38823529411764707,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.6666666666666666,0.8627450980392157,0.19607843137254902,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.9921568627450981,0.9058823529411765,0.1450980392156863,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,bW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.49019607843137253,0,0.7019607843137254,1); + const float e1 = 0.13; + const vec4 v1 = vec4(0.6745098039215687,0,0.7333333333333333,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.8588235294117647,0,0.6666666666666666,1); + const float e3 = 0.38; + const vec4 v3 = vec4(1,0,0.5098039215686274,1); + const float e4 = 0.5; + const vec4 v4 = vec4(1,0.24705882352941178,0.2901960784313726,1); + const float e5 = 0.63; + const vec4 v5 = vec4(1,0.4823529411764706,0,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.9176470588235294,0.6901960784313725,0,1); + const float e7 = 0.88; + const vec4 v7 = vec4(0.7450980392156863,0.8941176470588236,0,1); + const float e8 = 1.0; + const vec4 v8 = vec4(0.5764705882352941,1,0,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,SW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0,0,1,1); + const float e1 = 1.0; + const vec4 v1 = vec4(0,1,0.5019607843137255,1); + float a0 = smoothstep(e0,e1,x); + return mix(v0,v1,a0)*step(e0,x)*step(x,e1); +} +`,TW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.03137254901960784,0.11372549019607843,0.34509803921568627,1); + const float e1 = 0.125; + const vec4 v1 = vec4(0.1450980392156863,0.20392156862745098,0.5803921568627451,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.13333333333333333,0.3686274509803922,0.6588235294117647,1); + const float e3 = 0.375; + const vec4 v3 = vec4(0.11372549019607843,0.5686274509803921,0.7529411764705882,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.2549019607843137,0.7137254901960784,0.7686274509803922,1); + const float e5 = 0.625; + const vec4 v5 = vec4(0.4980392156862745,0.803921568627451,0.7333333333333333,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.7803921568627451,0.9137254901960784,0.7058823529411765,1); + const float e7 = 0.875; + const vec4 v7 = vec4(0.9294117647058824,0.9725490196078431,0.8509803921568627,1); + const float e8 = 1.0; + const vec4 v8 = vec4(1,1,0.8509803921568627,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,BW=`vec4 apply_cmap (float x) { + const float e0 = 0.0; + const vec4 v0 = vec4(0.5019607843137255,0,0.14901960784313725,1); + const float e1 = 0.125; + const vec4 v1 = vec4(0.7411764705882353,0,0.14901960784313725,1); + const float e2 = 0.25; + const vec4 v2 = vec4(0.8901960784313725,0.10196078431372549,0.10980392156862745,1); + const float e3 = 0.375; + const vec4 v3 = vec4(0.9882352941176471,0.3058823529411765,0.16470588235294117,1); + const float e4 = 0.5; + const vec4 v4 = vec4(0.9921568627450981,0.5529411764705883,0.23529411764705882,1); + const float e5 = 0.625; + const vec4 v5 = vec4(0.996078431372549,0.6980392156862745,0.2980392156862745,1); + const float e6 = 0.75; + const vec4 v6 = vec4(0.996078431372549,0.8509803921568627,0.4627450980392157,1); + const float e7 = 0.875; + const vec4 v7 = vec4(1,0.9294117647058824,0.6274509803921569,1); + const float e8 = 1.0; + const vec4 v8 = vec4(1,1,0.8,1); + float a0 = smoothstep(e0,e1,x); + float a1 = smoothstep(e1,e2,x); + float a2 = smoothstep(e2,e3,x); + float a3 = smoothstep(e3,e4,x); + float a4 = smoothstep(e4,e5,x); + float a5 = smoothstep(e5,e6,x); + float a6 = smoothstep(e6,e7,x); + float a7 = smoothstep(e7,e8,x); + return max(mix(v0,v1,a0)*step(e0,x)*step(x,e1), + max(mix(v1,v2,a1)*step(e1,x)*step(x,e2), + max(mix(v2,v3,a2)*step(e2,x)*step(x,e3), + max(mix(v3,v4,a3)*step(e3,x)*step(x,e4), + max(mix(v4,v5,a4)*step(e4,x)*step(x,e5), + max(mix(v5,v6,a5)*step(e5,x)*step(x,e6), + max(mix(v6,v7,a6)*step(e6,x)*step(x,e7),mix(v7,v8,a7)*step(e7,x)*step(x,e8) + ))))))); +} +`,oT={__proto__:null,alpha:UH,autumn:GH,bathymetry:zH,blackbody:VH,bluered:jH,bone:HH,cdom:WH,chlorophyll:YH,cool:$H,copper:KH,cubehelix:qH,density:XH,earth:JH,electric:ZH,freesurface_blue:eW,freesurface_red:tW,greens:nW,greys:rW,hot:iW,hsv:sW,inferno:oW,jet:aW,magma:lW,oxygen:cW,par:uW,phase:fW,picnic:hW,plasma:dW,portland:AW,rainbow_soft:gW,rainbow:pW,rdbu:mW,salinity:vW,spring:yW,summer:EW,temperature:_W,turbidity:xW,velocity_blue:CW,velocity_green:IW,viridis:wW,warm:bW,winter:SW,yignbu:TW,yiorrd:BW};function RW(t,e){return{name:`additive-colormap-${t}`,fs:`uniform float opacity; +uniform bool useTransparentColor; + +${sT} +${e} + +vec4 colormap(float intensity) { + return vec4(apply_transparent_color(apply_cmap(min(1.,intensity)).xyz, apply_cmap(0.).xyz, useTransparentColor, opacity)); +}`,inject:{"fs:DECKGL_MUTATE_COLOR":` float intensityCombo = 0.; + intensityCombo += max(0.,intensity0); + intensityCombo += max(0.,intensity1); + intensityCombo += max(0.,intensity2); + intensityCombo += max(0.,intensity3); + intensityCombo += max(0.,intensity4); + intensityCombo += max(0.,intensity5); + rgba = colormap(intensityCombo);`}}}const gf={colormap:{type:"string",value:"viridis",compare:!0},opacity:{type:"number",value:1,compare:!0},useTransparentColor:{type:"boolean",value:!1,compare:!0}},aT=class extends ea{getShaders(){var n;const t=((n=this==null?void 0:this.props)==null?void 0:n.colormap)||gf.colormap.value,e=oT[t];if(!e)throw Error(`No colormap named ${t} found in registry`);return{modules:[RW(t,e)]}}updateState({props:t,oldProps:e,changeFlags:n,...r}){if(super.updateState({props:t,oldProps:e,changeFlags:n,...r}),t.colormap!==e.colormap){const{gl:i}=this.context;this.state.model&&(this.state.model.delete(),this.setState({model:this._getModel(i)}))}}draw(){var r;const{useTransparentColor:t=gf.useTransparentColor.value,opacity:e=gf.opacity.value}=this.props,n={opacity:e,useTransparentColor:t};(r=this.state.model)==null||r.setUniforms(n)}};aT.extensionName="AdditiveColormapExtension";aT.defaultProps=gf;const PW=`uniform vec3 transparentColor; +uniform bool useTransparentColor; +uniform float opacity; + +uniform vec3 colors[6]; + +${sT} + +void mutate_color(inout vec3 rgb, float intensity0, float intensity1, float intensity2, float intensity3, float intensity4, float intensity5) { + rgb += max(0.0, min(1.0, intensity0)) * vec3(colors[0]); + rgb += max(0.0, min(1.0, intensity1)) * vec3(colors[1]); + rgb += max(0.0, min(1.0, intensity2)) * vec3(colors[2]); + rgb += max(0.0, min(1.0, intensity3)) * vec3(colors[3]); + rgb += max(0.0, min(1.0, intensity4)) * vec3(colors[4]); + rgb += max(0.0, min(1.0, intensity5)) * vec3(colors[5]); +} + +vec4 apply_opacity(vec3 rgb) { + return vec4(apply_transparent_color(rgb, transparentColor, useTransparentColor, opacity)); +} +`,MW=`vec3 rgb = rgba.rgb; +mutate_color(rgb, intensity0, intensity1, intensity2, intensity3, intensity4, intensity5); +rgba = apply_opacity(rgb); +`,LW={name:"color-palette-module",fs:PW,inject:{"fs:DECKGL_MUTATE_COLOR":MW}};function NW(t,e,n){for(let r=0;rtC.length)throw new Error("Too many colors");return tC.slice(0,t)}function Lv({colors:t,channelsVisible:e}){const n=t.map((s,o)=>e[o]?s.map(a=>a/QH):Zx),r=iT-n.length;return NW(n,Zx,r).reduce((s,o)=>s.concat(o),[])}const pf={colors:{type:"array",value:null,compare:!0},opacity:{type:"number",value:1,compare:!0},transparentColor:{type:"array",value:null,compare:!0},useTransparentColor:{type:"boolean",value:!1,compare:!0}},Pc=class extends ea{getShaders(){return{...super.getShaders(),modules:[LW]}}draw(){var a;const{colors:t,channelsVisible:e,opacity:n=pf.opacity.value,transparentColor:r=pf.transparentColor.value,useTransparentColor:i=pf.useTransparentColor.value}=this.props,o={colors:Lv({channelsVisible:e||this.selections.map(()=>!0),colors:t||Mv(this.props.selections.length)}),opacity:n,transparentColor:(r||[0,0,0]).map(l=>l/255),useTransparentColor:!!i};(a=this.state.model)==null||a.setUniforms(o)}};Pc.extensionName="ColorPaletteExtension";Pc.defaultProps=pf;const OW=`// lens bounds for ellipse +uniform float majorLensAxis; +uniform float minorLensAxis; +uniform vec2 lensCenter; + +// lens uniforms +uniform bool lensEnabled; +uniform int lensSelection; +uniform vec3 lensBorderColor; +uniform float lensBorderRadius; + +// color palette +uniform vec3 colors[6]; + +bool frag_in_lens_bounds(vec2 vTexCoord) { + // Check membership in what is (not visually, but effectively) an ellipse. + // Since the fragment space is a unit square and the real coordinates could be longer than tall, + // to get a circle visually we have to treat the check as that of an ellipse to get the effect of a circle. + + // Check membership in ellipse. + return pow((lensCenter.x - vTexCoord.x) / majorLensAxis, 2.) + pow((lensCenter.y - vTexCoord.y) / minorLensAxis, 2.) < (1. - lensBorderRadius); +} + +bool frag_on_lens_bounds(vec2 vTexCoord) { + // Same as the above, except this checks the boundary. + + float ellipseDistance = pow((lensCenter.x - vTexCoord.x) / majorLensAxis, 2.) + pow((lensCenter.y - vTexCoord.y) / minorLensAxis, 2.); + + // Check membership on "bourndary" of ellipse. + return ellipseDistance <= 1. && ellipseDistance >= (1. - lensBorderRadius); +} +// Return a float for boolean arithmetic calculation. +float get_use_color_float(vec2 vTexCoord, int channelIndex) { + bool isFragInLensBounds = frag_in_lens_bounds(vTexCoord); + bool inLensAndUseLens = lensEnabled && isFragInLensBounds; + return float(int((inLensAndUseLens && channelIndex == lensSelection) || (!inLensAndUseLens))); + +} +void mutate_color(inout vec3 rgb, float intensity0, float intensity1, float intensity2, float intensity3, float intensity4, float intensity5, vec2 vTexCoord){ + float useColorValue = 0.; + + useColorValue = get_use_color_float(vTexCoord, 0); + rgb += max(0., min(1., intensity0)) * max(vec3(colors[0]), (1. - useColorValue) * vec3(1., 1., 1.)); + + useColorValue = get_use_color_float(vTexCoord, 1); + rgb += max(0., min(1., intensity1)) * max(vec3(colors[1]), (1. - useColorValue) * vec3(1., 1., 1.)); + + useColorValue = get_use_color_float(vTexCoord, 2); + rgb += max(0., min(1., intensity2)) * max(vec3(colors[2]), (1. - useColorValue) * vec3(1., 1., 1.)); + + useColorValue = get_use_color_float(vTexCoord, 3); + rgb += max(0., min(1., intensity3)) * max(vec3(colors[3]), (1. - useColorValue) * vec3(1., 1., 1.)); + + useColorValue = get_use_color_float(vTexCoord, 4); + rgb += max(0., min(1., intensity4)) * max(vec3(colors[4]), (1. - useColorValue) * vec3(1., 1., 1.)); + + useColorValue = get_use_color_float(vTexCoord, 5); + rgb += max(0., min(1., intensity5)) * max(vec3(colors[5]), (1. - useColorValue) * vec3(1., 1., 1.)); +} +`,DW={name:"lens-module",fs:OW,inject:{"fs:DECKGL_MUTATE_COLOR":` + vec3 rgb = rgba.rgb; + mutate_color(rgb, intensity0, intensity1, intensity2, intensity3, intensity4, intensity5, vTexCoord); + rgba = vec4(rgb, 1.); + `,"fs:#main-end":` + bool isFragOnLensBounds = frag_on_lens_bounds(vTexCoord); + gl_FragColor = (lensEnabled && isFragOnLensBounds) ? vec4(lensBorderColor, 1.) : gl_FragColor; + `}},to={lensEnabled:{type:"boolean",value:!1,compare:!0},lensSelection:{type:"number",value:0,compare:!0},lensRadius:{type:"number",value:100,compare:!0},lensBorderColor:{type:"array",value:[255,255,255],compare:!0},lensBorderRadius:{type:"number",value:.02,compare:!0},colors:{type:"array",value:null,compare:!0}},lT=class extends ea{getShaders(){return{...super.getShaders(),modules:[DW]}}initializeState(){const t=this.getCurrentLayer();if(t.isComposite)return;const e=()=>{const{viewportId:n}=t.props,{lensRadius:r=to.lensRadius.value}=this.props;if(!n){t.setState({unprojectLensBounds:[0,0,0,0]});return}const{mousePosition:i}=t.context,s=t.context.deck.viewManager.views.filter(l=>l.id===n)[0],o=t.context.deck.viewManager.viewState[n],a=s.makeViewport({...o,viewState:o});if(i&&a.containsPixel(i)){const l={x:i.x-a.x,y:i.y-a.y},u=[[l.x-r,l.y],[l.x,l.y+r],[l.x+r,l.y],[l.x,l.y-r]].map((f,h)=>a.unproject(f)[h%2]);t.setState({unprojectLensBounds:u})}else t.setState({unprojectLensBounds:[0,0,0,0]})};this.context.deck&&this.context.deck.eventManager.on({pointermove:e,pointerleave:e,wheel:e}),this.setState({onMouseMove:e,unprojectLensBounds:[0,0,0,0]})}draw(){var C;const{unprojectLensBounds:t=[0,0,0,0]}=this.state,{bounds:e,lensEnabled:n=to.lensEnabled.value,lensSelection:r=to.lensSelection.value,lensBorderColor:i=to.lensBorderColor.value,lensBorderRadius:s=to.lensBorderRadius.value,colors:o,channelsVisible:a}=this.props,[l,c,u,f]=t,[h,d,A,p]=e,g=(l-h)/(A-h),m=(c-p)/(d-p),v=(u-h)/(A-h),E=(f-p)/(d-p),_=Lv({channelsVisible:a||this.selections.map(()=>!0),colors:o||Mv(this.props.selections.length)}),I={majorLensAxis:(v-g)/2,minorLensAxis:(m-E)/2,lensCenter:[(v+g)/2,(m+E)/2],lensEnabled:n,lensSelection:r,lensBorderColor:i,lensBorderRadius:s,colors:_};(C=this.state.model)==null||C.setUniforms(I)}finalizeState(){var t,e,n;this.context.deck&&this.context.deck.eventManager.off({pointermove:(t=this.state)==null?void 0:t.onMouseMove,pointerleave:(e=this.state)==null?void 0:e.onMouseMove,wheel:(n=this.state)==null?void 0:n.onMouseMove})}};lT.extensionName="LensExtension";lT.defaultProps=to;function kW(t,e){const n=`${e} + +vec4 colormap(float intensity, float opacity) { + return vec4(apply_cmap(min(1.,intensity)).xyz, opacity); +}`;return{name:`additive-colormap-3d-${t}`,fs:n}}const cT={colormap:{type:"string",value:"viridis",compare:!0}},Mc=class extends ea{constructor(...t){super(t),this.opts=this.opts||{}}getShaders(){var n;const t=((n=this==null?void 0:this.props)==null?void 0:n.colormap)||cT.colormap.value,e=oT[t];return{...super.getShaders(),modules:[kW(t,e)]}}updateState({props:t,oldProps:e,changeFlags:n,...r}){if(super.updateState({props:t,oldProps:e,changeFlags:n,...r}),t.colormap!==e.colormap){const{gl:i}=this.context;this.state.model&&(this.state.model.delete(),this.setState({model:this._getModel(i)}))}}};Mc.extensionName="BaseExtension";Mc.defaultProps=cT;const QW="",FW=` float intensityArray[6] = float[6](intensityValue0, intensityValue1, intensityValue2, intensityValue3, intensityValue4, intensityValue5); + float total = 0.0; + + for(int i = 0; i < 6; i++) { + total += intensityArray[i]; + } + // Do not go past 1 in opacity/colormap value. + total = min(total, 1.0); + + vec4 val_color = colormap(total, total); + + // Opacity correction + val_color.a = 1.0 - pow(1.0 - val_color.a, 1.0); + color.rgb += (1.0 - color.a) * val_color.a * val_color.rgb; + color.a += (1.0 - color.a) * val_color.a; + if (color.a >= 0.95) { + break; + } + p += ray_dir * dt; +`,UW="",GW=class extends Mc{constructor(t){super(t),this.rendering={_BEFORE_RENDER:QW,_RENDER:FW,_AFTER_RENDER:UW}}};GW.extensionName="AdditiveBlendExtension";const zW=` float maxVals[6] = float[6](-1.0, -1.0, -1.0, -1.0, -1.0, -1.0); +`,VW=` float intensityArray[6] = float[6](intensityValue0, intensityValue1, intensityValue2, intensityValue3, intensityValue4, intensityValue5); + + for(int i = 0; i < 6; i++) { + if(intensityArray[i] > maxVals[i]) { + maxVals[i] = intensityArray[i]; + } + } +`,jW=` float total = 0.0; + for(int i = 0; i < 6; i++) { + total += maxVals[i]; + } + // Do not go past 1 in opacity/colormap value. + total = min(total, 1.0); + color = colormap(total, total); +`,HW=class extends Mc{constructor(t){super(t),this.rendering={_BEFORE_RENDER:zW,_RENDER:VW,_AFTER_RENDER:jW}}};HW.extensionName="MaximumIntensityProjectionExtension";const WW=` float minVals[6] = float[6](1. / 0., 1. / 0., 1. / 0., 1. / 0., 1. / 0., 1. / 0.); +`,YW=` float intensityArray[6] = float[6](intensityValue0, intensityValue1, intensityValue2, intensityValue3, intensityValue4, intensityValue5); + + for(int i = 0; i < 6; i++) { + if(intensityArray[i] < minVals[i]) { + minVals[i] = intensityArray[i]; + } + } +`,$W=` float total = 0.0; + for(int i = 0; i < 6; i++) { + total += minVals[i]; + } + // Do not go past 1 in opacity/colormap value. + total = min(total, 1.0); + color = colormap(total, total); +`,KW=class extends Mc{constructor(t){super(t),this.rendering={_BEFORE_RENDER:WW,_RENDER:YW,_AFTER_RENDER:$W}}};KW.extensionName="MinimumIntensityProjectionExtension";const qW={colors:{type:"array",value:null,compare:!0}},sa=class extends ea{constructor(...t){super(t),this.opts=this.opts||{}}draw(){var i;const{colors:t,channelsVisible:e}=this.props,r={colors:Lv({channelsVisible:e||this.selections.map(()=>!0),colors:t||Mv(this.props.selections.length)})};(i=this.state.model)==null||i.setUniforms(r)}};sa.extensionName="BaseExtension";sa.defaultProps=qW;const XW="",JW=` vec3 rgbCombo = vec3(0.0); + vec3 hsvCombo = vec3(0.0); + float intensityArray[6] = float[6](intensityValue0, intensityValue1, intensityValue2, intensityValue3, intensityValue4, intensityValue5); + float total = 0.0; + for(int i = 0; i < 6; i++) { + float intensityValue = intensityArray[i]; + rgbCombo += max(0.0, min(1.0, intensityValue)) * colors[i]; + total += intensityValue; + } + // Do not go past 1 in opacity. + total = min(total, 1.0); + vec4 val_color = vec4(rgbCombo, total); + // Opacity correction + val_color.a = 1.0 - pow(1.0 - val_color.a, 1.0); + color.rgb += (1.0 - color.a) * val_color.a * val_color.rgb; + color.a += (1.0 - color.a) * val_color.a; + if (color.a >= 0.95) { + break; + } +`,ZW="",uT=class extends sa{constructor(t){super(t),this.rendering={_BEFORE_RENDER:XW,_RENDER:JW,_AFTER_RENDER:ZW}}};uT.extensionName="AdditiveBlendExtension";const eY=` float maxVals[6] = float[6](-1.0, -1.0, -1.0, -1.0, -1.0, -1.0); +`,tY=` float intensityArray[6] = float[6](intensityValue0, intensityValue1, intensityValue2, intensityValue3, intensityValue4, intensityValue5); + + for(int i = 0; i < 6; i++) { + if(intensityArray[i] > maxVals[i]) { + maxVals[i] = intensityArray[i]; + } + } +`,nY=` vec3 rgbCombo = vec3(0.0); + for(int i = 0; i < 6; i++) { + rgbCombo += max(0.0, min(1.0, maxVals[i])) * vec3(colors[i]); + } + color = vec4(rgbCombo, 1.0); +`,fT=class extends sa{constructor(t){super(t),this.rendering={_BEFORE_RENDER:eY,_RENDER:tY,_AFTER_RENDER:nY}}};fT.extensionName="MaximumIntensityProjectionExtension";const rY=` float minVals[6] = float[6](1. / 0., 1. / 0., 1. / 0., 1. / 0., 1. / 0., 1. / 0.); +`,iY=` float intensityArray[6] = float[6](intensityValue0, intensityValue1, intensityValue2, intensityValue3, intensityValue4, intensityValue5); + + for(int i = 0; i < 6; i++) { + if(intensityArray[i] < minVals[i]) { + minVals[i] = intensityArray[i]; + } + } +`,sY=` vec3 rgbCombo = vec3(0.0); + for(int i = 0; i < 6; i++) { + rgbCombo += max(0.0, min(1.0, minVals[i])) * vec3(colors[i]); + } + color = vec4(rgbCombo, 1.0); +`,hT=class extends sa{constructor(t){super(t),this.rendering={_BEFORE_RENDER:rY,_RENDER:iY,_AFTER_RENDER:sY}}};hT.extensionName="MinimumIntensityProjectionExtension";const dT={BaseExtension:sa,AdditiveBlendExtension:uT,MaximumIntensityProjectionExtension:fT,MinimumIntensityProjectionExtension:hT},oY=`float apply_contrast_limits(float intensity, vec2 contrastLimits) { + return max(0., (intensity - contrastLimits[0]) / max(0.0005, (contrastLimits[1] - contrastLimits[0]))); +} +`,aY={name:"channel-intensity",defines:{SAMPLER_TYPE:"usampler2D",COLORMAP_FUNCTION:""},fs:oY};function lY(t){return[...Array(t).keys()]}function AT(t,e,n){for(let r=0;re[c]?l:[i,i]),o=iT-s.length;if(o<0)throw Error(`${s.lengths} channels passed in, but only 6 are allowed.`);return AT(s,[i,i],o).reduce((l,c)=>l.concat(c),[])}function cY(t){var i;const{x:e,y:n,z:r}=((i=t==null?void 0:t.meta)==null?void 0:i.physicalSizes)??{};if(e!=null&&e.size&&(n!=null&&n.size)&&(r!=null&&r.size)){const s=Math.min(r.size,e.size,n.size),o=[e.size/s,n.size/s,r.size/s];return new ze().scale(o)}return new ze().identity()}function uY(t){const e=new Zh().makeViewport({viewState:t,height:t.height,width:t.width});return[e.unproject([0,0]),e.unproject([e.width,0]),e.unproject([e.width,e.height]),e.unproject([0,e.height])]}const fY=`#define SHADER_NAME xr-layer-fragment-shader + +precision highp float; +precision highp int; +precision highp SAMPLER_TYPE; + +// our texture +uniform SAMPLER_TYPE channel0; +uniform SAMPLER_TYPE channel1; +uniform SAMPLER_TYPE channel2; +uniform SAMPLER_TYPE channel3; +uniform SAMPLER_TYPE channel4; +uniform SAMPLER_TYPE channel5; + +in vec2 vTexCoord; + +// range +uniform vec2 contrastLimits[6]; + +void main() { + + float intensity0 = float(texture(channel0, vTexCoord).r); + DECKGL_PROCESS_INTENSITY(intensity0, contrastLimits[0], 0); + float intensity1 = float(texture(channel1, vTexCoord).r); + DECKGL_PROCESS_INTENSITY(intensity1, contrastLimits[1], 1); + float intensity2 = float(texture(channel2, vTexCoord).r); + DECKGL_PROCESS_INTENSITY(intensity2, contrastLimits[2], 2); + float intensity3 = float(texture(channel3, vTexCoord).r); + DECKGL_PROCESS_INTENSITY(intensity3, contrastLimits[3], 3); + float intensity4 = float(texture(channel4, vTexCoord).r); + DECKGL_PROCESS_INTENSITY(intensity4, contrastLimits[4], 4); + float intensity5 = float(texture(channel5, vTexCoord).r); + DECKGL_PROCESS_INTENSITY(intensity5, contrastLimits[5], 5); + + DECKGL_MUTATE_COLOR(gl_FragColor, intensity0, intensity1, intensity2, intensity3, intensity4, intensity5, vTexCoord); + + + geometry.uv = vTexCoord; + DECKGL_FILTER_COLOR(gl_FragColor, geometry); +} +`,hY=`#define SHADER_NAME xr-layer-vertex-shader + +attribute vec2 texCoords; +attribute vec3 positions; +attribute vec3 positions64Low; +attribute vec3 instancePickingColors; +varying vec2 vTexCoord; + +void main(void) { + geometry.worldPosition = positions; + geometry.uv = texCoords; + geometry.pickingColor = instancePickingColors; + gl_Position = project_position_to_clipspace(positions, positions64Low, vec3(0.), geometry.position); + DECKGL_FILTER_GL_POSITION(gl_Position, geometry); + vTexCoord = texCoords; + vec4 color = vec4(0.); + DECKGL_FILTER_COLOR(color, geometry); +} +`,nC={fs:fY,vs:hY};function dY(t,e){const n=bp(t,Ne.TEXTURE_FLOAT),r=bp(t,Ne.TEXTURE_FILTER_LINEAR_FLOAT);if(!n)throw new Error("WebGL1 context does not support floating point textures. Unable to display raster data.");return!r&&e===X.LINEAR?(console.warn("LINEAR filtering not supported in WebGL1 context. Falling back to NEAREST."),X.NEAREST):e}function rC(t,e,n){if(!xe(e))return{format:X.LUMINANCE,dataFormat:X.LUMINANCE,type:X.FLOAT,sampler:"sampler2D",shaderModule:nC,filter:dY(e,n),cast:a=>new Float32Array(a)};const r=n===X.LINEAR,i={...nC},s=`#version 300 es +`;return i.fs=s.concat(i.fs),i.vs=s.concat(i.vs),{...Nv(r?"Float32":t),shaderModule:i,filter:n,cast:r?a=>new Float32Array(a):a=>a}}const AY={pickable:{type:"boolean",value:!0,compare:!0},coordinateSystem:he.CARTESIAN,channelData:{type:"object",value:{},compare:!0},bounds:{type:"array",value:[0,0,1,1],compare:!0},contrastLimits:{type:"array",value:[],compare:!0},channelsVisible:{type:"array",value:[],compare:!0},dtype:{type:"string",value:"Uint16",compare:!0},interpolation:{type:"number",value:X.NEAREST,compare:!0}},oa=class extends pn{getShaders(){const{dtype:t,interpolation:e}=this.props,{shaderModule:n,sampler:r}=rC(t,this.context.gl,e),i=this._isHookDefinedByExtensions("fs:DECKGL_PROCESS_INTENSITY"),s={...aY,inject:{}};return i||(s.inject["fs:DECKGL_PROCESS_INTENSITY"]=` + intensity = apply_contrast_limits(intensity, contrastLimits); + `),super.getShaders({...n,defines:{SAMPLER_TYPE:r},modules:[Gi,zi,s]})}_isHookDefinedByExtensions(t){const{extensions:e}=this.props;return e==null?void 0:e.some(n=>{const r=n.getShaders(),{inject:i={},modules:s=[]}=r,o=i[t],a=s.some(l=>l==null?void 0:l.inject[t]);return o||a})}initializeState(){const{gl:t}=this.context;t.pixelStorei(X.UNPACK_ALIGNMENT,1),t.pixelStorei(X.PACK_ALIGNMENT,1),this.getAttributeManager().add({positions:{size:3,type:X.DOUBLE,fp64:this.use64bitPositions(),update:this.calculatePositions,noAlloc:!0}}),this.setState({numInstances:1,positions:new Float64Array(12)});const n=Os.getDefaultProgramManager(t),r="fs:DECKGL_MUTATE_COLOR(inout vec4 rgba, float intensity0, float intensity1, float intensity2, float intensity3, float intensity4, float intensity5, vec2 vTexCoord)",i="fs:DECKGL_PROCESS_INTENSITY(inout float intensity, vec2 contrastLimits, int channelIndex)";n._hookFunctions.includes(r)||n.addShaderHook(r),n._hookFunctions.includes(i)||n.addShaderHook(i)}finalizeState(){super.finalizeState(),this.state.textures&&Object.values(this.state.textures).forEach(t=>t&&t.delete())}updateState({props:t,oldProps:e,changeFlags:n,...r}){var s,o;if(super.updateState({props:t,oldProps:e,changeFlags:n,...r}),n.extensionsChanged||t.interpolation!==e.interpolation){const{gl:a}=this.context;this.state.model&&this.state.model.delete(),this.setState({model:this._getModel(a)}),this.getAttributeManager().invalidateAll()}(t.channelData!==e.channelData&&((s=t.channelData)==null?void 0:s.data)!==((o=e.channelData)==null?void 0:o.data)||t.interpolation!==e.interpolation)&&this.loadChannelTextures(t.channelData);const i=this.getAttributeManager();t.bounds!==e.bounds&&i.invalidate("positions")}_getModel(t){return t?new Tn(t,{...this.getShaders(),id:this.props.id,geometry:new pr({drawMode:X.TRIANGLE_FAN,vertexCount:4,attributes:{texCoords:new Float32Array([0,1,0,0,1,0,1,1])}}),isInstanced:!1}):null}calculatePositions(t){const{positions:e}=this.state,{bounds:n}=this.props;e[0]=n[0],e[1]=n[1],e[2]=0,e[3]=n[0],e[4]=n[3],e[5]=0,e[6]=n[2],e[7]=n[3],e[8]=0,e[9]=n[2],e[10]=n[1],e[11]=0,t.value=e}draw({uniforms:t}){const{textures:e,model:n}=this.state;if(e&&n){const{contrastLimits:r,domain:i,dtype:s,channelsVisible:o}=this.props,a=Object.values(e).filter(c=>c).length,l=gT({contrastLimits:r.slice(0,a),channelsVisible:o.slice(0,a),domain:i,dtype:s});n.setUniforms({...t,contrastLimits:l,...e}).draw()}}loadChannelTextures(t){const e={channel0:null,channel1:null,channel2:null,channel3:null,channel4:null,channel5:null};this.state.textures&&Object.values(this.state.textures).forEach(n=>n&&n.delete()),t&&Object.keys(t).length>0&&t.data&&(t.data.forEach((n,r)=>{e[`channel${r}`]=this.dataToTexture(n,t.width,t.height)},this),this.setState({textures:e}))}dataToTexture(t,e,n){var s;const{interpolation:r}=this.props,i=rC(this.props.dtype,this.context.gl,r);return new Ut(this.context.gl,{width:e,height:n,data:((s=i.cast)==null?void 0:s.call(i,t))??t,mipmaps:!1,parameters:{[X.TEXTURE_MIN_FILTER]:i.filter,[X.TEXTURE_MAG_FILTER]:i.filter,[X.TEXTURE_WRAP_S]:X.CLAMP_TO_EDGE,[X.TEXTURE_WRAP_T]:X.CLAMP_TO_EDGE},format:i.format,dataFormat:i.dataFormat,type:i.type})}};oa.layerName="XRLayer";oa.defaultProps=AY;const Pr={WhiteIsZero:0,BlackIsZero:1,RGB:2,Palette:3,TransparencyMask:4,CMYK:5,YCbCr:6,CIELab:8,ICCLab:9},pT={...nd.defaultProps,pickable:{type:"boolean",value:!0,compare:!0},coordinateSystem:he.CARTESIAN},gY=(t,e)=>{const n=e?"true":"false",r=`vec3(${(e||[0,0,0]).map(i=>String(i/255)).join(",")})`;switch(t){case Pr.RGB:return`color[3] = (${n} && (color.rgb == ${r})) ? 0.0 : color.a;`;case Pr.WhiteIsZero:return` float value = 1.0 - (color.r / 256.0); + color = vec4(value, value, value, (${n} && vec3(value, value, value) == ${r}) ? 0.0 : color.a); + `;case Pr.BlackIsZero:return` float value = (color.r / 256.0); + color = vec4(value, value, value, (${n} && vec3(value, value, value) == ${r}) ? 0.0 : color.a); + `;case Pr.YCbCr:return` float y = color[0]; + float cb = color[1]; + float cr = color[2]; + color[0] = (y + (1.40200 * (cr - .5))); + color[1] = (y - (0.34414 * (cb - .5)) - (0.71414 * (cr - .5))); + color[2] = (y + (1.77200 * (cb - .5))); + color[3] = (${n} && distance(color.rgb, ${r}) < 0.01) ? 0.0 : color.a; + `;default:return console.error("Unsupported photometric interpretation or none provided. No transformation will be done to image data"),""}},pY=t=>{switch(t){case Pr.RGB:return[0,0,0,0];case Pr.WhiteIsZero:return[255,255,255,0];case Pr.BlackIsZero:return[0,0,0,0];case Pr.YCbCr:return[16,128,128,0];default:return console.error("Unsupported photometric interpretation or none provided. No transformation will be done to image data"),[0,0,0,0]}};class Ov extends nd{_getModel(e){const{photometricInterpretation:n,transparentColorInHook:r}=this.props,i=gY(n,r);return e?new Tn(e,{...this.getShaders(),id:this.props.id,geometry:new pr({drawMode:X.TRIANGLES,vertexCount:6}),isInstanced:!1,inject:{"fs:DECKGL_FILTER_COLOR":i}}):null}}const Lc=class extends Rn{initializeState(t){const{gl:e}=this.context;e.pixelStorei(X.UNPACK_ALIGNMENT,1),e.pixelStorei(X.PACK_ALIGNMENT,1),super.initializeState(t)}renderLayers(){const{photometricInterpretation:t,transparentColor:e}=this.props,n=pY(t);return new Ov(this.props,{transparentColor:n,transparentColorInHook:e,id:`${this.props.id}-wrapped`})}};Lc.layerName="BitmapLayer";Lc.PHOTOMETRIC_INTERPRETATIONS=Pr;Lc.defaultProps={...pT,image:{type:"object",value:{},compare:!0},transparentColor:{type:"array",value:[0,0,0],compare:!0},photometricInterpretation:{type:"number",value:2,compare:!0}};Ov.defaultProps=pT;Ov.layerName="BitmapLayerWrapper";function mY(t){const{bbox:{left:e,top:n,right:r,bottom:i},index:{x:s,y:o,z:a}}=t.tile,{data:l,id:c,loader:u,maxZoom:f}=t;if([e,i,r,n].some(g=>g<0)||!l)return null;const h=u[0],{height:d,width:A}=Rc(h),p=[e,l.height({data:[],height:0,width:0}),dtype:"Uint16",shape:[]},compare:!0},onClick:{type:"function",value:null,compare:!0},onViewportLoad:{type:"function",value:null,compare:!0},interpolation:{type:"number",value:X.NEAREST,compare:!0},extensions:{type:"array",value:[new Pc],compare:!0}},Nc=class extends Rn{finalizeState(){this.state.abortController.abort()}updateState({props:t,oldProps:e}){const n=t.loader!==e.loader,r=t.selections!==e.selections;if(n||r){const{loader:i,selections:s=[],onViewportLoad:o}=this.props,a=new AbortController;this.setState({abortController:a});const{signal:l}=a,c=f=>i.getRaster({selection:f,signal:l}),u=s.map(c);Promise.all(u).then(f=>{var d,A;const h={data:f.map(p=>p.data),width:(d=f[0])==null?void 0:d.width,height:(A=f[0])==null?void 0:A.height};Go(i.shape)&&(h.data=h.data[0],h.data.length===h.width*h.height*3&&(h.format=X.RGB,h.dataFormat=X.RGB)),o&&o(h),this.setState({...h})}).catch(f=>{if(f!==rT)throw f})}}getPickingInfo({info:t,sourceLayer:e}){return t.sourceLayer=e,t.tile=e.props.tile,t}renderLayers(){const{loader:t,id:e}=this.props,{dtype:n}=t,{width:r,height:i,data:s}=this.state;if(!(r&&i))return null;const o=[0,i,r,0];if(Go(t.shape)){const{photometricInterpretation:a=2}=t.meta;return new Lc(this.props,{image:this.state,photometricInterpretation:a,bounds:o,id:`image-sub-layer-${o}-${e}`,extensions:[]})}return new oa(this.props,{channelData:{data:s,height:i,width:r},bounds:o,id:`image-sub-layer-${o}-${e}`,dtype:n})}};Nc.layerName="ImageLayer";Nc.defaultProps=yY;const EY={pickable:{type:"boolean",value:!0,compare:!0},onHover:{type:"function",value:null,compare:!1},contrastLimits:{type:"array",value:[],compare:!0},channelsVisible:{type:"array",value:[],compare:!0},domain:{type:"array",value:[],compare:!0},viewportId:{type:"string",value:"",compare:!0},maxRequests:{type:"number",value:10,compare:!0},onClick:{type:"function",value:null,compare:!0},refinementStrategy:{type:"string",value:null,compare:!0},excludeBackground:{type:"boolean",value:!1,compare:!0},extensions:{type:"array",value:[new Pc],compare:!0}},kv=class extends Rn{renderLayers(){const{loader:t,selections:e,opacity:n,viewportId:r,onTileError:i,onHover:s,id:o,onClick:a,modelMatrix:l,excludeBackground:c,refinementStrategy:u}=this.props,{tileSize:f,dtype:h}=t[0],d=async({index:{x:C,y:R,z:P},signal:B})=>{if(!e||e.length===0)return null;const N=Math.round(-P),V=G=>{const z={x:C,y:R,selection:G,signal:B};return t[N].getTile(z)};try{const G=await Promise.all(e.map(V)),z={data:G.map(K=>K.data),width:G[0].width,height:G[0].height};return Go(t[N].shape)&&(z.data=z.data[0],z.data.length===z.width*z.height*3&&(z.format=X.RGB,z.dataFormat=X.RGB)),z}catch(G){if(G===rT)return null;throw G}},{height:A,width:p}=Rc(t[0]),g=new Dv(this.props,{id:`Tiled-Image-${o}`,getTileData:d,dtype:h,tileSize:f,zoomOffset:Math.round(Math.log2(l?l.getScale()[0]:1)),extent:[0,0,p,A],minZoom:Math.round(-(t.length-1)),maxZoom:0,refinementStrategy:u||(n===1?"best-available":"no-overlap"),updateTriggers:{getTileData:[t,e]},onTileError:i||t[0].onTileError}),m=t[t.length-1],v=typeof m.getRaster=="function",E=l?l.clone():new ze;return[v&&!c&&new Nc(this.props,{id:`Background-Image-${o}`,loader:m,modelMatrix:E.scale(2**(t.length-1)),visible:!r||this.context.viewport.id===r,onHover:s,onClick:a,interpolation:X.LINEAR,onViewportLoad:null}),g]}};kv.layerName="MultiscaleImageLayer";kv.defaultProps=EY;const _Y={pickable:{type:"boolean",value:!0,compare:!0},loader:{type:"object",value:{getRaster:async()=>({data:[],height:0,width:0}),getRasterSize:()=>({height:0,width:0}),dtype:"m,filled:!1,stroked:!0,getLineColor:i,getLineWidth:s*2**n}),p=new oh({id:`viewport-outline-${e}`,coordinateSystem:he.CARTESIAN,data:[[[0,0],[c*l,0],[c*l,u*l],[0,u*l]]],getPolygon:m=>m,filled:!1,stroked:!0,getLineColor:o,getLineWidth:a*2**n});return[d,A,p]}};mT.layerName="OverviewLayer";mT.defaultProps=_Y;function xY(t,e,n){const r=t[2][0]-t[0][0];switch(e){case"bottom-right":{const i=t[2][1]-(t[2][1]-t[0][1])*n,s=t[2][0]-r*n;return[i,s]}case"top-right":{const i=(t[2][1]-t[0][1])*n,s=t[2][0]-r*n;return[i,s]}case"top-left":{const i=(t[2][1]-t[0][1])*n,s=r*n;return[i,s]}case"bottom-left":{const i=t[2][1]-(t[2][1]-t[0][1])*n,s=r*n;return[i,s]}default:throw new Error(`Position ${e} not found`)}}const CY={pickable:{type:"boolean",value:!0,compare:!0},viewState:{type:"object",value:{zoom:0,target:[0,0,0]},compare:!0},unit:{type:"string",value:"",compare:!0},size:{type:"number",value:1,compare:!0},position:{type:"string",value:"bottom-right",compare:!0},length:{type:"number",value:.085,compare:!0}},vT=class extends Rn{renderLayers(){const{id:t,unit:e,size:n,position:r,viewState:i,length:s}=this.props,o=uY(i),{zoom:a}=i,c=(o[2][0]-o[0][0])*.05,u=Math.max(2**(-a+1.5),(o[2][1]-o[0][1])*.007),f=c*n,[h,d]=xY(o,r,s),A=new vl({id:`scale-bar-length-${t}`,coordinateSystem:he.CARTESIAN,data:[[[d,h],[d+c,h]]],getSourcePosition:v=>v[0],getTargetPosition:v=>v[1],getWidth:2,getColor:[220,220,220]}),p=new vl({id:`scale-bar-height-left-${t}`,coordinateSystem:he.CARTESIAN,data:[[[d,h-u],[d,h+u]]],getSourcePosition:v=>v[0],getTargetPosition:v=>v[1],getWidth:2,getColor:[220,220,220]}),g=new vl({id:`scale-bar-height-right-${t}`,coordinateSystem:he.CARTESIAN,data:[[[d+c,h-u],[d+c,h+u]]],getSourcePosition:v=>v[0],getTargetPosition:v=>v[1],getWidth:2,getColor:[220,220,220]}),m=new ta({id:`units-label-layer-${t}`,coordinateSystem:he.CARTESIAN,data:[{text:f.toPrecision(5)+e,position:[d+c*.5,h+u*4]}],getColor:[220,220,220,255],getSize:12,fontFamily:FH,sizeUnits:"meters",sizeScale:2**-a,characterSet:[...e.split(""),...lY(10).map(v=>String(v)),".","e","+"]});return[A,p,g,m]}};vT.layerName="ScaleBarLayer";vT.defaultProps=CY;const IY=`#version 300 es +#define SHADER_NAME xr-layer-vertex-shader + +// Unit-cube vertices +in vec3 positions; + +// Eye position - last column of the inverted view matrix +uniform vec3 eye_pos; +// Projection matrix +uniform mat4 proj; +// Model Matrix +uniform mat4 model; +// View Matrix +uniform mat4 view; +// A matrix for scaling in the model space before any transformations. +// This projects the unit cube up to match the "pixel size" multiplied by the physical size ratio, if provided. +uniform mat4 scale; +uniform mat4 resolution; + + +out vec3 vray_dir; +flat out vec3 transformed_eye; + +void main() { + + // Step 1: Standard MVP transformation (+ the scale matrix) to place the positions on your 2D screen ready for rasterization + fragment processing. + gl_Position = proj * view * model * scale * resolution * vec4(positions, 1.); + + // Step 2: Invert the eye back from world space to the normalized 0-1 cube world space because ray casting on the fragment shader runs in 0-1 space. + // Geometrically, the transformed_eye is a position relative to the 0-1 normalized vertices, which themselves are the inverse of the model + scale trasnformation. + // See below for an example which does not involve a scale transformation, for simplicity, but motivates geometrically the needed transformation on eye_pos. + /* + This first diagram is a skewed volume (i.e a "shear" model matrix applied) top down with the eye marked as #, all in world space + ^ + ___|__ + \\ | \\ + \\ | \\ + \\|____\\ + | + | + | + # + + This next diagram shows the volume after the inverse model matrix has placed it back in model coordinates, but the eye still in world space. + ^ + ___|___ + | | | + | | | + |__|__| + | + | + | + # + + Finally, we apply the inverse model matrix transformation to the eye as well to bring it too into world space. + Notice that the ray here matches the "voxels" through which the first ray also passes, as desired. + ^ + ____/__ + | / | + | / | + |/____| + / + / + / + # + */ + transformed_eye = (inverse(resolution) * inverse(scale) * inverse(model) * (vec4(eye_pos, 1.))).xyz; + + // Step 3: Rays are from eye to vertices so that they get interpolated over the fragments. + vray_dir = positions - transformed_eye; +} +`,wY=`#version 300 es +precision highp int; +precision highp float; +precision highp SAMPLER_TYPE; + +uniform highp SAMPLER_TYPE volume0; +uniform highp SAMPLER_TYPE volume1; +uniform highp SAMPLER_TYPE volume2; +uniform highp SAMPLER_TYPE volume3; +uniform highp SAMPLER_TYPE volume4; +uniform highp SAMPLER_TYPE volume5; + +uniform vec3 scaledDimensions; + +uniform mat4 scale; + +uniform vec3 normals[NUM_PLANES]; +uniform float distances[NUM_PLANES]; + +// color +uniform vec3 colors[6]; + +// slices +uniform vec2 xSlice; +uniform vec2 ySlice; +uniform vec2 zSlice; + +// range +uniform vec2 contrastLimits[6]; + +in vec3 vray_dir; +flat in vec3 transformed_eye; +out vec4 color; + +vec2 intersect_box(vec3 orig, vec3 dir) { + vec3 box_min = vec3(xSlice[0], ySlice[0], zSlice[0]); + vec3 box_max = vec3(xSlice[1], ySlice[1], zSlice[1]); + vec3 inv_dir = 1. / dir; + vec3 tmin_tmp = (box_min - orig) * inv_dir; + vec3 tmax_tmp = (box_max - orig) * inv_dir; + vec3 tmin = min(tmin_tmp, tmax_tmp); + vec3 tmax = max(tmin_tmp, tmax_tmp); + float t0 = max(tmin.x, max(tmin.y, tmin.z)); + float t1 = min(tmax.x, min(tmax.y, tmax.z)); + vec2 val = vec2(t0, t1); + return val; +} + +float linear_to_srgb(float x) { + if (x <= 0.0031308f) { + return 12.92f * x; + } + return 1.055f * pow(x, 1.f / 2.4f) - 0.055f; +} + +// Pseudo-random number gen from +// http://www.reedbeta.com/blog/quick-and-easy-gpu-random-numbers-in-d3d11/ +// with some tweaks for the range of values +float wang_hash(int seed) { + seed = (seed ^ 61) ^ (seed >> 16); + seed *= 9; + seed = seed ^ (seed >> 4); + seed *= 0x27d4eb2d; + seed = seed ^ (seed >> 15); + return float(seed % 2147483647) / float(2147483647); +} + + +void main(void) { + // Step 1: Normalize the view ray + vec3 ray_dir = normalize(vray_dir); + + // Step 2: Intersect the ray with the volume bounds to find the interval + // along the ray overlapped by the volume. + vec2 t_hit = intersect_box(transformed_eye, ray_dir); + if (t_hit.x > t_hit.y) { + discard; + } + // We don't want to sample voxels behind the eye if it's + // inside the volume, so keep the starting point at or in front + // of the eye + t_hit.x = max(t_hit.x, 0.); + + // Step 3: Compute the step size to march through the volume grid + vec3 dt_vec = 1. / (scale * vec4(abs(ray_dir), 1.)).xyz; + float dt = 1. * min(dt_vec.x, min(dt_vec.y, dt_vec.z)); + + float offset = wang_hash(int(gl_FragCoord.x + 640. * gl_FragCoord.y)); + + // Step 4: Starting from the entry point, march the ray through the volume + // and sample it + vec3 p = transformed_eye + (t_hit.x + offset * dt) * ray_dir; + + // TODO: Probably want to stop this process at some point to improve performance when marching down the edges. + _BEFORE_RENDER + for (float t = t_hit.x; t < t_hit.y; t += dt) { + // Check if this point is on the "positive" side or "negative" side of the plane - only show positive. + float canShow = 1.; + for (int i = 0; i < NUM_PLANES; i += 1) { + canShow *= max(0., sign(dot(normals[i], p) + distances[i])); + } + // Do not show coordinates outside 0-1 box. + // Something about the undefined behavior outside the box causes the additive blender to + // render some very odd artifacts. + float canShowXCoordinate = max(p.x - 0., 0.) * max(1. - p.x , 0.); + float canShowYCoordinate = max(p.y - 0., 0.) * max(1. - p.y , 0.); + float canShowZCoordinate = max(p.z - 0., 0.) * max(1. - p.z , 0.); + float canShowCoordinate = float(ceil(canShowXCoordinate * canShowYCoordinate * canShowZCoordinate)); + canShow = canShowCoordinate * canShow; + float intensityValue0 = float(texture(volume0, p).r); + DECKGL_PROCESS_INTENSITY(intensityValue0, contrastLimits[0], 0); + intensityValue0 = canShow * intensityValue0; + float intensityValue1 = float(texture(volume1, p).r); + DECKGL_PROCESS_INTENSITY(intensityValue1, contrastLimits[1], 1); + intensityValue1 = canShow * intensityValue1; + float intensityValue2 = float(texture(volume2, p).r); + DECKGL_PROCESS_INTENSITY(intensityValue2, contrastLimits[2], 2); + intensityValue2 = canShow * intensityValue2; + float intensityValue3 = float(texture(volume3, p).r); + DECKGL_PROCESS_INTENSITY(intensityValue3, contrastLimits[3], 3); + intensityValue3 = canShow * intensityValue3; + float intensityValue4 = float(texture(volume4, p).r); + DECKGL_PROCESS_INTENSITY(intensityValue4, contrastLimits[4], 4); + intensityValue4 = canShow * intensityValue4; + float intensityValue5 = float(texture(volume5, p).r); + DECKGL_PROCESS_INTENSITY(intensityValue5, contrastLimits[5], 5); + intensityValue5 = canShow * intensityValue5; + + _RENDER + + p += ray_dir * dt; + } + _AFTER_RENDER + color.r = linear_to_srgb(color.r); + color.g = linear_to_srgb(color.g); + color.b = linear_to_srgb(color.b); +} +`,bY={name:"channel-intensity-module",fs:` float apply_contrast_limits(float intensity, vec2 contrastLimits) { + float contrastLimitsAppliedToIntensity = (intensity - contrastLimits[0]) / max(0.0005, (contrastLimits[1] - contrastLimits[0])); + return max(0., contrastLimitsAppliedToIntensity); + } + `},SY=[1,1,0,0,1,0,1,1,1,0,1,1,0,0,1,0,1,0,0,0,0,1,1,0,1,0,0,1,1,1,1,0,1,0,0,1,1,0,0,0,0,0],iC=1,TY={pickable:!1,coordinateSystem:he.CARTESIAN,channelData:{type:"object",value:{},compare:!0},contrastLimits:{type:"array",value:[],compare:!0},dtype:{type:"string",value:"Uint8",compare:!0},xSlice:{type:"array",value:null,compare:!0},ySlice:{type:"array",value:null,compare:!0},zSlice:{type:"array",value:null,compare:!0},clippingPlanes:{type:"array",value:[],compare:!0},resolutionMatrix:{type:"object",value:new ze,compare:!0},channelsVisible:{type:"array",value:[],compare:!0},extensions:{type:"array",value:[new dT.AdditiveBlendExtension],compare:!0}};function sC(){const t=Nv("Float32");return{...t,sampler:t.sampler.replace("2D","3D"),cast:e=>new Float32Array(e)}}function BY(t){let e={};if(t.forEach(n=>{e=n.rendering}),!e._RENDER)throw new Error("XR3DLayer requires at least one extension to define opts.rendering as an object with _RENDER as a property at the minimum.");return e}const Qv=class extends pn{initializeState(){const{gl:t}=this.context;t.pixelStorei(X.UNPACK_ALIGNMENT,1),t.pixelStorei(X.PACK_ALIGNMENT,1);const e=Os.getDefaultProgramManager(t),n="fs:DECKGL_PROCESS_INTENSITY(inout float intensity, vec2 contrastLimits, int channelIndex)";e._hookFunctions.includes(n)||e.addShaderHook(n)}_isHookDefinedByExtensions(t){const{extensions:e}=this.props;return e==null?void 0:e.some(n=>{const r=n.getShaders();if(r){const{inject:i={},modules:s=[]}=r,o=i[t],a=s.some(l=>l.inject&&(l==null?void 0:l.inject[t]));return o||a}return!1})}getShaders(){const{clippingPlanes:t,extensions:e}=this.props,{sampler:n}=sC(),{_BEFORE_RENDER:r,_RENDER:i,_AFTER_RENDER:s}=BY(e),o=this._isHookDefinedByExtensions("fs:DECKGL_PROCESS_INTENSITY"),a={inject:{},...bY};return o||(a.inject["fs:DECKGL_PROCESS_INTENSITY"]=` + intensity = apply_contrast_limits(intensity, contrastLimits); + `),super.getShaders({vs:IY,fs:wY.replace("_BEFORE_RENDER",r).replace("_RENDER",i).replace("_AFTER_RENDER",s),defines:{SAMPLER_TYPE:n,NUM_PLANES:String(t.length||iC)},modules:[a]})}finalizeState(){super.finalizeState(),this.state.textures&&Object.values(this.state.textures).forEach(t=>t&&t.delete())}updateState({props:t,oldProps:e,changeFlags:n}){var r,i;if(n.extensionsChanged||t.colormap!==e.colormap||t.renderingMode!==e.renderingMode||t.clippingPlanes.length!==e.clippingPlanes.length){const{gl:s}=this.context;this.state.model&&this.state.model.delete(),this.setState({model:this._getModel(s)})}t.channelData&&((r=t==null?void 0:t.channelData)==null?void 0:r.data)!==((i=e==null?void 0:e.channelData)==null?void 0:i.data)&&this.loadTexture(t.channelData)}_getModel(t){return t?new Tn(t,{...this.getShaders(),geometry:new pr({drawMode:t.TRIANGLE_STRIP,attributes:{positions:new Float32Array(SY)}})}):null}draw({uniforms:t}){const{textures:e,model:n,scaleMatrix:r}=this.state,{contrastLimits:i,xSlice:s,ySlice:o,zSlice:a,modelMatrix:l,channelsVisible:c,domain:u,dtype:f,clippingPlanes:h,resolutionMatrix:d}=this.props,{viewMatrix:A,viewMatrixInverse:p,projectionMatrix:g}=this.context.viewport;if(e&&n&&r){const m=gT({contrastLimits:i,channelsVisible:c,domain:u,dtype:f}),v=r.clone().invert(),E=d.clone().invert(),_=AT(h.map(R=>R.clone().transform(v).transform(E)),new bs([1,0,0]),h.length||iC),I=_.map(R=>R.normal).flat(),C=_.map(R=>R.distance);n.setUniforms({...t,...e,contrastLimits:m,xSlice:new Float32Array(s?s.map(R=>R/r[0]/d[0]):[0,1]),ySlice:new Float32Array(o?o.map(R=>R/r[5]/d[5]):[0,1]),zSlice:new Float32Array(a?a.map(R=>R/r[10]/d[10]):[0,1]),eye_pos:new Float32Array([p[12],p[13],p[14]]),view:A,proj:g,scale:r,resolution:d,model:l||new ze,normals:I,distances:C}).draw()}}loadTexture(t){const e={volume0:null,volume1:null,volume2:null,volume3:null,volume4:null,volume5:null};if(this.state.textures&&Object.values(this.state.textures).forEach(n=>n&&n.delete()),t&&Object.keys(t).length>0&&t.data){const{height:n,width:r,depth:i}=t;t.data.forEach((s,o)=>{e[`volume${o}`]=this.dataToTexture(s,r,n,i)},this),this.setState({textures:e,scaleMatrix:new ze().scale(this.props.physicalSizeScalingMatrix.transformPoint([r,n,i]))})}}dataToTexture(t,e,n,r){var o;const i=sC();return new $2(this.context.gl,{width:e,height:n,depth:r,data:((o=i.cast)==null?void 0:o.call(i,t))??t,format:i.dataFormat,dataFormat:i.format,type:i.type,mipmaps:!1,parameters:{[X.TEXTURE_MIN_FILTER]:X.LINEAR,[X.TEXTURE_MAG_FILTER]:X.LINEAR,[X.TEXTURE_WRAP_S]:X.CLAMP_TO_EDGE,[X.TEXTURE_WRAP_T]:X.CLAMP_TO_EDGE,[X.TEXTURE_WRAP_R]:X.CLAMP_TO_EDGE}})}};Qv.layerName="XR3DLayer";Qv.defaultProps=TY;async function RY({source:t,selection:e,onUpdate:n=()=>{},downsampleDepth:r=1,signal:i}){const{shape:s,labels:o,dtype:a}=t,{height:l,width:c}=Rc(t),u=s[o.indexOf("z")],f=Math.max(1,Math.floor(u/r)),h=l*c,d=`${a}Array`,A=globalThis[d],p=new A(h*f);return await Promise.all(new Array(f).fill(0).map(async(g,m)=>{const v={...e,z:m*r},{data:E}=await t.getRaster({selection:v,signal:i});let _=0;for(n();_new ta({id:`text-${n}`,coordinateSystem:he.CARTESIAN,data:[{text:t,position:e.position}],getColor:[220,220,220,255],getSize:25,sizeUnits:"meters",sizeScale:2**-e.zoom,fontFamily:"Helvetica"}),PY={pickable:!1,coordinateSystem:he.CARTESIAN,contrastLimits:{type:"array",value:[],compare:!0},channelsVisible:{type:"array",value:[],compare:!0},selections:{type:"array",value:[],compare:!0},resolution:{type:"number",value:0,compare:!0},domain:{type:"array",value:[],compare:!0},loader:{type:"object",value:[{getRaster:async()=>({data:[],height:0,width:0}),dtype:"Uint16",shape:[1],labels:["z"]}],compare:!0},xSlice:{type:"array",value:null,compare:!0},ySlice:{type:"array",value:null,compare:!0},zSlice:{type:"array",value:null,compare:!0},clippingPlanes:{type:"array",value:[],compare:!0},onUpdate:{type:"function",value:()=>{},compare:!0},useProgressIndicator:{type:"boolean",value:!0,compare:!0},useWebGL1Warning:{type:"boolean",value:!0,compare:!0},extensions:{type:"array",value:[new dT.AdditiveBlendExtension],compare:!0}},yT=class extends Rn{clearState(){this.setState({height:null,width:null,depth:null,data:null,physicalSizeScalingMatrix:null,resolutionMatrix:null,progress:0,abortController:null})}finalizeState(){this.state.abortController.abort()}updateState({oldProps:t,props:e}){const n=e.loader!==t.loader,r=e.resolution!==t.resolution,i=e.selections!==t.selections;if(r&&this.clearState(),n||i||r){const{loader:s,selections:o=[],resolution:a,onViewportLoad:l}=this.props,c=s[a];let u=0;const f=(c.shape[c.labels.indexOf("z")]>>a)*o.length,h=()=>{u+=.5/f,this.props.onUpdate&&this.props.onUpdate({progress:u}),this.setState({progress:u})},d=new AbortController;this.setState({abortController:d});const{signal:A}=d,p=o.map(m=>RY({selection:m,source:c,onUpdate:h,downsampleDepth:2**a,signal:A})),g=cY(s[a]);Promise.all(p).then(m=>{var E,_,I;l&&l(m);const v={data:m.map(C=>C.data),width:(E=m[0])==null?void 0:E.width,height:(_=m[0])==null?void 0:_.height,depth:(I=m[0])==null?void 0:I.depth};this.setState({...v,physicalSizeScalingMatrix:g,resolutionMatrix:new ze().scale(2**a)})})}}renderLayers(){const{loader:t,id:e,resolution:n,useProgressIndicator:r,useWebGL1Warning:i}=this.props,{dtype:s}=t[n],{data:o,width:a,height:l,depth:c,progress:u,physicalSizeScalingMatrix:f,resolutionMatrix:h}=this.state,{gl:d}=this.context;if(!xe(d)&&i){const{viewport:A}=this.context;return oC(["Volume rendering is only available on browsers that support WebGL2. If you","are using Safari, you can turn on WebGL2 by navigating in the top menubar","to check Develop > Experimental Features > WebGL 2.0 and then refreshing","the page."].join(` +`),A,e)}if(!(a&&l)&&r){const{viewport:A}=this.context;return oC(`Loading Volume ${String((u||0)*100).slice(0,5)}%...`,A,e)}return new Qv(this.props,{channelData:{data:o,width:a,height:l,depth:c},id:`XR3DLayer-0-${l}-${a}-0-${n}-${e}`,physicalSizeScalingMatrix:f,parameters:{[X.CULL_FACE]:!0,[X.CULL_FACE_MODE]:X.FRONT,[X.DEPTH_TEST]:!1,blendFunc:[X.SRC_ALPHA,X.ONE],blend:!0},resolutionMatrix:h,dtype:s})}};yT.layerName="VolumeLayer";yT.defaultProps=PY;const MY=typeof window<"u"?b.useLayoutEffect:b.useEffect,LY=MY;function fh(t,e){for(;t;){if(t===e)return!0;t=Object.getPrototypeOf(t)}return!1}const NY={position:"absolute",zIndex:-1};function ET(t,e){if(typeof t=="function")return t(e);if(Array.isArray(t))return t.map(n=>ET(n,e));if(fd(t)){if(OY(t))return e.style=NY,b.cloneElement(t,e);if(DY(t))return b.cloneElement(t,e)}return t}function fd(t){return t&&typeof t=="object"&&"type"in t||!1}function OY(t){const e=t.type,n=e&&e.defaultProps;return n&&n.mapStyle}function DY(t){const e=t.type;return e&&e.deckGLViewProps}function l0(t){if(typeof t=="function")return b.createElement(Is,{},t);if(Array.isArray(t))return t.map(l0);if(fd(t)){if(t.type===b.Fragment)return l0(t.props.children);if(fh(t.type,Is))return t}return t}function kY({children:t,layers:e=[],views:n=null}){const r=[],i=[],s={};return b.Children.forEach(l0(t),o=>{if(fd(o)){const a=o.type;if(fh(a,pn)){const l=QY(a,o.props);i.push(l)}else r.push(o);if(fh(a,Is)&&a!==Is&&o.props.id){const l=new a(o.props);s[l.id]=l}}else o&&r.push(o)}),Object.keys(s).length>0&&(Array.isArray(n)?n.forEach(o=>{s[o.id]=o}):n&&(s[n.id]=n),n=Object.values(s)),e=i.length>0?[...i,...e]:e,{layers:e,children:r,views:n}}function QY(t,e){const n={},r=t.defaultProps||{};for(const i in e)r[i]!==e[i]&&(n[i]=e[i]);return new t(n)}function FY({children:t,deck:e,ContextProvider:n}){const{viewManager:r}=e||{};if(!r||!r.views.length)return[];const i={},s=r.views[0].id;for(const o of t){let a=s,l=o;fd(o)&&fh(o.type,Is)&&(a=o.props.id||s,l=o.props.children);const c=r.getViewport(a),u=r.getViewState(a);if(c){u.padding=c.padding;const{x:f,y:h,width:d,height:A}=c;l=ET(l,{x:f,y:h,width:d,height:A,viewport:c,viewState:u}),i[a]||(i[a]={viewport:c,children:[]}),i[a].children.push(l)}}return Object.keys(i).map(o=>{const{viewport:a,children:l}=i[o],{x:c,y:u,width:f,height:h}=a,d={position:"absolute",left:c,top:u,width:f,height:h},A="view-".concat(o),p=b.createElement("div",{key:A,id:A,style:d},...l);if(n){const g={viewport:a,container:e.canvas.offsetParent,eventManager:e.eventManager,onViewStateChange:m=>{m.viewId=o,e._onViewStateChange(m)}};return b.createElement(n,{key:A,value:g},p)}return p})}const UY={mixBlendMode:null};function GY({width:t,height:e,style:n}){const r={position:"absolute",zIndex:0,left:0,top:0,width:t,height:e},i={left:0,top:0};if(n)for(const s in n)s in UY?i[s]=n[s]:r[s]=n[s];return{containerStyle:r,canvasStyle:i}}function zY(t){return{get deck(){return t.deck},pickObject:e=>t.deck.pickObject(e),pickMultipleObjects:e=>t.deck.pickMultipleObjects(e),pickObjects:e=>t.deck.pickObjects(e)}}function _T(t){t.redrawReason&&(t.deck._drawLayers(t.redrawReason),t.redrawReason=null)}function VY(t,e,n){const r=new e({...n,_customRender:i=>{t.redrawReason=i;const s=r.getViewports();t.lastRenderedViewports!==s?t.forceUpdate():_T(t)}});return r}const xT=b.forwardRef((t,e)=>{const[n,r]=b.useState(0),s=b.useRef({control:null,version:n,forceUpdate:()=>r(I=>I+1)}).current,o=b.useRef(null),a=b.useRef(null),l=b.useMemo(()=>kY(t),[t.layers,t.views,t.children]);let c=!0;const u=I=>{var C;return c&&t.viewState?(s.viewStateUpdateRequested=I,null):(s.viewStateUpdateRequested=null,(C=t.onViewStateChange)===null||C===void 0?void 0:C.call(t,I))},f=I=>{if(c)s.interactionStateUpdateRequested=I;else{var C;s.interactionStateUpdateRequested=null,(C=t.onInteractionStateChange)===null||C===void 0||C.call(t,I)}},h=b.useMemo(()=>{const I={...t,style:null,width:"100%",height:"100%",parent:o.current,canvas:a.current,layers:l.layers,views:l.views,onViewStateChange:u,onInteractionStateChange:f};return delete I._customRender,s.deck&&s.deck.setProps(I),I},[t]);b.useEffect(()=>{const I=t.Deck||td;return s.deck=VY(s,I,{...h,parent:o.current,canvas:a.current}),()=>{var C;return(C=s.deck)===null||C===void 0?void 0:C.finalize()}},[]),LY(()=>{_T(s);const{viewStateUpdateRequested:I,interactionStateUpdateRequested:C}=s;I&&u(I),C&&f(C)}),b.useImperativeHandle(e,()=>zY(s),[]);const d=s.deck&&s.deck.isInitialized?s.deck.getViewports():void 0,{ContextProvider:A,width:p,height:g,id:m,style:v}=t,{containerStyle:E,canvasStyle:_}=b.useMemo(()=>GY({width:p,height:g,style:v}),[p,g,v]);if(!s.viewStateUpdateRequested&&s.lastRenderedViewports===d||s.version!==n){s.lastRenderedViewports=d,s.version=n;const I=FY({children:l.children,deck:s.deck,ContextProvider:A}),C=b.createElement("canvas",{key:"canvas",id:m||"deckgl-overlay",ref:a,style:_});s.control=b.createElement("div",{id:"".concat(m||"deckgl","-wrapper"),ref:o,style:E},[C,I])}return c=!1,s.control});xT.defaultProps=td.defaultProps;const jY=xT;function HY(t,e=1,n={}){const{indent:r=" ",includeEmptyLines:i=!1}=n;if(typeof t!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof t}\``);if(typeof e!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof e}\``);if(e<0)throw new RangeError(`Expected \`count\` to be at least 0, got \`${e}\``);if(typeof r!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r}\``);if(e===0)return t;const s=i?/^/gm:/^(?!\s*$)/gm;return t.replace(s,r.repeat(e))}function WY(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const aC=/\s+at.*[(\s](.*)\)?/,YY=/^(?:(?:(?:node|node:[\w/]+|(?:(?:node:)?internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)(?:\.js)?:\d+:\d+)|native)/,$Y=typeof l1.homedir>"u"?"":l1.homedir().replace(/\\/g,"/");function KY(t,{pretty:e=!1,basePath:n}={}){const r=n&&new RegExp(`(at | \\()${WY(n.replace(/\\/g,"/"))}`,"g");if(typeof t=="string")return t.replace(/\\/g,"/").split(` +`).filter(i=>{const s=i.match(aC);if(s===null||!s[1])return!0;const o=s[1];return o.includes(".app/Contents/Resources/electron.asar")||o.includes(".app/Contents/Resources/default_app.asar")||o.includes("node_modules/electron/dist/resources/electron.asar")||o.includes("node_modules/electron/dist/resources/default_app.asar")?!1:!YY.test(o)}).filter(i=>i.trim()!=="").map(i=>(r&&(i=i.replace(r,"$1")),e&&(i=i.replace(aC,(s,o)=>s.replace(o,o.replace($Y,"~")))),i)).join(` +`)}const qY=t=>t.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g,"");var Xl;class XY extends Error{constructor(n){if(!Array.isArray(n))throw new TypeError(`Expected input to be an Array, got ${typeof n}`);n=n.map(i=>i instanceof Error?i:i!==null&&typeof i=="object"?Object.assign(new Error(i.message),i):new Error(i));let r=n.map(i=>typeof i.stack=="string"&&i.stack.length>0?qY(KY(i.stack)):String(i)).join(` +`);r=` +`+HY(r,4);super(r);qv(this,Xl,void 0);Id(this,"name","AggregateError");Xv(this,Xl,n)}get errors(){return Kv(this,Xl).slice()}}Xl=new WeakMap;class JY extends Error{constructor(e){super(),this.name="AbortError",this.message=e}}const lC=t=>globalThis.DOMException===void 0?new JY(t):new DOMException(t),cC=t=>{const e=t.reason===void 0?lC("This operation was aborted."):t.reason;return e instanceof Error?e:lC(e)};async function CT(t,e,{concurrency:n=Number.POSITIVE_INFINITY,stopOnError:r=!0,signal:i}={}){return new Promise((s,o)=>{if(t[Symbol.iterator]===void 0&&t[Symbol.asyncIterator]===void 0)throw new TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof t})`);if(typeof e!="function")throw new TypeError("Mapper function is required");if(!((Number.isSafeInteger(n)||n===Number.POSITIVE_INFINITY)&&n>=1))throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${n}\` (${typeof n})`);const a=[],l=[],c=new Map;let u=!1,f=!1,h=!1,d=0,A=0;const p=t[Symbol.iterator]===void 0?t[Symbol.asyncIterator]():t[Symbol.iterator](),g=v=>{u=!0,f=!0,o(v)};i&&(i.aborted&&g(cC(i)),i.addEventListener("abort",()=>{g(cC(i))}));const m=async()=>{if(f)return;const v=await p.next(),E=A;if(A++,v.done){if(h=!0,d===0&&!f){if(!r&&l.length>0){g(new XY(l));return}if(f=!0,c.size===0){s(a);return}const _=[];for(const[I,C]of a.entries())c.get(I)!==uC&&_.push(C);s(_)}return}d++,(async()=>{try{const _=await v.value;if(f)return;const I=await e(_,E);I===uC&&c.set(E,I),a[E]=I,d--,await m()}catch(_){if(r)g(_);else{l.push(_),d--;try{await m()}catch(I){g(I)}}}})()};(async()=>{for(let v=0;v{if((i==null?void 0:i.width)!==n||(i==null?void 0:i.height)!==r)throw new Error("Grid data is not same shape.")}),{width:n,height:r}}function fC(t){const{loaders:e,selections:n=[]}=t;let{concurrency:r}=t;return r&&n.length>0&&(r=Math.ceil(r/n.length)),CT(e,async s=>{const o=n.map(l=>s.loader.getRaster({selection:l})),a=await Promise.all(o);return{...s,data:{data:a.map(l=>l.data),width:a[0].width,height:a[0].height}}},{concurrency:r})}class Fv extends Rn{initializeState(){this.state={gridData:[],width:0,height:0},fC(this.props).then(e=>{const{width:n,height:r}=t$(e);this.setState({gridData:e,width:n,height:r})})}updateState({props:e,oldProps:n,changeFlags:r}){const{propsChanged:i}=r,s=typeof i=="string"&&i.includes("props.loaders"),o=e.selections!==n.selections;(s||o)&&fC(this.props).then(a=>{this.setState({gridData:a})})}getPickingInfo({info:e}){if(!e.coordinate)return e;const n=this.props.spacer||0,{width:r,height:i}=this.state,[s,o]=e.coordinate,a=Math.floor(o/(i+n)),l=Math.floor(s/(r+n));return e.gridCoord={row:a,column:l},e}renderLayers(){const{gridData:e,width:n,height:r}=this.state;if(n===0||r===0)return null;const{rows:i,columns:s,spacer:o=0,id:a=""}=this.props,l=e.map(c=>{const u=c.row*(r+o),f=c.col*(n+o),h={channelData:c.data,bounds:e$(n,r,[f,u]),id:`${a}-GridLayer-${c.row}-${c.col}`,dtype:c.loader.dtype||"Uint16",pickable:!1,extensions:[new Pc]};return new oa({...this.props,...h})});if(this.props.pickable){const[c,u]=[0,0],f=i*(r+o),h=s*(n+o),A={data:[{polygon:[[u,c],[h,c],[h,f],[u,f]]}],getPolygon:g=>g.polygon,getFillColor:[0,0,0,0],getLineColor:[0,0,0,0],pickable:!0,id:`${a}-GridLayer-picking`},p=new Sc({...this.props,...A});l.push(p)}if(this.props.text){const c=new ta({id:`${a}-GridLayer-text`,data:e,getPosition:u=>[u.col*(n+o),u.row*(r+o)],getText:u=>u.name,getColor:[255,255,255,255],getSize:16,getAngle:0,getTextAnchor:"start",getAlignmentBaseline:"top"});l.push(c)}return l}}Fv.layerName="GridLayer";Fv.defaultProps=ZY;class n${constructor(e,n=100){Id(this,"cache");this.store=e,this.cache=new cj({maxSize:n})}getItem(...e){const[n,r]=e;if(this.cache.has(n))return this.cache.get(n);const i=this.store.getItem(n,r).catch(s=>{throw this.cache.delete(n),s});return this.cache.set(n,i),i}async containsItem(e){return this.cache.has(e)||this.store.containsItem(e)}keys(){return this.store.keys()}deleteItem(e){throw new Error("deleteItem not implemented")}setItem(e,n){throw new Error("setItem not implemented")}}const Bo=6,hr={cyan:"#00FFFF",yellow:"#FFFF00",magenta:"#FF00FF",red:"#FF0000",green:"#00FF00",blue:"#0000FF",white:"#FFFFFF"},r$=[hr.magenta,hr.green],i$=[hr.red,hr.green,hr.blue],hC=Object.values(hr).slice(0,-2);async function s$(t){let e;if(typeof t=="string"){let n;if(t.endsWith(".json")){const[{ReferenceStore:r},i]=await Promise.all([$t(()=>import("./index-29c9b378.js"),[],import.meta.url),fetch(t).then(s=>s.json())]);n=r.fromJSON(i)}else{const r=new URL(t);n=new nT(r.origin),e=r.pathname.slice(1)}return{store:new n$(n),path:e}}return{store:t,path:e}}async function o$(t){const{store:e,path:n}=await s$(t);return Pv(e,n).catch(r=>{if(r instanceof fr)return NH({store:e});throw r})}const a$=new TextDecoder;function dC(t,e){return t.store.getItem(hs(t.path,e,".zattrs")).then(n=>a$.decode(n)).then(n=>JSON.parse(n))}async function IT(t,e){const{datasets:n}=e[0]||[{path:"0"}],r=await Promise.all(n.map(({path:i})=>t.getItem(i)));if(r.every(i=>i instanceof ra))return r;throw Error("Multiscales metadata included a path to a group.")}function Uv(t){t.startsWith("#")&&(t=t.slice(1));const e=parseInt(t.slice(0,2),16),n=parseInt(t.slice(2,4),16),r=parseInt(t.slice(4,6),16);return[e,n,r]}function ql(t){return Array.from({length:t},(e,n)=>n)}function l$(t,e=" "){for(;t.length>0&&e.includes(t.charAt(t.length-1));)t=t.substr(0,t.length-1);return t}function hs(...t){return t.filter(Boolean).map(e=>l$(e,"/")).join("/")}function c$(t,e){return(!e||e.length!=t.shape.length)&&(e=t.shape.slice(0,-2).map((r,i)=>""+i).concat(["y","x"])),e}function hd(t){const e=[{type:"time",name:"t"},{type:"channel",name:"c"},{type:"space",name:"z"},{type:"space",name:"y"},{type:"space",name:"x"}];function n(i){return i==="t"?"time":i==="c"?"channel":"space"}let r=e;return t[0].axes&&(r=t[0].axes.map(i=>{if(typeof i=="string")return{name:i,type:n(i)};const{name:s,type:o}=i;return{name:s,type:o??n(s)}})),r}function dd(t){return t.map(n=>n.name)}function wT(t,e){return e||(t<=Bo?e=Array(t).fill(!0):e=[...Array(Bo).fill(!0),...Array(t-Bo).fill(!1)]),e}function bT(t,e){let n=[];if(t==1)n=[hr.white];else if(t==2)n=r$;else if(t===3)n=i$;else if(t<=Bo)n=hC.slice(0,t);else{n=Array(t).fill(hr.white);const r=e.flatMap((i,s)=>i?s:[]);for(const[i,s]of r.entries())n[s]=hC[i]}return n}function ST(t){const e=t[t.length-1];return e===3||e===4}function Ad(t){const e=ST(t.shape),[n,r]=t.chunks.slice(e?-3:-2),i=Math.min(n,r);return 2**Math.floor(Math.log2(i))}function u$([t,e],[n,r],i,s){const o=(n-s*2)/t,a=(r-s*2)/e;return{zoom:Math.min(i,Math.log2(Math.min(o,a))),target:[t/2,e/2]}}function f$(t){return Array.isArray(t)?t.length===16&&t.every(e=>typeof e=="number"):!1}function Oc(t){if(!t)return ze.IDENTITY;const e=new ze;try{const n=typeof t=="string"?JSON.parse(t):t;if(!f$(n))throw Error("Invalid modelMatrix size. Must be 16.");e.setRowMajor(...n)}catch{const n=`Failed to parse modelMatrix. Got ${JSON.stringify(t)}, using identity.`;console.warn(n)}return e}async function Gv(t,e){if(t.dtype==="Uint8")return[0,255];const{data:n}=await t.getRaster({selection:e});let r=1/0,i=-1/0;for(let s=0;si&&(i=n[s]),n[s]0);if(t.shape[e]!==n.length&&e>-1)throw new Error("provided visibilities don't match number of channels");return Promise.all(n.map(async(o,a)=>{if(!o)return;const l=[...i];return e>-1&&(l[e]=a),Gv(t,l)}))}async function h$(t,e,n){var C;const r=t.acquisition?parseInt(t.acquisition):void 0;let i=[];if(!(n!=null&&n.images))throw Error("Well .zattrs missing images");if(!e.path)throw Error("Cannot inspect zarr path to open well.");const[s,o]=e.path.split("/").filter(Boolean).slice(-2);let{images:a}=n;const l=a.flatMap(R=>R.acquisition?[R.acquisition]:[]);if(l.length>1){const R=e.path.replace(`${s}/${o}`,""),B=await(await Pv(e.store,R)).attrs.asObject();i=((C=B==null?void 0:B.plate)==null?void 0:C.acquisitions)??[],r&&l.includes(r)&&(a=a.filter(N=>N.acquisition===r))}const c=a.map(R=>R.path),u=Math.ceil(Math.sqrt(c.length)),f=Math.ceil(c.length/u),h=await e.getItem(c[0]).then(R=>R.attrs.asObject());if(!("multiscales"in h))throw Error("Path for image is not valid.");let d=h.multiscales[0].datasets[0].path;const A=c.map(R=>e.getItem(hs(R,d))),p=await Promise.all(A),g=hd(h.multiscales),m=dd(g),v=Ad(p[0]),E=ql(f).flatMap(R=>ql(u).filter(P=>P+R*u{const B=P+R*u;return{name:String(B),row:R,col:P,loader:new ud(p[B],m,v)}}));let _;"omero"in h?_=zv(h.omero,g):_=await BT(E[0].loader,m);const I={loaders:E,..._,axis_labels:m,loader:[E[0].loader],model_matrix:Oc(t.model_matrix),defaults:{selection:_.defaultSelection,colormap:t.colormap??"",opacity:t.opacity??1},name:`Well ${s}${o}`};return i.length>0&&(I.acquisitions=i,I.acquisitionId=r||-1),I.rows=f,I.columns=u,I.onClick=R=>{let P=R.gridCoord;if(!P)return;const{row:B,column:N}=P;let V;if(typeof t.source=="string"&&e.path&&!isNaN(B)&&!isNaN(N)){const G=B*u+N;V=hs(t.source,c[G])}t.onClick?(delete R.layer,R.imageSource=V,t.onClick(R)):V&&window.open(window.location.origin+window.location.pathname+"?source="+V)},I}async function AC(t,e,n){if(!("columns"in n)||!("rows"in n))throw Error("Plate .zattrs missing columns or rows");const r=n.rows.map(C=>C.name),i=n.columns.map(C=>C.name),s=n.wells.map(C=>C.path),o=await dC(e,s[0]);if(!("well"in o))throw Error("Path for image is not valid, not a well.");const a=o.well.images[0].path,l=await e.getItem(hs(s[0],a)).then(C=>C.attrs.asObject());if(!("multiscales"in l))throw Error("Path for image is not valid.");const{datasets:c}=l.multiscales[0],u=c[c.length-1].path;async function f(C){const R=await dC(e,C);return hs(C,R.well.images[0].path)}const h=await Promise.all(s.map(f)),d=([C,R])=>e.getItem(R).then(P=>[C,P]),A=await CT(h.map(C=>[C,hs(C,u)]),d,{concurrency:10}),p=await Promise.all(A),g=hd(l.multiscales),m=dd(g),v=Ad(p[0][1]),E=p.map(C=>{const[R,P]=C[0].split("/");return{name:`${R}${P}`,row:r.indexOf(R),col:i.indexOf(P),loader:new ud(C[1],m,v)}});let _;"omero"in l?_=zv(l.omero,g):_=await BT(E[0].loader,m);const I={loaders:E,..._,axis_labels:m,loader:[E[0].loader],model_matrix:Oc(t.model_matrix),defaults:{selection:_.defaultSelection,colormap:t.colormap??"",opacity:t.opacity??1},name:n.name||"Plate",rows:r.length,columns:i.length};return I.onClick=C=>{let R=C.gridCoord;if(!R)return;const{row:P,column:B}=R;let N;typeof t.source=="string"&&e.path&&!isNaN(P)&&!isNaN(B)&&(N=hs(t.source,r[P],i[B])),t.onClick?(delete C.layer,C.imageSource=N,t.onClick(C)):N&&window.open(window.location.origin+window.location.pathname+"?source="+N)},I}async function d$(t,e,n){const{name:r,opacity:i=1,colormap:s=""}=t,o=await IT(e,n.multiscales),a=hd(n.multiscales),l=dd(a),c=zv(n.omero,a),u=Ad(o[0]);return{loader:o.map(h=>new ud(h,l,u)),axis_labels:l,model_matrix:Oc(t.model_matrix),defaults:{selection:c.defaultSelection,colormap:s,opacity:i},...c,name:c.name??r}}async function BT(t,e){const n=e.indexOf("c"),r=n==-1?1:t.shape[n],i=wT(r),s=await TT(t,n,i),o=bT(r,i);return{name:"Image",names:ql(r).map(a=>`channel_${a}`),colors:o,contrast_limits:s,visibilities:i,channel_axis:e.includes("c")?e.indexOf("c"):null,defaultSelection:e.map(()=>0)}}function zv({rdefs:t,channels:e,name:n},r){const i=(t==null?void 0:t.defaultT)??0,s=(t==null?void 0:t.defaultZ)??0,o=[],a=[],l=[],c=[];e.forEach((h,d)=>{o.push(h.color),a.push([h.window.start,h.window.end]),l.push(h.active),c.push(h.label||""+d)});const u=r.map(h=>h.type=="time"?i:h.name=="z"?s:0),f=r.findIndex(h=>h.type==="channel");return{name:n,names:c,colors:o,contrast_limits:a,visibilities:l,channel_axis:f,defaultSelection:u}}async function A$(t,e){const{color:n,contrast_limits:r,visibility:i,name:s,colormap:o="",opacity:a=1}=t,l=e[e.length-1],c=Array(e[0].shape.length).fill(0),u=r??await(()=>Gv(l,c))();return{loader:e,name:s,channel_axis:null,colors:[n??hr.white],names:["channel_0"],contrast_limits:[u],visibilities:[i??!0],model_matrix:Oc(t.model_matrix),defaults:{selection:c,colormap:o,opacity:a},axis_labels:e[0].labels}}async function g$(t,e,n){const{names:r,contrast_limits:i,name:s,model_matrix:o,opacity:a=1,colormap:l=""}=t;let{visibilities:c,colors:u}=t;const f=e[0].shape[n];for(const d of[i,c,r,u])if(d&&d.length!==f){const A=Object.keys({channelProp:d})[0];throw Error(`channel_axis is length ${f} and provided channel_axis property ${A} is different size.`)}c=c||wT(f),u=u||bT(f,c);const h=i??await(()=>TT(e[e.length-1],n,c))();return{loader:e,name:s,channel_axis:n,colors:u,names:r??ql(f).map(d=>`channel_${d}`),contrast_limits:h,visibilities:c,model_matrix:Oc(o),defaults:{selection:Array(e[0].shape.length).fill(0),colormap:l,opacity:a},axis_labels:e[0].labels}}async function p$(t){const e=await o$(t.source);let n,r;if(e instanceof fs){const u=await e.attrs.asObject();if("plate"in u)return AC(t,e,u.plate);if("well"in u)return h$(t,e,u.well);if("omero"in u)return d$(t,e,u);if(Object.keys(u).length===0&&e.path){const f=e.path.slice(0,e.path.lastIndexOf("/")),h=await Pv(e.store,f),d=await h.attrs.asObject();if("plate"in d)return AC(t,h,d.plate)}if(!("multiscales"in u))throw Error("Group is missing multiscales specification.");n=await IT(e,u.multiscales),u.multiscales[0].axes&&(r=hd(u.multiscales))}else n=[e];const{channel_axis:i,labels:s}=m$(t,r,n[0]),o=Ad(n[0]),a=n.map(u=>new ud(u,s,o)),[l]=a;if("channel_axis"in t||i>-1)return t=t,g$(t,a,Number(t.channel_axis??i));if(l.shape.length===2||!("channel_axis"in t))return A$(t,a);throw Error("Failed to load image.")}function m$(t,e,n){const r=t.axis_labels,i="channel_axis"in t?Number(t.channel_axis):void 0;if(e){const a=r??dd(e),l=i??e.findIndex(c=>c.type==="channel");return{labels:a,channel_axis:l}}const s=r??c$(n),o=i??s.indexOf("c");return{labels:s,channel_axis:o}}function RT(t){const{selection:e,opacity:n,colormap:r}=t.defaults,i=[],s=[],o=[],a=[],l=t.visibilities.flatMap((u,f)=>u?f:[]);for(const u of l.slice(0,Bo)){const f=[...e];Number.isInteger(t.channel_axis)&&(f[t.channel_axis]=u),i.push(f),s.push(Uv(t.colors[u])),o.push(t.contrast_limits[u]??[0,255]),a.push(!0)}const c={id:t.id,selections:i,colors:s,contrastLimits:o,contrastLimitsRange:[...o],channelsVisible:a,opacity:n,colormap:r,modelMatrix:t.model_matrix,onClick:t.onClick};return"loaders"in t?{Layer:Fv,layerProps:{...c,loader:t.loader,loaders:t.loaders,columns:t.columns,rows:t.rows},on:!0}:t.loader.length===1?{Layer:Nc,layerProps:{...c,loader:t.loader[0]},on:!0}:{Layer:kv,layerProps:{...c,loader:t.loader},on:!0}}const v$=Object.freeze(Object.defineProperty({__proto__:null,createSourceData:p$,initLayerStateFromSource:RT},Symbol.toStringTag,{value:"Module"}));function y$(t,e){return cn(r=>r(t),(r,i,s)=>{const o=typeof s=="function"?s(r(t)):s,a=i(t,o);return e(o),a})}const c0=cn([]),E$=cn(null,async(t,e,n)=>{const{createSourceData:r}=await $t(()=>Promise.resolve().then(()=>v$),void 0,import.meta.url),i=Math.random().toString(36).slice(2),s=await r(n),o=t(c0);s.name||(s.name=`image_${Object.keys(o).length}`),e(c0,[...o,{id:i,...s}])}),PT=AN(c0),MT=cN(t=>cn({...RT(t),id:t.id}),(t,e)=>t.id===e.id),_$=cn(t=>{const e=t(PT);if(e.length===0)return[];const n=e.map(r=>MT(t(r)));return t(mN(n))});function x$({sourceAtom:t,layerAtom:e}){const n=An(t),[r,i]=Or(e),s=o=>{o.stopPropagation(),i(a=>{const l=!a.on;return{...a,on:l}})};return H(Dr,{"aria-label":`toggle-layer-visibility-${n.id}`,onClick:s,style:{backgroundColor:"transparent",marginTop:"2px",color:`rgb(255, 255, 255, ${r.on?1:.5})`},children:r.on?H(aN,{}):H(lN,{})})}const C$=Ui({root:{borderBottom:"1px solid rgba(150, 150, 150, .125)",backgroundColor:"rgba(150, 150, 150, 0.25)",display:"block",padding:"0 3px",height:27,minHeight:27,overflow:"hidden",transition:"none","&$expanded":{minHeight:27}},content:{margin:0,"&$expanded":{margin:0}},expanded:{}})(eL);function I$({sourceAtom:t,layerAtom:e,name:n}){const i=`layer-controller-${An(t).id}`;return H(C$,{"aria-controls":i,id:i,children:Ge("div",{style:{display:"flex",flexDirection:"row"},children:[H(x$,{sourceAtom:t,layerAtom:e}),H(zn,{style:{marginTop:"4px",marginLeft:"5px"},variant:"body2",children:n})]})})}function w$({sourceAtom:t}){const e=An(t),{acquisitionId:n,acquisitions:r}=e;return r?H(Di,{children:H(qe,{children:Ge(Bm,{fullWidth:!0,style:{fontSize:"0.7em"},onChange:s=>{let o=s.target.value;const a=new URL(window.location.href);o==="-1"?a.searchParams.delete("acquisition"):a.searchParams.set("acquisition",o),window.location.href=decodeURIComponent(a.href)},value:n,children:[H("option",{value:"-1",children:"Filter by Acquisition"},"-1"),r.map(s=>(s=s,Ge("option",{value:s.id,children:["Acquisition: ",s.name]},s.id)))]})})}):null}function b$({sourceAtom:t,layerAtom:e}){const[n,r]=Or(t),[i,s]=Or(e),[o,a]=b.useState(null),l=A=>{a(A.currentTarget)},c=()=>{a(null)},u=async A=>{c();const p=+A.target.value,g=[...n.defaults.selection];n.channel_axis&&(g[n.channel_axis]=p);let m;if(n.contrast_limits[p])m=n.contrast_limits[p];else{const{loader:v}=i.layerProps,E=Array.isArray(v)?v[v.length-1]:v;m=await Gv(E,g),r(_=>{const I=[..._.contrast_limits];return I[p]=m,{..._,contrast_limits:I}})}s(v=>{const{layerProps:E}=v,_=[...E.selections,g],I=[...E.colors,Uv(n.colors[p])],C=[...E.contrastLimitsRange,m],R=[...E.channelsVisible,!0];return{...v,layerProps:{...E,selections:_,colors:I,contrastLimits:C,contrastLimitsRange:[...C],channelsVisible:R}}})},{names:f}=n,h=!!o,d=h?`layer-${n.id}-add-channel`:void 0;return Ge(Di,{children:[H(Dr,{onClick:l,"aria-describedby":d,style:{backgroundColor:"transparent",padding:0,zIndex:2,cursor:"pointer"},disabled:i.layerProps.selections.length===Bo,children:H(f2,{})}),H(Tm,{id:d,open:h,anchorEl:o,onClose:c,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},children:Ge(pc,{style:{padding:"0px 4px",marginBottom:4,width:"8em"},children:[H(zn,{variant:"caption",children:"selection: "}),H(an,{}),Ge(Bm,{fullWidth:!0,style:{fontSize:"0.7em"},id:`layer-${n.id}-channel-select`,onChange:u,children:[H("option",{"aria-label":"None",value:"",children:"None"}),f.map((A,p)=>H("option",{value:p,children:A},A))]})]})})]})}const S$=Ui({root:{color:"white",padding:"10px 0px 5px 0px",marginRight:"5px"},active:{boxshadow:"0px 0px 0px 8px rgba(158, 158, 158, 0.16)"}})(Rm);function T$({layerAtom:t}){const[e,n]=Or(t),r=(i,s)=>{const o=s;n(a=>({...a,layerProps:{...a.layerProps,opacity:o}}))};return H(S$,{value:e.layerProps.opacity,onChange:r,min:0,max:1,step:.01})}const B$=Ui({root:{width:"5.5em",fontSize:"0.7em"}})(Sm);function R$({sourceAtom:t,layerAtom:e,axisIndex:n,max:r}){const i=An(t),[s,o]=Or(e),[a,l]=b.useState(null),c=p=>{l(p.currentTarget)},u=()=>{l(null)},f=p=>{let g=+p.target.value;g<0&&(g=0),g>r&&(g=r),o(m=>{let v={...m.layerProps};return v.selections=v.selections.map(E=>{let _=[...E];return _[n]=g,_}),{...m,layerProps:v}})},h=!!a,d=h?`${n}-index-${i.id}-options`:void 0,A=s.layerProps.selections[0]?s.layerProps.selections[0][n]:1;return Ge(Di,{children:[H(Dr,{onClick:c,"aria-describedby":d,style:{backgroundColor:"transparent",padding:0,zIndex:2,cursor:"pointer"},children:H(h2,{})}),H(Tm,{id:d,open:h,anchorEl:a,onClose:u,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},children:Ge(pc,{style:{padding:"0px 4px",marginBottom:4},children:[H(zn,{variant:"caption",children:"Index:"}),H(an,{}),H(B$,{value:A,onChange:f,type:"number",id:"max",fullWidth:!1}),H(an,{})]})})]})}const P$=Ui({root:{color:"white",padding:"10px 0px 5px 0px",marginRight:"5px"},active:{boxshadow:"0px 0px 0px 8px rgba(158, 158, 158, 0.16)"}})(Rm);function M$({sourceAtom:t,layerAtom:e,axisIndex:n,max:r}){const[i,s]=Or(e),o=An(t),{axis_labels:a}=o;let l=a[n];(l==="t"||l==="z")&&(l=l.toUpperCase());const[c,u]=b.useState(0);return b.useEffect(()=>{u(i.layerProps.selections[0]?i.layerProps.selections[0][n]:1)},[i.layerProps.selections]),Ge(Di,{children:[Ge(qe,{children:[Ge(qe,{container:!0,justifyContent:"space-between",children:[H(qe,{item:!0,xs:10,children:H("div",{style:{width:165,overflow:"hidden",textOverflow:"ellipsis"},children:Ge(zn,{variant:"caption",noWrap:!0,children:[l,": ",c,"/",r]})})}),H(qe,{item:!0,xs:1,children:H(R$,{sourceAtom:t,layerAtom:e,axisIndex:n,max:r})})]}),H(qe,{container:!0,justifyContent:"space-between",children:H(qe,{item:!0,xs:12,children:H(P$,{value:c,onChange:(d,A)=>{u(A)},onChangeCommitted:()=>{s(d=>{let A={...d.layerProps};return A.selections=A.selections.map(p=>{let g=[...p];return g[n]=c,g}),{...d,layerProps:A}})},min:0,max:r,step:1})})})]}),H(an,{})]})}function L$({sourceAtom:t,layerAtom:e}){const n=An(t),{axis_labels:r,channel_axis:i,loader:s}=n,o=r.slice(0,-2).map((a,l)=>[a,l,s[0].shape[l]]).filter(a=>a[1]===i?!1:a[2]>1).map(([a,l,c])=>H(M$,{sourceAtom:t,layerAtom:e,axisIndex:l,max:c-1},a));return o.length===0?null:Ge(Di,{children:[H(qe,{children:o}),H(an,{})]})}const N$=pm(()=>({container:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"2px"},button:{padding:"3px",width:"16px",height:"16px"}})),O$=Object.entries(hr).map(([t,e])=>[t,Uv(e)]);function D$({handleChange:t}){const e=N$();return H("div",{className:e.container,"aria-label":"color-swatch",children:O$.map(([n,r])=>H(Dr,{className:e.button,onClick:()=>t(r),children:H(iN,{fontSize:"small",style:{color:`rgb(${r})`}})},n))})}const gC=Ui({root:{width:"5.5em",fontSize:"0.7em"}})(Sm);function k$({sourceAtom:t,layerAtom:e,channelIndex:n}){const r=An(t),[i,s]=Or(e),[o,a]=b.useState(null),{channel_axis:l,names:c}=r,u=_=>{a(_.currentTarget)},f=()=>{a(null)},h=_=>{s(I=>{const C=[...I.layerProps.colors];return C[n]=_,{...I,layerProps:{...I.layerProps,colors:C}}})},d=_=>{const I=_.target.id;let C=+_.target.value;C<0&&(C=0),s(R=>{const P=[...R.layerProps.contrastLimitsRange],B=[...R.layerProps.contrastLimits],[N,V]=P[n],[G,z]=B[n],[K,J]=I==="min"?[C,V]:[N,C];return K>G&&(B[n]=[K,z]),J{s(_=>{const{layerProps:I}=_,C=[...I.colors],R=[...I.contrastLimits],P=[...I.contrastLimitsRange],B=[...I.selections],N=[...I.channelsVisible];return C.splice(n,1),R.splice(n,1),P.splice(n,1),B.splice(n,1),N.splice(n,1),{..._,layerProps:{...I,colors:C,selections:B,channelsVisible:N,contrastLimits:R,contrastLimitsRange:P}}})},p=_=>{s(I=>{const C=[...I.layerProps.selections],R=[...C[n]];return Number.isInteger(l)&&(R[l]=+_.target.value,C[n]=R),{...I,layerProps:{...I.layerProps,selections:C}}})},g=!!o,m=g?`channel-${n}-${r.name}-options`:void 0,[v,E]=i.layerProps.contrastLimitsRange[n];return Ge(Di,{children:[H(Dr,{onClick:u,"aria-describedby":m,style:{backgroundColor:"transparent",padding:0,zIndex:2,cursor:"pointer"},children:H(h2,{})}),H(Tm,{id:m,open:g,anchorEl:o,onClose:f,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},children:Ge(pc,{style:{padding:"0px 4px",marginBottom:4},children:[Ge("div",{style:{display:"flex",justifyContent:"space-between"},children:[H(zn,{variant:"caption",children:"remove:"}),H(Dr,{onClick:A,children:H(d2,{})})]}),H(an,{}),H(zn,{variant:"caption",children:"selection:"}),H(an,{}),H(Bm,{fullWidth:!0,style:{fontSize:"0.7em"},id:`layer-${r.name}-channel-select`,onChange:p,value:i.layerProps.selections[n][l],children:c.map((_,I)=>Ge("option",{value:I,children:["(",I,") ",_]},_))}),H(an,{}),H(zn,{variant:"caption",children:"contrast limits:"}),H(an,{}),H(gC,{value:v,onChange:d,type:"number",id:"min",fullWidth:!1}),H(gC,{value:E,onChange:d,type:"number",id:"max",fullWidth:!1}),H(an,{}),H(zn,{variant:"caption",children:"color:"}),H(an,{}),H("div",{style:{display:"flex",justifyContent:"center"},children:H(D$,{handleChange:h})})]})})]})}function Q$({sourceAtom:t,layerAtom:e,channelIndex:n}){const r=An(t),[i,s]=Or(e),o=(E,_)=>{s(I=>{const C=[...I.layerProps.contrastLimits];return C[n]=_,{...I,layerProps:{...I.layerProps,contrastLimits:C}}})},a=()=>{s(E=>{const _=[...E.layerProps.channelsVisible];return _[n]=!_[n],{...E,layerProps:{...E.layerProps,channelsVisible:_}}})},l=i.layerProps,c=[...l.contrastLimits[n]],u=`rgb(${l.colormap?[255,255,255]:l.colors[n]})`,f=l.channelsVisible[n],[h,d]=l.contrastLimitsRange[n],{channel_axis:A,names:p}=r,g=l.selections[n],m=Number.isInteger(A)?g[A]:0,v=p[m];return Ge(Di,{children:[Ge(qe,{container:!0,justifyContent:"space-between",wrap:"nowrap",children:[H(qe,{item:!0,xs:10,children:H("div",{style:{width:165,overflow:"hidden",textOverflow:"ellipsis"},children:H(zn,{variant:"caption",noWrap:!0,children:v})})}),H(qe,{item:!0,xs:1,children:H(k$,{sourceAtom:t,layerAtom:e,channelIndex:n})})]}),Ge(qe,{container:!0,justifyContent:"space-between",children:[H(qe,{item:!0,xs:2,children:H(Dr,{style:{color:u,backgroundColor:"transparent",padding:0,zIndex:2},onClick:a,children:f?H(sN,{}):H(oN,{})})}),H(qe,{item:!0,xs:10,children:H(Rm,{value:c,onChange:o,min:h,max:d,step:.01,style:{padding:"10px 0px 5px 0px",color:u}})})]})]})}const F$=Ui({root:{padding:"2px 5px",borderLeft:"1px solid rgba(150, 150, 150, .2)",borderRight:"1px solid rgba(150, 150, 150, .2)"}})(GM);function U$({sourceAtom:t,layerAtom:e}){const r=An(e).layerProps.selections.length;return H(F$,{children:Ge(qe,{container:!0,direction:"column",children:[H(w$,{sourceAtom:t,layerAtom:e}),H(qe,{children:Ge(qe,{container:!0,justifyContent:"space-between",children:[H(qe,{item:!0,xs:3,children:H(zn,{variant:"caption",children:"opacity:"})}),H(qe,{item:!0,xs:8,children:H(T$,{sourceAtom:t,layerAtom:e})})]})}),H(an,{}),H(L$,{sourceAtom:t,layerAtom:e}),Ge(qe,{container:!0,justifyContent:"space-between",children:[H(qe,{item:!0,xs:3,children:H(zn,{variant:"caption",children:"channels:"})}),H(qe,{item:!0,xs:1,children:H(b$,{sourceAtom:t,layerAtom:e})})]}),H(an,{}),H(qe,{children:ql(r).map(i=>H(Q$,{sourceAtom:t,layerAtom:e,channelIndex:i},i))})]})})}const G$=Ui({root:{borderBottom:"1px solid rgba(150, 150, 150, .2)",width:200,boxshadow:"none","&:not(:last-child)":{borderBottom:0},"&:before":{display:"none"},"&$expanded":{margin:0,padding:0}},expanded:{padding:1}})(QM);function z$({sourceAtom:t}){const e=An(t),n=MT(e),{name:r=""}=e;return Ge(G$,{defaultExpanded:!0,children:[H(I$,{sourceAtom:t,layerAtom:n,name:r}),H(U$,{sourceAtom:t,layerAtom:n})]})}const V$=pm({root:{zIndex:1,position:"absolute",backgroundColor:"rgba(0, 0, 0, 0.7)",borderRadius:"5px",left:"5px",top:"5px"},scroll:{maxHeight:500,overflowX:"hidden",overflowY:"scroll","&::-webkit-scrollbar":{display:"none",background:"transparent"},scrollbarWidth:"none",flexDirection:"column"}});function j$(){const t=An(PT),[e,n]=b.useReducer(i=>!i,!1),r=V$();return H("div",{className:r.root,style:{padding:`0px 5px ${e?0:5}px 5px`},children:Ge(qe,{container:!0,direction:"column",alignItems:"flex-start",children:[H(Dr,{style:{backgroundColor:"transparent",padding:0},onClick:n,children:e?H(f2,{}):H(d2,{})}),H("div",{className:r.scroll,style:{display:e?"none":"flex"},children:t.map(i=>H(z$,{sourceAtom:i},`${i}`))})]})})}function H$(t){const{loader:e}=t,[n,r]=Array.isArray(e)?[e[0],e.length]:[e,0],i=ST(n.shape);let[s,o]=n.shape.slice(i?-3:-2);return"loaders"in t&&t.rows&&t.columns&&(s=(s+5)*t.rows,o=(o+5)*t.columns),{height:s,width:o,maxZoom:r}}function W$(t){var s,o;const[e,n]=Or(t.viewStateAtom),r=b.useRef(null);if(r.current&&!e&&((o=(s=t.layers[0])==null?void 0:s.props)!=null&&o.loader)){const{deck:a}=r.current,{width:l,height:c,maxZoom:u}=H$(t.layers[0].props),f=a.width<400?10:a.width<600?30:50,h=u$([l,c],[a.width,a.height],u,f);n(h)}const i={preserveDrawingBuffer:!0};return H(jY,{ref:r,layers:t.layers,viewState:e,onViewStateChange:a=>n(a.viewState),views:[new Zh({id:"ortho",controller:!0})],glOptions:i})}function Y$({viewStateAtom:t}){const n=An(_$).map(r=>r.on?new r.Layer(r.layerProps):null);return H(W$,{viewStateAtom:t,layers:n})}const Uu=new Map;function aa(t,e){Hj(t,()=>{if(!Uu.has(t)){const r=e().then(i=>i.default).catch(i=>{throw Uu.delete(t),i});Uu.set(t,r)}return Uu.get(t)})}aa("lz4",()=>$t(()=>import("./lz4-46a6a62b.js"),[],import.meta.url));aa("gzip",()=>$t(()=>import("./gzip-19617714.js"),["./gzip-19617714.js","./pako.esm-856454b6-72a01207.js"],import.meta.url));aa("zlib",()=>$t(()=>import("./zlib-3606c2d7.js"),["./zlib-3606c2d7.js","./pako.esm-856454b6-72a01207.js"],import.meta.url));aa("zstd",()=>$t(()=>import("./zstd-2a9908b4.js"),[],import.meta.url));aa("blosc",()=>$t(()=>import("./blosc-5eba38ca.js"),[],import.meta.url));aa("jpeg2k",()=>$t(()=>import("./jpeg2k-baa1f47e.js"),[],import.meta.url));var Vv={};Object.defineProperty(Vv,"__esModule",{value:!0});var u0=Vv.default=void 0,$$={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#d5d5d5",A200:"#aaaaaa",A400:"#303030",A700:"#616161"},K$=$$;u0=Vv.default=K$;const q$=$w({palette:{type:"dark",primary:u0,secondary:u0},props:{MuiButton:{size:"small"},MuiButtonBase:{disableRipple:!0},MuiFilledInput:{margin:"dense"},MuiFormControl:{margin:"dense"},MuiFormHelperText:{margin:"dense"},MuiIconButton:{size:"small"},MuiInputBase:{margin:"dense"},MuiInputLabel:{margin:"dense"},MuiOutlinedInput:{margin:"dense"}},overrides:{MuiSlider:{thumb:{"&:focus, &:hover":{boxShadow:"none"},height:11,width:5,borderRadius:"15%",marginLeft:-1}},MuiInput:{underline:{"&&&&:hover:before":{borderBottom:"1px solid #fff"}}},MuiPaper:{root:{backgroundColor:"rgba(0, 0, 0, 0.8)"}},MuiSvgIcon:{root:{width:"0.7em",height:"0.7em"}}}}),iK="0.3.0";function sK(t){const e=b.createRef(),n=kP(),r=y$(cn(void 0),({zoom:s,target:o})=>n.emit("viewStateChange",{zoom:s,target:o}));function i(){const s=Jg(E$),o=Jg(r);return b.useImperativeHandle(e,()=>({addImage:s,setViewState:o,on:n.on}),[]),Ge(Di,{children:[H(j$,{}),H(Y$,{viewStateAtom:r})]})}return ja.render(H(OP,{theme:q$,children:H(sR,{children:H(i,{})})}),t),e.current}export{dj as BaseDecoder,rK as LercAddCompression,nK as LercParameters,$t as __vitePreload,sK as createViewer,zo as getDefaultExportFromCjs,iK as version}; +//# sourceMappingURL=vizarr-09ae863b.js.map diff --git a/omero_web_zarr/utils.py b/omero_web_zarr/utils.py index 13242e5..686460c 100644 --- a/omero_web_zarr/utils.py +++ b/omero_web_zarr/utils.py @@ -17,6 +17,8 @@ # from django.http import Http404 +from omero.sys import ParametersI +from omero.rtypes import rstring def marshal_pixel_sizes(image): @@ -96,3 +98,57 @@ def generate_coordinate_transformations(shapes): transformations.append([{"type": "scale", "scale": scale}]) return transformations + + +def get_clientpath_by_endswith(conn, image_id, pathending): + query_service = conn.getQueryService() + params = ParametersI() + params.addId(image_id) + params.add("zarr", rstring("%%%s" % pathending)) + query = """ select u.clientPath from Fileset fs + join fs.usedFiles u + left outer join fs.images as image + where image.id=:id + and u.clientPath like :zarr""" + result = query_service.projection(query, params, conn.SERVICE_OPTS) + if len(result) == 0: + return None + return result[0][0].val + + +def get_zarr_s3_path(conn, image_id): + """ + Check Fileset clientPaths for path ending zarr/.zattrs + + If Image is in a Plate/Well, add eg. /A/1/0/ to path. + """ + client_path = get_clientpath_by_endswith(conn, image_id, "zarr/.zattrs") + if client_path is None: + return None + + # We also need clientPath to be a publicly-accessible URL + zarr_path = client_path.replace("/.zattrs", "") + + # Check if Image is in a Well - need to add /row/col/field/ e.g. /A/1/0 + query_service = conn.getQueryService() + wsparams = ParametersI() + wsparams.addId(image_id) + wsquery = """select well.plate.id, well.row, well.column, index(ws) from Well well + join well.wellSamples ws where ws.image.id=:id""" + ws = query_service.projection(wsquery, wsparams, conn.SERVICE_OPTS) + if len(ws) > 0: + plate_id = ws[0][0].val + plate = conn.getObject("Plate", plate_id) + row = plate.getRowLabels()[ws[0][1].val] + column = plate.getColumnLabels()[ws[0][2].val] + ws_index = ws[0][3].val + row_col_field = f"/{row}/{column}/{ws_index}/" + zarr_path += row_col_field + else: + # Check whether this is a bioformats2raw image + metadata_path = get_clientpath_by_endswith(conn, image_id, + "OME/METADATA.ome.xml") + if metadata_path is not None: + zarr_path += "/0/" + + return zarr_path diff --git a/omero_web_zarr/views.py b/omero_web_zarr/views.py index 977edad..95c6d82 100644 --- a/omero_web_zarr/views.py +++ b/omero_web_zarr/views.py @@ -26,8 +26,9 @@ from django.http import HttpResponse, JsonResponse from django.urls import reverse from django.shortcuts import redirect +from django.templatetags.static import static -from .utils import marshal_axes, marshal_axes_v3 +from .utils import marshal_axes, marshal_axes_v3, get_zarr_s3_path from .utils import generate_coordinate_transformations from omero.model.enums import PixelsTypeint8, PixelsTypeuint8, PixelsTypeint16 @@ -312,3 +313,25 @@ def apps(request, app, url): rsp['content-type'] = "application/javascript" return rsp + + +@login_required() +def vizarr_or_iviewer(request, iid=None, conn=None, **kwargs): + + s3_url = get_zarr_s3_path(conn, iid) + + local_vizarr_url = static("omero_web_zarr/vizarr/index.html") + + if s3_url is not None: + url = f"{local_vizarr_url}?source={s3_url}" + return redirect(url) + + else: + try: + # Default to iviewer (if installed)... + from omero_iviewer.views import index as iviewer_index + return iviewer_index(request, iid, **kwargs) + except ImportError: + # ...otherwise revert to original image viewer + from omeroweb.webclient.views import image_viewer + return image_viewer(request, iid, **kwargs)